
    3 fS                     @   d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZej        dk     rddlmZ nddlmZ ddlZddlZddlZddlZddlZ	 ddlmZ ddlZ e
j        d          ZddlZej        Zn7# e$ r/ ddl mZ ddl!m"Z  e
j        d          Zddl#Z#e#j$        j        ZY nw xY wd	Z%ej&        j'        Z'ej&        j(        Z(da)ej        d         d
k    Z* ej+                    dk    Z, ej+                    -                    d          Z.da/d Z0 G d de1          Z2 e3d  e e4e2                    D                       e2_5        d Z6d Z7d Z8d Z9d Z: e:            Z;d Z<dGdZ=d Z>d Z?dHdZ@	 	 dIdZAd ZBd ZCd  ZDd! ZEd" ZFejG        d#             ZHdJd$ZId% ZJd& ZKdKd'ZLd( ZMd) ZNd* ZOd+ ZPd, ZQd- ZRd. ZSd/ ZTd0 ZUd1 ZVd2 ZWd3 ZXd4 ZYd5 ZZd6 Z[d7 Z\d8 Z]d9d:d;Z^d<d=d;Z_d>Z`d?Zad@ZbdAZcdBZddCZedDZfdEZgehdFk    r e]             dS dS )Lz
    nodeenv
    ~~~~~~~
    Node.js virtual environment

    :copyright: (c) 2014 by Eugene Kalinin
    :license: BSD, see LICENSE for more details.
    N)   r   )quote)SafeConfigParser	iteritems)ConfigParseritemsz1.9.1r   Windows)CYGWINMSYSFc                 6   | rt           r| S 	 |                     d          S # t          $ rj 	 |                     d           | cY S # t          $ r@ 	 |                     d                              d          cY cY S # t          $ r Y nw xY wY nw xY wY nw xY w| S )z:Convert given text to UTF-8 encoding (as far as possible).utf8cp1252)is_PY3encodeUnicodeDecodeErrordecode)texts    =/var/www/equiseq/venv/lib/python3.11/site-packages/nodeenv.pyto_utf8r   D   s     6 
{{6"""   	KKKKK! 	 	 	{{8,,33F;;;;;;;%   		  Ks\   " 
BAB
B'A=8B9B=
B
B	B

BBBBBc                   l    e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZed
d            Zed	             ZdS )Configz"
    Configuration namespace.
    latestF2makeTNc           	         t          |          D ]a}t          j                            |          }t          j                            |          sBt                      }|                    |           d}|                    |          s}t          t          |                     D ]\  }}|
                    d          s|                    ||          s1t          |t                    r|                    ||          }n|                    ||          }|rAt!          d                    t          j                            |          ||                     t'          | ||           Ȑct          j                            d          rgt)          dd          5 }t'          | d|                    d          d                                                    d	d	d	           d	S # 1 swxY w Y   d	S d	S )
z
        Load configuration from the given files in reverse order,
        if they exist and have a [nodeenv] section.
        Additionally, load version from .node-version if file exists.
        nodeenv_zCONFIG {0}: {1} = {2}z.node-versionrnode   r   N)reversedospath
expanduserexistsr   readhas_sectionr   vars
startswith
has_option
isinstancebool
getbooleangetprintformatbasenamesetattropen	readlinesstrip)	clsconfigfilesverbose
configfileini_filesectionattrvalv_files	            r   _loadzConfig._loadj   sL    #;// 	( 	(J++J77J7>>*-- #~~HMM*%%%G''00 &tCyy11 ( (	c??3'' &&w55c4(( 6"--gt<<CC",,w55C B188((44dCA A B B BT3''''( 7>>/** 	Eos++ EvVV%5%5a%8%8%;%A%A%C%CDDDE E E E E E E E E E E E E E E E E E	E 	Es   "=G,,G03G0c                     t          d           t          dd                    d t          t          t	          |                               D                       z              dS )z0
        Print defaults for the README.
        z    [nodeenv]z    z
    c              3   T   K   | ]#\  }}|                     d           |d|V  $dS )r   z = Nr)   ).0kvs      r   	<genexpr>zConfig._dump.<locals>.<genexpr>   sW       %& %&#'1a<<$$%&AA%& %& %& %& %& %&    N)r/   joinsortedr   r(   )r6   s    r   _dumpzConfig._dump   sw    
 	ofx}} %& %&+1)DII2F2F+G+G%& %& %& & & & 	' 	' 	' 	' 	'rG   )F)__name__
__module____qualname____doc__r   npmwith_npmjobswithout_ssldebugprofiler   prebuiltignore_ssl_certsmirrorclassmethodr?   rJ    rG   r   r   r   X   s         
 D
CHDKEGDHF"E "E "E ["EH ' ' [' ' 'rG   r   c              #   N   K   | ] \  }}|                     d           ||fV  !dS )r   NrB   )rC   r<   r=   s      r   rF   rF      sP        D#??3	3K     rG   c                 T    |                      d                              dd          S )z
    Remove new-lines and
    utf-8
 )r   replace)outs    r   clear_outputra      s&     ::g&&tR000rG   c                 4    |                      |dz   d          S )zC
    Remove bin directory of the current environment from PATH
    :r^   )r_   )envenv_bin_dirs     r   remove_env_bin_from_pathrf      s     ;;{S("---rG   c                    |                      dd                              d          dd         }t          |          dk    r$|d                             d          d         |d<   t          t	          t
          |                    S )	z:
    Parse version string to a tuple of integer parts
    rE   r^   .Nr      +r   )r_   splitlentuplemapint)version_strrE   s     r   parse_versionrq      sq     	C$$**3//3A
1vv{{tzz#q!!S!rG   c                     | j         dk    rSt          j        ddgt          j                                                  \  }}t          t          |                    S t          | j                   S )z7
    Parse the node version from the argparse args
    systemr   	--version)stdout)r   
subprocessPopenPIPEcommunicaterq   ra   )argsr`   errs      r   node_version_from_argsr|      sj     yH#[!*/; ; ;;F;== 	S\#..///###rG   c                  v   t          j        d          } |                     t           j                   d }|t           j        _        t          j                    }|                    t           j                   t          j        d          }|                    |           | 	                    |           | S )z&
    Create logger for diagnostic
    r   c                     |                      |          }t          |dd          rdnd}| j                            |t	          |          z             |                                  d S )N	continuedFz%sz%s
)r0   getattrstreamwriter   flush)selfrecordmsgfss       r   emitzcreate_logger.<locals>.emit   s_    kk&!!V[%88DTTf"ws||+,,,

rG   z%(message)s)fmt)
logging	getLoggersetLevelINFOStreamHandlerr   DEBUG	FormattersetFormatter
addHandler)loggrr   ch	formatters       r   create_loggerr      s    
 i((E	NN7<     
 "&G 
		 	 BKK !m444I OOI 
RLrG   c                     t          j        d          } |                     ddt                     |                     dddd	t          j        d
           |                     dddt          j        d           t          s|                     dddt          j        d           |                     ddd           |                     dddt          j	        d           |                     dd dt          j
        d!           |                     d"d#dt          j        d$           |                     d%d&d'd(d)t          j        *           |                     d+d,d-t          j        d.           |                     d/d0dd1d2d3           |                     d4d5dd6d2d7           |                     d8d9d:d;d<           |                     d=d>d?d@dAdBC           |                     dDdEdF           |                     dGdHdIdd2dJ           |                     dKdLdd2dM           |                     dNdOdt          j        dP           |                     dQdRdSt          j        dT           |                     dUdVdd2dW           |                     dXdYdZdd2d[           |                     d\d]d^dd2d_           |                     d`dadd2db           |                     dcd,dt          j        dd           |                     dedfdt          j        dg           |                     dhdidjdkl           | S )mz.
    Make a command line argument parser.
    z%(prog)s [OPTIONS] DEST_DIR)usagert   version)actionr   z-nz--noder   NODE_VERzThe node.js version to use, e.g., --node=0.4.3 will use the node-v0.4.3 to create the new environment. The default is last stable version (`latest`). Use `lts` to use the latest LTS release. Use `system` to use system-wide node.)destmetavardefaulthelpz--mirrorstorerW   z1Set mirror server of nodejs.org to download from.)r   r   r   r   z-jz--jobsrQ   zOSets number of parallel commands at node.js compilation. The default is 2 jobs.)r   r   r   z--load-averageload_averagezQSets maximum load average for executing parallel commands at node.js compilation.)r   r   --without-sslrR   
store_truez!Build node.js without SSL support)r   r   r   r   --debugrS   z"Build debug variant of the node.js	--profilerT   zEnable profiling for node.jsz--makez-m	make_path	MAKE_PATHzPath to make command)r   r   r   r   z--sourcerU   store_falsezInstall node.js from the sourcez-vz	--verboser8   FzVerbose modez-qz--quietquietz
Quiet modez-Cz--config-fileconfig_fileNzfLoad a different file than '~/.nodeenvrc'. Pass an empty string for no config (use built-in defaults).z-rz--requirementsrequirementsr^   FILENAMEz?Install all the packages listed in the given requirements file.)r   r   r   r   z--promptpromptz:Provides an alternative prompt prefix for this environmentz-lz--listlistz Lists available node.js versionsz--updateupdatez+Install npm packages from file without nodez
--with-npmrP   zBuild without installing npm into the new virtual environment. Required for node.js < 0.6.3. By default, the npm included with node.js is used. Under Windows, this defaults to true.z--npmrO   NPM_VERzThe npm version to use, e.g., --npm=0.3.18 will use the npm-0.3.18.tgz tarball to install. The default is last available version (`latest`).z--no-npm-cleanno_npm_cleanz9Skip the npm 0.x cleanup.  Cleanup is enabled by default.z--python-virtualenvz-ppython_virtualenvzUse current python virtualenvz--clean-src-c	clean_srcz)Remove "src" directory after installationz--forceforcez.Force installation in a pre-existing directoryz
--prebuiltz/Install node.js from prebuilt package (default)z--ignore_ssl_certsrV   z5Ignore certificates for package downloads. - UNSAFE -DEST_DIRenv_dir?zDestination directory)r   r   nargsr   )argparseArgumentParseradd_argumentnodeenv_versionr   r   rW   is_WINrQ   rR   rS   rT   r   rU   rP   rO   rV   )parsers    r   make_parserr      s    $+- - -F I  @ @ @ hVZ0  1 1 1 Xv}@  B B B
  #4(% 	 	& 	& 	&
 	>& 	 	' 	' 	'
 	-);4 	 	6 	6 	6
 	G5 	 	7 	7 	7
 	i/ 	 	1 	1 	1
 	d'K	 	 	! 	! 	! 	Z &/2 	 	4 	4 	4
 k)U    
 i'5    
 oM4F  G G G
 RN  P P P
 I  K K K hVU/  1 1 1
 U:  < < <
 :V_A  B B B e6:<  = = = ~UH  J J J
 t*=U,  . . .
 t+U8  : : :
 U=  ? ? ?
 :V_>  @ @ @
 #5V%<D  F F F
 #$  & & & MrG   Tc                    t                      }|                                }|j        
g d|_        nm|j        sg |_        n^t          j                            |j                  s-|                    d                    |j                             |j        g|_        | s|S |j        s#|j	        s|j
        s|                    d           |S )z]
    Parses command line arguments.

    Set `check` to False to skip validation checks.
    N)z	./tox.iniz./setup.cfgz~/.nodeenvrcz Config file '{0}' doesn't exist!z<You must provide a DEST_DIR or use current python virtualenv)r   
parse_argsr   r"   r#   r%   errorr0   r   r   r   )checkr   rz   s      r   r   r   z  s     ]]FDGGG . w~~d.// 	#LL;BB " " # # # ,- 9 :% 	:dl 	:LL 9 : : : KrG   c                 0   t           j                            |           s[t                              d| t          d                     t          j        |            t                              d           dS t                              d|            dS )z
    Create directory
    z * Creating: %s ... Tr   extradone.z * Directory %s already existsN)r"   r#   r%   loggerrS   dictmakedirs)r#   s    r   mkdirr     s     7>>$ =+T9M9M9MNNN
DW5t<<<<<rG   c                     t           j        t           j        z  t           j        z  t           j        z  t           j        z  }t          j        | |           d S N)statS_IRWXUS_IXGRPS_IRGRPS_IROTHS_IXOTHr"   chmod)filename	mode_0755s     r   make_executabler     sF    , $-/3|<IHXy!!!!!rG   c                 B   t          |          }t          r%t          |t                    st          |d          }t          j                            |           st                              d| t          d                     t          | d          5 }|                    |           ddd           n# 1 swxY w Y   t          |            t                              d           dS t          | d	          5 }|                                }ddd           n# 1 swxY w Y   ||v rt                              d
|            dS |st                              d|            dS |rZt                              d|            t          | d          5 }|                    |           ddd           n# 1 swxY w Y   dS t                              d|            t          | d          5 }|                    |           ddd           dS # 1 swxY w Y   dS )z-
    Create file and write content in it
    r\   z * Writing %s ... Tr   r   wbNr   rbz * Content %s already in placez: * File %s exists with different content;  not overwritingz * Appending data to %sabz" * Overwriting %s with new content)r   r   r+   bytesr"   r#   r%   r   rS   r   r3   r   r   r&   info)r   content	overwriteappendfcs         r   	writefiler     s    gG *j%00 *))7>>$ )4td7K7K7KLLL$ 	GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	W$ 	A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	a<<LL94@@@F 	KK +,02 2 2F 	KK14888dD!! !Q   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !F8$???$ 	GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   B88B<?B<>DD#&D#F99F= F=1HHHc           	      d   g }g }| D ]k}t          |          dk    r|dd         dz   |dd         z   }d|v sd|v sd|v sd	|v rd
|                    dd          z  }|                    |           ld                    |          }t                              d|z             |rd                    |           } t          j        }	|r6t          j	        
                                }
|r|
                    |           nd}
	 t          j        | t          j        d|	||
|          }nH# t          $ r; t          j                    d         }t                              d|d|            w xY w|j        }	|	r|	                                }|sn	 t(          r(|                    d                                          }n'|                    d                                          }n7# t.          $ r* |                    d                                          }Y nw xY w|                    |           |rt                              |           |	|                                 |j        r;|r|D ]}t                              |           t9          d|d|j                  |j        |fS )z'
    Execute cmd line in sub-shell
    -   N   z...i r]   "'z"%s"z\"z ** Running command %s)stderrstdinru   cwdrd   shellr    zError z while executing command mbcsr   cp866zCommand z failed with error code )rl   r_   r   rH   r   rS   rv   rx   r"   environcopyr   rw   STDOUT	Exceptionsysexc_infor   ru   readliner   r   rstripr   r   wait
returncodecriticalOSError)cmdshow_stdoutin_shellr   	extra_env
all_output	cmd_partspartcmd_descru   rd   proceliness                  r   callitr
    s   
 JI  t99r>>9u$tCDDz1D$;;$$,,#++DLLe444Dxx	""H
LL)H4555 hhsmm _F  joo 	"JJy!!!
)fH. . .    LNN1aaaJKKK
 [F
    		1 4{{6**1133{{6**1133! 	1 	1 	1;;w''..00DDD	1$ 	KK   	IIKKK  5 	# # #""""g!4??4 5 5 	5 ?J&&s    %D) )AE.AG) )1HHc                 P    t          |           dk    rt          d| dS t          S )N)r      z/v/)rq   src_base_url)rp   s    r   get_root_urlr    s.    [!!F**(LL+++66rG   c                  2    t          j        d          dk    S )NHOST_GNU_TYPEzx86_64-pc-linux-musl)	sysconfigget_config_varrY   rG   r   is_x86_64_muslr    s    #O448NNNrG   c                  0    t          j                    dk    S )Nriscv64)platformmachinerY   rG   r   
is_riscv64r  !  s    **rG   c                 j   i ddddddddddddddd	dd
ddddddddddddddd}t          j                                                    |t          j                             d}t          st
          rd|z  }nt                      rd}nd|z  }d| |}t          |           |z   S )Nx86i686x86_64x64amd64AMD64armv6larmv7larmv8laarch64arm64zarm64/v8armv8zarmv8.4ppc64les390xr  )rs   archz-win-%(arch)s.zipz-linux-x64-musl.tar.gzz-%(system)s-%(arch)s.tar.gzznode-v)r  rs   lowerr  r   	is_CYGWINr  r  )r   archmapsysinfopostfixr   s        r   get_node_bin_urlr/  %  sY   %% 	% 	%	
 	% 	( 	( 	( 	7 	 	G 	 	7 	9 	  	9!G& /##))++(**+ G  : :%/			 :*/'9&w0H  8++rG   c                 0    d| z  }t          |           |z   S )Nznode-v%s.tar.gz)r  )r   tar_names     r   get_node_src_urlr2  F  s     7*H  8++rG   c               /      K   t          j        | i |}	 |V  |                                 dS # |                                 w xY w)z!Compatibility layer because py26.N)tarfiler3   close)rz   kwargstfs      r   tarfile_openr8  K  sM       
t	&v	&	&B









s	   / Ac                 .   |dk    r	 t          j        t          |                                                     S # t          $ rE}t
                              d                    | |                     |dz  }|dk    r|Y d}~nd}~ww xY w|dk    dS dS )zMDo multiple attempts to avoid incomplete data in case
    of unstable networkr   z*Incomplete read while reading from {} - {}r    N)ioBytesIOurlopenr&   IncompleteReadr   warningr0   )node_url	n_attemptr  s      r   _download_node_filerA  U  s     a--		:gh//4466777 	 	 	NN%vh22   NIA~~ ~~~~	 a------s   2; 
