@keeper-security/keeperapi 16.0.35 → 16.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserWorker.js","sources":["../../src/platform.ts","../../src/cryptoWorker.ts","../../src/browser/jsbn.ts","../../src/browser/asn1hex.ts","../../src/browser/rng.ts","../../src/browser/rsa.ts","../../src/transmissionKeys.ts","../../src/utils.ts","../../src/socket.ts","../../node_modules/asmcrypto.js/asmcrypto.all.es8.js","../../src/browser/platform.ts","../../src/browser/browserWorker.ts"],"sourcesContent":["import type {SocketProxy} from './socket'\nimport type {KeeperHttpResponse} from \"./commands\";\nimport type {CryptoWorkerPool, CryptoWorkerPoolConfig} from './cryptoWorker';\n\nexport interface Platform {\n keys: Uint8Array[];\n\n supportsConcurrency: boolean\n\n getRandomBytes(length: number): Uint8Array;\n\n bytesToBase64(data: Uint8Array): string;\n\n base64ToBytes(data: string): Uint8Array;\n\n bytesToString(data: Uint8Array): string;\n\n stringToBytes(data: string): Uint8Array;\n\n wrapPassword(password: Uint8Array): KeyWrapper;\n\n unWrapPassword(password: KeyWrapper): Uint8Array;\n\n importKey(keyId: string, key: Uint8Array, storage?: KeyStorage, canExport?: boolean): Promise<void>\n\n importKeyEC(keyId: string, privateKey: Uint8Array, publicKey: Uint8Array, storage?: KeyStorage, canExport?: boolean): Promise<void>\n\n importKeyRSA(keyId: string, key: Uint8Array, storage?: KeyStorage, canExport?: boolean): Promise<void>\n\n unloadKeys(): void\n\n unwrapKey(key: Uint8Array, keyId: string, unwrappingKeyId: string, encryptionType: EncryptionType, unwrappedType: UnwrappedKeyType, storage?: KeyStorage, canExport?: boolean): Promise<void>\n\n unwrapKeys(keys: UnwrapKeyMap, storage?: KeyStorage): Promise<void>\n\n decrypt(data: Uint8Array, keyId: string, encryptionType: EncryptionType, storage?: KeyStorage): Promise<Uint8Array>\n\n generateRSAKeyPair(): Promise<{privateKey: Uint8Array; publicKey: Uint8Array}>\n\n generateECKeyPair(): Promise<{privateKey: Uint8Array; publicKey: Uint8Array}>\n\n publicEncrypt(data: Uint8Array, key: string): Uint8Array;\n\n publicEncryptEC(data: Uint8Array, key: Uint8Array, id?: Uint8Array): Promise<Uint8Array>\n\n privateDecrypt(data: Uint8Array, key: Uint8Array): Uint8Array;\n\n privateDecryptEC(data: Uint8Array, privateKey: Uint8Array, publicKey?: Uint8Array, id?: Uint8Array): Promise<Uint8Array>\n\n privateSign(data: Uint8Array, key: string): Promise<Uint8Array>;\n\n wrapKey(keyId: string, wrappingKeyId: string, encryptionType: EncryptionType, storage?: KeyStorage): Promise<Uint8Array>\n\n encrypt(data: Uint8Array, keyId: string, encryptionType: EncryptionType, storage?: KeyStorage): Promise<Uint8Array>\n\n aesGcmEncrypt(data: Uint8Array, key: Uint8Array): Promise<Uint8Array>;\n\n aesGcmDecrypt(data: Uint8Array, key: Uint8Array): Promise<Uint8Array>;\n\n aesCbcEncrypt(data: Uint8Array, key: Uint8Array, usePadding: boolean): Promise<Uint8Array>;\n\n aesCbcDecrypt(data: Uint8Array, key: Uint8Array, usePadding: boolean): Promise<Uint8Array>;\n\n deriveKey(password: KeyWrapper, saltBytes: Uint8Array, iterations: number): Promise<Uint8Array>;\n\n deriveKeyV2(domain: string, password: KeyWrapper, saltBytes: Uint8Array, iterations: number): Promise<Uint8Array>;\n\n calcAuthVerifier(key: Uint8Array): Promise<Uint8Array>;\n\n get(url: string, headers: any): Promise<KeeperHttpResponse>;\n\n post(url: string, request: Uint8Array, headers?: any): Promise<KeeperHttpResponse>;\n\n fileUpload(url: string, uploadParameters: any, data: Uint8Array | Blob): Promise<any>\n\n createCryptoWorker(keyStorage: KeyStorage, options: CryptoWorkerOptions): Promise<CryptoWorkerPool | null>\n\n closeCryptoWorker(): Promise<void>\n\n createWebsocket(url: string): SocketProxy\n\n log(message: string, options: LogOptions): void;\n}\n\nexport interface CryptoTask {\n data: Uint8Array,\n dataId: string,\n keyId: string,\n encryptionType: EncryptionType,\n}\n\nexport interface UnwrapKey extends CryptoTask {\n unwrappedType: UnwrappedKeyType,\n}\n\nexport type UnwrapKeyMap = Record<string, UnwrapKey>\n\nexport type CryptoWorkerOptions = Partial<CryptoWorkerPoolConfig>\n\nexport class KeyWrapper {\n private key: any\n\n static create(key: Uint8Array | any): KeyWrapper {\n const wrapper = new KeyWrapper()\n wrapper.key = key\n return wrapper\n }\n\n public getKey() {\n return this.key\n }\n}\n\nexport type UnwrappedKeyType = 'aes' | 'rsa'\n\nexport type EncryptionType = 'cbc' | 'gcm' | 'rsa' | 'ecc'\n\nexport type KeyStorage = {\n getKeyBytes(keyId: string): Promise<Uint8Array | undefined>\n saveKeyBytes(keyId: string, key: Uint8Array): Promise<void>\n getObject?<T>(key: string): Promise<T | undefined>\n saveObject?<T>(key: string, value: T): Promise<void>\n}\nexport type LogOptions = 'default' | 'noCR' | 'CR'\n\nexport function connectPlatform(p: Platform) {\n platform = p;\n}\n\nexport let platform: Platform;\n","import { EncryptionType, KeyStorage, platform, CryptoTask } from \"./platform\"\n\nexport type CryptoWorkerKeys = Record<string, Uint8Array>\n\nexport type CryptoResults = \n Record<string, Uint8Array>\n\nexport type CryptoWorkerMessage = {\n data: CryptoTask[]\n keys: CryptoWorkerKeys\n}\n\nexport interface CryptoWorkerPoolConfig {\n createWorker(): Promise<CryptoWorker>\n numThreads: number\n getKey: (keyId: string, type: EncryptionType) => Promise<Uint8Array>\n}\n\nexport class CryptoWorkerPool {\n\n private workers: CryptoWorker[] = []\n\n private config: CryptoWorkerPoolConfig\n\n constructor(config: CryptoWorkerPoolConfig) {\n this.config = config\n }\n \n async open() {\n while (this.workers.length < this.config.numThreads) {\n const worker = await this.config.createWorker()\n this.workers.push(worker)\n }\n }\n\n async close() {\n for (let worker of this.workers) {\n await worker.terminate()\n }\n\n this.workers.length = 0\n }\n\n private async getKeys(tasks: CryptoTask[]): Promise<CryptoWorkerKeys> {\n const keys: CryptoWorkerKeys = {}\n\n for (const task of tasks) {\n const {keyId, encryptionType} = task\n if (keys[keyId]) continue\n\n try {\n keys[keyId] = await this.config.getKey(keyId, encryptionType)\n } catch (e) {\n console.error(e)\n }\n }\n\n return keys\n }\n\n async runTasks(tasks: CryptoTask[]): Promise<CryptoResults> {\n // Split into chunks for each worker\n const numberOfItems = tasks.length\n const chunkSize = Math.ceil(numberOfItems / this.workers.length)\n const chunks = this.chunk(tasks, chunkSize)\n\n // Issue concurrent requests\n const chunkedResults = await Promise.all(\n chunks.map(async (chunk, index) => {\n const worker: CryptoWorker = this.workers[index]\n const keys = await this.getKeys(chunk)\n return worker.sendMessage({ \n data: chunk, \n keys \n })\n })\n )\n\n // Merge and return results\n return Object.assign({}, ...chunkedResults) \n }\n\n private chunk<T>(array: T[], chunkSize: number): T[][] {\n const chunks: T[][] = []\n\n while (array.length) {\n // Important note: Array.splice drains the input array,\n // but faster than Array.slice\n chunks.push(array.splice(0, chunkSize))\n }\n\n return chunks\n }\n}\n\nexport interface CryptoWorker {\n \n sendMessage(message: CryptoWorkerMessage): Promise<CryptoResults>\n\n terminate(): Promise<void>\n\n}\n\nexport async function handleCryptoWorkerMessage(message: CryptoWorkerMessage): Promise<CryptoResults> {\n const {data, keys} = message\n const keyStorage: KeyStorage = {\n getKeyBytes: async (keyId) => {\n return keys[keyId]\n },\n saveKeyBytes: async (_keyId, _key) => {\n // unused\n }\n }\n\n let results: CryptoResults = {}\n await Promise.all(data.map(async (task) => {\n const {data, dataId, keyId, encryptionType} = task\n try {\n const keyBytes = await platform.decrypt(data, keyId, encryptionType, keyStorage)\n results[dataId] = keyBytes\n } catch (e: any) {\n console.error(`The key ${dataId} cannot be decrypted (${e.message})`)\n }\n }))\n\n return results\n}","// @ts-nocheck\n// Copyright (c) 2005 Tom Wu\n// All Rights Reserved.\n// See \"LICENSE\" for details.\n\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n// Bits per digit\nvar dbits;\n\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary&0xffffff)==0xefcafe);\n\n// (public) Constructor\nexport function BigInteger(a?,b?,c?) {\n if(a != null)\n if(\"number\" == typeof a) this.fromNumber(a,b,c);\n else if(b == null && \"string\" != typeof a) this.fromString(a,256);\n else this.fromString(a,b);\n}\n\n// convert a (hex) string to a bignum object\nexport function parseBigInt(str,r) {\n return new BigInteger(str,r);\n}\n\n// return new, unset BigInteger\nfunction nbi() { return new BigInteger(); }\n\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i,x,w,j,c,n) {\n while(--n >= 0) {\n var v = x*this[i++]+w[j]+c;\n c = Math.floor(v/0x4000000);\n w[j++] = v&0x3ffffff;\n }\n return c;\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i,x,w,j,c,n) {\n var xl = x&0x7fff, xh = x>>15;\n while(--n >= 0) {\n var l = this[i]&0x7fff;\n var h = this[i++]>>15;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);\n c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n w[j++] = l&0x3fffffff;\n }\n return c;\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i,x,w,j,c,n) {\n var xl = x&0x3fff, xh = x>>14;\n while(--n >= 0) {\n var l = this[i]&0x3fff;\n var h = this[i++]>>14;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x3fff)<<14)+w[j]+c;\n c = (l>>28)+(m>>14)+xh*h;\n w[j++] = l&0xfffffff;\n }\n return c;\n}\nif(j_lm && (typeof(navigator) !== 'undefined') && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n}\nelse if(j_lm && (typeof(navigator) !== 'undefined') && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n}\nelse { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1<<dbits)-1);\nBigInteger.prototype.DV = (1<<dbits);\n\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2,BI_FP);\nBigInteger.prototype.F1 = BI_FP-dbits;\nBigInteger.prototype.F2 = 2*dbits-BI_FP;\n\n// Digit conversions\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nvar BI_RC = new Array();\nvar rr,vv;\nrr = \"0\".charCodeAt(0);\nfor(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;\nrr = \"a\".charCodeAt(0);\nfor(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\nrr = \"A\".charCodeAt(0);\nfor(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\n\nfunction int2char(n) { return BI_RM.charAt(n); }\nfunction intAt(s,i) {\n var c = BI_RC[s.charCodeAt(i)];\n return (c==null)?-1:c;\n}\n\n// (protected) copy this to r\nfunction bnpCopyTo(r) {\n for(var i = this.t-1; i >= 0; --i) r[i] = this[i];\n r.t = this.t;\n r.s = this.s;\n}\n\n// (protected) set from integer value x, -DV <= x < DV\nfunction bnpFromInt(x) {\n this.t = 1;\n this.s = (x<0)?-1:0;\n if(x > 0) this[0] = x;\n else if(x < -1) this[0] = x+this.DV;\n else this.t = 0;\n}\n\n// return bigint initialized to value\nfunction nbv(i) { var r = nbi(); r.fromInt(i); return r; }\n\n// (protected) set from string and radix\nfunction bnpFromString(s,b) {\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 256) k = 8; // byte array\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else { this.fromRadix(s,b); return; }\n this.t = 0;\n this.s = 0;\n var i = s.length, mi = false, sh = 0;\n while(--i >= 0) {\n var x = (k==8)?s[i]&0xff:intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\") mi = true;\n continue;\n }\n mi = false;\n if(sh == 0)\n this[this.t++] = x;\n else if(sh+k > this.DB) {\n this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh;\n this[this.t++] = (x>>(this.DB-sh));\n }\n else\n this[this.t-1] |= x<<sh;\n sh += k;\n if(sh >= this.DB) sh -= this.DB;\n }\n if(k == 8 && (s[0]&0x80) != 0) {\n this.s = -1;\n if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh;\n }\n this.clamp();\n if(mi) ZERO.subTo(this,this);\n}\n\n// (protected) clamp off excess high words\nfunction bnpClamp() {\n var c = this.s&this.DM;\n while(this.t > 0 && this[this.t-1] == c) --this.t;\n}\n\n// (public) return string representation in given radix\nfunction bnToString(b) {\n if(this.s < 0) return \"-\"+this.negate().toString(b);\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else return this.toRadix(b);\n var km = (1<<k)-1, d, m = false, r = \"\", i = this.t;\n var p = this.DB-(i*this.DB)%k;\n if(i-- > 0) {\n if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }\n while(i >= 0) {\n if(p < k) {\n d = (this[i]&((1<<p)-1))<<(k-p);\n d |= this[--i]>>(p+=this.DB-k);\n }\n else {\n d = (this[i]>>(p-=k))&km;\n if(p <= 0) { p += this.DB; --i; }\n }\n if(d > 0) m = true;\n if(m) r += int2char(d);\n }\n }\n return m?r:\"0\";\n}\n\n// (public) -this\nfunction bnNegate() { var r = nbi(); ZERO.subTo(this,r); return r; }\n\n// (public) |this|\nfunction bnAbs() { return (this.s<0)?this.negate():this; }\n\n// (public) return + if this > a, - if this < a, 0 if equal\nfunction bnCompareTo(a) {\n var r = this.s-a.s;\n if(r != 0) return r;\n var i = this.t;\n r = i-a.t;\n if(r != 0) return (this.s<0)?-r:r;\n while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;\n return 0;\n}\n\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1, t;\n if((t=x>>>16) != 0) { x = t; r += 16; }\n if((t=x>>8) != 0) { x = t; r += 8; }\n if((t=x>>4) != 0) { x = t; r += 4; }\n if((t=x>>2) != 0) { x = t; r += 2; }\n if((t=x>>1) != 0) { x = t; r += 1; }\n return r;\n}\n\n// (public) return the number of bits in \"this\"\nfunction bnBitLength() {\n if(this.t <= 0) return 0;\n return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));\n}\n\n// (protected) r = this << n*DB\nfunction bnpDLShiftTo(n,r) {\n var i;\n for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];\n for(i = n-1; i >= 0; --i) r[i] = 0;\n r.t = this.t+n;\n r.s = this.s;\n}\n\n// (protected) r = this >> n*DB\nfunction bnpDRShiftTo(n,r) {\n for(var i = n; i < this.t; ++i) r[i-n] = this[i];\n r.t = Math.max(this.t-n,0);\n r.s = this.s;\n}\n\n// (protected) r = this << n\nfunction bnpLShiftTo(n,r) {\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<<cbs)-1;\n var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i;\n for(i = this.t-1; i >= 0; --i) {\n r[i+ds+1] = (this[i]>>cbs)|c;\n c = (this[i]&bm)<<bs;\n }\n for(i = ds-1; i >= 0; --i) r[i] = 0;\n r[ds] = c;\n r.t = this.t+ds+1;\n r.s = this.s;\n r.clamp();\n}\n\n// (protected) r = this >> n\nfunction bnpRShiftTo(n,r) {\n r.s = this.s;\n var ds = Math.floor(n/this.DB);\n if(ds >= this.t) { r.t = 0; return; }\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<<bs)-1;\n r[0] = this[ds]>>bs;\n for(var i = ds+1; i < this.t; ++i) {\n r[i-ds-1] |= (this[i]&bm)<<cbs;\n r[i-ds] = this[i]>>bs;\n }\n if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<<cbs;\n r.t = this.t-ds;\n r.clamp();\n}\n\n// (protected) r = this - a\nfunction bnpSubTo(a,r) {\n var i = 0, c = 0, m = Math.min(a.t,this.t);\n while(i < m) {\n c += this[i]-a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n if(a.t < this.t) {\n c -= a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c -= a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c<0)?-1:0;\n if(c < -1) r[i++] = this.DV+c;\n else if(c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n}\n\n// (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyTo(a,r) {\n var x = this.abs(), y = a.abs();\n var i = x.t;\n r.t = i+y.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);\n r.s = 0;\n r.clamp();\n if(this.s != a.s) ZERO.subTo(r,r);\n}\n\n// (protected) r = this^2, r != this (HAC 14.16)\nfunction bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2*x.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < x.t-1; ++i) {\n var c = x.am(i,x[i],r,2*i,0,1);\n if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n r[i+x.t] -= x.DV;\n r[i+x.t+1] = 1;\n }\n }\n if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);\n r.s = 0;\n r.clamp();\n}\n\n// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\nfunction bnpDivRemTo(m,q,r) {\n var pm = m.abs();\n if(pm.t <= 0) return;\n var pt = this.abs();\n if(pt.t < pm.t) {\n if(q != null) q.fromInt(0);\n if(r != null) this.copyTo(r);\n return;\n }\n if(r == null) r = nbi();\n var y = nbi(), ts = this.s, ms = m.s;\n var nsh = this.DB-nbits(pm[pm.t-1]);\t// normalize modulus\n if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }\n else { pm.copyTo(y); pt.copyTo(r); }\n var ys = y.t;\n var y0 = y[ys-1];\n if(y0 == 0) return;\n var yt = y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0);\n var d1 = this.FV/yt, d2 = (1<<this.F1)/yt, e = 1<<this.F2;\n var i = r.t, j = i-ys, t = (q==null)?nbi():q;\n y.dlShiftTo(j,t);\n if(r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t,r);\n }\n ONE.dlShiftTo(ys,t);\n t.subTo(y,y);\t// \"negative\" y so we can replace sub with am later\n while(y.t < ys) y[y.t++] = 0;\n while(--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);\n if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) {\t// Try it out\n y.dlShiftTo(j,t);\n r.subTo(t,r);\n while(r[i] < --qd) r.subTo(t,r);\n }\n }\n if(q != null) {\n r.drShiftTo(ys,q);\n if(ts != ms) ZERO.subTo(q,q);\n }\n r.t = ys;\n r.clamp();\n if(nsh > 0) r.rShiftTo(nsh,r);\t// Denormalize remainder\n if(ts < 0) ZERO.subTo(r,r);\n}\n\n// (public) this mod a\nfunction bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a,null,r);\n if(this.s < 0 && r.compareTo(ZERO) > 0) a.subTo(r,r);\n return r;\n}\n\n// Modular reduction using \"classic\" algorithm\nfunction Classic(m) { this.m = m; }\nfunction cConvert(x) {\n if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n else return x;\n}\nfunction cRevert(x) { return x; }\nfunction cReduce(x) { x.divRemTo(this.m,null,x); }\nfunction cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\nfunction cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\nClassic.prototype.convert = cConvert;\nClassic.prototype.revert = cRevert;\nClassic.prototype.reduce = cReduce;\nClassic.prototype.mulTo = cMulTo;\nClassic.prototype.sqrTo = cSqrTo;\n\n// (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\nfunction bnpInvDigit() {\n if(this.t < 1) return 0;\n var x = this[0];\n if((x&1) == 0) return 0;\n var y = x&3;\t\t// y == 1/x mod 2^2\n y = (y*(2-(x&0xf)*y))&0xf;\t// y == 1/x mod 2^4\n y = (y*(2-(x&0xff)*y))&0xff;\t// y == 1/x mod 2^8\n y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;\t// y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y*(2-x*y%this.DV))%this.DV;\t\t// y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y>0)?this.DV-y:-y;\n}\n\n// Montgomery reduction\nfunction Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp&0x7fff;\n this.mph = this.mp>>15;\n this.um = (1<<(m.DB-15))-1;\n this.mt2 = 2*m.t;\n}\n\n// xR mod m\nfunction montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t,r);\n r.divRemTo(this.m,null,r);\n if(x.s < 0 && r.compareTo(ZERO) > 0) this.m.subTo(r,r);\n return r;\n}\n\n// x/R mod m\nfunction montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n}\n\n// x = x/R mod m (HAC 14.32)\nfunction montReduce(x) {\n while(x.t <= this.mt2)\t// pad x so am has enough room later\n x[x.t++] = 0;\n for(var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i]&0x7fff;\n var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i+this.m.t;\n x[j] += this.m.am(0,u0,x,i,0,this.m.t);\n // propagate carry\n while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }\n }\n x.clamp();\n x.drShiftTo(this.m.t,x);\n if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n}\n\n// r = \"x^2/R mod m\"; x != r\nfunction montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n// r = \"xy/R mod m\"; x,y != r\nfunction montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo;\n\n// (protected) true iff this is even\nfunction bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }\n\n// (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\nfunction bnpExp(e,z) {\n if(e > 0xffffffff || e < 1) return ONE;\n var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n g.copyTo(r);\n while(--i >= 0) {\n z.sqrTo(r,r2);\n if((e&(1<<i)) > 0) z.mulTo(r2,g,r);\n else { var t = r; r = r2; r2 = t; }\n }\n return z.revert(r);\n}\n\n// (public) this^e % m, 0 <= e < 2^32\nfunction bnModPowInt(e,m) {\n var z;\n if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n return this.exp(e,z);\n}\n\n\n// jsbn2\n\n// Extended JavaScript BN functions, required for RSA private ops.\n\n// Version 1.1: new BigInteger(\"0\", 10) returns \"proper\" zero\n// Version 1.2: square() API, isProbablePrime fix\n\n// (public)\nfunction bnClone() { var r = nbi(); this.copyTo(r); return r; }\n\n// (public) return value as integer\nfunction bnIntValue() {\n if(this.s < 0) {\n if(this.t == 1) return this[0]-this.DV;\n else if(this.t == 0) return -1;\n }\n else if(this.t == 1) return this[0];\n else if(this.t == 0) return 0;\n // assumes 16 < DB < 32\n return ((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0];\n}\n\n// (public) return value as byte\nfunction bnByteValue() { return (this.t==0)?this.s:(this[0]<<24)>>24; }\n\n// (public) return value as short (assumes DB>=16)\nfunction bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; }\n\n// (protected) return x s.t. r^x < DV\nfunction bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }\n\n// (public) 0 if this == 0, 1 if this > 0\nfunction bnSigNum() {\n if(this.s < 0) return -1;\n else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;\n else return 1;\n}\n\n// (protected) convert to radix string\nfunction bnpToRadix(b) {\n if(b == null) b = 10;\n if(this.signum() == 0 || b < 2 || b > 36) return \"0\";\n var cs = this.chunkSize(b);\n var a = Math.pow(b,cs);\n var d = nbv(a), y = nbi(), z = nbi(), r = \"\";\n this.divRemTo(d,y,z);\n while(y.signum() > 0) {\n r = (a+z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d,y,z);\n }\n return z.intValue().toString(b) + r;\n}\n\n// (protected) convert from radix string\nfunction bnpFromRadix(s,b) {\n this.fromInt(0);\n if(b == null) b = 10;\n var cs = this.chunkSize(b);\n var d = Math.pow(b,cs), mi = false, j = 0, w = 0;\n for(var i = 0; i < s.length; ++i) {\n var x = intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\" && this.signum() == 0) mi = true;\n continue;\n }\n w = b*w+x;\n if(++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w,0);\n j = 0;\n w = 0;\n }\n }\n if(j > 0) {\n this.dMultiply(Math.pow(b,j));\n this.dAddOffset(w,0);\n }\n if(mi) ZERO.subTo(this,this);\n}\n\n// (protected) alternate constructor\nfunction bnpFromNumber(a,b,c) {\n if(\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if(a < 2) this.fromInt(1);\n else {\n this.fromNumber(a,c);\n if(!this.testBit(a-1))\t// force MSB set\n this.bitwiseTo(ONE.shiftLeft(a-1),op_or,this);\n if(this.isEven()) this.dAddOffset(1,0); // force odd\n while(!this.isProbablePrime(b)) {\n this.dAddOffset(2,0);\n if(this.bitLength() > a) this.subTo(ONE.shiftLeft(a-1),this);\n }\n }\n }\n else {\n // new BigInteger(int,RNG)\n var x = new Array(), t = a&7;\n x.length = (a>>3)+1;\n b.nextBytes(x);\n if(t > 0) x[0] &= ((1<<t)-1); else x[0] = 0;\n this.fromString(x,256);\n }\n}\n\n// (public) convert to bigendian byte array\nfunction bnToByteArray() {\n var i = this.t, r = new Array();\n r[0] = this.s;\n var p = this.DB-(i*this.DB)%8, d, k = 0;\n if(i-- > 0) {\n if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p)\n r[k++] = d|(this.s<<(this.DB-p));\n while(i >= 0) {\n if(p < 8) {\n d = (this[i]&((1<<p)-1))<<(8-p);\n d |= this[--i]>>(p+=this.DB-8);\n }\n else {\n d = (this[i]>>(p-=8))&0xff;\n if(p <= 0) { p += this.DB; --i; }\n }\n if((d&0x80) != 0) d |= -256;\n if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;\n if(k > 0 || d != this.s) r[k++] = d;\n }\n }\n return r;\n}\n\nfunction bnEquals(a) { return(this.compareTo(a)==0); }\nfunction bnMin(a) { return(this.compareTo(a)<0)?this:a; }\nfunction bnMax(a) { return(this.compareTo(a)>0)?this:a; }\n\n// (protected) r = this op a (bitwise)\nfunction bnpBitwiseTo(a,op,r) {\n var i, f, m = Math.min(a.t,this.t);\n for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]);\n if(a.t < this.t) {\n f = a.s&this.DM;\n for(i = m; i < this.t; ++i) r[i] = op(this[i],f);\n r.t = this.t;\n }\n else {\n f = this.s&this.DM;\n for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);\n r.t = a.t;\n }\n r.s = op(this.s,a.s);\n r.clamp();\n}\n\n// (public) this & a\nfunction op_and(x,y) { return x&y; }\nfunction bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }\n\n// (public) this | a\nfunction op_or(x,y) { return x|y; }\nfunction bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }\n\n// (public) this ^ a\nfunction op_xor(x,y) { return x^y; }\nfunction bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }\n\n// (public) this & ~a\nfunction op_andnot(x,y) { return x&~y; }\nfunction bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }\n\n// (public) ~this\nfunction bnNot() {\n var r = nbi();\n for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i];\n r.t = this.t;\n r.s = ~this.s;\n return r;\n}\n\n// (public) this << n\nfunction bnShiftLeft(n) {\n var r = nbi();\n if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\n return r;\n}\n\n// (public) this >> n\nfunction bnShiftRight(n) {\n var r = nbi();\n if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\n return r;\n}\n\n// return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\n if(x == 0) return -1;\n var r = 0;\n if((x&0xffff) == 0) { x >>= 16; r += 16; }\n if((x&0xff) == 0) { x >>= 8; r += 8; }\n if((x&0xf) == 0) { x >>= 4; r += 4; }\n if((x&3) == 0) { x >>= 2; r += 2; }\n if((x&1) == 0) ++r;\n return r;\n}\n\n// (public) returns index of lowest 1-bit (or -1 if none)\nfunction bnGetLowestSetBit() {\n for(var i = 0; i < this.t; ++i)\n if(this[i] != 0) return i*this.DB+lbit(this[i]);\n if(this.s < 0) return this.t*this.DB;\n return -1;\n}\n\n// return number of 1 bits in x\nfunction cbit(x) {\n var r = 0;\n while(x != 0) { x &= x-1; ++r; }\n return r;\n}\n\n// (public) return number of set bits\nfunction bnBitCount() {\n var r = 0, x = this.s&this.DM;\n for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x);\n return r;\n}\n\n// (public) true iff nth bit is set\nfunction bnTestBit(n) {\n var j = Math.floor(n/this.DB);\n if(j >= this.t) return(this.s!=0);\n return((this[j]&(1<<(n%this.DB)))!=0);\n}\n\n// (protected) this op (1<<n)\nfunction bnpChangeBit(n,op) {\n var r = ONE.shiftLeft(n);\n this.bitwiseTo(r,op,r);\n return r;\n}\n\n// (public) this | (1<<n)\nfunction bnSetBit(n) { return this.changeBit(n,op_or); }\n\n// (public) this & ~(1<<n)\nfunction bnClearBit(n) { return this.changeBit(n,op_andnot); }\n\n// (public) this ^ (1<<n)\nfunction bnFlipBit(n) { return this.changeBit(n,op_xor); }\n\n// (protected) r = this + a\nfunction bnpAddTo(a,r) {\n var i = 0, c = 0, m = Math.min(a.t,this.t);\n while(i < m) {\n c += this[i]+a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n if(a.t < this.t) {\n c += a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c += a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c<0)?-1:0;\n if(c > 0) r[i++] = c;\n else if(c < -1) r[i++] = this.DV+c;\n r.t = i;\n r.clamp();\n}\n\n// (public) this + a\nfunction bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }\n\n// (public) this - a\nfunction bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }\n\n// (public) this * a\nfunction bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }\n\n// (public) this^2\nfunction bnSquare() { var r = nbi(); this.squareTo(r); return r; }\n\n// (public) this / a\nfunction bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }\n\n// (public) this % a\nfunction bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }\n\n// (public) [this/a,this%a]\nfunction bnDivideAndRemainder(a) {\n var q = nbi(), r = nbi();\n this.divRemTo(a,q,r);\n return new Array(q,r);\n}\n\n// (protected) this *= n, this >= 0, 1 < n < DV\nfunction bnpDMultiply(n) {\n this[this.t] = this.am(0,n-1,this,0,0,this.t);\n ++this.t;\n this.clamp();\n}\n\n// (protected) this += n << w words, this >= 0\nfunction bnpDAddOffset(n,w) {\n if(n == 0) return;\n while(this.t <= w) this[this.t++] = 0;\n this[w] += n;\n while(this[w] >= this.DV) {\n this[w] -= this.DV;\n if(++w >= this.t) this[this.t++] = 0;\n ++this[w];\n }\n}\n\n// A \"null\" reducer\nfunction NullExp() {}\nfunction nNop(x) { return x; }\nfunction nMulTo(x,y,r) { x.multiplyTo(y,r); }\nfunction nSqrTo(x,r) { x.squareTo(r); }\n\nNullExp.prototype.convert = nNop;\nNullExp.prototype.revert = nNop;\nNullExp.prototype.mulTo = nMulTo;\nNullExp.prototype.sqrTo = nSqrTo;\n\n// (public) this^e\nfunction bnPow(e) { return this.exp(e,new NullExp()); }\n\n// (protected) r = lower n words of \"this * a\", a.t <= n\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyLowerTo(a,n,r) {\n var i = Math.min(this.t+a.t,n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while(i > 0) r[--i] = 0;\n var j;\n for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t);\n for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i);\n r.clamp();\n}\n\n// (protected) r = \"this * a\" without lower n words, n > 0\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyUpperTo(a,n,r) {\n --n;\n var i = r.t = this.t+a.t-n;\n r.s = 0; // assumes a,this >= 0\n while(--i >= 0) r[i] = 0;\n for(i = Math.max(n-this.t,0); i < a.t; ++i)\n r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n);\n r.clamp();\n r.drShiftTo(1,r);\n}\n\n// Barrett modular reduction\nfunction Barrett(m) {\n // setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n ONE.dlShiftTo(2*m.t,this.r2);\n this.mu = this.r2.divide(m);\n this.m = m;\n}\n\nfunction barrettConvert(x) {\n if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\n else if(x.compareTo(this.m) < 0) return x;\n else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }\n}\n\nfunction barrettRevert(x) { return x; }\n\n// x = x mod m (HAC 14.42)\nfunction barrettReduce(x) {\n x.drShiftTo(this.m.t-1,this.r2);\n if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\n this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\n this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\n while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\n x.subTo(this.r2,x);\n while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n}\n\n// r = x^2 mod m; x != r\nfunction barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n// r = x*y mod m; x,y != r\nfunction barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\nBarrett.prototype.convert = barrettConvert;\nBarrett.prototype.revert = barrettRevert;\nBarrett.prototype.reduce = barrettReduce;\nBarrett.prototype.mulTo = barrettMulTo;\nBarrett.prototype.sqrTo = barrettSqrTo;\n\n// (public) this^e % m (HAC 14.85)\nfunction bnModPow(e,m) {\n var i = e.bitLength(), k, r = nbv(1), z;\n if(i <= 0) return r;\n else if(i < 18) k = 1;\n else if(i < 48) k = 3;\n else if(i < 144) k = 4;\n else if(i < 768) k = 5;\n else k = 6;\n if(i < 8)\n z = new Classic(m);\n else if(m.isEven())\n z = new Barrett(m);\n else\n z = new Montgomery(m);\n\n // precomputation\n var g = new Array(), n = 3, k1 = k-1, km = (1<<k)-1;\n g[1] = z.convert(this);\n if(k > 1) {\n var g2 = nbi();\n z.sqrTo(g[1],g2);\n while(n <= km) {\n g[n] = nbi();\n z.mulTo(g2,g[n-2],g[n]);\n n += 2;\n }\n }\n\n var j = e.t-1, w, is1 = true, r2 = nbi(), t;\n i = nbits(e[j])-1;\n while(j >= 0) {\n if(i >= k1) w = (e[j]>>(i-k1))&km;\n else {\n w = (e[j]&((1<<(i+1))-1))<<(k1-i);\n if(j > 0) w |= e[j-1]>>(this.DB+i-k1);\n }\n\n n = k;\n while((w&1) == 0) { w >>= 1; --n; }\n if((i -= n) < 0) { i += this.DB; --j; }\n if(is1) {\t// ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }\n if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }\n z.mulTo(r2,g[w],r);\n }\n\n while(j >= 0 && (e[j]&(1<<i)) == 0) {\n z.sqrTo(r,r2); t = r; r = r2; r2 = t;\n if(--i < 0) { i = this.DB-1; --j; }\n }\n }\n return z.revert(r);\n}\n\n// (public) gcd(this,a) (HAC 14.54)\nfunction bnGCD(a) {\n var x = (this.s<0)?this.negate():this.clone();\n var y = (a.s<0)?a.negate():a.clone();\n if(x.compareTo(y) < 0) { var t = x; x = y; y = t; }\n var i = x.getLowestSetBit(), g = y.getLowestSetBit();\n if(g < 0) return x;\n if(i < g) g = i;\n if(g > 0) {\n x.rShiftTo(g,x);\n y.rShiftTo(g,y);\n }\n while(x.signum() > 0) {\n if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);\n if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);\n if(x.compareTo(y) >= 0) {\n x.subTo(y,x);\n x.rShiftTo(1,x);\n }\n else {\n y.subTo(x,y);\n y.rShiftTo(1,y);\n }\n }\n if(g > 0) y.lShiftTo(g,y);\n return y;\n}\n\n// (protected) this % n, n < 2^26\nfunction bnpModInt(n) {\n if(n <= 0) return 0;\n var d = this.DV%n, r = (this.s<0)?n-1:0;\n if(this.t > 0)\n if(d == 0) r = this[0]%n;\n else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n;\n return r;\n}\n\n// (public) 1/this % m (HAC 14.61)\nfunction bnModInverse(m) {\n var ac = m.isEven();\n if((this.isEven() && ac) || m.signum() == 0) return ZERO;\n var u = m.clone(), v = this.clone();\n var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\n while(u.signum() != 0) {\n while(u.isEven()) {\n u.rShiftTo(1,u);\n if(ac) {\n if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }\n a.rShiftTo(1,a);\n }\n else if(!b.isEven()) b.subTo(m,b);\n b.rShiftTo(1,b);\n }\n while(v.isEven()) {\n v.rShiftTo(1,v);\n if(ac) {\n if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }\n c.rShiftTo(1,c);\n }\n else if(!d.isEven()) d.subTo(m,d);\n d.rShiftTo(1,d);\n }\n if(u.compareTo(v) >= 0) {\n u.subTo(v,u);\n if(ac) a.subTo(c,a);\n b.subTo(d,b);\n }\n else {\n v.subTo(u,v);\n if(ac) c.subTo(a,c);\n d.subTo(b,d);\n }\n }\n if(v.compareTo(ONE) != 0) return ZERO;\n if(d.compareTo(m) >= 0) return d.subtract(m);\n if(d.signum() < 0) d.addTo(m,d); else return d;\n if(d.signum() < 0) return d.add(m); else return d;\n}\n\nvar lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];\nvar lplim = (1<<26)/lowprimes[lowprimes.length-1];\n\n// (public) test primality with certainty >= 1-.5^t\nfunction bnIsProbablePrime(t) {\n var i, x = this.abs();\n if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) {\n for(i = 0; i < lowprimes.length; ++i)\n if(x[0] == lowprimes[i]) return true;\n return false;\n }\n if(x.isEven()) return false;\n i = 1;\n while(i < lowprimes.length) {\n var m = lowprimes[i], j = i+1;\n while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];\n m = x.modInt(m);\n while(i < j) if(m%lowprimes[i++] == 0) return false;\n }\n return x.millerRabin(t);\n}\n\n// (protected) true if probably prime (HAC 4.24, Miller-Rabin)\nfunction bnpMillerRabin(t) {\n var n1 = this.subtract(ONE);\n var k = n1.getLowestSetBit();\n if(k <= 0) return false;\n var r = n1.shiftRight(k);\n t = (t+1)>>1;\n if(t > lowprimes.length) t = lowprimes.length;\n var a = nbi();\n for(var i = 0; i < t; ++i) {\n //Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);\n var y = a.modPow(r,this);\n if(y.compareTo(ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while(j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2,this);\n if(y.compareTo(ONE) == 0) return false;\n }\n if(y.compareTo(n1) != 0) return false;\n }\n }\n return true;\n}\n\n\n// protected\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.isEven = bnpIsEven;\nBigInteger.prototype.exp = bnpExp;\n\n// public\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.modPowInt = bnModPowInt;\n\nconst ZERO = nbv(0);\nconst ONE = nbv(1);\n\n// jsbn2\n\n// protected\nBigInteger.prototype.chunkSize = bnpChunkSize;\nBigInteger.prototype.toRadix = bnpToRadix;\nBigInteger.prototype.fromRadix = bnpFromRadix;\nBigInteger.prototype.fromNumber = bnpFromNumber;\nBigInteger.prototype.bitwiseTo = bnpBitwiseTo;\nBigInteger.prototype.changeBit = bnpChangeBit;\nBigInteger.prototype.addTo = bnpAddTo;\nBigInteger.prototype.dMultiply = bnpDMultiply;\nBigInteger.prototype.dAddOffset = bnpDAddOffset;\nBigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\nBigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\nBigInteger.prototype.modInt = bnpModInt;\nBigInteger.prototype.millerRabin = bnpMillerRabin;\n\n// public\nBigInteger.prototype.clone = bnClone;\nBigInteger.prototype.intValue = bnIntValue;\nBigInteger.prototype.byteValue = bnByteValue;\nBigInteger.prototype.shortValue = bnShortValue;\nBigInteger.prototype.signum = bnSigNum;\nBigInteger.prototype.toByteArray = bnToByteArray;\nBigInteger.prototype.equals = bnEquals;\nBigInteger.prototype.min = bnMin;\nBigInteger.prototype.max = bnMax;\nBigInteger.prototype.and = bnAnd;\nBigInteger.prototype.or = bnOr;\nBigInteger.prototype.xor = bnXor;\nBigInteger.prototype.andNot = bnAndNot;\nBigInteger.prototype.not = bnNot;\nBigInteger.prototype.shiftLeft = bnShiftLeft;\nBigInteger.prototype.shiftRight = bnShiftRight;\nBigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\nBigInteger.prototype.bitCount = bnBitCount;\nBigInteger.prototype.testBit = bnTestBit;\nBigInteger.prototype.setBit = bnSetBit;\nBigInteger.prototype.clearBit = bnClearBit;\nBigInteger.prototype.flipBit = bnFlipBit;\nBigInteger.prototype.add = bnAdd;\nBigInteger.prototype.subtract = bnSubtract;\nBigInteger.prototype.multiply = bnMultiply;\nBigInteger.prototype.divide = bnDivide;\nBigInteger.prototype.remainder = bnRemainder;\nBigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\nBigInteger.prototype.modPow = bnModPow;\nBigInteger.prototype.modInverse = bnModInverse;\nBigInteger.prototype.pow = bnPow;\nBigInteger.prototype.gcd = bnGCD;\nBigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n\n// JSBN-specific extension\nBigInteger.prototype.square = bnSquare;\n","/*! asn1hex-1.1.js (c) 2012 Kenji Urushima | kjur.github.com/jsrsasign/license\n */\n//\n// asn1hex.js - Hexadecimal represented ASN.1 string library\n//\n// version: 1.1 (09-May-2012)\n//\n// Copyright (c) 2010-2012 Kenji Urushima (kenji.urushima@gmail.com)\n//\n// This software is licensed under the terms of the MIT License.\n// http://kjur.github.com/jsrsasign/license/\n//\n// The above copyright and license notice shall be\n// included in all copies or substantial portions of the Software.\n//\n// Depends on:\n//\n\n// MEMO:\n// f('3082025b02...', 2) ... 82025b ... 3bytes\n// f('020100', 2) ... 01 ... 1byte\n// f('0203001...', 2) ... 03 ... 1byte\n// f('02818003...', 2) ... 8180 ... 2bytes\n// f('3080....0000', 2) ... 80 ... -1\n//\n// Requirements:\n// - ASN.1 type octet length MUST be 1.\n// (i.e. ASN.1 primitives like SET, SEQUENCE, INTEGER, OCTETSTRING ...)\n// -\n\n/**\n * @fileOverview\n * @name asn1hex-1.1.js\n * @author Kenji Urushima kenji.urushima@gmail.com\n * @version 1.1\n * @license <a href=\"http://kjur.github.io/jsrsasign/license/\">MIT License</a>\n */\n\nimport {parseBigInt} from './jsbn';\n\n/**\n * get byte length for ASN.1 L(length) bytes\n * @name getByteLengthOfL_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} s hexadecimal string of ASN.1 DER encoded data\n * @param {Number} pos string index\n * @return byte length for ASN.1 L(length) bytes\n */\nfunction _asnhex_getByteLengthOfL_AtObj(s, pos) {\n if (s.substring(pos + 2, pos + 3) != '8') return 1;\n var i = parseInt(s.substring(pos + 3, pos + 4));\n if (i == 0) return -1; \t\t// length octet '80' indefinite length\n if (0 < i && i < 10) return i + 1;\t// including '8?' octet;\n return -2;\t\t\t\t// malformed format\n}\n\n\n/**\n * get hexadecimal string for ASN.1 L(length) bytes\n * @name getHexOfL_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} s hexadecimal string of ASN.1 DER encoded data\n * @param {Number} pos string index\n * @return {String} hexadecimal string for ASN.1 L(length) bytes\n */\nfunction _asnhex_getHexOfL_AtObj(s, pos) {\n var len = _asnhex_getByteLengthOfL_AtObj(s, pos);\n if (len < 1) return '';\n return s.substring(pos + 2, pos + 2 + len * 2);\n}\n\n//\n// getting ASN.1 length value at the position 'idx' of\n// hexa decimal string 's'.\n//\n// f('3082025b02...', 0) ... 82025b ... ???\n// f('020100', 0) ... 01 ... 1\n// f('0203001...', 0) ... 03 ... 3\n// f('02818003...', 0) ... 8180 ... 128\n/**\n * get integer value of ASN.1 length for ASN.1 data\n * @name getIntOfL_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} s hexadecimal string of ASN.1 DER encoded data\n * @param {Number} pos string index\n * @return ASN.1 L(length) integer value\n */\nfunction _asnhex_getIntOfL_AtObj(s, pos) {\n var hLength = _asnhex_getHexOfL_AtObj(s, pos);\n if (hLength == '') return -1;\n var bi;\n if (parseInt(hLength.substring(0, 1)) < 8) {\n bi = parseBigInt(hLength, 16);\n } else {\n bi = parseBigInt(hLength.substring(2), 16);\n }\n return bi.intValue();\n}\n\n/**\n * get ASN.1 value starting string position for ASN.1 object refered by index 'idx'.\n * @name getStartPosOfV_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} s hexadecimal string of ASN.1 DER encoded data\n * @param {Number} pos string index\n */\nfunction _asnhex_getStartPosOfV_AtObj(s, pos) {\n var l_len = _asnhex_getByteLengthOfL_AtObj(s, pos);\n if (l_len < 0) return l_len;\n return pos + (l_len + 1) * 2;\n}\n\n/**\n * get hexadecimal string of ASN.1 V(value)\n * @name getHexOfV_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} s hexadecimal string of ASN.1 DER encoded data\n * @param {Number} pos string index\n * @return {String} hexadecimal string of ASN.1 value.\n */\nexport function _asnhex_getHexOfV_AtObj(s, pos) {\n var pos1 = _asnhex_getStartPosOfV_AtObj(s, pos);\n var len = _asnhex_getIntOfL_AtObj(s, pos);\n return s.substring(pos1, pos1 + len * 2);\n}\n\n/**\n * get hexadecimal string of ASN.1 TLV at\n * @name getHexOfTLV_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} s hexadecimal string of ASN.1 DER encoded data\n * @param {Number} pos string index\n * @return {String} hexadecimal string of ASN.1 TLV.\n * @since 1.1\n */\nfunction _asnhex_getHexOfTLV_AtObj(s, pos) {\n var hT = s.substr(pos, 2);\n var hL = _asnhex_getHexOfL_AtObj(s, pos);\n var hV = _asnhex_getHexOfV_AtObj(s, pos);\n return hT + hL + hV;\n}\n\n/**\n * get next sibling starting index for ASN.1 object string\n * @name getPosOfNextSibling_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} s hexadecimal string of ASN.1 DER encoded data\n * @param {Number} pos string index\n * @return next sibling starting index for ASN.1 object string\n */\nfunction _asnhex_getPosOfNextSibling_AtObj(s, pos) {\n var pos1 = _asnhex_getStartPosOfV_AtObj(s, pos);\n var len = _asnhex_getIntOfL_AtObj(s, pos);\n return pos1 + len * 2;\n}\n\n/**\n * get array of indexes of child ASN.1 objects\n * @name getPosArrayOfChildren_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} s hexadecimal string of ASN.1 DER encoded data\n * @param {Number} start string index of ASN.1 object\n * @return {Array of Number} array of indexes for childen of ASN.1 objects\n */\nexport function _asnhex_getPosArrayOfChildren_AtObj(h, pos) {\n var a = new Array();\n var p0 = _asnhex_getStartPosOfV_AtObj(h, pos);\n a.push(p0);\n\n var len = _asnhex_getIntOfL_AtObj(h, pos);\n var p = p0;\n var k = 0;\n while (1) {\n var pNext = _asnhex_getPosOfNextSibling_AtObj(h, p);\n if (pNext == null || (pNext - p0 >= (len * 2))) break;\n if (k >= 200) break;\n\n a.push(pNext);\n p = pNext;\n\n k++;\n }\n\n return a;\n}\n\n/**\n * get string index of nth child object of ASN.1 object refered by h, idx\n * @name getNthChildIndex_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} h hexadecimal string of ASN.1 DER encoded data\n * @param {Number} idx start string index of ASN.1 object\n * @param {Number} nth for child\n * @return {Number} string index of nth child.\n * @since 1.1\n */\nfunction _asnhex_getNthChildIndex_AtObj(h, idx, nth) {\n var a = _asnhex_getPosArrayOfChildren_AtObj(h, idx);\n return a[nth];\n}\n\n// ========== decendant methods ==============================\n\n/**\n * get string index of nth child object of ASN.1 object refered by h, idx\n * @name getDecendantIndexByNthList\n * @memberOf ASN1HEX\n * @function\n * @param {String} h hexadecimal string of ASN.1 DER encoded data\n * @param {Number} currentIndex start string index of ASN.1 object\n * @param {Array of Number} nthList array list of nth\n * @return {Number} string index refered by nthList\n * @since 1.1\n */\nfunction _asnhex_getDecendantIndexByNthList(h, currentIndex, nthList) {\n if (nthList.length == 0) {\n return currentIndex;\n }\n var firstNth = nthList.shift();\n var a = _asnhex_getPosArrayOfChildren_AtObj(h, currentIndex);\n return _asnhex_getDecendantIndexByNthList(h, a[firstNth], nthList);\n}\n\n/**\n * get hexadecimal string of ASN.1 TLV refered by current index and nth index list.\n * @name getDecendantHexTLVByNthList\n * @memberOf ASN1HEX\n * @function\n * @param {String} h hexadecimal string of ASN.1 DER encoded data\n * @param {Number} currentIndex start string index of ASN.1 object\n * @param {Array of Number} nthList array list of nth\n * @return {Number} hexadecimal string of ASN.1 TLV refered by nthList\n * @since 1.1\n */\nfunction _asnhex_getDecendantHexTLVByNthList(h, currentIndex, nthList) {\n var idx = _asnhex_getDecendantIndexByNthList(h, currentIndex, nthList);\n return _asnhex_getHexOfTLV_AtObj(h, idx);\n}\n\n/**\n * get hexadecimal string of ASN.1 V refered by current index and nth index list.\n * @name getDecendantHexVByNthList\n * @memberOf ASN1HEX\n * @function\n * @param {String} h hexadecimal string of ASN.1 DER encoded data\n * @param {Number} currentIndex start string index of ASN.1 object\n * @param {Array of Number} nthList array list of nth\n * @return {Number} hexadecimal string of ASN.1 V refered by nthList\n * @since 1.1\n */\nfunction _asnhex_getDecendantHexVByNthList(h, currentIndex, nthList) {\n var idx = _asnhex_getDecendantIndexByNthList(h, currentIndex, nthList);\n return _asnhex_getHexOfV_AtObj(h, idx);\n}\n\nfunction _rsapem_getPosArrayOfChildrenFromHex(hPrivateKey) {\n var a = new Array();\n var v1 = _asnhex_getStartPosOfV_AtObj(hPrivateKey, 0);\n var n1 = _asnhex_getPosOfNextSibling_AtObj(hPrivateKey, v1);\n var e1 = _asnhex_getPosOfNextSibling_AtObj(hPrivateKey, n1);\n var d1 = _asnhex_getPosOfNextSibling_AtObj(hPrivateKey, e1);\n var p1 = _asnhex_getPosOfNextSibling_AtObj(hPrivateKey, d1);\n var q1 = _asnhex_getPosOfNextSibling_AtObj(hPrivateKey, p1);\n var dp1 = _asnhex_getPosOfNextSibling_AtObj(hPrivateKey, q1);\n var dq1 = _asnhex_getPosOfNextSibling_AtObj(hPrivateKey, dp1);\n var co1 = _asnhex_getPosOfNextSibling_AtObj(hPrivateKey, dq1);\n a.push(v1, n1, e1, d1, p1, q1, dp1, dq1, co1);\n return a;\n}\n\nexport function _rsapem_getHexValueArrayOfChildrenFromHex(hPrivateKey) {\n var posArray = _rsapem_getPosArrayOfChildrenFromHex(hPrivateKey);\n\n var v = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[0]);\n var n = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[1]);\n var e = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[2]);\n var d = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[3]);\n var p = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[4]);\n var q = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[5]);\n var dp = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[6]);\n var dq = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[7]);\n var co = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[8]);\n var a = new Array();\n a.push(v, n, e, d, p, q, dp, dq, co);\n return a;\n}\n\n","// Random number generator - requires a PRNG backend, e.g. prng4.js\n\n// For best results, put code like\n// <body onClick='rng_seed_time();' onKeyPress='rng_seed_time();'>\n// in your main HTML document.\n\nfunction rng_get_bytes(ba) {\n let data = new Uint8Array(ba.length);\n crypto.getRandomValues(data);\n for(let i = 0; i < ba.length; ++i) ba[i] = data[i];\n}\n\nexport function SecureRandom() {}\n\nSecureRandom.prototype.nextBytes = rng_get_bytes;\n","// @ts-nocheck\n\nimport {BigInteger, parseBigInt} from \"./jsbn\";\nimport {SecureRandom} from \"./rng\";\nimport {_rsapem_getHexValueArrayOfChildrenFromHex} from './asn1hex';\n// Depends on jsbn.js and rng.js\n\n// Version 1.1: support utf-8 encoding in pkcs1pad2\n\nfunction linebrk(s,n) {\n var ret = \"\";\n var i = 0;\n while(i + n < s.length) {\n ret += s.substring(i,i+n) + \"\\n\";\n i += n;\n }\n return ret + s.substring(i,s.length);\n}\n\nfunction byte2Hex(b) {\n if(b < 0x10)\n return \"0\" + b.toString(16);\n else\n return b.toString(16);\n}\n\n// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint\nfunction pkcs1pad2(s,n) {\n if(n < s.length + 11) { // TODO: fix for utf-8\n alert(\"Message too long for RSA\");\n return null;\n }\n var ba = new Array();\n var i = s.length - 1;\n while(i >= 0 && n > 0) {\n var c = s.charCodeAt(i--);\n if(c < 128) { // encode using utf-8\n ba[--n] = c;\n }\n else if((c > 127) && (c < 2048)) {\n ba[--n] = (c & 63) | 128;\n ba[--n] = (c >> 6) | 192;\n }\n else {\n ba[--n] = (c & 63) | 128;\n ba[--n] = ((c >> 6) & 63) | 128;\n ba[--n] = (c >> 12) | 224;\n }\n }\n ba[--n] = 0;\n var rng = new SecureRandom();\n var x = new Array();\n while(n > 2) { // random non-zero pad\n x[0] = 0;\n while(x[0] == 0) rng.nextBytes(x);\n ba[--n] = x[0];\n }\n ba[--n] = 2;\n ba[--n] = 0;\n return new BigInteger(ba);\n}\n\n// \"empty\" RSA key constructor\nexport function RSAKey() {\n this.n = null;\n this.e = 0;\n this.d = null;\n this.p = null;\n this.q = null;\n this.dmp1 = null;\n this.dmq1 = null;\n this.coeff = null;\n}\n\n// Set the public key fields N and e from hex strings\nfunction RSASetPublic(N,E) {\n if(N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = parseBigInt(N,16);\n this.e = parseInt(E,16);\n }\n else\n alert(\"Invalid RSA public key\");\n}\n\n// Perform raw public operation on \"x\": return x^e (mod n)\nfunction RSADoPublic(x) {\n return x.modPowInt(this.e, this.n);\n}\n\nfunction RSADoPrivate(x) {\n if(this.p == null || this.q == null)\n return x.modPow(this.d, this.n);\n\n // TODO: re-calculate any missing CRT params\n var xp = x.mod(this.p).modPow(this.dmp1, this.p);\n var xq = x.mod(this.q).modPow(this.dmq1, this.q);\n\n while(xp.compareTo(xq) < 0)\n xp = xp.add(this.p);\n return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);\n}\n\n// Return the PKCS#1 RSA encryption of \"text\" as an even-length hex string\nfunction RSAEncrypt(text) {\n var m = pkcs1pad2(text,(this.n.bitLength()+7)>>3);\n if(m == null) return null;\n var c = this.doPublic(m);\n if(c == null) return null;\n var h = c.toString(16);\n if((h.length & 1) == 0) return h; else return \"0\" + h;\n}\n\n// Return the PKCS#1 RSA encryption of \"text\" as a Base64-encoded string\n//function RSAEncryptB64(text) {\n// var h = this.encrypt(text);\n// if(h) return hex2b64(h); else return null;\n//}\n\n\n// Binary safe pkcs1 type 2 padding\nfunction pkcs1pad2hex(hexPlaintext,n) {\n if(n < hexPlaintext.length/2 + 11) {\n alert(\"Message too long for RSA\");\n return null;\n }\n var ba = new Array();\n var i = hexPlaintext.length;\n while(i >= 2 && n > 0) {\n ba[--n] = parseInt(hexPlaintext.slice(i-2, i), 16);\n i -= 2;\n }\n ba[--n] = 0;\n var rng = new SecureRandom();\n var x = new Array();\n while(n > 2) { // random non-zero pad\n x[0] = 0;\n while(x[0] == 0) rng.nextBytes(x);\n ba[--n] = x[0];\n }\n ba[--n] = 2;\n ba[--n] = 0;\n return new BigInteger(ba);\n}\n\n//Binary safe pkcs1 type 2 un-padding\nfunction pkcs1unpad2hex(d,n) {\n var b = d.toByteArray();\n var i = 0;\n while(i < b.length && b[i] == 0) ++i;\n if(b.length-i != n-1 || b[i] != 2)\n return null;\n ++i;\n while(b[i] != 0)\n if(++i >= b.length) return null;\n var ret = \"\";\n while(++i < b.length) {\n var c = b[i] & 255;\n ret += (c < 16) ? '0' + c.toString(16) : c.toString(16);\n }\n return ret;\n}\n\n/**\n * Generates a ASN.1 Hex string.\n * @param {boolean} include_private Set to true to include the private bits as well.\n * @returns\n */\nfunction RSAtoASN1Hex (include_private) {\n var v = asn('00');\n var n = asn(this.n.toString(16));\n var e = asn(this.e.toString(16));\n var d = asn(this.d.toString(16));\n var p = asn(this.p.toString(16));\n var q = asn(this.q.toString(16));\n var dmp1 = asn(this.dmp1.toString(16));\n var dmq1 = asn(this.dmq1.toString(16));\n var coeff = asn(this.coeff.toString(16));\n\n if (typeof include_private !== 'undefined' && include_private)\n return asn(v + n + e + d + p + q + dmp1 + dmq1 + coeff, '30');\n else\n return asn(n + e, '30');\n\n\n function asn (data, type) {\n if (typeof type === 'undefined') type = '02';\n\n // Pad the data with a leading '0' if necessary\n data = (data.length % 2 === 0) ? data : '0' + data;\n\n // Pad the data again with a '00' to ensure its positive. Some parser\n // stupid implementations will freak out on negative RSA bits.\n if (parseInt(data.substr(0,2), 16) > 127)\n data = '00' + data;\n\n return type + asn_length(data) + data;\n }\n\n function asn_length (item) {\n var length = item.length / 2; // We're dealing with hex here\n var length_hex = (length.toString(16).length % 2 === 0) ? length.toString(16) : '0' + length.toString(16);\n\n if (length < 128) {\n return length_hex;\n } else {\n var length_length = 128 + length_hex.length / 2;\n var length_length_hex = (length_length.toString(16).length % 2 === 0) ? length_length.toString(16) : '0' + length_length.toString(16);\n\n return length_length_hex + length_hex;\n }\n }\n}\n\nfunction RSAEncryptBinary(hex) {\n var m = pkcs1pad2hex(hex,(this.n.bitLength()+7)>>3);\n if(m == null) return null;\n var c = this.doPublic(m);\n if(c == null) return null;\n var h = c.toString(16);\n if((h.length & 1) == 0) return h; else return \"0\" + h;\n}\n\nfunction RSADecryptBinary(ctext) {\n var c = parseBigInt(ctext, 16);\n var m = this.doPrivate(c);\n if(m == null) return null;\n return pkcs1unpad2hex(m, (this.n.bitLength()+7)>>3);\n}\n\nfunction RSASetPrivateEx(N,E,D,P,Q,DP,DQ,C) {\n if(N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = parseBigInt(N,16);\n this.e = parseInt(E,16);\n this.d = parseBigInt(D,16);\n this.p = parseBigInt(P,16);\n this.q = parseBigInt(Q,16);\n this.dmp1 = parseBigInt(DP,16);\n this.dmq1 = parseBigInt(DQ,16);\n this.coeff = parseBigInt(C,16);\n }\n else\n alert(\"Invalid RSA private key\");\n}\n\nfunction RSASetPrivateKeyFromASN1HexString(keyHex) {\n const a = _rsapem_getHexValueArrayOfChildrenFromHex(keyHex);\n this.setPrivateEx(a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n\n// protected\nRSAKey.prototype.doPublic = RSADoPublic;\nRSAKey.prototype.doPrivate = RSADoPrivate;\n\n// public\nRSAKey.prototype.setPublic = RSASetPublic;\nRSAKey.prototype.encrypt = RSAEncrypt;\n//RSAKey.prototype.encrypt_b64 = RSAEncryptB64;\n\nRSAKey.prototype.encryptBinary = RSAEncryptBinary;\nRSAKey.prototype.decryptBinary = RSADecryptBinary;\nRSAKey.prototype.toASN1HexString = RSAtoASN1Hex;\nRSAKey.prototype.setPrivateEx = RSASetPrivateEx;\nRSAKey.prototype.setPrivateKeyFromASN1HexString = RSASetPrivateKeyFromASN1HexString;\n\n","import { normal64Bytes } from \"./utils\"\n\nexport type AllowedNumbers = \n| 7\n| 8\n| 9\n| 10\n| 11\n| 12\n| 13\n| 14\n| 15\n| 16\n| 17\n\nexport function isAllowedNumber(num:number):num is AllowedNumbers {\n return num >= 7 && num <= 17\n}\n\nexport function getKeeperKeys(fct:(source: string) => Uint8Array){\n let keyNumber = 7\n return [\n 'BK9w6TZFxE6nFNbMfIpULCup2a8xc6w2tUTABjxny7yFmxW0dAEojwC6j6zb5nTlmb1dAx8nwo3qF7RPYGmloRM',\n 'BKnhy0obglZJK-igwthNLdknoSXRrGB-mvFRzyb_L-DKKefWjYdFD2888qN1ROczz4n3keYSfKz9Koj90Z6w_tQ',\n 'BAsPQdCpLIGXdWNLdAwx-3J5lNqUtKbaOMV56hUj8VzxE2USLHuHHuKDeno0ymJt-acxWV1xPlBfNUShhRTR77g',\n 'BNYIh_Sv03nRZUUJveE8d2mxKLIDXv654UbshaItHrCJhd6cT7pdZ_XwbdyxAOCWMkBb9AZ4t1XRCsM8-wkEBRg',\n 'BA6uNfeYSvqagwu4TOY6wFK4JyU5C200vJna0lH4PJ-SzGVXej8l9dElyQ58_ljfPs5Rq6zVVXpdDe8A7Y3WRhk',\n 'BMjTIlXfohI8TDymsHxo0DqYysCy7yZGJ80WhgOBR4QUd6LBDA6-_318a-jCGW96zxXKMm8clDTKpE8w75KG-FY',\n 'BJBDU1P1H21IwIdT2brKkPqbQR0Zl0TIHf7Bz_OO9jaNgIwydMkxt4GpBmkYoprZ_DHUGOrno2faB7pmTR7HhuI',\n 'BJFF8j-dH7pDEw_U347w2CBM6xYM8Dk5fPPAktjib-opOqzvvbsER-WDHM4ONCSBf9O_obAHzCyygxmtpktDuiE',\n 'BDKyWBvLbyZ-jMueORl3JwJnnEpCiZdN7yUvT0vOyjwpPBCDf6zfL4RWzvSkhAAFnwOni_1tQSl8dfXHbXqXsQ8',\n 'BDXyZZnrl0tc2jdC5I61JjwkjK2kr7uet9tZjt8StTiJTAQQmnVOYBgbtP08PWDbecxnHghx3kJ8QXq1XE68y8c',\n 'BFX68cb97m9_sweGdOVavFM3j5ot6gveg6xT4BtGahfGhKib-zdZyO9pwvv1cBda9ahkSzo1BQ4NVXp9qRyqVGU'\n ].reduce((keys:Uint8Array[], key) => {\n keys[keyNumber++] = fct(key)\n return keys\n }, [])\n}\n\n","import {KeyWrapper, LogOptions, platform} from \"./platform\";\nimport type {KeeperHost, TransmissionKey} from './configuration';\nimport { AllowedNumbers } from \"./transmissionKeys\";\n\nexport const log = (message: string, options: LogOptions = 'default') => {\n platform.log(message, options)\n}\n\nexport const formatTimeDiff = (timeDiff: Date): string => {\n const minutes = timeDiff.getMinutes()\n const seconds = timeDiff.getSeconds().toString().padStart(2, '0')\n const milliseconds = timeDiff.getMilliseconds()\n return minutes > 0\n ? `${minutes.toString().padStart(2, '0')}:${seconds}.${milliseconds}`\n : `${seconds}.${milliseconds}`\n}\n\nexport function getKeeperUrl(host: KeeperHost, forPath: string) {\n return `https://${host}/api/rest/${forPath}`;\n}\n\nexport function getKeeperSAMLUrl(host: KeeperHost, forPath: string, serviceProviderId?: number) {\n if (serviceProviderId) {\n return getKeeperUrl(host, `sso/saml/${forPath}/${serviceProviderId}`);\n } else {\n return getKeeperUrl(host, `sso/saml/${forPath}`);\n }\n}\n\nexport function getKeeperSsoConfigUrl(host: KeeperHost, forPath: string, serviceProviderId?: number) {\n if (serviceProviderId) {\n return getKeeperUrl(host, `sso/config/${forPath}/${serviceProviderId}`);\n } else {\n return getKeeperUrl(host, `sso/config/${forPath}`);\n }\n}\n\nexport function getKeeperAutomatorAdminUrl(host: KeeperHost, forPath: string, automatorId?: number) {\n if (automatorId) {\n return getKeeperUrl(host, `automator/${forPath}/${automatorId}`);\n } else {\n return getKeeperUrl(host, `automator/${forPath}`);\n }\n}\n\nexport async function generateTransmissionKey(keyNumber: AllowedNumbers): Promise<TransmissionKey> {\n const transmissionKey = platform.getRandomBytes(32)\n return {\n publicKeyId: keyNumber,\n key: transmissionKey,\n encryptedKey: await platform.publicEncryptEC(transmissionKey, platform.keys[keyNumber])\n }\n}\n\nexport function webSafe64(source: string): string {\n return source.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\nexport function webSafe64FromBytes(source: Uint8Array): string {\n return webSafe64(platform.bytesToBase64(source));\n}\n\nexport function normal64(source: string): string {\n return source.replace(/-/g, '+').replace(/_/g, '/') + '=='.substring(0, (3 * source.length) % 4);\n}\n\nexport function normal64Bytes(source: string): Uint8Array {\n return platform.base64ToBytes(normal64(source));\n}\n\nexport function isTwoFactorResultCode(resultCode: string): boolean {\n return [\"need_totp\", \"invalid_device_token\", \"invalid_totp\"].includes(resultCode);\n}\n\nexport function generateEncryptionKey(): Uint8Array {\n return platform.getRandomBytes(32);\n}\n\nexport function generateUidBytes(): Uint8Array {\n return platform.getRandomBytes(16);\n}\n\nexport function generateUid(): string {\n return webSafe64FromBytes(generateUidBytes());\n}\n\nexport function wrapPassword(key: string | Uint8Array): KeyWrapper {\n if (typeof key === 'string') {\n return platform.wrapPassword(platform.stringToBytes(key))\n }\n if (key instanceof Uint8Array) {\n return platform.wrapPassword(key)\n }\n throw new Error('Error wrapping the password')\n}\n\nexport async function encryptKey(key: Uint8Array, withKey: Uint8Array): Promise<string> {\n let encryptedKey = await platform.aesGcmEncrypt(key, withKey);\n return webSafe64FromBytes(encryptedKey);\n}\n\nexport function shareKey(key: Uint8Array, publicKey: string): string {\n let encryptedKey = platform.publicEncrypt(key, publicKey);\n return webSafe64FromBytes(encryptedKey);\n}\n\nexport async function shareKeyEC(key: Uint8Array, publicKey: Uint8Array): Promise<string> {\n let encryptedKey = await platform.publicEncryptEC(key, publicKey);\n return webSafe64FromBytes(encryptedKey);\n}\n\nexport async function decryptKey(encryptedKey: string, withKey: Uint8Array): Promise<Uint8Array> {\n return platform.aesGcmDecrypt(normal64Bytes(encryptedKey), withKey);\n}\n\nexport async function encryptForStorage(data: Uint8Array, key: Uint8Array): Promise<string> {\n return webSafe64FromBytes(await platform.aesCbcEncrypt(data, key, true));\n}\n\nexport async function decryptFromStorage(data: string, key: Uint8Array): Promise<Uint8Array> {\n return await platform.aesCbcDecrypt(normal64Bytes(data), key, true);\n}\n\nexport async function decryptFromStorageGcm(data: string, key: Uint8Array): Promise<Uint8Array> {\n return platform.aesGcmDecrypt(normal64Bytes(data), key);\n}\n\nexport async function encryptObjectForStorage<T>(obj: T, key: Uint8Array): Promise<string> {\n let s = JSON.stringify(obj);\n let bytes = platform.stringToBytes(s);\n return encryptForStorage(bytes, key);\n}\n\nexport async function encryptObjectForStorageAsBytes<T>(obj: T, key: Uint8Array): Promise<Uint8Array> {\n let s = JSON.stringify(obj);\n let bytes = platform.stringToBytes(s);\n return platform.aesCbcEncrypt(bytes, key, true)\n}\n\nexport async function decryptObjectFromStorage<T>(data: string, key: Uint8Array): Promise<T> {\n try {\n let decrypted = await decryptFromStorage(data, key);\n return JSON.parse(platform.bytesToString(decrypted));\n }\n catch (e) {\n console.log(`Unable to decrypt ${data}`);\n return {} as T\n }\n}\n\nexport async function encryptObjectForStorageGCM<T>(obj: T, key: Uint8Array, usePadding: boolean = true): Promise<Uint8Array> {\n let bytes = platform.stringToBytes(JSON.stringify(obj));\n if (usePadding) {\n const paddedSize = Math.ceil(Math.max(384, bytes.length) / 16) * 16\n bytes = Uint8Array.of(...bytes, ...Array(paddedSize - bytes.length).fill(0x20))\n }\n return platform.aesGcmEncrypt(bytes, key)\n}\n\nexport function resolvablePromise(): { promise: Promise<void>, resolve: () => void } {\n let resolver\n const promise = new Promise<void>((resolve) => {\n resolver = resolve\n })\n return {\n promise: promise,\n resolve: resolver\n }\n}\n","import { platform } from \"./platform\"\n\nexport type CloseReason = {\n code: number,\n reason: CloseReasonMessage\n}\n\nenum CloseReasonCode {\n CANNOT_ACCEPT = 1003,\n NOT_CONSISTENT = 1007,\n VIOLATED_POLICY = 1008,\n TRY_AGAIN_LATER = 1013,\n}\n\ntype CloseReasonMessage = {\n close_reason:string\n key_id?:number\n}\n\ntype SocketMessage = {\n event: 'received_totp'\n type: 'dna'\n passcode: string\n}\n\nexport type SocketProxy = {\n onOpen: (callback: () => void) => void\n close: () => void\n onClose: (callback: (e:Event) => void) => void\n onError: (callback: (e: Event | Error) => void) => void\n onMessage: (callback: (e: Uint8Array) => void) => void\n send: (message: any) => void\n messageQueue: any[] // Since messages are type any here, make this an any array\n}\n\nexport class SocketListener {\n private socket?: SocketProxy;\n private url: string\n private getConnectionRequest?: (Uint8Array) => Promise<string>\n // Listeners that receive all messages\n private messageListeners: Array<(data: any) => void>\n // Listeners that receive a single message\n private singleMessageListeners: Array<{\n resolve: (data: any) => void,\n reject: (errorMessage: string) => void\n }>\n // Listeners that receive all messages\n private closeListeners: Array<(data: any) => void>\n // Listeners that receive a single message\n private singleCloseListeners: Array<{\n resolve: (data: any) => void,\n reject: (errorMessage: string) => void\n }>\n // Listeners that signal a re-connected socket\n private onOpenListeners: Array<() => void>\n // The messageSessionUid\n private messageSessionUid?: Uint8Array\n\n private isConnected: boolean\n private reconnectTimeout?: ReturnType<typeof setTimeout>\n private currentBackoffSeconds: number\n private isClosedByClient: boolean\n\n constructor(url: string, messageSessionUid?: Uint8Array, getConnectionRequest?: (messageSessionUid:Uint8Array) => Promise<string>) {\n console.log('Connecting to ' + url)\n\n this.url = url\n this.closeListeners = []\n this.singleCloseListeners = []\n this.messageListeners = []\n this.singleMessageListeners = []\n this.onOpenListeners = []\n this.currentBackoffSeconds = SocketListener.getBaseReconnectionInterval()\n this.isClosedByClient = false\n this.isConnected = false\n if (getConnectionRequest) this.getConnectionRequest = getConnectionRequest\n\n if (messageSessionUid){\n this.messageSessionUid = messageSessionUid\n this.createWebsocket(this.messageSessionUid)\n } else {\n this.createWebsocket()\n }\n }\n\n async createWebsocket(messageSessionUid?:Uint8Array) {\n if (this.getConnectionRequest && messageSessionUid) {\n const connectionRequest = await this.getConnectionRequest(messageSessionUid)\n this.socket = platform.createWebsocket(`${this.url}/${connectionRequest}`)\n } else {\n this.socket = platform.createWebsocket(this.url)\n }\n\n this.socket!.onOpen(() => {\n console.log('socket opened')\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout)\n }\n this.currentBackoffSeconds = SocketListener.getBaseReconnectionInterval()\n this.handleOnOpen()\n })\n\n this.socket!.onClose(async (event: Event) => {\n if (this.isClosedByClient) {\n return\n }\n\n let reason\n this.isConnected = false\n\n try {\n reason = JSON.parse(event['reason'])\n } catch {\n console.log('Connection closed - no close reason.')\n this.reconnect()\n return\n }\n\n switch (event['code']){\n case CloseReasonCode.CANNOT_ACCEPT:\n // Exact messages that can come from CANNOT_ACCEPT:\n // - Push server is in progress of shutting down\n // - Push server is not registered with KA\n // - Cannot process encrypted message.xxxx\n\n if(reason && reason.close_reason.includes('Push server')){\n // Tell User to try again\n this.handleClose({code:event['code'], reason})\n } else {\n // this would be an internal error and shouldnt reach here in production\n console.error('Incorrect internal error: ', reason.close_reason)\n }\n break\n case CloseReasonCode.NOT_CONSISTENT:\n // Error Message: device timestamp: {time} is off by {off_time}\n //Tell User to adjust their system clock\n this.handleClose({ code: event['code'], reason })\n break\n case CloseReasonCode.VIOLATED_POLICY:\n // Error Message: duplicate messageSessionUid=${messageSessionUid}\n // Relogin if this happens\n this.handleClose({ code: event['code'], reason })\n break\n case CloseReasonCode.TRY_AGAIN_LATER:\n // Error Message: throttled messageSessionUid=${messageSessionUid}\n //Tell User to try again in 1 minute\n this.handleClose({ code: event['code'], reason })\n break\n default:\n if (!this.isClosedByClient) {\n this.reconnect()\n }\n }\n })\n this.socket!.onError((e: Event | Error) => {\n console.log('socket error: ' + e)\n })\n this.socket!.onMessage(e => {\n this.handleMessage(e)\n })\n\n this.isConnected = true\n }\n\n registerLogin(sessionToken: string) {\n if (!this.socket) throw new Error('Socket not available')\n this.socket.send(sessionToken)\n }\n\n onOpen(callback: () => void): void {\n this.onOpenListeners.push(callback)\n }\n\n onClose(callback: () => void): void {\n if (!this.socket) throw new Error('Socket not available')\n this.socket.onClose(callback)\n }\n\n onError(callback: () => void): void {\n if (!this.socket) throw new Error('Socket not available')\n this.socket.onError(callback)\n }\n\n private handleOnOpen() {\n for (let callback of this.onOpenListeners) {\n callback()\n }\n }\n\n private handleMessage(messageData: Uint8Array): void {\n for (let callback of this.messageListeners) {\n callback(messageData)\n }\n\n for (let {resolve} of this.singleMessageListeners) {\n resolve(messageData)\n }\n this.singleMessageListeners.length = 0\n }\n\n private handleClose(messageData: {code: number, reason:CloseReasonMessage}): void {\n for (let callback of this.closeListeners) {\n callback(messageData)\n }\n\n for (let { resolve } of this.singleCloseListeners) {\n resolve(messageData)\n }\n this.singleCloseListeners.length = 0\n }\n\n onPushMessage(callback: (data: any) => void): void {\n this.messageListeners.push(callback)\n }\n\n onCloseMessage(callback: (data: any) => void): void {\n this.closeListeners.push(callback)\n }\n\n async getPushMessage(): Promise<any> {\n console.log('Awaiting web socket message...')\n return new Promise<any>((resolve, reject) => {\n this.singleMessageListeners.push({resolve, reject})\n })\n }\n\n private static getBaseReconnectionInterval(): number {\n return Math.random() * 5\n }\n\n private reconnect() {\n console.log(`Reconnecting websocket in ${this.currentBackoffSeconds.toFixed(2)} seconds...`)\n\n // schedule next reconnect attempt\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout)\n }\n this.reconnectTimeout = setTimeout(() => {\n this.createWebsocket(this.messageSessionUid)\n }, this.currentBackoffSeconds * 1000)\n\n this.currentBackoffSeconds = Math.min(this.currentBackoffSeconds * 2, 60) // Cap at 1 min, as suggested by docs\n }\n\n disconnect() {\n this.isConnected = false\n this.isClosedByClient = true\n this.socket?.close()\n this.socket = undefined\n this.messageListeners.length = 0\n\n this.currentBackoffSeconds = Math.random() * 5\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout)\n }\n this.singleMessageListeners.length = 0\n }\n\n getIsConnected(){\n return this.isConnected\n }\n}\n\nexport function socketSendMessage(message: any, socket: WebSocket, createdSocket:any){\n switch (socket.readyState) {\n case 0:// CONNECTING\n if (createdSocket.messageQueue.indexOf(message) === -1) createdSocket.messageQueue.push(message)\n break;\n case 1:// OPEN\n if (createdSocket.messageQueue.indexOf(message) === -1) createdSocket.messageQueue.push(message)\n\n if (createdSocket.messageQueue.length > 0) {\n for (let counter = 0; counter < createdSocket.messageQueue.length; counter++) {\n socket.send(createdSocket.messageQueue[counter])\n }\n }\n\n createdSocket.messageQueue.length = 0\n break;\n case 2:// CLOSING\n case 3:// CLOSED\n createdSocket.messageQueue.length = 0\n console.error('Trying to send a message while in the CLOSING or CLOSED state')\n break;\n }\n}\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 <vybornov@gmail.com>\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 * <p>\n * Heap buffer layout by offset:\n * <pre>\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 * </pre>\n * Don't touch anything before <code>0x400</code>.\n * </p>\n *\n * @alias AES_asm\n * @class\n * @param foreign - <i>ignored</i>\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","import {EncryptionType, KeyStorage, KeyWrapper, LogOptions, Platform, UnwrappedKeyType, CryptoWorkerOptions, UnwrapKeyMap} from '../platform'\nimport {_asnhex_getHexOfV_AtObj, _asnhex_getPosArrayOfChildren_AtObj} from \"./asn1hex\";\nimport {RSAKey} from \"./rsa\";\nimport {getKeeperKeys} from \"../transmissionKeys\";\nimport {normal64, normal64Bytes, webSafe64FromBytes} from \"../utils\";\nimport {SocketProxy, socketSendMessage} from '../socket'\nimport * as asmCrypto from 'asmcrypto.js'\nimport type {KeeperHttpResponse} from \"../commands\";\nimport {CryptoWorker, CryptoWorkerMessage, CryptoWorkerPool, CryptoWorkerPoolConfig, CryptoResults } from '../cryptoWorker';\n\nconst rsaAlgorithmName: string = \"RSASSA-PKCS1-v1_5\";\nconst CBC_IV_LENGTH = 16\nconst GCM_IV_LENGTH = 12\nconst ECC_PUB_KEY_LENGTH = 65\nlet socket: WebSocket | null = null\nlet workerPool: CryptoWorkerPool | null = null\n\nconst base64ToBytes = (data: string): Uint8Array => {\n return Uint8Array.from(atob(data), c => c.charCodeAt(0))\n}\n\nexport const browserPlatform: Platform = class {\n \n static supportsConcurrency: boolean = true\n\n static base64ToBytes = base64ToBytes\n \n static normal64Bytes(source: string): Uint8Array {\n return base64ToBytes(normal64(source));\n }\n\n static keys = getKeeperKeys(this.normal64Bytes);\n\n static getRandomBytes(length: number): Uint8Array {\n let data = new Uint8Array(length);\n crypto.getRandomValues(data);\n return data\n }\n\n static bytesToBase64(data: Uint8Array): string {\n const chunkSize = 0x10000\n if (data.length <= chunkSize) {\n // @ts-ignore\n return btoa(String.fromCharCode(...data))\n }\n let chunks: string = ''\n for (let i = 0; i < data.length; i = i + chunkSize) {\n // @ts-ignore\n chunks = chunks + String.fromCharCode(...data.slice(i, i + chunkSize))\n }\n return btoa(chunks)\n } \n\n static bytesToString(data: Uint8Array): string {\n return new TextDecoder().decode(data)\n }\n\n static stringToBytes(data: string): Uint8Array {\n return new TextEncoder().encode(data);\n }\n\n static wrapPassword(password: Uint8Array): KeyWrapper {\n return KeyWrapper.create(password)\n // TODO const wrappedPassword = await crypto.subtle.importKey(\"raw\", password.asBytes(), \"PBKDF2\", false, [\"deriveBits\"]);\n // return KeyWrapper.create(wrappedPassword)\n }\n\n static unWrapPassword(password: KeyWrapper): Uint8Array {\n return password.getKey()\n }\n\n static async importKey(keyId: string, key: Uint8Array, storage?: KeyStorage, canExport?: boolean): Promise<void> {\n // An AES key for one of our Keeper objects can be used for either CBC or GCM operations.\n // Since CryptoKeys are bound to a particular algorithm, we need to keep a copy for each.\n const extractable = !!canExport\n const cbcKey = await this.aesCbcImportKey(key, extractable) \n const gcmKey = await this.aesGcmImportKey(key, extractable)\n cryptoKeysCache['cbc'][keyId] = cbcKey\n cryptoKeysCache['gcm'][keyId] = gcmKey\n\n if (storage) {\n if (storage.saveObject) {\n await storage.saveObject(this.getStorageKeyId(keyId, 'cbc'), cbcKey)\n await storage.saveObject(this.getStorageKeyId(keyId, 'gcm'), gcmKey)\n } else {\n await storage.saveKeyBytes(keyId, key)\n }\n }\n }\n\n static async importKeyEC(keyId: string, privateKey: Uint8Array, publicKey: Uint8Array, storage?: KeyStorage): Promise<void> {\n const key = await this.importPrivateKeyEC(privateKey, publicKey)\n cryptoKeysCache['ecc'][keyId] = key\n\n if (storage) {\n if (storage.saveObject) {\n await storage.saveObject(this.getStorageKeyId(keyId, 'ecc'), key)\n } else {\n const jwk = await crypto.subtle.exportKey('jwk', key)\n const keyBytes = this.stringToBytes(JSON.stringify(jwk))\n await storage.saveKeyBytes(keyId, keyBytes)\n }\n }\n }\n\n static async importKeyRSA(keyId: string, key: Uint8Array, storage?: KeyStorage): Promise<void> {\n keyBytesCache[keyId] = key\n\n if (storage) {\n await storage.saveKeyBytes(keyId, key)\n }\n }\n\n static unloadKeys(): void {\n cryptoKeysCache.cbc = {}\n cryptoKeysCache.gcm = {}\n cryptoKeysCache.ecc = {}\n keyBytesCache = {}\n }\n\n static getStorageKeyId(keyId: string, keyType: EncryptionType): string {\n switch (keyType) {\n case 'cbc':\n case 'gcm':\n return `${keyId}_${keyType}`\n default:\n return keyId\n }\n }\n\n static async loadCryptoKey(keyId: string, keyType: EncryptionType, storage?: KeyStorage): Promise<CryptoKey> {\n if (storage?.getObject) {\n const storageKeyId = this.getStorageKeyId(keyId, keyType)\n const storedKey = await storage.getObject<CryptoKey>(storageKeyId)\n if (!storedKey) {\n throw new Error('Unable to load crypto key ' + keyId)\n }\n return storedKey \n }\n\n const keyBytes = await this.loadKeyBytes(keyId, storage)\n switch (keyType) {\n case 'cbc':\n return this.aesCbcImportKey(keyBytes, true)\n case 'gcm':\n return this.aesGcmImportKey(keyBytes, true)\n case 'ecc':\n const jwk: JsonWebKey = JSON.parse(this.bytesToString(keyBytes))\n return this.importECCJsonWebKey(jwk) \n default:\n throw new Error('Unsupported keyType: ' + keyType)\n }\n }\n\n static async loadKeyBytes(keyId: string, storage?: KeyStorage): Promise<Uint8Array> {\n const cachedKey = keyBytesCache[keyId]\n if (cachedKey) {\n return cachedKey\n }\n const keyBytes = storage\n ? await storage.getKeyBytes(keyId)\n : undefined\n if (!keyBytes) {\n throw new Error(`Unable to load the key ${keyId}`)\n }\n keyBytesCache[keyId] = keyBytes\n return keyBytes\n }\n\n static async loadKey(keyId: string, keyType: CryptoKeyType, storage?: KeyStorage): Promise<CryptoKey> {\n const cachedKey = cryptoKeysCache[keyType][keyId]\n if (cachedKey) {\n return cachedKey\n }\n\n const key = await this.loadCryptoKey(keyId, keyType, storage)\n cryptoKeysCache[keyType][keyId] = key\n return key\n }\n\n static async unwrapKeys(keys: UnwrapKeyMap, storage?: KeyStorage): Promise<void> {\n if (workerPool) {\n try {\n const unwrappedKeys = await workerPool.runTasks(Object.values(keys))\n\n // Import keys\n await Promise.all(Object.entries(unwrappedKeys).map(async ([keyId, keyBytes]) => {\n try {\n const {unwrappedType} = keys[keyId]\n switch (unwrappedType) {\n case 'aes':\n await this.importKey(keyId, keyBytes, storage, true)\n break\n case 'rsa':\n await this.importKeyRSA(keyId, keyBytes, storage)\n break\n default:\n throw new Error(`unable to import ${unwrappedType} key`)\n }\n } catch (e) {\n console.error(`Import key error: ${e}`)\n }\n }))\n \n return // no error, exit\n\n } catch (e) {\n console.error(`Crypto worker failed: ${e}`)\n }\n }\n\n // Default to main thread decryption\n await Promise.all(Object.values(keys).map(async task => {\n const {data, dataId, keyId, encryptionType, unwrappedType} = task\n try {\n await this.unwrapKey(data, dataId, keyId, encryptionType, unwrappedType, storage)\n } catch (e: any) {\n if (e instanceof Error && e.message === 'sync_aborted') throw e\n console.error(`The key ${dataId} cannot be decrypted (${e.message})`)\n }\n }))\n }\n\n static async unwrapKey(key: Uint8Array, keyId: string, unwrappingKeyId: string, encryptionType: EncryptionType, unwrappedKeyType: UnwrappedKeyType, storage?: KeyStorage, canExport?: boolean): Promise<void> {\n switch (unwrappedKeyType) {\n case 'rsa':\n if (keyBytesCache[keyId]) {\n // Skip redundant RSA key decryption\n return\n }\n\n await this.unwrapRSAKey(key, keyId, unwrappingKeyId, encryptionType, storage)\n break\n case 'aes':\n if (cryptoKeysCache['gcm'][keyId]) {\n // Keeperapp sometimes provides redundant key data, for example, like if you own a record in a shared folder,\n // or if a record belongs to multiple shared folders. So, short circuit when possible for a performance improvement\n return\n }\n\n await this.unwrapAesKey(key, keyId, unwrappingKeyId, encryptionType, storage, canExport)\n break\n default:\n throw new Error('Unable to unwrap key type ' + unwrappedKeyType)\n }\n }\n\n static async unwrapAesKey(key: Uint8Array, keyId: string, unwrappingKeyId: string, encryptionType: EncryptionType, storage?: KeyStorage, canExport?: boolean): Promise<void> {\n let unwrappingKey: CryptoKey\n let wrappedKey: Uint8Array\n let algoParams: AesCbcParams | AesGcmParams\n switch (encryptionType) {\n case 'rsa':\n const rsaKey = await this.loadKeyBytes(unwrappingKeyId, storage)\n const keyBytes = this.privateDecrypt(key, rsaKey)\n await this.importKey(keyId, keyBytes, storage, canExport) \n return\n\n case 'cbc':\n wrappedKey = key.subarray(CBC_IV_LENGTH)\n algoParams = {\n iv: key.subarray(0, CBC_IV_LENGTH),\n name: 'AES-CBC'\n }\n unwrappingKey = await this.loadKey(unwrappingKeyId, encryptionType, storage)\n break\n\n case 'gcm':\n wrappedKey = key.subarray(GCM_IV_LENGTH)\n algoParams = {\n iv: key.subarray(0, GCM_IV_LENGTH),\n name: 'AES-GCM'\n }\n unwrappingKey = await this.loadKey(unwrappingKeyId, encryptionType, storage)\n break\n\n case 'ecc':\n const message = key.slice(ECC_PUB_KEY_LENGTH)\n wrappedKey = message.subarray(GCM_IV_LENGTH)\n algoParams = {\n iv: message.subarray(0, GCM_IV_LENGTH),\n name: 'AES-GCM'\n }\n const ephemeralPublicKey = key.slice(0, ECC_PUB_KEY_LENGTH)\n const eccPrivateKey = await this.loadKey(unwrappingKeyId, 'ecc', storage)\n unwrappingKey = await this.deriveSharedSecretKey(ephemeralPublicKey, eccPrivateKey)\n break\n }\n\n const canExtract: boolean = storage?.saveObject ? !!canExport : true\n const keyUsages: KeyUsage[] = ['encrypt', 'decrypt', 'unwrapKey', 'wrapKey']\n\n const gcmKey = await crypto.subtle.unwrapKey('raw', wrappedKey, unwrappingKey, algoParams, 'AES-GCM', canExtract, keyUsages)\n const cbcKey = await crypto.subtle.unwrapKey('raw', wrappedKey, unwrappingKey, algoParams, 'AES-CBC', canExtract, keyUsages)\n\n cryptoKeysCache['cbc'][keyId] = cbcKey\n cryptoKeysCache['gcm'][keyId] = gcmKey\n\n if (storage) {\n if (storage.saveObject) {\n await storage.saveObject(this.getStorageKeyId(keyId, 'cbc'), cbcKey)\n await storage.saveObject(this.getStorageKeyId(keyId, 'gcm'), gcmKey)\n } else {\n const keyBuffer = await crypto.subtle.exportKey('raw', gcmKey)\n await storage.saveKeyBytes(keyId, new Uint8Array(keyBuffer))\n }\n }\n }\n\n static async unwrapRSAKey(key: Uint8Array, keyId: string, unwrappingKeyId: string, encryptionType: EncryptionType, storage?: KeyStorage): Promise<void> {\n const rsaKey = await this.decrypt(key, unwrappingKeyId, encryptionType, storage)\n await this.importKeyRSA(keyId, rsaKey, storage)\n }\n\n static async decrypt(data: Uint8Array, keyId: string, encryptionType: EncryptionType, storage?: KeyStorage): Promise<Uint8Array> {\n switch (encryptionType) {\n case 'cbc': {\n const key = await this.loadKey(keyId, encryptionType, storage)\n return this.aesCbcDecryptWebCrypto(data, key)\n }\n case 'gcm': {\n const key = await this.loadKey(keyId, encryptionType, storage)\n return this.aesGcmDecryptWebCrypto(data, key)\n }\n case 'rsa': {\n const key = await this.loadKeyBytes(keyId, storage)\n return this.privateDecrypt(data, key)\n }\n case 'ecc': {\n const key = await this.loadKey(keyId, encryptionType, storage)\n return this.privateDecryptECWebCrypto(data, key)\n }\n default:\n throw Error('Unknown encryption type: ' + encryptionType)\n }\n }\n\n static async generateRSAKeyPair(): Promise<{privateKey: Uint8Array; publicKey: Uint8Array}> {\n let keyPair = await crypto.subtle.generateKey({\n name: rsaAlgorithmName,\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // 65537\n hash: {name: 'SHA-256'},\n }, true, [\"sign\", \"verify\"]);\n\n let jwk = await crypto.subtle.exportKey(\"jwk\", keyPair.privateKey);\n\n let rsaKey = new RSAKey();\n rsaKey.setPrivateEx(\n base64ToHex(normal64(jwk.n!)),\n base64ToHex(normal64(jwk.e!)),\n base64ToHex(normal64(jwk.d!)),\n base64ToHex(normal64(jwk.p!)),\n base64ToHex(normal64(jwk.q!)),\n base64ToHex(normal64(jwk.dp!)),\n base64ToHex(normal64(jwk.dq!)),\n base64ToHex(normal64(jwk.qi!))\n );\n\n let public_key = rsaKey.toASN1HexString(false);\n let private_key = rsaKey.toASN1HexString(true);\n\n return {\n privateKey: hexToBytes(private_key),\n publicKey: hexToBytes(public_key),\n };\n }\n\n static async generateECKeyPair(): Promise<{ privateKey: Uint8Array; publicKey: Uint8Array }> {\n const ecdh = await crypto.subtle.generateKey({ name: 'ECDH', namedCurve: 'P-256' }, true, ['deriveBits'])\n const privateKey = await crypto.subtle.exportKey('jwk', ecdh.privateKey)\n const publicKey = await crypto.subtle.exportKey('raw', ecdh.publicKey)\n return { publicKey: new Uint8Array(publicKey), privateKey: normal64Bytes(privateKey.d!) }\n }\n\n static publicEncrypt(data: Uint8Array, key: string): Uint8Array {\n let publicKeyHex = base64ToHex(key);\n const pos = _asnhex_getPosArrayOfChildren_AtObj(publicKeyHex, 0);\n const hN = _asnhex_getHexOfV_AtObj(publicKeyHex, pos[0]);\n const hE = _asnhex_getHexOfV_AtObj(publicKeyHex, pos[1]);\n const rsa = new RSAKey();\n rsa.setPublic(hN, hE);\n const hexBytes = bytesToHex(data);\n const encryptedBinary = rsa.encryptBinary(hexBytes);\n return hexToBytes(encryptedBinary);\n }\n\n static async publicEncryptEC(data: Uint8Array, key: Uint8Array, id?: Uint8Array): Promise<Uint8Array> {\n const ephemeralKeyPair = await crypto.subtle.generateKey({ name: 'ECDH', namedCurve: 'P-256' }, true, ['deriveBits'])\n const ephemeralPublicKey = await crypto.subtle.exportKey('raw', ephemeralKeyPair.publicKey)\n const recipientPublicKey = await crypto.subtle.importKey('raw', key, { name: 'ECDH', namedCurve: 'P-256' }, true, [])\n const sharedSecret = await crypto.subtle.deriveBits({ name: 'ECDH', public: recipientPublicKey }, ephemeralKeyPair.privateKey, 256)\n const idBytes = id || new Uint8Array()\n const sharedSecretCombined = new Uint8Array(sharedSecret.byteLength + idBytes.byteLength)\n sharedSecretCombined.set(new Uint8Array(sharedSecret), 0)\n sharedSecretCombined.set(idBytes, sharedSecret.byteLength)\n const symmetricKey = await crypto.subtle.digest('SHA-256', sharedSecretCombined)\n const cipherText = await this.aesGcmEncrypt(data, new Uint8Array(symmetricKey))\n const result = new Uint8Array(ephemeralPublicKey.byteLength + cipherText.byteLength)\n result.set(new Uint8Array(ephemeralPublicKey), 0)\n result.set(new Uint8Array(cipherText), ephemeralPublicKey.byteLength)\n return result\n }\n\n static privateDecrypt(data: Uint8Array, key: Uint8Array): Uint8Array {\n let pkh = bytesToHex(key);\n const rsa = new RSAKey();\n rsa.setPrivateKeyFromASN1HexString(pkh);\n const hexBytes = bytesToHex(data);\n const decryptedBinary = rsa.decryptBinary(hexBytes);\n return hexToBytes(decryptedBinary);\n }\n\n static async privateDecryptEC(data: Uint8Array, privateKey: Uint8Array, publicKey?: Uint8Array, id?: Uint8Array): Promise<Uint8Array> {\n if (!publicKey) {\n throw Error('Public key is required for EC decryption')\n }\n\n const privateKeyImport = await this.importPrivateKeyEC(privateKey, publicKey)\n\n return this.privateDecryptECWebCrypto(data, privateKeyImport, id)\n }\n\n static async importPrivateKeyEC(privateKey: Uint8Array, publicKey: Uint8Array) {\n const x = webSafe64FromBytes(publicKey.subarray(1, 33))\n const y = webSafe64FromBytes(publicKey.subarray(33, 65))\n const d = webSafe64FromBytes(privateKey)\n\n const jwk = {\n 'crv': 'P-256',\n d,\n 'ext': true,\n 'key_ops': [\n 'deriveBits'\n ],\n 'kty': 'EC',\n x,\n y\n }\n\n return this.importECCJsonWebKey(jwk)\n }\n\n static async importECCJsonWebKey(jwk: JsonWebKey): Promise<CryptoKey> {\n return await crypto.subtle.importKey('jwk', jwk, { name: 'ECDH', namedCurve: 'P-256' }, true, ['deriveBits'])\n }\n\n static async deriveSharedSecretKey(ephemeralPublicKey: Uint8Array, privateKey: CryptoKey, id?: Uint8Array): Promise<CryptoKey> {\n const pubCryptoKey = await crypto.subtle.importKey('raw', ephemeralPublicKey, { name: 'ECDH', namedCurve: 'P-256' }, true, [])\n const sharedSecret = await crypto.subtle.deriveBits({ name: 'ECDH', public: pubCryptoKey }, privateKey, 256)\n let sharedSecretCombined = new Uint8Array(sharedSecret.byteLength + (id?.byteLength ?? 0))\n sharedSecretCombined.set(new Uint8Array(sharedSecret), 0)\n if (id) {\n sharedSecretCombined.set(id, sharedSecret.byteLength)\n }\n const symmetricKeyBuffer = await crypto.subtle.digest('SHA-256', sharedSecretCombined)\n return this.aesGcmImportKey(new Uint8Array(symmetricKeyBuffer), false)\n }\n\n static async privateDecryptECWebCrypto(data: Uint8Array, privateKey: CryptoKey, id?: Uint8Array): Promise<Uint8Array> {\n const message = data.slice(ECC_PUB_KEY_LENGTH)\n const ephemeralPublicKey = data.slice(0, ECC_PUB_KEY_LENGTH)\n\n const symmetricKey = await this.deriveSharedSecretKey(ephemeralPublicKey, privateKey, id)\n\n return await this.aesGcmDecryptWebCrypto(message, symmetricKey)\n }\n\n // TODO Not tested\n static async privateSign(data: Uint8Array, key: string): Promise<Uint8Array> {\n let _key = await crypto.subtle.importKey(\"pkcs8\",\n browserPlatform.base64ToBytes(key),\n \"RSA-PSS\",\n true,\n [\"sign\"]);\n let signature = await crypto.subtle.sign(rsaAlgorithmName, _key, data);\n return new Uint8Array(signature);\n }\n\n static async encrypt(data: Uint8Array, keyId: string, encryptionType: EncryptionType, storage?: KeyStorage): Promise<Uint8Array> {\n switch (encryptionType) {\n case 'cbc': {\n const key = await this.loadKey(keyId, encryptionType, storage)\n return this.aesCbcEncryptWebCrypto(data, key)\n }\n\n case 'gcm': {\n const key = await this.loadKey(keyId, encryptionType, storage)\n return this.aesGcmEncryptWebCrypto(data, key)\n }\n\n case 'ecc': {\n const publicKey = await this.loadKeyBytes(keyId + '_pub')\n return this.publicEncryptEC(data, publicKey)\n }\n\n case 'rsa': {\n const publicKey = await this.loadKeyBytes(keyId + '_pub')\n return this.publicEncrypt(data, this.bytesToBase64(publicKey))\n }\n\n default:\n throw Error('Unknown encryption type: ' + encryptionType)\n }\n }\n\n static async wrapKey(keyId: string, wrappingKeyId: string, encryptionType: CryptoKeyType, storage?: KeyStorage): Promise<Uint8Array> {\n switch (encryptionType) {\n case 'cbc':\n case 'gcm':\n return this.aesWrapKey(keyId, wrappingKeyId, encryptionType, storage)\n\n default:\n throw new Error(`Unsupported encryptionType (${encryptionType})`)\n }\n }\n\n static async aesWrapKey(keyId: string, wrappingKeyId: string, encryptionType: Exclude<CryptoKeyType, 'ecc'>, storage?: KeyStorage): Promise<Uint8Array> {\n const key = await this.loadKey(keyId, 'cbc', storage)\n const wrappingKey = await this.loadKey(wrappingKeyId, encryptionType, storage)\n\n let algoParams: AesCbcParams | AesGcmParams\n let iv: Uint8Array\n switch (encryptionType) {\n case 'cbc':\n iv = this.getRandomBytes(CBC_IV_LENGTH)\n algoParams = {\n iv,\n name: 'AES-CBC'\n }\n break\n\n case 'gcm':\n iv = this.getRandomBytes(GCM_IV_LENGTH)\n algoParams = {\n iv,\n name: 'AES-GCM'\n }\n break\n }\n\n const wrappedKey = await crypto.subtle.wrapKey('raw', key, wrappingKey, algoParams)\n\n let resArr = new Uint8Array(wrappedKey)\n let result = new Uint8Array(iv.length + resArr.length)\n result.set(iv)\n result.set(resArr, iv.length)\n return result\n }\n \n static async aesGcmEncrypt(data: Uint8Array, key: Uint8Array): Promise<Uint8Array> {\n let _key = await crypto.subtle.importKey(\"raw\", key, \"AES-GCM\", true, [\"encrypt\"]);\n return this.aesGcmEncryptWebCrypto(data, _key)\n }\n\n static async aesGcmEncryptWebCrypto(data: Uint8Array, key: CryptoKey): Promise<Uint8Array> {\n let iv = browserPlatform.getRandomBytes(GCM_IV_LENGTH);\n let res = await crypto.subtle.encrypt({\n name: \"AES-GCM\",\n iv: iv\n }, key, data);\n\n let resArr = new Uint8Array(res)\n let result = new Uint8Array(iv.length + resArr.length)\n result.set(iv)\n result.set(resArr, iv.length)\n return result\n }\n\n static async aesGcmDecrypt(data: Uint8Array, key: Uint8Array): Promise<Uint8Array> {\n const _key = await this.aesGcmImportKey(key, false)\n return this.aesGcmDecryptWebCrypto(data, _key)\n }\n\n static async aesGcmImportKey(keyBytes: Uint8Array, extractable: boolean): Promise<CryptoKey> {\n return crypto.subtle.importKey(\"raw\", keyBytes, \"AES-GCM\", extractable, ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']);\n }\n\n static async aesGcmDecryptWebCrypto(data: Uint8Array, key: CryptoKey): Promise<Uint8Array> {\n const iv = data.subarray(0, GCM_IV_LENGTH);\n const encrypted = data.subarray(GCM_IV_LENGTH);\n const res = await crypto.subtle.decrypt({\n name: \"AES-GCM\",\n iv: iv\n }, key, encrypted);\n return new Uint8Array(res);\n }\n\n static async aesCbcEncryptWebCrypto(data: Uint8Array, key: CryptoKey): Promise<Uint8Array> {\n let iv = browserPlatform.getRandomBytes(CBC_IV_LENGTH);\n let res = await crypto.subtle.encrypt({\n name: \"aes-cbc\",\n iv: iv\n }, key, data);\n\n let resArr = new Uint8Array(res)\n let result = new Uint8Array(iv.byteLength + resArr.byteLength)\n result.set(iv)\n result.set(resArr, iv.byteLength)\n return result\n }\n\n // The browser's implementation of aes cbc only works when padding is required. \n // Use asmCrypto for no padding. crypto-js was found to have a vulnerability (Cache-Timing attack)\n static async aesCbcEncrypt(data: Uint8Array, key: Uint8Array, usePadding: boolean): Promise<Uint8Array> {\n if(usePadding){\n let _key = await crypto.subtle.importKey(\"raw\", key, \"aes-cbc\", true, [\"encrypt\"]);\n return this.aesCbcEncryptWebCrypto(data, _key)\n } else {\n const iv = browserPlatform.getRandomBytes(CBC_IV_LENGTH);\n const encrBytes = asmCrypto.AES_CBC.encrypt(data, key, false, iv);\n\n const keeperformat = new Uint8Array(iv.length + encrBytes.length)\n keeperformat.set(iv)\n keeperformat.set(encrBytes, iv.length)\n\n return keeperformat\n }\n }\n\n // The browser's implementation of aes cbc only works when padding is required. \n // Use asmCrypto for no padding. crypto-js was found to have a vulnerability (Cache-Timing attack)\n static async aesCbcDecrypt(data: Uint8Array, key: Uint8Array, usePadding: boolean): Promise<Uint8Array> {\n if(usePadding){\n let _key = await this.aesCbcImportKey(key, false)\n return this.aesCbcDecryptWebCrypto(data, _key)\n } else {\n var iv = data.subarray(0, CBC_IV_LENGTH)\n var ciphertext = data.subarray(CBC_IV_LENGTH)\n\n var result = asmCrypto.AES_CBC.decrypt(ciphertext, key, false, iv)\n return result\n }\n }\n \n static async aesCbcImportKey(keyBytes: Uint8Array, extractable: boolean): Promise<CryptoKey> {\n return crypto.subtle.importKey('raw', keyBytes, 'AES-CBC', extractable, ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey'])\n }\n\n static async aesCbcDecryptWebCrypto(data: Uint8Array, key: CryptoKey): Promise<Uint8Array> {\n const iv = data.subarray(0, CBC_IV_LENGTH)\n const ciphertext = data.subarray(CBC_IV_LENGTH)\n const decrypt = await crypto.subtle.decrypt({\n name: 'AES-CBC',\n iv: iv\n }, key, ciphertext)\n return new Uint8Array(decrypt) \n }\n\n static async deriveKey(password: KeyWrapper, saltBytes: Uint8Array, iterations: number): Promise<Uint8Array> {\n let key = await crypto.subtle.importKey(\"raw\", password.getKey(), \"PBKDF2\", false, [\"deriveBits\"]);\n let derived = await crypto.subtle.deriveBits({\n name: \"PBKDF2\",\n salt: saltBytes,\n iterations: iterations,\n hash: {\n name: \"SHA-256\"\n }\n }, key, 256);\n return new Uint8Array(derived);\n }\n\n static async deriveKeyV2(domain: string, password: KeyWrapper, saltBytes: Uint8Array, iterations: number): Promise<Uint8Array> {\n\n let key = await crypto.subtle.importKey(\n \"raw\",\n Uint8Array.of(...browserPlatform.stringToBytes(domain), ...browserPlatform.unWrapPassword(password)),\n \"PBKDF2\",\n false,\n [\"deriveBits\"]);\n let derived = await crypto.subtle.deriveBits({\n name: \"PBKDF2\",\n salt: saltBytes,\n iterations: iterations,\n hash: {\n name: \"SHA-512\"\n }\n }, key, 512);\n let hmacKey = await crypto.subtle.importKey(\n \"raw\",\n derived,\n {\n name: \"HMAC\",\n hash: {\n name: \"SHA-256\"\n }\n },\n false,\n [\"sign\", \"verify\"]);\n const reduced = await crypto.subtle.sign(\"HMAC\", hmacKey, browserPlatform.stringToBytes(domain));\n return new Uint8Array(reduced);\n }\n\n static async calcAuthVerifier(key: Uint8Array): Promise<Uint8Array> {\n let digest = await crypto.subtle.digest(\"SHA-256\", key);\n return new Uint8Array(digest);\n }\n\n static async get(url: string, headers: any): Promise<KeeperHttpResponse> {\n let resp = await fetch(url, {\n method: \"GET\",\n headers: Object.entries(headers),\n });\n let body = await resp.arrayBuffer();\n return {\n statusCode: resp.status,\n headers: resp.headers,\n data: new Uint8Array(body)\n }\n }\n\n static async post(\n url: string,\n request: Uint8Array | string,\n headers?: {[key: string]: string}\n ): Promise<KeeperHttpResponse> {\n let resp = await fetch(url, {\n method: \"POST\",\n headers: new Headers({\n \"Content-Type\": \"application/octet-stream\",\n \"Content-Length\": String(request.length),\n ...headers\n }),\n body: request,\n });\n let body = await resp.arrayBuffer();\n return {\n statusCode: resp.status,\n headers: resp.headers,\n data: new Uint8Array(body)\n }\n }\n\n static fileUpload(\n url: string,\n uploadParameters: {[key: string]: string},\n data: Blob\n ): Promise<any> {\n return new Promise<any>((resolve, reject) => {\n const form = new FormData();\n\n for (const key in uploadParameters) {\n form.append(key, uploadParameters[key]);\n }\n form.append('file', data)\n\n const fetchCfg = {\n method: 'PUT',\n body: form,\n }\n\n fetch(url, fetchCfg)\n .then(response => response.json())\n .then(res => {\n resolve({\n headers: res.headers,\n statusCode: res.statusCode,\n statusMessage: res.statusMessage\n })\n })\n .catch(error => {\n console.error('Error uploading file:', error);\n reject(error)\n });\n })\n }\n\n static async createCryptoWorker(keyStorage: KeyStorage, options: CryptoWorkerOptions): Promise<CryptoWorkerPool> {\n const config: CryptoWorkerPoolConfig = {\n createWorker: async () => new BrowserCryptoWorker(),\n numThreads: navigator.hardwareConcurrency || 2,\n getKey: async (keyId, type) => {\n switch (type) {\n case 'cbc':\n case 'gcm': {\n const key = await this.loadKey(keyId, type, keyStorage)\n const buffer = await crypto.subtle.exportKey('raw', key)\n return new Uint8Array(buffer)\n }\n case 'ecc': {\n const key = await this.loadKey(keyId, type, keyStorage)\n const jwk = await crypto.subtle.exportKey('jwk', key)\n return this.stringToBytes(JSON.stringify(jwk))\n }\n default:\n return this.loadKeyBytes(keyId, keyStorage)\n }\n },\n ...options\n }\n\n workerPool = new CryptoWorkerPool(config)\n await workerPool!.open()\n\n return workerPool\n }\n\n static async closeCryptoWorker(): Promise<void> {\n if (!workerPool) return\n\n try {\n await workerPool.close()\n workerPool = null\n } catch (e) {\n console.error(e)\n }\n }\n\n static createWebsocket(url: string): SocketProxy {\n socket = new WebSocket(url)\n let createdSocket;\n return createdSocket = {\n onOpen: (callback: () => void) => {\n socket!.onopen = (e: Event) => {\n callback()\n }\n },\n close: () => {\n socket!.close()\n },\n onClose: (callback: (e:Event) => void) => {\n socket!.addEventListener(\"close\", callback)\n },\n onError: (callback: (e: Event) => void) => {\n socket!.addEventListener(\"error\", callback)\n },\n onMessage: (callback: (e: Uint8Array) => void) => {\n socket!.onmessage = async (e: MessageEvent) => {\n const pmArrBuff = await e.data.arrayBuffer()\n const pmUint8Buff = new Uint8Array(pmArrBuff)\n callback(pmUint8Buff)\n }\n },\n send: (message: any) => {\n socketSendMessage(message, socket!, createdSocket)\n },\n messageQueue: [],\n }\n }\n\n static log(message: string, options: LogOptions): void {\n if (options === 'CR')\n return\n console.log(message)\n }\n};\n\n\nfunction base64ToHex(data: string): string {\n let raw = atob(data);\n let hex = '';\n for (let i = 0; i < raw.length; i++) {\n let _hex = raw.charCodeAt(i).toString(16);\n hex += (_hex.length == 2 ? _hex : '0' + _hex);\n }\n return hex;\n}\n\nfunction hexToBytes(data: string): Uint8Array {\n let bytes: number[] = [];\n for (let c = 0; c < data.length; c += 2)\n bytes.push(parseInt(data.substr(c, 2), 16));\n return Uint8Array.from(bytes);\n}\n\nfunction bytesToHex(data: Uint8Array): string {\n let hex: string[] = [];\n for (let i = 0; i < data.length; i++) {\n let current = data[i] < 0 ? data[i] + 256 : data[i];\n hex.push((current >>> 4).toString(16));\n hex.push((current & 0xF).toString(16));\n }\n return hex.join(\"\");\n}\n\nconst OPCODE_PING = new Uint8Array([0x9])\n\nconst heartbeat = setInterval(() => {\n if (!socket) return\n if (socket.readyState !== WebSocket.OPEN) return\n socket.send(OPCODE_PING)\n}, 10000)\n\nlet keyBytesCache: Record<string, Uint8Array> = {}\n\ntype CryptoKeyCache = {\n [key in CryptoKeyType]: Record<string, CryptoKey>\n}\n\n// Web crypto supports aes gcm, aes cbc with padding, and ecc\ntype CryptoKeyType = Exclude<EncryptionType, 'rsa'>\n\nconst cryptoKeysCache: CryptoKeyCache = {\n cbc: {},\n gcm: {},\n ecc: {},\n}\n\nclass BrowserCryptoWorker implements CryptoWorker {\n\n private worker: Worker\n\n constructor() {\n const url = location.origin + '/worker/browserWorker.js'\n this.worker = new Worker(url)\n }\n\n sendMessage(message: CryptoWorkerMessage): Promise<CryptoResults> {\n return new Promise((resolve, reject) => {\n this.worker.onmessage = function onWorkerMessage(e: MessageEvent<CryptoResults>) {\n resolve(e.data)\n }\n\n this.worker.onerror = function onWorkerError(e) {\n reject(`Worker error: ${e.message}`)\n }\n\n this.worker.postMessage(message)\n })\n }\n\n async terminate() {\n this.worker.terminate()\n }\n}\n\n","import { CryptoWorkerMessage, handleCryptoWorkerMessage } from \"../cryptoWorker\"\nimport { connectPlatform } from \"../platform\"\nimport { browserPlatform } from \"./platform\"\n\nconnectPlatform(browserPlatform)\n\nself.addEventListener('message', async function (e: MessageEvent<CryptoWorkerMessage>) {\n const {data} = e\n\n const response = await handleCryptoWorkerMessage(data)\n\n // @ts-ignore\n self.postMessage(response)\n})\n"],"names":["asmCrypto.AES_CBC"],"mappings":"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AAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,G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AK,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9L,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChM,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChM,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC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"}
|
|
1
|
+
{"version":3,"file":"browserWorker.js","sources":["../../src/platform.ts","../../src/cryptoWorker.ts","../../src/browser/jsbn.ts","../../src/browser/asn1hex.ts","../../src/browser/rng.ts","../../src/browser/rsa.ts","../../src/transmissionKeys.ts","../../src/utils.ts","../../src/socket.ts","../../node_modules/asmcrypto.js/asmcrypto.all.es8.js","../../src/browser/platform.ts","../../src/browser/browserWorker.ts"],"sourcesContent":["import type {SocketProxy} from './socket'\nimport type {KeeperHttpResponse} from \"./commands\";\nimport type {CryptoWorkerPool, CryptoWorkerPoolConfig} from './cryptoWorker';\n\nexport interface Platform {\n keys: Uint8Array[];\n\n supportsConcurrency: boolean\n\n getRandomBytes(length: number): Uint8Array;\n\n bytesToBase64(data: Uint8Array): string;\n\n base64ToBytes(data: string): Uint8Array;\n\n bytesToString(data: Uint8Array): string;\n\n stringToBytes(data: string): Uint8Array;\n\n wrapPassword(password: Uint8Array): KeyWrapper;\n\n unWrapPassword(password: KeyWrapper): Uint8Array;\n\n importKey(keyId: string, key: Uint8Array, storage?: KeyStorage, canExport?: boolean): Promise<void>\n\n importKeyEC(keyId: string, privateKey: Uint8Array, publicKey: Uint8Array, storage?: KeyStorage, canExport?: boolean): Promise<void>\n\n importKeyRSA(keyId: string, key: Uint8Array, storage?: KeyStorage, canExport?: boolean): Promise<void>\n\n unloadKeys(): void\n\n unwrapKey(key: Uint8Array, keyId: string, unwrappingKeyId: string, encryptionType: EncryptionType, unwrappedType: UnwrappedKeyType, storage?: KeyStorage, canExport?: boolean): Promise<void>\n\n unwrapKeys(keys: UnwrapKeyMap, storage?: KeyStorage): Promise<void>\n\n decrypt(data: Uint8Array, keyId: string, encryptionType: EncryptionType, storage?: KeyStorage): Promise<Uint8Array>\n\n generateRSAKeyPair(): Promise<{privateKey: Uint8Array; publicKey: Uint8Array}>\n\n generateECKeyPair(): Promise<{privateKey: Uint8Array; publicKey: Uint8Array}>\n\n publicEncrypt(data: Uint8Array, key: string): Uint8Array;\n\n publicEncryptEC(data: Uint8Array, key: Uint8Array, id?: Uint8Array): Promise<Uint8Array>\n\n privateDecrypt(data: Uint8Array, key: Uint8Array): Uint8Array;\n\n privateDecryptEC(data: Uint8Array, privateKey: Uint8Array, publicKey?: Uint8Array, id?: Uint8Array): Promise<Uint8Array>\n\n privateSign(data: Uint8Array, key: string): Promise<Uint8Array>;\n\n wrapKey(keyId: string, wrappingKeyId: string, encryptionType: EncryptionType, storage?: KeyStorage): Promise<Uint8Array>\n\n encrypt(data: Uint8Array, keyId: string, encryptionType: EncryptionType, storage?: KeyStorage): Promise<Uint8Array>\n\n aesGcmEncrypt(data: Uint8Array, key: Uint8Array): Promise<Uint8Array>;\n\n aesGcmDecrypt(data: Uint8Array, key: Uint8Array): Promise<Uint8Array>;\n\n aesCbcEncrypt(data: Uint8Array, key: Uint8Array, usePadding: boolean): Promise<Uint8Array>;\n\n aesCbcDecrypt(data: Uint8Array, key: Uint8Array, usePadding: boolean): Promise<Uint8Array>;\n\n deriveKey(password: KeyWrapper, saltBytes: Uint8Array, iterations: number): Promise<Uint8Array>;\n\n deriveKeyV2(domain: string, password: KeyWrapper, saltBytes: Uint8Array, iterations: number): Promise<Uint8Array>;\n\n calcAuthVerifier(key: Uint8Array): Promise<Uint8Array>;\n\n get(url: string, headers: any): Promise<KeeperHttpResponse>;\n\n post(url: string, request: Uint8Array, headers?: any): Promise<KeeperHttpResponse>;\n\n fileUpload(url: string, uploadParameters: any, data: Uint8Array | Blob): Promise<any>\n\n createCryptoWorker(keyStorage: KeyStorage, options: CryptoWorkerOptions): Promise<CryptoWorkerPool | null>\n\n closeCryptoWorker(): Promise<void>\n\n createWebsocket(url: string): SocketProxy\n\n log(message: string, options: LogOptions): void;\n}\n\nexport interface CryptoTask {\n data: Uint8Array,\n dataId: string,\n keyId: string,\n encryptionType: EncryptionType,\n}\n\nexport interface UnwrapKey extends CryptoTask {\n unwrappedType: UnwrappedKeyType,\n}\n\nexport type UnwrapKeyMap = Record<string, UnwrapKey>\n\nexport type CryptoWorkerOptions = Partial<CryptoWorkerPoolConfig>\n\nexport class KeyWrapper {\n private key: any\n\n static create(key: Uint8Array | any): KeyWrapper {\n const wrapper = new KeyWrapper()\n wrapper.key = key\n return wrapper\n }\n\n public getKey() {\n return this.key\n }\n}\n\nexport type UnwrappedKeyType = 'aes' | 'rsa'\n\nexport type EncryptionType = 'cbc' | 'gcm' | 'rsa' | 'ecc'\n\nexport type KeyStorage = {\n getKeyBytes(keyId: string): Promise<Uint8Array | undefined>\n saveKeyBytes(keyId: string, key: Uint8Array): Promise<void>\n getObject?<T>(key: string): Promise<T | undefined>\n saveObject?<T>(key: string, value: T): Promise<void>\n}\nexport type LogOptions = 'default' | 'noCR' | 'CR'\n\nexport function connectPlatform(p: Platform) {\n platform = p;\n}\n\nexport let platform: Platform;\n","import { EncryptionType, KeyStorage, platform, CryptoTask } from \"./platform\"\n\nexport type CryptoWorkerKeys = Record<string, Uint8Array>\n\nexport type CryptoResults = \n Record<string, Uint8Array>\n\nexport type CryptoWorkerMessage = {\n data: CryptoTask[]\n keys: CryptoWorkerKeys\n}\n\nexport interface CryptoWorkerPoolConfig {\n createWorker(): Promise<CryptoWorker>\n numThreads: number\n getKey: (keyId: string, type: EncryptionType) => Promise<Uint8Array>\n}\n\nexport class CryptoWorkerPool {\n\n private workers: CryptoWorker[] = []\n\n private config: CryptoWorkerPoolConfig\n\n constructor(config: CryptoWorkerPoolConfig) {\n this.config = config\n }\n \n async open() {\n while (this.workers.length < this.config.numThreads) {\n const worker = await this.config.createWorker()\n this.workers.push(worker)\n }\n }\n\n async close() {\n for (let worker of this.workers) {\n await worker.terminate()\n }\n\n this.workers.length = 0\n }\n\n private async getKeys(tasks: CryptoTask[]): Promise<CryptoWorkerKeys> {\n const keys: CryptoWorkerKeys = {}\n\n for (const task of tasks) {\n const {keyId, encryptionType} = task\n if (keys[keyId]) continue\n\n try {\n keys[keyId] = await this.config.getKey(keyId, encryptionType)\n } catch (e) {\n console.error(e)\n }\n }\n\n return keys\n }\n\n async runTasks(tasks: CryptoTask[]): Promise<CryptoResults> {\n // Split into chunks for each worker\n const numberOfItems = tasks.length\n const chunkSize = Math.ceil(numberOfItems / this.workers.length)\n const chunks = this.chunk(tasks, chunkSize)\n\n // Issue concurrent requests\n const chunkedResults = await Promise.all(\n chunks.map(async (chunk, index) => {\n const worker: CryptoWorker = this.workers[index]\n const keys = await this.getKeys(chunk)\n return worker.sendMessage({ \n data: chunk, \n keys \n })\n })\n )\n\n // Merge and return results\n return Object.assign({}, ...chunkedResults) \n }\n\n private chunk<T>(array: T[], chunkSize: number): T[][] {\n const chunks: T[][] = []\n\n while (array.length) {\n // Important note: Array.splice drains the input array,\n // but faster than Array.slice\n chunks.push(array.splice(0, chunkSize))\n }\n\n return chunks\n }\n}\n\nexport interface CryptoWorker {\n \n sendMessage(message: CryptoWorkerMessage): Promise<CryptoResults>\n\n terminate(): Promise<void>\n\n}\n\nexport async function handleCryptoWorkerMessage(message: CryptoWorkerMessage): Promise<CryptoResults> {\n const {data, keys} = message\n const keyStorage: KeyStorage = {\n getKeyBytes: async (keyId) => {\n return keys[keyId]\n },\n saveKeyBytes: async (_keyId, _key) => {\n // unused\n }\n }\n\n let results: CryptoResults = {}\n await Promise.all(data.map(async (task) => {\n const {data, dataId, keyId, encryptionType} = task\n try {\n const keyBytes = await platform.decrypt(data, keyId, encryptionType, keyStorage)\n results[dataId] = keyBytes\n } catch (e: any) {\n console.error(`The key ${dataId} cannot be decrypted (${e.message})`)\n }\n }))\n\n return results\n}","// @ts-nocheck\n// Copyright (c) 2005 Tom Wu\n// All Rights Reserved.\n// See \"LICENSE\" for details.\n\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n// Bits per digit\nvar dbits;\n\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary&0xffffff)==0xefcafe);\n\n// (public) Constructor\nexport function BigInteger(a?,b?,c?) {\n if(a != null)\n if(\"number\" == typeof a) this.fromNumber(a,b,c);\n else if(b == null && \"string\" != typeof a) this.fromString(a,256);\n else this.fromString(a,b);\n}\n\n// convert a (hex) string to a bignum object\nexport function parseBigInt(str,r) {\n return new BigInteger(str,r);\n}\n\n// return new, unset BigInteger\nfunction nbi() { return new BigInteger(); }\n\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i,x,w,j,c,n) {\n while(--n >= 0) {\n var v = x*this[i++]+w[j]+c;\n c = Math.floor(v/0x4000000);\n w[j++] = v&0x3ffffff;\n }\n return c;\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i,x,w,j,c,n) {\n var xl = x&0x7fff, xh = x>>15;\n while(--n >= 0) {\n var l = this[i]&0x7fff;\n var h = this[i++]>>15;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);\n c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n w[j++] = l&0x3fffffff;\n }\n return c;\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i,x,w,j,c,n) {\n var xl = x&0x3fff, xh = x>>14;\n while(--n >= 0) {\n var l = this[i]&0x3fff;\n var h = this[i++]>>14;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x3fff)<<14)+w[j]+c;\n c = (l>>28)+(m>>14)+xh*h;\n w[j++] = l&0xfffffff;\n }\n return c;\n}\nif(j_lm && (typeof(navigator) !== 'undefined') && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n}\nelse if(j_lm && (typeof(navigator) !== 'undefined') && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n}\nelse { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1<<dbits)-1);\nBigInteger.prototype.DV = (1<<dbits);\n\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2,BI_FP);\nBigInteger.prototype.F1 = BI_FP-dbits;\nBigInteger.prototype.F2 = 2*dbits-BI_FP;\n\n// Digit conversions\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nvar BI_RC = new Array();\nvar rr,vv;\nrr = \"0\".charCodeAt(0);\nfor(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;\nrr = \"a\".charCodeAt(0);\nfor(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\nrr = \"A\".charCodeAt(0);\nfor(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\n\nfunction int2char(n) { return BI_RM.charAt(n); }\nfunction intAt(s,i) {\n var c = BI_RC[s.charCodeAt(i)];\n return (c==null)?-1:c;\n}\n\n// (protected) copy this to r\nfunction bnpCopyTo(r) {\n for(var i = this.t-1; i >= 0; --i) r[i] = this[i];\n r.t = this.t;\n r.s = this.s;\n}\n\n// (protected) set from integer value x, -DV <= x < DV\nfunction bnpFromInt(x) {\n this.t = 1;\n this.s = (x<0)?-1:0;\n if(x > 0) this[0] = x;\n else if(x < -1) this[0] = x+this.DV;\n else this.t = 0;\n}\n\n// return bigint initialized to value\nfunction nbv(i) { var r = nbi(); r.fromInt(i); return r; }\n\n// (protected) set from string and radix\nfunction bnpFromString(s,b) {\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 256) k = 8; // byte array\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else { this.fromRadix(s,b); return; }\n this.t = 0;\n this.s = 0;\n var i = s.length, mi = false, sh = 0;\n while(--i >= 0) {\n var x = (k==8)?s[i]&0xff:intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\") mi = true;\n continue;\n }\n mi = false;\n if(sh == 0)\n this[this.t++] = x;\n else if(sh+k > this.DB) {\n this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh;\n this[this.t++] = (x>>(this.DB-sh));\n }\n else\n this[this.t-1] |= x<<sh;\n sh += k;\n if(sh >= this.DB) sh -= this.DB;\n }\n if(k == 8 && (s[0]&0x80) != 0) {\n this.s = -1;\n if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh;\n }\n this.clamp();\n if(mi) ZERO.subTo(this,this);\n}\n\n// (protected) clamp off excess high words\nfunction bnpClamp() {\n var c = this.s&this.DM;\n while(this.t > 0 && this[this.t-1] == c) --this.t;\n}\n\n// (public) return string representation in given radix\nfunction bnToString(b) {\n if(this.s < 0) return \"-\"+this.negate().toString(b);\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else return this.toRadix(b);\n var km = (1<<k)-1, d, m = false, r = \"\", i = this.t;\n var p = this.DB-(i*this.DB)%k;\n if(i-- > 0) {\n if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }\n while(i >= 0) {\n if(p < k) {\n d = (this[i]&((1<<p)-1))<<(k-p);\n d |= this[--i]>>(p+=this.DB-k);\n }\n else {\n d = (this[i]>>(p-=k))&km;\n if(p <= 0) { p += this.DB; --i; }\n }\n if(d > 0) m = true;\n if(m) r += int2char(d);\n }\n }\n return m?r:\"0\";\n}\n\n// (public) -this\nfunction bnNegate() { var r = nbi(); ZERO.subTo(this,r); return r; }\n\n// (public) |this|\nfunction bnAbs() { return (this.s<0)?this.negate():this; }\n\n// (public) return + if this > a, - if this < a, 0 if equal\nfunction bnCompareTo(a) {\n var r = this.s-a.s;\n if(r != 0) return r;\n var i = this.t;\n r = i-a.t;\n if(r != 0) return (this.s<0)?-r:r;\n while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;\n return 0;\n}\n\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1, t;\n if((t=x>>>16) != 0) { x = t; r += 16; }\n if((t=x>>8) != 0) { x = t; r += 8; }\n if((t=x>>4) != 0) { x = t; r += 4; }\n if((t=x>>2) != 0) { x = t; r += 2; }\n if((t=x>>1) != 0) { x = t; r += 1; }\n return r;\n}\n\n// (public) return the number of bits in \"this\"\nfunction bnBitLength() {\n if(this.t <= 0) return 0;\n return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));\n}\n\n// (protected) r = this << n*DB\nfunction bnpDLShiftTo(n,r) {\n var i;\n for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];\n for(i = n-1; i >= 0; --i) r[i] = 0;\n r.t = this.t+n;\n r.s = this.s;\n}\n\n// (protected) r = this >> n*DB\nfunction bnpDRShiftTo(n,r) {\n for(var i = n; i < this.t; ++i) r[i-n] = this[i];\n r.t = Math.max(this.t-n,0);\n r.s = this.s;\n}\n\n// (protected) r = this << n\nfunction bnpLShiftTo(n,r) {\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<<cbs)-1;\n var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i;\n for(i = this.t-1; i >= 0; --i) {\n r[i+ds+1] = (this[i]>>cbs)|c;\n c = (this[i]&bm)<<bs;\n }\n for(i = ds-1; i >= 0; --i) r[i] = 0;\n r[ds] = c;\n r.t = this.t+ds+1;\n r.s = this.s;\n r.clamp();\n}\n\n// (protected) r = this >> n\nfunction bnpRShiftTo(n,r) {\n r.s = this.s;\n var ds = Math.floor(n/this.DB);\n if(ds >= this.t) { r.t = 0; return; }\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<<bs)-1;\n r[0] = this[ds]>>bs;\n for(var i = ds+1; i < this.t; ++i) {\n r[i-ds-1] |= (this[i]&bm)<<cbs;\n r[i-ds] = this[i]>>bs;\n }\n if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<<cbs;\n r.t = this.t-ds;\n r.clamp();\n}\n\n// (protected) r = this - a\nfunction bnpSubTo(a,r) {\n var i = 0, c = 0, m = Math.min(a.t,this.t);\n while(i < m) {\n c += this[i]-a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n if(a.t < this.t) {\n c -= a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c -= a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c<0)?-1:0;\n if(c < -1) r[i++] = this.DV+c;\n else if(c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n}\n\n// (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyTo(a,r) {\n var x = this.abs(), y = a.abs();\n var i = x.t;\n r.t = i+y.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);\n r.s = 0;\n r.clamp();\n if(this.s != a.s) ZERO.subTo(r,r);\n}\n\n// (protected) r = this^2, r != this (HAC 14.16)\nfunction bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2*x.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < x.t-1; ++i) {\n var c = x.am(i,x[i],r,2*i,0,1);\n if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n r[i+x.t] -= x.DV;\n r[i+x.t+1] = 1;\n }\n }\n if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);\n r.s = 0;\n r.clamp();\n}\n\n// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\nfunction bnpDivRemTo(m,q,r) {\n var pm = m.abs();\n if(pm.t <= 0) return;\n var pt = this.abs();\n if(pt.t < pm.t) {\n if(q != null) q.fromInt(0);\n if(r != null) this.copyTo(r);\n return;\n }\n if(r == null) r = nbi();\n var y = nbi(), ts = this.s, ms = m.s;\n var nsh = this.DB-nbits(pm[pm.t-1]);\t// normalize modulus\n if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }\n else { pm.copyTo(y); pt.copyTo(r); }\n var ys = y.t;\n var y0 = y[ys-1];\n if(y0 == 0) return;\n var yt = y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0);\n var d1 = this.FV/yt, d2 = (1<<this.F1)/yt, e = 1<<this.F2;\n var i = r.t, j = i-ys, t = (q==null)?nbi():q;\n y.dlShiftTo(j,t);\n if(r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t,r);\n }\n ONE.dlShiftTo(ys,t);\n t.subTo(y,y);\t// \"negative\" y so we can replace sub with am later\n while(y.t < ys) y[y.t++] = 0;\n while(--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);\n if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) {\t// Try it out\n y.dlShiftTo(j,t);\n r.subTo(t,r);\n while(r[i] < --qd) r.subTo(t,r);\n }\n }\n if(q != null) {\n r.drShiftTo(ys,q);\n if(ts != ms) ZERO.subTo(q,q);\n }\n r.t = ys;\n r.clamp();\n if(nsh > 0) r.rShiftTo(nsh,r);\t// Denormalize remainder\n if(ts < 0) ZERO.subTo(r,r);\n}\n\n// (public) this mod a\nfunction bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a,null,r);\n if(this.s < 0 && r.compareTo(ZERO) > 0) a.subTo(r,r);\n return r;\n}\n\n// Modular reduction using \"classic\" algorithm\nfunction Classic(m) { this.m = m; }\nfunction cConvert(x) {\n if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n else return x;\n}\nfunction cRevert(x) { return x; }\nfunction cReduce(x) { x.divRemTo(this.m,null,x); }\nfunction cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\nfunction cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\nClassic.prototype.convert = cConvert;\nClassic.prototype.revert = cRevert;\nClassic.prototype.reduce = cReduce;\nClassic.prototype.mulTo = cMulTo;\nClassic.prototype.sqrTo = cSqrTo;\n\n// (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\nfunction bnpInvDigit() {\n if(this.t < 1) return 0;\n var x = this[0];\n if((x&1) == 0) return 0;\n var y = x&3;\t\t// y == 1/x mod 2^2\n y = (y*(2-(x&0xf)*y))&0xf;\t// y == 1/x mod 2^4\n y = (y*(2-(x&0xff)*y))&0xff;\t// y == 1/x mod 2^8\n y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;\t// y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y*(2-x*y%this.DV))%this.DV;\t\t// y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y>0)?this.DV-y:-y;\n}\n\n// Montgomery reduction\nfunction Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp&0x7fff;\n this.mph = this.mp>>15;\n this.um = (1<<(m.DB-15))-1;\n this.mt2 = 2*m.t;\n}\n\n// xR mod m\nfunction montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t,r);\n r.divRemTo(this.m,null,r);\n if(x.s < 0 && r.compareTo(ZERO) > 0) this.m.subTo(r,r);\n return r;\n}\n\n// x/R mod m\nfunction montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n}\n\n// x = x/R mod m (HAC 14.32)\nfunction montReduce(x) {\n while(x.t <= this.mt2)\t// pad x so am has enough room later\n x[x.t++] = 0;\n for(var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i]&0x7fff;\n var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i+this.m.t;\n x[j] += this.m.am(0,u0,x,i,0,this.m.t);\n // propagate carry\n while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }\n }\n x.clamp();\n x.drShiftTo(this.m.t,x);\n if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n}\n\n// r = \"x^2/R mod m\"; x != r\nfunction montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n// r = \"xy/R mod m\"; x,y != r\nfunction montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo;\n\n// (protected) true iff this is even\nfunction bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }\n\n// (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\nfunction bnpExp(e,z) {\n if(e > 0xffffffff || e < 1) return ONE;\n var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n g.copyTo(r);\n while(--i >= 0) {\n z.sqrTo(r,r2);\n if((e&(1<<i)) > 0) z.mulTo(r2,g,r);\n else { var t = r; r = r2; r2 = t; }\n }\n return z.revert(r);\n}\n\n// (public) this^e % m, 0 <= e < 2^32\nfunction bnModPowInt(e,m) {\n var z;\n if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n return this.exp(e,z);\n}\n\n\n// jsbn2\n\n// Extended JavaScript BN functions, required for RSA private ops.\n\n// Version 1.1: new BigInteger(\"0\", 10) returns \"proper\" zero\n// Version 1.2: square() API, isProbablePrime fix\n\n// (public)\nfunction bnClone() { var r = nbi(); this.copyTo(r); return r; }\n\n// (public) return value as integer\nfunction bnIntValue() {\n if(this.s < 0) {\n if(this.t == 1) return this[0]-this.DV;\n else if(this.t == 0) return -1;\n }\n else if(this.t == 1) return this[0];\n else if(this.t == 0) return 0;\n // assumes 16 < DB < 32\n return ((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0];\n}\n\n// (public) return value as byte\nfunction bnByteValue() { return (this.t==0)?this.s:(this[0]<<24)>>24; }\n\n// (public) return value as short (assumes DB>=16)\nfunction bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; }\n\n// (protected) return x s.t. r^x < DV\nfunction bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }\n\n// (public) 0 if this == 0, 1 if this > 0\nfunction bnSigNum() {\n if(this.s < 0) return -1;\n else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;\n else return 1;\n}\n\n// (protected) convert to radix string\nfunction bnpToRadix(b) {\n if(b == null) b = 10;\n if(this.signum() == 0 || b < 2 || b > 36) return \"0\";\n var cs = this.chunkSize(b);\n var a = Math.pow(b,cs);\n var d = nbv(a), y = nbi(), z = nbi(), r = \"\";\n this.divRemTo(d,y,z);\n while(y.signum() > 0) {\n r = (a+z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d,y,z);\n }\n return z.intValue().toString(b) + r;\n}\n\n// (protected) convert from radix string\nfunction bnpFromRadix(s,b) {\n this.fromInt(0);\n if(b == null) b = 10;\n var cs = this.chunkSize(b);\n var d = Math.pow(b,cs), mi = false, j = 0, w = 0;\n for(var i = 0; i < s.length; ++i) {\n var x = intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\" && this.signum() == 0) mi = true;\n continue;\n }\n w = b*w+x;\n if(++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w,0);\n j = 0;\n w = 0;\n }\n }\n if(j > 0) {\n this.dMultiply(Math.pow(b,j));\n this.dAddOffset(w,0);\n }\n if(mi) ZERO.subTo(this,this);\n}\n\n// (protected) alternate constructor\nfunction bnpFromNumber(a,b,c) {\n if(\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if(a < 2) this.fromInt(1);\n else {\n this.fromNumber(a,c);\n if(!this.testBit(a-1))\t// force MSB set\n this.bitwiseTo(ONE.shiftLeft(a-1),op_or,this);\n if(this.isEven()) this.dAddOffset(1,0); // force odd\n while(!this.isProbablePrime(b)) {\n this.dAddOffset(2,0);\n if(this.bitLength() > a) this.subTo(ONE.shiftLeft(a-1),this);\n }\n }\n }\n else {\n // new BigInteger(int,RNG)\n var x = new Array(), t = a&7;\n x.length = (a>>3)+1;\n b.nextBytes(x);\n if(t > 0) x[0] &= ((1<<t)-1); else x[0] = 0;\n this.fromString(x,256);\n }\n}\n\n// (public) convert to bigendian byte array\nfunction bnToByteArray() {\n var i = this.t, r = new Array();\n r[0] = this.s;\n var p = this.DB-(i*this.DB)%8, d, k = 0;\n if(i-- > 0) {\n if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p)\n r[k++] = d|(this.s<<(this.DB-p));\n while(i >= 0) {\n if(p < 8) {\n d = (this[i]&((1<<p)-1))<<(8-p);\n d |= this[--i]>>(p+=this.DB-8);\n }\n else {\n d = (this[i]>>(p-=8))&0xff;\n if(p <= 0) { p += this.DB; --i; }\n }\n if((d&0x80) != 0) d |= -256;\n if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;\n if(k > 0 || d != this.s) r[k++] = d;\n }\n }\n return r;\n}\n\nfunction bnEquals(a) { return(this.compareTo(a)==0); }\nfunction bnMin(a) { return(this.compareTo(a)<0)?this:a; }\nfunction bnMax(a) { return(this.compareTo(a)>0)?this:a; }\n\n// (protected) r = this op a (bitwise)\nfunction bnpBitwiseTo(a,op,r) {\n var i, f, m = Math.min(a.t,this.t);\n for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]);\n if(a.t < this.t) {\n f = a.s&this.DM;\n for(i = m; i < this.t; ++i) r[i] = op(this[i],f);\n r.t = this.t;\n }\n else {\n f = this.s&this.DM;\n for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);\n r.t = a.t;\n }\n r.s = op(this.s,a.s);\n r.clamp();\n}\n\n// (public) this & a\nfunction op_and(x,y) { return x&y; }\nfunction bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }\n\n// (public) this | a\nfunction op_or(x,y) { return x|y; }\nfunction bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }\n\n// (public) this ^ a\nfunction op_xor(x,y) { return x^y; }\nfunction bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }\n\n// (public) this & ~a\nfunction op_andnot(x,y) { return x&~y; }\nfunction bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }\n\n// (public) ~this\nfunction bnNot() {\n var r = nbi();\n for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i];\n r.t = this.t;\n r.s = ~this.s;\n return r;\n}\n\n// (public) this << n\nfunction bnShiftLeft(n) {\n var r = nbi();\n if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\n return r;\n}\n\n// (public) this >> n\nfunction bnShiftRight(n) {\n var r = nbi();\n if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\n return r;\n}\n\n// return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\n if(x == 0) return -1;\n var r = 0;\n if((x&0xffff) == 0) { x >>= 16; r += 16; }\n if((x&0xff) == 0) { x >>= 8; r += 8; }\n if((x&0xf) == 0) { x >>= 4; r += 4; }\n if((x&3) == 0) { x >>= 2; r += 2; }\n if((x&1) == 0) ++r;\n return r;\n}\n\n// (public) returns index of lowest 1-bit (or -1 if none)\nfunction bnGetLowestSetBit() {\n for(var i = 0; i < this.t; ++i)\n if(this[i] != 0) return i*this.DB+lbit(this[i]);\n if(this.s < 0) return this.t*this.DB;\n return -1;\n}\n\n// return number of 1 bits in x\nfunction cbit(x) {\n var r = 0;\n while(x != 0) { x &= x-1; ++r; }\n return r;\n}\n\n// (public) return number of set bits\nfunction bnBitCount() {\n var r = 0, x = this.s&this.DM;\n for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x);\n return r;\n}\n\n// (public) true iff nth bit is set\nfunction bnTestBit(n) {\n var j = Math.floor(n/this.DB);\n if(j >= this.t) return(this.s!=0);\n return((this[j]&(1<<(n%this.DB)))!=0);\n}\n\n// (protected) this op (1<<n)\nfunction bnpChangeBit(n,op) {\n var r = ONE.shiftLeft(n);\n this.bitwiseTo(r,op,r);\n return r;\n}\n\n// (public) this | (1<<n)\nfunction bnSetBit(n) { return this.changeBit(n,op_or); }\n\n// (public) this & ~(1<<n)\nfunction bnClearBit(n) { return this.changeBit(n,op_andnot); }\n\n// (public) this ^ (1<<n)\nfunction bnFlipBit(n) { return this.changeBit(n,op_xor); }\n\n// (protected) r = this + a\nfunction bnpAddTo(a,r) {\n var i = 0, c = 0, m = Math.min(a.t,this.t);\n while(i < m) {\n c += this[i]+a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n if(a.t < this.t) {\n c += a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c += a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c<0)?-1:0;\n if(c > 0) r[i++] = c;\n else if(c < -1) r[i++] = this.DV+c;\n r.t = i;\n r.clamp();\n}\n\n// (public) this + a\nfunction bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }\n\n// (public) this - a\nfunction bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }\n\n// (public) this * a\nfunction bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }\n\n// (public) this^2\nfunction bnSquare() { var r = nbi(); this.squareTo(r); return r; }\n\n// (public) this / a\nfunction bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }\n\n// (public) this % a\nfunction bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }\n\n// (public) [this/a,this%a]\nfunction bnDivideAndRemainder(a) {\n var q = nbi(), r = nbi();\n this.divRemTo(a,q,r);\n return new Array(q,r);\n}\n\n// (protected) this *= n, this >= 0, 1 < n < DV\nfunction bnpDMultiply(n) {\n this[this.t] = this.am(0,n-1,this,0,0,this.t);\n ++this.t;\n this.clamp();\n}\n\n// (protected) this += n << w words, this >= 0\nfunction bnpDAddOffset(n,w) {\n if(n == 0) return;\n while(this.t <= w) this[this.t++] = 0;\n this[w] += n;\n while(this[w] >= this.DV) {\n this[w] -= this.DV;\n if(++w >= this.t) this[this.t++] = 0;\n ++this[w];\n }\n}\n\n// A \"null\" reducer\nfunction NullExp() {}\nfunction nNop(x) { return x; }\nfunction nMulTo(x,y,r) { x.multiplyTo(y,r); }\nfunction nSqrTo(x,r) { x.squareTo(r); }\n\nNullExp.prototype.convert = nNop;\nNullExp.prototype.revert = nNop;\nNullExp.prototype.mulTo = nMulTo;\nNullExp.prototype.sqrTo = nSqrTo;\n\n// (public) this^e\nfunction bnPow(e) { return this.exp(e,new NullExp()); }\n\n// (protected) r = lower n words of \"this * a\", a.t <= n\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyLowerTo(a,n,r) {\n var i = Math.min(this.t+a.t,n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while(i > 0) r[--i] = 0;\n var j;\n for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t);\n for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i);\n r.clamp();\n}\n\n// (protected) r = \"this * a\" without lower n words, n > 0\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyUpperTo(a,n,r) {\n --n;\n var i = r.t = this.t+a.t-n;\n r.s = 0; // assumes a,this >= 0\n while(--i >= 0) r[i] = 0;\n for(i = Math.max(n-this.t,0); i < a.t; ++i)\n r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n);\n r.clamp();\n r.drShiftTo(1,r);\n}\n\n// Barrett modular reduction\nfunction Barrett(m) {\n // setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n ONE.dlShiftTo(2*m.t,this.r2);\n this.mu = this.r2.divide(m);\n this.m = m;\n}\n\nfunction barrettConvert(x) {\n if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\n else if(x.compareTo(this.m) < 0) return x;\n else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }\n}\n\nfunction barrettRevert(x) { return x; }\n\n// x = x mod m (HAC 14.42)\nfunction barrettReduce(x) {\n x.drShiftTo(this.m.t-1,this.r2);\n if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\n this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\n this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\n while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\n x.subTo(this.r2,x);\n while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n}\n\n// r = x^2 mod m; x != r\nfunction barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n// r = x*y mod m; x,y != r\nfunction barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\nBarrett.prototype.convert = barrettConvert;\nBarrett.prototype.revert = barrettRevert;\nBarrett.prototype.reduce = barrettReduce;\nBarrett.prototype.mulTo = barrettMulTo;\nBarrett.prototype.sqrTo = barrettSqrTo;\n\n// (public) this^e % m (HAC 14.85)\nfunction bnModPow(e,m) {\n var i = e.bitLength(), k, r = nbv(1), z;\n if(i <= 0) return r;\n else if(i < 18) k = 1;\n else if(i < 48) k = 3;\n else if(i < 144) k = 4;\n else if(i < 768) k = 5;\n else k = 6;\n if(i < 8)\n z = new Classic(m);\n else if(m.isEven())\n z = new Barrett(m);\n else\n z = new Montgomery(m);\n\n // precomputation\n var g = new Array(), n = 3, k1 = k-1, km = (1<<k)-1;\n g[1] = z.convert(this);\n if(k > 1) {\n var g2 = nbi();\n z.sqrTo(g[1],g2);\n while(n <= km) {\n g[n] = nbi();\n z.mulTo(g2,g[n-2],g[n]);\n n += 2;\n }\n }\n\n var j = e.t-1, w, is1 = true, r2 = nbi(), t;\n i = nbits(e[j])-1;\n while(j >= 0) {\n if(i >= k1) w = (e[j]>>(i-k1))&km;\n else {\n w = (e[j]&((1<<(i+1))-1))<<(k1-i);\n if(j > 0) w |= e[j-1]>>(this.DB+i-k1);\n }\n\n n = k;\n while((w&1) == 0) { w >>= 1; --n; }\n if((i -= n) < 0) { i += this.DB; --j; }\n if(is1) {\t// ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }\n if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }\n z.mulTo(r2,g[w],r);\n }\n\n while(j >= 0 && (e[j]&(1<<i)) == 0) {\n z.sqrTo(r,r2); t = r; r = r2; r2 = t;\n if(--i < 0) { i = this.DB-1; --j; }\n }\n }\n return z.revert(r);\n}\n\n// (public) gcd(this,a) (HAC 14.54)\nfunction bnGCD(a) {\n var x = (this.s<0)?this.negate():this.clone();\n var y = (a.s<0)?a.negate():a.clone();\n if(x.compareTo(y) < 0) { var t = x; x = y; y = t; }\n var i = x.getLowestSetBit(), g = y.getLowestSetBit();\n if(g < 0) return x;\n if(i < g) g = i;\n if(g > 0) {\n x.rShiftTo(g,x);\n y.rShiftTo(g,y);\n }\n while(x.signum() > 0) {\n if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);\n if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);\n if(x.compareTo(y) >= 0) {\n x.subTo(y,x);\n x.rShiftTo(1,x);\n }\n else {\n y.subTo(x,y);\n y.rShiftTo(1,y);\n }\n }\n if(g > 0) y.lShiftTo(g,y);\n return y;\n}\n\n// (protected) this % n, n < 2^26\nfunction bnpModInt(n) {\n if(n <= 0) return 0;\n var d = this.DV%n, r = (this.s<0)?n-1:0;\n if(this.t > 0)\n if(d == 0) r = this[0]%n;\n else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n;\n return r;\n}\n\n// (public) 1/this % m (HAC 14.61)\nfunction bnModInverse(m) {\n var ac = m.isEven();\n if((this.isEven() && ac) || m.signum() == 0) return ZERO;\n var u = m.clone(), v = this.clone();\n var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\n while(u.signum() != 0) {\n while(u.isEven()) {\n u.rShiftTo(1,u);\n if(ac) {\n if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }\n a.rShiftTo(1,a);\n }\n else if(!b.isEven()) b.subTo(m,b);\n b.rShiftTo(1,b);\n }\n while(v.isEven()) {\n v.rShiftTo(1,v);\n if(ac) {\n if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }\n c.rShiftTo(1,c);\n }\n else if(!d.isEven()) d.subTo(m,d);\n d.rShiftTo(1,d);\n }\n if(u.compareTo(v) >= 0) {\n u.subTo(v,u);\n if(ac) a.subTo(c,a);\n b.subTo(d,b);\n }\n else {\n v.subTo(u,v);\n if(ac) c.subTo(a,c);\n d.subTo(b,d);\n }\n }\n if(v.compareTo(ONE) != 0) return ZERO;\n if(d.compareTo(m) >= 0) return d.subtract(m);\n if(d.signum() < 0) d.addTo(m,d); else return d;\n if(d.signum() < 0) return d.add(m); else return d;\n}\n\nvar lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];\nvar lplim = (1<<26)/lowprimes[lowprimes.length-1];\n\n// (public) test primality with certainty >= 1-.5^t\nfunction bnIsProbablePrime(t) {\n var i, x = this.abs();\n if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) {\n for(i = 0; i < lowprimes.length; ++i)\n if(x[0] == lowprimes[i]) return true;\n return false;\n }\n if(x.isEven()) return false;\n i = 1;\n while(i < lowprimes.length) {\n var m = lowprimes[i], j = i+1;\n while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];\n m = x.modInt(m);\n while(i < j) if(m%lowprimes[i++] == 0) return false;\n }\n return x.millerRabin(t);\n}\n\n// (protected) true if probably prime (HAC 4.24, Miller-Rabin)\nfunction bnpMillerRabin(t) {\n var n1 = this.subtract(ONE);\n var k = n1.getLowestSetBit();\n if(k <= 0) return false;\n var r = n1.shiftRight(k);\n t = (t+1)>>1;\n if(t > lowprimes.length) t = lowprimes.length;\n var a = nbi();\n for(var i = 0; i < t; ++i) {\n //Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);\n var y = a.modPow(r,this);\n if(y.compareTo(ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while(j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2,this);\n if(y.compareTo(ONE) == 0) return false;\n }\n if(y.compareTo(n1) != 0) return false;\n }\n }\n return true;\n}\n\n\n// protected\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.isEven = bnpIsEven;\nBigInteger.prototype.exp = bnpExp;\n\n// public\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.modPowInt = bnModPowInt;\n\nconst ZERO = nbv(0);\nconst ONE = nbv(1);\n\n// jsbn2\n\n// protected\nBigInteger.prototype.chunkSize = bnpChunkSize;\nBigInteger.prototype.toRadix = bnpToRadix;\nBigInteger.prototype.fromRadix = bnpFromRadix;\nBigInteger.prototype.fromNumber = bnpFromNumber;\nBigInteger.prototype.bitwiseTo = bnpBitwiseTo;\nBigInteger.prototype.changeBit = bnpChangeBit;\nBigInteger.prototype.addTo = bnpAddTo;\nBigInteger.prototype.dMultiply = bnpDMultiply;\nBigInteger.prototype.dAddOffset = bnpDAddOffset;\nBigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\nBigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\nBigInteger.prototype.modInt = bnpModInt;\nBigInteger.prototype.millerRabin = bnpMillerRabin;\n\n// public\nBigInteger.prototype.clone = bnClone;\nBigInteger.prototype.intValue = bnIntValue;\nBigInteger.prototype.byteValue = bnByteValue;\nBigInteger.prototype.shortValue = bnShortValue;\nBigInteger.prototype.signum = bnSigNum;\nBigInteger.prototype.toByteArray = bnToByteArray;\nBigInteger.prototype.equals = bnEquals;\nBigInteger.prototype.min = bnMin;\nBigInteger.prototype.max = bnMax;\nBigInteger.prototype.and = bnAnd;\nBigInteger.prototype.or = bnOr;\nBigInteger.prototype.xor = bnXor;\nBigInteger.prototype.andNot = bnAndNot;\nBigInteger.prototype.not = bnNot;\nBigInteger.prototype.shiftLeft = bnShiftLeft;\nBigInteger.prototype.shiftRight = bnShiftRight;\nBigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\nBigInteger.prototype.bitCount = bnBitCount;\nBigInteger.prototype.testBit = bnTestBit;\nBigInteger.prototype.setBit = bnSetBit;\nBigInteger.prototype.clearBit = bnClearBit;\nBigInteger.prototype.flipBit = bnFlipBit;\nBigInteger.prototype.add = bnAdd;\nBigInteger.prototype.subtract = bnSubtract;\nBigInteger.prototype.multiply = bnMultiply;\nBigInteger.prototype.divide = bnDivide;\nBigInteger.prototype.remainder = bnRemainder;\nBigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\nBigInteger.prototype.modPow = bnModPow;\nBigInteger.prototype.modInverse = bnModInverse;\nBigInteger.prototype.pow = bnPow;\nBigInteger.prototype.gcd = bnGCD;\nBigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n\n// JSBN-specific extension\nBigInteger.prototype.square = bnSquare;\n","/*! asn1hex-1.1.js (c) 2012 Kenji Urushima | kjur.github.com/jsrsasign/license\n */\n//\n// asn1hex.js - Hexadecimal represented ASN.1 string library\n//\n// version: 1.1 (09-May-2012)\n//\n// Copyright (c) 2010-2012 Kenji Urushima (kenji.urushima@gmail.com)\n//\n// This software is licensed under the terms of the MIT License.\n// http://kjur.github.com/jsrsasign/license/\n//\n// The above copyright and license notice shall be\n// included in all copies or substantial portions of the Software.\n//\n// Depends on:\n//\n\n// MEMO:\n// f('3082025b02...', 2) ... 82025b ... 3bytes\n// f('020100', 2) ... 01 ... 1byte\n// f('0203001...', 2) ... 03 ... 1byte\n// f('02818003...', 2) ... 8180 ... 2bytes\n// f('3080....0000', 2) ... 80 ... -1\n//\n// Requirements:\n// - ASN.1 type octet length MUST be 1.\n// (i.e. ASN.1 primitives like SET, SEQUENCE, INTEGER, OCTETSTRING ...)\n// -\n\n/**\n * @fileOverview\n * @name asn1hex-1.1.js\n * @author Kenji Urushima kenji.urushima@gmail.com\n * @version 1.1\n * @license <a href=\"http://kjur.github.io/jsrsasign/license/\">MIT License</a>\n */\n\nimport {parseBigInt} from './jsbn';\n\n/**\n * get byte length for ASN.1 L(length) bytes\n * @name getByteLengthOfL_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} s hexadecimal string of ASN.1 DER encoded data\n * @param {Number} pos string index\n * @return byte length for ASN.1 L(length) bytes\n */\nfunction _asnhex_getByteLengthOfL_AtObj(s, pos) {\n if (s.substring(pos + 2, pos + 3) != '8') return 1;\n var i = parseInt(s.substring(pos + 3, pos + 4));\n if (i == 0) return -1; \t\t// length octet '80' indefinite length\n if (0 < i && i < 10) return i + 1;\t// including '8?' octet;\n return -2;\t\t\t\t// malformed format\n}\n\n\n/**\n * get hexadecimal string for ASN.1 L(length) bytes\n * @name getHexOfL_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} s hexadecimal string of ASN.1 DER encoded data\n * @param {Number} pos string index\n * @return {String} hexadecimal string for ASN.1 L(length) bytes\n */\nfunction _asnhex_getHexOfL_AtObj(s, pos) {\n var len = _asnhex_getByteLengthOfL_AtObj(s, pos);\n if (len < 1) return '';\n return s.substring(pos + 2, pos + 2 + len * 2);\n}\n\n//\n// getting ASN.1 length value at the position 'idx' of\n// hexa decimal string 's'.\n//\n// f('3082025b02...', 0) ... 82025b ... ???\n// f('020100', 0) ... 01 ... 1\n// f('0203001...', 0) ... 03 ... 3\n// f('02818003...', 0) ... 8180 ... 128\n/**\n * get integer value of ASN.1 length for ASN.1 data\n * @name getIntOfL_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} s hexadecimal string of ASN.1 DER encoded data\n * @param {Number} pos string index\n * @return ASN.1 L(length) integer value\n */\nfunction _asnhex_getIntOfL_AtObj(s, pos) {\n var hLength = _asnhex_getHexOfL_AtObj(s, pos);\n if (hLength == '') return -1;\n var bi;\n if (parseInt(hLength.substring(0, 1)) < 8) {\n bi = parseBigInt(hLength, 16);\n } else {\n bi = parseBigInt(hLength.substring(2), 16);\n }\n return bi.intValue();\n}\n\n/**\n * get ASN.1 value starting string position for ASN.1 object refered by index 'idx'.\n * @name getStartPosOfV_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} s hexadecimal string of ASN.1 DER encoded data\n * @param {Number} pos string index\n */\nfunction _asnhex_getStartPosOfV_AtObj(s, pos) {\n var l_len = _asnhex_getByteLengthOfL_AtObj(s, pos);\n if (l_len < 0) return l_len;\n return pos + (l_len + 1) * 2;\n}\n\n/**\n * get hexadecimal string of ASN.1 V(value)\n * @name getHexOfV_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} s hexadecimal string of ASN.1 DER encoded data\n * @param {Number} pos string index\n * @return {String} hexadecimal string of ASN.1 value.\n */\nexport function _asnhex_getHexOfV_AtObj(s, pos) {\n var pos1 = _asnhex_getStartPosOfV_AtObj(s, pos);\n var len = _asnhex_getIntOfL_AtObj(s, pos);\n return s.substring(pos1, pos1 + len * 2);\n}\n\n/**\n * get hexadecimal string of ASN.1 TLV at\n * @name getHexOfTLV_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} s hexadecimal string of ASN.1 DER encoded data\n * @param {Number} pos string index\n * @return {String} hexadecimal string of ASN.1 TLV.\n * @since 1.1\n */\nfunction _asnhex_getHexOfTLV_AtObj(s, pos) {\n var hT = s.substr(pos, 2);\n var hL = _asnhex_getHexOfL_AtObj(s, pos);\n var hV = _asnhex_getHexOfV_AtObj(s, pos);\n return hT + hL + hV;\n}\n\n/**\n * get next sibling starting index for ASN.1 object string\n * @name getPosOfNextSibling_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} s hexadecimal string of ASN.1 DER encoded data\n * @param {Number} pos string index\n * @return next sibling starting index for ASN.1 object string\n */\nfunction _asnhex_getPosOfNextSibling_AtObj(s, pos) {\n var pos1 = _asnhex_getStartPosOfV_AtObj(s, pos);\n var len = _asnhex_getIntOfL_AtObj(s, pos);\n return pos1 + len * 2;\n}\n\n/**\n * get array of indexes of child ASN.1 objects\n * @name getPosArrayOfChildren_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} s hexadecimal string of ASN.1 DER encoded data\n * @param {Number} start string index of ASN.1 object\n * @return {Array of Number} array of indexes for childen of ASN.1 objects\n */\nexport function _asnhex_getPosArrayOfChildren_AtObj(h, pos) {\n var a = new Array();\n var p0 = _asnhex_getStartPosOfV_AtObj(h, pos);\n a.push(p0);\n\n var len = _asnhex_getIntOfL_AtObj(h, pos);\n var p = p0;\n var k = 0;\n while (1) {\n var pNext = _asnhex_getPosOfNextSibling_AtObj(h, p);\n if (pNext == null || (pNext - p0 >= (len * 2))) break;\n if (k >= 200) break;\n\n a.push(pNext);\n p = pNext;\n\n k++;\n }\n\n return a;\n}\n\n/**\n * get string index of nth child object of ASN.1 object refered by h, idx\n * @name getNthChildIndex_AtObj\n * @memberOf ASN1HEX\n * @function\n * @param {String} h hexadecimal string of ASN.1 DER encoded data\n * @param {Number} idx start string index of ASN.1 object\n * @param {Number} nth for child\n * @return {Number} string index of nth child.\n * @since 1.1\n */\nfunction _asnhex_getNthChildIndex_AtObj(h, idx, nth) {\n var a = _asnhex_getPosArrayOfChildren_AtObj(h, idx);\n return a[nth];\n}\n\n// ========== decendant methods ==============================\n\n/**\n * get string index of nth child object of ASN.1 object refered by h, idx\n * @name getDecendantIndexByNthList\n * @memberOf ASN1HEX\n * @function\n * @param {String} h hexadecimal string of ASN.1 DER encoded data\n * @param {Number} currentIndex start string index of ASN.1 object\n * @param {Array of Number} nthList array list of nth\n * @return {Number} string index refered by nthList\n * @since 1.1\n */\nfunction _asnhex_getDecendantIndexByNthList(h, currentIndex, nthList) {\n if (nthList.length == 0) {\n return currentIndex;\n }\n var firstNth = nthList.shift();\n var a = _asnhex_getPosArrayOfChildren_AtObj(h, currentIndex);\n return _asnhex_getDecendantIndexByNthList(h, a[firstNth], nthList);\n}\n\n/**\n * get hexadecimal string of ASN.1 TLV refered by current index and nth index list.\n * @name getDecendantHexTLVByNthList\n * @memberOf ASN1HEX\n * @function\n * @param {String} h hexadecimal string of ASN.1 DER encoded data\n * @param {Number} currentIndex start string index of ASN.1 object\n * @param {Array of Number} nthList array list of nth\n * @return {Number} hexadecimal string of ASN.1 TLV refered by nthList\n * @since 1.1\n */\nfunction _asnhex_getDecendantHexTLVByNthList(h, currentIndex, nthList) {\n var idx = _asnhex_getDecendantIndexByNthList(h, currentIndex, nthList);\n return _asnhex_getHexOfTLV_AtObj(h, idx);\n}\n\n/**\n * get hexadecimal string of ASN.1 V refered by current index and nth index list.\n * @name getDecendantHexVByNthList\n * @memberOf ASN1HEX\n * @function\n * @param {String} h hexadecimal string of ASN.1 DER encoded data\n * @param {Number} currentIndex start string index of ASN.1 object\n * @param {Array of Number} nthList array list of nth\n * @return {Number} hexadecimal string of ASN.1 V refered by nthList\n * @since 1.1\n */\nfunction _asnhex_getDecendantHexVByNthList(h, currentIndex, nthList) {\n var idx = _asnhex_getDecendantIndexByNthList(h, currentIndex, nthList);\n return _asnhex_getHexOfV_AtObj(h, idx);\n}\n\nfunction _rsapem_getPosArrayOfChildrenFromHex(hPrivateKey) {\n var a = new Array();\n var v1 = _asnhex_getStartPosOfV_AtObj(hPrivateKey, 0);\n var n1 = _asnhex_getPosOfNextSibling_AtObj(hPrivateKey, v1);\n var e1 = _asnhex_getPosOfNextSibling_AtObj(hPrivateKey, n1);\n var d1 = _asnhex_getPosOfNextSibling_AtObj(hPrivateKey, e1);\n var p1 = _asnhex_getPosOfNextSibling_AtObj(hPrivateKey, d1);\n var q1 = _asnhex_getPosOfNextSibling_AtObj(hPrivateKey, p1);\n var dp1 = _asnhex_getPosOfNextSibling_AtObj(hPrivateKey, q1);\n var dq1 = _asnhex_getPosOfNextSibling_AtObj(hPrivateKey, dp1);\n var co1 = _asnhex_getPosOfNextSibling_AtObj(hPrivateKey, dq1);\n a.push(v1, n1, e1, d1, p1, q1, dp1, dq1, co1);\n return a;\n}\n\nexport function _rsapem_getHexValueArrayOfChildrenFromHex(hPrivateKey) {\n var posArray = _rsapem_getPosArrayOfChildrenFromHex(hPrivateKey);\n\n var v = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[0]);\n var n = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[1]);\n var e = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[2]);\n var d = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[3]);\n var p = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[4]);\n var q = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[5]);\n var dp = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[6]);\n var dq = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[7]);\n var co = _asnhex_getHexOfV_AtObj(hPrivateKey, posArray[8]);\n var a = new Array();\n a.push(v, n, e, d, p, q, dp, dq, co);\n return a;\n}\n\n","// Random number generator - requires a PRNG backend, e.g. prng4.js\n\n// For best results, put code like\n// <body onClick='rng_seed_time();' onKeyPress='rng_seed_time();'>\n// in your main HTML document.\n\nfunction rng_get_bytes(ba) {\n let data = new Uint8Array(ba.length);\n crypto.getRandomValues(data);\n for(let i = 0; i < ba.length; ++i) ba[i] = data[i];\n}\n\nexport function SecureRandom() {}\n\nSecureRandom.prototype.nextBytes = rng_get_bytes;\n","// @ts-nocheck\n\nimport {BigInteger, parseBigInt} from \"./jsbn\";\nimport {SecureRandom} from \"./rng\";\nimport {_rsapem_getHexValueArrayOfChildrenFromHex} from './asn1hex';\n// Depends on jsbn.js and rng.js\n\n// Version 1.1: support utf-8 encoding in pkcs1pad2\n\nfunction linebrk(s,n) {\n var ret = \"\";\n var i = 0;\n while(i + n < s.length) {\n ret += s.substring(i,i+n) + \"\\n\";\n i += n;\n }\n return ret + s.substring(i,s.length);\n}\n\nfunction byte2Hex(b) {\n if(b < 0x10)\n return \"0\" + b.toString(16);\n else\n return b.toString(16);\n}\n\n// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint\nfunction pkcs1pad2(s,n) {\n if(n < s.length + 11) { // TODO: fix for utf-8\n alert(\"Message too long for RSA\");\n return null;\n }\n var ba = new Array();\n var i = s.length - 1;\n while(i >= 0 && n > 0) {\n var c = s.charCodeAt(i--);\n if(c < 128) { // encode using utf-8\n ba[--n] = c;\n }\n else if((c > 127) && (c < 2048)) {\n ba[--n] = (c & 63) | 128;\n ba[--n] = (c >> 6) | 192;\n }\n else {\n ba[--n] = (c & 63) | 128;\n ba[--n] = ((c >> 6) & 63) | 128;\n ba[--n] = (c >> 12) | 224;\n }\n }\n ba[--n] = 0;\n var rng = new SecureRandom();\n var x = new Array();\n while(n > 2) { // random non-zero pad\n x[0] = 0;\n while(x[0] == 0) rng.nextBytes(x);\n ba[--n] = x[0];\n }\n ba[--n] = 2;\n ba[--n] = 0;\n return new BigInteger(ba);\n}\n\n// \"empty\" RSA key constructor\nexport function RSAKey() {\n this.n = null;\n this.e = 0;\n this.d = null;\n this.p = null;\n this.q = null;\n this.dmp1 = null;\n this.dmq1 = null;\n this.coeff = null;\n}\n\n// Set the public key fields N and e from hex strings\nfunction RSASetPublic(N,E) {\n if(N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = parseBigInt(N,16);\n this.e = parseInt(E,16);\n }\n else\n alert(\"Invalid RSA public key\");\n}\n\n// Perform raw public operation on \"x\": return x^e (mod n)\nfunction RSADoPublic(x) {\n return x.modPowInt(this.e, this.n);\n}\n\nfunction RSADoPrivate(x) {\n if(this.p == null || this.q == null)\n return x.modPow(this.d, this.n);\n\n // TODO: re-calculate any missing CRT params\n var xp = x.mod(this.p).modPow(this.dmp1, this.p);\n var xq = x.mod(this.q).modPow(this.dmq1, this.q);\n\n while(xp.compareTo(xq) < 0)\n xp = xp.add(this.p);\n return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);\n}\n\n// Return the PKCS#1 RSA encryption of \"text\" as an even-length hex string\nfunction RSAEncrypt(text) {\n var m = pkcs1pad2(text,(this.n.bitLength()+7)>>3);\n if(m == null) return null;\n var c = this.doPublic(m);\n if(c == null) return null;\n var h = c.toString(16);\n if((h.length & 1) == 0) return h; else return \"0\" + h;\n}\n\n// Return the PKCS#1 RSA encryption of \"text\" as a Base64-encoded string\n//function RSAEncryptB64(text) {\n// var h = this.encrypt(text);\n// if(h) return hex2b64(h); else return null;\n//}\n\n\n// Binary safe pkcs1 type 2 padding\nfunction pkcs1pad2hex(hexPlaintext,n) {\n if(n < hexPlaintext.length/2 + 11) {\n alert(\"Message too long for RSA\");\n return null;\n }\n var ba = new Array();\n var i = hexPlaintext.length;\n while(i >= 2 && n > 0) {\n ba[--n] = parseInt(hexPlaintext.slice(i-2, i), 16);\n i -= 2;\n }\n ba[--n] = 0;\n var rng = new SecureRandom();\n var x = new Array();\n while(n > 2) { // random non-zero pad\n x[0] = 0;\n while(x[0] == 0) rng.nextBytes(x);\n ba[--n] = x[0];\n }\n ba[--n] = 2;\n ba[--n] = 0;\n return new BigInteger(ba);\n}\n\n//Binary safe pkcs1 type 2 un-padding\nfunction pkcs1unpad2hex(d,n) {\n var b = d.toByteArray();\n var i = 0;\n while(i < b.length && b[i] == 0) ++i;\n if(b.length-i != n-1 || b[i] != 2)\n return null;\n ++i;\n while(b[i] != 0)\n if(++i >= b.length) return null;\n var ret = \"\";\n while(++i < b.length) {\n var c = b[i] & 255;\n ret += (c < 16) ? '0' + c.toString(16) : c.toString(16);\n }\n return ret;\n}\n\n/**\n * Generates a ASN.1 Hex string.\n * @param {boolean} include_private Set to true to include the private bits as well.\n * @returns\n */\nfunction RSAtoASN1Hex (include_private) {\n var v = asn('00');\n var n = asn(this.n.toString(16));\n var e = asn(this.e.toString(16));\n var d = asn(this.d.toString(16));\n var p = asn(this.p.toString(16));\n var q = asn(this.q.toString(16));\n var dmp1 = asn(this.dmp1.toString(16));\n var dmq1 = asn(this.dmq1.toString(16));\n var coeff = asn(this.coeff.toString(16));\n\n if (typeof include_private !== 'undefined' && include_private)\n return asn(v + n + e + d + p + q + dmp1 + dmq1 + coeff, '30');\n else\n return asn(n + e, '30');\n\n\n function asn (data, type) {\n if (typeof type === 'undefined') type = '02';\n\n // Pad the data with a leading '0' if necessary\n data = (data.length % 2 === 0) ? data : '0' + data;\n\n // Pad the data again with a '00' to ensure its positive. Some parser\n // stupid implementations will freak out on negative RSA bits.\n if (parseInt(data.substr(0,2), 16) > 127)\n data = '00' + data;\n\n return type + asn_length(data) + data;\n }\n\n function asn_length (item) {\n var length = item.length / 2; // We're dealing with hex here\n var length_hex = (length.toString(16).length % 2 === 0) ? length.toString(16) : '0' + length.toString(16);\n\n if (length < 128) {\n return length_hex;\n } else {\n var length_length = 128 + length_hex.length / 2;\n var length_length_hex = (length_length.toString(16).length % 2 === 0) ? length_length.toString(16) : '0' + length_length.toString(16);\n\n return length_length_hex + length_hex;\n }\n }\n}\n\nfunction RSAEncryptBinary(hex) {\n var m = pkcs1pad2hex(hex,(this.n.bitLength()+7)>>3);\n if(m == null) return null;\n var c = this.doPublic(m);\n if(c == null) return null;\n var h = c.toString(16);\n if((h.length & 1) == 0) return h; else return \"0\" + h;\n}\n\nfunction RSADecryptBinary(ctext) {\n var c = parseBigInt(ctext, 16);\n var m = this.doPrivate(c);\n if(m == null) return null;\n return pkcs1unpad2hex(m, (this.n.bitLength()+7)>>3);\n}\n\nfunction RSASetPrivateEx(N,E,D,P,Q,DP,DQ,C) {\n if(N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = parseBigInt(N,16);\n this.e = parseInt(E,16);\n this.d = parseBigInt(D,16);\n this.p = parseBigInt(P,16);\n this.q = parseBigInt(Q,16);\n this.dmp1 = parseBigInt(DP,16);\n this.dmq1 = parseBigInt(DQ,16);\n this.coeff = parseBigInt(C,16);\n }\n else\n alert(\"Invalid RSA private key\");\n}\n\nfunction RSASetPrivateKeyFromASN1HexString(keyHex) {\n const a = _rsapem_getHexValueArrayOfChildrenFromHex(keyHex);\n this.setPrivateEx(a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n\n// protected\nRSAKey.prototype.doPublic = RSADoPublic;\nRSAKey.prototype.doPrivate = RSADoPrivate;\n\n// public\nRSAKey.prototype.setPublic = RSASetPublic;\nRSAKey.prototype.encrypt = RSAEncrypt;\n//RSAKey.prototype.encrypt_b64 = RSAEncryptB64;\n\nRSAKey.prototype.encryptBinary = RSAEncryptBinary;\nRSAKey.prototype.decryptBinary = RSADecryptBinary;\nRSAKey.prototype.toASN1HexString = RSAtoASN1Hex;\nRSAKey.prototype.setPrivateEx = RSASetPrivateEx;\nRSAKey.prototype.setPrivateKeyFromASN1HexString = RSASetPrivateKeyFromASN1HexString;\n\n","import { normal64Bytes } from \"./utils\"\n\nexport type AllowedNumbers = \n| 7\n| 8\n| 9\n| 10\n| 11\n| 12\n| 13\n| 14\n| 15\n| 16\n| 17\n\nexport function isAllowedNumber(num:number):num is AllowedNumbers {\n return num >= 7 && num <= 17\n}\n\nexport function getKeeperKeys(fct:(source: string) => Uint8Array){\n let keyNumber = 7\n return [\n 'BK9w6TZFxE6nFNbMfIpULCup2a8xc6w2tUTABjxny7yFmxW0dAEojwC6j6zb5nTlmb1dAx8nwo3qF7RPYGmloRM',\n 'BKnhy0obglZJK-igwthNLdknoSXRrGB-mvFRzyb_L-DKKefWjYdFD2888qN1ROczz4n3keYSfKz9Koj90Z6w_tQ',\n 'BAsPQdCpLIGXdWNLdAwx-3J5lNqUtKbaOMV56hUj8VzxE2USLHuHHuKDeno0ymJt-acxWV1xPlBfNUShhRTR77g',\n 'BNYIh_Sv03nRZUUJveE8d2mxKLIDXv654UbshaItHrCJhd6cT7pdZ_XwbdyxAOCWMkBb9AZ4t1XRCsM8-wkEBRg',\n 'BA6uNfeYSvqagwu4TOY6wFK4JyU5C200vJna0lH4PJ-SzGVXej8l9dElyQ58_ljfPs5Rq6zVVXpdDe8A7Y3WRhk',\n 'BMjTIlXfohI8TDymsHxo0DqYysCy7yZGJ80WhgOBR4QUd6LBDA6-_318a-jCGW96zxXKMm8clDTKpE8w75KG-FY',\n 'BJBDU1P1H21IwIdT2brKkPqbQR0Zl0TIHf7Bz_OO9jaNgIwydMkxt4GpBmkYoprZ_DHUGOrno2faB7pmTR7HhuI',\n 'BJFF8j-dH7pDEw_U347w2CBM6xYM8Dk5fPPAktjib-opOqzvvbsER-WDHM4ONCSBf9O_obAHzCyygxmtpktDuiE',\n 'BDKyWBvLbyZ-jMueORl3JwJnnEpCiZdN7yUvT0vOyjwpPBCDf6zfL4RWzvSkhAAFnwOni_1tQSl8dfXHbXqXsQ8',\n 'BDXyZZnrl0tc2jdC5I61JjwkjK2kr7uet9tZjt8StTiJTAQQmnVOYBgbtP08PWDbecxnHghx3kJ8QXq1XE68y8c',\n 'BFX68cb97m9_sweGdOVavFM3j5ot6gveg6xT4BtGahfGhKib-zdZyO9pwvv1cBda9ahkSzo1BQ4NVXp9qRyqVGU'\n ].reduce((keys:Uint8Array[], key) => {\n keys[keyNumber++] = fct(key)\n return keys\n }, [])\n}\n\n","import {KeyWrapper, LogOptions, platform} from \"./platform\";\nimport type {KeeperHost, TransmissionKey} from './configuration';\nimport { AllowedNumbers } from \"./transmissionKeys\";\n\nexport const log = (message: string, options: LogOptions = 'default') => {\n platform.log(message, options)\n}\n\nexport const formatTimeDiff = (timeDiff: Date): string => {\n const minutes = timeDiff.getMinutes()\n const seconds = timeDiff.getSeconds().toString().padStart(2, '0')\n const milliseconds = timeDiff.getMilliseconds()\n return minutes > 0\n ? `${minutes.toString().padStart(2, '0')}:${seconds}.${milliseconds}`\n : `${seconds}.${milliseconds}`\n}\n\nexport function getKeeperUrl(host: KeeperHost, forPath: string) {\n return `https://${host}/api/rest/${forPath}`;\n}\n\nexport function getKeeperSAMLUrl(host: KeeperHost, forPath: string, serviceProviderId?: number) {\n if (serviceProviderId) {\n return getKeeperUrl(host, `sso/saml/${forPath}/${serviceProviderId}`);\n } else {\n return getKeeperUrl(host, `sso/saml/${forPath}`);\n }\n}\n\nexport function getKeeperSsoConfigUrl(host: KeeperHost, forPath: string, serviceProviderId?: number) {\n if (serviceProviderId) {\n return getKeeperUrl(host, `sso/config/${forPath}/${serviceProviderId}`);\n } else {\n return getKeeperUrl(host, `sso/config/${forPath}`);\n }\n}\n\nexport function getKeeperAutomatorAdminUrl(host: KeeperHost, forPath: string, automatorId?: number) {\n if (automatorId) {\n return getKeeperUrl(host, `automator/${forPath}/${automatorId}`);\n } else {\n return getKeeperUrl(host, `automator/${forPath}`);\n }\n}\n\nexport async function generateTransmissionKey(keyNumber: AllowedNumbers): Promise<TransmissionKey> {\n const transmissionKey = platform.getRandomBytes(32)\n return {\n publicKeyId: keyNumber,\n key: transmissionKey,\n encryptedKey: await platform.publicEncryptEC(transmissionKey, platform.keys[keyNumber])\n }\n}\n\nexport function webSafe64(source: string): string {\n return source.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\nexport function webSafe64FromBytes(source: Uint8Array): string {\n return webSafe64(platform.bytesToBase64(source));\n}\n\nexport function normal64(source: string): string {\n return source.replace(/-/g, '+').replace(/_/g, '/') + '=='.substring(0, (3 * source.length) % 4);\n}\n\nexport function normal64Bytes(source: string): Uint8Array {\n return platform.base64ToBytes(normal64(source));\n}\n\nexport function isTwoFactorResultCode(resultCode: string): boolean {\n return [\"need_totp\", \"invalid_device_token\", \"invalid_totp\"].includes(resultCode);\n}\n\nexport function generateEncryptionKey(): Uint8Array {\n return platform.getRandomBytes(32);\n}\n\nexport function generateUidBytes(): Uint8Array {\n return platform.getRandomBytes(16);\n}\n\nexport function generateUid(): string {\n return webSafe64FromBytes(generateUidBytes());\n}\n\nexport function wrapPassword(key: string | Uint8Array): KeyWrapper {\n if (typeof key === 'string') {\n return platform.wrapPassword(platform.stringToBytes(key))\n }\n if (key instanceof Uint8Array) {\n return platform.wrapPassword(key)\n }\n throw new Error('Error wrapping the password')\n}\n\nexport async function encryptKey(key: Uint8Array, withKey: Uint8Array): Promise<string> {\n let encryptedKey = await platform.aesGcmEncrypt(key, withKey);\n return webSafe64FromBytes(encryptedKey);\n}\n\nexport function shareKey(key: Uint8Array, publicKey: string): string {\n let encryptedKey = platform.publicEncrypt(key, publicKey);\n return webSafe64FromBytes(encryptedKey);\n}\n\nexport async function shareKeyEC(key: Uint8Array, publicKey: Uint8Array): Promise<string> {\n let encryptedKey = await platform.publicEncryptEC(key, publicKey);\n return webSafe64FromBytes(encryptedKey);\n}\n\nexport async function decryptKey(encryptedKey: string, withKey: Uint8Array): Promise<Uint8Array> {\n return platform.aesGcmDecrypt(normal64Bytes(encryptedKey), withKey);\n}\n\nexport async function encryptForStorage(data: Uint8Array, key: Uint8Array): Promise<string> {\n return webSafe64FromBytes(await platform.aesCbcEncrypt(data, key, true));\n}\n\nexport async function decryptFromStorage(data: string, key: Uint8Array): Promise<Uint8Array> {\n return await platform.aesCbcDecrypt(normal64Bytes(data), key, true);\n}\n\nexport async function decryptFromStorageGcm(data: string, key: Uint8Array): Promise<Uint8Array> {\n return platform.aesGcmDecrypt(normal64Bytes(data), key);\n}\n\nexport async function encryptObjectForStorage<T>(obj: T, key: Uint8Array): Promise<string> {\n let s = JSON.stringify(obj);\n let bytes = platform.stringToBytes(s);\n return encryptForStorage(bytes, key);\n}\n\nexport async function encryptObjectForStorageAsBytes<T>(obj: T, key: Uint8Array): Promise<Uint8Array> {\n let s = JSON.stringify(obj);\n let bytes = platform.stringToBytes(s);\n return platform.aesCbcEncrypt(bytes, key, true)\n}\n\nexport async function decryptObjectFromStorage<T>(data: string, key: Uint8Array): Promise<T> {\n try {\n let decrypted = await decryptFromStorage(data, key);\n return JSON.parse(platform.bytesToString(decrypted));\n }\n catch (e) {\n console.log(`Unable to decrypt ${data}`);\n return {} as T\n }\n}\n\nexport async function encryptObjectForStorageGCM<T>(obj: T, key: Uint8Array, usePadding: boolean = true): Promise<Uint8Array> {\n let bytes = platform.stringToBytes(JSON.stringify(obj));\n if (usePadding) {\n const paddedSize = Math.ceil(Math.max(384, bytes.length) / 16) * 16\n bytes = Uint8Array.of(...bytes, ...Array(paddedSize - bytes.length).fill(0x20))\n }\n return platform.aesGcmEncrypt(bytes, key)\n}\n\nexport function resolvablePromise(): { promise: Promise<void>, resolve: () => void } {\n let resolver\n const promise = new Promise<void>((resolve) => {\n resolver = resolve\n })\n return {\n promise: promise,\n resolve: resolver\n }\n}\n","import { platform } from \"./platform\"\n\nexport type CloseReason = {\n code: number,\n reason: CloseReasonMessage\n}\n\nenum CloseReasonCode {\n CANNOT_ACCEPT = 1003,\n NOT_CONSISTENT = 1007,\n VIOLATED_POLICY = 1008,\n TRY_AGAIN_LATER = 1013,\n}\n\ntype CloseReasonMessage = {\n close_reason:string\n key_id?:number\n}\n\ntype SocketMessage = {\n event: 'received_totp'\n type: 'dna'\n passcode: string\n}\n\nexport type SocketProxy = {\n onOpen: (callback: () => void) => void\n close: () => void\n onClose: (callback: (e:Event) => void) => void\n onError: (callback: (e: Event | Error) => void) => void\n onMessage: (callback: (e: Uint8Array) => void) => void\n send: (message: any) => void\n messageQueue: any[] // Since messages are type any here, make this an any array\n}\n\nexport class SocketListener {\n private socket?: SocketProxy;\n private url: string\n private getConnectionRequest?: (Uint8Array) => Promise<string>\n // Listeners that receive all messages\n private messageListeners: Array<(data: any) => void>\n // Listeners that receive a single message\n private singleMessageListeners: Array<{\n resolve: (data: any) => void,\n reject: (errorMessage: string) => void\n }>\n // Listeners that receive all messages\n private closeListeners: Array<(data: any) => void>\n // Listeners that receive a single message\n private singleCloseListeners: Array<{\n resolve: (data: any) => void,\n reject: (errorMessage: string) => void\n }>\n // Listeners that signal a re-connected socket\n private onOpenListeners: Array<() => void>\n // The messageSessionUid\n private messageSessionUid?: Uint8Array\n\n private isConnected: boolean\n private reconnectTimeout?: ReturnType<typeof setTimeout>\n private currentBackoffSeconds: number\n private isClosedByClient: boolean\n\n constructor(url: string, messageSessionUid?: Uint8Array, getConnectionRequest?: (messageSessionUid:Uint8Array) => Promise<string>) {\n console.log('Connecting to ' + url)\n\n this.url = url\n this.closeListeners = []\n this.singleCloseListeners = []\n this.messageListeners = []\n this.singleMessageListeners = []\n this.onOpenListeners = []\n this.currentBackoffSeconds = SocketListener.getBaseReconnectionInterval()\n this.isClosedByClient = false\n this.isConnected = false\n if (getConnectionRequest) this.getConnectionRequest = getConnectionRequest\n\n if (messageSessionUid){\n this.messageSessionUid = messageSessionUid\n this.createWebsocket(this.messageSessionUid)\n } else {\n this.createWebsocket()\n }\n }\n\n async createWebsocket(messageSessionUid?:Uint8Array) {\n if (this.getConnectionRequest && messageSessionUid) {\n const connectionRequest = await this.getConnectionRequest(messageSessionUid)\n this.socket = platform.createWebsocket(`${this.url}/${connectionRequest}`)\n } else {\n this.socket = platform.createWebsocket(this.url)\n }\n\n this.socket!.onOpen(() => {\n console.log('socket opened')\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout)\n }\n this.currentBackoffSeconds = SocketListener.getBaseReconnectionInterval()\n this.handleOnOpen()\n })\n\n this.socket!.onClose(async (event: Event) => {\n if (this.isClosedByClient) {\n return\n }\n\n let reason\n this.isConnected = false\n\n try {\n reason = JSON.parse(event['reason'])\n } catch {\n console.log('Connection closed - no close reason.')\n this.reconnect()\n return\n }\n\n switch (event['code']){\n case CloseReasonCode.CANNOT_ACCEPT:\n // Exact messages that can come from CANNOT_ACCEPT:\n // - Push server is in progress of shutting down\n // - Push server is not registered with KA\n // - Cannot process encrypted message.xxxx\n\n if(reason && reason.close_reason.includes('Push server')){\n // Tell User to try again\n this.handleClose({code:event['code'], reason})\n } else {\n // this would be an internal error and shouldnt reach here in production\n console.error('Incorrect internal error: ', reason.close_reason)\n }\n break\n case CloseReasonCode.NOT_CONSISTENT:\n // Error Message: device timestamp: {time} is off by {off_time}\n //Tell User to adjust their system clock\n this.handleClose({ code: event['code'], reason })\n break\n case CloseReasonCode.VIOLATED_POLICY:\n // Error Message: duplicate messageSessionUid=${messageSessionUid}\n // Relogin if this happens\n this.handleClose({ code: event['code'], reason })\n break\n case CloseReasonCode.TRY_AGAIN_LATER:\n // Error Message: throttled messageSessionUid=${messageSessionUid}\n //Tell User to try again in 1 minute\n this.handleClose({ code: event['code'], reason })\n break\n default:\n if (!this.isClosedByClient) {\n this.reconnect()\n }\n }\n })\n this.socket!.onError((e: Event | Error) => {\n console.log('socket error: ' + e)\n })\n this.socket!.onMessage(e => {\n this.handleMessage(e)\n })\n\n this.isConnected = true\n }\n\n registerLogin(sessionToken: string) {\n if (!this.socket) throw new Error('Socket not available')\n this.socket.send(sessionToken)\n }\n\n onOpen(callback: () => void): void {\n this.onOpenListeners.push(callback)\n }\n\n onClose(callback: () => void): void {\n if (!this.socket) throw new Error('Socket not available')\n this.socket.onClose(callback)\n }\n\n onError(callback: () => void): void {\n if (!this.socket) throw new Error('Socket not available')\n this.socket.onError(callback)\n }\n\n private handleOnOpen() {\n for (let callback of this.onOpenListeners) {\n callback()\n }\n }\n\n private handleMessage(messageData: Uint8Array): void {\n for (let callback of this.messageListeners) {\n callback(messageData)\n }\n\n for (let {resolve} of this.singleMessageListeners) {\n resolve(messageData)\n }\n this.singleMessageListeners.length = 0\n }\n\n private handleClose(messageData: {code: number, reason:CloseReasonMessage}): void {\n for (let callback of this.closeListeners) {\n callback(messageData)\n }\n\n for (let { resolve } of this.singleCloseListeners) {\n resolve(messageData)\n }\n this.singleCloseListeners.length = 0\n }\n\n onPushMessage(callback: (data: any) => void): void {\n this.messageListeners.push(callback)\n }\n\n onCloseMessage(callback: (data: any) => void): void {\n this.closeListeners.push(callback)\n }\n\n async getPushMessage(): Promise<any> {\n console.log('Awaiting web socket message...')\n return new Promise<any>((resolve, reject) => {\n this.singleMessageListeners.push({resolve, reject})\n })\n }\n\n private static getBaseReconnectionInterval(): number {\n return Math.random() * 5\n }\n\n private reconnect() {\n console.log(`Reconnecting websocket in ${this.currentBackoffSeconds.toFixed(2)} seconds...`)\n\n // schedule next reconnect attempt\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout)\n }\n this.reconnectTimeout = setTimeout(() => {\n this.createWebsocket(this.messageSessionUid)\n }, this.currentBackoffSeconds * 1000)\n\n this.currentBackoffSeconds = Math.min(this.currentBackoffSeconds * 2, 60) // Cap at 1 min, as suggested by docs\n }\n\n disconnect() {\n this.isConnected = false\n this.isClosedByClient = true\n this.socket?.close()\n this.socket = undefined\n this.messageListeners.length = 0\n\n this.currentBackoffSeconds = Math.random() * 5\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout)\n }\n this.singleMessageListeners.length = 0\n }\n\n getIsConnected(){\n return this.isConnected\n }\n}\n\nexport function socketSendMessage(message: any, socket: WebSocket, createdSocket:any){\n switch (socket.readyState) {\n case 0:// CONNECTING\n if (createdSocket.messageQueue.indexOf(message) === -1) createdSocket.messageQueue.push(message)\n break;\n case 1:// OPEN\n if (createdSocket.messageQueue.indexOf(message) === -1) createdSocket.messageQueue.push(message)\n\n if (createdSocket.messageQueue.length > 0) {\n for (let counter = 0; counter < createdSocket.messageQueue.length; counter++) {\n socket.send(createdSocket.messageQueue[counter])\n }\n }\n\n createdSocket.messageQueue.length = 0\n break;\n case 2:// CLOSING\n case 3:// CLOSED\n createdSocket.messageQueue.length = 0\n console.error('Trying to send a message while in the CLOSING or CLOSED state')\n break;\n }\n}\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 <vybornov@gmail.com>\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 * <p>\n * Heap buffer layout by offset:\n * <pre>\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 * </pre>\n * Don't touch anything before <code>0x400</code>.\n * </p>\n *\n * @alias AES_asm\n * @class\n * @param foreign - <i>ignored</i>\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","import {EncryptionType, KeyStorage, KeyWrapper, LogOptions, Platform, UnwrappedKeyType, CryptoWorkerOptions, UnwrapKeyMap} from '../platform'\nimport {_asnhex_getHexOfV_AtObj, _asnhex_getPosArrayOfChildren_AtObj} from \"./asn1hex\";\nimport {RSAKey} from \"./rsa\";\nimport {getKeeperKeys} from \"../transmissionKeys\";\nimport {normal64, normal64Bytes, webSafe64FromBytes} from \"../utils\";\nimport {SocketProxy, socketSendMessage} from '../socket'\nimport * as asmCrypto from 'asmcrypto.js'\nimport type {KeeperHttpResponse} from \"../commands\";\nimport {CryptoWorker, CryptoWorkerMessage, CryptoWorkerPool, CryptoWorkerPoolConfig, CryptoResults } from '../cryptoWorker';\n\nconst rsaAlgorithmName: string = \"RSASSA-PKCS1-v1_5\";\nconst CBC_IV_LENGTH = 16\nconst GCM_IV_LENGTH = 12\nconst ECC_PUB_KEY_LENGTH = 65\nlet socket: WebSocket | null = null\nlet workerPool: CryptoWorkerPool | null = null\n\nconst base64ToBytes = (data: string): Uint8Array => {\n return Uint8Array.from(atob(data), c => c.charCodeAt(0))\n}\n\nexport const browserPlatform: Platform = class {\n \n static supportsConcurrency: boolean = true\n\n static base64ToBytes = base64ToBytes\n \n static normal64Bytes(source: string): Uint8Array {\n return base64ToBytes(normal64(source));\n }\n\n static keys = getKeeperKeys(this.normal64Bytes);\n\n static getRandomBytes(length: number): Uint8Array {\n let data = new Uint8Array(length);\n crypto.getRandomValues(data);\n return data\n }\n\n static bytesToBase64(data: Uint8Array): string {\n const chunkSize = 0x10000\n if (data.length <= chunkSize) {\n // @ts-ignore\n return btoa(String.fromCharCode(...data))\n }\n let chunks: string = ''\n for (let i = 0; i < data.length; i = i + chunkSize) {\n // @ts-ignore\n chunks = chunks + String.fromCharCode(...data.slice(i, i + chunkSize))\n }\n return btoa(chunks)\n } \n\n static bytesToString(data: Uint8Array): string {\n return new TextDecoder().decode(data)\n }\n\n static stringToBytes(data: string): Uint8Array {\n return new TextEncoder().encode(data);\n }\n\n static wrapPassword(password: Uint8Array): KeyWrapper {\n return KeyWrapper.create(password)\n // TODO const wrappedPassword = await crypto.subtle.importKey(\"raw\", password.asBytes(), \"PBKDF2\", false, [\"deriveBits\"]);\n // return KeyWrapper.create(wrappedPassword)\n }\n\n static unWrapPassword(password: KeyWrapper): Uint8Array {\n return password.getKey()\n }\n\n static async importKey(keyId: string, key: Uint8Array, storage?: KeyStorage, canExport?: boolean): Promise<void> {\n // An AES key for one of our Keeper objects can be used for either CBC or GCM operations.\n // Since CryptoKeys are bound to a particular algorithm, we need to keep a copy for each.\n const extractable = !!canExport\n const cbcKey = await this.aesCbcImportKey(key, extractable) \n const gcmKey = await this.aesGcmImportKey(key, extractable)\n cryptoKeysCache['cbc'][keyId] = cbcKey\n cryptoKeysCache['gcm'][keyId] = gcmKey\n\n if (storage) {\n if (storage.saveObject) {\n await storage.saveObject(this.getStorageKeyId(keyId, 'cbc'), cbcKey)\n await storage.saveObject(this.getStorageKeyId(keyId, 'gcm'), gcmKey)\n } else {\n await storage.saveKeyBytes(keyId, key)\n }\n }\n }\n\n static async importKeyEC(keyId: string, privateKey: Uint8Array, publicKey: Uint8Array, storage?: KeyStorage): Promise<void> {\n const key = await this.importPrivateKeyEC(privateKey, publicKey)\n cryptoKeysCache['ecc'][keyId] = key\n\n if (storage) {\n if (storage.saveObject) {\n await storage.saveObject(this.getStorageKeyId(keyId, 'ecc'), key)\n } else {\n const jwk = await crypto.subtle.exportKey('jwk', key)\n const keyBytes = this.stringToBytes(JSON.stringify(jwk))\n await storage.saveKeyBytes(keyId, keyBytes)\n }\n }\n }\n\n static async importKeyRSA(keyId: string, key: Uint8Array, storage?: KeyStorage): Promise<void> {\n keyBytesCache[keyId] = key\n\n if (storage) {\n await storage.saveKeyBytes(keyId, key)\n }\n }\n\n static unloadKeys(): void {\n cryptoKeysCache.cbc = {}\n cryptoKeysCache.gcm = {}\n cryptoKeysCache.ecc = {}\n keyBytesCache = {}\n }\n\n static getStorageKeyId(keyId: string, keyType: EncryptionType): string {\n switch (keyType) {\n case 'cbc':\n case 'gcm':\n return `${keyId}_${keyType}`\n default:\n return keyId\n }\n }\n\n static async loadCryptoKey(keyId: string, keyType: EncryptionType, storage?: KeyStorage): Promise<CryptoKey> {\n if (storage?.getObject) {\n const storageKeyId = this.getStorageKeyId(keyId, keyType)\n const storedKey = await storage.getObject<CryptoKey>(storageKeyId)\n if (!storedKey) {\n throw new Error('Unable to load crypto key ' + keyId)\n }\n return storedKey \n }\n\n const keyBytes = await this.loadKeyBytes(keyId, storage)\n switch (keyType) {\n case 'cbc':\n return this.aesCbcImportKey(keyBytes, true)\n case 'gcm':\n return this.aesGcmImportKey(keyBytes, true)\n case 'ecc':\n const jwk: JsonWebKey = JSON.parse(this.bytesToString(keyBytes))\n return this.importECCJsonWebKey(jwk) \n default:\n throw new Error('Unsupported keyType: ' + keyType)\n }\n }\n\n static async loadKeyBytes(keyId: string, storage?: KeyStorage): Promise<Uint8Array> {\n const cachedKey = keyBytesCache[keyId]\n if (cachedKey) {\n return cachedKey\n }\n const keyBytes = storage\n ? await storage.getKeyBytes(keyId)\n : undefined\n if (!keyBytes) {\n throw new Error(`Unable to load the key ${keyId}`)\n }\n keyBytesCache[keyId] = keyBytes\n return keyBytes\n }\n\n static async loadKey(keyId: string, keyType: CryptoKeyType, storage?: KeyStorage): Promise<CryptoKey> {\n const cachedKey = cryptoKeysCache[keyType][keyId]\n if (cachedKey) {\n return cachedKey\n }\n\n const key = await this.loadCryptoKey(keyId, keyType, storage)\n cryptoKeysCache[keyType][keyId] = key\n return key\n }\n\n static async unwrapKeys(keys: UnwrapKeyMap, storage?: KeyStorage): Promise<void> {\n if (workerPool) {\n try {\n const unwrappedKeys = await workerPool.runTasks(Object.values(keys))\n\n // Import keys\n await Promise.all(Object.entries(unwrappedKeys).map(async ([keyId, keyBytes]) => {\n try {\n const {unwrappedType} = keys[keyId]\n switch (unwrappedType) {\n case 'aes':\n await this.importKey(keyId, keyBytes, storage, true)\n break\n case 'rsa':\n await this.importKeyRSA(keyId, keyBytes, storage)\n break\n default:\n throw new Error(`unable to import ${unwrappedType} key`)\n }\n } catch (e) {\n console.error(`Import key error: ${e}`)\n }\n }))\n \n return // no error, exit\n\n } catch (e) {\n console.error(`Crypto worker failed: ${e}`)\n await workerPool?.close()\n workerPool = null\n }\n }\n\n // Default to main thread decryption\n await Promise.all(Object.values(keys).map(async task => {\n const {data, dataId, keyId, encryptionType, unwrappedType} = task\n try {\n await this.unwrapKey(data, dataId, keyId, encryptionType, unwrappedType, storage, true)\n } catch (e: any) {\n if (e instanceof Error && e.message === 'sync_aborted') throw e\n console.error(`The key ${dataId} cannot be decrypted (${e.message})`)\n }\n }))\n }\n\n static async unwrapKey(key: Uint8Array, keyId: string, unwrappingKeyId: string, encryptionType: EncryptionType, unwrappedKeyType: UnwrappedKeyType, storage?: KeyStorage, canExport?: boolean): Promise<void> {\n switch (unwrappedKeyType) {\n case 'rsa':\n if (keyBytesCache[keyId]) {\n // Skip redundant RSA key decryption\n return\n }\n\n await this.unwrapRSAKey(key, keyId, unwrappingKeyId, encryptionType, storage)\n break\n case 'aes':\n if (cryptoKeysCache['gcm'][keyId]) {\n // Keeperapp sometimes provides redundant key data, for example, like if you own a record in a shared folder,\n // or if a record belongs to multiple shared folders. So, short circuit when possible for a performance improvement\n return\n }\n\n await this.unwrapAesKey(key, keyId, unwrappingKeyId, encryptionType, storage, canExport)\n break\n default:\n throw new Error('Unable to unwrap key type ' + unwrappedKeyType)\n }\n }\n\n static async unwrapAesKey(key: Uint8Array, keyId: string, unwrappingKeyId: string, encryptionType: EncryptionType, storage?: KeyStorage, canExport?: boolean): Promise<void> {\n let unwrappingKey: CryptoKey\n let wrappedKey: Uint8Array\n let algoParams: AesCbcParams | AesGcmParams\n switch (encryptionType) {\n case 'rsa':\n const rsaKey = await this.loadKeyBytes(unwrappingKeyId, storage)\n const keyBytes = this.privateDecrypt(key, rsaKey)\n await this.importKey(keyId, keyBytes, storage, canExport) \n return\n\n case 'cbc':\n wrappedKey = key.subarray(CBC_IV_LENGTH)\n algoParams = {\n iv: key.subarray(0, CBC_IV_LENGTH),\n name: 'AES-CBC'\n }\n unwrappingKey = await this.loadKey(unwrappingKeyId, encryptionType, storage)\n break\n\n case 'gcm':\n wrappedKey = key.subarray(GCM_IV_LENGTH)\n algoParams = {\n iv: key.subarray(0, GCM_IV_LENGTH),\n name: 'AES-GCM'\n }\n unwrappingKey = await this.loadKey(unwrappingKeyId, encryptionType, storage)\n break\n\n case 'ecc':\n const message = key.slice(ECC_PUB_KEY_LENGTH)\n wrappedKey = message.subarray(GCM_IV_LENGTH)\n algoParams = {\n iv: message.subarray(0, GCM_IV_LENGTH),\n name: 'AES-GCM'\n }\n const ephemeralPublicKey = key.slice(0, ECC_PUB_KEY_LENGTH)\n const eccPrivateKey = await this.loadKey(unwrappingKeyId, 'ecc', storage)\n unwrappingKey = await this.deriveSharedSecretKey(ephemeralPublicKey, eccPrivateKey)\n break\n }\n\n const canExtract: boolean = storage?.saveObject ? !!canExport : true\n const keyUsages: KeyUsage[] = ['encrypt', 'decrypt', 'unwrapKey', 'wrapKey']\n\n const gcmKey = await crypto.subtle.unwrapKey('raw', wrappedKey, unwrappingKey, algoParams, 'AES-GCM', canExtract, keyUsages)\n const cbcKey = await crypto.subtle.unwrapKey('raw', wrappedKey, unwrappingKey, algoParams, 'AES-CBC', canExtract, keyUsages)\n\n cryptoKeysCache['cbc'][keyId] = cbcKey\n cryptoKeysCache['gcm'][keyId] = gcmKey\n\n if (storage) {\n if (storage.saveObject) {\n await storage.saveObject(this.getStorageKeyId(keyId, 'cbc'), cbcKey)\n await storage.saveObject(this.getStorageKeyId(keyId, 'gcm'), gcmKey)\n } else {\n const keyBuffer = await crypto.subtle.exportKey('raw', gcmKey)\n await storage.saveKeyBytes(keyId, new Uint8Array(keyBuffer))\n }\n }\n }\n\n static async unwrapRSAKey(key: Uint8Array, keyId: string, unwrappingKeyId: string, encryptionType: EncryptionType, storage?: KeyStorage): Promise<void> {\n const rsaKey = await this.decrypt(key, unwrappingKeyId, encryptionType, storage)\n await this.importKeyRSA(keyId, rsaKey, storage)\n }\n\n static async decrypt(data: Uint8Array, keyId: string, encryptionType: EncryptionType, storage?: KeyStorage): Promise<Uint8Array> {\n switch (encryptionType) {\n case 'cbc': {\n const key = await this.loadKey(keyId, encryptionType, storage)\n return this.aesCbcDecryptWebCrypto(data, key)\n }\n case 'gcm': {\n const key = await this.loadKey(keyId, encryptionType, storage)\n return this.aesGcmDecryptWebCrypto(data, key)\n }\n case 'rsa': {\n const key = await this.loadKeyBytes(keyId, storage)\n return this.privateDecrypt(data, key)\n }\n case 'ecc': {\n const key = await this.loadKey(keyId, encryptionType, storage)\n return this.privateDecryptECWebCrypto(data, key)\n }\n default:\n throw Error('Unknown encryption type: ' + encryptionType)\n }\n }\n\n static async generateRSAKeyPair(): Promise<{privateKey: Uint8Array; publicKey: Uint8Array}> {\n let keyPair = await crypto.subtle.generateKey({\n name: rsaAlgorithmName,\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // 65537\n hash: {name: 'SHA-256'},\n }, true, [\"sign\", \"verify\"]);\n\n let jwk = await crypto.subtle.exportKey(\"jwk\", keyPair.privateKey);\n\n let rsaKey = new RSAKey();\n rsaKey.setPrivateEx(\n base64ToHex(normal64(jwk.n!)),\n base64ToHex(normal64(jwk.e!)),\n base64ToHex(normal64(jwk.d!)),\n base64ToHex(normal64(jwk.p!)),\n base64ToHex(normal64(jwk.q!)),\n base64ToHex(normal64(jwk.dp!)),\n base64ToHex(normal64(jwk.dq!)),\n base64ToHex(normal64(jwk.qi!))\n );\n\n let public_key = rsaKey.toASN1HexString(false);\n let private_key = rsaKey.toASN1HexString(true);\n\n return {\n privateKey: hexToBytes(private_key),\n publicKey: hexToBytes(public_key),\n };\n }\n\n static async generateECKeyPair(): Promise<{ privateKey: Uint8Array; publicKey: Uint8Array }> {\n const ecdh = await crypto.subtle.generateKey({ name: 'ECDH', namedCurve: 'P-256' }, true, ['deriveBits'])\n const privateKey = await crypto.subtle.exportKey('jwk', ecdh.privateKey)\n const publicKey = await crypto.subtle.exportKey('raw', ecdh.publicKey)\n return { publicKey: new Uint8Array(publicKey), privateKey: normal64Bytes(privateKey.d!) }\n }\n\n static publicEncrypt(data: Uint8Array, key: string): Uint8Array {\n let publicKeyHex = base64ToHex(key);\n const pos = _asnhex_getPosArrayOfChildren_AtObj(publicKeyHex, 0);\n const hN = _asnhex_getHexOfV_AtObj(publicKeyHex, pos[0]);\n const hE = _asnhex_getHexOfV_AtObj(publicKeyHex, pos[1]);\n const rsa = new RSAKey();\n rsa.setPublic(hN, hE);\n const hexBytes = bytesToHex(data);\n const encryptedBinary = rsa.encryptBinary(hexBytes);\n return hexToBytes(encryptedBinary);\n }\n\n static async publicEncryptEC(data: Uint8Array, key: Uint8Array, id?: Uint8Array): Promise<Uint8Array> {\n const ephemeralKeyPair = await crypto.subtle.generateKey({ name: 'ECDH', namedCurve: 'P-256' }, true, ['deriveBits'])\n const ephemeralPublicKey = await crypto.subtle.exportKey('raw', ephemeralKeyPair.publicKey)\n const recipientPublicKey = await crypto.subtle.importKey('raw', key, { name: 'ECDH', namedCurve: 'P-256' }, true, [])\n const sharedSecret = await crypto.subtle.deriveBits({ name: 'ECDH', public: recipientPublicKey }, ephemeralKeyPair.privateKey, 256)\n const idBytes = id || new Uint8Array()\n const sharedSecretCombined = new Uint8Array(sharedSecret.byteLength + idBytes.byteLength)\n sharedSecretCombined.set(new Uint8Array(sharedSecret), 0)\n sharedSecretCombined.set(idBytes, sharedSecret.byteLength)\n const symmetricKey = await crypto.subtle.digest('SHA-256', sharedSecretCombined)\n const cipherText = await this.aesGcmEncrypt(data, new Uint8Array(symmetricKey))\n const result = new Uint8Array(ephemeralPublicKey.byteLength + cipherText.byteLength)\n result.set(new Uint8Array(ephemeralPublicKey), 0)\n result.set(new Uint8Array(cipherText), ephemeralPublicKey.byteLength)\n return result\n }\n\n static privateDecrypt(data: Uint8Array, key: Uint8Array): Uint8Array {\n let pkh = bytesToHex(key);\n const rsa = new RSAKey();\n rsa.setPrivateKeyFromASN1HexString(pkh);\n const hexBytes = bytesToHex(data);\n const decryptedBinary = rsa.decryptBinary(hexBytes);\n return hexToBytes(decryptedBinary);\n }\n\n static async privateDecryptEC(data: Uint8Array, privateKey: Uint8Array, publicKey?: Uint8Array, id?: Uint8Array): Promise<Uint8Array> {\n if (!publicKey) {\n throw Error('Public key is required for EC decryption')\n }\n\n const privateKeyImport = await this.importPrivateKeyEC(privateKey, publicKey)\n\n return this.privateDecryptECWebCrypto(data, privateKeyImport, id)\n }\n\n static async importPrivateKeyEC(privateKey: Uint8Array, publicKey: Uint8Array) {\n const x = webSafe64FromBytes(publicKey.subarray(1, 33))\n const y = webSafe64FromBytes(publicKey.subarray(33, 65))\n const d = webSafe64FromBytes(privateKey)\n\n const jwk = {\n 'crv': 'P-256',\n d,\n 'ext': true,\n 'key_ops': [\n 'deriveBits'\n ],\n 'kty': 'EC',\n x,\n y\n }\n\n return this.importECCJsonWebKey(jwk)\n }\n\n static async importECCJsonWebKey(jwk: JsonWebKey): Promise<CryptoKey> {\n return await crypto.subtle.importKey('jwk', jwk, { name: 'ECDH', namedCurve: 'P-256' }, true, ['deriveBits'])\n }\n\n static async deriveSharedSecretKey(ephemeralPublicKey: Uint8Array, privateKey: CryptoKey, id?: Uint8Array): Promise<CryptoKey> {\n const pubCryptoKey = await crypto.subtle.importKey('raw', ephemeralPublicKey, { name: 'ECDH', namedCurve: 'P-256' }, true, [])\n const sharedSecret = await crypto.subtle.deriveBits({ name: 'ECDH', public: pubCryptoKey }, privateKey, 256)\n let sharedSecretCombined = new Uint8Array(sharedSecret.byteLength + (id?.byteLength ?? 0))\n sharedSecretCombined.set(new Uint8Array(sharedSecret), 0)\n if (id) {\n sharedSecretCombined.set(id, sharedSecret.byteLength)\n }\n const symmetricKeyBuffer = await crypto.subtle.digest('SHA-256', sharedSecretCombined)\n return this.aesGcmImportKey(new Uint8Array(symmetricKeyBuffer), false)\n }\n\n static async privateDecryptECWebCrypto(data: Uint8Array, privateKey: CryptoKey, id?: Uint8Array): Promise<Uint8Array> {\n const message = data.slice(ECC_PUB_KEY_LENGTH)\n const ephemeralPublicKey = data.slice(0, ECC_PUB_KEY_LENGTH)\n\n const symmetricKey = await this.deriveSharedSecretKey(ephemeralPublicKey, privateKey, id)\n\n return await this.aesGcmDecryptWebCrypto(message, symmetricKey)\n }\n\n // TODO Not tested\n static async privateSign(data: Uint8Array, key: string): Promise<Uint8Array> {\n let _key = await crypto.subtle.importKey(\"pkcs8\",\n browserPlatform.base64ToBytes(key),\n \"RSA-PSS\",\n true,\n [\"sign\"]);\n let signature = await crypto.subtle.sign(rsaAlgorithmName, _key, data);\n return new Uint8Array(signature);\n }\n\n static async encrypt(data: Uint8Array, keyId: string, encryptionType: EncryptionType, storage?: KeyStorage): Promise<Uint8Array> {\n switch (encryptionType) {\n case 'cbc': {\n const key = await this.loadKey(keyId, encryptionType, storage)\n return this.aesCbcEncryptWebCrypto(data, key)\n }\n\n case 'gcm': {\n const key = await this.loadKey(keyId, encryptionType, storage)\n return this.aesGcmEncryptWebCrypto(data, key)\n }\n\n case 'ecc': {\n const publicKey = await this.loadKeyBytes(keyId + '_pub')\n return this.publicEncryptEC(data, publicKey)\n }\n\n case 'rsa': {\n const publicKey = await this.loadKeyBytes(keyId + '_pub')\n return this.publicEncrypt(data, this.bytesToBase64(publicKey))\n }\n\n default:\n throw Error('Unknown encryption type: ' + encryptionType)\n }\n }\n\n static async wrapKey(keyId: string, wrappingKeyId: string, encryptionType: CryptoKeyType, storage?: KeyStorage): Promise<Uint8Array> {\n switch (encryptionType) {\n case 'cbc':\n case 'gcm':\n return this.aesWrapKey(keyId, wrappingKeyId, encryptionType, storage)\n\n default:\n throw new Error(`Unsupported encryptionType (${encryptionType})`)\n }\n }\n\n static async aesWrapKey(keyId: string, wrappingKeyId: string, encryptionType: Exclude<CryptoKeyType, 'ecc'>, storage?: KeyStorage): Promise<Uint8Array> {\n const key = await this.loadKey(keyId, 'cbc', storage)\n const wrappingKey = await this.loadKey(wrappingKeyId, encryptionType, storage)\n\n let algoParams: AesCbcParams | AesGcmParams\n let iv: Uint8Array\n switch (encryptionType) {\n case 'cbc':\n iv = this.getRandomBytes(CBC_IV_LENGTH)\n algoParams = {\n iv,\n name: 'AES-CBC'\n }\n break\n\n case 'gcm':\n iv = this.getRandomBytes(GCM_IV_LENGTH)\n algoParams = {\n iv,\n name: 'AES-GCM'\n }\n break\n }\n\n const wrappedKey = await crypto.subtle.wrapKey('raw', key, wrappingKey, algoParams)\n\n let resArr = new Uint8Array(wrappedKey)\n let result = new Uint8Array(iv.length + resArr.length)\n result.set(iv)\n result.set(resArr, iv.length)\n return result\n }\n \n static async aesGcmEncrypt(data: Uint8Array, key: Uint8Array): Promise<Uint8Array> {\n let _key = await crypto.subtle.importKey(\"raw\", key, \"AES-GCM\", true, [\"encrypt\"]);\n return this.aesGcmEncryptWebCrypto(data, _key)\n }\n\n static async aesGcmEncryptWebCrypto(data: Uint8Array, key: CryptoKey): Promise<Uint8Array> {\n let iv = browserPlatform.getRandomBytes(GCM_IV_LENGTH);\n let res = await crypto.subtle.encrypt({\n name: \"AES-GCM\",\n iv: iv\n }, key, data);\n\n let resArr = new Uint8Array(res)\n let result = new Uint8Array(iv.length + resArr.length)\n result.set(iv)\n result.set(resArr, iv.length)\n return result\n }\n\n static async aesGcmDecrypt(data: Uint8Array, key: Uint8Array): Promise<Uint8Array> {\n const _key = await this.aesGcmImportKey(key, false)\n return this.aesGcmDecryptWebCrypto(data, _key)\n }\n\n static async aesGcmImportKey(keyBytes: Uint8Array, extractable: boolean): Promise<CryptoKey> {\n return crypto.subtle.importKey(\"raw\", keyBytes, \"AES-GCM\", extractable, ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']);\n }\n\n static async aesGcmDecryptWebCrypto(data: Uint8Array, key: CryptoKey): Promise<Uint8Array> {\n const iv = data.subarray(0, GCM_IV_LENGTH);\n const encrypted = data.subarray(GCM_IV_LENGTH);\n const res = await crypto.subtle.decrypt({\n name: \"AES-GCM\",\n iv: iv\n }, key, encrypted);\n return new Uint8Array(res);\n }\n\n static async aesCbcEncryptWebCrypto(data: Uint8Array, key: CryptoKey): Promise<Uint8Array> {\n let iv = browserPlatform.getRandomBytes(CBC_IV_LENGTH);\n let res = await crypto.subtle.encrypt({\n name: \"aes-cbc\",\n iv: iv\n }, key, data);\n\n let resArr = new Uint8Array(res)\n let result = new Uint8Array(iv.byteLength + resArr.byteLength)\n result.set(iv)\n result.set(resArr, iv.byteLength)\n return result\n }\n\n // The browser's implementation of aes cbc only works when padding is required. \n // Use asmCrypto for no padding. crypto-js was found to have a vulnerability (Cache-Timing attack)\n static async aesCbcEncrypt(data: Uint8Array, key: Uint8Array, usePadding: boolean): Promise<Uint8Array> {\n if(usePadding){\n let _key = await crypto.subtle.importKey(\"raw\", key, \"aes-cbc\", true, [\"encrypt\"]);\n return this.aesCbcEncryptWebCrypto(data, _key)\n } else {\n const iv = browserPlatform.getRandomBytes(CBC_IV_LENGTH);\n const encrBytes = asmCrypto.AES_CBC.encrypt(data, key, false, iv);\n\n const keeperformat = new Uint8Array(iv.length + encrBytes.length)\n keeperformat.set(iv)\n keeperformat.set(encrBytes, iv.length)\n\n return keeperformat\n }\n }\n\n // The browser's implementation of aes cbc only works when padding is required. \n // Use asmCrypto for no padding. crypto-js was found to have a vulnerability (Cache-Timing attack)\n static async aesCbcDecrypt(data: Uint8Array, key: Uint8Array, usePadding: boolean): Promise<Uint8Array> {\n if(usePadding){\n let _key = await this.aesCbcImportKey(key, false)\n return this.aesCbcDecryptWebCrypto(data, _key)\n } else {\n var iv = data.subarray(0, CBC_IV_LENGTH)\n var ciphertext = data.subarray(CBC_IV_LENGTH)\n\n var result = asmCrypto.AES_CBC.decrypt(ciphertext, key, false, iv)\n return result\n }\n }\n \n static async aesCbcImportKey(keyBytes: Uint8Array, extractable: boolean): Promise<CryptoKey> {\n return crypto.subtle.importKey('raw', keyBytes, 'AES-CBC', extractable, ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey'])\n }\n\n static async aesCbcDecryptWebCrypto(data: Uint8Array, key: CryptoKey): Promise<Uint8Array> {\n const iv = data.subarray(0, CBC_IV_LENGTH)\n const ciphertext = data.subarray(CBC_IV_LENGTH)\n const decrypt = await crypto.subtle.decrypt({\n name: 'AES-CBC',\n iv: iv\n }, key, ciphertext)\n return new Uint8Array(decrypt) \n }\n\n static async deriveKey(password: KeyWrapper, saltBytes: Uint8Array, iterations: number): Promise<Uint8Array> {\n let key = await crypto.subtle.importKey(\"raw\", password.getKey(), \"PBKDF2\", false, [\"deriveBits\"]);\n let derived = await crypto.subtle.deriveBits({\n name: \"PBKDF2\",\n salt: saltBytes,\n iterations: iterations,\n hash: {\n name: \"SHA-256\"\n }\n }, key, 256);\n return new Uint8Array(derived);\n }\n\n static async deriveKeyV2(domain: string, password: KeyWrapper, saltBytes: Uint8Array, iterations: number): Promise<Uint8Array> {\n\n let key = await crypto.subtle.importKey(\n \"raw\",\n Uint8Array.of(...browserPlatform.stringToBytes(domain), ...browserPlatform.unWrapPassword(password)),\n \"PBKDF2\",\n false,\n [\"deriveBits\"]);\n let derived = await crypto.subtle.deriveBits({\n name: \"PBKDF2\",\n salt: saltBytes,\n iterations: iterations,\n hash: {\n name: \"SHA-512\"\n }\n }, key, 512);\n let hmacKey = await crypto.subtle.importKey(\n \"raw\",\n derived,\n {\n name: \"HMAC\",\n hash: {\n name: \"SHA-256\"\n }\n },\n false,\n [\"sign\", \"verify\"]);\n const reduced = await crypto.subtle.sign(\"HMAC\", hmacKey, browserPlatform.stringToBytes(domain));\n return new Uint8Array(reduced);\n }\n\n static async calcAuthVerifier(key: Uint8Array): Promise<Uint8Array> {\n let digest = await crypto.subtle.digest(\"SHA-256\", key);\n return new Uint8Array(digest);\n }\n\n static async get(url: string, headers: any): Promise<KeeperHttpResponse> {\n let resp = await fetch(url, {\n method: \"GET\",\n headers: Object.entries(headers),\n });\n let body = await resp.arrayBuffer();\n return {\n statusCode: resp.status,\n headers: resp.headers,\n data: new Uint8Array(body)\n }\n }\n\n static async post(\n url: string,\n request: Uint8Array | string,\n headers?: {[key: string]: string}\n ): Promise<KeeperHttpResponse> {\n let resp = await fetch(url, {\n method: \"POST\",\n headers: new Headers({\n \"Content-Type\": \"application/octet-stream\",\n \"Content-Length\": String(request.length),\n ...headers\n }),\n body: request,\n });\n let body = await resp.arrayBuffer();\n return {\n statusCode: resp.status,\n headers: resp.headers,\n data: new Uint8Array(body)\n }\n }\n\n static fileUpload(\n url: string,\n uploadParameters: {[key: string]: string},\n data: Blob\n ): Promise<any> {\n return new Promise<any>((resolve, reject) => {\n const form = new FormData();\n\n for (const key in uploadParameters) {\n form.append(key, uploadParameters[key]);\n }\n form.append('file', data)\n\n const fetchCfg = {\n method: 'PUT',\n body: form,\n }\n\n fetch(url, fetchCfg)\n .then(response => response.json())\n .then(res => {\n resolve({\n headers: res.headers,\n statusCode: res.statusCode,\n statusMessage: res.statusMessage\n })\n })\n .catch(error => {\n console.error('Error uploading file:', error);\n reject(error)\n });\n })\n }\n\n static async createCryptoWorker(keyStorage: KeyStorage, options: CryptoWorkerOptions): Promise<CryptoWorkerPool> {\n const config: CryptoWorkerPoolConfig = {\n createWorker: async () => new BrowserCryptoWorker(),\n numThreads: navigator.hardwareConcurrency || 2,\n getKey: async (keyId, type) => {\n switch (type) {\n case 'cbc':\n case 'gcm': {\n const key = await this.loadKey(keyId, type, keyStorage)\n const buffer = await crypto.subtle.exportKey('raw', key)\n return new Uint8Array(buffer)\n }\n case 'ecc': {\n const key = await this.loadKey(keyId, type, keyStorage)\n const jwk = await crypto.subtle.exportKey('jwk', key)\n return this.stringToBytes(JSON.stringify(jwk))\n }\n default:\n return this.loadKeyBytes(keyId, keyStorage)\n }\n },\n ...options\n }\n\n workerPool = new CryptoWorkerPool(config)\n await workerPool!.open()\n\n return workerPool\n }\n\n static async closeCryptoWorker(): Promise<void> {\n if (!workerPool) return\n\n try {\n await workerPool.close()\n workerPool = null\n } catch (e) {\n console.error(e)\n }\n }\n\n static createWebsocket(url: string): SocketProxy {\n socket = new WebSocket(url)\n let createdSocket;\n return createdSocket = {\n onOpen: (callback: () => void) => {\n socket!.onopen = (e: Event) => {\n callback()\n }\n },\n close: () => {\n socket!.close()\n },\n onClose: (callback: (e:Event) => void) => {\n socket!.addEventListener(\"close\", callback)\n },\n onError: (callback: (e: Event) => void) => {\n socket!.addEventListener(\"error\", callback)\n },\n onMessage: (callback: (e: Uint8Array) => void) => {\n socket!.onmessage = async (e: MessageEvent) => {\n const pmArrBuff = await e.data.arrayBuffer()\n const pmUint8Buff = new Uint8Array(pmArrBuff)\n callback(pmUint8Buff)\n }\n },\n send: (message: any) => {\n socketSendMessage(message, socket!, createdSocket)\n },\n messageQueue: [],\n }\n }\n\n static log(message: string, options: LogOptions): void {\n if (options === 'CR')\n return\n console.log(message)\n }\n};\n\n\nfunction base64ToHex(data: string): string {\n let raw = atob(data);\n let hex = '';\n for (let i = 0; i < raw.length; i++) {\n let _hex = raw.charCodeAt(i).toString(16);\n hex += (_hex.length == 2 ? _hex : '0' + _hex);\n }\n return hex;\n}\n\nfunction hexToBytes(data: string): Uint8Array {\n let bytes: number[] = [];\n for (let c = 0; c < data.length; c += 2)\n bytes.push(parseInt(data.substr(c, 2), 16));\n return Uint8Array.from(bytes);\n}\n\nfunction bytesToHex(data: Uint8Array): string {\n let hex: string[] = [];\n for (let i = 0; i < data.length; i++) {\n let current = data[i] < 0 ? data[i] + 256 : data[i];\n hex.push((current >>> 4).toString(16));\n hex.push((current & 0xF).toString(16));\n }\n return hex.join(\"\");\n}\n\nconst OPCODE_PING = new Uint8Array([0x9])\n\nconst heartbeat = setInterval(() => {\n if (!socket) return\n if (socket.readyState !== WebSocket.OPEN) return\n socket.send(OPCODE_PING)\n}, 10000)\n\nlet keyBytesCache: Record<string, Uint8Array> = {}\n\ntype CryptoKeyCache = {\n [key in CryptoKeyType]: Record<string, CryptoKey>\n}\n\n// Web crypto supports aes gcm, aes cbc with padding, and ecc\ntype CryptoKeyType = Exclude<EncryptionType, 'rsa'>\n\nconst cryptoKeysCache: CryptoKeyCache = {\n cbc: {},\n gcm: {},\n ecc: {},\n}\n\nclass BrowserCryptoWorker implements CryptoWorker {\n\n private worker: Worker\n\n constructor() {\n const url = location.origin + '/worker/browserWorker.js'\n this.worker = new Worker(url)\n }\n\n sendMessage(message: CryptoWorkerMessage): Promise<CryptoResults> {\n return new Promise((resolve, reject) => {\n this.worker.onmessage = function onWorkerMessage(e: MessageEvent<CryptoResults>) {\n resolve(e.data)\n }\n\n this.worker.onerror = function onWorkerError(e) {\n reject(`Worker error: ${e.message}`)\n }\n\n this.worker.postMessage(message)\n })\n }\n\n async terminate() {\n this.worker.terminate()\n }\n}\n\n","import { CryptoWorkerMessage, handleCryptoWorkerMessage } from \"../cryptoWorker\"\nimport { connectPlatform } from \"../platform\"\nimport { browserPlatform } from \"./platform\"\n\nconnectPlatform(browserPlatform)\n\nself.addEventListener('message', async function (e: MessageEvent<CryptoWorkerMessage>) {\n const {data} = e\n\n const response = await handleCryptoWorkerMessage(data)\n\n // @ts-ignore\n self.postMessage(response)\n})\n"],"names":["asmCrypto.AES_CBC"],"mappings":"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AAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,G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AK,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9L,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChM,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChM,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC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"}
|