JezK
Edit File: fs.js.map
{"version":3,"file":"fs.js","names":["constants","fs","R_OK","W_OK","X_OK","lockQueue","BlockingQueue","readFileBuffer","promisify","readFile","open","writeFile","readlink","realpath","readdir","rename","access","stat","mkdirp","require","exists","lstat","chmod","link","glob","globModule","CONCURRENT_QUEUE_ITEMS","copyFile","fsSymlink","symlink","invariant","stripBOM","noop","buildActionsForCopy","queue","events","possibleExtraneous","reporter","build","data","src","dest","type","onFresh","onDone","files","has","toLowerCase","verbose","add","path","dirname","actions","push","linkname","ignoreBasenames","indexOf","basename","srcStat","isDirectory","srcFiles","destStat","code","bothSymlinks","isSymbolicLink","bothFolders","bothFiles","isFile","artifactFiles","lang","size","fileDatesEqual","mtime","srcReallink","destFiles","file","loc","join","unlink","destParts","split","sep","length","pop","remaining","atime","mode","Error","Set","item","onProgress","onStart","items","splice","Promise","all","map","buildActionsForHardlink","destExists","ino","removeDest","copy","copyBulk","_events","fileActions","currentlyWriting","Map","promise","writePromise","get","copier","set","symlinkActions","resolve","hardlinkBulk","_readFile","encoding","reject","err","content","then","normalizeOS","readFileRaw","readFileAny","readJson","readJsonAndFile","object","JSON","parse","message","find","filename","dir","parts","concat","process","platform","relative","stats","resolved","walk","relativeDir","filenames","filter","name","absolute","getFileSizeOnDisk","blockSize","blksize","Math","ceil","body","replace","cr","charCodeAt","lf","getEolFromFile","undefined","buffer","i","writeFilePreservingEol","os","EOL","eol","hardlinksWork","random","fileLink","makeTempDir","prefix","tmpdir","Date","now","readFirstAvailableStream","paths","fd","createReadStream","getFirstSuitableFolder","result","skipped","folder","error"],"sourceRoot":"../../src","sources":["util/fs.js"],"sourcesContent":["/* @flow */\n\nimport type {ReadStream} from 'fs';\nimport type Reporter from '../reporters/base-reporter.js';\nimport type {CopyFileAction} from './fs-normalized.js';\n\nimport fs from 'fs';\nimport globModule from 'glob';\nimport os from 'os';\nimport path from 'path';\n\nimport BlockingQueue from './blocking-queue.js';\nimport * as promise from './promise.js';\nimport {promisify} from './promise.js';\nimport map from './map.js';\nimport {copyFile, fileDatesEqual, unlink} from './fs-normalized.js';\n\nexport const constants =\n typeof fs.constants !== 'undefined'\n ? fs.constants\n : {\n R_OK: fs.R_OK,\n W_OK: fs.W_OK,\n X_OK: fs.X_OK,\n };\n\nexport const lockQueue = new BlockingQueue('fs lock');\n\nexport const readFileBuffer = promisify(fs.readFile);\nexport const open: (path: string, flags: string, mode?: number) => Promise<Array<string>> = promisify(fs.open);\nexport const writeFile: (path: string, data: string | Buffer, options?: Object) => Promise<void> = promisify(\n fs.writeFile,\n);\nexport const readlink: (path: string, opts: void) => Promise<string> = promisify(fs.readlink);\nexport const realpath: (path: string, opts: void) => Promise<string> = promisify(fs.realpath);\nexport const readdir: (path: string, opts: void) => Promise<Array<string>> = promisify(fs.readdir);\nexport const rename: (oldPath: string, newPath: string) => Promise<void> = promisify(fs.rename);\nexport const access: (path: string, mode?: number) => Promise<void> = promisify(fs.access);\nexport const stat: (path: string) => Promise<fs.Stats> = promisify(fs.stat);\nexport const mkdirp: (path: string) => Promise<void> = promisify(require('mkdirp-classic'));\nexport const exists: (path: string) => Promise<boolean> = promisify(fs.exists, true);\nexport const lstat: (path: string) => Promise<fs.Stats> = promisify(fs.lstat);\nexport const chmod: (path: string, mode: number | string) => Promise<void> = promisify(fs.chmod);\nexport const link: (src: string, dst: string) => Promise<fs.Stats> = promisify(fs.link);\nexport const glob: (path: string, options?: Object) => Promise<Array<string>> = promisify(globModule);\nexport {unlink};\n\n// fs.copyFile uses the native file copying instructions on the system, performing much better\n// than any JS-based solution and consumes fewer resources. Repeated testing to fine tune the\n// concurrency level revealed 128 as the sweet spot on a quad-core, 16 CPU Intel system with SSD.\nconst CONCURRENT_QUEUE_ITEMS = fs.copyFile ? 128 : 4;\n\nconst fsSymlink: (target: string, path: string, type?: 'dir' | 'file' | 'junction') => Promise<void> = promisify(\n fs.symlink,\n);\nconst invariant = require('invariant');\nconst stripBOM = require('strip-bom');\n\nconst noop = () => {};\n\nexport type CopyQueueItem = {\n src: string,\n dest: string,\n type?: string,\n onFresh?: ?() => void,\n onDone?: ?() => void,\n};\n\ntype CopyQueue = Array<CopyQueueItem>;\n\ntype LinkFileAction = {\n src: string,\n dest: string,\n removeDest: boolean,\n};\n\ntype CopySymlinkAction = {\n dest: string,\n linkname: string,\n};\n\ntype CopyActions = {\n file: Array<CopyFileAction>,\n symlink: Array<CopySymlinkAction>,\n link: Array<LinkFileAction>,\n};\n\ntype CopyOptions = {\n onProgress: (dest: string) => void,\n onStart: (num: number) => void,\n possibleExtraneous: Set<string>,\n ignoreBasenames: Array<string>,\n artifactFiles: Array<string>,\n};\n\ntype FailedFolderQuery = {\n error: Error,\n folder: string,\n};\n\ntype FolderQueryResult = {\n skipped: Array<FailedFolderQuery>,\n folder: ?string,\n};\n\nasync function buildActionsForCopy(\n queue: CopyQueue,\n events: CopyOptions,\n possibleExtraneous: Set<string>,\n reporter: Reporter,\n): Promise<CopyActions> {\n const artifactFiles: Set<string> = new Set(events.artifactFiles || []);\n const files: Set<string> = new Set();\n\n // initialise events\n for (const item of queue) {\n const onDone = item.onDone;\n item.onDone = () => {\n events.onProgress(item.dest);\n if (onDone) {\n onDone();\n }\n };\n }\n events.onStart(queue.length);\n\n // start building actions\n const actions: CopyActions = {\n file: [],\n symlink: [],\n link: [],\n };\n\n // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items\n // at a time due to the requirement to push items onto the queue\n while (queue.length) {\n const items = queue.splice(0, CONCURRENT_QUEUE_ITEMS);\n await Promise.all(items.map(build));\n }\n\n // simulate the existence of some files to prevent considering them extraneous\n for (const file of artifactFiles) {\n if (possibleExtraneous.has(file)) {\n reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file));\n possibleExtraneous.delete(file);\n }\n }\n\n for (const loc of possibleExtraneous) {\n if (files.has(loc.toLowerCase())) {\n possibleExtraneous.delete(loc);\n }\n }\n\n return actions;\n\n //\n async function build(data: CopyQueueItem): Promise<void> {\n const {src, dest, type} = data;\n const onFresh = data.onFresh || noop;\n const onDone = data.onDone || noop;\n\n // TODO https://github.com/yarnpkg/yarn/issues/3751\n // related to bundled dependencies handling\n if (files.has(dest.toLowerCase())) {\n reporter.verbose(`The case-insensitive file ${dest} shouldn't be copied twice in one bulk copy`);\n } else {\n files.add(dest.toLowerCase());\n }\n\n if (type === 'symlink') {\n await mkdirp(path.dirname(dest));\n onFresh();\n actions.symlink.push({\n dest,\n linkname: src,\n });\n onDone();\n return;\n }\n\n if (events.ignoreBasenames.indexOf(path.basename(src)) >= 0) {\n // ignored file\n return;\n }\n\n const srcStat = await lstat(src);\n let srcFiles;\n\n if (srcStat.isDirectory()) {\n srcFiles = await readdir(src);\n }\n\n let destStat;\n try {\n // try accessing the destination\n destStat = await lstat(dest);\n } catch (e) {\n // proceed if destination doesn't exist, otherwise error\n if (e.code !== 'ENOENT') {\n throw e;\n }\n }\n\n // if destination exists\n if (destStat) {\n const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink();\n const bothFolders = srcStat.isDirectory() && destStat.isDirectory();\n const bothFiles = srcStat.isFile() && destStat.isFile();\n\n // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving\n // us modes that aren't valid. investigate this, it's generally safe to proceed.\n\n /* if (srcStat.mode !== destStat.mode) {\n try {\n await access(dest, srcStat.mode);\n } catch (err) {}\n } */\n\n if (bothFiles && artifactFiles.has(dest)) {\n // this file gets changed during build, likely by a custom install script. Don't bother checking it.\n onDone();\n reporter.verbose(reporter.lang('verboseFileSkipArtifact', src));\n return;\n }\n\n if (bothFiles && srcStat.size === destStat.size && fileDatesEqual(srcStat.mtime, destStat.mtime)) {\n // we can safely assume this is the same file\n onDone();\n reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.size, +srcStat.mtime));\n return;\n }\n\n if (bothSymlinks) {\n const srcReallink = await readlink(src);\n if (srcReallink === (await readlink(dest))) {\n // if both symlinks are the same then we can continue on\n onDone();\n reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink));\n return;\n }\n }\n\n if (bothFolders) {\n // mark files that aren't in this folder as possibly extraneous\n const destFiles = await readdir(dest);\n invariant(srcFiles, 'src files not initialised');\n\n for (const file of destFiles) {\n if (srcFiles.indexOf(file) < 0) {\n const loc = path.join(dest, file);\n possibleExtraneous.add(loc);\n\n if ((await lstat(loc)).isDirectory()) {\n for (const file of await readdir(loc)) {\n possibleExtraneous.add(path.join(loc, file));\n }\n }\n }\n }\n }\n }\n\n if (destStat && destStat.isSymbolicLink()) {\n await unlink(dest);\n destStat = null;\n }\n\n if (srcStat.isSymbolicLink()) {\n onFresh();\n const linkname = await readlink(src);\n actions.symlink.push({\n dest,\n linkname,\n });\n onDone();\n } else if (srcStat.isDirectory()) {\n if (!destStat) {\n reporter.verbose(reporter.lang('verboseFileFolder', dest));\n await mkdirp(dest);\n }\n\n const destParts = dest.split(path.sep);\n while (destParts.length) {\n files.add(destParts.join(path.sep).toLowerCase());\n destParts.pop();\n }\n\n // push all files to queue\n invariant(srcFiles, 'src files not initialised');\n let remaining = srcFiles.length;\n if (!remaining) {\n onDone();\n }\n for (const file of srcFiles) {\n queue.push({\n dest: path.join(dest, file),\n onFresh,\n onDone: () => {\n if (--remaining === 0) {\n onDone();\n }\n },\n src: path.join(src, file),\n });\n }\n } else if (srcStat.isFile()) {\n onFresh();\n actions.file.push({\n src,\n dest,\n atime: srcStat.atime,\n mtime: srcStat.mtime,\n mode: srcStat.mode,\n });\n onDone();\n } else {\n throw new Error(`unsure how to copy this: ${src}`);\n }\n }\n}\n\nasync function buildActionsForHardlink(\n queue: CopyQueue,\n events: CopyOptions,\n possibleExtraneous: Set<string>,\n reporter: Reporter,\n): Promise<CopyActions> {\n const artifactFiles: Set<string> = new Set(events.artifactFiles || []);\n const files: Set<string> = new Set();\n\n // initialise events\n for (const item of queue) {\n const onDone = item.onDone || noop;\n item.onDone = () => {\n events.onProgress(item.dest);\n onDone();\n };\n }\n events.onStart(queue.length);\n\n // start building actions\n const actions: CopyActions = {\n file: [],\n symlink: [],\n link: [],\n };\n\n // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items\n // at a time due to the requirement to push items onto the queue\n while (queue.length) {\n const items = queue.splice(0, CONCURRENT_QUEUE_ITEMS);\n await Promise.all(items.map(build));\n }\n\n // simulate the existence of some files to prevent considering them extraneous\n for (const file of artifactFiles) {\n if (possibleExtraneous.has(file)) {\n reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file));\n possibleExtraneous.delete(file);\n }\n }\n\n for (const loc of possibleExtraneous) {\n if (files.has(loc.toLowerCase())) {\n possibleExtraneous.delete(loc);\n }\n }\n\n return actions;\n\n //\n async function build(data: CopyQueueItem): Promise<void> {\n const {src, dest} = data;\n const onFresh = data.onFresh || noop;\n const onDone = data.onDone || noop;\n if (files.has(dest.toLowerCase())) {\n // Fixes issue https://github.com/yarnpkg/yarn/issues/2734\n // When bulk hardlinking we have A -> B structure that we want to hardlink to A1 -> B1,\n // package-linker passes that modules A1 and B1 need to be hardlinked,\n // the recursive linking algorithm of A1 ends up scheduling files in B1 to be linked twice which will case\n // an exception.\n onDone();\n return;\n }\n files.add(dest.toLowerCase());\n\n if (events.ignoreBasenames.indexOf(path.basename(src)) >= 0) {\n // ignored file\n return;\n }\n\n const srcStat = await lstat(src);\n let srcFiles;\n\n if (srcStat.isDirectory()) {\n srcFiles = await readdir(src);\n }\n\n const destExists = await exists(dest);\n if (destExists) {\n const destStat = await lstat(dest);\n\n const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink();\n const bothFolders = srcStat.isDirectory() && destStat.isDirectory();\n const bothFiles = srcStat.isFile() && destStat.isFile();\n\n if (srcStat.mode !== destStat.mode) {\n try {\n await access(dest, srcStat.mode);\n } catch (err) {\n // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving\n // us modes that aren't valid. investigate this, it's generally safe to proceed.\n reporter.verbose(err);\n }\n }\n\n if (bothFiles && artifactFiles.has(dest)) {\n // this file gets changed during build, likely by a custom install script. Don't bother checking it.\n onDone();\n reporter.verbose(reporter.lang('verboseFileSkipArtifact', src));\n return;\n }\n\n // correct hardlink\n if (bothFiles && srcStat.ino !== null && srcStat.ino === destStat.ino) {\n onDone();\n reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.ino));\n return;\n }\n\n if (bothSymlinks) {\n const srcReallink = await readlink(src);\n if (srcReallink === (await readlink(dest))) {\n // if both symlinks are the same then we can continue on\n onDone();\n reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink));\n return;\n }\n }\n\n if (bothFolders) {\n // mark files that aren't in this folder as possibly extraneous\n const destFiles = await readdir(dest);\n invariant(srcFiles, 'src files not initialised');\n\n for (const file of destFiles) {\n if (srcFiles.indexOf(file) < 0) {\n const loc = path.join(dest, file);\n possibleExtraneous.add(loc);\n\n if ((await lstat(loc)).isDirectory()) {\n for (const file of await readdir(loc)) {\n possibleExtraneous.add(path.join(loc, file));\n }\n }\n }\n }\n }\n }\n\n if (srcStat.isSymbolicLink()) {\n onFresh();\n const linkname = await readlink(src);\n actions.symlink.push({\n dest,\n linkname,\n });\n onDone();\n } else if (srcStat.isDirectory()) {\n reporter.verbose(reporter.lang('verboseFileFolder', dest));\n await mkdirp(dest);\n\n const destParts = dest.split(path.sep);\n while (destParts.length) {\n files.add(destParts.join(path.sep).toLowerCase());\n destParts.pop();\n }\n\n // push all files to queue\n invariant(srcFiles, 'src files not initialised');\n let remaining = srcFiles.length;\n if (!remaining) {\n onDone();\n }\n for (const file of srcFiles) {\n queue.push({\n onFresh,\n src: path.join(src, file),\n dest: path.join(dest, file),\n onDone: () => {\n if (--remaining === 0) {\n onDone();\n }\n },\n });\n }\n } else if (srcStat.isFile()) {\n onFresh();\n actions.link.push({\n src,\n dest,\n removeDest: destExists,\n });\n onDone();\n } else {\n throw new Error(`unsure how to copy this: ${src}`);\n }\n }\n}\n\nexport function copy(src: string, dest: string, reporter: Reporter): Promise<void> {\n return copyBulk([{src, dest}], reporter);\n}\n\nexport async function copyBulk(\n queue: CopyQueue,\n reporter: Reporter,\n _events?: {\n onProgress?: ?(dest: string) => void,\n onStart?: ?(num: number) => void,\n possibleExtraneous: Set<string>,\n ignoreBasenames?: Array<string>,\n artifactFiles?: Array<string>,\n },\n): Promise<void> {\n const events: CopyOptions = {\n onStart: (_events && _events.onStart) || noop,\n onProgress: (_events && _events.onProgress) || noop,\n possibleExtraneous: _events ? _events.possibleExtraneous : new Set(),\n ignoreBasenames: (_events && _events.ignoreBasenames) || [],\n artifactFiles: (_events && _events.artifactFiles) || [],\n };\n\n const actions: CopyActions = await buildActionsForCopy(queue, events, events.possibleExtraneous, reporter);\n events.onStart(actions.file.length + actions.symlink.length + actions.link.length);\n\n const fileActions: Array<CopyFileAction> = actions.file;\n\n const currentlyWriting: Map<string, Promise<void>> = new Map();\n\n await promise.queue(\n fileActions,\n async (data: CopyFileAction): Promise<void> => {\n let writePromise;\n while ((writePromise = currentlyWriting.get(data.dest))) {\n await writePromise;\n }\n\n reporter.verbose(reporter.lang('verboseFileCopy', data.src, data.dest));\n const copier = copyFile(data, () => currentlyWriting.delete(data.dest));\n currentlyWriting.set(data.dest, copier);\n events.onProgress(data.dest);\n return copier;\n },\n CONCURRENT_QUEUE_ITEMS,\n );\n\n // we need to copy symlinks last as they could reference files we were copying\n const symlinkActions: Array<CopySymlinkAction> = actions.symlink;\n await promise.queue(symlinkActions, (data): Promise<void> => {\n const linkname = path.resolve(path.dirname(data.dest), data.linkname);\n reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname));\n return symlink(linkname, data.dest);\n });\n}\n\nexport async function hardlinkBulk(\n queue: CopyQueue,\n reporter: Reporter,\n _events?: {\n onProgress?: ?(dest: string) => void,\n onStart?: ?(num: number) => void,\n possibleExtraneous: Set<string>,\n artifactFiles?: Array<string>,\n },\n): Promise<void> {\n const events: CopyOptions = {\n onStart: (_events && _events.onStart) || noop,\n onProgress: (_events && _events.onProgress) || noop,\n possibleExtraneous: _events ? _events.possibleExtraneous : new Set(),\n artifactFiles: (_events && _events.artifactFiles) || [],\n ignoreBasenames: [],\n };\n\n const actions: CopyActions = await buildActionsForHardlink(queue, events, events.possibleExtraneous, reporter);\n events.onStart(actions.file.length + actions.symlink.length + actions.link.length);\n\n const fileActions: Array<LinkFileAction> = actions.link;\n\n await promise.queue(\n fileActions,\n async (data): Promise<void> => {\n reporter.verbose(reporter.lang('verboseFileLink', data.src, data.dest));\n if (data.removeDest) {\n await unlink(data.dest);\n }\n await link(data.src, data.dest);\n },\n CONCURRENT_QUEUE_ITEMS,\n );\n\n // we need to copy symlinks last as they could reference files we were copying\n const symlinkActions: Array<CopySymlinkAction> = actions.symlink;\n await promise.queue(symlinkActions, (data): Promise<void> => {\n const linkname = path.resolve(path.dirname(data.dest), data.linkname);\n reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname));\n return symlink(linkname, data.dest);\n });\n}\n\nfunction _readFile(loc: string, encoding: string): Promise<any> {\n return new Promise((resolve, reject) => {\n fs.readFile(loc, encoding, function(err, content) {\n if (err) {\n reject(err);\n } else {\n resolve(content);\n }\n });\n });\n}\n\nexport function readFile(loc: string): Promise<string> {\n return _readFile(loc, 'utf8').then(normalizeOS);\n}\n\nexport function readFileRaw(loc: string): Promise<Buffer> {\n return _readFile(loc, 'binary');\n}\n\nexport async function readFileAny(files: Array<string>): Promise<?string> {\n for (const file of files) {\n if (await exists(file)) {\n return readFile(file);\n }\n }\n return null;\n}\n\nexport async function readJson(loc: string): Promise<Object> {\n return (await readJsonAndFile(loc)).object;\n}\n\nexport async function readJsonAndFile(\n loc: string,\n): Promise<{\n object: Object,\n content: string,\n}> {\n const file = await readFile(loc);\n try {\n return {\n object: map(JSON.parse(stripBOM(file))),\n content: file,\n };\n } catch (err) {\n err.message = `${loc}: ${err.message}`;\n throw err;\n }\n}\n\nexport async function find(filename: string, dir: string): Promise<string | false> {\n const parts = dir.split(path.sep);\n\n while (parts.length) {\n const loc = parts.concat(filename).join(path.sep);\n\n if (await exists(loc)) {\n return loc;\n } else {\n parts.pop();\n }\n }\n\n return false;\n}\n\nexport async function symlink(src: string, dest: string): Promise<void> {\n if (process.platform !== 'win32') {\n // use relative paths otherwise which will be retained if the directory is moved\n src = path.relative(path.dirname(dest), src);\n // When path.relative returns an empty string for the current directory, we should instead use\n // '.', which is a valid fs.symlink target.\n src = src || '.';\n }\n\n try {\n const stats = await lstat(dest);\n if (stats.isSymbolicLink()) {\n const resolved = dest;\n if (resolved === src) {\n return;\n }\n }\n } catch (err) {\n if (err.code !== 'ENOENT') {\n throw err;\n }\n }\n\n // We use rimraf for unlink which never throws an ENOENT on missing target\n await unlink(dest);\n\n if (process.platform === 'win32') {\n // use directory junctions if possible on win32, this requires absolute paths\n await fsSymlink(src, dest, 'junction');\n } else {\n await fsSymlink(src, dest);\n }\n}\n\nexport type WalkFiles = Array<{\n relative: string,\n absolute: string,\n basename: string,\n mtime: number,\n}>;\n\nexport async function walk(\n dir: string,\n relativeDir?: ?string,\n ignoreBasenames?: Set<string> = new Set(),\n): Promise<WalkFiles> {\n let files = [];\n\n let filenames = await readdir(dir);\n if (ignoreBasenames.size) {\n filenames = filenames.filter(name => !ignoreBasenames.has(name));\n }\n\n for (const name of filenames) {\n const relative = relativeDir ? path.join(relativeDir, name) : name;\n const loc = path.join(dir, name);\n const stat = await lstat(loc);\n\n files.push({\n relative,\n basename: name,\n absolute: loc,\n mtime: +stat.mtime,\n });\n\n if (stat.isDirectory()) {\n files = files.concat(await walk(loc, relative, ignoreBasenames));\n }\n }\n\n return files;\n}\n\nexport async function getFileSizeOnDisk(loc: string): Promise<number> {\n const stat = await lstat(loc);\n const {size, blksize: blockSize} = stat;\n\n return Math.ceil(size / blockSize) * blockSize;\n}\n\nexport function normalizeOS(body: string): string {\n return body.replace(/\\r\\n/g, '\\n');\n}\n\nconst cr = '\\r'.charCodeAt(0);\nconst lf = '\\n'.charCodeAt(0);\n\nasync function getEolFromFile(path: string): Promise<string | void> {\n if (!await exists(path)) {\n return undefined;\n }\n\n const buffer = await readFileBuffer(path);\n\n for (let i = 0; i < buffer.length; ++i) {\n if (buffer[i] === cr) {\n return '\\r\\n';\n }\n if (buffer[i] === lf) {\n return '\\n';\n }\n }\n return undefined;\n}\n\nexport async function writeFilePreservingEol(path: string, data: string): Promise<void> {\n const eol = (await getEolFromFile(path)) || os.EOL;\n if (eol !== '\\n') {\n data = data.replace(/\\n/g, eol);\n }\n await writeFile(path, data);\n}\n\nexport async function hardlinksWork(dir: string): Promise<boolean> {\n const filename = 'test-file' + Math.random();\n const file = path.join(dir, filename);\n const fileLink = path.join(dir, filename + '-link');\n try {\n await writeFile(file, 'test');\n await link(file, fileLink);\n } catch (err) {\n return false;\n } finally {\n await unlink(file);\n await unlink(fileLink);\n }\n return true;\n}\n\n// not a strict polyfill for Node's fs.mkdtemp\nexport async function makeTempDir(prefix?: string): Promise<string> {\n const dir = path.join(os.tmpdir(), `yarn-${prefix || ''}-${Date.now()}-${Math.random()}`);\n await unlink(dir);\n await mkdirp(dir);\n return dir;\n}\n\nexport async function readFirstAvailableStream(paths: Iterable<string>): Promise<?ReadStream> {\n for (const path of paths) {\n try {\n const fd = await open(path, 'r');\n return fs.createReadStream(path, {fd});\n } catch (err) {\n // Try the next one\n }\n }\n return null;\n}\n\nexport async function getFirstSuitableFolder(\n paths: Iterable<string>,\n mode: number = constants.W_OK | constants.X_OK, // eslint-disable-line no-bitwise\n): Promise<FolderQueryResult> {\n const result: FolderQueryResult = {\n skipped: [],\n folder: null,\n };\n\n for (const folder of paths) {\n try {\n await mkdirp(folder);\n await access(folder, mode);\n\n result.folder = folder;\n\n return result;\n } catch (error) {\n result.skipped.push({\n error,\n folder,\n });\n }\n }\n return result;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAoE;AAAA;AAAA;AAAA;AAAA;AAE7D,IAAMA,SAAS,GACpB,OAAOC,gBAAE,CAACD,SAAS,KAAK,WAAW,GAC/BC,gBAAE,CAACD,SAAS,GACZ;EACEE,IAAI,EAAED,gBAAE,CAACC,IAAI;EACbC,IAAI,EAAEF,gBAAE,CAACE,IAAI;EACbC,IAAI,EAAEH,gBAAE,CAACG;AACX,CAAC;AAAC;AAED,IAAMC,SAAS,GAAG,KAAIC,2BAAa,EAAC,SAAS,CAAC;AAAC;AAE/C,IAAMC,cAAc,GAAG,IAAAC,mBAAS,EAACP,gBAAE,CAACQ,QAAQ,CAAC;AAAC;AAC9C,IAAMC,IAA4E,GAAG,IAAAF,mBAAS,EAACP,gBAAE,CAACS,IAAI,CAAC;AAAC;AACxG,IAAMC,SAAmF,GAAG,IAAAH,mBAAS,EAC1GP,gBAAE,CAACU,SAAS,CACb;AAAC;AACK,IAAMC,QAAuD,GAAG,IAAAJ,mBAAS,EAACP,gBAAE,CAACW,QAAQ,CAAC;AAAC;AACvF,IAAMC,QAAuD,GAAG,IAAAL,mBAAS,EAACP,gBAAE,CAACY,QAAQ,CAAC;AAAC;AACvF,IAAMC,OAA6D,GAAG,IAAAN,mBAAS,EAACP,gBAAE,CAACa,OAAO,CAAC;AAAC;AAC5F,IAAMC,MAA2D,GAAG,IAAAP,mBAAS,EAACP,gBAAE,CAACc,MAAM,CAAC;AAAC;AACzF,IAAMC,MAAsD,GAAG,IAAAR,mBAAS,EAACP,gBAAE,CAACe,MAAM,CAAC;AAAC;AACpF,IAAMC,IAAyC,GAAG,IAAAT,mBAAS,EAACP,gBAAE,CAACgB,IAAI,CAAC;AAAC;AACrE,IAAMC,MAAuC,GAAG,IAAAV,mBAAS,EAACW,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAAC;AACrF,IAAMC,MAA0C,GAAG,IAAAZ,mBAAS,EAACP,gBAAE,CAACmB,MAAM,EAAE,IAAI,CAAC;AAAC;AAC9E,IAAMC,KAA0C,GAAG,IAAAb,mBAAS,EAACP,gBAAE,CAACoB,KAAK,CAAC;AAAC;AACvE,IAAMC,KAA6D,GAAG,IAAAd,mBAAS,EAACP,gBAAE,CAACqB,KAAK,CAAC;AAAC;AAC1F,IAAMC,IAAqD,GAAG,IAAAf,mBAAS,EAACP,gBAAE,CAACsB,IAAI,CAAC;AAAC;AACjF,IAAMC,IAAgE,GAAG,IAAAhB,mBAAS,EAACiB,kBAAU,CAAC;AAAC;AAGtG;AACA;AACA;AACA,IAAMC,sBAAsB,GAAGzB,gBAAE,CAAC0B,QAAQ,GAAG,GAAG,GAAG,CAAC;AAEpD,IAAMC,SAA8F,GAAG,IAAApB,mBAAS,EAC9GP,gBAAE,CAAC4B,OAAO,CACX;AACD,IAAMC,SAAS,GAAGX,OAAO,CAAC,WAAW,CAAC;AACtC,IAAMY,QAAQ,GAAGZ,OAAO,CAAC,WAAW,CAAC;AAErC,IAAMa,IAAI,GAAG,SAAPA,IAAI,GAAS,CAAC,CAAC;AAAC,SA+CPC,mBAAmB;EAAA;AAAA;AAAA;EAAA,yGAAlC,kBACEC,KAAgB,EAChBC,MAAmB,EACnBC,kBAA+B,EAC/BC,QAAkB;IAAA,sHAgDHC,KAAK;IAAA;MAAA;QAAA;UAAA;YAAA,2FAApB,iBAAqBC,IAAmB;cAAA;cAAA;gBAAA;kBAAA;oBAC/BC,GAAG,GAAgBD,IAAI,CAAvBC,GAAG,EAAEC,IAAI,GAAUF,IAAI,CAAlBE,IAAI,EAAEC,IAAI,GAAIH,IAAI,CAAZG,IAAI;oBAChBC,OAAO,GAAGJ,IAAI,CAACI,OAAO,IAAIX,IAAI;oBAC9BY,OAAM,GAAGL,IAAI,CAACK,MAAM,IAAIZ,IAAI,EAElC;oBACA;oBACA,IAAIa,KAAK,CAACC,GAAG,CAACL,IAAI,CAACM,WAAW,EAAE,CAAC,EAAE;sBACjCV,QAAQ,CAACW,OAAO,qCAA8BP,IAAI,iDAA8C;oBAClG,CAAC,MAAM;sBACLI,KAAK,CAACI,GAAG,CAACR,IAAI,CAACM,WAAW,EAAE,CAAC;oBAC/B;oBAAC,MAEGL,IAAI,KAAK,SAAS;sBAAA;sBAAA;oBAAA;oBAAA;oBAAA,OACdxB,MAAM,CAACgC,mBAAI,CAACC,OAAO,CAACV,IAAI,CAAC,CAAC;kBAAA;oBAChCE,OAAO,EAAE;oBACTS,OAAO,CAACvB,OAAO,CAACwB,IAAI,CAAC;sBACnBZ,IAAI,EAAJA,IAAI;sBACJa,QAAQ,EAAEd;oBACZ,CAAC,CAAC;oBACFI,OAAM,EAAE;oBAAC;kBAAA;oBAAA,MAIPT,MAAM,CAACoB,eAAe,CAACC,OAAO,CAACN,mBAAI,CAACO,QAAQ,CAACjB,GAAG,CAAC,CAAC,IAAI,CAAC;sBAAA;sBAAA;oBAAA;oBAAA;kBAAA;oBAAA;oBAAA,OAKrCnB,KAAK,CAACmB,GAAG,CAAC;kBAAA;oBAA1BkB,OAAO;oBAAA,KAGTA,OAAO,CAACC,WAAW,EAAE;sBAAA;sBAAA;oBAAA;oBAAA;oBAAA,OACN7C,OAAO,CAAC0B,GAAG,CAAC;kBAAA;oBAA7BoB,QAAQ;kBAAA;oBAAA;oBAAA;oBAAA,OAMSvC,KAAK,CAACoB,IAAI,CAAC;kBAAA;oBAA5BoB,QAAQ;oBAAA;oBAAA;kBAAA;oBAAA;oBAAA;oBAAA,MAGJ,aAAEC,IAAI,KAAK,QAAQ;sBAAA;sBAAA;oBAAA;oBAAA;kBAAA;oBAAA,KAMrBD,QAAQ;sBAAA;sBAAA;oBAAA;oBACJE,YAAY,GAAGL,OAAO,CAACM,cAAc,EAAE,IAAIH,QAAQ,CAACG,cAAc,EAAE;oBACpEC,WAAW,GAAGP,OAAO,CAACC,WAAW,EAAE,IAAIE,QAAQ,CAACF,WAAW,EAAE;oBAC7DO,SAAS,GAAGR,OAAO,CAACS,MAAM,EAAE,IAAIN,QAAQ,CAACM,MAAM,EAAE,EAEvD;oBACA;oBAEA;AACN;AACA;AACA;AACA;oBAJM,MAMID,SAAS,IAAIE,aAAa,CAACtB,GAAG,CAACL,IAAI,CAAC;sBAAA;sBAAA;oBAAA;oBACtC;oBACAG,OAAM,EAAE;oBACRP,QAAQ,CAACW,OAAO,CAACX,QAAQ,CAACgC,IAAI,CAAC,yBAAyB,EAAE7B,GAAG,CAAC,CAAC;oBAAC;kBAAA;oBAAA,MAI9D0B,SAAS,IAAIR,OAAO,CAACY,IAAI,KAAKT,QAAQ,CAACS,IAAI,IAAI,IAAAC,8BAAc,EAACb,OAAO,CAACc,KAAK,EAAEX,QAAQ,CAACW,KAAK,CAAC;sBAAA;sBAAA;oBAAA;oBAC9F;oBACA5B,OAAM,EAAE;oBACRP,QAAQ,CAACW,OAAO,CAACX,QAAQ,CAACgC,IAAI,CAAC,iBAAiB,EAAE7B,GAAG,EAAEC,IAAI,EAAEiB,OAAO,CAACY,IAAI,EAAE,CAACZ,OAAO,CAACc,KAAK,CAAC,CAAC;oBAAC;kBAAA;oBAAA,KAI1FT,YAAY;sBAAA;sBAAA;oBAAA;oBAAA;oBAAA,OACYnD,QAAQ,CAAC4B,GAAG,CAAC;kBAAA;oBAAjCiC,WAAW;oBAAA,eACbA,WAAW;oBAAA;oBAAA,OAAY7D,QAAQ,CAAC6B,IAAI,CAAC;kBAAA;oBAAA;oBAAA;sBAAA;sBAAA;oBAAA;oBACvC;oBACAG,OAAM,EAAE;oBACRP,QAAQ,CAACW,OAAO,CAACX,QAAQ,CAACgC,IAAI,CAAC,wBAAwB,EAAE7B,GAAG,EAAEC,IAAI,EAAEgC,WAAW,CAAC,CAAC;oBAAC;kBAAA;oBAAA,KAKlFR,WAAW;sBAAA;sBAAA;oBAAA;oBAAA;oBAAA,OAEWnD,OAAO,CAAC2B,IAAI,CAAC;kBAAA;oBAA/BiC,SAAS;oBACf5C,SAAS,CAAC8B,QAAQ,EAAE,2BAA2B,CAAC;oBAAC,wCAE9Bc,SAAS;oBAAA;oBAAA;kBAAA;oBAAA;sBAAA;sBAAA;oBAAA;oBAAjBC,KAAI;oBAAA,MACTf,QAAQ,CAACJ,OAAO,CAACmB,KAAI,CAAC,GAAG,CAAC;sBAAA;sBAAA;oBAAA;oBACtBC,IAAG,GAAG1B,mBAAI,CAAC2B,IAAI,CAACpC,IAAI,EAAEkC,KAAI,CAAC;oBACjCvC,kBAAkB,CAACa,GAAG,CAAC2B,IAAG,CAAC;oBAAC;oBAAA,OAEjBvD,KAAK,CAACuD,IAAG,CAAC;kBAAA;oBAAA,oBAAEjB,WAAW;sBAAA;sBAAA;oBAAA;oBAAA;oBAAA;oBAAA,OACP7C,OAAO,CAAC8D,IAAG,CAAC;kBAAA;oBAAA;oBAAA;oBAAA;sBAArC,uDAAuC;wBAA5BD,MAAI;wBACbvC,kBAAkB,CAACa,GAAG,CAACC,mBAAI,CAAC2B,IAAI,CAACD,IAAG,EAAED,MAAI,CAAC,CAAC;sBAC9C;oBAAC;sBAAA;oBAAA;sBAAA;oBAAA;kBAAA;oBAAA;oBAAA;kBAAA;oBAAA;oBAAA;kBAAA;oBAAA;oBAAA;oBAAA;kBAAA;oBAAA;oBAAA;oBAAA;kBAAA;oBAAA,MAOPd,QAAQ,IAAIA,QAAQ,CAACG,cAAc,EAAE;sBAAA;sBAAA;oBAAA;oBAAA;oBAAA,OACjC,IAAAc,sBAAM,EAACrC,IAAI,CAAC;kBAAA;oBAClBoB,QAAQ,GAAG,IAAI;kBAAC;oBAAA,KAGdH,OAAO,CAACM,cAAc,EAAE;sBAAA;sBAAA;oBAAA;oBAC1BrB,OAAO,EAAE;oBAAC;oBAAA,OACa/B,QAAQ,CAAC4B,GAAG,CAAC;kBAAA;oBAA9Bc,QAAQ;oBACdF,OAAO,CAACvB,OAAO,CAACwB,IAAI,CAAC;sBACnBZ,IAAI,EAAJA,IAAI;sBACJa,QAAQ,EAARA;oBACF,CAAC,CAAC;oBACFV,OAAM,EAAE;oBAAC;oBAAA;kBAAA;oBAAA,KACAc,OAAO,CAACC,WAAW,EAAE;sBAAA;sBAAA;oBAAA;oBAAA,IACzBE,QAAQ;sBAAA;sBAAA;oBAAA;oBACXxB,QAAQ,CAACW,OAAO,CAACX,QAAQ,CAACgC,IAAI,CAAC,mBAAmB,EAAE5B,IAAI,CAAC,CAAC;oBAAC;oBAAA,OACrDvB,MAAM,CAACuB,IAAI,CAAC;kBAAA;oBAGdsC,SAAS,GAAGtC,IAAI,CAACuC,KAAK,CAAC9B,mBAAI,CAAC+B,GAAG,CAAC;oBACtC,OAAOF,SAAS,CAACG,MAAM,EAAE;sBACvBrC,KAAK,CAACI,GAAG,CAAC8B,SAAS,CAACF,IAAI,CAAC3B,mBAAI,CAAC+B,GAAG,CAAC,CAAClC,WAAW,EAAE,CAAC;sBACjDgC,SAAS,CAACI,GAAG,EAAE;oBACjB;;oBAEA;oBACArD,SAAS,CAAC8B,QAAQ,EAAE,2BAA2B,CAAC;oBAC5CwB,SAAS,GAAGxB,QAAQ,CAACsB,MAAM;oBAC/B,IAAI,CAACE,SAAS,EAAE;sBACdxC,OAAM,EAAE;oBACV;oBAAC,wCACkBgB,QAAQ;oBAAA;sBAA3B,uDAA6B;wBAAlBe,MAAI;wBACbzC,KAAK,CAACmB,IAAI,CAAC;0BACTZ,IAAI,EAAES,mBAAI,CAAC2B,IAAI,CAACpC,IAAI,EAAEkC,MAAI,CAAC;0BAC3BhC,OAAO,EAAPA,OAAO;0BACPC,MAAM,EAAE,kBAAM;4BACZ,IAAI,EAAEwC,SAAS,KAAK,CAAC,EAAE;8BACrBxC,OAAM,EAAE;4BACV;0BACF,CAAC;0BACDJ,GAAG,EAAEU,mBAAI,CAAC2B,IAAI,CAACrC,GAAG,EAAEmC,MAAI;wBAC1B,CAAC,CAAC;sBACJ;oBAAC;sBAAA;oBAAA;sBAAA;oBAAA;oBAAA;oBAAA;kBAAA;oBAAA,KACQjB,OAAO,CAACS,MAAM,EAAE;sBAAA;sBAAA;oBAAA;oBACzBxB,OAAO,EAAE;oBACTS,OAAO,CAACuB,IAAI,CAACtB,IAAI,CAAC;sBAChBb,GAAG,EAAHA,GAAG;sBACHC,IAAI,EAAJA,IAAI;sBACJ4C,KAAK,EAAE3B,OAAO,CAAC2B,KAAK;sBACpBb,KAAK,EAAEd,OAAO,CAACc,KAAK;sBACpBc,IAAI,EAAE5B,OAAO,CAAC4B;oBAChB,CAAC,CAAC;oBACF1C,OAAM,EAAE;oBAAC;oBAAA;kBAAA;oBAAA,MAEH,IAAI2C,KAAK,oCAA6B/C,GAAG,EAAG;kBAAA;kBAAA;oBAAA;gBAAA;cAAA;YAAA,CAErD;YAAA;UAAA;UAlKcF,KAAK;YAAA;UAAA;UA9Cd8B,aAA0B,GAAG,IAAIoB,GAAG,CAACrD,MAAM,CAACiC,aAAa,IAAI,EAAE,CAAC;UAChEvB,KAAkB,GAAG,IAAI2C,GAAG,EAAE,EAEpC;UAAA,uCACmBtD,KAAK;UAAA;UAAA;YAAA;YAAA;cAAA;gBAAA;kBAAbuD,IAAI;kBACP7C,MAAM,GAAG6C,IAAI,CAAC7C,MAAM;kBAC1B6C,IAAI,CAAC7C,MAAM,GAAG,YAAM;oBAClBT,MAAM,CAACuD,UAAU,CAACD,IAAI,CAAChD,IAAI,CAAC;oBAC5B,IAAIG,MAAM,EAAE;sBACVA,MAAM,EAAE;oBACV;kBACF,CAAC;gBAAC;gBAAA;kBAAA;cAAA;YAAA;UAAA;UAAA;QAAA;UAAA;YAAA;YAAA;UAAA;UAAA;QAAA;UAAA;UAAA;QAAA;UAAA;UAAA;QAAA;UAAA;UAAA;UAAA;QAAA;UAAA;UAAA;UAAA;QAAA;UAEJT,MAAM,CAACwD,OAAO,CAACzD,KAAK,CAACgD,MAAM,CAAC;;UAE5B;UACM9B,OAAoB,GAAG;YAC3BuB,IAAI,EAAE,EAAE;YACR9C,OAAO,EAAE,EAAE;YACXN,IAAI,EAAE;UACR,CAAC,EAED;UACA;QAAA;UAAA,KACOW,KAAK,CAACgD,MAAM;YAAA;YAAA;UAAA;UACXU,KAAK,GAAG1D,KAAK,CAAC2D,MAAM,CAAC,CAAC,EAAEnE,sBAAsB,CAAC;UAAA;UAAA,OAC/CoE,OAAO,CAACC,GAAG,CAACH,KAAK,CAACI,GAAG,CAAC1D,KAAK,CAAC,CAAC;QAAA;UAAA;UAAA;QAAA;UAGrC;UAAA,wCACmB8B,aAAa;UAAA;YAAhC,uDAAkC;cAAvBO,IAAI;cACb,IAAIvC,kBAAkB,CAACU,GAAG,CAAC6B,IAAI,CAAC,EAAE;gBAChCtC,QAAQ,CAACW,OAAO,CAACX,QAAQ,CAACgC,IAAI,CAAC,8BAA8B,EAAEM,IAAI,CAAC,CAAC;gBACrEvC,kBAAkB,UAAO,CAACuC,IAAI,CAAC;cACjC;YACF;UAAC;YAAA;UAAA;YAAA;UAAA;UAAA,wCAEiBvC,kBAAkB;UAAA;YAApC,uDAAsC;cAA3BwC,GAAG;cACZ,IAAI/B,KAAK,CAACC,GAAG,CAAC8B,GAAG,CAAC7B,WAAW,EAAE,CAAC,EAAE;gBAChCX,kBAAkB,UAAO,CAACwC,GAAG,CAAC;cAChC;YACF;UAAC;YAAA;UAAA;YAAA;UAAA;UAAA,kCAEMxB,OAAO;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CAsKf;EAAA;AAAA;AAAA,SAEc6C,uBAAuB;EAAA;AAAA;AAAA;EAAA,6GAAtC,kBACE/D,KAAgB,EAChBC,MAAmB,EACnBC,kBAA+B,EAC/BC,QAAkB;IAAA,yHA8CHC,KAAK;IAAA;MAAA;QAAA;UAAA;YAAA,4FAApB,kBAAqBC,IAAmB;cAAA;cAAA;gBAAA;kBAAA;oBAC/BC,GAAG,GAAUD,IAAI,CAAjBC,GAAG,EAAEC,IAAI,GAAIF,IAAI,CAAZE,IAAI;oBACVE,OAAO,GAAGJ,IAAI,CAACI,OAAO,IAAIX,IAAI;oBAC9BY,QAAM,GAAGL,IAAI,CAACK,MAAM,IAAIZ,IAAI;oBAAA,KAC9Ba,KAAK,CAACC,GAAG,CAACL,IAAI,CAACM,WAAW,EAAE,CAAC;sBAAA;sBAAA;oBAAA;oBAC/B;oBACA;oBACA;oBACA;oBACA;oBACAH,QAAM,EAAE;oBAAC;kBAAA;oBAGXC,KAAK,CAACI,GAAG,CAACR,IAAI,CAACM,WAAW,EAAE,CAAC;oBAAC,MAE1BZ,MAAM,CAACoB,eAAe,CAACC,OAAO,CAACN,mBAAI,CAACO,QAAQ,CAACjB,GAAG,CAAC,CAAC,IAAI,CAAC;sBAAA;sBAAA;oBAAA;oBAAA;kBAAA;oBAAA;oBAAA,OAKrCnB,KAAK,CAACmB,GAAG,CAAC;kBAAA;oBAA1BkB,OAAO;oBAAA,KAGTA,OAAO,CAACC,WAAW,EAAE;sBAAA;sBAAA;oBAAA;oBAAA;oBAAA,OACN7C,OAAO,CAAC0B,GAAG,CAAC;kBAAA;oBAA7BoB,QAAQ;kBAAA;oBAAA;oBAAA,OAGexC,MAAM,CAACqB,IAAI,CAAC;kBAAA;oBAA/ByD,UAAU;oBAAA,KACZA,UAAU;sBAAA;sBAAA;oBAAA;oBAAA;oBAAA,OACW7E,KAAK,CAACoB,IAAI,CAAC;kBAAA;oBAA5BoB,QAAQ;oBAERE,YAAY,GAAGL,OAAO,CAACM,cAAc,EAAE,IAAIH,QAAQ,CAACG,cAAc,EAAE;oBACpEC,WAAW,GAAGP,OAAO,CAACC,WAAW,EAAE,IAAIE,QAAQ,CAACF,WAAW,EAAE;oBAC7DO,SAAS,GAAGR,OAAO,CAACS,MAAM,EAAE,IAAIN,QAAQ,CAACM,MAAM,EAAE;oBAAA,MAEnDT,OAAO,CAAC4B,IAAI,KAAKzB,QAAQ,CAACyB,IAAI;sBAAA;sBAAA;oBAAA;oBAAA;oBAAA;oBAAA,OAExBtE,MAAM,CAACyB,IAAI,EAAEiB,OAAO,CAAC4B,IAAI,CAAC;kBAAA;oBAAA;oBAAA;kBAAA;oBAAA;oBAAA;oBAEhC;oBACA;oBACAjD,QAAQ,CAACW,OAAO,cAAK;kBAAC;oBAAA,MAItBkB,SAAS,IAAIE,aAAa,CAACtB,GAAG,CAACL,IAAI,CAAC;sBAAA;sBAAA;oBAAA;oBACtC;oBACAG,QAAM,EAAE;oBACRP,QAAQ,CAACW,OAAO,CAACX,QAAQ,CAACgC,IAAI,CAAC,yBAAyB,EAAE7B,GAAG,CAAC,CAAC;oBAAC;kBAAA;oBAAA,MAK9D0B,SAAS,IAAIR,OAAO,CAACyC,GAAG,KAAK,IAAI,IAAIzC,OAAO,CAACyC,GAAG,KAAKtC,QAAQ,CAACsC,GAAG;sBAAA;sBAAA;oBAAA;oBACnEvD,QAAM,EAAE;oBACRP,QAAQ,CAACW,OAAO,CAACX,QAAQ,CAACgC,IAAI,CAAC,iBAAiB,EAAE7B,GAAG,EAAEC,IAAI,EAAEiB,OAAO,CAACyC,GAAG,CAAC,CAAC;oBAAC;kBAAA;oBAAA,KAIzEpC,YAAY;sBAAA;sBAAA;oBAAA;oBAAA;oBAAA,OACYnD,QAAQ,CAAC4B,GAAG,CAAC;kBAAA;oBAAjCiC,WAAW;oBAAA,eACbA,WAAW;oBAAA;oBAAA,OAAY7D,QAAQ,CAAC6B,IAAI,CAAC;kBAAA;oBAAA;oBAAA;sBAAA;sBAAA;oBAAA;oBACvC;oBACAG,QAAM,EAAE;oBACRP,QAAQ,CAACW,OAAO,CAACX,QAAQ,CAACgC,IAAI,CAAC,wBAAwB,EAAE7B,GAAG,EAAEC,IAAI,EAAEgC,WAAW,CAAC,CAAC;oBAAC;kBAAA;oBAAA,KAKlFR,WAAW;sBAAA;sBAAA;oBAAA;oBAAA;oBAAA,OAEWnD,OAAO,CAAC2B,IAAI,CAAC;kBAAA;oBAA/BiC,SAAS;oBACf5C,SAAS,CAAC8B,QAAQ,EAAE,2BAA2B,CAAC;oBAAC,yCAE9Bc,SAAS;oBAAA;oBAAA;kBAAA;oBAAA;sBAAA;sBAAA;oBAAA;oBAAjBC,MAAI;oBAAA,MACTf,QAAQ,CAACJ,OAAO,CAACmB,MAAI,CAAC,GAAG,CAAC;sBAAA;sBAAA;oBAAA;oBACtBC,KAAG,GAAG1B,mBAAI,CAAC2B,IAAI,CAACpC,IAAI,EAAEkC,MAAI,CAAC;oBACjCvC,kBAAkB,CAACa,GAAG,CAAC2B,KAAG,CAAC;oBAAC;oBAAA,OAEjBvD,KAAK,CAACuD,KAAG,CAAC;kBAAA;oBAAA,oBAAEjB,WAAW;sBAAA;sBAAA;oBAAA;oBAAA;oBAAA;oBAAA,OACP7C,OAAO,CAAC8D,KAAG,CAAC;kBAAA;oBAAA;oBAAA;oBAAA;sBAArC,0DAAuC;wBAA5BD,MAAI;wBACbvC,kBAAkB,CAACa,GAAG,CAACC,mBAAI,CAAC2B,IAAI,CAACD,KAAG,EAAED,MAAI,CAAC,CAAC;sBAC9C;oBAAC;sBAAA;oBAAA;sBAAA;oBAAA;kBAAA;oBAAA;oBAAA;kBAAA;oBAAA;oBAAA;kBAAA;oBAAA;oBAAA;oBAAA;kBAAA;oBAAA;oBAAA;oBAAA;kBAAA;oBAAA,KAOPjB,OAAO,CAACM,cAAc,EAAE;sBAAA;sBAAA;oBAAA;oBAC1BrB,OAAO,EAAE;oBAAC;oBAAA,OACa/B,QAAQ,CAAC4B,GAAG,CAAC;kBAAA;oBAA9Bc,QAAQ;oBACdF,OAAO,CAACvB,OAAO,CAACwB,IAAI,CAAC;sBACnBZ,IAAI,EAAJA,IAAI;sBACJa,QAAQ,EAARA;oBACF,CAAC,CAAC;oBACFV,QAAM,EAAE;oBAAC;oBAAA;kBAAA;oBAAA,KACAc,OAAO,CAACC,WAAW,EAAE;sBAAA;sBAAA;oBAAA;oBAC9BtB,QAAQ,CAACW,OAAO,CAACX,QAAQ,CAACgC,IAAI,CAAC,mBAAmB,EAAE5B,IAAI,CAAC,CAAC;oBAAC;oBAAA,OACrDvB,MAAM,CAACuB,IAAI,CAAC;kBAAA;oBAEZsC,SAAS,GAAGtC,IAAI,CAACuC,KAAK,CAAC9B,mBAAI,CAAC+B,GAAG,CAAC;oBACtC,OAAOF,SAAS,CAACG,MAAM,EAAE;sBACvBrC,KAAK,CAACI,GAAG,CAAC8B,SAAS,CAACF,IAAI,CAAC3B,mBAAI,CAAC+B,GAAG,CAAC,CAAClC,WAAW,EAAE,CAAC;sBACjDgC,SAAS,CAACI,GAAG,EAAE;oBACjB;;oBAEA;oBACArD,SAAS,CAAC8B,QAAQ,EAAE,2BAA2B,CAAC;oBAC5CwB,SAAS,GAAGxB,QAAQ,CAACsB,MAAM;oBAC/B,IAAI,CAACE,SAAS,EAAE;sBACdxC,QAAM,EAAE;oBACV;oBAAC,yCACkBgB,QAAQ;oBAAA;sBAA3B,0DAA6B;wBAAlBe,MAAI;wBACbzC,KAAK,CAACmB,IAAI,CAAC;0BACTV,OAAO,EAAPA,OAAO;0BACPH,GAAG,EAAEU,mBAAI,CAAC2B,IAAI,CAACrC,GAAG,EAAEmC,MAAI,CAAC;0BACzBlC,IAAI,EAAES,mBAAI,CAAC2B,IAAI,CAACpC,IAAI,EAAEkC,MAAI,CAAC;0BAC3B/B,MAAM,EAAE,kBAAM;4BACZ,IAAI,EAAEwC,SAAS,KAAK,CAAC,EAAE;8BACrBxC,QAAM,EAAE;4BACV;0BACF;wBACF,CAAC,CAAC;sBACJ;oBAAC;sBAAA;oBAAA;sBAAA;oBAAA;oBAAA;oBAAA;kBAAA;oBAAA,KACQc,OAAO,CAACS,MAAM,EAAE;sBAAA;sBAAA;oBAAA;oBACzBxB,OAAO,EAAE;oBACTS,OAAO,CAAC7B,IAAI,CAAC8B,IAAI,CAAC;sBAChBb,GAAG,EAAHA,GAAG;sBACHC,IAAI,EAAJA,IAAI;sBACJ2D,UAAU,EAAEF;oBACd,CAAC,CAAC;oBACFtD,QAAM,EAAE;oBAAC;oBAAA;kBAAA;oBAAA,MAEH,IAAI2C,KAAK,oCAA6B/C,GAAG,EAAG;kBAAA;kBAAA;oBAAA;gBAAA;cAAA;YAAA,CAErD;YAAA;UAAA;UAxIcF,KAAK;YAAA;UAAA;UA5Cd8B,aAA0B,GAAG,IAAIoB,GAAG,CAACrD,MAAM,CAACiC,aAAa,IAAI,EAAE,CAAC;UAChEvB,KAAkB,GAAG,IAAI2C,GAAG,EAAE,EAEpC;UAAA,wCACmBtD,KAAK;UAAA;UAAA;YAAA;YAAA;cAAA;gBAAA;kBAAbuD,IAAI;kBACP7C,MAAM,GAAG6C,IAAI,CAAC7C,MAAM,IAAIZ,IAAI;kBAClCyD,IAAI,CAAC7C,MAAM,GAAG,YAAM;oBAClBT,MAAM,CAACuD,UAAU,CAACD,IAAI,CAAChD,IAAI,CAAC;oBAC5BG,MAAM,EAAE;kBACV,CAAC;gBAAC;gBAAA;kBAAA;cAAA;YAAA;UAAA;UAAA;QAAA;UAAA;YAAA;YAAA;UAAA;UAAA;QAAA;UAAA;UAAA;QAAA;UAAA;UAAA;QAAA;UAAA;UAAA;UAAA;QAAA;UAAA;UAAA;UAAA;QAAA;UAEJT,MAAM,CAACwD,OAAO,CAACzD,KAAK,CAACgD,MAAM,CAAC;;UAE5B;UACM9B,OAAoB,GAAG;YAC3BuB,IAAI,EAAE,EAAE;YACR9C,OAAO,EAAE,EAAE;YACXN,IAAI,EAAE;UACR,CAAC,EAED;UACA;QAAA;UAAA,KACOW,KAAK,CAACgD,MAAM;YAAA;YAAA;UAAA;UACXU,KAAK,GAAG1D,KAAK,CAAC2D,MAAM,CAAC,CAAC,EAAEnE,sBAAsB,CAAC;UAAA;UAAA,OAC/CoE,OAAO,CAACC,GAAG,CAACH,KAAK,CAACI,GAAG,CAAC1D,KAAK,CAAC,CAAC;QAAA;UAAA;UAAA;QAAA;UAGrC;UAAA,wCACmB8B,aAAa;UAAA;YAAhC,uDAAkC;cAAvBO,IAAI;cACb,IAAIvC,kBAAkB,CAACU,GAAG,CAAC6B,IAAI,CAAC,EAAE;gBAChCtC,QAAQ,CAACW,OAAO,CAACX,QAAQ,CAACgC,IAAI,CAAC,8BAA8B,EAAEM,IAAI,CAAC,CAAC;gBACrEvC,kBAAkB,UAAO,CAACuC,IAAI,CAAC;cACjC;YACF;UAAC;YAAA;UAAA;YAAA;UAAA;UAAA,wCAEiBvC,kBAAkB;UAAA;YAApC,uDAAsC;cAA3BwC,GAAG;cACZ,IAAI/B,KAAK,CAACC,GAAG,CAAC8B,GAAG,CAAC7B,WAAW,EAAE,CAAC,EAAE;gBAChCX,kBAAkB,UAAO,CAACwC,GAAG,CAAC;cAChC;YACF;UAAC;YAAA;UAAA;YAAA;UAAA;UAAA,kCAEMxB,OAAO;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CA4If;EAAA;AAAA;AAEM,SAASiD,IAAI,CAAC7D,GAAW,EAAEC,IAAY,EAAEJ,QAAkB,EAAiB;EACjF,OAAOiE,QAAQ,CAAC,CAAC;IAAC9D,GAAG,EAAHA,GAAG;IAAEC,IAAI,EAAJA;EAAI,CAAC,CAAC,EAAEJ,QAAQ,CAAC;AAC1C;AAAC,SAEqBiE,QAAQ;EAAA;AAAA;AAAA;EAAA,8FAAvB,kBACLpE,KAAgB,EAChBG,QAAkB,EAClBkE,OAMC;IAAA;IAAA;MAAA;QAAA;UAEKpE,MAAmB,GAAG;YAC1BwD,OAAO,EAAGY,OAAO,IAAIA,OAAO,CAACZ,OAAO,IAAK3D,IAAI;YAC7C0D,UAAU,EAAGa,OAAO,IAAIA,OAAO,CAACb,UAAU,IAAK1D,IAAI;YACnDI,kBAAkB,EAAEmE,OAAO,GAAGA,OAAO,CAACnE,kBAAkB,GAAG,IAAIoD,GAAG,EAAE;YACpEjC,eAAe,EAAGgD,OAAO,IAAIA,OAAO,CAAChD,eAAe,IAAK,EAAE;YAC3Da,aAAa,EAAGmC,OAAO,IAAIA,OAAO,CAACnC,aAAa,IAAK;UACvD,CAAC;UAAA;UAAA,OAEkCnC,mBAAmB,CAACC,KAAK,EAAEC,MAAM,EAAEA,MAAM,CAACC,kBAAkB,EAAEC,QAAQ,CAAC;QAAA;UAApGe,OAAoB;UAC1BjB,MAAM,CAACwD,OAAO,CAACvC,OAAO,CAACuB,IAAI,CAACO,MAAM,GAAG9B,OAAO,CAACvB,OAAO,CAACqD,MAAM,GAAG9B,OAAO,CAAC7B,IAAI,CAAC2D,MAAM,CAAC;UAE5EsB,WAAkC,GAAGpD,OAAO,CAACuB,IAAI;UAEjD8B,gBAA4C,GAAG,IAAIC,GAAG,EAAE;UAAA;UAAA,OAExDC,OAAO,GAACzE,KAAK,CACjBsE,WAAW;YAAA,6FACX,kBAAOjE,IAAoB;cAAA;cAAA;gBAAA;kBAAA;oBAAA,MAEjBqE,YAAY,GAAGH,gBAAgB,CAACI,GAAG,CAACtE,IAAI,CAACE,IAAI,CAAC;sBAAA;sBAAA;oBAAA;oBAAA;oBAAA,OAC9CmE,YAAY;kBAAA;oBAAA;oBAAA;kBAAA;oBAGpBvE,QAAQ,CAACW,OAAO,CAACX,QAAQ,CAACgC,IAAI,CAAC,iBAAiB,EAAE9B,IAAI,CAACC,GAAG,EAAED,IAAI,CAACE,IAAI,CAAC,CAAC;oBACjEqE,MAAM,GAAG,IAAAnF,wBAAQ,EAACY,IAAI,EAAE;sBAAA,OAAMkE,gBAAgB,UAAO,CAAClE,IAAI,CAACE,IAAI,CAAC;oBAAA,EAAC;oBACvEgE,gBAAgB,CAACM,GAAG,CAACxE,IAAI,CAACE,IAAI,EAAEqE,MAAM,CAAC;oBACvC3E,MAAM,CAACuD,UAAU,CAACnD,IAAI,CAACE,IAAI,CAAC;oBAAC,kCACtBqE,MAAM;kBAAA;kBAAA;oBAAA;gBAAA;cAAA;YAAA,CACd;YAAA;cAAA;YAAA;UAAA,KACDpF,sBAAsB,CACvB;QAAA;UAED;UACMsF,cAAwC,GAAG5D,OAAO,CAACvB,OAAO;UAAA;UAAA,OAC1D8E,OAAO,GAACzE,KAAK,CAAC8E,cAAc,EAAE,UAACzE,IAAI,EAAoB;YAC3D,IAAMe,QAAQ,GAAGJ,mBAAI,CAAC+D,OAAO,CAAC/D,mBAAI,CAACC,OAAO,CAACZ,IAAI,CAACE,IAAI,CAAC,EAAEF,IAAI,CAACe,QAAQ,CAAC;YACrEjB,QAAQ,CAACW,OAAO,CAACX,QAAQ,CAACgC,IAAI,CAAC,oBAAoB,EAAE9B,IAAI,CAACE,IAAI,EAAEa,QAAQ,CAAC,CAAC;YAC1E,OAAOzB,OAAO,CAACyB,QAAQ,EAAEf,IAAI,CAACE,IAAI,CAAC;UACrC,CAAC,CAAC;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CACH;EAAA;AAAA;AAAA,SAEqByE,YAAY;EAAA;AAAA;AAAA;EAAA,kGAA3B,kBACLhF,KAAgB,EAChBG,QAAkB,EAClBkE,OAKC;IAAA;IAAA;MAAA;QAAA;UAEKpE,MAAmB,GAAG;YAC1BwD,OAAO,EAAGY,OAAO,IAAIA,OAAO,CAACZ,OAAO,IAAK3D,IAAI;YAC7C0D,UAAU,EAAGa,OAAO,IAAIA,OAAO,CAACb,UAAU,IAAK1D,IAAI;YACnDI,kBAAkB,EAAEmE,OAAO,GAAGA,OAAO,CAACnE,kBAAkB,GAAG,IAAIoD,GAAG,EAAE;YACpEpB,aAAa,EAAGmC,OAAO,IAAIA,OAAO,CAACnC,aAAa,IAAK,EAAE;YACvDb,eAAe,EAAE;UACnB,CAAC;UAAA;UAAA,OAEkC0C,uBAAuB,CAAC/D,KAAK,EAAEC,MAAM,EAAEA,MAAM,CAACC,kBAAkB,EAAEC,QAAQ,CAAC;QAAA;UAAxGe,OAAoB;UAC1BjB,MAAM,CAACwD,OAAO,CAACvC,OAAO,CAACuB,IAAI,CAACO,MAAM,GAAG9B,OAAO,CAACvB,OAAO,CAACqD,MAAM,GAAG9B,OAAO,CAAC7B,IAAI,CAAC2D,MAAM,CAAC;UAE5EsB,WAAkC,GAAGpD,OAAO,CAAC7B,IAAI;UAAA;UAAA,OAEjDoF,OAAO,GAACzE,KAAK,CACjBsE,WAAW;YAAA,8FACX,kBAAOjE,IAAI;cAAA;gBAAA;kBAAA;oBACTF,QAAQ,CAACW,OAAO,CAACX,QAAQ,CAACgC,IAAI,CAAC,iBAAiB,EAAE9B,IAAI,CAACC,GAAG,EAAED,IAAI,CAACE,IAAI,CAAC,CAAC;oBAAC,KACpEF,IAAI,CAAC6D,UAAU;sBAAA;sBAAA;oBAAA;oBAAA;oBAAA,OACX,IAAAtB,sBAAM,EAACvC,IAAI,CAACE,IAAI,CAAC;kBAAA;oBAAA;oBAAA,OAEnBlB,IAAI,CAACgB,IAAI,CAACC,GAAG,EAAED,IAAI,CAACE,IAAI,CAAC;kBAAA;kBAAA;oBAAA;gBAAA;cAAA;YAAA,CAChC;YAAA;cAAA;YAAA;UAAA,KACDf,sBAAsB,CACvB;QAAA;UAED;UACMsF,cAAwC,GAAG5D,OAAO,CAACvB,OAAO;UAAA;UAAA,OAC1D8E,OAAO,GAACzE,KAAK,CAAC8E,cAAc,EAAE,UAACzE,IAAI,EAAoB;YAC3D,IAAMe,QAAQ,GAAGJ,mBAAI,CAAC+D,OAAO,CAAC/D,mBAAI,CAACC,OAAO,CAACZ,IAAI,CAACE,IAAI,CAAC,EAAEF,IAAI,CAACe,QAAQ,CAAC;YACrEjB,QAAQ,CAACW,OAAO,CAACX,QAAQ,CAACgC,IAAI,CAAC,oBAAoB,EAAE9B,IAAI,CAACE,IAAI,EAAEa,QAAQ,CAAC,CAAC;YAC1E,OAAOzB,OAAO,CAACyB,QAAQ,EAAEf,IAAI,CAACE,IAAI,CAAC;UACrC,CAAC,CAAC;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CACH;EAAA;AAAA;AAED,SAAS0E,SAAS,CAACvC,GAAW,EAAEwC,QAAgB,EAAgB;EAC9D,OAAO,IAAItB,OAAO,CAAC,UAACmB,OAAO,EAAEI,MAAM,EAAK;IACtCpH,gBAAE,CAACQ,QAAQ,CAACmE,GAAG,EAAEwC,QAAQ,EAAE,UAASE,GAAG,EAAEC,OAAO,EAAE;MAChD,IAAID,GAAG,EAAE;QACPD,MAAM,CAACC,GAAG,CAAC;MACb,CAAC,MAAM;QACLL,OAAO,CAACM,OAAO,CAAC;MAClB;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAEO,SAAS9G,QAAQ,CAACmE,GAAW,EAAmB;EACrD,OAAOuC,SAAS,CAACvC,GAAG,EAAE,MAAM,CAAC,CAAC4C,IAAI,CAACC,WAAW,CAAC;AACjD;AAEO,SAASC,WAAW,CAAC9C,GAAW,EAAmB;EACxD,OAAOuC,SAAS,CAACvC,GAAG,EAAE,QAAQ,CAAC;AACjC;AAAC,SAEqB+C,WAAW;EAAA;AAAA;AAAA;EAAA,iGAA1B,kBAA2B9E,KAAoB;IAAA;IAAA;MAAA;QAAA;UAAA,yCACjCA,KAAK;UAAA;UAAA;QAAA;UAAA;YAAA;YAAA;UAAA;UAAb8B,IAAI;UAAA;UAAA,OACHvD,MAAM,CAACuD,IAAI,CAAC;QAAA;UAAA;YAAA;YAAA;UAAA;UAAA,mCACblE,QAAQ,CAACkE,IAAI,CAAC;QAAA;UAAA;UAAA;QAAA;UAAA;UAAA;QAAA;UAAA;UAAA;UAAA;QAAA;UAAA;UAAA;UAAA;QAAA;UAAA,mCAGlB,IAAI;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CACZ;EAAA;AAAA;AAAA,SAEqBiD,QAAQ;EAAA;AAAA;AAAA;EAAA,8FAAvB,mBAAwBhD,GAAW;IAAA;MAAA;QAAA;UAAA;UAAA,OAC1BiD,eAAe,CAACjD,GAAG,CAAC;QAAA;UAAA,mDAAEkD,MAAM;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CAC3C;EAAA;AAAA;AAAA,SAEqBD,eAAe;EAAA;AAAA;AAAA;EAAA,qGAA9B,mBACLjD,GAAW;IAAA;IAAA;MAAA;QAAA;UAAA;UAAA,OAKQnE,QAAQ,CAACmE,GAAG,CAAC;QAAA;UAA1BD,IAAI;UAAA;UAAA,mCAED;YACLmD,MAAM,EAAE,IAAA9B,iBAAG,EAAC+B,IAAI,CAACC,KAAK,CAACjG,QAAQ,CAAC4C,IAAI,CAAC,CAAC,CAAC;YACvC4C,OAAO,EAAE5C;UACX,CAAC;QAAA;UAAA;UAAA;UAED,cAAIsD,OAAO,aAAMrD,GAAG,eAAK,cAAIqD,OAAO,CAAE;UAAC;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CAG1C;EAAA;AAAA;AAAA,SAEqBC,IAAI;EAAA;AAAA;AAAA;EAAA,0FAAnB,mBAAoBC,QAAgB,EAAEC,GAAW;IAAA;IAAA;MAAA;QAAA;UAChDC,KAAK,GAAGD,GAAG,CAACpD,KAAK,CAAC9B,mBAAI,CAAC+B,GAAG,CAAC;QAAA;UAAA,KAE1BoD,KAAK,CAACnD,MAAM;YAAA;YAAA;UAAA;UACXN,GAAG,GAAGyD,KAAK,CAACC,MAAM,CAACH,QAAQ,CAAC,CAACtD,IAAI,CAAC3B,mBAAI,CAAC+B,GAAG,CAAC;UAAA;UAAA,OAEvC7D,MAAM,CAACwD,GAAG,CAAC;QAAA;UAAA;YAAA;YAAA;UAAA;UAAA,mCACZA,GAAG;QAAA;UAEVyD,KAAK,CAAClD,GAAG,EAAE;QAAC;UAAA;UAAA;QAAA;UAAA,mCAIT,KAAK;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CACb;EAAA;AAAA;AAAA,SAEqBtD,OAAO;EAAA;AAAA;AAAA;EAAA,6FAAtB,mBAAuBW,GAAW,EAAEC,IAAY;IAAA;IAAA;MAAA;QAAA;UACrD,IAAI8F,OAAO,CAACC,QAAQ,KAAK,OAAO,EAAE;YAChC;YACAhG,GAAG,GAAGU,mBAAI,CAACuF,QAAQ,CAACvF,mBAAI,CAACC,OAAO,CAACV,IAAI,CAAC,EAAED,GAAG,CAAC;YAC5C;YACA;YACAA,GAAG,GAAGA,GAAG,IAAI,GAAG;UAClB;UAAC;UAAA;UAAA,OAGqBnB,KAAK,CAACoB,IAAI,CAAC;QAAA;UAAzBiG,KAAK;UAAA,KACPA,KAAK,CAAC1E,cAAc,EAAE;YAAA;YAAA;UAAA;UAClB2E,QAAQ,GAAGlG,IAAI;UAAA,MACjBkG,QAAQ,KAAKnG,GAAG;YAAA;YAAA;UAAA;UAAA;QAAA;UAAA;UAAA;QAAA;UAAA;UAAA;UAAA,MAKlB,cAAIsB,IAAI,KAAK,QAAQ;YAAA;YAAA;UAAA;UAAA;QAAA;UAAA;UAAA,OAMrB,IAAAgB,sBAAM,EAACrC,IAAI,CAAC;QAAA;UAAA,MAEd8F,OAAO,CAACC,QAAQ,KAAK,OAAO;YAAA;YAAA;UAAA;UAAA;UAAA,OAExB5G,SAAS,CAACY,GAAG,EAAEC,IAAI,EAAE,UAAU,CAAC;QAAA;UAAA;UAAA;QAAA;UAAA;UAAA,OAEhCb,SAAS,CAACY,GAAG,EAAEC,IAAI,CAAC;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CAE7B;EAAA;AAAA;AAAA,SASqBmG,IAAI;EAAA;AAAA;AAAA;EAAA,0FAAnB,mBACLR,GAAW,EACXS,WAAqB;IAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;IAAA;MAAA;QAAA;UACrBtF,eAA6B,iEAAG,IAAIiC,GAAG,EAAE;UAErC3C,KAAK,GAAG,EAAE;UAAA;UAAA,OAEQ/B,OAAO,CAACsH,GAAG,CAAC;QAAA;UAA9BU,SAAS;UACb,IAAIvF,eAAe,CAACe,IAAI,EAAE;YACxBwE,SAAS,GAAGA,SAAS,CAACC,MAAM,CAAC,UAAAC,IAAI;cAAA,OAAI,CAACzF,eAAe,CAACT,GAAG,CAACkG,IAAI,CAAC;YAAA,EAAC;UAClE;UAAC,yCAEkBF,SAAS;UAAA;UAAA;QAAA;UAAA;YAAA;YAAA;UAAA;UAAjBE,IAAI;UACPP,QAAQ,GAAGI,WAAW,GAAG3F,mBAAI,CAAC2B,IAAI,CAACgE,WAAW,EAAEG,IAAI,CAAC,GAAGA,IAAI;UAC5DpE,GAAG,GAAG1B,mBAAI,CAAC2B,IAAI,CAACuD,GAAG,EAAEY,IAAI,CAAC;UAAA;UAAA,OACb3H,KAAK,CAACuD,GAAG,CAAC;QAAA;UAAvB3D,KAAI;UAEV4B,KAAK,CAACQ,IAAI,CAAC;YACToF,QAAQ,EAARA,QAAQ;YACRhF,QAAQ,EAAEuF,IAAI;YACdC,QAAQ,EAAErE,GAAG;YACbJ,KAAK,EAAE,CAACvD,KAAI,CAACuD;UACf,CAAC,CAAC;UAAC,KAECvD,KAAI,CAAC0C,WAAW,EAAE;YAAA;YAAA;UAAA;UAAA,gBACZd,KAAK;UAAA;UAAA,OAAc+F,IAAI,CAAChE,GAAG,EAAE6D,QAAQ,EAAElF,eAAe,CAAC;QAAA;UAAA;UAA/DV,KAAK,iBAASyF,MAAM;QAAA;UAAA;UAAA;QAAA;UAAA;UAAA;QAAA;UAAA;UAAA;UAAA;QAAA;UAAA;UAAA;UAAA;QAAA;UAAA,mCAIjBzF,KAAK;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CACb;EAAA;AAAA;AAAA,SAEqBqG,iBAAiB;EAAA;AAAA;AAAA;EAAA,uGAAhC,mBAAiCtE,GAAW;IAAA;IAAA;MAAA;QAAA;UAAA;UAAA,OAC9BvD,KAAK,CAACuD,GAAG,CAAC;QAAA;UAAvB3D,IAAI;UACHqD,IAAI,GAAwBrD,IAAI,CAAhCqD,IAAI,EAAW6E,SAAS,GAAIlI,IAAI,CAA1BmI,OAAO;UAAA,mCAEbC,IAAI,CAACC,IAAI,CAAChF,IAAI,GAAG6E,SAAS,CAAC,GAAGA,SAAS;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CAC/C;EAAA;AAAA;AAEM,SAAS1B,WAAW,CAAC8B,IAAY,EAAU;EAChD,OAAOA,IAAI,CAACC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;AACpC;AAEA,IAAMC,EAAE,GAAG,IAAI,CAACC,UAAU,CAAC,CAAC,CAAC;AAC7B,IAAMC,EAAE,GAAG,IAAI,CAACD,UAAU,CAAC,CAAC,CAAC;AAAC,SAEfE,cAAc;EAAA;AAAA;AAAA;EAAA,oGAA7B,mBAA8B1G,IAAY;IAAA;IAAA;MAAA;QAAA;UAAA;UAAA,OAC7B9B,MAAM,CAAC8B,IAAI,CAAC;QAAA;UAAA;YAAA;YAAA;UAAA;UAAA,mCACd2G,SAAS;QAAA;UAAA;UAAA,OAGGtJ,cAAc,CAAC2C,IAAI,CAAC;QAAA;UAAnC4G,MAAM;UAEHC,CAAC,GAAG,CAAC;QAAA;UAAA,MAAEA,CAAC,GAAGD,MAAM,CAAC5E,MAAM;YAAA;YAAA;UAAA;UAAA,MAC3B4E,MAAM,CAACC,CAAC,CAAC,KAAKN,EAAE;YAAA;YAAA;UAAA;UAAA,mCACX,MAAM;QAAA;UAAA,MAEXK,MAAM,CAACC,CAAC,CAAC,KAAKJ,EAAE;YAAA;YAAA;UAAA;UAAA,mCACX,IAAI;QAAA;UALoB,EAAEI,CAAC;UAAA;UAAA;QAAA;UAAA,mCAQ/BF,SAAS;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CACjB;EAAA;AAAA;AAAA,SAEqBG,sBAAsB;EAAA;AAAA;AAAA;EAAA,4GAArC,mBAAsC9G,IAAY,EAAEX,IAAY;IAAA;IAAA;MAAA;QAAA;UAAA;UAAA,OAClDqH,cAAc,CAAC1G,IAAI,CAAC;QAAA;UAAA;UAAA;YAAA;YAAA;UAAA;UAAA,gBAAK+G,gBAAE,CAACC,GAAG;QAAA;UAA5CC,GAAG;UACT,IAAIA,GAAG,KAAK,IAAI,EAAE;YAChB5H,IAAI,GAAGA,IAAI,CAACiH,OAAO,CAAC,KAAK,EAAEW,GAAG,CAAC;UACjC;UAAC;UAAA,OACKxJ,SAAS,CAACuC,IAAI,EAAEX,IAAI,CAAC;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CAC5B;EAAA;AAAA;AAAA,SAEqB6H,aAAa;EAAA;AAAA,EAgBnC;AAAA;EAAA,mGAhBO,mBAA6BhC,GAAW;IAAA;IAAA;MAAA;QAAA;UACvCD,QAAQ,GAAG,WAAW,GAAGkB,IAAI,CAACgB,MAAM,EAAE;UACtC1F,IAAI,GAAGzB,mBAAI,CAAC2B,IAAI,CAACuD,GAAG,EAAED,QAAQ,CAAC;UAC/BmC,QAAQ,GAAGpH,mBAAI,CAAC2B,IAAI,CAACuD,GAAG,EAAED,QAAQ,GAAG,OAAO,CAAC;UAAA;UAAA;UAAA,OAE3CxH,SAAS,CAACgE,IAAI,EAAE,MAAM,CAAC;QAAA;UAAA;UAAA,OACvBpD,IAAI,CAACoD,IAAI,EAAE2F,QAAQ,CAAC;QAAA;UAAA;UAAA;QAAA;UAAA;UAAA;UAAA,mCAEnB,KAAK;QAAA;UAAA;UAAA;UAAA,OAEN,IAAAxF,sBAAM,EAACH,IAAI,CAAC;QAAA;UAAA;UAAA,OACZ,IAAAG,sBAAM,EAACwF,QAAQ,CAAC;QAAA;UAAA;QAAA;UAAA,mCAEjB,IAAI;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CACZ;EAAA;AAAA;AAAA,SAGqBC,WAAW;EAAA;AAAA;AAAA;EAAA,iGAA1B,mBAA2BC,MAAe;IAAA;IAAA;MAAA;QAAA;UACzCpC,GAAG,GAAGlF,mBAAI,CAAC2B,IAAI,CAACoF,gBAAE,CAACQ,MAAM,EAAE,iBAAUD,MAAM,IAAI,EAAE,cAAIE,IAAI,CAACC,GAAG,EAAE,cAAItB,IAAI,CAACgB,MAAM,EAAE,EAAG;UAAA;UAAA,OACnF,IAAAvF,sBAAM,EAACsD,GAAG,CAAC;QAAA;UAAA;UAAA,OACXlH,MAAM,CAACkH,GAAG,CAAC;QAAA;UAAA,mCACVA,GAAG;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CACX;EAAA;AAAA;AAAA,SAEqBwC,wBAAwB;EAAA;AAAA;AAAA;EAAA,8GAAvC,mBAAwCC,KAAuB;IAAA;IAAA;MAAA;QAAA;UAAA,yCACjDA,KAAK;UAAA;UAAA;QAAA;UAAA;YAAA;YAAA;UAAA;UAAb3H,KAAI;UAAA;UAAA;UAAA,OAEMxC,IAAI,CAACwC,KAAI,EAAE,GAAG,CAAC;QAAA;UAA1B4H,EAAE;UAAA,mCACD7K,gBAAE,CAAC8K,gBAAgB,CAAC7H,KAAI,EAAE;YAAC4H,EAAE,EAAFA;UAAE,CAAC,CAAC;QAAA;UAAA;UAAA;QAAA;UAAA;UAAA;QAAA;UAAA;UAAA;QAAA;UAAA;UAAA;UAAA;QAAA;UAAA;UAAA;UAAA;QAAA;UAAA,mCAKnC,IAAI;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CACZ;EAAA;AAAA;AAAA,SAEqBE,sBAAsB;EAAA;AAAA;AAAA;EAAA,4GAArC,mBACLH,KAAuB;IAAA;MAAA;MAAA;MAAA;MAAA;MAAA;IAAA;MAAA;QAAA;UACvBvF,IAAY,iEAAGtF,SAAS,CAACG,IAAI,GAAGH,SAAS,CAACI,IAAI;UAExC6K,MAAyB,GAAG;YAChCC,OAAO,EAAE,EAAE;YACXC,MAAM,EAAE;UACV,CAAC;UAAA,yCAEoBN,KAAK;UAAA;UAAA;QAAA;UAAA;YAAA;YAAA;UAAA;UAAfM,MAAM;UAAA;UAAA;UAAA,OAEPjK,MAAM,CAACiK,MAAM,CAAC;QAAA;UAAA;UAAA,OACdnK,MAAM,CAACmK,MAAM,EAAE7F,IAAI,CAAC;QAAA;UAE1B2F,MAAM,CAACE,MAAM,GAAGA,MAAM;UAAC,mCAEhBF,MAAM;QAAA;UAAA;UAAA;UAEbA,MAAM,CAACC,OAAO,CAAC7H,IAAI,CAAC;YAClB+H,KAAK;YACLD,MAAM,EAANA;UACF,CAAC,CAAC;QAAC;UAAA;UAAA;QAAA;UAAA;UAAA;QAAA;UAAA;UAAA;UAAA;QAAA;UAAA;UAAA;UAAA;QAAA;UAAA,mCAGAF,MAAM;QAAA;QAAA;UAAA;MAAA;IAAA;EAAA,CACd;EAAA;AAAA"}