B
;BB
c                   	
 t                               dt          d                     t          |           }t                               dt          d                     t          st
          r,t          j        |          }t          j	        d          }d 	n8t          |          }t          j	        d          }t          j        d	          	|5 }t          j        |j                  }d
|z  
	
fd ||          D             }|                    ||           ddd           dS # 1 swxY w Y   dS )z
    Download source code
    rh   Tr   r   namelistc                     | S r   rY   )r	  s    r   <lambda>z#download_node_src.<locals>.<lambda>p  s     rG   )fileobj
getmembersnamez0node-v%s[^/]*/(README\.md|CHANGELOG\.md|LICENSE)c                 P    g | ]"}t          j         |                     |#S r   )rematch)rC   membermember_namerexp_strings     r   
<listcomp>z%download_node_src.<locals>.<listcomp>z  s?     
 
 
x[[%8%899A AAArG   N)r   r   r   rA  r   r+  zipfileZipFileoperatormethodcallerr8  
attrgetterrJ  escaper   
extractall)r?  src_dirrz   dl_contentsctxmembersarchivenode_verextract_listrM  rN  s            @@r   download_node_srcr^  e  s    KK4$///K000%h//K
KK4$///K000 2 2ok**'
33!k;///'55)&11	 	29TY''I
 
 
 
 
!''**
 
 

 	7L111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   AD44D8;D8c                    d}ddt           d|di}t          j        | d |          }t          rEt	          j        t          j                  }t          j        |_        t          j	        ||          S t          j	        |          S )Nz$https://github.com/ekalinin/nodeenv/z
