@wp-playground/storage 3.0.15 → 3.0.18

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.
package/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../packages/playground/storage/src/lib/github.ts","../../../../packages/playground/storage/src/lib/changeset.ts","../../../../packages/playground/storage/src/lib/browser-fs.ts","../../../../isomorphic-git/src/utils/fromValue.js","../../../../isomorphic-git/src/utils/getIterator.js","../../../../isomorphic-git/src/utils/StreamReader.js","../../../../isomorphic-git/src/utils/padHex.js","../../../../isomorphic-git/src/models/GitPktLine.js","../../../../isomorphic-git/src/errors/BaseError.js","../../../../isomorphic-git/src/errors/InternalError.js","../../../../isomorphic-git/src/errors/UnsafeFilepathError.js","../../../../isomorphic-git/src/utils/compareStrings.js","../../../../isomorphic-git/src/utils/comparePath.js","../../../../isomorphic-git/src/utils/compareTreeEntryPath.js","../../../../isomorphic-git/src/models/GitTree.js","../../../../isomorphic-git/src/utils/formatAuthor.js","../../../../isomorphic-git/src/utils/normalizeNewlines.js","../../../../isomorphic-git/src/utils/parseAuthor.js","../../../../isomorphic-git/src/models/GitAnnotatedTag.js","../../../../isomorphic-git/src/utils/indent.js","../../../../isomorphic-git/src/utils/outdent.js","../../../../isomorphic-git/src/models/GitCommit.js","../../../../isomorphic-git/src/models/GitObject.js","../../../../isomorphic-git/src/utils/BufferCursor.js","../../../../isomorphic-git/src/utils/applyDelta.js","../../../../isomorphic-git/src/utils/git-list-pack.js","../../../../isomorphic-git/src/utils/inflate.js","../../../../node_modules/inherits/inherits_browser.js","../../../../node_modules/base64-js/index.js","../../../../node_modules/ieee754/index.js","../../../../node_modules/buffer/index.js","../../../../node_modules/safe-buffer/index.js","../../../../node_modules/isarray/index.js","../../../../node_modules/es-errors/type.js","../../../../node_modules/es-object-atoms/index.js","../../../../node_modules/es-errors/index.js","../../../../node_modules/es-errors/eval.js","../../../../node_modules/es-errors/range.js","../../../../node_modules/es-errors/ref.js","../../../../node_modules/es-errors/syntax.js","../../../../node_modules/es-errors/uri.js","../../../../node_modules/math-intrinsics/abs.js","../../../../node_modules/math-intrinsics/floor.js","../../../../node_modules/math-intrinsics/max.js","../../../../node_modules/math-intrinsics/min.js","../../../../node_modules/math-intrinsics/pow.js","../../../../node_modules/math-intrinsics/round.js","../../../../node_modules/math-intrinsics/isNaN.js","../../../../node_modules/math-intrinsics/sign.js","../../../../node_modules/gopd/gOPD.js","../../../../node_modules/gopd/index.js","../../../../node_modules/es-define-property/index.js","../../../../node_modules/has-symbols/shams.js","../../../../node_modules/has-symbols/index.js","../../../../node_modules/get-proto/Reflect.getPrototypeOf.js","../../../../node_modules/get-proto/Object.getPrototypeOf.js","../../../../node_modules/function-bind/implementation.js","../../../../node_modules/function-bind/index.js","../../../../node_modules/call-bind-apply-helpers/functionCall.js","../../../../node_modules/call-bind-apply-helpers/functionApply.js","../../../../node_modules/call-bind-apply-helpers/reflectApply.js","../../../../node_modules/call-bind-apply-helpers/actualApply.js","../../../../node_modules/call-bind-apply-helpers/index.js","../../../../node_modules/dunder-proto/get.js","../../../../node_modules/get-proto/index.js","../../../../node_modules/hasown/index.js","../../../../node_modules/get-intrinsic/index.js","../../../../node_modules/call-bound/index.js","../../../../node_modules/is-callable/index.js","../../../../node_modules/for-each/index.js","../../../../node_modules/possible-typed-array-names/index.js","../../../../node_modules/available-typed-arrays/index.js","../../../../node_modules/define-data-property/index.js","../../../../node_modules/has-property-descriptors/index.js","../../../../node_modules/set-function-length/index.js","../../../../node_modules/call-bind-apply-helpers/applyBind.js","../../../../node_modules/call-bind/index.js","../../../../node_modules/has-tostringtag/shams.js","../../../../node_modules/which-typed-array/index.js","../../../../node_modules/is-typed-array/index.js","../../../../node_modules/typed-array-buffer/index.js","../../../../node_modules/to-buffer/index.js","../../../../node_modules/sha.js/hash.js","../../../../node_modules/sha.js/sha1.js","../../../../isomorphic-git/src/utils/toHex.js","../../../../isomorphic-git/src/utils/shasum.js","../../../../isomorphic-git/src/models/GitPackIndex.js","../../../../isomorphic-git/src/errors/InvalidOidError.js","../../../../isomorphic-git/src/errors/ObjectTypeError.js","../../../../isomorphic-git/src/utils/normalizeMode.js","../../../../isomorphic-git/src/utils/normalizeStats.js","../../../../isomorphic-git/src/models/GitIndex.js","../../../../isomorphic-git/src/utils/forAwait.js","../../../../isomorphic-git/src/utils/collect.js","../../../../isomorphic-git/src/utils/FIFO.js","../../../../isomorphic-git/src/models/GitSideBand.js","../../../../isomorphic-git/src/wire/parseUploadPackResponse.js","../../../../packages/playground/storage/src/lib/git-sparse-checkout.ts","../../../../packages/playground/storage/src/lib/git-create-dotgit-directory.ts","../../../../packages/playground/storage/src/lib/paths.ts","../../../../packages/playground/storage/src/lib/filesystems.ts"],"sourcesContent":["import { Semaphore } from '@php-wasm/util';\nimport { Octokit } from 'octokit';\nimport type { Changeset } from './changeset';\n\nexport type GithubClient = ReturnType<typeof createClient>;\n\nexport function createClient(githubToken: string): Octokit {\n\tconst octokit = new Octokit({\n\t\tauth: githubToken,\n\t});\n\treturn octokit;\n}\n\nexport type Files = Record<string, Uint8Array>;\nexport function filesListToObject(files: any[], root = '') {\n\tif (root.length && !root.endsWith('/')) {\n\t\troot += '/';\n\t}\n\tconst result: Files = {};\n\tfor (const file of files) {\n\t\tif (file.path.startsWith(root)) {\n\t\t\tresult[file.path.substring(root.length)] = file.content;\n\t\t}\n\t}\n\treturn result;\n}\n\nexport interface GetFilesProgress {\n\tfoundFiles: number;\n\tdownloadedFiles: number;\n}\nexport interface GetFilesOptions {\n\tonProgress?: ({ foundFiles, downloadedFiles }: GetFilesProgress) => void;\n\tprogress?: GetFilesProgress;\n}\nexport async function getFilesFromDirectory(\n\toctokit: GithubClient,\n\towner: string,\n\trepo: string,\n\tref: string,\n\tpath: string,\n\toptions: GetFilesOptions = {}\n) {\n\tif (!options.progress) {\n\t\toptions.progress = {\n\t\t\tfoundFiles: 0,\n\t\t\tdownloadedFiles: 0,\n\t\t};\n\t}\n\tconst { onProgress } = options;\n\tconst filePromises: Promise<any>[] = [];\n\tconst directoryPromises: Promise<any>[] = [];\n\n\t// Fetch the content of the directory\n\tconst { data: content } = await octokit.rest.repos.getContent({\n\t\towner,\n\t\trepo,\n\t\tpath,\n\t\tref,\n\t});\n\tif (!Array.isArray(content)) {\n\t\tthrow new Error(\n\t\t\t`Expected the list of files to be an array, but got ${typeof content}`\n\t\t);\n\t}\n\n\tfor (const item of content) {\n\t\tif (item.type === 'file') {\n\t\t\t++options.progress.foundFiles;\n\t\t\tonProgress?.(options.progress);\n\t\t\tfilePromises.push(\n\t\t\t\tgetFileContent(octokit, owner, repo, ref, item).then((file) => {\n\t\t\t\t\t++options.progress!.downloadedFiles;\n\t\t\t\t\tonProgress?.(options.progress!);\n\t\t\t\t\treturn file;\n\t\t\t\t})\n\t\t\t);\n\t\t} else if (item.type === 'dir') {\n\t\t\tdirectoryPromises.push(\n\t\t\t\tgetFilesFromDirectory(\n\t\t\t\t\toctokit,\n\t\t\t\t\towner,\n\t\t\t\t\trepo,\n\t\t\t\t\tref,\n\t\t\t\t\titem.path,\n\t\t\t\t\toptions\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}\n\n\tconst files = await Promise.all(filePromises);\n\tconst filesInDirs = (await Promise.all(directoryPromises)).flatMap(\n\t\t(dir) => dir\n\t);\n\treturn [...files, ...filesInDirs];\n}\n\nconst semaphore = new Semaphore({ concurrency: 15 });\nasync function getFileContent(\n\toctokit: GithubClient,\n\towner: string,\n\trepo: string,\n\tref: string,\n\titem: { path: string; name: string }\n) {\n\tconst release = await semaphore.acquire();\n\ttry {\n\t\tconst { data: fileContent } = await octokit.rest.repos.getContent({\n\t\t\towner,\n\t\t\trepo,\n\t\t\tref,\n\t\t\tpath: item.path,\n\t\t});\n\t\tif (!('content' in fileContent)) {\n\t\t\tthrow new Error(`No content found for ${item.path}`);\n\t\t}\n\t\treturn {\n\t\t\tname: item.name,\n\t\t\tpath: item.path,\n\t\t\tcontent: base64ToUint8Array(fileContent.content),\n\t\t};\n\t} finally {\n\t\trelease();\n\t}\n}\n\nfunction base64ToUint8Array(base64: string) {\n\tconst binaryString = window.atob(base64); // This will convert base64 to binary string\n\tconst len = binaryString.length;\n\tconst bytes = new Uint8Array(len);\n\tfor (let i = 0; i < len; i++) {\n\t\tbytes[i] = binaryString.charCodeAt(i);\n\t}\n\treturn bytes;\n}\n\n/**\n * Usage:\n * > await getArtifact('wordpress', 'wordpress-develop', 5511, 'build.yml')\n *\n * To get the first artifact produced by the \"build.yml\" workflow running\n * as a part of the PR 5511\n *\n * @returns\n */\nexport async function getArtifact(\n\toctokit: GithubClient,\n\towner: string,\n\trepo: string,\n\tpull_number: number,\n\tworkflow_id: string\n) {\n\tconst { data: pullRequest } = await octokit.rest.pulls.get({\n\t\towner,\n\t\trepo,\n\t\tpull_number,\n\t});\n\tconst workflowRuns = await octokit.rest.actions.listWorkflowRuns({\n\t\towner,\n\t\trepo,\n\t\tbranch: pullRequest.head.ref,\n\t\tworkflow_id,\n\t});\n\tconst runId = workflowRuns.data.workflow_runs[0]?.id;\n\tconst artifacts = await octokit.rest.actions.listWorkflowRunArtifacts({\n\t\towner,\n\t\trepo,\n\t\trun_id: runId,\n\t});\n\n\tconst artifact = await octokit.rest.actions.downloadArtifact({\n\t\towner,\n\t\trepo,\n\t\tartifact_id: artifacts.data.artifacts[0].id,\n\t\tarchive_format: 'zip',\n\t});\n\treturn artifact.data;\n}\n\nexport async function mayPush(octokit: Octokit, owner: string, repo: string) {\n\tconst { data: repository, headers } = await octokit.request(\n\t\t'GET /repos/{owner}/{repo}',\n\t\t{\n\t\t\towner,\n\t\t\trepo,\n\t\t}\n\t);\n\tif (!headers['x-oauth-scopes'] || !repository.permissions?.push) {\n\t\treturn false;\n\t}\n\n\t// @TODO Find a way to bubble up the following error earlier than on the\n\t// first push attempt:\n\t// \"organization has enabled OAuth App access restrictions\"\n\treturn true;\n}\n\nexport async function createOrUpdateBranch(\n\toctokit: Octokit,\n\towner: string,\n\trepo: string,\n\tbranch: string,\n\tnewHead: string\n) {\n\tconst branchExists = await octokit\n\t\t.request('GET /repos/{owner}/{repo}/branches/{branch}', {\n\t\t\towner,\n\t\t\trepo,\n\t\t\tbranch,\n\t\t})\n\t\t.then(\n\t\t\t() => true,\n\t\t\t() => false\n\t\t);\n\n\tif (branchExists) {\n\t\tawait octokit.request('PATCH /repos/{owner}/{repo}/git/refs/{ref}', {\n\t\t\towner,\n\t\t\trepo,\n\t\t\tsha: newHead,\n\t\t\tref: `heads/${branch}`,\n\t\t});\n\t} else {\n\t\tawait octokit.request('POST /repos/{owner}/{repo}/git/refs', {\n\t\t\towner,\n\t\t\trepo,\n\t\t\tsha: newHead,\n\t\t\tref: `refs/heads/${branch}`,\n\t\t});\n\t}\n}\n\n/**\n * @param octokit\n * @param owner\n * @param repo\n * @returns The owner of the forked repository\n */\nexport async function fork(octokit: Octokit, owner: string, repo: string) {\n\tconst user = await octokit.request('GET /user');\n\tconst forks = await octokit.request('GET /repos/{owner}/{repo}/forks', {\n\t\towner,\n\t\trepo,\n\t});\n\tconst hasFork = forks.data.find(\n\t\t(fork: any) => fork.owner && fork.owner.login === user.data.login\n\t);\n\n\tif (!hasFork) {\n\t\tawait octokit.request('POST /repos/{owner}/{repo}/forks', {\n\t\t\towner,\n\t\t\trepo,\n\t\t});\n\t}\n\n\treturn user.data.login;\n}\n\nexport async function createCommit(\n\toctokit: Octokit,\n\towner: string,\n\trepo: string,\n\tmessage: string,\n\tparentSha: string,\n\ttreeSha: string\n): Promise<string> {\n\tconst {\n\t\tdata: { sha },\n\t} = await octokit.request('POST /repos/{owner}/{repo}/git/commits', {\n\t\towner,\n\t\trepo,\n\t\tmessage,\n\t\ttree: treeSha,\n\t\tparents: [parentSha],\n\t});\n\n\treturn sha;\n}\n\nexport async function createTree(\n\toctokit: Octokit,\n\towner: string,\n\trepo: string,\n\tparentSha: string,\n\tchangeset: Changeset\n) {\n\tconst tree = await createTreeNodes(\n\t\toctokit,\n\t\towner,\n\t\trepo,\n\t\tparentSha,\n\t\tchangeset\n\t);\n\tif (tree.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst {\n\t\tdata: { sha: newTreeSha },\n\t} = await octokit.request('POST /repos/{owner}/{repo}/git/trees', {\n\t\towner,\n\t\trepo,\n\t\tbase_tree: parentSha,\n\t\ttree,\n\t});\n\treturn newTreeSha;\n}\n\nexport type GitHubTreeNode = {\n\tpath: string;\n\tmode: '100644';\n} & (\n\t| {\n\t\t\tsha: string | null;\n\t }\n\t| {\n\t\t\tcontent: string;\n\t }\n);\nexport async function createTreeNodes(\n\toctokit: Octokit,\n\towner: string,\n\trepo: string,\n\tparentSha: string,\n\tchangeset: Changeset\n): Promise<GitHubTreeNode[]> {\n\tconst blobsPromises = [];\n\tfor (const [path, content] of changeset.create) {\n\t\tblobsPromises.push(createTreeNode(octokit, owner, repo, path, content));\n\t}\n\tfor (const [path, content] of changeset.update) {\n\t\tblobsPromises.push(createTreeNode(octokit, owner, repo, path, content));\n\t}\n\tfor (const path of changeset.delete) {\n\t\tblobsPromises.push(deleteFile(octokit, owner, repo, parentSha, path));\n\t}\n\treturn Promise.all(blobsPromises).then(\n\t\t(blobs) => blobs.filter((blob) => !!blob) as GitHubTreeNode[]\n\t);\n}\n\nconst blobSemaphore = new Semaphore({ concurrency: 10 });\nexport async function createTreeNode(\n\toctokit: Octokit,\n\towner: string,\n\trepo: string,\n\tpath: string,\n\tcontent: string | Uint8Array\n): Promise<GitHubTreeNode> {\n\tconst release = await blobSemaphore.acquire();\n\ttry {\n\t\tif (ArrayBuffer.isView(content)) {\n\t\t\ttry {\n\t\t\t\t// Attempt to decode the byteArray as a UTF-8 string\n\t\t\t\tconst stringContent = new TextDecoder('utf-8', {\n\t\t\t\t\tfatal: true,\n\t\t\t\t}).decode(content);\n\t\t\t\treturn {\n\t\t\t\t\tpath,\n\t\t\t\t\tcontent: stringContent,\n\t\t\t\t\tmode: '100644',\n\t\t\t\t};\n\t\t\t} catch {\n\t\t\t\t// If an error occurs, the byteArray is not valid UTF-8 and we must\n\t\t\t\t// create a blob first\n\t\t\t\tconst {\n\t\t\t\t\tdata: { sha },\n\t\t\t\t} = await octokit.rest.git.createBlob({\n\t\t\t\t\towner,\n\t\t\t\t\trepo,\n\t\t\t\t\tencoding: 'base64',\n\t\t\t\t\tcontent: uint8ArrayToBase64(content),\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\tpath,\n\t\t\t\t\tsha,\n\t\t\t\t\tmode: '100644',\n\t\t\t\t};\n\t\t\t}\n\t\t} else {\n\t\t\t// Content is a string\n\t\t\treturn {\n\t\t\t\tpath,\n\t\t\t\tcontent,\n\t\t\t\tmode: '100644',\n\t\t\t};\n\t\t}\n\t} finally {\n\t\trelease();\n\t}\n}\n\nexport async function deleteFile(\n\toctokit: Octokit,\n\towner: string,\n\trepo: string,\n\tparentSha: string,\n\tpath: string\n): Promise<GitHubTreeNode | undefined> {\n\tconst release = await blobSemaphore.acquire();\n\ttry {\n\t\t// Deleting a non-existent file from a tree leads to an\n\t\t// \"GitRPC::BadObjectState\" error, so we only attempt to delete the file if\n\t\t// it exists.\n\t\tawait octokit.request('HEAD /repos/{owner}/{repo}/contents/:path', {\n\t\t\towner,\n\t\t\trepo,\n\t\t\tref: parentSha,\n\t\t\tpath,\n\t\t});\n\n\t\treturn {\n\t\t\tpath,\n\t\t\tmode: '100644',\n\t\t\tsha: null,\n\t\t};\n\t} catch {\n\t\t// Pass\n\t\treturn undefined;\n\t} finally {\n\t\trelease();\n\t}\n}\n\nfunction uint8ArrayToBase64(bytes: Uint8Array) {\n\tconst binary = [];\n\tconst len = bytes.byteLength;\n\tfor (let i = 0; i < len; i++) {\n\t\tbinary.push(String.fromCharCode(bytes[i]));\n\t}\n\treturn window.btoa(binary.join(''));\n}\n","import type { UniversalPHP } from '@php-wasm/universal';\nimport { joinPaths, normalizePath } from '@php-wasm/util';\n\nexport type IterateFilesOptions = {\n\t/**\n\t * Should yield paths relative to the root directory?\n\t * If false, all paths will be absolute.\n\t */\n\trelativePaths?: boolean;\n\n\t/**\n\t * The root directory that Playground paths start from.\n\t */\n\tplaygroundRoot?: string;\n\n\t/**\n\t * A prefix to add to all paths.\n\t * Only used if `relativePaths` is true.\n\t */\n\tpathPrefix?: string;\n\n\t/**\n\t * A list of paths to exclude from the results.\n\t */\n\texceptPaths?: string[];\n};\n\n/**\n * Iterates over all files in a Playground directory and its subdirectories.\n *\n * @param playground - The Playground/PHP instance.\n * @param root - The root directory to start iterating from.\n * @param options - Optional configuration.\n * @returns All files found in the tree.\n */\nexport async function* iterateFiles(\n\tplayground: UniversalPHP,\n\troot: string,\n\t{ exceptPaths = [] }: IterateFilesOptions = {}\n): AsyncGenerator<FileEntry> {\n\troot = normalizePath(root);\n\t// If the root is be a file, not a directory, then\n\t// just yield it and return immediately.\n\tif (!(await playground.isDir(root))) {\n\t\tif (await playground.fileExists(root)) {\n\t\t\tyield {\n\t\t\t\tpath: root,\n\t\t\t\tread: async () => await playground.readFileAsBuffer(root),\n\t\t\t};\n\t\t}\n\t\treturn;\n\t}\n\n\tconst stack: string[] = [root];\n\twhile (stack.length) {\n\t\tconst currentParent = stack.pop();\n\t\tif (!currentParent) {\n\t\t\treturn;\n\t\t}\n\t\tconst files = await playground.listFiles(currentParent);\n\t\tfor (const file of files) {\n\t\t\tconst absPath = joinPaths(currentParent, file);\n\t\t\tif (exceptPaths.includes(absPath.substring(root.length + 1))) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (await playground.isDir(absPath)) {\n\t\t\t\tstack.push(absPath);\n\t\t\t} else {\n\t\t\t\tyield {\n\t\t\t\t\tpath: absPath,\n\t\t\t\t\tread: async () =>\n\t\t\t\t\t\tawait playground.readFileAsBuffer(absPath),\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport type FileEntry = {\n\tpath: string;\n\tread: () => Promise<Uint8Array>;\n};\n\n/**\n * Represents a set of changes to be applied to a data store.\n */\nexport type Changeset = {\n\t/**\n\t * Created files.\n\t */\n\tcreate: Map<string, Uint8Array>;\n\n\t/**\n\t * Updated files.\n\t */\n\tupdate: Map<string, Uint8Array>;\n\n\t/**\n\t * Deleted files.\n\t */\n\tdelete: Set<string>;\n};\n\n/**\n * Compares two sets of files and returns a changeset object that describes\n * the differences between them.\n *\n * @param filesBefore - A map of file paths to Uint8Array objects representing the contents\n * of the files before the changes.\n * @param filesAfter - An async generator that yields FileEntry objects representing the files\n * after the changes.\n * @returns A changeset object that describes the differences between the two sets of files.\n */\nexport async function changeset(\n\tfilesBefore: Map<string, Uint8Array>,\n\tfilesAfter: AsyncGenerator<FileEntry> | Iterable<FileEntry>\n) {\n\tconst changes: Changeset = {\n\t\tcreate: new Map(),\n\t\tupdate: new Map(),\n\t\tdelete: new Set(),\n\t};\n\n\tconst seenFilesAfter = new Set<string>();\n\tfor await (const fileAfter of filesAfter) {\n\t\tseenFilesAfter.add(fileAfter.path);\n\n\t\tconst before = filesBefore.get(fileAfter.path);\n\t\tconst after = await fileAfter.read();\n\t\tif (before) {\n\t\t\tif (!uint8arraysEqual(before, after)) {\n\t\t\t\tchanges.update.set(fileAfter.path, after);\n\t\t\t}\n\t\t} else {\n\t\t\tchanges.create.set(fileAfter.path, after);\n\t\t}\n\t}\n\n\tfor (const pathBefore of filesBefore.keys()) {\n\t\tif (!seenFilesAfter.has(pathBefore)) {\n\t\t\tchanges.delete.add(pathBefore);\n\t\t}\n\t}\n\n\treturn changes;\n}\n\nfunction uint8arraysEqual(a: Uint8Array, b: Uint8Array): boolean {\n\treturn a.length === b.length && a.every((val, index) => val === b[index]);\n}\n","import type { MountDevice } from '@php-wasm/web';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type * as pleaseLoadTypes from 'wicg-file-system-access';\n\nexport async function directoryHandleFromMountDevice(\n\tdevice: MountDevice\n): Promise<FileSystemDirectoryHandle> {\n\tif (device.type === 'local-fs') {\n\t\treturn device.handle;\n\t}\n\n\treturn opfsPathToDirectoryHandle(device.path);\n}\n\nexport async function opfsPathToDirectoryHandle(\n\topfsPath: string\n): Promise<FileSystemDirectoryHandle> {\n\tconst parts = opfsPath.split('/').filter((p) => p.length > 0);\n\tlet handle = await navigator.storage.getDirectory();\n\tfor (const part of parts) {\n\t\thandle = await handle.getDirectoryHandle(part, { create: true });\n\t}\n\treturn handle;\n}\n\nexport async function directoryHandleToOpfsPath(\n\tdirectoryHandle: FileSystemDirectoryHandle\n): Promise<string> {\n\tconst root = await navigator.storage.getDirectory();\n\tconst pathParts = await root.resolve(directoryHandle);\n\tif (pathParts === null) {\n\t\tthrow new DOMException(\n\t\t\t'Unable to resolve path of OPFS directory handle.',\n\t\t\t'NotFoundError'\n\t\t);\n\t}\n\treturn '/' + pathParts.join('/');\n}\n\nexport async function clearContentsFromMountDevice(mountDevice: MountDevice) {\n\tconst parentHandle = await directoryHandleFromMountDevice(mountDevice);\n\tfor await (const name of parentHandle.keys()) {\n\t\tawait parentHandle.removeEntry(name, {\n\t\t\trecursive: true,\n\t\t});\n\t}\n}\n","// Convert a value to an Async Iterator\n// This will be easier with async generator functions.\nexport function fromValue(value) {\n let queue = [value]\n return {\n next() {\n return Promise.resolve({ done: queue.length === 0, value: queue.pop() })\n },\n return() {\n queue = []\n return {}\n },\n [Symbol.asyncIterator]() {\n return this\n },\n }\n}\n","import { fromValue } from '../utils/fromValue.js'\n\nexport function getIterator(iterable) {\n if (iterable[Symbol.asyncIterator]) {\n return iterable[Symbol.asyncIterator]()\n }\n if (iterable[Symbol.iterator]) {\n return iterable[Symbol.iterator]()\n }\n if (iterable.next) {\n return iterable\n }\n return fromValue(iterable)\n}\n","import { getIterator } from './getIterator.js'\n\n// inspired by 'gartal' but lighter-weight and more battle-tested.\nexport class StreamReader {\n constructor(stream) {\n // TODO: fix usage in bundlers before Buffer dependency is removed #1855\n if (typeof Buffer === 'undefined') {\n throw new Error('Missing Buffer dependency')\n }\n this.stream = getIterator(stream)\n this.buffer = null\n this.cursor = 0\n this.undoCursor = 0\n this.started = false\n this._ended = false\n this._discardedBytes = 0\n }\n\n eof() {\n return this._ended && this.cursor === this.buffer.length\n }\n\n tell() {\n return this._discardedBytes + this.cursor\n }\n\n async byte() {\n if (this.eof()) return\n if (!this.started) await this._init()\n if (this.cursor === this.buffer.length) {\n await this._loadnext()\n if (this._ended) return\n }\n this._moveCursor(1)\n return this.buffer[this.undoCursor]\n }\n\n async chunk() {\n if (this.eof()) return\n if (!this.started) await this._init()\n if (this.cursor === this.buffer.length) {\n await this._loadnext()\n if (this._ended) return\n }\n this._moveCursor(this.buffer.length)\n return this.buffer.slice(this.undoCursor, this.cursor)\n }\n\n async read(n) {\n if (this.eof()) return\n if (!this.started) await this._init()\n if (this.cursor + n > this.buffer.length) {\n this._trim()\n await this._accumulate(n)\n }\n this._moveCursor(n)\n return this.buffer.slice(this.undoCursor, this.cursor)\n }\n\n async skip(n) {\n if (this.eof()) return\n if (!this.started) await this._init()\n if (this.cursor + n > this.buffer.length) {\n this._trim()\n await this._accumulate(n)\n }\n this._moveCursor(n)\n }\n\n async undo() {\n this.cursor = this.undoCursor\n }\n\n async _next() {\n this.started = true\n let { done, value } = await this.stream.next()\n if (done) {\n this._ended = true\n if (!value) return Buffer.alloc(0)\n }\n if (value) {\n value = Buffer.from(value)\n }\n return value\n }\n\n _trim() {\n // Throw away parts of the buffer we don't need anymore\n // assert(this.cursor <= this.buffer.length)\n this.buffer = this.buffer.slice(this.undoCursor)\n this.cursor -= this.undoCursor\n this._discardedBytes += this.undoCursor\n this.undoCursor = 0\n }\n\n _moveCursor(n) {\n this.undoCursor = this.cursor\n this.cursor += n\n if (this.cursor > this.buffer.length) {\n this.cursor = this.buffer.length\n }\n }\n\n async _accumulate(n) {\n if (this._ended) return\n // Expand the buffer until we have N bytes of data\n // or we've reached the end of the stream\n const buffers = [this.buffer]\n while (this.cursor + n > lengthBuffers(buffers)) {\n const nextbuffer = await this._next()\n if (this._ended) break\n buffers.push(nextbuffer)\n }\n this.buffer = Buffer.concat(buffers)\n }\n\n async _loadnext() {\n this._discardedBytes += this.buffer.length\n this.undoCursor = 0\n this.cursor = 0\n this.buffer = await this._next()\n }\n\n async _init() {\n this.buffer = await this._next()\n }\n}\n\n// This helper function helps us postpone concatenating buffers, which\n// would create intermediate buffer objects,\nfunction lengthBuffers(buffers) {\n return buffers.reduce((acc, buffer) => acc + buffer.length, 0)\n}\n","export function padHex(b, n) {\n const s = n.toString(16)\n return '0'.repeat(b - s.length) + s\n}\n","/**\npkt-line Format\n---------------\n\nMuch (but not all) of the payload is described around pkt-lines.\n\nA pkt-line is a variable length binary string. The first four bytes\nof the line, the pkt-len, indicates the total length of the line,\nin hexadecimal. The pkt-len includes the 4 bytes used to contain\nthe length's hexadecimal representation.\n\nA pkt-line MAY contain binary data, so implementers MUST ensure\npkt-line parsing/formatting routines are 8-bit clean.\n\nA non-binary line SHOULD BE terminated by an LF, which if present\nMUST be included in the total length. Receivers MUST treat pkt-lines\nwith non-binary data the same whether or not they contain the trailing\nLF (stripping the LF if present, and not complaining when it is\nmissing).\n\nThe maximum length of a pkt-line's data component is 65516 bytes.\nImplementations MUST NOT send pkt-line whose length exceeds 65520\n(65516 bytes of payload + 4 bytes of length data).\n\nImplementations SHOULD NOT send an empty pkt-line (\"0004\").\n\nA pkt-line with a length field of 0 (\"0000\"), called a flush-pkt,\nis a special case and MUST be handled differently than an empty\npkt-line (\"0004\").\n\n----\n pkt-line = data-pkt / flush-pkt\n\n data-pkt = pkt-len pkt-payload\n pkt-len = 4*(HEXDIG)\n pkt-payload = (pkt-len - 4)*(OCTET)\n\n flush-pkt = \"0000\"\n----\n\nExamples (as C-style strings):\n\n----\n pkt-line actual value\n ---------------------------------\n \"0006a\\n\" \"a\\n\"\n \"0005a\" \"a\"\n \"000bfoobar\\n\" \"foobar\\n\"\n \"0004\" \"\"\n----\n*/\nimport { StreamReader } from '../utils/StreamReader.js'\nimport { padHex } from '../utils/padHex.js'\n\n// I'm really using this more as a namespace.\n// There's not a lot of \"state\" in a pkt-line\n\nexport class GitPktLine {\n static flush() {\n return Buffer.from('0000', 'utf8')\n }\n\n static delim() {\n return Buffer.from('0001', 'utf8')\n }\n\n static encode(line) {\n if (typeof line === 'string') {\n line = Buffer.from(line)\n }\n const length = line.length + 4\n const hexlength = padHex(4, length)\n return Buffer.concat([Buffer.from(hexlength, 'utf8'), line])\n }\n\n static streamReader(stream) {\n const reader = new StreamReader(stream)\n return async function read() {\n try {\n let length = await reader.read(4)\n if (length == null) return true\n length = parseInt(length.toString('utf8'), 16)\n if (length === 0) return null\n if (length === 1) return null // delim packets\n const buffer = await reader.read(length - 4)\n if (buffer == null) return true\n return buffer\n } catch (err) {\n stream.error = err\n return true\n }\n }\n }\n}\n","export class BaseError extends Error {\n constructor(message) {\n super(message)\n // Setting this here allows TS to infer that all git errors have a `caller` property and\n // that its type is string.\n this.caller = ''\n }\n\n toJSON() {\n // Error objects aren't normally serializable. So we do something about that.\n return {\n code: this.code,\n data: this.data,\n caller: this.caller,\n message: this.message,\n stack: this.stack,\n }\n }\n\n fromJSON(json) {\n const e = new BaseError(json.message)\n e.code = json.code\n e.data = json.data\n e.caller = json.caller\n e.stack = json.stack\n return e\n }\n\n get isIsomorphicGitError() {\n return true\n }\n}\n","import { BaseError } from './BaseError.js'\n\nexport class InternalError extends BaseError {\n /**\n * @param {string} message\n */\n constructor(message) {\n super(\n `An internal error caused this command to fail. Please file a bug report at https://github.com/isomorphic-git/isomorphic-git/issues with this error message: ${message}`\n )\n this.code = this.name = InternalError.code\n this.data = { message }\n }\n}\n/** @type {'InternalError'} */\nInternalError.code = 'InternalError'\n","import { BaseError } from './BaseError.js'\n\nexport class UnsafeFilepathError extends BaseError {\n /**\n * @param {string} filepath\n */\n constructor(filepath) {\n super(`The filepath \"${filepath}\" contains unsafe character sequences`)\n this.code = this.name = UnsafeFilepathError.code\n this.data = { filepath }\n }\n}\n/** @type {'UnsafeFilepathError'} */\nUnsafeFilepathError.code = 'UnsafeFilepathError'\n","export function compareStrings(a, b) {\n // https://stackoverflow.com/a/40355107/2168416\n return -(a < b) || +(a > b)\n}\n","import { compareStrings } from './compareStrings'\n\nexport function comparePath(a, b) {\n // https://stackoverflow.com/a/40355107/2168416\n return compareStrings(a.path, b.path)\n}\n","import { compareStrings } from './compareStrings'\n\nexport function compareTreeEntryPath(a, b) {\n // Git sorts tree entries as if there is a trailing slash on directory names.\n return compareStrings(appendSlashIfDir(a), appendSlashIfDir(b))\n}\n\nfunction appendSlashIfDir(entry) {\n return entry.mode === '040000' ? entry.path + '/' : entry.path\n}\n","import { InternalError } from '../errors/InternalError.js'\nimport { UnsafeFilepathError } from '../errors/UnsafeFilepathError.js'\nimport { comparePath } from '../utils/comparePath.js'\nimport { compareTreeEntryPath } from '../utils/compareTreeEntryPath.js'\n\n/**\n *\n * @typedef {Object} TreeEntry\n * @property {string} mode - the 6 digit hexadecimal mode\n * @property {string} path - the name of the file or directory\n * @property {string} oid - the SHA-1 object id of the blob or tree\n * @property {'commit'|'blob'|'tree'} type - the type of object\n */\n\nfunction mode2type(mode) {\n // prettier-ignore\n switch (mode) {\n case '040000': return 'tree'\n case '100644': return 'blob'\n case '100755': return 'blob'\n case '120000': return 'blob'\n case '160000': return 'commit'\n }\n throw new InternalError(`Unexpected GitTree entry mode: ${mode}`)\n}\n\nfunction parseBuffer(buffer) {\n const _entries = []\n let cursor = 0\n while (cursor < buffer.length) {\n const space = buffer.indexOf(32, cursor)\n if (space === -1) {\n throw new InternalError(\n `GitTree: Error parsing buffer at byte location ${cursor}: Could not find the next space character.`\n )\n }\n const nullchar = buffer.indexOf(0, cursor)\n if (nullchar === -1) {\n throw new InternalError(\n `GitTree: Error parsing buffer at byte location ${cursor}: Could not find the next null character.`\n )\n }\n let mode = buffer.slice(cursor, space).toString('utf8')\n if (mode === '40000') mode = '040000' // makes it line up neater in printed output\n const type = mode2type(mode)\n const path = buffer.slice(space + 1, nullchar).toString('utf8')\n\n // Prevent malicious git repos from writing to \"..\\foo\" on clone etc\n if (path.includes('\\\\') || path.includes('/')) {\n throw new UnsafeFilepathError(path)\n }\n\n const oid = buffer.slice(nullchar + 1, nullchar + 21).toString('hex')\n cursor = nullchar + 21\n _entries.push({ mode, path, oid, type })\n }\n return _entries\n}\n\nfunction limitModeToAllowed(mode) {\n if (typeof mode === 'number') {\n mode = mode.toString(8)\n }\n // tree\n if (mode.match(/^0?4.*/)) return '040000' // Directory\n if (mode.match(/^1006.*/)) return '100644' // Regular non-executable file\n if (mode.match(/^1007.*/)) return '100755' // Regular executable file\n if (mode.match(/^120.*/)) return '120000' // Symbolic link\n if (mode.match(/^160.*/)) return '160000' // Commit (git submodule reference)\n throw new InternalError(`Could not understand file mode: ${mode}`)\n}\n\nfunction nudgeIntoShape(entry) {\n if (!entry.oid && entry.sha) {\n entry.oid = entry.sha // Github\n }\n entry.mode = limitModeToAllowed(entry.mode) // index\n if (!entry.type) {\n entry.type = mode2type(entry.mode) // index\n }\n return entry\n}\n\nexport class GitTree {\n constructor(entries) {\n if (Buffer.isBuffer(entries)) {\n this._entries = parseBuffer(entries)\n } else if (Array.isArray(entries)) {\n this._entries = entries.map(nudgeIntoShape)\n } else {\n throw new InternalError('invalid type passed to GitTree constructor')\n }\n // Tree entries are not sorted alphabetically in the usual sense (see `compareTreeEntryPath`)\n // but it is important later on that these be sorted in the same order as they would be returned from readdir.\n this._entries.sort(comparePath)\n }\n\n static from(tree) {\n return new GitTree(tree)\n }\n\n render() {\n return this._entries\n .map(entry => `${entry.mode} ${entry.type} ${entry.oid} ${entry.path}`)\n .join('\\n')\n }\n\n toObject() {\n // Adjust the sort order to match git's\n const entries = [...this._entries]\n entries.sort(compareTreeEntryPath)\n return Buffer.concat(\n entries.map(entry => {\n const mode = Buffer.from(entry.mode.replace(/^0/, ''))\n const space = Buffer.from(' ')\n const path = Buffer.from(entry.path, 'utf8')\n const nullchar = Buffer.from([0])\n const oid = Buffer.from(entry.oid, 'hex')\n return Buffer.concat([mode, space, path, nullchar, oid])\n })\n )\n }\n\n /**\n * @returns {TreeEntry[]}\n */\n entries() {\n return this._entries\n }\n\n *[Symbol.iterator]() {\n for (const entry of this._entries) {\n yield entry\n }\n }\n}\n","export function formatAuthor({ name, email, timestamp, timezoneOffset }) {\n timezoneOffset = formatTimezoneOffset(timezoneOffset)\n return `${name} <${email}> ${timestamp} ${timezoneOffset}`\n}\n\n// The amount of effort that went into crafting these cases to handle\n// -0 (just so we don't lose that information when parsing and reconstructing)\n// but can also default to +0 was extraordinary.\n\nfunction formatTimezoneOffset(minutes) {\n const sign = simpleSign(negateExceptForZero(minutes))\n minutes = Math.abs(minutes)\n const hours = Math.floor(minutes / 60)\n minutes -= hours * 60\n let strHours = String(hours)\n let strMinutes = String(minutes)\n if (strHours.length < 2) strHours = '0' + strHours\n if (strMinutes.length < 2) strMinutes = '0' + strMinutes\n return (sign === -1 ? '-' : '+') + strHours + strMinutes\n}\n\nfunction simpleSign(n) {\n return Math.sign(n) || (Object.is(n, -0) ? -1 : 1)\n}\n\nfunction negateExceptForZero(n) {\n return n === 0 ? n : -n\n}\n","export function normalizeNewlines(str) {\n // remove all <CR>\n str = str.replace(/\\r/g, '')\n // no extra newlines up front\n str = str.replace(/^\\n+/, '')\n // and a single newline at the end\n str = str.replace(/\\n+$/, '') + '\\n'\n return str\n}\n","export function parseAuthor(author) {\n const [, name, email, timestamp, offset] = author.match(\n /^(.*) <(.*)> (.*) (.*)$/\n )\n return {\n name: name,\n email: email,\n timestamp: Number(timestamp),\n timezoneOffset: parseTimezoneOffset(offset),\n }\n}\n\n// The amount of effort that went into crafting these cases to handle\n// -0 (just so we don't lose that information when parsing and reconstructing)\n// but can also default to +0 was extraordinary.\n\nfunction parseTimezoneOffset(offset) {\n let [, sign, hours, minutes] = offset.match(/(\\+|-)(\\d\\d)(\\d\\d)/)\n minutes = (sign === '+' ? 1 : -1) * (Number(hours) * 60 + Number(minutes))\n return negateExceptForZero(minutes)\n}\n\nfunction negateExceptForZero(n) {\n return n === 0 ? n : -n\n}\n","import { InternalError } from '../errors/InternalError.js'\nimport { formatAuthor } from '../utils/formatAuthor.js'\nimport { normalizeNewlines } from '../utils/normalizeNewlines.js'\nimport { parseAuthor } from '../utils/parseAuthor.js'\n\nexport class GitAnnotatedTag {\n constructor(tag) {\n if (typeof tag === 'string') {\n this._tag = tag\n } else if (Buffer.isBuffer(tag)) {\n this._tag = tag.toString('utf8')\n } else if (typeof tag === 'object') {\n this._tag = GitAnnotatedTag.render(tag)\n } else {\n throw new InternalError(\n 'invalid type passed to GitAnnotatedTag constructor'\n )\n }\n }\n\n static from(tag) {\n return new GitAnnotatedTag(tag)\n }\n\n static render(obj) {\n return `object ${obj.object}\ntype ${obj.type}\ntag ${obj.tag}\ntagger ${formatAuthor(obj.tagger)}\n\n${obj.message}\n${obj.gpgsig ? obj.gpgsig : ''}`\n }\n\n justHeaders() {\n return this._tag.slice(0, this._tag.indexOf('\\n\\n'))\n }\n\n message() {\n const tag = this.withoutSignature()\n return tag.slice(tag.indexOf('\\n\\n') + 2)\n }\n\n parse() {\n return Object.assign(this.headers(), {\n message: this.message(),\n gpgsig: this.gpgsig(),\n })\n }\n\n render() {\n return this._tag\n }\n\n headers() {\n const headers = this.justHeaders().split('\\n')\n const hs = []\n for (const h of headers) {\n if (h[0] === ' ') {\n // combine with previous header (without space indent)\n hs[hs.length - 1] += '\\n' + h.slice(1)\n } else {\n hs.push(h)\n }\n }\n const obj = {}\n for (const h of hs) {\n const key = h.slice(0, h.indexOf(' '))\n const value = h.slice(h.indexOf(' ') + 1)\n if (Array.isArray(obj[key])) {\n obj[key].push(value)\n } else {\n obj[key] = value\n }\n }\n if (obj.tagger) {\n obj.tagger = parseAuthor(obj.tagger)\n }\n if (obj.committer) {\n obj.committer = parseAuthor(obj.committer)\n }\n return obj\n }\n\n withoutSignature() {\n const tag = normalizeNewlines(this._tag)\n if (tag.indexOf('\\n-----BEGIN PGP SIGNATURE-----') === -1) return tag\n return tag.slice(0, tag.lastIndexOf('\\n-----BEGIN PGP SIGNATURE-----'))\n }\n\n gpgsig() {\n if (this._tag.indexOf('\\n-----BEGIN PGP SIGNATURE-----') === -1) return\n const signature = this._tag.slice(\n this._tag.indexOf('-----BEGIN PGP SIGNATURE-----'),\n this._tag.indexOf('-----END PGP SIGNATURE-----') +\n '-----END PGP SIGNATURE-----'.length\n )\n return normalizeNewlines(signature)\n }\n\n payload() {\n return this.withoutSignature() + '\\n'\n }\n\n toObject() {\n return Buffer.from(this._tag, 'utf8')\n }\n\n static async sign(tag, sign, secretKey) {\n const payload = tag.payload()\n let { signature } = await sign({ payload, secretKey })\n // renormalize the line endings to the one true line-ending\n signature = normalizeNewlines(signature)\n const signedTag = payload + signature\n // return a new tag object\n return GitAnnotatedTag.from(signedTag)\n }\n}\n","export function indent(str) {\n return (\n str\n .trim()\n .split('\\n')\n .map(x => ' ' + x)\n .join('\\n') + '\\n'\n )\n}\n","export function outdent(str) {\n return str\n .split('\\n')\n .map(x => x.replace(/^ /, ''))\n .join('\\n')\n}\n","import { InternalError } from '../errors/InternalError.js'\nimport { formatAuthor } from '../utils/formatAuthor.js'\nimport { indent } from '../utils/indent.js'\nimport { normalizeNewlines } from '../utils/normalizeNewlines.js'\nimport { outdent } from '../utils/outdent.js'\nimport { parseAuthor } from '../utils/parseAuthor.js'\n\nexport class GitCommit {\n constructor(commit) {\n if (typeof commit === 'string') {\n this._commit = commit\n } else if (Buffer.isBuffer(commit)) {\n this._commit = commit.toString('utf8')\n } else if (typeof commit === 'object') {\n this._commit = GitCommit.render(commit)\n } else {\n throw new InternalError('invalid type passed to GitCommit constructor')\n }\n }\n\n static fromPayloadSignature({ payload, signature }) {\n const headers = GitCommit.justHeaders(payload)\n const message = GitCommit.justMessage(payload)\n const commit = normalizeNewlines(\n headers + '\\ngpgsig' + indent(signature) + '\\n' + message\n )\n return new GitCommit(commit)\n }\n\n static from(commit) {\n return new GitCommit(commit)\n }\n\n toObject() {\n return Buffer.from(this._commit, 'utf8')\n }\n\n // Todo: allow setting the headers and message\n headers() {\n return this.parseHeaders()\n }\n\n // Todo: allow setting the headers and message\n message() {\n return GitCommit.justMessage(this._commit)\n }\n\n parse() {\n return Object.assign({ message: this.message() }, this.headers())\n }\n\n static justMessage(commit) {\n return normalizeNewlines(commit.slice(commit.indexOf('\\n\\n') + 2))\n }\n\n static justHeaders(commit) {\n return commit.slice(0, commit.indexOf('\\n\\n'))\n }\n\n parseHeaders() {\n const headers = GitCommit.justHeaders(this._commit).split('\\n')\n const hs = []\n for (const h of headers) {\n if (h[0] === ' ') {\n // combine with previous header (without space indent)\n hs[hs.length - 1] += '\\n' + h.slice(1)\n } else {\n hs.push(h)\n }\n }\n const obj = {\n parent: [],\n }\n for (const h of hs) {\n const key = h.slice(0, h.indexOf(' '))\n const value = h.slice(h.indexOf(' ') + 1)\n if (Array.isArray(obj[key])) {\n obj[key].push(value)\n } else {\n obj[key] = value\n }\n }\n if (obj.author) {\n obj.author = parseAuthor(obj.author)\n }\n if (obj.committer) {\n obj.committer = parseAuthor(obj.committer)\n }\n return obj\n }\n\n static renderHeaders(obj) {\n let headers = ''\n if (obj.tree) {\n headers += `tree ${obj.tree}\\n`\n } else {\n headers += `tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904\\n` // the null tree\n }\n if (obj.parent) {\n if (obj.parent.length === undefined) {\n throw new InternalError(`commit 'parent' property should be an array`)\n }\n for (const p of obj.parent) {\n headers += `parent ${p}\\n`\n }\n }\n const author = obj.author\n headers += `author ${formatAuthor(author)}\\n`\n const committer = obj.committer || obj.author\n headers += `committer ${formatAuthor(committer)}\\n`\n if (obj.gpgsig) {\n headers += 'gpgsig' + indent(obj.gpgsig)\n }\n return headers\n }\n\n static render(obj) {\n return GitCommit.renderHeaders(obj) + '\\n' + normalizeNewlines(obj.message)\n }\n\n render() {\n return this._commit\n }\n\n withoutSignature() {\n const commit = normalizeNewlines(this._commit)\n if (commit.indexOf('\\ngpgsig') === -1) return commit\n const headers = commit.slice(0, commit.indexOf('\\ngpgsig'))\n const message = commit.slice(\n commit.indexOf('-----END PGP SIGNATURE-----\\n') +\n '-----END PGP SIGNATURE-----\\n'.length\n )\n return normalizeNewlines(headers + '\\n' + message)\n }\n\n isolateSignature() {\n const signature = this._commit.slice(\n this._commit.indexOf('-----BEGIN PGP SIGNATURE-----'),\n this._commit.indexOf('-----END PGP SIGNATURE-----') +\n '-----END PGP SIGNATURE-----'.length\n )\n return outdent(signature)\n }\n\n static async sign(commit, sign, secretKey) {\n const payload = commit.withoutSignature()\n const message = GitCommit.justMessage(commit._commit)\n let { signature } = await sign({ payload, secretKey })\n // renormalize the line endings to the one true line-ending\n signature = normalizeNewlines(signature)\n const headers = GitCommit.justHeaders(commit._commit)\n const signedCommit =\n headers + '\\n' + 'gpgsig' + indent(signature) + '\\n' + message\n // return a new commit object\n return GitCommit.from(signedCommit)\n }\n}\n","import { InternalError } from '../errors/InternalError.js'\n\nexport class GitObject {\n static wrap({ type, object }) {\n return Buffer.concat([\n Buffer.from(`${type} ${object.byteLength.toString()}\\x00`),\n Buffer.from(object),\n ])\n }\n\n static unwrap(buffer) {\n const s = buffer.indexOf(32) // first space\n const i = buffer.indexOf(0) // first null value\n const type = buffer.slice(0, s).toString('utf8') // get type of object\n const length = buffer.slice(s + 1, i).toString('utf8') // get type of object\n const actualLength = buffer.length - (i + 1)\n // verify length\n if (parseInt(length) !== actualLength) {\n throw new InternalError(\n `Length mismatch: expected ${length} bytes but got ${actualLength} instead.`\n )\n }\n return {\n type,\n object: Buffer.from(buffer.slice(i + 1)),\n }\n }\n}\n","// Modeled after https://github.com/tjfontaine/node-buffercursor\n// but with the goal of being much lighter weight.\nexport class BufferCursor {\n constructor(buffer) {\n this.buffer = buffer\n this._start = 0\n }\n\n eof() {\n return this._start >= this.buffer.length\n }\n\n tell() {\n return this._start\n }\n\n seek(n) {\n this._start = n\n }\n\n slice(n) {\n const r = this.buffer.slice(this._start, this._start + n)\n this._start += n\n return r\n }\n\n toString(enc, length) {\n const r = this.buffer.toString(enc, this._start, this._start + length)\n this._start += length\n return r\n }\n\n write(value, length, enc) {\n const r = this.buffer.write(value, this._start, length, enc)\n this._start += length\n return r\n }\n\n copy(source, start, end) {\n const r = source.copy(this.buffer, this._start, start, end)\n this._start += r\n return r\n }\n\n readUInt8() {\n const r = this.buffer.readUInt8(this._start)\n this._start += 1\n return r\n }\n\n writeUInt8(value) {\n const r = this.buffer.writeUInt8(value, this._start)\n this._start += 1\n return r\n }\n\n readUInt16BE() {\n const r = this.buffer.readUInt16BE(this._start)\n this._start += 2\n return r\n }\n\n writeUInt16BE(value) {\n const r = this.buffer.writeUInt16BE(value, this._start)\n this._start += 2\n return r\n }\n\n readUInt32BE() {\n const r = this.buffer.readUInt32BE(this._start)\n this._start += 4\n return r\n }\n\n writeUInt32BE(value) {\n const r = this.buffer.writeUInt32BE(value, this._start)\n this._start += 4\n return r\n }\n}\n","import { InternalError } from '../errors/InternalError.js'\nimport { BufferCursor } from '../utils/BufferCursor.js'\n\n/**\n * @param {Buffer} delta\n * @param {Buffer} source\n * @returns {Buffer}\n */\nexport function applyDelta(delta, source) {\n const reader = new BufferCursor(delta)\n const sourceSize = readVarIntLE(reader)\n\n if (sourceSize !== source.byteLength) {\n throw new InternalError(\n `applyDelta expected source buffer to be ${sourceSize} bytes but the provided buffer was ${source.length} bytes`\n )\n }\n const targetSize = readVarIntLE(reader)\n let target\n\n const firstOp = readOp(reader, source)\n // Speed optimization - return raw buffer if it's just single simple copy\n if (firstOp.byteLength === targetSize) {\n target = firstOp\n } else {\n // Otherwise, allocate a fresh buffer and slices\n target = Buffer.alloc(targetSize)\n const writer = new BufferCursor(target)\n writer.copy(firstOp)\n\n while (!reader.eof()) {\n writer.copy(readOp(reader, source))\n }\n\n const tell = writer.tell()\n if (targetSize !== tell) {\n throw new InternalError(\n `applyDelta expected target buffer to be ${targetSize} bytes but the resulting buffer was ${tell} bytes`\n )\n }\n }\n return target\n}\n\nfunction readVarIntLE(reader) {\n let result = 0\n let shift = 0\n let byte = null\n do {\n byte = reader.readUInt8()\n result |= (byte & 0b01111111) << shift\n shift += 7\n } while (byte & 0b10000000)\n return result\n}\n\nfunction readCompactLE(reader, flags, size) {\n let result = 0\n let shift = 0\n while (size--) {\n if (flags & 0b00000001) {\n result |= reader.readUInt8() << shift\n }\n flags >>= 1\n shift += 8\n }\n return result\n}\n\nfunction readOp(reader, source) {\n /** @type {number} */\n const byte = reader.readUInt8()\n const COPY = 0b10000000\n const OFFS = 0b00001111\n const SIZE = 0b01110000\n if (byte & COPY) {\n // copy consists of 4 byte offset, 3 byte size (in LE order)\n const offset = readCompactLE(reader, byte & OFFS, 4)\n let size = readCompactLE(reader, (byte & SIZE) >> 4, 3)\n // Yup. They really did this optimization.\n if (size === 0) size = 0x10000\n return source.slice(offset, offset + size)\n } else {\n // insert\n return reader.slice(byte)\n }\n}\n","// My version of git-list-pack - roughly 15x faster than the original\n// It's used slightly differently - instead of returning a through stream it wraps a stream.\n// (I tried to make it API identical, but that ended up being 2x slower than this version.)\nimport pako from 'pako'\n\nimport { InternalError } from '../errors/InternalError.js'\nimport { StreamReader } from '../utils/StreamReader.js'\n\nexport async function listpack(stream, onData) {\n const reader = new StreamReader(stream)\n let PACK = await reader.read(4)\n PACK = PACK.toString('utf8')\n if (PACK !== 'PACK') {\n throw new InternalError(`Invalid PACK header '${PACK}'`)\n }\n\n let version = await reader.read(4)\n version = version.readUInt32BE(0)\n if (version !== 2) {\n throw new InternalError(`Invalid packfile version: ${version}`)\n }\n\n let numObjects = await reader.read(4)\n numObjects = numObjects.readUInt32BE(0)\n // If (for some godforsaken reason) this is an empty packfile, abort now.\n if (numObjects < 1) return\n\n while (!reader.eof() && numObjects--) {\n const offset = reader.tell()\n const { type, length, ofs, reference } = await parseHeader(reader)\n const inflator = new pako.Inflate()\n while (!inflator.result) {\n const chunk = await reader.chunk()\n if (!chunk) break\n inflator.push(chunk, false)\n if (inflator.err) {\n throw new InternalError(`Pako error: ${inflator.msg}`)\n }\n if (inflator.result) {\n if (inflator.result.length !== length) {\n throw new InternalError(\n `Inflated object size is different from that stated in packfile.`\n )\n }\n\n // Backtrack parser to where deflated data ends\n await reader.undo()\n await reader.read(chunk.length - inflator.strm.avail_in)\n const end = reader.tell()\n await onData({\n data: inflator.result,\n type,\n num: numObjects,\n offset,\n end,\n reference,\n ofs,\n })\n }\n }\n }\n}\n\nasync function parseHeader(reader) {\n // Object type is encoded in bits 654\n let byte = await reader.byte()\n const type = (byte >> 4) & 0b111\n // The length encoding get complicated.\n // Last four bits of length is encoded in bits 3210\n let length = byte & 0b1111\n // Whether the next byte is part of the variable-length encoded number\n // is encoded in bit 7\n if (byte & 0b10000000) {\n let shift = 4\n do {\n byte = await reader.byte()\n length |= (byte & 0b01111111) << shift\n shift += 7\n } while (byte & 0b10000000)\n }\n // Handle deltified objects\n let ofs\n let reference\n if (type === 6) {\n let shift = 0\n ofs = 0\n const bytes = []\n do {\n byte = await reader.byte()\n ofs |= (byte & 0b01111111) << shift\n shift += 7\n bytes.push(byte)\n } while (byte & 0b10000000)\n reference = Buffer.from(bytes)\n }\n if (type === 7) {\n const buf = await reader.read(20)\n reference = buf\n }\n return { type, length, ofs, reference }\n}\n","/* eslint-env node, browser */\n/* global DecompressionStream */\nimport pako from 'pako'\n\nlet supportsDecompressionStream = false\n\nexport async function inflate(buffer) {\n if (supportsDecompressionStream === null) {\n supportsDecompressionStream = testDecompressionStream()\n }\n return supportsDecompressionStream\n ? browserInflate(buffer)\n : pako.inflate(buffer)\n}\n\nasync function browserInflate(buffer) {\n const ds = new DecompressionStream('deflate')\n const d = new Blob([buffer]).stream().pipeThrough(ds)\n return new Uint8Array(await new Response(d).arrayBuffer())\n}\n\nfunction testDecompressionStream() {\n try {\n const ds = new DecompressionStream('deflate')\n if (ds) return true\n } catch (_) {\n // no bother\n }\n return false\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/** @type {<This, A extends readonly unknown[]>(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\n/** @type {<This, S extends string>(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\n/** @type {<This, O>(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (isArray(list)) {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float16Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType<typeof availableTypedArrays>} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar gOPD = require('gopd');\nvar getProto = require('get-proto');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\n\n/** @type {<T = unknown>(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {import('./types').Getter} Getter */\n/** @type {import('./types').Cache} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getProto) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr && getProto) {\n\t\t\tvar proto = getProto(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor && proto) {\n\t\t\t\tvar superProto = getProto(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tcache[\n\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t] = /** @type {import('./types').BoundSlice | import('./types').BoundSet} */ (\n\t\t\t\t// @ts-expect-error TODO FIXME\n\t\t\t\tcallBind(fn)\n\t\t\t);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType<typeof tryAllTypedArrays>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(typedArray, 1));\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType<typeof tryAllSlices>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */(cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(name, 1));\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\n\nvar callBound = require('call-bound');\n\n/** @type {undefined | ((thisArg: import('.').TypedArray) => Buffer<ArrayBufferLike>)} */\nvar $typedArrayBuffer = callBound('TypedArray.prototype.buffer', true);\n\nvar isTypedArray = require('is-typed-array');\n\n/** @type {import('.')} */\n// node <= 0.10, < 0.11.4 has a nonconfigurable own property instead of a prototype getter\nmodule.exports = $typedArrayBuffer || function typedArrayBuffer(x) {\n\tif (!isTypedArray(x)) {\n\t\tthrow new $TypeError('Not a Typed Array');\n\t}\n\treturn x.buffer;\n};\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar isArray = require('isarray');\nvar typedArrayBuffer = require('typed-array-buffer');\n\nvar isView = ArrayBuffer.isView || function isView(obj) {\n\ttry {\n\t\ttypedArrayBuffer(obj);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar useUint8Array = typeof Uint8Array !== 'undefined';\nvar useArrayBuffer = typeof ArrayBuffer !== 'undefined'\n\t&& typeof Uint8Array !== 'undefined';\nvar useFromArrayBuffer = useArrayBuffer && (Buffer.prototype instanceof Uint8Array || Buffer.TYPED_ARRAY_SUPPORT);\n\nmodule.exports = function toBuffer(data, encoding) {\n\tif (Buffer.isBuffer(data)) {\n\t\tif (data.constructor && !('isBuffer' in data)) {\n\t\t\t// probably a SlowBuffer\n\t\t\treturn Buffer.from(data);\n\t\t}\n\t\treturn data;\n\t}\n\n\tif (typeof data === 'string') {\n\t\treturn Buffer.from(data, encoding);\n\t}\n\n\t/*\n\t * Wrap any TypedArray instances and DataViews\n\t * Makes sense only on engines with full TypedArray support -- let Buffer detect that\n\t */\n\tif (useArrayBuffer && isView(data)) {\n\t\t// Bug in Node.js <6.3.1, which treats this as out-of-bounds\n\t\tif (data.byteLength === 0) {\n\t\t\treturn Buffer.alloc(0);\n\t\t}\n\n\t\t// When Buffer is based on Uint8Array, we can just construct it from ArrayBuffer\n\t\tif (useFromArrayBuffer) {\n\t\t\tvar res = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n\t\t\t/*\n\t\t\t * Recheck result size, as offset/length doesn't work on Node.js <5.10\n\t\t\t * We just go to Uint8Array case if this fails\n\t\t\t */\n\t\t\tif (res.byteLength === data.byteLength) {\n\t\t\t\treturn res;\n\t\t\t}\n\t\t}\n\n\t\t// Convert to Uint8Array bytes and then to Buffer\n\t\tvar uint8 = data instanceof Uint8Array ? data : new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n\t\tvar result = Buffer.from(uint8);\n\n\t\t/*\n\t\t * Let's recheck that conversion succeeded\n\t\t * We have .length but not .byteLength when useFromArrayBuffer is false\n\t\t */\n\t\tif (result.length === data.byteLength) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\t/*\n\t * Uint8Array in engines where Buffer.from might not work with ArrayBuffer, just copy over\n\t * Doesn't make sense with other TypedArray instances\n\t */\n\tif (useUint8Array && data instanceof Uint8Array) {\n\t\treturn Buffer.from(data);\n\t}\n\n\tvar isArr = isArray(data);\n\tif (isArr) {\n\t\tfor (var i = 0; i < data.length; i += 1) {\n\t\t\tvar x = data[i];\n\t\t\tif (\n\t\t\t\ttypeof x !== 'number'\n\t\t\t\t|| x < 0\n\t\t\t\t|| x > 255\n\t\t\t\t|| ~~x !== x // NaN and integer check\n\t\t\t) {\n\t\t\t\tthrow new RangeError('Array items must be numbers in the range 0-255.');\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * Old Buffer polyfill on an engine that doesn't have TypedArray support\n\t * Also, this is from a different Buffer polyfill implementation then we have, as instanceof check failed\n\t * Convert to our current Buffer implementation\n\t */\n\tif (\n\t\tisArr || (\n\t\t\tBuffer.isBuffer(data)\n\t\t\t&& data.constructor\n\t\t\t&& typeof data.constructor.isBuffer === 'function'\n\t\t\t&& data.constructor.isBuffer(data)\n\t\t)\n\t) {\n\t\treturn Buffer.from(data);\n\t}\n\n\tthrow new TypeError('The \"data\" argument must be a string, an Array, a Buffer, a Uint8Array, or a DataView.');\n};\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar toBuffer = require('to-buffer');\n\n// prototype class for hash functions\nfunction Hash(blockSize, finalSize) {\n\tthis._block = Buffer.alloc(blockSize);\n\tthis._finalSize = finalSize;\n\tthis._blockSize = blockSize;\n\tthis._len = 0;\n}\n\nHash.prototype.update = function (data, enc) {\n\t/* eslint no-param-reassign: 0 */\n\tdata = toBuffer(data, enc || 'utf8');\n\n\tvar block = this._block;\n\tvar blockSize = this._blockSize;\n\tvar length = data.length;\n\tvar accum = this._len;\n\n\tfor (var offset = 0; offset < length;) {\n\t\tvar assigned = accum % blockSize;\n\t\tvar remainder = Math.min(length - offset, blockSize - assigned);\n\n\t\tfor (var i = 0; i < remainder; i++) {\n\t\t\tblock[assigned + i] = data[offset + i];\n\t\t}\n\n\t\taccum += remainder;\n\t\toffset += remainder;\n\n\t\tif ((accum % blockSize) === 0) {\n\t\t\tthis._update(block);\n\t\t}\n\t}\n\n\tthis._len += length;\n\treturn this;\n};\n\nHash.prototype.digest = function (enc) {\n\tvar rem = this._len % this._blockSize;\n\n\tthis._block[rem] = 0x80;\n\n\t/*\n\t * zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n\t * non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n\t */\n\tthis._block.fill(0, rem + 1);\n\n\tif (rem >= this._finalSize) {\n\t\tthis._update(this._block);\n\t\tthis._block.fill(0);\n\t}\n\n\tvar bits = this._len * 8;\n\n\t// uint32\n\tif (bits <= 0xffffffff) {\n\t\tthis._block.writeUInt32BE(bits, this._blockSize - 4);\n\n\t\t// uint64\n\t} else {\n\t\tvar lowBits = (bits & 0xffffffff) >>> 0;\n\t\tvar highBits = (bits - lowBits) / 0x100000000;\n\n\t\tthis._block.writeUInt32BE(highBits, this._blockSize - 8);\n\t\tthis._block.writeUInt32BE(lowBits, this._blockSize - 4);\n\t}\n\n\tthis._update(this._block);\n\tvar hash = this._hash();\n\n\treturn enc ? hash.toString(enc) : hash;\n};\n\nHash.prototype._update = function () {\n\tthrow new Error('_update must be implemented by subclass');\n};\n\nmodule.exports = Hash;\n","'use strict';\n\n/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\n\nvar K = [\n\t0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n];\n\nvar W = new Array(80);\n\nfunction Sha1() {\n\tthis.init();\n\tthis._w = W;\n\n\tHash.call(this, 64, 56);\n}\n\ninherits(Sha1, Hash);\n\nSha1.prototype.init = function () {\n\tthis._a = 0x67452301;\n\tthis._b = 0xefcdab89;\n\tthis._c = 0x98badcfe;\n\tthis._d = 0x10325476;\n\tthis._e = 0xc3d2e1f0;\n\n\treturn this;\n};\n\nfunction rotl1(num) {\n\treturn (num << 1) | (num >>> 31);\n}\n\nfunction rotl5(num) {\n\treturn (num << 5) | (num >>> 27);\n}\n\nfunction rotl30(num) {\n\treturn (num << 30) | (num >>> 2);\n}\n\nfunction ft(s, b, c, d) {\n\tif (s === 0) {\n\t\treturn (b & c) | (~b & d);\n\t}\n\tif (s === 2) {\n\t\treturn (b & c) | (b & d) | (c & d);\n\t}\n\treturn b ^ c ^ d;\n}\n\nSha1.prototype._update = function (M) {\n\tvar w = this._w;\n\n\tvar a = this._a | 0;\n\tvar b = this._b | 0;\n\tvar c = this._c | 0;\n\tvar d = this._d | 0;\n\tvar e = this._e | 0;\n\n\tfor (var i = 0; i < 16; ++i) {\n\t\tw[i] = M.readInt32BE(i * 4);\n\t}\n\tfor (; i < 80; ++i) {\n\t\tw[i] = rotl1(w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]);\n\t}\n\n\tfor (var j = 0; j < 80; ++j) {\n\t\tvar s = ~~(j / 20);\n\t\tvar t = (rotl5(a) + ft(s, b, c, d) + e + w[j] + K[s]) | 0;\n\n\t\te = d;\n\t\td = c;\n\t\tc = rotl30(b);\n\t\tb = a;\n\t\ta = t;\n\t}\n\n\tthis._a = (a + this._a) | 0;\n\tthis._b = (b + this._b) | 0;\n\tthis._c = (c + this._c) | 0;\n\tthis._d = (d + this._d) | 0;\n\tthis._e = (e + this._e) | 0;\n};\n\nSha1.prototype._hash = function () {\n\tvar H = Buffer.allocUnsafe(20);\n\n\tH.writeInt32BE(this._a | 0, 0);\n\tH.writeInt32BE(this._b | 0, 4);\n\tH.writeInt32BE(this._c | 0, 8);\n\tH.writeInt32BE(this._d | 0, 12);\n\tH.writeInt32BE(this._e | 0, 16);\n\n\treturn H;\n};\n\nmodule.exports = Sha1;\n","export function toHex(buffer) {\n let hex = ''\n for (const byte of new Uint8Array(buffer)) {\n if (byte < 16) hex += '0'\n hex += byte.toString(16)\n }\n return hex\n}\n","/* eslint-env node, browser */\nimport Hash from 'sha.js/sha1.js'\n\nimport { toHex } from './toHex.js'\n\nlet supportsSubtleSHA1 = null\n\nexport async function shasum(buffer) {\n if (supportsSubtleSHA1 === null) {\n supportsSubtleSHA1 = await testSubtleSHA1()\n }\n return supportsSubtleSHA1 ? subtleSHA1(buffer) : shasumSync(buffer)\n}\n\n// This is modeled after @dominictarr's \"shasum\" module,\n// but without the 'json-stable-stringify' dependency and\n// extra type-casting features.\nfunction shasumSync(buffer) {\n return new Hash().update(buffer).digest('hex')\n}\n\nasync function subtleSHA1(buffer) {\n const hash = await crypto.subtle.digest('SHA-1', buffer)\n return toHex(hash)\n}\n\nasync function testSubtleSHA1() {\n // I'm using a rather crude method of progressive enhancement, because\n // some browsers that have crypto.subtle.digest don't actually implement SHA-1.\n try {\n const hash = await subtleSHA1(new Uint8Array([]))\n if (hash === 'da39a3ee5e6b4b0d3255bfef95601890afd80709') return true\n } catch (_) {\n // no bother\n }\n return false\n}\n","import crc32 from 'crc-32'\n\nimport { InternalError } from '../errors/InternalError.js'\nimport { GitObject } from '../models/GitObject'\nimport { BufferCursor } from '../utils/BufferCursor.js'\nimport { applyDelta } from '../utils/applyDelta.js'\nimport { listpack } from '../utils/git-list-pack.js'\nimport { inflate } from '../utils/inflate.js'\nimport { shasum } from '../utils/shasum.js'\n\nfunction decodeVarInt(reader) {\n const bytes = []\n let byte = 0\n let multibyte = 0\n do {\n byte = reader.readUInt8()\n // We keep bits 6543210\n const lastSeven = byte & 0b01111111\n bytes.push(lastSeven)\n // Whether the next byte is part of the variable-length encoded number\n // is encoded in bit 7\n multibyte = byte & 0b10000000\n } while (multibyte)\n // Now that all the bytes are in big-endian order,\n // alternate shifting the bits left by 7 and OR-ing the next byte.\n // And... do a weird increment-by-one thing that I don't quite understand.\n return bytes.reduce((a, b) => ((a + 1) << 7) | b, -1)\n}\n\n// I'm pretty much copying this one from the git C source code,\n// because it makes no sense.\nfunction otherVarIntDecode(reader, startWith) {\n let result = startWith\n let shift = 4\n let byte = null\n do {\n byte = reader.readUInt8()\n result |= (byte & 0b01111111) << shift\n shift += 7\n } while (byte & 0b10000000)\n return result\n}\n\nexport class GitPackIndex {\n constructor(stuff) {\n Object.assign(this, stuff)\n this.offsetCache = {}\n }\n\n static async fromIdx({ idx, getExternalRefDelta }) {\n const reader = new BufferCursor(idx)\n const magic = reader.slice(4).toString('hex')\n // Check for IDX v2 magic number\n if (magic !== 'ff744f63') {\n return // undefined\n }\n const version = reader.readUInt32BE()\n if (version !== 2) {\n throw new InternalError(\n `Unable to read version ${version} packfile IDX. (Only version 2 supported)`\n )\n }\n if (idx.byteLength > 2048 * 1024 * 1024) {\n throw new InternalError(\n `To keep implementation simple, I haven't implemented the layer 5 feature needed to support packfiles > 2GB in size.`\n )\n }\n // Skip over fanout table\n reader.seek(reader.tell() + 4 * 255)\n // Get hashes\n const size = reader.readUInt32BE()\n const hashes = []\n for (let i = 0; i < size; i++) {\n const hash = reader.slice(20).toString('hex')\n hashes[i] = hash\n }\n reader.seek(reader.tell() + 4 * size)\n // Skip over CRCs\n // Get offsets\n const offsets = new Map()\n for (let i = 0; i < size; i++) {\n offsets.set(hashes[i], reader.readUInt32BE())\n }\n const packfileSha = reader.slice(20).toString('hex')\n return new GitPackIndex({\n hashes,\n crcs: {},\n offsets,\n packfileSha,\n getExternalRefDelta,\n })\n }\n\n static async fromPack({ pack, getExternalRefDelta, onProgress }) {\n const listpackTypes = {\n 1: 'commit',\n 2: 'tree',\n 3: 'blob',\n 4: 'tag',\n 6: 'ofs-delta',\n 7: 'ref-delta',\n }\n const offsetToObject = {}\n\n // Older packfiles do NOT use the shasum of the pack itself,\n // so it is recommended to just use whatever bytes are in the trailer.\n // Source: https://github.com/git/git/commit/1190a1acf800acdcfd7569f87ac1560e2d077414\n const packfileSha = pack.slice(-20).toString('hex')\n\n const hashes = []\n const crcs = {}\n const offsets = new Map()\n let totalObjectCount = null\n let lastPercent = null\n\n await listpack([pack], async ({ data, type, reference, offset, num }) => {\n if (totalObjectCount === null) totalObjectCount = num\n const percent = Math.floor(\n ((totalObjectCount - num) * 100) / totalObjectCount\n )\n if (percent !== lastPercent) {\n if (onProgress) {\n await onProgress({\n phase: 'Receiving objects',\n loaded: totalObjectCount - num,\n total: totalObjectCount,\n })\n }\n }\n lastPercent = percent\n // Change type from a number to a meaningful string\n type = listpackTypes[type]\n\n if (['commit', 'tree', 'blob', 'tag'].includes(type)) {\n offsetToObject[offset] = {\n type,\n offset,\n }\n } else if (type === 'ofs-delta') {\n offsetToObject[offset] = {\n type,\n offset,\n }\n } else if (type === 'ref-delta') {\n offsetToObject[offset] = {\n type,\n offset,\n }\n }\n })\n\n // We need to know the lengths of the slices to compute the CRCs.\n const offsetArray = Object.keys(offsetToObject).map(Number)\n for (const [i, start] of offsetArray.entries()) {\n const end =\n i + 1 === offsetArray.length ? pack.byteLength - 20 : offsetArray[i + 1]\n const o = offsetToObject[start]\n const crc = crc32.buf(pack.slice(start, end)) >>> 0\n o.end = end\n o.crc = crc\n }\n\n // We don't have the hashes yet. But we can generate them using the .readSlice function!\n const p = new GitPackIndex({\n pack: Promise.resolve(pack),\n packfileSha,\n crcs,\n hashes,\n offsets,\n getExternalRefDelta,\n })\n\n // Resolve deltas and compute the oids\n lastPercent = null\n let count = 0\n const objectsByDepth = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n for (let offset in offsetToObject) {\n offset = Number(offset)\n const percent = Math.floor((count * 100) / totalObjectCount)\n if (percent !== lastPercent) {\n if (onProgress) {\n await onProgress({\n phase: 'Resolving deltas',\n loaded: count,\n total: totalObjectCount,\n })\n }\n }\n count++\n lastPercent = percent\n\n const o = offsetToObject[offset]\n if (o.oid) continue\n try {\n p.readDepth = 0\n p.externalReadDepth = 0\n const { type, object } = await p.readSlice({ start: offset })\n objectsByDepth[p.readDepth] += 1\n const oid = await shasum(GitObject.wrap({ type, object }))\n o.oid = oid\n hashes.push(oid)\n offsets.set(oid, offset)\n crcs[oid] = o.crc\n } catch (err) {\n continue\n }\n }\n\n hashes.sort()\n return p\n }\n\n async toBuffer() {\n const buffers = []\n const write = (str, encoding) => {\n buffers.push(Buffer.from(str, encoding))\n }\n // Write out IDX v2 magic number\n write('ff744f63', 'hex')\n // Write out version number 2\n write('00000002', 'hex')\n // Write fanout table\n const fanoutBuffer = new BufferCursor(Buffer.alloc(256 * 4))\n for (let i = 0; i < 256; i++) {\n let count = 0\n for (const hash of this.hashes) {\n if (parseInt(hash.slice(0, 2), 16) <= i) count++\n }\n fanoutBuffer.writeUInt32BE(count)\n }\n buffers.push(fanoutBuffer.buffer)\n // Write out hashes\n for (const hash of this.hashes) {\n write(hash, 'hex')\n }\n // Write out crcs\n const crcsBuffer = new BufferCursor(Buffer.alloc(this.hashes.length * 4))\n for (const hash of this.hashes) {\n crcsBuffer.writeUInt32BE(this.crcs[hash])\n }\n buffers.push(crcsBuffer.buffer)\n // Write out offsets\n const offsetsBuffer = new BufferCursor(Buffer.alloc(this.hashes.length * 4))\n for (const hash of this.hashes) {\n offsetsBuffer.writeUInt32BE(this.offsets.get(hash))\n }\n buffers.push(offsetsBuffer.buffer)\n // Write out packfile checksum\n write(this.packfileSha, 'hex')\n // Write out shasum\n const totalBuffer = Buffer.concat(buffers)\n const sha = await shasum(totalBuffer)\n const shaBuffer = Buffer.alloc(20)\n shaBuffer.write(sha, 'hex')\n return Buffer.concat([totalBuffer, shaBuffer])\n }\n\n async load({ pack }) {\n this.pack = pack\n }\n\n async unload() {\n this.pack = null\n }\n\n async read({ oid }) {\n if (!this.offsets.get(oid)) {\n if (this.getExternalRefDelta) {\n this.externalReadDepth++\n return this.getExternalRefDelta(oid)\n } else {\n throw new InternalError(`Could not read object ${oid} from packfile`)\n }\n }\n const start = this.offsets.get(oid)\n return this.readSlice({ start })\n }\n\n async readSlice({ start }) {\n if (this.offsetCache[start]) {\n return Object.assign({}, this.offsetCache[start])\n }\n this.readDepth++\n const types = {\n 0b0010000: 'commit',\n 0b0100000: 'tree',\n 0b0110000: 'blob',\n 0b1000000: 'tag',\n 0b1100000: 'ofs_delta',\n 0b1110000: 'ref_delta',\n }\n if (!this.pack) {\n throw new InternalError(\n 'Tried to read from a GitPackIndex with no packfile loaded into memory'\n )\n }\n const raw = (await this.pack).slice(start)\n const reader = new BufferCursor(raw)\n const byte = reader.readUInt8()\n // Object type is encoded in bits 654\n const btype = byte & 0b1110000\n let type = types[btype]\n if (type === undefined) {\n throw new InternalError('Unrecognized type: 0b' + btype.toString(2))\n }\n // The length encoding get complicated.\n // Last four bits of length is encoded in bits 3210\n const lastFour = byte & 0b1111\n let length = lastFour\n // Whether the next byte is part of the variable-length encoded number\n // is encoded in bit 7\n const multibyte = byte & 0b10000000\n if (multibyte) {\n length = otherVarIntDecode(reader, lastFour)\n }\n let base = null\n let object = null\n // Handle deltified objects\n if (type === 'ofs_delta') {\n const offset = decodeVarInt(reader)\n const baseOffset = start - offset\n ;({ object: base, type } = await this.readSlice({ start: baseOffset }))\n }\n if (type === 'ref_delta') {\n const oid = reader.slice(20).toString('hex')\n ;({ object: base, type } = await this.read({ oid }))\n }\n // Handle undeltified objects\n const buffer = raw.slice(reader.tell())\n object = Buffer.from(await inflate(buffer))\n // Assert that the object length is as expected.\n if (object.byteLength !== length) {\n throw new InternalError(\n `Packfile told us object would have length ${length} but it had length ${object.byteLength}`\n )\n }\n if (base) {\n object = Buffer.from(applyDelta(object, base))\n }\n // Cache the result based on depth.\n if (this.readDepth > 3) {\n // hand tuned for speed / memory usage tradeoff\n this.offsetCache[start] = { type, object }\n }\n return { type, format: 'content', object }\n }\n}\n","import { BaseError } from './BaseError.js'\n\nexport class InvalidOidError extends BaseError {\n /**\n * @param {string} value\n */\n constructor(value) {\n super(`Expected a 40-char hex object id but saw \"${value}\".`)\n this.code = this.name = InvalidOidError.code\n this.data = { value }\n }\n}\n/** @type {'InvalidOidError'} */\nInvalidOidError.code = 'InvalidOidError'\n","import { BaseError } from './BaseError.js'\n\nexport class ObjectTypeError extends BaseError {\n /**\n * @param {string} oid\n * @param {'blob'|'commit'|'tag'|'tree'} actual\n * @param {'blob'|'commit'|'tag'|'tree'} expected\n * @param {string} [filepath]\n */\n constructor(oid, actual, expected, filepath) {\n super(\n `Object ${oid} ${\n filepath ? `at ${filepath}` : ''\n }was anticipated to be a ${expected} but it is a ${actual}.`\n )\n this.code = this.name = ObjectTypeError.code\n this.data = { oid, actual, expected, filepath }\n }\n}\n/** @type {'ObjectTypeError'} */\nObjectTypeError.code = 'ObjectTypeError'\n","/**\n * From https://github.com/git/git/blob/master/Documentation/technical/index-format.txt\n *\n * 32-bit mode, split into (high to low bits)\n *\n * 4-bit object type\n * valid values in binary are 1000 (regular file), 1010 (symbolic link)\n * and 1110 (gitlink)\n *\n * 3-bit unused\n *\n * 9-bit unix permission. Only 0755 and 0644 are valid for regular files.\n * Symbolic links and gitlinks have value 0 in this field.\n */\nexport function normalizeMode(mode) {\n // Note: BrowserFS will use -1 for \"unknown\"\n // I need to make it non-negative for these bitshifts to work.\n let type = mode > 0 ? mode >> 12 : 0\n // If it isn't valid, assume it as a \"regular file\"\n // 0100 = directory\n // 1000 = regular file\n // 1010 = symlink\n // 1110 = gitlink\n if (\n type !== 0b0100 &&\n type !== 0b1000 &&\n type !== 0b1010 &&\n type !== 0b1110\n ) {\n type = 0b1000\n }\n let permissions = mode & 0o777\n // Is the file executable? then 755. Else 644.\n if (permissions & 0b001001001) {\n permissions = 0o755\n } else {\n permissions = 0o644\n }\n // If it's not a regular file, scrub all permissions\n if (type !== 0b1000) permissions = 0\n return (type << 12) + permissions\n}\n","import { normalizeMode } from './normalizeMode'\n\nconst MAX_UINT32 = 2 ** 32\n\nfunction SecondsNanoseconds(\n givenSeconds,\n givenNanoseconds,\n milliseconds,\n date\n) {\n if (givenSeconds !== undefined && givenNanoseconds !== undefined) {\n return [givenSeconds, givenNanoseconds]\n }\n if (milliseconds === undefined) {\n milliseconds = date.valueOf()\n }\n const seconds = Math.floor(milliseconds / 1000)\n const nanoseconds = (milliseconds - seconds * 1000) * 1000000\n return [seconds, nanoseconds]\n}\n\nexport function normalizeStats(e) {\n const [ctimeSeconds, ctimeNanoseconds] = SecondsNanoseconds(\n e.ctimeSeconds,\n e.ctimeNanoseconds,\n e.ctimeMs,\n e.ctime\n )\n const [mtimeSeconds, mtimeNanoseconds] = SecondsNanoseconds(\n e.mtimeSeconds,\n e.mtimeNanoseconds,\n e.mtimeMs,\n e.mtime\n )\n\n return {\n ctimeSeconds: ctimeSeconds % MAX_UINT32,\n ctimeNanoseconds: ctimeNanoseconds % MAX_UINT32,\n mtimeSeconds: mtimeSeconds % MAX_UINT32,\n mtimeNanoseconds: mtimeNanoseconds % MAX_UINT32,\n dev: e.dev % MAX_UINT32,\n ino: e.ino % MAX_UINT32,\n mode: normalizeMode(e.mode % MAX_UINT32),\n uid: e.uid % MAX_UINT32,\n gid: e.gid % MAX_UINT32,\n // size of -1 happens over a BrowserFS HTTP Backend that doesn't serve Content-Length headers\n // (like the Karma webserver) because BrowserFS HTTP Backend uses HTTP HEAD requests to do fs.stat\n size: e.size > -1 ? e.size % MAX_UINT32 : 0,\n }\n}\n","import { InternalError } from '../errors/InternalError.js'\nimport { UnsafeFilepathError } from '../errors/UnsafeFilepathError.js'\nimport { BufferCursor } from '../utils/BufferCursor.js'\nimport { comparePath } from '../utils/comparePath.js'\nimport { normalizeStats } from '../utils/normalizeStats.js'\nimport { shasum } from '../utils/shasum.js'\n\n// Extract 1-bit assume-valid, 1-bit extended flag, 2-bit merge state flag, 12-bit path length flag\nfunction parseCacheEntryFlags(bits) {\n return {\n assumeValid: Boolean(bits & 0b1000000000000000),\n extended: Boolean(bits & 0b0100000000000000),\n stage: (bits & 0b0011000000000000) >> 12,\n nameLength: bits & 0b0000111111111111,\n }\n}\n\nfunction renderCacheEntryFlags(entry) {\n const flags = entry.flags\n // 1-bit extended flag (must be zero in version 2)\n flags.extended = false\n // 12-bit name length if the length is less than 0xFFF; otherwise 0xFFF\n // is stored in this field.\n flags.nameLength = Math.min(Buffer.from(entry.path).length, 0xfff)\n return (\n (flags.assumeValid ? 0b1000000000000000 : 0) +\n (flags.extended ? 0b0100000000000000 : 0) +\n ((flags.stage & 0b11) << 12) +\n (flags.nameLength & 0b111111111111)\n )\n}\n\nexport class GitIndex {\n /*::\n _entries: Map<string, CacheEntry>\n _dirty: boolean // Used to determine if index needs to be saved to filesystem\n */\n constructor(entries, unmergedPaths) {\n this._dirty = false\n this._unmergedPaths = unmergedPaths || new Set()\n this._entries = entries || new Map()\n }\n\n _addEntry(entry) {\n if (entry.flags.stage === 0) {\n entry.stages = [entry]\n this._entries.set(entry.path, entry)\n this._unmergedPaths.delete(entry.path)\n } else {\n let existingEntry = this._entries.get(entry.path)\n if (!existingEntry) {\n this._entries.set(entry.path, entry)\n existingEntry = entry\n }\n existingEntry.stages[entry.flags.stage] = entry\n this._unmergedPaths.add(entry.path)\n }\n }\n\n static async from(buffer) {\n if (Buffer.isBuffer(buffer)) {\n return GitIndex.fromBuffer(buffer)\n } else if (buffer === null) {\n return new GitIndex(null)\n } else {\n throw new InternalError('invalid type passed to GitIndex.from')\n }\n }\n\n static async fromBuffer(buffer) {\n if (buffer.length === 0) {\n throw new InternalError('Index file is empty (.git/index)')\n }\n\n const index = new GitIndex()\n const reader = new BufferCursor(buffer)\n const magic = reader.toString('utf8', 4)\n if (magic !== 'DIRC') {\n throw new InternalError(`Invalid dircache magic file number: ${magic}`)\n }\n\n // Verify shasum after we ensured that the file has a magic number\n const shaComputed = await shasum(buffer.slice(0, -20))\n const shaClaimed = buffer.slice(-20).toString('hex')\n if (shaClaimed !== shaComputed) {\n throw new InternalError(\n `Invalid checksum in GitIndex buffer: expected ${shaClaimed} but saw ${shaComputed}`\n )\n }\n\n const version = reader.readUInt32BE()\n if (version !== 2) {\n throw new InternalError(`Unsupported dircache version: ${version}`)\n }\n const numEntries = reader.readUInt32BE()\n let i = 0\n while (!reader.eof() && i < numEntries) {\n const entry = {}\n entry.ctimeSeconds = reader.readUInt32BE()\n entry.ctimeNanoseconds = reader.readUInt32BE()\n entry.mtimeSeconds = reader.readUInt32BE()\n entry.mtimeNanoseconds = reader.readUInt32BE()\n entry.dev = reader.readUInt32BE()\n entry.ino = reader.readUInt32BE()\n entry.mode = reader.readUInt32BE()\n entry.uid = reader.readUInt32BE()\n entry.gid = reader.readUInt32BE()\n entry.size = reader.readUInt32BE()\n entry.oid = reader.slice(20).toString('hex')\n const flags = reader.readUInt16BE()\n entry.flags = parseCacheEntryFlags(flags)\n // TODO: handle if (version === 3 && entry.flags.extended)\n const pathlength = buffer.indexOf(0, reader.tell() + 1) - reader.tell()\n if (pathlength < 1) {\n throw new InternalError(`Got a path length of: ${pathlength}`)\n }\n // TODO: handle pathnames larger than 12 bits\n entry.path = reader.toString('utf8', pathlength)\n\n // Prevent malicious paths like \"..\\foo\"\n if (entry.path.includes('..\\\\') || entry.path.includes('../')) {\n throw new UnsafeFilepathError(entry.path)\n }\n\n // The next bit is awkward. We expect 1 to 8 null characters\n // such that the total size of the entry is a multiple of 8 bits.\n // (Hence subtract 12 bytes for the header.)\n let padding = 8 - ((reader.tell() - 12) % 8)\n if (padding === 0) padding = 8\n while (padding--) {\n const tmp = reader.readUInt8()\n if (tmp !== 0) {\n throw new InternalError(\n `Expected 1-8 null characters but got '${tmp}' after ${entry.path}`\n )\n } else if (reader.eof()) {\n throw new InternalError('Unexpected end of file')\n }\n }\n // end of awkward part\n entry.stages = []\n\n index._addEntry(entry)\n\n i++\n }\n return index\n }\n\n get unmergedPaths() {\n return [...this._unmergedPaths]\n }\n\n get entries() {\n return [...this._entries.values()].sort(comparePath)\n }\n\n get entriesMap() {\n return this._entries\n }\n\n get entriesFlat() {\n return [...this.entries].flatMap(entry => {\n return entry.stages.length > 1 ? entry.stages.filter(x => x) : entry\n })\n }\n\n *[Symbol.iterator]() {\n for (const entry of this.entries) {\n yield entry\n }\n }\n\n insert({ filepath, stats, oid, stage = 0 }) {\n if (!stats) {\n stats = {\n ctimeSeconds: 0,\n ctimeNanoseconds: 0,\n mtimeSeconds: 0,\n mtimeNanoseconds: 0,\n dev: 0,\n ino: 0,\n mode: 0,\n uid: 0,\n gid: 0,\n size: 0,\n }\n }\n stats = normalizeStats(stats)\n const bfilepath = Buffer.from(filepath)\n const entry = {\n ctimeSeconds: stats.ctimeSeconds,\n ctimeNanoseconds: stats.ctimeNanoseconds,\n mtimeSeconds: stats.mtimeSeconds,\n mtimeNanoseconds: stats.mtimeNanoseconds,\n dev: stats.dev,\n ino: stats.ino,\n // We provide a fallback value for `mode` here because not all fs\n // implementations assign it, but we use it in GitTree.\n // '100644' is for a \"regular non-executable file\"\n mode: stats.mode || 0o100644,\n uid: stats.uid,\n gid: stats.gid,\n size: stats.size,\n path: filepath,\n oid: oid,\n flags: {\n assumeValid: false,\n extended: false,\n stage,\n nameLength: bfilepath.length < 0xfff ? bfilepath.length : 0xfff,\n },\n stages: [],\n }\n\n this._addEntry(entry)\n\n this._dirty = true\n }\n\n delete({ filepath }) {\n if (this._entries.has(filepath)) {\n this._entries.delete(filepath)\n } else {\n for (const key of this._entries.keys()) {\n if (key.startsWith(filepath + '/')) {\n this._entries.delete(key)\n }\n }\n }\n\n if (this._unmergedPaths.has(filepath)) {\n this._unmergedPaths.delete(filepath)\n }\n this._dirty = true\n }\n\n clear() {\n this._entries.clear()\n this._dirty = true\n }\n\n has({ filepath }) {\n return this._entries.has(filepath)\n }\n\n render() {\n return this.entries\n .map(entry => `${entry.mode.toString(8)} ${entry.oid} ${entry.path}`)\n .join('\\n')\n }\n\n static async _entryToBuffer(entry) {\n const bpath = Buffer.from(entry.path)\n // the fixed length + the filename + at least one null char => align by 8\n const length = Math.ceil((62 + bpath.length + 1) / 8) * 8\n const written = Buffer.alloc(length)\n const writer = new BufferCursor(written)\n const stat = normalizeStats(entry)\n writer.writeUInt32BE(stat.ctimeSeconds)\n writer.writeUInt32BE(stat.ctimeNanoseconds)\n writer.writeUInt32BE(stat.mtimeSeconds)\n writer.writeUInt32BE(stat.mtimeNanoseconds)\n writer.writeUInt32BE(stat.dev)\n writer.writeUInt32BE(stat.ino)\n writer.writeUInt32BE(stat.mode)\n writer.writeUInt32BE(stat.uid)\n writer.writeUInt32BE(stat.gid)\n writer.writeUInt32BE(stat.size)\n writer.write(entry.oid, 20, 'hex')\n writer.writeUInt16BE(renderCacheEntryFlags(entry))\n writer.write(entry.path, bpath.length, 'utf8')\n return written\n }\n\n async toObject() {\n const header = Buffer.alloc(12)\n const writer = new BufferCursor(header)\n writer.write('DIRC', 4, 'utf8')\n writer.writeUInt32BE(2)\n writer.writeUInt32BE(this.entriesFlat.length)\n\n let entryBuffers = []\n for (const entry of this.entries) {\n entryBuffers.push(GitIndex._entryToBuffer(entry))\n if (entry.stages.length > 1) {\n for (const stage of entry.stages) {\n if (stage && stage !== entry) {\n entryBuffers.push(GitIndex._entryToBuffer(stage))\n }\n }\n }\n }\n entryBuffers = await Promise.all(entryBuffers)\n\n const body = Buffer.concat(entryBuffers)\n const main = Buffer.concat([header, body])\n const sum = await shasum(main)\n return Buffer.concat([main, Buffer.from(sum, 'hex')])\n }\n}\n","import { getIterator } from './getIterator.js'\n\n// Currently 'for await' upsets my linters.\nexport async function forAwait(iterable, cb) {\n const iter = getIterator(iterable)\n while (true) {\n const { value, done } = await iter.next()\n if (value) await cb(value)\n if (done) break\n }\n if (iter.return) iter.return()\n}\n","import { forAwait } from './forAwait.js'\n\nexport async function collect(iterable) {\n let size = 0\n const buffers = []\n // This will be easier once `for await ... of` loops are available.\n await forAwait(iterable, value => {\n buffers.push(value)\n size += value.byteLength\n })\n const result = new Uint8Array(size)\n let nextIndex = 0\n for (const buffer of buffers) {\n result.set(buffer, nextIndex)\n nextIndex += buffer.byteLength\n }\n return result\n}\n","export class FIFO {\n constructor() {\n this._queue = []\n }\n\n write(chunk) {\n if (this._ended) {\n throw Error('You cannot write to a FIFO that has already been ended!')\n }\n if (this._waiting) {\n const resolve = this._waiting\n this._waiting = null\n resolve({ value: chunk })\n } else {\n this._queue.push(chunk)\n }\n }\n\n end() {\n this._ended = true\n if (this._waiting) {\n const resolve = this._waiting\n this._waiting = null\n resolve({ done: true })\n }\n }\n\n destroy(err) {\n this.error = err\n this.end()\n }\n\n async next() {\n if (this._queue.length > 0) {\n return { value: this._queue.shift() }\n }\n if (this._ended) {\n return { done: true }\n }\n if (this._waiting) {\n throw Error(\n 'You cannot call read until the previous call to read has returned!'\n )\n }\n return new Promise(resolve => {\n this._waiting = resolve\n })\n }\n}\n","/*\nIf 'side-band' or 'side-band-64k' capabilities have been specified by\nthe client, the server will send the packfile data multiplexed.\n\nEach packet starting with the packet-line length of the amount of data\nthat follows, followed by a single byte specifying the sideband the\nfollowing data is coming in on.\n\nIn 'side-band' mode, it will send up to 999 data bytes plus 1 control\ncode, for a total of up to 1000 bytes in a pkt-line. In 'side-band-64k'\nmode it will send up to 65519 data bytes plus 1 control code, for a\ntotal of up to 65520 bytes in a pkt-line.\n\nThe sideband byte will be a '1', '2' or a '3'. Sideband '1' will contain\npackfile data, sideband '2' will be used for progress information that the\nclient will generally print to stderr and sideband '3' is used for error\ninformation.\n\nIf no 'side-band' capability was specified, the server will stream the\nentire packfile without multiplexing.\n*/\nimport { FIFO } from '../utils/FIFO.js'\n\nimport { GitPktLine } from './GitPktLine.js'\n\nexport class GitSideBand {\n static demux(input) {\n const read = GitPktLine.streamReader(input)\n // And now for the ridiculous side-band or side-band-64k protocol\n const packetlines = new FIFO()\n const packfile = new FIFO()\n const progress = new FIFO()\n // TODO: Use a proper through stream?\n const nextBit = async function() {\n const line = await read()\n // Skip over flush packets\n if (line === null) return nextBit()\n // A made up convention to signal there's no more to read.\n if (line === true) {\n packetlines.end()\n progress.end()\n input.error ? packfile.destroy(input.error) : packfile.end()\n return\n }\n // Examine first byte to determine which output \"stream\" to use\n switch (line[0]) {\n case 1: {\n // pack data\n packfile.write(line.slice(1))\n break\n }\n case 2: {\n // progress message\n progress.write(line.slice(1))\n break\n }\n case 3: {\n // fatal error message just before stream aborts\n const error = line.slice(1)\n progress.write(error)\n packetlines.end()\n progress.end()\n packfile.destroy(new Error(error.toString('utf8')))\n return\n }\n default: {\n // Not part of the side-band-64k protocol\n packetlines.write(line)\n }\n }\n // Careful not to blow up the stack.\n // I think Promises in a tail-call position should be OK.\n nextBit()\n }\n nextBit()\n return {\n packetlines,\n packfile,\n progress,\n }\n }\n // static mux ({\n // protocol, // 'side-band' or 'side-band-64k'\n // packetlines,\n // packfile,\n // progress,\n // error\n // }) {\n // const MAX_PACKET_LENGTH = protocol === 'side-band-64k' ? 999 : 65519\n // let output = new PassThrough()\n // packetlines.on('data', data => {\n // if (data === null) {\n // output.write(GitPktLine.flush())\n // } else {\n // output.write(GitPktLine.encode(data))\n // }\n // })\n // let packfileWasEmpty = true\n // let packfileEnded = false\n // let progressEnded = false\n // let errorEnded = false\n // let goodbye = Buffer.concat([\n // GitPktLine.encode(Buffer.from('010A', 'hex')),\n // GitPktLine.flush()\n // ])\n // packfile\n // .on('data', data => {\n // packfileWasEmpty = false\n // const buffers = splitBuffer(data, MAX_PACKET_LENGTH)\n // for (const buffer of buffers) {\n // output.write(\n // GitPktLine.encode(Buffer.concat([Buffer.from('01', 'hex'), buffer]))\n // )\n // }\n // })\n // .on('end', () => {\n // packfileEnded = true\n // if (!packfileWasEmpty) output.write(goodbye)\n // if (progressEnded && errorEnded) output.end()\n // })\n // progress\n // .on('data', data => {\n // const buffers = splitBuffer(data, MAX_PACKET_LENGTH)\n // for (const buffer of buffers) {\n // output.write(\n // GitPktLine.encode(Buffer.concat([Buffer.from('02', 'hex'), buffer]))\n // )\n // }\n // })\n // .on('end', () => {\n // progressEnded = true\n // if (packfileEnded && errorEnded) output.end()\n // })\n // error\n // .on('data', data => {\n // const buffers = splitBuffer(data, MAX_PACKET_LENGTH)\n // for (const buffer of buffers) {\n // output.write(\n // GitPktLine.encode(Buffer.concat([Buffer.from('03', 'hex'), buffer]))\n // )\n // }\n // })\n // .on('end', () => {\n // errorEnded = true\n // if (progressEnded && packfileEnded) output.end()\n // })\n // return output\n // }\n}\n","import { InvalidOidError } from '../errors/InvalidOidError.js'\nimport { GitSideBand } from '../models/GitSideBand.js'\nimport { forAwait } from '../utils/forAwait.js'\n\nexport async function parseUploadPackResponse(stream) {\n const { packetlines, packfile, progress } = GitSideBand.demux(stream)\n const shallows = []\n const unshallows = []\n const acks = []\n let nak = false\n let done = false\n return new Promise((resolve, reject) => {\n // Parse the response\n forAwait(packetlines, data => {\n const line = data.toString('utf8').trim()\n if (line.startsWith('shallow')) {\n const oid = line.slice(-41).trim()\n if (oid.length !== 40) {\n reject(new InvalidOidError(oid))\n }\n shallows.push(oid)\n } else if (line.startsWith('unshallow')) {\n const oid = line.slice(-41).trim()\n if (oid.length !== 40) {\n reject(new InvalidOidError(oid))\n }\n unshallows.push(oid)\n } else if (line.startsWith('ACK')) {\n const [, oid, status] = line.split(' ')\n acks.push({ oid, status })\n if (!status) done = true\n } else if (line.startsWith('NAK')) {\n nak = true\n done = true\n } else {\n done = true\n nak = true\n }\n if (done) {\n stream.error\n ? reject(stream.error)\n : resolve({ shallows, unshallows, acks, nak, packfile, progress })\n }\n }).finally(() => {\n if (!done) {\n stream.error\n ? reject(stream.error)\n : resolve({ shallows, unshallows, acks, nak, packfile, progress })\n }\n })\n })\n}\n","/* eslint-disable comment-length/limit-multi-line-comments */\n\n/*\n * Import internal data parsers and structures from isomorphic-git. These\n * exports are not available in the npm version of isomorphic-git, which is why\n * we use one from the git repository.\n *\n * This file heavily relies on isomorphic-git internals to parse Git data formats\n * such as PACK, trees, deltas, etc.\n */\nimport './isomorphic-git.d.ts';\nimport { GitPktLine } from 'isomorphic-git/src/models/GitPktLine.js';\nimport { GitTree } from 'isomorphic-git/src/models/GitTree.js';\nimport { GitAnnotatedTag } from 'isomorphic-git/src/models/GitAnnotatedTag.js';\nimport { GitCommit } from 'isomorphic-git/src/models/GitCommit.js';\nimport { GitPackIndex } from 'isomorphic-git/src/models/GitPackIndex.js';\nimport { collect } from 'isomorphic-git/src/internal-apis.js';\nimport { parseUploadPackResponse } from 'isomorphic-git/src/wire/parseUploadPackResponse.js';\nimport { ObjectTypeError } from 'isomorphic-git/src/errors/ObjectTypeError.js';\nimport { Buffer as BufferPolyfill } from 'buffer';\n\n/**\n * Polyfills the Buffer class in the browser.\n *\n * We need it because isomorphic-git uses Buffer internally. The isomorphic-git version\n * released via npm shipes a Buffer implementation, but we're using a version cloned from\n * the git repository which assumes a global Buffer is available.\n */\nif (typeof globalThis.Buffer === 'undefined') {\n\tglobalThis.Buffer = BufferPolyfill;\n}\n\n/**\n * Downloads specific files from a git repository.\n * It uses the git protocol over HTTP to fetch the files. It only uses\n * three HTTP requests regardless of the number of paths requested.\n *\n * @param repoUrl The URL of the git repository.\n * @param fullyQualifiedBranchName The full name of the branch to fetch from (e.g., 'refs/heads/main').\n * @param filesPaths An array of all the file paths to fetch from the repository. Does **not** accept\n * patterns, wildcards, directory paths. All files must be explicitly listed.\n * @returns The requested files and packfiles required to recreate the Git objects locally.\n */\nexport type SparseCheckoutPackfile = {\n\tname: string;\n\tpack: Uint8Array;\n\tindex: Uint8Array;\n\tpromisor?: boolean;\n};\n\nexport type SparseCheckoutObject = {\n\toid: string;\n\ttype: 'blob' | 'tree' | 'commit' | 'tag';\n\tbody: Uint8Array;\n};\n\nexport type SparseCheckoutResult = {\n\tfiles: Record<string, any>;\n\tpackfiles?: SparseCheckoutPackfile[];\n\tobjects?: SparseCheckoutObject[];\n\tfileOids?: Record<string, string>;\n};\n\nexport async function sparseCheckout(\n\trepoUrl: string,\n\tcommitHash: string,\n\tfilesPaths: string[],\n\toptions?: {\n\t\twithObjects?: boolean;\n\t}\n): Promise<SparseCheckoutResult> {\n\tconst treesPack = await fetchWithoutBlobs(repoUrl, commitHash);\n\tconst objects = await resolveObjects(treesPack.idx, commitHash, filesPaths);\n\n\tconst blobOids = filesPaths.map((path) => objects[path].oid);\n\tconst blobsPack =\n\t\tblobOids.length > 0 ? await fetchObjects(repoUrl, blobOids) : null;\n\n\tconst fetchedPaths: Record<string, any> = {};\n\tawait Promise.all(\n\t\tfilesPaths.map(async (path) => {\n\t\t\tif (!blobsPack) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfetchedPaths[path] = await extractGitObjectFromIdx(\n\t\t\t\tblobsPack.idx,\n\t\t\t\tobjects[path].oid\n\t\t\t);\n\t\t})\n\t);\n\n\t/**\n\t * Short-circuit if the consumer doesn't need additional details about\n\t * the Git objects.\n\t */\n\tif (!options?.withObjects) {\n\t\treturn { files: fetchedPaths };\n\t}\n\n\tconst packfiles: SparseCheckoutPackfile[] = [];\n\tconst treesIndex = await treesPack.idx.toBuffer();\n\tpackfiles.push({\n\t\tname: `pack-${treesPack.idx.packfileSha}`,\n\t\tpack: treesPack.packfile,\n\t\tindex: toUint8Array(treesIndex),\n\t\tpromisor: treesPack.promisor,\n\t});\n\n\tif (blobsPack) {\n\t\tconst blobsIndex = await blobsPack.idx.toBuffer();\n\t\tpackfiles.push({\n\t\t\tname: `pack-${blobsPack.idx.packfileSha}`,\n\t\t\tpack: blobsPack.packfile,\n\t\t\tindex: toUint8Array(blobsIndex),\n\t\t\tpromisor: blobsPack.promisor,\n\t\t});\n\t}\n\n\tconst fileOids: Record<string, string> = {};\n\tfor (const path of filesPaths) {\n\t\tfileOids[path] = objects[path].oid;\n\t}\n\n\treturn {\n\t\tfiles: fetchedPaths,\n\t\tpackfiles,\n\t\tobjects: [\n\t\t\t...(await collectLooseObjects(treesPack)),\n\t\t\t...(await collectLooseObjects(blobsPack)),\n\t\t],\n\t\tfileOids,\n\t};\n}\n\nexport type GitFileTreeFile = {\n\tname: string;\n\ttype: 'file';\n};\nexport type GitFileTreeFolder = {\n\tname: string;\n\ttype: 'folder';\n\tchildren: GitFileTree[];\n};\nexport type GitFileTree = GitFileTreeFile | GitFileTreeFolder;\n\n/**\n * A Git ref in a human-readable format. Could be a single string,\n * e.g. 'main', 'v0.1.28', '1234567890abcdef1234567890abcdef12345678',\n * could be a string and an explicit type, e.g. { value: 'main', type: 'branch' },\n */\nexport type GitRef = {\n\tvalue: string;\n\ttype?: 'branch' | 'commit' | 'refname' | 'tag' | 'infer';\n};\n\n/**\n * A Git ref in a machine-friendly format.\n * Contains all the information needed to resolve the ref to its oid,\n * and, optionally, the oid itself.\n */\ntype ParsedGitRef = {\n\tkind: 'refname' | 'commit';\n\trefname: string;\n\tresolvedOid?: string;\n};\n\nconst FULL_SHA_REGEX = /^[0-9a-f]{40}$/i;\n\n/**\n * Lists all files in a git repository.\n *\n * See https://git-scm.com/book/en/v2/Git-Internals-Git-Objects for more information.\n *\n * @param repoUrl The URL of the git repository.\n * @param commitHash The commit hash to fetch from.\n * @returns A list of all files in the repository.\n */\nexport async function listGitFiles(\n\trepoUrl: string,\n\tcommitHash: string\n): Promise<GitFileTree[]> {\n\tconst treesPack = await fetchWithoutBlobs(repoUrl, commitHash);\n\tconst rootTree = await resolveAllObjects(treesPack.idx, commitHash);\n\tif (!rootTree?.object) {\n\t\treturn [];\n\t}\n\n\treturn gitTreeToFileTree(rootTree);\n}\n\n/**\n * Resolves a ref description, e.g. a branch name, to a commit hash.\n *\n * @param repoUrl The URL of the git repository.\n * @param ref The branch name or commit hash.\n * @returns The commit hash.\n */\nexport async function resolveCommitHash(repoUrl: string, ref: GitRef) {\n\tconst parsed = await parseGitRef(repoUrl, ref);\n\tif (parsed.resolvedOid) {\n\t\treturn parsed.resolvedOid;\n\t}\n\n\tconst oid = await fetchRefOid(repoUrl, parsed.refname);\n\tif (!oid) {\n\t\tthrow new Error(`Git ref \"${parsed.refname}\" not found at ${repoUrl}`);\n\t}\n\treturn oid;\n}\n\nfunction gitTreeToFileTree(tree: GitTree): GitFileTree[] {\n\treturn tree.object\n\t\t.map((branch) => {\n\t\t\tif (branch.type === 'blob') {\n\t\t\t\treturn {\n\t\t\t\t\tname: branch.path,\n\t\t\t\t\ttype: 'file',\n\t\t\t\t} as GitFileTreeFile;\n\t\t\t} else if (branch.type === 'tree' && branch.object) {\n\t\t\t\treturn {\n\t\t\t\t\tname: branch.path,\n\t\t\t\t\ttype: 'folder',\n\t\t\t\t\tchildren: gitTreeToFileTree(branch as any as GitTree),\n\t\t\t\t} as GitFileTreeFolder;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t})\n\t\t.filter((entry) => !!entry?.name) as GitFileTree[];\n}\n\n/**\n * Retrieves a list of refs from a git repository.\n *\n * See https://git-scm.com/book/en/v2/Git-Internals-Git-References for more information.\n *\n * @param repoUrl The URL of the git repository. For example: https://github.com/WordPress/gutenberg.git\n * @param fullyQualifiedBranchPrefix The prefix of the refs to fetch. For example: refs/heads/my-feature-branch\n * @returns A map of refs to their corresponding commit hashes.\n */\nexport async function listGitRefs(\n\trepoUrl: string,\n\tfullyQualifiedBranchPrefix: string\n) {\n\tconst packbuffer = Buffer.from(\n\t\t(await collect([\n\t\t\tGitPktLine.encode(`command=ls-refs\\n`),\n\t\t\tGitPktLine.encode(`agent=git/2.37.3\\n`),\n\t\t\tGitPktLine.encode(`object-format=sha1\\n`),\n\t\t\tGitPktLine.delim(),\n\t\t\tGitPktLine.encode(`peel\\n`),\n\t\t\tGitPktLine.encode(`ref-prefix ${fullyQualifiedBranchPrefix}\\n`),\n\t\t\tGitPktLine.flush(),\n\t\t])) as any\n\t);\n\n\tconst response = await fetch(repoUrl + '/git-upload-pack', {\n\t\tmethod: 'POST',\n\t\theaders: {\n\t\t\tAccept: 'application/x-git-upload-pack-advertisement',\n\t\t\t'content-type': 'application/x-git-upload-pack-request',\n\t\t\t'Content-Length': `${packbuffer.length}`,\n\t\t\t'Git-Protocol': 'version=2',\n\t\t},\n\t\tbody: packbuffer as any,\n\t});\n\n\tconst refs: Record<string, string> = {};\n\tfor await (const line of parseGitResponseLines(response)) {\n\t\tconst spaceAt = line.indexOf(' ');\n\t\tconst ref = line.slice(0, spaceAt);\n\t\t/**\n\t\t * Git protocol may return a line such as:\n\t\t *\n\t\t * 41d27ca5d6df1e7826c7fa297398159857ea2d60 refs/tags/v0.1.28 peeled:883860eacc7c37377f772a26919e700749020e4c\n\t\t *\n\t\t * This means:\n\t\t *\n\t\t * * A tag with a name `v0.1.28`\n\t\t * * The tag is an object with an oid `883860eacc7c37377f772a26919e700749020e4c`\n\t\t * * The tag points to a commit with an oid `41d27ca5d6df1e7826c7fa297398159857ea2d60`\n\t\t *\n\t\t * nameBuffer is everything after the first space. Let's extract the ref name\n\t\t * itself, that is refs/tags/v0.1.28.\n\t\t */\n\t\tconst nameBuffer = line.slice(spaceAt + 1, line.length - 1);\n\t\tconst name = nameBuffer.split(' ')[0];\n\t\trefs[name] = ref;\n\t}\n\treturn refs;\n}\n\n/**\n * Turns a user-provided ref in a convenient format, such as 'main' or\n * '1234567890abcdef1234567890abcdef12345678' into a more structured\n * format that tells us about the nature of the ref, e.g.\n *\n * * { kind: 'refname', refname: 'refs/heads/main' }\n * * { kind: 'commit', refname: '1234567890abcdef1234567890abcdef12345678' }.\n *\n * @param repoUrl\n * @param ref\n * @returns\n */\nasync function parseGitRef(\n\trepoUrl: string,\n\tref: GitRef\n): Promise<ParsedGitRef> {\n\tconst type = ref.type ?? 'infer';\n\tswitch (type) {\n\t\tcase 'commit':\n\t\t\treturn {\n\t\t\t\tkind: 'commit',\n\t\t\t\trefname: ref.value,\n\t\t\t\tresolvedOid: ref.value,\n\t\t\t};\n\t\tcase 'branch':\n\t\t\treturn {\n\t\t\t\tkind: 'refname',\n\t\t\t\trefname: `refs/heads/${ref.value.trim()}`,\n\t\t\t};\n\t\tcase 'tag':\n\t\t\treturn {\n\t\t\t\tkind: 'refname',\n\t\t\t\trefname: `refs/tags/${ref.value.trim()}`,\n\t\t\t};\n\t\tcase 'refname':\n\t\t\treturn {\n\t\t\t\tkind: 'refname',\n\t\t\t\trefname: ref.value.trim(),\n\t\t\t};\n\t\tcase 'infer': {\n\t\t\tconst trimmed = ref.value.trim();\n\t\t\tif (trimmed === '' || trimmed === 'HEAD') {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'refname',\n\t\t\t\t\trefname: 'HEAD',\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (trimmed.startsWith('refs/')) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'refname',\n\t\t\t\t\trefname: trimmed,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (FULL_SHA_REGEX.test(trimmed)) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'commit',\n\t\t\t\t\trefname: trimmed,\n\t\t\t\t\tresolvedOid: trimmed,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst branchRef = `refs/heads/${trimmed}`;\n\t\t\tconst branchOid = await fetchRefOid(repoUrl, branchRef);\n\t\t\tif (branchOid) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'refname',\n\t\t\t\t\trefname: branchRef,\n\t\t\t\t\tresolvedOid: branchOid,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst tagRef = `refs/tags/${trimmed}`;\n\t\t\tconst tagOid = await fetchRefOid(repoUrl, tagRef);\n\t\t\tif (tagOid) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'refname',\n\t\t\t\t\trefname: tagRef,\n\t\t\t\t\tresolvedOid: tagOid,\n\t\t\t\t};\n\t\t\t}\n\t\t\tthrow new Error(`Git ref \"${ref.value}\" not found at ${repoUrl}`);\n\t\t}\n\t\tdefault:\n\t\t\tthrow new Error(`Invalid ref type: ${ref.type}`);\n\t}\n}\n\nasync function fetchRefOid(repoUrl: string, refname: string) {\n\tconst refs = await listGitRefs(repoUrl, refname);\n\tconst candidates = [refname, `${refname}^{}`];\n\tfor (const candidate of candidates) {\n\t\tconst sanitized = candidate.trim();\n\t\tif (sanitized in refs) {\n\t\t\treturn refs[sanitized];\n\t\t}\n\t}\n\treturn null;\n}\n\nasync function fetchWithoutBlobs(repoUrl: string, commitHash: string) {\n\tconst packbuffer = Buffer.from(\n\t\t(await collect([\n\t\t\tGitPktLine.encode(\n\t\t\t\t`want ${commitHash} multi_ack_detailed no-done side-band-64k thin-pack ofs-delta agent=git/2.37.3 filter \\n`\n\t\t\t),\n\t\t\tGitPktLine.encode(`filter blob:none\\n`),\n\t\t\tGitPktLine.encode(`shallow ${commitHash}\\n`),\n\t\t\tGitPktLine.encode(`deepen 1\\n`),\n\t\t\tGitPktLine.flush(),\n\t\t\tGitPktLine.encode(`done\\n`),\n\t\t\tGitPktLine.encode(`done\\n`),\n\t\t])) as any\n\t);\n\n\tconst response = await fetch(repoUrl + '/git-upload-pack', {\n\t\tmethod: 'POST',\n\t\theaders: {\n\t\t\tAccept: 'application/x-git-upload-pack-advertisement',\n\t\t\t'content-type': 'application/x-git-upload-pack-request',\n\t\t\t'Content-Length': `${packbuffer.length}`,\n\t\t},\n\t\tbody: packbuffer as any,\n\t});\n\n\tconst iterator = streamToIterator(response.body!);\n\tconst parsed = await parseUploadPackResponse(iterator);\n\tconst packfile = Buffer.from((await collect(parsed.packfile)) as any);\n\tconst idx = await GitPackIndex.fromPack({\n\t\tpack: packfile,\n\t});\n\tconst originalRead = idx.read as any;\n\tidx.read = async function ({ oid, ...rest }: { oid: string }) {\n\t\tconst result = await originalRead.call(this, { oid, ...rest });\n\t\tresult.oid = oid;\n\t\treturn result;\n\t};\n\treturn {\n\t\tidx,\n\t\tpackfile: toUint8Array(packfile),\n\t\tpromisor: true,\n\t};\n}\n\nasync function resolveAllObjects(idx: GitPackIndex, commitHash: string) {\n\tconst commit = await idx.read({\n\t\toid: commitHash,\n\t});\n\treadObject(commit);\n\n\tconst rootItem = await idx.read({ oid: commit.object.tree });\n\tconst items = [rootItem];\n\twhile (items.length > 0) {\n\t\tconst tree = items.pop();\n\t\tconst readItem = await idx.read({ oid: tree.oid });\n\t\treadObject(readItem);\n\t\ttree.object = readItem.object;\n\t\tif (readItem.type === 'tree') {\n\t\t\tfor (const subitem of readItem.object) {\n\t\t\t\tif (subitem.type === 'tree') {\n\t\t\t\t\titems.push(subitem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn rootItem;\n}\n\nasync function collectLooseObjects(\n\tpack?: {\n\t\tidx: GitPackIndex;\n\t\tpackfile: Uint8Array;\n\t\tpromisor?: boolean;\n\t} | null\n): Promise<SparseCheckoutObject[]> {\n\tif (!pack) {\n\t\treturn [];\n\t}\n\tconst results: SparseCheckoutObject[] = [];\n\tconst seen = new Set<string>();\n\tfor (const oid of pack.idx.hashes ?? []) {\n\t\tif (seen.has(oid)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst offset = pack.idx.offsets.get(oid);\n\t\tif (offset === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst { type, object } = await pack.idx.readSlice({ start: offset });\n\t\tif (type === 'ofs_delta' || type === 'ref_delta') {\n\t\t\tcontinue;\n\t\t}\n\t\tif (!object) {\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(oid);\n\t\tresults.push({\n\t\t\toid,\n\t\t\ttype: type as SparseCheckoutObject['type'],\n\t\t\tbody: toUint8Array(object as Uint8Array),\n\t\t});\n\t}\n\treturn results;\n}\n\nasync function resolveObjects(\n\tidx: GitPackIndex,\n\tcommitHash: string,\n\tpaths: string[]\n) {\n\tconst commit = await idx.read({\n\t\toid: commitHash,\n\t});\n\treadObject(commit);\n\n\tconst rootTree = await idx.read({ oid: commit.object.tree });\n\treadObject(rootTree);\n\n\t// Resolve refs to fetch\n\tconst resolvedOids: Record<string, any> = {};\n\tfor (const path of paths) {\n\t\tlet currentObject = rootTree;\n\t\tconst segments = path.split('/');\n\t\tfor (const segment of segments) {\n\t\t\tif (currentObject.type !== 'tree') {\n\t\t\t\tthrow new Error(`Path not found in the repo: ${path}`);\n\t\t\t}\n\n\t\t\tlet found = false;\n\t\t\tfor (const item of currentObject.object) {\n\t\t\t\tif (item.path === segment) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcurrentObject = await idx.read({ oid: item.oid });\n\t\t\t\t\t\treadObject(currentObject);\n\t\t\t\t\t} catch {\n\t\t\t\t\t\tcurrentObject = item;\n\t\t\t\t\t}\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\tthrow new Error(`Path not found in the repo: ${path}`);\n\t\t\t}\n\t\t}\n\t\tresolvedOids[path] = currentObject;\n\t}\n\treturn resolvedOids;\n}\n\n// Request oid for each resolvedRef\nasync function fetchObjects(url: string, objectHashes: string[]) {\n\tconst packbuffer = Buffer.from(\n\t\t(await collect([\n\t\t\t...objectHashes.map((objectHash) =>\n\t\t\t\tGitPktLine.encode(\n\t\t\t\t\t`want ${objectHash} multi_ack_detailed no-done side-band-64k thin-pack ofs-delta agent=git/2.37.3 \\n`\n\t\t\t\t)\n\t\t\t),\n\t\t\tGitPktLine.flush(),\n\t\t\tGitPktLine.encode(`done\\n`),\n\t\t])) as any\n\t);\n\n\tconst response = await fetch(url + '/git-upload-pack', {\n\t\tmethod: 'POST',\n\t\theaders: {\n\t\t\tAccept: 'application/x-git-upload-pack-advertisement',\n\t\t\t'content-type': 'application/x-git-upload-pack-request',\n\t\t\t'Content-Length': `${packbuffer.length}`,\n\t\t},\n\t\tbody: packbuffer as any,\n\t});\n\n\tconst iterator = streamToIterator(response.body!);\n\tconst parsed = await parseUploadPackResponse(iterator);\n\tconst packfile = Buffer.from((await collect(parsed.packfile)) as any);\n\tif (packfile.byteLength === 0) {\n\t\tconst idx = await GitPackIndex.fromPack({\n\t\t\tpack: packfile,\n\t\t});\n\t\treturn {\n\t\t\tidx,\n\t\t\tpackfile: new Uint8Array(),\n\t\t\tpromisor: false,\n\t\t};\n\t}\n\tconst idx = await GitPackIndex.fromPack({\n\t\tpack: packfile,\n\t});\n\treturn {\n\t\tidx,\n\t\tpackfile: toUint8Array(packfile),\n\t\tpromisor: false,\n\t};\n}\n\nasync function extractGitObjectFromIdx(idx: GitPackIndex, objectHash: string) {\n\tconst tree = await idx.read({ oid: objectHash });\n\treadObject(tree);\n\n\tif (tree.type === 'blob') {\n\t\treturn tree.object;\n\t}\n\n\tconst files: Record<string, any> = {};\n\tfor (const { path, oid, type } of tree.object) {\n\t\tif (type === 'blob') {\n\t\t\tconst object = await idx.read({ oid });\n\t\t\treadObject(object);\n\t\t\tfiles[path] = object.object;\n\t\t} else if (type === 'tree') {\n\t\t\tfiles[path] = await extractGitObjectFromIdx(idx, oid);\n\t\t}\n\t}\n\treturn files;\n}\n\nfunction readObject(result: any) {\n\tif (!(result.object instanceof Buffer)) {\n\t\treturn;\n\t}\n\tswitch (result.type) {\n\t\tcase 'commit':\n\t\t\tresult.object = GitCommit.from(result.object).parse();\n\t\t\tbreak;\n\t\tcase 'tree':\n\t\t\tresult.object = (GitTree.from(result.object) as any).entries();\n\t\t\tbreak;\n\t\tcase 'blob':\n\t\t\tresult.object = new Uint8Array(result.object);\n\t\t\tresult.format = 'content';\n\t\t\tbreak;\n\t\tcase 'tag':\n\t\t\tresult.object = GitAnnotatedTag.from(result.object).parse();\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new ObjectTypeError(\n\t\t\t\tresult.oid,\n\t\t\t\tresult.type,\n\t\t\t\t'blob|commit|tag|tree'\n\t\t\t);\n\t}\n}\n\nasync function* parseGitResponseLines(response: Response) {\n\tconst text = await response.text();\n\tlet at = 0;\n\n\twhile (at <= text.length) {\n\t\tconst lineLength = parseInt(text.substring(at, at + 4), 16);\n\t\tif (lineLength === 0) {\n\t\t\tbreak;\n\t\t}\n\t\tconst line = text.substring(at + 4, at + lineLength);\n\t\tyield line;\n\t\tat += lineLength;\n\t}\n}\n\nfunction streamToIterator(stream: any) {\n\t// Use native async iteration if it's available.\n\tif (stream[Symbol.asyncIterator]) {\n\t\treturn stream;\n\t}\n\tconst reader = stream.getReader();\n\treturn {\n\t\tnext() {\n\t\t\treturn reader.read();\n\t\t},\n\t\treturn() {\n\t\t\treader.releaseLock();\n\t\t\treturn {};\n\t\t},\n\t\t[Symbol.asyncIterator]() {\n\t\t\treturn this;\n\t\t},\n\t};\n}\n\nfunction toUint8Array(buffer: Uint8Array | Buffer) {\n\tif (buffer instanceof Uint8Array) {\n\t\treturn Uint8Array.from(buffer);\n\t}\n\treturn Uint8Array.from(buffer);\n}\n","import { GitIndex } from 'isomorphic-git/src/models/GitIndex.js';\nimport type { SparseCheckoutObject } from './git-sparse-checkout';\nimport pako from 'pako';\nconst deflate = pako.deflate;\n\ntype GitDirectoryRefType = 'branch' | 'tag' | 'commit' | 'refname';\n\ntype GitHeadInfo = {\n\theadContent: string;\n\tbranchName?: string;\n\tbranchRef?: string;\n\ttagName?: string;\n};\n\nconst FULL_SHA_REGEX = /^[0-9a-f]{40}$/i;\n\n/**\n * Creates loose Git object files from sparse checkout objects.\n * Each object is compressed using deflate and stored in the Git objects directory.\n */\nasync function createLooseGitObjectFiles(\n\tobjects: SparseCheckoutObject[]\n): Promise<Record<string, Uint8Array>> {\n\tconst files: Record<string, Uint8Array> = {};\n\tconst encoder = new TextEncoder();\n\n\tawait Promise.all(\n\t\tobjects.map(async ({ oid, type, body }) => {\n\t\t\tif (!oid || body.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst header = encoder.encode(`${type} ${body.length}\\0`);\n\t\t\tconst combined = new Uint8Array(header.length + body.length);\n\t\t\tcombined.set(header, 0);\n\t\t\tcombined.set(body, header.length);\n\t\t\tconst compressed = await deflate(combined);\n\t\t\tconst prefix = oid.slice(0, 2);\n\t\t\tconst suffix = oid.slice(2);\n\t\t\tfiles[`.git/objects/${prefix}/${suffix}`] = compressed;\n\t\t})\n\t);\n\n\treturn files;\n}\n\n/**\n * Resolves the HEAD reference information based on the ref type and value.\n */\nfunction resolveHeadInfo(\n\tref: string,\n\trefType: GitDirectoryRefType | undefined,\n\tcommitHash: string\n): GitHeadInfo {\n\tconst trimmed = ref?.trim() ?? '';\n\tlet fullRef: string | null = null;\n\n\tswitch (refType) {\n\t\tcase 'branch':\n\t\t\tif (trimmed) {\n\t\t\t\tfullRef = `refs/heads/${trimmed}`;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'refname':\n\t\t\tfullRef = trimmed || null;\n\t\t\tbreak;\n\t\tcase 'tag':\n\t\t\tif (trimmed.startsWith('refs/')) {\n\t\t\t\tfullRef = trimmed;\n\t\t\t} else if (trimmed) {\n\t\t\t\tfullRef = `refs/tags/${trimmed}`;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'commit':\n\t\t\tfullRef = null;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tif (trimmed.startsWith('refs/')) {\n\t\t\t\tfullRef = trimmed;\n\t\t\t} else if (FULL_SHA_REGEX.test(trimmed)) {\n\t\t\t\tfullRef = null;\n\t\t\t} else if (trimmed && trimmed !== 'HEAD') {\n\t\t\t\tfullRef = `refs/heads/${trimmed}`;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\tconst headContent = fullRef ? `ref: ${fullRef}\\n` : `${commitHash}\\n`;\n\n\tconst branchRef =\n\t\tfullRef && fullRef.startsWith('refs/heads/') ? fullRef : undefined;\n\tconst branchName = branchRef?.slice('refs/heads/'.length);\n\n\tconst tagRef =\n\t\tfullRef && fullRef.startsWith('refs/tags/') ? fullRef : undefined;\n\tconst tagName = tagRef?.slice('refs/tags/'.length);\n\n\treturn {\n\t\theadContent,\n\t\tbranchName,\n\t\tbranchRef,\n\t\ttagName,\n\t};\n}\n\n/**\n * Builds a Git config file content with remote and branch configuration.\n */\nfunction buildGitConfig(\n\trepoUrl: string,\n\t{\n\t\tbranchName,\n\t\tpartialCloneFilter,\n\t}: { branchName?: string; partialCloneFilter?: string }\n): string {\n\tconst repositoryFormatVersion = partialCloneFilter ? 1 : 0;\n\tconst lines = [\n\t\t'[core]',\n\t\t`\\trepositoryformatversion = ${repositoryFormatVersion}`,\n\t\t'\\tfilemode = true',\n\t\t'\\tbare = false',\n\t\t'\\tlogallrefupdates = true',\n\t\t'\\tignorecase = true',\n\t\t'\\tprecomposeunicode = true',\n\t\t'[remote \"origin\"]',\n\t\t`\\turl = ${repoUrl}`,\n\t\t'\\tfetch = +refs/heads/*:refs/remotes/origin/*',\n\t\t'\\tfetch = +refs/tags/*:refs/tags/*',\n\t];\n\tif (partialCloneFilter) {\n\t\tlines.push('\\tpromisor = true');\n\t\tlines.push(`\\tpartialclonefilter = ${partialCloneFilter}`);\n\t\tlines.push('[extensions]');\n\t\tlines.push('\\tpartialclone = origin');\n\t}\n\tif (branchName) {\n\t\tlines.push(\n\t\t\t`[branch \"${branchName}\"]`,\n\t\t\t'\\tremote = origin',\n\t\t\t`\\tmerge = refs/heads/${branchName}`\n\t\t);\n\t}\n\treturn lines.join('\\n') + '\\n';\n}\n\n/**\n * Creates a complete .git directory structure with all necessary files.\n * This includes HEAD, config, refs, objects, and the Git index.\n */\nexport async function createDotGitDirectory({\n\trepoUrl,\n\tcommitHash,\n\tref,\n\trefType,\n\tobjects,\n\tfileOids,\n\tpathPrefix,\n}: {\n\trepoUrl: string;\n\tcommitHash: string;\n\tref: string;\n\trefType?: GitDirectoryRefType;\n\tobjects: SparseCheckoutObject[];\n\tfileOids: Record<string, string>;\n\tpathPrefix: string;\n}): Promise<Record<string, string | Uint8Array>> {\n\tconst gitFiles: Record<string, string | Uint8Array> = {};\n\tconst headInfo = resolveHeadInfo(ref, refType, commitHash);\n\n\tgitFiles['.git/HEAD'] = headInfo.headContent;\n\tgitFiles['.git/config'] = buildGitConfig(repoUrl, {\n\t\tbranchName: headInfo.branchName,\n\t});\n\tgitFiles['.git/description'] = 'WordPress Playground clone\\n';\n\tgitFiles['.git/shallow'] = `${commitHash}\\n`;\n\n\t// Create refs/ directory structure\n\tgitFiles['.git/refs/heads/.gitkeep'] = '';\n\tgitFiles['.git/refs/tags/.gitkeep'] = '';\n\tgitFiles['.git/refs/remotes/.gitkeep'] = '';\n\n\tif (headInfo.branchRef && headInfo.branchName) {\n\t\tgitFiles['.git/logs/HEAD'] = `ref: ${headInfo.branchRef}\\n`;\n\t\tgitFiles[`.git/${headInfo.branchRef}`] = `${commitHash}\\n`;\n\t\tgitFiles[\n\t\t\t`.git/refs/remotes/origin/${headInfo.branchName}`\n\t\t] = `${commitHash}\\n`;\n\t\tgitFiles[\n\t\t\t'.git/refs/remotes/origin/HEAD'\n\t\t] = `ref: refs/remotes/origin/${headInfo.branchName}\\n`;\n\t}\n\n\tif (headInfo.tagName) {\n\t\tgitFiles[`.git/refs/tags/${headInfo.tagName}`] = `${commitHash}\\n`;\n\t}\n\n\t// Use loose objects only, no packfiles\n\tObject.assign(gitFiles, await createLooseGitObjectFiles(objects));\n\n\t// Create the git index\n\tconst index = new GitIndex();\n\tfor (const [path, oid] of Object.entries(fileOids)) {\n\t\t// Remove the path prefix to get the working tree relative path\n\t\tconst workingTreePath = path\n\t\t\t.substring(pathPrefix.length)\n\t\t\t.replace(/^\\/+/, '');\n\t\tindex.insert({\n\t\t\tfilepath: workingTreePath,\n\t\t\toid,\n\t\t\tstats: {\n\t\t\t\tctimeSeconds: 0,\n\t\t\t\tctimeNanoseconds: 0,\n\t\t\t\tmtimeSeconds: 0,\n\t\t\t\tmtimeNanoseconds: 0,\n\t\t\t\tdev: 0,\n\t\t\t\tino: 0,\n\t\t\t\tmode: 0o100644, // Regular file\n\t\t\t\tuid: 0,\n\t\t\t\tgid: 0,\n\t\t\t\tsize: 0,\n\t\t\t},\n\t\t});\n\t}\n\tconst indexBuffer = await index.toObject();\n\t// Convert Buffer to Uint8Array - copy the data to ensure it's a proper Uint8Array\n\tgitFiles['.git/index'] = Uint8Array.from(indexBuffer);\n\n\treturn gitFiles;\n}\n","import { normalizePath } from '@php-wasm/util';\nimport type { GitFileTree } from './git-sparse-checkout';\n\nexport function listDescendantFiles(\n\tfiles: GitFileTree[],\n\tselectedPath: string\n) {\n\tselectedPath = normalizePath(selectedPath);\n\tconst isRoot = ['', '.', '/'].includes(selectedPath);\n\n\tlet currentTree: GitFileTree[] | null = files;\n\tif (isRoot) {\n\t\tselectedPath = '';\n\t} else {\n\t\tconst segments = selectedPath.split('/');\n\t\tfor (const segment of segments) {\n\t\t\tconst file = currentTree?.find(\n\t\t\t\t(file) => file.name === segment\n\t\t\t) as GitFileTree;\n\t\t\tif (file?.type === 'folder') {\n\t\t\t\tcurrentTree = file.children;\n\t\t\t} else if (file) {\n\t\t\t\treturn [file.name];\n\t\t\t} else {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t}\n\t}\n\n\t// Calculate the list of files to checkout based on the mapping\n\tconst descendants: string[] = [];\n\tconst stack = [{ tree: currentTree, path: selectedPath }];\n\twhile (stack.length > 0) {\n\t\tconst { tree, path } = stack.pop() as {\n\t\t\ttree: GitFileTree[];\n\t\t\tpath: string;\n\t\t};\n\t\tfor (const file of tree) {\n\t\t\tconst filePath = `${path}${path ? '/' : ''}${file.name}`;\n\t\t\tif (file.type === 'folder') {\n\t\t\t\tstack.push({\n\t\t\t\t\ttree: file.children,\n\t\t\t\t\tpath: filePath,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdescendants.push(filePath);\n\t\t\t}\n\t\t}\n\t}\n\treturn descendants;\n}\n\nexport function removePathPrefix(path: string, prefix: string) {\n\tif (path.startsWith(prefix)) {\n\t\treturn path.substring(prefix.length);\n\t}\n\treturn path;\n}\n","import { StreamedFile } from '@php-wasm/stream-compression';\nimport type { FileTree } from '@php-wasm/universal';\nimport { normalizePath } from '@php-wasm/util';\nimport type { Entry } from '@zip.js/zip.js';\nimport { ZipReader, BlobWriter, BlobReader } from '@zip.js/zip.js';\n\nexport interface Filesystem {\n\tread(path: string): Promise<StreamedFile>;\n}\n\nexport class InMemoryFilesystem implements Filesystem {\n\tprivate fileTree: FileTree;\n\n\tconstructor(fileTree: FileTree) {\n\t\tthis.fileTree = fileTree;\n\t}\n\n\tasync read(path: string): Promise<StreamedFile> {\n\t\tlet content = this.getEntryAtPath(path);\n\t\tif (typeof content === 'string') {\n\t\t\tcontent = new TextEncoder().encode(content);\n\t\t} else if (!(content instanceof Uint8Array)) {\n\t\t\tthrow new Error(`Unsupported content type: ${typeof content}`);\n\t\t}\n\t\tconst stream = new ReadableStream({\n\t\t\tstart(controller) {\n\t\t\t\tcontroller.enqueue(content);\n\t\t\t\tcontroller.close();\n\t\t\t},\n\t\t});\n\t\treturn new StreamedFile(stream, path, {\n\t\t\tfilesize: content.byteLength,\n\t\t});\n\t}\n\n\tprivate getEntryAtPath(path: string): Uint8Array | string | FileTree {\n\t\tlet remainingPath = path.replace(/^\\//, '');\n\t\tlet currentSubtree = this.fileTree;\n\t\twhile (remainingPath) {\n\t\t\tif (currentSubtree[remainingPath]) {\n\t\t\t\treturn currentSubtree[remainingPath];\n\t\t\t}\n\t\t\tconst segments = remainingPath.split('/');\n\t\t\tconst nextSegment = segments.shift();\n\t\t\tif (!nextSegment || !currentSubtree[nextSegment]) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcurrentSubtree = currentSubtree[nextSegment] as FileTree;\n\t\t\tremainingPath = segments.join('/');\n\t\t}\n\t\tthrow new Error(`File not found at ${path}`);\n\t}\n}\n\nexport class ZipFilesystem implements Filesystem {\n\tprivate entries: Map<string, Entry> = new Map();\n\tprivate zipReader: ZipReader<BlobReader>;\n\n\tstatic fromStream(stream: ReadableStream<Uint8Array>): ZipFilesystem {\n\t\tconst zipReader = new ZipReader(\n\t\t\tnew BlobReader(new StreamedFile(stream, 'archive.zip'))\n\t\t);\n\t\treturn new ZipFilesystem(zipReader);\n\t}\n\n\tstatic fromArrayBuffer(arrayBuffer: ArrayBuffer): ZipFilesystem {\n\t\tconst zipReader = new ZipReader(\n\t\t\tnew BlobReader(new Blob([arrayBuffer]))\n\t\t);\n\t\treturn new ZipFilesystem(zipReader);\n\t}\n\n\tconstructor(zipReader: ZipReader<BlobReader>) {\n\t\tthis.zipReader = zipReader;\n\t}\n\n\tasync read(relativePath: string): Promise<StreamedFile> {\n\t\tconst entry = await this.getEntry(relativePath);\n\t\tconst blob = await entry.getData!(new BlobWriter());\n\t\treturn new StreamedFile(blob.stream(), relativePath, {\n\t\t\tfilesize: entry.uncompressedSize,\n\t\t});\n\t}\n\n\tprivate async getEntry(relativePath: string): Promise<Entry> {\n\t\tconst entries = await this.getEntries();\n\t\tconst entry = entries.get(relativePath.replace(/^\\//, ''));\n\t\tif (!entry) {\n\t\t\tthrow new Error(`File ${relativePath} not found in the zip.`);\n\t\t}\n\t\treturn entry;\n\t}\n\n\tprivate async getEntries(): Promise<Map<string, Entry>> {\n\t\tif (this.entries.size === 0) {\n\t\t\tconst entries = await this.zipReader.getEntries();\n\t\t\tfor (const entry of entries) {\n\t\t\t\tthis.entries.set(entry.filename, entry);\n\t\t\t}\n\t\t}\n\t\treturn this.entries;\n\t}\n}\n\n/**\n * A Filesystem implementation that cascades through multiple filesystems\n * and returns the first successful result.\n *\n * This is useful for creating a layered approach to file resolution,\n * such as checking a local cache before fetching from a remote source.\n */\nexport class OverlayFilesystem implements Filesystem {\n\tprivate filesystems: Filesystem[];\n\n\t/**\n\t * Creates a new OverlayFilesystem.\n\t *\n\t * @param filesystems An array of Filesystem instances to cascade through.\n\t * The order determines the priority - earlier filesystems\n\t * are checked first.\n\t */\n\tconstructor(filesystems: Filesystem[]) {\n\t\tif (!filesystems.length) {\n\t\t\tthrow new Error(\n\t\t\t\t'OverlayFilesystem requires at least one filesystem'\n\t\t\t);\n\t\t}\n\t\tthis.filesystems = filesystems;\n\t}\n\n\t/**\n\t * Reads a file by trying each filesystem in order until one succeeds.\n\t *\n\t * @param path The path to the file to read.\n\t * @returns A Promise that resolves to a StreamedFile from the first\n\t * filesystem that successfully resolves the path.\n\t * @throws Error if all filesystems fail to resolve the path.\n\t */\n\tasync read(path: string): Promise<StreamedFile> {\n\t\tconst errors: Error[] = [];\n\n\t\t// Try each filesystem in order\n\t\tfor (const filesystem of this.filesystems) {\n\t\t\ttry {\n\t\t\t\treturn await filesystem.read(path);\n\t\t\t} catch (error) {\n\t\t\t\t// Collect the error and continue to the next filesystem\n\t\t\t\terrors.push(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error))\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// If we get here, all filesystems failed\n\t\tconst errorMessages = errors.map((e) => e.message).join('; ');\n\t\tthrow new Error(\n\t\t\t`Failed to read ${path} from any filesystem: ${errorMessages}`,\n\t\t\t{ cause: errors }\n\t\t);\n\t}\n}\n\nexport interface FetchFilesystemOptions {\n\tcorsProxy?: string;\n\tbaseUrl: string;\n}\n\n/**\n * A Filesystem implementation that fetches files from URLs.\n * It can optionally use a CORS proxy and resolve paths relative to a base URL.\n */\nexport class FetchFilesystem implements Filesystem {\n\tprivate baseUrl = '';\n\tprivate options: FetchFilesystemOptions;\n\tprivate isDataUrl: boolean;\n\n\tconstructor(options: FetchFilesystemOptions) {\n\t\tthis.options = options;\n\t\tthis.isDataUrl = options.baseUrl.startsWith('data:');\n\t\tif (this.isDataUrl) {\n\t\t\treturn;\n\t\t}\n\t\t// Ensure the base URL ends with a slash\n\t\tconst url = new URL('./', options.baseUrl);\n\t\tif (url.protocol !== 'http:' && url.protocol !== 'https:') {\n\t\t\tthrow new Error(\n\t\t\t\t'Unsupported protocol: ' +\n\t\t\t\t\turl.protocol +\n\t\t\t\t\t'. Only HTTP and HTTPS are supported.'\n\t\t\t);\n\t\t}\n\t\tthis.baseUrl = url.origin + url.pathname;\n\t}\n\n\tasync read(path: string): Promise<StreamedFile> {\n\t\tif (this.isDataUrl) {\n\t\t\tthrow new Error(\n\t\t\t\t'FetchFilesystem cannot fetch files from data URLs'\n\t\t\t);\n\t\t}\n\n\t\t// Make sure there's no .. segments in the path\n\t\tpath = normalizePath(path);\n\t\t// Prevent escaping the base URL\n\t\tconst cleanPath = path.replace(/^\\//, '');\n\n\t\t// Resolve path to a URL\n\t\tconst url = new URL(cleanPath, this.baseUrl).toString();\n\t\tif (!url.startsWith(this.baseUrl)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Refused to read a file outside of the base URL: ${url}`\n\t\t\t);\n\t\t}\n\n\t\t// Apply CORS proxy if configured\n\t\tconst finalUrl = this.options.corsProxy\n\t\t\t? `${this.options.corsProxy}${encodeURIComponent(url)}`\n\t\t\t: url;\n\n\t\t// Fetch the file\n\t\tconst response = await fetch(finalUrl);\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to fetch file at ${path}: ${response.statusText}`\n\t\t\t);\n\t\t}\n\n\t\t// Get the content length if available\n\t\tconst filesize = response.headers.get('content-length')\n\t\t\t? parseInt(response.headers.get('content-length')!, 10)\n\t\t\t: undefined;\n\n\t\t// Return as a StreamedFile\n\t\treturn new StreamedFile(response.body!, path, { filesize });\n\t}\n}\n\n/**\n * A Filesystem implementation that uses the \"fs\" and \"path\" modules from Node.js\n * to read files from the local file system.\n *\n * This is only available in a local environment.\n */\nexport class NodeJsFilesystem implements Filesystem {\n\tprivate fs: any;\n\tprivate path: any;\n\tprivate root: string;\n\n\tconstructor(root: string) {\n\t\tthis.root = root;\n\t}\n\n\tprivate async ensureNodeModules() {\n\t\tif (!this.fs || !this.path) {\n\t\t\ttry {\n\t\t\t\tthis.fs = await import('fs');\n\t\t\t\tthis.path = await import('path');\n\t\t\t} catch {\n\t\t\t\tthis.fs = require('fs');\n\t\t\t\tthis.path = require('path');\n\t\t\t}\n\t\t\tthis.root = this.path.resolve(this.root) + this.path.sep;\n\t\t}\n\t}\n\n\tasync read(filePath: string): Promise<StreamedFile> {\n\t\tawait this.ensureNodeModules();\n\n\t\tfilePath = this.path.resolve(\n\t\t\tthis.root,\n\t\t\tthis.path.normalize(filePath.replace(/^\\//, ''))\n\t\t);\n\t\tif (!filePath.startsWith(this.root)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Refused to read a file outside of the root directory: ${filePath}`\n\t\t\t);\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst fullPath = this.path.resolve(filePath);\n\t\t\tconst stream = this.fs.createReadStream(fullPath);\n\n\t\t\tstream.on('error', (err: any) => {\n\t\t\t\treject(\n\t\t\t\t\tnew Error(\n\t\t\t\t\t\t`Failed to read file at ${filePath}: ${err.message}`\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tthis.fs.stat(fullPath, (err: any, stats: any) => {\n\t\t\t\tif (err) {\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t`Failed to read file at ${filePath}: ${err.message}`\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(\n\t\t\t\t\t\tnew StreamedFile(\n\t\t\t\t\t\t\tnodeStreamToReadableStream(stream),\n\t\t\t\t\t\t\tfilePath,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfilesize: stats.size,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n\nfunction nodeStreamToReadableStream(stream: any): ReadableStream {\n\tconst readableStream = new ReadableStream({\n\t\tstart(controller) {\n\t\t\tstream.on('data', (chunk: Buffer) => controller.enqueue(chunk));\n\t\t\tstream.on('end', () => controller.close());\n\t\t},\n\t});\n\treturn readableStream;\n}\n"],"names":["createClient","githubToken","Octokit","filesListToObject","files","root","result","file","getFilesFromDirectory","octokit","owner","repo","ref","path","options","onProgress","filePromises","directoryPromises","content","item","getFileContent","filesInDirs","dir","semaphore","Semaphore","release","fileContent","base64ToUint8Array","base64","binaryString","len","bytes","i","getArtifact","pull_number","workflow_id","pullRequest","runId","_a","artifacts","mayPush","repository","headers","createOrUpdateBranch","branch","newHead","fork","user","createCommit","message","parentSha","treeSha","sha","createTree","changeset","tree","createTreeNodes","newTreeSha","blobsPromises","createTreeNode","deleteFile","blobs","blob","blobSemaphore","stringContent","uint8ArrayToBase64","binary","iterateFiles","playground","exceptPaths","normalizePath","stack","currentParent","absPath","joinPaths","filesBefore","filesAfter","changes","seenFilesAfter","fileAfter","before","after","uint8arraysEqual","pathBefore","a","b","val","index","directoryHandleFromMountDevice","device","opfsPathToDirectoryHandle","opfsPath","parts","p","handle","part","directoryHandleToOpfsPath","directoryHandle","pathParts","clearContentsFromMountDevice","mountDevice","parentHandle","name","fromValue","value","queue","getIterator","iterable","StreamReader","stream","n","done","buffers","lengthBuffers","nextbuffer","acc","buffer","padHex","s","GitPktLine","line","length","hexlength","reader","err","BaseError","json","e","InternalError","UnsafeFilepathError","filepath","compareStrings","comparePath","compareTreeEntryPath","appendSlashIfDir","entry","mode2type","mode","parseBuffer","_entries","cursor","space","nullchar","type","oid","limitModeToAllowed","nudgeIntoShape","GitTree","entries","formatAuthor","email","timestamp","timezoneOffset","formatTimezoneOffset","minutes","sign","simpleSign","negateExceptForZero","hours","strHours","strMinutes","normalizeNewlines","str","parseAuthor","author","offset","parseTimezoneOffset","GitAnnotatedTag","tag","obj","hs","h","key","signature","secretKey","payload","signedTag","indent","x","outdent","GitCommit","commit","committer","signedCommit","GitObject","object","actualLength","BufferCursor","r","enc","source","start","end","applyDelta","delta","sourceSize","readVarIntLE","targetSize","target","firstOp","readOp","writer","tell","shift","byte","readCompactLE","flags","size","COPY","OFFS","SIZE","listpack","onData","PACK","version","numObjects","ofs","reference","parseHeader","inflator","pako","chunk","inflate","inherits_browserModule","ctor","superCtor","TempCtor","base64Js","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","code","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","output","extraBytes","maxChunkLength","len2","ieee754","isLE","mLen","nBytes","m","eLen","eMax","eBias","nBits","d","c","rt","require$$0","require$$1","customInspectSymbol","exports","Buffer","SlowBuffer","K_MAX_LENGTH","typedArraySupport","proto","createBuffer","buf","arg","encodingOrOffset","allocUnsafe","from","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","fromObject","assertSize","alloc","fill","encoding","checked","string","actual","fromArrayLike","array","arrayView","copy","byteOffset","numberIsNaN","y","list","pos","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","max","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","j","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","hexSliceLookupTable","newBuf","checkOffset","ext","noAssert","mul","checkInt","min","maxBytes","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","hi","lo","src","dst","alphabet","table","i16","copyProps","module","SafeBuffer","toString","isarray","esObjectAtoms","esErrors","_eval","range","syntax","uri","abs","floor","pow","round","_isNaN","$isNaN","number","gOPD","$gOPD","gopd","$defineProperty","esDefineProperty","shams","sym","symObj","symVal","_","syms","descriptor","origSymbol","hasSymbolSham","hasSymbols","Reflect_getPrototypeOf","$Object","Object_getPrototypeOf","ERROR_MESSAGE","toStr","funcType","concatty","slicy","arrLike","joiny","joiner","implementation","that","args","bound","binder","boundLength","boundArgs","Empty","functionBind","functionCall","functionApply","reflectApply","bind","$apply","$call","require$$2","$reflectApply","require$$3","actualApply","$TypeError","$actualApply","callBindApplyHelpers","callBind","hasProtoAccessor","desc","$getPrototypeOf","get","reflectGetProto","originalGetProto","getDunderProto","getProto","O","call","$hasOwn","hasown","undefined","$Error","$EvalError","$RangeError","$ReferenceError","require$$4","$SyntaxError","require$$5","require$$6","$URIError","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","$Function","getEvalledConstructor","expressionSyntax","require$$15","require$$16","throwTypeError","ThrowTypeError","require$$17","require$$18","$ObjectGPO","require$$19","$ReflectGPO","require$$20","require$$21","require$$22","needsEval","TypedArray","INTRINSICS","errorProto","doEval","fn","gen","LEGACY_ALIASES","require$$23","hasOwn","require$$24","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","stringToPath","first","last","match","quote","subString","getBaseIntrinsic","allowMissing","intrinsicName","alias","getIntrinsic","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","GetIntrinsic","callBindBasic","$indexOf","callBound","fnToStr","badArrayLike","isCallableMarker","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","objectClass","fnClass","genClass","ddaClass","ddaClass2","ddaClass3","hasToStringTag","isIE68","isDDA","all","isCallable","strClass","hasOwnProperty","forEachArray","iterator","receiver","forEachString","forEachObject","k","isArray","forEach","thisArg","possibleTypedArrayNames","possibleNames","g","global","availableTypedArrays","defineDataProperty","property","nonEnumerable","nonWritable","nonConfigurable","loose","hasPropertyDescriptors","hasPropertyDescriptors_1","define","hasDescriptors","$floor","setFunctionLength","functionLengthIsConfigurable","functionLengthIsWritable","applyBind","originalFunction","func","adjustedLength","$toString","typedArrays","$slice","cache","typedArray","superProto","tryTypedArrays","getter","trySlices","whichTypedArray","isTypedArray","$typedArrayBuffer","typedArrayBuffer","isView","useUint8Array","useArrayBuffer","useFromArrayBuffer","toBuffer","data","isArr","Hash","blockSize","finalSize","block","accum","assigned","remainder","rem","bits","lowBits","highBits","hash","inherits","K","W","Sha1","rotl1","rotl5","rotl30","ft","M","w","t","H","sha1","toHex","hex","supportsSubtleSHA1","shasum","testSubtleSHA1","subtleSHA1","shasumSync","decodeVarInt","multibyte","lastSeven","otherVarIntDecode","startWith","GitPackIndex","stuff","idx","getExternalRefDelta","hashes","offsets","packfileSha","pack","listpackTypes","offsetToObject","crcs","totalObjectCount","lastPercent","percent","offsetArray","o","crc","crc32","count","objectsByDepth","write","fanoutBuffer","crcsBuffer","offsetsBuffer","totalBuffer","shaBuffer","types","raw","btype","lastFour","base","baseOffset","InvalidOidError","ObjectTypeError","expected","normalizeMode","permissions","MAX_UINT32","SecondsNanoseconds","givenSeconds","givenNanoseconds","milliseconds","date","seconds","nanoseconds","normalizeStats","ctimeSeconds","ctimeNanoseconds","mtimeSeconds","mtimeNanoseconds","parseCacheEntryFlags","renderCacheEntryFlags","GitIndex","unmergedPaths","existingEntry","magic","shaComputed","shaClaimed","numEntries","pathlength","padding","stats","stage","bfilepath","bpath","written","stat","header","entryBuffers","body","main","sum","forAwait","cb","iter","collect","nextIndex","FIFO","resolve","GitSideBand","input","packetlines","packfile","progress","nextBit","error","parseUploadPackResponse","shallows","unshallows","acks","nak","reject","status","BufferPolyfill","sparseCheckout","repoUrl","commitHash","filesPaths","treesPack","fetchWithoutBlobs","objects","resolveObjects","blobOids","blobsPack","fetchObjects","fetchedPaths","extractGitObjectFromIdx","packfiles","treesIndex","toUint8Array","blobsIndex","fileOids","collectLooseObjects","FULL_SHA_REGEX","listGitFiles","rootTree","resolveAllObjects","gitTreeToFileTree","resolveCommitHash","parseGitRef","fetchRefOid","listGitRefs","fullyQualifiedBranchPrefix","packbuffer","response","refs","parseGitResponseLines","spaceAt","trimmed","branchRef","branchOid","tagRef","tagOid","refname","candidates","candidate","sanitized","streamToIterator","originalRead","rest","readObject","rootItem","items","readItem","subitem","results","seen","paths","resolvedOids","currentObject","segments","segment","url","objectHashes","objectHash","text","at","lineLength","deflate","createLooseGitObjectFiles","encoder","combined","compressed","prefix","suffix","resolveHeadInfo","refType","fullRef","headContent","branchName","tagName","buildGitConfig","partialCloneFilter","lines","createDotGitDirectory","pathPrefix","gitFiles","headInfo","workingTreePath","indexBuffer","listDescendantFiles","selectedPath","isRoot","currentTree","descendants","filePath","removePathPrefix","InMemoryFilesystem","fileTree","controller","StreamedFile","remainingPath","currentSubtree","nextSegment","ZipFilesystem","zipReader","ZipReader","BlobReader","arrayBuffer","relativePath","BlobWriter","OverlayFilesystem","filesystems","errors","filesystem","errorMessages","FetchFilesystem","cleanPath","finalUrl","filesize","NodeJsFilesystem","fullPath","nodeStreamToReadableStream"],"mappings":"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","x_google_ignoreList":[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83]}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../packages/playground/storage/src/lib/github.ts","../../../../packages/playground/storage/src/lib/changeset.ts","../../../../packages/playground/storage/src/lib/browser-fs.ts","../../../../isomorphic-git/src/utils/fromValue.js","../../../../isomorphic-git/src/utils/getIterator.js","../../../../isomorphic-git/src/utils/StreamReader.js","../../../../isomorphic-git/src/utils/padHex.js","../../../../isomorphic-git/src/models/GitPktLine.js","../../../../isomorphic-git/src/errors/BaseError.js","../../../../isomorphic-git/src/errors/InternalError.js","../../../../isomorphic-git/src/errors/UnsafeFilepathError.js","../../../../isomorphic-git/src/utils/compareStrings.js","../../../../isomorphic-git/src/utils/comparePath.js","../../../../isomorphic-git/src/utils/compareTreeEntryPath.js","../../../../isomorphic-git/src/models/GitTree.js","../../../../isomorphic-git/src/utils/formatAuthor.js","../../../../isomorphic-git/src/utils/normalizeNewlines.js","../../../../isomorphic-git/src/utils/parseAuthor.js","../../../../isomorphic-git/src/models/GitAnnotatedTag.js","../../../../isomorphic-git/src/utils/indent.js","../../../../isomorphic-git/src/utils/outdent.js","../../../../isomorphic-git/src/models/GitCommit.js","../../../../isomorphic-git/src/models/GitObject.js","../../../../isomorphic-git/src/utils/BufferCursor.js","../../../../isomorphic-git/src/utils/applyDelta.js","../../../../isomorphic-git/src/utils/git-list-pack.js","../../../../isomorphic-git/src/utils/inflate.js","../../../../node_modules/inherits/inherits_browser.js","../../../../node_modules/base64-js/index.js","../../../../node_modules/ieee754/index.js","../../../../node_modules/buffer/index.js","../../../../node_modules/safe-buffer/index.js","../../../../node_modules/isarray/index.js","../../../../node_modules/es-errors/type.js","../../../../node_modules/es-object-atoms/index.js","../../../../node_modules/es-errors/index.js","../../../../node_modules/es-errors/eval.js","../../../../node_modules/es-errors/range.js","../../../../node_modules/es-errors/ref.js","../../../../node_modules/es-errors/syntax.js","../../../../node_modules/es-errors/uri.js","../../../../node_modules/math-intrinsics/abs.js","../../../../node_modules/math-intrinsics/floor.js","../../../../node_modules/math-intrinsics/max.js","../../../../node_modules/math-intrinsics/min.js","../../../../node_modules/math-intrinsics/pow.js","../../../../node_modules/math-intrinsics/round.js","../../../../node_modules/math-intrinsics/isNaN.js","../../../../node_modules/math-intrinsics/sign.js","../../../../node_modules/gopd/gOPD.js","../../../../node_modules/gopd/index.js","../../../../node_modules/es-define-property/index.js","../../../../node_modules/has-symbols/shams.js","../../../../node_modules/has-symbols/index.js","../../../../node_modules/get-proto/Reflect.getPrototypeOf.js","../../../../node_modules/get-proto/Object.getPrototypeOf.js","../../../../node_modules/function-bind/implementation.js","../../../../node_modules/function-bind/index.js","../../../../node_modules/call-bind-apply-helpers/functionCall.js","../../../../node_modules/call-bind-apply-helpers/functionApply.js","../../../../node_modules/call-bind-apply-helpers/reflectApply.js","../../../../node_modules/call-bind-apply-helpers/actualApply.js","../../../../node_modules/call-bind-apply-helpers/index.js","../../../../node_modules/dunder-proto/get.js","../../../../node_modules/get-proto/index.js","../../../../node_modules/hasown/index.js","../../../../node_modules/get-intrinsic/index.js","../../../../node_modules/call-bound/index.js","../../../../node_modules/is-callable/index.js","../../../../node_modules/for-each/index.js","../../../../node_modules/possible-typed-array-names/index.js","../../../../node_modules/available-typed-arrays/index.js","../../../../node_modules/define-data-property/index.js","../../../../node_modules/has-property-descriptors/index.js","../../../../node_modules/set-function-length/index.js","../../../../node_modules/call-bind-apply-helpers/applyBind.js","../../../../node_modules/call-bind/index.js","../../../../node_modules/has-tostringtag/shams.js","../../../../node_modules/which-typed-array/index.js","../../../../node_modules/is-typed-array/index.js","../../../../node_modules/typed-array-buffer/index.js","../../../../node_modules/to-buffer/index.js","../../../../node_modules/sha.js/hash.js","../../../../node_modules/sha.js/sha1.js","../../../../isomorphic-git/src/utils/toHex.js","../../../../isomorphic-git/src/utils/shasum.js","../../../../isomorphic-git/src/models/GitPackIndex.js","../../../../isomorphic-git/src/errors/InvalidOidError.js","../../../../isomorphic-git/src/errors/ObjectTypeError.js","../../../../isomorphic-git/src/utils/normalizeMode.js","../../../../isomorphic-git/src/utils/normalizeStats.js","../../../../isomorphic-git/src/models/GitIndex.js","../../../../isomorphic-git/src/utils/forAwait.js","../../../../isomorphic-git/src/utils/collect.js","../../../../isomorphic-git/src/utils/FIFO.js","../../../../isomorphic-git/src/models/GitSideBand.js","../../../../isomorphic-git/src/wire/parseUploadPackResponse.js","../../../../packages/playground/storage/src/lib/git-sparse-checkout.ts","../../../../packages/playground/storage/src/lib/git-create-dotgit-directory.ts","../../../../packages/playground/storage/src/lib/paths.ts","../../../../packages/playground/storage/src/lib/filesystems.ts"],"sourcesContent":["import { Semaphore } from '@php-wasm/util';\nimport { Octokit } from 'octokit';\nimport type { Changeset } from './changeset';\n\nexport type GithubClient = ReturnType<typeof createClient>;\n\nexport function createClient(githubToken: string): Octokit {\n\tconst octokit = new Octokit({\n\t\tauth: githubToken,\n\t});\n\treturn octokit;\n}\n\nexport type Files = Record<string, Uint8Array>;\nexport function filesListToObject(files: any[], root = '') {\n\tif (root.length && !root.endsWith('/')) {\n\t\troot += '/';\n\t}\n\tconst result: Files = {};\n\tfor (const file of files) {\n\t\tif (file.path.startsWith(root)) {\n\t\t\tresult[file.path.substring(root.length)] = file.content;\n\t\t}\n\t}\n\treturn result;\n}\n\nexport interface GetFilesProgress {\n\tfoundFiles: number;\n\tdownloadedFiles: number;\n}\nexport interface GetFilesOptions {\n\tonProgress?: ({ foundFiles, downloadedFiles }: GetFilesProgress) => void;\n\tprogress?: GetFilesProgress;\n}\nexport async function getFilesFromDirectory(\n\toctokit: GithubClient,\n\towner: string,\n\trepo: string,\n\tref: string,\n\tpath: string,\n\toptions: GetFilesOptions = {}\n) {\n\tif (!options.progress) {\n\t\toptions.progress = {\n\t\t\tfoundFiles: 0,\n\t\t\tdownloadedFiles: 0,\n\t\t};\n\t}\n\tconst { onProgress } = options;\n\tconst filePromises: Promise<any>[] = [];\n\tconst directoryPromises: Promise<any>[] = [];\n\n\t// Fetch the content of the directory\n\tconst { data: content } = await octokit.rest.repos.getContent({\n\t\towner,\n\t\trepo,\n\t\tpath,\n\t\tref,\n\t});\n\tif (!Array.isArray(content)) {\n\t\tthrow new Error(\n\t\t\t`Expected the list of files to be an array, but got ${typeof content}`\n\t\t);\n\t}\n\n\tfor (const item of content) {\n\t\tif (item.type === 'file') {\n\t\t\t++options.progress.foundFiles;\n\t\t\tonProgress?.(options.progress);\n\t\t\tfilePromises.push(\n\t\t\t\tgetFileContent(octokit, owner, repo, ref, item).then((file) => {\n\t\t\t\t\t++options.progress!.downloadedFiles;\n\t\t\t\t\tonProgress?.(options.progress!);\n\t\t\t\t\treturn file;\n\t\t\t\t})\n\t\t\t);\n\t\t} else if (item.type === 'dir') {\n\t\t\tdirectoryPromises.push(\n\t\t\t\tgetFilesFromDirectory(\n\t\t\t\t\toctokit,\n\t\t\t\t\towner,\n\t\t\t\t\trepo,\n\t\t\t\t\tref,\n\t\t\t\t\titem.path,\n\t\t\t\t\toptions\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}\n\n\tconst files = await Promise.all(filePromises);\n\tconst filesInDirs = (await Promise.all(directoryPromises)).flatMap(\n\t\t(dir) => dir\n\t);\n\treturn [...files, ...filesInDirs];\n}\n\nconst semaphore = new Semaphore({ concurrency: 15 });\nasync function getFileContent(\n\toctokit: GithubClient,\n\towner: string,\n\trepo: string,\n\tref: string,\n\titem: { path: string; name: string }\n) {\n\tconst release = await semaphore.acquire();\n\ttry {\n\t\tconst { data: fileContent } = await octokit.rest.repos.getContent({\n\t\t\towner,\n\t\t\trepo,\n\t\t\tref,\n\t\t\tpath: item.path,\n\t\t});\n\t\tif (!('content' in fileContent)) {\n\t\t\tthrow new Error(`No content found for ${item.path}`);\n\t\t}\n\t\treturn {\n\t\t\tname: item.name,\n\t\t\tpath: item.path,\n\t\t\tcontent: base64ToUint8Array(fileContent.content),\n\t\t};\n\t} finally {\n\t\trelease();\n\t}\n}\n\nfunction base64ToUint8Array(base64: string) {\n\tconst binaryString = window.atob(base64); // This will convert base64 to binary string\n\tconst len = binaryString.length;\n\tconst bytes = new Uint8Array(len);\n\tfor (let i = 0; i < len; i++) {\n\t\tbytes[i] = binaryString.charCodeAt(i);\n\t}\n\treturn bytes;\n}\n\n/**\n * Usage:\n * > await getArtifact('wordpress', 'wordpress-develop', 5511, 'build.yml')\n *\n * To get the first artifact produced by the \"build.yml\" workflow running\n * as a part of the PR 5511\n *\n * @returns\n */\nexport async function getArtifact(\n\toctokit: GithubClient,\n\towner: string,\n\trepo: string,\n\tpull_number: number,\n\tworkflow_id: string\n) {\n\tconst { data: pullRequest } = await octokit.rest.pulls.get({\n\t\towner,\n\t\trepo,\n\t\tpull_number,\n\t});\n\tconst workflowRuns = await octokit.rest.actions.listWorkflowRuns({\n\t\towner,\n\t\trepo,\n\t\tbranch: pullRequest.head.ref,\n\t\tworkflow_id,\n\t});\n\tconst runId = workflowRuns.data.workflow_runs[0]?.id;\n\tconst artifacts = await octokit.rest.actions.listWorkflowRunArtifacts({\n\t\towner,\n\t\trepo,\n\t\trun_id: runId,\n\t});\n\n\tconst artifact = await octokit.rest.actions.downloadArtifact({\n\t\towner,\n\t\trepo,\n\t\tartifact_id: artifacts.data.artifacts[0].id,\n\t\tarchive_format: 'zip',\n\t});\n\treturn artifact.data;\n}\n\nexport async function mayPush(octokit: Octokit, owner: string, repo: string) {\n\tconst { data: repository, headers } = await octokit.request(\n\t\t'GET /repos/{owner}/{repo}',\n\t\t{\n\t\t\towner,\n\t\t\trepo,\n\t\t}\n\t);\n\tif (!headers['x-oauth-scopes'] || !repository.permissions?.push) {\n\t\treturn false;\n\t}\n\n\t// @TODO Find a way to bubble up the following error earlier than on the\n\t// first push attempt:\n\t// \"organization has enabled OAuth App access restrictions\"\n\treturn true;\n}\n\nexport async function createOrUpdateBranch(\n\toctokit: Octokit,\n\towner: string,\n\trepo: string,\n\tbranch: string,\n\tnewHead: string\n) {\n\tconst branchExists = await octokit\n\t\t.request('GET /repos/{owner}/{repo}/branches/{branch}', {\n\t\t\towner,\n\t\t\trepo,\n\t\t\tbranch,\n\t\t})\n\t\t.then(\n\t\t\t() => true,\n\t\t\t() => false\n\t\t);\n\n\tif (branchExists) {\n\t\tawait octokit.request('PATCH /repos/{owner}/{repo}/git/refs/{ref}', {\n\t\t\towner,\n\t\t\trepo,\n\t\t\tsha: newHead,\n\t\t\tref: `heads/${branch}`,\n\t\t});\n\t} else {\n\t\tawait octokit.request('POST /repos/{owner}/{repo}/git/refs', {\n\t\t\towner,\n\t\t\trepo,\n\t\t\tsha: newHead,\n\t\t\tref: `refs/heads/${branch}`,\n\t\t});\n\t}\n}\n\n/**\n * @param octokit\n * @param owner\n * @param repo\n * @returns The owner of the forked repository\n */\nexport async function fork(octokit: Octokit, owner: string, repo: string) {\n\tconst user = await octokit.request('GET /user');\n\tconst forks = await octokit.request('GET /repos/{owner}/{repo}/forks', {\n\t\towner,\n\t\trepo,\n\t});\n\tconst hasFork = forks.data.find(\n\t\t(fork: any) => fork.owner && fork.owner.login === user.data.login\n\t);\n\n\tif (!hasFork) {\n\t\tawait octokit.request('POST /repos/{owner}/{repo}/forks', {\n\t\t\towner,\n\t\t\trepo,\n\t\t});\n\t}\n\n\treturn user.data.login;\n}\n\nexport async function createCommit(\n\toctokit: Octokit,\n\towner: string,\n\trepo: string,\n\tmessage: string,\n\tparentSha: string,\n\ttreeSha: string\n): Promise<string> {\n\tconst {\n\t\tdata: { sha },\n\t} = await octokit.request('POST /repos/{owner}/{repo}/git/commits', {\n\t\towner,\n\t\trepo,\n\t\tmessage,\n\t\ttree: treeSha,\n\t\tparents: [parentSha],\n\t});\n\n\treturn sha;\n}\n\nexport async function createTree(\n\toctokit: Octokit,\n\towner: string,\n\trepo: string,\n\tparentSha: string,\n\tchangeset: Changeset\n) {\n\tconst tree = await createTreeNodes(\n\t\toctokit,\n\t\towner,\n\t\trepo,\n\t\tparentSha,\n\t\tchangeset\n\t);\n\tif (tree.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst {\n\t\tdata: { sha: newTreeSha },\n\t} = await octokit.request('POST /repos/{owner}/{repo}/git/trees', {\n\t\towner,\n\t\trepo,\n\t\tbase_tree: parentSha,\n\t\ttree,\n\t});\n\treturn newTreeSha;\n}\n\nexport type GitHubTreeNode = {\n\tpath: string;\n\tmode: '100644';\n} & (\n\t| {\n\t\t\tsha: string | null;\n\t }\n\t| {\n\t\t\tcontent: string;\n\t }\n);\nexport async function createTreeNodes(\n\toctokit: Octokit,\n\towner: string,\n\trepo: string,\n\tparentSha: string,\n\tchangeset: Changeset\n): Promise<GitHubTreeNode[]> {\n\tconst blobsPromises = [];\n\tfor (const [path, content] of changeset.create) {\n\t\tblobsPromises.push(createTreeNode(octokit, owner, repo, path, content));\n\t}\n\tfor (const [path, content] of changeset.update) {\n\t\tblobsPromises.push(createTreeNode(octokit, owner, repo, path, content));\n\t}\n\tfor (const path of changeset.delete) {\n\t\tblobsPromises.push(deleteFile(octokit, owner, repo, parentSha, path));\n\t}\n\treturn Promise.all(blobsPromises).then(\n\t\t(blobs) => blobs.filter((blob) => !!blob) as GitHubTreeNode[]\n\t);\n}\n\nconst blobSemaphore = new Semaphore({ concurrency: 10 });\nexport async function createTreeNode(\n\toctokit: Octokit,\n\towner: string,\n\trepo: string,\n\tpath: string,\n\tcontent: string | Uint8Array\n): Promise<GitHubTreeNode> {\n\tconst release = await blobSemaphore.acquire();\n\ttry {\n\t\tif (ArrayBuffer.isView(content)) {\n\t\t\ttry {\n\t\t\t\t// Attempt to decode the byteArray as a UTF-8 string\n\t\t\t\tconst stringContent = new TextDecoder('utf-8', {\n\t\t\t\t\tfatal: true,\n\t\t\t\t}).decode(content);\n\t\t\t\treturn {\n\t\t\t\t\tpath,\n\t\t\t\t\tcontent: stringContent,\n\t\t\t\t\tmode: '100644',\n\t\t\t\t};\n\t\t\t} catch {\n\t\t\t\t// If an error occurs, the byteArray is not valid UTF-8 and we must\n\t\t\t\t// create a blob first\n\t\t\t\tconst {\n\t\t\t\t\tdata: { sha },\n\t\t\t\t} = await octokit.rest.git.createBlob({\n\t\t\t\t\towner,\n\t\t\t\t\trepo,\n\t\t\t\t\tencoding: 'base64',\n\t\t\t\t\tcontent: uint8ArrayToBase64(content),\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\tpath,\n\t\t\t\t\tsha,\n\t\t\t\t\tmode: '100644',\n\t\t\t\t};\n\t\t\t}\n\t\t} else {\n\t\t\t// Content is a string\n\t\t\treturn {\n\t\t\t\tpath,\n\t\t\t\tcontent,\n\t\t\t\tmode: '100644',\n\t\t\t};\n\t\t}\n\t} finally {\n\t\trelease();\n\t}\n}\n\nexport async function deleteFile(\n\toctokit: Octokit,\n\towner: string,\n\trepo: string,\n\tparentSha: string,\n\tpath: string\n): Promise<GitHubTreeNode | undefined> {\n\tconst release = await blobSemaphore.acquire();\n\ttry {\n\t\t// Deleting a non-existent file from a tree leads to an\n\t\t// \"GitRPC::BadObjectState\" error, so we only attempt to delete the file if\n\t\t// it exists.\n\t\tawait octokit.request('HEAD /repos/{owner}/{repo}/contents/:path', {\n\t\t\towner,\n\t\t\trepo,\n\t\t\tref: parentSha,\n\t\t\tpath,\n\t\t});\n\n\t\treturn {\n\t\t\tpath,\n\t\t\tmode: '100644',\n\t\t\tsha: null,\n\t\t};\n\t} catch {\n\t\t// Pass\n\t\treturn undefined;\n\t} finally {\n\t\trelease();\n\t}\n}\n\nfunction uint8ArrayToBase64(bytes: Uint8Array) {\n\tconst binary = [];\n\tconst len = bytes.byteLength;\n\tfor (let i = 0; i < len; i++) {\n\t\tbinary.push(String.fromCharCode(bytes[i]));\n\t}\n\treturn window.btoa(binary.join(''));\n}\n","import type { UniversalPHP } from '@php-wasm/universal';\nimport { joinPaths, normalizePath } from '@php-wasm/util';\n\nexport type IterateFilesOptions = {\n\t/**\n\t * Should yield paths relative to the root directory?\n\t * If false, all paths will be absolute.\n\t */\n\trelativePaths?: boolean;\n\n\t/**\n\t * The root directory that Playground paths start from.\n\t */\n\tplaygroundRoot?: string;\n\n\t/**\n\t * A prefix to add to all paths.\n\t * Only used if `relativePaths` is true.\n\t */\n\tpathPrefix?: string;\n\n\t/**\n\t * A list of paths to exclude from the results.\n\t */\n\texceptPaths?: string[];\n};\n\n/**\n * Iterates over all files in a Playground directory and its subdirectories.\n *\n * @param playground - The Playground/PHP instance.\n * @param root - The root directory to start iterating from.\n * @param options - Optional configuration.\n * @returns All files found in the tree.\n */\nexport async function* iterateFiles(\n\tplayground: UniversalPHP,\n\troot: string,\n\t{ exceptPaths = [] }: IterateFilesOptions = {}\n): AsyncGenerator<FileEntry> {\n\troot = normalizePath(root);\n\t// If the root is be a file, not a directory, then\n\t// just yield it and return immediately.\n\tif (!(await playground.isDir(root))) {\n\t\tif (await playground.fileExists(root)) {\n\t\t\tyield {\n\t\t\t\tpath: root,\n\t\t\t\tread: async () => await playground.readFileAsBuffer(root),\n\t\t\t};\n\t\t}\n\t\treturn;\n\t}\n\n\tconst stack: string[] = [root];\n\twhile (stack.length) {\n\t\tconst currentParent = stack.pop();\n\t\tif (!currentParent) {\n\t\t\treturn;\n\t\t}\n\t\tconst files = await playground.listFiles(currentParent);\n\t\tfor (const file of files) {\n\t\t\tconst absPath = joinPaths(currentParent, file);\n\t\t\tif (exceptPaths.includes(absPath.substring(root.length + 1))) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (await playground.isDir(absPath)) {\n\t\t\t\tstack.push(absPath);\n\t\t\t} else {\n\t\t\t\tyield {\n\t\t\t\t\tpath: absPath,\n\t\t\t\t\tread: async () =>\n\t\t\t\t\t\tawait playground.readFileAsBuffer(absPath),\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport type FileEntry = {\n\tpath: string;\n\tread: () => Promise<Uint8Array>;\n};\n\n/**\n * Represents a set of changes to be applied to a data store.\n */\nexport type Changeset = {\n\t/**\n\t * Created files.\n\t */\n\tcreate: Map<string, Uint8Array>;\n\n\t/**\n\t * Updated files.\n\t */\n\tupdate: Map<string, Uint8Array>;\n\n\t/**\n\t * Deleted files.\n\t */\n\tdelete: Set<string>;\n};\n\n/**\n * Compares two sets of files and returns a changeset object that describes\n * the differences between them.\n *\n * @param filesBefore - A map of file paths to Uint8Array objects representing the contents\n * of the files before the changes.\n * @param filesAfter - An async generator that yields FileEntry objects representing the files\n * after the changes.\n * @returns A changeset object that describes the differences between the two sets of files.\n */\nexport async function changeset(\n\tfilesBefore: Map<string, Uint8Array>,\n\tfilesAfter: AsyncGenerator<FileEntry> | Iterable<FileEntry>\n) {\n\tconst changes: Changeset = {\n\t\tcreate: new Map(),\n\t\tupdate: new Map(),\n\t\tdelete: new Set(),\n\t};\n\n\tconst seenFilesAfter = new Set<string>();\n\tfor await (const fileAfter of filesAfter) {\n\t\tseenFilesAfter.add(fileAfter.path);\n\n\t\tconst before = filesBefore.get(fileAfter.path);\n\t\tconst after = await fileAfter.read();\n\t\tif (before) {\n\t\t\tif (!uint8arraysEqual(before, after)) {\n\t\t\t\tchanges.update.set(fileAfter.path, after);\n\t\t\t}\n\t\t} else {\n\t\t\tchanges.create.set(fileAfter.path, after);\n\t\t}\n\t}\n\n\tfor (const pathBefore of filesBefore.keys()) {\n\t\tif (!seenFilesAfter.has(pathBefore)) {\n\t\t\tchanges.delete.add(pathBefore);\n\t\t}\n\t}\n\n\treturn changes;\n}\n\nfunction uint8arraysEqual(a: Uint8Array, b: Uint8Array): boolean {\n\treturn a.length === b.length && a.every((val, index) => val === b[index]);\n}\n","import type { MountDevice } from '@php-wasm/web';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type * as pleaseLoadTypes from 'wicg-file-system-access';\n\nexport async function directoryHandleFromMountDevice(\n\tdevice: MountDevice\n): Promise<FileSystemDirectoryHandle> {\n\tif (device.type === 'local-fs') {\n\t\treturn device.handle;\n\t}\n\n\treturn opfsPathToDirectoryHandle(device.path);\n}\n\nexport async function opfsPathToDirectoryHandle(\n\topfsPath: string\n): Promise<FileSystemDirectoryHandle> {\n\tconst parts = opfsPath.split('/').filter((p) => p.length > 0);\n\tlet handle = await navigator.storage.getDirectory();\n\tfor (const part of parts) {\n\t\thandle = await handle.getDirectoryHandle(part, { create: true });\n\t}\n\treturn handle;\n}\n\nexport async function directoryHandleToOpfsPath(\n\tdirectoryHandle: FileSystemDirectoryHandle\n): Promise<string> {\n\tconst root = await navigator.storage.getDirectory();\n\tconst pathParts = await root.resolve(directoryHandle);\n\tif (pathParts === null) {\n\t\tthrow new DOMException(\n\t\t\t'Unable to resolve path of OPFS directory handle.',\n\t\t\t'NotFoundError'\n\t\t);\n\t}\n\treturn '/' + pathParts.join('/');\n}\n\nexport async function clearContentsFromMountDevice(mountDevice: MountDevice) {\n\tconst parentHandle = await directoryHandleFromMountDevice(mountDevice);\n\tfor await (const name of parentHandle.keys()) {\n\t\tawait parentHandle.removeEntry(name, {\n\t\t\trecursive: true,\n\t\t});\n\t}\n}\n","// Convert a value to an Async Iterator\n// This will be easier with async generator functions.\nexport function fromValue(value) {\n let queue = [value]\n return {\n next() {\n return Promise.resolve({ done: queue.length === 0, value: queue.pop() })\n },\n return() {\n queue = []\n return {}\n },\n [Symbol.asyncIterator]() {\n return this\n },\n }\n}\n","import { fromValue } from '../utils/fromValue.js'\n\nexport function getIterator(iterable) {\n if (iterable[Symbol.asyncIterator]) {\n return iterable[Symbol.asyncIterator]()\n }\n if (iterable[Symbol.iterator]) {\n return iterable[Symbol.iterator]()\n }\n if (iterable.next) {\n return iterable\n }\n return fromValue(iterable)\n}\n","import { getIterator } from './getIterator.js'\n\n// inspired by 'gartal' but lighter-weight and more battle-tested.\nexport class StreamReader {\n constructor(stream) {\n // TODO: fix usage in bundlers before Buffer dependency is removed #1855\n if (typeof Buffer === 'undefined') {\n throw new Error('Missing Buffer dependency')\n }\n this.stream = getIterator(stream)\n this.buffer = null\n this.cursor = 0\n this.undoCursor = 0\n this.started = false\n this._ended = false\n this._discardedBytes = 0\n }\n\n eof() {\n return this._ended && this.cursor === this.buffer.length\n }\n\n tell() {\n return this._discardedBytes + this.cursor\n }\n\n async byte() {\n if (this.eof()) return\n if (!this.started) await this._init()\n if (this.cursor === this.buffer.length) {\n await this._loadnext()\n if (this._ended) return\n }\n this._moveCursor(1)\n return this.buffer[this.undoCursor]\n }\n\n async chunk() {\n if (this.eof()) return\n if (!this.started) await this._init()\n if (this.cursor === this.buffer.length) {\n await this._loadnext()\n if (this._ended) return\n }\n this._moveCursor(this.buffer.length)\n return this.buffer.slice(this.undoCursor, this.cursor)\n }\n\n async read(n) {\n if (this.eof()) return\n if (!this.started) await this._init()\n if (this.cursor + n > this.buffer.length) {\n this._trim()\n await this._accumulate(n)\n }\n this._moveCursor(n)\n return this.buffer.slice(this.undoCursor, this.cursor)\n }\n\n async skip(n) {\n if (this.eof()) return\n if (!this.started) await this._init()\n if (this.cursor + n > this.buffer.length) {\n this._trim()\n await this._accumulate(n)\n }\n this._moveCursor(n)\n }\n\n async undo() {\n this.cursor = this.undoCursor\n }\n\n async _next() {\n this.started = true\n let { done, value } = await this.stream.next()\n if (done) {\n this._ended = true\n if (!value) return Buffer.alloc(0)\n }\n if (value) {\n value = Buffer.from(value)\n }\n return value\n }\n\n _trim() {\n // Throw away parts of the buffer we don't need anymore\n // assert(this.cursor <= this.buffer.length)\n this.buffer = this.buffer.slice(this.undoCursor)\n this.cursor -= this.undoCursor\n this._discardedBytes += this.undoCursor\n this.undoCursor = 0\n }\n\n _moveCursor(n) {\n this.undoCursor = this.cursor\n this.cursor += n\n if (this.cursor > this.buffer.length) {\n this.cursor = this.buffer.length\n }\n }\n\n async _accumulate(n) {\n if (this._ended) return\n // Expand the buffer until we have N bytes of data\n // or we've reached the end of the stream\n const buffers = [this.buffer]\n while (this.cursor + n > lengthBuffers(buffers)) {\n const nextbuffer = await this._next()\n if (this._ended) break\n buffers.push(nextbuffer)\n }\n this.buffer = Buffer.concat(buffers)\n }\n\n async _loadnext() {\n this._discardedBytes += this.buffer.length\n this.undoCursor = 0\n this.cursor = 0\n this.buffer = await this._next()\n }\n\n async _init() {\n this.buffer = await this._next()\n }\n}\n\n// This helper function helps us postpone concatenating buffers, which\n// would create intermediate buffer objects,\nfunction lengthBuffers(buffers) {\n return buffers.reduce((acc, buffer) => acc + buffer.length, 0)\n}\n","export function padHex(b, n) {\n const s = n.toString(16)\n return '0'.repeat(b - s.length) + s\n}\n","/**\npkt-line Format\n---------------\n\nMuch (but not all) of the payload is described around pkt-lines.\n\nA pkt-line is a variable length binary string. The first four bytes\nof the line, the pkt-len, indicates the total length of the line,\nin hexadecimal. The pkt-len includes the 4 bytes used to contain\nthe length's hexadecimal representation.\n\nA pkt-line MAY contain binary data, so implementers MUST ensure\npkt-line parsing/formatting routines are 8-bit clean.\n\nA non-binary line SHOULD BE terminated by an LF, which if present\nMUST be included in the total length. Receivers MUST treat pkt-lines\nwith non-binary data the same whether or not they contain the trailing\nLF (stripping the LF if present, and not complaining when it is\nmissing).\n\nThe maximum length of a pkt-line's data component is 65516 bytes.\nImplementations MUST NOT send pkt-line whose length exceeds 65520\n(65516 bytes of payload + 4 bytes of length data).\n\nImplementations SHOULD NOT send an empty pkt-line (\"0004\").\n\nA pkt-line with a length field of 0 (\"0000\"), called a flush-pkt,\nis a special case and MUST be handled differently than an empty\npkt-line (\"0004\").\n\n----\n pkt-line = data-pkt / flush-pkt\n\n data-pkt = pkt-len pkt-payload\n pkt-len = 4*(HEXDIG)\n pkt-payload = (pkt-len - 4)*(OCTET)\n\n flush-pkt = \"0000\"\n----\n\nExamples (as C-style strings):\n\n----\n pkt-line actual value\n ---------------------------------\n \"0006a\\n\" \"a\\n\"\n \"0005a\" \"a\"\n \"000bfoobar\\n\" \"foobar\\n\"\n \"0004\" \"\"\n----\n*/\nimport { StreamReader } from '../utils/StreamReader.js'\nimport { padHex } from '../utils/padHex.js'\n\n// I'm really using this more as a namespace.\n// There's not a lot of \"state\" in a pkt-line\n\nexport class GitPktLine {\n static flush() {\n return Buffer.from('0000', 'utf8')\n }\n\n static delim() {\n return Buffer.from('0001', 'utf8')\n }\n\n static encode(line) {\n if (typeof line === 'string') {\n line = Buffer.from(line)\n }\n const length = line.length + 4\n const hexlength = padHex(4, length)\n return Buffer.concat([Buffer.from(hexlength, 'utf8'), line])\n }\n\n static streamReader(stream) {\n const reader = new StreamReader(stream)\n return async function read() {\n try {\n let length = await reader.read(4)\n if (length == null) return true\n length = parseInt(length.toString('utf8'), 16)\n if (length === 0) return null\n if (length === 1) return null // delim packets\n const buffer = await reader.read(length - 4)\n if (buffer == null) return true\n return buffer\n } catch (err) {\n stream.error = err\n return true\n }\n }\n }\n}\n","export class BaseError extends Error {\n constructor(message) {\n super(message)\n // Setting this here allows TS to infer that all git errors have a `caller` property and\n // that its type is string.\n this.caller = ''\n }\n\n toJSON() {\n // Error objects aren't normally serializable. So we do something about that.\n return {\n code: this.code,\n data: this.data,\n caller: this.caller,\n message: this.message,\n stack: this.stack,\n }\n }\n\n fromJSON(json) {\n const e = new BaseError(json.message)\n e.code = json.code\n e.data = json.data\n e.caller = json.caller\n e.stack = json.stack\n return e\n }\n\n get isIsomorphicGitError() {\n return true\n }\n}\n","import { BaseError } from './BaseError.js'\n\nexport class InternalError extends BaseError {\n /**\n * @param {string} message\n */\n constructor(message) {\n super(\n `An internal error caused this command to fail. Please file a bug report at https://github.com/isomorphic-git/isomorphic-git/issues with this error message: ${message}`\n )\n this.code = this.name = InternalError.code\n this.data = { message }\n }\n}\n/** @type {'InternalError'} */\nInternalError.code = 'InternalError'\n","import { BaseError } from './BaseError.js'\n\nexport class UnsafeFilepathError extends BaseError {\n /**\n * @param {string} filepath\n */\n constructor(filepath) {\n super(`The filepath \"${filepath}\" contains unsafe character sequences`)\n this.code = this.name = UnsafeFilepathError.code\n this.data = { filepath }\n }\n}\n/** @type {'UnsafeFilepathError'} */\nUnsafeFilepathError.code = 'UnsafeFilepathError'\n","export function compareStrings(a, b) {\n // https://stackoverflow.com/a/40355107/2168416\n return -(a < b) || +(a > b)\n}\n","import { compareStrings } from './compareStrings'\n\nexport function comparePath(a, b) {\n // https://stackoverflow.com/a/40355107/2168416\n return compareStrings(a.path, b.path)\n}\n","import { compareStrings } from './compareStrings'\n\nexport function compareTreeEntryPath(a, b) {\n // Git sorts tree entries as if there is a trailing slash on directory names.\n return compareStrings(appendSlashIfDir(a), appendSlashIfDir(b))\n}\n\nfunction appendSlashIfDir(entry) {\n return entry.mode === '040000' ? entry.path + '/' : entry.path\n}\n","import { InternalError } from '../errors/InternalError.js'\nimport { UnsafeFilepathError } from '../errors/UnsafeFilepathError.js'\nimport { comparePath } from '../utils/comparePath.js'\nimport { compareTreeEntryPath } from '../utils/compareTreeEntryPath.js'\n\n/**\n *\n * @typedef {Object} TreeEntry\n * @property {string} mode - the 6 digit hexadecimal mode\n * @property {string} path - the name of the file or directory\n * @property {string} oid - the SHA-1 object id of the blob or tree\n * @property {'commit'|'blob'|'tree'} type - the type of object\n */\n\nfunction mode2type(mode) {\n // prettier-ignore\n switch (mode) {\n case '040000': return 'tree'\n case '100644': return 'blob'\n case '100755': return 'blob'\n case '120000': return 'blob'\n case '160000': return 'commit'\n }\n throw new InternalError(`Unexpected GitTree entry mode: ${mode}`)\n}\n\nfunction parseBuffer(buffer) {\n const _entries = []\n let cursor = 0\n while (cursor < buffer.length) {\n const space = buffer.indexOf(32, cursor)\n if (space === -1) {\n throw new InternalError(\n `GitTree: Error parsing buffer at byte location ${cursor}: Could not find the next space character.`\n )\n }\n const nullchar = buffer.indexOf(0, cursor)\n if (nullchar === -1) {\n throw new InternalError(\n `GitTree: Error parsing buffer at byte location ${cursor}: Could not find the next null character.`\n )\n }\n let mode = buffer.slice(cursor, space).toString('utf8')\n if (mode === '40000') mode = '040000' // makes it line up neater in printed output\n const type = mode2type(mode)\n const path = buffer.slice(space + 1, nullchar).toString('utf8')\n\n // Prevent malicious git repos from writing to \"..\\foo\" on clone etc\n if (path.includes('\\\\') || path.includes('/')) {\n throw new UnsafeFilepathError(path)\n }\n\n const oid = buffer.slice(nullchar + 1, nullchar + 21).toString('hex')\n cursor = nullchar + 21\n _entries.push({ mode, path, oid, type })\n }\n return _entries\n}\n\nfunction limitModeToAllowed(mode) {\n if (typeof mode === 'number') {\n mode = mode.toString(8)\n }\n // tree\n if (mode.match(/^0?4.*/)) return '040000' // Directory\n if (mode.match(/^1006.*/)) return '100644' // Regular non-executable file\n if (mode.match(/^1007.*/)) return '100755' // Regular executable file\n if (mode.match(/^120.*/)) return '120000' // Symbolic link\n if (mode.match(/^160.*/)) return '160000' // Commit (git submodule reference)\n throw new InternalError(`Could not understand file mode: ${mode}`)\n}\n\nfunction nudgeIntoShape(entry) {\n if (!entry.oid && entry.sha) {\n entry.oid = entry.sha // Github\n }\n entry.mode = limitModeToAllowed(entry.mode) // index\n if (!entry.type) {\n entry.type = mode2type(entry.mode) // index\n }\n return entry\n}\n\nexport class GitTree {\n constructor(entries) {\n if (Buffer.isBuffer(entries)) {\n this._entries = parseBuffer(entries)\n } else if (Array.isArray(entries)) {\n this._entries = entries.map(nudgeIntoShape)\n } else {\n throw new InternalError('invalid type passed to GitTree constructor')\n }\n // Tree entries are not sorted alphabetically in the usual sense (see `compareTreeEntryPath`)\n // but it is important later on that these be sorted in the same order as they would be returned from readdir.\n this._entries.sort(comparePath)\n }\n\n static from(tree) {\n return new GitTree(tree)\n }\n\n render() {\n return this._entries\n .map(entry => `${entry.mode} ${entry.type} ${entry.oid} ${entry.path}`)\n .join('\\n')\n }\n\n toObject() {\n // Adjust the sort order to match git's\n const entries = [...this._entries]\n entries.sort(compareTreeEntryPath)\n return Buffer.concat(\n entries.map(entry => {\n const mode = Buffer.from(entry.mode.replace(/^0/, ''))\n const space = Buffer.from(' ')\n const path = Buffer.from(entry.path, 'utf8')\n const nullchar = Buffer.from([0])\n const oid = Buffer.from(entry.oid, 'hex')\n return Buffer.concat([mode, space, path, nullchar, oid])\n })\n )\n }\n\n /**\n * @returns {TreeEntry[]}\n */\n entries() {\n return this._entries\n }\n\n *[Symbol.iterator]() {\n for (const entry of this._entries) {\n yield entry\n }\n }\n}\n","export function formatAuthor({ name, email, timestamp, timezoneOffset }) {\n timezoneOffset = formatTimezoneOffset(timezoneOffset)\n return `${name} <${email}> ${timestamp} ${timezoneOffset}`\n}\n\n// The amount of effort that went into crafting these cases to handle\n// -0 (just so we don't lose that information when parsing and reconstructing)\n// but can also default to +0 was extraordinary.\n\nfunction formatTimezoneOffset(minutes) {\n const sign = simpleSign(negateExceptForZero(minutes))\n minutes = Math.abs(minutes)\n const hours = Math.floor(minutes / 60)\n minutes -= hours * 60\n let strHours = String(hours)\n let strMinutes = String(minutes)\n if (strHours.length < 2) strHours = '0' + strHours\n if (strMinutes.length < 2) strMinutes = '0' + strMinutes\n return (sign === -1 ? '-' : '+') + strHours + strMinutes\n}\n\nfunction simpleSign(n) {\n return Math.sign(n) || (Object.is(n, -0) ? -1 : 1)\n}\n\nfunction negateExceptForZero(n) {\n return n === 0 ? n : -n\n}\n","export function normalizeNewlines(str) {\n // remove all <CR>\n str = str.replace(/\\r/g, '')\n // no extra newlines up front\n str = str.replace(/^\\n+/, '')\n // and a single newline at the end\n str = str.replace(/\\n+$/, '') + '\\n'\n return str\n}\n","export function parseAuthor(author) {\n const [, name, email, timestamp, offset] = author.match(\n /^(.*) <(.*)> (.*) (.*)$/\n )\n return {\n name: name,\n email: email,\n timestamp: Number(timestamp),\n timezoneOffset: parseTimezoneOffset(offset),\n }\n}\n\n// The amount of effort that went into crafting these cases to handle\n// -0 (just so we don't lose that information when parsing and reconstructing)\n// but can also default to +0 was extraordinary.\n\nfunction parseTimezoneOffset(offset) {\n let [, sign, hours, minutes] = offset.match(/(\\+|-)(\\d\\d)(\\d\\d)/)\n minutes = (sign === '+' ? 1 : -1) * (Number(hours) * 60 + Number(minutes))\n return negateExceptForZero(minutes)\n}\n\nfunction negateExceptForZero(n) {\n return n === 0 ? n : -n\n}\n","import { InternalError } from '../errors/InternalError.js'\nimport { formatAuthor } from '../utils/formatAuthor.js'\nimport { normalizeNewlines } from '../utils/normalizeNewlines.js'\nimport { parseAuthor } from '../utils/parseAuthor.js'\n\nexport class GitAnnotatedTag {\n constructor(tag) {\n if (typeof tag === 'string') {\n this._tag = tag\n } else if (Buffer.isBuffer(tag)) {\n this._tag = tag.toString('utf8')\n } else if (typeof tag === 'object') {\n this._tag = GitAnnotatedTag.render(tag)\n } else {\n throw new InternalError(\n 'invalid type passed to GitAnnotatedTag constructor'\n )\n }\n }\n\n static from(tag) {\n return new GitAnnotatedTag(tag)\n }\n\n static render(obj) {\n return `object ${obj.object}\ntype ${obj.type}\ntag ${obj.tag}\ntagger ${formatAuthor(obj.tagger)}\n\n${obj.message}\n${obj.gpgsig ? obj.gpgsig : ''}`\n }\n\n justHeaders() {\n return this._tag.slice(0, this._tag.indexOf('\\n\\n'))\n }\n\n message() {\n const tag = this.withoutSignature()\n return tag.slice(tag.indexOf('\\n\\n') + 2)\n }\n\n parse() {\n return Object.assign(this.headers(), {\n message: this.message(),\n gpgsig: this.gpgsig(),\n })\n }\n\n render() {\n return this._tag\n }\n\n headers() {\n const headers = this.justHeaders().split('\\n')\n const hs = []\n for (const h of headers) {\n if (h[0] === ' ') {\n // combine with previous header (without space indent)\n hs[hs.length - 1] += '\\n' + h.slice(1)\n } else {\n hs.push(h)\n }\n }\n const obj = {}\n for (const h of hs) {\n const key = h.slice(0, h.indexOf(' '))\n const value = h.slice(h.indexOf(' ') + 1)\n if (Array.isArray(obj[key])) {\n obj[key].push(value)\n } else {\n obj[key] = value\n }\n }\n if (obj.tagger) {\n obj.tagger = parseAuthor(obj.tagger)\n }\n if (obj.committer) {\n obj.committer = parseAuthor(obj.committer)\n }\n return obj\n }\n\n withoutSignature() {\n const tag = normalizeNewlines(this._tag)\n if (tag.indexOf('\\n-----BEGIN PGP SIGNATURE-----') === -1) return tag\n return tag.slice(0, tag.lastIndexOf('\\n-----BEGIN PGP SIGNATURE-----'))\n }\n\n gpgsig() {\n if (this._tag.indexOf('\\n-----BEGIN PGP SIGNATURE-----') === -1) return\n const signature = this._tag.slice(\n this._tag.indexOf('-----BEGIN PGP SIGNATURE-----'),\n this._tag.indexOf('-----END PGP SIGNATURE-----') +\n '-----END PGP SIGNATURE-----'.length\n )\n return normalizeNewlines(signature)\n }\n\n payload() {\n return this.withoutSignature() + '\\n'\n }\n\n toObject() {\n return Buffer.from(this._tag, 'utf8')\n }\n\n static async sign(tag, sign, secretKey) {\n const payload = tag.payload()\n let { signature } = await sign({ payload, secretKey })\n // renormalize the line endings to the one true line-ending\n signature = normalizeNewlines(signature)\n const signedTag = payload + signature\n // return a new tag object\n return GitAnnotatedTag.from(signedTag)\n }\n}\n","export function indent(str) {\n return (\n str\n .trim()\n .split('\\n')\n .map(x => ' ' + x)\n .join('\\n') + '\\n'\n )\n}\n","export function outdent(str) {\n return str\n .split('\\n')\n .map(x => x.replace(/^ /, ''))\n .join('\\n')\n}\n","import { InternalError } from '../errors/InternalError.js'\nimport { formatAuthor } from '../utils/formatAuthor.js'\nimport { indent } from '../utils/indent.js'\nimport { normalizeNewlines } from '../utils/normalizeNewlines.js'\nimport { outdent } from '../utils/outdent.js'\nimport { parseAuthor } from '../utils/parseAuthor.js'\n\nexport class GitCommit {\n constructor(commit) {\n if (typeof commit === 'string') {\n this._commit = commit\n } else if (Buffer.isBuffer(commit)) {\n this._commit = commit.toString('utf8')\n } else if (typeof commit === 'object') {\n this._commit = GitCommit.render(commit)\n } else {\n throw new InternalError('invalid type passed to GitCommit constructor')\n }\n }\n\n static fromPayloadSignature({ payload, signature }) {\n const headers = GitCommit.justHeaders(payload)\n const message = GitCommit.justMessage(payload)\n const commit = normalizeNewlines(\n headers + '\\ngpgsig' + indent(signature) + '\\n' + message\n )\n return new GitCommit(commit)\n }\n\n static from(commit) {\n return new GitCommit(commit)\n }\n\n toObject() {\n return Buffer.from(this._commit, 'utf8')\n }\n\n // Todo: allow setting the headers and message\n headers() {\n return this.parseHeaders()\n }\n\n // Todo: allow setting the headers and message\n message() {\n return GitCommit.justMessage(this._commit)\n }\n\n parse() {\n return Object.assign({ message: this.message() }, this.headers())\n }\n\n static justMessage(commit) {\n return normalizeNewlines(commit.slice(commit.indexOf('\\n\\n') + 2))\n }\n\n static justHeaders(commit) {\n return commit.slice(0, commit.indexOf('\\n\\n'))\n }\n\n parseHeaders() {\n const headers = GitCommit.justHeaders(this._commit).split('\\n')\n const hs = []\n for (const h of headers) {\n if (h[0] === ' ') {\n // combine with previous header (without space indent)\n hs[hs.length - 1] += '\\n' + h.slice(1)\n } else {\n hs.push(h)\n }\n }\n const obj = {\n parent: [],\n }\n for (const h of hs) {\n const key = h.slice(0, h.indexOf(' '))\n const value = h.slice(h.indexOf(' ') + 1)\n if (Array.isArray(obj[key])) {\n obj[key].push(value)\n } else {\n obj[key] = value\n }\n }\n if (obj.author) {\n obj.author = parseAuthor(obj.author)\n }\n if (obj.committer) {\n obj.committer = parseAuthor(obj.committer)\n }\n return obj\n }\n\n static renderHeaders(obj) {\n let headers = ''\n if (obj.tree) {\n headers += `tree ${obj.tree}\\n`\n } else {\n headers += `tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904\\n` // the null tree\n }\n if (obj.parent) {\n if (obj.parent.length === undefined) {\n throw new InternalError(`commit 'parent' property should be an array`)\n }\n for (const p of obj.parent) {\n headers += `parent ${p}\\n`\n }\n }\n const author = obj.author\n headers += `author ${formatAuthor(author)}\\n`\n const committer = obj.committer || obj.author\n headers += `committer ${formatAuthor(committer)}\\n`\n if (obj.gpgsig) {\n headers += 'gpgsig' + indent(obj.gpgsig)\n }\n return headers\n }\n\n static render(obj) {\n return GitCommit.renderHeaders(obj) + '\\n' + normalizeNewlines(obj.message)\n }\n\n render() {\n return this._commit\n }\n\n withoutSignature() {\n const commit = normalizeNewlines(this._commit)\n if (commit.indexOf('\\ngpgsig') === -1) return commit\n const headers = commit.slice(0, commit.indexOf('\\ngpgsig'))\n const message = commit.slice(\n commit.indexOf('-----END PGP SIGNATURE-----\\n') +\n '-----END PGP SIGNATURE-----\\n'.length\n )\n return normalizeNewlines(headers + '\\n' + message)\n }\n\n isolateSignature() {\n const signature = this._commit.slice(\n this._commit.indexOf('-----BEGIN PGP SIGNATURE-----'),\n this._commit.indexOf('-----END PGP SIGNATURE-----') +\n '-----END PGP SIGNATURE-----'.length\n )\n return outdent(signature)\n }\n\n static async sign(commit, sign, secretKey) {\n const payload = commit.withoutSignature()\n const message = GitCommit.justMessage(commit._commit)\n let { signature } = await sign({ payload, secretKey })\n // renormalize the line endings to the one true line-ending\n signature = normalizeNewlines(signature)\n const headers = GitCommit.justHeaders(commit._commit)\n const signedCommit =\n headers + '\\n' + 'gpgsig' + indent(signature) + '\\n' + message\n // return a new commit object\n return GitCommit.from(signedCommit)\n }\n}\n","import { InternalError } from '../errors/InternalError.js'\n\nexport class GitObject {\n static wrap({ type, object }) {\n return Buffer.concat([\n Buffer.from(`${type} ${object.byteLength.toString()}\\x00`),\n Buffer.from(object),\n ])\n }\n\n static unwrap(buffer) {\n const s = buffer.indexOf(32) // first space\n const i = buffer.indexOf(0) // first null value\n const type = buffer.slice(0, s).toString('utf8') // get type of object\n const length = buffer.slice(s + 1, i).toString('utf8') // get type of object\n const actualLength = buffer.length - (i + 1)\n // verify length\n if (parseInt(length) !== actualLength) {\n throw new InternalError(\n `Length mismatch: expected ${length} bytes but got ${actualLength} instead.`\n )\n }\n return {\n type,\n object: Buffer.from(buffer.slice(i + 1)),\n }\n }\n}\n","// Modeled after https://github.com/tjfontaine/node-buffercursor\n// but with the goal of being much lighter weight.\nexport class BufferCursor {\n constructor(buffer) {\n this.buffer = buffer\n this._start = 0\n }\n\n eof() {\n return this._start >= this.buffer.length\n }\n\n tell() {\n return this._start\n }\n\n seek(n) {\n this._start = n\n }\n\n slice(n) {\n const r = this.buffer.slice(this._start, this._start + n)\n this._start += n\n return r\n }\n\n toString(enc, length) {\n const r = this.buffer.toString(enc, this._start, this._start + length)\n this._start += length\n return r\n }\n\n write(value, length, enc) {\n const r = this.buffer.write(value, this._start, length, enc)\n this._start += length\n return r\n }\n\n copy(source, start, end) {\n const r = source.copy(this.buffer, this._start, start, end)\n this._start += r\n return r\n }\n\n readUInt8() {\n const r = this.buffer.readUInt8(this._start)\n this._start += 1\n return r\n }\n\n writeUInt8(value) {\n const r = this.buffer.writeUInt8(value, this._start)\n this._start += 1\n return r\n }\n\n readUInt16BE() {\n const r = this.buffer.readUInt16BE(this._start)\n this._start += 2\n return r\n }\n\n writeUInt16BE(value) {\n const r = this.buffer.writeUInt16BE(value, this._start)\n this._start += 2\n return r\n }\n\n readUInt32BE() {\n const r = this.buffer.readUInt32BE(this._start)\n this._start += 4\n return r\n }\n\n writeUInt32BE(value) {\n const r = this.buffer.writeUInt32BE(value, this._start)\n this._start += 4\n return r\n }\n}\n","import { InternalError } from '../errors/InternalError.js'\nimport { BufferCursor } from '../utils/BufferCursor.js'\n\n/**\n * @param {Buffer} delta\n * @param {Buffer} source\n * @returns {Buffer}\n */\nexport function applyDelta(delta, source) {\n const reader = new BufferCursor(delta)\n const sourceSize = readVarIntLE(reader)\n\n if (sourceSize !== source.byteLength) {\n throw new InternalError(\n `applyDelta expected source buffer to be ${sourceSize} bytes but the provided buffer was ${source.length} bytes`\n )\n }\n const targetSize = readVarIntLE(reader)\n let target\n\n const firstOp = readOp(reader, source)\n // Speed optimization - return raw buffer if it's just single simple copy\n if (firstOp.byteLength === targetSize) {\n target = firstOp\n } else {\n // Otherwise, allocate a fresh buffer and slices\n target = Buffer.alloc(targetSize)\n const writer = new BufferCursor(target)\n writer.copy(firstOp)\n\n while (!reader.eof()) {\n writer.copy(readOp(reader, source))\n }\n\n const tell = writer.tell()\n if (targetSize !== tell) {\n throw new InternalError(\n `applyDelta expected target buffer to be ${targetSize} bytes but the resulting buffer was ${tell} bytes`\n )\n }\n }\n return target\n}\n\nfunction readVarIntLE(reader) {\n let result = 0\n let shift = 0\n let byte = null\n do {\n byte = reader.readUInt8()\n result |= (byte & 0b01111111) << shift\n shift += 7\n } while (byte & 0b10000000)\n return result\n}\n\nfunction readCompactLE(reader, flags, size) {\n let result = 0\n let shift = 0\n while (size--) {\n if (flags & 0b00000001) {\n result |= reader.readUInt8() << shift\n }\n flags >>= 1\n shift += 8\n }\n return result\n}\n\nfunction readOp(reader, source) {\n /** @type {number} */\n const byte = reader.readUInt8()\n const COPY = 0b10000000\n const OFFS = 0b00001111\n const SIZE = 0b01110000\n if (byte & COPY) {\n // copy consists of 4 byte offset, 3 byte size (in LE order)\n const offset = readCompactLE(reader, byte & OFFS, 4)\n let size = readCompactLE(reader, (byte & SIZE) >> 4, 3)\n // Yup. They really did this optimization.\n if (size === 0) size = 0x10000\n return source.slice(offset, offset + size)\n } else {\n // insert\n return reader.slice(byte)\n }\n}\n","// My version of git-list-pack - roughly 15x faster than the original\n// It's used slightly differently - instead of returning a through stream it wraps a stream.\n// (I tried to make it API identical, but that ended up being 2x slower than this version.)\nimport pako from 'pako'\n\nimport { InternalError } from '../errors/InternalError.js'\nimport { StreamReader } from '../utils/StreamReader.js'\n\nexport async function listpack(stream, onData) {\n const reader = new StreamReader(stream)\n let PACK = await reader.read(4)\n PACK = PACK.toString('utf8')\n if (PACK !== 'PACK') {\n throw new InternalError(`Invalid PACK header '${PACK}'`)\n }\n\n let version = await reader.read(4)\n version = version.readUInt32BE(0)\n if (version !== 2) {\n throw new InternalError(`Invalid packfile version: ${version}`)\n }\n\n let numObjects = await reader.read(4)\n numObjects = numObjects.readUInt32BE(0)\n // If (for some godforsaken reason) this is an empty packfile, abort now.\n if (numObjects < 1) return\n\n while (!reader.eof() && numObjects--) {\n const offset = reader.tell()\n const { type, length, ofs, reference } = await parseHeader(reader)\n const inflator = new pako.Inflate()\n while (!inflator.result) {\n const chunk = await reader.chunk()\n if (!chunk) break\n inflator.push(chunk, false)\n if (inflator.err) {\n throw new InternalError(`Pako error: ${inflator.msg}`)\n }\n if (inflator.result) {\n if (inflator.result.length !== length) {\n throw new InternalError(\n `Inflated object size is different from that stated in packfile.`\n )\n }\n\n // Backtrack parser to where deflated data ends\n await reader.undo()\n await reader.read(chunk.length - inflator.strm.avail_in)\n const end = reader.tell()\n await onData({\n data: inflator.result,\n type,\n num: numObjects,\n offset,\n end,\n reference,\n ofs,\n })\n }\n }\n }\n}\n\nasync function parseHeader(reader) {\n // Object type is encoded in bits 654\n let byte = await reader.byte()\n const type = (byte >> 4) & 0b111\n // The length encoding get complicated.\n // Last four bits of length is encoded in bits 3210\n let length = byte & 0b1111\n // Whether the next byte is part of the variable-length encoded number\n // is encoded in bit 7\n if (byte & 0b10000000) {\n let shift = 4\n do {\n byte = await reader.byte()\n length |= (byte & 0b01111111) << shift\n shift += 7\n } while (byte & 0b10000000)\n }\n // Handle deltified objects\n let ofs\n let reference\n if (type === 6) {\n let shift = 0\n ofs = 0\n const bytes = []\n do {\n byte = await reader.byte()\n ofs |= (byte & 0b01111111) << shift\n shift += 7\n bytes.push(byte)\n } while (byte & 0b10000000)\n reference = Buffer.from(bytes)\n }\n if (type === 7) {\n const buf = await reader.read(20)\n reference = buf\n }\n return { type, length, ofs, reference }\n}\n","/* eslint-env node, browser */\n/* global DecompressionStream */\nimport pako from 'pako'\n\nlet supportsDecompressionStream = false\n\nexport async function inflate(buffer) {\n if (supportsDecompressionStream === null) {\n supportsDecompressionStream = testDecompressionStream()\n }\n return supportsDecompressionStream\n ? browserInflate(buffer)\n : pako.inflate(buffer)\n}\n\nasync function browserInflate(buffer) {\n const ds = new DecompressionStream('deflate')\n const d = new Blob([buffer]).stream().pipeThrough(ds)\n return new Uint8Array(await new Response(d).arrayBuffer())\n}\n\nfunction testDecompressionStream() {\n try {\n const ds = new DecompressionStream('deflate')\n if (ds) return true\n } catch (_) {\n // no bother\n }\n return false\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/** @type {<This, A extends readonly unknown[]>(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\n/** @type {<This, S extends string>(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\n/** @type {<This, O>(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (isArray(list)) {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float16Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType<typeof availableTypedArrays>} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar gOPD = require('gopd');\nvar getProto = require('get-proto');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\n\n/** @type {<T = unknown>(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {import('./types').Getter} Getter */\n/** @type {import('./types').Cache} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getProto) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr && getProto) {\n\t\t\tvar proto = getProto(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor && proto) {\n\t\t\t\tvar superProto = getProto(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tcache[\n\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t] = /** @type {import('./types').BoundSlice | import('./types').BoundSet} */ (\n\t\t\t\t// @ts-expect-error TODO FIXME\n\t\t\t\tcallBind(fn)\n\t\t\t);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType<typeof tryAllTypedArrays>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(typedArray, 1));\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType<typeof tryAllSlices>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */(cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(name, 1));\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\n\nvar callBound = require('call-bound');\n\n/** @type {undefined | ((thisArg: import('.').TypedArray) => Buffer<ArrayBufferLike>)} */\nvar $typedArrayBuffer = callBound('TypedArray.prototype.buffer', true);\n\nvar isTypedArray = require('is-typed-array');\n\n/** @type {import('.')} */\n// node <= 0.10, < 0.11.4 has a nonconfigurable own property instead of a prototype getter\nmodule.exports = $typedArrayBuffer || function typedArrayBuffer(x) {\n\tif (!isTypedArray(x)) {\n\t\tthrow new $TypeError('Not a Typed Array');\n\t}\n\treturn x.buffer;\n};\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar isArray = require('isarray');\nvar typedArrayBuffer = require('typed-array-buffer');\n\nvar isView = ArrayBuffer.isView || function isView(obj) {\n\ttry {\n\t\ttypedArrayBuffer(obj);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar useUint8Array = typeof Uint8Array !== 'undefined';\nvar useArrayBuffer = typeof ArrayBuffer !== 'undefined'\n\t&& typeof Uint8Array !== 'undefined';\nvar useFromArrayBuffer = useArrayBuffer && (Buffer.prototype instanceof Uint8Array || Buffer.TYPED_ARRAY_SUPPORT);\n\nmodule.exports = function toBuffer(data, encoding) {\n\tif (Buffer.isBuffer(data)) {\n\t\tif (data.constructor && !('isBuffer' in data)) {\n\t\t\t// probably a SlowBuffer\n\t\t\treturn Buffer.from(data);\n\t\t}\n\t\treturn data;\n\t}\n\n\tif (typeof data === 'string') {\n\t\treturn Buffer.from(data, encoding);\n\t}\n\n\t/*\n\t * Wrap any TypedArray instances and DataViews\n\t * Makes sense only on engines with full TypedArray support -- let Buffer detect that\n\t */\n\tif (useArrayBuffer && isView(data)) {\n\t\t// Bug in Node.js <6.3.1, which treats this as out-of-bounds\n\t\tif (data.byteLength === 0) {\n\t\t\treturn Buffer.alloc(0);\n\t\t}\n\n\t\t// When Buffer is based on Uint8Array, we can just construct it from ArrayBuffer\n\t\tif (useFromArrayBuffer) {\n\t\t\tvar res = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n\t\t\t/*\n\t\t\t * Recheck result size, as offset/length doesn't work on Node.js <5.10\n\t\t\t * We just go to Uint8Array case if this fails\n\t\t\t */\n\t\t\tif (res.byteLength === data.byteLength) {\n\t\t\t\treturn res;\n\t\t\t}\n\t\t}\n\n\t\t// Convert to Uint8Array bytes and then to Buffer\n\t\tvar uint8 = data instanceof Uint8Array ? data : new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n\t\tvar result = Buffer.from(uint8);\n\n\t\t/*\n\t\t * Let's recheck that conversion succeeded\n\t\t * We have .length but not .byteLength when useFromArrayBuffer is false\n\t\t */\n\t\tif (result.length === data.byteLength) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\t/*\n\t * Uint8Array in engines where Buffer.from might not work with ArrayBuffer, just copy over\n\t * Doesn't make sense with other TypedArray instances\n\t */\n\tif (useUint8Array && data instanceof Uint8Array) {\n\t\treturn Buffer.from(data);\n\t}\n\n\tvar isArr = isArray(data);\n\tif (isArr) {\n\t\tfor (var i = 0; i < data.length; i += 1) {\n\t\t\tvar x = data[i];\n\t\t\tif (\n\t\t\t\ttypeof x !== 'number'\n\t\t\t\t|| x < 0\n\t\t\t\t|| x > 255\n\t\t\t\t|| ~~x !== x // NaN and integer check\n\t\t\t) {\n\t\t\t\tthrow new RangeError('Array items must be numbers in the range 0-255.');\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * Old Buffer polyfill on an engine that doesn't have TypedArray support\n\t * Also, this is from a different Buffer polyfill implementation then we have, as instanceof check failed\n\t * Convert to our current Buffer implementation\n\t */\n\tif (\n\t\tisArr || (\n\t\t\tBuffer.isBuffer(data)\n\t\t\t&& data.constructor\n\t\t\t&& typeof data.constructor.isBuffer === 'function'\n\t\t\t&& data.constructor.isBuffer(data)\n\t\t)\n\t) {\n\t\treturn Buffer.from(data);\n\t}\n\n\tthrow new TypeError('The \"data\" argument must be a string, an Array, a Buffer, a Uint8Array, or a DataView.');\n};\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar toBuffer = require('to-buffer');\n\n// prototype class for hash functions\nfunction Hash(blockSize, finalSize) {\n\tthis._block = Buffer.alloc(blockSize);\n\tthis._finalSize = finalSize;\n\tthis._blockSize = blockSize;\n\tthis._len = 0;\n}\n\nHash.prototype.update = function (data, enc) {\n\t/* eslint no-param-reassign: 0 */\n\tdata = toBuffer(data, enc || 'utf8');\n\n\tvar block = this._block;\n\tvar blockSize = this._blockSize;\n\tvar length = data.length;\n\tvar accum = this._len;\n\n\tfor (var offset = 0; offset < length;) {\n\t\tvar assigned = accum % blockSize;\n\t\tvar remainder = Math.min(length - offset, blockSize - assigned);\n\n\t\tfor (var i = 0; i < remainder; i++) {\n\t\t\tblock[assigned + i] = data[offset + i];\n\t\t}\n\n\t\taccum += remainder;\n\t\toffset += remainder;\n\n\t\tif ((accum % blockSize) === 0) {\n\t\t\tthis._update(block);\n\t\t}\n\t}\n\n\tthis._len += length;\n\treturn this;\n};\n\nHash.prototype.digest = function (enc) {\n\tvar rem = this._len % this._blockSize;\n\n\tthis._block[rem] = 0x80;\n\n\t/*\n\t * zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n\t * non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n\t */\n\tthis._block.fill(0, rem + 1);\n\n\tif (rem >= this._finalSize) {\n\t\tthis._update(this._block);\n\t\tthis._block.fill(0);\n\t}\n\n\tvar bits = this._len * 8;\n\n\t// uint32\n\tif (bits <= 0xffffffff) {\n\t\tthis._block.writeUInt32BE(bits, this._blockSize - 4);\n\n\t\t// uint64\n\t} else {\n\t\tvar lowBits = (bits & 0xffffffff) >>> 0;\n\t\tvar highBits = (bits - lowBits) / 0x100000000;\n\n\t\tthis._block.writeUInt32BE(highBits, this._blockSize - 8);\n\t\tthis._block.writeUInt32BE(lowBits, this._blockSize - 4);\n\t}\n\n\tthis._update(this._block);\n\tvar hash = this._hash();\n\n\treturn enc ? hash.toString(enc) : hash;\n};\n\nHash.prototype._update = function () {\n\tthrow new Error('_update must be implemented by subclass');\n};\n\nmodule.exports = Hash;\n","'use strict';\n\n/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\n\nvar K = [\n\t0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n];\n\nvar W = new Array(80);\n\nfunction Sha1() {\n\tthis.init();\n\tthis._w = W;\n\n\tHash.call(this, 64, 56);\n}\n\ninherits(Sha1, Hash);\n\nSha1.prototype.init = function () {\n\tthis._a = 0x67452301;\n\tthis._b = 0xefcdab89;\n\tthis._c = 0x98badcfe;\n\tthis._d = 0x10325476;\n\tthis._e = 0xc3d2e1f0;\n\n\treturn this;\n};\n\nfunction rotl1(num) {\n\treturn (num << 1) | (num >>> 31);\n}\n\nfunction rotl5(num) {\n\treturn (num << 5) | (num >>> 27);\n}\n\nfunction rotl30(num) {\n\treturn (num << 30) | (num >>> 2);\n}\n\nfunction ft(s, b, c, d) {\n\tif (s === 0) {\n\t\treturn (b & c) | (~b & d);\n\t}\n\tif (s === 2) {\n\t\treturn (b & c) | (b & d) | (c & d);\n\t}\n\treturn b ^ c ^ d;\n}\n\nSha1.prototype._update = function (M) {\n\tvar w = this._w;\n\n\tvar a = this._a | 0;\n\tvar b = this._b | 0;\n\tvar c = this._c | 0;\n\tvar d = this._d | 0;\n\tvar e = this._e | 0;\n\n\tfor (var i = 0; i < 16; ++i) {\n\t\tw[i] = M.readInt32BE(i * 4);\n\t}\n\tfor (; i < 80; ++i) {\n\t\tw[i] = rotl1(w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]);\n\t}\n\n\tfor (var j = 0; j < 80; ++j) {\n\t\tvar s = ~~(j / 20);\n\t\tvar t = (rotl5(a) + ft(s, b, c, d) + e + w[j] + K[s]) | 0;\n\n\t\te = d;\n\t\td = c;\n\t\tc = rotl30(b);\n\t\tb = a;\n\t\ta = t;\n\t}\n\n\tthis._a = (a + this._a) | 0;\n\tthis._b = (b + this._b) | 0;\n\tthis._c = (c + this._c) | 0;\n\tthis._d = (d + this._d) | 0;\n\tthis._e = (e + this._e) | 0;\n};\n\nSha1.prototype._hash = function () {\n\tvar H = Buffer.allocUnsafe(20);\n\n\tH.writeInt32BE(this._a | 0, 0);\n\tH.writeInt32BE(this._b | 0, 4);\n\tH.writeInt32BE(this._c | 0, 8);\n\tH.writeInt32BE(this._d | 0, 12);\n\tH.writeInt32BE(this._e | 0, 16);\n\n\treturn H;\n};\n\nmodule.exports = Sha1;\n","export function toHex(buffer) {\n let hex = ''\n for (const byte of new Uint8Array(buffer)) {\n if (byte < 16) hex += '0'\n hex += byte.toString(16)\n }\n return hex\n}\n","/* eslint-env node, browser */\nimport Hash from 'sha.js/sha1.js'\n\nimport { toHex } from './toHex.js'\n\nlet supportsSubtleSHA1 = null\n\nexport async function shasum(buffer) {\n if (supportsSubtleSHA1 === null) {\n supportsSubtleSHA1 = await testSubtleSHA1()\n }\n return supportsSubtleSHA1 ? subtleSHA1(buffer) : shasumSync(buffer)\n}\n\n// This is modeled after @dominictarr's \"shasum\" module,\n// but without the 'json-stable-stringify' dependency and\n// extra type-casting features.\nfunction shasumSync(buffer) {\n return new Hash().update(buffer).digest('hex')\n}\n\nasync function subtleSHA1(buffer) {\n const hash = await crypto.subtle.digest('SHA-1', buffer)\n return toHex(hash)\n}\n\nasync function testSubtleSHA1() {\n // I'm using a rather crude method of progressive enhancement, because\n // some browsers that have crypto.subtle.digest don't actually implement SHA-1.\n try {\n const hash = await subtleSHA1(new Uint8Array([]))\n if (hash === 'da39a3ee5e6b4b0d3255bfef95601890afd80709') return true\n } catch (_) {\n // no bother\n }\n return false\n}\n","import crc32 from 'crc-32'\n\nimport { InternalError } from '../errors/InternalError.js'\nimport { GitObject } from '../models/GitObject'\nimport { BufferCursor } from '../utils/BufferCursor.js'\nimport { applyDelta } from '../utils/applyDelta.js'\nimport { listpack } from '../utils/git-list-pack.js'\nimport { inflate } from '../utils/inflate.js'\nimport { shasum } from '../utils/shasum.js'\n\nfunction decodeVarInt(reader) {\n const bytes = []\n let byte = 0\n let multibyte = 0\n do {\n byte = reader.readUInt8()\n // We keep bits 6543210\n const lastSeven = byte & 0b01111111\n bytes.push(lastSeven)\n // Whether the next byte is part of the variable-length encoded number\n // is encoded in bit 7\n multibyte = byte & 0b10000000\n } while (multibyte)\n // Now that all the bytes are in big-endian order,\n // alternate shifting the bits left by 7 and OR-ing the next byte.\n // And... do a weird increment-by-one thing that I don't quite understand.\n return bytes.reduce((a, b) => ((a + 1) << 7) | b, -1)\n}\n\n// I'm pretty much copying this one from the git C source code,\n// because it makes no sense.\nfunction otherVarIntDecode(reader, startWith) {\n let result = startWith\n let shift = 4\n let byte = null\n do {\n byte = reader.readUInt8()\n result |= (byte & 0b01111111) << shift\n shift += 7\n } while (byte & 0b10000000)\n return result\n}\n\nexport class GitPackIndex {\n constructor(stuff) {\n Object.assign(this, stuff)\n this.offsetCache = {}\n }\n\n static async fromIdx({ idx, getExternalRefDelta }) {\n const reader = new BufferCursor(idx)\n const magic = reader.slice(4).toString('hex')\n // Check for IDX v2 magic number\n if (magic !== 'ff744f63') {\n return // undefined\n }\n const version = reader.readUInt32BE()\n if (version !== 2) {\n throw new InternalError(\n `Unable to read version ${version} packfile IDX. (Only version 2 supported)`\n )\n }\n if (idx.byteLength > 2048 * 1024 * 1024) {\n throw new InternalError(\n `To keep implementation simple, I haven't implemented the layer 5 feature needed to support packfiles > 2GB in size.`\n )\n }\n // Skip over fanout table\n reader.seek(reader.tell() + 4 * 255)\n // Get hashes\n const size = reader.readUInt32BE()\n const hashes = []\n for (let i = 0; i < size; i++) {\n const hash = reader.slice(20).toString('hex')\n hashes[i] = hash\n }\n reader.seek(reader.tell() + 4 * size)\n // Skip over CRCs\n // Get offsets\n const offsets = new Map()\n for (let i = 0; i < size; i++) {\n offsets.set(hashes[i], reader.readUInt32BE())\n }\n const packfileSha = reader.slice(20).toString('hex')\n return new GitPackIndex({\n hashes,\n crcs: {},\n offsets,\n packfileSha,\n getExternalRefDelta,\n })\n }\n\n static async fromPack({ pack, getExternalRefDelta, onProgress }) {\n const listpackTypes = {\n 1: 'commit',\n 2: 'tree',\n 3: 'blob',\n 4: 'tag',\n 6: 'ofs-delta',\n 7: 'ref-delta',\n }\n const offsetToObject = {}\n\n // Older packfiles do NOT use the shasum of the pack itself,\n // so it is recommended to just use whatever bytes are in the trailer.\n // Source: https://github.com/git/git/commit/1190a1acf800acdcfd7569f87ac1560e2d077414\n const packfileSha = pack.slice(-20).toString('hex')\n\n const hashes = []\n const crcs = {}\n const offsets = new Map()\n let totalObjectCount = null\n let lastPercent = null\n\n await listpack([pack], async ({ data, type, reference, offset, num }) => {\n if (totalObjectCount === null) totalObjectCount = num\n const percent = Math.floor(\n ((totalObjectCount - num) * 100) / totalObjectCount\n )\n if (percent !== lastPercent) {\n if (onProgress) {\n await onProgress({\n phase: 'Receiving objects',\n loaded: totalObjectCount - num,\n total: totalObjectCount,\n })\n }\n }\n lastPercent = percent\n // Change type from a number to a meaningful string\n type = listpackTypes[type]\n\n if (['commit', 'tree', 'blob', 'tag'].includes(type)) {\n offsetToObject[offset] = {\n type,\n offset,\n }\n } else if (type === 'ofs-delta') {\n offsetToObject[offset] = {\n type,\n offset,\n }\n } else if (type === 'ref-delta') {\n offsetToObject[offset] = {\n type,\n offset,\n }\n }\n })\n\n // We need to know the lengths of the slices to compute the CRCs.\n const offsetArray = Object.keys(offsetToObject).map(Number)\n for (const [i, start] of offsetArray.entries()) {\n const end =\n i + 1 === offsetArray.length ? pack.byteLength - 20 : offsetArray[i + 1]\n const o = offsetToObject[start]\n const crc = crc32.buf(pack.slice(start, end)) >>> 0\n o.end = end\n o.crc = crc\n }\n\n // We don't have the hashes yet. But we can generate them using the .readSlice function!\n const p = new GitPackIndex({\n pack: Promise.resolve(pack),\n packfileSha,\n crcs,\n hashes,\n offsets,\n getExternalRefDelta,\n })\n\n // Resolve deltas and compute the oids\n lastPercent = null\n let count = 0\n const objectsByDepth = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n for (let offset in offsetToObject) {\n offset = Number(offset)\n const percent = Math.floor((count * 100) / totalObjectCount)\n if (percent !== lastPercent) {\n if (onProgress) {\n await onProgress({\n phase: 'Resolving deltas',\n loaded: count,\n total: totalObjectCount,\n })\n }\n }\n count++\n lastPercent = percent\n\n const o = offsetToObject[offset]\n if (o.oid) continue\n try {\n p.readDepth = 0\n p.externalReadDepth = 0\n const { type, object } = await p.readSlice({ start: offset })\n objectsByDepth[p.readDepth] += 1\n const oid = await shasum(GitObject.wrap({ type, object }))\n o.oid = oid\n hashes.push(oid)\n offsets.set(oid, offset)\n crcs[oid] = o.crc\n } catch (err) {\n continue\n }\n }\n\n hashes.sort()\n return p\n }\n\n async toBuffer() {\n const buffers = []\n const write = (str, encoding) => {\n buffers.push(Buffer.from(str, encoding))\n }\n // Write out IDX v2 magic number\n write('ff744f63', 'hex')\n // Write out version number 2\n write('00000002', 'hex')\n // Write fanout table\n const fanoutBuffer = new BufferCursor(Buffer.alloc(256 * 4))\n for (let i = 0; i < 256; i++) {\n let count = 0\n for (const hash of this.hashes) {\n if (parseInt(hash.slice(0, 2), 16) <= i) count++\n }\n fanoutBuffer.writeUInt32BE(count)\n }\n buffers.push(fanoutBuffer.buffer)\n // Write out hashes\n for (const hash of this.hashes) {\n write(hash, 'hex')\n }\n // Write out crcs\n const crcsBuffer = new BufferCursor(Buffer.alloc(this.hashes.length * 4))\n for (const hash of this.hashes) {\n crcsBuffer.writeUInt32BE(this.crcs[hash])\n }\n buffers.push(crcsBuffer.buffer)\n // Write out offsets\n const offsetsBuffer = new BufferCursor(Buffer.alloc(this.hashes.length * 4))\n for (const hash of this.hashes) {\n offsetsBuffer.writeUInt32BE(this.offsets.get(hash))\n }\n buffers.push(offsetsBuffer.buffer)\n // Write out packfile checksum\n write(this.packfileSha, 'hex')\n // Write out shasum\n const totalBuffer = Buffer.concat(buffers)\n const sha = await shasum(totalBuffer)\n const shaBuffer = Buffer.alloc(20)\n shaBuffer.write(sha, 'hex')\n return Buffer.concat([totalBuffer, shaBuffer])\n }\n\n async load({ pack }) {\n this.pack = pack\n }\n\n async unload() {\n this.pack = null\n }\n\n async read({ oid }) {\n if (!this.offsets.get(oid)) {\n if (this.getExternalRefDelta) {\n this.externalReadDepth++\n return this.getExternalRefDelta(oid)\n } else {\n throw new InternalError(`Could not read object ${oid} from packfile`)\n }\n }\n const start = this.offsets.get(oid)\n return this.readSlice({ start })\n }\n\n async readSlice({ start }) {\n if (this.offsetCache[start]) {\n return Object.assign({}, this.offsetCache[start])\n }\n this.readDepth++\n const types = {\n 0b0010000: 'commit',\n 0b0100000: 'tree',\n 0b0110000: 'blob',\n 0b1000000: 'tag',\n 0b1100000: 'ofs_delta',\n 0b1110000: 'ref_delta',\n }\n if (!this.pack) {\n throw new InternalError(\n 'Tried to read from a GitPackIndex with no packfile loaded into memory'\n )\n }\n const raw = (await this.pack).slice(start)\n const reader = new BufferCursor(raw)\n const byte = reader.readUInt8()\n // Object type is encoded in bits 654\n const btype = byte & 0b1110000\n let type = types[btype]\n if (type === undefined) {\n throw new InternalError('Unrecognized type: 0b' + btype.toString(2))\n }\n // The length encoding get complicated.\n // Last four bits of length is encoded in bits 3210\n const lastFour = byte & 0b1111\n let length = lastFour\n // Whether the next byte is part of the variable-length encoded number\n // is encoded in bit 7\n const multibyte = byte & 0b10000000\n if (multibyte) {\n length = otherVarIntDecode(reader, lastFour)\n }\n let base = null\n let object = null\n // Handle deltified objects\n if (type === 'ofs_delta') {\n const offset = decodeVarInt(reader)\n const baseOffset = start - offset\n ;({ object: base, type } = await this.readSlice({ start: baseOffset }))\n }\n if (type === 'ref_delta') {\n const oid = reader.slice(20).toString('hex')\n ;({ object: base, type } = await this.read({ oid }))\n }\n // Handle undeltified objects\n const buffer = raw.slice(reader.tell())\n object = Buffer.from(await inflate(buffer))\n // Assert that the object length is as expected.\n if (object.byteLength !== length) {\n throw new InternalError(\n `Packfile told us object would have length ${length} but it had length ${object.byteLength}`\n )\n }\n if (base) {\n object = Buffer.from(applyDelta(object, base))\n }\n // Cache the result based on depth.\n if (this.readDepth > 3) {\n // hand tuned for speed / memory usage tradeoff\n this.offsetCache[start] = { type, object }\n }\n return { type, format: 'content', object }\n }\n}\n","import { BaseError } from './BaseError.js'\n\nexport class InvalidOidError extends BaseError {\n /**\n * @param {string} value\n */\n constructor(value) {\n super(`Expected a 40-char hex object id but saw \"${value}\".`)\n this.code = this.name = InvalidOidError.code\n this.data = { value }\n }\n}\n/** @type {'InvalidOidError'} */\nInvalidOidError.code = 'InvalidOidError'\n","import { BaseError } from './BaseError.js'\n\nexport class ObjectTypeError extends BaseError {\n /**\n * @param {string} oid\n * @param {'blob'|'commit'|'tag'|'tree'} actual\n * @param {'blob'|'commit'|'tag'|'tree'} expected\n * @param {string} [filepath]\n */\n constructor(oid, actual, expected, filepath) {\n super(\n `Object ${oid} ${\n filepath ? `at ${filepath}` : ''\n }was anticipated to be a ${expected} but it is a ${actual}.`\n )\n this.code = this.name = ObjectTypeError.code\n this.data = { oid, actual, expected, filepath }\n }\n}\n/** @type {'ObjectTypeError'} */\nObjectTypeError.code = 'ObjectTypeError'\n","/**\n * From https://github.com/git/git/blob/master/Documentation/technical/index-format.txt\n *\n * 32-bit mode, split into (high to low bits)\n *\n * 4-bit object type\n * valid values in binary are 1000 (regular file), 1010 (symbolic link)\n * and 1110 (gitlink)\n *\n * 3-bit unused\n *\n * 9-bit unix permission. Only 0755 and 0644 are valid for regular files.\n * Symbolic links and gitlinks have value 0 in this field.\n */\nexport function normalizeMode(mode) {\n // Note: BrowserFS will use -1 for \"unknown\"\n // I need to make it non-negative for these bitshifts to work.\n let type = mode > 0 ? mode >> 12 : 0\n // If it isn't valid, assume it as a \"regular file\"\n // 0100 = directory\n // 1000 = regular file\n // 1010 = symlink\n // 1110 = gitlink\n if (\n type !== 0b0100 &&\n type !== 0b1000 &&\n type !== 0b1010 &&\n type !== 0b1110\n ) {\n type = 0b1000\n }\n let permissions = mode & 0o777\n // Is the file executable? then 755. Else 644.\n if (permissions & 0b001001001) {\n permissions = 0o755\n } else {\n permissions = 0o644\n }\n // If it's not a regular file, scrub all permissions\n if (type !== 0b1000) permissions = 0\n return (type << 12) + permissions\n}\n","import { normalizeMode } from './normalizeMode'\n\nconst MAX_UINT32 = 2 ** 32\n\nfunction SecondsNanoseconds(\n givenSeconds,\n givenNanoseconds,\n milliseconds,\n date\n) {\n if (givenSeconds !== undefined && givenNanoseconds !== undefined) {\n return [givenSeconds, givenNanoseconds]\n }\n if (milliseconds === undefined) {\n milliseconds = date.valueOf()\n }\n const seconds = Math.floor(milliseconds / 1000)\n const nanoseconds = (milliseconds - seconds * 1000) * 1000000\n return [seconds, nanoseconds]\n}\n\nexport function normalizeStats(e) {\n const [ctimeSeconds, ctimeNanoseconds] = SecondsNanoseconds(\n e.ctimeSeconds,\n e.ctimeNanoseconds,\n e.ctimeMs,\n e.ctime\n )\n const [mtimeSeconds, mtimeNanoseconds] = SecondsNanoseconds(\n e.mtimeSeconds,\n e.mtimeNanoseconds,\n e.mtimeMs,\n e.mtime\n )\n\n return {\n ctimeSeconds: ctimeSeconds % MAX_UINT32,\n ctimeNanoseconds: ctimeNanoseconds % MAX_UINT32,\n mtimeSeconds: mtimeSeconds % MAX_UINT32,\n mtimeNanoseconds: mtimeNanoseconds % MAX_UINT32,\n dev: e.dev % MAX_UINT32,\n ino: e.ino % MAX_UINT32,\n mode: normalizeMode(e.mode % MAX_UINT32),\n uid: e.uid % MAX_UINT32,\n gid: e.gid % MAX_UINT32,\n // size of -1 happens over a BrowserFS HTTP Backend that doesn't serve Content-Length headers\n // (like the Karma webserver) because BrowserFS HTTP Backend uses HTTP HEAD requests to do fs.stat\n size: e.size > -1 ? e.size % MAX_UINT32 : 0,\n }\n}\n","import { InternalError } from '../errors/InternalError.js'\nimport { UnsafeFilepathError } from '../errors/UnsafeFilepathError.js'\nimport { BufferCursor } from '../utils/BufferCursor.js'\nimport { comparePath } from '../utils/comparePath.js'\nimport { normalizeStats } from '../utils/normalizeStats.js'\nimport { shasum } from '../utils/shasum.js'\n\n// Extract 1-bit assume-valid, 1-bit extended flag, 2-bit merge state flag, 12-bit path length flag\nfunction parseCacheEntryFlags(bits) {\n return {\n assumeValid: Boolean(bits & 0b1000000000000000),\n extended: Boolean(bits & 0b0100000000000000),\n stage: (bits & 0b0011000000000000) >> 12,\n nameLength: bits & 0b0000111111111111,\n }\n}\n\nfunction renderCacheEntryFlags(entry) {\n const flags = entry.flags\n // 1-bit extended flag (must be zero in version 2)\n flags.extended = false\n // 12-bit name length if the length is less than 0xFFF; otherwise 0xFFF\n // is stored in this field.\n flags.nameLength = Math.min(Buffer.from(entry.path).length, 0xfff)\n return (\n (flags.assumeValid ? 0b1000000000000000 : 0) +\n (flags.extended ? 0b0100000000000000 : 0) +\n ((flags.stage & 0b11) << 12) +\n (flags.nameLength & 0b111111111111)\n )\n}\n\nexport class GitIndex {\n /*::\n _entries: Map<string, CacheEntry>\n _dirty: boolean // Used to determine if index needs to be saved to filesystem\n */\n constructor(entries, unmergedPaths) {\n this._dirty = false\n this._unmergedPaths = unmergedPaths || new Set()\n this._entries = entries || new Map()\n }\n\n _addEntry(entry) {\n if (entry.flags.stage === 0) {\n entry.stages = [entry]\n this._entries.set(entry.path, entry)\n this._unmergedPaths.delete(entry.path)\n } else {\n let existingEntry = this._entries.get(entry.path)\n if (!existingEntry) {\n this._entries.set(entry.path, entry)\n existingEntry = entry\n }\n existingEntry.stages[entry.flags.stage] = entry\n this._unmergedPaths.add(entry.path)\n }\n }\n\n static async from(buffer) {\n if (Buffer.isBuffer(buffer)) {\n return GitIndex.fromBuffer(buffer)\n } else if (buffer === null) {\n return new GitIndex(null)\n } else {\n throw new InternalError('invalid type passed to GitIndex.from')\n }\n }\n\n static async fromBuffer(buffer) {\n if (buffer.length === 0) {\n throw new InternalError('Index file is empty (.git/index)')\n }\n\n const index = new GitIndex()\n const reader = new BufferCursor(buffer)\n const magic = reader.toString('utf8', 4)\n if (magic !== 'DIRC') {\n throw new InternalError(`Invalid dircache magic file number: ${magic}`)\n }\n\n // Verify shasum after we ensured that the file has a magic number\n const shaComputed = await shasum(buffer.slice(0, -20))\n const shaClaimed = buffer.slice(-20).toString('hex')\n if (shaClaimed !== shaComputed) {\n throw new InternalError(\n `Invalid checksum in GitIndex buffer: expected ${shaClaimed} but saw ${shaComputed}`\n )\n }\n\n const version = reader.readUInt32BE()\n if (version !== 2) {\n throw new InternalError(`Unsupported dircache version: ${version}`)\n }\n const numEntries = reader.readUInt32BE()\n let i = 0\n while (!reader.eof() && i < numEntries) {\n const entry = {}\n entry.ctimeSeconds = reader.readUInt32BE()\n entry.ctimeNanoseconds = reader.readUInt32BE()\n entry.mtimeSeconds = reader.readUInt32BE()\n entry.mtimeNanoseconds = reader.readUInt32BE()\n entry.dev = reader.readUInt32BE()\n entry.ino = reader.readUInt32BE()\n entry.mode = reader.readUInt32BE()\n entry.uid = reader.readUInt32BE()\n entry.gid = reader.readUInt32BE()\n entry.size = reader.readUInt32BE()\n entry.oid = reader.slice(20).toString('hex')\n const flags = reader.readUInt16BE()\n entry.flags = parseCacheEntryFlags(flags)\n // TODO: handle if (version === 3 && entry.flags.extended)\n const pathlength = buffer.indexOf(0, reader.tell() + 1) - reader.tell()\n if (pathlength < 1) {\n throw new InternalError(`Got a path length of: ${pathlength}`)\n }\n // TODO: handle pathnames larger than 12 bits\n entry.path = reader.toString('utf8', pathlength)\n\n // Prevent malicious paths like \"..\\foo\"\n if (entry.path.includes('..\\\\') || entry.path.includes('../')) {\n throw new UnsafeFilepathError(entry.path)\n }\n\n // The next bit is awkward. We expect 1 to 8 null characters\n // such that the total size of the entry is a multiple of 8 bits.\n // (Hence subtract 12 bytes for the header.)\n let padding = 8 - ((reader.tell() - 12) % 8)\n if (padding === 0) padding = 8\n while (padding--) {\n const tmp = reader.readUInt8()\n if (tmp !== 0) {\n throw new InternalError(\n `Expected 1-8 null characters but got '${tmp}' after ${entry.path}`\n )\n } else if (reader.eof()) {\n throw new InternalError('Unexpected end of file')\n }\n }\n // end of awkward part\n entry.stages = []\n\n index._addEntry(entry)\n\n i++\n }\n return index\n }\n\n get unmergedPaths() {\n return [...this._unmergedPaths]\n }\n\n get entries() {\n return [...this._entries.values()].sort(comparePath)\n }\n\n get entriesMap() {\n return this._entries\n }\n\n get entriesFlat() {\n return [...this.entries].flatMap(entry => {\n return entry.stages.length > 1 ? entry.stages.filter(x => x) : entry\n })\n }\n\n *[Symbol.iterator]() {\n for (const entry of this.entries) {\n yield entry\n }\n }\n\n insert({ filepath, stats, oid, stage = 0 }) {\n if (!stats) {\n stats = {\n ctimeSeconds: 0,\n ctimeNanoseconds: 0,\n mtimeSeconds: 0,\n mtimeNanoseconds: 0,\n dev: 0,\n ino: 0,\n mode: 0,\n uid: 0,\n gid: 0,\n size: 0,\n }\n }\n stats = normalizeStats(stats)\n const bfilepath = Buffer.from(filepath)\n const entry = {\n ctimeSeconds: stats.ctimeSeconds,\n ctimeNanoseconds: stats.ctimeNanoseconds,\n mtimeSeconds: stats.mtimeSeconds,\n mtimeNanoseconds: stats.mtimeNanoseconds,\n dev: stats.dev,\n ino: stats.ino,\n // We provide a fallback value for `mode` here because not all fs\n // implementations assign it, but we use it in GitTree.\n // '100644' is for a \"regular non-executable file\"\n mode: stats.mode || 0o100644,\n uid: stats.uid,\n gid: stats.gid,\n size: stats.size,\n path: filepath,\n oid: oid,\n flags: {\n assumeValid: false,\n extended: false,\n stage,\n nameLength: bfilepath.length < 0xfff ? bfilepath.length : 0xfff,\n },\n stages: [],\n }\n\n this._addEntry(entry)\n\n this._dirty = true\n }\n\n delete({ filepath }) {\n if (this._entries.has(filepath)) {\n this._entries.delete(filepath)\n } else {\n for (const key of this._entries.keys()) {\n if (key.startsWith(filepath + '/')) {\n this._entries.delete(key)\n }\n }\n }\n\n if (this._unmergedPaths.has(filepath)) {\n this._unmergedPaths.delete(filepath)\n }\n this._dirty = true\n }\n\n clear() {\n this._entries.clear()\n this._dirty = true\n }\n\n has({ filepath }) {\n return this._entries.has(filepath)\n }\n\n render() {\n return this.entries\n .map(entry => `${entry.mode.toString(8)} ${entry.oid} ${entry.path}`)\n .join('\\n')\n }\n\n static async _entryToBuffer(entry) {\n const bpath = Buffer.from(entry.path)\n // the fixed length + the filename + at least one null char => align by 8\n const length = Math.ceil((62 + bpath.length + 1) / 8) * 8\n const written = Buffer.alloc(length)\n const writer = new BufferCursor(written)\n const stat = normalizeStats(entry)\n writer.writeUInt32BE(stat.ctimeSeconds)\n writer.writeUInt32BE(stat.ctimeNanoseconds)\n writer.writeUInt32BE(stat.mtimeSeconds)\n writer.writeUInt32BE(stat.mtimeNanoseconds)\n writer.writeUInt32BE(stat.dev)\n writer.writeUInt32BE(stat.ino)\n writer.writeUInt32BE(stat.mode)\n writer.writeUInt32BE(stat.uid)\n writer.writeUInt32BE(stat.gid)\n writer.writeUInt32BE(stat.size)\n writer.write(entry.oid, 20, 'hex')\n writer.writeUInt16BE(renderCacheEntryFlags(entry))\n writer.write(entry.path, bpath.length, 'utf8')\n return written\n }\n\n async toObject() {\n const header = Buffer.alloc(12)\n const writer = new BufferCursor(header)\n writer.write('DIRC', 4, 'utf8')\n writer.writeUInt32BE(2)\n writer.writeUInt32BE(this.entriesFlat.length)\n\n let entryBuffers = []\n for (const entry of this.entries) {\n entryBuffers.push(GitIndex._entryToBuffer(entry))\n if (entry.stages.length > 1) {\n for (const stage of entry.stages) {\n if (stage && stage !== entry) {\n entryBuffers.push(GitIndex._entryToBuffer(stage))\n }\n }\n }\n }\n entryBuffers = await Promise.all(entryBuffers)\n\n const body = Buffer.concat(entryBuffers)\n const main = Buffer.concat([header, body])\n const sum = await shasum(main)\n return Buffer.concat([main, Buffer.from(sum, 'hex')])\n }\n}\n","import { getIterator } from './getIterator.js'\n\n// Currently 'for await' upsets my linters.\nexport async function forAwait(iterable, cb) {\n const iter = getIterator(iterable)\n while (true) {\n const { value, done } = await iter.next()\n if (value) await cb(value)\n if (done) break\n }\n if (iter.return) iter.return()\n}\n","import { forAwait } from './forAwait.js'\n\nexport async function collect(iterable) {\n let size = 0\n const buffers = []\n // This will be easier once `for await ... of` loops are available.\n await forAwait(iterable, value => {\n buffers.push(value)\n size += value.byteLength\n })\n const result = new Uint8Array(size)\n let nextIndex = 0\n for (const buffer of buffers) {\n result.set(buffer, nextIndex)\n nextIndex += buffer.byteLength\n }\n return result\n}\n","export class FIFO {\n constructor() {\n this._queue = []\n }\n\n write(chunk) {\n if (this._ended) {\n throw Error('You cannot write to a FIFO that has already been ended!')\n }\n if (this._waiting) {\n const resolve = this._waiting\n this._waiting = null\n resolve({ value: chunk })\n } else {\n this._queue.push(chunk)\n }\n }\n\n end() {\n this._ended = true\n if (this._waiting) {\n const resolve = this._waiting\n this._waiting = null\n resolve({ done: true })\n }\n }\n\n destroy(err) {\n this.error = err\n this.end()\n }\n\n async next() {\n if (this._queue.length > 0) {\n return { value: this._queue.shift() }\n }\n if (this._ended) {\n return { done: true }\n }\n if (this._waiting) {\n throw Error(\n 'You cannot call read until the previous call to read has returned!'\n )\n }\n return new Promise(resolve => {\n this._waiting = resolve\n })\n }\n}\n","/*\nIf 'side-band' or 'side-band-64k' capabilities have been specified by\nthe client, the server will send the packfile data multiplexed.\n\nEach packet starting with the packet-line length of the amount of data\nthat follows, followed by a single byte specifying the sideband the\nfollowing data is coming in on.\n\nIn 'side-band' mode, it will send up to 999 data bytes plus 1 control\ncode, for a total of up to 1000 bytes in a pkt-line. In 'side-band-64k'\nmode it will send up to 65519 data bytes plus 1 control code, for a\ntotal of up to 65520 bytes in a pkt-line.\n\nThe sideband byte will be a '1', '2' or a '3'. Sideband '1' will contain\npackfile data, sideband '2' will be used for progress information that the\nclient will generally print to stderr and sideband '3' is used for error\ninformation.\n\nIf no 'side-band' capability was specified, the server will stream the\nentire packfile without multiplexing.\n*/\nimport { FIFO } from '../utils/FIFO.js'\n\nimport { GitPktLine } from './GitPktLine.js'\n\nexport class GitSideBand {\n static demux(input) {\n const read = GitPktLine.streamReader(input)\n // And now for the ridiculous side-band or side-band-64k protocol\n const packetlines = new FIFO()\n const packfile = new FIFO()\n const progress = new FIFO()\n // TODO: Use a proper through stream?\n const nextBit = async function() {\n const line = await read()\n // Skip over flush packets\n if (line === null) return nextBit()\n // A made up convention to signal there's no more to read.\n if (line === true) {\n packetlines.end()\n progress.end()\n input.error ? packfile.destroy(input.error) : packfile.end()\n return\n }\n // Examine first byte to determine which output \"stream\" to use\n switch (line[0]) {\n case 1: {\n // pack data\n packfile.write(line.slice(1))\n break\n }\n case 2: {\n // progress message\n progress.write(line.slice(1))\n break\n }\n case 3: {\n // fatal error message just before stream aborts\n const error = line.slice(1)\n progress.write(error)\n packetlines.end()\n progress.end()\n packfile.destroy(new Error(error.toString('utf8')))\n return\n }\n default: {\n // Not part of the side-band-64k protocol\n packetlines.write(line)\n }\n }\n // Careful not to blow up the stack.\n // I think Promises in a tail-call position should be OK.\n nextBit()\n }\n nextBit()\n return {\n packetlines,\n packfile,\n progress,\n }\n }\n // static mux ({\n // protocol, // 'side-band' or 'side-band-64k'\n // packetlines,\n // packfile,\n // progress,\n // error\n // }) {\n // const MAX_PACKET_LENGTH = protocol === 'side-band-64k' ? 999 : 65519\n // let output = new PassThrough()\n // packetlines.on('data', data => {\n // if (data === null) {\n // output.write(GitPktLine.flush())\n // } else {\n // output.write(GitPktLine.encode(data))\n // }\n // })\n // let packfileWasEmpty = true\n // let packfileEnded = false\n // let progressEnded = false\n // let errorEnded = false\n // let goodbye = Buffer.concat([\n // GitPktLine.encode(Buffer.from('010A', 'hex')),\n // GitPktLine.flush()\n // ])\n // packfile\n // .on('data', data => {\n // packfileWasEmpty = false\n // const buffers = splitBuffer(data, MAX_PACKET_LENGTH)\n // for (const buffer of buffers) {\n // output.write(\n // GitPktLine.encode(Buffer.concat([Buffer.from('01', 'hex'), buffer]))\n // )\n // }\n // })\n // .on('end', () => {\n // packfileEnded = true\n // if (!packfileWasEmpty) output.write(goodbye)\n // if (progressEnded && errorEnded) output.end()\n // })\n // progress\n // .on('data', data => {\n // const buffers = splitBuffer(data, MAX_PACKET_LENGTH)\n // for (const buffer of buffers) {\n // output.write(\n // GitPktLine.encode(Buffer.concat([Buffer.from('02', 'hex'), buffer]))\n // )\n // }\n // })\n // .on('end', () => {\n // progressEnded = true\n // if (packfileEnded && errorEnded) output.end()\n // })\n // error\n // .on('data', data => {\n // const buffers = splitBuffer(data, MAX_PACKET_LENGTH)\n // for (const buffer of buffers) {\n // output.write(\n // GitPktLine.encode(Buffer.concat([Buffer.from('03', 'hex'), buffer]))\n // )\n // }\n // })\n // .on('end', () => {\n // errorEnded = true\n // if (progressEnded && packfileEnded) output.end()\n // })\n // return output\n // }\n}\n","import { InvalidOidError } from '../errors/InvalidOidError.js'\nimport { GitSideBand } from '../models/GitSideBand.js'\nimport { forAwait } from '../utils/forAwait.js'\n\nexport async function parseUploadPackResponse(stream) {\n const { packetlines, packfile, progress } = GitSideBand.demux(stream)\n const shallows = []\n const unshallows = []\n const acks = []\n let nak = false\n let done = false\n return new Promise((resolve, reject) => {\n // Parse the response\n forAwait(packetlines, data => {\n const line = data.toString('utf8').trim()\n if (line.startsWith('shallow')) {\n const oid = line.slice(-41).trim()\n if (oid.length !== 40) {\n reject(new InvalidOidError(oid))\n }\n shallows.push(oid)\n } else if (line.startsWith('unshallow')) {\n const oid = line.slice(-41).trim()\n if (oid.length !== 40) {\n reject(new InvalidOidError(oid))\n }\n unshallows.push(oid)\n } else if (line.startsWith('ACK')) {\n const [, oid, status] = line.split(' ')\n acks.push({ oid, status })\n if (!status) done = true\n } else if (line.startsWith('NAK')) {\n nak = true\n done = true\n } else {\n done = true\n nak = true\n }\n if (done) {\n stream.error\n ? reject(stream.error)\n : resolve({ shallows, unshallows, acks, nak, packfile, progress })\n }\n }).finally(() => {\n if (!done) {\n stream.error\n ? reject(stream.error)\n : resolve({ shallows, unshallows, acks, nak, packfile, progress })\n }\n })\n })\n}\n","/* eslint-disable comment-length/limit-multi-line-comments */\n\n/*\n * Import internal data parsers and structures from isomorphic-git. These\n * exports are not available in the npm version of isomorphic-git, which is why\n * we use one from the git repository.\n *\n * This file heavily relies on isomorphic-git internals to parse Git data formats\n * such as PACK, trees, deltas, etc.\n */\nimport './isomorphic-git.d.ts';\nimport { GitPktLine } from 'isomorphic-git/src/models/GitPktLine.js';\nimport { GitTree } from 'isomorphic-git/src/models/GitTree.js';\nimport { GitAnnotatedTag } from 'isomorphic-git/src/models/GitAnnotatedTag.js';\nimport { GitCommit } from 'isomorphic-git/src/models/GitCommit.js';\nimport { GitPackIndex } from 'isomorphic-git/src/models/GitPackIndex.js';\nimport { collect } from 'isomorphic-git/src/internal-apis.js';\nimport { parseUploadPackResponse } from 'isomorphic-git/src/wire/parseUploadPackResponse.js';\nimport { ObjectTypeError } from 'isomorphic-git/src/errors/ObjectTypeError.js';\nimport { Buffer as BufferPolyfill } from 'buffer';\n\n/**\n * Polyfills the Buffer class in the browser.\n *\n * We need it because isomorphic-git uses Buffer internally. The isomorphic-git version\n * released via npm shipes a Buffer implementation, but we're using a version cloned from\n * the git repository which assumes a global Buffer is available.\n */\nif (typeof globalThis.Buffer === 'undefined') {\n\tglobalThis.Buffer = BufferPolyfill;\n}\n\n/**\n * Downloads specific files from a git repository.\n * It uses the git protocol over HTTP to fetch the files. It only uses\n * three HTTP requests regardless of the number of paths requested.\n *\n * @param repoUrl The URL of the git repository.\n * @param fullyQualifiedBranchName The full name of the branch to fetch from (e.g., 'refs/heads/main').\n * @param filesPaths An array of all the file paths to fetch from the repository. Does **not** accept\n * patterns, wildcards, directory paths. All files must be explicitly listed.\n * @returns The requested files and packfiles required to recreate the Git objects locally.\n */\nexport type SparseCheckoutPackfile = {\n\tname: string;\n\tpack: Uint8Array;\n\tindex: Uint8Array;\n\tpromisor?: boolean;\n};\n\nexport type SparseCheckoutObject = {\n\toid: string;\n\ttype: 'blob' | 'tree' | 'commit' | 'tag';\n\tbody: Uint8Array;\n};\n\nexport type SparseCheckoutResult = {\n\tfiles: Record<string, any>;\n\tpackfiles?: SparseCheckoutPackfile[];\n\tobjects?: SparseCheckoutObject[];\n\tfileOids?: Record<string, string>;\n};\n\nexport async function sparseCheckout(\n\trepoUrl: string,\n\tcommitHash: string,\n\tfilesPaths: string[],\n\toptions?: {\n\t\twithObjects?: boolean;\n\t}\n): Promise<SparseCheckoutResult> {\n\tconst treesPack = await fetchWithoutBlobs(repoUrl, commitHash);\n\tconst objects = await resolveObjects(treesPack.idx, commitHash, filesPaths);\n\n\tconst blobOids = filesPaths.map((path) => objects[path].oid);\n\tconst blobsPack =\n\t\tblobOids.length > 0 ? await fetchObjects(repoUrl, blobOids) : null;\n\n\tconst fetchedPaths: Record<string, any> = {};\n\tawait Promise.all(\n\t\tfilesPaths.map(async (path) => {\n\t\t\tif (!blobsPack) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfetchedPaths[path] = await extractGitObjectFromIdx(\n\t\t\t\tblobsPack.idx,\n\t\t\t\tobjects[path].oid\n\t\t\t);\n\t\t})\n\t);\n\n\t/**\n\t * Short-circuit if the consumer doesn't need additional details about\n\t * the Git objects.\n\t */\n\tif (!options?.withObjects) {\n\t\treturn { files: fetchedPaths };\n\t}\n\n\tconst packfiles: SparseCheckoutPackfile[] = [];\n\tconst treesIndex = await treesPack.idx.toBuffer();\n\tpackfiles.push({\n\t\tname: `pack-${treesPack.idx.packfileSha}`,\n\t\tpack: treesPack.packfile,\n\t\tindex: toUint8Array(treesIndex),\n\t\tpromisor: treesPack.promisor,\n\t});\n\n\tif (blobsPack) {\n\t\tconst blobsIndex = await blobsPack.idx.toBuffer();\n\t\tpackfiles.push({\n\t\t\tname: `pack-${blobsPack.idx.packfileSha}`,\n\t\t\tpack: blobsPack.packfile,\n\t\t\tindex: toUint8Array(blobsIndex),\n\t\t\tpromisor: blobsPack.promisor,\n\t\t});\n\t}\n\n\tconst fileOids: Record<string, string> = {};\n\tfor (const path of filesPaths) {\n\t\tfileOids[path] = objects[path].oid;\n\t}\n\n\treturn {\n\t\tfiles: fetchedPaths,\n\t\tpackfiles,\n\t\tobjects: [\n\t\t\t...(await collectLooseObjects(treesPack)),\n\t\t\t...(await collectLooseObjects(blobsPack)),\n\t\t],\n\t\tfileOids,\n\t};\n}\n\nexport type GitFileTreeFile = {\n\tname: string;\n\ttype: 'file';\n};\nexport type GitFileTreeFolder = {\n\tname: string;\n\ttype: 'folder';\n\tchildren: GitFileTree[];\n};\nexport type GitFileTree = GitFileTreeFile | GitFileTreeFolder;\n\n/**\n * A Git ref in a human-readable format. Could be a single string,\n * e.g. 'main', 'v0.1.28', '1234567890abcdef1234567890abcdef12345678',\n * could be a string and an explicit type, e.g. { value: 'main', type: 'branch' },\n */\nexport type GitRef = {\n\tvalue: string;\n\ttype?: 'branch' | 'commit' | 'refname' | 'tag' | 'infer';\n};\n\n/**\n * A Git ref in a machine-friendly format.\n * Contains all the information needed to resolve the ref to its oid,\n * and, optionally, the oid itself.\n */\ntype ParsedGitRef = {\n\tkind: 'refname' | 'commit';\n\trefname: string;\n\tresolvedOid?: string;\n};\n\nconst FULL_SHA_REGEX = /^[0-9a-f]{40}$/i;\n\n/**\n * Lists all files in a git repository.\n *\n * See https://git-scm.com/book/en/v2/Git-Internals-Git-Objects for more information.\n *\n * @param repoUrl The URL of the git repository.\n * @param commitHash The commit hash to fetch from.\n * @returns A list of all files in the repository.\n */\nexport async function listGitFiles(\n\trepoUrl: string,\n\tcommitHash: string\n): Promise<GitFileTree[]> {\n\tconst treesPack = await fetchWithoutBlobs(repoUrl, commitHash);\n\tconst rootTree = await resolveAllObjects(treesPack.idx, commitHash);\n\tif (!rootTree?.object) {\n\t\treturn [];\n\t}\n\n\treturn gitTreeToFileTree(rootTree);\n}\n\n/**\n * Resolves a ref description, e.g. a branch name, to a commit hash.\n *\n * @param repoUrl The URL of the git repository.\n * @param ref The branch name or commit hash.\n * @returns The commit hash.\n */\nexport async function resolveCommitHash(repoUrl: string, ref: GitRef) {\n\tconst parsed = await parseGitRef(repoUrl, ref);\n\tif (parsed.resolvedOid) {\n\t\treturn parsed.resolvedOid;\n\t}\n\n\tconst oid = await fetchRefOid(repoUrl, parsed.refname);\n\tif (!oid) {\n\t\tthrow new Error(`Git ref \"${parsed.refname}\" not found at ${repoUrl}`);\n\t}\n\treturn oid;\n}\n\nfunction gitTreeToFileTree(tree: GitTree): GitFileTree[] {\n\treturn tree.object\n\t\t.map((branch) => {\n\t\t\tif (branch.type === 'blob') {\n\t\t\t\treturn {\n\t\t\t\t\tname: branch.path,\n\t\t\t\t\ttype: 'file',\n\t\t\t\t} as GitFileTreeFile;\n\t\t\t} else if (branch.type === 'tree' && branch.object) {\n\t\t\t\treturn {\n\t\t\t\t\tname: branch.path,\n\t\t\t\t\ttype: 'folder',\n\t\t\t\t\tchildren: gitTreeToFileTree(branch as any as GitTree),\n\t\t\t\t} as GitFileTreeFolder;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t})\n\t\t.filter((entry) => !!entry?.name) as GitFileTree[];\n}\n\n/**\n * Retrieves a list of refs from a git repository.\n *\n * See https://git-scm.com/book/en/v2/Git-Internals-Git-References for more information.\n *\n * @param repoUrl The URL of the git repository. For example: https://github.com/WordPress/gutenberg.git\n * @param fullyQualifiedBranchPrefix The prefix of the refs to fetch. For example: refs/heads/my-feature-branch\n * @returns A map of refs to their corresponding commit hashes.\n */\nexport async function listGitRefs(\n\trepoUrl: string,\n\tfullyQualifiedBranchPrefix: string\n) {\n\tconst packbuffer = Buffer.from(\n\t\t(await collect([\n\t\t\tGitPktLine.encode(`command=ls-refs\\n`),\n\t\t\tGitPktLine.encode(`agent=git/2.37.3\\n`),\n\t\t\tGitPktLine.encode(`object-format=sha1\\n`),\n\t\t\tGitPktLine.delim(),\n\t\t\tGitPktLine.encode(`peel\\n`),\n\t\t\tGitPktLine.encode(`ref-prefix ${fullyQualifiedBranchPrefix}\\n`),\n\t\t\tGitPktLine.flush(),\n\t\t])) as any\n\t);\n\n\tconst response = await fetch(repoUrl + '/git-upload-pack', {\n\t\tmethod: 'POST',\n\t\theaders: {\n\t\t\tAccept: 'application/x-git-upload-pack-advertisement',\n\t\t\t'content-type': 'application/x-git-upload-pack-request',\n\t\t\t'Content-Length': `${packbuffer.length}`,\n\t\t\t'Git-Protocol': 'version=2',\n\t\t},\n\t\tbody: packbuffer as any,\n\t});\n\n\tconst refs: Record<string, string> = {};\n\tfor await (const line of parseGitResponseLines(response)) {\n\t\tconst spaceAt = line.indexOf(' ');\n\t\tconst ref = line.slice(0, spaceAt);\n\t\t/**\n\t\t * Git protocol may return a line such as:\n\t\t *\n\t\t * 41d27ca5d6df1e7826c7fa297398159857ea2d60 refs/tags/v0.1.28 peeled:883860eacc7c37377f772a26919e700749020e4c\n\t\t *\n\t\t * This means:\n\t\t *\n\t\t * * A tag with a name `v0.1.28`\n\t\t * * The tag is an object with an oid `883860eacc7c37377f772a26919e700749020e4c`\n\t\t * * The tag points to a commit with an oid `41d27ca5d6df1e7826c7fa297398159857ea2d60`\n\t\t *\n\t\t * nameBuffer is everything after the first space. Let's extract the ref name\n\t\t * itself, that is refs/tags/v0.1.28.\n\t\t */\n\t\tconst nameBuffer = line.slice(spaceAt + 1, line.length - 1);\n\t\tconst name = nameBuffer.split(' ')[0];\n\t\trefs[name] = ref;\n\t}\n\treturn refs;\n}\n\n/**\n * Turns a user-provided ref in a convenient format, such as 'main' or\n * '1234567890abcdef1234567890abcdef12345678' into a more structured\n * format that tells us about the nature of the ref, e.g.\n *\n * * { kind: 'refname', refname: 'refs/heads/main' }\n * * { kind: 'commit', refname: '1234567890abcdef1234567890abcdef12345678' }.\n *\n * @param repoUrl\n * @param ref\n * @returns\n */\nasync function parseGitRef(\n\trepoUrl: string,\n\tref: GitRef\n): Promise<ParsedGitRef> {\n\tconst type = ref.type ?? 'infer';\n\tswitch (type) {\n\t\tcase 'commit':\n\t\t\treturn {\n\t\t\t\tkind: 'commit',\n\t\t\t\trefname: ref.value,\n\t\t\t\tresolvedOid: ref.value,\n\t\t\t};\n\t\tcase 'branch':\n\t\t\treturn {\n\t\t\t\tkind: 'refname',\n\t\t\t\trefname: `refs/heads/${ref.value.trim()}`,\n\t\t\t};\n\t\tcase 'tag':\n\t\t\treturn {\n\t\t\t\tkind: 'refname',\n\t\t\t\trefname: `refs/tags/${ref.value.trim()}`,\n\t\t\t};\n\t\tcase 'refname':\n\t\t\treturn {\n\t\t\t\tkind: 'refname',\n\t\t\t\trefname: ref.value.trim(),\n\t\t\t};\n\t\tcase 'infer': {\n\t\t\tconst trimmed = ref.value.trim();\n\t\t\tif (trimmed === '' || trimmed === 'HEAD') {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'refname',\n\t\t\t\t\trefname: 'HEAD',\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (trimmed.startsWith('refs/')) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'refname',\n\t\t\t\t\trefname: trimmed,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (FULL_SHA_REGEX.test(trimmed)) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'commit',\n\t\t\t\t\trefname: trimmed,\n\t\t\t\t\tresolvedOid: trimmed,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst branchRef = `refs/heads/${trimmed}`;\n\t\t\tconst branchOid = await fetchRefOid(repoUrl, branchRef);\n\t\t\tif (branchOid) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'refname',\n\t\t\t\t\trefname: branchRef,\n\t\t\t\t\tresolvedOid: branchOid,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst tagRef = `refs/tags/${trimmed}`;\n\t\t\tconst tagOid = await fetchRefOid(repoUrl, tagRef);\n\t\t\tif (tagOid) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'refname',\n\t\t\t\t\trefname: tagRef,\n\t\t\t\t\tresolvedOid: tagOid,\n\t\t\t\t};\n\t\t\t}\n\t\t\tthrow new Error(`Git ref \"${ref.value}\" not found at ${repoUrl}`);\n\t\t}\n\t\tdefault:\n\t\t\tthrow new Error(`Invalid ref type: ${ref.type}`);\n\t}\n}\n\nasync function fetchRefOid(repoUrl: string, refname: string) {\n\tconst refs = await listGitRefs(repoUrl, refname);\n\tconst candidates = [refname, `${refname}^{}`];\n\tfor (const candidate of candidates) {\n\t\tconst sanitized = candidate.trim();\n\t\tif (sanitized in refs) {\n\t\t\treturn refs[sanitized];\n\t\t}\n\t}\n\treturn null;\n}\n\nasync function fetchWithoutBlobs(repoUrl: string, commitHash: string) {\n\tconst packbuffer = Buffer.from(\n\t\t(await collect([\n\t\t\tGitPktLine.encode(\n\t\t\t\t`want ${commitHash} multi_ack_detailed no-done side-band-64k thin-pack ofs-delta agent=git/2.37.3 filter \\n`\n\t\t\t),\n\t\t\tGitPktLine.encode(`filter blob:none\\n`),\n\t\t\tGitPktLine.encode(`shallow ${commitHash}\\n`),\n\t\t\tGitPktLine.encode(`deepen 1\\n`),\n\t\t\tGitPktLine.flush(),\n\t\t\tGitPktLine.encode(`done\\n`),\n\t\t\tGitPktLine.encode(`done\\n`),\n\t\t])) as any\n\t);\n\n\tconst response = await fetch(repoUrl + '/git-upload-pack', {\n\t\tmethod: 'POST',\n\t\theaders: {\n\t\t\tAccept: 'application/x-git-upload-pack-advertisement',\n\t\t\t'content-type': 'application/x-git-upload-pack-request',\n\t\t\t'Content-Length': `${packbuffer.length}`,\n\t\t},\n\t\tbody: packbuffer as any,\n\t});\n\n\tconst iterator = streamToIterator(response.body!);\n\tconst parsed = await parseUploadPackResponse(iterator);\n\tconst packfile = Buffer.from((await collect(parsed.packfile)) as any);\n\tconst idx = await GitPackIndex.fromPack({\n\t\tpack: packfile,\n\t});\n\tconst originalRead = idx.read as any;\n\tidx.read = async function ({ oid, ...rest }: { oid: string }) {\n\t\tconst result = await originalRead.call(this, { oid, ...rest });\n\t\tresult.oid = oid;\n\t\treturn result;\n\t};\n\treturn {\n\t\tidx,\n\t\tpackfile: toUint8Array(packfile),\n\t\tpromisor: true,\n\t};\n}\n\nasync function resolveAllObjects(idx: GitPackIndex, commitHash: string) {\n\tconst commit = await idx.read({\n\t\toid: commitHash,\n\t});\n\treadObject(commit);\n\n\tconst rootItem = await idx.read({ oid: commit.object.tree });\n\tconst items = [rootItem];\n\twhile (items.length > 0) {\n\t\tconst tree = items.pop();\n\t\tconst readItem = await idx.read({ oid: tree.oid });\n\t\treadObject(readItem);\n\t\ttree.object = readItem.object;\n\t\tif (readItem.type === 'tree') {\n\t\t\tfor (const subitem of readItem.object) {\n\t\t\t\tif (subitem.type === 'tree') {\n\t\t\t\t\titems.push(subitem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn rootItem;\n}\n\nasync function collectLooseObjects(\n\tpack?: {\n\t\tidx: GitPackIndex;\n\t\tpackfile: Uint8Array;\n\t\tpromisor?: boolean;\n\t} | null\n): Promise<SparseCheckoutObject[]> {\n\tif (!pack) {\n\t\treturn [];\n\t}\n\tconst results: SparseCheckoutObject[] = [];\n\tconst seen = new Set<string>();\n\tfor (const oid of pack.idx.hashes ?? []) {\n\t\tif (seen.has(oid)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst offset = pack.idx.offsets.get(oid);\n\t\tif (offset === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst { type, object } = await pack.idx.readSlice({ start: offset });\n\t\tif (type === 'ofs_delta' || type === 'ref_delta') {\n\t\t\tcontinue;\n\t\t}\n\t\tif (!object) {\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(oid);\n\t\tresults.push({\n\t\t\toid,\n\t\t\ttype: type as SparseCheckoutObject['type'],\n\t\t\tbody: toUint8Array(object as Uint8Array),\n\t\t});\n\t}\n\treturn results;\n}\n\nasync function resolveObjects(\n\tidx: GitPackIndex,\n\tcommitHash: string,\n\tpaths: string[]\n) {\n\tconst commit = await idx.read({\n\t\toid: commitHash,\n\t});\n\treadObject(commit);\n\n\tconst rootTree = await idx.read({ oid: commit.object.tree });\n\treadObject(rootTree);\n\n\t// Resolve refs to fetch\n\tconst resolvedOids: Record<string, any> = {};\n\tfor (const path of paths) {\n\t\tlet currentObject = rootTree;\n\t\tconst segments = path.split('/');\n\t\tfor (const segment of segments) {\n\t\t\tif (currentObject.type !== 'tree') {\n\t\t\t\tthrow new Error(`Path not found in the repo: ${path}`);\n\t\t\t}\n\n\t\t\tlet found = false;\n\t\t\tfor (const item of currentObject.object) {\n\t\t\t\tif (item.path === segment) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcurrentObject = await idx.read({ oid: item.oid });\n\t\t\t\t\t\treadObject(currentObject);\n\t\t\t\t\t} catch {\n\t\t\t\t\t\tcurrentObject = item;\n\t\t\t\t\t}\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\tthrow new Error(`Path not found in the repo: ${path}`);\n\t\t\t}\n\t\t}\n\t\tresolvedOids[path] = currentObject;\n\t}\n\treturn resolvedOids;\n}\n\n// Request oid for each resolvedRef\nasync function fetchObjects(url: string, objectHashes: string[]) {\n\tconst packbuffer = Buffer.from(\n\t\t(await collect([\n\t\t\t...objectHashes.map((objectHash) =>\n\t\t\t\tGitPktLine.encode(\n\t\t\t\t\t`want ${objectHash} multi_ack_detailed no-done side-band-64k thin-pack ofs-delta agent=git/2.37.3 \\n`\n\t\t\t\t)\n\t\t\t),\n\t\t\tGitPktLine.flush(),\n\t\t\tGitPktLine.encode(`done\\n`),\n\t\t])) as any\n\t);\n\n\tconst response = await fetch(url + '/git-upload-pack', {\n\t\tmethod: 'POST',\n\t\theaders: {\n\t\t\tAccept: 'application/x-git-upload-pack-advertisement',\n\t\t\t'content-type': 'application/x-git-upload-pack-request',\n\t\t\t'Content-Length': `${packbuffer.length}`,\n\t\t},\n\t\tbody: packbuffer as any,\n\t});\n\n\tconst iterator = streamToIterator(response.body!);\n\tconst parsed = await parseUploadPackResponse(iterator);\n\tconst packfile = Buffer.from((await collect(parsed.packfile)) as any);\n\tif (packfile.byteLength === 0) {\n\t\tconst idx = await GitPackIndex.fromPack({\n\t\t\tpack: packfile,\n\t\t});\n\t\treturn {\n\t\t\tidx,\n\t\t\tpackfile: new Uint8Array(),\n\t\t\tpromisor: false,\n\t\t};\n\t}\n\tconst idx = await GitPackIndex.fromPack({\n\t\tpack: packfile,\n\t});\n\treturn {\n\t\tidx,\n\t\tpackfile: toUint8Array(packfile),\n\t\tpromisor: false,\n\t};\n}\n\nasync function extractGitObjectFromIdx(idx: GitPackIndex, objectHash: string) {\n\tconst tree = await idx.read({ oid: objectHash });\n\treadObject(tree);\n\n\tif (tree.type === 'blob') {\n\t\treturn tree.object;\n\t}\n\n\tconst files: Record<string, any> = {};\n\tfor (const { path, oid, type } of tree.object) {\n\t\tif (type === 'blob') {\n\t\t\tconst object = await idx.read({ oid });\n\t\t\treadObject(object);\n\t\t\tfiles[path] = object.object;\n\t\t} else if (type === 'tree') {\n\t\t\tfiles[path] = await extractGitObjectFromIdx(idx, oid);\n\t\t}\n\t}\n\treturn files;\n}\n\nfunction readObject(result: any) {\n\tif (!(result.object instanceof Buffer)) {\n\t\treturn;\n\t}\n\tswitch (result.type) {\n\t\tcase 'commit':\n\t\t\tresult.object = GitCommit.from(result.object).parse();\n\t\t\tbreak;\n\t\tcase 'tree':\n\t\t\tresult.object = (GitTree.from(result.object) as any).entries();\n\t\t\tbreak;\n\t\tcase 'blob':\n\t\t\tresult.object = new Uint8Array(result.object);\n\t\t\tresult.format = 'content';\n\t\t\tbreak;\n\t\tcase 'tag':\n\t\t\tresult.object = GitAnnotatedTag.from(result.object).parse();\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new ObjectTypeError(\n\t\t\t\tresult.oid,\n\t\t\t\tresult.type,\n\t\t\t\t'blob|commit|tag|tree'\n\t\t\t);\n\t}\n}\n\nasync function* parseGitResponseLines(response: Response) {\n\tconst text = await response.text();\n\tlet at = 0;\n\n\twhile (at <= text.length) {\n\t\tconst lineLength = parseInt(text.substring(at, at + 4), 16);\n\t\tif (lineLength === 0) {\n\t\t\tbreak;\n\t\t}\n\t\tconst line = text.substring(at + 4, at + lineLength);\n\t\tyield line;\n\t\tat += lineLength;\n\t}\n}\n\nfunction streamToIterator(stream: any) {\n\t// Use native async iteration if it's available.\n\tif (stream[Symbol.asyncIterator]) {\n\t\treturn stream;\n\t}\n\tconst reader = stream.getReader();\n\treturn {\n\t\tnext() {\n\t\t\treturn reader.read();\n\t\t},\n\t\treturn() {\n\t\t\treader.releaseLock();\n\t\t\treturn {};\n\t\t},\n\t\t[Symbol.asyncIterator]() {\n\t\t\treturn this;\n\t\t},\n\t};\n}\n\nfunction toUint8Array(buffer: Uint8Array | Buffer) {\n\tif (buffer instanceof Uint8Array) {\n\t\treturn Uint8Array.from(buffer);\n\t}\n\treturn Uint8Array.from(buffer);\n}\n","import { GitIndex } from 'isomorphic-git/src/models/GitIndex.js';\nimport type { SparseCheckoutObject } from './git-sparse-checkout';\nimport pako from 'pako';\nconst deflate = pako.deflate;\n\ntype GitDirectoryRefType = 'branch' | 'tag' | 'commit' | 'refname';\n\ntype GitHeadInfo = {\n\theadContent: string;\n\tbranchName?: string;\n\tbranchRef?: string;\n\ttagName?: string;\n};\n\nconst FULL_SHA_REGEX = /^[0-9a-f]{40}$/i;\n\n/**\n * Creates loose Git object files from sparse checkout objects.\n * Each object is compressed using deflate and stored in the Git objects directory.\n */\nasync function createLooseGitObjectFiles(\n\tobjects: SparseCheckoutObject[]\n): Promise<Record<string, Uint8Array>> {\n\tconst files: Record<string, Uint8Array> = {};\n\tconst encoder = new TextEncoder();\n\n\tawait Promise.all(\n\t\tobjects.map(async ({ oid, type, body }) => {\n\t\t\tif (!oid || body.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst header = encoder.encode(`${type} ${body.length}\\0`);\n\t\t\tconst combined = new Uint8Array(header.length + body.length);\n\t\t\tcombined.set(header, 0);\n\t\t\tcombined.set(body, header.length);\n\t\t\tconst compressed = await deflate(combined);\n\t\t\tconst prefix = oid.slice(0, 2);\n\t\t\tconst suffix = oid.slice(2);\n\t\t\tfiles[`.git/objects/${prefix}/${suffix}`] = compressed;\n\t\t})\n\t);\n\n\treturn files;\n}\n\n/**\n * Resolves the HEAD reference information based on the ref type and value.\n */\nfunction resolveHeadInfo(\n\tref: string,\n\trefType: GitDirectoryRefType | undefined,\n\tcommitHash: string\n): GitHeadInfo {\n\tconst trimmed = ref?.trim() ?? '';\n\tlet fullRef: string | null = null;\n\n\tswitch (refType) {\n\t\tcase 'branch':\n\t\t\tif (trimmed) {\n\t\t\t\tfullRef = `refs/heads/${trimmed}`;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'refname':\n\t\t\tfullRef = trimmed || null;\n\t\t\tbreak;\n\t\tcase 'tag':\n\t\t\tif (trimmed.startsWith('refs/')) {\n\t\t\t\tfullRef = trimmed;\n\t\t\t} else if (trimmed) {\n\t\t\t\tfullRef = `refs/tags/${trimmed}`;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'commit':\n\t\t\tfullRef = null;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tif (trimmed.startsWith('refs/')) {\n\t\t\t\tfullRef = trimmed;\n\t\t\t} else if (FULL_SHA_REGEX.test(trimmed)) {\n\t\t\t\tfullRef = null;\n\t\t\t} else if (trimmed && trimmed !== 'HEAD') {\n\t\t\t\tfullRef = `refs/heads/${trimmed}`;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\tconst headContent = fullRef ? `ref: ${fullRef}\\n` : `${commitHash}\\n`;\n\n\tconst branchRef =\n\t\tfullRef && fullRef.startsWith('refs/heads/') ? fullRef : undefined;\n\tconst branchName = branchRef?.slice('refs/heads/'.length);\n\n\tconst tagRef =\n\t\tfullRef && fullRef.startsWith('refs/tags/') ? fullRef : undefined;\n\tconst tagName = tagRef?.slice('refs/tags/'.length);\n\n\treturn {\n\t\theadContent,\n\t\tbranchName,\n\t\tbranchRef,\n\t\ttagName,\n\t};\n}\n\n/**\n * Builds a Git config file content with remote and branch configuration.\n */\nfunction buildGitConfig(\n\trepoUrl: string,\n\t{\n\t\tbranchName,\n\t\tpartialCloneFilter,\n\t}: { branchName?: string; partialCloneFilter?: string }\n): string {\n\tconst repositoryFormatVersion = partialCloneFilter ? 1 : 0;\n\tconst lines = [\n\t\t'[core]',\n\t\t`\\trepositoryformatversion = ${repositoryFormatVersion}`,\n\t\t'\\tfilemode = true',\n\t\t'\\tbare = false',\n\t\t'\\tlogallrefupdates = true',\n\t\t'\\tignorecase = true',\n\t\t'\\tprecomposeunicode = true',\n\t\t'[remote \"origin\"]',\n\t\t`\\turl = ${repoUrl}`,\n\t\t'\\tfetch = +refs/heads/*:refs/remotes/origin/*',\n\t\t'\\tfetch = +refs/tags/*:refs/tags/*',\n\t];\n\tif (partialCloneFilter) {\n\t\tlines.push('\\tpromisor = true');\n\t\tlines.push(`\\tpartialclonefilter = ${partialCloneFilter}`);\n\t\tlines.push('[extensions]');\n\t\tlines.push('\\tpartialclone = origin');\n\t}\n\tif (branchName) {\n\t\tlines.push(\n\t\t\t`[branch \"${branchName}\"]`,\n\t\t\t'\\tremote = origin',\n\t\t\t`\\tmerge = refs/heads/${branchName}`\n\t\t);\n\t}\n\treturn lines.join('\\n') + '\\n';\n}\n\n/**\n * Creates a complete .git directory structure with all necessary files.\n * This includes HEAD, config, refs, objects, and the Git index.\n */\nexport async function createDotGitDirectory({\n\trepoUrl,\n\tcommitHash,\n\tref,\n\trefType,\n\tobjects,\n\tfileOids,\n\tpathPrefix,\n}: {\n\trepoUrl: string;\n\tcommitHash: string;\n\tref: string;\n\trefType?: GitDirectoryRefType;\n\tobjects: SparseCheckoutObject[];\n\tfileOids: Record<string, string>;\n\tpathPrefix: string;\n}): Promise<Record<string, string | Uint8Array>> {\n\tconst gitFiles: Record<string, string | Uint8Array> = {};\n\tconst headInfo = resolveHeadInfo(ref, refType, commitHash);\n\n\tgitFiles['.git/HEAD'] = headInfo.headContent;\n\tgitFiles['.git/config'] = buildGitConfig(repoUrl, {\n\t\tbranchName: headInfo.branchName,\n\t});\n\tgitFiles['.git/description'] = 'WordPress Playground clone\\n';\n\tgitFiles['.git/shallow'] = `${commitHash}\\n`;\n\n\t// Create refs/ directory structure\n\tgitFiles['.git/refs/heads/.gitkeep'] = '';\n\tgitFiles['.git/refs/tags/.gitkeep'] = '';\n\tgitFiles['.git/refs/remotes/.gitkeep'] = '';\n\n\tif (headInfo.branchRef && headInfo.branchName) {\n\t\tgitFiles['.git/logs/HEAD'] = `ref: ${headInfo.branchRef}\\n`;\n\t\tgitFiles[`.git/${headInfo.branchRef}`] = `${commitHash}\\n`;\n\t\tgitFiles[\n\t\t\t`.git/refs/remotes/origin/${headInfo.branchName}`\n\t\t] = `${commitHash}\\n`;\n\t\tgitFiles[\n\t\t\t'.git/refs/remotes/origin/HEAD'\n\t\t] = `ref: refs/remotes/origin/${headInfo.branchName}\\n`;\n\t}\n\n\tif (headInfo.tagName) {\n\t\tgitFiles[`.git/refs/tags/${headInfo.tagName}`] = `${commitHash}\\n`;\n\t}\n\n\t// Use loose objects only, no packfiles\n\tObject.assign(gitFiles, await createLooseGitObjectFiles(objects));\n\n\t// Create the git index\n\tconst index = new GitIndex();\n\tfor (const [path, oid] of Object.entries(fileOids)) {\n\t\t// Remove the path prefix to get the working tree relative path\n\t\tconst workingTreePath = path\n\t\t\t.substring(pathPrefix.length)\n\t\t\t.replace(/^\\/+/, '');\n\t\tindex.insert({\n\t\t\tfilepath: workingTreePath,\n\t\t\toid,\n\t\t\tstats: {\n\t\t\t\tctimeSeconds: 0,\n\t\t\t\tctimeNanoseconds: 0,\n\t\t\t\tmtimeSeconds: 0,\n\t\t\t\tmtimeNanoseconds: 0,\n\t\t\t\tdev: 0,\n\t\t\t\tino: 0,\n\t\t\t\tmode: 0o100644, // Regular file\n\t\t\t\tuid: 0,\n\t\t\t\tgid: 0,\n\t\t\t\tsize: 0,\n\t\t\t},\n\t\t});\n\t}\n\tconst indexBuffer = await index.toObject();\n\t// Convert Buffer to Uint8Array - copy the data to ensure it's a proper Uint8Array\n\tgitFiles['.git/index'] = Uint8Array.from(indexBuffer);\n\n\treturn gitFiles;\n}\n","import { normalizePath } from '@php-wasm/util';\nimport type { GitFileTree } from './git-sparse-checkout';\n\nexport function listDescendantFiles(\n\tfiles: GitFileTree[],\n\tselectedPath: string\n) {\n\tselectedPath = normalizePath(selectedPath);\n\tconst isRoot = ['', '.', '/'].includes(selectedPath);\n\n\tlet currentTree: GitFileTree[] | null = files;\n\tif (isRoot) {\n\t\tselectedPath = '';\n\t} else {\n\t\tconst segments = selectedPath.split('/');\n\t\tfor (const segment of segments) {\n\t\t\tconst file = currentTree?.find(\n\t\t\t\t(file) => file.name === segment\n\t\t\t) as GitFileTree;\n\t\t\tif (file?.type === 'folder') {\n\t\t\t\tcurrentTree = file.children;\n\t\t\t} else if (file) {\n\t\t\t\treturn [file.name];\n\t\t\t} else {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t}\n\t}\n\n\t// Calculate the list of files to checkout based on the mapping\n\tconst descendants: string[] = [];\n\tconst stack = [{ tree: currentTree, path: selectedPath }];\n\twhile (stack.length > 0) {\n\t\tconst { tree, path } = stack.pop() as {\n\t\t\ttree: GitFileTree[];\n\t\t\tpath: string;\n\t\t};\n\t\tfor (const file of tree) {\n\t\t\tconst filePath = `${path}${path ? '/' : ''}${file.name}`;\n\t\t\tif (file.type === 'folder') {\n\t\t\t\tstack.push({\n\t\t\t\t\ttree: file.children,\n\t\t\t\t\tpath: filePath,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdescendants.push(filePath);\n\t\t\t}\n\t\t}\n\t}\n\treturn descendants;\n}\n\nexport function removePathPrefix(path: string, prefix: string) {\n\tif (path.startsWith(prefix)) {\n\t\treturn path.substring(prefix.length);\n\t}\n\treturn path;\n}\n","import { StreamedFile } from '@php-wasm/stream-compression';\nimport type { FileTree } from '@php-wasm/universal';\nimport { normalizePath } from '@php-wasm/util';\nimport type { Entry } from '@zip.js/zip.js';\nimport { ZipReader, BlobWriter, BlobReader } from '@zip.js/zip.js';\n\nexport interface Filesystem {\n\tread(path: string): Promise<StreamedFile>;\n}\n\nexport class InMemoryFilesystem implements Filesystem {\n\tprivate fileTree: FileTree;\n\n\tconstructor(fileTree: FileTree) {\n\t\tthis.fileTree = fileTree;\n\t}\n\n\tasync read(path: string): Promise<StreamedFile> {\n\t\tlet content = this.getEntryAtPath(path);\n\t\tif (typeof content === 'string') {\n\t\t\tcontent = new TextEncoder().encode(content);\n\t\t} else if (!(content instanceof Uint8Array)) {\n\t\t\tthrow new Error(`Unsupported content type: ${typeof content}`);\n\t\t}\n\t\tconst stream = new ReadableStream({\n\t\t\tstart(controller) {\n\t\t\t\tcontroller.enqueue(content);\n\t\t\t\tcontroller.close();\n\t\t\t},\n\t\t});\n\t\treturn new StreamedFile(stream, path, {\n\t\t\tfilesize: content.byteLength,\n\t\t});\n\t}\n\n\tprivate getEntryAtPath(path: string): Uint8Array | string | FileTree {\n\t\tlet remainingPath = path.replace(/^\\//, '');\n\t\tlet currentSubtree = this.fileTree;\n\t\twhile (remainingPath) {\n\t\t\tif (currentSubtree[remainingPath]) {\n\t\t\t\treturn currentSubtree[remainingPath];\n\t\t\t}\n\t\t\tconst segments = remainingPath.split('/');\n\t\t\tconst nextSegment = segments.shift();\n\t\t\tif (!nextSegment || !currentSubtree[nextSegment]) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcurrentSubtree = currentSubtree[nextSegment] as FileTree;\n\t\t\tremainingPath = segments.join('/');\n\t\t}\n\t\tthrow new Error(`File not found at ${path}`);\n\t}\n}\n\nexport class ZipFilesystem implements Filesystem {\n\tprivate entries: Map<string, Entry> = new Map();\n\tprivate zipReader: ZipReader<BlobReader>;\n\n\tstatic fromStream(stream: ReadableStream<Uint8Array>): ZipFilesystem {\n\t\tconst zipReader = new ZipReader(\n\t\t\tnew BlobReader(new StreamedFile(stream, 'archive.zip'))\n\t\t);\n\t\treturn new ZipFilesystem(zipReader);\n\t}\n\n\tstatic fromArrayBuffer(arrayBuffer: ArrayBuffer): ZipFilesystem {\n\t\tconst zipReader = new ZipReader(\n\t\t\tnew BlobReader(new Blob([arrayBuffer]))\n\t\t);\n\t\treturn new ZipFilesystem(zipReader);\n\t}\n\n\tconstructor(zipReader: ZipReader<BlobReader>) {\n\t\tthis.zipReader = zipReader;\n\t}\n\n\tasync read(relativePath: string): Promise<StreamedFile> {\n\t\tconst entry = await this.getEntry(relativePath);\n\t\tconst blob = await entry.getData!(new BlobWriter());\n\t\treturn new StreamedFile(blob.stream(), relativePath, {\n\t\t\tfilesize: entry.uncompressedSize,\n\t\t});\n\t}\n\n\tprivate async getEntry(relativePath: string): Promise<Entry> {\n\t\tconst entries = await this.getEntries();\n\t\tconst entry = entries.get(relativePath.replace(/^\\//, ''));\n\t\tif (!entry) {\n\t\t\tthrow new Error(`File ${relativePath} not found in the zip.`);\n\t\t}\n\t\treturn entry;\n\t}\n\n\tprivate async getEntries(): Promise<Map<string, Entry>> {\n\t\tif (this.entries.size === 0) {\n\t\t\tconst entries = await this.zipReader.getEntries();\n\t\t\tfor (const entry of entries) {\n\t\t\t\tthis.entries.set(entry.filename, entry);\n\t\t\t}\n\t\t}\n\t\treturn this.entries;\n\t}\n}\n\n/**\n * A Filesystem implementation that cascades through multiple filesystems\n * and returns the first successful result.\n *\n * This is useful for creating a layered approach to file resolution,\n * such as checking a local cache before fetching from a remote source.\n */\nexport class OverlayFilesystem implements Filesystem {\n\tprivate filesystems: Filesystem[];\n\n\t/**\n\t * Creates a new OverlayFilesystem.\n\t *\n\t * @param filesystems An array of Filesystem instances to cascade through.\n\t * The order determines the priority - earlier filesystems\n\t * are checked first.\n\t */\n\tconstructor(filesystems: Filesystem[]) {\n\t\tif (!filesystems.length) {\n\t\t\tthrow new Error(\n\t\t\t\t'OverlayFilesystem requires at least one filesystem'\n\t\t\t);\n\t\t}\n\t\tthis.filesystems = filesystems;\n\t}\n\n\t/**\n\t * Reads a file by trying each filesystem in order until one succeeds.\n\t *\n\t * @param path The path to the file to read.\n\t * @returns A Promise that resolves to a StreamedFile from the first\n\t * filesystem that successfully resolves the path.\n\t * @throws Error if all filesystems fail to resolve the path.\n\t */\n\tasync read(path: string): Promise<StreamedFile> {\n\t\tconst errors: Error[] = [];\n\n\t\t// Try each filesystem in order\n\t\tfor (const filesystem of this.filesystems) {\n\t\t\ttry {\n\t\t\t\treturn await filesystem.read(path);\n\t\t\t} catch (error) {\n\t\t\t\t// Collect the error and continue to the next filesystem\n\t\t\t\terrors.push(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error))\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// If we get here, all filesystems failed\n\t\tconst errorMessages = errors.map((e) => e.message).join('; ');\n\t\tthrow new Error(\n\t\t\t`Failed to read ${path} from any filesystem: ${errorMessages}`,\n\t\t\t{ cause: errors }\n\t\t);\n\t}\n}\n\nexport interface FetchFilesystemOptions {\n\tcorsProxy?: string;\n\tbaseUrl: string;\n}\n\n/**\n * A Filesystem implementation that fetches files from URLs.\n * It can optionally use a CORS proxy and resolve paths relative to a base URL.\n */\nexport class FetchFilesystem implements Filesystem {\n\tprivate baseUrl = '';\n\tprivate options: FetchFilesystemOptions;\n\tprivate isDataUrl: boolean;\n\n\tconstructor(options: FetchFilesystemOptions) {\n\t\tthis.options = options;\n\t\tthis.isDataUrl = options.baseUrl.startsWith('data:');\n\t\tif (this.isDataUrl) {\n\t\t\treturn;\n\t\t}\n\t\t// Ensure the base URL ends with a slash\n\t\tconst url = new URL('./', options.baseUrl);\n\t\tif (url.protocol !== 'http:' && url.protocol !== 'https:') {\n\t\t\tthrow new Error(\n\t\t\t\t'Unsupported protocol: ' +\n\t\t\t\t\turl.protocol +\n\t\t\t\t\t'. Only HTTP and HTTPS are supported.'\n\t\t\t);\n\t\t}\n\t\tthis.baseUrl = url.origin + url.pathname;\n\t}\n\n\tasync read(path: string): Promise<StreamedFile> {\n\t\tif (this.isDataUrl) {\n\t\t\tthrow new Error(\n\t\t\t\t'FetchFilesystem cannot fetch files from data URLs'\n\t\t\t);\n\t\t}\n\n\t\t// Make sure there's no .. segments in the path\n\t\tpath = normalizePath(path);\n\t\t// Prevent escaping the base URL\n\t\tconst cleanPath = path.replace(/^\\//, '');\n\n\t\t// Resolve path to a URL\n\t\tconst url = new URL(cleanPath, this.baseUrl).toString();\n\t\tif (!url.startsWith(this.baseUrl)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Refused to read a file outside of the base URL: ${url}`\n\t\t\t);\n\t\t}\n\n\t\t// Apply CORS proxy if configured\n\t\tconst finalUrl = this.options.corsProxy\n\t\t\t? `${this.options.corsProxy}${encodeURIComponent(url)}`\n\t\t\t: url;\n\n\t\t// Fetch the file\n\t\tconst response = await fetch(finalUrl);\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to fetch file at ${path}: ${response.statusText}`\n\t\t\t);\n\t\t}\n\n\t\t// Get the content length if available\n\t\tconst filesize = response.headers.get('content-length')\n\t\t\t? parseInt(response.headers.get('content-length')!, 10)\n\t\t\t: undefined;\n\n\t\t// Return as a StreamedFile\n\t\treturn new StreamedFile(response.body!, path, { filesize });\n\t}\n}\n\n/**\n * A Filesystem implementation that uses the \"fs\" and \"path\" modules from Node.js\n * to read files from the local file system.\n *\n * This is only available in a local environment.\n */\nexport class NodeJsFilesystem implements Filesystem {\n\tprivate fs: any;\n\tprivate path: any;\n\tprivate root: string;\n\n\tconstructor(root: string) {\n\t\tthis.root = root;\n\t}\n\n\tprivate async ensureNodeModules() {\n\t\tif (!this.fs || !this.path) {\n\t\t\ttry {\n\t\t\t\tthis.fs = await import('fs');\n\t\t\t\tthis.path = await import('path');\n\t\t\t} catch {\n\t\t\t\tthis.fs = require('fs');\n\t\t\t\tthis.path = require('path');\n\t\t\t}\n\t\t\tthis.root = this.path.resolve(this.root) + this.path.sep;\n\t\t}\n\t}\n\n\tasync read(filePath: string): Promise<StreamedFile> {\n\t\tawait this.ensureNodeModules();\n\n\t\tfilePath = this.path.resolve(\n\t\t\tthis.root,\n\t\t\tthis.path.normalize(filePath.replace(/^\\//, ''))\n\t\t);\n\t\tif (!filePath.startsWith(this.root)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Refused to read a file outside of the root directory: ${filePath}`\n\t\t\t);\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst fullPath = this.path.resolve(filePath);\n\t\t\tconst stream = this.fs.createReadStream(fullPath);\n\n\t\t\tstream.on('error', (err: any) => {\n\t\t\t\treject(\n\t\t\t\t\tnew Error(\n\t\t\t\t\t\t`Failed to read file at ${filePath}: ${err.message}`\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tthis.fs.stat(fullPath, (err: any, stats: any) => {\n\t\t\t\tif (err) {\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t`Failed to read file at ${filePath}: ${err.message}`\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(\n\t\t\t\t\t\tnew StreamedFile(\n\t\t\t\t\t\t\tnodeStreamToReadableStream(stream),\n\t\t\t\t\t\t\tfilePath,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfilesize: stats.size,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n\nfunction nodeStreamToReadableStream(stream: any): ReadableStream {\n\tconst readableStream = new ReadableStream({\n\t\tstart(controller) {\n\t\t\tstream.on('data', (chunk: Buffer) => controller.enqueue(chunk));\n\t\t\tstream.on('end', () => controller.close());\n\t\t},\n\t});\n\treturn readableStream;\n}\n"],"names":["createClient","githubToken","Octokit","filesListToObject","files","root","result","file","getFilesFromDirectory","octokit","owner","repo","ref","path","options","onProgress","filePromises","directoryPromises","content","item","getFileContent","filesInDirs","dir","semaphore","Semaphore","release","fileContent","base64ToUint8Array","base64","binaryString","len","bytes","i","getArtifact","pull_number","workflow_id","pullRequest","runId","_a","artifacts","mayPush","repository","headers","createOrUpdateBranch","branch","newHead","fork","user","createCommit","message","parentSha","treeSha","sha","createTree","changeset","tree","createTreeNodes","newTreeSha","blobsPromises","createTreeNode","deleteFile","blobs","blob","blobSemaphore","stringContent","uint8ArrayToBase64","binary","iterateFiles","playground","exceptPaths","normalizePath","stack","currentParent","absPath","joinPaths","filesBefore","filesAfter","changes","seenFilesAfter","fileAfter","before","after","uint8arraysEqual","pathBefore","a","b","val","index","directoryHandleFromMountDevice","device","opfsPathToDirectoryHandle","opfsPath","parts","p","handle","part","directoryHandleToOpfsPath","directoryHandle","pathParts","clearContentsFromMountDevice","mountDevice","parentHandle","name","fromValue","value","queue","getIterator","iterable","StreamReader","stream","n","done","buffers","lengthBuffers","nextbuffer","acc","buffer","padHex","s","GitPktLine","line","length","hexlength","reader","err","BaseError","json","e","InternalError","UnsafeFilepathError","filepath","compareStrings","comparePath","compareTreeEntryPath","appendSlashIfDir","entry","mode2type","mode","parseBuffer","_entries","cursor","space","nullchar","type","oid","limitModeToAllowed","nudgeIntoShape","GitTree","entries","formatAuthor","email","timestamp","timezoneOffset","formatTimezoneOffset","minutes","sign","simpleSign","negateExceptForZero","hours","strHours","strMinutes","normalizeNewlines","str","parseAuthor","author","offset","parseTimezoneOffset","GitAnnotatedTag","tag","obj","hs","h","key","signature","secretKey","payload","signedTag","indent","x","outdent","GitCommit","commit","committer","signedCommit","GitObject","object","actualLength","BufferCursor","r","enc","source","start","end","applyDelta","delta","sourceSize","readVarIntLE","targetSize","target","firstOp","readOp","writer","tell","shift","byte","readCompactLE","flags","size","COPY","OFFS","SIZE","listpack","onData","PACK","version","numObjects","ofs","reference","parseHeader","inflator","pako","chunk","inflate","inherits_browserModule","ctor","superCtor","TempCtor","base64Js","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","code","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","output","extraBytes","maxChunkLength","len2","ieee754","isLE","mLen","nBytes","m","eLen","eMax","eBias","nBits","d","c","rt","require$$0","require$$1","customInspectSymbol","exports","Buffer","SlowBuffer","K_MAX_LENGTH","typedArraySupport","proto","createBuffer","buf","arg","encodingOrOffset","allocUnsafe","from","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","fromObject","assertSize","alloc","fill","encoding","checked","string","actual","fromArrayLike","array","arrayView","copy","byteOffset","numberIsNaN","y","list","pos","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","max","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","j","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","hexSliceLookupTable","newBuf","checkOffset","ext","noAssert","mul","checkInt","min","maxBytes","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","hi","lo","src","dst","alphabet","table","i16","copyProps","module","SafeBuffer","toString","isarray","esObjectAtoms","esErrors","_eval","range","syntax","uri","abs","floor","pow","round","_isNaN","$isNaN","number","gOPD","$gOPD","gopd","$defineProperty","esDefineProperty","shams","sym","symObj","symVal","_","syms","descriptor","origSymbol","hasSymbolSham","hasSymbols","Reflect_getPrototypeOf","$Object","Object_getPrototypeOf","ERROR_MESSAGE","toStr","funcType","concatty","slicy","arrLike","joiny","joiner","implementation","that","args","bound","binder","boundLength","boundArgs","Empty","functionBind","functionCall","functionApply","reflectApply","bind","$apply","$call","require$$2","$reflectApply","require$$3","actualApply","$TypeError","$actualApply","callBindApplyHelpers","callBind","hasProtoAccessor","desc","$getPrototypeOf","get","reflectGetProto","originalGetProto","getDunderProto","getProto","O","call","$hasOwn","hasown","undefined","$Error","$EvalError","$RangeError","$ReferenceError","require$$4","$SyntaxError","require$$5","require$$6","$URIError","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","$Function","getEvalledConstructor","expressionSyntax","require$$15","require$$16","throwTypeError","ThrowTypeError","require$$17","require$$18","$ObjectGPO","require$$19","$ReflectGPO","require$$20","require$$21","require$$22","needsEval","TypedArray","INTRINSICS","errorProto","doEval","fn","gen","LEGACY_ALIASES","require$$23","hasOwn","require$$24","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","stringToPath","first","last","match","quote","subString","getBaseIntrinsic","allowMissing","intrinsicName","alias","getIntrinsic","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","GetIntrinsic","callBindBasic","$indexOf","callBound","fnToStr","badArrayLike","isCallableMarker","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","objectClass","fnClass","genClass","ddaClass","ddaClass2","ddaClass3","hasToStringTag","isIE68","isDDA","all","isCallable","strClass","hasOwnProperty","forEachArray","iterator","receiver","forEachString","forEachObject","k","isArray","forEach","thisArg","possibleTypedArrayNames","possibleNames","g","global","availableTypedArrays","defineDataProperty","property","nonEnumerable","nonWritable","nonConfigurable","loose","hasPropertyDescriptors","hasPropertyDescriptors_1","define","hasDescriptors","$floor","setFunctionLength","functionLengthIsConfigurable","functionLengthIsWritable","applyBind","originalFunction","func","adjustedLength","$toString","typedArrays","$slice","cache","typedArray","superProto","tryTypedArrays","getter","trySlices","whichTypedArray","isTypedArray","$typedArrayBuffer","typedArrayBuffer","isView","useUint8Array","useArrayBuffer","useFromArrayBuffer","toBuffer","data","isArr","Hash","blockSize","finalSize","block","accum","assigned","remainder","rem","bits","lowBits","highBits","hash","inherits","K","W","Sha1","rotl1","rotl5","rotl30","ft","M","w","t","H","sha1","toHex","hex","supportsSubtleSHA1","shasum","testSubtleSHA1","subtleSHA1","shasumSync","decodeVarInt","multibyte","lastSeven","otherVarIntDecode","startWith","GitPackIndex","stuff","idx","getExternalRefDelta","hashes","offsets","packfileSha","pack","listpackTypes","offsetToObject","crcs","totalObjectCount","lastPercent","percent","offsetArray","o","crc","crc32","count","objectsByDepth","write","fanoutBuffer","crcsBuffer","offsetsBuffer","totalBuffer","shaBuffer","types","raw","btype","lastFour","base","baseOffset","InvalidOidError","ObjectTypeError","expected","normalizeMode","permissions","MAX_UINT32","SecondsNanoseconds","givenSeconds","givenNanoseconds","milliseconds","date","seconds","nanoseconds","normalizeStats","ctimeSeconds","ctimeNanoseconds","mtimeSeconds","mtimeNanoseconds","parseCacheEntryFlags","renderCacheEntryFlags","GitIndex","unmergedPaths","existingEntry","magic","shaComputed","shaClaimed","numEntries","pathlength","padding","stats","stage","bfilepath","bpath","written","stat","header","entryBuffers","body","main","sum","forAwait","cb","iter","collect","nextIndex","FIFO","resolve","GitSideBand","input","packetlines","packfile","progress","nextBit","error","parseUploadPackResponse","shallows","unshallows","acks","nak","reject","status","BufferPolyfill","sparseCheckout","repoUrl","commitHash","filesPaths","treesPack","fetchWithoutBlobs","objects","resolveObjects","blobOids","blobsPack","fetchObjects","fetchedPaths","extractGitObjectFromIdx","packfiles","treesIndex","toUint8Array","blobsIndex","fileOids","collectLooseObjects","FULL_SHA_REGEX","listGitFiles","rootTree","resolveAllObjects","gitTreeToFileTree","resolveCommitHash","parseGitRef","fetchRefOid","listGitRefs","fullyQualifiedBranchPrefix","packbuffer","response","refs","parseGitResponseLines","spaceAt","trimmed","branchRef","branchOid","tagRef","tagOid","refname","candidates","candidate","sanitized","streamToIterator","originalRead","rest","readObject","rootItem","items","readItem","subitem","results","seen","paths","resolvedOids","currentObject","segments","segment","url","objectHashes","objectHash","text","at","lineLength","deflate","createLooseGitObjectFiles","encoder","combined","compressed","prefix","suffix","resolveHeadInfo","refType","fullRef","headContent","branchName","tagName","buildGitConfig","partialCloneFilter","lines","createDotGitDirectory","pathPrefix","gitFiles","headInfo","workingTreePath","indexBuffer","listDescendantFiles","selectedPath","isRoot","currentTree","descendants","filePath","removePathPrefix","InMemoryFilesystem","fileTree","controller","StreamedFile","remainingPath","currentSubtree","nextSegment","ZipFilesystem","zipReader","ZipReader","BlobReader","arrayBuffer","relativePath","BlobWriter","OverlayFilesystem","filesystems","errors","filesystem","errorMessages","FetchFilesystem","cleanPath","finalUrl","filesize","NodeJsFilesystem","fullPath","nodeStreamToReadableStream"],"mappings":"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","x_google_ignoreList":[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83]}