{ "version": 3, "sources": ["../../worker-utils/src/lib/node/worker_threads-browser.ts", "../../worker-utils/src/lib/worker-utils/get-transfer-list.ts", "../../worker-utils/src/lib/worker-farm/worker-body.ts", "../../worker-utils/src/lib/async-queue/async-queue.ts", "../../worker-utils/src/lib/worker-api/create-worker.ts", "../../loader-utils/src/lib/binary-utils/array-buffer-utils.ts", "../../loader-utils/src/lib/iterators/async-iteration.ts", "../src/lib/hash.ts", "../src/lib/algorithms/crc32.ts", "../src/lib/utils/base64-utils.ts", "../src/lib/utils/digest-utils.ts", "../src/lib/crc32-hash.ts", "../src/lib/algorithms/crc32c.ts", "../src/lib/crc32c-hash.ts", "../src/lib/algorithms/md5-wasm.ts", "../src/lib/md5-hash.ts", "../src/workers/crypto-worker.ts"], "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/** Browser polyfill for Node.js built-in `worker_threads` module.\n * These fills are non-functional, and just intended to ensure that\n * `import 'worker_threads` doesn't break browser builds.\n * The replacement is done in package.json browser field\n */\nexport class NodeWorker {\n terminate() {}\n}\n\nexport type {NodeWorker as NodeWorkerType};\n\nexport const parentPort = null;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// NOTE - there is a copy of this function is both in core and loader-utils\n// core does not need all the utils in loader-utils, just this one.\n\n/**\n * Returns an array of Transferrable objects that can be used with postMessage\n * https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage\n * @param object data to be sent via postMessage\n * @param recursive - not for application use\n * @param transfers - not for application use\n * @returns a transfer list that can be passed to postMessage\n */\nexport function getTransferList(\n object: any,\n recursive: boolean = true,\n transfers?: Set\n): Transferable[] {\n // Make sure that items in the transfer list is unique\n const transfersSet = transfers || new Set();\n\n if (!object) {\n // ignore\n } else if (isTransferable(object)) {\n transfersSet.add(object);\n } else if (isTransferable(object.buffer)) {\n // Typed array\n transfersSet.add(object.buffer);\n } else if (ArrayBuffer.isView(object)) {\n // object is a TypeArray viewing into a SharedArrayBuffer (not transferable)\n // Do not iterate through the content in this case\n } else if (recursive && typeof object === 'object') {\n for (const key in object) {\n // Avoid perf hit - only go one level deep\n getTransferList(object[key], recursive, transfersSet);\n }\n }\n\n // If transfers is defined, is internal recursive call\n // Otherwise it's called by the user\n return transfers === undefined ? Array.from(transfersSet) : [];\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Transferable\nfunction isTransferable(object: unknown) {\n if (!object) {\n return false;\n }\n if (object instanceof ArrayBuffer) {\n return true;\n }\n if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {\n return true;\n }\n if (typeof ImageBitmap !== 'undefined' && object instanceof ImageBitmap) {\n return true;\n }\n // @ts-ignore\n if (typeof OffscreenCanvas !== 'undefined' && object instanceof OffscreenCanvas) {\n return true;\n }\n return false;\n}\n\n/**\n * Recursively drop non serializable values like functions and regexps.\n * @param object\n */\nexport function getTransferListForWriter(object: object | null): object {\n if (object === null) {\n return {};\n }\n const clone = Object.assign({}, object);\n\n Object.keys(clone).forEach((key) => {\n // Typed Arrays and Arrays are passed with no change\n if (\n typeof object[key] === 'object' &&\n !ArrayBuffer.isView(object[key]) &&\n !(object[key] instanceof Array)\n ) {\n clone[key] = getTransferListForWriter(object[key]);\n } else if (typeof clone[key] === 'function' || clone[key] instanceof RegExp) {\n clone[key] = {};\n } else {\n clone[key] = object[key];\n }\n });\n\n return clone;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {WorkerMessageData, WorkerMessageType, WorkerMessagePayload} from '../../types';\nimport {getTransferList} from '../worker-utils/get-transfer-list';\n// import type {TransferListItem} from '../node/worker_threads';\nimport {parentPort} from '../node/worker_threads';\n\ntype TransferListItem = any;\n\n/** Vile hack to defeat over-zealous bundlers from stripping out the require */\nasync function getParentPort() {\n // const isNode = globalThis.process;\n // let parentPort;\n // try {\n // // prettier-ignore\n // eval('globalThis.parentPort = require(\\'worker_threads\\').parentPort'); // eslint-disable-line no-eval\n // parentPort = globalThis.parentPort;\n // } catch {\n // try {\n // // prettier-ignore\n // eval('globalThis.workerThreadsPromise = import(\\'worker_threads\\')'); // eslint-disable-line no-eval\n // const workerThreads = await globalThis.workerThreadsPromise;\n // parentPort = workerThreads.parentPort;\n // } catch (error) {\n // console.error((error as Error).message); // eslint-disable-line no-console\n // }\n // }\n return parentPort;\n}\n\nconst onMessageWrapperMap = new Map();\n\n/**\n * Type safe wrapper for worker code\n */\nexport default class WorkerBody {\n /** Check that we are actually in a worker thread */\n static async inWorkerThread(): Promise {\n return typeof self !== 'undefined' || Boolean(await getParentPort());\n }\n\n /*\n * (type: WorkerMessageType, payload: WorkerMessagePayload) => any\n */\n static set onmessage(onMessage: (type: WorkerMessageType, payload: WorkerMessagePayload) => any) {\n async function handleMessage(message) {\n const parentPort = await getParentPort();\n // Confusingly the message itself also has a 'type' field which is always set to 'message'\n const {type, payload} = parentPort ? message : message.data;\n // if (!isKnownMessage(message)) {\n // return;\n // }\n onMessage(type, payload);\n }\n\n getParentPort().then((parentPort) => {\n if (parentPort) {\n parentPort.on('message', (message) => {\n handleMessage(message);\n });\n // if (message == 'exit') { parentPort.unref(); }\n // eslint-disable-next-line\n parentPort.on('exit', () => console.debug('Node worker closing'));\n } else {\n // eslint-disable-next-line no-restricted-globals\n globalThis.onmessage = handleMessage;\n }\n });\n }\n\n static async addEventListener(\n onMessage: (type: WorkerMessageType, payload: WorkerMessagePayload) => any\n ) {\n let onMessageWrapper = onMessageWrapperMap.get(onMessage);\n\n if (!onMessageWrapper) {\n onMessageWrapper = async (message: MessageEvent) => {\n if (!isKnownMessage(message)) {\n return;\n }\n\n const parentPort = await getParentPort();\n // Confusingly in the browser, the message itself also has a 'type' field which is always set to 'message'\n const {type, payload} = parentPort ? message : message.data;\n onMessage(type, payload);\n };\n }\n\n const parentPort = await getParentPort();\n if (parentPort) {\n console.error('not implemented'); // eslint-disable-line\n } else {\n globalThis.addEventListener('message', onMessageWrapper);\n }\n }\n\n static async removeEventListener(\n onMessage: (type: WorkerMessageType, payload: WorkerMessagePayload) => any\n ) {\n const onMessageWrapper = onMessageWrapperMap.get(onMessage);\n onMessageWrapperMap.delete(onMessage);\n const parentPort = await getParentPort();\n if (parentPort) {\n console.error('not implemented'); // eslint-disable-line\n } else {\n globalThis.removeEventListener('message', onMessageWrapper);\n }\n }\n\n /**\n * Send a message from a worker to creating thread (main thread)\n * @param type\n * @param payload\n */\n static async postMessage(type: WorkerMessageType, payload: WorkerMessagePayload): Promise {\n const data: WorkerMessageData = {source: 'loaders.gl', type, payload};\n // console.log('posting message', data);\n\n // Cast to Node compatible transfer list\n const transferList = getTransferList(payload) as TransferListItem[];\n\n const parentPort = await getParentPort();\n if (parentPort) {\n parentPort.postMessage(data, transferList);\n // console.log('posted message', data);\n } else {\n // @ts-expect-error Outside of worker scopes this call has a third parameter\n globalThis.postMessage(data, transferList);\n }\n }\n}\n\n// Filter out noise messages sent to workers\nfunction isKnownMessage(message: MessageEvent) {\n const {type, data} = message;\n return (\n type === 'message' &&\n data &&\n typeof data.source === 'string' &&\n data.source.startsWith('loaders.gl')\n );\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// From https://github.com/rauschma/async-iter-demo/tree/master/src under MIT license\n// http://2ality.com/2016/10/asynchronous-iteration.html\n\n/**\n * Async Queue\n * - AsyncIterable: An async iterator can be\n * - Values can be pushed onto the queue\n * @example\n * const asyncQueue = new AsyncQueue();\n * setTimeout(() => asyncQueue.enqueue('tick'), 1000);\n * setTimeout(() => asyncQueue.enqueue(new Error('done')), 10000);\n * for await (const value of asyncQueue) {\n * console.log(value); // tick\n * }\n */\nexport default class AsyncQueue {\n private _values: any[];\n private _settlers: any[];\n private _closed: boolean;\n\n constructor() {\n this._values = []; // enqueues > dequeues\n this._settlers = []; // dequeues > enqueues\n this._closed = false;\n }\n\n /** Return an async iterator for this queue */\n [Symbol.asyncIterator](): AsyncIterator {\n return this;\n }\n\n /** Push a new value - the async iterator will yield a promise resolved to this value */\n push(value: T): void {\n return this.enqueue(value);\n }\n\n /**\n * Push a new value - the async iterator will yield a promise resolved to this value\n * Add an error - the async iterator will yield a promise rejected with this value\n */\n enqueue(value: T | Error): void {\n if (this._closed) {\n throw new Error('Closed');\n }\n\n if (this._settlers.length > 0) {\n if (this._values.length > 0) {\n throw new Error('Illegal internal state');\n }\n const settler = this._settlers.shift();\n if (value instanceof Error) {\n settler.reject(value);\n } else {\n settler.resolve({value});\n }\n } else {\n this._values.push(value);\n }\n }\n\n /** Indicate that we not waiting for more values - The async iterator will be done */\n close(): void {\n while (this._settlers.length > 0) {\n const settler = this._settlers.shift();\n settler.resolve({done: true});\n }\n this._closed = true;\n }\n\n // ITERATOR IMPLEMENTATION\n\n /** @returns a Promise for an IteratorResult */\n next(): Promise> {\n // If values in queue, yield the first value\n if (this._values.length > 0) {\n const value = this._values.shift();\n if (value instanceof Error) {\n return Promise.reject(value);\n }\n return Promise.resolve({done: false, value});\n }\n\n // If queue is closed, the iterator is done\n if (this._closed) {\n if (this._settlers.length > 0) {\n throw new Error('Illegal internal state');\n }\n return Promise.resolve({done: true, value: undefined});\n }\n\n // Yield a promise that waits for new values to be enqueued\n return new Promise((resolve, reject) => {\n this._settlers.push({resolve, reject});\n });\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {\n WorkerMessageType,\n WorkerMessagePayload,\n WorkerContext,\n Process,\n ProcessInBatches\n} from '../../types';\nimport AsyncQueue from '../async-queue/async-queue';\nimport WorkerBody from '../worker-farm/worker-body';\n// import {validateWorkerVersion} from './validate-worker-version';\n\n/** Counter for jobs */\nlet requestId = 0;\nlet inputBatches: AsyncQueue;\nlet options: {[key: string]: any};\n\nexport type ProcessOnMainThread = (\n data: any,\n options?: {[key: string]: any},\n context?: WorkerContext\n) => any;\n\n/**\n * Set up a WebWorkerGlobalScope to talk with the main thread\n */\nexport async function createWorker(\n process: Process,\n processInBatches?: ProcessInBatches\n): Promise {\n if (!(await WorkerBody.inWorkerThread())) {\n return;\n }\n\n const context: WorkerContext = {\n process: processOnMainThread\n };\n\n // eslint-disable-next-line complexity\n WorkerBody.onmessage = async (type: WorkerMessageType, payload: WorkerMessagePayload) => {\n try {\n switch (type) {\n case 'process':\n if (!process) {\n throw new Error('Worker does not support atomic processing');\n }\n const result = await process(payload.input, payload.options || {}, context);\n WorkerBody.postMessage('done', {result});\n break;\n\n case 'process-in-batches':\n if (!processInBatches) {\n throw new Error('Worker does not support batched processing');\n }\n inputBatches = new AsyncQueue();\n options = payload.options || {};\n const resultIterator = processInBatches(inputBatches, options, context);\n for await (const batch of resultIterator) {\n WorkerBody.postMessage('output-batch', {result: batch});\n }\n WorkerBody.postMessage('done', {});\n break;\n\n case 'input-batch':\n inputBatches.push(payload.input);\n break;\n\n case 'input-done':\n inputBatches.close();\n break;\n\n default:\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n };\n}\n\nfunction processOnMainThread(arrayBuffer: ArrayBuffer, options = {}) {\n return new Promise((resolve, reject) => {\n const id = requestId++;\n\n /**\n */\n const onMessage = (type: string, payload: WorkerMessagePayload) => {\n if (payload.id !== id) {\n // not ours\n return;\n }\n\n switch (type) {\n case 'done':\n WorkerBody.removeEventListener(onMessage);\n resolve(payload.result);\n break;\n\n case 'error':\n WorkerBody.removeEventListener(onMessage);\n reject(payload.error);\n break;\n\n default:\n // ignore\n }\n };\n\n WorkerBody.addEventListener(onMessage);\n\n // Ask the main thread to decode data\n const payload = {id, input: arrayBuffer, options};\n WorkerBody.postMessage('process', payload);\n });\n}\n", "import {TypedArray} from '../../types';\n\n/**\n * compare two binary arrays for equality\n * @param a\n * @param b\n * @param byteLength\n */\nexport function compareArrayBuffers(\n arrayBuffer1: ArrayBuffer,\n arrayBuffer2: ArrayBuffer,\n byteLength?: number\n): boolean {\n byteLength = byteLength || arrayBuffer1.byteLength;\n if (arrayBuffer1.byteLength < byteLength || arrayBuffer2.byteLength < byteLength) {\n return false;\n }\n const array1 = new Uint8Array(arrayBuffer1);\n const array2 = new Uint8Array(arrayBuffer2);\n for (let i = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Concatenate a sequence of ArrayBuffers from arguments\n * @return A concatenated ArrayBuffer\n */\nexport function concatenateArrayBuffers(...sources: (ArrayBuffer | Uint8Array)[]): ArrayBuffer {\n return concatenateArrayBuffersFromArray(sources);\n}\n\n/**\n * Concatenate a sequence of ArrayBuffers from array\n * @return A concatenated ArrayBuffer\n */\nexport function concatenateArrayBuffersFromArray(\n sources: (ArrayBuffer | Uint8Array)[]\n): ArrayBuffer {\n // Make sure all inputs are wrapped in typed arrays\n const sourceArrays = sources.map((source2) =>\n source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2\n );\n\n // Get length of all inputs\n const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);\n\n // Allocate array with space for all inputs\n const result = new Uint8Array(byteLength);\n\n // Copy the subarrays\n let offset = 0;\n for (const sourceArray of sourceArrays) {\n result.set(sourceArray, offset);\n offset += sourceArray.byteLength;\n }\n\n // We work with ArrayBuffers, discard the typed array wrapper\n return result.buffer;\n}\n\n/**\n * Concatenate arbitrary count of typed arrays\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays\n * @param - list of arrays. All arrays should be the same type\n * @return A concatenated TypedArray\n */\nexport function concatenateTypedArrays(...typedArrays: T[]): T {\n // @ts-ignore\n const arrays = typedArrays as TypedArray[];\n // @ts-ignore\n const TypedArrayConstructor = (arrays && arrays.length > 1 && arrays[0].constructor) || null;\n if (!TypedArrayConstructor) {\n throw new Error(\n '\"concatenateTypedArrays\" - incorrect quantity of arguments or arguments have incompatible data types'\n );\n }\n\n const sumLength = arrays.reduce((acc, value) => acc + value.length, 0);\n // @ts-ignore typescript does not like dynamic constructors\n const result = new TypedArrayConstructor(sumLength);\n let offset = 0;\n for (const array of arrays) {\n result.set(array, offset);\n offset += array.length;\n }\n return result;\n}\n\n/**\n * Copy a view of an ArrayBuffer into new ArrayBuffer with byteOffset = 0\n * @param arrayBuffer\n * @param byteOffset\n * @param byteLength\n */\nexport function sliceArrayBuffer(\n arrayBuffer: ArrayBuffer,\n byteOffset: number,\n byteLength?: number\n): ArrayBuffer {\n const subArray =\n byteLength !== undefined\n ? new Uint8Array(arrayBuffer).subarray(byteOffset, byteOffset + byteLength)\n : new Uint8Array(arrayBuffer).subarray(byteOffset);\n const arrayCopy = new Uint8Array(subArray);\n return arrayCopy.buffer;\n}\n", "import {concatenateArrayBuffers} from '../binary-utils/array-buffer-utils';\n\n// GENERAL UTILITIES\n\n/**\n * Iterate over async iterator, without resetting iterator if end is not reached\n * - forEach intentionally does not reset iterator if exiting loop prematurely\n * so that iteration can continue in a second loop\n * - It is recommended to use a standard for-await as last loop to ensure\n * iterator gets properly reset\n *\n * TODO - optimize using sync iteration if argument is an Iterable?\n *\n * @param iterator\n * @param visitor\n */\nexport async function forEach(iterator, visitor) {\n // eslint-disable-next-line\n while (true) {\n const {done, value} = await iterator.next();\n if (done) {\n iterator.return();\n return;\n }\n const cancel = visitor(value);\n if (cancel) {\n return;\n }\n }\n}\n\n// Breaking big data into iterable chunks, concatenating iterable chunks into big data objects\n\n/**\n * Concatenates all data chunks yielded by an (async) iterator\n * This function can e.g. be used to enable atomic parsers to work on (async) iterator inputs\n */\n\nexport async function concatenateArrayBuffersAsync(\n asyncIterator: AsyncIterable | Iterable\n): Promise {\n const arrayBuffers: ArrayBuffer[] = [];\n for await (const chunk of asyncIterator) {\n arrayBuffers.push(chunk);\n }\n return concatenateArrayBuffers(...arrayBuffers);\n}\n\nexport async function concatenateStringsAsync(\n asyncIterator: AsyncIterable | Iterable\n): Promise {\n const strings: string[] = [];\n for await (const chunk of asyncIterator) {\n strings.push(chunk);\n }\n return strings.join('');\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {concatenateArrayBuffersAsync} from '@loaders.gl/loader-utils';\n\ntype HashOptions = {\n modules?: {[moduleName: string]: any};\n crypto?: {\n onEnd?: (result: {hash: string}) => any;\n };\n};\n\n/** Abstract hash base class */\nexport abstract class Hash {\n abstract readonly name: string;\n abstract readonly options: HashOptions;\n\n constructor(options: HashOptions = {}) {\n this.hashBatches = this.hashBatches.bind(this);\n }\n\n async preload(): Promise {\n return;\n }\n\n abstract hash(arrayBuffer: ArrayBuffer, encoding: 'hex' | 'base64'): Promise;\n\n async *hashBatches(\n asyncIterator: AsyncIterable | Iterable,\n encoding: 'hex' | 'base64' = 'base64'\n ): AsyncIterable {\n const arrayBuffers: ArrayBuffer[] = [];\n for await (const arrayBuffer of asyncIterator) {\n arrayBuffers.push(arrayBuffer);\n yield arrayBuffer;\n }\n const output = await this.concatenate(arrayBuffers);\n const hash = await this.hash(output, encoding);\n this.options.crypto?.onEnd?.({hash});\n }\n\n // HELPERS\n\n protected async concatenate(asyncIterator): Promise {\n return await concatenateArrayBuffersAsync(asyncIterator);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// Inspired by https://gist.github.com/wqli78/1330293/6d85cc967f32cccfcbad94ae7d088a3dcfc14bd9\n// Full crc32 docs: https://www.kernel.org/doc/Documentation/crc32.txt\n// Better JS implementation: https://stackoverflow.com/a/18639999\n/**\n * Calculates the CRC32 checksum of a string.\n */\nexport default class CRC32 {\n crc: number;\n\n constructor() {\n this.crc = ~0;\n }\n\n update(arrayBuffer) {\n const CRC32_TABLE = getCRC32Table();\n const byteArray = new Uint8Array(arrayBuffer);\n for (let i = 0; i < byteArray.byteLength; i++) {\n this.crc = (this.crc >>> 8) ^ CRC32_TABLE[(this.crc ^ byteArray[i]) & 0xff];\n // strings: crc = (crc >>> 8) ^ CRC32TAB[(crc ^ str.charCodeAt(i)) & 0xff];\n }\n return this;\n }\n\n finalize() {\n // performing final division and making crc unsigned.\n // The reason why we can't use Math.abs() ther is that 1 in bite representation is 00000000000000000000000000000001\n // and -1 is 11111111111111111111111111111111. So Math.abs() completely changes the bits there,\n // but what we need is just make JS count first 1 bit as a part of a number and not the sign marker.\n // We don't need to change anything else in this bit representation. And that's exactly what >>> does.\n this.crc = (this.crc ^ -1) >>> 0;\n return this.crc;\n }\n}\n\n// Note: Using a typed array here doubles the speed of the cipher\nconst CRC32TAB = Uint32Array.of(\n 0x00000000,\n 0x77073096,\n 0xee0e612c,\n 0x990951ba,\n 0x076dc419,\n 0x706af48f,\n 0xe963a535,\n 0x9e6495a3,\n 0x0edb8832,\n 0x79dcb8a4,\n 0xe0d5e91e,\n 0x97d2d988,\n 0x09b64c2b,\n 0x7eb17cbd,\n 0xe7b82d07,\n 0x90bf1d91,\n 0x1db71064,\n 0x6ab020f2,\n 0xf3b97148,\n 0x84be41de,\n 0x1adad47d,\n 0x6ddde4eb,\n 0xf4d4b551,\n 0x83d385c7,\n 0x136c9856,\n 0x646ba8c0,\n 0xfd62f97a,\n 0x8a65c9ec,\n 0x14015c4f,\n 0x63066cd9,\n 0xfa0f3d63,\n 0x8d080df5,\n 0x3b6e20c8,\n 0x4c69105e,\n 0xd56041e4,\n 0xa2677172,\n 0x3c03e4d1,\n 0x4b04d447,\n 0xd20d85fd,\n 0xa50ab56b,\n 0x35b5a8fa,\n 0x42b2986c,\n 0xdbbbc9d6,\n 0xacbcf940,\n 0x32d86ce3,\n 0x45df5c75,\n 0xdcd60dcf,\n 0xabd13d59,\n 0x26d930ac,\n 0x51de003a,\n 0xc8d75180,\n 0xbfd06116,\n 0x21b4f4b5,\n 0x56b3c423,\n 0xcfba9599,\n 0xb8bda50f,\n 0x2802b89e,\n 0x5f058808,\n 0xc60cd9b2,\n 0xb10be924,\n 0x2f6f7c87,\n 0x58684c11,\n 0xc1611dab,\n 0xb6662d3d,\n 0x76dc4190,\n 0x01db7106,\n 0x98d220bc,\n 0xefd5102a,\n 0x71b18589,\n 0x06b6b51f,\n 0x9fbfe4a5,\n 0xe8b8d433,\n 0x7807c9a2,\n 0x0f00f934,\n 0x9609a88e,\n 0xe10e9818,\n 0x7f6a0dbb,\n 0x086d3d2d,\n 0x91646c97,\n 0xe6635c01,\n 0x6b6b51f4,\n 0x1c6c6162,\n 0x856530d8,\n 0xf262004e,\n 0x6c0695ed,\n 0x1b01a57b,\n 0x8208f4c1,\n 0xf50fc457,\n 0x65b0d9c6,\n 0x12b7e950,\n 0x8bbeb8ea,\n 0xfcb9887c,\n 0x62dd1ddf,\n 0x15da2d49,\n 0x8cd37cf3,\n 0xfbd44c65,\n 0x4db26158,\n 0x3ab551ce,\n 0xa3bc0074,\n 0xd4bb30e2,\n 0x4adfa541,\n 0x3dd895d7,\n 0xa4d1c46d,\n 0xd3d6f4fb,\n 0x4369e96a,\n 0x346ed9fc,\n 0xad678846,\n 0xda60b8d0,\n 0x44042d73,\n 0x33031de5,\n 0xaa0a4c5f,\n 0xdd0d7cc9,\n 0x5005713c,\n 0x270241aa,\n 0xbe0b1010,\n 0xc90c2086,\n 0x5768b525,\n 0x206f85b3,\n 0xb966d409,\n 0xce61e49f,\n 0x5edef90e,\n 0x29d9c998,\n 0xb0d09822,\n 0xc7d7a8b4,\n 0x59b33d17,\n 0x2eb40d81,\n 0xb7bd5c3b,\n 0xc0ba6cad,\n 0xedb88320,\n 0x9abfb3b6,\n 0x03b6e20c,\n 0x74b1d29a,\n 0xead54739,\n 0x9dd277af,\n 0x04db2615,\n 0x73dc1683,\n 0xe3630b12,\n 0x94643b84,\n 0x0d6d6a3e,\n 0x7a6a5aa8,\n 0xe40ecf0b,\n 0x9309ff9d,\n 0x0a00ae27,\n 0x7d079eb1,\n 0xf00f9344,\n 0x8708a3d2,\n 0x1e01f268,\n 0x6906c2fe,\n 0xf762575d,\n 0x806567cb,\n 0x196c3671,\n 0x6e6b06e7,\n 0xfed41b76,\n 0x89d32be0,\n 0x10da7a5a,\n 0x67dd4acc,\n 0xf9b9df6f,\n 0x8ebeeff9,\n 0x17b7be43,\n 0x60b08ed5,\n 0xd6d6a3e8,\n 0xa1d1937e,\n 0x38d8c2c4,\n 0x4fdff252,\n 0xd1bb67f1,\n 0xa6bc5767,\n 0x3fb506dd,\n 0x48b2364b,\n 0xd80d2bda,\n 0xaf0a1b4c,\n 0x36034af6,\n 0x41047a60,\n 0xdf60efc3,\n 0xa867df55,\n 0x316e8eef,\n 0x4669be79,\n 0xcb61b38c,\n 0xbc66831a,\n 0x256fd2a0,\n 0x5268e236,\n 0xcc0c7795,\n 0xbb0b4703,\n 0x220216b9,\n 0x5505262f,\n 0xc5ba3bbe,\n 0xb2bd0b28,\n 0x2bb45a92,\n 0x5cb36a04,\n 0xc2d7ffa7,\n 0xb5d0cf31,\n 0x2cd99e8b,\n 0x5bdeae1d,\n 0x9b64c2b0,\n 0xec63f226,\n 0x756aa39c,\n 0x026d930a,\n 0x9c0906a9,\n 0xeb0e363f,\n 0x72076785,\n 0x05005713,\n 0x95bf4a82,\n 0xe2b87a14,\n 0x7bb12bae,\n 0x0cb61b38,\n 0x92d28e9b,\n 0xe5d5be0d,\n 0x7cdcefb7,\n 0x0bdbdf21,\n 0x86d3d2d4,\n 0xf1d4e242,\n 0x68ddb3f8,\n 0x1fda836e,\n 0x81be16cd,\n 0xf6b9265b,\n 0x6fb077e1,\n 0x18b74777,\n 0x88085ae6,\n 0xff0f6a70,\n 0x66063bca,\n 0x11010b5c,\n 0x8f659eff,\n 0xf862ae69,\n 0x616bffd3,\n 0x166ccf45,\n 0xa00ae278,\n 0xd70dd2ee,\n 0x4e048354,\n 0x3903b3c2,\n 0xa7672661,\n 0xd06016f7,\n 0x4969474d,\n 0x3e6e77db,\n 0xaed16a4a,\n 0xd9d65adc,\n 0x40df0b66,\n 0x37d83bf0,\n 0xa9bcae53,\n 0xdebb9ec5,\n 0x47b2cf7f,\n 0x30b5ffe9,\n 0xbdbdf21c,\n 0xcabac28a,\n 0x53b39330,\n 0x24b4a3a6,\n 0xbad03605,\n 0xcdd70693,\n 0x54de5729,\n 0x23d967bf,\n 0xb3667a2e,\n 0xc4614ab8,\n 0x5d681b02,\n 0x2a6f2b94,\n 0xb40bbe37,\n 0xc30c8ea1,\n 0x5a05df1b,\n 0x2d02ef8d\n);\n\nfunction getCRC32Table() {\n return CRC32TAB;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/**\n * `btoa()` polyfill as defined by the HTML and Infra specs, which mostly just references\n * RFC 4648.\n */\nexport function asciiToBase64(string: string): string | null {\n // String conversion as required by Web IDL.\n string = `${string}`;\n // \"The btoa() method must throw an \"InvalidCharacterError\" DOMException if\n // data contains any character whose code point is greater than U+00FF.\"\n for (let i = 0; i < string.length; i++) {\n if (string.charCodeAt(i) > 255) {\n return null;\n }\n }\n let out = '';\n for (let i = 0; i < string.length; i += 3) {\n /** @type {Array[4]} */\n const groupsOfSix: (number | undefined)[] = [undefined, undefined, undefined, undefined];\n groupsOfSix[0] = string.charCodeAt(i) >> 2;\n groupsOfSix[1] = (string.charCodeAt(i) & 0x03) << 4;\n if (string.length > i + 1) {\n groupsOfSix[1] |= string.charCodeAt(i + 1) >> 4;\n groupsOfSix[2] = (string.charCodeAt(i + 1) & 0x0f) << 2;\n }\n if (string.length > i + 2) {\n // @ts-expect-error\n groupsOfSix[2] |= string.charCodeAt(i + 2) >> 6;\n groupsOfSix[3] = string.charCodeAt(i + 2) & 0x3f;\n }\n for (let j = 0; j < groupsOfSix.length; j++) {\n if (typeof groupsOfSix[j] === 'undefined') {\n out += '=';\n } else {\n out += btoaLookup(groupsOfSix[j]);\n }\n }\n }\n return out;\n}\n\n/**\n * Implementation of atob() according to the HTML and Infra specs, except that\n * instead of throwing INVALID_CHARACTER_ERR we return null.\n *\n * @note Forked from https://github.com/jsdom/abab under BSD 3 clause license\n */\nexport function base64ToAscii(data: string): string {\n // Web IDL requires DOMStrings to just be converted using ECMAScript\n // ToString, which in our case amounts to using a template literal.\n data = `${data}`;\n // \"Remove all ASCII whitespace from data.\"\n data = data.replace(/[ \\t\\n\\f\\r]/g, '');\n // \"If data's code point length divides by 4 leaving no remainder, then: if data ends\n // with one or two U+003D (=) code points, then remove them from data.\"\n if (data.length % 4 === 0) {\n data = data.replace(/[=]=?$/, '');\n }\n // \"If data's code point length divides by 4 leaving a remainder of 1, then return\n // failure.\"\n //\n // \"If data contains a code point that is not one of\n //\n // U+002B (+)\n // U+002F (/)\n // ASCII alphanumeric\n //\n // then return failure.\"\n if (data.length % 4 === 1 || /[^+/0-9A-Za-z]/.test(data)) {\n return '';\n }\n // \"Let output be an empty byte sequence.\"\n let output = '';\n // \"Let buffer be an empty buffer that can have bits appended to it.\"\n //\n // We append bits via left-shift and or. accumulatedBits is used to track\n // when we've gotten to 24 bits.\n let buffer = 0;\n let accumulatedBits = 0;\n // \"Let position be a position variable for data, initially pointing at the\n // start of data.\"\n //\n // \"While position does not point past the end of data:\"\n for (let i = 0; i < data.length; i++) {\n // \"Find the code point pointed to by position in the second column of\n // Table 1: The Base 64 Alphabet of RFC 4648. Let n be the number given in\n // the first cell of the same row.\n //\n // \"Append to buffer the six bits corresponding to n, most significant bit\n // first.\"\n //\n // atobLookup() implements the table from RFC 4648.\n buffer <<= 6;\n // @ts-expect-error\n buffer |= atobLookup(data[i]);\n accumulatedBits += 6;\n // \"If buffer has accumulated 24 bits, interpret them as three 8-bit\n // big-endian numbers. Append three bytes with values equal to those\n // numbers to output, in the same order, and then empty buffer.\"\n if (accumulatedBits === 24) {\n output += String.fromCharCode((buffer & 0xff0000) >> 16);\n output += String.fromCharCode((buffer & 0xff00) >> 8);\n output += String.fromCharCode(buffer & 0xff);\n buffer = accumulatedBits = 0;\n }\n // \"Advance position by 1.\"\n }\n // \"If buffer is not empty, it contains either 12 or 18 bits. If it contains\n // 12 bits, then discard the last four and interpret the remaining eight as\n // an 8-bit big-endian number. If it contains 18 bits, then discard the last\n // two and interpret the remaining 16 as two 8-bit big-endian numbers. Append\n // the one or two bytes with values equal to those one or two numbers to\n // output, in the same order.\"\n if (accumulatedBits === 12) {\n buffer >>= 4;\n output += String.fromCharCode(buffer);\n } else if (accumulatedBits === 18) {\n buffer >>= 2;\n output += String.fromCharCode((buffer & 0xff00) >> 8);\n output += String.fromCharCode(buffer & 0xff);\n }\n // \"Return output.\"\n return output;\n}\n/**\n * A lookup table for atob(), which converts an ASCII character to the\n * corresponding six-bit number.\n */\n\nconst keystr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nfunction atobLookup(chr: string): number | undefined {\n const index = keystr.indexOf(chr);\n // Throw exception if character is not in the lookup string; should not be hit in tests\n return index < 0 ? undefined : index;\n}\n\n/**\n * Lookup table for btoa(), which converts a six-bit number into the\n * corresponding ASCII character.\n */\nfunction btoaLookup(idx) {\n if (idx < 26) {\n return String.fromCharCode(idx + 'A'.charCodeAt(0));\n }\n if (idx < 52) {\n return String.fromCharCode(idx - 26 + 'a'.charCodeAt(0));\n }\n if (idx < 62) {\n return String.fromCharCode(idx - 52 + '0'.charCodeAt(0));\n }\n if (idx === 62) {\n return '+';\n }\n if (idx === 63) {\n return '/';\n }\n // Throw INVALID_CHARACTER_ERR exception here -- won't be hit in the teststring.\n return undefined;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {asciiToBase64, base64ToAscii} from './base64-utils';\n\n/**\n * Encode a number (usually a digest from a hash function / cipher) as either hex or base64\n * Suitable for hashes like CRC32 where the number of required bits fit withing a JavaScript number.\n */\nexport function encodeNumber(number: number, encoding: 'hex' | 'base64'): string {\n switch (encoding) {\n case 'hex':\n return convertNumberToHex(number);\n case 'base64':\n return convertHexToBase64(convertNumberToHex(number));\n default:\n throw new Error(encoding);\n }\n}\n\n/** Encode a hex string, aeither return hex or re-encode as base64 */\nexport function encodeHex(hex: string, encoding: 'hex' | 'base64'): string {\n switch (encoding) {\n case 'hex':\n return hex;\n case 'base64':\n return convertHexToBase64(hex);\n default:\n throw new Error(encoding);\n }\n}\n\nexport function encodeBase64(base64: string, encoding: 'hex' | 'base64'): string {\n switch (encoding) {\n case 'hex':\n return convertBase64ToHex(base64);\n case 'base64':\n return base64;\n default:\n throw new Error(encoding);\n }\n}\n\n/**\n * Convert a hexadecimal string to base64 encoded string representation\n */\nfunction convertHexToBase64(hexstring: string): string {\n // Add leading zero to keep even count of digits\n // eg. f85d741 => 0f85d741\n if (hexstring.length % 2 !== 0) {\n hexstring = `0${hexstring}`;\n }\n const matches = hexstring.match(/\\w{2}/g) || [];\n const string = matches.map((a) => String.fromCharCode(parseInt(a, 16))).join('');\n // TODO - define how to handle failures\n return asciiToBase64(string) || '';\n}\n\n/**\n * Convert a base64 encoded string to hexadecimal encoded string representation\n */\nfunction convertBase64ToHex(base64String: string): string {\n return [...base64ToAscii(base64String)]\n .map((c) => c.charCodeAt(0).toString(16).padStart(2, '0'))\n .join('');\n}\n\n/**\n * Converts a number to hex\n */\nfunction convertNumberToHex(cipher: number): string {\n const hexString = cipher.toString(16);\n return hexString === '0' ? `0${hexString}` : hexString;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {Hash} from './hash';\nimport CRC32 from './algorithms/crc32';\nimport {encodeNumber} from './utils/digest-utils';\n\n/**\n * Calculates CRC32 Cryptographic Hash\n */\nexport class CRC32Hash extends Hash {\n readonly name = 'crc32';\n\n options;\n\n constructor(options = {}) {\n super();\n this.options = {crypto: {}, ...options};\n this.hashBatches = this.hashBatches.bind(this);\n }\n\n /**\n * Atomic hash calculation\n * @returns base64 encoded hash\n */\n async hash(input: ArrayBuffer, encoding: 'hex' | 'base64'): Promise {\n return this.hashSync(input, encoding);\n }\n\n hashSync(input: ArrayBuffer, encoding: 'hex' | 'base64'): string {\n const hash = new CRC32();\n hash.update(input);\n const digest = hash.finalize();\n return encodeNumber(digest, encoding);\n }\n\n async *hashBatches(\n asyncIterator: AsyncIterable | Iterable,\n encoding: 'hex' | 'base64' = 'base64'\n ): AsyncIterable {\n const hash = new CRC32();\n for await (const chunk of asyncIterator) {\n hash.update(chunk);\n yield chunk;\n }\n const digest = hash.finalize();\n this.options.crypto?.onEnd?.({hash: encodeNumber(digest, encoding)});\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// From: https://gist.github.com/wqli78/1330293/6d85cc967f32cccfcbad94ae7d088a3dcfc14bd9\n// CRC32 doesn't appear to be supported natively by crypto-js\n\n// import {toBuffer} from '@loaders.gl/loader-utils';\n// import {calculate as sse4calculate} from 'sse4_crc32';\n\n/**\n * Calculates the CRC32C checksum of a string.\n */\nexport default class CRC32C {\n options;\n crc: number;\n\n constructor(options = {}) {\n this.options = options;\n this.crc = ~0;\n }\n\n update(arrayBuffer) {\n const byteArray = new Uint8Array(arrayBuffer);\n const CRC32_TABLE = getCRC32Table();\n for (let i = 0; i < byteArray.length; i++) {\n this.crc = CRC32_TABLE[(this.crc ^ byteArray[i]) & 0xff] ^ (this.crc >>> 8);\n }\n return this;\n }\n\n finalize() {\n this.crc = (this.crc ^ -1) >>> 0;\n return this.crc;\n }\n}\n\n/**\n * This code is a manual javascript translation of c code generated by\n * pycrc 0.7.1 (http://www.tty1.net/pycrc/). Command line used:\n * './pycrc.py --model=crc-32c --generate c --algorithm=table-driven'\n */\n\n// Note: Using a typed array here doubles the speed of the cipher\nconst CRC32C_TABLE = Int32Array.of(\n 0x00000000,\n 0xf26b8303,\n 0xe13b70f7,\n 0x1350f3f4,\n 0xc79a971f,\n 0x35f1141c,\n 0x26a1e7e8,\n 0xd4ca64eb,\n 0x8ad958cf,\n 0x78b2dbcc,\n 0x6be22838,\n 0x9989ab3b,\n 0x4d43cfd0,\n 0xbf284cd3,\n 0xac78bf27,\n 0x5e133c24,\n 0x105ec76f,\n 0xe235446c,\n 0xf165b798,\n 0x030e349b,\n 0xd7c45070,\n 0x25afd373,\n 0x36ff2087,\n 0xc494a384,\n 0x9a879fa0,\n 0x68ec1ca3,\n 0x7bbcef57,\n 0x89d76c54,\n 0x5d1d08bf,\n 0xaf768bbc,\n 0xbc267848,\n 0x4e4dfb4b,\n 0x20bd8ede,\n 0xd2d60ddd,\n 0xc186fe29,\n 0x33ed7d2a,\n 0xe72719c1,\n 0x154c9ac2,\n 0x061c6936,\n 0xf477ea35,\n 0xaa64d611,\n 0x580f5512,\n 0x4b5fa6e6,\n 0xb93425e5,\n 0x6dfe410e,\n 0x9f95c20d,\n 0x8cc531f9,\n 0x7eaeb2fa,\n 0x30e349b1,\n 0xc288cab2,\n 0xd1d83946,\n 0x23b3ba45,\n 0xf779deae,\n 0x05125dad,\n 0x1642ae59,\n 0xe4292d5a,\n 0xba3a117e,\n 0x4851927d,\n 0x5b016189,\n 0xa96ae28a,\n 0x7da08661,\n 0x8fcb0562,\n 0x9c9bf696,\n 0x6ef07595,\n 0x417b1dbc,\n 0xb3109ebf,\n 0xa0406d4b,\n 0x522bee48,\n 0x86e18aa3,\n 0x748a09a0,\n 0x67dafa54,\n 0x95b17957,\n 0xcba24573,\n 0x39c9c670,\n 0x2a993584,\n 0xd8f2b687,\n 0x0c38d26c,\n 0xfe53516f,\n 0xed03a29b,\n 0x1f682198,\n 0x5125dad3,\n 0xa34e59d0,\n 0xb01eaa24,\n 0x42752927,\n 0x96bf4dcc,\n 0x64d4cecf,\n 0x77843d3b,\n 0x85efbe38,\n 0xdbfc821c,\n 0x2997011f,\n 0x3ac7f2eb,\n 0xc8ac71e8,\n 0x1c661503,\n 0xee0d9600,\n 0xfd5d65f4,\n 0x0f36e6f7,\n 0x61c69362,\n 0x93ad1061,\n 0x80fde395,\n 0x72966096,\n 0xa65c047d,\n 0x5437877e,\n 0x4767748a,\n 0xb50cf789,\n 0xeb1fcbad,\n 0x197448ae,\n 0x0a24bb5a,\n 0xf84f3859,\n 0x2c855cb2,\n 0xdeeedfb1,\n 0xcdbe2c45,\n 0x3fd5af46,\n 0x7198540d,\n 0x83f3d70e,\n 0x90a324fa,\n 0x62c8a7f9,\n 0xb602c312,\n 0x44694011,\n 0x5739b3e5,\n 0xa55230e6,\n 0xfb410cc2,\n 0x092a8fc1,\n 0x1a7a7c35,\n 0xe811ff36,\n 0x3cdb9bdd,\n 0xceb018de,\n 0xdde0eb2a,\n 0x2f8b6829,\n 0x82f63b78,\n 0x709db87b,\n 0x63cd4b8f,\n 0x91a6c88c,\n 0x456cac67,\n 0xb7072f64,\n 0xa457dc90,\n 0x563c5f93,\n 0x082f63b7,\n 0xfa44e0b4,\n 0xe9141340,\n 0x1b7f9043,\n 0xcfb5f4a8,\n 0x3dde77ab,\n 0x2e8e845f,\n 0xdce5075c,\n 0x92a8fc17,\n 0x60c37f14,\n 0x73938ce0,\n 0x81f80fe3,\n 0x55326b08,\n 0xa759e80b,\n 0xb4091bff,\n 0x466298fc,\n 0x1871a4d8,\n 0xea1a27db,\n 0xf94ad42f,\n 0x0b21572c,\n 0xdfeb33c7,\n 0x2d80b0c4,\n 0x3ed04330,\n 0xccbbc033,\n 0xa24bb5a6,\n 0x502036a5,\n 0x4370c551,\n 0xb11b4652,\n 0x65d122b9,\n 0x97baa1ba,\n 0x84ea524e,\n 0x7681d14d,\n 0x2892ed69,\n 0xdaf96e6a,\n 0xc9a99d9e,\n 0x3bc21e9d,\n 0xef087a76,\n 0x1d63f975,\n 0x0e330a81,\n 0xfc588982,\n 0xb21572c9,\n 0x407ef1ca,\n 0x532e023e,\n 0xa145813d,\n 0x758fe5d6,\n 0x87e466d5,\n 0x94b49521,\n 0x66df1622,\n 0x38cc2a06,\n 0xcaa7a905,\n 0xd9f75af1,\n 0x2b9cd9f2,\n 0xff56bd19,\n 0x0d3d3e1a,\n 0x1e6dcdee,\n 0xec064eed,\n 0xc38d26c4,\n 0x31e6a5c7,\n 0x22b65633,\n 0xd0ddd530,\n 0x0417b1db,\n 0xf67c32d8,\n 0xe52cc12c,\n 0x1747422f,\n 0x49547e0b,\n 0xbb3ffd08,\n 0xa86f0efc,\n 0x5a048dff,\n 0x8ecee914,\n 0x7ca56a17,\n 0x6ff599e3,\n 0x9d9e1ae0,\n 0xd3d3e1ab,\n 0x21b862a8,\n 0x32e8915c,\n 0xc083125f,\n 0x144976b4,\n 0xe622f5b7,\n 0xf5720643,\n 0x07198540,\n 0x590ab964,\n 0xab613a67,\n 0xb831c993,\n 0x4a5a4a90,\n 0x9e902e7b,\n 0x6cfbad78,\n 0x7fab5e8c,\n 0x8dc0dd8f,\n 0xe330a81a,\n 0x115b2b19,\n 0x020bd8ed,\n 0xf0605bee,\n 0x24aa3f05,\n 0xd6c1bc06,\n 0xc5914ff2,\n 0x37faccf1,\n 0x69e9f0d5,\n 0x9b8273d6,\n 0x88d28022,\n 0x7ab90321,\n 0xae7367ca,\n 0x5c18e4c9,\n 0x4f48173d,\n 0xbd23943e,\n 0xf36e6f75,\n 0x0105ec76,\n 0x12551f82,\n 0xe03e9c81,\n 0x34f4f86a,\n 0xc69f7b69,\n 0xd5cf889d,\n 0x27a40b9e,\n 0x79b737ba,\n 0x8bdcb4b9,\n 0x988c474d,\n 0x6ae7c44e,\n 0xbe2da0a5,\n 0x4c4623a6,\n 0x5f16d052,\n 0xad7d5351\n);\n\nfunction getCRC32Table() {\n return CRC32C_TABLE;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {Hash} from './hash';\nimport CRC32C from './algorithms/crc32c';\nimport {encodeNumber} from './utils/digest-utils';\n\n/**\n * A transform that calculates CRC32c Hash\n */\nexport class CRC32CHash extends Hash {\n readonly name = 'crc32c';\n\n options;\n\n /**\n * Atomic hash calculation\n * @returns base64 encoded hash\n */\n constructor(options = {}) {\n super();\n this.options = {crypto: {}, ...options};\n }\n\n /**\n * Atomic hash calculation\n * @returns base64 encoded hash\n */\n async hash(input: ArrayBuffer, encoding: 'hex' | 'base64'): Promise {\n return this.hashSync(input, encoding);\n }\n\n hashSync(input: ArrayBuffer, encoding: 'hex' | 'base64'): string {\n const hash = new CRC32C(this.options);\n hash.update(input);\n const digest = hash.finalize();\n return encodeNumber(digest, encoding);\n }\n\n // runInBatches inherited\n\n async *hashBatches(\n asyncIterator: AsyncIterable | Iterable,\n encoding: 'hex' | 'base64' = 'base64'\n ): AsyncIterable {\n const hash = new CRC32C(this.options);\n for await (const chunk of asyncIterator) {\n hash.update(chunk);\n yield chunk;\n }\n const digest = hash.finalize();\n this.options.crypto?.onEnd?.({hash: encodeNumber(digest, encoding)});\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* eslint-disable */\n// @ts-nocheck\n/* !\n * MD5 WebAssembly\n * https://github.com/briantbutton/md5-wasm\n * (c) 2020 Brian Todd Button\n * Released under the MIT license\n */\n\n// *-*=* *=*-* *-*=* *=*-* *-*=* *=*-* *-*=* *=*-* *-*=* *=*-* *-*=* *=*-*\n// This contains two functions designed to achieve the same thing\n// -> A WebAssembly function for larger files\n// -> A JavaScript function for the others\n//\nconst atb = typeof atob === 'function' ? atob : typeof Buffer === 'function' ? nodeATOB : identity,\n wasmB64 = atb(\n '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'\n ),\n wasm = WebAssembly && atb !== identity ? str2AB(wasmB64).buffer : false,\n crypt = makeCrypt(),\n biteSize = 240 * 16 * 16,\n bounder = Math.floor(biteSize * 16 * 1.066666667),\n upperLimit = 268435456 - 65536,\n parmTypeErrStr = 'Parameter must be Buffer, ArrayBuffer or Uint8Array',\n tooBigErrStr = 'Parameter exceeds max size of 255.9 Mbytes';\n\nif (!wasm) {\n console.log(\n 'WebAssembly not available or WASM module could not be decoded; md5WASM will fall back to JavaScript'\n );\n}\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - -\n// This returns a Promise-like object (I was farting around, so sue me)\n// which supports '.catch' and '.then'\nexport default function md5WASM(data) {\n var mem, memView, importObj, imports, len, buff, thenFun, catchFun, result, endTime;\n const md5JS = makeMD5JS(),\n md5WA = makeMD5WA(),\n returnObj = {},\n startTime = new Date().getTime();\n\n returnObj['then'] = function (fun) {\n thenFun = fun;\n getThen();\n return returnObj;\n };\n returnObj['catch'] = function (fun) {\n catchFun = fun;\n return returnObj;\n };\n\n // Sift the incoming parameter and the environment\n // If we are good, set buff\n if (true) {\n if (data && typeof data === 'object') {\n if (typeof Buffer === 'function' && data.constructor === Buffer) {\n buff = data;\n } else {\n if (data.constructor === Uint8Array || data.constructor === ArrayBuffer) {\n buff = data.constructor === ArrayBuffer ? new Uint8Array(data) : data;\n } else {\n getCatch(new TypeError(parmTypeErrStr));\n }\n }\n } else {\n getCatch(new TypeError(parmTypeErrStr));\n }\n }\n\n // - - - - - - - - - - - - - - - - - - - - - - - - - -\n // Make some choices based on the size of the incoming data\n // ~ Use WebAssembly or just JavaScript\n // ~ If Webassemly, allocate appropriate memory\n //\n if (buff) {\n len = buff.length;\n if (wasm && len > bounder) {\n if (len > upperLimit) {\n getCatch(new Error(tooBigErrStr));\n } else {\n mem = new WebAssembly.Memory({\n initial: len > 32000000 ? (len > 64000000 ? (len > 128000000 ? 4096 : 2048) : 1024) : 512\n });\n memView = new Uint32Array(mem.buffer);\n imports = {mem: mem, log: console.log};\n importObj = {imports};\n WebAssembly.instantiate(wasm, importObj).then(giterdone);\n }\n } else {\n getThen(md5JS(buff));\n }\n }\n return returnObj;\n\n function giterdone(obj) {\n getThen(md5WA(buff, obj.instance.exports, memView));\n }\n function getThen(r) {\n var res = Boolean(r) ? r : result;\n if (Boolean(r)) {\n endTime = new Date().getTime();\n }\n if (typeof thenFun === 'function') {\n if (Boolean(res)) {\n thenFun(res, endTime - startTime);\n thenFun = catchFun = null;\n }\n } else {\n if (Boolean(r)) {\n result = r;\n }\n }\n }\n function getCatch(err) {\n if (typeof catchFun === 'function') {\n catchFun(err);\n }\n }\n}\n\nfunction makeMD5WA() {\n var loop, loops;\n var getA, setA, getB, setB, getC, setC, getD, setD, getX, setX, memView;\n\n var md5WA = function (message) {\n var m00,\n m01,\n m02,\n m03,\n m04,\n m05,\n m06,\n m07,\n m08,\n m09,\n m10,\n m11,\n m12,\n m13,\n m14,\n m15,\n aa,\n bb,\n cc,\n dd,\n m,\n k;\n var qwerty = new Date().getTime();\n var md5Used = 0;\n\n var a = 1732584193,\n b = -271733879,\n c = -1732584194,\n d = 271733878,\n i = 0,\n l = message.length * 8,\n len;\n\n len = bytesToWordsNewer(message, memView);\n memView[l >>> 5] |= 0x80 << l % 32;\n memView[(((l + 64) >>> 9) << 4) + 14] = l;\n len = (((l + 64) >>> 9) << 4) + 15;\n m = memView;\n\n // console.log(\"first loop took \"+((new Date().getTime())-qwerty)+\"ms\");\n\n while (i < len) {\n if (len > i + bounder) {\n setA(a);\n setB(b);\n setC(c);\n setD(d);\n loops(biteSize);\n i = i + biteSize * 16;\n a = getA();\n b = getB();\n c = getC();\n d = getD();\n md5Used++;\n } else {\n aa = a;\n bb = b;\n cc = c;\n dd = d;\n m00 = m[i + 0] >>> 0;\n m01 = m[i + 1] >>> 0;\n m02 = m[i + 2] >>> 0;\n m03 = m[i + 3] >>> 0;\n m04 = m[i + 4] >>> 0;\n m05 = m[i + 5] >>> 0;\n m06 = m[i + 6] >>> 0;\n m07 = m[i + 7] >>> 0;\n m08 = m[i + 8] >>> 0;\n m09 = m[i + 9] >>> 0;\n m10 = m[i + 10] >>> 0;\n m11 = m[i + 11] >>> 0;\n m12 = m[i + 12] >>> 0;\n m13 = m[i + 13] >>> 0;\n m14 = m[i + 14] >>> 0;\n m15 = m[i + 15] >>> 0;\n\n a = ____(7, 25, a + ((b & c) | (~b & d)) + m00 - 680876936) + b;\n d = ____(12, 20, d + ((a & b) | (~a & c)) + m01 - 389564586) + a;\n c = ____(17, 15, c + ((d & a) | (~d & b)) + m02 + 606105819) + d;\n b = ____(22, 10, b + ((c & d) | (~c & a)) + m03 - 1044525330) + c;\n a = ____(7, 25, a + ((b & c) | (~b & d)) + m04 - 176418897) + b;\n d = ____(12, 20, d + ((a & b) | (~a & c)) + m05 + 1200080426) + a;\n c = ____(17, 15, c + ((d & a) | (~d & b)) + m06 - 1473231341) + d;\n b = ____(22, 10, b + ((c & d) | (~c & a)) + m07 - 45705983) + c;\n a = ____(7, 25, a + ((b & c) | (~b & d)) + m08 + 1770035416) + b;\n d = ____(12, 20, d + ((a & b) | (~a & c)) + m09 - 1958414417) + a;\n c = ____(17, 15, c + ((d & a) | (~d & b)) + m10 - 42063) + d;\n b = ____(22, 10, b + ((c & d) | (~c & a)) + m11 - 1990404162) + c;\n a = ____(7, 25, a + ((b & c) | (~b & d)) + m12 + 1804603682) + b;\n d = ____(12, 20, d + ((a & b) | (~a & c)) + m13 - 40341101) + a;\n c = ____(17, 15, c + ((d & a) | (~d & b)) + m14 - 1502002290) + d;\n b = ____(22, 10, b + ((c & d) | (~c & a)) + m15 + 1236535329) + c;\n\n a = ____(5, 27, a + ((b & d) | (c & ~d)) + m01 - 165796510) + b;\n d = ____(9, 23, d + ((a & c) | (b & ~c)) + m06 - 1069501632) + a;\n c = ____(14, 18, c + ((d & b) | (a & ~b)) + m11 + 643717713) + d;\n b = ____(20, 12, b + ((c & a) | (d & ~a)) + m00 - 373897302) + c;\n a = ____(5, 27, a + ((b & d) | (c & ~d)) + m05 - 701558691) + b;\n d = ____(9, 23, d + ((a & c) | (b & ~c)) + m10 + 38016083) + a;\n c = ____(14, 18, c + ((d & b) | (a & ~b)) + m15 - 660478335) + d;\n b = ____(20, 12, b + ((c & a) | (d & ~a)) + m04 - 405537848) + c;\n a = ____(5, 27, a + ((b & d) | (c & ~d)) + m09 + 568446438) + b;\n d = ____(9, 23, d + ((a & c) | (b & ~c)) + m14 - 1019803690) + a;\n c = ____(14, 18, c + ((d & b) | (a & ~b)) + m03 - 187363961) + d;\n b = ____(20, 12, b + ((c & a) | (d & ~a)) + m08 + 1163531501) + c;\n a = ____(5, 27, a + ((b & d) | (c & ~d)) + m13 - 1444681467) + b;\n d = ____(9, 23, d + ((a & c) | (b & ~c)) + m02 - 51403784) + a;\n c = ____(14, 18, c + ((d & b) | (a & ~b)) + m07 + 1735328473) + d;\n b = ____(20, 12, b + ((c & a) | (d & ~a)) + m12 - 1926607734) + c;\n\n a = ____(4, 28, a + (b ^ c ^ d) + m05 - 378558) + b;\n d = ____(11, 21, d + (a ^ b ^ c) + m08 - 2022574463) + a;\n c = ____(16, 16, c + (d ^ a ^ b) + m11 + 1839030562) + d;\n b = ____(23, 9, b + (c ^ d ^ a) + m14 - 35309556) + c;\n a = ____(4, 28, a + (b ^ c ^ d) + m01 - 1530992060) + b;\n d = ____(11, 21, d + (a ^ b ^ c) + m04 + 1272893353) + a;\n c = ____(16, 16, c + (d ^ a ^ b) + m07 - 155497632) + d;\n b = ____(23, 9, b + (c ^ d ^ a) + m10 - 1094730640) + c;\n a = ____(4, 28, a + (b ^ c ^ d) + m13 + 681279174) + b;\n d = ____(11, 21, d + (a ^ b ^ c) + m00 - 358537222) + a;\n c = ____(16, 16, c + (d ^ a ^ b) + m03 - 722521979) + d;\n b = ____(23, 9, b + (c ^ d ^ a) + m06 + 76029189) + c;\n a = ____(4, 28, a + (b ^ c ^ d) + m09 - 640364487) + b;\n d = ____(11, 21, d + (a ^ b ^ c) + m12 - 421815835) + a;\n c = ____(16, 16, c + (d ^ a ^ b) + m15 + 530742520) + d;\n b = ____(23, 9, b + (c ^ d ^ a) + m02 - 995338651) + c;\n\n a = ____(6, 26, a + (c ^ (b | ~d)) + m00 - 198630844) + b;\n d = ____(10, 22, d + (b ^ (a | ~c)) + m07 + 1126891415) + a;\n c = ____(15, 17, c + (a ^ (d | ~b)) + m14 - 1416354905) + d;\n b = ____(21, 11, b + (d ^ (c | ~a)) + m05 - 57434055) + c;\n a = ____(6, 26, a + (c ^ (b | ~d)) + m12 + 1700485571) + b;\n d = ____(10, 22, d + (b ^ (a | ~c)) + m03 - 1894986606) + a;\n c = ____(15, 17, c + (a ^ (d | ~b)) + m10 - 1051523) + d;\n b = ____(21, 11, b + (d ^ (c | ~a)) + m01 - 2054922799) + c;\n a = ____(6, 26, a + (c ^ (b | ~d)) + m08 + 1873313359) + b;\n d = ____(10, 22, d + (b ^ (a | ~c)) + m15 - 30611744) + a;\n c = ____(15, 17, c + (a ^ (d | ~b)) + m06 - 1560198380) + d;\n b = ____(21, 11, b + (d ^ (c | ~a)) + m13 + 1309151649) + c;\n a = ____(6, 26, a + (c ^ (b | ~d)) + m04 - 145523070) + b;\n d = ____(10, 22, d + (b ^ (a | ~c)) + m11 - 1120210379) + a;\n c = ____(15, 17, c + (a ^ (d | ~b)) + m02 + 718787259) + d;\n b = ____(21, 11, b + (d ^ (c | ~a)) + m09 - 343485551) + c;\n\n i = i + 16;\n a = (a + aa) >>> 0;\n b = (b + bb) >>> 0;\n c = (c + cc) >>> 0;\n d = (d + dd) >>> 0;\n }\n }\n\n // console.log(\"md5WA, elapsed=\"+((new Date().getTime())-qwerty)+(md5Used?\", WebAssembly called \"+md5Used+\" times\":\", WebAssembly not called\"));\n\n return crypt.endian([a, b, c, d]);\n\n function ____(s, t, n) {\n return (n << s) | (n >>> t);\n }\n\n // Convert a byte array to big-endian 32-bit words\n function bytesToWordsNewer(bytes, words) {\n var i = -1,\n l = Math.floor((bytes.length - 1) / 4),\n j = 0,\n b0,\n b1,\n b2,\n b3;\n while (l - 8 > i++) {\n j = i << 2;\n words[i] = bytes[j + 0] | (bytes[j + 1] << 8) | (bytes[j + 2] << 16) | (bytes[j + 3] << 24);\n }\n i--;\n while (l > i++) {\n j = i << 2;\n b0 = typeof bytes[j + 0] === 'undefined' ? 0 : bytes[j + 0];\n b1 = typeof bytes[j + 1] === 'undefined' ? 0 : bytes[j + 1];\n b2 = typeof bytes[j + 2] === 'undefined' ? 0 : bytes[j + 2];\n b3 = typeof bytes[j + 3] === 'undefined' ? 0 : bytes[j + 3];\n words[i] = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24);\n }\n return l + 1;\n }\n };\n\n return function (message, exports, mView, options) {\n var digestbytes;\n loops = exports.loops;\n loop = exports.loop;\n getA = exports.getA;\n getB = exports.getB;\n getC = exports.getC;\n getD = exports.getD;\n getX = exports.getX;\n setA = exports.setA;\n setB = exports.setB;\n setC = exports.setC;\n setD = exports.setD;\n setX = exports.setX;\n memView = mView;\n digestbytes = crypt.wordsToBytes(md5WA(message));\n return options && options.asBytes ? digestbytes : crypt.bytesconvertNumberToHex(digestbytes);\n };\n}\n\nfunction makeMD5JS() {\n var md5JS = function (message, options) {\n var m00,\n m01,\n m02,\n m03,\n m04,\n m05,\n m06,\n m07,\n m08,\n m09,\n m10,\n m11,\n m12,\n m13,\n m14,\n m15,\n aa,\n bb,\n cc,\n dd,\n m;\n var qwerty = new Date().getTime();\n\n // console.log(\"md5 start\");\n\n var a = 1732584193,\n b = -271733879,\n c = -1732584194,\n d = 271733878,\n l = message.length * 8;\n\n m = crypt.bytesToWords(message);\n\n // Swap endian\n for (var j = 0; j < m.length; j++) {\n m[j] =\n (((m[j] << 8) | (m[j] >>> 24)) & 0x00ff00ff) | (((m[j] << 24) | (m[j] >>> 8)) & 0xff00ff00);\n }\n\n // Padding\n m[l >>> 5] |= 0x80 << l % 32;\n m[(((l + 64) >>> 9) << 4) + 14] = l;\n\n for (var i = 0; i < m.length; i += 16) {\n aa = a;\n bb = b;\n cc = c;\n dd = d;\n m00 = m[i + 0] >>> 0;\n m01 = m[i + 1] >>> 0;\n m02 = m[i + 2] >>> 0;\n m03 = m[i + 3] >>> 0;\n m04 = m[i + 4] >>> 0;\n m05 = m[i + 5] >>> 0;\n m06 = m[i + 6] >>> 0;\n m07 = m[i + 7] >>> 0;\n m08 = m[i + 8] >>> 0;\n m09 = m[i + 9] >>> 0;\n m10 = m[i + 10] >>> 0;\n m11 = m[i + 11] >>> 0;\n m12 = m[i + 12] >>> 0;\n m13 = m[i + 13] >>> 0;\n m14 = m[i + 14] >>> 0;\n m15 = m[i + 15] >>> 0;\n\n a = ____(7, 25, a + ((b & c) | (~b & d)) + m00 - 680876936) + b;\n d = ____(12, 20, d + ((a & b) | (~a & c)) + m01 - 389564586) + a;\n c = ____(17, 15, c + ((d & a) | (~d & b)) + m02 + 606105819) + d;\n b = ____(22, 10, b + ((c & d) | (~c & a)) + m03 - 1044525330) + c;\n a = ____(7, 25, a + ((b & c) | (~b & d)) + m04 - 176418897) + b;\n d = ____(12, 20, d + ((a & b) | (~a & c)) + m05 + 1200080426) + a;\n c = ____(17, 15, c + ((d & a) | (~d & b)) + m06 - 1473231341) + d;\n b = ____(22, 10, b + ((c & d) | (~c & a)) + m07 - 45705983) + c;\n a = ____(7, 25, a + ((b & c) | (~b & d)) + m08 + 1770035416) + b;\n d = ____(12, 20, d + ((a & b) | (~a & c)) + m09 - 1958414417) + a;\n c = ____(17, 15, c + ((d & a) | (~d & b)) + m10 - 42063) + d;\n b = ____(22, 10, b + ((c & d) | (~c & a)) + m11 - 1990404162) + c;\n a = ____(7, 25, a + ((b & c) | (~b & d)) + m12 + 1804603682) + b;\n d = ____(12, 20, d + ((a & b) | (~a & c)) + m13 - 40341101) + a;\n c = ____(17, 15, c + ((d & a) | (~d & b)) + m14 - 1502002290) + d;\n b = ____(22, 10, b + ((c & d) | (~c & a)) + m15 + 1236535329) + c;\n\n a = ____(5, 27, a + ((b & d) | (c & ~d)) + m01 - 165796510) + b;\n d = ____(9, 23, d + ((a & c) | (b & ~c)) + m06 - 1069501632) + a;\n c = ____(14, 18, c + ((d & b) | (a & ~b)) + m11 + 643717713) + d;\n b = ____(20, 12, b + ((c & a) | (d & ~a)) + m00 - 373897302) + c;\n a = ____(5, 27, a + ((b & d) | (c & ~d)) + m05 - 701558691) + b;\n d = ____(9, 23, d + ((a & c) | (b & ~c)) + m10 + 38016083) + a;\n c = ____(14, 18, c + ((d & b) | (a & ~b)) + m15 - 660478335) + d;\n b = ____(20, 12, b + ((c & a) | (d & ~a)) + m04 - 405537848) + c;\n a = ____(5, 27, a + ((b & d) | (c & ~d)) + m09 + 568446438) + b;\n d = ____(9, 23, d + ((a & c) | (b & ~c)) + m14 - 1019803690) + a;\n c = ____(14, 18, c + ((d & b) | (a & ~b)) + m03 - 187363961) + d;\n b = ____(20, 12, b + ((c & a) | (d & ~a)) + m08 + 1163531501) + c;\n a = ____(5, 27, a + ((b & d) | (c & ~d)) + m13 - 1444681467) + b;\n d = ____(9, 23, d + ((a & c) | (b & ~c)) + m02 - 51403784) + a;\n c = ____(14, 18, c + ((d & b) | (a & ~b)) + m07 + 1735328473) + d;\n b = ____(20, 12, b + ((c & a) | (d & ~a)) + m12 - 1926607734) + c;\n\n a = ____(4, 28, a + (b ^ c ^ d) + m05 - 378558) + b;\n d = ____(11, 21, d + (a ^ b ^ c) + m08 - 2022574463) + a;\n c = ____(16, 16, c + (d ^ a ^ b) + m11 + 1839030562) + d;\n b = ____(23, 9, b + (c ^ d ^ a) + m14 - 35309556) + c;\n a = ____(4, 28, a + (b ^ c ^ d) + m01 - 1530992060) + b;\n d = ____(11, 21, d + (a ^ b ^ c) + m04 + 1272893353) + a;\n c = ____(16, 16, c + (d ^ a ^ b) + m07 - 155497632) + d;\n b = ____(23, 9, b + (c ^ d ^ a) + m10 - 1094730640) + c;\n a = ____(4, 28, a + (b ^ c ^ d) + m13 + 681279174) + b;\n d = ____(11, 21, d + (a ^ b ^ c) + m00 - 358537222) + a;\n c = ____(16, 16, c + (d ^ a ^ b) + m03 - 722521979) + d;\n b = ____(23, 9, b + (c ^ d ^ a) + m06 + 76029189) + c;\n a = ____(4, 28, a + (b ^ c ^ d) + m09 - 640364487) + b;\n d = ____(11, 21, d + (a ^ b ^ c) + m12 - 421815835) + a;\n c = ____(16, 16, c + (d ^ a ^ b) + m15 + 530742520) + d;\n b = ____(23, 9, b + (c ^ d ^ a) + m02 - 995338651) + c;\n\n a = ____(6, 26, a + (c ^ (b | ~d)) + m00 - 198630844) + b;\n d = ____(10, 22, d + (b ^ (a | ~c)) + m07 + 1126891415) + a;\n c = ____(15, 17, c + (a ^ (d | ~b)) + m14 - 1416354905) + d;\n b = ____(21, 11, b + (d ^ (c | ~a)) + m05 - 57434055) + c;\n a = ____(6, 26, a + (c ^ (b | ~d)) + m12 + 1700485571) + b;\n d = ____(10, 22, d + (b ^ (a | ~c)) + m03 - 1894986606) + a;\n c = ____(15, 17, c + (a ^ (d | ~b)) + m10 - 1051523) + d;\n b = ____(21, 11, b + (d ^ (c | ~a)) + m01 - 2054922799) + c;\n a = ____(6, 26, a + (c ^ (b | ~d)) + m08 + 1873313359) + b;\n d = ____(10, 22, d + (b ^ (a | ~c)) + m15 - 30611744) + a;\n c = ____(15, 17, c + (a ^ (d | ~b)) + m06 - 1560198380) + d;\n b = ____(21, 11, b + (d ^ (c | ~a)) + m13 + 1309151649) + c;\n a = ____(6, 26, a + (c ^ (b | ~d)) + m04 - 145523070) + b;\n d = ____(10, 22, d + (b ^ (a | ~c)) + m11 - 1120210379) + a;\n c = ____(15, 17, c + (a ^ (d | ~b)) + m02 + 718787259) + d;\n b = ____(21, 11, b + (d ^ (c | ~a)) + m09 - 343485551) + c;\n\n a = (a + aa) >>> 0;\n b = (b + bb) >>> 0;\n c = (c + cc) >>> 0;\n d = (d + dd) >>> 0;\n }\n\n // console.log(\"md5JS, elapsed=\"+((new Date().getTime())-qwerty));\n\n return crypt.endian([a, b, c, d]);\n\n function ____(s, t, n) {\n return (n << s) | (n >>> t);\n }\n };\n\n return function (message, options) {\n var digestbytes = crypt.wordsToBytes(md5JS(message, options)),\n result =\n options && options.asBytes ? digestbytes : crypt.bytesconvertNumberToHex(digestbytes);\n return result;\n };\n}\nfunction str2AB(str) {\n var l,\n buff,\n buffView,\n i = -1;\n l = str.length - 1;\n buff = new ArrayBuffer(str.length);\n buffView = new Uint8Array(buff);\n while (l > i++) {\n buffView[i] = str.charCodeAt(i);\n }\n return buffView;\n}\nfunction nodeATOB(str) {\n return Buffer.from(str, 'base64').toString('binary');\n}\nfunction identity(x) {\n return x;\n}\n\nfunction makeCrypt() {\n var base64map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n return {\n rotl: function (n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n endian: function (n) {\n if (n.constructor == Number) {\n return (crypt.rotl(n, 8) & 0x00ff00ff) | (crypt.rotl(n, 24) & 0xff00ff00);\n }\n for (var i = 0; i < n.length; i++) n[i] = crypt.endian(n[i]);\n return n;\n },\n\n bytesToWords: function (bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - (b % 32));\n return words;\n },\n\n wordsToBytes: function (words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - (b % 32))) & 0xff);\n return bytes;\n },\n\n bytesconvertNumberToHex: function (bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xf).toString(16));\n }\n return hex.join('');\n }\n };\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// Fork of https://github.com/briantbutton/md5-wasm under MIT license\nimport {Hash} from './hash';\nimport md5WASM from './algorithms/md5-wasm';\nimport {encodeHex} from './utils/digest-utils';\n\n/**\n * A transform that calculates MD5 hashes, passing data through\n */\nexport class MD5Hash extends Hash {\n readonly name = 'md5';\n readonly options;\n\n constructor(options = {}) {\n super();\n this.options = options;\n }\n\n /**\n * Atomic hash calculation\n * @returns base64 encoded hash\n */\n async hash(input: ArrayBuffer, encoding: 'hex' | 'base64'): Promise {\n const md5Promise = new Promise((resolve, reject) =>\n // @ts-expect-error\n md5WASM(input).then(resolve).catch(reject)\n );\n const hex = await md5Promise;\n return encodeHex(hex, encoding);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {createWorker} from '@loaders.gl/worker-utils';\nimport {CRC32Hash} from '../lib/crc32-hash';\nimport {CRC32CHash} from '../lib/crc32c-hash';\nimport {MD5Hash} from '../lib/md5-hash';\n\n// Assuming we can bundle as module\nexport {CRC32Hash, CRC32CHash};\n\ncreateWorker(async (data, options = {}) => {\n // @ts-ignore\n const {operation, encoding = 'base64'} = options;\n\n switch (operation) {\n case 'crc32':\n return await new CRC32Hash(options).hash(data, encoding);\n case 'crc32c':\n return await new CRC32CHash(options).hash(data, encoding);\n case 'md5':\n return await new MD5Hash(options).hash(data, encoding);\n default:\n throw new Error(`invalid option: ${operation}`);\n }\n});\n"], "mappings": "mBAeO,IAAMA,GAAa,KCAnB,SAASC,GACdC,EACAC,EAAqB,GACrBC,EACgB,CAEhB,IAAMC,EAAeD,GAAa,IAAI,IAEtC,GAAKF,GAEE,GAAII,GAAeJ,CAAM,EAC9BG,EAAa,IAAIH,CAAM,UACdI,GAAeJ,EAAO,MAAM,EAErCG,EAAa,IAAIH,EAAO,MAAM,UACrB,aAAY,OAAOA,CAAM,GAG7B,GAAIC,GAAa,OAAOD,GAAW,SACxC,QAAWK,KAAOL,EAEhBD,GAAgBC,EAAOK,CAAG,EAAGJ,EAAWE,CAAY,GAMxD,OAAOD,IAAc,OAAY,MAAM,KAAKC,CAAY,EAAI,CAAC,CAC/D,CAGA,SAASC,GAAeJ,EAAiB,CACvC,OAAKA,EAGDA,aAAkB,aAGlB,OAAO,YAAgB,KAAeA,aAAkB,aAGxD,OAAO,YAAgB,KAAeA,aAAkB,aAIxD,OAAO,gBAAoB,KAAeA,aAAkB,gBAZvD,EAgBX,CCpDA,eAAeM,GAAgB,CAiB7B,OAAOC,EACT,CAEA,IAAMC,GAAsB,IAAI,IAKXC,EAArB,KAAgC,CAE9B,aAAa,gBAAmC,CAC9C,OAAO,OAAO,KAAS,KAAe,QAAQ,MAAMH,EAAc,CAAC,CACrE,CAKA,WAAW,UAAUI,EAA4E,CAC/F,eAAeC,EAAcC,EAAS,CACpC,IAAML,EAAa,MAAMD,EAAc,EAEjC,CAAC,KAAAO,EAAM,QAAAC,CAAO,EAAIP,EAAaK,EAAUA,EAAQ,KAIvDF,EAAUG,EAAMC,CAAO,CACzB,CAEAR,EAAc,EAAE,KAAMC,GAAe,CAC/BA,GACFA,EAAW,GAAG,UAAYK,GAAY,CACpCD,EAAcC,CAAO,CACvB,CAAC,EAGDL,EAAW,GAAG,OAAQ,IAAM,QAAQ,MAAM,qBAAqB,CAAC,GAGhE,WAAW,UAAYI,CAE3B,CAAC,CACH,CAEA,aAAa,iBACXD,EACA,CACA,IAAIK,EAAmBP,GAAoB,IAAIE,CAAS,EAEnDK,IACHA,EAAmB,MAAOH,GAA+B,CACvD,GAAI,CAACI,GAAeJ,CAAO,EACzB,OAGF,IAAML,EAAa,MAAMD,EAAc,EAEjC,CAAC,KAAAO,EAAM,QAAAC,CAAO,EAAIP,EAAaK,EAAUA,EAAQ,KACvDF,EAAUG,EAAMC,CAAO,CACzB,GAGiB,MAAMR,EAAc,EAErC,QAAQ,MAAM,iBAAiB,EAE/B,WAAW,iBAAiB,UAAWS,CAAgB,CAE3D,CAEA,aAAa,oBACXL,EACA,CACA,IAAMK,EAAmBP,GAAoB,IAAIE,CAAS,EAC1DF,GAAoB,OAAOE,CAAS,EACjB,MAAMJ,EAAc,EAErC,QAAQ,MAAM,iBAAiB,EAE/B,WAAW,oBAAoB,UAAWS,CAAgB,CAE9D,CAOA,aAAa,YAAYF,EAAyBC,EAA8C,CAC9F,IAAMG,EAA0B,CAAC,OAAQ,aAAc,KAAAJ,EAAM,QAAAC,CAAO,EAI9DI,EAAeC,GAAgBL,CAAO,EAEtCP,EAAa,MAAMD,EAAc,EACnCC,EACFA,EAAW,YAAYU,EAAMC,CAAY,EAIzC,WAAW,YAAYD,EAAMC,CAAY,CAE7C,CACF,EAGA,SAASF,GAAeJ,EAA4B,CAClD,GAAM,CAAC,KAAAC,EAAM,KAAAI,CAAI,EAAIL,EACrB,OACEC,IAAS,WACTI,GACA,OAAOA,EAAK,QAAW,UACvBA,EAAK,OAAO,WAAW,YAAY,CAEvC,CC5HA,IAAqBG,EAArB,KAAmC,CACzB,QACA,UACA,QAER,aAAc,CACZ,KAAK,QAAU,CAAC,EAChB,KAAK,UAAY,CAAC,EAClB,KAAK,QAAU,EACjB,CAGA,CAAC,OAAO,aAAa,GAAsB,CACzC,OAAO,IACT,CAGA,KAAKC,EAAgB,CACnB,OAAO,KAAK,QAAQA,CAAK,CAC3B,CAMA,QAAQA,EAAwB,CAC9B,GAAI,KAAK,QACP,MAAM,IAAI,MAAM,QAAQ,EAG1B,GAAI,KAAK,UAAU,OAAS,EAAG,CAC7B,GAAI,KAAK,QAAQ,OAAS,EACxB,MAAM,IAAI,MAAM,wBAAwB,EAE1C,IAAMC,EAAU,KAAK,UAAU,MAAM,EACjCD,aAAiB,MACnBC,EAAQ,OAAOD,CAAK,EAEpBC,EAAQ,QAAQ,CAAC,MAAAD,CAAK,CAAC,CAE3B,MACE,KAAK,QAAQ,KAAKA,CAAK,CAE3B,CAGA,OAAc,CACZ,KAAO,KAAK,UAAU,OAAS,GACb,KAAK,UAAU,MAAM,EAC7B,QAAQ,CAAC,KAAM,EAAI,CAAC,EAE9B,KAAK,QAAU,EACjB,CAKA,MAAwC,CAEtC,GAAI,KAAK,QAAQ,OAAS,EAAG,CAC3B,IAAMA,EAAQ,KAAK,QAAQ,MAAM,EACjC,OAAIA,aAAiB,MACZ,QAAQ,OAAOA,CAAK,EAEtB,QAAQ,QAAQ,CAAC,KAAM,GAAO,MAAAA,CAAK,CAAC,CAC7C,CAGA,GAAI,KAAK,QAAS,CAChB,GAAI,KAAK,UAAU,OAAS,EAC1B,MAAM,IAAI,MAAM,wBAAwB,EAE1C,OAAO,QAAQ,QAAQ,CAAC,KAAM,GAAM,MAAO,MAAS,CAAC,CACvD,CAGA,OAAO,IAAI,QAAQ,CAACE,EAASC,IAAW,CACtC,KAAK,UAAU,KAAK,CAAC,QAAAD,EAAS,OAAAC,CAAM,CAAC,CACvC,CAAC,CACH,CACF,ECnFA,IAAIC,GAAY,EACZC,GACAC,GAWJ,eAAsBC,GACpBC,EACAC,EACe,CACf,GAAI,CAAE,MAAMC,EAAW,eAAe,EACpC,OAGF,IAAMC,EAAyB,CAC7B,QAASC,EACX,EAGAF,EAAW,UAAY,MAAOG,EAAyBC,IAAkC,CACvF,GAAI,CACF,OAAQD,EAAM,CACZ,IAAK,UACH,GAAI,CAACL,EACH,MAAM,IAAI,MAAM,2CAA2C,EAE7D,IAAMO,EAAS,MAAMP,EAAQM,EAAQ,MAAOA,EAAQ,SAAW,CAAC,EAAGH,CAAO,EAC1ED,EAAW,YAAY,OAAQ,CAAC,OAAAK,CAAM,CAAC,EACvC,MAEF,IAAK,qBACH,GAAI,CAACN,EACH,MAAM,IAAI,MAAM,4CAA4C,EAE9DJ,GAAe,IAAIW,EACnBV,GAAUQ,EAAQ,SAAW,CAAC,EAC9B,IAAMG,EAAiBR,EAAiBJ,GAAcC,GAASK,CAAO,EACtE,cAAiBO,KAASD,EACxBP,EAAW,YAAY,eAAgB,CAAC,OAAQQ,CAAK,CAAC,EAExDR,EAAW,YAAY,OAAQ,CAAC,CAAC,EACjC,MAEF,IAAK,cACHL,GAAa,KAAKS,EAAQ,KAAK,EAC/B,MAEF,IAAK,aACHT,GAAa,MAAM,EACnB,MAEF,QACF,CACF,OAASc,EAAP,CACA,IAAMC,EAAUD,aAAiB,MAAQA,EAAM,QAAU,GACzDT,EAAW,YAAY,QAAS,CAAC,MAAOU,CAAO,CAAC,CAClD,CACF,CACF,CAEA,SAASR,GAAoBS,EAA0Bf,EAAU,CAAC,EAAG,CACnE,OAAO,IAAI,QAAQ,CAACgB,EAASC,IAAW,CACtC,IAAMC,EAAKpB,KAILqB,EAAY,CAACZ,EAAcC,IAAkC,CACjE,GAAIA,EAAQ,KAAOU,EAKnB,OAAQX,EAAM,CACZ,IAAK,OACHH,EAAW,oBAAoBe,CAAS,EACxCH,EAAQR,EAAQ,MAAM,EACtB,MAEF,IAAK,QACHJ,EAAW,oBAAoBe,CAAS,EACxCF,EAAOT,EAAQ,KAAK,EACpB,MAEF,QAEF,CACF,EAEAJ,EAAW,iBAAiBe,CAAS,EAGrC,IAAMX,EAAU,CAAC,GAAAU,EAAI,MAAOH,EAAa,QAAAf,CAAO,EAChDI,EAAW,YAAY,UAAWI,CAAO,CAC3C,CAAC,CACH,CCtFO,SAASY,MAA2BC,EAAoD,CAC7F,OAAOC,GAAiCD,CAAO,CACjD,CAMO,SAASC,GACdD,EACa,CAEb,IAAME,EAAeF,EAAQ,IAAKG,GAChCA,aAAmB,YAAc,IAAI,WAAWA,CAAO,EAAIA,CAC7D,EAGMC,EAAaF,EAAa,OAAO,CAACG,EAAQC,IAAeD,EAASC,EAAW,WAAY,CAAC,EAG1FC,EAAS,IAAI,WAAWH,CAAU,EAGpCI,EAAS,EACb,QAAWC,KAAeP,EACxBK,EAAO,IAAIE,EAAaD,CAAM,EAC9BA,GAAUC,EAAY,WAIxB,OAAOF,EAAO,MAChB,CCxBA,eAAsBG,GACpBC,EACsB,CACtB,IAAMC,EAA8B,CAAC,EACrC,cAAiBC,KAASF,EACxBC,EAAa,KAAKC,CAAK,EAEzB,OAAOC,GAAwB,GAAGF,CAAY,CAChD,CChCO,IAAeG,EAAf,KAAoB,CAIzB,YAAYC,EAAuB,CAAC,EAAG,CACrC,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,CAC/C,CAEA,MAAM,SAAyB,CAE/B,CAIA,MAAO,YACLC,EACAC,EAA6B,SACD,CAC5B,IAAMC,EAA8B,CAAC,EACrC,cAAiBC,KAAeH,EAC9BE,EAAa,KAAKC,CAAW,EAC7B,MAAMA,EAER,IAAMC,EAAS,MAAM,KAAK,YAAYF,CAAY,EAC5CG,EAAO,MAAM,KAAK,KAAKD,EAAQH,CAAQ,EAC7C,KAAK,QAAQ,QAAQ,QAAQ,CAAC,KAAAI,CAAI,CAAC,CACrC,CAIA,MAAgB,YAAYL,EAAqC,CAC/D,OAAO,MAAMM,GAA6BN,CAAa,CACzD,CACF,ECrCA,IAAqBO,EAArB,KAA2B,CACzB,IAEA,aAAc,CACZ,KAAK,IAAM,EACb,CAEA,OAAOC,EAAa,CAClB,IAAMC,EAAcC,GAAc,EAC5BC,EAAY,IAAI,WAAWH,CAAW,EAC5C,QAASI,EAAI,EAAGA,EAAID,EAAU,WAAYC,IACxC,KAAK,IAAO,KAAK,MAAQ,EAAKH,GAAa,KAAK,IAAME,EAAUC,CAAC,GAAK,GAAI,EAG5E,OAAO,IACT,CAEA,UAAW,CAMT,YAAK,KAAO,KAAK,IAAM,MAAQ,EACxB,KAAK,GACd,CACF,EAGMC,GAAW,YAAY,GAC3B,EACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,SACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,SACA,WACA,WACA,WACA,SACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,SACA,WACA,WACA,WACA,SACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,SACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,SACF,EAEA,SAASH,IAAgB,CACvB,OAAOG,EACT,CCpSO,SAASC,GAAcC,EAA+B,CAE3DA,EAAS,GAAGA,IAGZ,QAASC,EAAI,EAAGA,EAAID,EAAO,OAAQC,IACjC,GAAID,EAAO,WAAWC,CAAC,EAAI,IACzB,OAAO,KAGX,IAAIC,EAAM,GACV,QAASD,EAAI,EAAGA,EAAID,EAAO,OAAQC,GAAK,EAAG,CAEzC,IAAME,EAAsC,CAAC,OAAW,OAAW,OAAW,MAAS,EACvFA,EAAY,CAAC,EAAIH,EAAO,WAAWC,CAAC,GAAK,EACzCE,EAAY,CAAC,GAAKH,EAAO,WAAWC,CAAC,EAAI,IAAS,EAC9CD,EAAO,OAASC,EAAI,IACtBE,EAAY,CAAC,GAAKH,EAAO,WAAWC,EAAI,CAAC,GAAK,EAC9CE,EAAY,CAAC,GAAKH,EAAO,WAAWC,EAAI,CAAC,EAAI,KAAS,GAEpDD,EAAO,OAASC,EAAI,IAEtBE,EAAY,CAAC,GAAKH,EAAO,WAAWC,EAAI,CAAC,GAAK,EAC9CE,EAAY,CAAC,EAAIH,EAAO,WAAWC,EAAI,CAAC,EAAI,IAE9C,QAASG,EAAI,EAAGA,EAAID,EAAY,OAAQC,IAClC,OAAOD,EAAYC,CAAC,EAAM,IAC5BF,GAAO,IAEPA,GAAOG,GAAWF,EAAYC,CAAC,CAAC,CAGtC,CACA,OAAOF,CACT,CAsGA,SAASI,GAAWC,EAAK,CACvB,GAAIA,EAAM,GACR,OAAO,OAAO,aAAaA,EAAM,IAAI,WAAW,CAAC,CAAC,EAEpD,GAAIA,EAAM,GACR,OAAO,OAAO,aAAaA,EAAM,GAAK,IAAI,WAAW,CAAC,CAAC,EAEzD,GAAIA,EAAM,GACR,OAAO,OAAO,aAAaA,EAAM,GAAK,IAAI,WAAW,CAAC,CAAC,EAEzD,GAAIA,IAAQ,GACV,MAAO,IAET,GAAIA,IAAQ,GACV,MAAO,GAIX,CCxJO,SAASC,EAAaC,EAAgBC,EAAoC,CAC/E,OAAQA,EAAU,CAChB,IAAK,MACH,OAAOC,GAAmBF,CAAM,EAClC,IAAK,SACH,OAAOG,GAAmBD,GAAmBF,CAAM,CAAC,EACtD,QACE,MAAM,IAAI,MAAMC,CAAQ,CAC5B,CACF,CAGO,SAASG,GAAUC,EAAaJ,EAAoC,CACzE,OAAQA,EAAU,CAChB,IAAK,MACH,OAAOI,EACT,IAAK,SACH,OAAOF,GAAmBE,CAAG,EAC/B,QACE,MAAM,IAAI,MAAMJ,CAAQ,CAC5B,CACF,CAgBA,SAASK,GAAmBC,EAA2B,CAGjDA,EAAU,OAAS,IAAM,IAC3BA,EAAY,IAAIA,KAGlB,IAAMC,GADUD,EAAU,MAAM,QAAQ,GAAK,CAAC,GACvB,IAAKE,GAAM,OAAO,aAAa,SAASA,EAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAE/E,OAAOC,GAAcF,CAAM,GAAK,EAClC,CAcA,SAASG,GAAmBC,EAAwB,CAClD,IAAMC,EAAYD,EAAO,SAAS,EAAE,EACpC,OAAOC,IAAc,IAAM,IAAIA,IAAcA,CAC/C,CC/DO,IAAMC,GAAN,cAAwBC,CAAK,CACzB,KAAO,QAEhB,QAEA,YAAYC,EAAU,CAAC,EAAG,CACxB,MAAM,EACN,KAAK,QAAU,CAAC,OAAQ,CAAC,EAAG,GAAGA,CAAO,EACtC,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,CAC/C,CAMA,MAAM,KAAKC,EAAoBC,EAA6C,CAC1E,OAAO,KAAK,SAASD,EAAOC,CAAQ,CACtC,CAEA,SAASD,EAAoBC,EAAoC,CAC/D,IAAMC,EAAO,IAAIC,EACjBD,EAAK,OAAOF,CAAK,EACjB,IAAMI,EAASF,EAAK,SAAS,EAC7B,OAAOG,EAAaD,EAAQH,CAAQ,CACtC,CAEA,MAAO,YACLK,EACAL,EAA6B,SACD,CAC5B,IAAMC,EAAO,IAAIC,EACjB,cAAiBI,KAASD,EACxBJ,EAAK,OAAOK,CAAK,EACjB,MAAMA,EAER,IAAMH,EAASF,EAAK,SAAS,EAC7B,KAAK,QAAQ,QAAQ,QAAQ,CAAC,KAAMG,EAAaD,EAAQH,CAAQ,CAAC,CAAC,CACrE,CACF,ECpCA,IAAqBO,EAArB,KAA4B,CAC1B,QACA,IAEA,YAAYC,EAAU,CAAC,EAAG,CACxB,KAAK,QAAUA,EACf,KAAK,IAAM,EACb,CAEA,OAAOC,EAAa,CAClB,IAAMC,EAAY,IAAI,WAAWD,CAAW,EACtCE,EAAcC,GAAc,EAClC,QAASC,EAAI,EAAGA,EAAIH,EAAU,OAAQG,IACpC,KAAK,IAAMF,GAAa,KAAK,IAAMD,EAAUG,CAAC,GAAK,GAAI,EAAK,KAAK,MAAQ,EAE3E,OAAO,IACT,CAEA,UAAW,CACT,YAAK,KAAO,KAAK,IAAM,MAAQ,EACxB,KAAK,GACd,CACF,EASMC,GAAe,WAAW,GAC9B,EACA,WACA,WACA,UACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,UACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,UACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,UACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,UACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,UACA,WACA,UACA,UACA,WACA,WACA,UACA,UACA,WACA,SACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,UACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,SACA,WACA,UACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,SACA,UACA,WACA,UACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACF,EAEA,SAASF,IAAgB,CACvB,OAAOE,EACT,CCtSO,IAAMC,GAAN,cAAyBC,CAAK,CAC1B,KAAO,SAEhB,QAMA,YAAYC,EAAU,CAAC,EAAG,CACxB,MAAM,EACN,KAAK,QAAU,CAAC,OAAQ,CAAC,EAAG,GAAGA,CAAO,CACxC,CAMA,MAAM,KAAKC,EAAoBC,EAA6C,CAC1E,OAAO,KAAK,SAASD,EAAOC,CAAQ,CACtC,CAEA,SAASD,EAAoBC,EAAoC,CAC/D,IAAMC,EAAO,IAAIC,EAAO,KAAK,OAAO,EACpCD,EAAK,OAAOF,CAAK,EACjB,IAAMI,EAASF,EAAK,SAAS,EAC7B,OAAOG,EAAaD,EAAQH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", "names": ["parentPort", "getTransferList", "object", "recursive", "transfers", "transfersSet", "isTransferable", "key", "getParentPort", "parentPort", "onMessageWrapperMap", "WorkerBody", "onMessage", "handleMessage", "message", "type", "payload", "onMessageWrapper", "isKnownMessage", "data", "transferList", "getTransferList", "AsyncQueue", "value", "settler", "resolve", "reject", "requestId", "inputBatches", "options", "createWorker", "process", "processInBatches", "WorkerBody", "context", "processOnMainThread", "type", "payload", "result", "AsyncQueue", "resultIterator", "batch", "error", "message", "arrayBuffer", "resolve", "reject", "id", "onMessage", "concatenateArrayBuffers", "sources", "concatenateArrayBuffersFromArray", "sourceArrays", "source2", "byteLength", "length", "typedArray", "result", "offset", "sourceArray", "concatenateArrayBuffersAsync", "asyncIterator", "arrayBuffers", "chunk", "concatenateArrayBuffers", "Hash", "options", "asyncIterator", "encoding", "arrayBuffers", "arrayBuffer", "output", "hash", "concatenateArrayBuffersAsync", "CRC32", "arrayBuffer", "CRC32_TABLE", "getCRC32Table", "byteArray", "i", "CRC32TAB", "asciiToBase64", "string", "i", "out", "groupsOfSix", "j", "btoaLookup", "btoaLookup", "idx", "encodeNumber", "number", "encoding", "convertNumberToHex", "convertHexToBase64", "encodeHex", "hex", "convertHexToBase64", "hexstring", "string", "a", "asciiToBase64", "convertNumberToHex", "cipher", "hexString", "CRC32Hash", "Hash", "options", "input", "encoding", "hash", "CRC32", "digest", "encodeNumber", "asyncIterator", "chunk", "CRC32C", "options", "arrayBuffer", "byteArray", "CRC32_TABLE", "getCRC32Table", "i", "CRC32C_TABLE", "CRC32CHash", "Hash", "options", "input", "encoding", "hash", "CRC32C", "digest", "encodeNumber", "asyncIterator", "chunk", "atb", "nodeATOB", "identity", "wasmB64", "wasm", "str2AB", "crypt", "makeCrypt", "biteSize", "bounder", "upperLimit", "parmTypeErrStr", "tooBigErrStr", "md5WASM", "data", "mem", "memView", "importObj", "imports", "len", "buff", "thenFun", "catchFun", "result", "endTime", "md5JS", "makeMD5JS", "md5WA", "makeMD5WA", "returnObj", "startTime", "fun", "getThen", "getCatch", "giterdone", "obj", "r", "res", "err", "loop", "loops", "getA", "setA", "getB", "setB", "getC", "setC", "getD", "setD", "getX", "setX", "message", "m00", "m01", "m02", "m03", "m04", "m05", "m06", "m07", "m08", "m09", "m10", "m11", "m12", "m13", "m14", "m15", "aa", "bb", "cc", "dd", "m", "k", "qwerty", "md5Used", "a", "b", "d", "i", "l", "bytesToWordsNewer", "____", "s", "t", "n", "bytes", "words", "j", "b0", "b1", "b2", "b3", "exports", "mView", "options", "digestbytes", "c", "str", "buffView", "x", "base64map", "hex", "MD5Hash", "Hash", "options", "input", "encoding", "hex", "resolve", "reject", "md5WASM", "encodeHex", "createWorker", "data", "options", "operation", "encoding", "CRC32Hash", "CRC32CHash", "MD5Hash"] }