{"version":3,"file":"js/lib-anchor-link.m-a332023e.805d417b7ee1075c9da3.js","mappings":"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","sources":["webpack:///../../../../node_modules/fetch-ponyfill/build/fetch-browser.js","webpack:///../../../../process","webpack:///../../../../node_modules/asmcrypto.js/asmcrypto.all.es8.js","webpack:///../../../../node_modules/uuid/dist/esm-browser/rng.js","webpack:///../../../../node_modules/uuid/dist/esm-browser/regex.js","webpack:///../../../../node_modules/uuid/dist/esm-browser/validate.js","webpack:///../../../../node_modules/uuid/dist/esm-browser/stringify.js","webpack:///../../../../node_modules/uuid/dist/esm-browser/v4.js","webpack:///../../../../node_modules/isomorphic-ws/browser.js","webpack:///../../../../node_modules/anchor-link/lib/anchor-link.m.js"],"sourcesContent":["(function (global) {\n 'use strict';\n\n function fetchPonyfill(options) {\n var Promise = options && options.Promise || global.Promise;\n var XMLHttpRequest = options && options.XMLHttpRequest || global.XMLHttpRequest;\n\n return (function () {\n var globalThis = Object.create(global, {\n fetch: {\n value: undefined,\n writable: true\n }\n });\n\n (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.WHATWGFetch = {})));\n }(this, (function (exports) { 'use strict';\n\n var global =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n (typeof global !== 'undefined' && global);\n\n var support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n }\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : '';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = global.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!global.fetch) {\n global.fetch = fetch;\n global.Headers = Headers;\n global.Request = Request;\n global.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n })));\n\n\n return {\n fetch: globalThis.fetch,\n Headers: globalThis.Headers,\n Request: globalThis.Request,\n Response: globalThis.Response,\n DOMException: globalThis.DOMException\n };\n }());\n }\n\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return fetchPonyfill;\n });\n } else if (typeof exports === 'object') {\n module.exports = fetchPonyfill;\n } else {\n global.fetchPonyfill = fetchPonyfill;\n }\n}(typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof global !== 'undefined' ? global : this));\n\n","/* SNOWPACK PROCESS POLYFILL (based on https://github.com/calvinmetcalf/node-process-es6) */\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nvar globalContext;\nif (typeof window !== 'undefined') {\n globalContext = window;\n} else if (typeof self !== 'undefined') {\n globalContext = self;\n} else {\n globalContext = {};\n}\nif (typeof globalContext.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof globalContext.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n}\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nfunction nextTick(fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nvar title = 'browser';\nvar platform = 'browser';\nvar browser = true;\nvar env = {};\nvar argv = [];\nvar version = ''; // empty string to avoid regexp issues\nvar versions = {};\nvar release = {};\nvar config = {};\n\nfunction noop() {}\n\nvar on = noop;\nvar addListener = noop;\nvar once = noop;\nvar off = noop;\nvar removeListener = noop;\nvar removeAllListeners = noop;\nvar emit = noop;\n\nfunction binding(name) {\n throw new Error('process.binding is not supported');\n}\n\nfunction cwd () { return '/' }\nfunction chdir (dir) {\n throw new Error('process.chdir is not supported');\n}function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = globalContext.performance || {};\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() };\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3;\n var seconds = Math.floor(clocktime);\n var nanoseconds = Math.floor((clocktime%1)*1e9);\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0];\n nanoseconds = nanoseconds - previousTimestamp[1];\n if (nanoseconds<0) {\n seconds--;\n nanoseconds += 1e9;\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nfunction uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nexport default {\n nextTick: nextTick,\n title: title,\n browser: browser,\n env: {\"NODE_ENV\":\"production\"},\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config,\n uptime: uptime\n};\n\nexport { addListener, argv, binding, browser, chdir, config, cwd, emit, env, hrtime, nextTick, off, on, once, platform, release, removeAllListeners, removeListener, title, umask, uptime, version, versions };\n","const local_atob = typeof atob === 'undefined' ? (str) => Buffer.from(str, 'base64').toString('binary') : atob;\nconst local_btoa = typeof btoa === 'undefined' ? (str) => Buffer.from(str, 'binary').toString('base64') : btoa;\nfunction string_to_bytes(str, utf8 = false) {\n var len = str.length, bytes = new Uint8Array(utf8 ? 4 * len : len);\n for (var i = 0, j = 0; i < len; i++) {\n var c = str.charCodeAt(i);\n if (utf8 && 0xd800 <= c && c <= 0xdbff) {\n if (++i >= len)\n throw new Error('Malformed string, low surrogate expected at position ' + i);\n c = ((c ^ 0xd800) << 10) | 0x10000 | (str.charCodeAt(i) ^ 0xdc00);\n }\n else if (!utf8 && c >>> 8) {\n throw new Error('Wide characters are not allowed.');\n }\n if (!utf8 || c <= 0x7f) {\n bytes[j++] = c;\n }\n else if (c <= 0x7ff) {\n bytes[j++] = 0xc0 | (c >> 6);\n bytes[j++] = 0x80 | (c & 0x3f);\n }\n else if (c <= 0xffff) {\n bytes[j++] = 0xe0 | (c >> 12);\n bytes[j++] = 0x80 | ((c >> 6) & 0x3f);\n bytes[j++] = 0x80 | (c & 0x3f);\n }\n else {\n bytes[j++] = 0xf0 | (c >> 18);\n bytes[j++] = 0x80 | ((c >> 12) & 0x3f);\n bytes[j++] = 0x80 | ((c >> 6) & 0x3f);\n bytes[j++] = 0x80 | (c & 0x3f);\n }\n }\n return bytes.subarray(0, j);\n}\nfunction hex_to_bytes(str) {\n var len = str.length;\n if (len & 1) {\n str = '0' + str;\n len++;\n }\n var bytes = new Uint8Array(len >> 1);\n for (var i = 0; i < len; i += 2) {\n bytes[i >> 1] = parseInt(str.substr(i, 2), 16);\n }\n return bytes;\n}\nfunction base64_to_bytes(str) {\n return string_to_bytes(local_atob(str));\n}\nfunction bytes_to_string(bytes, utf8 = false) {\n var len = bytes.length, chars = new Array(len);\n for (var i = 0, j = 0; i < len; i++) {\n var b = bytes[i];\n if (!utf8 || b < 128) {\n chars[j++] = b;\n }\n else if (b >= 192 && b < 224 && i + 1 < len) {\n chars[j++] = ((b & 0x1f) << 6) | (bytes[++i] & 0x3f);\n }\n else if (b >= 224 && b < 240 && i + 2 < len) {\n chars[j++] = ((b & 0xf) << 12) | ((bytes[++i] & 0x3f) << 6) | (bytes[++i] & 0x3f);\n }\n else if (b >= 240 && b < 248 && i + 3 < len) {\n var c = ((b & 7) << 18) | ((bytes[++i] & 0x3f) << 12) | ((bytes[++i] & 0x3f) << 6) | (bytes[++i] & 0x3f);\n if (c <= 0xffff) {\n chars[j++] = c;\n }\n else {\n c ^= 0x10000;\n chars[j++] = 0xd800 | (c >> 10);\n chars[j++] = 0xdc00 | (c & 0x3ff);\n }\n }\n else {\n throw new Error('Malformed UTF8 character at byte offset ' + i);\n }\n }\n var str = '', bs = 16384;\n for (var i = 0; i < j; i += bs) {\n str += String.fromCharCode.apply(String, chars.slice(i, i + bs <= j ? i + bs : j));\n }\n return str;\n}\nfunction bytes_to_hex(arr) {\n var str = '';\n for (var i = 0; i < arr.length; i++) {\n var h = (arr[i] & 0xff).toString(16);\n if (h.length < 2)\n str += '0';\n str += h;\n }\n return str;\n}\nfunction bytes_to_base64(arr) {\n return local_btoa(bytes_to_string(arr));\n}\nfunction is_bytes(a) {\n return a instanceof Uint8Array;\n}\nfunction _heap_init(heap, heapSize) {\n const size = heap ? heap.byteLength : heapSize || 65536;\n if (size & 0xfff || size <= 0)\n throw new Error('heap size must be a positive integer and a multiple of 4096');\n heap = heap || new Uint8Array(new ArrayBuffer(size));\n return heap;\n}\nfunction _heap_write(heap, hpos, data, dpos, dlen) {\n const hlen = heap.length - hpos;\n const wlen = hlen < dlen ? hlen : dlen;\n heap.set(data.subarray(dpos, dpos + wlen), hpos);\n return wlen;\n}\nfunction joinBytes(...arg) {\n const totalLenght = arg.reduce((sum, curr) => sum + curr.length, 0);\n const ret = new Uint8Array(totalLenght);\n let cursor = 0;\n for (let i = 0; i < arg.length; i++) {\n ret.set(arg[i], cursor);\n cursor += arg[i].length;\n }\n return ret;\n}\n\n/**\n * Util exports\n */\n\nclass IllegalStateError extends Error {\n constructor(...args) {\n super(...args);\n }\n}\nclass IllegalArgumentError extends Error {\n constructor(...args) {\n super(...args);\n }\n}\nclass SecurityError extends Error {\n constructor(...args) {\n super(...args);\n }\n}\n\n/**\n * @file {@link http://asmjs.org Asm.js} implementation of the {@link https://en.wikipedia.org/wiki/Advanced_Encryption_Standard Advanced Encryption Standard}.\n * @author Artem S Vybornov \n * @license MIT\n */\nvar AES_asm = function () {\n\n /**\n * Galois Field stuff init flag\n */\n var ginit_done = false;\n\n /**\n * Galois Field exponentiation and logarithm tables for 3 (the generator)\n */\n var gexp3, glog3;\n\n /**\n * Init Galois Field tables\n */\n function ginit() {\n gexp3 = [],\n glog3 = [];\n\n var a = 1, c, d;\n for (c = 0; c < 255; c++) {\n gexp3[c] = a;\n\n // Multiply by three\n d = a & 0x80, a <<= 1, a &= 255;\n if (d === 0x80) a ^= 0x1b;\n a ^= gexp3[c];\n\n // Set the log table value\n glog3[gexp3[c]] = c;\n }\n gexp3[255] = gexp3[0];\n glog3[0] = 0;\n\n ginit_done = true;\n }\n\n /**\n * Galois Field multiplication\n * @param {number} a\n * @param {number} b\n * @return {number}\n */\n function gmul(a, b) {\n var c = gexp3[(glog3[a] + glog3[b]) % 255];\n if (a === 0 || b === 0) c = 0;\n return c;\n }\n\n /**\n * Galois Field reciprocal\n * @param {number} a\n * @return {number}\n */\n function ginv(a) {\n var i = gexp3[255 - glog3[a]];\n if (a === 0) i = 0;\n return i;\n }\n\n /**\n * AES stuff init flag\n */\n var aes_init_done = false;\n\n /**\n * Encryption, Decryption, S-Box and KeyTransform tables\n *\n * @type {number[]}\n */\n var aes_sbox;\n\n /**\n * @type {number[]}\n */\n var aes_sinv;\n\n /**\n * @type {number[][]}\n */\n var aes_enc;\n\n /**\n * @type {number[][]}\n */\n var aes_dec;\n\n /**\n * Init AES tables\n */\n function aes_init() {\n if (!ginit_done) ginit();\n\n // Calculates AES S-Box value\n function _s(a) {\n var c, s, x;\n s = x = ginv(a);\n for (c = 0; c < 4; c++) {\n s = ((s << 1) | (s >>> 7)) & 255;\n x ^= s;\n }\n x ^= 99;\n return x;\n }\n\n // Tables\n aes_sbox = [],\n aes_sinv = [],\n aes_enc = [[], [], [], []],\n aes_dec = [[], [], [], []];\n\n for (var i = 0; i < 256; i++) {\n var s = _s(i);\n\n // S-Box and its inverse\n aes_sbox[i] = s;\n aes_sinv[s] = i;\n\n // Ecryption and Decryption tables\n aes_enc[0][i] = (gmul(2, s) << 24) | (s << 16) | (s << 8) | gmul(3, s);\n aes_dec[0][s] = (gmul(14, i) << 24) | (gmul(9, i) << 16) | (gmul(13, i) << 8) | gmul(11, i);\n // Rotate tables\n for (var t = 1; t < 4; t++) {\n aes_enc[t][i] = (aes_enc[t - 1][i] >>> 8) | (aes_enc[t - 1][i] << 24);\n aes_dec[t][s] = (aes_dec[t - 1][s] >>> 8) | (aes_dec[t - 1][s] << 24);\n }\n }\n\n aes_init_done = true;\n }\n\n /**\n * Asm.js module constructor.\n *\n *

\n * Heap buffer layout by offset:\n *

\n   * 0x0000   encryption key schedule\n   * 0x0400   decryption key schedule\n   * 0x0800   sbox\n   * 0x0c00   inv sbox\n   * 0x1000   encryption tables\n   * 0x2000   decryption tables\n   * 0x3000   reserved (future GCM multiplication lookup table)\n   * 0x4000   data\n   * 
\n * Don't touch anything before 0x400.\n *

\n *\n * @alias AES_asm\n * @class\n * @param foreign - ignored\n * @param buffer - heap buffer to link with\n */\n var wrapper = function (foreign, buffer) {\n // Init AES stuff for the first time\n if (!aes_init_done) aes_init();\n\n // Fill up AES tables\n var heap = new Uint32Array(buffer);\n heap.set(aes_sbox, 0x0800 >> 2);\n heap.set(aes_sinv, 0x0c00 >> 2);\n for (var i = 0; i < 4; i++) {\n heap.set(aes_enc[i], (0x1000 + 0x400 * i) >> 2);\n heap.set(aes_dec[i], (0x2000 + 0x400 * i) >> 2);\n }\n\n /**\n * Calculate AES key schedules.\n * @instance\n * @memberof AES_asm\n * @param {number} ks - key size, 4/6/8 (for 128/192/256-bit key correspondingly)\n * @param {number} k0 - key vector components\n * @param {number} k1 - key vector components\n * @param {number} k2 - key vector components\n * @param {number} k3 - key vector components\n * @param {number} k4 - key vector components\n * @param {number} k5 - key vector components\n * @param {number} k6 - key vector components\n * @param {number} k7 - key vector components\n */\n function set_key(ks, k0, k1, k2, k3, k4, k5, k6, k7) {\n var ekeys = heap.subarray(0x000, 60),\n dkeys = heap.subarray(0x100, 0x100 + 60);\n\n // Encryption key schedule\n ekeys.set([k0, k1, k2, k3, k4, k5, k6, k7]);\n for (var i = ks, rcon = 1; i < 4 * ks + 28; i++) {\n var k = ekeys[i - 1];\n if ((i % ks === 0) || (ks === 8 && i % ks === 4)) {\n k = aes_sbox[k >>> 24] << 24 ^ aes_sbox[k >>> 16 & 255] << 16 ^ aes_sbox[k >>> 8 & 255] << 8 ^ aes_sbox[k & 255];\n }\n if (i % ks === 0) {\n k = (k << 8) ^ (k >>> 24) ^ (rcon << 24);\n rcon = (rcon << 1) ^ ((rcon & 0x80) ? 0x1b : 0);\n }\n ekeys[i] = ekeys[i - ks] ^ k;\n }\n\n // Decryption key schedule\n for (var j = 0; j < i; j += 4) {\n for (var jj = 0; jj < 4; jj++) {\n var k = ekeys[i - (4 + j) + (4 - jj) % 4];\n if (j < 4 || j >= i - 4) {\n dkeys[j + jj] = k;\n } else {\n dkeys[j + jj] = aes_dec[0][aes_sbox[k >>> 24]]\n ^ aes_dec[1][aes_sbox[k >>> 16 & 255]]\n ^ aes_dec[2][aes_sbox[k >>> 8 & 255]]\n ^ aes_dec[3][aes_sbox[k & 255]];\n }\n }\n }\n\n // Set rounds number\n asm.set_rounds(ks + 5);\n }\n\n // create library object with necessary properties\n var stdlib = {Uint8Array: Uint8Array, Uint32Array: Uint32Array};\n\n var asm = function (stdlib, foreign, buffer) {\n \"use asm\";\n\n var S0 = 0, S1 = 0, S2 = 0, S3 = 0,\n I0 = 0, I1 = 0, I2 = 0, I3 = 0,\n N0 = 0, N1 = 0, N2 = 0, N3 = 0,\n M0 = 0, M1 = 0, M2 = 0, M3 = 0,\n H0 = 0, H1 = 0, H2 = 0, H3 = 0,\n R = 0;\n\n var HEAP = new stdlib.Uint32Array(buffer),\n DATA = new stdlib.Uint8Array(buffer);\n\n /**\n * AES core\n * @param {number} k - precomputed key schedule offset\n * @param {number} s - precomputed sbox table offset\n * @param {number} t - precomputed round table offset\n * @param {number} r - number of inner rounds to perform\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n function _core(k, s, t, r, x0, x1, x2, x3) {\n k = k | 0;\n s = s | 0;\n t = t | 0;\n r = r | 0;\n x0 = x0 | 0;\n x1 = x1 | 0;\n x2 = x2 | 0;\n x3 = x3 | 0;\n\n var t1 = 0, t2 = 0, t3 = 0,\n y0 = 0, y1 = 0, y2 = 0, y3 = 0,\n i = 0;\n\n t1 = t | 0x400, t2 = t | 0x800, t3 = t | 0xc00;\n\n // round 0\n x0 = x0 ^ HEAP[(k | 0) >> 2],\n x1 = x1 ^ HEAP[(k | 4) >> 2],\n x2 = x2 ^ HEAP[(k | 8) >> 2],\n x3 = x3 ^ HEAP[(k | 12) >> 2];\n\n // round 1..r\n for (i = 16; (i | 0) <= (r << 4); i = (i + 16) | 0) {\n y0 = HEAP[(t | x0 >> 22 & 1020) >> 2] ^ HEAP[(t1 | x1 >> 14 & 1020) >> 2] ^ HEAP[(t2 | x2 >> 6 & 1020) >> 2] ^ HEAP[(t3 | x3 << 2 & 1020) >> 2] ^ HEAP[(k | i | 0) >> 2],\n y1 = HEAP[(t | x1 >> 22 & 1020) >> 2] ^ HEAP[(t1 | x2 >> 14 & 1020) >> 2] ^ HEAP[(t2 | x3 >> 6 & 1020) >> 2] ^ HEAP[(t3 | x0 << 2 & 1020) >> 2] ^ HEAP[(k | i | 4) >> 2],\n y2 = HEAP[(t | x2 >> 22 & 1020) >> 2] ^ HEAP[(t1 | x3 >> 14 & 1020) >> 2] ^ HEAP[(t2 | x0 >> 6 & 1020) >> 2] ^ HEAP[(t3 | x1 << 2 & 1020) >> 2] ^ HEAP[(k | i | 8) >> 2],\n y3 = HEAP[(t | x3 >> 22 & 1020) >> 2] ^ HEAP[(t1 | x0 >> 14 & 1020) >> 2] ^ HEAP[(t2 | x1 >> 6 & 1020) >> 2] ^ HEAP[(t3 | x2 << 2 & 1020) >> 2] ^ HEAP[(k | i | 12) >> 2];\n x0 = y0, x1 = y1, x2 = y2, x3 = y3;\n }\n\n // final round\n S0 = HEAP[(s | x0 >> 22 & 1020) >> 2] << 24 ^ HEAP[(s | x1 >> 14 & 1020) >> 2] << 16 ^ HEAP[(s | x2 >> 6 & 1020) >> 2] << 8 ^ HEAP[(s | x3 << 2 & 1020) >> 2] ^ HEAP[(k | i | 0) >> 2],\n S1 = HEAP[(s | x1 >> 22 & 1020) >> 2] << 24 ^ HEAP[(s | x2 >> 14 & 1020) >> 2] << 16 ^ HEAP[(s | x3 >> 6 & 1020) >> 2] << 8 ^ HEAP[(s | x0 << 2 & 1020) >> 2] ^ HEAP[(k | i | 4) >> 2],\n S2 = HEAP[(s | x2 >> 22 & 1020) >> 2] << 24 ^ HEAP[(s | x3 >> 14 & 1020) >> 2] << 16 ^ HEAP[(s | x0 >> 6 & 1020) >> 2] << 8 ^ HEAP[(s | x1 << 2 & 1020) >> 2] ^ HEAP[(k | i | 8) >> 2],\n S3 = HEAP[(s | x3 >> 22 & 1020) >> 2] << 24 ^ HEAP[(s | x0 >> 14 & 1020) >> 2] << 16 ^ HEAP[(s | x1 >> 6 & 1020) >> 2] << 8 ^ HEAP[(s | x2 << 2 & 1020) >> 2] ^ HEAP[(k | i | 12) >> 2];\n }\n\n /**\n * ECB mode encryption\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n function _ecb_enc(x0, x1, x2, x3) {\n x0 = x0 | 0;\n x1 = x1 | 0;\n x2 = x2 | 0;\n x3 = x3 | 0;\n\n _core(\n 0x0000, 0x0800, 0x1000,\n R,\n x0,\n x1,\n x2,\n x3\n );\n }\n\n /**\n * ECB mode decryption\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n function _ecb_dec(x0, x1, x2, x3) {\n x0 = x0 | 0;\n x1 = x1 | 0;\n x2 = x2 | 0;\n x3 = x3 | 0;\n\n var t = 0;\n\n _core(\n 0x0400, 0x0c00, 0x2000,\n R,\n x0,\n x3,\n x2,\n x1\n );\n\n t = S1, S1 = S3, S3 = t;\n }\n\n\n /**\n * CBC mode encryption\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n function _cbc_enc(x0, x1, x2, x3) {\n x0 = x0 | 0;\n x1 = x1 | 0;\n x2 = x2 | 0;\n x3 = x3 | 0;\n\n _core(\n 0x0000, 0x0800, 0x1000,\n R,\n I0 ^ x0,\n I1 ^ x1,\n I2 ^ x2,\n I3 ^ x3\n );\n\n I0 = S0,\n I1 = S1,\n I2 = S2,\n I3 = S3;\n }\n\n /**\n * CBC mode decryption\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n function _cbc_dec(x0, x1, x2, x3) {\n x0 = x0 | 0;\n x1 = x1 | 0;\n x2 = x2 | 0;\n x3 = x3 | 0;\n\n var t = 0;\n\n _core(\n 0x0400, 0x0c00, 0x2000,\n R,\n x0,\n x3,\n x2,\n x1\n );\n\n t = S1, S1 = S3, S3 = t;\n\n S0 = S0 ^ I0,\n S1 = S1 ^ I1,\n S2 = S2 ^ I2,\n S3 = S3 ^ I3;\n\n I0 = x0,\n I1 = x1,\n I2 = x2,\n I3 = x3;\n }\n\n /**\n * CFB mode encryption\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n function _cfb_enc(x0, x1, x2, x3) {\n x0 = x0 | 0;\n x1 = x1 | 0;\n x2 = x2 | 0;\n x3 = x3 | 0;\n\n _core(\n 0x0000, 0x0800, 0x1000,\n R,\n I0,\n I1,\n I2,\n I3\n );\n\n I0 = S0 = S0 ^ x0,\n I1 = S1 = S1 ^ x1,\n I2 = S2 = S2 ^ x2,\n I3 = S3 = S3 ^ x3;\n }\n\n\n /**\n * CFB mode decryption\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n function _cfb_dec(x0, x1, x2, x3) {\n x0 = x0 | 0;\n x1 = x1 | 0;\n x2 = x2 | 0;\n x3 = x3 | 0;\n\n _core(\n 0x0000, 0x0800, 0x1000,\n R,\n I0,\n I1,\n I2,\n I3\n );\n\n S0 = S0 ^ x0,\n S1 = S1 ^ x1,\n S2 = S2 ^ x2,\n S3 = S3 ^ x3;\n\n I0 = x0,\n I1 = x1,\n I2 = x2,\n I3 = x3;\n }\n\n /**\n * OFB mode encryption / decryption\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n function _ofb(x0, x1, x2, x3) {\n x0 = x0 | 0;\n x1 = x1 | 0;\n x2 = x2 | 0;\n x3 = x3 | 0;\n\n _core(\n 0x0000, 0x0800, 0x1000,\n R,\n I0,\n I1,\n I2,\n I3\n );\n\n I0 = S0,\n I1 = S1,\n I2 = S2,\n I3 = S3;\n\n S0 = S0 ^ x0,\n S1 = S1 ^ x1,\n S2 = S2 ^ x2,\n S3 = S3 ^ x3;\n }\n\n /**\n * CTR mode encryption / decryption\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n function _ctr(x0, x1, x2, x3) {\n x0 = x0 | 0;\n x1 = x1 | 0;\n x2 = x2 | 0;\n x3 = x3 | 0;\n\n _core(\n 0x0000, 0x0800, 0x1000,\n R,\n N0,\n N1,\n N2,\n N3\n );\n\n N3 = (~M3 & N3) | M3 & (N3 + 1);\n N2 = (~M2 & N2) | M2 & (N2 + ((N3 | 0) == 0));\n N1 = (~M1 & N1) | M1 & (N1 + ((N2 | 0) == 0));\n N0 = (~M0 & N0) | M0 & (N0 + ((N1 | 0) == 0));\n\n S0 = S0 ^ x0;\n S1 = S1 ^ x1;\n S2 = S2 ^ x2;\n S3 = S3 ^ x3;\n }\n\n /**\n * GCM mode MAC calculation\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n function _gcm_mac(x0, x1, x2, x3) {\n x0 = x0 | 0;\n x1 = x1 | 0;\n x2 = x2 | 0;\n x3 = x3 | 0;\n\n var y0 = 0, y1 = 0, y2 = 0, y3 = 0,\n z0 = 0, z1 = 0, z2 = 0, z3 = 0,\n i = 0, c = 0;\n\n x0 = x0 ^ I0,\n x1 = x1 ^ I1,\n x2 = x2 ^ I2,\n x3 = x3 ^ I3;\n\n y0 = H0 | 0,\n y1 = H1 | 0,\n y2 = H2 | 0,\n y3 = H3 | 0;\n\n for (; (i | 0) < 128; i = (i + 1) | 0) {\n if (y0 >>> 31) {\n z0 = z0 ^ x0,\n z1 = z1 ^ x1,\n z2 = z2 ^ x2,\n z3 = z3 ^ x3;\n }\n\n y0 = (y0 << 1) | (y1 >>> 31),\n y1 = (y1 << 1) | (y2 >>> 31),\n y2 = (y2 << 1) | (y3 >>> 31),\n y3 = (y3 << 1);\n\n c = x3 & 1;\n\n x3 = (x3 >>> 1) | (x2 << 31),\n x2 = (x2 >>> 1) | (x1 << 31),\n x1 = (x1 >>> 1) | (x0 << 31),\n x0 = (x0 >>> 1);\n\n if (c) x0 = x0 ^ 0xe1000000;\n }\n\n I0 = z0,\n I1 = z1,\n I2 = z2,\n I3 = z3;\n }\n\n /**\n * Set the internal rounds number.\n * @instance\n * @memberof AES_asm\n * @param {number} r - number if inner AES rounds\n */\n function set_rounds(r) {\n r = r | 0;\n R = r;\n }\n\n /**\n * Populate the internal state of the module.\n * @instance\n * @memberof AES_asm\n * @param {number} s0 - state vector\n * @param {number} s1 - state vector\n * @param {number} s2 - state vector\n * @param {number} s3 - state vector\n */\n function set_state(s0, s1, s2, s3) {\n s0 = s0 | 0;\n s1 = s1 | 0;\n s2 = s2 | 0;\n s3 = s3 | 0;\n\n S0 = s0,\n S1 = s1,\n S2 = s2,\n S3 = s3;\n }\n\n /**\n * Populate the internal iv of the module.\n * @instance\n * @memberof AES_asm\n * @param {number} i0 - iv vector\n * @param {number} i1 - iv vector\n * @param {number} i2 - iv vector\n * @param {number} i3 - iv vector\n */\n function set_iv(i0, i1, i2, i3) {\n i0 = i0 | 0;\n i1 = i1 | 0;\n i2 = i2 | 0;\n i3 = i3 | 0;\n\n I0 = i0,\n I1 = i1,\n I2 = i2,\n I3 = i3;\n }\n\n /**\n * Set nonce for CTR-family modes.\n * @instance\n * @memberof AES_asm\n * @param {number} n0 - nonce vector\n * @param {number} n1 - nonce vector\n * @param {number} n2 - nonce vector\n * @param {number} n3 - nonce vector\n */\n function set_nonce(n0, n1, n2, n3) {\n n0 = n0 | 0;\n n1 = n1 | 0;\n n2 = n2 | 0;\n n3 = n3 | 0;\n\n N0 = n0,\n N1 = n1,\n N2 = n2,\n N3 = n3;\n }\n\n /**\n * Set counter mask for CTR-family modes.\n * @instance\n * @memberof AES_asm\n * @param {number} m0 - counter mask vector\n * @param {number} m1 - counter mask vector\n * @param {number} m2 - counter mask vector\n * @param {number} m3 - counter mask vector\n */\n function set_mask(m0, m1, m2, m3) {\n m0 = m0 | 0;\n m1 = m1 | 0;\n m2 = m2 | 0;\n m3 = m3 | 0;\n\n M0 = m0,\n M1 = m1,\n M2 = m2,\n M3 = m3;\n }\n\n /**\n * Set counter for CTR-family modes.\n * @instance\n * @memberof AES_asm\n * @param {number} c0 - counter vector\n * @param {number} c1 - counter vector\n * @param {number} c2 - counter vector\n * @param {number} c3 - counter vector\n */\n function set_counter(c0, c1, c2, c3) {\n c0 = c0 | 0;\n c1 = c1 | 0;\n c2 = c2 | 0;\n c3 = c3 | 0;\n\n N3 = (~M3 & N3) | M3 & c3,\n N2 = (~M2 & N2) | M2 & c2,\n N1 = (~M1 & N1) | M1 & c1,\n N0 = (~M0 & N0) | M0 & c0;\n }\n\n /**\n * Store the internal state vector into the heap.\n * @instance\n * @memberof AES_asm\n * @param {number} pos - offset where to put the data\n * @return {number} The number of bytes have been written into the heap, always 16.\n */\n function get_state(pos) {\n pos = pos | 0;\n\n if (pos & 15) return -1;\n\n DATA[pos | 0] = S0 >>> 24,\n DATA[pos | 1] = S0 >>> 16 & 255,\n DATA[pos | 2] = S0 >>> 8 & 255,\n DATA[pos | 3] = S0 & 255,\n DATA[pos | 4] = S1 >>> 24,\n DATA[pos | 5] = S1 >>> 16 & 255,\n DATA[pos | 6] = S1 >>> 8 & 255,\n DATA[pos | 7] = S1 & 255,\n DATA[pos | 8] = S2 >>> 24,\n DATA[pos | 9] = S2 >>> 16 & 255,\n DATA[pos | 10] = S2 >>> 8 & 255,\n DATA[pos | 11] = S2 & 255,\n DATA[pos | 12] = S3 >>> 24,\n DATA[pos | 13] = S3 >>> 16 & 255,\n DATA[pos | 14] = S3 >>> 8 & 255,\n DATA[pos | 15] = S3 & 255;\n\n return 16;\n }\n\n /**\n * Store the internal iv vector into the heap.\n * @instance\n * @memberof AES_asm\n * @param {number} pos - offset where to put the data\n * @return {number} The number of bytes have been written into the heap, always 16.\n */\n function get_iv(pos) {\n pos = pos | 0;\n\n if (pos & 15) return -1;\n\n DATA[pos | 0] = I0 >>> 24,\n DATA[pos | 1] = I0 >>> 16 & 255,\n DATA[pos | 2] = I0 >>> 8 & 255,\n DATA[pos | 3] = I0 & 255,\n DATA[pos | 4] = I1 >>> 24,\n DATA[pos | 5] = I1 >>> 16 & 255,\n DATA[pos | 6] = I1 >>> 8 & 255,\n DATA[pos | 7] = I1 & 255,\n DATA[pos | 8] = I2 >>> 24,\n DATA[pos | 9] = I2 >>> 16 & 255,\n DATA[pos | 10] = I2 >>> 8 & 255,\n DATA[pos | 11] = I2 & 255,\n DATA[pos | 12] = I3 >>> 24,\n DATA[pos | 13] = I3 >>> 16 & 255,\n DATA[pos | 14] = I3 >>> 8 & 255,\n DATA[pos | 15] = I3 & 255;\n\n return 16;\n }\n\n /**\n * GCM initialization.\n * @instance\n * @memberof AES_asm\n */\n function gcm_init() {\n _ecb_enc(0, 0, 0, 0);\n H0 = S0,\n H1 = S1,\n H2 = S2,\n H3 = S3;\n }\n\n /**\n * Perform ciphering operation on the supplied data.\n * @instance\n * @memberof AES_asm\n * @param {number} mode - block cipher mode (see {@link AES_asm} mode constants)\n * @param {number} pos - offset of the data being processed\n * @param {number} len - length of the data being processed\n * @return {number} Actual amount of data have been processed.\n */\n function cipher(mode, pos, len) {\n mode = mode | 0;\n pos = pos | 0;\n len = len | 0;\n\n var ret = 0;\n\n if (pos & 15) return -1;\n\n while ((len | 0) >= 16) {\n _cipher_modes[mode & 7](\n DATA[pos | 0] << 24 | DATA[pos | 1] << 16 | DATA[pos | 2] << 8 | DATA[pos | 3],\n DATA[pos | 4] << 24 | DATA[pos | 5] << 16 | DATA[pos | 6] << 8 | DATA[pos | 7],\n DATA[pos | 8] << 24 | DATA[pos | 9] << 16 | DATA[pos | 10] << 8 | DATA[pos | 11],\n DATA[pos | 12] << 24 | DATA[pos | 13] << 16 | DATA[pos | 14] << 8 | DATA[pos | 15]\n );\n\n DATA[pos | 0] = S0 >>> 24,\n DATA[pos | 1] = S0 >>> 16 & 255,\n DATA[pos | 2] = S0 >>> 8 & 255,\n DATA[pos | 3] = S0 & 255,\n DATA[pos | 4] = S1 >>> 24,\n DATA[pos | 5] = S1 >>> 16 & 255,\n DATA[pos | 6] = S1 >>> 8 & 255,\n DATA[pos | 7] = S1 & 255,\n DATA[pos | 8] = S2 >>> 24,\n DATA[pos | 9] = S2 >>> 16 & 255,\n DATA[pos | 10] = S2 >>> 8 & 255,\n DATA[pos | 11] = S2 & 255,\n DATA[pos | 12] = S3 >>> 24,\n DATA[pos | 13] = S3 >>> 16 & 255,\n DATA[pos | 14] = S3 >>> 8 & 255,\n DATA[pos | 15] = S3 & 255;\n\n ret = (ret + 16) | 0,\n pos = (pos + 16) | 0,\n len = (len - 16) | 0;\n }\n\n return ret | 0;\n }\n\n /**\n * Calculates MAC of the supplied data.\n * @instance\n * @memberof AES_asm\n * @param {number} mode - block cipher mode (see {@link AES_asm} mode constants)\n * @param {number} pos - offset of the data being processed\n * @param {number} len - length of the data being processed\n * @return {number} Actual amount of data have been processed.\n */\n function mac(mode, pos, len) {\n mode = mode | 0;\n pos = pos | 0;\n len = len | 0;\n\n var ret = 0;\n\n if (pos & 15) return -1;\n\n while ((len | 0) >= 16) {\n _mac_modes[mode & 1](\n DATA[pos | 0] << 24 | DATA[pos | 1] << 16 | DATA[pos | 2] << 8 | DATA[pos | 3],\n DATA[pos | 4] << 24 | DATA[pos | 5] << 16 | DATA[pos | 6] << 8 | DATA[pos | 7],\n DATA[pos | 8] << 24 | DATA[pos | 9] << 16 | DATA[pos | 10] << 8 | DATA[pos | 11],\n DATA[pos | 12] << 24 | DATA[pos | 13] << 16 | DATA[pos | 14] << 8 | DATA[pos | 15]\n );\n\n ret = (ret + 16) | 0,\n pos = (pos + 16) | 0,\n len = (len - 16) | 0;\n }\n\n return ret | 0;\n }\n\n /**\n * AES cipher modes table (virual methods)\n */\n var _cipher_modes = [_ecb_enc, _ecb_dec, _cbc_enc, _cbc_dec, _cfb_enc, _cfb_dec, _ofb, _ctr];\n\n /**\n * AES MAC modes table (virual methods)\n */\n var _mac_modes = [_cbc_enc, _gcm_mac];\n\n /**\n * Asm.js module exports\n */\n return {\n set_rounds: set_rounds,\n set_state: set_state,\n set_iv: set_iv,\n set_nonce: set_nonce,\n set_mask: set_mask,\n set_counter: set_counter,\n get_state: get_state,\n get_iv: get_iv,\n gcm_init: gcm_init,\n cipher: cipher,\n mac: mac,\n };\n }(stdlib, foreign, buffer);\n\n asm.set_key = set_key;\n\n return asm;\n };\n\n /**\n * AES enciphering mode constants\n * @enum {number}\n * @const\n */\n wrapper.ENC = {\n ECB: 0,\n CBC: 2,\n CFB: 4,\n OFB: 6,\n CTR: 7,\n },\n\n /**\n * AES deciphering mode constants\n * @enum {number}\n * @const\n */\n wrapper.DEC = {\n ECB: 1,\n CBC: 3,\n CFB: 5,\n OFB: 6,\n CTR: 7,\n },\n\n /**\n * AES MAC mode constants\n * @enum {number}\n * @const\n */\n wrapper.MAC = {\n CBC: 0,\n GCM: 1,\n };\n\n /**\n * Heap data offset\n * @type {number}\n * @const\n */\n wrapper.HEAP_DATA = 0x4000;\n\n return wrapper;\n}();\n\nclass AES {\n constructor(key, iv, padding = true, mode) {\n this.pos = 0;\n this.len = 0;\n this.mode = mode;\n // The AES \"worker\"\n this.heap = _heap_init().subarray(AES_asm.HEAP_DATA);\n this.asm = new AES_asm(null, this.heap.buffer);\n // The AES object state\n this.pos = 0;\n this.len = 0;\n // Key\n const keylen = key.length;\n if (keylen !== 16 && keylen !== 24 && keylen !== 32)\n throw new IllegalArgumentError('illegal key size');\n const keyview = new DataView(key.buffer, key.byteOffset, key.byteLength);\n this.asm.set_key(keylen >> 2, keyview.getUint32(0), keyview.getUint32(4), keyview.getUint32(8), keyview.getUint32(12), keylen > 16 ? keyview.getUint32(16) : 0, keylen > 16 ? keyview.getUint32(20) : 0, keylen > 24 ? keyview.getUint32(24) : 0, keylen > 24 ? keyview.getUint32(28) : 0);\n // IV\n if (iv !== undefined) {\n if (iv.length !== 16)\n throw new IllegalArgumentError('illegal iv size');\n let ivview = new DataView(iv.buffer, iv.byteOffset, iv.byteLength);\n this.asm.set_iv(ivview.getUint32(0), ivview.getUint32(4), ivview.getUint32(8), ivview.getUint32(12));\n }\n else {\n this.asm.set_iv(0, 0, 0, 0);\n }\n this.padding = padding;\n }\n AES_Encrypt_process(data) {\n if (!is_bytes(data))\n throw new TypeError(\"data isn't of expected type\");\n let asm = this.asm;\n let heap = this.heap;\n let amode = AES_asm.ENC[this.mode];\n let hpos = AES_asm.HEAP_DATA;\n let pos = this.pos;\n let len = this.len;\n let dpos = 0;\n let dlen = data.length || 0;\n let rpos = 0;\n let rlen = (len + dlen) & -16;\n let wlen = 0;\n let result = new Uint8Array(rlen);\n while (dlen > 0) {\n wlen = _heap_write(heap, pos + len, data, dpos, dlen);\n len += wlen;\n dpos += wlen;\n dlen -= wlen;\n wlen = asm.cipher(amode, hpos + pos, len);\n if (wlen)\n result.set(heap.subarray(pos, pos + wlen), rpos);\n rpos += wlen;\n if (wlen < len) {\n pos += wlen;\n len -= wlen;\n }\n else {\n pos = 0;\n len = 0;\n }\n }\n this.pos = pos;\n this.len = len;\n return result;\n }\n AES_Encrypt_finish() {\n let asm = this.asm;\n let heap = this.heap;\n let amode = AES_asm.ENC[this.mode];\n let hpos = AES_asm.HEAP_DATA;\n let pos = this.pos;\n let len = this.len;\n let plen = 16 - (len % 16);\n let rlen = len;\n if (this.hasOwnProperty('padding')) {\n if (this.padding) {\n for (let p = 0; p < plen; ++p) {\n heap[pos + len + p] = plen;\n }\n len += plen;\n rlen = len;\n }\n else if (len % 16) {\n throw new IllegalArgumentError('data length must be a multiple of the block size');\n }\n }\n else {\n len += plen;\n }\n const result = new Uint8Array(rlen);\n if (len)\n asm.cipher(amode, hpos + pos, len);\n if (rlen)\n result.set(heap.subarray(pos, pos + rlen));\n this.pos = 0;\n this.len = 0;\n return result;\n }\n AES_Decrypt_process(data) {\n if (!is_bytes(data))\n throw new TypeError(\"data isn't of expected type\");\n let asm = this.asm;\n let heap = this.heap;\n let amode = AES_asm.DEC[this.mode];\n let hpos = AES_asm.HEAP_DATA;\n let pos = this.pos;\n let len = this.len;\n let dpos = 0;\n let dlen = data.length || 0;\n let rpos = 0;\n let rlen = (len + dlen) & -16;\n let plen = 0;\n let wlen = 0;\n if (this.padding) {\n plen = len + dlen - rlen || 16;\n rlen -= plen;\n }\n const result = new Uint8Array(rlen);\n while (dlen > 0) {\n wlen = _heap_write(heap, pos + len, data, dpos, dlen);\n len += wlen;\n dpos += wlen;\n dlen -= wlen;\n wlen = asm.cipher(amode, hpos + pos, len - (!dlen ? plen : 0));\n if (wlen)\n result.set(heap.subarray(pos, pos + wlen), rpos);\n rpos += wlen;\n if (wlen < len) {\n pos += wlen;\n len -= wlen;\n }\n else {\n pos = 0;\n len = 0;\n }\n }\n this.pos = pos;\n this.len = len;\n return result;\n }\n AES_Decrypt_finish() {\n let asm = this.asm;\n let heap = this.heap;\n let amode = AES_asm.DEC[this.mode];\n let hpos = AES_asm.HEAP_DATA;\n let pos = this.pos;\n let len = this.len;\n let rlen = len;\n if (len > 0) {\n if (len % 16) {\n if (this.hasOwnProperty('padding')) {\n throw new IllegalArgumentError('data length must be a multiple of the block size');\n }\n else {\n len += 16 - (len % 16);\n }\n }\n asm.cipher(amode, hpos + pos, len);\n if (this.hasOwnProperty('padding') && this.padding) {\n let pad = heap[pos + rlen - 1];\n if (pad < 1 || pad > 16 || pad > rlen)\n throw new SecurityError('bad padding');\n let pcheck = 0;\n for (let i = pad; i > 1; i--)\n pcheck |= pad ^ heap[pos + rlen - i];\n if (pcheck)\n throw new SecurityError('bad padding');\n rlen -= pad;\n }\n }\n const result = new Uint8Array(rlen);\n if (rlen > 0) {\n result.set(heap.subarray(pos, pos + rlen));\n }\n this.pos = 0;\n this.len = 0;\n return result;\n }\n}\n\nclass AES_CBC extends AES {\n static encrypt(data, key, padding = true, iv) {\n return new AES_CBC(key, iv, padding).encrypt(data);\n }\n static decrypt(data, key, padding = true, iv) {\n return new AES_CBC(key, iv, padding).decrypt(data);\n }\n constructor(key, iv, padding = true) {\n super(key, iv, padding, 'CBC');\n }\n encrypt(data) {\n const r1 = this.AES_Encrypt_process(data);\n const r2 = this.AES_Encrypt_finish();\n return joinBytes(r1, r2);\n }\n decrypt(data) {\n const r1 = this.AES_Decrypt_process(data);\n const r2 = this.AES_Decrypt_finish();\n return joinBytes(r1, r2);\n }\n}\n\n/**\n * Counter with CBC-MAC (CCM)\n *\n * Due to JS limitations (52 bits of Number precision) maximum encrypted message length\n * is limited to ~4 PiB ( 2^52 - 16 ) per `nonce`-`key` pair.\n * That also limits `lengthSize` parameter maximum value to 7 (not 8 as described in RFC3610).\n *\n * Additional authenticated data `adata` maximum length is chosen to be no more than 65279 bytes ( 2^16 - 2^8 ),\n * which is considered enough for the most of use-cases.\n *\n * And one more important thing: in case of progressive ciphering of a data stream (in other\n * words when data can't be held in-memory at a whole and are ciphered chunk-by-chunk)\n * you have to know the `dataLength` in advance and pass that value to the cipher options.\n */\nconst _AES_CCM_adata_maxLength = 65279; // 2^16 - 2^8\nconst _AES_CCM_data_maxLength = 4503599627370480; // 2^52 - 2^4\nclass AES_CCM extends AES {\n constructor(key, nonce, adata, tagSize = 16, dataLength) {\n super(key, undefined, undefined, 'CCM');\n this.counter = 1;\n this.dataLength = -1;\n // Tag size\n if (tagSize < 4 || tagSize > 16 || tagSize & 1)\n throw new IllegalArgumentError('illegal tagSize value');\n this.tagSize = tagSize;\n // Nonce\n this.nonce = nonce;\n if (nonce.length < 8 || nonce.length > 13)\n throw new IllegalArgumentError('illegal nonce length');\n this.lengthSize = 15 - nonce.length;\n nonce = new Uint8Array(nonce.length + 1);\n nonce[0] = this.lengthSize - 1;\n nonce.set(this.nonce, 1);\n if (dataLength < 0 || dataLength > _AES_CCM_data_maxLength || dataLength > Math.pow(2, 8 * this.lengthSize) - 16)\n throw new IllegalArgumentError('illegal dataLength value');\n if (adata !== undefined) {\n if (adata.length > _AES_CCM_adata_maxLength)\n throw new IllegalArgumentError('illegal adata length');\n this.adata = adata.length ? adata : undefined;\n }\n this.dataLength = dataLength;\n this.counter = 1;\n this.AES_CCM_calculate_iv();\n this.AES_CTR_set_options(nonce, this.counter, 8 * this.lengthSize);\n }\n static encrypt(clear, key, nonce, adata, tagsize = 16) {\n return new AES_CCM(key, nonce, adata, tagsize, clear.length).encrypt(clear);\n }\n static decrypt(cipher, key, nonce, adata, tagsize = 16) {\n return new AES_CCM(key, nonce, adata, tagsize, cipher.length - tagsize).decrypt(cipher);\n }\n encrypt(data) {\n this.dataLength = data.length || 0;\n const result1 = this.AES_CCM_Encrypt_process(data);\n const result2 = this.AES_CCM_Encrypt_finish();\n const result = new Uint8Array(result1.length + result2.length);\n if (result1.length)\n result.set(result1);\n if (result2.length)\n result.set(result2, result1.length);\n return result;\n }\n decrypt(data) {\n this.dataLength = data.length || 0;\n const result1 = this.AES_CCM_Decrypt_process(data);\n const result2 = this.AES_CCM_Decrypt_finish();\n const result = new Uint8Array(result1.length + result2.length);\n if (result1.length)\n result.set(result1);\n if (result2.length)\n result.set(result2, result1.length);\n return result;\n }\n AES_CCM_calculate_iv() {\n const nonce = this.nonce;\n const adata = this.adata;\n const tagSize = this.tagSize;\n const lengthSize = this.lengthSize;\n const dataLength = this.dataLength;\n const data = new Uint8Array(16 + (adata ? 2 + adata.length : 0));\n // B0: flags(adata?, M', L'), nonce, len(data)\n data[0] = (adata ? 64 : 0) | ((tagSize - 2) << 2) | (lengthSize - 1);\n data.set(nonce, 1);\n if (lengthSize > 6)\n data[9] = ((dataLength / 0x100000000) >>> 16) & 15;\n if (lengthSize > 5)\n data[10] = ((dataLength / 0x100000000) >>> 8) & 255;\n if (lengthSize > 4)\n data[11] = (dataLength / 0x100000000) & 255;\n if (lengthSize > 3)\n data[12] = dataLength >>> 24;\n if (lengthSize > 2)\n data[13] = (dataLength >>> 16) & 255;\n data[14] = (dataLength >>> 8) & 255;\n data[15] = dataLength & 255;\n // B*: len(adata), adata\n if (adata) {\n data[16] = (adata.length >>> 8) & 255;\n data[17] = adata.length & 255;\n data.set(adata, 18);\n }\n this._cbc_mac_process(data);\n this.asm.get_state(AES_asm.HEAP_DATA);\n const iv = new Uint8Array(this.heap.subarray(0, 16));\n const ivview = new DataView(iv.buffer, iv.byteOffset, iv.byteLength);\n this.asm.set_iv(ivview.getUint32(0), ivview.getUint32(4), ivview.getUint32(8), ivview.getUint32(12));\n }\n _cbc_mac_process(data) {\n const heap = this.heap;\n const asm = this.asm;\n let dpos = 0;\n let dlen = data.length || 0;\n let wlen = 0;\n while (dlen > 0) {\n wlen = _heap_write(heap, 0, data, dpos, dlen);\n while (wlen & 15)\n heap[wlen++] = 0;\n dpos += wlen;\n dlen -= wlen;\n asm.mac(AES_asm.MAC.CBC, AES_asm.HEAP_DATA, wlen);\n }\n }\n AES_CCM_Encrypt_process(data) {\n const asm = this.asm;\n const heap = this.heap;\n let dpos = 0;\n let dlen = data.length || 0;\n let counter = this.counter;\n let pos = this.pos;\n let len = this.len;\n const rlen = (len + dlen) & -16;\n let rpos = 0;\n let wlen = 0;\n if (((counter - 1) << 4) + len + dlen > _AES_CCM_data_maxLength)\n // ??? should check against lengthSize\n throw new RangeError('counter overflow');\n const result = new Uint8Array(rlen);\n while (dlen > 0) {\n wlen = _heap_write(heap, pos + len, data, dpos, dlen);\n len += wlen;\n dpos += wlen;\n dlen -= wlen;\n wlen = asm.mac(AES_asm.MAC.CBC, AES_asm.HEAP_DATA + pos, len);\n wlen = asm.cipher(AES_asm.ENC.CTR, AES_asm.HEAP_DATA + pos, wlen);\n if (wlen)\n result.set(heap.subarray(pos, pos + wlen), rpos);\n counter += wlen >>> 4;\n rpos += wlen;\n if (wlen < len) {\n pos += wlen;\n len -= wlen;\n }\n else {\n pos = 0;\n len = 0;\n }\n }\n this.counter = counter;\n this.pos = pos;\n this.len = len;\n return result;\n }\n AES_CCM_Encrypt_finish() {\n const asm = this.asm;\n const heap = this.heap;\n const tagSize = this.tagSize;\n const pos = this.pos;\n const len = this.len;\n const result = new Uint8Array(len + tagSize);\n let i = len;\n for (; i & 15; i++)\n heap[pos + i] = 0;\n asm.mac(AES_asm.MAC.CBC, AES_asm.HEAP_DATA + pos, i);\n asm.cipher(AES_asm.ENC.CTR, AES_asm.HEAP_DATA + pos, i);\n if (len)\n result.set(heap.subarray(pos, pos + len));\n asm.set_counter(0, 0, 0, 0);\n asm.get_iv(AES_asm.HEAP_DATA);\n asm.cipher(AES_asm.ENC.CTR, AES_asm.HEAP_DATA, 16);\n result.set(heap.subarray(0, tagSize), len);\n this.counter = 1;\n this.pos = 0;\n this.len = 0;\n return result;\n }\n AES_CCM_Decrypt_process(data) {\n let dpos = 0;\n let dlen = data.length || 0;\n const asm = this.asm;\n const heap = this.heap;\n let counter = this.counter;\n const tagSize = this.tagSize;\n let pos = this.pos;\n let len = this.len;\n let rpos = 0;\n const rlen = len + dlen > tagSize ? (len + dlen - tagSize) & -16 : 0;\n const tlen = len + dlen - rlen;\n let wlen = 0;\n if (((counter - 1) << 4) + len + dlen > _AES_CCM_data_maxLength)\n throw new RangeError('counter overflow');\n const result = new Uint8Array(rlen);\n while (dlen > tlen) {\n wlen = _heap_write(heap, pos + len, data, dpos, dlen - tlen);\n len += wlen;\n dpos += wlen;\n dlen -= wlen;\n wlen = asm.cipher(AES_asm.DEC.CTR, AES_asm.HEAP_DATA + pos, wlen);\n wlen = asm.mac(AES_asm.MAC.CBC, AES_asm.HEAP_DATA + pos, wlen);\n if (wlen)\n result.set(heap.subarray(pos, pos + wlen), rpos);\n counter += wlen >>> 4;\n rpos += wlen;\n pos = 0;\n len = 0;\n }\n if (dlen > 0) {\n len += _heap_write(heap, 0, data, dpos, dlen);\n }\n this.counter = counter;\n this.pos = pos;\n this.len = len;\n return result;\n }\n AES_CCM_Decrypt_finish() {\n const asm = this.asm;\n const heap = this.heap;\n const tagSize = this.tagSize;\n const pos = this.pos;\n const len = this.len;\n const rlen = len - tagSize;\n if (len < tagSize)\n throw new IllegalStateError('authentication tag not found');\n const result = new Uint8Array(rlen);\n const atag = new Uint8Array(heap.subarray(pos + rlen, pos + len));\n asm.cipher(AES_asm.DEC.CTR, AES_asm.HEAP_DATA + pos, (rlen + 15) & -16);\n result.set(heap.subarray(pos, pos + rlen));\n let i = rlen;\n for (; i & 15; i++)\n heap[pos + i] = 0;\n asm.mac(AES_asm.MAC.CBC, AES_asm.HEAP_DATA + pos, i);\n asm.set_counter(0, 0, 0, 0);\n asm.get_iv(AES_asm.HEAP_DATA);\n asm.cipher(AES_asm.ENC.CTR, AES_asm.HEAP_DATA, 16);\n let acheck = 0;\n for (let j = 0; j < tagSize; ++j)\n acheck |= atag[j] ^ heap[j];\n if (acheck)\n throw new SecurityError('data integrity check failed');\n this.counter = 1;\n this.pos = 0;\n this.len = 0;\n return result;\n }\n AES_CTR_set_options(nonce, counter, size) {\n if (size < 8 || size > 48)\n throw new IllegalArgumentError('illegal counter size');\n const mask = Math.pow(2, size) - 1;\n this.asm.set_mask(0, 0, (mask / 0x100000000) | 0, mask | 0);\n const len = nonce.length;\n if (!len || len > 16)\n throw new IllegalArgumentError('illegal nonce size');\n this.nonce = nonce;\n const view = new DataView(new ArrayBuffer(16));\n new Uint8Array(view.buffer).set(nonce);\n this.asm.set_nonce(view.getUint32(0), view.getUint32(4), view.getUint32(8), view.getUint32(12));\n if (counter < 0 || counter >= Math.pow(2, size))\n throw new IllegalArgumentError('illegal counter value');\n this.counter = counter;\n this.asm.set_counter(0, 0, (counter / 0x100000000) | 0, counter | 0);\n }\n}\n\nclass AES_CFB extends AES {\n static encrypt(data, key, iv) {\n return new AES_CFB(key, iv).encrypt(data);\n }\n static decrypt(data, key, iv) {\n return new AES_CFB(key, iv).decrypt(data);\n }\n constructor(key, iv) {\n super(key, iv, true, 'CFB');\n delete this.padding;\n }\n encrypt(data) {\n const r1 = this.AES_Encrypt_process(data);\n const r2 = this.AES_Encrypt_finish();\n return joinBytes(r1, r2);\n }\n decrypt(data) {\n const r1 = this.AES_Decrypt_process(data);\n const r2 = this.AES_Decrypt_finish();\n return joinBytes(r1, r2);\n }\n}\n\nclass AES_ECB extends AES {\n static encrypt(data, key, padding = false) {\n return new AES_ECB(key, padding).encrypt(data);\n }\n static decrypt(data, key, padding = false) {\n return new AES_ECB(key, padding).decrypt(data);\n }\n constructor(key, padding = false) {\n super(key, undefined, padding, 'ECB');\n }\n encrypt(data) {\n const r1 = this.AES_Encrypt_process(data);\n const r2 = this.AES_Encrypt_finish();\n return joinBytes(r1, r2);\n }\n decrypt(data) {\n const r1 = this.AES_Decrypt_process(data);\n const r2 = this.AES_Decrypt_finish();\n return joinBytes(r1, r2);\n }\n}\n\nfunction mul2(data) {\n const t = data[0] & 0x80;\n for (let i = 0; i < 15; i++) {\n data[i] = (data[i] << 1) ^ (data[i + 1] & 0x80 ? 1 : 0);\n }\n data[15] = (data[15] << 1) ^ (t ? 0x87 : 0);\n}\nclass AES_CMAC {\n constructor(key) {\n this.bufferLength = 0;\n this.k = new AES_ECB(key).encrypt(new Uint8Array(16));\n mul2(this.k);\n this.cbc = new AES_CBC(key, new Uint8Array(16), false);\n this.buffer = new Uint8Array(16);\n this.result = null;\n }\n static bytes(data, key) {\n return new AES_CMAC(key).process(data).finish().result;\n }\n process(data) {\n if (this.bufferLength + data.length > 16) {\n this.cbc.encrypt(this.buffer.subarray(0, this.bufferLength));\n const offset = ((this.bufferLength + data.length - 1) & ~15) - this.bufferLength;\n this.cbc.encrypt(data.subarray(0, offset));\n this.buffer.set(data.subarray(offset));\n this.bufferLength = data.length - offset;\n }\n else {\n this.buffer.set(data, this.bufferLength);\n this.bufferLength += data.length;\n }\n return this;\n }\n finish() {\n if (this.bufferLength !== 16) {\n this.buffer[this.bufferLength] = 0x80;\n for (let i = this.bufferLength + 1; i < 16; i++) {\n this.buffer[i] = 0;\n }\n mul2(this.k);\n }\n for (let i = 0; i < 16; i++) {\n this.buffer[i] ^= this.k[i];\n }\n this.result = this.cbc.encrypt(this.buffer);\n return this;\n }\n}\n\nclass AES_CTR extends AES {\n static encrypt(data, key, nonce) {\n return new AES_CTR(key, nonce).encrypt(data);\n }\n static decrypt(data, key, nonce) {\n return new AES_CTR(key, nonce).encrypt(data);\n }\n constructor(key, nonce) {\n super(key, undefined, false, 'CTR');\n delete this.padding;\n this.AES_CTR_set_options(nonce);\n }\n encrypt(data) {\n const r1 = this.AES_Encrypt_process(data);\n const r2 = this.AES_Encrypt_finish();\n return joinBytes(r1, r2);\n }\n decrypt(data) {\n const r1 = this.AES_Encrypt_process(data);\n const r2 = this.AES_Encrypt_finish();\n return joinBytes(r1, r2);\n }\n AES_CTR_set_options(nonce, counter, size) {\n if (size !== undefined) {\n if (size < 8 || size > 48)\n throw new IllegalArgumentError('illegal counter size');\n let mask = Math.pow(2, size) - 1;\n this.asm.set_mask(0, 0, (mask / 0x100000000) | 0, mask | 0);\n }\n else {\n size = 48;\n this.asm.set_mask(0, 0, 0xffff, 0xffffffff);\n }\n if (nonce !== undefined) {\n let len = nonce.length;\n if (!len || len > 16)\n throw new IllegalArgumentError('illegal nonce size');\n let view = new DataView(new ArrayBuffer(16));\n new Uint8Array(view.buffer).set(nonce);\n this.asm.set_nonce(view.getUint32(0), view.getUint32(4), view.getUint32(8), view.getUint32(12));\n }\n else {\n throw new Error('nonce is required');\n }\n if (counter !== undefined) {\n if (counter < 0 || counter >= Math.pow(2, size))\n throw new IllegalArgumentError('illegal counter value');\n this.asm.set_counter(0, 0, (counter / 0x100000000) | 0, counter | 0);\n }\n }\n}\n\nconst _AES_GCM_data_maxLength = 68719476704; // 2^36 - 2^5\nclass AES_GCM extends AES {\n constructor(key, nonce, adata, tagSize = 16) {\n super(key, undefined, false, 'CTR');\n this.tagSize = tagSize;\n this.gamma0 = 0;\n this.counter = 1;\n // Init GCM\n this.asm.gcm_init();\n // Tag size\n if (this.tagSize < 4 || this.tagSize > 16)\n throw new IllegalArgumentError('illegal tagSize value');\n // Nonce\n const noncelen = nonce.length || 0;\n const noncebuf = new Uint8Array(16);\n if (noncelen !== 12) {\n this._gcm_mac_process(nonce);\n this.heap[0] = 0;\n this.heap[1] = 0;\n this.heap[2] = 0;\n this.heap[3] = 0;\n this.heap[4] = 0;\n this.heap[5] = 0;\n this.heap[6] = 0;\n this.heap[7] = 0;\n this.heap[8] = 0;\n this.heap[9] = 0;\n this.heap[10] = 0;\n this.heap[11] = noncelen >>> 29;\n this.heap[12] = (noncelen >>> 21) & 255;\n this.heap[13] = (noncelen >>> 13) & 255;\n this.heap[14] = (noncelen >>> 5) & 255;\n this.heap[15] = (noncelen << 3) & 255;\n this.asm.mac(AES_asm.MAC.GCM, AES_asm.HEAP_DATA, 16);\n this.asm.get_iv(AES_asm.HEAP_DATA);\n this.asm.set_iv(0, 0, 0, 0);\n noncebuf.set(this.heap.subarray(0, 16));\n }\n else {\n noncebuf.set(nonce);\n noncebuf[15] = 1;\n }\n const nonceview = new DataView(noncebuf.buffer);\n this.gamma0 = nonceview.getUint32(12);\n this.asm.set_nonce(nonceview.getUint32(0), nonceview.getUint32(4), nonceview.getUint32(8), 0);\n this.asm.set_mask(0, 0, 0, 0xffffffff);\n // Associated data\n if (adata !== undefined) {\n if (adata.length > _AES_GCM_data_maxLength)\n throw new IllegalArgumentError('illegal adata length');\n if (adata.length) {\n this.adata = adata;\n this._gcm_mac_process(adata);\n }\n else {\n this.adata = undefined;\n }\n }\n else {\n this.adata = undefined;\n }\n // Counter\n if (this.counter < 1 || this.counter > 0xffffffff)\n throw new RangeError('counter must be a positive 32-bit integer');\n this.asm.set_counter(0, 0, 0, (this.gamma0 + this.counter) | 0);\n }\n static encrypt(cleartext, key, nonce, adata, tagsize) {\n return new AES_GCM(key, nonce, adata, tagsize).encrypt(cleartext);\n }\n static decrypt(ciphertext, key, nonce, adata, tagsize) {\n return new AES_GCM(key, nonce, adata, tagsize).decrypt(ciphertext);\n }\n encrypt(data) {\n return this.AES_GCM_encrypt(data);\n }\n decrypt(data) {\n return this.AES_GCM_decrypt(data);\n }\n AES_GCM_Encrypt_process(data) {\n let dpos = 0;\n let dlen = data.length || 0;\n let asm = this.asm;\n let heap = this.heap;\n let counter = this.counter;\n let pos = this.pos;\n let len = this.len;\n let rpos = 0;\n let rlen = (len + dlen) & -16;\n let wlen = 0;\n if (((counter - 1) << 4) + len + dlen > _AES_GCM_data_maxLength)\n throw new RangeError('counter overflow');\n const result = new Uint8Array(rlen);\n while (dlen > 0) {\n wlen = _heap_write(heap, pos + len, data, dpos, dlen);\n len += wlen;\n dpos += wlen;\n dlen -= wlen;\n wlen = asm.cipher(AES_asm.ENC.CTR, AES_asm.HEAP_DATA + pos, len);\n wlen = asm.mac(AES_asm.MAC.GCM, AES_asm.HEAP_DATA + pos, wlen);\n if (wlen)\n result.set(heap.subarray(pos, pos + wlen), rpos);\n counter += wlen >>> 4;\n rpos += wlen;\n if (wlen < len) {\n pos += wlen;\n len -= wlen;\n }\n else {\n pos = 0;\n len = 0;\n }\n }\n this.counter = counter;\n this.pos = pos;\n this.len = len;\n return result;\n }\n AES_GCM_Encrypt_finish() {\n let asm = this.asm;\n let heap = this.heap;\n let counter = this.counter;\n let tagSize = this.tagSize;\n let adata = this.adata;\n let pos = this.pos;\n let len = this.len;\n const result = new Uint8Array(len + tagSize);\n asm.cipher(AES_asm.ENC.CTR, AES_asm.HEAP_DATA + pos, (len + 15) & -16);\n if (len)\n result.set(heap.subarray(pos, pos + len));\n let i = len;\n for (; i & 15; i++)\n heap[pos + i] = 0;\n asm.mac(AES_asm.MAC.GCM, AES_asm.HEAP_DATA + pos, i);\n const alen = adata !== undefined ? adata.length : 0;\n const clen = ((counter - 1) << 4) + len;\n heap[0] = 0;\n heap[1] = 0;\n heap[2] = 0;\n heap[3] = alen >>> 29;\n heap[4] = alen >>> 21;\n heap[5] = (alen >>> 13) & 255;\n heap[6] = (alen >>> 5) & 255;\n heap[7] = (alen << 3) & 255;\n heap[8] = heap[9] = heap[10] = 0;\n heap[11] = clen >>> 29;\n heap[12] = (clen >>> 21) & 255;\n heap[13] = (clen >>> 13) & 255;\n heap[14] = (clen >>> 5) & 255;\n heap[15] = (clen << 3) & 255;\n asm.mac(AES_asm.MAC.GCM, AES_asm.HEAP_DATA, 16);\n asm.get_iv(AES_asm.HEAP_DATA);\n asm.set_counter(0, 0, 0, this.gamma0);\n asm.cipher(AES_asm.ENC.CTR, AES_asm.HEAP_DATA, 16);\n result.set(heap.subarray(0, tagSize), len);\n this.counter = 1;\n this.pos = 0;\n this.len = 0;\n return result;\n }\n AES_GCM_Decrypt_process(data) {\n let dpos = 0;\n let dlen = data.length || 0;\n let asm = this.asm;\n let heap = this.heap;\n let counter = this.counter;\n let tagSize = this.tagSize;\n let pos = this.pos;\n let len = this.len;\n let rpos = 0;\n let rlen = len + dlen > tagSize ? (len + dlen - tagSize) & -16 : 0;\n let tlen = len + dlen - rlen;\n let wlen = 0;\n if (((counter - 1) << 4) + len + dlen > _AES_GCM_data_maxLength)\n throw new RangeError('counter overflow');\n const result = new Uint8Array(rlen);\n while (dlen > tlen) {\n wlen = _heap_write(heap, pos + len, data, dpos, dlen - tlen);\n len += wlen;\n dpos += wlen;\n dlen -= wlen;\n wlen = asm.mac(AES_asm.MAC.GCM, AES_asm.HEAP_DATA + pos, wlen);\n wlen = asm.cipher(AES_asm.DEC.CTR, AES_asm.HEAP_DATA + pos, wlen);\n if (wlen)\n result.set(heap.subarray(pos, pos + wlen), rpos);\n counter += wlen >>> 4;\n rpos += wlen;\n pos = 0;\n len = 0;\n }\n if (dlen > 0) {\n len += _heap_write(heap, 0, data, dpos, dlen);\n }\n this.counter = counter;\n this.pos = pos;\n this.len = len;\n return result;\n }\n AES_GCM_Decrypt_finish() {\n let asm = this.asm;\n let heap = this.heap;\n let tagSize = this.tagSize;\n let adata = this.adata;\n let counter = this.counter;\n let pos = this.pos;\n let len = this.len;\n let rlen = len - tagSize;\n if (len < tagSize)\n throw new IllegalStateError('authentication tag not found');\n const result = new Uint8Array(rlen);\n const atag = new Uint8Array(heap.subarray(pos + rlen, pos + len));\n let i = rlen;\n for (; i & 15; i++)\n heap[pos + i] = 0;\n asm.mac(AES_asm.MAC.GCM, AES_asm.HEAP_DATA + pos, i);\n asm.cipher(AES_asm.DEC.CTR, AES_asm.HEAP_DATA + pos, i);\n if (rlen)\n result.set(heap.subarray(pos, pos + rlen));\n const alen = adata !== undefined ? adata.length : 0;\n const clen = ((counter - 1) << 4) + len - tagSize;\n heap[0] = 0;\n heap[1] = 0;\n heap[2] = 0;\n heap[3] = alen >>> 29;\n heap[4] = alen >>> 21;\n heap[5] = (alen >>> 13) & 255;\n heap[6] = (alen >>> 5) & 255;\n heap[7] = (alen << 3) & 255;\n heap[8] = heap[9] = heap[10] = 0;\n heap[11] = clen >>> 29;\n heap[12] = (clen >>> 21) & 255;\n heap[13] = (clen >>> 13) & 255;\n heap[14] = (clen >>> 5) & 255;\n heap[15] = (clen << 3) & 255;\n asm.mac(AES_asm.MAC.GCM, AES_asm.HEAP_DATA, 16);\n asm.get_iv(AES_asm.HEAP_DATA);\n asm.set_counter(0, 0, 0, this.gamma0);\n asm.cipher(AES_asm.ENC.CTR, AES_asm.HEAP_DATA, 16);\n let acheck = 0;\n for (let i = 0; i < tagSize; ++i)\n acheck |= atag[i] ^ heap[i];\n if (acheck)\n throw new SecurityError('data integrity check failed');\n this.counter = 1;\n this.pos = 0;\n this.len = 0;\n return result;\n }\n AES_GCM_decrypt(data) {\n const result1 = this.AES_GCM_Decrypt_process(data);\n const result2 = this.AES_GCM_Decrypt_finish();\n const result = new Uint8Array(result1.length + result2.length);\n if (result1.length)\n result.set(result1);\n if (result2.length)\n result.set(result2, result1.length);\n return result;\n }\n AES_GCM_encrypt(data) {\n const result1 = this.AES_GCM_Encrypt_process(data);\n const result2 = this.AES_GCM_Encrypt_finish();\n const result = new Uint8Array(result1.length + result2.length);\n if (result1.length)\n result.set(result1);\n if (result2.length)\n result.set(result2, result1.length);\n return result;\n }\n _gcm_mac_process(data) {\n const heap = this.heap;\n const asm = this.asm;\n let dpos = 0;\n let dlen = data.length || 0;\n let wlen = 0;\n while (dlen > 0) {\n wlen = _heap_write(heap, 0, data, dpos, dlen);\n dpos += wlen;\n dlen -= wlen;\n while (wlen & 15)\n heap[wlen++] = 0;\n asm.mac(AES_asm.MAC.GCM, AES_asm.HEAP_DATA, wlen);\n }\n }\n}\n\nclass AES_OFB extends AES {\n static encrypt(data, key, iv) {\n return new AES_OFB(key, iv).encrypt(data);\n }\n static decrypt(data, key, iv) {\n return new AES_OFB(key, iv).decrypt(data);\n }\n constructor(key, iv) {\n super(key, iv, false, 'OFB');\n }\n encrypt(data) {\n const r1 = this.AES_Encrypt_process(data);\n const r2 = this.AES_Encrypt_finish();\n return joinBytes(r1, r2);\n }\n decrypt(data) {\n const r1 = this.AES_Decrypt_process(data);\n const r2 = this.AES_Decrypt_finish();\n return joinBytes(r1, r2);\n }\n}\n\n/**\n * Integers are represented as little endian array of 32-bit limbs.\n * Limbs number is a power of 2 and a multiple of 8 (256 bits).\n * Negative values use two's complement representation.\n */\nvar bigint_asm = function ( stdlib, foreign, buffer ) {\n \"use asm\";\n\n var SP = 0;\n\n var HEAP32 = new stdlib.Uint32Array(buffer);\n\n var imul = stdlib.Math.imul;\n\n /**\n * Simple stack memory allocator\n *\n * Methods:\n * sreset\n * salloc\n * sfree\n */\n\n function sreset ( p ) {\n p = p|0;\n SP = p = (p + 31) & -32;\n return p|0;\n }\n\n function salloc ( l ) {\n l = l|0;\n var p = 0; p = SP;\n SP = p + ((l + 31) & -32)|0;\n return p|0;\n }\n\n function sfree ( l ) {\n l = l|0;\n SP = SP - ((l + 31) & -32)|0;\n }\n\n /**\n * Utility functions:\n * cp\n * z\n */\n\n function cp ( l, A, B ) {\n l = l|0;\n A = A|0;\n B = B|0;\n\n var i = 0;\n\n if ( (A|0) > (B|0) ) {\n for ( ; (i|0) < (l|0); i = (i+4)|0 ) {\n HEAP32[(B+i)>>2] = HEAP32[(A+i)>>2];\n }\n }\n else {\n for ( i = (l-4)|0; (i|0) >= 0; i = (i-4)|0 ) {\n HEAP32[(B+i)>>2] = HEAP32[(A+i)>>2];\n }\n }\n }\n\n function z ( l, z, A ) {\n l = l|0;\n z = z|0;\n A = A|0;\n\n var i = 0;\n\n for ( ; (i|0) < (l|0); i = (i+4)|0 ) {\n HEAP32[(A+i)>>2] = z;\n }\n }\n\n /**\n * Negate the argument\n *\n * Perform two's complement transformation:\n *\n * -A = ~A + 1\n *\n * @param A offset of the argment being negated, 32-byte aligned\n * @param lA length of the argument, multiple of 32\n *\n * @param R offset where to place the result to, 32-byte aligned\n * @param lR length to truncate the result to, multiple of 32\n */\n function neg ( A, lA, R, lR ) {\n A = A|0;\n lA = lA|0;\n R = R|0;\n lR = lR|0;\n\n var a = 0, c = 0, t = 0, r = 0, i = 0;\n\n if ( (lR|0) <= 0 )\n lR = lA;\n\n if ( (lR|0) < (lA|0) )\n lA = lR;\n\n c = 1;\n for ( ; (i|0) < (lA|0); i = (i+4)|0 ) {\n a = ~HEAP32[(A+i)>>2];\n t = (a & 0xffff) + c|0;\n r = (a >>> 16) + (t >>> 16)|0;\n HEAP32[(R+i)>>2] = (r << 16) | (t & 0xffff);\n c = r >>> 16;\n }\n\n for ( ; (i|0) < (lR|0); i = (i+4)|0 ) {\n HEAP32[(R+i)>>2] = (c-1)|0;\n }\n\n return c|0;\n }\n\n function cmp ( A, lA, B, lB ) {\n A = A|0;\n lA = lA|0;\n B = B|0;\n lB = lB|0;\n\n var a = 0, b = 0, i = 0;\n\n if ( (lA|0) > (lB|0) ) {\n for ( i = (lA-4)|0; (i|0) >= (lB|0); i = (i-4)|0 ) {\n if ( HEAP32[(A+i)>>2]|0 ) return 1;\n }\n }\n else {\n for ( i = (lB-4)|0; (i|0) >= (lA|0); i = (i-4)|0 ) {\n if ( HEAP32[(B+i)>>2]|0 ) return -1;\n }\n }\n\n for ( ; (i|0) >= 0; i = (i-4)|0 ) {\n a = HEAP32[(A+i)>>2]|0, b = HEAP32[(B+i)>>2]|0;\n if ( (a>>>0) < (b>>>0) ) return -1;\n if ( (a>>>0) > (b>>>0) ) return 1;\n }\n\n return 0;\n }\n\n /**\n * Test the argument\n *\n * Same as `cmp` with zero.\n */\n function tst ( A, lA ) {\n A = A|0;\n lA = lA|0;\n\n var i = 0;\n\n for ( i = (lA-4)|0; (i|0) >= 0; i = (i-4)|0 ) {\n if ( HEAP32[(A+i)>>2]|0 ) return (i+4)|0;\n }\n\n return 0;\n }\n\n /**\n * Conventional addition\n *\n * @param A offset of the first argument, 32-byte aligned\n * @param lA length of the first argument, multiple of 32\n *\n * @param B offset of the second argument, 32-bit aligned\n * @param lB length of the second argument, multiple of 32\n *\n * @param R offset where to place the result to, 32-byte aligned\n * @param lR length to truncate the result to, multiple of 32\n */\n function add ( A, lA, B, lB, R, lR ) {\n A = A|0;\n lA = lA|0;\n B = B|0;\n lB = lB|0;\n R = R|0;\n lR = lR|0;\n\n var a = 0, b = 0, c = 0, t = 0, r = 0, i = 0;\n\n if ( (lA|0) < (lB|0) ) {\n t = A, A = B, B = t;\n t = lA, lA = lB, lB = t;\n }\n\n if ( (lR|0) <= 0 )\n lR = lA+4|0;\n\n if ( (lR|0) < (lB|0) )\n lA = lB = lR;\n\n for ( ; (i|0) < (lB|0); i = (i+4)|0 ) {\n a = HEAP32[(A+i)>>2]|0;\n b = HEAP32[(B+i)>>2]|0;\n t = ( (a & 0xffff) + (b & 0xffff)|0 ) + c|0;\n r = ( (a >>> 16) + (b >>> 16)|0 ) + (t >>> 16)|0;\n HEAP32[(R+i)>>2] = (t & 0xffff) | (r << 16);\n c = r >>> 16;\n }\n\n for ( ; (i|0) < (lA|0); i = (i+4)|0 ) {\n a = HEAP32[(A+i)>>2]|0;\n t = (a & 0xffff) + c|0;\n r = (a >>> 16) + (t >>> 16)|0;\n HEAP32[(R+i)>>2] = (t & 0xffff) | (r << 16);\n c = r >>> 16;\n }\n\n for ( ; (i|0) < (lR|0); i = (i+4)|0 ) {\n HEAP32[(R+i)>>2] = c|0;\n c = 0;\n }\n\n return c|0;\n }\n\n /**\n * Conventional subtraction\n *\n * @param A offset of the first argument, 32-byte aligned\n * @param lA length of the first argument, multiple of 32\n *\n * @param B offset of the second argument, 32-bit aligned\n * @param lB length of the second argument, multiple of 32\n *\n * @param R offset where to place the result to, 32-byte aligned\n * @param lR length to truncate the result to, multiple of 32\n */\n function sub ( A, lA, B, lB, R, lR ) {\n A = A|0;\n lA = lA|0;\n B = B|0;\n lB = lB|0;\n R = R|0;\n lR = lR|0;\n\n var a = 0, b = 0, c = 0, t = 0, r = 0, i = 0;\n\n if ( (lR|0) <= 0 )\n lR = (lA|0) > (lB|0) ? lA+4|0 : lB+4|0;\n\n if ( (lR|0) < (lA|0) )\n lA = lR;\n\n if ( (lR|0) < (lB|0) )\n lB = lR;\n\n if ( (lA|0) < (lB|0) ) {\n for ( ; (i|0) < (lA|0); i = (i+4)|0 ) {\n a = HEAP32[(A+i)>>2]|0;\n b = HEAP32[(B+i)>>2]|0;\n t = ( (a & 0xffff) - (b & 0xffff)|0 ) + c|0;\n r = ( (a >>> 16) - (b >>> 16)|0 ) + (t >> 16)|0;\n HEAP32[(R+i)>>2] = (t & 0xffff) | (r << 16);\n c = r >> 16;\n }\n\n for ( ; (i|0) < (lB|0); i = (i+4)|0 ) {\n b = HEAP32[(B+i)>>2]|0;\n t = c - (b & 0xffff)|0;\n r = (t >> 16) - (b >>> 16)|0;\n HEAP32[(R+i)>>2] = (t & 0xffff) | (r << 16);\n c = r >> 16;\n }\n }\n else {\n for ( ; (i|0) < (lB|0); i = (i+4)|0 ) {\n a = HEAP32[(A+i)>>2]|0;\n b = HEAP32[(B+i)>>2]|0;\n t = ( (a & 0xffff) - (b & 0xffff)|0 ) + c|0;\n r = ( (a >>> 16) - (b >>> 16)|0 ) + (t >> 16)|0;\n HEAP32[(R+i)>>2] = (t & 0xffff) | (r << 16);\n c = r >> 16;\n }\n\n for ( ; (i|0) < (lA|0); i = (i+4)|0 ) {\n a = HEAP32[(A+i)>>2]|0;\n t = (a & 0xffff) + c|0;\n r = (a >>> 16) + (t >> 16)|0;\n HEAP32[(R+i)>>2] = (t & 0xffff) | (r << 16);\n c = r >> 16;\n }\n }\n\n for ( ; (i|0) < (lR|0); i = (i+4)|0 ) {\n HEAP32[(R+i)>>2] = c|0;\n }\n\n return c|0;\n }\n\n /**\n * Conventional multiplication\n *\n * TODO implement Karatsuba algorithm for large multiplicands\n *\n * @param A offset of the first argument, 32-byte aligned\n * @param lA length of the first argument, multiple of 32\n *\n * @param B offset of the second argument, 32-byte aligned\n * @param lB length of the second argument, multiple of 32\n *\n * @param R offset where to place the result to, 32-byte aligned\n * @param lR length to truncate the result to, multiple of 32\n */\n function mul ( A, lA, B, lB, R, lR ) {\n A = A|0;\n lA = lA|0;\n B = B|0;\n lB = lB|0;\n R = R|0;\n lR = lR|0;\n\n var al0 = 0, al1 = 0, al2 = 0, al3 = 0, al4 = 0, al5 = 0, al6 = 0, al7 = 0, ah0 = 0, ah1 = 0, ah2 = 0, ah3 = 0, ah4 = 0, ah5 = 0, ah6 = 0, ah7 = 0,\n bl0 = 0, bl1 = 0, bl2 = 0, bl3 = 0, bl4 = 0, bl5 = 0, bl6 = 0, bl7 = 0, bh0 = 0, bh1 = 0, bh2 = 0, bh3 = 0, bh4 = 0, bh5 = 0, bh6 = 0, bh7 = 0,\n r0 = 0, r1 = 0, r2 = 0, r3 = 0, r4 = 0, r5 = 0, r6 = 0, r7 = 0, r8 = 0, r9 = 0, r10 = 0, r11 = 0, r12 = 0, r13 = 0, r14 = 0, r15 = 0,\n u = 0, v = 0, w = 0, m = 0,\n i = 0, Ai = 0, j = 0, Bj = 0, Rk = 0;\n\n if ( (lA|0) > (lB|0) ) {\n u = A, v = lA;\n A = B, lA = lB;\n B = u, lB = v;\n }\n\n m = (lA+lB)|0;\n if ( ( (lR|0) > (m|0) ) | ( (lR|0) <= 0 ) )\n lR = m;\n\n if ( (lR|0) < (lA|0) )\n lA = lR;\n\n if ( (lR|0) < (lB|0) )\n lB = lR;\n\n for ( ; (i|0) < (lA|0); i = (i+32)|0 ) {\n Ai = (A+i)|0;\n\n ah0 = HEAP32[(Ai|0)>>2]|0,\n ah1 = HEAP32[(Ai|4)>>2]|0,\n ah2 = HEAP32[(Ai|8)>>2]|0,\n ah3 = HEAP32[(Ai|12)>>2]|0,\n ah4 = HEAP32[(Ai|16)>>2]|0,\n ah5 = HEAP32[(Ai|20)>>2]|0,\n ah6 = HEAP32[(Ai|24)>>2]|0,\n ah7 = HEAP32[(Ai|28)>>2]|0,\n al0 = ah0 & 0xffff,\n al1 = ah1 & 0xffff,\n al2 = ah2 & 0xffff,\n al3 = ah3 & 0xffff,\n al4 = ah4 & 0xffff,\n al5 = ah5 & 0xffff,\n al6 = ah6 & 0xffff,\n al7 = ah7 & 0xffff,\n ah0 = ah0 >>> 16,\n ah1 = ah1 >>> 16,\n ah2 = ah2 >>> 16,\n ah3 = ah3 >>> 16,\n ah4 = ah4 >>> 16,\n ah5 = ah5 >>> 16,\n ah6 = ah6 >>> 16,\n ah7 = ah7 >>> 16;\n\n r8 = r9 = r10 = r11 = r12 = r13 = r14 = r15 = 0;\n\n for ( j = 0; (j|0) < (lB|0); j = (j+32)|0 ) {\n Bj = (B+j)|0;\n Rk = (R+(i+j|0))|0;\n\n bh0 = HEAP32[(Bj|0)>>2]|0,\n bh1 = HEAP32[(Bj|4)>>2]|0,\n bh2 = HEAP32[(Bj|8)>>2]|0,\n bh3 = HEAP32[(Bj|12)>>2]|0,\n bh4 = HEAP32[(Bj|16)>>2]|0,\n bh5 = HEAP32[(Bj|20)>>2]|0,\n bh6 = HEAP32[(Bj|24)>>2]|0,\n bh7 = HEAP32[(Bj|28)>>2]|0,\n bl0 = bh0 & 0xffff,\n bl1 = bh1 & 0xffff,\n bl2 = bh2 & 0xffff,\n bl3 = bh3 & 0xffff,\n bl4 = bh4 & 0xffff,\n bl5 = bh5 & 0xffff,\n bl6 = bh6 & 0xffff,\n bl7 = bh7 & 0xffff,\n bh0 = bh0 >>> 16,\n bh1 = bh1 >>> 16,\n bh2 = bh2 >>> 16,\n bh3 = bh3 >>> 16,\n bh4 = bh4 >>> 16,\n bh5 = bh5 >>> 16,\n bh6 = bh6 >>> 16,\n bh7 = bh7 >>> 16;\n\n r0 = HEAP32[(Rk|0)>>2]|0,\n r1 = HEAP32[(Rk|4)>>2]|0,\n r2 = HEAP32[(Rk|8)>>2]|0,\n r3 = HEAP32[(Rk|12)>>2]|0,\n r4 = HEAP32[(Rk|16)>>2]|0,\n r5 = HEAP32[(Rk|20)>>2]|0,\n r6 = HEAP32[(Rk|24)>>2]|0,\n r7 = HEAP32[(Rk|28)>>2]|0;\n\n u = ((imul(al0, bl0)|0) + (r8 & 0xffff)|0) + (r0 & 0xffff)|0;\n v = ((imul(ah0, bl0)|0) + (r8 >>> 16)|0) + (r0 >>> 16)|0;\n w = ((imul(al0, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r0 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al0, bl1)|0) + (m & 0xffff)|0) + (r1 & 0xffff)|0;\n v = ((imul(ah0, bl1)|0) + (m >>> 16)|0) + (r1 >>> 16)|0;\n w = ((imul(al0, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r1 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al0, bl2)|0) + (m & 0xffff)|0) + (r2 & 0xffff)|0;\n v = ((imul(ah0, bl2)|0) + (m >>> 16)|0) + (r2 >>> 16)|0;\n w = ((imul(al0, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r2 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al0, bl3)|0) + (m & 0xffff)|0) + (r3 & 0xffff)|0;\n v = ((imul(ah0, bl3)|0) + (m >>> 16)|0) + (r3 >>> 16)|0;\n w = ((imul(al0, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r3 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al0, bl4)|0) + (m & 0xffff)|0) + (r4 & 0xffff)|0;\n v = ((imul(ah0, bl4)|0) + (m >>> 16)|0) + (r4 >>> 16)|0;\n w = ((imul(al0, bh4)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh4)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r4 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al0, bl5)|0) + (m & 0xffff)|0) + (r5 & 0xffff)|0;\n v = ((imul(ah0, bl5)|0) + (m >>> 16)|0) + (r5 >>> 16)|0;\n w = ((imul(al0, bh5)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh5)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r5 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al0, bl6)|0) + (m & 0xffff)|0) + (r6 & 0xffff)|0;\n v = ((imul(ah0, bl6)|0) + (m >>> 16)|0) + (r6 >>> 16)|0;\n w = ((imul(al0, bh6)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh6)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r6 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al0, bl7)|0) + (m & 0xffff)|0) + (r7 & 0xffff)|0;\n v = ((imul(ah0, bl7)|0) + (m >>> 16)|0) + (r7 >>> 16)|0;\n w = ((imul(al0, bh7)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh7)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r7 = (w << 16) | (u & 0xffff);\n\n r8 = m;\n\n u = ((imul(al1, bl0)|0) + (r9 & 0xffff)|0) + (r1 & 0xffff)|0;\n v = ((imul(ah1, bl0)|0) + (r9 >>> 16)|0) + (r1 >>> 16)|0;\n w = ((imul(al1, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r1 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl1)|0) + (m & 0xffff)|0) + (r2 & 0xffff)|0;\n v = ((imul(ah1, bl1)|0) + (m >>> 16)|0) + (r2 >>> 16)|0;\n w = ((imul(al1, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r2 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl2)|0) + (m & 0xffff)|0) + (r3 & 0xffff)|0;\n v = ((imul(ah1, bl2)|0) + (m >>> 16)|0) + (r3 >>> 16)|0;\n w = ((imul(al1, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r3 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl3)|0) + (m & 0xffff)|0) + (r4 & 0xffff)|0;\n v = ((imul(ah1, bl3)|0) + (m >>> 16)|0) + (r4 >>> 16)|0;\n w = ((imul(al1, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r4 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl4)|0) + (m & 0xffff)|0) + (r5 & 0xffff)|0;\n v = ((imul(ah1, bl4)|0) + (m >>> 16)|0) + (r5 >>> 16)|0;\n w = ((imul(al1, bh4)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh4)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r5 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl5)|0) + (m & 0xffff)|0) + (r6 & 0xffff)|0;\n v = ((imul(ah1, bl5)|0) + (m >>> 16)|0) + (r6 >>> 16)|0;\n w = ((imul(al1, bh5)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh5)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r6 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl6)|0) + (m & 0xffff)|0) + (r7 & 0xffff)|0;\n v = ((imul(ah1, bl6)|0) + (m >>> 16)|0) + (r7 >>> 16)|0;\n w = ((imul(al1, bh6)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh6)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r7 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl7)|0) + (m & 0xffff)|0) + (r8 & 0xffff)|0;\n v = ((imul(ah1, bl7)|0) + (m >>> 16)|0) + (r8 >>> 16)|0;\n w = ((imul(al1, bh7)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh7)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r8 = (w << 16) | (u & 0xffff);\n\n r9 = m;\n\n u = ((imul(al2, bl0)|0) + (r10 & 0xffff)|0) + (r2 & 0xffff)|0;\n v = ((imul(ah2, bl0)|0) + (r10 >>> 16)|0) + (r2 >>> 16)|0;\n w = ((imul(al2, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r2 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl1)|0) + (m & 0xffff)|0) + (r3 & 0xffff)|0;\n v = ((imul(ah2, bl1)|0) + (m >>> 16)|0) + (r3 >>> 16)|0;\n w = ((imul(al2, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r3 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl2)|0) + (m & 0xffff)|0) + (r4 & 0xffff)|0;\n v = ((imul(ah2, bl2)|0) + (m >>> 16)|0) + (r4 >>> 16)|0;\n w = ((imul(al2, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r4 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl3)|0) + (m & 0xffff)|0) + (r5 & 0xffff)|0;\n v = ((imul(ah2, bl3)|0) + (m >>> 16)|0) + (r5 >>> 16)|0;\n w = ((imul(al2, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r5 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl4)|0) + (m & 0xffff)|0) + (r6 & 0xffff)|0;\n v = ((imul(ah2, bl4)|0) + (m >>> 16)|0) + (r6 >>> 16)|0;\n w = ((imul(al2, bh4)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh4)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r6 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl5)|0) + (m & 0xffff)|0) + (r7 & 0xffff)|0;\n v = ((imul(ah2, bl5)|0) + (m >>> 16)|0) + (r7 >>> 16)|0;\n w = ((imul(al2, bh5)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh5)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r7 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl6)|0) + (m & 0xffff)|0) + (r8 & 0xffff)|0;\n v = ((imul(ah2, bl6)|0) + (m >>> 16)|0) + (r8 >>> 16)|0;\n w = ((imul(al2, bh6)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh6)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r8 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl7)|0) + (m & 0xffff)|0) + (r9 & 0xffff)|0;\n v = ((imul(ah2, bl7)|0) + (m >>> 16)|0) + (r9 >>> 16)|0;\n w = ((imul(al2, bh7)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh7)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r9 = (w << 16) | (u & 0xffff);\n\n r10 = m;\n\n u = ((imul(al3, bl0)|0) + (r11 & 0xffff)|0) + (r3 & 0xffff)|0;\n v = ((imul(ah3, bl0)|0) + (r11 >>> 16)|0) + (r3 >>> 16)|0;\n w = ((imul(al3, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r3 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl1)|0) + (m & 0xffff)|0) + (r4 & 0xffff)|0;\n v = ((imul(ah3, bl1)|0) + (m >>> 16)|0) + (r4 >>> 16)|0;\n w = ((imul(al3, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r4 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl2)|0) + (m & 0xffff)|0) + (r5 & 0xffff)|0;\n v = ((imul(ah3, bl2)|0) + (m >>> 16)|0) + (r5 >>> 16)|0;\n w = ((imul(al3, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r5 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl3)|0) + (m & 0xffff)|0) + (r6 & 0xffff)|0;\n v = ((imul(ah3, bl3)|0) + (m >>> 16)|0) + (r6 >>> 16)|0;\n w = ((imul(al3, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r6 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl4)|0) + (m & 0xffff)|0) + (r7 & 0xffff)|0;\n v = ((imul(ah3, bl4)|0) + (m >>> 16)|0) + (r7 >>> 16)|0;\n w = ((imul(al3, bh4)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh4)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r7 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl5)|0) + (m & 0xffff)|0) + (r8 & 0xffff)|0;\n v = ((imul(ah3, bl5)|0) + (m >>> 16)|0) + (r8 >>> 16)|0;\n w = ((imul(al3, bh5)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh5)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r8 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl6)|0) + (m & 0xffff)|0) + (r9 & 0xffff)|0;\n v = ((imul(ah3, bl6)|0) + (m >>> 16)|0) + (r9 >>> 16)|0;\n w = ((imul(al3, bh6)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh6)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r9 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl7)|0) + (m & 0xffff)|0) + (r10 & 0xffff)|0;\n v = ((imul(ah3, bl7)|0) + (m >>> 16)|0) + (r10 >>> 16)|0;\n w = ((imul(al3, bh7)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh7)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r10 = (w << 16) | (u & 0xffff);\n\n r11 = m;\n\n u = ((imul(al4, bl0)|0) + (r12 & 0xffff)|0) + (r4 & 0xffff)|0;\n v = ((imul(ah4, bl0)|0) + (r12 >>> 16)|0) + (r4 >>> 16)|0;\n w = ((imul(al4, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah4, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r4 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al4, bl1)|0) + (m & 0xffff)|0) + (r5 & 0xffff)|0;\n v = ((imul(ah4, bl1)|0) + (m >>> 16)|0) + (r5 >>> 16)|0;\n w = ((imul(al4, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah4, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r5 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al4, bl2)|0) + (m & 0xffff)|0) + (r6 & 0xffff)|0;\n v = ((imul(ah4, bl2)|0) + (m >>> 16)|0) + (r6 >>> 16)|0;\n w = ((imul(al4, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah4, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r6 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al4, bl3)|0) + (m & 0xffff)|0) + (r7 & 0xffff)|0;\n v = ((imul(ah4, bl3)|0) + (m >>> 16)|0) + (r7 >>> 16)|0;\n w = ((imul(al4, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah4, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r7 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al4, bl4)|0) + (m & 0xffff)|0) + (r8 & 0xffff)|0;\n v = ((imul(ah4, bl4)|0) + (m >>> 16)|0) + (r8 >>> 16)|0;\n w = ((imul(al4, bh4)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah4, bh4)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r8 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al4, bl5)|0) + (m & 0xffff)|0) + (r9 & 0xffff)|0;\n v = ((imul(ah4, bl5)|0) + (m >>> 16)|0) + (r9 >>> 16)|0;\n w = ((imul(al4, bh5)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah4, bh5)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r9 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al4, bl6)|0) + (m & 0xffff)|0) + (r10 & 0xffff)|0;\n v = ((imul(ah4, bl6)|0) + (m >>> 16)|0) + (r10 >>> 16)|0;\n w = ((imul(al4, bh6)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah4, bh6)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r10 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al4, bl7)|0) + (m & 0xffff)|0) + (r11 & 0xffff)|0;\n v = ((imul(ah4, bl7)|0) + (m >>> 16)|0) + (r11 >>> 16)|0;\n w = ((imul(al4, bh7)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah4, bh7)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r11 = (w << 16) | (u & 0xffff);\n\n r12 = m;\n\n u = ((imul(al5, bl0)|0) + (r13 & 0xffff)|0) + (r5 & 0xffff)|0;\n v = ((imul(ah5, bl0)|0) + (r13 >>> 16)|0) + (r5 >>> 16)|0;\n w = ((imul(al5, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah5, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r5 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al5, bl1)|0) + (m & 0xffff)|0) + (r6 & 0xffff)|0;\n v = ((imul(ah5, bl1)|0) + (m >>> 16)|0) + (r6 >>> 16)|0;\n w = ((imul(al5, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah5, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r6 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al5, bl2)|0) + (m & 0xffff)|0) + (r7 & 0xffff)|0;\n v = ((imul(ah5, bl2)|0) + (m >>> 16)|0) + (r7 >>> 16)|0;\n w = ((imul(al5, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah5, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r7 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al5, bl3)|0) + (m & 0xffff)|0) + (r8 & 0xffff)|0;\n v = ((imul(ah5, bl3)|0) + (m >>> 16)|0) + (r8 >>> 16)|0;\n w = ((imul(al5, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah5, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r8 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al5, bl4)|0) + (m & 0xffff)|0) + (r9 & 0xffff)|0;\n v = ((imul(ah5, bl4)|0) + (m >>> 16)|0) + (r9 >>> 16)|0;\n w = ((imul(al5, bh4)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah5, bh4)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r9 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al5, bl5)|0) + (m & 0xffff)|0) + (r10 & 0xffff)|0;\n v = ((imul(ah5, bl5)|0) + (m >>> 16)|0) + (r10 >>> 16)|0;\n w = ((imul(al5, bh5)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah5, bh5)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r10 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al5, bl6)|0) + (m & 0xffff)|0) + (r11 & 0xffff)|0;\n v = ((imul(ah5, bl6)|0) + (m >>> 16)|0) + (r11 >>> 16)|0;\n w = ((imul(al5, bh6)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah5, bh6)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r11 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al5, bl7)|0) + (m & 0xffff)|0) + (r12 & 0xffff)|0;\n v = ((imul(ah5, bl7)|0) + (m >>> 16)|0) + (r12 >>> 16)|0;\n w = ((imul(al5, bh7)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah5, bh7)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r12 = (w << 16) | (u & 0xffff);\n\n r13 = m;\n\n u = ((imul(al6, bl0)|0) + (r14 & 0xffff)|0) + (r6 & 0xffff)|0;\n v = ((imul(ah6, bl0)|0) + (r14 >>> 16)|0) + (r6 >>> 16)|0;\n w = ((imul(al6, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah6, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r6 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al6, bl1)|0) + (m & 0xffff)|0) + (r7 & 0xffff)|0;\n v = ((imul(ah6, bl1)|0) + (m >>> 16)|0) + (r7 >>> 16)|0;\n w = ((imul(al6, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah6, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r7 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al6, bl2)|0) + (m & 0xffff)|0) + (r8 & 0xffff)|0;\n v = ((imul(ah6, bl2)|0) + (m >>> 16)|0) + (r8 >>> 16)|0;\n w = ((imul(al6, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah6, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r8 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al6, bl3)|0) + (m & 0xffff)|0) + (r9 & 0xffff)|0;\n v = ((imul(ah6, bl3)|0) + (m >>> 16)|0) + (r9 >>> 16)|0;\n w = ((imul(al6, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah6, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r9 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al6, bl4)|0) + (m & 0xffff)|0) + (r10 & 0xffff)|0;\n v = ((imul(ah6, bl4)|0) + (m >>> 16)|0) + (r10 >>> 16)|0;\n w = ((imul(al6, bh4)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah6, bh4)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r10 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al6, bl5)|0) + (m & 0xffff)|0) + (r11 & 0xffff)|0;\n v = ((imul(ah6, bl5)|0) + (m >>> 16)|0) + (r11 >>> 16)|0;\n w = ((imul(al6, bh5)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah6, bh5)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r11 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al6, bl6)|0) + (m & 0xffff)|0) + (r12 & 0xffff)|0;\n v = ((imul(ah6, bl6)|0) + (m >>> 16)|0) + (r12 >>> 16)|0;\n w = ((imul(al6, bh6)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah6, bh6)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r12 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al6, bl7)|0) + (m & 0xffff)|0) + (r13 & 0xffff)|0;\n v = ((imul(ah6, bl7)|0) + (m >>> 16)|0) + (r13 >>> 16)|0;\n w = ((imul(al6, bh7)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah6, bh7)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r13 = (w << 16) | (u & 0xffff);\n\n r14 = m;\n\n u = ((imul(al7, bl0)|0) + (r15 & 0xffff)|0) + (r7 & 0xffff)|0;\n v = ((imul(ah7, bl0)|0) + (r15 >>> 16)|0) + (r7 >>> 16)|0;\n w = ((imul(al7, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah7, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r7 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al7, bl1)|0) + (m & 0xffff)|0) + (r8 & 0xffff)|0;\n v = ((imul(ah7, bl1)|0) + (m >>> 16)|0) + (r8 >>> 16)|0;\n w = ((imul(al7, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah7, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r8 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al7, bl2)|0) + (m & 0xffff)|0) + (r9 & 0xffff)|0;\n v = ((imul(ah7, bl2)|0) + (m >>> 16)|0) + (r9 >>> 16)|0;\n w = ((imul(al7, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah7, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r9 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al7, bl3)|0) + (m & 0xffff)|0) + (r10 & 0xffff)|0;\n v = ((imul(ah7, bl3)|0) + (m >>> 16)|0) + (r10 >>> 16)|0;\n w = ((imul(al7, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah7, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r10 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al7, bl4)|0) + (m & 0xffff)|0) + (r11 & 0xffff)|0;\n v = ((imul(ah7, bl4)|0) + (m >>> 16)|0) + (r11 >>> 16)|0;\n w = ((imul(al7, bh4)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah7, bh4)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r11 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al7, bl5)|0) + (m & 0xffff)|0) + (r12 & 0xffff)|0;\n v = ((imul(ah7, bl5)|0) + (m >>> 16)|0) + (r12 >>> 16)|0;\n w = ((imul(al7, bh5)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah7, bh5)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r12 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al7, bl6)|0) + (m & 0xffff)|0) + (r13 & 0xffff)|0;\n v = ((imul(ah7, bl6)|0) + (m >>> 16)|0) + (r13 >>> 16)|0;\n w = ((imul(al7, bh6)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah7, bh6)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r13 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al7, bl7)|0) + (m & 0xffff)|0) + (r14 & 0xffff)|0;\n v = ((imul(ah7, bl7)|0) + (m >>> 16)|0) + (r14 >>> 16)|0;\n w = ((imul(al7, bh7)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah7, bh7)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r14 = (w << 16) | (u & 0xffff);\n\n r15 = m;\n\n HEAP32[(Rk|0)>>2] = r0,\n HEAP32[(Rk|4)>>2] = r1,\n HEAP32[(Rk|8)>>2] = r2,\n HEAP32[(Rk|12)>>2] = r3,\n HEAP32[(Rk|16)>>2] = r4,\n HEAP32[(Rk|20)>>2] = r5,\n HEAP32[(Rk|24)>>2] = r6,\n HEAP32[(Rk|28)>>2] = r7;\n }\n\n Rk = (R+(i+j|0))|0;\n HEAP32[(Rk|0)>>2] = r8,\n HEAP32[(Rk|4)>>2] = r9,\n HEAP32[(Rk|8)>>2] = r10,\n HEAP32[(Rk|12)>>2] = r11,\n HEAP32[(Rk|16)>>2] = r12,\n HEAP32[(Rk|20)>>2] = r13,\n HEAP32[(Rk|24)>>2] = r14,\n HEAP32[(Rk|28)>>2] = r15;\n }\n/*\n for ( i = lA & -32; (i|0) < (lA|0); i = (i+4)|0 ) {\n Ai = (A+i)|0;\n\n ah0 = HEAP32[Ai>>2]|0,\n al0 = ah0 & 0xffff,\n ah0 = ah0 >>> 16;\n\n r1 = 0;\n\n for ( j = 0; (j|0) < (lB|0); j = (j+4)|0 ) {\n Bj = (B+j)|0;\n Rk = (R+(i+j|0))|0;\n\n bh0 = HEAP32[Bj>>2]|0,\n bl0 = bh0 & 0xffff,\n bh0 = bh0 >>> 16;\n\n r0 = HEAP32[Rk>>2]|0;\n\n u = ((imul(al0, bl0)|0) + (r1 & 0xffff)|0) + (r0 & 0xffff)|0;\n v = ((imul(ah0, bl0)|0) + (r1 >>> 16)|0) + (r0 >>> 16)|0;\n w = ((imul(al0, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r0 = (w << 16) | (u & 0xffff);\n\n r1 = m;\n\n HEAP32[Rk>>2] = r0;\n }\n\n Rk = (R+(i+j|0))|0;\n HEAP32[Rk>>2] = r1;\n }\n*/\n }\n\n /**\n * Fast squaring\n *\n * Exploits the fact:\n *\n * X² = ( X0 + X1*B )² = X0² + 2*X0*X1*B + X1²*B²,\n *\n * where B is a power of 2, so:\n *\n * 2*X0*X1*B = (X0*X1 << 1)*B\n *\n * @param A offset of the argument being squared, 32-byte aligned\n * @param lA length of the argument, multiple of 32\n *\n * @param R offset where to place the result to, 32-byte aligned\n */\n function sqr ( A, lA, R ) {\n A = A|0;\n lA = lA|0;\n R = R|0;\n\n var al0 = 0, al1 = 0, al2 = 0, al3 = 0, al4 = 0, al5 = 0, al6 = 0, al7 = 0, ah0 = 0, ah1 = 0, ah2 = 0, ah3 = 0, ah4 = 0, ah5 = 0, ah6 = 0, ah7 = 0,\n bl0 = 0, bl1 = 0, bl2 = 0, bl3 = 0, bl4 = 0, bl5 = 0, bl6 = 0, bl7 = 0, bh0 = 0, bh1 = 0, bh2 = 0, bh3 = 0, bh4 = 0, bh5 = 0, bh6 = 0, bh7 = 0,\n r0 = 0, r1 = 0, r2 = 0, r3 = 0, r4 = 0, r5 = 0, r6 = 0, r7 = 0, r8 = 0, r9 = 0, r10 = 0, r11 = 0, r12 = 0, r13 = 0, r14 = 0, r15 = 0,\n u = 0, v = 0, w = 0, c = 0, h = 0, m = 0, r = 0,\n d = 0, dd = 0, p = 0, i = 0, j = 0, k = 0, Ai = 0, Aj = 0, Rk = 0;\n\n // prepare for iterations\n for ( ; (i|0) < (lA|0); i = (i+4)|0 ) {\n Rk = R+(i<<1)|0;\n ah0 = HEAP32[(A+i)>>2]|0, al0 = ah0 & 0xffff, ah0 = ah0 >>> 16;\n u = imul(al0,al0)|0;\n v = (imul(al0,ah0)|0) + (u >>> 17)|0;\n w = (imul(ah0,ah0)|0) + (v >>> 15)|0;\n HEAP32[(Rk)>>2] = (v << 17) | (u & 0x1ffff);\n HEAP32[(Rk|4)>>2] = w;\n }\n\n // unrolled 1st iteration\n for ( p = 0; (p|0) < (lA|0); p = (p+8)|0 ) {\n Ai = A+p|0, Rk = R+(p<<1)|0;\n\n ah0 = HEAP32[(Ai)>>2]|0, al0 = ah0 & 0xffff, ah0 = ah0 >>> 16;\n\n bh0 = HEAP32[(Ai|4)>>2]|0, bl0 = bh0 & 0xffff, bh0 = bh0 >>> 16;\n\n u = imul(al0,bl0)|0;\n v = (imul(al0,bh0)|0) + (u >>> 16)|0;\n w = (imul(ah0,bl0)|0) + (v & 0xffff)|0;\n m = ((imul(ah0,bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n\n r = HEAP32[(Rk|4)>>2]|0;\n u = (r & 0xffff) + ((u & 0xffff) << 1)|0;\n w = ((r >>> 16) + ((w & 0xffff) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk|4)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n r = HEAP32[(Rk|8)>>2]|0;\n u = ((r & 0xffff) + ((m & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((m >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk|8)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n if ( c ) {\n r = HEAP32[(Rk|12)>>2]|0;\n u = (r & 0xffff) + c|0;\n w = (r >>> 16) + (u >>> 16)|0;\n HEAP32[(Rk|12)>>2] = (w << 16) | (u & 0xffff);\n }\n }\n\n // unrolled 2nd iteration\n for ( p = 0; (p|0) < (lA|0); p = (p+16)|0 ) {\n Ai = A+p|0, Rk = R+(p<<1)|0;\n\n ah0 = HEAP32[(Ai)>>2]|0, al0 = ah0 & 0xffff, ah0 = ah0 >>> 16,\n ah1 = HEAP32[(Ai|4)>>2]|0, al1 = ah1 & 0xffff, ah1 = ah1 >>> 16;\n\n bh0 = HEAP32[(Ai|8)>>2]|0, bl0 = bh0 & 0xffff, bh0 = bh0 >>> 16,\n bh1 = HEAP32[(Ai|12)>>2]|0, bl1 = bh1 & 0xffff, bh1 = bh1 >>> 16;\n\n u = imul(al0, bl0)|0;\n v = imul(ah0, bl0)|0;\n w = ((imul(al0, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r0 = (w << 16) | (u & 0xffff);\n\n u = (imul(al0, bl1)|0) + (m & 0xffff)|0;\n v = (imul(ah0, bl1)|0) + (m >>> 16)|0;\n w = ((imul(al0, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r1 = (w << 16) | (u & 0xffff);\n\n r2 = m;\n\n u = (imul(al1, bl0)|0) + (r1 & 0xffff)|0;\n v = (imul(ah1, bl0)|0) + (r1 >>> 16)|0;\n w = ((imul(al1, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r1 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl1)|0) + (r2 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah1, bl1)|0) + (r2 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al1, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r2 = (w << 16) | (u & 0xffff);\n\n r3 = m;\n\n r = HEAP32[(Rk|8)>>2]|0;\n u = (r & 0xffff) + ((r0 & 0xffff) << 1)|0;\n w = ((r >>> 16) + ((r0 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk|8)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n r = HEAP32[(Rk|12)>>2]|0;\n u = ((r & 0xffff) + ((r1 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r1 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk|12)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n r = HEAP32[(Rk|16)>>2]|0;\n u = ((r & 0xffff) + ((r2 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r2 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk|16)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n r = HEAP32[(Rk|20)>>2]|0;\n u = ((r & 0xffff) + ((r3 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r3 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk|20)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n for ( k = 24; !!c & ( (k|0) < 32 ); k = (k+4)|0 ) {\n r = HEAP32[(Rk|k)>>2]|0;\n u = (r & 0xffff) + c|0;\n w = (r >>> 16) + (u >>> 16)|0;\n HEAP32[(Rk|k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n }\n }\n\n // unrolled 3rd iteration\n for ( p = 0; (p|0) < (lA|0); p = (p+32)|0 ) {\n Ai = A+p|0, Rk = R+(p<<1)|0;\n\n ah0 = HEAP32[(Ai)>>2]|0, al0 = ah0 & 0xffff, ah0 = ah0 >>> 16,\n ah1 = HEAP32[(Ai|4)>>2]|0, al1 = ah1 & 0xffff, ah1 = ah1 >>> 16,\n ah2 = HEAP32[(Ai|8)>>2]|0, al2 = ah2 & 0xffff, ah2 = ah2 >>> 16,\n ah3 = HEAP32[(Ai|12)>>2]|0, al3 = ah3 & 0xffff, ah3 = ah3 >>> 16;\n\n bh0 = HEAP32[(Ai|16)>>2]|0, bl0 = bh0 & 0xffff, bh0 = bh0 >>> 16,\n bh1 = HEAP32[(Ai|20)>>2]|0, bl1 = bh1 & 0xffff, bh1 = bh1 >>> 16,\n bh2 = HEAP32[(Ai|24)>>2]|0, bl2 = bh2 & 0xffff, bh2 = bh2 >>> 16,\n bh3 = HEAP32[(Ai|28)>>2]|0, bl3 = bh3 & 0xffff, bh3 = bh3 >>> 16;\n\n u = imul(al0, bl0)|0;\n v = imul(ah0, bl0)|0;\n w = ((imul(al0, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r0 = (w << 16) | (u & 0xffff);\n\n u = (imul(al0, bl1)|0) + (m & 0xffff)|0;\n v = (imul(ah0, bl1)|0) + (m >>> 16)|0;\n w = ((imul(al0, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r1 = (w << 16) | (u & 0xffff);\n\n u = (imul(al0, bl2)|0) + (m & 0xffff)|0;\n v = (imul(ah0, bl2)|0) + (m >>> 16)|0;\n w = ((imul(al0, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r2 = (w << 16) | (u & 0xffff);\n\n u = (imul(al0, bl3)|0) + (m & 0xffff)|0;\n v = (imul(ah0, bl3)|0) + (m >>> 16)|0;\n w = ((imul(al0, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r3 = (w << 16) | (u & 0xffff);\n\n r4 = m;\n\n u = (imul(al1, bl0)|0) + (r1 & 0xffff)|0;\n v = (imul(ah1, bl0)|0) + (r1 >>> 16)|0;\n w = ((imul(al1, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r1 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl1)|0) + (r2 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah1, bl1)|0) + (r2 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al1, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r2 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl2)|0) + (r3 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah1, bl2)|0) + (r3 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al1, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r3 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl3)|0) + (r4 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah1, bl3)|0) + (r4 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al1, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r4 = (w << 16) | (u & 0xffff);\n\n r5 = m;\n\n u = (imul(al2, bl0)|0) + (r2 & 0xffff)|0;\n v = (imul(ah2, bl0)|0) + (r2 >>> 16)|0;\n w = ((imul(al2, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r2 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl1)|0) + (r3 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah2, bl1)|0) + (r3 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al2, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r3 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl2)|0) + (r4 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah2, bl2)|0) + (r4 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al2, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r4 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl3)|0) + (r5 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah2, bl3)|0) + (r5 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al2, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r5 = (w << 16) | (u & 0xffff);\n\n r6 = m;\n\n u = (imul(al3, bl0)|0) + (r3 & 0xffff)|0;\n v = (imul(ah3, bl0)|0) + (r3 >>> 16)|0;\n w = ((imul(al3, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r3 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl1)|0) + (r4 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah3, bl1)|0) + (r4 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al3, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r4 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl2)|0) + (r5 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah3, bl2)|0) + (r5 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al3, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r5 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl3)|0) + (r6 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah3, bl3)|0) + (r6 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al3, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r6 = (w << 16) | (u & 0xffff);\n\n r7 = m;\n\n r = HEAP32[(Rk|16)>>2]|0;\n u = (r & 0xffff) + ((r0 & 0xffff) << 1)|0;\n w = ((r >>> 16) + ((r0 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk|16)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n r = HEAP32[(Rk|20)>>2]|0;\n u = ((r & 0xffff) + ((r1 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r1 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk|20)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n r = HEAP32[(Rk|24)>>2]|0;\n u = ((r & 0xffff) + ((r2 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r2 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk|24)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n r = HEAP32[(Rk|28)>>2]|0;\n u = ((r & 0xffff) + ((r3 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r3 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk|28)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n r = HEAP32[(Rk+32)>>2]|0;\n u = ((r & 0xffff) + ((r4 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r4 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+32)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n r = HEAP32[(Rk+36)>>2]|0;\n u = ((r & 0xffff) + ((r5 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r5 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+36)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n r = HEAP32[(Rk+40)>>2]|0;\n u = ((r & 0xffff) + ((r6 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r6 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+40)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n r = HEAP32[(Rk+44)>>2]|0;\n u = ((r & 0xffff) + ((r7 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r7 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+44)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n for ( k = 48; !!c & ( (k|0) < 64 ); k = (k+4)|0 ) {\n r = HEAP32[(Rk+k)>>2]|0;\n u = (r & 0xffff) + c|0;\n w = (r >>> 16) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n }\n }\n\n // perform iterations\n for ( d = 32; (d|0) < (lA|0); d = d << 1 ) { // depth loop\n dd = d << 1;\n\n for ( p = 0; (p|0) < (lA|0); p = (p+dd)|0 ) { // part loop\n Rk = R+(p<<1)|0;\n\n h = 0;\n for ( i = 0; (i|0) < (d|0); i = (i+32)|0 ) { // multiply-and-add loop\n Ai = (A+p|0)+i|0;\n\n ah0 = HEAP32[(Ai)>>2]|0, al0 = ah0 & 0xffff, ah0 = ah0 >>> 16,\n ah1 = HEAP32[(Ai|4)>>2]|0, al1 = ah1 & 0xffff, ah1 = ah1 >>> 16,\n ah2 = HEAP32[(Ai|8)>>2]|0, al2 = ah2 & 0xffff, ah2 = ah2 >>> 16,\n ah3 = HEAP32[(Ai|12)>>2]|0, al3 = ah3 & 0xffff, ah3 = ah3 >>> 16,\n ah4 = HEAP32[(Ai|16)>>2]|0, al4 = ah4 & 0xffff, ah4 = ah4 >>> 16,\n ah5 = HEAP32[(Ai|20)>>2]|0, al5 = ah5 & 0xffff, ah5 = ah5 >>> 16,\n ah6 = HEAP32[(Ai|24)>>2]|0, al6 = ah6 & 0xffff, ah6 = ah6 >>> 16,\n ah7 = HEAP32[(Ai|28)>>2]|0, al7 = ah7 & 0xffff, ah7 = ah7 >>> 16;\n\n r8 = r9 = r10 = r11 = r12 = r13 = r14 = r15 = c = 0;\n\n for ( j = 0; (j|0) < (d|0); j = (j+32)|0 ) {\n Aj = ((A+p|0)+d|0)+j|0;\n\n bh0 = HEAP32[(Aj)>>2]|0, bl0 = bh0 & 0xffff, bh0 = bh0 >>> 16,\n bh1 = HEAP32[(Aj|4)>>2]|0, bl1 = bh1 & 0xffff, bh1 = bh1 >>> 16,\n bh2 = HEAP32[(Aj|8)>>2]|0, bl2 = bh2 & 0xffff, bh2 = bh2 >>> 16,\n bh3 = HEAP32[(Aj|12)>>2]|0, bl3 = bh3 & 0xffff, bh3 = bh3 >>> 16,\n bh4 = HEAP32[(Aj|16)>>2]|0, bl4 = bh4 & 0xffff, bh4 = bh4 >>> 16,\n bh5 = HEAP32[(Aj|20)>>2]|0, bl5 = bh5 & 0xffff, bh5 = bh5 >>> 16,\n bh6 = HEAP32[(Aj|24)>>2]|0, bl6 = bh6 & 0xffff, bh6 = bh6 >>> 16,\n bh7 = HEAP32[(Aj|28)>>2]|0, bl7 = bh7 & 0xffff, bh7 = bh7 >>> 16;\n\n r0 = r1 = r2 = r3 = r4 = r5 = r6 = r7 = 0;\n\n u = ((imul(al0, bl0)|0) + (r0 & 0xffff)|0) + (r8 & 0xffff)|0;\n v = ((imul(ah0, bl0)|0) + (r0 >>> 16)|0) + (r8 >>> 16)|0;\n w = ((imul(al0, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r0 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al0, bl1)|0) + (r1 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah0, bl1)|0) + (r1 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al0, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r1 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al0, bl2)|0) + (r2 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah0, bl2)|0) + (r2 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al0, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r2 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al0, bl3)|0) + (r3 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah0, bl3)|0) + (r3 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al0, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r3 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al0, bl4)|0) + (r4 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah0, bl4)|0) + (r4 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al0, bh4)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh4)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r4 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al0, bl5)|0) + (r5 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah0, bl5)|0) + (r5 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al0, bh5)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh5)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r5 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al0, bl6)|0) + (r6 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah0, bl6)|0) + (r6 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al0, bh6)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh6)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r6 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al0, bl7)|0) + (r7 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah0, bl7)|0) + (r7 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al0, bh7)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah0, bh7)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r7 = (w << 16) | (u & 0xffff);\n\n r8 = m;\n\n u = ((imul(al1, bl0)|0) + (r1 & 0xffff)|0) + (r9 & 0xffff)|0;\n v = ((imul(ah1, bl0)|0) + (r1 >>> 16)|0) + (r9 >>> 16)|0;\n w = ((imul(al1, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r1 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl1)|0) + (r2 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah1, bl1)|0) + (r2 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al1, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r2 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl2)|0) + (r3 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah1, bl2)|0) + (r3 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al1, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r3 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl3)|0) + (r4 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah1, bl3)|0) + (r4 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al1, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r4 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl4)|0) + (r5 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah1, bl4)|0) + (r5 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al1, bh4)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh4)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r5 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl5)|0) + (r6 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah1, bl5)|0) + (r6 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al1, bh5)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh5)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r6 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl6)|0) + (r7 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah1, bl6)|0) + (r7 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al1, bh6)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh6)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r7 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al1, bl7)|0) + (r8 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah1, bl7)|0) + (r8 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al1, bh7)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah1, bh7)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r8 = (w << 16) | (u & 0xffff);\n\n r9 = m;\n\n u = ((imul(al2, bl0)|0) + (r2 & 0xffff)|0) + (r10 & 0xffff)|0;\n v = ((imul(ah2, bl0)|0) + (r2 >>> 16)|0) + (r10 >>> 16)|0;\n w = ((imul(al2, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r2 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl1)|0) + (r3 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah2, bl1)|0) + (r3 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al2, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r3 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl2)|0) + (r4 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah2, bl2)|0) + (r4 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al2, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r4 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl3)|0) + (r5 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah2, bl3)|0) + (r5 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al2, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r5 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl4)|0) + (r6 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah2, bl4)|0) + (r6 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al2, bh4)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh4)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r6 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl5)|0) + (r7 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah2, bl5)|0) + (r7 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al2, bh5)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh5)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r7 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl6)|0) + (r8 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah2, bl6)|0) + (r8 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al2, bh6)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh6)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r8 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al2, bl7)|0) + (r9 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah2, bl7)|0) + (r9 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al2, bh7)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah2, bh7)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r9 = (w << 16) | (u & 0xffff);\n\n r10 = m;\n\n u = ((imul(al3, bl0)|0) + (r3 & 0xffff)|0) + (r11 & 0xffff)|0;\n v = ((imul(ah3, bl0)|0) + (r3 >>> 16)|0) + (r11 >>> 16)|0;\n w = ((imul(al3, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r3 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl1)|0) + (r4 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah3, bl1)|0) + (r4 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al3, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r4 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl2)|0) + (r5 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah3, bl2)|0) + (r5 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al3, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r5 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl3)|0) + (r6 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah3, bl3)|0) + (r6 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al3, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r6 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl4)|0) + (r7 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah3, bl4)|0) + (r7 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al3, bh4)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh4)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r7 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl5)|0) + (r8 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah3, bl5)|0) + (r8 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al3, bh5)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh5)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r8 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl6)|0) + (r9 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah3, bl6)|0) + (r9 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al3, bh6)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh6)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r9 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al3, bl7)|0) + (r10 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah3, bl7)|0) + (r10 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al3, bh7)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah3, bh7)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r10 = (w << 16) | (u & 0xffff);\n\n r11 = m;\n\n u = ((imul(al4, bl0)|0) + (r4 & 0xffff)|0) + (r12 & 0xffff)|0;\n v = ((imul(ah4, bl0)|0) + (r4 >>> 16)|0) + (r12 >>> 16)|0;\n w = ((imul(al4, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah4, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r4 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al4, bl1)|0) + (r5 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah4, bl1)|0) + (r5 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al4, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah4, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r5 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al4, bl2)|0) + (r6 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah4, bl2)|0) + (r6 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al4, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah4, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r6 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al4, bl3)|0) + (r7 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah4, bl3)|0) + (r7 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al4, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah4, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r7 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al4, bl4)|0) + (r8 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah4, bl4)|0) + (r8 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al4, bh4)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah4, bh4)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r8 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al4, bl5)|0) + (r9 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah4, bl5)|0) + (r9 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al4, bh5)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah4, bh5)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r9 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al4, bl6)|0) + (r10 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah4, bl6)|0) + (r10 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al4, bh6)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah4, bh6)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r10 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al4, bl7)|0) + (r11 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah4, bl7)|0) + (r11 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al4, bh7)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah4, bh7)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r11 = (w << 16) | (u & 0xffff);\n\n r12 = m;\n\n u = ((imul(al5, bl0)|0) + (r5 & 0xffff)|0) + (r13 & 0xffff)|0;\n v = ((imul(ah5, bl0)|0) + (r5 >>> 16)|0) + (r13 >>> 16)|0;\n w = ((imul(al5, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah5, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r5 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al5, bl1)|0) + (r6 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah5, bl1)|0) + (r6 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al5, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah5, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r6 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al5, bl2)|0) + (r7 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah5, bl2)|0) + (r7 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al5, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah5, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r7 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al5, bl3)|0) + (r8 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah5, bl3)|0) + (r8 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al5, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah5, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r8 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al5, bl4)|0) + (r9 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah5, bl4)|0) + (r9 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al5, bh4)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah5, bh4)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r9 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al5, bl5)|0) + (r10 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah5, bl5)|0) + (r10 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al5, bh5)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah5, bh5)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r10 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al5, bl6)|0) + (r11 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah5, bl6)|0) + (r11 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al5, bh6)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah5, bh6)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r11 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al5, bl7)|0) + (r12 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah5, bl7)|0) + (r12 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al5, bh7)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah5, bh7)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r12 = (w << 16) | (u & 0xffff);\n\n r13 = m;\n\n u = ((imul(al6, bl0)|0) + (r6 & 0xffff)|0) + (r14 & 0xffff)|0;\n v = ((imul(ah6, bl0)|0) + (r6 >>> 16)|0) + (r14 >>> 16)|0;\n w = ((imul(al6, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah6, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r6 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al6, bl1)|0) + (r7 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah6, bl1)|0) + (r7 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al6, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah6, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r7 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al6, bl2)|0) + (r8 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah6, bl2)|0) + (r8 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al6, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah6, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r8 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al6, bl3)|0) + (r9 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah6, bl3)|0) + (r9 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al6, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah6, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r9 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al6, bl4)|0) + (r10 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah6, bl4)|0) + (r10 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al6, bh4)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah6, bh4)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r10 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al6, bl5)|0) + (r11 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah6, bl5)|0) + (r11 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al6, bh5)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah6, bh5)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r11 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al6, bl6)|0) + (r12 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah6, bl6)|0) + (r12 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al6, bh6)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah6, bh6)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r12 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al6, bl7)|0) + (r13 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah6, bl7)|0) + (r13 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al6, bh7)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah6, bh7)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r13 = (w << 16) | (u & 0xffff);\n\n r14 = m;\n\n u = ((imul(al7, bl0)|0) + (r7 & 0xffff)|0) + (r15 & 0xffff)|0;\n v = ((imul(ah7, bl0)|0) + (r7 >>> 16)|0) + (r15 >>> 16)|0;\n w = ((imul(al7, bh0)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah7, bh0)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r7 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al7, bl1)|0) + (r8 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah7, bl1)|0) + (r8 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al7, bh1)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah7, bh1)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r8 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al7, bl2)|0) + (r9 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah7, bl2)|0) + (r9 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al7, bh2)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah7, bh2)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r9 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al7, bl3)|0) + (r10 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah7, bl3)|0) + (r10 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al7, bh3)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah7, bh3)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r10 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al7, bl4)|0) + (r11 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah7, bl4)|0) + (r11 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al7, bh4)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah7, bh4)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r11 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al7, bl5)|0) + (r12 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah7, bl5)|0) + (r12 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al7, bh5)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah7, bh5)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r12 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al7, bl6)|0) + (r13 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah7, bl6)|0) + (r13 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al7, bh6)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah7, bh6)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r13 = (w << 16) | (u & 0xffff);\n\n u = ((imul(al7, bl7)|0) + (r14 & 0xffff)|0) + (m & 0xffff)|0;\n v = ((imul(ah7, bl7)|0) + (r14 >>> 16)|0) + (m >>> 16)|0;\n w = ((imul(al7, bh7)|0) + (v & 0xffff)|0) + (u >>> 16)|0;\n m = ((imul(ah7, bh7)|0) + (v >>> 16)|0) + (w >>> 16)|0;\n r14 = (w << 16) | (u & 0xffff);\n\n r15 = m;\n\n k = d+(i+j|0)|0;\n r = HEAP32[(Rk+k)>>2]|0;\n u = ((r & 0xffff) + ((r0 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r0 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n k = k+4|0;\n r = HEAP32[(Rk+k)>>2]|0;\n u = ((r & 0xffff) + ((r1 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r1 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n k = k+4|0;\n r = HEAP32[(Rk+k)>>2]|0;\n u = ((r & 0xffff) + ((r2 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r2 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n k = k+4|0;\n r = HEAP32[(Rk+k)>>2]|0;\n u = ((r & 0xffff) + ((r3 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r3 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n k = k+4|0;\n r = HEAP32[(Rk+k)>>2]|0;\n u = ((r & 0xffff) + ((r4 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r4 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n k = k+4|0;\n r = HEAP32[(Rk+k)>>2]|0;\n u = ((r & 0xffff) + ((r5 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r5 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n k = k+4|0;\n r = HEAP32[(Rk+k)>>2]|0;\n u = ((r & 0xffff) + ((r6 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r6 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n k = k+4|0;\n r = HEAP32[(Rk+k)>>2]|0;\n u = ((r & 0xffff) + ((r7 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r7 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n }\n\n k = d+(i+j|0)|0;\n r = HEAP32[(Rk+k)>>2]|0;\n u = (((r & 0xffff) + ((r8 & 0xffff) << 1)|0) + c|0) + h|0;\n w = ((r >>> 16) + ((r8 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n k = k+4|0;\n r = HEAP32[(Rk+k)>>2]|0;\n u = ((r & 0xffff) + ((r9 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r9 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n k = k+4|0;\n r = HEAP32[(Rk+k)>>2]|0;\n u = ((r & 0xffff) + ((r10 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r10 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n k = k+4|0;\n r = HEAP32[(Rk+k)>>2]|0;\n u = ((r & 0xffff) + ((r11 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r11 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n k = k+4|0;\n r = HEAP32[(Rk+k)>>2]|0;\n u = ((r & 0xffff) + ((r12 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r12 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n k = k+4|0;\n r = HEAP32[(Rk+k)>>2]|0;\n u = ((r & 0xffff) + ((r13 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r13 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n k = k+4|0;\n r = HEAP32[(Rk+k)>>2]|0;\n u = ((r & 0xffff) + ((r14 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r14 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n c = w >>> 16;\n\n k = k+4|0;\n r = HEAP32[(Rk+k)>>2]|0;\n u = ((r & 0xffff) + ((r15 & 0xffff) << 1)|0) + c|0;\n w = ((r >>> 16) + ((r15 >>> 16) << 1)|0) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n h = w >>> 16;\n }\n\n for ( k = k+4|0; !!h & ( (k|0) < (dd<<1) ); k = (k+4)|0 ) { // carry propagation loop\n r = HEAP32[(Rk+k)>>2]|0;\n u = (r & 0xffff) + h|0;\n w = (r >>> 16) + (u >>> 16)|0;\n HEAP32[(Rk+k)>>2] = (w << 16) | (u & 0xffff);\n h = w >>> 16;\n }\n }\n }\n }\n\n /**\n * Conventional division\n *\n * @param A offset of the numerator, 32-byte aligned\n * @param lA length of the numerator, multiple of 32\n *\n * @param B offset of the divisor, 32-byte aligned\n * @param lB length of the divisor, multiple of 32\n *\n * @param R offset where to place the remainder to, 32-byte aligned\n *\n * @param Q offser where to place the quotient to, 32-byte aligned\n */\n\n function div ( N, lN, D, lD, Q ) {\n N = N|0;\n lN = lN|0;\n D = D|0;\n lD = lD|0;\n Q = Q|0;\n\n var n = 0, d = 0, e = 0,\n u1 = 0, u0 = 0,\n v0 = 0, vh = 0, vl = 0,\n qh = 0, ql = 0, rh = 0, rl = 0,\n t1 = 0, t2 = 0, m = 0, c = 0,\n i = 0, j = 0, k = 0;\n\n // number of significant limbs in `N` (multiplied by 4)\n for ( i = (lN-1) & -4; (i|0) >= 0; i = (i-4)|0 ) {\n n = HEAP32[(N+i)>>2]|0;\n if ( n ) {\n lN = i;\n break;\n }\n }\n\n // number of significant limbs in `D` (multiplied by 4)\n for ( i = (lD-1) & -4; (i|0) >= 0; i = (i-4)|0 ) {\n d = HEAP32[(D+i)>>2]|0;\n if ( d ) {\n lD = i;\n break;\n }\n }\n\n // `D` is zero? WTF?!\n\n // calculate `e` — the power of 2 of the normalization factor\n while ( (d & 0x80000000) == 0 ) {\n d = d << 1;\n e = e + 1|0;\n }\n\n // normalize `N` in place\n u0 = HEAP32[(N+lN)>>2]|0;\n if ( e ) {\n u1 = u0>>>(32-e|0);\n for ( i = (lN-4)|0; (i|0) >= 0; i = (i-4)|0 ) {\n n = HEAP32[(N+i)>>2]|0;\n HEAP32[(N+i+4)>>2] = (u0 << e) | ( e ? n >>> (32-e|0) : 0 );\n u0 = n;\n }\n HEAP32[N>>2] = u0 << e;\n }\n\n // normalize `D` in place\n if ( e ) {\n v0 = HEAP32[(D+lD)>>2]|0;\n for ( i = (lD-4)|0; (i|0) >= 0; i = (i-4)|0 ) {\n d = HEAP32[(D+i)>>2]|0;\n HEAP32[(D+i+4)>>2] = (v0 << e) | ( d >>> (32-e|0) );\n v0 = d;\n }\n HEAP32[D>>2] = v0 << e;\n }\n\n // divisor parts won't change\n v0 = HEAP32[(D+lD)>>2]|0;\n vh = v0 >>> 16, vl = v0 & 0xffff;\n\n // perform division\n for ( i = lN; (i|0) >= (lD|0); i = (i-4)|0 ) {\n j = (i-lD)|0;\n\n // estimate high part of the quotient\n u0 = HEAP32[(N+i)>>2]|0;\n qh = ( (u1>>>0) / (vh>>>0) )|0, rh = ( (u1>>>0) % (vh>>>0) )|0, t1 = imul(qh, vl)|0;\n while ( ( (qh|0) == 0x10000 ) | ( (t1>>>0) > (((rh << 16)|(u0 >>> 16))>>>0) ) ) {\n qh = (qh-1)|0, rh = (rh+vh)|0, t1 = (t1-vl)|0;\n if ( (rh|0) >= 0x10000 ) break;\n }\n\n // bulk multiply-and-subtract\n // m - multiplication carry, c - subtraction carry\n m = 0, c = 0;\n for ( k = 0; (k|0) <= (lD|0); k = (k+4)|0 ) {\n d = HEAP32[(D+k)>>2]|0;\n t1 = (imul(qh, d & 0xffff)|0) + (m >>> 16)|0;\n t2 = (imul(qh, d >>> 16)|0) + (t1 >>> 16)|0;\n d = (m & 0xffff) | (t1 << 16);\n m = t2;\n n = HEAP32[(N+j+k)>>2]|0;\n t1 = ((n & 0xffff) - (d & 0xffff)|0) + c|0;\n t2 = ((n >>> 16) - (d >>> 16)|0) + (t1 >> 16)|0;\n HEAP32[(N+j+k)>>2] = (t2 << 16) | (t1 & 0xffff);\n c = t2 >> 16;\n }\n t1 = ((u1 & 0xffff) - (m & 0xffff)|0) + c|0;\n t2 = ((u1 >>> 16) - (m >>> 16)|0) + (t1 >> 16)|0;\n u1 = (t2 << 16) | (t1 & 0xffff);\n c = t2 >> 16;\n\n // add `D` back if got carry-out\n if ( c ) {\n qh = (qh-1)|0;\n c = 0;\n for ( k = 0; (k|0) <= (lD|0); k = (k+4)|0 ) {\n d = HEAP32[(D+k)>>2]|0;\n n = HEAP32[(N+j+k)>>2]|0;\n t1 = (n & 0xffff) + c|0;\n t2 = (n >>> 16) + d + (t1 >>> 16)|0;\n HEAP32[(N+j+k)>>2] = (t2 << 16) | (t1 & 0xffff);\n c = t2 >>> 16;\n }\n u1 = (u1+c)|0;\n }\n\n // estimate low part of the quotient\n u0 = HEAP32[(N+i)>>2]|0;\n n = (u1 << 16) | (u0 >>> 16);\n ql = ( (n>>>0) / (vh>>>0) )|0, rl = ( (n>>>0) % (vh>>>0) )|0, t1 = imul(ql, vl)|0;\n while ( ( (ql|0) == 0x10000 ) | ( (t1>>>0) > (((rl << 16)|(u0 & 0xffff))>>>0) ) ) {\n ql = (ql-1)|0, rl = (rl+vh)|0, t1 = (t1-vl)|0;\n if ( (rl|0) >= 0x10000 ) break;\n }\n\n // bulk multiply-and-subtract\n // m - multiplication carry, c - subtraction carry\n m = 0, c = 0;\n for ( k = 0; (k|0) <= (lD|0); k = (k+4)|0 ) {\n d = HEAP32[(D+k)>>2]|0;\n t1 = (imul(ql, d & 0xffff)|0) + (m & 0xffff)|0;\n t2 = ((imul(ql, d >>> 16)|0) + (t1 >>> 16)|0) + (m >>> 16)|0;\n d = (t1 & 0xffff) | (t2 << 16);\n m = t2 >>> 16;\n n = HEAP32[(N+j+k)>>2]|0;\n t1 = ((n & 0xffff) - (d & 0xffff)|0) + c|0;\n t2 = ((n >>> 16) - (d >>> 16)|0) + (t1 >> 16)|0;\n c = t2 >> 16;\n HEAP32[(N+j+k)>>2] = (t2 << 16) | (t1 & 0xffff);\n }\n t1 = ((u1 & 0xffff) - (m & 0xffff)|0) + c|0;\n t2 = ((u1 >>> 16) - (m >>> 16)|0) + (t1 >> 16)|0;\n c = t2 >> 16;\n\n // add `D` back if got carry-out\n if ( c ) {\n ql = (ql-1)|0;\n c = 0;\n for ( k = 0; (k|0) <= (lD|0); k = (k+4)|0 ) {\n d = HEAP32[(D+k)>>2]|0;\n n = HEAP32[(N+j+k)>>2]|0;\n t1 = ((n & 0xffff) + (d & 0xffff)|0) + c|0;\n t2 = ((n >>> 16) + (d >>> 16)|0) + (t1 >>> 16)|0;\n c = t2 >>> 16;\n HEAP32[(N+j+k)>>2] = (t1 & 0xffff) | (t2 << 16);\n }\n }\n\n // got quotient limb\n HEAP32[(Q+j)>>2] = (qh << 16) | ql;\n\n u1 = HEAP32[(N+i)>>2]|0;\n }\n\n if ( e ) {\n // TODO denormalize `D` in place\n\n // denormalize `N` in place\n u0 = HEAP32[N>>2]|0;\n for ( i = 4; (i|0) <= (lD|0); i = (i+4)|0 ) {\n n = HEAP32[(N+i)>>2]|0;\n HEAP32[(N+i-4)>>2] = ( n << (32-e|0) ) | (u0 >>> e);\n u0 = n;\n }\n HEAP32[(N+lD)>>2] = u0 >>> e;\n }\n }\n\n /**\n * Montgomery modular reduction\n *\n * Definition:\n *\n * MREDC(A) = A × X (mod N),\n * M × X = N × Y + 1,\n *\n * where M = 2^(32*m) such that N < M and A < N×M\n *\n * Numbers `X` and `Y` can be calculated using Extended Euclidean Algorithm.\n */\n function mredc ( A, lA, N, lN, y, R ) {\n A = A|0;\n lA = lA|0;\n N = N|0;\n lN = lN|0;\n y = y|0;\n R = R|0;\n\n var T = 0,\n c = 0, uh = 0, ul = 0, vl = 0, vh = 0, w0 = 0, w1 = 0, w2 = 0, r0 = 0, r1 = 0,\n i = 0, j = 0, k = 0;\n\n T = salloc(lN<<1)|0;\n z(lN<<1, 0, T);\n\n cp( lA, A, T );\n\n // HAC 14.32\n for ( i = 0; (i|0) < (lN|0); i = (i+4)|0 ) {\n uh = HEAP32[(T+i)>>2]|0, ul = uh & 0xffff, uh = uh >>> 16;\n vh = y >>> 16, vl = y & 0xffff;\n w0 = imul(ul,vl)|0, w1 = ( (imul(ul,vh)|0) + (imul(uh,vl)|0) | 0 ) + (w0 >>> 16) | 0;\n ul = w0 & 0xffff, uh = w1 & 0xffff;\n r1 = 0;\n for ( j = 0; (j|0) < (lN|0); j = (j+4)|0 ) {\n k = (i+j)|0;\n vh = HEAP32[(N+j)>>2]|0, vl = vh & 0xffff, vh = vh >>> 16;\n r0 = HEAP32[(T+k)>>2]|0;\n w0 = ((imul(ul, vl)|0) + (r1 & 0xffff)|0) + (r0 & 0xffff)|0;\n w1 = ((imul(ul, vh)|0) + (r1 >>> 16)|0) + (r0 >>> 16)|0;\n w2 = ((imul(uh, vl)|0) + (w1 & 0xffff)|0) + (w0 >>> 16)|0;\n r1 = ((imul(uh, vh)|0) + (w2 >>> 16)|0) + (w1 >>> 16)|0;\n r0 = (w2 << 16) | (w0 & 0xffff);\n HEAP32[(T+k)>>2] = r0;\n }\n k = (i+j)|0;\n r0 = HEAP32[(T+k)>>2]|0;\n w0 = ((r0 & 0xffff) + (r1 & 0xffff)|0) + c|0;\n w1 = ((r0 >>> 16) + (r1 >>> 16)|0) + (w0 >>> 16)|0;\n HEAP32[(T+k)>>2] = (w1 << 16) | (w0 & 0xffff);\n c = w1 >>> 16;\n }\n\n cp( lN, (T+lN)|0, R );\n\n sfree(lN<<1);\n\n if ( c | ( (cmp( N, lN, R, lN )|0) <= 0 ) ) {\n sub( R, lN, N, lN, R, lN )|0;\n }\n }\n\n return {\n sreset: sreset,\n salloc: salloc,\n sfree: sfree,\n z: z,\n tst: tst,\n neg: neg,\n cmp: cmp,\n add: add,\n sub: sub,\n mul: mul,\n sqr: sqr,\n div: div,\n mredc: mredc\n };\n};\n\nfunction Number_extGCD(a, b) {\n var sa = a < 0 ? -1 : 1, sb = b < 0 ? -1 : 1, xi = 1, xj = 0, yi = 0, yj = 1, r, q, t, a_cmp_b;\n a *= sa;\n b *= sb;\n a_cmp_b = a < b;\n if (a_cmp_b) {\n t = a;\n (a = b), (b = t);\n t = sa;\n sa = sb;\n sb = t;\n }\n (q = Math.floor(a / b)), (r = a - q * b);\n while (r) {\n (t = xi - q * xj), (xi = xj), (xj = t);\n (t = yi - q * yj), (yi = yj), (yj = t);\n (a = b), (b = r);\n (q = Math.floor(a / b)), (r = a - q * b);\n }\n xj *= sa;\n yj *= sb;\n if (a_cmp_b) {\n t = xj;\n (xj = yj), (yj = t);\n }\n return {\n gcd: b,\n x: xj,\n y: yj,\n };\n}\nfunction BigNumber_extGCD(a, b) {\n let sa = a.sign;\n let sb = b.sign;\n if (sa < 0)\n a = a.negate();\n if (sb < 0)\n b = b.negate();\n const a_cmp_b = a.compare(b);\n if (a_cmp_b < 0) {\n let t = a;\n (a = b), (b = t);\n let t2 = sa;\n sa = sb;\n sb = t2;\n }\n var xi = BigNumber.ONE, xj = BigNumber.ZERO, lx = b.bitLength, yi = BigNumber.ZERO, yj = BigNumber.ONE, ly = a.bitLength, z, r, q;\n z = a.divide(b);\n while ((r = z.remainder) !== BigNumber.ZERO) {\n q = z.quotient;\n (z = xi.subtract(q.multiply(xj).clamp(lx)).clamp(lx)), (xi = xj), (xj = z);\n (z = yi.subtract(q.multiply(yj).clamp(ly)).clamp(ly)), (yi = yj), (yj = z);\n (a = b), (b = r);\n z = a.divide(b);\n }\n if (sa < 0)\n xj = xj.negate();\n if (sb < 0)\n yj = yj.negate();\n if (a_cmp_b < 0) {\n let t = xj;\n (xj = yj), (yj = t);\n }\n return {\n gcd: b,\n x: xj,\n y: yj,\n };\n}\n\nfunction getRandomValues(buf) {\n if (typeof process !== 'undefined') {\n const nodeCrypto = require('crypto');\n const bytes = nodeCrypto.randomBytes(buf.length);\n buf.set(bytes);\n return;\n }\n if (window.crypto && window.crypto.getRandomValues) {\n window.crypto.getRandomValues(buf);\n return;\n }\n if (self.crypto && self.crypto.getRandomValues) {\n self.crypto.getRandomValues(buf);\n return;\n }\n // @ts-ignore\n if (window.msCrypto && window.msCrypto.getRandomValues) {\n // @ts-ignore\n window.msCrypto.getRandomValues(buf);\n return;\n }\n throw new Error('No secure random number generator available.');\n}\n\n///////////////////////////////////////////////////////////////////////////////\nconst _bigint_stdlib = { Uint32Array: Uint32Array, Math: Math };\nconst _bigint_heap = new Uint32Array(0x100000);\nlet _bigint_asm;\nfunction _half_imul(a, b) {\n return (a * b) | 0;\n}\nif (_bigint_stdlib.Math.imul === undefined) {\n _bigint_stdlib.Math.imul = _half_imul;\n _bigint_asm = bigint_asm(_bigint_stdlib, null, _bigint_heap.buffer);\n delete _bigint_stdlib.Math.imul;\n}\nelse {\n _bigint_asm = bigint_asm(_bigint_stdlib, null, _bigint_heap.buffer);\n}\n///////////////////////////////////////////////////////////////////////////////\nconst _BigNumber_ZERO_limbs = new Uint32Array(0);\nclass BigNumber {\n constructor(num) {\n let limbs = _BigNumber_ZERO_limbs;\n let bitlen = 0;\n let sign = 0;\n if (num === undefined) ;\n else {\n for (var i = 0; !num[i]; i++)\n ;\n bitlen = (num.length - i) * 8;\n if (!bitlen)\n return BigNumber.ZERO;\n limbs = new Uint32Array((bitlen + 31) >> 5);\n for (var j = num.length - 4; j >= i; j -= 4) {\n limbs[(num.length - 4 - j) >> 2] = (num[j] << 24) | (num[j + 1] << 16) | (num[j + 2] << 8) | num[j + 3];\n }\n if (i - j === 3) {\n limbs[limbs.length - 1] = num[i];\n }\n else if (i - j === 2) {\n limbs[limbs.length - 1] = (num[i] << 8) | num[i + 1];\n }\n else if (i - j === 1) {\n limbs[limbs.length - 1] = (num[i] << 16) | (num[i + 1] << 8) | num[i + 2];\n }\n sign = 1;\n }\n this.limbs = limbs;\n this.bitLength = bitlen;\n this.sign = sign;\n }\n static fromString(str) {\n const bytes = string_to_bytes(str);\n return new BigNumber(bytes);\n }\n static fromNumber(num) {\n let limbs = _BigNumber_ZERO_limbs;\n let bitlen = 0;\n let sign = 0;\n var absnum = Math.abs(num);\n if (absnum > 0xffffffff) {\n limbs = new Uint32Array(2);\n limbs[0] = absnum | 0;\n limbs[1] = (absnum / 0x100000000) | 0;\n bitlen = 52;\n }\n else if (absnum > 0) {\n limbs = new Uint32Array(1);\n limbs[0] = absnum;\n bitlen = 32;\n }\n else {\n limbs = _BigNumber_ZERO_limbs;\n bitlen = 0;\n }\n sign = num < 0 ? -1 : 1;\n return BigNumber.fromConfig({ limbs, bitLength: bitlen, sign });\n }\n static fromArrayBuffer(buffer) {\n return new BigNumber(new Uint8Array(buffer));\n }\n static fromConfig(obj) {\n const bn = new BigNumber();\n bn.limbs = new Uint32Array(obj.limbs);\n bn.bitLength = obj.bitLength;\n bn.sign = obj.sign;\n return bn;\n }\n toString(radix) {\n radix = radix || 16;\n const limbs = this.limbs;\n const bitlen = this.bitLength;\n let str = '';\n if (radix === 16) {\n // FIXME clamp last limb to (bitlen % 32)\n for (var i = ((bitlen + 31) >> 5) - 1; i >= 0; i--) {\n var h = limbs[i].toString(16);\n str += '00000000'.substr(h.length);\n str += h;\n }\n str = str.replace(/^0+/, '');\n if (!str.length)\n str = '0';\n }\n else {\n throw new IllegalArgumentError('bad radix');\n }\n if (this.sign < 0)\n str = '-' + str;\n return str;\n }\n toBytes() {\n const bitlen = this.bitLength;\n const limbs = this.limbs;\n if (bitlen === 0)\n return new Uint8Array(0);\n const bytelen = (bitlen + 7) >> 3;\n const bytes = new Uint8Array(bytelen);\n for (let i = 0; i < bytelen; i++) {\n let j = bytelen - i - 1;\n bytes[i] = limbs[j >> 2] >> ((j & 3) << 3);\n }\n return bytes;\n }\n /**\n * Downgrade to Number\n */\n valueOf() {\n const limbs = this.limbs;\n const bits = this.bitLength;\n const sign = this.sign;\n if (!sign)\n return 0;\n if (bits <= 32)\n return sign * (limbs[0] >>> 0);\n if (bits <= 52)\n return sign * (0x100000000 * (limbs[1] >>> 0) + (limbs[0] >>> 0));\n // normalization\n let i, l, e = 0;\n for (i = limbs.length - 1; i >= 0; i--) {\n if ((l = limbs[i]) === 0)\n continue;\n while (((l << e) & 0x80000000) === 0)\n e++;\n break;\n }\n if (i === 0)\n return sign * (limbs[0] >>> 0);\n return (sign *\n (0x100000 * (((limbs[i] << e) | (e ? limbs[i - 1] >>> (32 - e) : 0)) >>> 0) +\n (((limbs[i - 1] << e) | (e && i > 1 ? limbs[i - 2] >>> (32 - e) : 0)) >>> 12)) *\n Math.pow(2, 32 * i - e - 52));\n }\n clamp(b) {\n const limbs = this.limbs;\n const bitlen = this.bitLength;\n // FIXME check b is number and in a valid range\n if (b >= bitlen)\n return this;\n const clamped = new BigNumber();\n let n = (b + 31) >> 5;\n let k = b % 32;\n clamped.limbs = new Uint32Array(limbs.subarray(0, n));\n clamped.bitLength = b;\n clamped.sign = this.sign;\n if (k)\n clamped.limbs[n - 1] &= -1 >>> (32 - k);\n return clamped;\n }\n slice(f, b) {\n const limbs = this.limbs;\n const bitlen = this.bitLength;\n if (f < 0)\n throw new RangeError('TODO');\n if (f >= bitlen)\n return BigNumber.ZERO;\n if (b === undefined || b > bitlen - f)\n b = bitlen - f;\n const sliced = new BigNumber();\n let n = f >> 5;\n let m = (f + b + 31) >> 5;\n let l = (b + 31) >> 5;\n let t = f % 32;\n let k = b % 32;\n const slimbs = new Uint32Array(l);\n if (t) {\n for (var i = 0; i < m - n - 1; i++) {\n slimbs[i] = (limbs[n + i] >>> t) | (limbs[n + i + 1] << (32 - t));\n }\n slimbs[i] = limbs[n + i] >>> t;\n }\n else {\n slimbs.set(limbs.subarray(n, m));\n }\n if (k) {\n slimbs[l - 1] &= -1 >>> (32 - k);\n }\n sliced.limbs = slimbs;\n sliced.bitLength = b;\n sliced.sign = this.sign;\n return sliced;\n }\n negate() {\n const negative = new BigNumber();\n negative.limbs = this.limbs;\n negative.bitLength = this.bitLength;\n negative.sign = -1 * this.sign;\n return negative;\n }\n compare(that) {\n var alimbs = this.limbs, alimbcnt = alimbs.length, blimbs = that.limbs, blimbcnt = blimbs.length, z = 0;\n if (this.sign < that.sign)\n return -1;\n if (this.sign > that.sign)\n return 1;\n _bigint_heap.set(alimbs, 0);\n _bigint_heap.set(blimbs, alimbcnt);\n z = _bigint_asm.cmp(0, alimbcnt << 2, alimbcnt << 2, blimbcnt << 2);\n return z * this.sign;\n }\n add(that) {\n if (!this.sign)\n return that;\n if (!that.sign)\n return this;\n var abitlen = this.bitLength, alimbs = this.limbs, alimbcnt = alimbs.length, asign = this.sign, bbitlen = that.bitLength, blimbs = that.limbs, blimbcnt = blimbs.length, bsign = that.sign, rbitlen, rlimbcnt, rsign, rof, result = new BigNumber();\n rbitlen = (abitlen > bbitlen ? abitlen : bbitlen) + (asign * bsign > 0 ? 1 : 0);\n rlimbcnt = (rbitlen + 31) >> 5;\n _bigint_asm.sreset();\n var pA = _bigint_asm.salloc(alimbcnt << 2), pB = _bigint_asm.salloc(blimbcnt << 2), pR = _bigint_asm.salloc(rlimbcnt << 2);\n _bigint_asm.z(pR - pA + (rlimbcnt << 2), 0, pA);\n _bigint_heap.set(alimbs, pA >> 2);\n _bigint_heap.set(blimbs, pB >> 2);\n if (asign * bsign > 0) {\n _bigint_asm.add(pA, alimbcnt << 2, pB, blimbcnt << 2, pR, rlimbcnt << 2);\n rsign = asign;\n }\n else if (asign > bsign) {\n rof = _bigint_asm.sub(pA, alimbcnt << 2, pB, blimbcnt << 2, pR, rlimbcnt << 2);\n rsign = rof ? bsign : asign;\n }\n else {\n rof = _bigint_asm.sub(pB, blimbcnt << 2, pA, alimbcnt << 2, pR, rlimbcnt << 2);\n rsign = rof ? asign : bsign;\n }\n if (rof)\n _bigint_asm.neg(pR, rlimbcnt << 2, pR, rlimbcnt << 2);\n if (_bigint_asm.tst(pR, rlimbcnt << 2) === 0)\n return BigNumber.ZERO;\n result.limbs = new Uint32Array(_bigint_heap.subarray(pR >> 2, (pR >> 2) + rlimbcnt));\n result.bitLength = rbitlen;\n result.sign = rsign;\n return result;\n }\n subtract(that) {\n return this.add(that.negate());\n }\n square() {\n if (!this.sign)\n return BigNumber.ZERO;\n var abitlen = this.bitLength, alimbs = this.limbs, alimbcnt = alimbs.length, rbitlen, rlimbcnt, result = new BigNumber();\n rbitlen = abitlen << 1;\n rlimbcnt = (rbitlen + 31) >> 5;\n _bigint_asm.sreset();\n var pA = _bigint_asm.salloc(alimbcnt << 2), pR = _bigint_asm.salloc(rlimbcnt << 2);\n _bigint_asm.z(pR - pA + (rlimbcnt << 2), 0, pA);\n _bigint_heap.set(alimbs, pA >> 2);\n _bigint_asm.sqr(pA, alimbcnt << 2, pR);\n result.limbs = new Uint32Array(_bigint_heap.subarray(pR >> 2, (pR >> 2) + rlimbcnt));\n result.bitLength = rbitlen;\n result.sign = 1;\n return result;\n }\n divide(that) {\n var abitlen = this.bitLength, alimbs = this.limbs, alimbcnt = alimbs.length, bbitlen = that.bitLength, blimbs = that.limbs, blimbcnt = blimbs.length, qlimbcnt, rlimbcnt, quotient = BigNumber.ZERO, remainder = BigNumber.ZERO;\n _bigint_asm.sreset();\n var pA = _bigint_asm.salloc(alimbcnt << 2), pB = _bigint_asm.salloc(blimbcnt << 2), pQ = _bigint_asm.salloc(alimbcnt << 2);\n _bigint_asm.z(pQ - pA + (alimbcnt << 2), 0, pA);\n _bigint_heap.set(alimbs, pA >> 2);\n _bigint_heap.set(blimbs, pB >> 2);\n _bigint_asm.div(pA, alimbcnt << 2, pB, blimbcnt << 2, pQ);\n qlimbcnt = _bigint_asm.tst(pQ, alimbcnt << 2) >> 2;\n if (qlimbcnt) {\n quotient = new BigNumber();\n quotient.limbs = new Uint32Array(_bigint_heap.subarray(pQ >> 2, (pQ >> 2) + qlimbcnt));\n quotient.bitLength = abitlen < qlimbcnt << 5 ? abitlen : qlimbcnt << 5;\n quotient.sign = this.sign * that.sign;\n }\n rlimbcnt = _bigint_asm.tst(pA, blimbcnt << 2) >> 2;\n if (rlimbcnt) {\n remainder = new BigNumber();\n remainder.limbs = new Uint32Array(_bigint_heap.subarray(pA >> 2, (pA >> 2) + rlimbcnt));\n remainder.bitLength = bbitlen < rlimbcnt << 5 ? bbitlen : rlimbcnt << 5;\n remainder.sign = this.sign;\n }\n return {\n quotient: quotient,\n remainder: remainder,\n };\n }\n multiply(that) {\n if (!this.sign || !that.sign)\n return BigNumber.ZERO;\n var abitlen = this.bitLength, alimbs = this.limbs, alimbcnt = alimbs.length, bbitlen = that.bitLength, blimbs = that.limbs, blimbcnt = blimbs.length, rbitlen, rlimbcnt, result = new BigNumber();\n rbitlen = abitlen + bbitlen;\n rlimbcnt = (rbitlen + 31) >> 5;\n _bigint_asm.sreset();\n var pA = _bigint_asm.salloc(alimbcnt << 2), pB = _bigint_asm.salloc(blimbcnt << 2), pR = _bigint_asm.salloc(rlimbcnt << 2);\n _bigint_asm.z(pR - pA + (rlimbcnt << 2), 0, pA);\n _bigint_heap.set(alimbs, pA >> 2);\n _bigint_heap.set(blimbs, pB >> 2);\n _bigint_asm.mul(pA, alimbcnt << 2, pB, blimbcnt << 2, pR, rlimbcnt << 2);\n result.limbs = new Uint32Array(_bigint_heap.subarray(pR >> 2, (pR >> 2) + rlimbcnt));\n result.sign = this.sign * that.sign;\n result.bitLength = rbitlen;\n return result;\n }\n isMillerRabinProbablePrime(rounds) {\n var t = BigNumber.fromConfig(this), s = 0;\n t.limbs[0] -= 1;\n while (t.limbs[s >> 5] === 0)\n s += 32;\n while (((t.limbs[s >> 5] >> (s & 31)) & 1) === 0)\n s++;\n t = t.slice(s);\n var m = new Modulus(this), m1 = this.subtract(BigNumber.ONE), a = BigNumber.fromConfig(this), l = this.limbs.length - 1;\n while (a.limbs[l] === 0)\n l--;\n while (--rounds >= 0) {\n getRandomValues(a.limbs);\n if (a.limbs[0] < 2)\n a.limbs[0] += 2;\n while (a.compare(m1) >= 0)\n a.limbs[l] >>>= 1;\n var x = m.power(a, t);\n if (x.compare(BigNumber.ONE) === 0)\n continue;\n if (x.compare(m1) === 0)\n continue;\n var c = s;\n while (--c > 0) {\n x = x.square().divide(m).remainder;\n if (x.compare(BigNumber.ONE) === 0)\n return false;\n if (x.compare(m1) === 0)\n break;\n }\n if (c === 0)\n return false;\n }\n return true;\n }\n isProbablePrime(paranoia = 80) {\n var limbs = this.limbs;\n var i = 0;\n // Oddity test\n // (50% false positive probability)\n if ((limbs[0] & 1) === 0)\n return false;\n if (paranoia <= 1)\n return true;\n // Magic divisors (3, 5, 17) test\n // (~25% false positive probability)\n var s3 = 0, s5 = 0, s17 = 0;\n for (i = 0; i < limbs.length; i++) {\n var l3 = limbs[i];\n while (l3) {\n s3 += l3 & 3;\n l3 >>>= 2;\n }\n var l5 = limbs[i];\n while (l5) {\n s5 += l5 & 3;\n l5 >>>= 2;\n s5 -= l5 & 3;\n l5 >>>= 2;\n }\n var l17 = limbs[i];\n while (l17) {\n s17 += l17 & 15;\n l17 >>>= 4;\n s17 -= l17 & 15;\n l17 >>>= 4;\n }\n }\n if (!(s3 % 3) || !(s5 % 5) || !(s17 % 17))\n return false;\n if (paranoia <= 2)\n return true;\n // Miller-Rabin test\n // (≤ 4^(-k) false positive probability)\n return this.isMillerRabinProbablePrime(paranoia >>> 1);\n }\n}\nBigNumber.extGCD = BigNumber_extGCD;\nBigNumber.ZERO = BigNumber.fromNumber(0);\nBigNumber.ONE = BigNumber.fromNumber(1);\nclass Modulus extends BigNumber {\n constructor(number) {\n super();\n this.limbs = number.limbs;\n this.bitLength = number.bitLength;\n this.sign = number.sign;\n if (this.valueOf() < 1)\n throw new RangeError();\n if (this.bitLength <= 32)\n return;\n let comodulus;\n if (this.limbs[0] & 1) {\n const bitlen = ((this.bitLength + 31) & -32) + 1;\n const limbs = new Uint32Array((bitlen + 31) >> 5);\n limbs[limbs.length - 1] = 1;\n comodulus = new BigNumber();\n comodulus.sign = 1;\n comodulus.bitLength = bitlen;\n comodulus.limbs = limbs;\n const k = Number_extGCD(0x100000000, this.limbs[0]).y;\n this.coefficient = k < 0 ? -k : 0x100000000 - k;\n }\n else {\n /**\n * TODO even modulus reduction\n * Modulus represented as `N = 2^U * V`, where `V` is odd and thus `GCD(2^U, V) = 1`.\n * Calculation `A = TR' mod V` is made as for odd modulo using Montgomery method.\n * Calculation `B = TR' mod 2^U` is easy as modulus is a power of 2.\n * Using Chinese Remainder Theorem and Garner's Algorithm restore `TR' mod N` from `A` and `B`.\n */\n return;\n }\n this.comodulus = comodulus;\n this.comodulusRemainder = comodulus.divide(this).remainder;\n this.comodulusRemainderSquare = comodulus.square().divide(this).remainder;\n }\n /**\n * Modular reduction\n */\n reduce(a) {\n if (a.bitLength <= 32 && this.bitLength <= 32)\n return BigNumber.fromNumber(a.valueOf() % this.valueOf());\n if (a.compare(this) < 0)\n return a;\n return a.divide(this).remainder;\n }\n /**\n * Modular inverse\n */\n inverse(a) {\n a = this.reduce(a);\n const r = BigNumber_extGCD(this, a);\n if (r.gcd.valueOf() !== 1)\n throw new Error('GCD is not 1');\n if (r.y.sign < 0)\n return r.y.add(this).clamp(this.bitLength);\n return r.y;\n }\n /**\n * Modular exponentiation\n */\n power(g, e) {\n // count exponent set bits\n let c = 0;\n for (let i = 0; i < e.limbs.length; i++) {\n let t = e.limbs[i];\n while (t) {\n if (t & 1)\n c++;\n t >>>= 1;\n }\n }\n // window size parameter\n let k = 8;\n if (e.bitLength <= 4536)\n k = 7;\n if (e.bitLength <= 1736)\n k = 6;\n if (e.bitLength <= 630)\n k = 5;\n if (e.bitLength <= 210)\n k = 4;\n if (e.bitLength <= 60)\n k = 3;\n if (e.bitLength <= 12)\n k = 2;\n if (c <= 1 << (k - 1))\n k = 1;\n // montgomerize base\n g = Modulus._Montgomery_reduce(this.reduce(g).multiply(this.comodulusRemainderSquare), this);\n // precompute odd powers\n const g2 = Modulus._Montgomery_reduce(g.square(), this), gn = new Array(1 << (k - 1));\n gn[0] = g;\n gn[1] = Modulus._Montgomery_reduce(g.multiply(g2), this);\n for (let i = 2; i < 1 << (k - 1); i++) {\n gn[i] = Modulus._Montgomery_reduce(gn[i - 1].multiply(g2), this);\n }\n // perform exponentiation\n const u = this.comodulusRemainder;\n let r = u;\n for (let i = e.limbs.length - 1; i >= 0; i--) {\n let t = e.limbs[i];\n for (let j = 32; j > 0;) {\n if (t & 0x80000000) {\n let n = t >>> (32 - k), l = k;\n while ((n & 1) === 0) {\n n >>>= 1;\n l--;\n }\n var m = gn[n >>> 1];\n while (n) {\n n >>>= 1;\n if (r !== u)\n r = Modulus._Montgomery_reduce(r.square(), this);\n }\n r = r !== u ? Modulus._Montgomery_reduce(r.multiply(m), this) : m;\n (t <<= l), (j -= l);\n }\n else {\n if (r !== u)\n r = Modulus._Montgomery_reduce(r.square(), this);\n (t <<= 1), j--;\n }\n }\n }\n // de-montgomerize result\n return Modulus._Montgomery_reduce(r, this);\n }\n static _Montgomery_reduce(a, n) {\n const alimbs = a.limbs;\n const alimbcnt = alimbs.length;\n const nlimbs = n.limbs;\n const nlimbcnt = nlimbs.length;\n const y = n.coefficient;\n _bigint_asm.sreset();\n const pA = _bigint_asm.salloc(alimbcnt << 2), pN = _bigint_asm.salloc(nlimbcnt << 2), pR = _bigint_asm.salloc(nlimbcnt << 2);\n _bigint_asm.z(pR - pA + (nlimbcnt << 2), 0, pA);\n _bigint_heap.set(alimbs, pA >> 2);\n _bigint_heap.set(nlimbs, pN >> 2);\n _bigint_asm.mredc(pA, alimbcnt << 2, pN, nlimbcnt << 2, y, pR);\n const result = new BigNumber();\n result.limbs = new Uint32Array(_bigint_heap.subarray(pR >> 2, (pR >> 2) + nlimbcnt));\n result.bitLength = n.bitLength;\n result.sign = 1;\n return result;\n }\n}\n\nvar sha1_asm = function ( stdlib, foreign, buffer ) {\n \"use asm\";\n\n // SHA256 state\n var H0 = 0, H1 = 0, H2 = 0, H3 = 0, H4 = 0,\n TOTAL0 = 0, TOTAL1 = 0;\n\n // HMAC state\n var I0 = 0, I1 = 0, I2 = 0, I3 = 0, I4 = 0,\n O0 = 0, O1 = 0, O2 = 0, O3 = 0, O4 = 0;\n\n // I/O buffer\n var HEAP = new stdlib.Uint8Array(buffer);\n\n function _core ( w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15 ) {\n w0 = w0|0;\n w1 = w1|0;\n w2 = w2|0;\n w3 = w3|0;\n w4 = w4|0;\n w5 = w5|0;\n w6 = w6|0;\n w7 = w7|0;\n w8 = w8|0;\n w9 = w9|0;\n w10 = w10|0;\n w11 = w11|0;\n w12 = w12|0;\n w13 = w13|0;\n w14 = w14|0;\n w15 = w15|0;\n\n var a = 0, b = 0, c = 0, d = 0, e = 0, n = 0, t = 0,\n w16 = 0, w17 = 0, w18 = 0, w19 = 0,\n w20 = 0, w21 = 0, w22 = 0, w23 = 0, w24 = 0, w25 = 0, w26 = 0, w27 = 0, w28 = 0, w29 = 0,\n w30 = 0, w31 = 0, w32 = 0, w33 = 0, w34 = 0, w35 = 0, w36 = 0, w37 = 0, w38 = 0, w39 = 0,\n w40 = 0, w41 = 0, w42 = 0, w43 = 0, w44 = 0, w45 = 0, w46 = 0, w47 = 0, w48 = 0, w49 = 0,\n w50 = 0, w51 = 0, w52 = 0, w53 = 0, w54 = 0, w55 = 0, w56 = 0, w57 = 0, w58 = 0, w59 = 0,\n w60 = 0, w61 = 0, w62 = 0, w63 = 0, w64 = 0, w65 = 0, w66 = 0, w67 = 0, w68 = 0, w69 = 0,\n w70 = 0, w71 = 0, w72 = 0, w73 = 0, w74 = 0, w75 = 0, w76 = 0, w77 = 0, w78 = 0, w79 = 0;\n\n a = H0;\n b = H1;\n c = H2;\n d = H3;\n e = H4;\n\n // 0\n t = ( w0 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 1\n t = ( w1 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 2\n t = ( w2 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 3\n t = ( w3 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 4\n t = ( w4 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 5\n t = ( w5 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 6\n t = ( w6 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 7\n t = ( w7 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 8\n t = ( w8 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 9\n t = ( w9 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 10\n t = ( w10 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 11\n t = ( w11 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 12\n t = ( w12 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 13\n t = ( w13 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 14\n t = ( w14 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 15\n t = ( w15 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 16\n n = w13 ^ w8 ^ w2 ^ w0;\n w16 = (n << 1) | (n >>> 31);\n t = (w16 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 17\n n = w14 ^ w9 ^ w3 ^ w1;\n w17 = (n << 1) | (n >>> 31);\n t = (w17 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 18\n n = w15 ^ w10 ^ w4 ^ w2;\n w18 = (n << 1) | (n >>> 31);\n t = (w18 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 19\n n = w16 ^ w11 ^ w5 ^ w3;\n w19 = (n << 1) | (n >>> 31);\n t = (w19 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 20\n n = w17 ^ w12 ^ w6 ^ w4;\n w20 = (n << 1) | (n >>> 31);\n t = (w20 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 21\n n = w18 ^ w13 ^ w7 ^ w5;\n w21 = (n << 1) | (n >>> 31);\n t = (w21 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 22\n n = w19 ^ w14 ^ w8 ^ w6;\n w22 = (n << 1) | (n >>> 31);\n t = (w22 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 23\n n = w20 ^ w15 ^ w9 ^ w7;\n w23 = (n << 1) | (n >>> 31);\n t = (w23 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 24\n n = w21 ^ w16 ^ w10 ^ w8;\n w24 = (n << 1) | (n >>> 31);\n t = (w24 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 25\n n = w22 ^ w17 ^ w11 ^ w9;\n w25 = (n << 1) | (n >>> 31);\n t = (w25 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 26\n n = w23 ^ w18 ^ w12 ^ w10;\n w26 = (n << 1) | (n >>> 31);\n t = (w26 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 27\n n = w24 ^ w19 ^ w13 ^ w11;\n w27 = (n << 1) | (n >>> 31);\n t = (w27 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 28\n n = w25 ^ w20 ^ w14 ^ w12;\n w28 = (n << 1) | (n >>> 31);\n t = (w28 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 29\n n = w26 ^ w21 ^ w15 ^ w13;\n w29 = (n << 1) | (n >>> 31);\n t = (w29 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 30\n n = w27 ^ w22 ^ w16 ^ w14;\n w30 = (n << 1) | (n >>> 31);\n t = (w30 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 31\n n = w28 ^ w23 ^ w17 ^ w15;\n w31 = (n << 1) | (n >>> 31);\n t = (w31 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 32\n n = w29 ^ w24 ^ w18 ^ w16;\n w32 = (n << 1) | (n >>> 31);\n t = (w32 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 33\n n = w30 ^ w25 ^ w19 ^ w17;\n w33 = (n << 1) | (n >>> 31);\n t = (w33 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 34\n n = w31 ^ w26 ^ w20 ^ w18;\n w34 = (n << 1) | (n >>> 31);\n t = (w34 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 35\n n = w32 ^ w27 ^ w21 ^ w19;\n w35 = (n << 1) | (n >>> 31);\n t = (w35 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 36\n n = w33 ^ w28 ^ w22 ^ w20;\n w36 = (n << 1) | (n >>> 31);\n t = (w36 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 37\n n = w34 ^ w29 ^ w23 ^ w21;\n w37 = (n << 1) | (n >>> 31);\n t = (w37 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 38\n n = w35 ^ w30 ^ w24 ^ w22;\n w38 = (n << 1) | (n >>> 31);\n t = (w38 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 39\n n = w36 ^ w31 ^ w25 ^ w23;\n w39 = (n << 1) | (n >>> 31);\n t = (w39 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 40\n n = w37 ^ w32 ^ w26 ^ w24;\n w40 = (n << 1) | (n >>> 31);\n t = (w40 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 41\n n = w38 ^ w33 ^ w27 ^ w25;\n w41 = (n << 1) | (n >>> 31);\n t = (w41 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 42\n n = w39 ^ w34 ^ w28 ^ w26;\n w42 = (n << 1) | (n >>> 31);\n t = (w42 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 43\n n = w40 ^ w35 ^ w29 ^ w27;\n w43 = (n << 1) | (n >>> 31);\n t = (w43 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 44\n n = w41 ^ w36 ^ w30 ^ w28;\n w44 = (n << 1) | (n >>> 31);\n t = (w44 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 45\n n = w42 ^ w37 ^ w31 ^ w29;\n w45 = (n << 1) | (n >>> 31);\n t = (w45 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 46\n n = w43 ^ w38 ^ w32 ^ w30;\n w46 = (n << 1) | (n >>> 31);\n t = (w46 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 47\n n = w44 ^ w39 ^ w33 ^ w31;\n w47 = (n << 1) | (n >>> 31);\n t = (w47 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 48\n n = w45 ^ w40 ^ w34 ^ w32;\n w48 = (n << 1) | (n >>> 31);\n t = (w48 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 49\n n = w46 ^ w41 ^ w35 ^ w33;\n w49 = (n << 1) | (n >>> 31);\n t = (w49 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 50\n n = w47 ^ w42 ^ w36 ^ w34;\n w50 = (n << 1) | (n >>> 31);\n t = (w50 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 51\n n = w48 ^ w43 ^ w37 ^ w35;\n w51 = (n << 1) | (n >>> 31);\n t = (w51 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 52\n n = w49 ^ w44 ^ w38 ^ w36;\n w52 = (n << 1) | (n >>> 31);\n t = (w52 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 53\n n = w50 ^ w45 ^ w39 ^ w37;\n w53 = (n << 1) | (n >>> 31);\n t = (w53 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 54\n n = w51 ^ w46 ^ w40 ^ w38;\n w54 = (n << 1) | (n >>> 31);\n t = (w54 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 55\n n = w52 ^ w47 ^ w41 ^ w39;\n w55 = (n << 1) | (n >>> 31);\n t = (w55 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 56\n n = w53 ^ w48 ^ w42 ^ w40;\n w56 = (n << 1) | (n >>> 31);\n t = (w56 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 57\n n = w54 ^ w49 ^ w43 ^ w41;\n w57 = (n << 1) | (n >>> 31);\n t = (w57 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 58\n n = w55 ^ w50 ^ w44 ^ w42;\n w58 = (n << 1) | (n >>> 31);\n t = (w58 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 59\n n = w56 ^ w51 ^ w45 ^ w43;\n w59 = (n << 1) | (n >>> 31);\n t = (w59 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 60\n n = w57 ^ w52 ^ w46 ^ w44;\n w60 = (n << 1) | (n >>> 31);\n t = (w60 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 61\n n = w58 ^ w53 ^ w47 ^ w45;\n w61 = (n << 1) | (n >>> 31);\n t = (w61 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 62\n n = w59 ^ w54 ^ w48 ^ w46;\n w62 = (n << 1) | (n >>> 31);\n t = (w62 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 63\n n = w60 ^ w55 ^ w49 ^ w47;\n w63 = (n << 1) | (n >>> 31);\n t = (w63 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 64\n n = w61 ^ w56 ^ w50 ^ w48;\n w64 = (n << 1) | (n >>> 31);\n t = (w64 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 65\n n = w62 ^ w57 ^ w51 ^ w49;\n w65 = (n << 1) | (n >>> 31);\n t = (w65 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 66\n n = w63 ^ w58 ^ w52 ^ w50;\n w66 = (n << 1) | (n >>> 31);\n t = (w66 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 67\n n = w64 ^ w59 ^ w53 ^ w51;\n w67 = (n << 1) | (n >>> 31);\n t = (w67 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 68\n n = w65 ^ w60 ^ w54 ^ w52;\n w68 = (n << 1) | (n >>> 31);\n t = (w68 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 69\n n = w66 ^ w61 ^ w55 ^ w53;\n w69 = (n << 1) | (n >>> 31);\n t = (w69 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 70\n n = w67 ^ w62 ^ w56 ^ w54;\n w70 = (n << 1) | (n >>> 31);\n t = (w70 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 71\n n = w68 ^ w63 ^ w57 ^ w55;\n w71 = (n << 1) | (n >>> 31);\n t = (w71 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 72\n n = w69 ^ w64 ^ w58 ^ w56;\n w72 = (n << 1) | (n >>> 31);\n t = (w72 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 73\n n = w70 ^ w65 ^ w59 ^ w57;\n w73 = (n << 1) | (n >>> 31);\n t = (w73 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 74\n n = w71 ^ w66 ^ w60 ^ w58;\n w74 = (n << 1) | (n >>> 31);\n t = (w74 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 75\n n = w72 ^ w67 ^ w61 ^ w59;\n w75 = (n << 1) | (n >>> 31);\n t = (w75 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 76\n n = w73 ^ w68 ^ w62 ^ w60;\n w76 = (n << 1) | (n >>> 31);\n t = (w76 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 77\n n = w74 ^ w69 ^ w63 ^ w61;\n w77 = (n << 1) | (n >>> 31);\n t = (w77 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 78\n n = w75 ^ w70 ^ w64 ^ w62;\n w78 = (n << 1) | (n >>> 31);\n t = (w78 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n // 79\n n = w76 ^ w71 ^ w65 ^ w63;\n w79 = (n << 1) | (n >>> 31);\n t = (w79 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n H0 = ( H0 + a )|0;\n H1 = ( H1 + b )|0;\n H2 = ( H2 + c )|0;\n H3 = ( H3 + d )|0;\n H4 = ( H4 + e )|0;\n\n }\n\n function _core_heap ( offset ) {\n offset = offset|0;\n\n _core(\n HEAP[offset|0]<<24 | HEAP[offset|1]<<16 | HEAP[offset|2]<<8 | HEAP[offset|3],\n HEAP[offset|4]<<24 | HEAP[offset|5]<<16 | HEAP[offset|6]<<8 | HEAP[offset|7],\n HEAP[offset|8]<<24 | HEAP[offset|9]<<16 | HEAP[offset|10]<<8 | HEAP[offset|11],\n HEAP[offset|12]<<24 | HEAP[offset|13]<<16 | HEAP[offset|14]<<8 | HEAP[offset|15],\n HEAP[offset|16]<<24 | HEAP[offset|17]<<16 | HEAP[offset|18]<<8 | HEAP[offset|19],\n HEAP[offset|20]<<24 | HEAP[offset|21]<<16 | HEAP[offset|22]<<8 | HEAP[offset|23],\n HEAP[offset|24]<<24 | HEAP[offset|25]<<16 | HEAP[offset|26]<<8 | HEAP[offset|27],\n HEAP[offset|28]<<24 | HEAP[offset|29]<<16 | HEAP[offset|30]<<8 | HEAP[offset|31],\n HEAP[offset|32]<<24 | HEAP[offset|33]<<16 | HEAP[offset|34]<<8 | HEAP[offset|35],\n HEAP[offset|36]<<24 | HEAP[offset|37]<<16 | HEAP[offset|38]<<8 | HEAP[offset|39],\n HEAP[offset|40]<<24 | HEAP[offset|41]<<16 | HEAP[offset|42]<<8 | HEAP[offset|43],\n HEAP[offset|44]<<24 | HEAP[offset|45]<<16 | HEAP[offset|46]<<8 | HEAP[offset|47],\n HEAP[offset|48]<<24 | HEAP[offset|49]<<16 | HEAP[offset|50]<<8 | HEAP[offset|51],\n HEAP[offset|52]<<24 | HEAP[offset|53]<<16 | HEAP[offset|54]<<8 | HEAP[offset|55],\n HEAP[offset|56]<<24 | HEAP[offset|57]<<16 | HEAP[offset|58]<<8 | HEAP[offset|59],\n HEAP[offset|60]<<24 | HEAP[offset|61]<<16 | HEAP[offset|62]<<8 | HEAP[offset|63]\n );\n }\n\n // offset — multiple of 32\n function _state_to_heap ( output ) {\n output = output|0;\n\n HEAP[output|0] = H0>>>24;\n HEAP[output|1] = H0>>>16&255;\n HEAP[output|2] = H0>>>8&255;\n HEAP[output|3] = H0&255;\n HEAP[output|4] = H1>>>24;\n HEAP[output|5] = H1>>>16&255;\n HEAP[output|6] = H1>>>8&255;\n HEAP[output|7] = H1&255;\n HEAP[output|8] = H2>>>24;\n HEAP[output|9] = H2>>>16&255;\n HEAP[output|10] = H2>>>8&255;\n HEAP[output|11] = H2&255;\n HEAP[output|12] = H3>>>24;\n HEAP[output|13] = H3>>>16&255;\n HEAP[output|14] = H3>>>8&255;\n HEAP[output|15] = H3&255;\n HEAP[output|16] = H4>>>24;\n HEAP[output|17] = H4>>>16&255;\n HEAP[output|18] = H4>>>8&255;\n HEAP[output|19] = H4&255;\n }\n\n function reset () {\n H0 = 0x67452301;\n H1 = 0xefcdab89;\n H2 = 0x98badcfe;\n H3 = 0x10325476;\n H4 = 0xc3d2e1f0;\n TOTAL0 = TOTAL1 = 0;\n }\n\n function init ( h0, h1, h2, h3, h4, total0, total1 ) {\n h0 = h0|0;\n h1 = h1|0;\n h2 = h2|0;\n h3 = h3|0;\n h4 = h4|0;\n total0 = total0|0;\n total1 = total1|0;\n\n H0 = h0;\n H1 = h1;\n H2 = h2;\n H3 = h3;\n H4 = h4;\n TOTAL0 = total0;\n TOTAL1 = total1;\n }\n\n // offset — multiple of 64\n function process ( offset, length ) {\n offset = offset|0;\n length = length|0;\n\n var hashed = 0;\n\n if ( offset & 63 )\n return -1;\n\n while ( (length|0) >= 64 ) {\n _core_heap(offset);\n\n offset = ( offset + 64 )|0;\n length = ( length - 64 )|0;\n\n hashed = ( hashed + 64 )|0;\n }\n\n TOTAL0 = ( TOTAL0 + hashed )|0;\n if ( TOTAL0>>>0 < hashed>>>0 ) TOTAL1 = ( TOTAL1 + 1 )|0;\n\n return hashed|0;\n }\n\n // offset — multiple of 64\n // output — multiple of 32\n function finish ( offset, length, output ) {\n offset = offset|0;\n length = length|0;\n output = output|0;\n\n var hashed = 0,\n i = 0;\n\n if ( offset & 63 )\n return -1;\n\n if ( ~output )\n if ( output & 31 )\n return -1;\n\n if ( (length|0) >= 64 ) {\n hashed = process( offset, length )|0;\n if ( (hashed|0) == -1 )\n return -1;\n\n offset = ( offset + hashed )|0;\n length = ( length - hashed )|0;\n }\n\n hashed = ( hashed + length )|0;\n TOTAL0 = ( TOTAL0 + length )|0;\n if ( TOTAL0>>>0 < length>>>0 ) TOTAL1 = (TOTAL1 + 1)|0;\n\n HEAP[offset|length] = 0x80;\n\n if ( (length|0) >= 56 ) {\n for ( i = (length+1)|0; (i|0) < 64; i = (i+1)|0 )\n HEAP[offset|i] = 0x00;\n _core_heap(offset);\n\n length = 0;\n\n HEAP[offset|0] = 0;\n }\n\n for ( i = (length+1)|0; (i|0) < 59; i = (i+1)|0 )\n HEAP[offset|i] = 0;\n\n HEAP[offset|56] = TOTAL1>>>21&255;\n HEAP[offset|57] = TOTAL1>>>13&255;\n HEAP[offset|58] = TOTAL1>>>5&255;\n HEAP[offset|59] = TOTAL1<<3&255 | TOTAL0>>>29;\n HEAP[offset|60] = TOTAL0>>>21&255;\n HEAP[offset|61] = TOTAL0>>>13&255;\n HEAP[offset|62] = TOTAL0>>>5&255;\n HEAP[offset|63] = TOTAL0<<3&255;\n _core_heap(offset);\n\n if ( ~output )\n _state_to_heap(output);\n\n return hashed|0;\n }\n\n function hmac_reset () {\n H0 = I0;\n H1 = I1;\n H2 = I2;\n H3 = I3;\n H4 = I4;\n TOTAL0 = 64;\n TOTAL1 = 0;\n }\n\n function _hmac_opad () {\n H0 = O0;\n H1 = O1;\n H2 = O2;\n H3 = O3;\n H4 = O4;\n TOTAL0 = 64;\n TOTAL1 = 0;\n }\n\n function hmac_init ( p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ) {\n p0 = p0|0;\n p1 = p1|0;\n p2 = p2|0;\n p3 = p3|0;\n p4 = p4|0;\n p5 = p5|0;\n p6 = p6|0;\n p7 = p7|0;\n p8 = p8|0;\n p9 = p9|0;\n p10 = p10|0;\n p11 = p11|0;\n p12 = p12|0;\n p13 = p13|0;\n p14 = p14|0;\n p15 = p15|0;\n\n // opad\n reset();\n _core(\n p0 ^ 0x5c5c5c5c,\n p1 ^ 0x5c5c5c5c,\n p2 ^ 0x5c5c5c5c,\n p3 ^ 0x5c5c5c5c,\n p4 ^ 0x5c5c5c5c,\n p5 ^ 0x5c5c5c5c,\n p6 ^ 0x5c5c5c5c,\n p7 ^ 0x5c5c5c5c,\n p8 ^ 0x5c5c5c5c,\n p9 ^ 0x5c5c5c5c,\n p10 ^ 0x5c5c5c5c,\n p11 ^ 0x5c5c5c5c,\n p12 ^ 0x5c5c5c5c,\n p13 ^ 0x5c5c5c5c,\n p14 ^ 0x5c5c5c5c,\n p15 ^ 0x5c5c5c5c\n );\n O0 = H0;\n O1 = H1;\n O2 = H2;\n O3 = H3;\n O4 = H4;\n\n // ipad\n reset();\n _core(\n p0 ^ 0x36363636,\n p1 ^ 0x36363636,\n p2 ^ 0x36363636,\n p3 ^ 0x36363636,\n p4 ^ 0x36363636,\n p5 ^ 0x36363636,\n p6 ^ 0x36363636,\n p7 ^ 0x36363636,\n p8 ^ 0x36363636,\n p9 ^ 0x36363636,\n p10 ^ 0x36363636,\n p11 ^ 0x36363636,\n p12 ^ 0x36363636,\n p13 ^ 0x36363636,\n p14 ^ 0x36363636,\n p15 ^ 0x36363636\n );\n I0 = H0;\n I1 = H1;\n I2 = H2;\n I3 = H3;\n I4 = H4;\n\n TOTAL0 = 64;\n TOTAL1 = 0;\n }\n\n // offset — multiple of 64\n // output — multiple of 32\n function hmac_finish ( offset, length, output ) {\n offset = offset|0;\n length = length|0;\n output = output|0;\n\n var t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, hashed = 0;\n\n if ( offset & 63 )\n return -1;\n\n if ( ~output )\n if ( output & 31 )\n return -1;\n\n hashed = finish( offset, length, -1 )|0;\n t0 = H0, t1 = H1, t2 = H2, t3 = H3, t4 = H4;\n\n _hmac_opad();\n _core( t0, t1, t2, t3, t4, 0x80000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 672 );\n\n if ( ~output )\n _state_to_heap(output);\n\n return hashed|0;\n }\n\n // salt is assumed to be already processed\n // offset — multiple of 64\n // output — multiple of 32\n function pbkdf2_generate_block ( offset, length, block, count, output ) {\n offset = offset|0;\n length = length|0;\n block = block|0;\n count = count|0;\n output = output|0;\n\n var h0 = 0, h1 = 0, h2 = 0, h3 = 0, h4 = 0,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0;\n\n if ( offset & 63 )\n return -1;\n\n if ( ~output )\n if ( output & 31 )\n return -1;\n\n // pad block number into heap\n // FIXME probable OOB write\n HEAP[(offset+length)|0] = block>>>24;\n HEAP[(offset+length+1)|0] = block>>>16&255;\n HEAP[(offset+length+2)|0] = block>>>8&255;\n HEAP[(offset+length+3)|0] = block&255;\n\n // finish first iteration\n hmac_finish( offset, (length+4)|0, -1 )|0;\n h0 = t0 = H0, h1 = t1 = H1, h2 = t2 = H2, h3 = t3 = H3, h4 = t4 = H4;\n count = (count-1)|0;\n\n // perform the rest iterations\n while ( (count|0) > 0 ) {\n hmac_reset();\n _core( t0, t1, t2, t3, t4, 0x80000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 672 );\n t0 = H0, t1 = H1, t2 = H2, t3 = H3, t4 = H4;\n\n _hmac_opad();\n _core( t0, t1, t2, t3, t4, 0x80000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 672 );\n t0 = H0, t1 = H1, t2 = H2, t3 = H3, t4 = H4;\n\n h0 = h0 ^ H0;\n h1 = h1 ^ H1;\n h2 = h2 ^ H2;\n h3 = h3 ^ H3;\n h4 = h4 ^ H4;\n\n count = (count-1)|0;\n }\n\n H0 = h0;\n H1 = h1;\n H2 = h2;\n H3 = h3;\n H4 = h4;\n\n if ( ~output )\n _state_to_heap(output);\n\n return 0;\n }\n\n return {\n // SHA1\n reset: reset,\n init: init,\n process: process,\n finish: finish,\n\n // HMAC-SHA1\n hmac_reset: hmac_reset,\n hmac_init: hmac_init,\n hmac_finish: hmac_finish,\n\n // PBKDF2-HMAC-SHA1\n pbkdf2_generate_block: pbkdf2_generate_block\n }\n};\n\nclass Hash {\n constructor() {\n this.pos = 0;\n this.len = 0;\n }\n reset() {\n this.result = null;\n this.pos = 0;\n this.len = 0;\n this.asm.reset();\n return this;\n }\n process(data) {\n if (this.result !== null)\n throw new IllegalStateError('state must be reset before processing new data');\n let asm = this.asm;\n let heap = this.heap;\n let hpos = this.pos;\n let hlen = this.len;\n let dpos = 0;\n let dlen = data.length;\n let wlen = 0;\n while (dlen > 0) {\n wlen = _heap_write(heap, hpos + hlen, data, dpos, dlen);\n hlen += wlen;\n dpos += wlen;\n dlen -= wlen;\n wlen = asm.process(hpos, hlen);\n hpos += wlen;\n hlen -= wlen;\n if (!hlen)\n hpos = 0;\n }\n this.pos = hpos;\n this.len = hlen;\n return this;\n }\n finish() {\n if (this.result !== null)\n throw new IllegalStateError('state must be reset before processing new data');\n this.asm.finish(this.pos, this.len, 0);\n this.result = new Uint8Array(this.HASH_SIZE);\n this.result.set(this.heap.subarray(0, this.HASH_SIZE));\n this.pos = 0;\n this.len = 0;\n return this;\n }\n}\n\nconst _sha1_block_size = 64;\nconst _sha1_hash_size = 20;\nclass Sha1 extends Hash {\n constructor() {\n super();\n this.NAME = 'sha1';\n this.BLOCK_SIZE = _sha1_block_size;\n this.HASH_SIZE = _sha1_hash_size;\n this.heap = _heap_init();\n this.asm = sha1_asm({ Uint8Array: Uint8Array }, null, this.heap.buffer);\n this.reset();\n }\n}\nSha1.NAME = 'sha1';\n\nvar sha256_asm = function ( stdlib, foreign, buffer ) {\n \"use asm\";\n\n // SHA256 state\n var H0 = 0, H1 = 0, H2 = 0, H3 = 0, H4 = 0, H5 = 0, H6 = 0, H7 = 0,\n TOTAL0 = 0, TOTAL1 = 0;\n\n // HMAC state\n var I0 = 0, I1 = 0, I2 = 0, I3 = 0, I4 = 0, I5 = 0, I6 = 0, I7 = 0,\n O0 = 0, O1 = 0, O2 = 0, O3 = 0, O4 = 0, O5 = 0, O6 = 0, O7 = 0;\n\n // I/O buffer\n var HEAP = new stdlib.Uint8Array(buffer);\n\n function _core ( w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15 ) {\n w0 = w0|0;\n w1 = w1|0;\n w2 = w2|0;\n w3 = w3|0;\n w4 = w4|0;\n w5 = w5|0;\n w6 = w6|0;\n w7 = w7|0;\n w8 = w8|0;\n w9 = w9|0;\n w10 = w10|0;\n w11 = w11|0;\n w12 = w12|0;\n w13 = w13|0;\n w14 = w14|0;\n w15 = w15|0;\n\n var a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0;\n\n a = H0;\n b = H1;\n c = H2;\n d = H3;\n e = H4;\n f = H5;\n g = H6;\n h = H7;\n \n // 0\n h = ( w0 + h + ( e>>>6 ^ e>>>11 ^ e>>>25 ^ e<<26 ^ e<<21 ^ e<<7 ) + ( g ^ e & (f^g) ) + 0x428a2f98 )|0;\n d = ( d + h )|0;\n h = ( h + ( (a & b) ^ ( c & (a ^ b) ) ) + ( a>>>2 ^ a>>>13 ^ a>>>22 ^ a<<30 ^ a<<19 ^ a<<10 ) )|0;\n\n // 1\n g = ( w1 + g + ( d>>>6 ^ d>>>11 ^ d>>>25 ^ d<<26 ^ d<<21 ^ d<<7 ) + ( f ^ d & (e^f) ) + 0x71374491 )|0;\n c = ( c + g )|0;\n g = ( g + ( (h & a) ^ ( b & (h ^ a) ) ) + ( h>>>2 ^ h>>>13 ^ h>>>22 ^ h<<30 ^ h<<19 ^ h<<10 ) )|0;\n\n // 2\n f = ( w2 + f + ( c>>>6 ^ c>>>11 ^ c>>>25 ^ c<<26 ^ c<<21 ^ c<<7 ) + ( e ^ c & (d^e) ) + 0xb5c0fbcf )|0;\n b = ( b + f )|0;\n f = ( f + ( (g & h) ^ ( a & (g ^ h) ) ) + ( g>>>2 ^ g>>>13 ^ g>>>22 ^ g<<30 ^ g<<19 ^ g<<10 ) )|0;\n\n // 3\n e = ( w3 + e + ( b>>>6 ^ b>>>11 ^ b>>>25 ^ b<<26 ^ b<<21 ^ b<<7 ) + ( d ^ b & (c^d) ) + 0xe9b5dba5 )|0;\n a = ( a + e )|0;\n e = ( e + ( (f & g) ^ ( h & (f ^ g) ) ) + ( f>>>2 ^ f>>>13 ^ f>>>22 ^ f<<30 ^ f<<19 ^ f<<10 ) )|0;\n\n // 4\n d = ( w4 + d + ( a>>>6 ^ a>>>11 ^ a>>>25 ^ a<<26 ^ a<<21 ^ a<<7 ) + ( c ^ a & (b^c) ) + 0x3956c25b )|0;\n h = ( h + d )|0;\n d = ( d + ( (e & f) ^ ( g & (e ^ f) ) ) + ( e>>>2 ^ e>>>13 ^ e>>>22 ^ e<<30 ^ e<<19 ^ e<<10 ) )|0;\n\n // 5\n c = ( w5 + c + ( h>>>6 ^ h>>>11 ^ h>>>25 ^ h<<26 ^ h<<21 ^ h<<7 ) + ( b ^ h & (a^b) ) + 0x59f111f1 )|0;\n g = ( g + c )|0;\n c = ( c + ( (d & e) ^ ( f & (d ^ e) ) ) + ( d>>>2 ^ d>>>13 ^ d>>>22 ^ d<<30 ^ d<<19 ^ d<<10 ) )|0;\n\n // 6\n b = ( w6 + b + ( g>>>6 ^ g>>>11 ^ g>>>25 ^ g<<26 ^ g<<21 ^ g<<7 ) + ( a ^ g & (h^a) ) + 0x923f82a4 )|0;\n f = ( f + b )|0;\n b = ( b + ( (c & d) ^ ( e & (c ^ d) ) ) + ( c>>>2 ^ c>>>13 ^ c>>>22 ^ c<<30 ^ c<<19 ^ c<<10 ) )|0;\n\n // 7\n a = ( w7 + a + ( f>>>6 ^ f>>>11 ^ f>>>25 ^ f<<26 ^ f<<21 ^ f<<7 ) + ( h ^ f & (g^h) ) + 0xab1c5ed5 )|0;\n e = ( e + a )|0;\n a = ( a + ( (b & c) ^ ( d & (b ^ c) ) ) + ( b>>>2 ^ b>>>13 ^ b>>>22 ^ b<<30 ^ b<<19 ^ b<<10 ) )|0;\n\n // 8\n h = ( w8 + h + ( e>>>6 ^ e>>>11 ^ e>>>25 ^ e<<26 ^ e<<21 ^ e<<7 ) + ( g ^ e & (f^g) ) + 0xd807aa98 )|0;\n d = ( d + h )|0;\n h = ( h + ( (a & b) ^ ( c & (a ^ b) ) ) + ( a>>>2 ^ a>>>13 ^ a>>>22 ^ a<<30 ^ a<<19 ^ a<<10 ) )|0;\n\n // 9\n g = ( w9 + g + ( d>>>6 ^ d>>>11 ^ d>>>25 ^ d<<26 ^ d<<21 ^ d<<7 ) + ( f ^ d & (e^f) ) + 0x12835b01 )|0;\n c = ( c + g )|0;\n g = ( g + ( (h & a) ^ ( b & (h ^ a) ) ) + ( h>>>2 ^ h>>>13 ^ h>>>22 ^ h<<30 ^ h<<19 ^ h<<10 ) )|0;\n\n // 10\n f = ( w10 + f + ( c>>>6 ^ c>>>11 ^ c>>>25 ^ c<<26 ^ c<<21 ^ c<<7 ) + ( e ^ c & (d^e) ) + 0x243185be )|0;\n b = ( b + f )|0;\n f = ( f + ( (g & h) ^ ( a & (g ^ h) ) ) + ( g>>>2 ^ g>>>13 ^ g>>>22 ^ g<<30 ^ g<<19 ^ g<<10 ) )|0;\n\n // 11\n e = ( w11 + e + ( b>>>6 ^ b>>>11 ^ b>>>25 ^ b<<26 ^ b<<21 ^ b<<7 ) + ( d ^ b & (c^d) ) + 0x550c7dc3 )|0;\n a = ( a + e )|0;\n e = ( e + ( (f & g) ^ ( h & (f ^ g) ) ) + ( f>>>2 ^ f>>>13 ^ f>>>22 ^ f<<30 ^ f<<19 ^ f<<10 ) )|0;\n\n // 12\n d = ( w12 + d + ( a>>>6 ^ a>>>11 ^ a>>>25 ^ a<<26 ^ a<<21 ^ a<<7 ) + ( c ^ a & (b^c) ) + 0x72be5d74 )|0;\n h = ( h + d )|0;\n d = ( d + ( (e & f) ^ ( g & (e ^ f) ) ) + ( e>>>2 ^ e>>>13 ^ e>>>22 ^ e<<30 ^ e<<19 ^ e<<10 ) )|0;\n\n // 13\n c = ( w13 + c + ( h>>>6 ^ h>>>11 ^ h>>>25 ^ h<<26 ^ h<<21 ^ h<<7 ) + ( b ^ h & (a^b) ) + 0x80deb1fe )|0;\n g = ( g + c )|0;\n c = ( c + ( (d & e) ^ ( f & (d ^ e) ) ) + ( d>>>2 ^ d>>>13 ^ d>>>22 ^ d<<30 ^ d<<19 ^ d<<10 ) )|0;\n\n // 14\n b = ( w14 + b + ( g>>>6 ^ g>>>11 ^ g>>>25 ^ g<<26 ^ g<<21 ^ g<<7 ) + ( a ^ g & (h^a) ) + 0x9bdc06a7 )|0;\n f = ( f + b )|0;\n b = ( b + ( (c & d) ^ ( e & (c ^ d) ) ) + ( c>>>2 ^ c>>>13 ^ c>>>22 ^ c<<30 ^ c<<19 ^ c<<10 ) )|0;\n\n // 15\n a = ( w15 + a + ( f>>>6 ^ f>>>11 ^ f>>>25 ^ f<<26 ^ f<<21 ^ f<<7 ) + ( h ^ f & (g^h) ) + 0xc19bf174 )|0;\n e = ( e + a )|0;\n a = ( a + ( (b & c) ^ ( d & (b ^ c) ) ) + ( b>>>2 ^ b>>>13 ^ b>>>22 ^ b<<30 ^ b<<19 ^ b<<10 ) )|0;\n\n // 16\n w0 = ( ( w1>>>7 ^ w1>>>18 ^ w1>>>3 ^ w1<<25 ^ w1<<14 ) + ( w14>>>17 ^ w14>>>19 ^ w14>>>10 ^ w14<<15 ^ w14<<13 ) + w0 + w9 )|0;\n h = ( w0 + h + ( e>>>6 ^ e>>>11 ^ e>>>25 ^ e<<26 ^ e<<21 ^ e<<7 ) + ( g ^ e & (f^g) ) + 0xe49b69c1 )|0;\n d = ( d + h )|0;\n h = ( h + ( (a & b) ^ ( c & (a ^ b) ) ) + ( a>>>2 ^ a>>>13 ^ a>>>22 ^ a<<30 ^ a<<19 ^ a<<10 ) )|0;\n\n // 17\n w1 = ( ( w2>>>7 ^ w2>>>18 ^ w2>>>3 ^ w2<<25 ^ w2<<14 ) + ( w15>>>17 ^ w15>>>19 ^ w15>>>10 ^ w15<<15 ^ w15<<13 ) + w1 + w10 )|0;\n g = ( w1 + g + ( d>>>6 ^ d>>>11 ^ d>>>25 ^ d<<26 ^ d<<21 ^ d<<7 ) + ( f ^ d & (e^f) ) + 0xefbe4786 )|0;\n c = ( c + g )|0;\n g = ( g + ( (h & a) ^ ( b & (h ^ a) ) ) + ( h>>>2 ^ h>>>13 ^ h>>>22 ^ h<<30 ^ h<<19 ^ h<<10 ) )|0;\n\n // 18\n w2 = ( ( w3>>>7 ^ w3>>>18 ^ w3>>>3 ^ w3<<25 ^ w3<<14 ) + ( w0>>>17 ^ w0>>>19 ^ w0>>>10 ^ w0<<15 ^ w0<<13 ) + w2 + w11 )|0;\n f = ( w2 + f + ( c>>>6 ^ c>>>11 ^ c>>>25 ^ c<<26 ^ c<<21 ^ c<<7 ) + ( e ^ c & (d^e) ) + 0x0fc19dc6 )|0;\n b = ( b + f )|0;\n f = ( f + ( (g & h) ^ ( a & (g ^ h) ) ) + ( g>>>2 ^ g>>>13 ^ g>>>22 ^ g<<30 ^ g<<19 ^ g<<10 ) )|0;\n\n // 19\n w3 = ( ( w4>>>7 ^ w4>>>18 ^ w4>>>3 ^ w4<<25 ^ w4<<14 ) + ( w1>>>17 ^ w1>>>19 ^ w1>>>10 ^ w1<<15 ^ w1<<13 ) + w3 + w12 )|0;\n e = ( w3 + e + ( b>>>6 ^ b>>>11 ^ b>>>25 ^ b<<26 ^ b<<21 ^ b<<7 ) + ( d ^ b & (c^d) ) + 0x240ca1cc )|0;\n a = ( a + e )|0;\n e = ( e + ( (f & g) ^ ( h & (f ^ g) ) ) + ( f>>>2 ^ f>>>13 ^ f>>>22 ^ f<<30 ^ f<<19 ^ f<<10 ) )|0;\n\n // 20\n w4 = ( ( w5>>>7 ^ w5>>>18 ^ w5>>>3 ^ w5<<25 ^ w5<<14 ) + ( w2>>>17 ^ w2>>>19 ^ w2>>>10 ^ w2<<15 ^ w2<<13 ) + w4 + w13 )|0;\n d = ( w4 + d + ( a>>>6 ^ a>>>11 ^ a>>>25 ^ a<<26 ^ a<<21 ^ a<<7 ) + ( c ^ a & (b^c) ) + 0x2de92c6f )|0;\n h = ( h + d )|0;\n d = ( d + ( (e & f) ^ ( g & (e ^ f) ) ) + ( e>>>2 ^ e>>>13 ^ e>>>22 ^ e<<30 ^ e<<19 ^ e<<10 ) )|0;\n\n // 21\n w5 = ( ( w6>>>7 ^ w6>>>18 ^ w6>>>3 ^ w6<<25 ^ w6<<14 ) + ( w3>>>17 ^ w3>>>19 ^ w3>>>10 ^ w3<<15 ^ w3<<13 ) + w5 + w14 )|0;\n c = ( w5 + c + ( h>>>6 ^ h>>>11 ^ h>>>25 ^ h<<26 ^ h<<21 ^ h<<7 ) + ( b ^ h & (a^b) ) + 0x4a7484aa )|0;\n g = ( g + c )|0;\n c = ( c + ( (d & e) ^ ( f & (d ^ e) ) ) + ( d>>>2 ^ d>>>13 ^ d>>>22 ^ d<<30 ^ d<<19 ^ d<<10 ) )|0;\n\n // 22\n w6 = ( ( w7>>>7 ^ w7>>>18 ^ w7>>>3 ^ w7<<25 ^ w7<<14 ) + ( w4>>>17 ^ w4>>>19 ^ w4>>>10 ^ w4<<15 ^ w4<<13 ) + w6 + w15 )|0;\n b = ( w6 + b + ( g>>>6 ^ g>>>11 ^ g>>>25 ^ g<<26 ^ g<<21 ^ g<<7 ) + ( a ^ g & (h^a) ) + 0x5cb0a9dc )|0;\n f = ( f + b )|0;\n b = ( b + ( (c & d) ^ ( e & (c ^ d) ) ) + ( c>>>2 ^ c>>>13 ^ c>>>22 ^ c<<30 ^ c<<19 ^ c<<10 ) )|0;\n\n // 23\n w7 = ( ( w8>>>7 ^ w8>>>18 ^ w8>>>3 ^ w8<<25 ^ w8<<14 ) + ( w5>>>17 ^ w5>>>19 ^ w5>>>10 ^ w5<<15 ^ w5<<13 ) + w7 + w0 )|0;\n a = ( w7 + a + ( f>>>6 ^ f>>>11 ^ f>>>25 ^ f<<26 ^ f<<21 ^ f<<7 ) + ( h ^ f & (g^h) ) + 0x76f988da )|0;\n e = ( e + a )|0;\n a = ( a + ( (b & c) ^ ( d & (b ^ c) ) ) + ( b>>>2 ^ b>>>13 ^ b>>>22 ^ b<<30 ^ b<<19 ^ b<<10 ) )|0;\n\n // 24\n w8 = ( ( w9>>>7 ^ w9>>>18 ^ w9>>>3 ^ w9<<25 ^ w9<<14 ) + ( w6>>>17 ^ w6>>>19 ^ w6>>>10 ^ w6<<15 ^ w6<<13 ) + w8 + w1 )|0;\n h = ( w8 + h + ( e>>>6 ^ e>>>11 ^ e>>>25 ^ e<<26 ^ e<<21 ^ e<<7 ) + ( g ^ e & (f^g) ) + 0x983e5152 )|0;\n d = ( d + h )|0;\n h = ( h + ( (a & b) ^ ( c & (a ^ b) ) ) + ( a>>>2 ^ a>>>13 ^ a>>>22 ^ a<<30 ^ a<<19 ^ a<<10 ) )|0;\n\n // 25\n w9 = ( ( w10>>>7 ^ w10>>>18 ^ w10>>>3 ^ w10<<25 ^ w10<<14 ) + ( w7>>>17 ^ w7>>>19 ^ w7>>>10 ^ w7<<15 ^ w7<<13 ) + w9 + w2 )|0;\n g = ( w9 + g + ( d>>>6 ^ d>>>11 ^ d>>>25 ^ d<<26 ^ d<<21 ^ d<<7 ) + ( f ^ d & (e^f) ) + 0xa831c66d )|0;\n c = ( c + g )|0;\n g = ( g + ( (h & a) ^ ( b & (h ^ a) ) ) + ( h>>>2 ^ h>>>13 ^ h>>>22 ^ h<<30 ^ h<<19 ^ h<<10 ) )|0;\n\n // 26\n w10 = ( ( w11>>>7 ^ w11>>>18 ^ w11>>>3 ^ w11<<25 ^ w11<<14 ) + ( w8>>>17 ^ w8>>>19 ^ w8>>>10 ^ w8<<15 ^ w8<<13 ) + w10 + w3 )|0;\n f = ( w10 + f + ( c>>>6 ^ c>>>11 ^ c>>>25 ^ c<<26 ^ c<<21 ^ c<<7 ) + ( e ^ c & (d^e) ) + 0xb00327c8 )|0;\n b = ( b + f )|0;\n f = ( f + ( (g & h) ^ ( a & (g ^ h) ) ) + ( g>>>2 ^ g>>>13 ^ g>>>22 ^ g<<30 ^ g<<19 ^ g<<10 ) )|0;\n\n // 27\n w11 = ( ( w12>>>7 ^ w12>>>18 ^ w12>>>3 ^ w12<<25 ^ w12<<14 ) + ( w9>>>17 ^ w9>>>19 ^ w9>>>10 ^ w9<<15 ^ w9<<13 ) + w11 + w4 )|0;\n e = ( w11 + e + ( b>>>6 ^ b>>>11 ^ b>>>25 ^ b<<26 ^ b<<21 ^ b<<7 ) + ( d ^ b & (c^d) ) + 0xbf597fc7 )|0;\n a = ( a + e )|0;\n e = ( e + ( (f & g) ^ ( h & (f ^ g) ) ) + ( f>>>2 ^ f>>>13 ^ f>>>22 ^ f<<30 ^ f<<19 ^ f<<10 ) )|0;\n\n // 28\n w12 = ( ( w13>>>7 ^ w13>>>18 ^ w13>>>3 ^ w13<<25 ^ w13<<14 ) + ( w10>>>17 ^ w10>>>19 ^ w10>>>10 ^ w10<<15 ^ w10<<13 ) + w12 + w5 )|0;\n d = ( w12 + d + ( a>>>6 ^ a>>>11 ^ a>>>25 ^ a<<26 ^ a<<21 ^ a<<7 ) + ( c ^ a & (b^c) ) + 0xc6e00bf3 )|0;\n h = ( h + d )|0;\n d = ( d + ( (e & f) ^ ( g & (e ^ f) ) ) + ( e>>>2 ^ e>>>13 ^ e>>>22 ^ e<<30 ^ e<<19 ^ e<<10 ) )|0;\n\n // 29\n w13 = ( ( w14>>>7 ^ w14>>>18 ^ w14>>>3 ^ w14<<25 ^ w14<<14 ) + ( w11>>>17 ^ w11>>>19 ^ w11>>>10 ^ w11<<15 ^ w11<<13 ) + w13 + w6 )|0;\n c = ( w13 + c + ( h>>>6 ^ h>>>11 ^ h>>>25 ^ h<<26 ^ h<<21 ^ h<<7 ) + ( b ^ h & (a^b) ) + 0xd5a79147 )|0;\n g = ( g + c )|0;\n c = ( c + ( (d & e) ^ ( f & (d ^ e) ) ) + ( d>>>2 ^ d>>>13 ^ d>>>22 ^ d<<30 ^ d<<19 ^ d<<10 ) )|0;\n\n // 30\n w14 = ( ( w15>>>7 ^ w15>>>18 ^ w15>>>3 ^ w15<<25 ^ w15<<14 ) + ( w12>>>17 ^ w12>>>19 ^ w12>>>10 ^ w12<<15 ^ w12<<13 ) + w14 + w7 )|0;\n b = ( w14 + b + ( g>>>6 ^ g>>>11 ^ g>>>25 ^ g<<26 ^ g<<21 ^ g<<7 ) + ( a ^ g & (h^a) ) + 0x06ca6351 )|0;\n f = ( f + b )|0;\n b = ( b + ( (c & d) ^ ( e & (c ^ d) ) ) + ( c>>>2 ^ c>>>13 ^ c>>>22 ^ c<<30 ^ c<<19 ^ c<<10 ) )|0;\n\n // 31\n w15 = ( ( w0>>>7 ^ w0>>>18 ^ w0>>>3 ^ w0<<25 ^ w0<<14 ) + ( w13>>>17 ^ w13>>>19 ^ w13>>>10 ^ w13<<15 ^ w13<<13 ) + w15 + w8 )|0;\n a = ( w15 + a + ( f>>>6 ^ f>>>11 ^ f>>>25 ^ f<<26 ^ f<<21 ^ f<<7 ) + ( h ^ f & (g^h) ) + 0x14292967 )|0;\n e = ( e + a )|0;\n a = ( a + ( (b & c) ^ ( d & (b ^ c) ) ) + ( b>>>2 ^ b>>>13 ^ b>>>22 ^ b<<30 ^ b<<19 ^ b<<10 ) )|0;\n\n // 32\n w0 = ( ( w1>>>7 ^ w1>>>18 ^ w1>>>3 ^ w1<<25 ^ w1<<14 ) + ( w14>>>17 ^ w14>>>19 ^ w14>>>10 ^ w14<<15 ^ w14<<13 ) + w0 + w9 )|0;\n h = ( w0 + h + ( e>>>6 ^ e>>>11 ^ e>>>25 ^ e<<26 ^ e<<21 ^ e<<7 ) + ( g ^ e & (f^g) ) + 0x27b70a85 )|0;\n d = ( d + h )|0;\n h = ( h + ( (a & b) ^ ( c & (a ^ b) ) ) + ( a>>>2 ^ a>>>13 ^ a>>>22 ^ a<<30 ^ a<<19 ^ a<<10 ) )|0;\n\n // 33\n w1 = ( ( w2>>>7 ^ w2>>>18 ^ w2>>>3 ^ w2<<25 ^ w2<<14 ) + ( w15>>>17 ^ w15>>>19 ^ w15>>>10 ^ w15<<15 ^ w15<<13 ) + w1 + w10 )|0;\n g = ( w1 + g + ( d>>>6 ^ d>>>11 ^ d>>>25 ^ d<<26 ^ d<<21 ^ d<<7 ) + ( f ^ d & (e^f) ) + 0x2e1b2138 )|0;\n c = ( c + g )|0;\n g = ( g + ( (h & a) ^ ( b & (h ^ a) ) ) + ( h>>>2 ^ h>>>13 ^ h>>>22 ^ h<<30 ^ h<<19 ^ h<<10 ) )|0;\n\n // 34\n w2 = ( ( w3>>>7 ^ w3>>>18 ^ w3>>>3 ^ w3<<25 ^ w3<<14 ) + ( w0>>>17 ^ w0>>>19 ^ w0>>>10 ^ w0<<15 ^ w0<<13 ) + w2 + w11 )|0;\n f = ( w2 + f + ( c>>>6 ^ c>>>11 ^ c>>>25 ^ c<<26 ^ c<<21 ^ c<<7 ) + ( e ^ c & (d^e) ) + 0x4d2c6dfc )|0;\n b = ( b + f )|0;\n f = ( f + ( (g & h) ^ ( a & (g ^ h) ) ) + ( g>>>2 ^ g>>>13 ^ g>>>22 ^ g<<30 ^ g<<19 ^ g<<10 ) )|0;\n\n // 35\n w3 = ( ( w4>>>7 ^ w4>>>18 ^ w4>>>3 ^ w4<<25 ^ w4<<14 ) + ( w1>>>17 ^ w1>>>19 ^ w1>>>10 ^ w1<<15 ^ w1<<13 ) + w3 + w12 )|0;\n e = ( w3 + e + ( b>>>6 ^ b>>>11 ^ b>>>25 ^ b<<26 ^ b<<21 ^ b<<7 ) + ( d ^ b & (c^d) ) + 0x53380d13 )|0;\n a = ( a + e )|0;\n e = ( e + ( (f & g) ^ ( h & (f ^ g) ) ) + ( f>>>2 ^ f>>>13 ^ f>>>22 ^ f<<30 ^ f<<19 ^ f<<10 ) )|0;\n\n // 36\n w4 = ( ( w5>>>7 ^ w5>>>18 ^ w5>>>3 ^ w5<<25 ^ w5<<14 ) + ( w2>>>17 ^ w2>>>19 ^ w2>>>10 ^ w2<<15 ^ w2<<13 ) + w4 + w13 )|0;\n d = ( w4 + d + ( a>>>6 ^ a>>>11 ^ a>>>25 ^ a<<26 ^ a<<21 ^ a<<7 ) + ( c ^ a & (b^c) ) + 0x650a7354 )|0;\n h = ( h + d )|0;\n d = ( d + ( (e & f) ^ ( g & (e ^ f) ) ) + ( e>>>2 ^ e>>>13 ^ e>>>22 ^ e<<30 ^ e<<19 ^ e<<10 ) )|0;\n\n // 37\n w5 = ( ( w6>>>7 ^ w6>>>18 ^ w6>>>3 ^ w6<<25 ^ w6<<14 ) + ( w3>>>17 ^ w3>>>19 ^ w3>>>10 ^ w3<<15 ^ w3<<13 ) + w5 + w14 )|0;\n c = ( w5 + c + ( h>>>6 ^ h>>>11 ^ h>>>25 ^ h<<26 ^ h<<21 ^ h<<7 ) + ( b ^ h & (a^b) ) + 0x766a0abb )|0;\n g = ( g + c )|0;\n c = ( c + ( (d & e) ^ ( f & (d ^ e) ) ) + ( d>>>2 ^ d>>>13 ^ d>>>22 ^ d<<30 ^ d<<19 ^ d<<10 ) )|0;\n\n // 38\n w6 = ( ( w7>>>7 ^ w7>>>18 ^ w7>>>3 ^ w7<<25 ^ w7<<14 ) + ( w4>>>17 ^ w4>>>19 ^ w4>>>10 ^ w4<<15 ^ w4<<13 ) + w6 + w15 )|0;\n b = ( w6 + b + ( g>>>6 ^ g>>>11 ^ g>>>25 ^ g<<26 ^ g<<21 ^ g<<7 ) + ( a ^ g & (h^a) ) + 0x81c2c92e )|0;\n f = ( f + b )|0;\n b = ( b + ( (c & d) ^ ( e & (c ^ d) ) ) + ( c>>>2 ^ c>>>13 ^ c>>>22 ^ c<<30 ^ c<<19 ^ c<<10 ) )|0;\n\n // 39\n w7 = ( ( w8>>>7 ^ w8>>>18 ^ w8>>>3 ^ w8<<25 ^ w8<<14 ) + ( w5>>>17 ^ w5>>>19 ^ w5>>>10 ^ w5<<15 ^ w5<<13 ) + w7 + w0 )|0;\n a = ( w7 + a + ( f>>>6 ^ f>>>11 ^ f>>>25 ^ f<<26 ^ f<<21 ^ f<<7 ) + ( h ^ f & (g^h) ) + 0x92722c85 )|0;\n e = ( e + a )|0;\n a = ( a + ( (b & c) ^ ( d & (b ^ c) ) ) + ( b>>>2 ^ b>>>13 ^ b>>>22 ^ b<<30 ^ b<<19 ^ b<<10 ) )|0;\n\n // 40\n w8 = ( ( w9>>>7 ^ w9>>>18 ^ w9>>>3 ^ w9<<25 ^ w9<<14 ) + ( w6>>>17 ^ w6>>>19 ^ w6>>>10 ^ w6<<15 ^ w6<<13 ) + w8 + w1 )|0;\n h = ( w8 + h + ( e>>>6 ^ e>>>11 ^ e>>>25 ^ e<<26 ^ e<<21 ^ e<<7 ) + ( g ^ e & (f^g) ) + 0xa2bfe8a1 )|0;\n d = ( d + h )|0;\n h = ( h + ( (a & b) ^ ( c & (a ^ b) ) ) + ( a>>>2 ^ a>>>13 ^ a>>>22 ^ a<<30 ^ a<<19 ^ a<<10 ) )|0;\n\n // 41\n w9 = ( ( w10>>>7 ^ w10>>>18 ^ w10>>>3 ^ w10<<25 ^ w10<<14 ) + ( w7>>>17 ^ w7>>>19 ^ w7>>>10 ^ w7<<15 ^ w7<<13 ) + w9 + w2 )|0;\n g = ( w9 + g + ( d>>>6 ^ d>>>11 ^ d>>>25 ^ d<<26 ^ d<<21 ^ d<<7 ) + ( f ^ d & (e^f) ) + 0xa81a664b )|0;\n c = ( c + g )|0;\n g = ( g + ( (h & a) ^ ( b & (h ^ a) ) ) + ( h>>>2 ^ h>>>13 ^ h>>>22 ^ h<<30 ^ h<<19 ^ h<<10 ) )|0;\n\n // 42\n w10 = ( ( w11>>>7 ^ w11>>>18 ^ w11>>>3 ^ w11<<25 ^ w11<<14 ) + ( w8>>>17 ^ w8>>>19 ^ w8>>>10 ^ w8<<15 ^ w8<<13 ) + w10 + w3 )|0;\n f = ( w10 + f + ( c>>>6 ^ c>>>11 ^ c>>>25 ^ c<<26 ^ c<<21 ^ c<<7 ) + ( e ^ c & (d^e) ) + 0xc24b8b70 )|0;\n b = ( b + f )|0;\n f = ( f + ( (g & h) ^ ( a & (g ^ h) ) ) + ( g>>>2 ^ g>>>13 ^ g>>>22 ^ g<<30 ^ g<<19 ^ g<<10 ) )|0;\n\n // 43\n w11 = ( ( w12>>>7 ^ w12>>>18 ^ w12>>>3 ^ w12<<25 ^ w12<<14 ) + ( w9>>>17 ^ w9>>>19 ^ w9>>>10 ^ w9<<15 ^ w9<<13 ) + w11 + w4 )|0;\n e = ( w11 + e + ( b>>>6 ^ b>>>11 ^ b>>>25 ^ b<<26 ^ b<<21 ^ b<<7 ) + ( d ^ b & (c^d) ) + 0xc76c51a3 )|0;\n a = ( a + e )|0;\n e = ( e + ( (f & g) ^ ( h & (f ^ g) ) ) + ( f>>>2 ^ f>>>13 ^ f>>>22 ^ f<<30 ^ f<<19 ^ f<<10 ) )|0;\n\n // 44\n w12 = ( ( w13>>>7 ^ w13>>>18 ^ w13>>>3 ^ w13<<25 ^ w13<<14 ) + ( w10>>>17 ^ w10>>>19 ^ w10>>>10 ^ w10<<15 ^ w10<<13 ) + w12 + w5 )|0;\n d = ( w12 + d + ( a>>>6 ^ a>>>11 ^ a>>>25 ^ a<<26 ^ a<<21 ^ a<<7 ) + ( c ^ a & (b^c) ) + 0xd192e819 )|0;\n h = ( h + d )|0;\n d = ( d + ( (e & f) ^ ( g & (e ^ f) ) ) + ( e>>>2 ^ e>>>13 ^ e>>>22 ^ e<<30 ^ e<<19 ^ e<<10 ) )|0;\n\n // 45\n w13 = ( ( w14>>>7 ^ w14>>>18 ^ w14>>>3 ^ w14<<25 ^ w14<<14 ) + ( w11>>>17 ^ w11>>>19 ^ w11>>>10 ^ w11<<15 ^ w11<<13 ) + w13 + w6 )|0;\n c = ( w13 + c + ( h>>>6 ^ h>>>11 ^ h>>>25 ^ h<<26 ^ h<<21 ^ h<<7 ) + ( b ^ h & (a^b) ) + 0xd6990624 )|0;\n g = ( g + c )|0;\n c = ( c + ( (d & e) ^ ( f & (d ^ e) ) ) + ( d>>>2 ^ d>>>13 ^ d>>>22 ^ d<<30 ^ d<<19 ^ d<<10 ) )|0;\n\n // 46\n w14 = ( ( w15>>>7 ^ w15>>>18 ^ w15>>>3 ^ w15<<25 ^ w15<<14 ) + ( w12>>>17 ^ w12>>>19 ^ w12>>>10 ^ w12<<15 ^ w12<<13 ) + w14 + w7 )|0;\n b = ( w14 + b + ( g>>>6 ^ g>>>11 ^ g>>>25 ^ g<<26 ^ g<<21 ^ g<<7 ) + ( a ^ g & (h^a) ) + 0xf40e3585 )|0;\n f = ( f + b )|0;\n b = ( b + ( (c & d) ^ ( e & (c ^ d) ) ) + ( c>>>2 ^ c>>>13 ^ c>>>22 ^ c<<30 ^ c<<19 ^ c<<10 ) )|0;\n\n // 47\n w15 = ( ( w0>>>7 ^ w0>>>18 ^ w0>>>3 ^ w0<<25 ^ w0<<14 ) + ( w13>>>17 ^ w13>>>19 ^ w13>>>10 ^ w13<<15 ^ w13<<13 ) + w15 + w8 )|0;\n a = ( w15 + a + ( f>>>6 ^ f>>>11 ^ f>>>25 ^ f<<26 ^ f<<21 ^ f<<7 ) + ( h ^ f & (g^h) ) + 0x106aa070 )|0;\n e = ( e + a )|0;\n a = ( a + ( (b & c) ^ ( d & (b ^ c) ) ) + ( b>>>2 ^ b>>>13 ^ b>>>22 ^ b<<30 ^ b<<19 ^ b<<10 ) )|0;\n\n // 48\n w0 = ( ( w1>>>7 ^ w1>>>18 ^ w1>>>3 ^ w1<<25 ^ w1<<14 ) + ( w14>>>17 ^ w14>>>19 ^ w14>>>10 ^ w14<<15 ^ w14<<13 ) + w0 + w9 )|0;\n h = ( w0 + h + ( e>>>6 ^ e>>>11 ^ e>>>25 ^ e<<26 ^ e<<21 ^ e<<7 ) + ( g ^ e & (f^g) ) + 0x19a4c116 )|0;\n d = ( d + h )|0;\n h = ( h + ( (a & b) ^ ( c & (a ^ b) ) ) + ( a>>>2 ^ a>>>13 ^ a>>>22 ^ a<<30 ^ a<<19 ^ a<<10 ) )|0;\n\n // 49\n w1 = ( ( w2>>>7 ^ w2>>>18 ^ w2>>>3 ^ w2<<25 ^ w2<<14 ) + ( w15>>>17 ^ w15>>>19 ^ w15>>>10 ^ w15<<15 ^ w15<<13 ) + w1 + w10 )|0;\n g = ( w1 + g + ( d>>>6 ^ d>>>11 ^ d>>>25 ^ d<<26 ^ d<<21 ^ d<<7 ) + ( f ^ d & (e^f) ) + 0x1e376c08 )|0;\n c = ( c + g )|0;\n g = ( g + ( (h & a) ^ ( b & (h ^ a) ) ) + ( h>>>2 ^ h>>>13 ^ h>>>22 ^ h<<30 ^ h<<19 ^ h<<10 ) )|0;\n\n // 50\n w2 = ( ( w3>>>7 ^ w3>>>18 ^ w3>>>3 ^ w3<<25 ^ w3<<14 ) + ( w0>>>17 ^ w0>>>19 ^ w0>>>10 ^ w0<<15 ^ w0<<13 ) + w2 + w11 )|0;\n f = ( w2 + f + ( c>>>6 ^ c>>>11 ^ c>>>25 ^ c<<26 ^ c<<21 ^ c<<7 ) + ( e ^ c & (d^e) ) + 0x2748774c )|0;\n b = ( b + f )|0;\n f = ( f + ( (g & h) ^ ( a & (g ^ h) ) ) + ( g>>>2 ^ g>>>13 ^ g>>>22 ^ g<<30 ^ g<<19 ^ g<<10 ) )|0;\n\n // 51\n w3 = ( ( w4>>>7 ^ w4>>>18 ^ w4>>>3 ^ w4<<25 ^ w4<<14 ) + ( w1>>>17 ^ w1>>>19 ^ w1>>>10 ^ w1<<15 ^ w1<<13 ) + w3 + w12 )|0;\n e = ( w3 + e + ( b>>>6 ^ b>>>11 ^ b>>>25 ^ b<<26 ^ b<<21 ^ b<<7 ) + ( d ^ b & (c^d) ) + 0x34b0bcb5 )|0;\n a = ( a + e )|0;\n e = ( e + ( (f & g) ^ ( h & (f ^ g) ) ) + ( f>>>2 ^ f>>>13 ^ f>>>22 ^ f<<30 ^ f<<19 ^ f<<10 ) )|0;\n\n // 52\n w4 = ( ( w5>>>7 ^ w5>>>18 ^ w5>>>3 ^ w5<<25 ^ w5<<14 ) + ( w2>>>17 ^ w2>>>19 ^ w2>>>10 ^ w2<<15 ^ w2<<13 ) + w4 + w13 )|0;\n d = ( w4 + d + ( a>>>6 ^ a>>>11 ^ a>>>25 ^ a<<26 ^ a<<21 ^ a<<7 ) + ( c ^ a & (b^c) ) + 0x391c0cb3 )|0;\n h = ( h + d )|0;\n d = ( d + ( (e & f) ^ ( g & (e ^ f) ) ) + ( e>>>2 ^ e>>>13 ^ e>>>22 ^ e<<30 ^ e<<19 ^ e<<10 ) )|0;\n\n // 53\n w5 = ( ( w6>>>7 ^ w6>>>18 ^ w6>>>3 ^ w6<<25 ^ w6<<14 ) + ( w3>>>17 ^ w3>>>19 ^ w3>>>10 ^ w3<<15 ^ w3<<13 ) + w5 + w14 )|0;\n c = ( w5 + c + ( h>>>6 ^ h>>>11 ^ h>>>25 ^ h<<26 ^ h<<21 ^ h<<7 ) + ( b ^ h & (a^b) ) + 0x4ed8aa4a )|0;\n g = ( g + c )|0;\n c = ( c + ( (d & e) ^ ( f & (d ^ e) ) ) + ( d>>>2 ^ d>>>13 ^ d>>>22 ^ d<<30 ^ d<<19 ^ d<<10 ) )|0;\n\n // 54\n w6 = ( ( w7>>>7 ^ w7>>>18 ^ w7>>>3 ^ w7<<25 ^ w7<<14 ) + ( w4>>>17 ^ w4>>>19 ^ w4>>>10 ^ w4<<15 ^ w4<<13 ) + w6 + w15 )|0;\n b = ( w6 + b + ( g>>>6 ^ g>>>11 ^ g>>>25 ^ g<<26 ^ g<<21 ^ g<<7 ) + ( a ^ g & (h^a) ) + 0x5b9cca4f )|0;\n f = ( f + b )|0;\n b = ( b + ( (c & d) ^ ( e & (c ^ d) ) ) + ( c>>>2 ^ c>>>13 ^ c>>>22 ^ c<<30 ^ c<<19 ^ c<<10 ) )|0;\n\n // 55\n w7 = ( ( w8>>>7 ^ w8>>>18 ^ w8>>>3 ^ w8<<25 ^ w8<<14 ) + ( w5>>>17 ^ w5>>>19 ^ w5>>>10 ^ w5<<15 ^ w5<<13 ) + w7 + w0 )|0;\n a = ( w7 + a + ( f>>>6 ^ f>>>11 ^ f>>>25 ^ f<<26 ^ f<<21 ^ f<<7 ) + ( h ^ f & (g^h) ) + 0x682e6ff3 )|0;\n e = ( e + a )|0;\n a = ( a + ( (b & c) ^ ( d & (b ^ c) ) ) + ( b>>>2 ^ b>>>13 ^ b>>>22 ^ b<<30 ^ b<<19 ^ b<<10 ) )|0;\n\n // 56\n w8 = ( ( w9>>>7 ^ w9>>>18 ^ w9>>>3 ^ w9<<25 ^ w9<<14 ) + ( w6>>>17 ^ w6>>>19 ^ w6>>>10 ^ w6<<15 ^ w6<<13 ) + w8 + w1 )|0;\n h = ( w8 + h + ( e>>>6 ^ e>>>11 ^ e>>>25 ^ e<<26 ^ e<<21 ^ e<<7 ) + ( g ^ e & (f^g) ) + 0x748f82ee )|0;\n d = ( d + h )|0;\n h = ( h + ( (a & b) ^ ( c & (a ^ b) ) ) + ( a>>>2 ^ a>>>13 ^ a>>>22 ^ a<<30 ^ a<<19 ^ a<<10 ) )|0;\n\n // 57\n w9 = ( ( w10>>>7 ^ w10>>>18 ^ w10>>>3 ^ w10<<25 ^ w10<<14 ) + ( w7>>>17 ^ w7>>>19 ^ w7>>>10 ^ w7<<15 ^ w7<<13 ) + w9 + w2 )|0;\n g = ( w9 + g + ( d>>>6 ^ d>>>11 ^ d>>>25 ^ d<<26 ^ d<<21 ^ d<<7 ) + ( f ^ d & (e^f) ) + 0x78a5636f )|0;\n c = ( c + g )|0;\n g = ( g + ( (h & a) ^ ( b & (h ^ a) ) ) + ( h>>>2 ^ h>>>13 ^ h>>>22 ^ h<<30 ^ h<<19 ^ h<<10 ) )|0;\n\n // 58\n w10 = ( ( w11>>>7 ^ w11>>>18 ^ w11>>>3 ^ w11<<25 ^ w11<<14 ) + ( w8>>>17 ^ w8>>>19 ^ w8>>>10 ^ w8<<15 ^ w8<<13 ) + w10 + w3 )|0;\n f = ( w10 + f + ( c>>>6 ^ c>>>11 ^ c>>>25 ^ c<<26 ^ c<<21 ^ c<<7 ) + ( e ^ c & (d^e) ) + 0x84c87814 )|0;\n b = ( b + f )|0;\n f = ( f + ( (g & h) ^ ( a & (g ^ h) ) ) + ( g>>>2 ^ g>>>13 ^ g>>>22 ^ g<<30 ^ g<<19 ^ g<<10 ) )|0;\n\n // 59\n w11 = ( ( w12>>>7 ^ w12>>>18 ^ w12>>>3 ^ w12<<25 ^ w12<<14 ) + ( w9>>>17 ^ w9>>>19 ^ w9>>>10 ^ w9<<15 ^ w9<<13 ) + w11 + w4 )|0;\n e = ( w11 + e + ( b>>>6 ^ b>>>11 ^ b>>>25 ^ b<<26 ^ b<<21 ^ b<<7 ) + ( d ^ b & (c^d) ) + 0x8cc70208 )|0;\n a = ( a + e )|0;\n e = ( e + ( (f & g) ^ ( h & (f ^ g) ) ) + ( f>>>2 ^ f>>>13 ^ f>>>22 ^ f<<30 ^ f<<19 ^ f<<10 ) )|0;\n\n // 60\n w12 = ( ( w13>>>7 ^ w13>>>18 ^ w13>>>3 ^ w13<<25 ^ w13<<14 ) + ( w10>>>17 ^ w10>>>19 ^ w10>>>10 ^ w10<<15 ^ w10<<13 ) + w12 + w5 )|0;\n d = ( w12 + d + ( a>>>6 ^ a>>>11 ^ a>>>25 ^ a<<26 ^ a<<21 ^ a<<7 ) + ( c ^ a & (b^c) ) + 0x90befffa )|0;\n h = ( h + d )|0;\n d = ( d + ( (e & f) ^ ( g & (e ^ f) ) ) + ( e>>>2 ^ e>>>13 ^ e>>>22 ^ e<<30 ^ e<<19 ^ e<<10 ) )|0;\n\n // 61\n w13 = ( ( w14>>>7 ^ w14>>>18 ^ w14>>>3 ^ w14<<25 ^ w14<<14 ) + ( w11>>>17 ^ w11>>>19 ^ w11>>>10 ^ w11<<15 ^ w11<<13 ) + w13 + w6 )|0;\n c = ( w13 + c + ( h>>>6 ^ h>>>11 ^ h>>>25 ^ h<<26 ^ h<<21 ^ h<<7 ) + ( b ^ h & (a^b) ) + 0xa4506ceb )|0;\n g = ( g + c )|0;\n c = ( c + ( (d & e) ^ ( f & (d ^ e) ) ) + ( d>>>2 ^ d>>>13 ^ d>>>22 ^ d<<30 ^ d<<19 ^ d<<10 ) )|0;\n\n // 62\n w14 = ( ( w15>>>7 ^ w15>>>18 ^ w15>>>3 ^ w15<<25 ^ w15<<14 ) + ( w12>>>17 ^ w12>>>19 ^ w12>>>10 ^ w12<<15 ^ w12<<13 ) + w14 + w7 )|0;\n b = ( w14 + b + ( g>>>6 ^ g>>>11 ^ g>>>25 ^ g<<26 ^ g<<21 ^ g<<7 ) + ( a ^ g & (h^a) ) + 0xbef9a3f7 )|0;\n f = ( f + b )|0;\n b = ( b + ( (c & d) ^ ( e & (c ^ d) ) ) + ( c>>>2 ^ c>>>13 ^ c>>>22 ^ c<<30 ^ c<<19 ^ c<<10 ) )|0;\n\n // 63\n w15 = ( ( w0>>>7 ^ w0>>>18 ^ w0>>>3 ^ w0<<25 ^ w0<<14 ) + ( w13>>>17 ^ w13>>>19 ^ w13>>>10 ^ w13<<15 ^ w13<<13 ) + w15 + w8 )|0;\n a = ( w15 + a + ( f>>>6 ^ f>>>11 ^ f>>>25 ^ f<<26 ^ f<<21 ^ f<<7 ) + ( h ^ f & (g^h) ) + 0xc67178f2 )|0;\n e = ( e + a )|0;\n a = ( a + ( (b & c) ^ ( d & (b ^ c) ) ) + ( b>>>2 ^ b>>>13 ^ b>>>22 ^ b<<30 ^ b<<19 ^ b<<10 ) )|0;\n\n H0 = ( H0 + a )|0;\n H1 = ( H1 + b )|0;\n H2 = ( H2 + c )|0;\n H3 = ( H3 + d )|0;\n H4 = ( H4 + e )|0;\n H5 = ( H5 + f )|0;\n H6 = ( H6 + g )|0;\n H7 = ( H7 + h )|0;\n }\n\n function _core_heap ( offset ) {\n offset = offset|0;\n\n _core(\n HEAP[offset|0]<<24 | HEAP[offset|1]<<16 | HEAP[offset|2]<<8 | HEAP[offset|3],\n HEAP[offset|4]<<24 | HEAP[offset|5]<<16 | HEAP[offset|6]<<8 | HEAP[offset|7],\n HEAP[offset|8]<<24 | HEAP[offset|9]<<16 | HEAP[offset|10]<<8 | HEAP[offset|11],\n HEAP[offset|12]<<24 | HEAP[offset|13]<<16 | HEAP[offset|14]<<8 | HEAP[offset|15],\n HEAP[offset|16]<<24 | HEAP[offset|17]<<16 | HEAP[offset|18]<<8 | HEAP[offset|19],\n HEAP[offset|20]<<24 | HEAP[offset|21]<<16 | HEAP[offset|22]<<8 | HEAP[offset|23],\n HEAP[offset|24]<<24 | HEAP[offset|25]<<16 | HEAP[offset|26]<<8 | HEAP[offset|27],\n HEAP[offset|28]<<24 | HEAP[offset|29]<<16 | HEAP[offset|30]<<8 | HEAP[offset|31],\n HEAP[offset|32]<<24 | HEAP[offset|33]<<16 | HEAP[offset|34]<<8 | HEAP[offset|35],\n HEAP[offset|36]<<24 | HEAP[offset|37]<<16 | HEAP[offset|38]<<8 | HEAP[offset|39],\n HEAP[offset|40]<<24 | HEAP[offset|41]<<16 | HEAP[offset|42]<<8 | HEAP[offset|43],\n HEAP[offset|44]<<24 | HEAP[offset|45]<<16 | HEAP[offset|46]<<8 | HEAP[offset|47],\n HEAP[offset|48]<<24 | HEAP[offset|49]<<16 | HEAP[offset|50]<<8 | HEAP[offset|51],\n HEAP[offset|52]<<24 | HEAP[offset|53]<<16 | HEAP[offset|54]<<8 | HEAP[offset|55],\n HEAP[offset|56]<<24 | HEAP[offset|57]<<16 | HEAP[offset|58]<<8 | HEAP[offset|59],\n HEAP[offset|60]<<24 | HEAP[offset|61]<<16 | HEAP[offset|62]<<8 | HEAP[offset|63]\n );\n }\n\n // offset — multiple of 32\n function _state_to_heap ( output ) {\n output = output|0;\n\n HEAP[output|0] = H0>>>24;\n HEAP[output|1] = H0>>>16&255;\n HEAP[output|2] = H0>>>8&255;\n HEAP[output|3] = H0&255;\n HEAP[output|4] = H1>>>24;\n HEAP[output|5] = H1>>>16&255;\n HEAP[output|6] = H1>>>8&255;\n HEAP[output|7] = H1&255;\n HEAP[output|8] = H2>>>24;\n HEAP[output|9] = H2>>>16&255;\n HEAP[output|10] = H2>>>8&255;\n HEAP[output|11] = H2&255;\n HEAP[output|12] = H3>>>24;\n HEAP[output|13] = H3>>>16&255;\n HEAP[output|14] = H3>>>8&255;\n HEAP[output|15] = H3&255;\n HEAP[output|16] = H4>>>24;\n HEAP[output|17] = H4>>>16&255;\n HEAP[output|18] = H4>>>8&255;\n HEAP[output|19] = H4&255;\n HEAP[output|20] = H5>>>24;\n HEAP[output|21] = H5>>>16&255;\n HEAP[output|22] = H5>>>8&255;\n HEAP[output|23] = H5&255;\n HEAP[output|24] = H6>>>24;\n HEAP[output|25] = H6>>>16&255;\n HEAP[output|26] = H6>>>8&255;\n HEAP[output|27] = H6&255;\n HEAP[output|28] = H7>>>24;\n HEAP[output|29] = H7>>>16&255;\n HEAP[output|30] = H7>>>8&255;\n HEAP[output|31] = H7&255;\n }\n\n function reset () {\n H0 = 0x6a09e667;\n H1 = 0xbb67ae85;\n H2 = 0x3c6ef372;\n H3 = 0xa54ff53a;\n H4 = 0x510e527f;\n H5 = 0x9b05688c;\n H6 = 0x1f83d9ab;\n H7 = 0x5be0cd19;\n TOTAL0 = TOTAL1 = 0;\n }\n\n function init ( h0, h1, h2, h3, h4, h5, h6, h7, total0, total1 ) {\n h0 = h0|0;\n h1 = h1|0;\n h2 = h2|0;\n h3 = h3|0;\n h4 = h4|0;\n h5 = h5|0;\n h6 = h6|0;\n h7 = h7|0;\n total0 = total0|0;\n total1 = total1|0;\n\n H0 = h0;\n H1 = h1;\n H2 = h2;\n H3 = h3;\n H4 = h4;\n H5 = h5;\n H6 = h6;\n H7 = h7;\n TOTAL0 = total0;\n TOTAL1 = total1;\n }\n\n // offset — multiple of 64\n function process ( offset, length ) {\n offset = offset|0;\n length = length|0;\n\n var hashed = 0;\n\n if ( offset & 63 )\n return -1;\n\n while ( (length|0) >= 64 ) {\n _core_heap(offset);\n\n offset = ( offset + 64 )|0;\n length = ( length - 64 )|0;\n\n hashed = ( hashed + 64 )|0;\n }\n\n TOTAL0 = ( TOTAL0 + hashed )|0;\n if ( TOTAL0>>>0 < hashed>>>0 ) TOTAL1 = ( TOTAL1 + 1 )|0;\n\n return hashed|0;\n }\n\n // offset — multiple of 64\n // output — multiple of 32\n function finish ( offset, length, output ) {\n offset = offset|0;\n length = length|0;\n output = output|0;\n\n var hashed = 0,\n i = 0;\n\n if ( offset & 63 )\n return -1;\n\n if ( ~output )\n if ( output & 31 )\n return -1;\n\n if ( (length|0) >= 64 ) {\n hashed = process( offset, length )|0;\n if ( (hashed|0) == -1 )\n return -1;\n\n offset = ( offset + hashed )|0;\n length = ( length - hashed )|0;\n }\n\n hashed = ( hashed + length )|0;\n TOTAL0 = ( TOTAL0 + length )|0;\n if ( TOTAL0>>>0 < length>>>0 ) TOTAL1 = ( TOTAL1 + 1 )|0;\n\n HEAP[offset|length] = 0x80;\n\n if ( (length|0) >= 56 ) {\n for ( i = (length+1)|0; (i|0) < 64; i = (i+1)|0 )\n HEAP[offset|i] = 0x00;\n\n _core_heap(offset);\n\n length = 0;\n\n HEAP[offset|0] = 0;\n }\n\n for ( i = (length+1)|0; (i|0) < 59; i = (i+1)|0 )\n HEAP[offset|i] = 0;\n\n HEAP[offset|56] = TOTAL1>>>21&255;\n HEAP[offset|57] = TOTAL1>>>13&255;\n HEAP[offset|58] = TOTAL1>>>5&255;\n HEAP[offset|59] = TOTAL1<<3&255 | TOTAL0>>>29;\n HEAP[offset|60] = TOTAL0>>>21&255;\n HEAP[offset|61] = TOTAL0>>>13&255;\n HEAP[offset|62] = TOTAL0>>>5&255;\n HEAP[offset|63] = TOTAL0<<3&255;\n _core_heap(offset);\n\n if ( ~output )\n _state_to_heap(output);\n\n return hashed|0;\n }\n\n function hmac_reset () {\n H0 = I0;\n H1 = I1;\n H2 = I2;\n H3 = I3;\n H4 = I4;\n H5 = I5;\n H6 = I6;\n H7 = I7;\n TOTAL0 = 64;\n TOTAL1 = 0;\n }\n\n function _hmac_opad () {\n H0 = O0;\n H1 = O1;\n H2 = O2;\n H3 = O3;\n H4 = O4;\n H5 = O5;\n H6 = O6;\n H7 = O7;\n TOTAL0 = 64;\n TOTAL1 = 0;\n }\n\n function hmac_init ( p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ) {\n p0 = p0|0;\n p1 = p1|0;\n p2 = p2|0;\n p3 = p3|0;\n p4 = p4|0;\n p5 = p5|0;\n p6 = p6|0;\n p7 = p7|0;\n p8 = p8|0;\n p9 = p9|0;\n p10 = p10|0;\n p11 = p11|0;\n p12 = p12|0;\n p13 = p13|0;\n p14 = p14|0;\n p15 = p15|0;\n\n // opad\n reset();\n _core(\n p0 ^ 0x5c5c5c5c,\n p1 ^ 0x5c5c5c5c,\n p2 ^ 0x5c5c5c5c,\n p3 ^ 0x5c5c5c5c,\n p4 ^ 0x5c5c5c5c,\n p5 ^ 0x5c5c5c5c,\n p6 ^ 0x5c5c5c5c,\n p7 ^ 0x5c5c5c5c,\n p8 ^ 0x5c5c5c5c,\n p9 ^ 0x5c5c5c5c,\n p10 ^ 0x5c5c5c5c,\n p11 ^ 0x5c5c5c5c,\n p12 ^ 0x5c5c5c5c,\n p13 ^ 0x5c5c5c5c,\n p14 ^ 0x5c5c5c5c,\n p15 ^ 0x5c5c5c5c\n );\n O0 = H0;\n O1 = H1;\n O2 = H2;\n O3 = H3;\n O4 = H4;\n O5 = H5;\n O6 = H6;\n O7 = H7;\n\n // ipad\n reset();\n _core(\n p0 ^ 0x36363636,\n p1 ^ 0x36363636,\n p2 ^ 0x36363636,\n p3 ^ 0x36363636,\n p4 ^ 0x36363636,\n p5 ^ 0x36363636,\n p6 ^ 0x36363636,\n p7 ^ 0x36363636,\n p8 ^ 0x36363636,\n p9 ^ 0x36363636,\n p10 ^ 0x36363636,\n p11 ^ 0x36363636,\n p12 ^ 0x36363636,\n p13 ^ 0x36363636,\n p14 ^ 0x36363636,\n p15 ^ 0x36363636\n );\n I0 = H0;\n I1 = H1;\n I2 = H2;\n I3 = H3;\n I4 = H4;\n I5 = H5;\n I6 = H6;\n I7 = H7;\n\n TOTAL0 = 64;\n TOTAL1 = 0;\n }\n\n // offset — multiple of 64\n // output — multiple of 32\n function hmac_finish ( offset, length, output ) {\n offset = offset|0;\n length = length|0;\n output = output|0;\n\n var t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n hashed = 0;\n\n if ( offset & 63 )\n return -1;\n\n if ( ~output )\n if ( output & 31 )\n return -1;\n\n hashed = finish( offset, length, -1 )|0;\n t0 = H0, t1 = H1, t2 = H2, t3 = H3, t4 = H4, t5 = H5, t6 = H6, t7 = H7;\n\n _hmac_opad();\n _core( t0, t1, t2, t3, t4, t5, t6, t7, 0x80000000, 0, 0, 0, 0, 0, 0, 768 );\n\n if ( ~output )\n _state_to_heap(output);\n\n return hashed|0;\n }\n\n // salt is assumed to be already processed\n // offset — multiple of 64\n // output — multiple of 32\n function pbkdf2_generate_block ( offset, length, block, count, output ) {\n offset = offset|0;\n length = length|0;\n block = block|0;\n count = count|0;\n output = output|0;\n\n var h0 = 0, h1 = 0, h2 = 0, h3 = 0, h4 = 0, h5 = 0, h6 = 0, h7 = 0,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0;\n\n if ( offset & 63 )\n return -1;\n\n if ( ~output )\n if ( output & 31 )\n return -1;\n\n // pad block number into heap\n // FIXME probable OOB write\n HEAP[(offset+length)|0] = block>>>24;\n HEAP[(offset+length+1)|0] = block>>>16&255;\n HEAP[(offset+length+2)|0] = block>>>8&255;\n HEAP[(offset+length+3)|0] = block&255;\n\n // finish first iteration\n hmac_finish( offset, (length+4)|0, -1 )|0;\n h0 = t0 = H0, h1 = t1 = H1, h2 = t2 = H2, h3 = t3 = H3, h4 = t4 = H4, h5 = t5 = H5, h6 = t6 = H6, h7 = t7 = H7;\n count = (count-1)|0;\n\n // perform the rest iterations\n while ( (count|0) > 0 ) {\n hmac_reset();\n _core( t0, t1, t2, t3, t4, t5, t6, t7, 0x80000000, 0, 0, 0, 0, 0, 0, 768 );\n t0 = H0, t1 = H1, t2 = H2, t3 = H3, t4 = H4, t5 = H5, t6 = H6, t7 = H7;\n\n _hmac_opad();\n _core( t0, t1, t2, t3, t4, t5, t6, t7, 0x80000000, 0, 0, 0, 0, 0, 0, 768 );\n t0 = H0, t1 = H1, t2 = H2, t3 = H3, t4 = H4, t5 = H5, t6 = H6, t7 = H7;\n\n h0 = h0 ^ H0;\n h1 = h1 ^ H1;\n h2 = h2 ^ H2;\n h3 = h3 ^ H3;\n h4 = h4 ^ H4;\n h5 = h5 ^ H5;\n h6 = h6 ^ H6;\n h7 = h7 ^ H7;\n\n count = (count-1)|0;\n }\n\n H0 = h0;\n H1 = h1;\n H2 = h2;\n H3 = h3;\n H4 = h4;\n H5 = h5;\n H6 = h6;\n H7 = h7;\n\n if ( ~output )\n _state_to_heap(output);\n\n return 0;\n }\n\n return {\n // SHA256\n reset: reset,\n init: init,\n process: process,\n finish: finish,\n\n // HMAC-SHA256\n hmac_reset: hmac_reset,\n hmac_init: hmac_init,\n hmac_finish: hmac_finish,\n\n // PBKDF2-HMAC-SHA256\n pbkdf2_generate_block: pbkdf2_generate_block\n }\n};\n\nconst _sha256_block_size = 64;\nconst _sha256_hash_size = 32;\nclass Sha256 extends Hash {\n constructor() {\n super();\n this.NAME = 'sha256';\n this.BLOCK_SIZE = _sha256_block_size;\n this.HASH_SIZE = _sha256_hash_size;\n this.heap = _heap_init();\n this.asm = sha256_asm({ Uint8Array: Uint8Array }, null, this.heap.buffer);\n this.reset();\n }\n}\nSha256.NAME = 'sha256';\n\nvar sha512_asm = function ( stdlib, foreign, buffer ) {\n \"use asm\";\n\n // SHA512 state\n var H0h = 0, H0l = 0, H1h = 0, H1l = 0, H2h = 0, H2l = 0, H3h = 0, H3l = 0,\n H4h = 0, H4l = 0, H5h = 0, H5l = 0, H6h = 0, H6l = 0, H7h = 0, H7l = 0,\n TOTAL0 = 0, TOTAL1 = 0;\n\n // HMAC state\n var I0h = 0, I0l = 0, I1h = 0, I1l = 0, I2h = 0, I2l = 0, I3h = 0, I3l = 0,\n I4h = 0, I4l = 0, I5h = 0, I5l = 0, I6h = 0, I6l = 0, I7h = 0, I7l = 0,\n O0h = 0, O0l = 0, O1h = 0, O1l = 0, O2h = 0, O2l = 0, O3h = 0, O3l = 0,\n O4h = 0, O4l = 0, O5h = 0, O5l = 0, O6h = 0, O6l = 0, O7h = 0, O7l = 0;\n\n // I/O buffer\n var HEAP = new stdlib.Uint8Array(buffer);\n\n function _core ( w0h, w0l, w1h, w1l, w2h, w2l, w3h, w3l, w4h, w4l, w5h, w5l, w6h, w6l, w7h, w7l, w8h, w8l, w9h, w9l, w10h, w10l, w11h, w11l, w12h, w12l, w13h, w13l, w14h, w14l, w15h, w15l ) {\n w0h = w0h|0;\n w0l = w0l|0;\n w1h = w1h|0;\n w1l = w1l|0;\n w2h = w2h|0;\n w2l = w2l|0;\n w3h = w3h|0;\n w3l = w3l|0;\n w4h = w4h|0;\n w4l = w4l|0;\n w5h = w5h|0;\n w5l = w5l|0;\n w6h = w6h|0;\n w6l = w6l|0;\n w7h = w7h|0;\n w7l = w7l|0;\n w8h = w8h|0;\n w8l = w8l|0;\n w9h = w9h|0;\n w9l = w9l|0;\n w10h = w10h|0;\n w10l = w10l|0;\n w11h = w11h|0;\n w11l = w11l|0;\n w12h = w12h|0;\n w12l = w12l|0;\n w13h = w13h|0;\n w13l = w13l|0;\n w14h = w14h|0;\n w14l = w14l|0;\n w15h = w15h|0;\n w15l = w15l|0;\n\n var ah = 0, al = 0, bh = 0, bl = 0, ch = 0, cl = 0, dh = 0, dl = 0, eh = 0, el = 0, fh = 0, fl = 0, gh = 0, gl = 0, hh = 0, hl = 0,\n th = 0, tl = 0, xl = 0;\n\n ah = H0h;\n al = H0l;\n bh = H1h;\n bl = H1l;\n ch = H2h;\n cl = H2l;\n dh = H3h;\n dl = H3l;\n eh = H4h;\n el = H4l;\n fh = H5h;\n fl = H5l;\n gh = H6h;\n gl = H6l;\n hh = H7h;\n hl = H7l;\n\n // 0\n tl = ( 0xd728ae22 + w0l )|0;\n th = ( 0x428a2f98 + w0h + ((tl >>> 0) < (w0l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 1\n tl = ( 0x23ef65cd + w1l )|0;\n th = ( 0x71374491 + w1h + ((tl >>> 0) < (w1l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 2\n tl = ( 0xec4d3b2f + w2l )|0;\n th = ( 0xb5c0fbcf + w2h + ((tl >>> 0) < (w2l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 3\n tl = ( 0x8189dbbc + w3l )|0;\n th = ( 0xe9b5dba5 + w3h + ((tl >>> 0) < (w3l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 4\n tl = ( 0xf348b538 + w4l )|0;\n th = ( 0x3956c25b + w4h + ((tl >>> 0) < (w4l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 5\n tl = ( 0xb605d019 + w5l )|0;\n th = ( 0x59f111f1 + w5h + ((tl >>> 0) < (w5l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 6\n tl = ( 0xaf194f9b + w6l )|0;\n th = ( 0x923f82a4 + w6h + ((tl >>> 0) < (w6l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 7\n tl = ( 0xda6d8118 + w7l )|0;\n th = ( 0xab1c5ed5 + w7h + ((tl >>> 0) < (w7l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 8\n tl = ( 0xa3030242 + w8l )|0;\n th = ( 0xd807aa98 + w8h + ((tl >>> 0) < (w8l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 9\n tl = ( 0x45706fbe + w9l )|0;\n th = ( 0x12835b01 + w9h + ((tl >>> 0) < (w9l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 10\n tl = ( 0x4ee4b28c + w10l )|0;\n th = ( 0x243185be + w10h + ((tl >>> 0) < (w10l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 11\n tl = ( 0xd5ffb4e2 + w11l )|0;\n th = ( 0x550c7dc3 + w11h + ((tl >>> 0) < (w11l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 12\n tl = ( 0xf27b896f + w12l )|0;\n th = ( 0x72be5d74 + w12h + ((tl >>> 0) < (w12l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 13\n tl = ( 0x3b1696b1 + w13l )|0;\n th = ( 0x80deb1fe + w13h + ((tl >>> 0) < (w13l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 14\n tl = ( 0x25c71235 + w14l )|0;\n th = ( 0x9bdc06a7 + w14h + ((tl >>> 0) < (w14l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 15\n tl = ( 0xcf692694 + w15l )|0;\n th = ( 0xc19bf174 + w15h + ((tl >>> 0) < (w15l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 16\n w0l = ( w0l + w9l )|0;\n w0h = ( w0h + w9h + ((w0l >>> 0) < (w9l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w1l >>> 1) | (w1h << 31)) ^ ((w1l >>> 8) | (w1h << 24)) ^ ((w1l >>> 7) | (w1h << 25)) )|0;\n w0l = ( w0l + xl)|0;\n w0h = ( w0h + ( ((w1h >>> 1) | (w1l << 31)) ^ ((w1h >>> 8) | (w1l << 24)) ^ (w1h >>> 7) ) + ((w0l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w14l >>> 19) | (w14h << 13)) ^ ((w14l << 3) | (w14h >>> 29)) ^ ((w14l >>> 6) | (w14h << 26)) )|0;\n w0l = ( w0l + xl)|0;\n w0h = ( w0h + ( ((w14h >>> 19) | (w14l << 13)) ^ ((w14h << 3) | (w14l >>> 29)) ^ (w14h >>> 6) ) + ((w0l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x9ef14ad2 + w0l )|0;\n th = ( 0xe49b69c1 + w0h + ((tl >>> 0) < (w0l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 17\n w1l = ( w1l + w10l )|0;\n w1h = ( w1h + w10h + ((w1l >>> 0) < (w10l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w2l >>> 1) | (w2h << 31)) ^ ((w2l >>> 8) | (w2h << 24)) ^ ((w2l >>> 7) | (w2h << 25)) )|0;\n w1l = ( w1l + xl)|0;\n w1h = ( w1h + ( ((w2h >>> 1) | (w2l << 31)) ^ ((w2h >>> 8) | (w2l << 24)) ^ (w2h >>> 7) ) + ((w1l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w15l >>> 19) | (w15h << 13)) ^ ((w15l << 3) | (w15h >>> 29)) ^ ((w15l >>> 6) | (w15h << 26)) )|0;\n w1l = ( w1l + xl)|0;\n w1h = ( w1h + ( ((w15h >>> 19) | (w15l << 13)) ^ ((w15h << 3) | (w15l >>> 29)) ^ (w15h >>> 6) ) + ((w1l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x384f25e3 + w1l )|0;\n th = ( 0xefbe4786 + w1h + ((tl >>> 0) < (w1l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 18\n w2l = ( w2l + w11l )|0;\n w2h = ( w2h + w11h + ((w2l >>> 0) < (w11l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w3l >>> 1) | (w3h << 31)) ^ ((w3l >>> 8) | (w3h << 24)) ^ ((w3l >>> 7) | (w3h << 25)) )|0;\n w2l = ( w2l + xl)|0;\n w2h = ( w2h + ( ((w3h >>> 1) | (w3l << 31)) ^ ((w3h >>> 8) | (w3l << 24)) ^ (w3h >>> 7) ) + ((w2l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w0l >>> 19) | (w0h << 13)) ^ ((w0l << 3) | (w0h >>> 29)) ^ ((w0l >>> 6) | (w0h << 26)) )|0;\n w2l = ( w2l + xl)|0;\n w2h = ( w2h + ( ((w0h >>> 19) | (w0l << 13)) ^ ((w0h << 3) | (w0l >>> 29)) ^ (w0h >>> 6) ) + ((w2l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x8b8cd5b5 + w2l )|0;\n th = ( 0xfc19dc6 + w2h + ((tl >>> 0) < (w2l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 19\n w3l = ( w3l + w12l )|0;\n w3h = ( w3h + w12h + ((w3l >>> 0) < (w12l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w4l >>> 1) | (w4h << 31)) ^ ((w4l >>> 8) | (w4h << 24)) ^ ((w4l >>> 7) | (w4h << 25)) )|0;\n w3l = ( w3l + xl)|0;\n w3h = ( w3h + ( ((w4h >>> 1) | (w4l << 31)) ^ ((w4h >>> 8) | (w4l << 24)) ^ (w4h >>> 7) ) + ((w3l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w1l >>> 19) | (w1h << 13)) ^ ((w1l << 3) | (w1h >>> 29)) ^ ((w1l >>> 6) | (w1h << 26)) )|0;\n w3l = ( w3l + xl)|0;\n w3h = ( w3h + ( ((w1h >>> 19) | (w1l << 13)) ^ ((w1h << 3) | (w1l >>> 29)) ^ (w1h >>> 6) ) + ((w3l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x77ac9c65 + w3l )|0;\n th = ( 0x240ca1cc + w3h + ((tl >>> 0) < (w3l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 20\n w4l = ( w4l + w13l )|0;\n w4h = ( w4h + w13h + ((w4l >>> 0) < (w13l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w5l >>> 1) | (w5h << 31)) ^ ((w5l >>> 8) | (w5h << 24)) ^ ((w5l >>> 7) | (w5h << 25)) )|0;\n w4l = ( w4l + xl)|0;\n w4h = ( w4h + ( ((w5h >>> 1) | (w5l << 31)) ^ ((w5h >>> 8) | (w5l << 24)) ^ (w5h >>> 7) ) + ((w4l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w2l >>> 19) | (w2h << 13)) ^ ((w2l << 3) | (w2h >>> 29)) ^ ((w2l >>> 6) | (w2h << 26)) )|0;\n w4l = ( w4l + xl)|0;\n w4h = ( w4h + ( ((w2h >>> 19) | (w2l << 13)) ^ ((w2h << 3) | (w2l >>> 29)) ^ (w2h >>> 6) ) + ((w4l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x592b0275 + w4l )|0;\n th = ( 0x2de92c6f + w4h + ((tl >>> 0) < (w4l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 21\n w5l = ( w5l + w14l )|0;\n w5h = ( w5h + w14h + ((w5l >>> 0) < (w14l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w6l >>> 1) | (w6h << 31)) ^ ((w6l >>> 8) | (w6h << 24)) ^ ((w6l >>> 7) | (w6h << 25)) )|0;\n w5l = ( w5l + xl)|0;\n w5h = ( w5h + ( ((w6h >>> 1) | (w6l << 31)) ^ ((w6h >>> 8) | (w6l << 24)) ^ (w6h >>> 7) ) + ((w5l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w3l >>> 19) | (w3h << 13)) ^ ((w3l << 3) | (w3h >>> 29)) ^ ((w3l >>> 6) | (w3h << 26)) )|0;\n w5l = ( w5l + xl)|0;\n w5h = ( w5h + ( ((w3h >>> 19) | (w3l << 13)) ^ ((w3h << 3) | (w3l >>> 29)) ^ (w3h >>> 6) ) + ((w5l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x6ea6e483 + w5l )|0;\n th = ( 0x4a7484aa + w5h + ((tl >>> 0) < (w5l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 22\n w6l = ( w6l + w15l )|0;\n w6h = ( w6h + w15h + ((w6l >>> 0) < (w15l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w7l >>> 1) | (w7h << 31)) ^ ((w7l >>> 8) | (w7h << 24)) ^ ((w7l >>> 7) | (w7h << 25)) )|0;\n w6l = ( w6l + xl)|0;\n w6h = ( w6h + ( ((w7h >>> 1) | (w7l << 31)) ^ ((w7h >>> 8) | (w7l << 24)) ^ (w7h >>> 7) ) + ((w6l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w4l >>> 19) | (w4h << 13)) ^ ((w4l << 3) | (w4h >>> 29)) ^ ((w4l >>> 6) | (w4h << 26)) )|0;\n w6l = ( w6l + xl)|0;\n w6h = ( w6h + ( ((w4h >>> 19) | (w4l << 13)) ^ ((w4h << 3) | (w4l >>> 29)) ^ (w4h >>> 6) ) + ((w6l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xbd41fbd4 + w6l )|0;\n th = ( 0x5cb0a9dc + w6h + ((tl >>> 0) < (w6l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 23\n w7l = ( w7l + w0l )|0;\n w7h = ( w7h + w0h + ((w7l >>> 0) < (w0l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w8l >>> 1) | (w8h << 31)) ^ ((w8l >>> 8) | (w8h << 24)) ^ ((w8l >>> 7) | (w8h << 25)) )|0;\n w7l = ( w7l + xl)|0;\n w7h = ( w7h + ( ((w8h >>> 1) | (w8l << 31)) ^ ((w8h >>> 8) | (w8l << 24)) ^ (w8h >>> 7) ) + ((w7l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w5l >>> 19) | (w5h << 13)) ^ ((w5l << 3) | (w5h >>> 29)) ^ ((w5l >>> 6) | (w5h << 26)) )|0;\n w7l = ( w7l + xl)|0;\n w7h = ( w7h + ( ((w5h >>> 19) | (w5l << 13)) ^ ((w5h << 3) | (w5l >>> 29)) ^ (w5h >>> 6) ) + ((w7l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x831153b5 + w7l )|0;\n th = ( 0x76f988da + w7h + ((tl >>> 0) < (w7l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 24\n w8l = ( w8l + w1l )|0;\n w8h = ( w8h + w1h + ((w8l >>> 0) < (w1l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w9l >>> 1) | (w9h << 31)) ^ ((w9l >>> 8) | (w9h << 24)) ^ ((w9l >>> 7) | (w9h << 25)) )|0;\n w8l = ( w8l + xl)|0;\n w8h = ( w8h + ( ((w9h >>> 1) | (w9l << 31)) ^ ((w9h >>> 8) | (w9l << 24)) ^ (w9h >>> 7) ) + ((w8l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w6l >>> 19) | (w6h << 13)) ^ ((w6l << 3) | (w6h >>> 29)) ^ ((w6l >>> 6) | (w6h << 26)) )|0;\n w8l = ( w8l + xl)|0;\n w8h = ( w8h + ( ((w6h >>> 19) | (w6l << 13)) ^ ((w6h << 3) | (w6l >>> 29)) ^ (w6h >>> 6) ) + ((w8l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xee66dfab + w8l )|0;\n th = ( 0x983e5152 + w8h + ((tl >>> 0) < (w8l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 25\n w9l = ( w9l + w2l )|0;\n w9h = ( w9h + w2h + ((w9l >>> 0) < (w2l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w10l >>> 1) | (w10h << 31)) ^ ((w10l >>> 8) | (w10h << 24)) ^ ((w10l >>> 7) | (w10h << 25)) )|0;\n w9l = ( w9l + xl)|0;\n w9h = ( w9h + ( ((w10h >>> 1) | (w10l << 31)) ^ ((w10h >>> 8) | (w10l << 24)) ^ (w10h >>> 7) ) + ((w9l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w7l >>> 19) | (w7h << 13)) ^ ((w7l << 3) | (w7h >>> 29)) ^ ((w7l >>> 6) | (w7h << 26)) )|0;\n w9l = ( w9l + xl)|0;\n w9h = ( w9h + ( ((w7h >>> 19) | (w7l << 13)) ^ ((w7h << 3) | (w7l >>> 29)) ^ (w7h >>> 6) ) + ((w9l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x2db43210 + w9l )|0;\n th = ( 0xa831c66d + w9h + ((tl >>> 0) < (w9l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 26\n w10l = ( w10l + w3l )|0;\n w10h = ( w10h + w3h + ((w10l >>> 0) < (w3l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w11l >>> 1) | (w11h << 31)) ^ ((w11l >>> 8) | (w11h << 24)) ^ ((w11l >>> 7) | (w11h << 25)) )|0;\n w10l = ( w10l + xl)|0;\n w10h = ( w10h + ( ((w11h >>> 1) | (w11l << 31)) ^ ((w11h >>> 8) | (w11l << 24)) ^ (w11h >>> 7) ) + ((w10l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w8l >>> 19) | (w8h << 13)) ^ ((w8l << 3) | (w8h >>> 29)) ^ ((w8l >>> 6) | (w8h << 26)) )|0;\n w10l = ( w10l + xl)|0;\n w10h = ( w10h + ( ((w8h >>> 19) | (w8l << 13)) ^ ((w8h << 3) | (w8l >>> 29)) ^ (w8h >>> 6) ) + ((w10l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x98fb213f + w10l )|0;\n th = ( 0xb00327c8 + w10h + ((tl >>> 0) < (w10l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 27\n w11l = ( w11l + w4l )|0;\n w11h = ( w11h + w4h + ((w11l >>> 0) < (w4l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w12l >>> 1) | (w12h << 31)) ^ ((w12l >>> 8) | (w12h << 24)) ^ ((w12l >>> 7) | (w12h << 25)) )|0;\n w11l = ( w11l + xl)|0;\n w11h = ( w11h + ( ((w12h >>> 1) | (w12l << 31)) ^ ((w12h >>> 8) | (w12l << 24)) ^ (w12h >>> 7) ) + ((w11l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w9l >>> 19) | (w9h << 13)) ^ ((w9l << 3) | (w9h >>> 29)) ^ ((w9l >>> 6) | (w9h << 26)) )|0;\n w11l = ( w11l + xl)|0;\n w11h = ( w11h + ( ((w9h >>> 19) | (w9l << 13)) ^ ((w9h << 3) | (w9l >>> 29)) ^ (w9h >>> 6) ) + ((w11l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xbeef0ee4 + w11l )|0;\n th = ( 0xbf597fc7 + w11h + ((tl >>> 0) < (w11l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 28\n w12l = ( w12l + w5l )|0;\n w12h = ( w12h + w5h + ((w12l >>> 0) < (w5l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w13l >>> 1) | (w13h << 31)) ^ ((w13l >>> 8) | (w13h << 24)) ^ ((w13l >>> 7) | (w13h << 25)) )|0;\n w12l = ( w12l + xl)|0;\n w12h = ( w12h + ( ((w13h >>> 1) | (w13l << 31)) ^ ((w13h >>> 8) | (w13l << 24)) ^ (w13h >>> 7) ) + ((w12l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w10l >>> 19) | (w10h << 13)) ^ ((w10l << 3) | (w10h >>> 29)) ^ ((w10l >>> 6) | (w10h << 26)) )|0;\n w12l = ( w12l + xl)|0;\n w12h = ( w12h + ( ((w10h >>> 19) | (w10l << 13)) ^ ((w10h << 3) | (w10l >>> 29)) ^ (w10h >>> 6) ) + ((w12l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x3da88fc2 + w12l )|0;\n th = ( 0xc6e00bf3 + w12h + ((tl >>> 0) < (w12l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 29\n w13l = ( w13l + w6l )|0;\n w13h = ( w13h + w6h + ((w13l >>> 0) < (w6l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w14l >>> 1) | (w14h << 31)) ^ ((w14l >>> 8) | (w14h << 24)) ^ ((w14l >>> 7) | (w14h << 25)) )|0;\n w13l = ( w13l + xl)|0;\n w13h = ( w13h + ( ((w14h >>> 1) | (w14l << 31)) ^ ((w14h >>> 8) | (w14l << 24)) ^ (w14h >>> 7) ) + ((w13l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w11l >>> 19) | (w11h << 13)) ^ ((w11l << 3) | (w11h >>> 29)) ^ ((w11l >>> 6) | (w11h << 26)) )|0;\n w13l = ( w13l + xl)|0;\n w13h = ( w13h + ( ((w11h >>> 19) | (w11l << 13)) ^ ((w11h << 3) | (w11l >>> 29)) ^ (w11h >>> 6) ) + ((w13l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x930aa725 + w13l )|0;\n th = ( 0xd5a79147 + w13h + ((tl >>> 0) < (w13l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 30\n w14l = ( w14l + w7l )|0;\n w14h = ( w14h + w7h + ((w14l >>> 0) < (w7l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w15l >>> 1) | (w15h << 31)) ^ ((w15l >>> 8) | (w15h << 24)) ^ ((w15l >>> 7) | (w15h << 25)) )|0;\n w14l = ( w14l + xl)|0;\n w14h = ( w14h + ( ((w15h >>> 1) | (w15l << 31)) ^ ((w15h >>> 8) | (w15l << 24)) ^ (w15h >>> 7) ) + ((w14l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w12l >>> 19) | (w12h << 13)) ^ ((w12l << 3) | (w12h >>> 29)) ^ ((w12l >>> 6) | (w12h << 26)) )|0;\n w14l = ( w14l + xl)|0;\n w14h = ( w14h + ( ((w12h >>> 19) | (w12l << 13)) ^ ((w12h << 3) | (w12l >>> 29)) ^ (w12h >>> 6) ) + ((w14l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xe003826f + w14l )|0;\n th = ( 0x6ca6351 + w14h + ((tl >>> 0) < (w14l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 31\n w15l = ( w15l + w8l )|0;\n w15h = ( w15h + w8h + ((w15l >>> 0) < (w8l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w0l >>> 1) | (w0h << 31)) ^ ((w0l >>> 8) | (w0h << 24)) ^ ((w0l >>> 7) | (w0h << 25)) )|0;\n w15l = ( w15l + xl)|0;\n w15h = ( w15h + ( ((w0h >>> 1) | (w0l << 31)) ^ ((w0h >>> 8) | (w0l << 24)) ^ (w0h >>> 7) ) + ((w15l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w13l >>> 19) | (w13h << 13)) ^ ((w13l << 3) | (w13h >>> 29)) ^ ((w13l >>> 6) | (w13h << 26)) )|0;\n w15l = ( w15l + xl)|0;\n w15h = ( w15h + ( ((w13h >>> 19) | (w13l << 13)) ^ ((w13h << 3) | (w13l >>> 29)) ^ (w13h >>> 6) ) + ((w15l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xa0e6e70 + w15l )|0;\n th = ( 0x14292967 + w15h + ((tl >>> 0) < (w15l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 32\n w0l = ( w0l + w9l )|0;\n w0h = ( w0h + w9h + ((w0l >>> 0) < (w9l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w1l >>> 1) | (w1h << 31)) ^ ((w1l >>> 8) | (w1h << 24)) ^ ((w1l >>> 7) | (w1h << 25)) )|0;\n w0l = ( w0l + xl)|0;\n w0h = ( w0h + ( ((w1h >>> 1) | (w1l << 31)) ^ ((w1h >>> 8) | (w1l << 24)) ^ (w1h >>> 7) ) + ((w0l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w14l >>> 19) | (w14h << 13)) ^ ((w14l << 3) | (w14h >>> 29)) ^ ((w14l >>> 6) | (w14h << 26)) )|0;\n w0l = ( w0l + xl)|0;\n w0h = ( w0h + ( ((w14h >>> 19) | (w14l << 13)) ^ ((w14h << 3) | (w14l >>> 29)) ^ (w14h >>> 6) ) + ((w0l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x46d22ffc + w0l )|0;\n th = ( 0x27b70a85 + w0h + ((tl >>> 0) < (w0l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 33\n w1l = ( w1l + w10l )|0;\n w1h = ( w1h + w10h + ((w1l >>> 0) < (w10l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w2l >>> 1) | (w2h << 31)) ^ ((w2l >>> 8) | (w2h << 24)) ^ ((w2l >>> 7) | (w2h << 25)) )|0;\n w1l = ( w1l + xl)|0;\n w1h = ( w1h + ( ((w2h >>> 1) | (w2l << 31)) ^ ((w2h >>> 8) | (w2l << 24)) ^ (w2h >>> 7) ) + ((w1l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w15l >>> 19) | (w15h << 13)) ^ ((w15l << 3) | (w15h >>> 29)) ^ ((w15l >>> 6) | (w15h << 26)) )|0;\n w1l = ( w1l + xl)|0;\n w1h = ( w1h + ( ((w15h >>> 19) | (w15l << 13)) ^ ((w15h << 3) | (w15l >>> 29)) ^ (w15h >>> 6) ) + ((w1l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x5c26c926 + w1l )|0;\n th = ( 0x2e1b2138 + w1h + ((tl >>> 0) < (w1l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 34\n w2l = ( w2l + w11l )|0;\n w2h = ( w2h + w11h + ((w2l >>> 0) < (w11l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w3l >>> 1) | (w3h << 31)) ^ ((w3l >>> 8) | (w3h << 24)) ^ ((w3l >>> 7) | (w3h << 25)) )|0;\n w2l = ( w2l + xl)|0;\n w2h = ( w2h + ( ((w3h >>> 1) | (w3l << 31)) ^ ((w3h >>> 8) | (w3l << 24)) ^ (w3h >>> 7) ) + ((w2l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w0l >>> 19) | (w0h << 13)) ^ ((w0l << 3) | (w0h >>> 29)) ^ ((w0l >>> 6) | (w0h << 26)) )|0;\n w2l = ( w2l + xl)|0;\n w2h = ( w2h + ( ((w0h >>> 19) | (w0l << 13)) ^ ((w0h << 3) | (w0l >>> 29)) ^ (w0h >>> 6) ) + ((w2l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x5ac42aed + w2l )|0;\n th = ( 0x4d2c6dfc + w2h + ((tl >>> 0) < (w2l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 35\n w3l = ( w3l + w12l )|0;\n w3h = ( w3h + w12h + ((w3l >>> 0) < (w12l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w4l >>> 1) | (w4h << 31)) ^ ((w4l >>> 8) | (w4h << 24)) ^ ((w4l >>> 7) | (w4h << 25)) )|0;\n w3l = ( w3l + xl)|0;\n w3h = ( w3h + ( ((w4h >>> 1) | (w4l << 31)) ^ ((w4h >>> 8) | (w4l << 24)) ^ (w4h >>> 7) ) + ((w3l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w1l >>> 19) | (w1h << 13)) ^ ((w1l << 3) | (w1h >>> 29)) ^ ((w1l >>> 6) | (w1h << 26)) )|0;\n w3l = ( w3l + xl)|0;\n w3h = ( w3h + ( ((w1h >>> 19) | (w1l << 13)) ^ ((w1h << 3) | (w1l >>> 29)) ^ (w1h >>> 6) ) + ((w3l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x9d95b3df + w3l )|0;\n th = ( 0x53380d13 + w3h + ((tl >>> 0) < (w3l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 36\n w4l = ( w4l + w13l )|0;\n w4h = ( w4h + w13h + ((w4l >>> 0) < (w13l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w5l >>> 1) | (w5h << 31)) ^ ((w5l >>> 8) | (w5h << 24)) ^ ((w5l >>> 7) | (w5h << 25)) )|0;\n w4l = ( w4l + xl)|0;\n w4h = ( w4h + ( ((w5h >>> 1) | (w5l << 31)) ^ ((w5h >>> 8) | (w5l << 24)) ^ (w5h >>> 7) ) + ((w4l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w2l >>> 19) | (w2h << 13)) ^ ((w2l << 3) | (w2h >>> 29)) ^ ((w2l >>> 6) | (w2h << 26)) )|0;\n w4l = ( w4l + xl)|0;\n w4h = ( w4h + ( ((w2h >>> 19) | (w2l << 13)) ^ ((w2h << 3) | (w2l >>> 29)) ^ (w2h >>> 6) ) + ((w4l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x8baf63de + w4l )|0;\n th = ( 0x650a7354 + w4h + ((tl >>> 0) < (w4l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 37\n w5l = ( w5l + w14l )|0;\n w5h = ( w5h + w14h + ((w5l >>> 0) < (w14l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w6l >>> 1) | (w6h << 31)) ^ ((w6l >>> 8) | (w6h << 24)) ^ ((w6l >>> 7) | (w6h << 25)) )|0;\n w5l = ( w5l + xl)|0;\n w5h = ( w5h + ( ((w6h >>> 1) | (w6l << 31)) ^ ((w6h >>> 8) | (w6l << 24)) ^ (w6h >>> 7) ) + ((w5l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w3l >>> 19) | (w3h << 13)) ^ ((w3l << 3) | (w3h >>> 29)) ^ ((w3l >>> 6) | (w3h << 26)) )|0;\n w5l = ( w5l + xl)|0;\n w5h = ( w5h + ( ((w3h >>> 19) | (w3l << 13)) ^ ((w3h << 3) | (w3l >>> 29)) ^ (w3h >>> 6) ) + ((w5l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x3c77b2a8 + w5l )|0;\n th = ( 0x766a0abb + w5h + ((tl >>> 0) < (w5l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 38\n w6l = ( w6l + w15l )|0;\n w6h = ( w6h + w15h + ((w6l >>> 0) < (w15l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w7l >>> 1) | (w7h << 31)) ^ ((w7l >>> 8) | (w7h << 24)) ^ ((w7l >>> 7) | (w7h << 25)) )|0;\n w6l = ( w6l + xl)|0;\n w6h = ( w6h + ( ((w7h >>> 1) | (w7l << 31)) ^ ((w7h >>> 8) | (w7l << 24)) ^ (w7h >>> 7) ) + ((w6l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w4l >>> 19) | (w4h << 13)) ^ ((w4l << 3) | (w4h >>> 29)) ^ ((w4l >>> 6) | (w4h << 26)) )|0;\n w6l = ( w6l + xl)|0;\n w6h = ( w6h + ( ((w4h >>> 19) | (w4l << 13)) ^ ((w4h << 3) | (w4l >>> 29)) ^ (w4h >>> 6) ) + ((w6l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x47edaee6 + w6l )|0;\n th = ( 0x81c2c92e + w6h + ((tl >>> 0) < (w6l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 39\n w7l = ( w7l + w0l )|0;\n w7h = ( w7h + w0h + ((w7l >>> 0) < (w0l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w8l >>> 1) | (w8h << 31)) ^ ((w8l >>> 8) | (w8h << 24)) ^ ((w8l >>> 7) | (w8h << 25)) )|0;\n w7l = ( w7l + xl)|0;\n w7h = ( w7h + ( ((w8h >>> 1) | (w8l << 31)) ^ ((w8h >>> 8) | (w8l << 24)) ^ (w8h >>> 7) ) + ((w7l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w5l >>> 19) | (w5h << 13)) ^ ((w5l << 3) | (w5h >>> 29)) ^ ((w5l >>> 6) | (w5h << 26)) )|0;\n w7l = ( w7l + xl)|0;\n w7h = ( w7h + ( ((w5h >>> 19) | (w5l << 13)) ^ ((w5h << 3) | (w5l >>> 29)) ^ (w5h >>> 6) ) + ((w7l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x1482353b + w7l )|0;\n th = ( 0x92722c85 + w7h + ((tl >>> 0) < (w7l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 40\n w8l = ( w8l + w1l )|0;\n w8h = ( w8h + w1h + ((w8l >>> 0) < (w1l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w9l >>> 1) | (w9h << 31)) ^ ((w9l >>> 8) | (w9h << 24)) ^ ((w9l >>> 7) | (w9h << 25)) )|0;\n w8l = ( w8l + xl)|0;\n w8h = ( w8h + ( ((w9h >>> 1) | (w9l << 31)) ^ ((w9h >>> 8) | (w9l << 24)) ^ (w9h >>> 7) ) + ((w8l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w6l >>> 19) | (w6h << 13)) ^ ((w6l << 3) | (w6h >>> 29)) ^ ((w6l >>> 6) | (w6h << 26)) )|0;\n w8l = ( w8l + xl)|0;\n w8h = ( w8h + ( ((w6h >>> 19) | (w6l << 13)) ^ ((w6h << 3) | (w6l >>> 29)) ^ (w6h >>> 6) ) + ((w8l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x4cf10364 + w8l )|0;\n th = ( 0xa2bfe8a1 + w8h + ((tl >>> 0) < (w8l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 41\n w9l = ( w9l + w2l )|0;\n w9h = ( w9h + w2h + ((w9l >>> 0) < (w2l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w10l >>> 1) | (w10h << 31)) ^ ((w10l >>> 8) | (w10h << 24)) ^ ((w10l >>> 7) | (w10h << 25)) )|0;\n w9l = ( w9l + xl)|0;\n w9h = ( w9h + ( ((w10h >>> 1) | (w10l << 31)) ^ ((w10h >>> 8) | (w10l << 24)) ^ (w10h >>> 7) ) + ((w9l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w7l >>> 19) | (w7h << 13)) ^ ((w7l << 3) | (w7h >>> 29)) ^ ((w7l >>> 6) | (w7h << 26)) )|0;\n w9l = ( w9l + xl)|0;\n w9h = ( w9h + ( ((w7h >>> 19) | (w7l << 13)) ^ ((w7h << 3) | (w7l >>> 29)) ^ (w7h >>> 6) ) + ((w9l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xbc423001 + w9l )|0;\n th = ( 0xa81a664b + w9h + ((tl >>> 0) < (w9l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 42\n w10l = ( w10l + w3l )|0;\n w10h = ( w10h + w3h + ((w10l >>> 0) < (w3l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w11l >>> 1) | (w11h << 31)) ^ ((w11l >>> 8) | (w11h << 24)) ^ ((w11l >>> 7) | (w11h << 25)) )|0;\n w10l = ( w10l + xl)|0;\n w10h = ( w10h + ( ((w11h >>> 1) | (w11l << 31)) ^ ((w11h >>> 8) | (w11l << 24)) ^ (w11h >>> 7) ) + ((w10l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w8l >>> 19) | (w8h << 13)) ^ ((w8l << 3) | (w8h >>> 29)) ^ ((w8l >>> 6) | (w8h << 26)) )|0;\n w10l = ( w10l + xl)|0;\n w10h = ( w10h + ( ((w8h >>> 19) | (w8l << 13)) ^ ((w8h << 3) | (w8l >>> 29)) ^ (w8h >>> 6) ) + ((w10l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xd0f89791 + w10l )|0;\n th = ( 0xc24b8b70 + w10h + ((tl >>> 0) < (w10l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 43\n w11l = ( w11l + w4l )|0;\n w11h = ( w11h + w4h + ((w11l >>> 0) < (w4l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w12l >>> 1) | (w12h << 31)) ^ ((w12l >>> 8) | (w12h << 24)) ^ ((w12l >>> 7) | (w12h << 25)) )|0;\n w11l = ( w11l + xl)|0;\n w11h = ( w11h + ( ((w12h >>> 1) | (w12l << 31)) ^ ((w12h >>> 8) | (w12l << 24)) ^ (w12h >>> 7) ) + ((w11l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w9l >>> 19) | (w9h << 13)) ^ ((w9l << 3) | (w9h >>> 29)) ^ ((w9l >>> 6) | (w9h << 26)) )|0;\n w11l = ( w11l + xl)|0;\n w11h = ( w11h + ( ((w9h >>> 19) | (w9l << 13)) ^ ((w9h << 3) | (w9l >>> 29)) ^ (w9h >>> 6) ) + ((w11l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x654be30 + w11l )|0;\n th = ( 0xc76c51a3 + w11h + ((tl >>> 0) < (w11l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 44\n w12l = ( w12l + w5l )|0;\n w12h = ( w12h + w5h + ((w12l >>> 0) < (w5l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w13l >>> 1) | (w13h << 31)) ^ ((w13l >>> 8) | (w13h << 24)) ^ ((w13l >>> 7) | (w13h << 25)) )|0;\n w12l = ( w12l + xl)|0;\n w12h = ( w12h + ( ((w13h >>> 1) | (w13l << 31)) ^ ((w13h >>> 8) | (w13l << 24)) ^ (w13h >>> 7) ) + ((w12l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w10l >>> 19) | (w10h << 13)) ^ ((w10l << 3) | (w10h >>> 29)) ^ ((w10l >>> 6) | (w10h << 26)) )|0;\n w12l = ( w12l + xl)|0;\n w12h = ( w12h + ( ((w10h >>> 19) | (w10l << 13)) ^ ((w10h << 3) | (w10l >>> 29)) ^ (w10h >>> 6) ) + ((w12l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xd6ef5218 + w12l )|0;\n th = ( 0xd192e819 + w12h + ((tl >>> 0) < (w12l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 45\n w13l = ( w13l + w6l )|0;\n w13h = ( w13h + w6h + ((w13l >>> 0) < (w6l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w14l >>> 1) | (w14h << 31)) ^ ((w14l >>> 8) | (w14h << 24)) ^ ((w14l >>> 7) | (w14h << 25)) )|0;\n w13l = ( w13l + xl)|0;\n w13h = ( w13h + ( ((w14h >>> 1) | (w14l << 31)) ^ ((w14h >>> 8) | (w14l << 24)) ^ (w14h >>> 7) ) + ((w13l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w11l >>> 19) | (w11h << 13)) ^ ((w11l << 3) | (w11h >>> 29)) ^ ((w11l >>> 6) | (w11h << 26)) )|0;\n w13l = ( w13l + xl)|0;\n w13h = ( w13h + ( ((w11h >>> 19) | (w11l << 13)) ^ ((w11h << 3) | (w11l >>> 29)) ^ (w11h >>> 6) ) + ((w13l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x5565a910 + w13l )|0;\n th = ( 0xd6990624 + w13h + ((tl >>> 0) < (w13l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 46\n w14l = ( w14l + w7l )|0;\n w14h = ( w14h + w7h + ((w14l >>> 0) < (w7l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w15l >>> 1) | (w15h << 31)) ^ ((w15l >>> 8) | (w15h << 24)) ^ ((w15l >>> 7) | (w15h << 25)) )|0;\n w14l = ( w14l + xl)|0;\n w14h = ( w14h + ( ((w15h >>> 1) | (w15l << 31)) ^ ((w15h >>> 8) | (w15l << 24)) ^ (w15h >>> 7) ) + ((w14l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w12l >>> 19) | (w12h << 13)) ^ ((w12l << 3) | (w12h >>> 29)) ^ ((w12l >>> 6) | (w12h << 26)) )|0;\n w14l = ( w14l + xl)|0;\n w14h = ( w14h + ( ((w12h >>> 19) | (w12l << 13)) ^ ((w12h << 3) | (w12l >>> 29)) ^ (w12h >>> 6) ) + ((w14l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x5771202a + w14l )|0;\n th = ( 0xf40e3585 + w14h + ((tl >>> 0) < (w14l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 47\n w15l = ( w15l + w8l )|0;\n w15h = ( w15h + w8h + ((w15l >>> 0) < (w8l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w0l >>> 1) | (w0h << 31)) ^ ((w0l >>> 8) | (w0h << 24)) ^ ((w0l >>> 7) | (w0h << 25)) )|0;\n w15l = ( w15l + xl)|0;\n w15h = ( w15h + ( ((w0h >>> 1) | (w0l << 31)) ^ ((w0h >>> 8) | (w0l << 24)) ^ (w0h >>> 7) ) + ((w15l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w13l >>> 19) | (w13h << 13)) ^ ((w13l << 3) | (w13h >>> 29)) ^ ((w13l >>> 6) | (w13h << 26)) )|0;\n w15l = ( w15l + xl)|0;\n w15h = ( w15h + ( ((w13h >>> 19) | (w13l << 13)) ^ ((w13h << 3) | (w13l >>> 29)) ^ (w13h >>> 6) ) + ((w15l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x32bbd1b8 + w15l )|0;\n th = ( 0x106aa070 + w15h + ((tl >>> 0) < (w15l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 48\n w0l = ( w0l + w9l )|0;\n w0h = ( w0h + w9h + ((w0l >>> 0) < (w9l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w1l >>> 1) | (w1h << 31)) ^ ((w1l >>> 8) | (w1h << 24)) ^ ((w1l >>> 7) | (w1h << 25)) )|0;\n w0l = ( w0l + xl)|0;\n w0h = ( w0h + ( ((w1h >>> 1) | (w1l << 31)) ^ ((w1h >>> 8) | (w1l << 24)) ^ (w1h >>> 7) ) + ((w0l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w14l >>> 19) | (w14h << 13)) ^ ((w14l << 3) | (w14h >>> 29)) ^ ((w14l >>> 6) | (w14h << 26)) )|0;\n w0l = ( w0l + xl)|0;\n w0h = ( w0h + ( ((w14h >>> 19) | (w14l << 13)) ^ ((w14h << 3) | (w14l >>> 29)) ^ (w14h >>> 6) ) + ((w0l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xb8d2d0c8 + w0l )|0;\n th = ( 0x19a4c116 + w0h + ((tl >>> 0) < (w0l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 49\n w1l = ( w1l + w10l )|0;\n w1h = ( w1h + w10h + ((w1l >>> 0) < (w10l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w2l >>> 1) | (w2h << 31)) ^ ((w2l >>> 8) | (w2h << 24)) ^ ((w2l >>> 7) | (w2h << 25)) )|0;\n w1l = ( w1l + xl)|0;\n w1h = ( w1h + ( ((w2h >>> 1) | (w2l << 31)) ^ ((w2h >>> 8) | (w2l << 24)) ^ (w2h >>> 7) ) + ((w1l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w15l >>> 19) | (w15h << 13)) ^ ((w15l << 3) | (w15h >>> 29)) ^ ((w15l >>> 6) | (w15h << 26)) )|0;\n w1l = ( w1l + xl)|0;\n w1h = ( w1h + ( ((w15h >>> 19) | (w15l << 13)) ^ ((w15h << 3) | (w15l >>> 29)) ^ (w15h >>> 6) ) + ((w1l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x5141ab53 + w1l )|0;\n th = ( 0x1e376c08 + w1h + ((tl >>> 0) < (w1l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 50\n w2l = ( w2l + w11l )|0;\n w2h = ( w2h + w11h + ((w2l >>> 0) < (w11l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w3l >>> 1) | (w3h << 31)) ^ ((w3l >>> 8) | (w3h << 24)) ^ ((w3l >>> 7) | (w3h << 25)) )|0;\n w2l = ( w2l + xl)|0;\n w2h = ( w2h + ( ((w3h >>> 1) | (w3l << 31)) ^ ((w3h >>> 8) | (w3l << 24)) ^ (w3h >>> 7) ) + ((w2l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w0l >>> 19) | (w0h << 13)) ^ ((w0l << 3) | (w0h >>> 29)) ^ ((w0l >>> 6) | (w0h << 26)) )|0;\n w2l = ( w2l + xl)|0;\n w2h = ( w2h + ( ((w0h >>> 19) | (w0l << 13)) ^ ((w0h << 3) | (w0l >>> 29)) ^ (w0h >>> 6) ) + ((w2l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xdf8eeb99 + w2l )|0;\n th = ( 0x2748774c + w2h + ((tl >>> 0) < (w2l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 51\n w3l = ( w3l + w12l )|0;\n w3h = ( w3h + w12h + ((w3l >>> 0) < (w12l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w4l >>> 1) | (w4h << 31)) ^ ((w4l >>> 8) | (w4h << 24)) ^ ((w4l >>> 7) | (w4h << 25)) )|0;\n w3l = ( w3l + xl)|0;\n w3h = ( w3h + ( ((w4h >>> 1) | (w4l << 31)) ^ ((w4h >>> 8) | (w4l << 24)) ^ (w4h >>> 7) ) + ((w3l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w1l >>> 19) | (w1h << 13)) ^ ((w1l << 3) | (w1h >>> 29)) ^ ((w1l >>> 6) | (w1h << 26)) )|0;\n w3l = ( w3l + xl)|0;\n w3h = ( w3h + ( ((w1h >>> 19) | (w1l << 13)) ^ ((w1h << 3) | (w1l >>> 29)) ^ (w1h >>> 6) ) + ((w3l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xe19b48a8 + w3l )|0;\n th = ( 0x34b0bcb5 + w3h + ((tl >>> 0) < (w3l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 52\n w4l = ( w4l + w13l )|0;\n w4h = ( w4h + w13h + ((w4l >>> 0) < (w13l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w5l >>> 1) | (w5h << 31)) ^ ((w5l >>> 8) | (w5h << 24)) ^ ((w5l >>> 7) | (w5h << 25)) )|0;\n w4l = ( w4l + xl)|0;\n w4h = ( w4h + ( ((w5h >>> 1) | (w5l << 31)) ^ ((w5h >>> 8) | (w5l << 24)) ^ (w5h >>> 7) ) + ((w4l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w2l >>> 19) | (w2h << 13)) ^ ((w2l << 3) | (w2h >>> 29)) ^ ((w2l >>> 6) | (w2h << 26)) )|0;\n w4l = ( w4l + xl)|0;\n w4h = ( w4h + ( ((w2h >>> 19) | (w2l << 13)) ^ ((w2h << 3) | (w2l >>> 29)) ^ (w2h >>> 6) ) + ((w4l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xc5c95a63 + w4l )|0;\n th = ( 0x391c0cb3 + w4h + ((tl >>> 0) < (w4l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 53\n w5l = ( w5l + w14l )|0;\n w5h = ( w5h + w14h + ((w5l >>> 0) < (w14l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w6l >>> 1) | (w6h << 31)) ^ ((w6l >>> 8) | (w6h << 24)) ^ ((w6l >>> 7) | (w6h << 25)) )|0;\n w5l = ( w5l + xl)|0;\n w5h = ( w5h + ( ((w6h >>> 1) | (w6l << 31)) ^ ((w6h >>> 8) | (w6l << 24)) ^ (w6h >>> 7) ) + ((w5l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w3l >>> 19) | (w3h << 13)) ^ ((w3l << 3) | (w3h >>> 29)) ^ ((w3l >>> 6) | (w3h << 26)) )|0;\n w5l = ( w5l + xl)|0;\n w5h = ( w5h + ( ((w3h >>> 19) | (w3l << 13)) ^ ((w3h << 3) | (w3l >>> 29)) ^ (w3h >>> 6) ) + ((w5l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xe3418acb + w5l )|0;\n th = ( 0x4ed8aa4a + w5h + ((tl >>> 0) < (w5l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 54\n w6l = ( w6l + w15l )|0;\n w6h = ( w6h + w15h + ((w6l >>> 0) < (w15l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w7l >>> 1) | (w7h << 31)) ^ ((w7l >>> 8) | (w7h << 24)) ^ ((w7l >>> 7) | (w7h << 25)) )|0;\n w6l = ( w6l + xl)|0;\n w6h = ( w6h + ( ((w7h >>> 1) | (w7l << 31)) ^ ((w7h >>> 8) | (w7l << 24)) ^ (w7h >>> 7) ) + ((w6l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w4l >>> 19) | (w4h << 13)) ^ ((w4l << 3) | (w4h >>> 29)) ^ ((w4l >>> 6) | (w4h << 26)) )|0;\n w6l = ( w6l + xl)|0;\n w6h = ( w6h + ( ((w4h >>> 19) | (w4l << 13)) ^ ((w4h << 3) | (w4l >>> 29)) ^ (w4h >>> 6) ) + ((w6l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x7763e373 + w6l )|0;\n th = ( 0x5b9cca4f + w6h + ((tl >>> 0) < (w6l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 55\n w7l = ( w7l + w0l )|0;\n w7h = ( w7h + w0h + ((w7l >>> 0) < (w0l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w8l >>> 1) | (w8h << 31)) ^ ((w8l >>> 8) | (w8h << 24)) ^ ((w8l >>> 7) | (w8h << 25)) )|0;\n w7l = ( w7l + xl)|0;\n w7h = ( w7h + ( ((w8h >>> 1) | (w8l << 31)) ^ ((w8h >>> 8) | (w8l << 24)) ^ (w8h >>> 7) ) + ((w7l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w5l >>> 19) | (w5h << 13)) ^ ((w5l << 3) | (w5h >>> 29)) ^ ((w5l >>> 6) | (w5h << 26)) )|0;\n w7l = ( w7l + xl)|0;\n w7h = ( w7h + ( ((w5h >>> 19) | (w5l << 13)) ^ ((w5h << 3) | (w5l >>> 29)) ^ (w5h >>> 6) ) + ((w7l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xd6b2b8a3 + w7l )|0;\n th = ( 0x682e6ff3 + w7h + ((tl >>> 0) < (w7l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 56\n w8l = ( w8l + w1l )|0;\n w8h = ( w8h + w1h + ((w8l >>> 0) < (w1l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w9l >>> 1) | (w9h << 31)) ^ ((w9l >>> 8) | (w9h << 24)) ^ ((w9l >>> 7) | (w9h << 25)) )|0;\n w8l = ( w8l + xl)|0;\n w8h = ( w8h + ( ((w9h >>> 1) | (w9l << 31)) ^ ((w9h >>> 8) | (w9l << 24)) ^ (w9h >>> 7) ) + ((w8l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w6l >>> 19) | (w6h << 13)) ^ ((w6l << 3) | (w6h >>> 29)) ^ ((w6l >>> 6) | (w6h << 26)) )|0;\n w8l = ( w8l + xl)|0;\n w8h = ( w8h + ( ((w6h >>> 19) | (w6l << 13)) ^ ((w6h << 3) | (w6l >>> 29)) ^ (w6h >>> 6) ) + ((w8l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x5defb2fc + w8l )|0;\n th = ( 0x748f82ee + w8h + ((tl >>> 0) < (w8l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 57\n w9l = ( w9l + w2l )|0;\n w9h = ( w9h + w2h + ((w9l >>> 0) < (w2l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w10l >>> 1) | (w10h << 31)) ^ ((w10l >>> 8) | (w10h << 24)) ^ ((w10l >>> 7) | (w10h << 25)) )|0;\n w9l = ( w9l + xl)|0;\n w9h = ( w9h + ( ((w10h >>> 1) | (w10l << 31)) ^ ((w10h >>> 8) | (w10l << 24)) ^ (w10h >>> 7) ) + ((w9l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w7l >>> 19) | (w7h << 13)) ^ ((w7l << 3) | (w7h >>> 29)) ^ ((w7l >>> 6) | (w7h << 26)) )|0;\n w9l = ( w9l + xl)|0;\n w9h = ( w9h + ( ((w7h >>> 19) | (w7l << 13)) ^ ((w7h << 3) | (w7l >>> 29)) ^ (w7h >>> 6) ) + ((w9l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x43172f60 + w9l )|0;\n th = ( 0x78a5636f + w9h + ((tl >>> 0) < (w9l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 58\n w10l = ( w10l + w3l )|0;\n w10h = ( w10h + w3h + ((w10l >>> 0) < (w3l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w11l >>> 1) | (w11h << 31)) ^ ((w11l >>> 8) | (w11h << 24)) ^ ((w11l >>> 7) | (w11h << 25)) )|0;\n w10l = ( w10l + xl)|0;\n w10h = ( w10h + ( ((w11h >>> 1) | (w11l << 31)) ^ ((w11h >>> 8) | (w11l << 24)) ^ (w11h >>> 7) ) + ((w10l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w8l >>> 19) | (w8h << 13)) ^ ((w8l << 3) | (w8h >>> 29)) ^ ((w8l >>> 6) | (w8h << 26)) )|0;\n w10l = ( w10l + xl)|0;\n w10h = ( w10h + ( ((w8h >>> 19) | (w8l << 13)) ^ ((w8h << 3) | (w8l >>> 29)) ^ (w8h >>> 6) ) + ((w10l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xa1f0ab72 + w10l )|0;\n th = ( 0x84c87814 + w10h + ((tl >>> 0) < (w10l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 59\n w11l = ( w11l + w4l )|0;\n w11h = ( w11h + w4h + ((w11l >>> 0) < (w4l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w12l >>> 1) | (w12h << 31)) ^ ((w12l >>> 8) | (w12h << 24)) ^ ((w12l >>> 7) | (w12h << 25)) )|0;\n w11l = ( w11l + xl)|0;\n w11h = ( w11h + ( ((w12h >>> 1) | (w12l << 31)) ^ ((w12h >>> 8) | (w12l << 24)) ^ (w12h >>> 7) ) + ((w11l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w9l >>> 19) | (w9h << 13)) ^ ((w9l << 3) | (w9h >>> 29)) ^ ((w9l >>> 6) | (w9h << 26)) )|0;\n w11l = ( w11l + xl)|0;\n w11h = ( w11h + ( ((w9h >>> 19) | (w9l << 13)) ^ ((w9h << 3) | (w9l >>> 29)) ^ (w9h >>> 6) ) + ((w11l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x1a6439ec + w11l )|0;\n th = ( 0x8cc70208 + w11h + ((tl >>> 0) < (w11l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 60\n w12l = ( w12l + w5l )|0;\n w12h = ( w12h + w5h + ((w12l >>> 0) < (w5l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w13l >>> 1) | (w13h << 31)) ^ ((w13l >>> 8) | (w13h << 24)) ^ ((w13l >>> 7) | (w13h << 25)) )|0;\n w12l = ( w12l + xl)|0;\n w12h = ( w12h + ( ((w13h >>> 1) | (w13l << 31)) ^ ((w13h >>> 8) | (w13l << 24)) ^ (w13h >>> 7) ) + ((w12l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w10l >>> 19) | (w10h << 13)) ^ ((w10l << 3) | (w10h >>> 29)) ^ ((w10l >>> 6) | (w10h << 26)) )|0;\n w12l = ( w12l + xl)|0;\n w12h = ( w12h + ( ((w10h >>> 19) | (w10l << 13)) ^ ((w10h << 3) | (w10l >>> 29)) ^ (w10h >>> 6) ) + ((w12l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x23631e28 + w12l )|0;\n th = ( 0x90befffa + w12h + ((tl >>> 0) < (w12l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 61\n w13l = ( w13l + w6l )|0;\n w13h = ( w13h + w6h + ((w13l >>> 0) < (w6l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w14l >>> 1) | (w14h << 31)) ^ ((w14l >>> 8) | (w14h << 24)) ^ ((w14l >>> 7) | (w14h << 25)) )|0;\n w13l = ( w13l + xl)|0;\n w13h = ( w13h + ( ((w14h >>> 1) | (w14l << 31)) ^ ((w14h >>> 8) | (w14l << 24)) ^ (w14h >>> 7) ) + ((w13l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w11l >>> 19) | (w11h << 13)) ^ ((w11l << 3) | (w11h >>> 29)) ^ ((w11l >>> 6) | (w11h << 26)) )|0;\n w13l = ( w13l + xl)|0;\n w13h = ( w13h + ( ((w11h >>> 19) | (w11l << 13)) ^ ((w11h << 3) | (w11l >>> 29)) ^ (w11h >>> 6) ) + ((w13l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xde82bde9 + w13l )|0;\n th = ( 0xa4506ceb + w13h + ((tl >>> 0) < (w13l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 62\n w14l = ( w14l + w7l )|0;\n w14h = ( w14h + w7h + ((w14l >>> 0) < (w7l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w15l >>> 1) | (w15h << 31)) ^ ((w15l >>> 8) | (w15h << 24)) ^ ((w15l >>> 7) | (w15h << 25)) )|0;\n w14l = ( w14l + xl)|0;\n w14h = ( w14h + ( ((w15h >>> 1) | (w15l << 31)) ^ ((w15h >>> 8) | (w15l << 24)) ^ (w15h >>> 7) ) + ((w14l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w12l >>> 19) | (w12h << 13)) ^ ((w12l << 3) | (w12h >>> 29)) ^ ((w12l >>> 6) | (w12h << 26)) )|0;\n w14l = ( w14l + xl)|0;\n w14h = ( w14h + ( ((w12h >>> 19) | (w12l << 13)) ^ ((w12h << 3) | (w12l >>> 29)) ^ (w12h >>> 6) ) + ((w14l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xb2c67915 + w14l )|0;\n th = ( 0xbef9a3f7 + w14h + ((tl >>> 0) < (w14l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 63\n w15l = ( w15l + w8l )|0;\n w15h = ( w15h + w8h + ((w15l >>> 0) < (w8l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w0l >>> 1) | (w0h << 31)) ^ ((w0l >>> 8) | (w0h << 24)) ^ ((w0l >>> 7) | (w0h << 25)) )|0;\n w15l = ( w15l + xl)|0;\n w15h = ( w15h + ( ((w0h >>> 1) | (w0l << 31)) ^ ((w0h >>> 8) | (w0l << 24)) ^ (w0h >>> 7) ) + ((w15l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w13l >>> 19) | (w13h << 13)) ^ ((w13l << 3) | (w13h >>> 29)) ^ ((w13l >>> 6) | (w13h << 26)) )|0;\n w15l = ( w15l + xl)|0;\n w15h = ( w15h + ( ((w13h >>> 19) | (w13l << 13)) ^ ((w13h << 3) | (w13l >>> 29)) ^ (w13h >>> 6) ) + ((w15l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xe372532b + w15l )|0;\n th = ( 0xc67178f2 + w15h + ((tl >>> 0) < (w15l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 64\n w0l = ( w0l + w9l )|0;\n w0h = ( w0h + w9h + ((w0l >>> 0) < (w9l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w1l >>> 1) | (w1h << 31)) ^ ((w1l >>> 8) | (w1h << 24)) ^ ((w1l >>> 7) | (w1h << 25)) )|0;\n w0l = ( w0l + xl)|0;\n w0h = ( w0h + ( ((w1h >>> 1) | (w1l << 31)) ^ ((w1h >>> 8) | (w1l << 24)) ^ (w1h >>> 7) ) + ((w0l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w14l >>> 19) | (w14h << 13)) ^ ((w14l << 3) | (w14h >>> 29)) ^ ((w14l >>> 6) | (w14h << 26)) )|0;\n w0l = ( w0l + xl)|0;\n w0h = ( w0h + ( ((w14h >>> 19) | (w14l << 13)) ^ ((w14h << 3) | (w14l >>> 29)) ^ (w14h >>> 6) ) + ((w0l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xea26619c + w0l )|0;\n th = ( 0xca273ece + w0h + ((tl >>> 0) < (w0l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 65\n w1l = ( w1l + w10l )|0;\n w1h = ( w1h + w10h + ((w1l >>> 0) < (w10l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w2l >>> 1) | (w2h << 31)) ^ ((w2l >>> 8) | (w2h << 24)) ^ ((w2l >>> 7) | (w2h << 25)) )|0;\n w1l = ( w1l + xl)|0;\n w1h = ( w1h + ( ((w2h >>> 1) | (w2l << 31)) ^ ((w2h >>> 8) | (w2l << 24)) ^ (w2h >>> 7) ) + ((w1l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w15l >>> 19) | (w15h << 13)) ^ ((w15l << 3) | (w15h >>> 29)) ^ ((w15l >>> 6) | (w15h << 26)) )|0;\n w1l = ( w1l + xl)|0;\n w1h = ( w1h + ( ((w15h >>> 19) | (w15l << 13)) ^ ((w15h << 3) | (w15l >>> 29)) ^ (w15h >>> 6) ) + ((w1l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x21c0c207 + w1l )|0;\n th = ( 0xd186b8c7 + w1h + ((tl >>> 0) < (w1l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 66\n w2l = ( w2l + w11l )|0;\n w2h = ( w2h + w11h + ((w2l >>> 0) < (w11l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w3l >>> 1) | (w3h << 31)) ^ ((w3l >>> 8) | (w3h << 24)) ^ ((w3l >>> 7) | (w3h << 25)) )|0;\n w2l = ( w2l + xl)|0;\n w2h = ( w2h + ( ((w3h >>> 1) | (w3l << 31)) ^ ((w3h >>> 8) | (w3l << 24)) ^ (w3h >>> 7) ) + ((w2l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w0l >>> 19) | (w0h << 13)) ^ ((w0l << 3) | (w0h >>> 29)) ^ ((w0l >>> 6) | (w0h << 26)) )|0;\n w2l = ( w2l + xl)|0;\n w2h = ( w2h + ( ((w0h >>> 19) | (w0l << 13)) ^ ((w0h << 3) | (w0l >>> 29)) ^ (w0h >>> 6) ) + ((w2l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xcde0eb1e + w2l )|0;\n th = ( 0xeada7dd6 + w2h + ((tl >>> 0) < (w2l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 67\n w3l = ( w3l + w12l )|0;\n w3h = ( w3h + w12h + ((w3l >>> 0) < (w12l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w4l >>> 1) | (w4h << 31)) ^ ((w4l >>> 8) | (w4h << 24)) ^ ((w4l >>> 7) | (w4h << 25)) )|0;\n w3l = ( w3l + xl)|0;\n w3h = ( w3h + ( ((w4h >>> 1) | (w4l << 31)) ^ ((w4h >>> 8) | (w4l << 24)) ^ (w4h >>> 7) ) + ((w3l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w1l >>> 19) | (w1h << 13)) ^ ((w1l << 3) | (w1h >>> 29)) ^ ((w1l >>> 6) | (w1h << 26)) )|0;\n w3l = ( w3l + xl)|0;\n w3h = ( w3h + ( ((w1h >>> 19) | (w1l << 13)) ^ ((w1h << 3) | (w1l >>> 29)) ^ (w1h >>> 6) ) + ((w3l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xee6ed178 + w3l )|0;\n th = ( 0xf57d4f7f + w3h + ((tl >>> 0) < (w3l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 68\n w4l = ( w4l + w13l )|0;\n w4h = ( w4h + w13h + ((w4l >>> 0) < (w13l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w5l >>> 1) | (w5h << 31)) ^ ((w5l >>> 8) | (w5h << 24)) ^ ((w5l >>> 7) | (w5h << 25)) )|0;\n w4l = ( w4l + xl)|0;\n w4h = ( w4h + ( ((w5h >>> 1) | (w5l << 31)) ^ ((w5h >>> 8) | (w5l << 24)) ^ (w5h >>> 7) ) + ((w4l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w2l >>> 19) | (w2h << 13)) ^ ((w2l << 3) | (w2h >>> 29)) ^ ((w2l >>> 6) | (w2h << 26)) )|0;\n w4l = ( w4l + xl)|0;\n w4h = ( w4h + ( ((w2h >>> 19) | (w2l << 13)) ^ ((w2h << 3) | (w2l >>> 29)) ^ (w2h >>> 6) ) + ((w4l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x72176fba + w4l )|0;\n th = ( 0x6f067aa + w4h + ((tl >>> 0) < (w4l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 69\n w5l = ( w5l + w14l )|0;\n w5h = ( w5h + w14h + ((w5l >>> 0) < (w14l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w6l >>> 1) | (w6h << 31)) ^ ((w6l >>> 8) | (w6h << 24)) ^ ((w6l >>> 7) | (w6h << 25)) )|0;\n w5l = ( w5l + xl)|0;\n w5h = ( w5h + ( ((w6h >>> 1) | (w6l << 31)) ^ ((w6h >>> 8) | (w6l << 24)) ^ (w6h >>> 7) ) + ((w5l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w3l >>> 19) | (w3h << 13)) ^ ((w3l << 3) | (w3h >>> 29)) ^ ((w3l >>> 6) | (w3h << 26)) )|0;\n w5l = ( w5l + xl)|0;\n w5h = ( w5h + ( ((w3h >>> 19) | (w3l << 13)) ^ ((w3h << 3) | (w3l >>> 29)) ^ (w3h >>> 6) ) + ((w5l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xa2c898a6 + w5l )|0;\n th = ( 0xa637dc5 + w5h + ((tl >>> 0) < (w5l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 70\n w6l = ( w6l + w15l )|0;\n w6h = ( w6h + w15h + ((w6l >>> 0) < (w15l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w7l >>> 1) | (w7h << 31)) ^ ((w7l >>> 8) | (w7h << 24)) ^ ((w7l >>> 7) | (w7h << 25)) )|0;\n w6l = ( w6l + xl)|0;\n w6h = ( w6h + ( ((w7h >>> 1) | (w7l << 31)) ^ ((w7h >>> 8) | (w7l << 24)) ^ (w7h >>> 7) ) + ((w6l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w4l >>> 19) | (w4h << 13)) ^ ((w4l << 3) | (w4h >>> 29)) ^ ((w4l >>> 6) | (w4h << 26)) )|0;\n w6l = ( w6l + xl)|0;\n w6h = ( w6h + ( ((w4h >>> 19) | (w4l << 13)) ^ ((w4h << 3) | (w4l >>> 29)) ^ (w4h >>> 6) ) + ((w6l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xbef90dae + w6l )|0;\n th = ( 0x113f9804 + w6h + ((tl >>> 0) < (w6l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 71\n w7l = ( w7l + w0l )|0;\n w7h = ( w7h + w0h + ((w7l >>> 0) < (w0l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w8l >>> 1) | (w8h << 31)) ^ ((w8l >>> 8) | (w8h << 24)) ^ ((w8l >>> 7) | (w8h << 25)) )|0;\n w7l = ( w7l + xl)|0;\n w7h = ( w7h + ( ((w8h >>> 1) | (w8l << 31)) ^ ((w8h >>> 8) | (w8l << 24)) ^ (w8h >>> 7) ) + ((w7l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w5l >>> 19) | (w5h << 13)) ^ ((w5l << 3) | (w5h >>> 29)) ^ ((w5l >>> 6) | (w5h << 26)) )|0;\n w7l = ( w7l + xl)|0;\n w7h = ( w7h + ( ((w5h >>> 19) | (w5l << 13)) ^ ((w5h << 3) | (w5l >>> 29)) ^ (w5h >>> 6) ) + ((w7l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x131c471b + w7l )|0;\n th = ( 0x1b710b35 + w7h + ((tl >>> 0) < (w7l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 72\n w8l = ( w8l + w1l )|0;\n w8h = ( w8h + w1h + ((w8l >>> 0) < (w1l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w9l >>> 1) | (w9h << 31)) ^ ((w9l >>> 8) | (w9h << 24)) ^ ((w9l >>> 7) | (w9h << 25)) )|0;\n w8l = ( w8l + xl)|0;\n w8h = ( w8h + ( ((w9h >>> 1) | (w9l << 31)) ^ ((w9h >>> 8) | (w9l << 24)) ^ (w9h >>> 7) ) + ((w8l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w6l >>> 19) | (w6h << 13)) ^ ((w6l << 3) | (w6h >>> 29)) ^ ((w6l >>> 6) | (w6h << 26)) )|0;\n w8l = ( w8l + xl)|0;\n w8h = ( w8h + ( ((w6h >>> 19) | (w6l << 13)) ^ ((w6h << 3) | (w6l >>> 29)) ^ (w6h >>> 6) ) + ((w8l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x23047d84 + w8l )|0;\n th = ( 0x28db77f5 + w8h + ((tl >>> 0) < (w8l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 73\n w9l = ( w9l + w2l )|0;\n w9h = ( w9h + w2h + ((w9l >>> 0) < (w2l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w10l >>> 1) | (w10h << 31)) ^ ((w10l >>> 8) | (w10h << 24)) ^ ((w10l >>> 7) | (w10h << 25)) )|0;\n w9l = ( w9l + xl)|0;\n w9h = ( w9h + ( ((w10h >>> 1) | (w10l << 31)) ^ ((w10h >>> 8) | (w10l << 24)) ^ (w10h >>> 7) ) + ((w9l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w7l >>> 19) | (w7h << 13)) ^ ((w7l << 3) | (w7h >>> 29)) ^ ((w7l >>> 6) | (w7h << 26)) )|0;\n w9l = ( w9l + xl)|0;\n w9h = ( w9h + ( ((w7h >>> 19) | (w7l << 13)) ^ ((w7h << 3) | (w7l >>> 29)) ^ (w7h >>> 6) ) + ((w9l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x40c72493 + w9l )|0;\n th = ( 0x32caab7b + w9h + ((tl >>> 0) < (w9l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 74\n w10l = ( w10l + w3l )|0;\n w10h = ( w10h + w3h + ((w10l >>> 0) < (w3l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w11l >>> 1) | (w11h << 31)) ^ ((w11l >>> 8) | (w11h << 24)) ^ ((w11l >>> 7) | (w11h << 25)) )|0;\n w10l = ( w10l + xl)|0;\n w10h = ( w10h + ( ((w11h >>> 1) | (w11l << 31)) ^ ((w11h >>> 8) | (w11l << 24)) ^ (w11h >>> 7) ) + ((w10l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w8l >>> 19) | (w8h << 13)) ^ ((w8l << 3) | (w8h >>> 29)) ^ ((w8l >>> 6) | (w8h << 26)) )|0;\n w10l = ( w10l + xl)|0;\n w10h = ( w10h + ( ((w8h >>> 19) | (w8l << 13)) ^ ((w8h << 3) | (w8l >>> 29)) ^ (w8h >>> 6) ) + ((w10l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x15c9bebc + w10l )|0;\n th = ( 0x3c9ebe0a + w10h + ((tl >>> 0) < (w10l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 75\n w11l = ( w11l + w4l )|0;\n w11h = ( w11h + w4h + ((w11l >>> 0) < (w4l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w12l >>> 1) | (w12h << 31)) ^ ((w12l >>> 8) | (w12h << 24)) ^ ((w12l >>> 7) | (w12h << 25)) )|0;\n w11l = ( w11l + xl)|0;\n w11h = ( w11h + ( ((w12h >>> 1) | (w12l << 31)) ^ ((w12h >>> 8) | (w12l << 24)) ^ (w12h >>> 7) ) + ((w11l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w9l >>> 19) | (w9h << 13)) ^ ((w9l << 3) | (w9h >>> 29)) ^ ((w9l >>> 6) | (w9h << 26)) )|0;\n w11l = ( w11l + xl)|0;\n w11h = ( w11h + ( ((w9h >>> 19) | (w9l << 13)) ^ ((w9h << 3) | (w9l >>> 29)) ^ (w9h >>> 6) ) + ((w11l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x9c100d4c + w11l )|0;\n th = ( 0x431d67c4 + w11h + ((tl >>> 0) < (w11l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 76\n w12l = ( w12l + w5l )|0;\n w12h = ( w12h + w5h + ((w12l >>> 0) < (w5l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w13l >>> 1) | (w13h << 31)) ^ ((w13l >>> 8) | (w13h << 24)) ^ ((w13l >>> 7) | (w13h << 25)) )|0;\n w12l = ( w12l + xl)|0;\n w12h = ( w12h + ( ((w13h >>> 1) | (w13l << 31)) ^ ((w13h >>> 8) | (w13l << 24)) ^ (w13h >>> 7) ) + ((w12l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w10l >>> 19) | (w10h << 13)) ^ ((w10l << 3) | (w10h >>> 29)) ^ ((w10l >>> 6) | (w10h << 26)) )|0;\n w12l = ( w12l + xl)|0;\n w12h = ( w12h + ( ((w10h >>> 19) | (w10l << 13)) ^ ((w10h << 3) | (w10l >>> 29)) ^ (w10h >>> 6) ) + ((w12l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xcb3e42b6 + w12l )|0;\n th = ( 0x4cc5d4be + w12h + ((tl >>> 0) < (w12l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 77\n w13l = ( w13l + w6l )|0;\n w13h = ( w13h + w6h + ((w13l >>> 0) < (w6l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w14l >>> 1) | (w14h << 31)) ^ ((w14l >>> 8) | (w14h << 24)) ^ ((w14l >>> 7) | (w14h << 25)) )|0;\n w13l = ( w13l + xl)|0;\n w13h = ( w13h + ( ((w14h >>> 1) | (w14l << 31)) ^ ((w14h >>> 8) | (w14l << 24)) ^ (w14h >>> 7) ) + ((w13l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w11l >>> 19) | (w11h << 13)) ^ ((w11l << 3) | (w11h >>> 29)) ^ ((w11l >>> 6) | (w11h << 26)) )|0;\n w13l = ( w13l + xl)|0;\n w13h = ( w13h + ( ((w11h >>> 19) | (w11l << 13)) ^ ((w11h << 3) | (w11l >>> 29)) ^ (w11h >>> 6) ) + ((w13l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0xfc657e2a + w13l )|0;\n th = ( 0x597f299c + w13h + ((tl >>> 0) < (w13l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 78\n w14l = ( w14l + w7l )|0;\n w14h = ( w14h + w7h + ((w14l >>> 0) < (w7l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w15l >>> 1) | (w15h << 31)) ^ ((w15l >>> 8) | (w15h << 24)) ^ ((w15l >>> 7) | (w15h << 25)) )|0;\n w14l = ( w14l + xl)|0;\n w14h = ( w14h + ( ((w15h >>> 1) | (w15l << 31)) ^ ((w15h >>> 8) | (w15l << 24)) ^ (w15h >>> 7) ) + ((w14l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w12l >>> 19) | (w12h << 13)) ^ ((w12l << 3) | (w12h >>> 29)) ^ ((w12l >>> 6) | (w12h << 26)) )|0;\n w14l = ( w14l + xl)|0;\n w14h = ( w14h + ( ((w12h >>> 19) | (w12l << 13)) ^ ((w12h << 3) | (w12l >>> 29)) ^ (w12h >>> 6) ) + ((w14l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x3ad6faec + w14l )|0;\n th = ( 0x5fcb6fab + w14h + ((tl >>> 0) < (w14l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n // 79\n w15l = ( w15l + w8l )|0;\n w15h = ( w15h + w8h + ((w15l >>> 0) < (w8l >>> 0) ? 1 : 0) )|0;\n xl = ( ((w0l >>> 1) | (w0h << 31)) ^ ((w0l >>> 8) | (w0h << 24)) ^ ((w0l >>> 7) | (w0h << 25)) )|0;\n w15l = ( w15l + xl)|0;\n w15h = ( w15h + ( ((w0h >>> 1) | (w0l << 31)) ^ ((w0h >>> 8) | (w0l << 24)) ^ (w0h >>> 7) ) + ((w15l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ((w13l >>> 19) | (w13h << 13)) ^ ((w13l << 3) | (w13h >>> 29)) ^ ((w13l >>> 6) | (w13h << 26)) )|0;\n w15l = ( w15l + xl)|0;\n w15h = ( w15h + ( ((w13h >>> 19) | (w13l << 13)) ^ ((w13h << 3) | (w13l >>> 29)) ^ (w13h >>> 6) ) + ((w15l >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n tl = ( 0x4a475817 + w15l )|0;\n th = ( 0x6c44198c + w15h + ((tl >>> 0) < (w15l >>> 0) ? 1 : 0) )|0;\n tl = ( tl + hl )|0;\n th = ( th + hh + ((tl >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n xl = ( ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)) )|0;\n tl = ( tl + xl )|0;\n th = ( th + (((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9))) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n xl = ( ( gl ^ el & (fl^gl) ) )|0;\n tl = ( tl + xl )|0;\n th = ( th + ( gh ^ eh & (fh^gh) ) + ((tl >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n hl = gl; hh = gh;\n gl = fl; gh = fh;\n fl = el; fh = eh;\n el = ( dl + tl )|0; eh = ( dh + th + ((el >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n dl = cl; dh = ch;\n cl = bl; ch = bh;\n bl = al; bh = ah;\n al = ( tl + ( (bl & cl) ^ ( dl & (bl ^ cl) ) ) )|0;\n ah = ( th + ( (bh & ch) ^ ( dh & (bh ^ ch) ) ) + ((al >>> 0) < (tl >>> 0) ? 1 : 0) )|0;\n xl = ( ((bl >>> 28) | (bh << 4)) ^ ((bl << 30) | (bh >>> 2)) ^ ((bl << 25) | (bh >>> 7)) )|0;\n al = ( al + xl )|0;\n ah = ( ah + (((bh >>> 28) | (bl << 4)) ^ ((bh << 30) | (bl >>> 2)) ^ ((bh << 25) | (bl >>> 7))) + ((al >>> 0) < (xl >>> 0) ? 1 : 0) )|0;\n\n H0l = ( H0l + al )|0;\n H0h = ( H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0) )|0;\n H1l = ( H1l + bl )|0;\n H1h = ( H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0) )|0;\n H2l = ( H2l + cl )|0;\n H2h = ( H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0) )|0;\n H3l = ( H3l + dl )|0;\n H3h = ( H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0) )|0;\n H4l = ( H4l + el )|0;\n H4h = ( H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0) )|0;\n H5l = ( H5l + fl )|0;\n H5h = ( H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0) )|0;\n H6l = ( H6l + gl )|0;\n H6h = ( H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0) )|0;\n H7l = ( H7l + hl )|0;\n H7h = ( H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0) )|0;\n }\n\n function _core_heap ( offset ) {\n offset = offset|0;\n\n _core(\n HEAP[offset|0]<<24 | HEAP[offset|1]<<16 | HEAP[offset|2]<<8 | HEAP[offset|3],\n HEAP[offset|4]<<24 | HEAP[offset|5]<<16 | HEAP[offset|6]<<8 | HEAP[offset|7],\n HEAP[offset|8]<<24 | HEAP[offset|9]<<16 | HEAP[offset|10]<<8 | HEAP[offset|11],\n HEAP[offset|12]<<24 | HEAP[offset|13]<<16 | HEAP[offset|14]<<8 | HEAP[offset|15],\n HEAP[offset|16]<<24 | HEAP[offset|17]<<16 | HEAP[offset|18]<<8 | HEAP[offset|19],\n HEAP[offset|20]<<24 | HEAP[offset|21]<<16 | HEAP[offset|22]<<8 | HEAP[offset|23],\n HEAP[offset|24]<<24 | HEAP[offset|25]<<16 | HEAP[offset|26]<<8 | HEAP[offset|27],\n HEAP[offset|28]<<24 | HEAP[offset|29]<<16 | HEAP[offset|30]<<8 | HEAP[offset|31],\n HEAP[offset|32]<<24 | HEAP[offset|33]<<16 | HEAP[offset|34]<<8 | HEAP[offset|35],\n HEAP[offset|36]<<24 | HEAP[offset|37]<<16 | HEAP[offset|38]<<8 | HEAP[offset|39],\n HEAP[offset|40]<<24 | HEAP[offset|41]<<16 | HEAP[offset|42]<<8 | HEAP[offset|43],\n HEAP[offset|44]<<24 | HEAP[offset|45]<<16 | HEAP[offset|46]<<8 | HEAP[offset|47],\n HEAP[offset|48]<<24 | HEAP[offset|49]<<16 | HEAP[offset|50]<<8 | HEAP[offset|51],\n HEAP[offset|52]<<24 | HEAP[offset|53]<<16 | HEAP[offset|54]<<8 | HEAP[offset|55],\n HEAP[offset|56]<<24 | HEAP[offset|57]<<16 | HEAP[offset|58]<<8 | HEAP[offset|59],\n HEAP[offset|60]<<24 | HEAP[offset|61]<<16 | HEAP[offset|62]<<8 | HEAP[offset|63],\n HEAP[offset|64]<<24 | HEAP[offset|65]<<16 | HEAP[offset|66]<<8 | HEAP[offset|67],\n HEAP[offset|68]<<24 | HEAP[offset|69]<<16 | HEAP[offset|70]<<8 | HEAP[offset|71],\n HEAP[offset|72]<<24 | HEAP[offset|73]<<16 | HEAP[offset|74]<<8 | HEAP[offset|75],\n HEAP[offset|76]<<24 | HEAP[offset|77]<<16 | HEAP[offset|78]<<8 | HEAP[offset|79],\n HEAP[offset|80]<<24 | HEAP[offset|81]<<16 | HEAP[offset|82]<<8 | HEAP[offset|83],\n HEAP[offset|84]<<24 | HEAP[offset|85]<<16 | HEAP[offset|86]<<8 | HEAP[offset|87],\n HEAP[offset|88]<<24 | HEAP[offset|89]<<16 | HEAP[offset|90]<<8 | HEAP[offset|91],\n HEAP[offset|92]<<24 | HEAP[offset|93]<<16 | HEAP[offset|94]<<8 | HEAP[offset|95],\n HEAP[offset|96]<<24 | HEAP[offset|97]<<16 | HEAP[offset|98]<<8 | HEAP[offset|99],\n HEAP[offset|100]<<24 | HEAP[offset|101]<<16 | HEAP[offset|102]<<8 | HEAP[offset|103],\n HEAP[offset|104]<<24 | HEAP[offset|105]<<16 | HEAP[offset|106]<<8 | HEAP[offset|107],\n HEAP[offset|108]<<24 | HEAP[offset|109]<<16 | HEAP[offset|110]<<8 | HEAP[offset|111],\n HEAP[offset|112]<<24 | HEAP[offset|113]<<16 | HEAP[offset|114]<<8 | HEAP[offset|115],\n HEAP[offset|116]<<24 | HEAP[offset|117]<<16 | HEAP[offset|118]<<8 | HEAP[offset|119],\n HEAP[offset|120]<<24 | HEAP[offset|121]<<16 | HEAP[offset|122]<<8 | HEAP[offset|123],\n HEAP[offset|124]<<24 | HEAP[offset|125]<<16 | HEAP[offset|126]<<8 | HEAP[offset|127]\n );\n }\n\n // offset — multiple of 32\n function _state_to_heap ( output ) {\n output = output|0;\n\n HEAP[output|0] = H0h>>>24;\n HEAP[output|1] = H0h>>>16&255;\n HEAP[output|2] = H0h>>>8&255;\n HEAP[output|3] = H0h&255;\n HEAP[output|4] = H0l>>>24;\n HEAP[output|5] = H0l>>>16&255;\n HEAP[output|6] = H0l>>>8&255;\n HEAP[output|7] = H0l&255;\n HEAP[output|8] = H1h>>>24;\n HEAP[output|9] = H1h>>>16&255;\n HEAP[output|10] = H1h>>>8&255;\n HEAP[output|11] = H1h&255;\n HEAP[output|12] = H1l>>>24;\n HEAP[output|13] = H1l>>>16&255;\n HEAP[output|14] = H1l>>>8&255;\n HEAP[output|15] = H1l&255;\n HEAP[output|16] = H2h>>>24;\n HEAP[output|17] = H2h>>>16&255;\n HEAP[output|18] = H2h>>>8&255;\n HEAP[output|19] = H2h&255;\n HEAP[output|20] = H2l>>>24;\n HEAP[output|21] = H2l>>>16&255;\n HEAP[output|22] = H2l>>>8&255;\n HEAP[output|23] = H2l&255;\n HEAP[output|24] = H3h>>>24;\n HEAP[output|25] = H3h>>>16&255;\n HEAP[output|26] = H3h>>>8&255;\n HEAP[output|27] = H3h&255;\n HEAP[output|28] = H3l>>>24;\n HEAP[output|29] = H3l>>>16&255;\n HEAP[output|30] = H3l>>>8&255;\n HEAP[output|31] = H3l&255;\n HEAP[output|32] = H4h>>>24;\n HEAP[output|33] = H4h>>>16&255;\n HEAP[output|34] = H4h>>>8&255;\n HEAP[output|35] = H4h&255;\n HEAP[output|36] = H4l>>>24;\n HEAP[output|37] = H4l>>>16&255;\n HEAP[output|38] = H4l>>>8&255;\n HEAP[output|39] = H4l&255;\n HEAP[output|40] = H5h>>>24;\n HEAP[output|41] = H5h>>>16&255;\n HEAP[output|42] = H5h>>>8&255;\n HEAP[output|43] = H5h&255;\n HEAP[output|44] = H5l>>>24;\n HEAP[output|45] = H5l>>>16&255;\n HEAP[output|46] = H5l>>>8&255;\n HEAP[output|47] = H5l&255;\n HEAP[output|48] = H6h>>>24;\n HEAP[output|49] = H6h>>>16&255;\n HEAP[output|50] = H6h>>>8&255;\n HEAP[output|51] = H6h&255;\n HEAP[output|52] = H6l>>>24;\n HEAP[output|53] = H6l>>>16&255;\n HEAP[output|54] = H6l>>>8&255;\n HEAP[output|55] = H6l&255;\n HEAP[output|56] = H7h>>>24;\n HEAP[output|57] = H7h>>>16&255;\n HEAP[output|58] = H7h>>>8&255;\n HEAP[output|59] = H7h&255;\n HEAP[output|60] = H7l>>>24;\n HEAP[output|61] = H7l>>>16&255;\n HEAP[output|62] = H7l>>>8&255;\n HEAP[output|63] = H7l&255;\n }\n\n function reset () {\n H0h = 0x6a09e667;\n H0l = 0xf3bcc908;\n H1h = 0xbb67ae85;\n H1l = 0x84caa73b;\n H2h = 0x3c6ef372;\n H2l = 0xfe94f82b;\n H3h = 0xa54ff53a;\n H3l = 0x5f1d36f1;\n H4h = 0x510e527f;\n H4l = 0xade682d1;\n H5h = 0x9b05688c;\n H5l = 0x2b3e6c1f;\n H6h = 0x1f83d9ab;\n H6l = 0xfb41bd6b;\n H7h = 0x5be0cd19;\n H7l = 0x137e2179;\n\n TOTAL0 = TOTAL1 = 0;\n }\n\n function init ( h0h, h0l, h1h, h1l, h2h, h2l, h3h, h3l, h4h, h4l, h5h, h5l, h6h, h6l, h7h, h7l, total0, total1 ) {\n h0h = h0h|0;\n h0l = h0l|0;\n h1h = h1h|0;\n h1l = h1l|0;\n h2h = h2h|0;\n h2l = h2l|0;\n h3h = h3h|0;\n h3l = h3l|0;\n h4h = h4h|0;\n h4l = h4l|0;\n h5h = h5h|0;\n h5l = h5l|0;\n h6h = h6h|0;\n h6l = h6l|0;\n h7h = h7h|0;\n h7l = h7l|0;\n total0 = total0|0;\n total1 = total1|0;\n\n H0h = h0h;\n H0l = h0l;\n H1h = h1h;\n H1l = h1l;\n H2h = h2h;\n H2l = h2l;\n H3h = h3h;\n H3l = h3l;\n H4h = h4h;\n H4l = h4l;\n H5h = h5h;\n H5l = h5l;\n H6h = h6h;\n H6l = h6l;\n H7h = h7h;\n H7l = h7l;\n TOTAL0 = total0;\n TOTAL1 = total1;\n }\n\n // offset — multiple of 128\n function process ( offset, length ) {\n offset = offset|0;\n length = length|0;\n\n var hashed = 0;\n\n if ( offset & 127 )\n return -1;\n\n while ( (length|0) >= 128 ) {\n _core_heap(offset);\n\n offset = ( offset + 128 )|0;\n length = ( length - 128 )|0;\n\n hashed = ( hashed + 128 )|0;\n }\n\n TOTAL0 = ( TOTAL0 + hashed )|0;\n if ( TOTAL0>>>0 < hashed>>>0 ) TOTAL1 = ( TOTAL1 + 1 )|0;\n\n return hashed|0;\n }\n\n // offset — multiple of 128\n // output — multiple of 64\n function finish ( offset, length, output ) {\n offset = offset|0;\n length = length|0;\n output = output|0;\n\n var hashed = 0,\n i = 0;\n\n if ( offset & 127 )\n return -1;\n\n if ( ~output )\n if ( output & 63 )\n return -1;\n\n if ( (length|0) >= 128 ) {\n hashed = process( offset, length )|0;\n if ( (hashed|0) == -1 )\n return -1;\n\n offset = ( offset + hashed )|0;\n length = ( length - hashed )|0;\n }\n\n hashed = ( hashed + length )|0;\n TOTAL0 = ( TOTAL0 + length )|0;\n if ( TOTAL0>>>0 < length>>>0 ) TOTAL1 = ( TOTAL1 + 1 )|0;\n\n HEAP[offset|length] = 0x80;\n\n if ( (length|0) >= 112 ) {\n for ( i = (length+1)|0; (i|0) < 128; i = (i+1)|0 )\n HEAP[offset|i] = 0x00;\n\n _core_heap(offset);\n\n length = 0;\n\n HEAP[offset|0] = 0;\n }\n\n for ( i = (length+1)|0; (i|0) < 123; i = (i+1)|0 )\n HEAP[offset|i] = 0;\n\n HEAP[offset|120] = TOTAL1>>>21&255;\n HEAP[offset|121] = TOTAL1>>>13&255;\n HEAP[offset|122] = TOTAL1>>>5&255;\n HEAP[offset|123] = TOTAL1<<3&255 | TOTAL0>>>29;\n HEAP[offset|124] = TOTAL0>>>21&255;\n HEAP[offset|125] = TOTAL0>>>13&255;\n HEAP[offset|126] = TOTAL0>>>5&255;\n HEAP[offset|127] = TOTAL0<<3&255;\n _core_heap(offset);\n\n if ( ~output )\n _state_to_heap(output);\n\n return hashed|0;\n }\n\n function hmac_reset () {\n H0h = I0h;\n H0l = I0l;\n H1h = I1h;\n H1l = I1l;\n H2h = I2h;\n H2l = I2l;\n H3h = I3h;\n H3l = I3l;\n H4h = I4h;\n H4l = I4l;\n H5h = I5h;\n H5l = I5l;\n H6h = I6h;\n H6l = I6l;\n H7h = I7h;\n H7l = I7l;\n TOTAL0 = 128;\n TOTAL1 = 0;\n }\n\n function _hmac_opad () {\n H0h = O0h;\n H0l = O0l;\n H1h = O1h;\n H1l = O1l;\n H2h = O2h;\n H2l = O2l;\n H3h = O3h;\n H3l = O3l;\n H4h = O4h;\n H4l = O4l;\n H5h = O5h;\n H5l = O5l;\n H6h = O6h;\n H6l = O6l;\n H7h = O7h;\n H7l = O7l;\n TOTAL0 = 128;\n TOTAL1 = 0;\n }\n\n function hmac_init ( p0h, p0l, p1h, p1l, p2h, p2l, p3h, p3l, p4h, p4l, p5h, p5l, p6h, p6l, p7h, p7l, p8h, p8l, p9h, p9l, p10h, p10l, p11h, p11l, p12h, p12l, p13h, p13l, p14h, p14l, p15h, p15l ) {\n p0h = p0h|0;\n p0l = p0l|0;\n p1h = p1h|0;\n p1l = p1l|0;\n p2h = p2h|0;\n p2l = p2l|0;\n p3h = p3h|0;\n p3l = p3l|0;\n p4h = p4h|0;\n p4l = p4l|0;\n p5h = p5h|0;\n p5l = p5l|0;\n p6h = p6h|0;\n p6l = p6l|0;\n p7h = p7h|0;\n p7l = p7l|0;\n p8h = p8h|0;\n p8l = p8l|0;\n p9h = p9h|0;\n p9l = p9l|0;\n p10h = p10h|0;\n p10l = p10l|0;\n p11h = p11h|0;\n p11l = p11l|0;\n p12h = p12h|0;\n p12l = p12l|0;\n p13h = p13h|0;\n p13l = p13l|0;\n p14h = p14h|0;\n p14l = p14l|0;\n p15h = p15h|0;\n p15l = p15l|0;\n\n // opad\n reset();\n _core(\n p0h ^ 0x5c5c5c5c,\n p0l ^ 0x5c5c5c5c,\n p1h ^ 0x5c5c5c5c,\n p1l ^ 0x5c5c5c5c,\n p2h ^ 0x5c5c5c5c,\n p2l ^ 0x5c5c5c5c,\n p3h ^ 0x5c5c5c5c,\n p3l ^ 0x5c5c5c5c,\n p4h ^ 0x5c5c5c5c,\n p4l ^ 0x5c5c5c5c,\n p5h ^ 0x5c5c5c5c,\n p5l ^ 0x5c5c5c5c,\n p6h ^ 0x5c5c5c5c,\n p6l ^ 0x5c5c5c5c,\n p7h ^ 0x5c5c5c5c,\n p7l ^ 0x5c5c5c5c,\n p8h ^ 0x5c5c5c5c,\n p8l ^ 0x5c5c5c5c,\n p9h ^ 0x5c5c5c5c,\n p9l ^ 0x5c5c5c5c,\n p10h ^ 0x5c5c5c5c,\n p10l ^ 0x5c5c5c5c,\n p11h ^ 0x5c5c5c5c,\n p11l ^ 0x5c5c5c5c,\n p12h ^ 0x5c5c5c5c,\n p12l ^ 0x5c5c5c5c,\n p13h ^ 0x5c5c5c5c,\n p13l ^ 0x5c5c5c5c,\n p14h ^ 0x5c5c5c5c,\n p14l ^ 0x5c5c5c5c,\n p15h ^ 0x5c5c5c5c,\n p15l ^ 0x5c5c5c5c\n );\n O0h = H0h;\n O0l = H0l;\n O1h = H1h;\n O1l = H1l;\n O2h = H2h;\n O2l = H2l;\n O3h = H3h;\n O3l = H3l;\n O4h = H4h;\n O4l = H4l;\n O5h = H5h;\n O5l = H5l;\n O6h = H6h;\n O6l = H6l;\n O7h = H7h;\n O7l = H7l;\n\n // ipad\n reset();\n _core(\n p0h ^ 0x36363636,\n p0l ^ 0x36363636,\n p1h ^ 0x36363636,\n p1l ^ 0x36363636,\n p2h ^ 0x36363636,\n p2l ^ 0x36363636,\n p3h ^ 0x36363636,\n p3l ^ 0x36363636,\n p4h ^ 0x36363636,\n p4l ^ 0x36363636,\n p5h ^ 0x36363636,\n p5l ^ 0x36363636,\n p6h ^ 0x36363636,\n p6l ^ 0x36363636,\n p7h ^ 0x36363636,\n p7l ^ 0x36363636,\n p8h ^ 0x36363636,\n p8l ^ 0x36363636,\n p9h ^ 0x36363636,\n p9l ^ 0x36363636,\n p10h ^ 0x36363636,\n p10l ^ 0x36363636,\n p11h ^ 0x36363636,\n p11l ^ 0x36363636,\n p12h ^ 0x36363636,\n p12l ^ 0x36363636,\n p13h ^ 0x36363636,\n p13l ^ 0x36363636,\n p14h ^ 0x36363636,\n p14l ^ 0x36363636,\n p15h ^ 0x36363636,\n p15l ^ 0x36363636\n );\n I0h = H0h;\n I0l = H0l;\n I1h = H1h;\n I1l = H1l;\n I2h = H2h;\n I2l = H2l;\n I3h = H3h;\n I3l = H3l;\n I4h = H4h;\n I4l = H4l;\n I5h = H5h;\n I5l = H5l;\n I6h = H6h;\n I6l = H6l;\n I7h = H7h;\n I7l = H7l;\n\n TOTAL0 = 128;\n TOTAL1 = 0;\n }\n\n // offset — multiple of 128\n // output — multiple of 64\n function hmac_finish ( offset, length, output ) {\n offset = offset|0;\n length = length|0;\n output = output|0;\n\n var t0h = 0, t0l = 0, t1h = 0, t1l = 0, t2h = 0, t2l = 0, t3h = 0, t3l = 0,\n t4h = 0, t4l = 0, t5h = 0, t5l = 0, t6h = 0, t6l = 0, t7h = 0, t7l = 0,\n hashed = 0;\n\n if ( offset & 127 )\n return -1;\n\n if ( ~output )\n if ( output & 63 )\n return -1;\n\n hashed = finish( offset, length, -1 )|0;\n t0h = H0h;\n t0l = H0l;\n t1h = H1h;\n t1l = H1l;\n t2h = H2h;\n t2l = H2l;\n t3h = H3h;\n t3l = H3l;\n t4h = H4h;\n t4l = H4l;\n t5h = H5h;\n t5l = H5l;\n t6h = H6h;\n t6l = H6l;\n t7h = H7h;\n t7l = H7l;\n\n _hmac_opad();\n _core( t0h, t0l, t1h, t1l, t2h, t2l, t3h, t3l, t4h, t4l, t5h, t5l, t6h, t6l, t7h, t7l, 0x80000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1536 );\n\n if ( ~output )\n _state_to_heap(output);\n\n return hashed|0;\n }\n\n // salt is assumed to be already processed\n // offset — multiple of 128\n // output — multiple of 64\n function pbkdf2_generate_block ( offset, length, block, count, output ) {\n offset = offset|0;\n length = length|0;\n block = block|0;\n count = count|0;\n output = output|0;\n\n var h0h = 0, h0l = 0, h1h = 0, h1l = 0, h2h = 0, h2l = 0, h3h = 0, h3l = 0,\n h4h = 0, h4l = 0, h5h = 0, h5l = 0, h6h = 0, h6l = 0, h7h = 0, h7l = 0,\n t0h = 0, t0l = 0, t1h = 0, t1l = 0, t2h = 0, t2l = 0, t3h = 0, t3l = 0,\n t4h = 0, t4l = 0, t5h = 0, t5l = 0, t6h = 0, t6l = 0, t7h = 0, t7l = 0;\n\n if ( offset & 127 )\n return -1;\n\n if ( ~output )\n if ( output & 63 )\n return -1;\n\n // pad block number into heap\n // FIXME probable OOB write\n HEAP[(offset+length)|0] = block>>>24;\n HEAP[(offset+length+1)|0] = block>>>16&255;\n HEAP[(offset+length+2)|0] = block>>>8&255;\n HEAP[(offset+length+3)|0] = block&255;\n\n // finish first iteration\n hmac_finish( offset, (length+4)|0, -1 )|0;\n\n h0h = t0h = H0h;\n h0l = t0l = H0l;\n h1h = t1h = H1h;\n h1l = t1l = H1l;\n h2h = t2h = H2h;\n h2l = t2l = H2l;\n h3h = t3h = H3h;\n h3l = t3l = H3l;\n h4h = t4h = H4h;\n h4l = t4l = H4l;\n h5h = t5h = H5h;\n h5l = t5l = H5l;\n h6h = t6h = H6h;\n h6l = t6l = H6l;\n h7h = t7h = H7h;\n h7l = t7l = H7l;\n\n count = (count-1)|0;\n\n // perform the rest iterations\n while ( (count|0) > 0 ) {\n hmac_reset();\n _core( t0h, t0l, t1h, t1l, t2h, t2l, t3h, t3l, t4h, t4l, t5h, t5l, t6h, t6l, t7h, t7l, 0x80000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1536 );\n\n t0h = H0h;\n t0l = H0l;\n t1h = H1h;\n t1l = H1l;\n t2h = H2h;\n t2l = H2l;\n t3h = H3h;\n t3l = H3l;\n t4h = H4h;\n t4l = H4l;\n t5h = H5h;\n t5l = H5l;\n t6h = H6h;\n t6l = H6l;\n t7h = H7h;\n t7l = H7l;\n\n _hmac_opad();\n _core( t0h, t0l, t1h, t1l, t2h, t2l, t3h, t3l, t4h, t4l, t5h, t5l, t6h, t6l, t7h, t7l, 0x80000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1536 );\n\n t0h = H0h;\n t0l = H0l;\n t1h = H1h;\n t1l = H1l;\n t2h = H2h;\n t2l = H2l;\n t3h = H3h;\n t3l = H3l;\n t4h = H4h;\n t4l = H4l;\n t5h = H5h;\n t5l = H5l;\n t6h = H6h;\n t6l = H6l;\n t7h = H7h;\n t7l = H7l;\n\n h0h = h0h ^ H0h;\n h0l = h0l ^ H0l;\n h1h = h1h ^ H1h;\n h1l = h1l ^ H1l;\n h2h = h2h ^ H2h;\n h2l = h2l ^ H2l;\n h3h = h3h ^ H3h;\n h3l = h3l ^ H3l;\n h4h = h4h ^ H4h;\n h4l = h4l ^ H4l;\n h5h = h5h ^ H5h;\n h5l = h5l ^ H5l;\n h6h = h6h ^ H6h;\n h6l = h6l ^ H6l;\n h7h = h7h ^ H7h;\n h7l = h7l ^ H7l;\n\n count = (count-1)|0;\n }\n\n H0h = h0h;\n H0l = h0l;\n H1h = h1h;\n H1l = h1l;\n H2h = h2h;\n H2l = h2l;\n H3h = h3h;\n H3l = h3l;\n H4h = h4h;\n H4l = h4l;\n H5h = h5h;\n H5l = h5l;\n H6h = h6h;\n H6l = h6l;\n H7h = h7h;\n H7l = h7l;\n\n if ( ~output )\n _state_to_heap(output);\n\n return 0;\n }\n\n return {\n // SHA512\n reset: reset,\n init: init,\n process: process,\n finish: finish,\n\n // HMAC-SHA512\n hmac_reset: hmac_reset,\n hmac_init: hmac_init,\n hmac_finish: hmac_finish,\n\n // PBKDF2-HMAC-SHA512\n pbkdf2_generate_block: pbkdf2_generate_block\n }\n};\n\nconst _sha512_block_size = 128;\nconst _sha512_hash_size = 64;\nclass Sha512 extends Hash {\n constructor() {\n super();\n this.NAME = 'sha512';\n this.BLOCK_SIZE = _sha512_block_size;\n this.HASH_SIZE = _sha512_hash_size;\n this.heap = _heap_init();\n this.asm = sha512_asm({ Uint8Array: Uint8Array }, null, this.heap.buffer);\n this.reset();\n }\n}\nSha512.NAME = 'sha512';\n\nclass Hmac {\n constructor(hash, password, verify) {\n if (!hash.HASH_SIZE)\n throw new SyntaxError(\"option 'hash' supplied doesn't seem to be a valid hash function\");\n this.hash = hash;\n this.BLOCK_SIZE = this.hash.BLOCK_SIZE;\n this.HMAC_SIZE = this.hash.HASH_SIZE;\n this.result = null;\n this.key = _hmac_key(this.hash, password);\n const ipad = new Uint8Array(this.key);\n for (let i = 0; i < ipad.length; ++i)\n ipad[i] ^= 0x36;\n this.hash.reset().process(ipad);\n if (verify !== undefined) {\n this._hmac_init_verify(verify);\n }\n else {\n this.verify = null;\n }\n }\n process(data) {\n if (this.result !== null)\n throw new IllegalStateError('state must be reset before processing new data');\n this.hash.process(data);\n return this;\n }\n finish() {\n if (this.result !== null)\n throw new IllegalStateError('state must be reset before processing new data');\n const inner_result = this.hash.finish().result;\n const opad = new Uint8Array(this.key);\n for (let i = 0; i < opad.length; ++i)\n opad[i] ^= 0x5c;\n const verify = this.verify;\n const result = this.hash\n .reset()\n .process(opad)\n .process(inner_result)\n .finish().result;\n if (verify) {\n if (verify.length === result.length) {\n let diff = 0;\n for (let i = 0; i < verify.length; i++) {\n diff |= verify[i] ^ result[i];\n }\n if (diff !== 0)\n throw new Error(\"HMAC verification failed, hash value doesn't match\");\n }\n else {\n throw new Error(\"HMAC verification failed, lengths doesn't match\");\n }\n }\n this.result = result;\n return this;\n }\n _hmac_init_verify(verify) {\n if (verify.length !== this.HMAC_SIZE)\n throw new IllegalArgumentError('illegal verification tag size');\n this.verify = verify;\n }\n}\nfunction _hmac_key(hash, password) {\n const key = new Uint8Array(hash.BLOCK_SIZE);\n if (password.length > hash.BLOCK_SIZE) {\n key.set(hash\n .reset()\n .process(password)\n .finish().result);\n }\n else {\n key.set(password);\n }\n return key;\n}\n\nclass HmacSha1 extends Hmac {\n constructor(password, verify) {\n const hash = new Sha1();\n // Calculate ipad, init the underlying engine, calculate this.key\n super(hash, password, verify);\n this.reset();\n if (verify !== undefined) {\n this._hmac_init_verify(verify);\n }\n else {\n this.verify = null;\n }\n return this;\n }\n reset() {\n this.result = null;\n const key = this.key;\n this.hash\n .reset()\n .asm.hmac_init((key[0] << 24) | (key[1] << 16) | (key[2] << 8) | key[3], (key[4] << 24) | (key[5] << 16) | (key[6] << 8) | key[7], (key[8] << 24) | (key[9] << 16) | (key[10] << 8) | key[11], (key[12] << 24) | (key[13] << 16) | (key[14] << 8) | key[15], (key[16] << 24) | (key[17] << 16) | (key[18] << 8) | key[19], (key[20] << 24) | (key[21] << 16) | (key[22] << 8) | key[23], (key[24] << 24) | (key[25] << 16) | (key[26] << 8) | key[27], (key[28] << 24) | (key[29] << 16) | (key[30] << 8) | key[31], (key[32] << 24) | (key[33] << 16) | (key[34] << 8) | key[35], (key[36] << 24) | (key[37] << 16) | (key[38] << 8) | key[39], (key[40] << 24) | (key[41] << 16) | (key[42] << 8) | key[43], (key[44] << 24) | (key[45] << 16) | (key[46] << 8) | key[47], (key[48] << 24) | (key[49] << 16) | (key[50] << 8) | key[51], (key[52] << 24) | (key[53] << 16) | (key[54] << 8) | key[55], (key[56] << 24) | (key[57] << 16) | (key[58] << 8) | key[59], (key[60] << 24) | (key[61] << 16) | (key[62] << 8) | key[63]);\n return this;\n }\n finish() {\n if (this.result !== null)\n throw new IllegalStateError('state must be reset before processing new data');\n const hash = this.hash;\n const asm = this.hash.asm;\n const heap = this.hash.heap;\n asm.hmac_finish(hash.pos, hash.len, 0);\n const verify = this.verify;\n const result = new Uint8Array(_sha1_hash_size);\n result.set(heap.subarray(0, _sha1_hash_size));\n if (verify) {\n if (verify.length === result.length) {\n let diff = 0;\n for (let i = 0; i < verify.length; i++) {\n diff |= verify[i] ^ result[i];\n }\n if (diff !== 0)\n throw new Error(\"HMAC verification failed, hash value doesn't match\");\n }\n else {\n throw new Error(\"HMAC verification failed, lengths doesn't match\");\n }\n }\n else {\n this.result = result;\n }\n return this;\n }\n}\n\nclass HmacSha256 extends Hmac {\n constructor(password, verify) {\n const hash = new Sha256();\n // Calculate ipad, init the underlying engine, calculate this.key\n super(hash, password, verify);\n this.reset();\n if (verify !== undefined) {\n this._hmac_init_verify(verify);\n }\n else {\n this.verify = null;\n }\n return this;\n }\n reset() {\n const key = this.key;\n this.hash\n .reset()\n .asm.hmac_init((key[0] << 24) | (key[1] << 16) | (key[2] << 8) | key[3], (key[4] << 24) | (key[5] << 16) | (key[6] << 8) | key[7], (key[8] << 24) | (key[9] << 16) | (key[10] << 8) | key[11], (key[12] << 24) | (key[13] << 16) | (key[14] << 8) | key[15], (key[16] << 24) | (key[17] << 16) | (key[18] << 8) | key[19], (key[20] << 24) | (key[21] << 16) | (key[22] << 8) | key[23], (key[24] << 24) | (key[25] << 16) | (key[26] << 8) | key[27], (key[28] << 24) | (key[29] << 16) | (key[30] << 8) | key[31], (key[32] << 24) | (key[33] << 16) | (key[34] << 8) | key[35], (key[36] << 24) | (key[37] << 16) | (key[38] << 8) | key[39], (key[40] << 24) | (key[41] << 16) | (key[42] << 8) | key[43], (key[44] << 24) | (key[45] << 16) | (key[46] << 8) | key[47], (key[48] << 24) | (key[49] << 16) | (key[50] << 8) | key[51], (key[52] << 24) | (key[53] << 16) | (key[54] << 8) | key[55], (key[56] << 24) | (key[57] << 16) | (key[58] << 8) | key[59], (key[60] << 24) | (key[61] << 16) | (key[62] << 8) | key[63]);\n return this;\n }\n finish() {\n if (this.key === null)\n throw new IllegalStateError('no key is associated with the instance');\n if (this.result !== null)\n throw new IllegalStateError('state must be reset before processing new data');\n const hash = this.hash;\n const asm = this.hash.asm;\n const heap = this.hash.heap;\n asm.hmac_finish(hash.pos, hash.len, 0);\n const verify = this.verify;\n const result = new Uint8Array(_sha256_hash_size);\n result.set(heap.subarray(0, _sha256_hash_size));\n if (verify) {\n if (verify.length === result.length) {\n let diff = 0;\n for (let i = 0; i < verify.length; i++) {\n diff |= verify[i] ^ result[i];\n }\n if (diff !== 0)\n throw new Error(\"HMAC verification failed, hash value doesn't match\");\n }\n else {\n throw new Error(\"HMAC verification failed, lengths doesn't match\");\n }\n }\n else {\n this.result = result;\n }\n return this;\n }\n}\n\nclass HmacSha512 extends Hmac {\n constructor(password, verify) {\n const hash = new Sha512();\n // Calculate ipad, init the underlying engine, calculate this.key\n super(hash, password, verify);\n this.reset();\n if (verify !== undefined) {\n this._hmac_init_verify(verify);\n }\n else {\n this.verify = null;\n }\n return this;\n }\n reset() {\n const key = this.key;\n this.hash\n .reset()\n .asm.hmac_init((key[0] << 24) | (key[1] << 16) | (key[2] << 8) | key[3], (key[4] << 24) | (key[5] << 16) | (key[6] << 8) | key[7], (key[8] << 24) | (key[9] << 16) | (key[10] << 8) | key[11], (key[12] << 24) | (key[13] << 16) | (key[14] << 8) | key[15], (key[16] << 24) | (key[17] << 16) | (key[18] << 8) | key[19], (key[20] << 24) | (key[21] << 16) | (key[22] << 8) | key[23], (key[24] << 24) | (key[25] << 16) | (key[26] << 8) | key[27], (key[28] << 24) | (key[29] << 16) | (key[30] << 8) | key[31], (key[32] << 24) | (key[33] << 16) | (key[34] << 8) | key[35], (key[36] << 24) | (key[37] << 16) | (key[38] << 8) | key[39], (key[40] << 24) | (key[41] << 16) | (key[42] << 8) | key[43], (key[44] << 24) | (key[45] << 16) | (key[46] << 8) | key[47], (key[48] << 24) | (key[49] << 16) | (key[50] << 8) | key[51], (key[52] << 24) | (key[53] << 16) | (key[54] << 8) | key[55], (key[56] << 24) | (key[57] << 16) | (key[58] << 8) | key[59], (key[60] << 24) | (key[61] << 16) | (key[62] << 8) | key[63], (key[64] << 24) | (key[65] << 16) | (key[66] << 8) | key[67], (key[68] << 24) | (key[69] << 16) | (key[70] << 8) | key[71], (key[72] << 24) | (key[73] << 16) | (key[74] << 8) | key[75], (key[76] << 24) | (key[77] << 16) | (key[78] << 8) | key[79], (key[80] << 24) | (key[81] << 16) | (key[82] << 8) | key[83], (key[84] << 24) | (key[85] << 16) | (key[86] << 8) | key[87], (key[88] << 24) | (key[89] << 16) | (key[90] << 8) | key[91], (key[92] << 24) | (key[93] << 16) | (key[94] << 8) | key[95], (key[96] << 24) | (key[97] << 16) | (key[98] << 8) | key[99], (key[100] << 24) | (key[101] << 16) | (key[102] << 8) | key[103], (key[104] << 24) | (key[105] << 16) | (key[106] << 8) | key[107], (key[108] << 24) | (key[109] << 16) | (key[110] << 8) | key[111], (key[112] << 24) | (key[113] << 16) | (key[114] << 8) | key[115], (key[116] << 24) | (key[117] << 16) | (key[118] << 8) | key[119], (key[120] << 24) | (key[121] << 16) | (key[122] << 8) | key[123], (key[124] << 24) | (key[125] << 16) | (key[126] << 8) | key[127]);\n return this;\n }\n finish() {\n if (this.key === null)\n throw new IllegalStateError('no key is associated with the instance');\n if (this.result !== null)\n throw new IllegalStateError('state must be reset before processing new data');\n const hash = this.hash;\n const asm = this.hash.asm;\n const heap = this.hash.heap;\n asm.hmac_finish(hash.pos, hash.len, 0);\n const verify = this.verify;\n const result = new Uint8Array(_sha512_hash_size);\n result.set(heap.subarray(0, _sha512_hash_size));\n if (verify) {\n if (verify.length === result.length) {\n let diff = 0;\n for (let i = 0; i < verify.length; i++) {\n diff |= verify[i] ^ result[i];\n }\n if (diff !== 0)\n throw new Error(\"HMAC verification failed, hash value doesn't match\");\n }\n else {\n throw new Error(\"HMAC verification failed, lengths doesn't match\");\n }\n }\n else {\n this.result = result;\n }\n return this;\n }\n}\n\nfunction Pbkdf2HmacSha1(password, salt, count, length) {\n const hmac = new HmacSha1(password);\n const result = new Uint8Array(length);\n const blocks = Math.ceil(length / hmac.HMAC_SIZE);\n for (let i = 1; i <= blocks; ++i) {\n const j = (i - 1) * hmac.HMAC_SIZE;\n const l = (i < blocks ? 0 : length % hmac.HMAC_SIZE) || hmac.HMAC_SIZE;\n hmac.reset().process(salt);\n hmac.hash.asm.pbkdf2_generate_block(hmac.hash.pos, hmac.hash.len, i, count, 0);\n result.set(hmac.hash.heap.subarray(0, l), j);\n }\n return result;\n}\n\nfunction Pbkdf2HmacSha256(password, salt, count, length) {\n const hmac = new HmacSha256(password);\n const result = new Uint8Array(length);\n const blocks = Math.ceil(length / hmac.HMAC_SIZE);\n for (let i = 1; i <= blocks; ++i) {\n const j = (i - 1) * hmac.HMAC_SIZE;\n const l = (i < blocks ? 0 : length % hmac.HMAC_SIZE) || hmac.HMAC_SIZE;\n hmac.reset().process(salt);\n hmac.hash.asm.pbkdf2_generate_block(hmac.hash.pos, hmac.hash.len, i, count, 0);\n result.set(hmac.hash.heap.subarray(0, l), j);\n }\n return result;\n}\n\nfunction Pbkdf2HmacSha512(password, salt, count, length) {\n const hmac = new HmacSha512(password);\n const result = new Uint8Array(length);\n const blocks = Math.ceil(length / hmac.HMAC_SIZE);\n for (let i = 1; i <= blocks; ++i) {\n const j = (i - 1) * hmac.HMAC_SIZE;\n const l = (i < blocks ? 0 : length % hmac.HMAC_SIZE) || hmac.HMAC_SIZE;\n hmac.reset().process(salt);\n hmac.hash.asm.pbkdf2_generate_block(hmac.hash.pos, hmac.hash.len, i, count, 0);\n result.set(hmac.hash.heap.subarray(0, l), j);\n }\n return result;\n}\n\nclass RSA {\n constructor(key) {\n const l = key.length;\n if (l !== 2 && l !== 3 && l !== 8)\n throw new SyntaxError('unexpected key type');\n const k0 = new Modulus(new BigNumber(key[0]));\n const k1 = new BigNumber(key[1]);\n this.key = {\n 0: k0,\n 1: k1,\n };\n if (l > 2) {\n this.key[2] = new BigNumber(key[2]);\n }\n if (l > 3) {\n this.key[3] = new Modulus(new BigNumber(key[3]));\n this.key[4] = new Modulus(new BigNumber(key[4]));\n this.key[5] = new BigNumber(key[5]);\n this.key[6] = new BigNumber(key[6]);\n this.key[7] = new BigNumber(key[7]);\n }\n }\n encrypt(msg) {\n if (!this.key)\n throw new IllegalStateError('no key is associated with the instance');\n if (this.key[0].compare(msg) <= 0)\n throw new RangeError('data too large');\n const m = this.key[0];\n const e = this.key[1];\n let result = m.power(msg, e).toBytes();\n const bytelen = (m.bitLength + 7) >> 3;\n if (result.length < bytelen) {\n const r = new Uint8Array(bytelen);\n r.set(result, bytelen - result.length);\n result = r;\n }\n this.result = result;\n return this;\n }\n decrypt(msg) {\n if (this.key[0].compare(msg) <= 0)\n throw new RangeError('data too large');\n let result;\n let m;\n if (this.key[3] !== undefined) {\n m = this.key[0];\n const p = this.key[3];\n const q = this.key[4];\n const dp = this.key[5];\n const dq = this.key[6];\n const u = this.key[7];\n const x = p.power(msg, dp);\n const y = q.power(msg, dq);\n let t = x.subtract(y);\n while (t.sign < 0)\n t = t.add(p);\n const h = p.reduce(u.multiply(t));\n result = h\n .multiply(q)\n .add(y)\n .clamp(m.bitLength)\n .toBytes();\n }\n else {\n m = this.key[0];\n const d = this.key[2];\n result = m.power(msg, d).toBytes();\n }\n const bytelen = (m.bitLength + 7) >> 3;\n if (result.length < bytelen) {\n let r = new Uint8Array(bytelen);\n r.set(result, bytelen - result.length);\n result = r;\n }\n this.result = result;\n return this;\n }\n}\n\nclass RSA_OAEP {\n constructor(key, hash, label) {\n this.rsa = new RSA(key);\n this.hash = hash;\n if (label !== undefined) {\n this.label = label.length > 0 ? label : null;\n }\n else {\n this.label = null;\n }\n }\n encrypt(data, random) {\n const key_size = Math.ceil(this.rsa.key[0].bitLength / 8);\n const hash_size = this.hash.HASH_SIZE;\n const data_length = data.byteLength || data.length || 0;\n const ps_length = key_size - data_length - 2 * hash_size - 2;\n if (data_length > key_size - 2 * this.hash.HASH_SIZE - 2)\n throw new IllegalArgumentError('data too large');\n const message = new Uint8Array(key_size);\n const seed = message.subarray(1, hash_size + 1);\n const data_block = message.subarray(hash_size + 1);\n data_block.set(data, hash_size + ps_length + 1);\n data_block.set(this.hash.process(this.label || new Uint8Array(0)).finish().result, 0);\n data_block[hash_size + ps_length] = 1;\n if (random !== undefined) {\n if (seed.length !== random.length)\n throw new IllegalArgumentError('random size must equal the hash size');\n seed.set(random);\n }\n else {\n getRandomValues(seed);\n }\n const data_block_mask = this.RSA_MGF1_generate(seed, data_block.length);\n for (let i = 0; i < data_block.length; i++)\n data_block[i] ^= data_block_mask[i];\n const seed_mask = this.RSA_MGF1_generate(data_block, seed.length);\n for (let i = 0; i < seed.length; i++)\n seed[i] ^= seed_mask[i];\n this.rsa.encrypt(new BigNumber(message));\n return new Uint8Array(this.rsa.result);\n }\n decrypt(data) {\n if (!this.rsa.key)\n throw new IllegalStateError('no key is associated with the instance');\n const key_size = Math.ceil(this.rsa.key[0].bitLength / 8);\n const hash_size = this.hash.HASH_SIZE;\n const data_length = data.byteLength || data.length || 0;\n if (data_length !== key_size)\n throw new IllegalArgumentError('bad data');\n this.rsa.decrypt(new BigNumber(data));\n const z = this.rsa.result[0];\n const seed = this.rsa.result.subarray(1, hash_size + 1);\n const data_block = this.rsa.result.subarray(hash_size + 1);\n if (z !== 0)\n throw new SecurityError('decryption failed');\n const seed_mask = this.RSA_MGF1_generate(data_block, seed.length);\n for (let i = 0; i < seed.length; i++)\n seed[i] ^= seed_mask[i];\n const data_block_mask = this.RSA_MGF1_generate(seed, data_block.length);\n for (let i = 0; i < data_block.length; i++)\n data_block[i] ^= data_block_mask[i];\n const lhash = this.hash\n .reset()\n .process(this.label || new Uint8Array(0))\n .finish().result;\n for (let i = 0; i < hash_size; i++) {\n if (lhash[i] !== data_block[i])\n throw new SecurityError('decryption failed');\n }\n let ps_end = hash_size;\n for (; ps_end < data_block.length; ps_end++) {\n const psz = data_block[ps_end];\n if (psz === 1)\n break;\n if (psz !== 0)\n throw new SecurityError('decryption failed');\n }\n if (ps_end === data_block.length)\n throw new SecurityError('decryption failed');\n this.rsa.result = data_block.subarray(ps_end + 1);\n return new Uint8Array(this.rsa.result);\n }\n RSA_MGF1_generate(seed, length = 0) {\n const hash_size = this.hash.HASH_SIZE;\n // if ( length > (hash_size * 0x100000000) )\n // throw new IllegalArgumentError(\"mask length too large\");\n const mask = new Uint8Array(length);\n const counter = new Uint8Array(4);\n const chunks = Math.ceil(length / hash_size);\n for (let i = 0; i < chunks; i++) {\n (counter[0] = i >>> 24), (counter[1] = (i >>> 16) & 255), (counter[2] = (i >>> 8) & 255), (counter[3] = i & 255);\n const submask = mask.subarray(i * hash_size);\n let chunk = this.hash\n .reset()\n .process(seed)\n .process(counter)\n .finish().result;\n if (chunk.length > submask.length)\n chunk = chunk.subarray(0, submask.length);\n submask.set(chunk);\n }\n return mask;\n }\n}\nclass RSA_PSS {\n constructor(key, hash, saltLength = 4) {\n this.rsa = new RSA(key);\n this.hash = hash;\n this.saltLength = saltLength;\n if (this.saltLength < 0)\n throw new TypeError('saltLength should be a non-negative number');\n if (this.rsa.key !== null &&\n Math.ceil((this.rsa.key[0].bitLength - 1) / 8) < this.hash.HASH_SIZE + this.saltLength + 2)\n throw new SyntaxError('saltLength is too large');\n }\n sign(data, random) {\n const key_bits = this.rsa.key[0].bitLength;\n const hash_size = this.hash.HASH_SIZE;\n const message_length = Math.ceil((key_bits - 1) / 8);\n const salt_length = this.saltLength;\n const ps_length = message_length - salt_length - hash_size - 2;\n const message = new Uint8Array(message_length);\n const h_block = message.subarray(message_length - hash_size - 1, message_length - 1);\n const d_block = message.subarray(0, message_length - hash_size - 1);\n const d_salt = d_block.subarray(ps_length + 1);\n const m_block = new Uint8Array(8 + hash_size + salt_length);\n const m_hash = m_block.subarray(8, 8 + hash_size);\n const m_salt = m_block.subarray(8 + hash_size);\n m_hash.set(this.hash.process(data).finish().result);\n if (salt_length > 0) {\n if (random !== undefined) {\n if (m_salt.length !== random.length)\n throw new IllegalArgumentError('random size must equal the salt size');\n m_salt.set(random);\n }\n else {\n getRandomValues(m_salt);\n }\n }\n d_block[ps_length] = 1;\n d_salt.set(m_salt);\n h_block.set(this.hash\n .reset()\n .process(m_block)\n .finish().result);\n const d_block_mask = this.RSA_MGF1_generate(h_block, d_block.length);\n for (let i = 0; i < d_block.length; i++)\n d_block[i] ^= d_block_mask[i];\n message[message_length - 1] = 0xbc;\n const zbits = 8 * message_length - key_bits + 1;\n if (zbits % 8)\n message[0] &= 0xff >>> zbits;\n this.rsa.decrypt(new BigNumber(message));\n return this.rsa.result;\n }\n verify(signature, data) {\n const key_bits = this.rsa.key[0].bitLength;\n const hash_size = this.hash.HASH_SIZE;\n const message_length = Math.ceil((key_bits - 1) / 8);\n const salt_length = this.saltLength;\n const ps_length = message_length - salt_length - hash_size - 2;\n this.rsa.encrypt(new BigNumber(signature));\n const message = this.rsa.result;\n if (message[message_length - 1] !== 0xbc)\n throw new SecurityError('bad signature');\n const h_block = message.subarray(message_length - hash_size - 1, message_length - 1);\n const d_block = message.subarray(0, message_length - hash_size - 1);\n const d_salt = d_block.subarray(ps_length + 1);\n const zbits = 8 * message_length - key_bits + 1;\n if (zbits % 8 && message[0] >>> (8 - zbits))\n throw new SecurityError('bad signature');\n const d_block_mask = this.RSA_MGF1_generate(h_block, d_block.length);\n for (let i = 0; i < d_block.length; i++)\n d_block[i] ^= d_block_mask[i];\n if (zbits % 8)\n message[0] &= 0xff >>> zbits;\n for (let i = 0; i < ps_length; i++) {\n if (d_block[i] !== 0)\n throw new SecurityError('bad signature');\n }\n if (d_block[ps_length] !== 1)\n throw new SecurityError('bad signature');\n const m_block = new Uint8Array(8 + hash_size + salt_length);\n const m_hash = m_block.subarray(8, 8 + hash_size);\n const m_salt = m_block.subarray(8 + hash_size);\n m_hash.set(this.hash\n .reset()\n .process(data)\n .finish().result);\n m_salt.set(d_salt);\n const h_block_verify = this.hash\n .reset()\n .process(m_block)\n .finish().result;\n for (let i = 0; i < hash_size; i++) {\n if (h_block[i] !== h_block_verify[i])\n throw new SecurityError('bad signature');\n }\n }\n RSA_MGF1_generate(seed, length = 0) {\n const hash_size = this.hash.HASH_SIZE;\n // if ( length > (hash_size * 0x100000000) )\n // throw new IllegalArgumentError(\"mask length too large\");\n const mask = new Uint8Array(length);\n const counter = new Uint8Array(4);\n const chunks = Math.ceil(length / hash_size);\n for (let i = 0; i < chunks; i++) {\n (counter[0] = i >>> 24), (counter[1] = (i >>> 16) & 255), (counter[2] = (i >>> 8) & 255), (counter[3] = i & 255);\n const submask = mask.subarray(i * hash_size);\n let chunk = this.hash\n .reset()\n .process(seed)\n .process(counter)\n .finish().result;\n if (chunk.length > submask.length)\n chunk = chunk.subarray(0, submask.length);\n submask.set(chunk);\n }\n return mask;\n }\n}\nclass RSA_PKCS1_v1_5 {\n constructor(key, hash) {\n this.rsa = new RSA(key);\n this.hash = hash;\n }\n sign(data) {\n if (!this.rsa.key) {\n throw new IllegalStateError('no key is associated with the instance');\n }\n const prefix = getHashPrefix(this.hash);\n const hash_size = this.hash.HASH_SIZE;\n const t_len = prefix.length + hash_size;\n const k = (this.rsa.key[0].bitLength + 7) >> 3;\n if (k < t_len + 11) {\n throw new Error('Message too long');\n }\n const m_hash = new Uint8Array(hash_size);\n m_hash.set(this.hash.process(data).finish().result);\n // EM = 0x00 || 0x01 || PS || 0x00 || T\n const em = new Uint8Array(k);\n let i = 0;\n em[i++] = 0; // 0x00\n em[i++] = 1; // 0x01\n // PS\n for (i; i < k - t_len - 1; i++) {\n em[i] = 0xff;\n }\n em[i++] = 0;\n em.set(prefix, i); // 0x00\n // T\n em.set(m_hash, em.length - hash_size);\n this.rsa.decrypt(new BigNumber(em));\n return this.rsa.result;\n }\n verify(signature, data) {\n const prefix = getHashPrefix(this.hash);\n const hash_size = this.hash.HASH_SIZE;\n const t_len = prefix.length + hash_size;\n const k = (this.rsa.key[0].bitLength + 7) >> 3;\n if (k < t_len + 11) {\n throw new SecurityError('Bad signature');\n }\n this.rsa.encrypt(new BigNumber(signature));\n const m_hash = new Uint8Array(hash_size);\n m_hash.set(this.hash.process(data).finish().result);\n let res = 1;\n // EM = 0x00 || 0x01 || PS || 0x00 || T\n const decryptedSignature = this.rsa.result;\n let i = 0;\n res &= decryptedSignature[i++] === 0 ? 1 : 0; // 0x00\n res &= decryptedSignature[i++] === 1 ? 1 : 0; // 0x01\n // PS\n for (i; i < k - t_len - 1; i++) {\n res &= decryptedSignature[i] === 0xff ? 1 : 0;\n }\n res &= decryptedSignature[i++] === 0 ? 1 : 0; // 0x00\n // T\n let j = 0;\n let n = i + prefix.length;\n // prefix\n for (i; i < n; i++) {\n res &= decryptedSignature[i] === prefix[j++] ? 1 : 0;\n }\n j = 0;\n n = i + m_hash.length;\n // hash\n for (i; i < n; i++) {\n res &= decryptedSignature[i] === m_hash[j++] ? 1 : 0;\n }\n if (!res) {\n throw new SecurityError('Bad signature');\n }\n }\n}\nconst HASH_PREFIXES = {\n sha1: new Uint8Array([0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x04, 0x14]),\n sha256: new Uint8Array([\n 0x30,\n 0x31,\n 0x30,\n 0x0d,\n 0x06,\n 0x09,\n 0x60,\n 0x86,\n 0x48,\n 0x01,\n 0x65,\n 0x03,\n 0x04,\n 0x02,\n 0x01,\n 0x05,\n 0x00,\n 0x04,\n 0x20,\n ]),\n sha384: new Uint8Array([\n 0x30,\n 0x41,\n 0x30,\n 0x0d,\n 0x06,\n 0x09,\n 0x60,\n 0x86,\n 0x48,\n 0x01,\n 0x65,\n 0x03,\n 0x04,\n 0x02,\n 0x02,\n 0x05,\n 0x00,\n 0x04,\n 0x30,\n ]),\n sha512: new Uint8Array([\n 0x30,\n 0x51,\n 0x30,\n 0x0d,\n 0x06,\n 0x09,\n 0x60,\n 0x86,\n 0x48,\n 0x01,\n 0x65,\n 0x03,\n 0x04,\n 0x02,\n 0x03,\n 0x05,\n 0x00,\n 0x04,\n 0x40,\n ]),\n};\nfunction getHashPrefix(hash) {\n const prefix = HASH_PREFIXES[hash.NAME];\n if (!prefix) {\n throw new Error(\"Cannot get hash prefix for hash algorithm '\" + hash.NAME + \"'\");\n }\n return prefix;\n}\n\nexport { string_to_bytes, hex_to_bytes, base64_to_bytes, bytes_to_string, bytes_to_hex, bytes_to_base64, IllegalStateError, IllegalArgumentError, SecurityError, AES_CBC, AES_CCM, AES_CFB, AES_CMAC, AES_CTR, AES_ECB, AES_GCM, AES_OFB, BigNumber, Modulus, Sha1, Sha256, Sha512, HmacSha1, HmacSha256, HmacSha512, Pbkdf2HmacSha1, Pbkdf2HmacSha256, Pbkdf2HmacSha512, RSA_OAEP, RSA_PKCS1_v1_5, RSA_PSS, RSA };\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js\n\nvar ws = null\n\nif (typeof WebSocket !== 'undefined') {\n ws = WebSocket\n} else if (typeof MozWebSocket !== 'undefined') {\n ws = MozWebSocket\n} else if (typeof global !== 'undefined') {\n ws = global.WebSocket || global.MozWebSocket\n} else if (typeof window !== 'undefined') {\n ws = window.WebSocket || window.MozWebSocket\n} else if (typeof self !== 'undefined') {\n ws = self.WebSocket || self.MozWebSocket\n}\n\nmodule.exports = ws\n","/**\n * Anchor Link v3.3.3\n * https://github.com/greymass/anchor-link\n *\n * @license\n * Copyright (c) 2020 Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport zlib from 'pako';\nimport { Struct, UInt64, Checksum512, Serializer, Bytes, Checksum256, PermissionLevel, PublicKey, Name, PrivateKey, APIClient, Signature, SignedTransaction } from '@greymass/eosio';\nexport * from '@greymass/eosio';\nimport { ChainId, SigningRequest, ResolvedSigningRequest, PlaceholderName, PlaceholderPermission } from 'eosio-signing-request';\nexport * from 'eosio-signing-request';\nexport { ChainId, ChainName, IdentityProof } from 'eosio-signing-request';\nimport { __decorate } from 'tslib';\nimport makeFetch from 'fetch-ponyfill';\nimport { AES_CBC } from 'asmcrypto.js';\nimport { v4 } from 'uuid';\nimport WebSocket from 'isomorphic-ws';\n\n/**\n * Error that is thrown if a [[LinkTransport]] cancels a request.\n * @internal\n */\nclass CancelError extends Error {\n constructor(reason) {\n super(`User canceled request ${reason ? '(' + reason + ')' : ''}`);\n this.code = 'E_CANCEL';\n }\n}\n/**\n * Error that is thrown if an identity request fails to verify.\n * @internal\n */\nclass IdentityError extends Error {\n constructor(reason) {\n super(`Unable to verify identity ${reason ? '(' + reason + ')' : ''}`);\n this.code = 'E_IDENTITY';\n }\n}\n/**\n * Error originating from a [[LinkSession]].\n * @internal\n */\nclass SessionError extends Error {\n constructor(reason, code, session) {\n super(reason);\n this.code = code;\n this.session = session;\n }\n}\n\n/** @internal */\nvar LinkOptions;\n(function (LinkOptions) {\n /** @internal */\n LinkOptions.defaults = {\n service: 'https://cb.anchor.link',\n verifyProofs: false,\n encodeChainIds: true,\n };\n})(LinkOptions || (LinkOptions = {}));\n\nlet SealedMessage = class SealedMessage extends Struct {\n};\n__decorate([\n Struct.field('public_key')\n], SealedMessage.prototype, \"from\", void 0);\n__decorate([\n Struct.field('uint64')\n], SealedMessage.prototype, \"nonce\", void 0);\n__decorate([\n Struct.field('bytes')\n], SealedMessage.prototype, \"ciphertext\", void 0);\n__decorate([\n Struct.field('uint32')\n], SealedMessage.prototype, \"checksum\", void 0);\nSealedMessage = __decorate([\n Struct.type('sealed_message')\n], SealedMessage);\nlet LinkCreate = class LinkCreate extends Struct {\n};\n__decorate([\n Struct.field('name')\n], LinkCreate.prototype, \"session_name\", void 0);\n__decorate([\n Struct.field('public_key')\n], LinkCreate.prototype, \"request_key\", void 0);\n__decorate([\n Struct.field('string', { extension: true })\n], LinkCreate.prototype, \"user_agent\", void 0);\nLinkCreate = __decorate([\n Struct.type('link_create')\n], LinkCreate);\nlet LinkInfo = class LinkInfo extends Struct {\n};\n__decorate([\n Struct.field('time_point_sec')\n], LinkInfo.prototype, \"expiration\", void 0);\nLinkInfo = __decorate([\n Struct.type('link_info')\n], LinkInfo);\n\n/** @internal */\nconst fetch = makeFetch().fetch;\n/**\n * Encrypt a message using AES and shared secret derived from given keys.\n * @internal\n */\nfunction sealMessage(message, privateKey, publicKey, nonce) {\n const secret = privateKey.sharedSecret(publicKey);\n if (!nonce) {\n nonce = UInt64.random();\n }\n const key = Checksum512.hash(Serializer.encode({ object: nonce }).appending(secret.array));\n const cbc = new AES_CBC(key.array.slice(0, 32), key.array.slice(32, 48));\n const ciphertext = Bytes.from(cbc.encrypt(Bytes.from(message, 'utf8').array));\n const checksumView = new DataView(Checksum256.hash(key.array).array.buffer);\n const checksum = checksumView.getUint32(0, true);\n return SealedMessage.from({\n from: privateKey.toPublic(),\n nonce,\n ciphertext,\n checksum,\n });\n}\n/**\n * Extract session metadata from a callback payload and request.\n * @internal\n */\nfunction sessionMetadata(payload, request) {\n const metadata = {\n // backwards compat, can be removed next major release\n sameDevice: request.getRawInfo()['return_path'] !== undefined,\n };\n // append extra metadata from the signer\n if (payload.link_meta) {\n try {\n const parsed = JSON.parse(payload.link_meta);\n for (const key of Object.keys(parsed)) {\n // normalize key names to camelCase\n metadata[snakeToCamel(key)] = parsed[key];\n }\n }\n catch (error) {\n logWarn('Unable to parse link metadata', error, payload.link_meta);\n }\n }\n return metadata;\n}\n/**\n * Return PascalCase version of snake_case string.\n * @internal\n */\nfunction snakeToPascal(name) {\n return name\n .split('_')\n .map((v) => (v[0] ? v[0].toUpperCase() : '_') + v.slice(1))\n .join('');\n}\n/**\n * Return camelCase version of snake_case string.\n * @internal\n */\nfunction snakeToCamel(name) {\n const pascal = snakeToPascal(name);\n return pascal[0].toLowerCase() + pascal.slice(1);\n}\n/**\n * Print a warning message to console.\n * @internal\n **/\nfunction logWarn(...args) {\n // eslint-disable-next-line no-console\n console.warn('[anchor-link]', ...args);\n}\n\n/**\n * Type describing a link session that can create a eosjs compatible\n * signature provider and transact for a specific auth.\n */\nclass LinkSession {\n /** @internal */\n constructor() { } // eslint-disable-line @typescript-eslint/no-empty-function\n /**\n * Convenience, remove this session from associated [[Link]] storage if set.\n * Equivalent to:\n * ```ts\n * session.link.removeSession(session.identifier, session.auth, session.chainId)\n * ```\n */\n async remove() {\n if (this.link.storage) {\n await this.link.removeSession(this.identifier, this.auth, this.chainId);\n }\n }\n /** API client for the chain this session is valid on. */\n get client() {\n return this.link.getChain(this.chainId).client;\n }\n /** Restore a previously serialized session. */\n static restore(link, data) {\n switch (data.type) {\n case 'channel':\n return new LinkChannelSession(link, data.data, data.metadata);\n case 'fallback':\n return new LinkFallbackSession(link, data.data, data.metadata);\n default:\n throw new Error('Unable to restore, session data invalid');\n }\n }\n}\n/**\n * Link session that pushes requests over a channel.\n * @internal\n */\nclass LinkChannelSession extends LinkSession {\n constructor(link, data, metadata) {\n super();\n this.type = 'channel';\n this.timeout = 2 * 60 * 1000; // ms\n this.link = link;\n this.chainId = ChainId.from(data.chainId);\n this.auth = PermissionLevel.from(data.auth);\n this.publicKey = PublicKey.from(data.publicKey);\n this.identifier = Name.from(data.identifier);\n const privateKey = PrivateKey.from(data.requestKey);\n this.channelKey = PublicKey.from(data.channel.key);\n this.channelUrl = data.channel.url;\n this.channelName = data.channel.name;\n this.encrypt = (request) => {\n return sealMessage(request.encode(true, false), privateKey, this.channelKey);\n };\n this.metadata = {\n ...(metadata || {}),\n timeout: this.timeout,\n name: this.channelName,\n request_key: privateKey.toPublic(),\n };\n this.serialize = () => ({\n type: 'channel',\n data: {\n ...data,\n channel: {\n url: this.channelUrl,\n key: this.channelKey,\n name: this.channelName,\n },\n },\n metadata: this.metadata,\n });\n }\n onSuccess(request, result) {\n if (this.link.transport.onSuccess) {\n this.link.transport.onSuccess(request, result);\n }\n }\n onFailure(request, error) {\n if (this.link.transport.onFailure) {\n this.link.transport.onFailure(request, error);\n }\n }\n onRequest(request, cancel) {\n const info = LinkInfo.from({\n expiration: new Date(Date.now() + this.timeout),\n });\n if (this.link.transport.onSessionRequest) {\n this.link.transport.onSessionRequest(this, request, cancel);\n }\n const timer = setTimeout(() => {\n cancel(new SessionError('Wallet did not respond in time', 'E_TIMEOUT', this));\n }, this.timeout);\n request.setInfoKey('link', info);\n let payloadSent = false;\n const payload = Serializer.encode({ object: this.encrypt(request) });\n if (this.link.transport.sendSessionPayload) {\n try {\n payloadSent = this.link.transport.sendSessionPayload(payload, this);\n }\n catch (error) {\n logWarn('Unexpected error when transport tried to send session payload', error);\n }\n }\n if (payloadSent) {\n return;\n }\n fetch(this.channelUrl, {\n method: 'POST',\n headers: {\n 'X-Buoy-Soft-Wait': '10',\n },\n body: payload.array,\n })\n .then((response) => {\n if (Math.floor(response.status / 100) !== 2) {\n clearTimeout(timer);\n if (response.status === 202) {\n logWarn('Missing delivery ack from session channel');\n }\n cancel(new SessionError('Unable to push message', 'E_DELIVERY', this));\n }\n })\n .catch((error) => {\n clearTimeout(timer);\n cancel(new SessionError(`Unable to reach link service (${error.message || String(error)})`, 'E_DELIVERY', this));\n });\n }\n addLinkInfo(request) {\n const createInfo = LinkCreate.from({\n session_name: this.identifier,\n request_key: this.metadata.request_key,\n user_agent: this.link.getUserAgent(),\n });\n request.setInfoKey('link', createInfo);\n }\n prepare(request) {\n if (this.link.transport.prepare) {\n return this.link.transport.prepare(request, this);\n }\n return Promise.resolve(request);\n }\n showLoading() {\n if (this.link.transport.showLoading) {\n return this.link.transport.showLoading();\n }\n }\n recoverError(error, request) {\n if (this.link.transport.recoverError) {\n return this.link.transport.recoverError(error, request);\n }\n return false;\n }\n makeSignatureProvider() {\n return this.link.makeSignatureProvider([this.publicKey.toString()], this.chainId, this);\n }\n async transact(args, options) {\n const res = await this.link.transact(args, { ...options, chain: this.chainId }, this);\n // update session if callback payload contains new channel info\n if (res.payload.link_ch && res.payload.link_key && res.payload.link_name) {\n try {\n const metadata = {\n ...this.metadata,\n ...sessionMetadata(res.payload, res.resolved.request),\n };\n this.channelUrl = res.payload.link_ch;\n this.channelKey = PublicKey.from(res.payload.link_key);\n this.channelName = res.payload.link_name;\n metadata.name = res.payload.link_name;\n this.metadata = metadata;\n }\n catch (error) {\n logWarn('Unable to recover link session', error);\n }\n }\n return res;\n }\n}\n/**\n * Link session that sends every request over the transport.\n * @internal\n */\nclass LinkFallbackSession extends LinkSession {\n constructor(link, data, metadata) {\n super();\n this.type = 'fallback';\n this.link = link;\n this.auth = PermissionLevel.from(data.auth);\n this.publicKey = PublicKey.from(data.publicKey);\n this.chainId = ChainId.from(data.chainId);\n this.metadata = metadata || {};\n this.identifier = Name.from(data.identifier);\n this.serialize = () => ({\n type: this.type,\n data,\n metadata: this.metadata,\n });\n }\n onSuccess(request, result) {\n if (this.link.transport.onSuccess) {\n this.link.transport.onSuccess(request, result);\n }\n }\n onFailure(request, error) {\n if (this.link.transport.onFailure) {\n this.link.transport.onFailure(request, error);\n }\n }\n onRequest(request, cancel) {\n if (this.link.transport.onSessionRequest) {\n this.link.transport.onSessionRequest(this, request, cancel);\n }\n else {\n this.link.transport.onRequest(request, cancel);\n }\n }\n prepare(request) {\n if (this.link.transport.prepare) {\n return this.link.transport.prepare(request, this);\n }\n return Promise.resolve(request);\n }\n showLoading() {\n if (this.link.transport.showLoading) {\n return this.link.transport.showLoading();\n }\n }\n makeSignatureProvider() {\n return this.link.makeSignatureProvider([this.publicKey.toString()], this.chainId, this);\n }\n transact(args, options) {\n return this.link.transact(args, { ...options, chain: this.chainId }, this);\n }\n}\n\n/** @internal */\nclass BuoyCallbackService {\n constructor(address) {\n this.address = address.trim().replace(/\\/$/, '');\n }\n create() {\n const url = `${this.address}/${v4()}`;\n return new BuoyCallback(url);\n }\n}\n/** @internal */\nclass BuoyCallback {\n constructor(url) {\n this.url = url;\n this.ctx = {};\n }\n wait() {\n if (this.url.includes('hyperbuoy')) {\n return pollForCallback(this.url, this.ctx);\n }\n else {\n return waitForCallback(this.url, this.ctx);\n }\n }\n cancel() {\n if (this.ctx.cancel) {\n this.ctx.cancel();\n }\n }\n}\n/**\n * Connect to a WebSocket channel and wait for a message.\n * @internal\n */\nfunction waitForCallback(url, ctx) {\n return new Promise((resolve, reject) => {\n let active = true;\n let retries = 0;\n const socketUrl = url.replace(/^http/, 'ws');\n const handleResponse = (response) => {\n try {\n resolve(JSON.parse(response));\n }\n catch (error) {\n error.message = 'Unable to parse callback JSON: ' + error.message;\n reject(error);\n }\n };\n const connect = () => {\n const socket = new WebSocket(socketUrl);\n ctx.cancel = () => {\n active = false;\n if (socket.readyState === WebSocket.OPEN ||\n socket.readyState === WebSocket.CONNECTING) {\n socket.close();\n }\n };\n socket.onmessage = (event) => {\n active = false;\n if (socket.readyState === WebSocket.OPEN) {\n socket.close();\n }\n if (typeof Blob !== 'undefined' && event.data instanceof Blob) {\n const reader = new FileReader();\n reader.onload = () => {\n handleResponse(reader.result);\n };\n reader.onerror = (error) => {\n reject(error);\n };\n reader.readAsText(event.data);\n }\n else {\n if (typeof event.data === 'string') {\n handleResponse(event.data);\n }\n else {\n handleResponse(event.data.toString());\n }\n }\n };\n socket.onopen = () => {\n retries = 0;\n };\n socket.onclose = () => {\n if (active) {\n setTimeout(connect, backoff(retries++));\n }\n };\n };\n connect();\n });\n}\n/**\n * Long-poll for message.\n * @internal\n */\nasync function pollForCallback(url, ctx) {\n let active = true;\n ctx.cancel = () => {\n active = false;\n };\n while (active) {\n try {\n const res = await fetch(url);\n if (res.status === 408) {\n continue;\n }\n else if (res.status === 200) {\n return await res.json();\n }\n else {\n throw new Error(`HTTP ${res.status}: ${res.statusText}`);\n }\n }\n catch (error) {\n logWarn('Unexpected hyperbuoy error', error);\n }\n await sleep(1000);\n }\n return null;\n}\n/**\n * Exponential backoff function that caps off at 10s after 10 tries.\n * https://i.imgur.com/IrUDcJp.png\n * @internal\n */\nfunction backoff(tries) {\n return Math.min(Math.pow(tries * 10, 2), 10 * 1000);\n}\n/**\n * Return promise that resolves after given milliseconds.\n * @internal\n */\nfunction sleep(ms) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\n/**\n * Class representing a EOSIO chain.\n */\nclass LinkChain {\n /** @internal */\n constructor(chainId, clientOrUrl) {\n this.abiCache = new Map();\n this.pendingAbis = new Map();\n this.chainId = ChainId.from(chainId);\n this.client =\n typeof clientOrUrl === 'string' ? new APIClient({ url: clientOrUrl }) : clientOrUrl;\n }\n /**\n * Fetch the ABI for given account, cached.\n * @internal\n */\n async getAbi(account) {\n const key = String(account);\n let rv = this.abiCache.get(key);\n if (!rv) {\n let getAbi = this.pendingAbis.get(key);\n if (!getAbi) {\n getAbi = this.client.v1.chain.get_abi(account);\n this.pendingAbis.set(key, getAbi);\n }\n rv = (await getAbi).abi;\n this.pendingAbis.delete(key);\n if (rv) {\n this.abiCache.set(key, rv);\n }\n }\n return rv;\n }\n}\n/**\n * Anchor Link main class.\n *\n * @example\n *\n * ```ts\n * import AnchorLink from 'anchor-link'\n * import ConsoleTransport from 'anchor-link-console-transport'\n *\n * const link = new AnchorLink({\n * transport: new ConsoleTransport(),\n * chains: [\n * {\n * chainId: 'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906',\n * nodeUrl: 'https://eos.greymass.com',\n * },\n * ],\n * })\n *\n * const result = await link.transact({actions: myActions})\n * ```\n */\nclass Link {\n /** Create a new link instance. */\n constructor(options) {\n if (typeof options !== 'object') {\n throw new TypeError('Missing options object');\n }\n if (!options.transport) {\n throw new TypeError('options.transport is required');\n }\n let chains = options.chains || [];\n if (options.chainId && options.client) {\n chains = [{ chainId: options.chainId, nodeUrl: options.client }];\n }\n if (chains.length === 0) {\n throw new TypeError('options.chains is required');\n }\n this.chains = chains.map(({ chainId, nodeUrl }) => {\n if (!chainId) {\n throw new Error('options.chains[].chainId is required');\n }\n if (!nodeUrl) {\n throw new Error('options.chains[].nodeUrl is required');\n }\n return new LinkChain(chainId, nodeUrl);\n });\n if (options.service === undefined || typeof options.service === 'string') {\n this.callbackService = new BuoyCallbackService(options.service || LinkOptions.defaults.service);\n }\n else {\n this.callbackService = options.service;\n }\n this.transport = options.transport;\n if (options.storage !== null) {\n this.storage = options.storage || this.transport.storage;\n }\n this.verifyProofs =\n options.verifyProofs !== undefined\n ? options.verifyProofs\n : LinkOptions.defaults.verifyProofs;\n this.encodeChainIds =\n options.encodeChainIds !== undefined\n ? options.encodeChainIds\n : LinkOptions.defaults.encodeChainIds;\n }\n /**\n * The APIClient instance for communicating with the node.\n * @note This returns the first APIClient when link is configured with multiple chains.\n */\n get client() {\n return this.chains[0].client;\n }\n /**\n * Return a [[LinkChain]] object for given chainId or chain reference.\n * @throws If this link instance has no configured chain for given reference.\n * @internal\n */\n getChain(chain) {\n if (chain instanceof LinkChain) {\n return chain;\n }\n if (typeof chain === 'number') {\n const rv = this.chains[chain];\n if (!rv) {\n throw new Error(`Invalid chain index: ${chain}`);\n }\n return rv;\n }\n const id = ChainId.from(chain);\n const rv = this.chains.find((c) => c.chainId.equals(id));\n if (!rv) {\n throw new Error(`Unsupported chain: ${id}`);\n }\n return rv;\n }\n /**\n * Create a SigningRequest instance configured for this link.\n * @internal\n */\n async createRequest(args, chain, transport) {\n const t = transport || this.transport;\n let request;\n if (chain || this.chains.length === 1) {\n const c = chain || this.chains[0];\n request = await SigningRequest.create({\n ...args,\n chainId: c.chainId,\n broadcast: false,\n }, { abiProvider: c, zlib });\n }\n else {\n // multi-chain request\n request = await SigningRequest.create({\n ...args,\n chainId: null,\n chainIds: this.encodeChainIds ? this.chains.map((c) => c.chainId) : undefined,\n broadcast: false,\n }, \n // abi's will be pulled from the first chain and assumed to be identical on all chains\n { abiProvider: this.chains[0], zlib });\n }\n if (t.prepare) {\n request = await t.prepare(request);\n }\n const callback = this.callbackService.create();\n request.setCallback(callback.url, true);\n return { request, callback };\n }\n /**\n * Send a SigningRequest instance using this link.\n * @internal\n */\n async sendRequest(request, callback, chain, transport, broadcast = false) {\n const t = transport || this.transport;\n try {\n const linkUrl = request.data.callback;\n if (linkUrl !== callback.url) {\n throw new Error('Invalid request callback');\n }\n if (request.data.flags.broadcast === true || request.data.flags.background === false) {\n throw new Error('Invalid request flags');\n }\n // wait for callback or user cancel\n let done = false;\n const cancel = new Promise((resolve, reject) => {\n t.onRequest(request, (reason) => {\n if (done) {\n // ignore any cancel calls once callbackResponse below has resolved\n return;\n }\n const error = typeof reason === 'string' ? new CancelError(reason) : reason;\n if (t.recoverError && t.recoverError(error, request) === true) {\n // transport was able to recover from the error\n return;\n }\n callback.cancel();\n reject(error);\n });\n });\n const callbackResponse = await Promise.race([callback.wait(), cancel]);\n done = true;\n if (typeof callbackResponse.rejected === 'string') {\n throw new CancelError(callbackResponse.rejected);\n }\n const payload = callbackResponse;\n const signer = PermissionLevel.from({\n actor: payload.sa,\n permission: payload.sp,\n });\n const signatures = Object.keys(payload)\n .filter((key) => key.startsWith('sig') && key !== 'sig0')\n .map((key) => Signature.from(payload[key]));\n let c;\n if (!chain && this.chains.length > 1) {\n if (!payload.cid) {\n throw new Error('Multi chain response payload must specify resolved chain id (cid)');\n }\n c = this.getChain(payload.cid);\n }\n else {\n c = chain || this.getChain(0);\n if (payload.cid && !c.chainId.equals(payload.cid)) {\n throw new Error('Got response for wrong chain id');\n }\n }\n // recreate transaction from request response\n const resolved = await ResolvedSigningRequest.fromPayload(payload, {\n zlib,\n abiProvider: c,\n });\n // prepend cosigner signature if present\n const cosignerSig = resolved.request.getInfoKey('cosig', {\n type: Signature,\n array: true,\n });\n if (cosignerSig) {\n signatures.unshift(...cosignerSig);\n }\n const result = {\n resolved,\n chain: c,\n transaction: resolved.transaction,\n resolvedTransaction: resolved.resolvedTransaction,\n signatures,\n payload,\n signer,\n };\n if (broadcast) {\n const signedTx = SignedTransaction.from({\n ...resolved.transaction,\n signatures,\n });\n const res = await c.client.v1.chain.push_transaction(signedTx);\n result.processed = res.processed;\n }\n if (t.onSuccess) {\n t.onSuccess(request, result);\n }\n return result;\n }\n catch (error) {\n if (t.onFailure) {\n t.onFailure(request, error);\n }\n throw error;\n }\n }\n /**\n * Sign and optionally broadcast a EOSIO transaction, action or actions.\n *\n * Example:\n *\n * ```ts\n * let result = await myLink.transact({transaction: myTx})\n * ```\n *\n * @param args The action, actions or transaction to use.\n * @param options Options for this transact call.\n * @param transport Transport override, for internal use.\n */\n async transact(args, options, transport) {\n const o = options || {};\n const t = transport || this.transport;\n const c = o.chain !== undefined ? this.getChain(o.chain) : undefined;\n const broadcast = o.broadcast !== false;\n const noModify = o.noModify !== undefined ? o.noModify : !broadcast;\n // Initialize the loading state of the transport\n if (t && t.showLoading) {\n t.showLoading();\n }\n // eosjs transact compat: upgrade to transaction if args have any header fields\n const anyArgs = args;\n if (args.actions &&\n (anyArgs.expiration ||\n anyArgs.ref_block_num ||\n anyArgs.ref_block_prefix ||\n anyArgs.max_net_usage_words ||\n anyArgs.max_cpu_usage_ms ||\n anyArgs.delay_sec)) {\n args = {\n transaction: {\n expiration: '1970-01-01T00:00:00',\n ref_block_num: 0,\n ref_block_prefix: 0,\n max_net_usage_words: 0,\n max_cpu_usage_ms: 0,\n delay_sec: 0,\n ...anyArgs,\n },\n };\n }\n const { request, callback } = await this.createRequest(args, c, t);\n if (noModify) {\n request.setInfoKey('no_modify', true, 'bool');\n }\n const result = await this.sendRequest(request, callback, c, t, broadcast);\n return result;\n }\n /**\n * Send an identity request and verify the identity proof if [[LinkOptions.verifyProofs]] is true.\n * @param args.scope The scope of the identity request.\n * @param args.requestPermission Optional request permission if the request is for a specific account or permission.\n * @param args.info Metadata to add to the request.\n * @note This is for advanced use-cases, you probably want to use [[Link.login]] instead.\n */\n async identify(args) {\n const { request, callback } = await this.createRequest({\n identity: { permission: args.requestPermission, scope: args.scope },\n info: args.info,\n });\n const res = await this.sendRequest(request, callback);\n if (!res.resolved.request.isIdentity()) {\n throw new IdentityError('Unexpected response');\n }\n let account;\n const proof = res.resolved.getIdentityProof(res.signatures[0]);\n if (this.verifyProofs) {\n account = await res.chain.client.v1.chain.get_account(res.signer.actor);\n if (!account) {\n throw new IdentityError(`Signature from unknown account: ${proof.signer.actor}`);\n }\n const accountPermission = account.permissions.find(({ perm_name }) => proof.signer.permission.equals(perm_name));\n if (!accountPermission) {\n throw new IdentityError(`${proof.signer.actor} signed for unknown permission: ${proof.signer.permission}`);\n }\n const proofValid = proof.verify(accountPermission.required_auth, account.head_block_time);\n if (!proofValid) {\n throw new IdentityError(`Invalid identify proof for: ${proof.signer}`);\n }\n }\n if (args.requestPermission) {\n const perm = PermissionLevel.from(args.requestPermission);\n if ((!perm.actor.equals(PlaceholderName) && !perm.actor.equals(proof.signer.actor)) ||\n (!perm.permission.equals(PlaceholderPermission) &&\n !perm.permission.equals(proof.signer.permission))) {\n throw new IdentityError(`Identity proof singed by ${proof.signer}, expected: ${formatAuth(perm)} `);\n }\n }\n return {\n ...res,\n account,\n proof,\n };\n }\n /**\n * Login and create a persistent session.\n * @param identifier The session identifier, an EOSIO name (`[a-z1-5]{1,12}`).\n * Should be set to the contract account if applicable.\n */\n async login(identifier) {\n const privateKey = PrivateKey.generate('K1');\n const requestKey = privateKey.toPublic();\n const createInfo = LinkCreate.from({\n session_name: identifier,\n request_key: requestKey,\n user_agent: this.getUserAgent(),\n });\n const res = await this.identify({\n scope: identifier,\n info: {\n link: createInfo,\n scope: identifier,\n },\n });\n const metadata = sessionMetadata(res.payload, res.resolved.request);\n const signerKey = res.proof.recover();\n let session;\n if (res.payload.link_ch && res.payload.link_key && res.payload.link_name) {\n session = new LinkChannelSession(this, {\n identifier,\n chainId: res.chain.chainId,\n auth: res.signer,\n publicKey: signerKey,\n channel: {\n url: res.payload.link_ch,\n key: res.payload.link_key,\n name: res.payload.link_name,\n },\n requestKey: privateKey,\n }, metadata);\n }\n else {\n session = new LinkFallbackSession(this, {\n identifier,\n chainId: res.chain.chainId,\n auth: res.signer,\n publicKey: signerKey,\n }, metadata);\n }\n await this.storeSession(session);\n return {\n ...res,\n session,\n };\n }\n /**\n * Restore previous session, use [[login]] to create a new session.\n * @param identifier The session identifier, must be same as what was used when creating the session with [[login]].\n * @param auth A specific session auth to restore, if omitted the most recently used session will be restored.\n * @param chainId If given function will only consider that specific chain when restoring session.\n * @returns A [[LinkSession]] instance or null if no session can be found.\n * @throws If no [[LinkStorage]] adapter is configured or there was an error retrieving the session data.\n **/\n async restoreSession(identifier, auth, chainId) {\n if (!this.storage) {\n throw new Error('Unable to restore session: No storage adapter configured');\n }\n let key;\n if (auth && chainId) {\n // both auth and chain id given, we can look up on specific key\n key = this.sessionKey(identifier, formatAuth(PermissionLevel.from(auth)), String(ChainId.from(chainId)));\n }\n else {\n // otherwise we use the session list to filter down to most recently used matching given params\n let list = await this.listSessions(identifier);\n if (auth) {\n list = list.filter((item) => item.auth.equals(auth));\n }\n if (chainId) {\n const id = ChainId.from(chainId);\n list = list.filter((item) => item.chainId.equals(id));\n }\n const latest = list[0];\n if (!latest) {\n return null;\n }\n key = this.sessionKey(identifier, formatAuth(latest.auth), String(latest.chainId));\n }\n const data = await this.storage.read(key);\n if (!data) {\n return null;\n }\n let sessionData;\n try {\n sessionData = JSON.parse(data);\n }\n catch (error) {\n throw new Error(`Unable to restore session: Stored JSON invalid (${error.message || String(error)})`);\n }\n const session = LinkSession.restore(this, sessionData);\n if (auth || chainId) {\n // update latest used\n await this.touchSession(identifier, session.auth, session.chainId);\n }\n return session;\n }\n /**\n * List stored session auths for given identifier.\n * The most recently used session is at the top (index 0).\n * @throws If no [[LinkStorage]] adapter is configured or there was an error retrieving the session list.\n **/\n async listSessions(identifier) {\n if (!this.storage) {\n throw new Error('Unable to list sessions: No storage adapter configured');\n }\n const key = this.sessionKey(identifier, 'list');\n let list;\n try {\n list = JSON.parse((await this.storage.read(key)) || '[]');\n }\n catch (error) {\n throw new Error(`Unable to list sessions: ${error.message || String(error)}`);\n }\n return list.map(({ auth, chainId }) => ({\n auth: PermissionLevel.from(auth),\n chainId: ChainId.from(chainId),\n }));\n }\n /**\n * Remove stored session for given identifier and auth.\n * @throws If no [[LinkStorage]] adapter is configured or there was an error removing the session data.\n */\n async removeSession(identifier, auth, chainId) {\n if (!this.storage) {\n throw new Error('Unable to remove session: No storage adapter configured');\n }\n const key = this.sessionKey(identifier, formatAuth(auth), String(chainId));\n await this.storage.remove(key);\n await this.touchSession(identifier, auth, chainId, true);\n }\n /**\n * Remove all stored sessions for given identifier.\n * @throws If no [[LinkStorage]] adapter is configured or there was an error removing the session data.\n */\n async clearSessions(identifier) {\n if (!this.storage) {\n throw new Error('Unable to clear sessions: No storage adapter configured');\n }\n for (const { auth, chainId } of await this.listSessions(identifier)) {\n await this.removeSession(identifier, auth, chainId);\n }\n }\n /**\n * Create an eosjs compatible signature provider using this link.\n * @param availableKeys Keys the created provider will claim to be able to sign for.\n * @param chain Chain to use when configured with multiple chains.\n * @param transport (internal) Transport override for this call.\n * @note We don't know what keys are available so those have to be provided,\n * to avoid this use [[LinkSession.makeSignatureProvider]] instead. Sessions can be created with [[Link.login]].\n */\n makeSignatureProvider(availableKeys, chain, transport) {\n return {\n getAvailableKeys: async () => availableKeys,\n sign: async (args) => {\n const t = transport || this.transport;\n const c = chain ? this.getChain(chain) : this.chains[0];\n let request = SigningRequest.fromTransaction(args.chainId, args.serializedTransaction, { abiProvider: c, zlib });\n const callback = this.callbackService.create();\n request.setCallback(callback.url, true);\n request.setBroadcast(false);\n if (t.prepare) {\n request = await t.prepare(request);\n }\n const { transaction, signatures } = await this.sendRequest(request, callback, c, t);\n const serializedTransaction = Serializer.encode({ object: transaction });\n return {\n ...args,\n serializedTransaction,\n signatures,\n };\n },\n };\n }\n /** Makes sure session is in storage list of sessions and moves it to top (most recently used). */\n async touchSession(identifier, auth, chainId, remove = false) {\n const list = await this.listSessions(identifier);\n const existing = list.findIndex((item) => item.auth.equals(auth) && item.chainId.equals(chainId));\n if (existing >= 0) {\n list.splice(existing, 1);\n }\n if (remove === false) {\n list.unshift({ auth, chainId });\n }\n const key = this.sessionKey(identifier, 'list');\n await this.storage.write(key, JSON.stringify(list));\n }\n /**\n * Makes sure session is in storage list of sessions and moves it to top (most recently used).\n * @internal\n */\n async storeSession(session) {\n if (this.storage) {\n const key = this.sessionKey(session.identifier, formatAuth(session.auth), String(session.chainId));\n const data = JSON.stringify(session.serialize());\n await this.storage.write(key, data);\n await this.touchSession(session.identifier, session.auth, session.chainId);\n }\n }\n /** Session storage key for identifier and suffix. */\n sessionKey(identifier, ...suffix) {\n return [String(Name.from(identifier)), ...suffix].join('-');\n }\n /**\n * Return user agent of this link.\n * @internal\n */\n getUserAgent() {\n let rv = `AnchorLink/${Link.version}`;\n if (this.transport.userAgent) {\n rv += ' ' + this.transport.userAgent();\n }\n return rv;\n }\n}\n/** Package version. */\nLink.version = '3.3.3'; // eslint-disable-line @typescript-eslint/no-inferrable-types\n/**\n * Format a EOSIO permission level in the format `actor@permission` taking placeholders into consideration.\n * @internal\n */\nfunction formatAuth(auth) {\n const a = PermissionLevel.from(auth);\n const actor = a.actor.equals(PlaceholderName) ? '' : String(a.actor);\n let permission;\n if (a.permission.equals(PlaceholderName) || a.permission.equals(PlaceholderPermission)) {\n permission = '';\n }\n else {\n permission = String(a.permission);\n }\n return `${actor}@${permission}`;\n}\n\n// export library\n\nexport default Link;\nexport { CancelError, IdentityError, Link, LinkChain, LinkChannelSession, LinkFallbackSession, LinkSession, SessionError };\n//# sourceMappingURL=anchor-link.m.js.map\n"],"names":["global","globalThis","self","module","exports","options","Promise","XMLHttpRequest","Object","create","fetch","value","undefined","writable","support","Symbol","Blob","e","viewClasses","isArrayBufferView","ArrayBuffer","isView","obj","indexOf","prototype","toString","call","normalizeName","name","String","test","TypeError","toLowerCase","normalizeValue","iteratorFor","items","iterator","next","shift","done","Headers","headers","this","map","forEach","append","Array","isArray","header","getOwnPropertyNames","consumed","body","bodyUsed","reject","fileReaderReady","reader","resolve","onload","result","onerror","error","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","buf","slice","view","Uint8Array","byteLength","set","buffer","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","get","type","rejected","Error","arrayBuffer","byteOffset","then","text","readAsText","chars","length","i","fromCharCode","join","readArrayBufferAsText","formData","decode","json","JSON","parse","oldValue","has","hasOwnProperty","callback","thisArg","keys","push","values","entries","methods","Request","input","method","upcased","url","credentials","mode","signal","toUpperCase","referrer","cache","reParamSearch","replace","Date","getTime","form","trim","split","bytes","decodeURIComponent","Response","bodyInit","status","ok","statusText","clone","response","redirectStatuses","redirect","RangeError","location","DOMException","err","message","stack","constructor","init","request","aborted","xhr","abortXhr","abort","rawHeaders","getAllResponseHeaders","substr","line","parts","key","responseURL","responseText","setTimeout","ontimeout","onabort","open","href","fixUrl","withCredentials","responseType","setRequestHeader","addEventListener","onreadystatechange","readyState","removeEventListener","send","polyfill","defineProperty","factory","defaultSetTimout","defaultClearTimeout","globalContext","cachedSetTimeout","cachedClearTimeout","runTimeout","fun","window","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","timeout","len","run","marker","runClearTimeout","Item","array","noop","apply","on","addListener","once","off","removeListener","removeAllListeners","emit","performance","performanceNow","now","mozNow","msNow","oNow","webkitNow","startTime","nextTick","args","arguments","title","browser","env","argv","version","versions","binding","cwd","chdir","dir","umask","hrtime","previousTimestamp","clocktime","seconds","Math","floor","nanoseconds","platform","release","config","uptime","is_bytes","a","_heap_write","heap","hpos","data","dpos","dlen","hlen","wlen","subarray","joinBytes","arg","totalLenght","reduce","sum","curr","ret","cursor","IllegalArgumentError","super","SecurityError","AES_asm","gexp3","glog3","ginit_done","gmul","b","c","aes_sbox","aes_sinv","aes_enc","aes_dec","aes_init_done","wrapper","foreign","_s","s","x","ginv","d","ginit","t","aes_init","Uint32Array","asm","stdlib","S0","S1","S2","S3","I0","I1","I2","I3","N0","N1","N2","N3","M0","M1","M2","M3","H0","H1","H2","H3","R","HEAP","DATA","_core","k","r","x0","x1","x2","x3","t1","t2","t3","y0","y1","y2","y3","_ecb_enc","_ecb_dec","_cbc_enc","_cbc_dec","_cfb_enc","_cfb_dec","_ofb","_ctr","_gcm_mac","z0","z1","z2","z3","set_rounds","set_state","s0","s1","s2","s3","set_iv","i0","i1","i2","i3","set_nonce","n0","n1","n2","n3","set_mask","m0","m1","m2","m3","set_counter","c0","c1","c2","c3","get_state","pos","get_iv","gcm_init","cipher","_cipher_modes","mac","_mac_modes","set_key","ks","k0","k1","k2","k3","k4","k5","k6","k7","ekeys","dkeys","rcon","j","jj","ENC","ECB","CBC","CFB","OFB","CTR","DEC","MAC","GCM","HEAP_DATA","AES_CBC","iv","padding","heapSize","size","_heap_init","keylen","keyview","getUint32","ivview","AES_Encrypt_process","amode","rpos","AES_Encrypt_finish","plen","rlen","p","AES_Decrypt_process","AES_Decrypt_finish","pad","pcheck","encrypt","decrypt","bigint_asm","SP","HEAP32","imul","sreset","salloc","l","sfree","cp","A","B","z","neg","lA","lR","cmp","lB","tst","add","sub","mul","al0","al1","al2","al3","al4","al5","al6","al7","ah0","ah1","ah2","ah3","ah4","ah5","ah6","ah7","bl0","bl1","bl2","bl3","bl4","bl5","bl6","bl7","bh0","bh1","bh2","bh3","bh4","bh5","bh6","bh7","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12","r13","r14","r15","u","v","w","m","Ai","Bj","Rk","sqr","h","dd","Aj","div","N","lN","D","lD","Q","n","u1","u0","v0","vh","vl","qh","ql","rh","rl","mredc","y","T","uh","ul","w0","w1","w2","BigNumber_extGCD","sa","sign","sb","negate","a_cmp_b","compare","q","xi","BigNumber","ONE","xj","ZERO","lx","bitLength","yi","yj","ly","divide","remainder","quotient","subtract","multiply","clamp","gcd","getRandomValues","process","crypto","msCrypto","randomBytes","_bigint_stdlib","_bigint_heap","_bigint_asm","_BigNumber_ZERO_limbs","num","limbs","bitlen","str","utf8","charCodeAt","string_to_bytes","absnum","abs","fromConfig","bn","radix","toBytes","bytelen","valueOf","bits","pow","clamped","f","sliced","slimbs","negative","that","alimbs","alimbcnt","blimbs","blimbcnt","rbitlen","rlimbcnt","rsign","rof","abitlen","asign","bbitlen","bsign","pA","pB","pR","square","qlimbcnt","pQ","isMillerRabinProbablePrime","rounds","Modulus","power","isProbablePrime","paranoia","s5","s17","l3","l5","l17","extGCD","fromNumber","number","comodulus","Number_extGCD","coefficient","comodulusRemainder","comodulusRemainderSquare","inverse","g","_Montgomery_reduce","g2","gn","nlimbs","nlimbcnt","pN","rnds8","rng","bind","validate","uuid","REGEX","byteToHex","v4","offset","rnds","random","arr","stringify","ws","WebSocket","MozWebSocket","LinkOptions","CancelError","reason","code","IdentityError","SessionError","session","defaults","service","verifyProofs","encodeChainIds","SealedMessage","S","_","LinkCreate","extension","LinkInfo","makeFetch","sessionMetadata","payload","metadata","sameDevice","getRawInfo","link_meta","parsed","snakeToCamel","logWarn","pascal","snakeToPascal","console","warn","LinkSession","link","storage","removeSession","identifier","auth","chainId","getChain","client","LinkChannelSession","LinkFallbackSession","C","publicKey","P","privateKey","requestKey","channelKey","channel","channelUrl","channelName","nonce","secret","sharedSecret","object","appending","cbc","ciphertext","checksum","from","toPublic","sealMessage","encode","request_key","serialize","onSuccess","transport","onFailure","onRequest","cancel","info","expiration","onSessionRequest","timer","setInfoKey","payloadSent","sendSessionPayload","catch","addLinkInfo","createInfo","session_name","user_agent","getUserAgent","prepare","showLoading","recoverError","makeSignatureProvider","res","transact","chain","link_ch","link_key","link_name","resolved","BuoyCallbackService","address","BuoyCallback","ctx","wait","includes","async","active","sleep","pollForCallback","retries","socketUrl","handleResponse","connect","socket","OPEN","CONNECTING","close","onmessage","event","onopen","onclose","tries","min","ms","LinkChain","clientOrUrl","abiCache","Map","pendingAbis","account","rv","getAbi","v1","get_abi","abi","delete","Link","chains","nodeUrl","callbackService","id","find","equals","broadcast","abiProvider","zlib","chainIds","setCallback","flags","background","callbackResponse","race","signer","actor","permission","sp","signatures","filter","startsWith","cid","cosignerSig","getInfoKey","unshift","transaction","resolvedTransaction","signedTx","push_transaction","processed","o","noModify","anyArgs","actions","ref_block_num","ref_block_prefix","max_net_usage_words","max_cpu_usage_ms","delay_sec","createRequest","sendRequest","identity","requestPermission","scope","isIdentity","proof","getIdentityProof","get_account","accountPermission","permissions","perm_name","verify","required_auth","head_block_time","perm","formatAuth","identify","signerKey","recover","storeSession","sessionKey","list","listSessions","item","latest","read","sessionData","restore","touchSession","remove","availableKeys","getAvailableKeys","serializedTransaction","setBroadcast","existing","findIndex","splice","write","suffix","userAgent"],"sourceRoot":""}