User-Agentznodeenv/z ())context)
r   urllib2RequestrV   ssl
SSLContextPROTOCOL_TLS	CERT_NONEverify_moder<  )urlhome_urlheadersreqra  s        r   r<  r<    s~    5H|///888LMG
/#tW
-
-C 5 .!122!msG4444?3rG   c                 d   t          j        |           D ]}t           j                            | |          }t           j                            ||          }t           j                            |          r;	 t          j        ||||           {# t          $ r t          ||||           Y w xY wt           j                            |          rHt           j                            |          s't          j	        t          j
        |          |           t          j        ||           d S r   )r"   listdirr#   rH   isdirshutilcopytreer   islinksymlinkreadlinkcopy2)srcdstsymlinksignoreitemr	  ds          r   rq  rq    s   
3 # #GLLd##GLLd##7== 	#11h7777 1 1 1Ax000001 w~~a   #w~~a(( 2Jr{1~~q111Q""""# #s   8BB/.B/c                    t                               dt          d                     t          r t	          | d          }t          |           nMt          rDt	          | d          }t          |           t          t	          | dd          t                     n| }|t          d|z            z   }t          j
        |          \  }t          ||d           t          rDd	D ]A}t	          | d|          }t          j                            |          rt          |           Bt                               dt          d                     d
S )z1
    Copy prebuilt binaries into environment
    rh   Tr   r   Scriptsbinr   z
/node-v%s*)rO   npxnode.exeN)r   r   r   r   rH   r   r+  r   CYGWIN_NODEr   globrq  r"   r#   r%   r   )r   rW  node_versionr   src_folder_tpl
src_folderr   s          r   copy_node_from_prebuiltr    s=    KK4$///K000 	GY''d	 GU##d$wv..<<<<w|l'BCCCN)N++KJZt$$$ *2 	* 	*HGUH55Hw~~h'' *)))
KK4$///K00000rG   c                    i }ddg}t          fd|          }d t          ||          D             }t          t          j        dt          j        d                   dk    rt          j        d          }|st          d	          t          	                    d
|           t          |d          }	t          |	d          }
t          |	           t          j                            |
          st          dd||
g           d                    |	t          j                            dd                    |d<   ddt'          |           z  g}j        r|                    d           j	        r|                    d           j        r|                    d           j        }t          |j        d||           t                              dt5          d                     t          |g|z   j        d||           t                              dt5          d                     t          |dz   gj        d||           d S )Nzload-averagerQ   c                 L    t          |                     dd                    S )N-r   )r   r_   )xrz   s    r   rE  z%build_node_from_src.<locals>.<lambda>  s    '$		#s 3 344 rG   c                     g | ]E\  }}|t          |          dk    rd                    ||          nd                    |          FS )Nr   z	--{0}={1}z--{0})rl   r0   )rC   rH  values      r   rO  z'build_node_from_src.<locals>.<listcomp>  sa        D% u::>> 	4'''&~~d33rG   majorr   ri   python2zbPython >=3.0 virtualenv detected, but no python2 command (required for building node.js) was foundz$ * Temporarily pointing python to %stmpbinpythonlnz-sz{}:{}PATHr^   z./configurez--prefix=%sr   r   r   Trh   r   r   z install)rn   zipr   r   version_inforp  whichr   r   rS   rH   r   r"   r#   r%   r
  r0   r   r.   _quoterR   r   rT   r   r8   r   r   )r   rW  node_src_dirrz   rd   make_param_namesmake_param_values	make_optspython2_pathnode_tmpbin_dirnode_tmpbin_linkconf_cmdmake_cmds      `         r   build_node_from_srcr    sl   
C&/4444   /1BCC  I s#*:1*=>>BB |I.. 	D   	;\JJJw11::ow~~.// 	AD$.>?@@@nn_%'Z^^FB%?%?A AF 	w'H  )(((z #	"""| %$$$~H
8T\4s;;;
KK4$///K000
H:	!4<|SIII
KK4$///K000
Hz!"DL$cJJJJJrG   c                 |    	 t          | ||           dS # t          $ r t                              d            w xY w)z`
    Download source code for node.js, unpack it
    and install it in virtual environment.
    r^   N)install_node_wrappedBaseExceptionr   r   )r   rW  rz   s      r   install_noder    sL    
Wgt44444   Bs    &;c                 T   t          |           } t          |t          d|j        z                      }|j        rdnd}t
                              d|d|j        dt          d          	           |j        rt          |j                  }nt          |j                  }t          j                            |          so	 t          |||           n\# t          j        $ rJ d
|v r&t          |                    d
d          ||           nt
                              d|z             Y nw xY wt
                              dt          d          	           |j        rt%          | ||j                   nt'          | |||           t
                              d           d S )Nznode-v%srU   sourcez * Install z node (z) Tr   r   r%  r  zFailed to download from %srh   z done.)abspathrH   r   r   rU   r   r   r   r/  r2  r"   r#   r%   r^  rb  	HTTPErrorr_   r>  r  r  )r   rW  rz   r  src_typer?  s         r   r  r    s   gGdi)?!@!@AAL!]8zzH
KKKhhh			BT***  , , , } /#DI..#DI.. 7>>,'' 	H	Hh6666  	H 	H 	H(""!("2"27E"B"B")41 1 1 1 ;hFGGG	H KK4$///K000} B$)<<<<GWlDAAA
KKs   C AD10D1c                 @   t                               d|j        z  t          d                     t          t          j        |j        rdnd|j                  }t          j        dd	d
	                    t          t          | dd                    |j                  f|t          j        t          j        t          j                  }|                                \  }}|j        rt                               |           t                               d           dS )\
    Download source code for npm, unpack it
    and install it in virtual environment.
     * Install npm.js (%s) ... Tr   r   noyes)cleannpm_installbashr   z. {0} && npm install -g npm@{1}r~  activate)rd   r   ru   r   r   N)r   r   rO   r   r"   r   r   rv   rw   r0   r  rH   rx   r   ry   r8   )r   _src_dirrz   rd   r  r`   r   s          r   install_npmr  %  s   
 KK-8T***  , , ,


'2ddUH  C
 D-44tGUJ7788 	
 o   D FC| C
KKrG   c                    t                               d|j        z  t          d                     d|j        z  }t	          j        t          |                                                    }t          | d          }t          |dd          }t          j
                            |          rt          j        |           t          j
                            t          |d	                    r"t          j        t          |d	                     t          j
                            t          |d
                    r"t          j        t          |d
                     t          j        |d          5 }|                    |           ddd           n# 1 swxY w Y   d|j        z  }t          j        t          ||          |           t          j        t          ||dd	          t          |d	                     t          j        t          ||dd
          t          |d
                     t(          rt          j        t          |d
          t          | dd
                     t          j        t          |d          t          | dd                     d}	d                    |	|j                  }
t-          t          | dd          t          |
                                                     dS dS )r  r  Tr   r   z*https://github.com/npm/cli/archive/v%s.zipr}  node_modulesrO   znpm.cmdz
npm-cli.jsr   Nzcli-%sr~  z)https://raw.githubusercontent.com/npm/cliz{}/{}/bin/npm)r   r   rO   r   r:  r;  r<  r&   rH   r"   r#   r%   rp  rmtreeremoverP  rQ  rV  rq  r   r+  r0   r   )r   rW  rz   npm_urlnpm_contentsbin_pathnode_modules_pathzipfnpm_ver
npm_gh_urlnpm_bin_urls              r   install_npm_winr  D  s   
 KK-8T***  , , ,:TXEG:gg..335566LGY''HX~u==	w~~'(( )'(((	w~~d8Y//00 -
	$x++,,,	w~~d8\2233 0
	$x..///	s	+	+ !t   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !G
OD'**,=>>>
KWgui88Xy))+ + +
KWgul;;X|,,. . .  LD<00%66	8 	8 	8X~66We^<<	> 	> 	>@
%,,ZBB$wu--w{/C/C/H/H/J/JKKKKKL Ls   7FF Fc                 6   t                               dt          d                     d t          |j                                                  D             }t          | dd          }|j                            d          d	k    r|j        n	|j        d
z   }|j        dk    s|dk    rdt          |          z   dz   }ndt          |          z   dz   dz   }|D ]"}|st          |d|iz  g|j        d           #t                               d           dS )z*
    Install node.js packages via npm
    z  * Install node.js packages ... Tr   r   c                 6    g | ]}|                                 S rY   )r5   )rC   packages     r   rO  z$install_packages.<locals>.<listcomp>t  s,     5 5 5G 5 5 5rG   r~  r  rh   ri   z.0r   z1.0.0z. z && npm install -g %(pack)sz && npm install %(pack)sz && npm activate %(pack)spack)r   r   r   r   N)r   r   r   r3   r   r4   rH   rO   countr  r
  r8   )r   rz   packagesactivate_pathreal_npm_verr   r  s          r   install_packagesr  n  sh    KK2T***  , , ,5 5T&''11335 5 5H%44M#x~~c22a77488TX_Lx8|w66VM***+, VM***())*  O O 	67##%26,	O 	O 	O 	O 	O KKrG   c                    t           rFt          t          t          d}t	          | d          }t	          |d          }t	          |d          }nEt
          t          t          d}t	          | d          }t	          |d          }t	          |d          }t          rt          |           |j
        d	k    r
t          |d<   t	          d
d          }|j        p>dt          j                            t          j                            |                     z  }|j
        d	k    rt          j                                        }|                    dt'          |d         |          i           dD ]M}	t)          j        d|	gt(          j        |                                          \  }
}t1          |
          }|r nN|s
J d            |                                D ]\  }}t	          ||          }|                    d|          }|                    dt          j                            |                     }|                    d|          }|                    dt          j                            |                    }|                    d|          }t          rRt7          ddt          j                            |          gdd          \  }}|                    d|d                   }n|                    dd          }d}|j        rMt:                              |d          }t>                              |d          }||z   |z   }tA          |          }tC          |||           t          j        "                    |          s`t           rB	 t7          d |dgd!d!           d#S # tF          $ r tH          %                    d"           Y d#S w xY wt          j&        d|           d#S d#S )$z7
    Install virtual environment activation script
    )zactivate.batzdeactivate.batzActivate.ps1r}  r  z
nodejs.exe)r  activate.fishshimr~  r   nodejsrs   libr  z(%s)r  )r  r   r  )ru   rd   z-Did not find nodejs or node system executable__NODE_VIRTUAL_PROMPT____NODE_VIRTUAL_ENV____SHIM_NODE____BIN_NAME____MOD_NAME__cygpathz-wF)r   r   __NPM_CONFIG_PREFIX__r   z$NODE_VIRTUAL_ENVr^   )r   mklinkTz'Error: Failed to create nodejs.exe linkN)'r   ACTIVATE_BATDEACTIVATE_BATACTIVATE_PS1rH   ACTIVATE_SHACTIVATE_FISHSHIMr+  r   r   r   r"   r#   r1   r  r   r   r   rf   rv   rw   rx   ry   ra   r   r_   r
  r   DISABLE_PROMPTr.   ENABLE_PROMPTr,   r   r%   r   r   r   rs  )r   rz   filesbin_dir	shim_nodeshim_nodejsmod_dirr   rd   	candidatewhich_node_outputr   rH  r   	file_pathcyg_bin_dirneed_appenddisable_promptenable_prompts                      r   install_activater    s     .(,(
 

 w	***--	7L11 $*
 

 w&&&))	7H-- gyHf5.))G[OFRW%5%5bgoog6N6N%O%OOFyHjoo

F4S['JJKLLL+ 	 	I#-#3)$!C$1 $1 $11< !q %%677I IIIIIy : :g$''	//";VDD//"8"$'//'":":< <///9==//."'2B2B72K2KLL//.':: 	;#D"'//'":":;!E3 3 3NA{ oo&={1~NNGGoo&=&9; ;G ! 	/+//b99N)--dB77M$w.>G~..K)W[999997>>+&& , 	,H+z:D$GGGGG H H HFGGGGGGH Jv{+++++, ,s   N, ,$OOc                     t           sTt          t          | dd          d          5 }|                    t                     d d d            d S # 1 swxY w Y   d S d S )Nr~  predeactivatea)r   r3   rH   r   PREDEACTIVATE_SH)r   hooks     r   set_predeactivate_hookr    s     )$w77== 	)JJ'(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)) )s   AAAc                 T   t           j                            |           r=|j        s6t                              d|            |j        st          j        d           t          t          t          | d                              }t          |           |j        dk    rt          | ||           nXt          t          | d                     t          t          | d                     t          t          | dd                     t          | |           t!          |          dk     s|j        r)t$          st&          rt(          nt*          } || ||           |j        rt/          | |           |j        rt1          |            |j        rt5          j        |           d	S d	S )
z3
    Creates a new environment in ``env_dir``.
    z! * Environment already exists: %sri   rv  rs   r~  r  r  )r      r   N)r"   r#   r%   r   r   r   r   r   exitr   r  rH   r   r   r  r  r|   rP   r   r+  r  r  r   r  r  r   rp  r  )r   rz   rW  instfuncs       r   create_environmentr    s    
w~~g t'= 7AAAz 	HQKKKgd7E223344G	'NNNyHWgt,,,,d7E""###d7E""###d7E>22333 Wd###d##i//4=/&,J	J??{'4((( ($''' (w'''~ g rG   c                      t          dt          z            } t          j        |                                                     d                    S )Nz%s/index.jsonzUTF-8)r<  r  jsonloadsr&   r   )responses    r   _get_versions_jsonr    s:    566H:hmmoo,,W55666rG   c                  D    d t                      D             d d d         S )Nc                 D    g | ]}|d                               d          S )r   rE   lstrip)rC   dcts     r   rO  z%get_node_versions.<locals>.<listcomp>	  s*    GGG3C	N!!#&&GGGrG   )r  rY   rG   r   get_node_versionsr    s(    GG2D2F2FGGG"MMrG   c                      t                      fdt          dt                    d          D             } | D ]/}t                              d                    |                     0dS )z;
    Prints into stdout all available node.js versions
    c                 *    g | ]}||d z            S )   rY   )rC   posversionss     r   rO  z'print_node_versions.<locals>.<listcomp>  s3       "%S1W  rG   r   r  	N)r  rangerl   r   r   rH   )chunks_of_8chunkr  s     @r   print_node_versionsr    s     !""H   ).q#h--)C)C  K  & &DIIe$$%%%%& &rG   c                  \    t                      d         d                             d          S )z,
    Return last stable node.js version
    r   r   rE   )r  r   rY   rG   r   get_last_stable_node_versionr    s(     "9-44S999rG   c                  N    t          d t                      D             d          S )z7
    Return the last node.js version marked as LTS
    c              3   \   K   | ]'}|d          
|d                              d          V  (dS )ltsr   rE   Nr  )rC   rE   s     r   rF   z,get_last_lts_node_version.<locals>.<genexpr>#  sP       < <!E(<9$$S)) < < < < < <rG   N)nextr  rY   rG   r   get_last_lts_node_versionr    s>      < <,..< < <=AC C CrG   c                    | j         rt          t          d          rt          j        }nt          t          d          r't          j        t          j        k    rt          j        }nQdt
          j        v rt          j        }n6t                              d           t          j	        d           n| j
        }t          |          S )Nreal_prefixbase_prefixCONDA_PREFIXz!No python virtualenv is availableri   )r   hasattrr   prefixr  r"   r   r   r   r  r   r   )rz   ress     r   get_env_dirr  '  s     3&& 	*CCS-(( 	S_
-J-J*CCrz))*CCLL<===HQKKKKl3<<rG   c                     dt           j        v rt                                           dS t	          d          } t                              | j        | j                   t	                      } | j        	                                dk    r0t          r)t                              d           t          d           | j        ad}| j        rd| j        v r| j        an)| j        }n!t#                      st%                      rd	}nd
}t           d|z  a| j        r| j        	                                dk    rt'                      | _        n0| j        	                                dk    rt)                      | _        | j        rt-                       dS | j        r!t1          |           }t3          ||            dS t1          |           }t5          ||            dS )z
    Entry point
    z--dump-config-defaultsNF)r   rs   z4Installing system node.js on win32 is not supported!r    z://zunofficial-builds.nodejs.orgz
