Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pnpm

Package Overview
Dependencies
Maintainers
1
Versions
1075
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pnpm - npm Package Compare versions

Comparing version 0.17.0 to 0.18.0

lib/install/is_available.js

21

HISTORY.md

@@ -0,1 +1,12 @@

## [v0.18.0]
> Feb 12, 2016
- [#107] - sort dependencies in `--save`. ([@iamstarkov])
- [#93] - (internal) Resolve store_path. ([@kesla])
- [#94] - Fix `--production`. ([@kesla])
- [#86] - Enable HTTPS keepalive. ([@fengmk2])
- [#81] - Allow installing new versions of existing deps.
[v0.18.0]: https://github.com/rstacruz/pnpm/compare/v0.17.0...v0.18.0
## [v0.17.0]

@@ -61,3 +72,3 @@ > Feb 3, 2016

- [#9], [#36] - Support exact versions in scoped packages (`pnpm i @rstacruz/tap-spec@4.1.1`).
- [#9], [#36] - Support exact versions in scoped packages.

@@ -135,3 +146,3 @@ [v0.11.1]: https://github.com/rstacruz/pnpm/compare/v0.11.0...v0.11.1

- Support scoped modules without version spec (eg, `pnpm i @rstacruz/tap-spec`).
- Support scoped modules without version spec (eg, `pnpm i [@rstacruz]/tap-spec`).
- Lots of internal cleanups.

@@ -217,2 +228,5 @@

[#80]: https://github.com/rstacruz/pnpm/issues/80
[#86]: https://github.com/rstacruz/pnpm/issues/86
[#93]: https://github.com/rstacruz/pnpm/issues/93
[#107]: https://github.com/rstacruz/pnpm/issues/107
[@asbjornenge]: https://github.com/asbjornenge

@@ -223,1 +237,4 @@ [@davej]: https://github.com/davej

[@rstacruz]: https://github.com/rstacruz
[@iamstarkov]: https://github.com/iamstarkov
[@kesla]: https://github.com/kesla
[@fengmk2]: https://github.com/fengmk2

5

lib/cmd/install.js
var readPkgUp = require('read-pkg-up');
var dirname = require('path').dirname;
var join = require('path').join;
var resolve = require('path').resolve;
var assign = require('object-assign');

@@ -52,3 +53,3 @@ var npa = require('npm-package-arg');

ctx.root = root;
ctx.store = join(root, config.store_path);
ctx.store = resolve(root, config.store_path);
if (!flags.quiet) ctx.log = logger();else ctx.log = function () {

@@ -80,2 +81,2 @@ return function () {};

module.exports = installCmd;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYn4vY21kL2luc3RhbGwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSSxZQUFZLFFBQVEsYUFBUixDQUFaO0FBQ0osSUFBSSxVQUFVLFFBQVEsTUFBUixFQUFnQixPQUFoQjtBQUNkLElBQUksT0FBTyxRQUFRLE1BQVIsRUFBZ0IsSUFBaEI7QUFDWCxJQUFJLFNBQVMsUUFBUSxlQUFSLENBQVQ7QUFDSixJQUFJLE1BQU0sUUFBUSxpQkFBUixDQUFOOztBQUVKLElBQUksU0FBUyxRQUFRLFdBQVIsQ0FBVDtBQUNKLElBQUksa0JBQWtCLFFBQVEscUJBQVIsQ0FBbEI7QUFDSixJQUFJLFNBQVMsUUFBUSxXQUFSLENBQVQ7QUFDSixJQUFJLE9BQU8sUUFBUSxTQUFSLENBQVA7QUFDSixJQUFJLFlBQVksUUFBUSx1QkFBUixDQUFaOzs7Ozs7OztBQVFKLFNBQVMsVUFBVCxDQUFxQixLQUFyQixFQUE0QixLQUE1QixFQUFtQztBQUNqQyxNQUFJLE1BQU0sRUFBTixDQUQ2QjtBQUVqQyxNQUFJLEdBQUosQ0FGaUM7QUFHakMsTUFBSSxpQkFBSixDQUhpQztBQUlqQyxNQUFJLFdBQUosQ0FKaUM7QUFLakMsTUFBSSxzQkFBc0IsTUFBTSxVQUFOLElBQW9CLFFBQVEsR0FBUixDQUFZLFFBQVosS0FBeUIsWUFBekIsQ0FMYjs7QUFPakMsU0FBTyxZQUNKLElBREksQ0FDQyxhQUFLO0FBQUUsVUFBTSxDQUFOLENBQUY7R0FBTCxDQURELENBRUosSUFGSSxDQUVDO1dBQUssY0FBYyxJQUFJLElBQUo7R0FBbkIsQ0FGRCxDQUdKLElBSEksQ0FHQztXQUFLO0dBQUwsQ0FIRCxDQUlKLElBSkksQ0FJQztXQUFLLFVBQVUsR0FBVixFQUFlLElBQUksS0FBSixFQUFXLElBQUksUUFBSjtHQUEvQixDQUpSLENBUGlDOztBQWFqQyxXQUFTLE9BQVQsR0FBb0I7QUFDbEIsa0JBQWMsU0FBUyxNQUFNLE1BQU4sR0FBZSxPQUF4QixHQUFrQyxTQUFsQyxDQURJOztBQUdsQixRQUFJLGdCQUFnQixPQUFoQixFQUF5QjtBQUMzQiwwQkFBb0IsS0FBcEIsQ0FEMkI7S0FBN0IsTUFFTztBQUNMLDBCQUFvQixPQUFPLEVBQVAsRUFBVyxJQUFJLEdBQUosQ0FBUSxZQUFSLElBQXdCLEVBQXhCLENBQS9CLENBREs7QUFFTCxVQUFJLENBQUMsbUJBQUQsRUFBc0IsT0FBTyxpQkFBUCxFQUEwQixJQUFJLEdBQUosQ0FBUSxlQUFSLElBQTJCLEVBQTNCLENBQTFCLENBQTFCO0tBSkY7O0FBT0EsV0FBTyxnQkFBZ0IsR0FBaEIsRUFDTCxpQkFESyxFQUVMLEtBQUssSUFBSSxJQUFKLEVBQVUsY0FBZixDQUZLLEVBR0wsS0FISyxFQUlKLElBSkksQ0FJQyxRQUpELENBQVAsQ0FWa0I7R0FBcEI7O0FBaUJBLFdBQVMsYUFBVCxDQUF3QixXQUF4QixFQUFxQztBQUNuQyxRQUFJLE9BQU8sY0FBYyxRQUFRLFdBQVIsQ0FBZCxHQUFxQyxRQUFRLEdBQVIsRUFBckMsQ0FEd0I7QUFFbkMsUUFBSSxJQUFKLEdBQVcsSUFBWCxDQUZtQztBQUduQyxRQUFJLEtBQUosR0FBWSxLQUFLLElBQUwsRUFBVyxPQUFPLFVBQVAsQ0FBdkIsQ0FIbUM7QUFJbkMsUUFBSSxDQUFDLE1BQU0sS0FBTixFQUFhLElBQUksR0FBSixHQUFVLFFBQVYsQ0FBbEIsS0FDSyxJQUFJLEdBQUosR0FBVSxZQUFZO0FBQUUsYUFBTyxZQUFZLEVBQVosQ0FBVDtLQUFaLENBRGY7R0FKRjs7QUFRQSxXQUFTLFFBQVQsQ0FBbUIsUUFBbkIsRUFBNkI7QUFDM0IsUUFBSSxXQUFXLFlBQVksS0FBWixDQUFYLENBRHVCO0FBRTNCLFFBQUksWUFBWSxnQkFBZ0IsT0FBaEIsRUFBeUI7QUFDdkMsVUFBSSxhQUFhLE1BQU0sR0FBTixDQUFVO2VBQVcsSUFBSSxPQUFKLEVBQWEsSUFBYjtPQUFYLENBQXZCLENBRG1DO0FBRXZDLFVBQUksZ0JBQWdCLFNBQVMsTUFBVCxDQUFnQjtlQUFPLFdBQVcsT0FBWCxDQUFtQixJQUFJLElBQUosQ0FBbkIsR0FBK0IsQ0FBQyxDQUFEO09BQXRDLENBQWhDLENBRm1DO0FBR3ZDLGFBQU8sS0FBSyxHQUFMLEVBQVUsYUFBVixFQUF5QixRQUF6QixFQUFtQyxNQUFNLFNBQU4sQ0FBMUMsQ0FIdUM7S0FBekM7R0FGRjtDQXRDRjs7QUFnREEsU0FBUyxXQUFULENBQXNCLEtBQXRCLEVBQTZCO0FBQzNCLE1BQUksTUFBTSxJQUFOLEVBQVksT0FBTyxjQUFQLENBQWhCO0FBQ0EsTUFBSSxNQUFNLE9BQU4sRUFBZSxPQUFPLGlCQUFQLENBQW5CO0FBQ0EsTUFBSSxNQUFNLFlBQU4sRUFBb0IsT0FBTyxzQkFBUCxDQUF4QjtDQUhGOztBQU1BLE9BQU8sT0FBUCxHQUFpQixVQUFqQiIsImZpbGUiOiJpbnN0YWxsLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlYWRQa2dVcCA9IHJlcXVpcmUoJ3JlYWQtcGtnLXVwJylcbnZhciBkaXJuYW1lID0gcmVxdWlyZSgncGF0aCcpLmRpcm5hbWVcbnZhciBqb2luID0gcmVxdWlyZSgncGF0aCcpLmpvaW5cbnZhciBhc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJylcbnZhciBucGEgPSByZXF1aXJlKCducG0tcGFja2FnZS1hcmcnKVxuXG52YXIgbG9nZ2VyID0gcmVxdWlyZSgnLi4vbG9nZ2VyJylcbnZhciBpbnN0YWxsTXVsdGlwbGUgPSByZXF1aXJlKCcuLi9pbnN0YWxsX211bHRpcGxlJylcbnZhciBjb25maWcgPSByZXF1aXJlKCcuLi9jb25maWcnKVxudmFyIHNhdmUgPSByZXF1aXJlKCcuLi9zYXZlJylcbnZhciBsaW5rUGVlcnMgPSByZXF1aXJlKCcuLi9pbnN0YWxsL2xpbmtfcGVlcnMnKVxuXG4vKlxuICogUGVyZm9ybSBpbnN0YWxsYXRpb24uXG4gKlxuICogICAgIGluc3RhbGxDbWQoWyAnbG9kYXNoJywgJ2ZvbycgXSwgeyBxdWlldDogdHJ1ZSB9KVxuICovXG5cbmZ1bmN0aW9uIGluc3RhbGxDbWQgKGlucHV0LCBmbGFncykge1xuICB2YXIgY3R4ID0ge31cbiAgdmFyIHBrZ1xuICB2YXIgcGFja2FnZXNUb0luc3RhbGxcbiAgdmFyIGluc3RhbGxUeXBlXG4gIHZhciBpc1Byb2R1Y3Rpb25JbnN0YWxsID0gZmxhZ3MucHJvZHVjdGlvbiB8fCBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nXG5cbiAgcmV0dXJuIHJlYWRQa2dVcCgpXG4gICAgLnRoZW4oXyA9PiB7IHBrZyA9IF8gfSlcbiAgICAudGhlbihfID0+IHVwZGF0ZUNvbnRleHQocGtnLnBhdGgpKVxuICAgIC50aGVuKF8gPT4gaW5zdGFsbCgpKVxuICAgIC50aGVuKF8gPT4gbGlua1BlZXJzKHBrZywgY3R4LnN0b3JlLCBjdHguaW5zdGFsbHMpKVxuXG4gIGZ1bmN0aW9uIGluc3RhbGwgKCkge1xuICAgIGluc3RhbGxUeXBlID0gaW5wdXQgJiYgaW5wdXQubGVuZ3RoID8gJ25hbWVkJyA6ICdnZW5lcmFsJ1xuXG4gICAgaWYgKGluc3RhbGxUeXBlID09PSAnbmFtZWQnKSB7XG4gICAgICBwYWNrYWdlc1RvSW5zdGFsbCA9IGlucHV0XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhY2thZ2VzVG9JbnN0YWxsID0gYXNzaWduKHt9LCBwa2cucGtnLmRlcGVuZGVuY2llcyB8fCB7fSlcbiAgICAgIGlmICghaXNQcm9kdWN0aW9uSW5zdGFsbCkgYXNzaWduKHBhY2thZ2VzVG9JbnN0YWxsLCBwa2cucGtnLmRldkRlcGVuZGVuY2llcyB8fCB7fSlcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFsbE11bHRpcGxlKGN0eCxcbiAgICAgIHBhY2thZ2VzVG9JbnN0YWxsLFxuICAgICAgam9pbihjdHgucm9vdCwgJ25vZGVfbW9kdWxlcycpLFxuICAgICAgZmxhZ3MpXG4gICAgICAudGhlbihzYXZlUGtncylcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZUNvbnRleHQgKHBhY2thZ2VKc29uKSB7XG4gICAgdmFyIHJvb3QgPSBwYWNrYWdlSnNvbiA/IGRpcm5hbWUocGFja2FnZUpzb24pIDogcHJvY2Vzcy5jd2QoKVxuICAgIGN0eC5yb290ID0gcm9vdFxuICAgIGN0eC5zdG9yZSA9IGpvaW4ocm9vdCwgY29uZmlnLnN0b3JlX3BhdGgpXG4gICAgaWYgKCFmbGFncy5xdWlldCkgY3R4LmxvZyA9IGxvZ2dlcigpXG4gICAgZWxzZSBjdHgubG9nID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZnVuY3Rpb24gKCkge30gfVxuICB9XG5cbiAgZnVuY3Rpb24gc2F2ZVBrZ3MgKHBhY2thZ2VzKSB7XG4gICAgdmFyIHNhdmVUeXBlID0gZ2V0U2F2ZVR5cGUoZmxhZ3MpXG4gICAgaWYgKHNhdmVUeXBlICYmIGluc3RhbGxUeXBlID09PSAnbmFtZWQnKSB7XG4gICAgICB2YXIgaW5wdXROYW1lcyA9IGlucHV0Lm1hcChwa2dOYW1lID0+IG5wYShwa2dOYW1lKS5uYW1lKVxuICAgICAgdmFyIHNhdmVkUGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIocGtnID0+IGlucHV0TmFtZXMuaW5kZXhPZihwa2cubmFtZSkgPiAtMSlcbiAgICAgIHJldHVybiBzYXZlKHBrZywgc2F2ZWRQYWNrYWdlcywgc2F2ZVR5cGUsIGZsYWdzLnNhdmVFeGFjdClcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U2F2ZVR5cGUgKGZsYWdzKSB7XG4gIGlmIChmbGFncy5zYXZlKSByZXR1cm4gJ2RlcGVuZGVuY2llcydcbiAgaWYgKGZsYWdzLnNhdmVEZXYpIHJldHVybiAnZGV2RGVwZW5kZW5jaWVzJ1xuICBpZiAoZmxhZ3Muc2F2ZU9wdGlvbmFsKSByZXR1cm4gJ29wdGlvbmFsRGVwZW5kZW5jaWVzJ1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluc3RhbGxDbWRcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYn4vY21kL2luc3RhbGwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSSxZQUFZLFFBQVEsYUFBUixDQUFaO0FBQ0osSUFBSSxVQUFVLFFBQVEsTUFBUixFQUFnQixPQUFoQjtBQUNkLElBQUksT0FBTyxRQUFRLE1BQVIsRUFBZ0IsSUFBaEI7QUFDWCxJQUFJLFVBQVUsUUFBUSxNQUFSLEVBQWdCLE9BQWhCO0FBQ2QsSUFBSSxTQUFTLFFBQVEsZUFBUixDQUFUO0FBQ0osSUFBSSxNQUFNLFFBQVEsaUJBQVIsQ0FBTjs7QUFFSixJQUFJLFNBQVMsUUFBUSxXQUFSLENBQVQ7QUFDSixJQUFJLGtCQUFrQixRQUFRLHFCQUFSLENBQWxCO0FBQ0osSUFBSSxTQUFTLFFBQVEsV0FBUixDQUFUO0FBQ0osSUFBSSxPQUFPLFFBQVEsU0FBUixDQUFQO0FBQ0osSUFBSSxZQUFZLFFBQVEsdUJBQVIsQ0FBWjs7Ozs7Ozs7QUFRSixTQUFTLFVBQVQsQ0FBcUIsS0FBckIsRUFBNEIsS0FBNUIsRUFBbUM7QUFDakMsTUFBSSxNQUFNLEVBQU4sQ0FENkI7QUFFakMsTUFBSSxHQUFKLENBRmlDO0FBR2pDLE1BQUksaUJBQUosQ0FIaUM7QUFJakMsTUFBSSxXQUFKLENBSmlDO0FBS2pDLE1BQUksc0JBQXNCLE1BQU0sVUFBTixJQUFvQixRQUFRLEdBQVIsQ0FBWSxRQUFaLEtBQXlCLFlBQXpCLENBTGI7O0FBT2pDLFNBQU8sWUFDSixJQURJLENBQ0MsYUFBSztBQUFFLFVBQU0sQ0FBTixDQUFGO0dBQUwsQ0FERCxDQUVKLElBRkksQ0FFQztXQUFLLGNBQWMsSUFBSSxJQUFKO0dBQW5CLENBRkQsQ0FHSixJQUhJLENBR0M7V0FBSztHQUFMLENBSEQsQ0FJSixJQUpJLENBSUM7V0FBSyxVQUFVLEdBQVYsRUFBZSxJQUFJLEtBQUosRUFBVyxJQUFJLFFBQUo7R0FBL0IsQ0FKUixDQVBpQzs7QUFhakMsV0FBUyxPQUFULEdBQW9CO0FBQ2xCLGtCQUFjLFNBQVMsTUFBTSxNQUFOLEdBQWUsT0FBeEIsR0FBa0MsU0FBbEMsQ0FESTs7QUFHbEIsUUFBSSxnQkFBZ0IsT0FBaEIsRUFBeUI7QUFDM0IsMEJBQW9CLEtBQXBCLENBRDJCO0tBQTdCLE1BRU87QUFDTCwwQkFBb0IsT0FBTyxFQUFQLEVBQVcsSUFBSSxHQUFKLENBQVEsWUFBUixJQUF3QixFQUF4QixDQUEvQixDQURLO0FBRUwsVUFBSSxDQUFDLG1CQUFELEVBQXNCLE9BQU8saUJBQVAsRUFBMEIsSUFBSSxHQUFKLENBQVEsZUFBUixJQUEyQixFQUEzQixDQUExQixDQUExQjtLQUpGOztBQU9BLFdBQU8sZ0JBQWdCLEdBQWhCLEVBQ0wsaUJBREssRUFFTCxLQUFLLElBQUksSUFBSixFQUFVLGNBQWYsQ0FGSyxFQUdMLEtBSEssRUFJSixJQUpJLENBSUMsUUFKRCxDQUFQLENBVmtCO0dBQXBCOztBQWlCQSxXQUFTLGFBQVQsQ0FBd0IsV0FBeEIsRUFBcUM7QUFDbkMsUUFBSSxPQUFPLGNBQWMsUUFBUSxXQUFSLENBQWQsR0FBcUMsUUFBUSxHQUFSLEVBQXJDLENBRHdCO0FBRW5DLFFBQUksSUFBSixHQUFXLElBQVgsQ0FGbUM7QUFHbkMsUUFBSSxLQUFKLEdBQVksUUFBUSxJQUFSLEVBQWMsT0FBTyxVQUFQLENBQTFCLENBSG1DO0FBSW5DLFFBQUksQ0FBQyxNQUFNLEtBQU4sRUFBYSxJQUFJLEdBQUosR0FBVSxRQUFWLENBQWxCLEtBQ0ssSUFBSSxHQUFKLEdBQVUsWUFBWTtBQUFFLGFBQU8sWUFBWSxFQUFaLENBQVQ7S0FBWixDQURmO0dBSkY7O0FBUUEsV0FBUyxRQUFULENBQW1CLFFBQW5CLEVBQTZCO0FBQzNCLFFBQUksV0FBVyxZQUFZLEtBQVosQ0FBWCxDQUR1QjtBQUUzQixRQUFJLFlBQVksZ0JBQWdCLE9BQWhCLEVBQXlCO0FBQ3ZDLFVBQUksYUFBYSxNQUFNLEdBQU4sQ0FBVTtlQUFXLElBQUksT0FBSixFQUFhLElBQWI7T0FBWCxDQUF2QixDQURtQztBQUV2QyxVQUFJLGdCQUFnQixTQUFTLE1BQVQsQ0FBZ0I7ZUFBTyxXQUFXLE9BQVgsQ0FBbUIsSUFBSSxJQUFKLENBQW5CLEdBQStCLENBQUMsQ0FBRDtPQUF0QyxDQUFoQyxDQUZtQztBQUd2QyxhQUFPLEtBQUssR0FBTCxFQUFVLGFBQVYsRUFBeUIsUUFBekIsRUFBbUMsTUFBTSxTQUFOLENBQTFDLENBSHVDO0tBQXpDO0dBRkY7Q0F0Q0Y7O0FBZ0RBLFNBQVMsV0FBVCxDQUFzQixLQUF0QixFQUE2QjtBQUMzQixNQUFJLE1BQU0sSUFBTixFQUFZLE9BQU8sY0FBUCxDQUFoQjtBQUNBLE1BQUksTUFBTSxPQUFOLEVBQWUsT0FBTyxpQkFBUCxDQUFuQjtBQUNBLE1BQUksTUFBTSxZQUFOLEVBQW9CLE9BQU8sc0JBQVAsQ0FBeEI7Q0FIRjs7QUFNQSxPQUFPLE9BQVAsR0FBaUIsVUFBakIiLCJmaWxlIjoiaW5zdGFsbC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZWFkUGtnVXAgPSByZXF1aXJlKCdyZWFkLXBrZy11cCcpXG52YXIgZGlybmFtZSA9IHJlcXVpcmUoJ3BhdGgnKS5kaXJuYW1lXG52YXIgam9pbiA9IHJlcXVpcmUoJ3BhdGgnKS5qb2luXG52YXIgcmVzb2x2ZSA9IHJlcXVpcmUoJ3BhdGgnKS5yZXNvbHZlXG52YXIgYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpXG52YXIgbnBhID0gcmVxdWlyZSgnbnBtLXBhY2thZ2UtYXJnJylcblxudmFyIGxvZ2dlciA9IHJlcXVpcmUoJy4uL2xvZ2dlcicpXG52YXIgaW5zdGFsbE11bHRpcGxlID0gcmVxdWlyZSgnLi4vaW5zdGFsbF9tdWx0aXBsZScpXG52YXIgY29uZmlnID0gcmVxdWlyZSgnLi4vY29uZmlnJylcbnZhciBzYXZlID0gcmVxdWlyZSgnLi4vc2F2ZScpXG52YXIgbGlua1BlZXJzID0gcmVxdWlyZSgnLi4vaW5zdGFsbC9saW5rX3BlZXJzJylcblxuLypcbiAqIFBlcmZvcm0gaW5zdGFsbGF0aW9uLlxuICpcbiAqICAgICBpbnN0YWxsQ21kKFsgJ2xvZGFzaCcsICdmb28nIF0sIHsgcXVpZXQ6IHRydWUgfSlcbiAqL1xuXG5mdW5jdGlvbiBpbnN0YWxsQ21kIChpbnB1dCwgZmxhZ3MpIHtcbiAgdmFyIGN0eCA9IHt9XG4gIHZhciBwa2dcbiAgdmFyIHBhY2thZ2VzVG9JbnN0YWxsXG4gIHZhciBpbnN0YWxsVHlwZVxuICB2YXIgaXNQcm9kdWN0aW9uSW5zdGFsbCA9IGZsYWdzLnByb2R1Y3Rpb24gfHwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJ1xuXG4gIHJldHVybiByZWFkUGtnVXAoKVxuICAgIC50aGVuKF8gPT4geyBwa2cgPSBfIH0pXG4gICAgLnRoZW4oXyA9PiB1cGRhdGVDb250ZXh0KHBrZy5wYXRoKSlcbiAgICAudGhlbihfID0+IGluc3RhbGwoKSlcbiAgICAudGhlbihfID0+IGxpbmtQZWVycyhwa2csIGN0eC5zdG9yZSwgY3R4Lmluc3RhbGxzKSlcblxuICBmdW5jdGlvbiBpbnN0YWxsICgpIHtcbiAgICBpbnN0YWxsVHlwZSA9IGlucHV0ICYmIGlucHV0Lmxlbmd0aCA/ICduYW1lZCcgOiAnZ2VuZXJhbCdcblxuICAgIGlmIChpbnN0YWxsVHlwZSA9PT0gJ25hbWVkJykge1xuICAgICAgcGFja2FnZXNUb0luc3RhbGwgPSBpbnB1dFxuICAgIH0gZWxzZSB7XG4gICAgICBwYWNrYWdlc1RvSW5zdGFsbCA9IGFzc2lnbih7fSwgcGtnLnBrZy5kZXBlbmRlbmNpZXMgfHwge30pXG4gICAgICBpZiAoIWlzUHJvZHVjdGlvbkluc3RhbGwpIGFzc2lnbihwYWNrYWdlc1RvSW5zdGFsbCwgcGtnLnBrZy5kZXZEZXBlbmRlbmNpZXMgfHwge30pXG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3RhbGxNdWx0aXBsZShjdHgsXG4gICAgICBwYWNrYWdlc1RvSW5zdGFsbCxcbiAgICAgIGpvaW4oY3R4LnJvb3QsICdub2RlX21vZHVsZXMnKSxcbiAgICAgIGZsYWdzKVxuICAgICAgLnRoZW4oc2F2ZVBrZ3MpXG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVDb250ZXh0IChwYWNrYWdlSnNvbikge1xuICAgIHZhciByb290ID0gcGFja2FnZUpzb24gPyBkaXJuYW1lKHBhY2thZ2VKc29uKSA6IHByb2Nlc3MuY3dkKClcbiAgICBjdHgucm9vdCA9IHJvb3RcbiAgICBjdHguc3RvcmUgPSByZXNvbHZlKHJvb3QsIGNvbmZpZy5zdG9yZV9wYXRoKVxuICAgIGlmICghZmxhZ3MucXVpZXQpIGN0eC5sb2cgPSBsb2dnZXIoKVxuICAgIGVsc2UgY3R4LmxvZyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHt9IH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNhdmVQa2dzIChwYWNrYWdlcykge1xuICAgIHZhciBzYXZlVHlwZSA9IGdldFNhdmVUeXBlKGZsYWdzKVxuICAgIGlmIChzYXZlVHlwZSAmJiBpbnN0YWxsVHlwZSA9PT0gJ25hbWVkJykge1xuICAgICAgdmFyIGlucHV0TmFtZXMgPSBpbnB1dC5tYXAocGtnTmFtZSA9PiBucGEocGtnTmFtZSkubmFtZSlcbiAgICAgIHZhciBzYXZlZFBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKHBrZyA9PiBpbnB1dE5hbWVzLmluZGV4T2YocGtnLm5hbWUpID4gLTEpXG4gICAgICByZXR1cm4gc2F2ZShwa2csIHNhdmVkUGFja2FnZXMsIHNhdmVUeXBlLCBmbGFncy5zYXZlRXhhY3QpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFNhdmVUeXBlIChmbGFncykge1xuICBpZiAoZmxhZ3Muc2F2ZSkgcmV0dXJuICdkZXBlbmRlbmNpZXMnXG4gIGlmIChmbGFncy5zYXZlRGV2KSByZXR1cm4gJ2RldkRlcGVuZGVuY2llcydcbiAgaWYgKGZsYWdzLnNhdmVPcHRpb25hbCkgcmV0dXJuICdvcHRpb25hbERlcGVuZGVuY2llcydcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnN0YWxsQ21kXG4iXX0=

@@ -7,2 +7,4 @@ var Promise = require('./promise');

var config = require('./config');
var HttpAgent = require('http').Agent;
var HttpsAgent = require('https').Agent;

@@ -12,2 +14,10 @@ var cache = {};

var throater = throat(+config.concurrency);
var httpKeepaliveAgent = new HttpAgent({
keepAlive: true,
keepAliveMsecs: 30000
});
var httpsKeepaliveAgent = new HttpsAgent({
keepAlive: true,
keepAliveMsecs: 30000
});

@@ -24,3 +34,3 @@ /*

debug(url);
var promise = got(url, extend(options));
var promise = got(url, extend(url, options));
resolve({ promise: promise });

@@ -42,3 +52,3 @@ return promise;

debug(url, '[stream]');
var stream = got.stream(url, extend(options));
var stream = got.stream(url, extend(url, options));
resolve(stream);

@@ -60,4 +70,9 @@ return waiter(stream);

function extend(options) {
function extend(url, options) {
if (!options) options = {};
if (url.indexOf('https://') === 0) {
options.agent = httpsKeepaliveAgent;
} else {
options.agent = httpKeepaliveAgent;
}
return assign({}, options, {

@@ -69,2 +84,2 @@ headers: assign({}, options.headers || {}, {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYn4vZ290LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUksVUFBVSxRQUFRLFdBQVIsQ0FBVjtBQUNKLElBQUksUUFBUSxRQUFRLE9BQVIsRUFBaUIsV0FBakIsQ0FBUjtBQUNKLElBQUksU0FBUyxRQUFRLGVBQVIsQ0FBVDtBQUNKLElBQUksU0FBUyxRQUFRLFFBQVIsQ0FBVDtBQUNKLElBQUksTUFBTSxRQUFRLEtBQVIsQ0FBTjtBQUNKLElBQUksU0FBUyxRQUFRLFVBQVIsQ0FBVDs7QUFFSixJQUFJLFFBQVEsRUFBUjs7QUFFSixJQUFJLFdBQVcsT0FBTyxDQUFDLE9BQU8sV0FBUCxDQUFuQjs7Ozs7O0FBTUosUUFBUSxHQUFSLEdBQWMsVUFBVSxHQUFWLEVBQWUsT0FBZixFQUF3QjtBQUNwQyxNQUFJLE1BQU0sS0FBSyxTQUFMLENBQWUsQ0FBRSxHQUFGLEVBQU8sT0FBUCxDQUFmLENBQU4sQ0FEZ0M7QUFFcEMsTUFBSSxDQUFDLE1BQU0sR0FBTixDQUFELEVBQWE7QUFDZixVQUFNLEdBQU4sSUFBYSxJQUFJLE9BQUosQ0FBWSxtQkFBVztBQUNsQyxlQUFTLGFBQUs7QUFDWixjQUFNLEdBQU4sRUFEWTtBQUVaLFlBQUksVUFBVSxJQUFJLEdBQUosRUFBUyxPQUFPLE9BQVAsQ0FBVCxDQUFWLENBRlE7QUFHWixnQkFBUSxFQUFFLFNBQVMsT0FBVCxFQUFWLEVBSFk7QUFJWixlQUFPLE9BQVAsQ0FKWTtPQUFMLENBQVQsQ0FEa0M7S0FBWCxDQUF6QixDQURlO0dBQWpCO0FBVUEsU0FBTyxNQUFNLEdBQU4sQ0FBUCxDQVpvQztDQUF4Qjs7Ozs7O0FBbUJkLFFBQVEsU0FBUixHQUFvQixVQUFVLEdBQVYsRUFBZSxPQUFmLEVBQXdCO0FBQzFDLFNBQU8sSUFBSSxPQUFKLENBQVksbUJBQVc7QUFDNUIsYUFBUyxhQUFLO0FBQ1osWUFBTSxHQUFOLEVBQVcsVUFBWCxFQURZO0FBRVosVUFBSSxTQUFTLElBQUksTUFBSixDQUFXLEdBQVgsRUFBZ0IsT0FBTyxPQUFQLENBQWhCLENBQVQsQ0FGUTtBQUdaLGNBQVEsTUFBUixFQUhZO0FBSVosYUFBTyxPQUFPLE1BQVAsQ0FBUCxDQUpZO0tBQUwsQ0FBVCxDQUQ0QjtHQUFYLENBQW5CLENBRDBDO0NBQXhCOztBQVdwQixTQUFTLE1BQVQsQ0FBaUIsTUFBakIsRUFBeUI7QUFDdkIsU0FBTyxJQUFJLE9BQUosQ0FBWSxVQUFDLE9BQUQsRUFBVSxNQUFWLEVBQXFCO0FBQ3RDLFdBQ0csRUFESCxDQUNNLEtBRE4sRUFDYSxPQURiLEVBRUcsRUFGSCxDQUVNLE9BRk4sRUFFZSxNQUZmLEVBRHNDO0dBQXJCLENBQW5CLENBRHVCO0NBQXpCOzs7Ozs7QUFZQSxTQUFTLE1BQVQsQ0FBaUIsT0FBakIsRUFBMEI7QUFDeEIsTUFBSSxDQUFDLE9BQUQsRUFBVSxVQUFVLEVBQVYsQ0FBZDtBQUNBLFNBQU8sT0FBTyxFQUFQLEVBQVcsT0FBWCxFQUFvQjtBQUN6QixhQUFTLE9BQU8sRUFBUCxFQUFXLFFBQVEsT0FBUixJQUFtQixFQUFuQixFQUF1QjtBQUN6QyxvQkFBYyxrQ0FBZDtLQURPLENBQVQ7R0FESyxDQUFQLENBRndCO0NBQTFCIiwiZmlsZSI6ImdvdC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBQcm9taXNlID0gcmVxdWlyZSgnLi9wcm9taXNlJylcbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ3BucG06aHR0cCcpXG52YXIgYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpXG52YXIgdGhyb2F0ID0gcmVxdWlyZSgndGhyb2F0JylcbnZhciBnb3QgPSByZXF1aXJlKCdnb3QnKVxudmFyIGNvbmZpZyA9IHJlcXVpcmUoJy4vY29uZmlnJylcblxudmFyIGNhY2hlID0ge31cblxudmFyIHRocm9hdGVyID0gdGhyb2F0KCtjb25maWcuY29uY3VycmVuY3kpXG5cbi8qXG4gKiB3YWl0cyBpbiBsaW5lXG4gKi9cblxuZXhwb3J0cy5nZXQgPSBmdW5jdGlvbiAodXJsLCBvcHRpb25zKSB7XG4gIHZhciBrZXkgPSBKU09OLnN0cmluZ2lmeShbIHVybCwgb3B0aW9ucyBdKVxuICBpZiAoIWNhY2hlW2tleV0pIHtcbiAgICBjYWNoZVtrZXldID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICB0aHJvYXRlcihfID0+IHtcbiAgICAgICAgZGVidWcodXJsKVxuICAgICAgICB2YXIgcHJvbWlzZSA9IGdvdCh1cmwsIGV4dGVuZChvcHRpb25zKSlcbiAgICAgICAgcmVzb2x2ZSh7IHByb21pc2U6IHByb21pc2UgfSlcbiAgICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuICByZXR1cm4gY2FjaGVba2V5XVxufVxuXG4vKlxuICogbGlrZSByZXF1aXJlKCdnb3QnKS5zdHJlYW0sIGJ1dCB0aHJvYXRlZFxuICovXG5cbmV4cG9ydHMuZ2V0U3RyZWFtID0gZnVuY3Rpb24gKHVybCwgb3B0aW9ucykge1xuICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgdGhyb2F0ZXIoXyA9PiB7XG4gICAgICBkZWJ1Zyh1cmwsICdbc3RyZWFtXScpXG4gICAgICB2YXIgc3RyZWFtID0gZ290LnN0cmVhbSh1cmwsIGV4dGVuZChvcHRpb25zKSlcbiAgICAgIHJlc29sdmUoc3RyZWFtKVxuICAgICAgcmV0dXJuIHdhaXRlcihzdHJlYW0pXG4gICAgfSlcbiAgfSlcbn1cblxuZnVuY3Rpb24gd2FpdGVyIChzdHJlYW0pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBzdHJlYW1cbiAgICAgIC5vbignZW5kJywgcmVzb2x2ZSlcbiAgICAgIC5vbignZXJyb3InLCByZWplY3QpXG4gIH0pXG59XG5cbi8qXG4gKiBFeHRlbmRzIGBnb3RgIG9wdGlvbnMgd2l0aCBVc2VyIEFnZW50IGhlYWRlcnMgYW5kIHN0dWZmXG4gKi9cblxuZnVuY3Rpb24gZXh0ZW5kIChvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9XG4gIHJldHVybiBhc3NpZ24oe30sIG9wdGlvbnMsIHtcbiAgICBoZWFkZXJzOiBhc3NpZ24oe30sIG9wdGlvbnMuaGVhZGVycyB8fCB7fSwge1xuICAgICAgJ3VzZXItYWdlbnQnOiAnaHR0cHM6Ly9naXRodWIuY29tL3JzdGFjcnV6L3BucG0nXG4gICAgfSlcbiAgfSlcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,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R0FESyxDQUFQLENBUDZCO0NBQS9CIiwiZmlsZSI6ImdvdC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBQcm9taXNlID0gcmVxdWlyZSgnLi9wcm9taXNlJylcbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ3BucG06aHR0cCcpXG52YXIgYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpXG52YXIgdGhyb2F0ID0gcmVxdWlyZSgndGhyb2F0JylcbnZhciBnb3QgPSByZXF1aXJlKCdnb3QnKVxudmFyIGNvbmZpZyA9IHJlcXVpcmUoJy4vY29uZmlnJylcbnZhciBIdHRwQWdlbnQgPSByZXF1aXJlKCdodHRwJykuQWdlbnRcbnZhciBIdHRwc0FnZW50ID0gcmVxdWlyZSgnaHR0cHMnKS5BZ2VudFxuXG52YXIgY2FjaGUgPSB7fVxuXG52YXIgdGhyb2F0ZXIgPSB0aHJvYXQoK2NvbmZpZy5jb25jdXJyZW5jeSlcbnZhciBodHRwS2VlcGFsaXZlQWdlbnQgPSBuZXcgSHR0cEFnZW50KHtcbiAga2VlcEFsaXZlOiB0cnVlLFxuICBrZWVwQWxpdmVNc2VjczogMzAwMDBcbn0pXG52YXIgaHR0cHNLZWVwYWxpdmVBZ2VudCA9IG5ldyBIdHRwc0FnZW50KHtcbiAga2VlcEFsaXZlOiB0cnVlLFxuICBrZWVwQWxpdmVNc2VjczogMzAwMDBcbn0pXG5cbi8qXG4gKiB3YWl0cyBpbiBsaW5lXG4gKi9cblxuZXhwb3J0cy5nZXQgPSBmdW5jdGlvbiAodXJsLCBvcHRpb25zKSB7XG4gIHZhciBrZXkgPSBKU09OLnN0cmluZ2lmeShbIHVybCwgb3B0aW9ucyBdKVxuICBpZiAoIWNhY2hlW2tleV0pIHtcbiAgICBjYWNoZVtrZXldID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICB0aHJvYXRlcihfID0+IHtcbiAgICAgICAgZGVidWcodXJsKVxuICAgICAgICB2YXIgcHJvbWlzZSA9IGdvdCh1cmwsIGV4dGVuZCh1cmwsIG9wdGlvbnMpKVxuICAgICAgICByZXNvbHZlKHsgcHJvbWlzZTogcHJvbWlzZSB9KVxuICAgICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgfSlcbiAgICB9KVxuICB9XG4gIHJldHVybiBjYWNoZVtrZXldXG59XG5cbi8qXG4gKiBsaWtlIHJlcXVpcmUoJ2dvdCcpLnN0cmVhbSwgYnV0IHRocm9hdGVkXG4gKi9cblxuZXhwb3J0cy5nZXRTdHJlYW0gPSBmdW5jdGlvbiAodXJsLCBvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICB0aHJvYXRlcihfID0+IHtcbiAgICAgIGRlYnVnKHVybCwgJ1tzdHJlYW1dJylcbiAgICAgIHZhciBzdHJlYW0gPSBnb3Quc3RyZWFtKHVybCwgZXh0ZW5kKHVybCwgb3B0aW9ucykpXG4gICAgICByZXNvbHZlKHN0cmVhbSlcbiAgICAgIHJldHVybiB3YWl0ZXIoc3RyZWFtKVxuICAgIH0pXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHdhaXRlciAoc3RyZWFtKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgc3RyZWFtXG4gICAgICAub24oJ2VuZCcsIHJlc29sdmUpXG4gICAgICAub24oJ2Vycm9yJywgcmVqZWN0KVxuICB9KVxufVxuXG4vKlxuICogRXh0ZW5kcyBgZ290YCBvcHRpb25zIHdpdGggVXNlciBBZ2VudCBoZWFkZXJzIGFuZCBzdHVmZlxuICovXG5cbmZ1bmN0aW9uIGV4dGVuZCAodXJsLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9XG4gIGlmICh1cmwuaW5kZXhPZignaHR0cHM6Ly8nKSA9PT0gMCkge1xuICAgIG9wdGlvbnMuYWdlbnQgPSBodHRwc0tlZXBhbGl2ZUFnZW50XG4gIH0gZWxzZSB7XG4gICAgb3B0aW9ucy5hZ2VudCA9IGh0dHBLZWVwYWxpdmVBZ2VudFxuICB9XG4gIHJldHVybiBhc3NpZ24oe30sIG9wdGlvbnMsIHtcbiAgICBoZWFkZXJzOiBhc3NpZ24oe30sIG9wdGlvbnMuaGVhZGVycyB8fCB7fSwge1xuICAgICAgJ3VzZXItYWdlbnQnOiAnaHR0cHM6Ly9naXRodWIuY29tL3JzdGFjcnV6L3BucG0nXG4gICAgfSlcbiAgfSlcbn1cbiJdfQ==
var Promise = require('./promise');
var debug = require('debug')('pnpm:install');
var npa = require('npm-package-arg');
var getUuid = require('node-uuid');
var fs = require('mz/fs');
var join = require('path').join;

@@ -8,14 +11,16 @@ var dirname = require('path').dirname;

var abspath = require('path').resolve;
var mkdirp = require('./fs/mkdirp');
var fetch = require('./fetch');
var resolve = require('./resolve');
var getUuid = require('node-uuid');
var mkdirp = require('./fs/mkdirp');
var symlink = require('./fs/force_symlink');
var obliterate = require('./fs/obliterate');
var requireJson = require('./fs/require_json');
var relSymlink = require('./fs/rel_symlink');
var linkBins = require('./install/link_bins');
var linkBundledDeps = require('./install/link_bundled_deps');
var isAvailable = require('./install/is_available');
var postInstall = require('./install/post_install');
var fs = require('mz/fs');
var obliterate = require('./fs/obliterate');
var requireJson = require('./fs/require_json');

@@ -89,3 +94,3 @@ /*

// it might be a bundleDependency, in which case, don't bother
return isBundled(pkg.spec.name, modules).then(function (_) {
return isAvailable(pkg.spec, modules).then(function (_) {
return _ ? saveCachedResolution().then(function (data) {

@@ -151,23 +156,2 @@ return log('package.json', data);

/*
* Check if a module exists (eg, `node_modules/node-pre-gyp`). This is the case when
* it's part of bundleDependencies.
*
* This check is also responsible for stopping `pnpm i lodash` from doing anything when
* 'node_modules/lodash' already exists.
*/
function isBundled(name, modules) {
if (!name) return Promise.resolve(false);
return Promise.resolve().then(function (_) {
return fs.statSync(join(modules, name, 'package.json'));
}).then(function (_) {
return true;
}).catch(function (err) {
if (err.code !== 'ENOENT') throw err;
return false;
});
}
/*
* Builds to `.store/lodash@4.0.0` (paths.target)

@@ -351,2 +335,2 @@ * If an ongoing build is already working, use it. Also, if that ongoing build

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYn4vaW5zdGFsbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFJLFVBQVUsUUFBUSxXQUFSLENBQVY7QUFDSixJQUFJLFFBQVEsUUFBUSxPQUFSLEVBQWlCLGNBQWpCLENBQVI7QUFDSixJQUFJLE1BQU0sUUFBUSxpQkFBUixDQUFOO0FBQ0osSUFBSSxPQUFPLFFBQVEsTUFBUixFQUFnQixJQUFoQjtBQUNYLElBQUksVUFBVSxRQUFRLE1BQVIsRUFBZ0IsT0FBaEI7QUFDZCxJQUFJLFdBQVcsUUFBUSxNQUFSLEVBQWdCLFFBQWhCO0FBQ2YsSUFBSSxVQUFVLFFBQVEsTUFBUixFQUFnQixPQUFoQjtBQUNkLElBQUksU0FBUyxRQUFRLGFBQVIsQ0FBVDtBQUNKLElBQUksUUFBUSxRQUFRLFNBQVIsQ0FBUjtBQUNKLElBQUksVUFBVSxRQUFRLFdBQVIsQ0FBVjtBQUNKLElBQUksVUFBVSxRQUFRLFdBQVIsQ0FBVjtBQUNKLElBQUksVUFBVSxRQUFRLG9CQUFSLENBQVY7QUFDSixJQUFJLGFBQWEsUUFBUSxrQkFBUixDQUFiO0FBQ0osSUFBSSxXQUFXLFFBQVEscUJBQVIsQ0FBWDtBQUNKLElBQUksa0JBQWtCLFFBQVEsNkJBQVIsQ0FBbEI7QUFDSixJQUFJLGNBQWMsUUFBUSx3QkFBUixDQUFkO0FBQ0osSUFBSSxLQUFLLFFBQVEsT0FBUixDQUFMO0FBQ0osSUFBSSxhQUFhLFFBQVEsaUJBQVIsQ0FBYjtBQUNKLElBQUksY0FBYyxRQUFRLG1CQUFSLENBQWQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkosT0FBTyxPQUFQLEdBQWlCLFNBQVMsT0FBVCxDQUFrQixHQUFsQixFQUF1QixPQUF2QixFQUFnQyxPQUFoQyxFQUF5QyxPQUF6QyxFQUFrRDtBQUNqRSxRQUFNLGdCQUFnQixPQUFoQixDQUFOLENBRGlFO0FBRWpFLE1BQUksQ0FBQyxJQUFJLE1BQUosRUFBWSxJQUFJLE1BQUosR0FBYSxFQUFiLENBQWpCO0FBQ0EsTUFB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LElBQWIsQ0FGZ0M7QUFHaEMsU0FBTyxNQUFNLEdBQU4sQ0FBUCxDQUhnQztDQUFsQyIsImZpbGUiOiJpbnN0YWxsLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFByb21pc2UgPSByZXF1aXJlKCcuL3Byb21pc2UnKVxudmFyIGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKSgncG5wbTppbnN0YWxsJylcbnZhciBucGEgPSByZXF1aXJlKCducG0tcGFja2FnZS1hcmcnKVxudmFyIGpvaW4gPSByZXF1aXJlKCdwYXRoJykuam9pblxudmFyIGRpcm5hbWUgPSByZXF1aXJlKCdwYXRoJykuZGlybmFtZVxudmFyIGJhc2VuYW1lID0gcmVxdWlyZSgncGF0aCcpLmJhc2VuYW1lXG52YXIgYWJzcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKS5yZXNvbHZlXG52YXIgbWtkaXJwID0gcmVxdWlyZSgnLi9mcy9ta2RpcnAnKVxudmFyIGZldGNoID0gcmVxdWlyZSgnLi9mZXRjaCcpXG52YXIgcmVzb2x2ZSA9IHJlcXVpcmUoJy4vcmVzb2x2ZScpXG52YXIgZ2V0VXVpZCA9IHJlcXVpcmUoJ25vZGUtdXVpZCcpXG52YXIgc3ltbGluayA9IHJlcXVpcmUoJy4vZnMvZm9yY2Vfc3ltbGluaycpXG52YXIgcmVsU3ltbGluayA9IHJlcXVpcmUoJy4vZnMvcmVsX3N5bWxpbmsnKVxudmFyIGxpbmtCaW5zID0gcmVxdWlyZSgnLi9pbnN0YWxsL2xpbmtfYmlucycpXG52YXIgbGlua0J1bmRsZWREZXBzID0gcmVxdWlyZSgnLi9pbnN0YWxsL2xpbmtfYnVuZGxlZF9kZXBzJylcbnZhciBwb3N0SW5zdGFsbCA9IHJlcXVpcmUoJy4vaW5zdGFsbC9wb3N0X2luc3RhbGwnKVxudmFyIGZzID0gcmVxdWlyZSgnbXovZnMnKVxudmFyIG9ibGl0ZXJhdGUgPSByZXF1aXJlKCcuL2ZzL29ibGl0ZXJhdGUnKVxudmFyIHJlcXVpcmVKc29uID0gcmVxdWlyZSgnLi9mcy9yZXF1aXJlX2pzb24nKVxuXG4vKlxuICogSW5zdGFsbHMgYSBwYWNrYWdlLlxuICpcbiAqICAgICBpbnN0YWxsKGN0eCwgJ3JpbXJhZkAyJywgJy4vbm9kZV9tb2R1bGVzJylcbiAqXG4gKiBQYXJhbWV0ZXJzOlxuICpcbiAqIC0gYGN0eGAgKE9iamVjdCkgLSB0aGUgY29udGV4dC5cbiAqICAgLSBgcm9vdGAgKFN0cmluZykgLSByb290IHBhdGggb2YgdGhlIHBhY2thZ2UuXG4gKiAgIC0gYHRtcGAgKFN0cmluZykgLSB0ZW1wIGRpclxuICogICAtIGBsb2dgIChGdW5jdGlvbikgLSBsb2dnZXJcbiAqXG4gKiBXaGF0IGl0IGRvZXM6XG4gKlxuICogLSByZXNvbHZlKCkgLSByZXNvbHZlIGZyb20gcmVnaXN0cnkubnBtanMub3JnXG4gKiAtIGZldGNoKCkgLSBkb3dubG9hZCB0YXJiYWxsIGludG8gbm9kZV9tb2R1bGVzLy50bXAve3V1aWR9XG4gKiAtIHJlY3Vyc2UgaW50byBpdHMgZGVwZW5kZW5jaWVzXG4gKiAtIHJ1biBwb3N0aW5zdGFsbCBob29rc1xuICogLSBtb3ZlIC50bXAve3V1aWR9IGludG8gbm9kZV9tb2R1bGVzL3tuYW1lfUB7dmVyc2lvbn1cbiAqIC0gc3ltbGluayBub2RlX21vZHVsZXMve25hbWV9XG4gKiAtIHN5bWxpbmsgYmluc1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5zdGFsbCAoY3R4LCBwa2dTcGVjLCBtb2R1bGVzLCBvcHRpb25zKSB7XG4gIGRlYnVnKCdpbnN0YWxsaW5nICcgKyBwa2dTcGVjKVxuICBpZiAoIWN0eC5idWlsZHMpIGN0eC5idWlsZHMgPSB7fVxuICBpZiAoIWN0eC5mZXRjaGVzKSBjdHguZmV0Y2hlcyA9IHt9XG5cbiAgdmFyIHBrZyA9IHtcbiAgICAvLyBQcmVsaW1pbmFyeSBzcGVjIGRhdGFcbiAgICAvLyA9PiB7IHJhdywgbmFtZSwgc2NvcGUsIHR5cGUsIHNwZWMsIHJhd1NwZWMgfVxuICAgIHNwZWM6IG5wYShwa2dTcGVjKSxcblxuICAgIC8vIERlcGVuZGVuY3kgcGF0aCB0byB0aGUgY3VycmVudCBwYWNrYWdlLiBOb3QgYWN0dWFsbHkgbmVlZGVkIGFubXlvcmVcbiAgICAvLyBvdXRzaWRlIGdldHRpbmcgaXRzIGxlbmd0aFxuICAgIC8vID0+IFsnYmFiZWwtY29yZUA2LjQuNScsICdiYWJ5bG9uQDYuNC41JywgJ2JhYmVsLXJ1bnRpbWVANS44LjM1J11cbiAgICBrZXlwYXRoOiAob3B0aW9ucyAmJiBvcHRpb25zLmtleXBhdGggfHwgW10pLFxuXG4gICAgLy8gRnVsbCBuYW1lIG9mIHBhY2thZ2UgYXMgaXQgc2hvdWxkIGJlIHB1dCBpbiB0aGUgc3RvcmUuIEFpbSB0byBtYWtlXG4gICAgLy8gdGhpcyBhcyBmcmllbmRseSBhcyBwb3NzaWJsZSBhcyB0aGlzIHdpbGwgYXBwZWFyIGluIHN0YWNrIHRyYWNlcy5cbiAgICAvLyA9PiAnbG9kYXNoQDQuMC4wJ1xuICAgIC8vID0+ICdAcnN0YWNydXohdGFwLXNwZWNANC4xLjEnXG4gICAgLy8gPT4gJ3JzdGFjcnV6IXBucG1AMGExYjM4MmRhJ1xuICAgIC8vID0+ICdmb29iYXJAOWEzYjI4M2FjJ1xuICAgIGZ1bGxuYW1lOiB1bmRlZmluZWQsXG5cbiAgICAvLyBEaXN0cmlidXRpb24gZGF0YSBmcm9tIHJlc29sdmUoKSA9PiB7IHNoYXN1bSwgdGFyYmFsbCB9XG4gICAgZGlzdDogdW5kZWZpbmVkLFxuXG4gICAgLy8gcGFja2FnZS5qc29uIGRhdGEgYXMgcmV0cmlldmVkIGZyb20gcmVzb2x2ZSgpID0+IHsgbmFtZSwgdmVyc2lvbiwgLi4uIH1cbiAgICBkYXRhOiB1bmRlZmluZWRcbiAgfVxuXG4gIHZhciBwYXRocyA9IHtcbiAgICAvLyBNb2R1bGUgc3RvcmFnZSA9PiAnLi9ub2RlX21vZHVsZXMnXG4gICAgbW9kdWxlczogbW9kdWxlcyxcblxuICAgIC8vIFRlbXBvcmFyeSBkZXN0aW5hdGlvbiB3aGlsZSBidWlsZGluZ1xuICAgIHRtcDogam9pbihjdHguc3RvcmUsICcuLicsICcudG1wJywgZ2V0VXVpZCgpKSxcblxuICAgIC8vIEZpbmFsIGRlc3RpbmF0aW9uID0+IHN0b3JlICsgJy9sb2Rhc2hANC4wLjAnXG4gICAgdGFyZ2V0OiB1bmRlZmluZWRcbiAgfVxuXG4gIHZhciBsb2cgPSBjdHgubG9nKHBrZy5zcGVjKSAvLyBmdW5jdGlvblxuXG4gIC8vIGl0IG1pZ2h0IGJlIGEgYnVuZGxlRGVwZW5kZW5jeSwgaW4gd2hpY2ggY2FzZSwgZG9uJ3QgYm90aGVyXG4gIHJldHVybiBpc0J1bmRsZWQocGtnLnNwZWMubmFtZSwgbW9kdWxlcylcbiAgICAudGhlbihfID0+IF9cbiAgICAgID8gc2F2ZUNhY2hlZFJlc29sdXRpb24oKVxuICAgICAgICAudGhlbihkYXRhID0+IGxvZygncGFja2FnZS5qc29uJywgZGF0YSkpXG4gICAgICA6IHJlc29sdmUocGtnLnNwZWMsIGxvZylcbiAgICAgICAgLnRoZW4oc2F2ZVJlc29sdXRpb24pXG4gICAgICAgIC50aGVuKF8gPT4gbG9nKCdyZXNvbHZlZCcsIHBrZykpXG4gICAgICAgIC50aGVuKF8gPT4gYnVpbGRUb1N0b3JlQ2FjaGVkKGN0eCwgcGF0aHMsIHBrZywgbG9nKSlcbiAgICAgICAgLnRoZW4oXyA9PiBta2RpcnAocGF0aHMubW9kdWxlcykpXG4gICAgICAgIC50aGVuKF8gPT4gc3ltbGlua1RvTW9kdWxlcyhqb2luKHBhdGhzLnRhcmdldCwgJ18nKSwgcGF0aHMubW9kdWxlcykpXG4gICAgICAgIC50aGVuKF8gPT4gbG9nKCdwYWNrYWdlLmpzb24nLCByZXF1aXJlSnNvbihqb2luKHBhdGhzLnRhcmdldCwgJ18nLCAncGFja2FnZS5qc29uJykpKSkpXG4gICAgLy8gZG9uZVxuICAgIC50aGVuKF8gPT4ge1xuICAgICAgaWYgKCFjdHguaW5zdGFsbHMpIGN0eC5pbnN0YWxscyA9IHt9XG4gICAgICBjdHguaW5zdGFsbHNbcGtnLmZ1bGxuYW1lXSA9IHBrZ1xuICAgIH0pXG4gICAgLnRoZW4oXyA9PiBsb2coJ2RvbmUnKSlcbiAgICAudGhlbihfID0+IHBrZylcbiAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgIGxvZygnZXJyb3InLCBlcnIpXG4gICAgICB0aHJvdyBlcnJcbiAgICB9KVxuXG4gIC8vIHNldCBtZXRhZGF0YSBhcyBmZXRjaGVkIGZyb20gcmVzb2x2ZSgpXG4gIGZ1bmN0aW9uIHNhdmVSZXNvbHV0aW9uIChyZXMpIHtcbiAgICBwa2cubmFtZSA9IHJlcy5uYW1lXG4gICAgcGtnLmZ1bGxuYW1lID0gcmVzLmZ1bGxuYW1lXG4gICAgcGtnLnZlcnNpb24gPSByZXMudmVyc2lvblxuICAgIHBrZy5kaXN0ID0gcmVzLmRpc3RcbiAgICBwYXRocy50YXJnZXQgPSBqb2luKGN0eC5zdG9yZSwgcmVzLmZ1bGxuYW1lKVxuICB9XG5cbiAgZnVuY3Rpb24gc2F2ZUNhY2hlZFJlc29sdXRpb24gKCkge1xuICAgIHZhciB0YXJnZXQgPSBqb2luKG1vZHVsZXMsIHBrZy5zcGVjLm5hbWUpXG4gICAgcmV0dXJuIGZzLmxzdGF0KHRhcmdldClcbiAgICAgIC50aGVuKHN0YXQgPT4ge1xuICAgICAgICBpZiAoc3RhdC5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgICAgICAgcmV0dXJuIGZzLnJlYWRsaW5rKHRhcmdldClcbiAgICAgICAgICAgIC50aGVuKHBhdGggPT4gc2F2ZShhYnNwYXRoKHBhdGgsIHRhcmdldCkpKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBzYXZlKHRhcmdldClcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgIGZ1bmN0aW9uIHNhdmUgKGZ1bGxwYXRoKSB7XG4gICAgICB2YXIgZGF0YSA9IHJlcXVpcmVKc29uKGpvaW4oZnVsbHBhdGgsICdwYWNrYWdlLmpzb24nKSlcbiAgICAgIHBrZy5uYW1lID0gZGF0YS5uYW1lXG4gICAgICBwa2cuZnVsbG5hbWUgPSBiYXNlbmFtZShmdWxscGF0aClcbiAgICAgIHBrZy52ZXJzaW9uID0gZGF0YS52ZXJzaW9uXG4gICAgICBwa2cuZGF0YSA9IGRhdGFcbiAgICAgIHBhdGhzLnRhcmdldCA9IGZ1bGxwYXRoXG4gICAgfVxuICB9XG59XG5cbi8qXG4gKiBDaGVjayBpZiBhIG1vZHVsZSBleGlzdHMgKGVnLCBgbm9kZV9tb2R1bGVzL25vZGUtcHJlLWd5cGApLiBUaGlzIGlzIHRoZSBjYXNlIHdoZW5cbiAqIGl0J3MgcGFydCBvZiBidW5kbGVEZXBlbmRlbmNpZXMuXG4gKlxuICogVGhpcyBjaGVjayBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciBzdG9wcGluZyBgcG5wbSBpIGxvZGFzaGAgZnJvbSBkb2luZyBhbnl0aGluZyB3aGVuXG4gKiAnbm9kZV9tb2R1bGVzL2xvZGFzaCcgYWxyZWFkeSBleGlzdHMuXG4gKi9cblxuZnVuY3Rpb24gaXNCdW5kbGVkIChuYW1lLCBtb2R1bGVzKSB7XG4gIGlmICghbmFtZSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSlcblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAudGhlbihfID0+IGZzLnN0YXRTeW5jKGpvaW4obW9kdWxlcywgbmFtZSwgJ3BhY2thZ2UuanNvbicpKSlcbiAgICAudGhlbihfID0+IHRydWUpXG4gICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICBpZiAoZXJyLmNvZGUgIT09ICdFTk9FTlQnKSB0aHJvdyBlcnJcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG59XG5cbi8qXG4gKiBCdWlsZHMgdG8gYC5zdG9yZS9sb2Rhc2hANC4wLjBgIChwYXRocy50YXJnZXQpXG4gKiBJZiBhbiBvbmdvaW5nIGJ1aWxkIGlzIGFscmVhZHkgd29ya2luZywgdXNlIGl0LiBBbHNvLCBpZiB0aGF0IG9uZ29pbmcgYnVpbGRcbiAqIGlzIHBhcnQgb2YgdGhlIGRlcGVuZGVuY3kgY2hhaW4gKGllLCBpdCdzIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSksIHVzZSBpdHMgc3R1YlxuICovXG5cbmZ1bmN0aW9uIGJ1aWxkVG9TdG9yZUNhY2hlZCAoY3R4LCBwYXRocywgcGtnLCBsb2cpIHtcbiAgLy8gSWYgYSBwYWNrYWdlIGlzIHJlcXVlc3RlZCBmb3IgYSBzZWNvbmQgdGltZSAodXN1YWxseSB3aGVuIG1hbnkgcGFja2FnZXMgZGVwZW5kXG4gIC8vIG9uIHRoZSBzYW1lIHRoaW5nKSwgb25seSByZXNvbHZlIHVudGlsIGl0J3MgZmV0Y2hlZCAobm90IGJ1aWx0KS5cbiAgaWYgKGN0eC5idWlsZHNbcGtnLmZ1bGxuYW1lXSkgcmV0dXJuIGN0eC5mZXRjaGVzW3BrZy5mdWxsbmFtZV1cblxuICByZXR1cm4gbWFrZShwYXRocy50YXJnZXQsIGN0eC5idWlsZHNbcGtnLmZ1bGxuYW1lXSwgXyA9PlxuICAgIG1lbW9pemUoY3R4LmJ1aWxkcywgcGtnLmZ1bGxuYW1lLCBfID0+XG4gICAgICBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAudGhlbihfID0+IG1lbW9pemUoY3R4LmZldGNoZXMsIHBrZy5mdWxsbmFtZSwgXyA9PlxuICAgICAgICAgIGZldGNoVG9TdG9yZShjdHgsIHBhdGhzLCBwa2csIGxvZykpKVxuICAgICAgICAudGhlbihfID0+IGJ1aWxkSW5TdG9yZShjdHgsIHBhdGhzLCBwa2csIGxvZykpXG4gICAgKSlcbn1cblxuLypcbiAqIEJ1aWxkcyB0byBgLnN0b3JlL2xvZGFzaEA0LjAuMGAgKHBhdGhzLnRhcmdldClcbiAqIEZldGNoZXMgZnJvbSBucG0sIHJlY3Vyc2VzIHRvIGRlcGVuZGVuY2llcywgcnVucyBsaWZlY3ljbGUgc2NyaXB0cywgZXRjXG4gKi9cblxuZnVuY3Rpb24gZmV0Y2hUb1N0b3JlIChjdHgsIHBhdGhzLCBwa2csIGxvZykge1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAvLyBzeW1saW5rIC50bXAvMGExYjJjM2QgLT4gLnN0b3JlL2xvZGFzaEA0LjAuMFxuICAgIC8vIHNvIHRoYXQgd2hlbiBhbnkgb3RoZXIgbW9kdWxlIHJlcXVpcmVzIGl0LCBpdCdzIGF2YWlsYWJsZSBldmVuXG4gICAgLy8gaWYgaXQncyBwYXJ0aWFsbHkgYnVpbHRcbiAgICAudGhlbihfID0+IG1rZGlycChkaXJuYW1lKHBhdGhzLnRhcmdldCkpKVxuICAgIC50aGVuKF8gPT4gc3ltbGluayhwYXRocy50bXAsIHBhdGhzLnRhcmdldCkpXG5cbiAgICAvLyBkb3dubG9hZCBhbmQgdW50YXJcbiAgICAudGhlbihfID0+IGxvZygnZG93bmxvYWQtcXVldWVkJykpXG4gICAgLnRoZW4oXyA9PiBta2RpcnAoY3R4LnN0b3JlKSlcbiAgICAudGhlbihfID0+IG1rZGlycChqb2luKHBhdGhzLnRtcCwgJ18nKSkpXG4gICAgLnRoZW4oXyA9PiBmcy53cml0ZUZpbGUoam9pbihwYXRocy50bXAsICcucG5wbV9pbnByb2dyZXNzJyksICcnLCAndXRmLTgnKSlcbiAgICAudGhlbihfID0+IGZldGNoKGpvaW4ocGF0aHMudG1wLCAnXycpLCBwa2cuZGlzdC50YXJiYWxsLCBwa2cuZGlzdC5zaGFzdW0sIGxvZykpXG5cbiAgICAvLyBUT0RPOiB0aGlzIGlzIHRoZSBwb2ludCBpdCBiZWNvbWVzIHBhcnRpYWxseSB1c2VhYmxlLlxuICAgIC8vIGllLCBpdCBjYW4gbm93IGJlIHN5bWxpbmtlZCBpbnRvIC5zdG9yZS9mb29AMS4wLjAuXG4gICAgLy8gaXQgaXMgb25seSBoZXJlIHRoYXQgaXQgc2hvdWxkIGJlIGF2YWlsYWJsZSBmb3IgY2lydWNsYXIgZGVwZW5kZW5jaWVzLlxufVxuXG5mdW5jdGlvbiBidWlsZEluU3RvcmUgKGN0eCwgcGF0aHMsIHBrZywgbG9nKSB7XG4gIHZhciBpbnN0YWxsQWxsID0gcmVxdWlyZSgnLi9pbnN0YWxsX211bHRpcGxlJylcbiAgdmFyIGZ1bGxkYXRhXG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oXyA9PiB7IGZ1bGxkYXRhID0gcmVxdWlyZUpzb24oYWJzcGF0aChqb2luKHBhdGhzLnRtcCwgJ18nLCAncGFja2FnZS5qc29uJykpKSB9KVxuICAgIC50aGVuKF8gPT4gbG9nKCdwYWNrYWdlLmpzb24nLCBmdWxsZGF0YSkpXG5cbiAgICAvLyBsaW5rIG5vZGVfbW9kdWxlcy8uYmluXG4gICAgLnRoZW4oXyA9PiBsaW5rQmlucyhwYXRocy5tb2R1bGVzLCBqb2luKHBhdGhzLnRtcCwgJ18nKSwgam9pbihwYXRocy50YXJnZXQsICdfJykpKVxuICAgIC50aGVuKF8gPT4gbGlua0J1bmRsZWREZXBzKGpvaW4ocGF0aHMudG1wLCAnXycpKSlcblxuICAgIC8vIHJlY3Vyc2UgZG93biB0byBkZXBlbmRlbmNpZXNcbiAgICAudGhlbihfID0+IGxvZygnZGVwZW5kZW5jaWVzJykpXG4gICAgLnRoZW4oXyA9PiBpbnN0YWxsQWxsKGN0eCxcbiAgICAgIGZ1bGxkYXRhLmRlcGVuZGVuY2llcyxcbiAgICAgIGpvaW4ocGF0aHMudG1wLCAnXycsICdub2RlX21vZHVsZXMnKSxcbiAgICAgIHsga2V5cGF0aDogcGtnLmtleXBhdGguY29uY2F0KFsgcGtnLmZ1bGxuYW1lIF0pIH0pKVxuXG4gICAgLy8gc3ltbGluayBpdHNlbGY7IC4gLT4gbm9kZV9tb2R1bGVzL2xvZGFzaEA0LjAuMFxuICAgIC8vIHRoaXMgd2F5IGl0IGNhbiByZXF1aXJlIGl0c2VsZlxuICAgIC50aGVuKF8gPT4gc3ltbGlua1NlbGYocGF0aHMudG1wLCBmdWxsZGF0YSwgcGtnLmtleXBhdGgubGVuZ3RoKSlcblxuICAgIC8vIHBvc3RpbnN0YWxsIGhvb2tzXG4gICAgLnRoZW4oXyA9PiBwb3N0SW5zdGFsbChwYXRocy50bXAsIGZ1bGxkYXRhLCBpbnN0YWxsTG9nZ2VyKGxvZywgcGtnKSkpXG5cbiAgICAvLyBtb3ZlIHRvIC5zdG9yZS9sb2Rhc2hANC4wLjA7IHJlbW92ZSB0aGUgc3R1YiBkb25lIGVhcmxpZXJcbiAgICAudGhlbihfID0+IGZzLnVubGluayhqb2luKHBhdGhzLnRtcCwgJy5wbnBtX2lucHJvZ3Jlc3MnKSkpXG4gICAgLnRoZW4oXyA9PiBmcy51bmxpbmsocGF0aHMudGFyZ2V0KSlcbiAgICAudGhlbihfID0+IGZzLnJlbmFtZShwYXRocy50bXAsIHBhdGhzLnRhcmdldCkpXG59XG5cbmZ1bmN0aW9uIGluc3RhbGxMb2dnZXIgKGxvZywgcGtnKSB7XG4gIHJldHVybiAoc3RyZWFtLCBsaW5lKSA9PiB7XG4gICAgcmVxdWlyZSgnZGVidWcnKSgncG5wbTpwb3N0X2luc3RhbGwnKSgnJXMgJXMnLCBwa2cuZnVsbG5hbWUsIGxpbmUpXG4gICAgbG9nKHN0cmVhbSwgeyBuYW1lOiBwa2cuZnVsbG5hbWUsIGxpbmU6IGxpbmUgfSlcbiAgfVxufVxuXG4vKlxuICogU3ltbGluayBhIHBhY2thZ2UgaW50byBpdHMgb3duIG5vZGVfbW9kdWxlcy4gdGhpcyB3YXksIGJhYmVsLXJ1bnRpbWVANSBjYW5cbiAqIHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUnKSB3aXRoaW4gaXRzZWxmLlxuICovXG5cbmZ1bmN0aW9uIHN5bWxpbmtTZWxmICh0YXJnZXQsIHBrZywgZGVwdGgpIHtcbiAgZGVidWcoJ3N5bWxpbmtTZWxmICVzJywgcGtnLm5hbWUpXG4gIGlmIChkZXB0aCA9PT0gMCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBta2RpcnAoam9pbih0YXJnZXQsICdub2RlX21vZHVsZXMnKSlcbiAgICAgIC50aGVuKF8gPT4gc3ltbGluayhcbiAgICAgICAgam9pbignLi4nLCAnXycpLFxuICAgICAgICBqb2luKHRhcmdldCwgJ25vZGVfbW9kdWxlcycsIHBrZy5uYW1lKSkpXG4gIH1cbn1cblxuLypcbiAqIFBlcmZvcm0gdGhlIGZpbmFsIHN5bWxpbmtpbmcgb2YgLi8uc3RvcmUveEAxLjAuMCAtPiAuL3guXG4gKlxuICogICAgIHRhcmdldCA9ICcvbm9kZV9tb2R1bGVzLy5zdG9yZS9sb2Rhc2hANC4wLjAnXG4gKiAgICAgbW9kdWxlcyA9ICcuL25vZGVfbW9kdWxlcydcbiAqICAgICBzeW1saW5rVG9Nb2R1bGVzKGZ1bGxuYW1lLCBtb2R1bGVzKVxuICovXG5cbmZ1bmN0aW9uIHN5bWxpbmtUb01vZHVsZXMgKHRhcmdldCwgbW9kdWxlcykge1xuICAvLyBUT0RPOiB1bmNvbW1lbnQgdG8gbWFrZSB0aGluZ3MgZmFpbFxuICB2YXIgcGtnRGF0YSA9IHJlcXVpcmVKc29uKGpvaW4odGFyZ2V0LCAncGFja2FnZS5qc29uJykpXG4gIGlmICghcGtnRGF0YS5uYW1lKSB7IHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwYWNrYWdlLmpzb24gZm9yICcgKyB0YXJnZXQpIH1cblxuICAvLyBsb2Rhc2ggLT4gLnN0b3JlL2xvZGFzaEA0LjAuMFxuICAvLyAuc3RvcmUvZm9vQDEuMC4wL25vZGVfbW9kdWxlcy9sb2Rhc2ggLT4gLi4vLi4vLi4vLnN0b3JlL2xvZGFzaEA0LjAuMFxuICAvLyAudG1wLzAxMjM0NTY3ODkwL25vZGVfbW9kdWxlcy9sb2Rhc2ggLT4gLi4vLi4vLi4vLnN0b3JlL2xvZGFzaEA0LjAuMFxuICB2YXIgb3V0ID0gam9pbihtb2R1bGVzLCBwa2dEYXRhLm5hbWUpXG4gIHJldHVybiBta2RpcnAoZGlybmFtZShvdXQpKVxuICAgIC50aGVuKF8gPT4gcmVsU3ltbGluayh0YXJnZXQsIG91dCkpXG59XG5cbi8qXG4gKiBJZiBgcGF0aGAgZG9lc24ndCBleGlzdCwgcnVuIGBmbigpYC5cbiAqIElmIGl0IGV4aXN0cyBhbmQgaXMgbm90IGluIHByb2dyZXNzLCBkb24ndCBkbyBhbnl0aGluZy5cbiAqIElmIGl0J3MgaW4gcHJvZ3Jlc3MsIGNoZWNrIGlmIHdlJ3JlIHdvcmtpbmcgb24gaXQuIElmIHdlJ3JlIG5vdCxcbiAqIG9ibGl0ZXJhdGUgaXQgYW5kIHJ1biBgZm4oKWAuXG4gKi9cblxuZnVuY3Rpb24gbWFrZSAocGF0aCwgaXNXb3JraW5nLCBmbikge1xuICByZXR1cm4gZnMuc3RhdChwYXRoKVxuICAudGhlbihfID0+IHtcbiAgICByZXR1cm4gZnMuc3RhdChqb2luKHBhdGgsICcucG5wbV9pbnByb2dyZXNzJykpXG4gICAgLnRoZW4oXyA9PiB7XG4gICAgICBpZiAoIWlzV29ya2luZykgcmV0dXJuIG9ibGl0ZXJhdGUocGF0aCkudGhlbihmbilcbiAgICB9KVxuICAgIC5jYXRjaChlcnIgPT4geyBpZiAoZXJyLmNvZGUgIT09ICdFTk9FTlQnKSB0aHJvdyBlcnIgfSlcbiAgfSlcbiAgLmNhdGNoKGVyciA9PiB7XG4gICAgaWYgKGVyci5jb2RlICE9PSAnRU5PRU5UJykgdGhyb3cgZXJyXG4gICAgcmV0dXJuIGZuKClcbiAgfSlcbn1cblxuLypcbiAqIFNhdmUgcHJvbWlzZXMgZm9yIGxhdGVyXG4gKi9cblxuZnVuY3Rpb24gbWVtb2l6ZSAobG9ja3MsIGtleSwgZm4pIHtcbiAgaWYgKGxvY2tzICYmIGxvY2tzW2tleV0pIHJldHVybiBsb2Nrc1trZXldXG4gIGxvY2tzW2tleV0gPSBmbigpXG4gIHJldHVybiBsb2Nrc1trZXldXG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,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bEMsU0FBTyxHQUFHLElBQUgsQ0FBUSxJQUFSLEVBQ04sSUFETSxDQUNELGFBQUs7QUFDVCxXQUFPLEdBQUcsSUFBSCxDQUFRLEtBQUssSUFBTCxFQUFXLGtCQUFYLENBQVIsRUFDTixJQURNLENBQ0QsYUFBSztBQUNULFVBQUksQ0FBQyxTQUFELEVBQVksT0FBTyxXQUFXLElBQVgsRUFBaUIsSUFBakIsQ0FBc0IsRUFBdEIsQ0FBUCxDQUFoQjtLQURJLENBREMsQ0FJTixLQUpNLENBSUEsZUFBTztBQUFFLFVBQUksSUFBSSxJQUFKLEtBQWEsUUFBYixFQUF1QixNQUFNLEdBQU4sQ0FBM0I7S0FBVCxDQUpQLENBRFM7R0FBTCxDQURDLENBUU4sS0FSTSxDQVFBLGVBQU87QUFDWixRQUFJLElBQUksSUFBSixLQUFhLFFBQWIsRUFBdUIsTUFBTSxHQUFOLENBQTNCO0FBQ0EsV0FBTyxJQUFQLENBRlk7R0FBUCxDQVJQLENBRGtDO0NBQXBDOzs7Ozs7QUFtQkEsU0FBUyxPQUFULENBQWtCLEtBQWxCLEVBQXlCLEdBQXpCLEVBQThCLEVBQTlCLEVBQWtDO0FBQ2hDLE1BQUksU0FBUyxNQUFNLEdBQU4sQ0FBVCxFQUFxQixPQUFPLE1BQU0sR0FBTixDQUFQLENBQXpCO0FBQ0EsUUFBTSxHQUFOLElBQWEsSUFBYixDQUZnQztBQUdoQyxTQUFPLE1BQU0sR0FBTixDQUFQLENBSGdDO0NBQWxDIiwiZmlsZSI6Imluc3RhbGwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgUHJvbWlzZSA9IHJlcXVpcmUoJy4vcHJvbWlzZScpXG52YXIgZGVidWcgPSByZXF1aXJlKCdkZWJ1ZycpKCdwbnBtOmluc3RhbGwnKVxudmFyIG5wYSA9IHJlcXVpcmUoJ25wbS1wYWNrYWdlLWFyZycpXG52YXIgZ2V0VXVpZCA9IHJlcXVpcmUoJ25vZGUtdXVpZCcpXG52YXIgZnMgPSByZXF1aXJlKCdtei9mcycpXG5cbnZhciBqb2luID0gcmVxdWlyZSgncGF0aCcpLmpvaW5cbnZhciBkaXJuYW1lID0gcmVxdWlyZSgncGF0aCcpLmRpcm5hbWVcbnZhciBiYXNlbmFtZSA9IHJlcXVpcmUoJ3BhdGgnKS5iYXNlbmFtZVxudmFyIGFic3BhdGggPSByZXF1aXJlKCdwYXRoJykucmVzb2x2ZVxuXG52YXIgZmV0Y2ggPSByZXF1aXJlKCcuL2ZldGNoJylcbnZhciByZXNvbHZlID0gcmVxdWlyZSgnLi9yZXNvbHZlJylcblxudmFyIG1rZGlycCA9IHJlcXVpcmUoJy4vZnMvbWtkaXJwJylcbnZhciBzeW1saW5rID0gcmVxdWlyZSgnLi9mcy9mb3JjZV9zeW1saW5rJylcbnZhciBvYmxpdGVyYXRlID0gcmVxdWlyZSgnLi9mcy9vYmxpdGVyYXRlJylcbnZhciByZXF1aXJlSnNvbiA9IHJlcXVpcmUoJy4vZnMvcmVxdWlyZV9qc29uJylcbnZhciByZWxTeW1saW5rID0gcmVxdWlyZSgnLi9mcy9yZWxfc3ltbGluaycpXG5cbnZhciBsaW5rQmlucyA9IHJlcXVpcmUoJy4vaW5zdGFsbC9saW5rX2JpbnMnKVxudmFyIGxpbmtCdW5kbGVkRGVwcyA9IHJlcXVpcmUoJy4vaW5zdGFsbC9saW5rX2J1bmRsZWRfZGVwcycpXG52YXIgaXNBdmFpbGFibGUgPSByZXF1aXJlKCcuL2luc3RhbGwvaXNfYXZhaWxhYmxlJylcbnZhciBwb3N0SW5zdGFsbCA9IHJlcXVpcmUoJy4vaW5zdGFsbC9wb3N0X2luc3RhbGwnKVxuXG4vKlxuICogSW5zdGFsbHMgYSBwYWNrYWdlLlxuICpcbiAqICAgICBpbnN0YWxsKGN0eCwgJ3JpbXJhZkAyJywgJy4vbm9kZV9tb2R1bGVzJylcbiAqXG4gKiBQYXJhbWV0ZXJzOlxuICpcbiAqIC0gYGN0eGAgKE9iamVjdCkgLSB0aGUgY29udGV4dC5cbiAqICAgLSBgcm9vdGAgKFN0cmluZykgLSByb290IHBhdGggb2YgdGhlIHBhY2thZ2UuXG4gKiAgIC0gYHRtcGAgKFN0cmluZykgLSB0ZW1wIGRpclxuICogICAtIGBsb2dgIChGdW5jdGlvbikgLSBsb2dnZXJcbiAqXG4gKiBXaGF0IGl0IGRvZXM6XG4gKlxuICogLSByZXNvbHZlKCkgLSByZXNvbHZlIGZyb20gcmVnaXN0cnkubnBtanMub3JnXG4gKiAtIGZldGNoKCkgLSBkb3dubG9hZCB0YXJiYWxsIGludG8gbm9kZV9tb2R1bGVzLy50bXAve3V1aWR9XG4gKiAtIHJlY3Vyc2UgaW50byBpdHMgZGVwZW5kZW5jaWVzXG4gKiAtIHJ1biBwb3N0aW5zdGFsbCBob29rc1xuICogLSBtb3ZlIC50bXAve3V1aWR9IGludG8gbm9kZV9tb2R1bGVzL3tuYW1lfUB7dmVyc2lvbn1cbiAqIC0gc3ltbGluayBub2RlX21vZHVsZXMve25hbWV9XG4gKiAtIHN5bWxpbmsgYmluc1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5zdGFsbCAoY3R4LCBwa2dTcGVjLCBtb2R1bGVzLCBvcHRpb25zKSB7XG4gIGRlYnVnKCdpbnN0YWxsaW5nICcgKyBwa2dTcGVjKVxuICBpZiAoIWN0eC5idWlsZHMpIGN0eC5idWlsZHMgPSB7fVxuICBpZiAoIWN0eC5mZXRjaGVzKSBjdHguZmV0Y2hlcyA9IHt9XG5cbiAgdmFyIHBrZyA9IHtcbiAgICAvLyBQcmVsaW1pbmFyeSBzcGVjIGRhdGFcbiAgICAvLyA9PiB7IHJhdywgbmFtZSwgc2NvcGUsIHR5cGUsIHNwZWMsIHJhd1NwZWMgfVxuICAgIHNwZWM6IG5wYShwa2dTcGVjKSxcblxuICAgIC8vIERlcGVuZGVuY3kgcGF0aCB0byB0aGUgY3VycmVudCBwYWNrYWdlLiBOb3QgYWN0dWFsbHkgbmVlZGVkIGFubXlvcmVcbiAgICAvLyBvdXRzaWRlIGdldHRpbmcgaXRzIGxlbmd0aFxuICAgIC8vID0+IFsnYmFiZWwtY29yZUA2LjQuNScsICdiYWJ5bG9uQDYuNC41JywgJ2JhYmVsLXJ1bnRpbWVANS44LjM1J11cbiAgICBrZXlwYXRoOiAob3B0aW9ucyAmJiBvcHRpb25zLmtleXBhdGggfHwgW10pLFxuXG4gICAgLy8gRnVsbCBuYW1lIG9mIHBhY2thZ2UgYXMgaXQgc2hvdWxkIGJlIHB1dCBpbiB0aGUgc3RvcmUuIEFpbSB0byBtYWtlXG4gICAgLy8gdGhpcyBhcyBmcmllbmRseSBhcyBwb3NzaWJsZSBhcyB0aGlzIHdpbGwgYXBwZWFyIGluIHN0YWNrIHRyYWNlcy5cbiAgICAvLyA9PiAnbG9kYXNoQDQuMC4wJ1xuICAgIC8vID0+ICdAcnN0YWNydXohdGFwLXNwZWNANC4xLjEnXG4gICAgLy8gPT4gJ3JzdGFjcnV6IXBucG1AMGExYjM4MmRhJ1xuICAgIC8vID0+ICdmb29iYXJAOWEzYjI4M2FjJ1xuICAgIGZ1bGxuYW1lOiB1bmRlZmluZWQsXG5cbiAgICAvLyBEaXN0cmlidXRpb24gZGF0YSBmcm9tIHJlc29sdmUoKSA9PiB7IHNoYXN1bSwgdGFyYmFsbCB9XG4gICAgZGlzdDogdW5kZWZpbmVkLFxuXG4gICAgLy8gcGFja2FnZS5qc29uIGRhdGEgYXMgcmV0cmlldmVkIGZyb20gcmVzb2x2ZSgpID0+IHsgbmFtZSwgdmVyc2lvbiwgLi4uIH1cbiAgICBkYXRhOiB1bmRlZmluZWRcbiAgfVxuXG4gIHZhciBwYXRocyA9IHtcbiAgICAvLyBNb2R1bGUgc3RvcmFnZSA9PiAnLi9ub2RlX21vZHVsZXMnXG4gICAgbW9kdWxlczogbW9kdWxlcyxcblxuICAgIC8vIFRlbXBvcmFyeSBkZXN0aW5hdGlvbiB3aGlsZSBidWlsZGluZ1xuICAgIHRtcDogam9pbihjdHguc3RvcmUsICcuLicsICcudG1wJywgZ2V0VXVpZCgpKSxcblxuICAgIC8vIEZpbmFsIGRlc3RpbmF0aW9uID0+IHN0b3JlICsgJy9sb2Rhc2hANC4wLjAnXG4gICAgdGFyZ2V0OiB1bmRlZmluZWRcbiAgfVxuXG4gIHZhciBsb2cgPSBjdHgubG9nKHBrZy5zcGVjKSAvLyBmdW5jdGlvblxuXG4gIC8vIGl0IG1pZ2h0IGJlIGEgYnVuZGxlRGVwZW5kZW5jeSwgaW4gd2hpY2ggY2FzZSwgZG9uJ3QgYm90aGVyXG4gIHJldHVybiBpc0F2YWlsYWJsZShwa2cuc3BlYywgbW9kdWxlcylcbiAgICAudGhlbihfID0+IF9cbiAgICAgID8gc2F2ZUNhY2hlZFJlc29sdXRpb24oKVxuICAgICAgICAudGhlbihkYXRhID0+IGxvZygncGFja2FnZS5qc29uJywgZGF0YSkpXG4gICAgICA6IHJlc29sdmUocGtnLnNwZWMsIGxvZylcbiAgICAgICAgLnRoZW4oc2F2ZVJlc29sdXRpb24pXG4gICAgICAgIC50aGVuKF8gPT4gbG9nKCdyZXNvbHZlZCcsIHBrZykpXG4gICAgICAgIC50aGVuKF8gPT4gYnVpbGRUb1N0b3JlQ2FjaGVkKGN0eCwgcGF0aHMsIHBrZywgbG9nKSlcbiAgICAgICAgLnRoZW4oXyA9PiBta2RpcnAocGF0aHMubW9kdWxlcykpXG4gICAgICAgIC50aGVuKF8gPT4gc3ltbGlua1RvTW9kdWxlcyhqb2luKHBhdGhzLnRhcmdldCwgJ18nKSwgcGF0aHMubW9kdWxlcykpXG4gICAgICAgIC50aGVuKF8gPT4gbG9nKCdwYWNrYWdlLmpzb24nLCByZXF1aXJlSnNvbihqb2luKHBhdGhzLnRhcmdldCwgJ18nLCAncGFja2FnZS5qc29uJykpKSkpXG4gICAgLy8gZG9uZVxuICAgIC50aGVuKF8gPT4ge1xuICAgICAgaWYgKCFjdHguaW5zdGFsbHMpIGN0eC5pbnN0YWxscyA9IHt9XG4gICAgICBjdHguaW5zdGFsbHNbcGtnLmZ1bGxuYW1lXSA9IHBrZ1xuICAgIH0pXG4gICAgLnRoZW4oXyA9PiBsb2coJ2RvbmUnKSlcbiAgICAudGhlbihfID0+IHBrZylcbiAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgIGxvZygnZXJyb3InLCBlcnIpXG4gICAgICB0aHJvdyBlcnJcbiAgICB9KVxuXG4gIC8vIHNldCBtZXRhZGF0YSBhcyBmZXRjaGVkIGZyb20gcmVzb2x2ZSgpXG4gIGZ1bmN0aW9uIHNhdmVSZXNvbHV0aW9uIChyZXMpIHtcbiAgICBwa2cubmFtZSA9IHJlcy5uYW1lXG4gICAgcGtnLmZ1bGxuYW1lID0gcmVzLmZ1bGxuYW1lXG4gICAgcGtnLnZlcnNpb24gPSByZXMudmVyc2lvblxuICAgIHBrZy5kaXN0ID0gcmVzLmRpc3RcbiAgICBwYXRocy50YXJnZXQgPSBqb2luKGN0eC5zdG9yZSwgcmVzLmZ1bGxuYW1lKVxuICB9XG5cbiAgZnVuY3Rpb24gc2F2ZUNhY2hlZFJlc29sdXRpb24gKCkge1xuICAgIHZhciB0YXJnZXQgPSBqb2luKG1vZHVsZXMsIHBrZy5zcGVjLm5hbWUpXG4gICAgcmV0dXJuIGZzLmxzdGF0KHRhcmdldClcbiAgICAgIC50aGVuKHN0YXQgPT4ge1xuICAgICAgICBpZiAoc3RhdC5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgICAgICAgcmV0dXJuIGZzLnJlYWRsaW5rKHRhcmdldClcbiAgICAgICAgICAgIC50aGVuKHBhdGggPT4gc2F2ZShhYnNwYXRoKHBhdGgsIHRhcmdldCkpKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBzYXZlKHRhcmdldClcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgIGZ1bmN0aW9uIHNhdmUgKGZ1bGxwYXRoKSB7XG4gICAgICB2YXIgZGF0YSA9IHJlcXVpcmVKc29uKGpvaW4oZnVsbHBhdGgsICdwYWNrYWdlLmpzb24nKSlcbiAgICAgIHBrZy5uYW1lID0gZGF0YS5uYW1lXG4gICAgICBwa2cuZnVsbG5hbWUgPSBiYXNlbmFtZShmdWxscGF0aClcbiAgICAgIHBrZy52ZXJzaW9uID0gZGF0YS52ZXJzaW9uXG4gICAgICBwa2cuZGF0YSA9IGRhdGFcbiAgICAgIHBhdGhzLnRhcmdldCA9IGZ1bGxwYXRoXG4gICAgfVxuICB9XG59XG5cbi8qXG4gKiBCdWlsZHMgdG8gYC5zdG9yZS9sb2Rhc2hANC4wLjBgIChwYXRocy50YXJnZXQpXG4gKiBJZiBhbiBvbmdvaW5nIGJ1aWxkIGlzIGFscmVhZHkgd29ya2luZywgdXNlIGl0LiBBbHNvLCBpZiB0aGF0IG9uZ29pbmcgYnVpbGRcbiAqIGlzIHBhcnQgb2YgdGhlIGRlcGVuZGVuY3kgY2hhaW4gKGllLCBpdCdzIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSksIHVzZSBpdHMgc3R1YlxuICovXG5cbmZ1bmN0aW9uIGJ1aWxkVG9TdG9yZUNhY2hlZCAoY3R4LCBwYXRocywgcGtnLCBsb2cpIHtcbiAgLy8gSWYgYSBwYWNrYWdlIGlzIHJlcXVlc3RlZCBmb3IgYSBzZWNvbmQgdGltZSAodXN1YWxseSB3aGVuIG1hbnkgcGFja2FnZXMgZGVwZW5kXG4gIC8vIG9uIHRoZSBzYW1lIHRoaW5nKSwgb25seSByZXNvbHZlIHVudGlsIGl0J3MgZmV0Y2hlZCAobm90IGJ1aWx0KS5cbiAgaWYgKGN0eC5idWlsZHNbcGtnLmZ1bGxuYW1lXSkgcmV0dXJuIGN0eC5mZXRjaGVzW3BrZy5mdWxsbmFtZV1cblxuICByZXR1cm4gbWFrZShwYXRocy50YXJnZXQsIGN0eC5idWlsZHNbcGtnLmZ1bGxuYW1lXSwgXyA9PlxuICAgIG1lbW9pemUoY3R4LmJ1aWxkcywgcGtnLmZ1bGxuYW1lLCBfID0+XG4gICAgICBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAudGhlbihfID0+IG1lbW9pemUoY3R4LmZldGNoZXMsIHBrZy5mdWxsbmFtZSwgXyA9PlxuICAgICAgICAgIGZldGNoVG9TdG9yZShjdHgsIHBhdGhzLCBwa2csIGxvZykpKVxuICAgICAgICAudGhlbihfID0+IGJ1aWxkSW5TdG9yZShjdHgsIHBhdGhzLCBwa2csIGxvZykpXG4gICAgKSlcbn1cblxuLypcbiAqIEJ1aWxkcyB0byBgLnN0b3JlL2xvZGFzaEA0LjAuMGAgKHBhdGhzLnRhcmdldClcbiAqIEZldGNoZXMgZnJvbSBucG0sIHJlY3Vyc2VzIHRvIGRlcGVuZGVuY2llcywgcnVucyBsaWZlY3ljbGUgc2NyaXB0cywgZXRjXG4gKi9cblxuZnVuY3Rpb24gZmV0Y2hUb1N0b3JlIChjdHgsIHBhdGhzLCBwa2csIGxvZykge1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAvLyBzeW1saW5rIC50bXAvMGExYjJjM2QgLT4gLnN0b3JlL2xvZGFzaEA0LjAuMFxuICAgIC8vIHNvIHRoYXQgd2hlbiBhbnkgb3RoZXIgbW9kdWxlIHJlcXVpcmVzIGl0LCBpdCdzIGF2YWlsYWJsZSBldmVuXG4gICAgLy8gaWYgaXQncyBwYXJ0aWFsbHkgYnVpbHRcbiAgICAudGhlbihfID0+IG1rZGlycChkaXJuYW1lKHBhdGhzLnRhcmdldCkpKVxuICAgIC50aGVuKF8gPT4gc3ltbGluayhwYXRocy50bXAsIHBhdGhzLnRhcmdldCkpXG5cbiAgICAvLyBkb3dubG9hZCBhbmQgdW50YXJcbiAgICAudGhlbihfID0+IGxvZygnZG93bmxvYWQtcXVldWVkJykpXG4gICAgLnRoZW4oXyA9PiBta2RpcnAoY3R4LnN0b3JlKSlcbiAgICAudGhlbihfID0+IG1rZGlycChqb2luKHBhdGhzLnRtcCwgJ18nKSkpXG4gICAgLnRoZW4oXyA9PiBmcy53cml0ZUZpbGUoam9pbihwYXRocy50bXAsICcucG5wbV9pbnByb2dyZXNzJyksICcnLCAndXRmLTgnKSlcbiAgICAudGhlbihfID0+IGZldGNoKGpvaW4ocGF0aHMudG1wLCAnXycpLCBwa2cuZGlzdC50YXJiYWxsLCBwa2cuZGlzdC5zaGFzdW0sIGxvZykpXG5cbiAgICAvLyBUT0RPOiB0aGlzIGlzIHRoZSBwb2ludCBpdCBiZWNvbWVzIHBhcnRpYWxseSB1c2VhYmxlLlxuICAgIC8vIGllLCBpdCBjYW4gbm93IGJlIHN5bWxpbmtlZCBpbnRvIC5zdG9yZS9mb29AMS4wLjAuXG4gICAgLy8gaXQgaXMgb25seSBoZXJlIHRoYXQgaXQgc2hvdWxkIGJlIGF2YWlsYWJsZSBmb3IgY2lydWNsYXIgZGVwZW5kZW5jaWVzLlxufVxuXG5mdW5jdGlvbiBidWlsZEluU3RvcmUgKGN0eCwgcGF0aHMsIHBrZywgbG9nKSB7XG4gIHZhciBpbnN0YWxsQWxsID0gcmVxdWlyZSgnLi9pbnN0YWxsX211bHRpcGxlJylcbiAgdmFyIGZ1bGxkYXRhXG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oXyA9PiB7IGZ1bGxkYXRhID0gcmVxdWlyZUpzb24oYWJzcGF0aChqb2luKHBhdGhzLnRtcCwgJ18nLCAncGFja2FnZS5qc29uJykpKSB9KVxuICAgIC50aGVuKF8gPT4gbG9nKCdwYWNrYWdlLmpzb24nLCBmdWxsZGF0YSkpXG5cbiAgICAvLyBsaW5rIG5vZGVfbW9kdWxlcy8uYmluXG4gICAgLnRoZW4oXyA9PiBsaW5rQmlucyhwYXRocy5tb2R1bGVzLCBqb2luKHBhdGhzLnRtcCwgJ18nKSwgam9pbihwYXRocy50YXJnZXQsICdfJykpKVxuICAgIC50aGVuKF8gPT4gbGlua0J1bmRsZWREZXBzKGpvaW4ocGF0aHMudG1wLCAnXycpKSlcblxuICAgIC8vIHJlY3Vyc2UgZG93biB0byBkZXBlbmRlbmNpZXNcbiAgICAudGhlbihfID0+IGxvZygnZGVwZW5kZW5jaWVzJykpXG4gICAgLnRoZW4oXyA9PiBpbnN0YWxsQWxsKGN0eCxcbiAgICAgIGZ1bGxkYXRhLmRlcGVuZGVuY2llcyxcbiAgICAgIGpvaW4ocGF0aHMudG1wLCAnXycsICdub2RlX21vZHVsZXMnKSxcbiAgICAgIHsga2V5cGF0aDogcGtnLmtleXBhdGguY29uY2F0KFsgcGtnLmZ1bGxuYW1lIF0pIH0pKVxuXG4gICAgLy8gc3ltbGluayBpdHNlbGY7IC4gLT4gbm9kZV9tb2R1bGVzL2xvZGFzaEA0LjAuMFxuICAgIC8vIHRoaXMgd2F5IGl0IGNhbiByZXF1aXJlIGl0c2VsZlxuICAgIC50aGVuKF8gPT4gc3ltbGlua1NlbGYocGF0aHMudG1wLCBmdWxsZGF0YSwgcGtnLmtleXBhdGgubGVuZ3RoKSlcblxuICAgIC8vIHBvc3RpbnN0YWxsIGhvb2tzXG4gICAgLnRoZW4oXyA9PiBwb3N0SW5zdGFsbChwYXRocy50bXAsIGZ1bGxkYXRhLCBpbnN0YWxsTG9nZ2VyKGxvZywgcGtnKSkpXG5cbiAgICAvLyBtb3ZlIHRvIC5zdG9yZS9sb2Rhc2hANC4wLjA7IHJlbW92ZSB0aGUgc3R1YiBkb25lIGVhcmxpZXJcbiAgICAudGhlbihfID0+IGZzLnVubGluayhqb2luKHBhdGhzLnRtcCwgJy5wbnBtX2lucHJvZ3Jlc3MnKSkpXG4gICAgLnRoZW4oXyA9PiBmcy51bmxpbmsocGF0aHMudGFyZ2V0KSlcbiAgICAudGhlbihfID0+IGZzLnJlbmFtZShwYXRocy50bXAsIHBhdGhzLnRhcmdldCkpXG59XG5cbmZ1bmN0aW9uIGluc3RhbGxMb2dnZXIgKGxvZywgcGtnKSB7XG4gIHJldHVybiAoc3RyZWFtLCBsaW5lKSA9PiB7XG4gICAgcmVxdWlyZSgnZGVidWcnKSgncG5wbTpwb3N0X2luc3RhbGwnKSgnJXMgJXMnLCBwa2cuZnVsbG5hbWUsIGxpbmUpXG4gICAgbG9nKHN0cmVhbSwgeyBuYW1lOiBwa2cuZnVsbG5hbWUsIGxpbmU6IGxpbmUgfSlcbiAgfVxufVxuXG4vKlxuICogU3ltbGluayBhIHBhY2thZ2UgaW50byBpdHMgb3duIG5vZGVfbW9kdWxlcy4gdGhpcyB3YXksIGJhYmVsLXJ1bnRpbWVANSBjYW5cbiAqIHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUnKSB3aXRoaW4gaXRzZWxmLlxuICovXG5cbmZ1bmN0aW9uIHN5bWxpbmtTZWxmICh0YXJnZXQsIHBrZywgZGVwdGgpIHtcbiAgZGVidWcoJ3N5bWxpbmtTZWxmICVzJywgcGtnLm5hbWUpXG4gIGlmIChkZXB0aCA9PT0gMCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBta2RpcnAoam9pbih0YXJnZXQsICdub2RlX21vZHVsZXMnKSlcbiAgICAgIC50aGVuKF8gPT4gc3ltbGluayhcbiAgICAgICAgam9pbignLi4nLCAnXycpLFxuICAgICAgICBqb2luKHRhcmdldCwgJ25vZGVfbW9kdWxlcycsIHBrZy5uYW1lKSkpXG4gIH1cbn1cblxuLypcbiAqIFBlcmZvcm0gdGhlIGZpbmFsIHN5bWxpbmtpbmcgb2YgLi8uc3RvcmUveEAxLjAuMCAtPiAuL3guXG4gKlxuICogICAgIHRhcmdldCA9ICcvbm9kZV9tb2R1bGVzLy5zdG9yZS9sb2Rhc2hANC4wLjAnXG4gKiAgICAgbW9kdWxlcyA9ICcuL25vZGVfbW9kdWxlcydcbiAqICAgICBzeW1saW5rVG9Nb2R1bGVzKGZ1bGxuYW1lLCBtb2R1bGVzKVxuICovXG5cbmZ1bmN0aW9uIHN5bWxpbmtUb01vZHVsZXMgKHRhcmdldCwgbW9kdWxlcykge1xuICAvLyBUT0RPOiB1bmNvbW1lbnQgdG8gbWFrZSB0aGluZ3MgZmFpbFxuICB2YXIgcGtnRGF0YSA9IHJlcXVpcmVKc29uKGpvaW4odGFyZ2V0LCAncGFja2FnZS5qc29uJykpXG4gIGlmICghcGtnRGF0YS5uYW1lKSB7IHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwYWNrYWdlLmpzb24gZm9yICcgKyB0YXJnZXQpIH1cblxuICAvLyBsb2Rhc2ggLT4gLnN0b3JlL2xvZGFzaEA0LjAuMFxuICAvLyAuc3RvcmUvZm9vQDEuMC4wL25vZGVfbW9kdWxlcy9sb2Rhc2ggLT4gLi4vLi4vLi4vLnN0b3JlL2xvZGFzaEA0LjAuMFxuICAvLyAudG1wLzAxMjM0NTY3ODkwL25vZGVfbW9kdWxlcy9sb2Rhc2ggLT4gLi4vLi4vLi4vLnN0b3JlL2xvZGFzaEA0LjAuMFxuICB2YXIgb3V0ID0gam9pbihtb2R1bGVzLCBwa2dEYXRhLm5hbWUpXG4gIHJldHVybiBta2RpcnAoZGlybmFtZShvdXQpKVxuICAgIC50aGVuKF8gPT4gcmVsU3ltbGluayh0YXJnZXQsIG91dCkpXG59XG5cbi8qXG4gKiBJZiBgcGF0aGAgZG9lc24ndCBleGlzdCwgcnVuIGBmbigpYC5cbiAqIElmIGl0IGV4aXN0cyBhbmQgaXMgbm90IGluIHByb2dyZXNzLCBkb24ndCBkbyBhbnl0aGluZy5cbiAqIElmIGl0J3MgaW4gcHJvZ3Jlc3MsIGNoZWNrIGlmIHdlJ3JlIHdvcmtpbmcgb24gaXQuIElmIHdlJ3JlIG5vdCxcbiAqIG9ibGl0ZXJhdGUgaXQgYW5kIHJ1biBgZm4oKWAuXG4gKi9cblxuZnVuY3Rpb24gbWFrZSAocGF0aCwgaXNXb3JraW5nLCBmbikge1xuICByZXR1cm4gZnMuc3RhdChwYXRoKVxuICAudGhlbihfID0+IHtcbiAgICByZXR1cm4gZnMuc3RhdChqb2luKHBhdGgsICcucG5wbV9pbnByb2dyZXNzJykpXG4gICAgLnRoZW4oXyA9PiB7XG4gICAgICBpZiAoIWlzV29ya2luZykgcmV0dXJuIG9ibGl0ZXJhdGUocGF0aCkudGhlbihmbilcbiAgICB9KVxuICAgIC5jYXRjaChlcnIgPT4geyBpZiAoZXJyLmNvZGUgIT09ICdFTk9FTlQnKSB0aHJvdyBlcnIgfSlcbiAgfSlcbiAgLmNhdGNoKGVyciA9PiB7XG4gICAgaWYgKGVyci5jb2RlICE9PSAnRU5PRU5UJykgdGhyb3cgZXJyXG4gICAgcmV0dXJuIGZuKClcbiAgfSlcbn1cblxuLypcbiAqIFNhdmUgcHJvbWlzZXMgZm9yIGxhdGVyXG4gKi9cblxuZnVuY3Rpb24gbWVtb2l6ZSAobG9ja3MsIGtleSwgZm4pIHtcbiAgaWYgKGxvY2tzICYmIGxvY2tzW2tleV0pIHJldHVybiBsb2Nrc1trZXldXG4gIGxvY2tzW2tleV0gPSBmbigpXG4gIHJldHVybiBsb2Nrc1trZXldXG59XG4iXX0=

@@ -10,3 +10,3 @@ var Promise = require('../promise');

return isDir(nodeModules, function (_) {
return Promise.all(fs.readdir(nodeModules).map(function (mod) {
return Promise.all(fs.readdirSync(nodeModules).map(function (mod) {
return isDir(join(nodeModules, mod), function (_) {

@@ -31,2 +31,2 @@ return symlinkBundledDep(nodeModules, join(nodeModules, mod));

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYn4vaW5zdGFsbC9saW5rX2J1bmRsZWRfZGVwcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFJLFVBQVUsUUFBUSxZQUFSLENBQVY7QUFDSixJQUFJLEtBQUssUUFBUSxPQUFSLENBQUw7QUFDSixJQUFJLE9BQU8sUUFBUSxNQUFSLEVBQWdCLElBQWhCO0FBQ1gsSUFBSSxXQUFXLFFBQVEsYUFBUixDQUFYOztBQUVKLE9BQU8sT0FBUCxHQUFpQixTQUFTLGVBQVQsQ0FBMEIsSUFBMUIsRUFBZ0M7QUFDL0MsTUFBSSxjQUFjLEtBQUssSUFBTCxFQUFXLGNBQVgsQ0FBZCxDQUQyQzs7QUFHL0MsU0FBTyxNQUFNLFdBQU4sRUFBbUI7V0FDeEIsUUFBUSxHQUFSLENBQVksR0FBRyxPQUFILENBQVcsV0FBWCxFQUF3QixHQUF4QixDQUE0QjthQUN0QyxNQUFNLEtBQUssV0FBTCxFQUFrQixHQUFsQixDQUFOLEVBQThCO2VBQzVCLGtCQUFrQixXQUFsQixFQUErQixLQUFLLFdBQUwsRUFBa0IsR0FBbEIsQ0FBL0I7T0FENEI7S0FEUSxDQUF4QztHQUR3QixDQUExQixDQUgrQztDQUFoQzs7QUFXakIsU0FBUyxpQkFBVCxDQUE0QixXQUE1QixFQUF5QyxNQUF6QyxFQUFpRDtBQUMvQyxTQUFPLFNBQVMsV0FBVCxFQUFzQixNQUF0QixFQUE4QixNQUE5QixDQUFQLENBRCtDO0NBQWpEOztBQUlBLFNBQVMsS0FBVCxDQUFnQixJQUFoQixFQUFzQixFQUF0QixFQUEwQjtBQUN4QixTQUFPLEdBQUcsSUFBSCxDQUFRLElBQVIsRUFDTixJQURNLENBQ0QsZ0JBQVE7QUFDWixRQUFJLENBQUMsS0FBSyxXQUFMLEVBQUQsRUFBcUIsT0FBTyxRQUFRLE9BQVIsRUFBUCxDQUF6QjtBQUNBLFdBQU8sSUFBUCxDQUZZO0dBQVIsQ0FEQyxDQUtOLEtBTE0sQ0FLQSxlQUFPO0FBQUUsUUFBSSxJQUFJLElBQUosS0FBYSxRQUFiLEVBQXVCLE1BQU0sR0FBTixDQUEzQjtHQUFULENBTFAsQ0FEd0I7Q0FBMUIiLCJmaWxlIjoibGlua19idW5kbGVkX2RlcHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgUHJvbWlzZSA9IHJlcXVpcmUoJy4uL3Byb21pc2UnKVxudmFyIGZzID0gcmVxdWlyZSgnbXovZnMnKVxudmFyIGpvaW4gPSByZXF1aXJlKCdwYXRoJykuam9pblxudmFyIGxpbmtCaW5zID0gcmVxdWlyZSgnLi9saW5rX2JpbnMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxpbmtCdW5kbGVkRGVwcyAocm9vdCkge1xuICB2YXIgbm9kZU1vZHVsZXMgPSBqb2luKHJvb3QsICdub2RlX21vZHVsZXMnKVxuXG4gIHJldHVybiBpc0Rpcihub2RlTW9kdWxlcywgXyA9PlxuICAgIFByb21pc2UuYWxsKGZzLnJlYWRkaXIobm9kZU1vZHVsZXMpLm1hcChtb2QgPT5cbiAgICAgIGlzRGlyKGpvaW4obm9kZU1vZHVsZXMsIG1vZCksIF8gPT5cbiAgICAgICAgc3ltbGlua0J1bmRsZWREZXAobm9kZU1vZHVsZXMsIGpvaW4obm9kZU1vZHVsZXMsIG1vZCkpXG4gICAgICApXG4gICAgKSkpXG59XG5cbmZ1bmN0aW9uIHN5bWxpbmtCdW5kbGVkRGVwIChub2RlTW9kdWxlcywgc3VibW9kKSB7XG4gIHJldHVybiBsaW5rQmlucyhub2RlTW9kdWxlcywgc3VibW9kLCBzdWJtb2QpXG59XG5cbmZ1bmN0aW9uIGlzRGlyIChwYXRoLCBmbikge1xuICByZXR1cm4gZnMuc3RhdChwYXRoKVxuICAudGhlbihzdGF0ID0+IHtcbiAgICBpZiAoIXN0YXQuaXNEaXJlY3RvcnkoKSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgcmV0dXJuIGZuKClcbiAgfSlcbiAgLmNhdGNoKGVyciA9PiB7IGlmIChlcnIuY29kZSAhPT0gJ0VOT0VOVCcpIHRocm93IGVyciB9KVxufVxuXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYn4vaW5zdGFsbC9saW5rX2J1bmRsZWRfZGVwcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFJLFVBQVUsUUFBUSxZQUFSLENBQVY7QUFDSixJQUFJLEtBQUssUUFBUSxPQUFSLENBQUw7QUFDSixJQUFJLE9BQU8sUUFBUSxNQUFSLEVBQWdCLElBQWhCO0FBQ1gsSUFBSSxXQUFXLFFBQVEsYUFBUixDQUFYOztBQUVKLE9BQU8sT0FBUCxHQUFpQixTQUFTLGVBQVQsQ0FBMEIsSUFBMUIsRUFBZ0M7QUFDL0MsTUFBSSxjQUFjLEtBQUssSUFBTCxFQUFXLGNBQVgsQ0FBZCxDQUQyQzs7QUFHL0MsU0FBTyxNQUFNLFdBQU4sRUFBbUI7V0FDeEIsUUFBUSxHQUFSLENBQVksR0FBRyxXQUFILENBQWUsV0FBZixFQUE0QixHQUE1QixDQUFnQzthQUMxQyxNQUFNLEtBQUssV0FBTCxFQUFrQixHQUFsQixDQUFOLEVBQThCO2VBQzVCLGtCQUFrQixXQUFsQixFQUErQixLQUFLLFdBQUwsRUFBa0IsR0FBbEIsQ0FBL0I7T0FENEI7S0FEWSxDQUE1QztHQUR3QixDQUExQixDQUgrQztDQUFoQzs7QUFXakIsU0FBUyxpQkFBVCxDQUE0QixXQUE1QixFQUF5QyxNQUF6QyxFQUFpRDtBQUMvQyxTQUFPLFNBQVMsV0FBVCxFQUFzQixNQUF0QixFQUE4QixNQUE5QixDQUFQLENBRCtDO0NBQWpEOztBQUlBLFNBQVMsS0FBVCxDQUFnQixJQUFoQixFQUFzQixFQUF0QixFQUEwQjtBQUN4QixTQUFPLEdBQUcsSUFBSCxDQUFRLElBQVIsRUFDTixJQURNLENBQ0QsZ0JBQVE7QUFDWixRQUFJLENBQUMsS0FBSyxXQUFMLEVBQUQsRUFBcUIsT0FBTyxRQUFRLE9BQVIsRUFBUCxDQUF6QjtBQUNBLFdBQU8sSUFBUCxDQUZZO0dBQVIsQ0FEQyxDQUtOLEtBTE0sQ0FLQSxlQUFPO0FBQUUsUUFBSSxJQUFJLElBQUosS0FBYSxRQUFiLEVBQXVCLE1BQU0sR0FBTixDQUEzQjtHQUFULENBTFAsQ0FEd0I7Q0FBMUIiLCJmaWxlIjoibGlua19idW5kbGVkX2RlcHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgUHJvbWlzZSA9IHJlcXVpcmUoJy4uL3Byb21pc2UnKVxudmFyIGZzID0gcmVxdWlyZSgnbXovZnMnKVxudmFyIGpvaW4gPSByZXF1aXJlKCdwYXRoJykuam9pblxudmFyIGxpbmtCaW5zID0gcmVxdWlyZSgnLi9saW5rX2JpbnMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxpbmtCdW5kbGVkRGVwcyAocm9vdCkge1xuICB2YXIgbm9kZU1vZHVsZXMgPSBqb2luKHJvb3QsICdub2RlX21vZHVsZXMnKVxuXG4gIHJldHVybiBpc0Rpcihub2RlTW9kdWxlcywgXyA9PlxuICAgIFByb21pc2UuYWxsKGZzLnJlYWRkaXJTeW5jKG5vZGVNb2R1bGVzKS5tYXAobW9kID0+XG4gICAgICBpc0Rpcihqb2luKG5vZGVNb2R1bGVzLCBtb2QpLCBfID0+XG4gICAgICAgIHN5bWxpbmtCdW5kbGVkRGVwKG5vZGVNb2R1bGVzLCBqb2luKG5vZGVNb2R1bGVzLCBtb2QpKVxuICAgICAgKVxuICAgICkpKVxufVxuXG5mdW5jdGlvbiBzeW1saW5rQnVuZGxlZERlcCAobm9kZU1vZHVsZXMsIHN1Ym1vZCkge1xuICByZXR1cm4gbGlua0JpbnMobm9kZU1vZHVsZXMsIHN1Ym1vZCwgc3VibW9kKVxufVxuXG5mdW5jdGlvbiBpc0RpciAocGF0aCwgZm4pIHtcbiAgcmV0dXJuIGZzLnN0YXQocGF0aClcbiAgLnRoZW4oc3RhdCA9PiB7XG4gICAgaWYgKCFzdGF0LmlzRGlyZWN0b3J5KCkpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgIHJldHVybiBmbigpXG4gIH0pXG4gIC5jYXRjaChlcnIgPT4geyBpZiAoZXJyLmNvZGUgIT09ICdFTk9FTlQnKSB0aHJvdyBlcnIgfSlcbn1cblxuIl19
var writeFile = require('mz/fs').writeFile;
var requireJson = require('./fs/require_json');
var sortedObject = require('sorted-object');

@@ -11,5 +12,6 @@ module.exports = function save(pkg, installedPackages, saveType, useExactVersion) {

});
packageJson[saveType] = sortedObject(packageJson[saveType]);
return writeFile(pkg.path, JSON.stringify(packageJson, null, 2) + '\n', 'utf8');
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYn4vc2F2ZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFJLFlBQVksUUFBUSxPQUFSLEVBQWlCLFNBQWpCO0FBQ2hCLElBQUksY0FBYyxRQUFRLG1CQUFSLENBQWQ7O0FBRUosT0FBTyxPQUFQLEdBQWlCLFNBQVMsSUFBVCxDQUFlLEdBQWYsRUFBb0IsaUJBQXBCLEVBQXVDLFFBQXZDLEVBQWlELGVBQWpELEVBQWtFO0FBQ2pGLE1BQUksY0FBYyxZQUFZLElBQUksSUFBSixDQUExQixDQUQ2RTtBQUVqRixjQUFZLFFBQVosSUFBd0IsWUFBWSxRQUFaLEtBQXlCLEVBQXpCLENBRnlEO0FBR2pGLG9CQUFrQixPQUFsQixDQUEwQixVQUFVLFVBQVYsRUFBc0I7QUFDOUMsUUFBSSxrQkFBa0Isa0JBQWtCLEVBQWxCLEdBQXVCLEdBQXZCLENBRHdCO0FBRTlDLGdCQUFZLFFBQVosRUFBc0IsV0FBVyxJQUFYLENBQWdCLElBQWhCLENBQXRCLEdBQThDLGtCQUFrQixXQUFXLE9BQVgsQ0FGbEI7R0FBdEIsQ0FBMUIsQ0FIaUY7O0FBUWpGLFNBQU8sVUFBVSxJQUFJLElBQUosRUFBVSxLQUFLLFNBQUwsQ0FBZSxXQUFmLEVBQTRCLElBQTVCLEVBQWtDLENBQWxDLElBQXVDLElBQXZDLEVBQTZDLE1BQWpFLENBQVAsQ0FSaUY7Q0FBbEUiLCJmaWxlIjoic2F2ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciB3cml0ZUZpbGUgPSByZXF1aXJlKCdtei9mcycpLndyaXRlRmlsZVxudmFyIHJlcXVpcmVKc29uID0gcmVxdWlyZSgnLi9mcy9yZXF1aXJlX2pzb24nKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNhdmUgKHBrZywgaW5zdGFsbGVkUGFja2FnZXMsIHNhdmVUeXBlLCB1c2VFeGFjdFZlcnNpb24pIHtcbiAgdmFyIHBhY2thZ2VKc29uID0gcmVxdWlyZUpzb24ocGtnLnBhdGgpXG4gIHBhY2thZ2VKc29uW3NhdmVUeXBlXSA9IHBhY2thZ2VKc29uW3NhdmVUeXBlXSB8fCB7fVxuICBpbnN0YWxsZWRQYWNrYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXBlbmRlbmN5KSB7XG4gICAgdmFyIHNlbXZlckNoYXJhY3RlciA9IHVzZUV4YWN0VmVyc2lvbiA/ICcnIDogJ14nXG4gICAgcGFja2FnZUpzb25bc2F2ZVR5cGVdW2RlcGVuZGVuY3kuc3BlYy5uYW1lXSA9IHNlbXZlckNoYXJhY3RlciArIGRlcGVuZGVuY3kudmVyc2lvblxuICB9KVxuXG4gIHJldHVybiB3cml0ZUZpbGUocGtnLnBhdGgsIEpTT04uc3RyaW5naWZ5KHBhY2thZ2VKc29uLCBudWxsLCAyKSArICdcXG4nLCAndXRmOCcpXG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYn4vc2F2ZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFJLFlBQVksUUFBUSxPQUFSLEVBQWlCLFNBQWpCO0FBQ2hCLElBQUksY0FBYyxRQUFRLG1CQUFSLENBQWQ7QUFDSixJQUFJLGVBQWUsUUFBUSxlQUFSLENBQWY7O0FBRUosT0FBTyxPQUFQLEdBQWlCLFNBQVMsSUFBVCxDQUFlLEdBQWYsRUFBb0IsaUJBQXBCLEVBQXVDLFFBQXZDLEVBQWlELGVBQWpELEVBQWtFO0FBQ2pGLE1BQUksY0FBYyxZQUFZLElBQUksSUFBSixDQUExQixDQUQ2RTtBQUVqRixjQUFZLFFBQVosSUFBd0IsWUFBWSxRQUFaLEtBQXlCLEVBQXpCLENBRnlEO0FBR2pGLG9CQUFrQixPQUFsQixDQUEwQixVQUFVLFVBQVYsRUFBc0I7QUFDOUMsUUFBSSxrQkFBa0Isa0JBQWtCLEVBQWxCLEdBQXVCLEdBQXZCLENBRHdCO0FBRTlDLGdCQUFZLFFBQVosRUFBc0IsV0FBVyxJQUFYLENBQWdCLElBQWhCLENBQXRCLEdBQThDLGtCQUFrQixXQUFXLE9BQVgsQ0FGbEI7R0FBdEIsQ0FBMUIsQ0FIaUY7QUFPakYsY0FBWSxRQUFaLElBQXdCLGFBQWEsWUFBWSxRQUFaLENBQWIsQ0FBeEIsQ0FQaUY7O0FBU2pGLFNBQU8sVUFBVSxJQUFJLElBQUosRUFBVSxLQUFLLFNBQUwsQ0FBZSxXQUFmLEVBQTRCLElBQTVCLEVBQWtDLENBQWxDLElBQXVDLElBQXZDLEVBQTZDLE1BQWpFLENBQVAsQ0FUaUY7Q0FBbEUiLCJmaWxlIjoic2F2ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciB3cml0ZUZpbGUgPSByZXF1aXJlKCdtei9mcycpLndyaXRlRmlsZVxudmFyIHJlcXVpcmVKc29uID0gcmVxdWlyZSgnLi9mcy9yZXF1aXJlX2pzb24nKVxudmFyIHNvcnRlZE9iamVjdCA9IHJlcXVpcmUoJ3NvcnRlZC1vYmplY3QnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNhdmUgKHBrZywgaW5zdGFsbGVkUGFja2FnZXMsIHNhdmVUeXBlLCB1c2VFeGFjdFZlcnNpb24pIHtcbiAgdmFyIHBhY2thZ2VKc29uID0gcmVxdWlyZUpzb24ocGtnLnBhdGgpXG4gIHBhY2thZ2VKc29uW3NhdmVUeXBlXSA9IHBhY2thZ2VKc29uW3NhdmVUeXBlXSB8fCB7fVxuICBpbnN0YWxsZWRQYWNrYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXBlbmRlbmN5KSB7XG4gICAgdmFyIHNlbXZlckNoYXJhY3RlciA9IHVzZUV4YWN0VmVyc2lvbiA/ICcnIDogJ14nXG4gICAgcGFja2FnZUpzb25bc2F2ZVR5cGVdW2RlcGVuZGVuY3kuc3BlYy5uYW1lXSA9IHNlbXZlckNoYXJhY3RlciArIGRlcGVuZGVuY3kudmVyc2lvblxuICB9KVxuICBwYWNrYWdlSnNvbltzYXZlVHlwZV0gPSBzb3J0ZWRPYmplY3QocGFja2FnZUpzb25bc2F2ZVR5cGVdKVxuXG4gIHJldHVybiB3cml0ZUZpbGUocGtnLnBhdGgsIEpTT04uc3RyaW5naWZ5KHBhY2thZ2VKc29uLCBudWxsLCAyKSArICdcXG4nLCAndXRmOCcpXG59XG4iXX0=
{
"name": "pnpm",
"description": "A fast implementation of npm install",
"version": "0.17.0",
"version": "0.18.0",
"author": "Rico Sta. Cruz <rico@ricostacruz.com>",

@@ -38,4 +38,5 @@ "bin": {

"semver": "5.1.0",
"sorted-object": "^1.0.0",
"supports-color": "^3.1.2",
"tar-fs": "1.9.0",
"tar-fs": "1.10.0",
"thenify": "3.1.1",

@@ -46,12 +47,12 @@ "throat": "2.0.2"

"babel-cli": "6.4.5",
"babel-plugin-transform-es2015-arrow-functions": "6.3.13",
"babel-plugin-transform-es2015-arrow-functions": "6.5.0",
"babel-plugin-transform-es2015-literals": "6.3.13",
"docpress": "0.6.10",
"docpress": "0.6.11",
"eslint": "1.10.3",
"eslint-config-standard": "4.4.0",
"eslint-plugin-standard": "1.3.1",
"eslint-plugin-standard": "1.3.2",
"git-update-ghpages": "1.3.0",
"in-publish": "2.0.0",
"nixt": "0.5.0",
"npm": "3.6.0",
"npm": "3.7.1",
"sepia": "2.0.1",

@@ -58,0 +59,0 @@ "tap-spec": "4.1.1",

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc