admina
Version:
Detect root/admin/sudo and execute commands as it if available
1 lines • 271 kB
Source Map (JSON)
{"version":3,"file":"index.node.cjs","names":["n","e","t","r","Promise","TypeError","i","ep","code","ignoreErrors","sync","o","options","env","process","cwd","s","chdir","disabled","ed","command","path","ef","pathExt","eL","delimiter","resolve","a","replace","tU","c","l","Buffer","alloc","ej","openSync","readSync","closeSync","ey","toString","d","file","el","eg","args","unshift","u","tF","tM","test","forceShell","tD","normalize","em","map","eh","concat","join","comspec","windowsVerbatimArguments","p","Array","isArray","slice","Object","assign","original","shell","f","Error","errno","syscall","spawnargs","m","tq","emit","h","call","apply","arguments","g","y","ec","eN","spawn","eE","hookChildProcess","b","spawnSync","error","verifyENOENTSync","status","E","charCodeAt","length","x","platform","keys","reverse","find","toUpperCase","v","eB","execPath","URL","eU","fileURLToPath","e_","push","w","S","ignoreNonConfigurable","name","Reflect","ownKeys","tH","tX","tZ","T","pipe","I","writable","_write","_writableState","C","readable","_read","_readableState","O","P","_transform","A","maxBuffer","eC","getBufferedLength","eT","MAX_LENGTH","bufferedData","getBufferedValue","rN","on","rU","$","na","r3","r8","ni","rL","ek","ChildProcess","rz","reject","ri","stdout","stderr","all","escapedCommand","parsed","timedOut","isCanceled","killed","rJ","rj","rR","kill","rI","bind","cancel","r$","ex","exitCode","signal","rV","nc","aborted","failed","rH","rW","rB","G","rD","input","j","ne","nd","L","r9","R","_","rc","execArgv","filter","startsWith","nodePath","nodeOptions","stdin","stdio","k","z","nothrow","B","getuid","CI","N","U","F","np","D","M","q","H","W","X","systemdrive","K","nf","V","SUDO_USER","statSync","isDirectory","Q","et","er","en","ei","eo","es","ew","eI","eO","eA","isSymbolicLink","isFile","PATHEXT","split","indexOf","toLowerCase","substr","stat","exports","mode","uid","gid","getgid","parseInt","promises","access","eJ","appendFile","eQ","chmod","e0","chown","e1","copyFile","e2","lchmod","e3","lchown","e8","link","e5","lstat","e9","mkdir","e4","mkdtemp","e6","open","e7","readdir","te","readFile","tt","readlink","tr","realpath","tn","rename","ti","rmdir","to","ts","symlink","ta","truncate","tc","unlink","tl","utimes","td","writeFile","tu","tp","tm","tf","th","groups","getgroups","Set","has","tg","tE","ty","tb","substring","tx","_ISEXE_TEST_PLATFORM_","tv","ee","J","tw","isexe","tS","sep","posix","tT","tI","RegExp","tC","source","tO","tP","PATH","match","flatMap","includes","pathEnv","pathExtExe","tA","t$","tG","tj","OSTYPE","tL","ez","eV","TESTING_WINDOWS","eu","tR","t_","colon","tk","then","tB","tN","default","eb","pop","verifyENOENT","notFoundError","ea","_parse","_enoent","getOwnPropertyDescriptor","tW","defineProperty","configurable","enumerable","value","getPrototypeOf","setPrototypeOf","tK","tV","Function","prototype","tY","trim","tz","WeakMap","tJ","displayName","set","throw","callCount","get","tQ","from","t2","t1","t0","number","action","description","standard","t3","forced","t8","t5","signals","eF","constants","supported","t9","fromEntries","t4","t6","t7","re","rt","rr","rn","timeout","errorCode","signalDescription","message","Boolean","originalMessage","shortMessage","ro","rs","some","ra","Math","max","rl","removeListener","reallyExit","listeners","pid","rd","ru","eM","rp","rf","rm","eD","EventEmitter","__signal_exit_emitter__","count","emitted","infinite","setMaxListeners","rh","rb","forEach","ry","rw","rx","ev","equal","rE","alwaysLast","unload","rg","rS","rv","load","rT","rC","rO","setTimeout","rA","unref","forceKillAfterTimeout","rP","SIGTERM","Number","isFinite","rG","killSignal","race","finally","clearTimeout","cleanup","detached","r_","rk","eq","createWriteStream","pipeStdout","pipeStderr","pipeAll","eH","eX","promisify","eW","PassThrough","array","encoding","objectMode","setEncoding","pipeline","constructor","eS","buffer","MaxBufferError","eP","once","end","add","isEmpty","rF","rM","inputFile","readFileSync","rq","createReadStream","rX","destroy","rK","rY","rZ","rQ","r0","r1","r2","r5","endsWith","r4","String","eR","isBuffer","r6","r7","templates","expressions","tokens","index","template","raw","entries","nt","eK","debuglog","enabled","nr","padStart","nn","Date","getHours","getMinutes","getSeconds","getMilliseconds","verbose","write","no","ns","extendEnv","preferLocal","localDir","stripFinalNewline","windowsHide","basename","nl","nu","nm"],"sources":["../<anon>","../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js","../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js","../node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/signals.js","../src/index.mts","../src/root.mts","../node_modules/.pnpm/which@4.0.0/node_modules/which/lib/index.js","../node_modules/.pnpm/isexe@3.1.1/node_modules/isexe/dist/mjs/index.js","../node_modules/.pnpm/isexe@3.1.1/node_modules/isexe/src/index.ts","../node_modules/.pnpm/isexe@3.1.1/node_modules/isexe/dist/mjs/posix.js","../node_modules/.pnpm/isexe@3.1.1/node_modules/isexe/src/posix.ts","../src/compat/fs/promises.mts","../node_modules/.pnpm/isexe@3.1.1/node_modules/isexe/dist/mjs/win32.js","../node_modules/.pnpm/isexe@3.1.1/node_modules/isexe/src/win32.ts","../node_modules/.pnpm/isexe@3.1.1/node_modules/isexe/src/options.ts","../node_modules/.pnpm/execa@7.2.0/node_modules/execa/index.js","../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/index.js","../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/parse.js","../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/resolveCommand.js","../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js","../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js","../node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js","../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/escape.js","../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/readShebang.js","../node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js","../node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js","../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/enoent.js","../node_modules/.pnpm/strip-final-newline@3.0.0/node_modules/strip-final-newline/index.js","../node_modules/.pnpm/npm-run-path@5.2.0/node_modules/npm-run-path/index.js","../node_modules/.pnpm/path-key@4.0.0/node_modules/path-key/index.js","../node_modules/.pnpm/onetime@6.0.0/node_modules/onetime/index.js","../node_modules/.pnpm/mimic-fn@4.0.0/node_modules/mimic-fn/index.js","../node_modules/.pnpm/execa@7.2.0/node_modules/execa/lib/error.js","../node_modules/.pnpm/human-signals@4.3.1/node_modules/human-signals/build/src/main.js","../node_modules/.pnpm/human-signals@4.3.1/node_modules/human-signals/build/src/realtime.js","../node_modules/.pnpm/human-signals@4.3.1/node_modules/human-signals/build/src/signals.js","../node_modules/.pnpm/human-signals@4.3.1/node_modules/human-signals/build/src/core.js","../node_modules/.pnpm/execa@7.2.0/node_modules/execa/lib/stdio.js","../node_modules/.pnpm/execa@7.2.0/node_modules/execa/lib/kill.js","../node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/index.js","../node_modules/.pnpm/execa@7.2.0/node_modules/execa/lib/pipe.js","../node_modules/.pnpm/is-stream@3.0.0/node_modules/is-stream/index.js","../node_modules/.pnpm/execa@7.2.0/node_modules/execa/lib/stream.js","../node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/index.js","../node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/buffer-stream.js","../node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js","../node_modules/.pnpm/execa@7.2.0/node_modules/execa/lib/promise.js","../node_modules/.pnpm/execa@7.2.0/node_modules/execa/lib/command.js","../node_modules/.pnpm/execa@7.2.0/node_modules/execa/lib/verbose.js","../src/admin.mts","../src/is-admin.mts","../src/user-access.mts"],"sourcesContent":["var $dtrkX$fs = require(\"fs\");\nvar $dtrkX$path = require(\"path\");\nvar $dtrkX$nodebuffer = require(\"node:buffer\");\nvar $dtrkX$nodepath = require(\"node:path\");\nvar $dtrkX$nodechild_process = require(\"node:child_process\");\nvar $dtrkX$nodeprocess = require(\"node:process\");\nvar $dtrkX$child_process = require(\"child_process\");\nvar $dtrkX$nodeurl = require(\"node:url\");\nvar $dtrkX$nodeos = require(\"node:os\");\nvar $dtrkX$assert = require(\"assert\");\nvar $dtrkX$events = require(\"events\");\nvar $dtrkX$nodefs = require(\"node:fs\");\nvar $dtrkX$buffer = require(\"buffer\");\nvar $dtrkX$stream = require(\"stream\");\nvar $dtrkX$util = require(\"util\");\nvar $dtrkX$nodeutil = require(\"node:util\");\n\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n }\n });\n });\n\n return dest;\n}\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequireb51e\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequireb51e\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nparcelRegister(\"ftrAD\", function(module, exports) {\nmodule.exports = $b43ef73900290537$var$isexe;\n$b43ef73900290537$var$isexe.sync = $b43ef73900290537$var$sync;\n\nfunction $b43ef73900290537$var$checkPathExt(path, options) {\n var pathext = options.pathExt !== undefined ? options.pathExt : process.env.PATHEXT;\n if (!pathext) return true;\n pathext = pathext.split(\";\");\n if (pathext.indexOf(\"\") !== -1) return true;\n for(var i = 0; i < pathext.length; i++){\n var p = pathext[i].toLowerCase();\n if (p && path.substr(-p.length).toLowerCase() === p) return true;\n }\n return false;\n}\nfunction $b43ef73900290537$var$checkStat(stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) return false;\n return $b43ef73900290537$var$checkPathExt(path, options);\n}\nfunction $b43ef73900290537$var$isexe(path, options, cb) {\n $dtrkX$fs.stat(path, function(er, stat) {\n cb(er, er ? false : $b43ef73900290537$var$checkStat(stat, path, options));\n });\n}\nfunction $b43ef73900290537$var$sync(path, options) {\n return $b43ef73900290537$var$checkStat($dtrkX$fs.statSync(path), path, options);\n}\n\n});\n\nparcelRegister(\"9yF3I\", function(module, exports) {\nmodule.exports = $6f57237f32b1c8cb$var$isexe;\n$6f57237f32b1c8cb$var$isexe.sync = $6f57237f32b1c8cb$var$sync;\n\nfunction $6f57237f32b1c8cb$var$isexe(path, options, cb) {\n $dtrkX$fs.stat(path, function(er, stat) {\n cb(er, er ? false : $6f57237f32b1c8cb$var$checkStat(stat, options));\n });\n}\nfunction $6f57237f32b1c8cb$var$sync(path, options) {\n return $6f57237f32b1c8cb$var$checkStat($dtrkX$fs.statSync(path), options);\n}\nfunction $6f57237f32b1c8cb$var$checkStat(stat, options) {\n return stat.isFile() && $6f57237f32b1c8cb$var$checkMode(stat, options);\n}\nfunction $6f57237f32b1c8cb$var$checkMode(stat, options) {\n var mod = stat.mode;\n var uid = stat.uid;\n var gid = stat.gid;\n var myUid = options.uid !== undefined ? options.uid : process.getuid && process.getuid();\n var myGid = options.gid !== undefined ? options.gid : process.getgid && process.getgid();\n var u = parseInt(\"100\", 8);\n var g = parseInt(\"010\", 8);\n var o = parseInt(\"001\", 8);\n var ug = u | g;\n var ret = mod & o || mod & g && gid === myGid || mod & u && uid === myUid || mod & ug && myUid === 0;\n return ret;\n}\n\n});\n\nparcelRegister(\"bJALw\", function(module, exports) {\n// This is not the set of all possible signals.\n//\n// It IS, however, the set of all signals that trigger\n// an exit on either Linux or BSD systems. Linux is a\n// superset of the signal names supported on BSD, and\n// the unknown signals just fail to register, so we can\n// catch that easily enough.\n//\n// Don't bother with SIGKILL. It's uncatchable, which\n// means that we can't fire any callbacks anyway.\n//\n// If a user does happen to register a handler on a non-\n// fatal signal like SIGWINCH or something, and then\n// exit, it'll end up firing `process.emit('exit')`, so\n// the handler will be fired anyway.\n//\n// SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n// artificially, inherently leave the process in a\n// state from which it is not safe to try and enter JS\n// listeners.\nmodule.exports = [\n \"SIGABRT\",\n \"SIGALRM\",\n \"SIGHUP\",\n \"SIGINT\",\n \"SIGTERM\"\n];\nif (process.platform !== \"win32\") module.exports.push(\"SIGVTALRM\", \"SIGXCPU\", \"SIGXFSZ\", \"SIGUSR2\", \"SIGTRAP\", \"SIGSYS\", \"SIGQUIT\", \"SIGIOT\");\nif (process.platform === \"linux\") module.exports.push(\"SIGIO\", \"SIGPOLL\", \"SIGPWR\", \"SIGSTKFLT\", \"SIGUNUSED\");\n\n});\n\nvar $794e319dbcdb5a2b$exports = {};\n\n$parcel$export($794e319dbcdb5a2b$exports, \"hasSudo\", () => $794e319dbcdb5a2b$export$7683bf1311d8252);\n$parcel$export($794e319dbcdb5a2b$exports, \"isRoot\", () => $794e319dbcdb5a2b$export$e3140dc7d0c35e48);\n$parcel$export($794e319dbcdb5a2b$exports, \"isSudo\", () => $794e319dbcdb5a2b$export$316200228f28b8ce);\n$parcel$export($794e319dbcdb5a2b$exports, \"prependSudo\", () => $794e319dbcdb5a2b$export$d976d47922ae9667);\n$parcel$export($794e319dbcdb5a2b$exports, \"defaultExecOptions\", () => $794e319dbcdb5a2b$export$151aeb0ade3989e1);\n$parcel$export($794e319dbcdb5a2b$exports, \"execRootSync\", () => $794e319dbcdb5a2b$export$58f152936f209932);\n$parcel$export($794e319dbcdb5a2b$exports, \"execRoot\", () => $794e319dbcdb5a2b$export$351270479e2eef26);\nvar $e354e8ac503df91c$exports = {};\nvar $0d005acc9f1cecf2$exports = {};\n\n$parcel$export($0d005acc9f1cecf2$exports, \"isexe\", () => $0d005acc9f1cecf2$export$35888d6059c232d4);\n$parcel$export($0d005acc9f1cecf2$exports, \"sync\", () => $0d005acc9f1cecf2$export$92d6409d68f0739a);\n/**\n * This is the Posix implementation of isexe, which uses the file\n * mode and uid/gid values.\n *\n * @module\n */ \n\nvar $559628a144c91ac9$export$2e2bcd8739ae039 = (0, $dtrkX$fs.promises);\nconst { access: $559628a144c91ac9$export$9bb0e144ba4929ca, appendFile: $559628a144c91ac9$export$31f54b44f813a103, chmod: $559628a144c91ac9$export$fe07cae62e774a05, chown: $559628a144c91ac9$export$86560bc0b866a003, copyFile: $559628a144c91ac9$export$c763efb2c06e223f, lchmod: $559628a144c91ac9$export$4d4374c7ea08c49f, lchown: $559628a144c91ac9$export$b34a65c440b523a2, link: $559628a144c91ac9$export$9c30223ca0a664fb, lstat: $559628a144c91ac9$export$c29f07eab13966a4, mkdir: $559628a144c91ac9$export$d9fa9670717a639d, mkdtemp: $559628a144c91ac9$export$bb440dc863a3b46a, open: $559628a144c91ac9$export$3ce6949f20cea765, readdir: $559628a144c91ac9$export$b1e07c405f785337, readFile: $559628a144c91ac9$export$72c04af63de9061a, readlink: $559628a144c91ac9$export$3d3ca76659ee9f39, realpath: $559628a144c91ac9$export$9f2c45015a422c45, rename: $559628a144c91ac9$export$7ac989ec0c9c279, rmdir: $559628a144c91ac9$export$3f660f6332b9a01d, stat: $559628a144c91ac9$export$f82f04a91eb6144a, symlink: $559628a144c91ac9$export$ed42c6f39f07f97, truncate: $559628a144c91ac9$export$6a506b36fdea397d, unlink: $559628a144c91ac9$export$5e0808041271ce04, utimes: $559628a144c91ac9$export$d85d919a687a608f, writeFile: $559628a144c91ac9$export$552bfb764b5cd2b4 } = (0, $dtrkX$fs.promises); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWlzZXMubWpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2NvbXBhdC9mcy9wcm9taXNlcy5tdHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLElBQUksQ0FBQTtBQUM3QixlQUFlLFFBQVEsQ0FBQTtBQUV2QixNQUFNLENBQUMsTUFBTSxFQUNYLE1BQU0sRUFDTixVQUFVLEVBQ1YsS0FBSyxFQUNMLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixJQUFJLEVBQ0osS0FBSyxFQUNMLEtBQUssRUFDTCxPQUFPLEVBQ1AsSUFBSSxFQUNKLE9BQU8sRUFDUCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLElBQUksRUFDSixPQUFPLEVBQ1AsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxHQUNWLEdBQUcsUUFBUSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgfSBmcm9tIFwiZnNcIlxuZXhwb3J0IGRlZmF1bHQgcHJvbWlzZXNcblxuZXhwb3J0IGNvbnN0IHtcbiAgYWNjZXNzLFxuICBhcHBlbmRGaWxlLFxuICBjaG1vZCxcbiAgY2hvd24sXG4gIGNvcHlGaWxlLFxuICBsY2htb2QsXG4gIGxjaG93bixcbiAgbGluayxcbiAgbHN0YXQsXG4gIG1rZGlyLFxuICBta2R0ZW1wLFxuICBvcGVuLFxuICByZWFkZGlyLFxuICByZWFkRmlsZSxcbiAgcmVhZGxpbmssXG4gIHJlYWxwYXRoLFxuICByZW5hbWUsXG4gIHJtZGlyLFxuICBzdGF0LFxuICBzeW1saW5rLFxuICB0cnVuY2F0ZSxcbiAgdW5saW5rLFxuICB1dGltZXMsXG4gIHdyaXRlRmlsZSxcbn0gPSBwcm9taXNlc1xuIl19\n\n\nconst $0d005acc9f1cecf2$export$35888d6059c232d4 = async (path, options = {})=>{\n const { ignoreErrors: ignoreErrors = false } = options;\n try {\n return $0d005acc9f1cecf2$var$checkStat(await (0, $559628a144c91ac9$export$f82f04a91eb6144a)(path), options);\n } catch (e) {\n const er = e;\n if (ignoreErrors || er.code === \"EACCES\") return false;\n throw er;\n }\n};\nconst $0d005acc9f1cecf2$export$92d6409d68f0739a = (path, options = {})=>{\n const { ignoreErrors: ignoreErrors = false } = options;\n try {\n return $0d005acc9f1cecf2$var$checkStat((0, $dtrkX$fs.statSync)(path), options);\n } catch (e) {\n const er = e;\n if (ignoreErrors || er.code === \"EACCES\") return false;\n throw er;\n }\n};\nconst $0d005acc9f1cecf2$var$checkStat = (stat, options)=>stat.isFile() && $0d005acc9f1cecf2$var$checkMode(stat, options);\nconst $0d005acc9f1cecf2$var$checkMode = (stat, options)=>{\n var _process_getuid, _process, _process_getgroups, _process1, _process_getgid, _process2;\n var _options_uid;\n const myUid = (_options_uid = options.uid) !== null && _options_uid !== void 0 ? _options_uid : (_process_getuid = (_process = process).getuid) === null || _process_getuid === void 0 ? void 0 : _process_getuid.call(_process);\n var _options_groups, _ref;\n const myGroups = (_ref = (_options_groups = options.groups) !== null && _options_groups !== void 0 ? _options_groups : (_process_getgroups = (_process1 = process).getgroups) === null || _process_getgroups === void 0 ? void 0 : _process_getgroups.call(_process1)) !== null && _ref !== void 0 ? _ref : [];\n var _options_gid, _ref1;\n const myGid = (_ref1 = (_options_gid = options.gid) !== null && _options_gid !== void 0 ? _options_gid : (_process_getgid = (_process2 = process).getgid) === null || _process_getgid === void 0 ? void 0 : _process_getgid.call(_process2)) !== null && _ref1 !== void 0 ? _ref1 : myGroups[0];\n if (myUid === undefined || myGid === undefined) throw new Error(\"cannot get uid or gid\");\n const groups = new Set([\n myGid,\n ...myGroups\n ]);\n const mod = stat.mode;\n const uid = stat.uid;\n const gid = stat.gid;\n const u = parseInt(\"100\", 8);\n const g = parseInt(\"010\", 8);\n const o = parseInt(\"001\", 8);\n const ug = u | g;\n return !!(mod & o || mod & g && groups.has(gid) || mod & u && uid === myUid || mod & ug && myUid === 0);\n};\n\n\nvar $03c16384f532a838$exports = {};\n\n$parcel$export($03c16384f532a838$exports, \"isexe\", () => $03c16384f532a838$export$35888d6059c232d4);\n$parcel$export($03c16384f532a838$exports, \"sync\", () => $03c16384f532a838$export$92d6409d68f0739a);\n/**\n * This is the Windows implementation of isexe, which uses the file\n * extension and PATHEXT setting.\n *\n * @module\n */ \n\nconst $03c16384f532a838$export$35888d6059c232d4 = async (path, options = {})=>{\n const { ignoreErrors: ignoreErrors = false } = options;\n try {\n return $03c16384f532a838$var$checkStat(await (0, $559628a144c91ac9$export$f82f04a91eb6144a)(path), path, options);\n } catch (e) {\n const er = e;\n if (ignoreErrors || er.code === \"EACCES\") return false;\n throw er;\n }\n};\nconst $03c16384f532a838$export$92d6409d68f0739a = (path, options = {})=>{\n const { ignoreErrors: ignoreErrors = false } = options;\n try {\n return $03c16384f532a838$var$checkStat((0, $dtrkX$fs.statSync)(path), path, options);\n } catch (e) {\n const er = e;\n if (ignoreErrors || er.code === \"EACCES\") return false;\n throw er;\n }\n};\nconst $03c16384f532a838$var$checkPathExt = (path, options)=>{\n const { pathExt: pathExt = process.env.PATHEXT || \"\" } = options;\n const peSplit = pathExt.split(\";\");\n if (peSplit.indexOf(\"\") !== -1) return true;\n for(let i = 0; i < peSplit.length; i++){\n const p = peSplit[i].toLowerCase();\n const ext = path.substring(path.length - p.length).toLowerCase();\n if (p && ext === p) return true;\n }\n return false;\n};\nconst $03c16384f532a838$var$checkStat = (stat, path, options)=>stat.isFile() && $03c16384f532a838$var$checkPathExt(path, options);\n\n\n\n\nconst $8135b918ae2698c2$var$platform = process.env._ISEXE_TEST_PLATFORM_ || process.platform;\nconst $8135b918ae2698c2$var$impl = $8135b918ae2698c2$var$platform === \"win32\" ? $03c16384f532a838$exports : $0d005acc9f1cecf2$exports;\nconst $8135b918ae2698c2$export$35888d6059c232d4 = $8135b918ae2698c2$var$impl.isexe;\nconst $8135b918ae2698c2$export$92d6409d68f0739a = $8135b918ae2698c2$var$impl.sync;\n\n\nvar $e354e8ac503df91c$require$isexe = $8135b918ae2698c2$export$35888d6059c232d4;\nvar $e354e8ac503df91c$require$isexeSync = $8135b918ae2698c2$export$92d6409d68f0739a;\n\nvar $e354e8ac503df91c$require$join = $dtrkX$path.join;\nvar $e354e8ac503df91c$require$delimiter = $dtrkX$path.delimiter;\nvar $e354e8ac503df91c$require$sep = $dtrkX$path.sep;\nvar $e354e8ac503df91c$require$posix = $dtrkX$path.posix;\nconst $e354e8ac503df91c$var$isWindows = process.platform === \"win32\";\n// used to check for slashed in commands passed in. always checks for the posix\n// seperator on all platforms, and checks for the current separator when not on\n// a posix platform. don't use the isWindows check for this since that is mocked\n// in tests but we still need the code to actually work when called. that is also\n// why it is ignored from coverage.\n/* istanbul ignore next */ const $e354e8ac503df91c$var$rSlash = new RegExp(`[${$e354e8ac503df91c$require$posix.sep}${$e354e8ac503df91c$require$sep === $e354e8ac503df91c$require$posix.sep ? \"\" : $e354e8ac503df91c$require$sep}]`.replace(/(\\\\)/g, \"\\\\$1\"));\nconst $e354e8ac503df91c$var$rRel = new RegExp(`^\\\\.${$e354e8ac503df91c$var$rSlash.source}`);\nconst $e354e8ac503df91c$var$getNotFoundError = (cmd)=>Object.assign(new Error(`not found: ${cmd}`), {\n code: \"ENOENT\"\n });\nconst $e354e8ac503df91c$var$getPathInfo = (cmd, { path: optPath = process.env.PATH, pathExt: optPathExt = process.env.PATHEXT, delimiter: optDelimiter = $e354e8ac503df91c$require$delimiter })=>{\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match($e354e8ac503df91c$var$rSlash) ? [\n \"\"\n ] : [\n // windows always checks the cwd first\n ...$e354e8ac503df91c$var$isWindows ? [\n process.cwd()\n ] : [],\n ...(optPath || /* istanbul ignore next: very unusual */ \"\").split(optDelimiter)\n ];\n if ($e354e8ac503df91c$var$isWindows) {\n const pathExtExe = optPathExt || [\n \".EXE\",\n \".CMD\",\n \".BAT\",\n \".COM\"\n ].join(optDelimiter);\n const pathExt = pathExtExe.split(optDelimiter).flatMap((item)=>[\n item,\n item.toLowerCase()\n ]);\n if (cmd.includes(\".\") && pathExt[0] !== \"\") pathExt.unshift(\"\");\n return {\n pathEnv: pathEnv,\n pathExt: pathExt,\n pathExtExe: pathExtExe\n };\n }\n return {\n pathEnv: pathEnv,\n pathExt: [\n \"\"\n ]\n };\n};\nconst $e354e8ac503df91c$var$getPathPart = (raw, cmd)=>{\n const pathPart = /^\".*\"$/.test(raw) ? raw.slice(1, -1) : raw;\n const prefix = !pathPart && $e354e8ac503df91c$var$rRel.test(cmd) ? cmd.slice(0, 2) : \"\";\n return prefix + $e354e8ac503df91c$require$join(pathPart, cmd);\n};\nconst $e354e8ac503df91c$var$which = async (cmd, opt = {})=>{\n const { pathEnv: pathEnv, pathExt: pathExt, pathExtExe: pathExtExe } = $e354e8ac503df91c$var$getPathInfo(cmd, opt);\n const found = [];\n for (const envPart of pathEnv){\n const p = $e354e8ac503df91c$var$getPathPart(envPart, cmd);\n for (const ext of pathExt){\n const withExt = p + ext;\n const is = await $e354e8ac503df91c$require$isexe(withExt, {\n pathExt: pathExtExe,\n ignoreErrors: true\n });\n if (is) {\n if (!opt.all) return withExt;\n found.push(withExt);\n }\n }\n }\n if (opt.all && found.length) return found;\n if (opt.nothrow) return null;\n throw $e354e8ac503df91c$var$getNotFoundError(cmd);\n};\nconst $e354e8ac503df91c$var$whichSync = (cmd, opt = {})=>{\n const { pathEnv: pathEnv, pathExt: pathExt, pathExtExe: pathExtExe } = $e354e8ac503df91c$var$getPathInfo(cmd, opt);\n const found = [];\n for (const pathEnvPart of pathEnv){\n const p = $e354e8ac503df91c$var$getPathPart(pathEnvPart, cmd);\n for (const ext of pathExt){\n const withExt = p + ext;\n const is = $e354e8ac503df91c$require$isexeSync(withExt, {\n pathExt: pathExtExe,\n ignoreErrors: true\n });\n if (is) {\n if (!opt.all) return withExt;\n found.push(withExt);\n }\n }\n }\n if (opt.all && found.length) return found;\n if (opt.nothrow) return null;\n throw $e354e8ac503df91c$var$getNotFoundError(cmd);\n};\n$e354e8ac503df91c$exports = $e354e8ac503df91c$var$which;\n$e354e8ac503df91c$var$which.sync = $e354e8ac503df91c$var$whichSync;\n\n\n\n\n\n\nvar $338cd3297632d74f$exports = {};\n\"use strict\";\n\nvar $9cf15e4f01e764e1$exports = {};\n\"use strict\";\n\nvar $51d58653c6048ffd$exports = {};\n\"use strict\";\n\nvar $4ca03dc05bbe4be0$exports = {};\nconst $4ca03dc05bbe4be0$var$isWindows = process.platform === \"win32\" || process.env.OSTYPE === \"cygwin\" || process.env.OSTYPE === \"msys\";\n\nconst $4ca03dc05bbe4be0$var$COLON = $4ca03dc05bbe4be0$var$isWindows ? \";\" : \":\";\nvar $1d8d028d9c47b73d$exports = {};\n\nvar $1d8d028d9c47b73d$var$core;\n\n\nif (process.platform === \"win32\" || $parcel$global.TESTING_WINDOWS) $1d8d028d9c47b73d$var$core = (parcelRequire(\"ftrAD\"));\nelse $1d8d028d9c47b73d$var$core = (parcelRequire(\"9yF3I\"));\n$1d8d028d9c47b73d$exports = $1d8d028d9c47b73d$var$isexe;\n$1d8d028d9c47b73d$var$isexe.sync = $1d8d028d9c47b73d$var$sync;\nfunction $1d8d028d9c47b73d$var$isexe(path, options, cb) {\n if (typeof options === \"function\") {\n cb = options;\n options = {};\n }\n if (!cb) {\n if (typeof Promise !== \"function\") throw new TypeError(\"callback not provided\");\n return new Promise(function(resolve, reject) {\n $1d8d028d9c47b73d$var$isexe(path, options || {}, function(er, is) {\n if (er) reject(er);\n else resolve(is);\n });\n });\n }\n $1d8d028d9c47b73d$var$core(path, options || {}, function(er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === \"EACCES\" || options && options.ignoreErrors) {\n er = null;\n is = false;\n }\n }\n cb(er, is);\n });\n}\nfunction $1d8d028d9c47b73d$var$sync(path, options) {\n // my kingdom for a filtered catch\n try {\n return $1d8d028d9c47b73d$var$core.sync(path, options || {});\n } catch (er) {\n if (options && options.ignoreErrors || er.code === \"EACCES\") return false;\n else throw er;\n }\n}\n\n\nconst $4ca03dc05bbe4be0$var$getNotFoundError = (cmd)=>Object.assign(new Error(`not found: ${cmd}`), {\n code: \"ENOENT\"\n });\nconst $4ca03dc05bbe4be0$var$getPathInfo = (cmd, opt)=>{\n const colon = opt.colon || $4ca03dc05bbe4be0$var$COLON;\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || $4ca03dc05bbe4be0$var$isWindows && cmd.match(/\\\\/) ? [\n \"\"\n ] : [\n // windows always checks the cwd first\n ...$4ca03dc05bbe4be0$var$isWindows ? [\n process.cwd()\n ] : [],\n ...(opt.path || process.env.PATH || /* istanbul ignore next: very unusual */ \"\").split(colon)\n ];\n const pathExtExe = $4ca03dc05bbe4be0$var$isWindows ? opt.pathExt || process.env.PATHEXT || \".EXE;.CMD;.BAT;.COM\" : \"\";\n const pathExt = $4ca03dc05bbe4be0$var$isWindows ? pathExtExe.split(colon) : [\n \"\"\n ];\n if ($4ca03dc05bbe4be0$var$isWindows) {\n if (cmd.indexOf(\".\") !== -1 && pathExt[0] !== \"\") pathExt.unshift(\"\");\n }\n return {\n pathEnv: pathEnv,\n pathExt: pathExt,\n pathExtExe: pathExtExe\n };\n};\nconst $4ca03dc05bbe4be0$var$which = (cmd, opt, cb)=>{\n if (typeof opt === \"function\") {\n cb = opt;\n opt = {};\n }\n if (!opt) opt = {};\n const { pathEnv: pathEnv, pathExt: pathExt, pathExtExe: pathExtExe } = $4ca03dc05bbe4be0$var$getPathInfo(cmd, opt);\n const found = [];\n const step = (i)=>new Promise((resolve, reject)=>{\n if (i === pathEnv.length) return opt.all && found.length ? resolve(found) : reject($4ca03dc05bbe4be0$var$getNotFoundError(cmd));\n const ppRaw = pathEnv[i];\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;\n const pCmd = $dtrkX$path.join(pathPart, cmd);\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;\n resolve(subStep(p, i, 0));\n });\n const subStep = (p, i, ii)=>new Promise((resolve, reject)=>{\n if (ii === pathExt.length) return resolve(step(i + 1));\n const ext = pathExt[ii];\n $1d8d028d9c47b73d$exports(p + ext, {\n pathExt: pathExtExe\n }, (er, is)=>{\n if (!er && is) {\n if (opt.all) found.push(p + ext);\n else return resolve(p + ext);\n }\n return resolve(subStep(p, i, ii + 1));\n });\n });\n return cb ? step(0).then((res)=>cb(null, res), cb) : step(0);\n};\nconst $4ca03dc05bbe4be0$var$whichSync = (cmd, opt)=>{\n opt = opt || {};\n const { pathEnv: pathEnv, pathExt: pathExt, pathExtExe: pathExtExe } = $4ca03dc05bbe4be0$var$getPathInfo(cmd, opt);\n const found = [];\n for(let i = 0; i < pathEnv.length; i++){\n const ppRaw = pathEnv[i];\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;\n const pCmd = $dtrkX$path.join(pathPart, cmd);\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;\n for(let j = 0; j < pathExt.length; j++){\n const cur = p + pathExt[j];\n try {\n const is = $1d8d028d9c47b73d$exports.sync(cur, {\n pathExt: pathExtExe\n });\n if (is) {\n if (opt.all) found.push(cur);\n else return cur;\n }\n } catch (ex) {}\n }\n }\n if (opt.all && found.length) return found;\n if (opt.nothrow) return null;\n throw $4ca03dc05bbe4be0$var$getNotFoundError(cmd);\n};\n$4ca03dc05bbe4be0$exports = $4ca03dc05bbe4be0$var$which;\n$4ca03dc05bbe4be0$var$which.sync = $4ca03dc05bbe4be0$var$whichSync;\n\n\nvar $e9929770d50e0ca3$exports = {};\n\"use strict\";\nconst $e9929770d50e0ca3$var$pathKey = (options = {})=>{\n const environment = options.env || process.env;\n const platform = options.platform || process.platform;\n if (platform !== \"win32\") return \"PATH\";\n return Object.keys(environment).reverse().find((key)=>key.toUpperCase() === \"PATH\") || \"Path\";\n};\n$e9929770d50e0ca3$exports = $e9929770d50e0ca3$var$pathKey;\n// TODO: Remove this for the next major release\n$e9929770d50e0ca3$exports.default = $e9929770d50e0ca3$var$pathKey;\n\n\nfunction $51d58653c6048ffd$var$resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */ }\n let resolved;\n try {\n resolved = $4ca03dc05bbe4be0$exports.sync(parsed.command, {\n path: env[$e9929770d50e0ca3$exports({\n env: env\n })],\n pathExt: withoutPathExt ? $dtrkX$path.delimiter : undefined\n });\n } catch (e) {\n /* Empty */ } finally{\n if (shouldSwitchCwd) process.chdir(cwd);\n }\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) resolved = $dtrkX$path.resolve(hasCustomCwd ? parsed.options.cwd : \"\", resolved);\n return resolved;\n}\nfunction $51d58653c6048ffd$var$resolveCommand(parsed) {\n return $51d58653c6048ffd$var$resolveCommandAttempt(parsed) || $51d58653c6048ffd$var$resolveCommandAttempt(parsed, true);\n}\n$51d58653c6048ffd$exports = $51d58653c6048ffd$var$resolveCommand;\n\n\nvar $14642610717c66e2$export$ae50443ffc990749;\nvar $14642610717c66e2$export$6ea29ee575e3f5ff;\n\"use strict\";\n// See http://www.robvanderwoude.com/escapechars.php\nconst $14642610717c66e2$var$metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\nfunction $14642610717c66e2$var$escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace($14642610717c66e2$var$metaCharsRegExp, \"^$1\");\n return arg;\n}\nfunction $14642610717c66e2$var$escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n // Algorithm below is based on https://qntm.org/cmd\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(\\\\*)\"/g, '$1$1\\\\\"');\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(\\\\*)$/, \"$1$1\");\n // All other backslashes occur literally\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n // Escape meta chars\n arg = arg.replace($14642610717c66e2$var$metaCharsRegExp, \"^$1\");\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) arg = arg.replace($14642610717c66e2$var$metaCharsRegExp, \"^$1\");\n return arg;\n}\n$14642610717c66e2$export$ae50443ffc990749 = $14642610717c66e2$var$escapeCommand;\n$14642610717c66e2$export$6ea29ee575e3f5ff = $14642610717c66e2$var$escapeArgument;\n\n\nvar $572e9b86f5fc3342$exports = {};\n\"use strict\";\n\nvar $58ccbcc4db2ecd48$exports = {};\n\"use strict\";\nvar $70842f99e7c30891$exports = {};\n\"use strict\";\n$70842f99e7c30891$exports = /^#!(.*)/;\n\n\n$58ccbcc4db2ecd48$exports = (string = \"\")=>{\n const match = string.match($70842f99e7c30891$exports);\n if (!match) return null;\n const [path, argument] = match[0].replace(/#! ?/, \"\").split(\" \");\n const binary = path.split(\"/\").pop();\n if (binary === \"env\") return argument;\n return argument ? `${binary} ${argument}` : binary;\n};\n\n\nfunction $572e9b86f5fc3342$var$readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n let fd;\n try {\n fd = $dtrkX$fs.openSync(command, \"r\");\n $dtrkX$fs.readSync(fd, buffer, 0, size, 0);\n $dtrkX$fs.closeSync(fd);\n } catch (e) {}\n // Attempt to extract shebang (null is returned if not a shebang)\n return $58ccbcc4db2ecd48$exports(buffer.toString());\n}\n$572e9b86f5fc3342$exports = $572e9b86f5fc3342$var$readShebang;\n\n\nconst $9cf15e4f01e764e1$var$isWin = process.platform === \"win32\";\nconst $9cf15e4f01e764e1$var$isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst $9cf15e4f01e764e1$var$isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\nfunction $9cf15e4f01e764e1$var$detectShebang(parsed) {\n parsed.file = $51d58653c6048ffd$exports(parsed);\n const shebang = parsed.file && $572e9b86f5fc3342$exports(parsed.file);\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n return $51d58653c6048ffd$exports(parsed);\n }\n return parsed.file;\n}\nfunction $9cf15e4f01e764e1$var$parseNonShell(parsed) {\n if (!$9cf15e4f01e764e1$var$isWin) return parsed;\n // Detect & add support for shebangs\n const commandFile = $9cf15e4f01e764e1$var$detectShebang(parsed);\n // We don't need a shell if the command filename is an executable\n const needsShell = !$9cf15e4f01e764e1$var$isExecutableRegExp.test(commandFile);\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = $9cf15e4f01e764e1$var$isCmdShimRegExp.test(commandFile);\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = $dtrkX$path.normalize(parsed.command);\n // Escape command & arguments\n parsed.command = $14642610717c66e2$export$ae50443ffc990749(parsed.command);\n parsed.args = parsed.args.map((arg)=>$14642610717c66e2$export$6ea29ee575e3f5ff(arg, needsDoubleEscapeMetaChars));\n const shellCommand = [\n parsed.command\n ].concat(parsed.args).join(\" \");\n parsed.args = [\n \"/d\",\n \"/s\",\n \"/c\",\n `\"${shellCommand}\"`\n ];\n parsed.command = process.env.comspec || \"cmd.exe\";\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n return parsed;\n}\nfunction $9cf15e4f01e764e1$var$parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n // Build our parsed object\n const parsed = {\n command: command,\n args: args,\n options: options,\n file: undefined,\n original: {\n command: command,\n args: args\n }\n };\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : $9cf15e4f01e764e1$var$parseNonShell(parsed);\n}\n$9cf15e4f01e764e1$exports = $9cf15e4f01e764e1$var$parse;\n\n\nvar $cee8c79eb01cd876$exports = {};\n\"use strict\";\nconst $cee8c79eb01cd876$var$isWin = process.platform === \"win32\";\nfunction $cee8c79eb01cd876$var$notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: \"ENOENT\",\n errno: \"ENOENT\",\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args\n });\n}\nfunction $cee8c79eb01cd876$var$hookChildProcess(cp, parsed) {\n if (!$cee8c79eb01cd876$var$isWin) return;\n const originalEmit = cp.emit;\n cp.emit = function(name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === \"exit\") {\n const err = $cee8c79eb01cd876$var$verifyENOENT(arg1, parsed, \"spawn\");\n if (err) return originalEmit.call(cp, \"error\", err);\n }\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\nfunction $cee8c79eb01cd876$var$verifyENOENT(status, parsed) {\n if ($cee8c79eb01cd876$var$isWin && status === 1 && !parsed.file) return $cee8c79eb01cd876$var$notFoundError(parsed.original, \"spawn\");\n return null;\n}\nfunction $cee8c79eb01cd876$var$verifyENOENTSync(status, parsed) {\n if ($cee8c79eb01cd876$var$isWin && status === 1 && !parsed.file) return $cee8c79eb01cd876$var$notFoundError(parsed.original, \"spawnSync\");\n return null;\n}\n$cee8c79eb01cd876$exports = {\n hookChildProcess: $cee8c79eb01cd876$var$hookChildProcess,\n verifyENOENT: $cee8c79eb01cd876$var$verifyENOENT,\n verifyENOENTSync: $cee8c79eb01cd876$var$verifyENOENTSync,\n notFoundError: $cee8c79eb01cd876$var$notFoundError\n};\n\n\nfunction $338cd3297632d74f$var$spawn(command, args, options) {\n // Parse the arguments\n const parsed = $9cf15e4f01e764e1$exports(command, args, options);\n // Spawn the child process\n const spawned = $dtrkX$child_process.spawn(parsed.command, parsed.args, parsed.options);\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n $cee8c79eb01cd876$exports.hookChildProcess(spawned, parsed);\n return spawned;\n}\nfunction $338cd3297632d74f$var$spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = $9cf15e4f01e764e1$exports(command, args, options);\n // Spawn the child process\n const result = $dtrkX$child_process.spawnSync(parsed.command, parsed.args, parsed.options);\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || $cee8c79eb01cd876$exports.verifyENOENTSync(result.status, parsed);\n return result;\n}\n$338cd3297632d74f$exports = $338cd3297632d74f$var$spawn;\n$338cd3297632d74f$exports.spawn = $338cd3297632d74f$var$spawn;\n$338cd3297632d74f$exports.sync = $338cd3297632d74f$var$spawnSync;\n$338cd3297632d74f$exports._parse = $9cf15e4f01e764e1$exports;\n$338cd3297632d74f$exports._enoent = $cee8c79eb01cd876$exports;\n\n\nfunction $ee7a5bcd6c625a3d$export$2e2bcd8739ae039(input) {\n const LF = typeof input === \"string\" ? \"\\n\" : \"\\n\".charCodeAt();\n const CR = typeof input === \"string\" ? \"\\r\" : \"\\r\".charCodeAt();\n if (input[input.length - 1] === LF) input = input.slice(0, -1);\n if (input[input.length - 1] === CR) input = input.slice(0, -1);\n return input;\n}\n\n\n\n\n\nfunction $24a6dd14ab43103a$export$2e2bcd8739ae039(options = {}) {\n const { env: env = process.env, platform: platform = process.platform } = options;\n if (platform !== \"win32\") return \"PATH\";\n return Object.keys(env).reverse().find((key)=>key.toUpperCase() === \"PATH\") || \"Path\";\n}\n\n\nfunction $3cb9811b7539583d$export$62a298cbef08d65c(options = {}) {\n const { cwd: cwd = (0, ($parcel$interopDefault($dtrkX$nodeprocess))).cwd(), path: path_ = (0, ($parcel$interopDefault($dtrkX$nodeprocess))).env[(0, $24a6dd14ab43103a$export$2e2bcd8739ae039)()], execPath: execPath = (0, ($parcel$interopDefault($dtrkX$nodeprocess))).execPath } = options;\n let previous;\n const execPathString = execPath instanceof URL ? (0, ($parcel$interopDefault($dtrkX$nodeurl))).fileURLToPath(execPath) : execPath;\n const cwdString = cwd instanceof URL ? (0, ($parcel$interopDefault($dtrkX$nodeurl))).fileURLToPath(cwd) : cwd;\n let cwdPath = (0, ($parcel$interopDefault($dtrkX$nodepath))).resolve(cwdString);\n const result = [];\n while(previous !== cwdPath){\n result.push((0, ($parcel$interopDefault($dtrkX$nodepath))).join(cwdPath, \"node_modules/.bin\"));\n previous = cwdPath;\n cwdPath = (0, ($parcel$interopDefault($dtrkX$nodepath))).resolve(cwdPath, \"..\");\n }\n // Ensure the running `node` binary is used.\n result.push((0, ($parcel$interopDefault($dtrkX$nodepath))).resolve(cwdString, execPathString, \"..\"));\n return [\n ...result,\n path_\n ].join((0, ($parcel$interopDefault($dtrkX$nodepath))).delimiter);\n}\nfunction $3cb9811b7539583d$export$340e1fbaac04248b({ env: env = (0, ($parcel$interopDefault($dtrkX$nodeprocess))).env, ...options } = {}) {\n env = {\n ...env\n };\n const path = (0, $24a6dd14ab43103a$export$2e2bcd8739ae039)({\n env: env\n });\n options.path = env[path];\n env[path] = $3cb9811b7539583d$export$62a298cbef08d65c(options);\n return env;\n}\n\n\nconst $9b3fe0562d17e106$var$copyProperty = (to, from, property, ignoreNonConfigurable)=>{\n // `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n // `Function#prototype` is non-writable and non-configurable so can never be modified.\n if (property === \"length\" || property === \"prototype\") return;\n // `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n if (property === \"arguments\" || property === \"caller\") return;\n const toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n if (!$9b3fe0562d17e106$var$canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) return;\n Object.defineProperty(to, property, fromDescriptor);\n};\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst $9b3fe0562d17e106$var$canCopyProperty = function(toDescriptor, fromDescriptor) {\n return toDescriptor === undefined || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value);\n};\nconst $9b3fe0562d17e106$var$changePrototype = (to, from)=>{\n const fromPrototype = Object.getPrototypeOf(from);\n if (fromPrototype === Object.getPrototypeOf(to)) return;\n Object.setPrototypeOf(to, fromPrototype);\n};\nconst $9b3fe0562d17e106$var$wrappedToString = (withName, fromBody)=>`/* Wrapped ${withName}*/\\n${fromBody}`;\nconst $9b3fe0562d17e106$var$toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, \"toString\");\nconst $9b3fe0562d17e106$var$toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, \"name\");\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst $9b3fe0562d17e106$var$changeToString = (to, from, name)=>{\n const withName = name === \"\" ? \"\" : `with ${name.trim()}() `;\n const newToString = $9b3fe0562d17e106$var$wrappedToString.bind(null, withName, from.toString());\n // Ensure `to.toString.toString` is non-enumerable and has the same `same`\n Object.defineProperty(newToString, \"name\", $9b3fe0562d17e106$var$toStringName);\n Object.defineProperty(to, \"toString\", {\n ...$9b3fe0562d17e106$var$toStringDescriptor,\n value: newToString\n });\n};\nfunction $9b3fe0562d17e106$export$2e2bcd8739ae039(to, from, { ignoreNonConfigurable: ignoreNonConfigurable = false } = {}) {\n const { name: name } = to;\n for (const property of Ref