nodejs.orgzhttps://%s/download/releaser   r  )r   argvr   rJ   r   r?   r   r8   r   r*  r   r   r   r  rV   rW   r  r  r  r  r  r   r  r   r  r  r  )rz   
src_domainr   s      r   mainr   8  s   
  38++E"""D
LL!4<000<<DyH$$$KLLLQ
 ,J{ 	"DK;LLJJ			 "Z\\ "3

!
4zA9 0	))X55022					e	#	#-//	y *	 *d##$'''''d##7D)))))rG   z
# disable nodeenv's prompt
# (prompt already changed by original virtualenv's script)
# https://github.com/ekalinin/nodeenv/issues/26
NODE_VIRTUAL_ENV_DISABLE_PROMPT=1
z
# disable nodeenv's prompt
# (prompt already changed by original virtualenv's script)
# https://github.com/ekalinin/nodeenv/issues/26
set NODE_VIRTUAL_ENV_DISABLE_PROMPT 1
)r  r  z'
unset NODE_VIRTUAL_ENV_DISABLE_PROMPT
z(
set -e NODE_VIRTUAL_ENV_DISABLE_PROMPT
z#!/usr/bin/env bash
export NODE_PATH='__NODE_VIRTUAL_ENV__/lib/node_modules'
export NPM_CONFIG_PREFIX='__NODE_VIRTUAL_ENV__'
export npm_config_prefix='__NODE_VIRTUAL_ENV__'
exec '__SHIM_NODE__' "$@"
aQ  
@echo off
set "NODE_VIRTUAL_ENV=__NODE_VIRTUAL_ENV__"
if not defined PROMPT (
    set "PROMPT=$P$G"
)
if defined _OLD_VIRTUAL_PROMPT (
    set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
)
if defined _OLD_VIRTUAL_NODE_PATH (
    set "NODE_PATH=%_OLD_VIRTUAL_NODE_PATH%"
)
set "_OLD_VIRTUAL_PROMPT=%PROMPT%"
set "PROMPT=__NODE_VIRTUAL_PROMPT__ %PROMPT%"
if defined NODE_PATH (
    set "_OLD_VIRTUAL_NODE_PATH=%NODE_PATH%"
    set NODE_PATH=
)
if defined _OLD_VIRTUAL_PATH (
    set "PATH=%_OLD_VIRTUAL_PATH%"
) else (
    set "_OLD_VIRTUAL_PATH=%PATH%"
)
set "PATH=%NODE_VIRTUAL_ENV%\Scripts;%PATH%"
:END

aV  @echo off
if defined _OLD_VIRTUAL_PROMPT (
    set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
)
set _OLD_VIRTUAL_PROMPT=
if defined _OLD_VIRTUAL_NODE_PATH (
    set "NODE_PATH=%_OLD_VIRTUAL_NODE_PATH%"
    set _OLD_VIRTUAL_NODE_PATH=
)
if defined _OLD_VIRTUAL_PATH (
    set "PATH=%_OLD_VIRTUAL_PATH%"
)
set _OLD_VIRTUAL_PATH=
set NODE_VIRTUAL_ENV=
:END
aj  
function global:deactivate ([switch]$NonDestructive) {
    # Revert to original values
    if (Test-Path function:_OLD_VIRTUAL_PROMPT) {
        copy-item function:_OLD_VIRTUAL_PROMPT function:prompt
        remove-item function:_OLD_VIRTUAL_PROMPT
    }
    if (Test-Path env:_OLD_VIRTUAL_NODE_PATH) {
        copy-item env:_OLD_VIRTUAL_NODE_PATH env:NODE_PATH
        remove-item env:_OLD_VIRTUAL_NODE_PATH
    }
    if (Test-Path env:_OLD_VIRTUAL_PATH) {
        copy-item env:_OLD_VIRTUAL_PATH env:PATH
        remove-item env:_OLD_VIRTUAL_PATH
    }
    if (Test-Path env:NODE_VIRTUAL_ENV) {
        remove-item env:NODE_VIRTUAL_ENV
    }
    if (!$NonDestructive) {
        # Self destruct!
        remove-item function:deactivate
    }
}

deactivate -nondestructive
$env:NODE_VIRTUAL_ENV="__NODE_VIRTUAL_ENV__"

# Set the prompt to include the env name
# Make sure _OLD_VIRTUAL_PROMPT is global
function global:_OLD_VIRTUAL_PROMPT {""}
copy-item function:prompt function:_OLD_VIRTUAL_PROMPT
function global:prompt {
    Write-Host -NoNewline -ForegroundColor Green '__NODE_VIRTUAL_PROMPT__ '
    _OLD_VIRTUAL_PROMPT
}

# Clear NODE_PATH
if (Test-Path env:NODE_PATH) {
    copy-item env:NODE_PATH env:_OLD_VIRTUAL_NODE_PATH
    remove-item env:NODE_PATH
}

# Add the venv to the PATH
copy-item env:PATH env:_OLD_VIRTUAL_PATH
$env:PATH = "$env:NODE_VIRTUAL_ENV\Scripts;$env:PATH"
a  

# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly

deactivate_node () {
    # reset old environment variables
    if [ -n "${_OLD_NODE_VIRTUAL_PATH:-}" ] ; then
        PATH="${_OLD_NODE_VIRTUAL_PATH:-}"
        export PATH
        unset _OLD_NODE_VIRTUAL_PATH

        NODE_PATH="${_OLD_NODE_PATH:-}"
        export NODE_PATH
        unset _OLD_NODE_PATH

        NPM_CONFIG_PREFIX="${_OLD_NPM_CONFIG_PREFIX:-}"
        npm_config_prefix="${_OLD_npm_config_prefix:-}"
        export NPM_CONFIG_PREFIX
        export npm_config_prefix
        unset _OLD_NPM_CONFIG_PREFIX
        unset _OLD_npm_config_prefix
    fi

    # This should detect bash and zsh, which have a hash command that must
    # be called to get it to forget past commands.  Without forgetting
    # past commands the $PATH changes we made may not be respected
    if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
        hash -r
    fi

    if [ -n "${_OLD_NODE_VIRTUAL_PS1:-}" ] ; then
        PS1="${_OLD_NODE_VIRTUAL_PS1:-}"
        export PS1
        unset _OLD_NODE_VIRTUAL_PS1
    fi

    unset NODE_VIRTUAL_ENV
    if [ ! "${1:-}" = "nondestructive" ] ; then
    # Self destruct!
        unset -f deactivate_node
    fi
}

freeze () {
    local NPM_VER=`npm -v | cut -d '.' -f 1`
    local re="[a-zA-Z0-9\.\-]+@[0-9]+\.[0-9]+\.[0-9]+([\+\-][a-zA-Z0-9\.\-]+)*"
    if [ "$NPM_VER" = '0' ]; then
        NPM_LIST=`npm list installed active 2>/dev/null | \
                  cut -d ' ' -f 1 | grep -v npm`
    else
        local npmls="npm ls -g"
        if [ "${1:-}" = "-l" ]; then
            npmls="npm ls"
            shift
        fi
        NPM_LIST=$(eval ${npmls} | grep -E '^.{4}\w{1}'| \
                                   grep -o -E "$re"| grep -v npm)
    fi

    if [ -z "$@" ]; then
        echo "$NPM_LIST"
    else
        echo "$NPM_LIST" > $@
    fi
}

# unset irrelevant variables
deactivate_node nondestructive

# find the directory of this script
# http://stackoverflow.com/a/246128
if [ "${BASH_SOURCE:-}" ] ; then
    SOURCE="${BASH_SOURCE[0]}"

    while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
    DIR="$( command cd -P "$( dirname "$SOURCE" )" > /dev/null && pwd )"

    NODE_VIRTUAL_ENV="$(dirname "$DIR")"
else
    # dash not movable. fix use case:
    #   dash -c " . node-env/bin/activate && node -v"
    NODE_VIRTUAL_ENV="__NODE_VIRTUAL_ENV__"
fi

# NODE_VIRTUAL_ENV is the parent of the directory where this script is
export NODE_VIRTUAL_ENV

_OLD_NODE_VIRTUAL_PATH="$PATH"
PATH="$NODE_VIRTUAL_ENV/lib/node_modules/.bin:$NODE_VIRTUAL_ENV/__BIN_NAME__:$PATH"
export PATH

_OLD_NODE_PATH="${NODE_PATH:-}"
NODE_PATH="$NODE_VIRTUAL_ENV/__MOD_NAME__"
export NODE_PATH

_OLD_NPM_CONFIG_PREFIX="${NPM_CONFIG_PREFIX:-}"
_OLD_npm_config_prefix="${npm_config_prefix:-}"
NPM_CONFIG_PREFIX="__NPM_CONFIG_PREFIX__"
npm_config_prefix="__NPM_CONFIG_PREFIX__"
export NPM_CONFIG_PREFIX
export npm_config_prefix

if [ -z "${NODE_VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
    _OLD_NODE_VIRTUAL_PS1="${PS1:-}"
    if [ "x__NODE_VIRTUAL_PROMPT__" != x ] ; then
        PS1="__NODE_VIRTUAL_PROMPT__ ${PS1:-}"
    else
    if [ "`basename \"$NODE_VIRTUAL_ENV\"`" = "__" ] ; then
        # special case for Aspen magic directories
        # see http://www.zetadev.com/software/aspen/
        PS1="[`basename \`dirname \"$NODE_VIRTUAL_ENV\"\``] ${PS1:-}"
    else
        PS1="(`basename \"$NODE_VIRTUAL_ENV\"`) ${PS1:-}"
    fi
    fi
    export PS1
fi

# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands.  Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
    hash -r
fi
a  

# This file must be used with "source bin/activate.fish" *from fish*
# you cannot run it directly

function deactivate_node -d 'Exit nodeenv and return to normal environment.'
    # reset old environment variables
    if test -n "$_OLD_NODE_VIRTUAL_PATH"
        set -gx PATH $_OLD_NODE_VIRTUAL_PATH
        set -e _OLD_NODE_VIRTUAL_PATH
    end

    if test -n "$_OLD_NODE_PATH"
        set -gx NODE_PATH $_OLD_NODE_PATH
        set -e _OLD_NODE_PATH
    else
        set -e NODE_PATH
    end

    if test -n "$_OLD_NPM_CONFIG_PREFIX"
        set -gx NPM_CONFIG_PREFIX $_OLD_NPM_CONFIG_PREFIX
        set -e _OLD_NPM_CONFIG_PREFIX
    else
        set -e NPM_CONFIG_PREFIX
    end

    if test -n "$_OLD_npm_config_prefix"
        set -gx npm_config_prefix $_OLD_npm_config_prefix
        set -e _OLD_npm_config_prefix
    else
        set -e npm_config_prefix
    end

    if test -n "$_OLD_NODE_FISH_PROMPT_OVERRIDE"
        # Set an empty local `$fish_function_path` to allow the removal of
        # `fish_prompt` using `functions -e`.
        set -l fish_function_path

        # Prevents error when using nested fish instances
        if functions -q _node_old_fish_prompt
            # Erase virtualenv's `fish_prompt` and restore the original.
            functions -e fish_prompt
            functions -c _node_old_fish_prompt fish_prompt
            functions -e _node_old_fish_prompt
        end
        set -e _OLD_NODE_FISH_PROMPT_OVERRIDE
    end

    set -e NODE_VIRTUAL_ENV

    if test (count $argv) = 0 -o "$argv[1]" != "nondestructive"
        # Self destruct!
        functions -e deactivate_node
    end
end

function freeze -d 'Show a list of installed packages - like `pip freeze`'
    set -l NPM_VER (npm -v | cut -d '.' -f 1)
    set -l RE "[a-zA-Z0-9\.\-]+@[0-9]+\.[0-9]+\.[0-9]+([\+\-][a-zA-Z0-9\.\-]+)*"

    if test "$NPM_VER" = "0"
        set -g NPM_LIST (npm list installed active >/dev/null ^/dev/null |                          cut -d ' ' -f 1 | grep -v npm)
    else
        set -l NPM_LS "npm ls -g"
        if test (count $argv) -gt 0 -a "$argv[1]" = "-l"
            set NPM_LS "npm ls"
            set -e argv[1]
        end
        set -l NPM_LIST (eval $NPM_LS | grep -E '^.{4}\w{1}' |                                         grep -o -E "$re" |                                         grep -v npm)
    end

    if test (count $argv) = 0
        echo $NPM_LIST
    else
        echo $NPM_LIST > $argv[1]
    end
end

# unset irrelevant variables
deactivate_node nondestructive

# find the directory of this script
begin
    set -l SOURCE (status filename)
    while test -L "$SOURCE"
        set SOURCE (readlink "$SOURCE")
    end
    set -l DIR (dirname (realpath "$SOURCE"))

    # NODE_VIRTUAL_ENV is the parent of the directory where this script is
    set -gx NODE_VIRTUAL_ENV (dirname "$DIR")
end

set -gx _OLD_NODE_VIRTUAL_PATH $PATH
# The node_modules/.bin path doesn't exists and it will print a warning, and
# that's why we redirect stderr to /dev/null :)
set -gx PATH "$NODE_VIRTUAL_ENV/lib/node_modules/.bin" "$NODE_VIRTUAL_ENV/__BIN_NAME__" $PATH ^/dev/null

if set -q NODE_PATH
    set -gx _OLD_NODE_PATH $NODE_PATH
    set -gx NODE_PATH "$NODE_VIRTUAL_ENV/__MOD_NAME__" $NODE_PATH
else
    set -gx NODE_PATH "$NODE_VIRTUAL_ENV/__MOD_NAME__"
end

if set -q NPM_CONFIG_PREFIX
    set -gx _OLD_NPM_CONFIG_PREFIX $NPM_CONFIG_PREFIX
end
set -gx NPM_CONFIG_PREFIX "__NPM_CONFIG_PREFIX__"

if set -q npm_config_prefix
    set -gx _OLD_npm_config_prefix $npm_config_prefix
end
set -gx npm_config_prefix "__NPM_CONFIG_PREFIX__"

if test -z "$NODE_VIRTUAL_ENV_DISABLE_PROMPT"
    # Copy the current `fish_prompt` function as `_node_old_fish_prompt`.
    functions -c fish_prompt _node_old_fish_prompt

    function fish_prompt
        # Save the current $status, for fish_prompts that display it.
        set -l old_status $status

        # Prompt override provided?
        # If not, just prepend the environment name.
        if test -n "__NODE_VIRTUAL_PROMPT__"
            printf '%s%s ' "__NODE_VIRTUAL_PROMPT__" (set_color normal)
        else
            printf '%s(%s) ' (set_color normal) (basename "$NODE_VIRTUAL_ENV")
        end

        # Restore the original $status
        echo "exit $old_status" | source
        _node_old_fish_prompt
    end

    set -gx _OLD_NODE_FISH_PROMPT_OVERRIDE "$NODE_VIRTUAL_ENV"
end
zA
if type -p deactivate_node > /dev/null; then deactivate_node;fi
z#!/bin/sh

if [ -r "$1" ]; then
    SCRIPT_PATH=$(cygpath -w "$1")
    shift
    set - $SCRIPT_PATH $@
    unset SCRIPT_PATH
fi

exec $(dirname "$0")/node.exe "$@"
__main__)T)TF)TFNN)r   )FN)irN   
contextlibr:  r  r   r"   rJ  rd  r   r   rR  r   rv   r4  r  pipesr   r  shlexr  rP  rp  r  r  r   r   rb  rS  r   httplibr=  ImportErrorconfigparserurllib.requestrequesthttpclientr   r#   rH   r  r  r   rs   r   r)   r+  rV   r   objectr   r   r(   _defaultra   rf   rq   r|   r   r   r   r   r   r   r   r
  r  r  r  r/  r2  contextmanagerr8  rA  r^  r<  rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  rK   rY   rG   r   <module>r/     s        				  



 				 				 



         f%%%%%%%%%%%%%        0======NNN%%k22INNN+NN 0 0 0))))))$$$$$$%%g..IKKK[/NNN0 	w|
'/		!		!			i	'HO(();<<	   (?' ?' ?' ?' ?'V ?' ?' ?'D $  !*44<<!8!8    1 1 1. . .  	$ 	$ 	$  > 
P P Pf   >	= 	= 	=" " "" " " "J ,1#B' B' B' B'J  O O O+ + +, , ,B, , ,
       2 2 2:
  
  
  # # # #$1 1 1:1K 1K 1Kh
 
 
     F  >'L 'L 'LT  6P, P, P,f) ) )  B7 7 7
N N N	& 	& 	&: : :C C C  "2* 2* 2*r  	 8$-^}@M^ 
 zDFFFFF s   $%B
 
1B>=B>