2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								module . exports  =  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  ( function ( modules ,  runtime )  {  // webpackBootstrap
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	// The module cache
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	var  installedModules  =  { } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	// The require function
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	function  _ _webpack _require _ _ ( moduleId )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		// Check if module is in cache
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		if ( installedModules [ moduleId ] )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  			return  installedModules [ moduleId ] . exports ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		// Create a new module (and put it into the cache)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		var  module  =  installedModules [ moduleId ]  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  			i :  moduleId ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  			l :  false ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  			exports :  { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		// Execute the module function
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		modules [ moduleId ] . call ( module . exports ,  module ,  module . exports ,  _ _webpack _require _ _ ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		// Flag the module as loaded
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		module . l  =  true ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		// Return the exports of the module
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		return  module . exports ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	_ _webpack _require _ _ . ab  =  _ _dirname  +  "/" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	// the startup function
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	function  startup ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		// Load entry module and return exports
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		return  _ _webpack _require _ _ ( 385 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	// run startup
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	return  startup ( ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  } )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  ( {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  11 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Returns a wrapper function that returns a wrapped callback
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// The wrapper function should do some stuff, and return a
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// presumably different callback function.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This makes sure that own properties are retained, so that
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// decorations and such are not lost along the way.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  wrappy  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  wrappy  ( fn ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( fn  &&  cb )  return  wrappy ( fn ) ( cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  fn  !==  'function' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  TypeError ( 'need wrapper function' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Object . keys ( fn ) . forEach ( function  ( k )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    wrapper [ k ]  =  fn [ k ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  wrapper 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  wrapper ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  args  =  new  Array ( arguments . length ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ;  i  <  args . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      args [ i ]  =  arguments [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  ret  =  fn . apply ( this ,  args ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  cb  =  args [ args . length - 1 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  ret  ===  'function'  &&  ret  !==  cb )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Object . keys ( cb ) . forEach ( function  ( k )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ret [ k ]  =  cb [ k ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ret 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  16 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "tls" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  49 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module ,  _ _unusedexports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  wrappy  =  _ _webpack _require _ _ ( 11 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  wrappy ( once )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . strict  =  wrappy ( onceStrict )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								once . proto  =  once ( function  ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Object . defineProperty ( Function . prototype ,  'once' ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    value :  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  once ( this ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    configurable :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Object . defineProperty ( Function . prototype ,  'onceStrict' ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    value :  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  onceStrict ( this ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    configurable :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  once  ( fn )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  f  =  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( f . called )  return  f . value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    f . called  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  f . value  =  fn . apply ( this ,  arguments ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  f . called  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  f 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  onceStrict  ( fn )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  f  =  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( f . called ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      throw  new  Error ( f . onceError ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    f . called  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  f . value  =  fn . apply ( this ,  arguments ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  name  =  fn . name  ||  'Function wrapped with `once`' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  f . onceError  =  name  +  " shouldn't be called more than once" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  f . called  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  f 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  87 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "os" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  93 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module ,  _ _unusedexports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  minimatch  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								minimatch . Minimatch  =  Minimatch  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  path  =  {  sep :  '/'  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								try  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  path  =  _ _webpack _require _ _ ( 622 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  catch  ( er )  { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  GLOBSTAR  =  minimatch . GLOBSTAR  =  Minimatch . GLOBSTAR  =  { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  expand  =  _ _webpack _require _ _ ( 306 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  plTypes  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  '!' :  {  open :  '(?:(?!(?:' ,  close :  '))[^/]*?)' } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  '?' :  {  open :  '(?:' ,  close :  ')?'  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  '+' :  {  open :  '(?:' ,  close :  ')+'  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  '*' :  {  open :  '(?:' ,  close :  ')*'  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  '@' :  {  open :  '(?:' ,  close :  ')'  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// any single thing other than /
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// don't need to escape / when using new RegExp()
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  qmark  =  '[^/]'  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// * => any number of characters
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  star  =  qmark  +  '*?'  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ** when dots are allowed.  Anything goes, except .. and .
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// not (^ or / followed by one or two dots followed by $ or /),
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// followed by anything, any number of times.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  twoStarDot  =  '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?'  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// not a ^ or / followed by a dot,
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// followed by anything, any number of times.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  twoStarNoDot  =  '(?:(?!(?:\\\/|^)\\.).)*?'  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// characters that need to be escaped in RegExp.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  reSpecials  =  charSet ( '().*{}+?[]^$\\!' )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// "abc" -> { a:true, b:true, c:true }
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  charSet  ( s )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  s . split ( '' ) . reduce ( function  ( set ,  c )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set [ c ]  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  set 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ,  { } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// normalizes slashes.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  slashSplit  =  /\/+/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								minimatch . filter  =  filter  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  filter  ( pattern ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options  =  options  ||  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  function  ( p ,  i ,  list )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  minimatch ( p ,  pattern ,  options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  ext  ( a ,  b )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  a  =  a  ||  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  b  =  b  ||  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  t  =  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Object . keys ( b ) . forEach ( function  ( k )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    t [ k ]  =  b [ k ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Object . keys ( a ) . forEach ( function  ( k )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    t [ k ]  =  a [ k ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  t 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								minimatch . defaults  =  function  ( def )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! def  ||  ! Object . keys ( def ) . length )  return  minimatch 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  orig  =  minimatch 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  m  =  function  minimatch  ( p ,  pattern ,  options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  orig . minimatch ( p ,  pattern ,  ext ( def ,  options ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  m . Minimatch  =  function  Minimatch  ( pattern ,  options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  orig . Minimatch ( pattern ,  ext ( def ,  options ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  m 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Minimatch . defaults  =  function  ( def )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! def  ||  ! Object . keys ( def ) . length )  return  Minimatch 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  minimatch . defaults ( def ) . Minimatch 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  minimatch  ( p ,  pattern ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  pattern  !==  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  TypeError ( 'glob pattern string required' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! options )  options  =  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // shortcut: comments match nothing.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! options . nocomment  &&  pattern . charAt ( 0 )  ===  '#' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // "" only matches ""
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( pattern . trim ( )  ===  '' )  return  p  ===  '' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  new  Minimatch ( pattern ,  options ) . match ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  Minimatch  ( pattern ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ( this  instanceof  Minimatch ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  Minimatch ( pattern ,  options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  pattern  !==  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  TypeError ( 'glob pattern string required' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! options )  options  =  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  pattern  =  pattern . trim ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // windows support: need to use /, not \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( path . sep  !==  '/' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pattern  =  pattern . split ( path . sep ) . join ( '/' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . options  =  options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . set  =  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . pattern  =  pattern 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . regexp  =  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . negate  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . comment  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . empty  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // make the set of regexps etc.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . make ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Minimatch . prototype . debug  =  function  ( )  { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Minimatch . prototype . make  =  make  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  make  ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // don't do it more than once.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . _made )  return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  pattern  =  this . pattern 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  options  =  this . options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // empty patterns and comments match nothing.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! options . nocomment  &&  pattern . charAt ( 0 )  ===  '#' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . comment  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! pattern )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . empty  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // step 1: figure out negation, etc.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . parseNegate ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // step 2: expand braces
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  set  =  this . globSet  =  this . braceExpand ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( options . debug )  this . debug  =  console . error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . debug ( this . pattern ,  set ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // step 3: now we have a set, so turn each one into a series of path-portion
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // matching patterns.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // These will be regexps, except in the case of "**", which is
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // set to the GLOBSTAR object for globstar behavior,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // and will not contain any / characters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set  =  this . globParts  =  set . map ( function  ( s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  s . split ( slashSplit ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . debug ( this . pattern ,  set ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // glob --> regexps
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set  =  set . map ( function  ( s ,  si ,  set )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  s . map ( this . parse ,  this ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ,  this ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . debug ( this . pattern ,  set ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // filter out everything that didn't compile properly.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set  =  set . filter ( function  ( s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  s . indexOf ( false )  ===  - 1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . debug ( this . pattern ,  set ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . set  =  set 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Minimatch . prototype . parseNegate  =  parseNegate  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  parseNegate  ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  pattern  =  this . pattern 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  negate  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  options  =  this . options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  negateOffset  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( options . nonegate )  return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ,  l  =  pattern . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ;  i  <  l  &&  pattern . charAt ( i )  ===  '!' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    negate  =  ! negate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    negateOffset ++ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( negateOffset )  this . pattern  =  pattern . substr ( negateOffset ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . negate  =  negate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Brace expansion:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// a{b,c}d -> abd acd
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// a{b,}c -> abc ac
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// a{0..3}d -> a0d a1d a2d a3d
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// a{b,c{d,e}f}g -> abg acdfg acefg
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Invalid sets are not expanded.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// a{2..}b -> a{2..}b
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// a{b}c -> a{b}c
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								minimatch . braceExpand  =  function  ( pattern ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  braceExpand ( pattern ,  options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Minimatch . prototype . braceExpand  =  braceExpand  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  braceExpand  ( pattern ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( this  instanceof  Minimatch )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      options  =  this . options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      options  =  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  pattern  =  typeof  pattern  ===  'undefined' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ?  this . pattern  :  pattern 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  pattern  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  TypeError ( 'undefined pattern' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( options . nobrace  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ! pattern . match ( /\{.*\}/ ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // shortcut. no need to expand.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  [ pattern ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  expand ( pattern ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// parse a component of the expanded set.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// At this point, no pattern may contain "/" in it
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// so we're going to return a 2d array, where each entry is the full
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// pattern, split on '/', and then turned into a regular expression.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// A regexp is made at the end which joins each array with an
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// escaped /, and another full one which joins each regexp with |.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Following the lead of Bash 4.1, note that "**" only has special meaning
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// when it is the *only* thing in a path portion.  Otherwise, any series
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// of * is equivalent to a single *.  Globstar behavior is enabled by
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// default, and can be disabled by setting options.noglobstar.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Minimatch . prototype . parse  =  parse  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  SUBPARSE  =  { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  parse  ( pattern ,  isSub )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( pattern . length  >  1024  *  64 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  TypeError ( 'pattern is too long' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  options  =  this . options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // shortcuts
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! options . noglobstar  &&  pattern  ===  '**' )  return  GLOBSTAR 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( pattern  ===  '' )  return  '' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  re  =  '' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  hasMagic  =  ! ! options . nocase 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  escaping  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // ? => one single character
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  patternListStack  =  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  negativeLists  =  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stateChar 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  inClass  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  reClassStart  =  - 1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  classStart  =  - 1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // . and .. never match anything that doesn't start with .,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // even when options.dot is set.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  patternStart  =  pattern . charAt ( 0 )  ===  '.'  ?  ''  // anything
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // not (start or / followed by . or .. followed by / or end)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  :  options . dot  ?  '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  :  '(?!\\.)' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  clearStateChar  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( stateChar )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // we had some state-tracking character
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // that wasn't consumed by this pass.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      switch  ( stateChar )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  '*' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          re  +=  star 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          hasMagic  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  '?' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          re  +=  qmark 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          hasMagic  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          re  +=  '\\'  +  stateChar 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . debug ( 'clearStateChar %j %j' ,  stateChar ,  re ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      stateChar  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ,  len  =  pattern . length ,  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ;  ( i  <  len )  &&  ( c  =  pattern . charAt ( i ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . debug ( '%s\t%s %s %j' ,  pattern ,  i ,  re ,  c ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // skip over any that are escaped.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( escaping  &&  reSpecials [ c ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      re  +=  '\\'  +  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      escaping  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    switch  ( c )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      case  '/' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // completely not allowed, even escaped.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Should already be path-split by now.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      case  '\\' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        clearStateChar ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        escaping  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // the various stateChar values
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // for the "extglob" stuff.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      case  '?' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      case  '*' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      case  '+' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      case  '@' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      case  '!' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . debug ( '%s\t%s %s %j <-- stateChar' ,  pattern ,  i ,  re ,  c ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // all of those are literals inside a class, except that
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // the glob [!a] means [^a] in regexp
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( inClass )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . debug ( '  in class' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( c  ===  '!'  &&  i  ===  classStart  +  1 )  c  =  '^' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          re  +=  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // if we already have a stateChar, then it means
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // that there was something like ** or +? in there.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Handle the stateChar, then proceed with this one.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . debug ( 'call clearStateChar %j' ,  stateChar ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        clearStateChar ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        stateChar  =  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // if extglob is disabled, then +(asdf|foo) isn't a thing.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // just clear the statechar *now*, rather than even diving into
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // the patternList stuff.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( options . noext )  clearStateChar ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      case  '(' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( inClass )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          re  +=  '(' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! stateChar )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          re  +=  '\\(' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        patternListStack . push ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          type :  stateChar , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          start :  i  -  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          reStart :  re . length , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          open :  plTypes [ stateChar ] . open , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          close :  plTypes [ stateChar ] . close 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // negation is (?:(?!js)[^/]*)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        re  +=  stateChar  ===  '!'  ?  '(?:(?!(?:'  :  '(?:' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . debug ( 'plType %j %j' ,  stateChar ,  re ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        stateChar  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      case  ')' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( inClass  ||  ! patternListStack . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          re  +=  '\\)' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        clearStateChar ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        hasMagic  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  pl  =  patternListStack . pop ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // negation is (?:(?!js)[^/]*)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // The others are (?:<pattern>)<type>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        re  +=  pl . close 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( pl . type  ===  '!' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          negativeLists . push ( pl ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pl . reEnd  =  re . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      case  '|' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( inClass  ||  ! patternListStack . length  ||  escaping )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          re  +=  '\\|' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          escaping  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        clearStateChar ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        re  +=  '|' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // these are mostly the same in regexp and glob
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      case  '[' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // swallow any state-tracking char before the [
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        clearStateChar ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( inClass )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          re  +=  '\\'  +  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        inClass  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        classStart  =  i 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        reClassStart  =  re . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        re  +=  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      case  ']' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //  a right bracket shall lose its special
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //  meaning and represent itself in
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //  a bracket expression if it occurs
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //  first in the list.  -- POSIX.2 2.8.3.2
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( i  ===  classStart  +  1  ||  ! inClass )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          re  +=  '\\'  +  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          escaping  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // handle the case where we left a class open.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // "[z-a]" is valid, equivalent to "\[z-a\]"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( inClass )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // split where the last [ was, make sure we don't have
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // an invalid re. if so, re-walk the contents of the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // would-be class to re-translate any characters that
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // were passed through as-is
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // TODO: It would probably be faster to determine this
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // without a try/catch and a new RegExp, but it's tricky
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // to do safely.  For now, this is safe and works.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          var  cs  =  pattern . substring ( classStart  +  1 ,  i ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            RegExp ( '['  +  cs  +  ']' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          }  catch  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // not a valid class!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            var  sp  =  this . parse ( cs ,  SUBPARSE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            re  =  re . substr ( 0 ,  reClassStart )  +  '\\['  +  sp [ 0 ]  +  '\\]' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            hasMagic  =  hasMagic  ||  sp [ 1 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            inClass  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // finish up the class.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        hasMagic  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        inClass  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        re  +=  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // swallow any state char that wasn't consumed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        clearStateChar ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( escaping )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // no need
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          escaping  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  if  ( reSpecials [ c ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          &&  ! ( c  ===  '^'  &&  inClass ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          re  +=  '\\' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        re  +=  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // switch
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  // for
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // handle the case where we left a class open.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // "[abc" is valid, equivalent to "\[abc"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( inClass )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // split where the last [ was, and escape it
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // this is a huge pita.  We now have to re-walk
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // the contents of the would-be class to re-translate
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // any characters that were passed through as-is
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cs  =  pattern . substr ( classStart  +  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sp  =  this . parse ( cs ,  SUBPARSE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    re  =  re . substr ( 0 ,  reClassStart )  +  '\\['  +  sp [ 0 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    hasMagic  =  hasMagic  ||  sp [ 1 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // handle the case where we had a +( thing at the *end*
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // of the pattern.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // each pattern list stack adds 3 chars, and we need to go through
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // and escape any | chars that were passed through as-is for the regexp.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Go through and escape them, taking care not to double-escape any
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // | chars that were already escaped.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( pl  =  patternListStack . pop ( ) ;  pl ;  pl  =  patternListStack . pop ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  tail  =  re . slice ( pl . reStart  +  pl . open . length ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . debug ( 'setting tail' ,  re ,  pl ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // maybe some even number of \, then maybe 1 \, followed by a |
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tail  =  tail . replace ( /((?:\\{2}){0,64})(\\?)\|/g ,  function  ( _ ,  $1 ,  $2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! $2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // the | isn't already escaped, so escape it.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $2  =  '\\' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // need to escape all those slashes *again*, without escaping the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // one that we need for escaping the | character.  As it works out,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // escaping an even number of slashes can be done by simply repeating
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // it exactly after itself.  That's why this trick works.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // I am sorry that you have to see this.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  $1  +  $1  +  $2  +  '|' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . debug ( 'tail=%j\n   %s' ,  tail ,  tail ,  pl ,  re ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  t  =  pl . type  ===  '*'  ?  star 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      :  pl . type  ===  '?'  ?  qmark 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      :  '\\'  +  pl . type 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    hasMagic  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    re  =  re . slice ( 0 ,  pl . reStart )  +  t  +  '\\('  +  tail 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // handle trailing things that only matter at the very end.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  clearStateChar ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( escaping )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // trailing \\
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    re  +=  '\\\\' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // only need to apply the nodot start if the re starts with
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // something that could conceivably capture a dot
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  addPatternStart  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  switch  ( re . charAt ( 0 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  '.' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  '[' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  '(' :  addPatternStart  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Hack to work around lack of negative lookbehind in JS
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // A pattern like: *.!(x).!(y|z) needs to ensure that a name
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // like 'a.xyz.yz' doesn't match.  So, the first negative
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // lookahead, has to look ALL the way ahead, to the end of
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // the pattern.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  n  =  negativeLists . length  -  1 ;  n  >  - 1 ;  n -- )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  nl  =  negativeLists [ n ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  nlBefore  =  re . slice ( 0 ,  nl . reStart ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  nlFirst  =  re . slice ( nl . reStart ,  nl . reEnd  -  8 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  nlLast  =  re . slice ( nl . reEnd  -  8 ,  nl . reEnd ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  nlAfter  =  re . slice ( nl . reEnd ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    nlLast  +=  nlAfter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Handle nested stuff like *(*.js|!(*.json)), where open parens
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // mean that we should *not* include the ) in the bit that is considered
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // "after" the negated section.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  openParensBefore  =  nlBefore . split ( '(' ) . length  -  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  cleanAfter  =  nlAfter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( i  =  0 ;  i  <  openParensBefore ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      cleanAfter  =  cleanAfter . replace ( /\)[+*?]?/ ,  '' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    nlAfter  =  cleanAfter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  dollar  =  '' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( nlAfter  ===  ''  &&  isSub  !==  SUBPARSE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      dollar  =  '$' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  newRe  =  nlBefore  +  nlFirst  +  nlAfter  +  dollar  +  nlLast 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    re  =  newRe 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // if the re is not "" at this point, then we need to make sure
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // it doesn't match against an empty path part.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Otherwise a/* will match a/, which it should not.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( re  !==  ''  &&  hasMagic )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    re  =  '(?=.)'  +  re 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( addPatternStart )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    re  =  patternStart  +  re 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // parsing just a piece of a larger pattern.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( isSub  ===  SUBPARSE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  [ re ,  hasMagic ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // skip the regexp for non-magical patterns
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // unescape anything in it, though, so that it'll be
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // an exact match against a file etc.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! hasMagic )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  globUnescape ( pattern ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  flags  =  options . nocase  ?  'i'  :  '' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  regExp  =  new  RegExp ( '^'  +  re  +  '$' ,  flags ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // If it was an invalid regular expression, then it can't match
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // anything.  This trick looks for a character after the end of
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // the string, which is of course impossible, except in multi-line
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // mode, but it's not a /m regex.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  RegExp ( '$.' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  regExp . _glob  =  pattern 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  regExp . _src  =  re 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  regExp 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								minimatch . makeRe  =  function  ( pattern ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  new  Minimatch ( pattern ,  options  ||  { } ) . makeRe ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Minimatch . prototype . makeRe  =  makeRe  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  makeRe  ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . regexp  ||  this . regexp  ===  false )  return  this . regexp 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // at this point, this.set is a 2d array of partial
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // pattern strings, or "**".
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // It's better to use .match().  This function shouldn't
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // be used, really, but it's pretty convenient sometimes,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // when you just want to work with a regex.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  set  =  this . set 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! set . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . regexp  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  this . regexp 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  options  =  this . options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  twoStar  =  options . noglobstar  ?  star 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    :  options . dot  ?  twoStarDot 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    :  twoStarNoDot 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  flags  =  options . nocase  ?  'i'  :  '' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  re  =  set . map ( function  ( pattern )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  pattern . map ( function  ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  ( p  ===  GLOBSTAR )  ?  twoStar 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      :  ( typeof  p  ===  'string' )  ?  regExpEscape ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      :  p . _src 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) . join ( '\\\/' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) . join ( '|' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // must match entire pattern
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // ending in a * or ** will make it less strict.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  re  =  '^(?:'  +  re  +  ')$' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // can match anything, as long as it's not this.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . negate )  re  =  '^(?!'  +  re  +  ').*$' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . regexp  =  new  RegExp ( re ,  flags ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( ex )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . regexp  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  this . regexp 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								minimatch . match  =  function  ( list ,  pattern ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options  =  options  ||  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  mm  =  new  Minimatch ( pattern ,  options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  list  =  list . filter ( function  ( f )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  mm . match ( f ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( mm . options . nonull  &&  ! list . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    list . push ( pattern ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  list 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Minimatch . prototype . match  =  match  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  match  ( f ,  partial )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . debug ( 'match' ,  f ,  this . pattern ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // short-circuit in the case of busted things.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // comments, etc.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . comment )  return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . empty )  return  f  ===  '' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( f  ===  '/'  &&  partial )  return  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  options  =  this . options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // windows: need to use /, not \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( path . sep  !==  '/' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    f  =  f . split ( path . sep ) . join ( '/' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // treat the test path as a set of pathparts.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  f  =  f . split ( slashSplit ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . debug ( this . pattern ,  'split' ,  f ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // just ONE of the pattern sets in this.set needs to match
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // in order for it to be valid.  If negating, then just one
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // match means that we have failed.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Either way, return on the first hit.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  set  =  this . set 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . debug ( this . pattern ,  'set' ,  set ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Find the basename of the path by looking for the last non-empty segment
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  filename 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  i 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( i  =  f . length  -  1 ;  i  >=  0 ;  i -- )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    filename  =  f [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( filename )  break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( i  =  0 ;  i  <  set . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  pattern  =  set [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  file  =  f 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( options . matchBase  &&  pattern . length  ===  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      file  =  [ filename ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  hit  =  this . matchOne ( file ,  pattern ,  partial ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( hit )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( options . flipNegate )  return  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  ! this . negate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // didn't get any hits.  this is success if it's a negative
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // pattern, failure otherwise.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( options . flipNegate )  return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  this . negate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// set partial to true to test if, for example,
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// "/a/b" matches the start of "/*/b/*/d"
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Partial means, if you run out of file before you run
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// out of pattern, then that's fine, as long as all
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// the parts match.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Minimatch . prototype . matchOne  =  function  ( file ,  pattern ,  partial )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  options  =  this . options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . debug ( 'matchOne' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  'this' :  this ,  file :  file ,  pattern :  pattern  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . debug ( 'matchOne' ,  file . length ,  pattern . length ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  fi  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      pi  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fl  =  file . length , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      pl  =  pattern . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ;  ( fi  <  fl )  &&  ( pi  <  pl ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ;  fi ++ ,  pi ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . debug ( 'matchOne loop' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  p  =  pattern [ pi ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  f  =  file [ fi ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . debug ( pattern ,  p ,  f ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // should be impossible.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // some invalid regexp stuff in the set.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( p  ===  false )  return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( p  ===  GLOBSTAR )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . debug ( 'GLOBSTAR' ,  [ pattern ,  p ,  f ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // "**"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // a/**/b/**/c would match the following:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // a/b/x/y/z/c
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // a/x/y/z/b/c
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // a/b/x/b/x/c
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // a/b/c
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // To do this, take the rest of the pattern after
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // the **, and see if it would match the file remainder.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // If so, return success.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // If not, the ** "swallows" a segment, and try again.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // This is recursively awful.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // a/**/b/**/c matching a/b/x/y/z/c
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // - a matches a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // - doublestar
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //   - matchOne(b/x/y/z/c, b/**/c)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //     - b matches b
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //     - doublestar
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //       - matchOne(x/y/z/c, c) -> no
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //       - matchOne(y/z/c, c) -> no
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //       - matchOne(z/c, c) -> no
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //       - matchOne(c, c) yes, hit
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  fr  =  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  pr  =  pi  +  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( pr  ===  pl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . debug ( '** at the end' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // a ** at the end will just swallow the rest.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // We have found a match.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // however, it will not swallow /.x, unless
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // options.dot is set.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // . and .. are *never* matched by **, for explosively
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // exponential reasons.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( ;  fi  <  fl ;  fi ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( file [ fi ]  ===  '.'  ||  file [ fi ]  ===  '..'  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ( ! options . dot  &&  file [ fi ] . charAt ( 0 )  ===  '.' ) )  return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // ok, let's see if we can swallow whatever we can.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      while  ( fr  <  fl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  swallowee  =  file [ fr ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . debug ( '\nglobstar while' ,  file ,  fr ,  pattern ,  pr ,  swallowee ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // XXX remove this slice.  Just pass the start index.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . matchOne ( file . slice ( fr ) ,  pattern . slice ( pr ) ,  partial ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . debug ( 'globstar found match!' ,  fr ,  fl ,  swallowee ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // found a match.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // can't swallow "." or ".." ever.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // can only swallow ".foo" when explicitly asked.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( swallowee  ===  '.'  ||  swallowee  ===  '..'  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ( ! options . dot  &&  swallowee . charAt ( 0 )  ===  '.' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . debug ( 'dot detected!' ,  file ,  fr ,  pattern ,  pr ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // ** swallows a segment, and continue.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . debug ( 'globstar swallow a segment, and continue' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          fr ++ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // no match was found.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // However, in partial mode, we can't say this is necessarily over.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // If there's more *pattern* left, then
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( partial )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // ran out of file
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . debug ( '\n>>> no match, partial?' ,  file ,  fr ,  pattern ,  pr ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( fr  ===  fl )  return  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // something other than **
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // non-magic patterns just have to match exactly
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // patterns with magic have been turned into regexps.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  hit 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  p  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( options . nocase )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        hit  =  f . toLowerCase ( )  ===  p . toLowerCase ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        hit  =  f  ===  p 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . debug ( 'string match' ,  p ,  f ,  hit ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      hit  =  f . match ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . debug ( 'pattern match' ,  p ,  f ,  hit ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! hit )  return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Note: ending in / means that we'll get a final ""
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // at the end of the pattern.  This can only match a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // corresponding "" at the end of the file.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // If the file ends in /, then it can only match a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // a pattern that ends in /, unless the pattern just
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // doesn't have any more for it. But, a/b/ should *not*
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // match "a/b/*", even though "" matches against the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // [^/]*? pattern, except in partial mode, where it might
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // simply not be reached yet.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // However, a/b/ should still satisfy a/*
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // now either we fell off the end of the pattern, or we're done.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( fi  ===  fl  &&  pi  ===  pl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // ran out of pattern and filename at the same time.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // an exact hit!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( fi  ===  fl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // ran out of file, but still had pattern left.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // this is ok if we're doing the match as part of
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // a glob fs traversal.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  partial 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( pi  ===  pl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // ran out of pattern, still have file left.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // this is only acceptable if we're on the very last
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // empty segment of a file with a trailing slash.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // a/* should match a/b/
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  emptyFileEnd  =  ( fi  ===  fl  -  1 )  &&  ( file [ fi ]  ===  '' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  emptyFileEnd 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // should be unreachable.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  throw  new  Error ( 'wtf?' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// replace stuff like \* with *
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  globUnescape  ( s )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  s . replace ( /\\(.)/g ,  '$1' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  regExpEscape  ( s )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  s . replace ( /[-[\]{}()*+?.,\\^$|#\s]/g ,  '\\$&' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  117 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Copyright Joyent, Inc. and other Node contributors.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Permission is hereby granted, free of charge, to any person obtaining a
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// copy of this software and associated documentation files (the
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// "Software"), to deal in the Software without restriction, including
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// without limitation the rights to use, copy, modify, merge, publish,
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// distribute, sublicense, and/or sell copies of the Software, and to permit
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// persons to whom the Software is furnished to do so, subject to the
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// following conditions:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// The above copyright notice and this permission notice shall be included
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// in all copies or substantial portions of the Software.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// USE OR OTHER DEALINGS IN THE SOFTWARE.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  pathModule  =  _ _webpack _require _ _ ( 622 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  isWindows  =  process . platform  ===  'win32' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  fs  =  _ _webpack _require _ _ ( 747 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// JavaScript implementation of realpath, ported from node pre-v6
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  DEBUG  =  process . env . NODE _DEBUG  &&  /fs/ . test ( process . env . NODE _DEBUG ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  rethrow ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // is fairly slow to generate.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  callback ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( DEBUG )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  backtrace  =  new  Error ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    callback  =  debugCallback ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    callback  =  missingCallback ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  callback ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  debugCallback ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      backtrace . message  =  err . message ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      err  =  backtrace ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      missingCallback ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  missingCallback ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( process . throwDeprecation ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  err ;   // Forgot a callback but don't know where? Use NODE_DEBUG=fs
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      else  if  ( ! process . noDeprecation )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  msg  =  'fs: missing callback '  +  ( err . stack  ||  err . message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( process . traceDeprecation ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          console . trace ( msg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          console . error ( msg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  maybeCallback ( cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  typeof  cb  ===  'function'  ?  cb  :  rethrow ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  normalize  =  pathModule . normalize ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Regexp that finds the next partion of a (partial) path
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( isWindows )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  nextPartRe  =  /(.*?)(?:[\/\\]+|$)/g ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  else  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  nextPartRe  =  /(.*?)(?:[\/]+|$)/g ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Regex to find the device root, including trailing slash. E.g. 'c:\\'.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( isWindows )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  splitRootRe  =  /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  else  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  splitRootRe  =  /^[\/]*/ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . realpathSync  =  function  realpathSync ( p ,  cache )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // make p is absolute
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  p  =  pathModule . resolve ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( cache  &&  Object . prototype . hasOwnProperty . call ( cache ,  p ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cache [ p ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  original  =  p , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      seenLinks  =  { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      knownHard  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // current character position in p
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  pos ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // the partial path so far, including a trailing slash if any
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  current ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // the partial path without a trailing slash (except when pointing at a root)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  base ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // the partial path scanned in the previous round, with slash
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  previous ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  start ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  start ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Skip over roots
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  m  =  splitRootRe . exec ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pos  =  m [ 0 ] . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    current  =  m [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    base  =  m [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    previous  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // On windows, check that the root exists. On unix there is no need.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( isWindows  &&  ! knownHard [ base ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fs . lstatSync ( base ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      knownHard [ base ]  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // walk down the path, swapping out linked pathparts for their real
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // values
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // NB: p.length changes.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while  ( pos  <  p . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // find the next part
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    nextPartRe . lastIndex  =  pos ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  nextPartRe . exec ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    previous  =  current ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    current  +=  result [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    base  =  previous  +  result [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pos  =  nextPartRe . lastIndex ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // continue if not a symlink
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( knownHard [ base ]  ||  ( cache  &&  cache [ base ]  ===  base ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  resolvedLink ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( cache  &&  Object . prototype . hasOwnProperty . call ( cache ,  base ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // some known symbolic link.  no need to stat again.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      resolvedLink  =  cache [ base ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  stat  =  fs . lstatSync ( base ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! stat . isSymbolicLink ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        knownHard [ base ]  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( cache )  cache [ base ]  =  base ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // read the link if it wasn't read before
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // dev/ino always return 0 on windows, so skip the check.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  linkTarget  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! isWindows )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  id  =  stat . dev . toString ( 32 )  +  ':'  +  stat . ino . toString ( 32 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( seenLinks . hasOwnProperty ( id ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          linkTarget  =  seenLinks [ id ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( linkTarget  ===  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fs . statSync ( base ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        linkTarget  =  fs . readlinkSync ( base ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      resolvedLink  =  pathModule . resolve ( previous ,  linkTarget ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // track this, if given a cache.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( cache )  cache [ base ]  =  resolvedLink ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! isWindows )  seenLinks [ id ]  =  linkTarget ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // resolve the link, then start over
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    p  =  pathModule . resolve ( resolvedLink ,  p . slice ( pos ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    start ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( cache )  cache [ original ]  =  p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . realpath  =  function  realpath ( p ,  cache ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  cb  !==  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cb  =  maybeCallback ( cache ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cache  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // make p is absolute
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  p  =  pathModule . resolve ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( cache  &&  Object . prototype . hasOwnProperty . call ( cache ,  p ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  process . nextTick ( cb . bind ( null ,  null ,  cache [ p ] ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  original  =  p , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      seenLinks  =  { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      knownHard  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // current character position in p
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  pos ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // the partial path so far, including a trailing slash if any
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  current ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // the partial path without a trailing slash (except when pointing at a root)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  base ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // the partial path scanned in the previous round, with slash
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  previous ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  start ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  start ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Skip over roots
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  m  =  splitRootRe . exec ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pos  =  m [ 0 ] . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    current  =  m [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    base  =  m [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    previous  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // On windows, check that the root exists. On unix there is no need.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( isWindows  &&  ! knownHard [ base ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fs . lstat ( base ,  function ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( err )  return  cb ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        knownHard [ base ]  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        LOOP ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      process . nextTick ( LOOP ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // walk down the path, swapping out linked pathparts for their real
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // values
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  LOOP ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // stop if scanned past end of path
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( pos  >=  p . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( cache )  cache [ original ]  =  p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  cb ( null ,  p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // find the next part
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    nextPartRe . lastIndex  =  pos ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  nextPartRe . exec ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    previous  =  current ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    current  +=  result [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    base  =  previous  +  result [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pos  =  nextPartRe . lastIndex ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // continue if not a symlink
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( knownHard [ base ]  ||  ( cache  &&  cache [ base ]  ===  base ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  process . nextTick ( LOOP ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( cache  &&  Object . prototype . hasOwnProperty . call ( cache ,  base ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // known symbolic link.  no need to stat again.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  gotResolvedLink ( cache [ base ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  fs . lstat ( base ,  gotStat ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  gotStat ( err ,  stat )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( err )  return  cb ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // if not a symlink, skip to the next path part
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! stat . isSymbolicLink ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      knownHard [ base ]  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( cache )  cache [ base ]  =  base ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  process . nextTick ( LOOP ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // stat & read the link if not read before
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // call gotTarget as soon as the link target is known
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // dev/ino always return 0 on windows, so skip the check.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! isWindows )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  id  =  stat . dev . toString ( 32 )  +  ':'  +  stat . ino . toString ( 32 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( seenLinks . hasOwnProperty ( id ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  gotTarget ( null ,  seenLinks [ id ] ,  base ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fs . stat ( base ,  function ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( err )  return  cb ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fs . readlink ( base ,  function ( err ,  target )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! isWindows )  seenLinks [ id ]  =  target ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        gotTarget ( err ,  target ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  gotTarget ( err ,  target ,  base )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( err )  return  cb ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  resolvedLink  =  pathModule . resolve ( previous ,  target ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( cache )  cache [ base ]  =  resolvedLink ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    gotResolvedLink ( resolvedLink ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  gotResolvedLink ( resolvedLink )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // resolve the link, then start over
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    p  =  pathModule . resolve ( resolvedLink ,  p . slice ( pos ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    start ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  120 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module ,  _ _unusedexports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Approach:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 1. Get the minimatch set
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 2. For each pattern in the set, PROCESS(pattern, false)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 3. Store matches per-set, then uniq them
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// PROCESS(pattern, inGlobStar)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Get the first [n] items from pattern that are all strings
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Join these together.  This is PREFIX.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//   If there is no more remaining, then stat(PREFIX) and
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//   add to matches if it succeeds.  END.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// If inGlobStar and PREFIX is symlink and points to dir
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//   set ENTRIES = []
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// else readdir(PREFIX) as ENTRIES
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//   If fail, END
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// with ENTRIES
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//   If pattern[n] is GLOBSTAR
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//     // handle the case where the globstar match is empty
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//     // by pruning it out, and testing the resulting pattern
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//     PROCESS(pattern[0..n] + pattern[n+1 .. $], false)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//     // handle other cases.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//     for ENTRY in ENTRIES (not dotfiles)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//       // attach globstar + tail onto the entry
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//       // Mark that this entry is a globstar match
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//       PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//   else // not globstar
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//     for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//       Test ENTRY against pattern[n]
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//       If fails, continue
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//       If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Caveat:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//   Cache all stats and readdirs results to minimize syscall.  Since all
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//   we ever care about is existence and directory-ness, we can just keep
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//   `true` for files, and [children,...] for directories, or `false` for
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//   things that don't exist.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  glob  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  fs  =  _ _webpack _require _ _ ( 747 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  rp  =  _ _webpack _require _ _ ( 302 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  minimatch  =  _ _webpack _require _ _ ( 93 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  Minimatch  =  minimatch . Minimatch  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  inherits  =  _ _webpack _require _ _ ( 689 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  EE  =  _ _webpack _require _ _ ( 614 ) . EventEmitter  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  path  =  _ _webpack _require _ _ ( 622 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  assert  =  _ _webpack _require _ _ ( 357 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  isAbsolute  =  _ _webpack _require _ _ ( 681 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  globSync  =  _ _webpack _require _ _ ( 245 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  common  =  _ _webpack _require _ _ ( 856 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  alphasort  =  common . alphasort  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  alphasorti  =  common . alphasorti  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  setopts  =  common . setopts  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  ownProp  =  common . ownProp  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  inflight  =  _ _webpack _require _ _ ( 674 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  util  =  _ _webpack _require _ _ ( 669 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  childrenIgnored  =  common . childrenIgnored  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  isIgnored  =  common . isIgnored  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  once  =  _ _webpack _require _ _ ( 49 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  glob  ( pattern ,  options ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  options  ===  'function' )  cb  =  options ,  options  =  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! options )  options  =  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( options . sync )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      throw  new  TypeError ( 'callback provided to sync glob' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  globSync ( pattern ,  options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  new  Glob ( pattern ,  options ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								glob . sync  =  globSync  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  GlobSync  =  glob . GlobSync  =  globSync . GlobSync  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// old api surface
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								glob . glob  =  glob  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  extend  ( origin ,  add )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( add  ===  null  ||  typeof  add  !==  'object' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  origin 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  keys  =  Object . keys ( add ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  i  =  keys . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while  ( i -- )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    origin [ keys [ i ] ]  =  add [ keys [ i ] ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  origin 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								glob . hasMagic  =  function  ( pattern ,  options _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  options  =  extend ( { } ,  options _ ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options . noprocess  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  g  =  new  Glob ( pattern ,  options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  set  =  g . minimatch . set 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! pattern ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( set . length  >  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  j  =  0 ;  j  <  set [ 0 ] . length ;  j ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  set [ 0 ] [ j ]  !==  'string' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								glob . Glob  =  Glob  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								inherits ( Glob ,  EE )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  Glob  ( pattern ,  options ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  options  ===  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cb  =  options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    options  =  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( options  &&  options . sync )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      throw  new  TypeError ( 'callback provided to sync glob' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  GlobSync ( pattern ,  options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ( this  instanceof  Glob ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  Glob ( pattern ,  options ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  setopts ( this ,  pattern ,  options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . _didRealPath  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // process each pattern in the minimatch set
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  n  =  this . minimatch . set . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // The matches are stored as {<filename>: true,...} so that
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // duplicates are automagically pruned.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Later, we do an Object.keys() on these.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Keep them as a list so we can fill in when nonull is set.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . matches  =  new  Array ( n ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  cb  ===  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cb  =  once ( cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . on ( 'error' ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . on ( 'end' ,  function  ( matches )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      cb ( null ,  matches ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . _processing  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . _emitQueue  =  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . _processQueue  =  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . paused  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . noprocess ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  this 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( n  ===  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  done ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  sync  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  n ;  i  ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _process ( this . minimatch . set [ i ] ,  i ,  false ,  done ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  sync  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  done  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -- self . _processing 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( self . _processing  <=  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( sync )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        process . nextTick ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          self . _finish ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . _finish ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _finish  =  function  ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( this  instanceof  Glob ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . aborted ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . realpath  &&  ! this . _didRealpath ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  this . _realpath ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  common . finish ( this ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . emit ( 'end' ,  this . found ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _realpath  =  function  ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . _didRealpath ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . _didRealpath  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  n  =  this . matches . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( n  ===  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  this . _finish ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  this . matches . length ;  i ++ ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _realpathSet ( i ,  next ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  next  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( -- n  ===  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . _finish ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _realpathSet  =  function  ( index ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  matchset  =  this . matches [ index ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! matchset ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  found  =  Object . keys ( matchset ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  n  =  found . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( n  ===  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  set  =  this . matches [ index ]  =  Object . create ( null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  found . forEach ( function  ( p ,  i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // If there's a problem with the stat, then it means that
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // one or more of the links in the realpath couldn't be
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // resolved.  just return the abs value in that case.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    p  =  self . _makeAbs ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rp . realpath ( p ,  self . realpathCache ,  function  ( er ,  real )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        set [ real ]  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      else  if  ( er . syscall  ===  'stat' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        set [ p ]  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . emit ( 'error' ,  er )  // srsly wtf right here
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( -- n  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . matches [ index ]  =  set 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _mark  =  function  ( p )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  common . mark ( this ,  p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _makeAbs  =  function  ( f )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  common . makeAbs ( this ,  f ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . abort  =  function  ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . aborted  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . emit ( 'abort' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . pause  =  function  ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! this . paused )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . paused  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . emit ( 'pause' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . resume  =  function  ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . paused )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . emit ( 'resume' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . paused  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( this . _emitQueue . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  eq  =  this . _emitQueue . slice ( 0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _emitQueue . length  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( var  i  =  0 ;  i  <  eq . length ;  i  ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  e  =  eq [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _emitMatch ( e [ 0 ] ,  e [ 1 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( this . _processQueue . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  pq  =  this . _processQueue . slice ( 0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _processQueue . length  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( var  i  =  0 ;  i  <  pq . length ;  i  ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  p  =  pq [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _processing -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _process ( p [ 0 ] ,  p [ 1 ] ,  p [ 2 ] ,  p [ 3 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _process  =  function  ( pattern ,  index ,  inGlobStar ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( this  instanceof  Glob ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( typeof  cb  ===  'function' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . aborted ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . _processing ++ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . paused )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _processQueue . push ( [ pattern ,  index ,  inGlobStar ,  cb ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  //console.error('PROCESS %d', this._processing, pattern)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Get the first [n] parts of pattern that are all strings.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  n  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while  ( typeof  pattern [ n ]  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    n  ++ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // now n is the index of the first one that is *not* a string.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // see if there's anything else
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  prefix 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  switch  ( n )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // if not, then this is rather simple
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  pattern . length : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _processSimple ( pattern . join ( '/' ) ,  index ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // pattern *starts* with some non-trivial item.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // going to readdir(cwd), but not include the prefix in matches.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      prefix  =  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // pattern has some string bits in the front.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // whatever it starts with, whether that's 'absolute' like /foo/bar,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // or 'relative' like '../baz'
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      prefix  =  pattern . slice ( 0 ,  n ) . join ( '/' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  remain  =  pattern . slice ( n ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // get the list of entries.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  read 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( prefix  ===  null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    read  =  '.' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else  if  ( isAbsolute ( prefix )  ||  isAbsolute ( pattern . join ( '/' ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! prefix  ||  ! isAbsolute ( prefix ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      prefix  =  '/'  +  prefix 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    read  =  prefix 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    read  =  prefix 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  abs  =  this . _makeAbs ( read ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  //if ignored, skip _processing
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( childrenIgnored ( this ,  read ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  isGlobStar  =  remain [ 0 ]  ===  minimatch . GLOBSTAR 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( isGlobStar ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _processGlobStar ( prefix ,  read ,  abs ,  remain ,  index ,  inGlobStar ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _processReaddir ( prefix ,  read ,  abs ,  remain ,  index ,  inGlobStar ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _processReaddir  =  function  ( prefix ,  read ,  abs ,  remain ,  index ,  inGlobStar ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . _readdir ( abs ,  inGlobStar ,  function  ( er ,  entries )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  self . _processReaddir2 ( prefix ,  read ,  abs ,  remain ,  index ,  inGlobStar ,  entries ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _processReaddir2  =  function  ( prefix ,  read ,  abs ,  remain ,  index ,  inGlobStar ,  entries ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // if the abs isn't a dir, then nothing can match!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! entries ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // It will only match dot entries if it starts with a dot, or if
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // dot is set.  Stuff like @(.foo|.bar) isn't allowed.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  pn  =  remain [ 0 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  negate  =  ! ! this . minimatch . negate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  rawGlob  =  pn . _glob 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  dotOk  =  this . dot  ||  rawGlob . charAt ( 0 )  ===  '.' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  matchedEntries  =  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  entries . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  e  =  entries [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( e . charAt ( 0 )  !==  '.'  ||  dotOk )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  m 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( negate  &&  ! prefix )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m  =  ! e . match ( pn ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m  =  e . match ( pn ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( m ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        matchedEntries . push ( e ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  len  =  matchedEntries . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // If there are no matched entries, then nothing matches.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( len  ===  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // if this is the last remaining pattern bit, then no need for
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // an additional stat *unless* the user has specified mark or
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // stat explicitly.  We know they exist, since readdir returned
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // them.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( remain . length  ===  1  &&  ! this . mark  &&  ! this . stat )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! this . matches [ index ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . matches [ index ]  =  Object . create ( null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ;  i  <  len ;  i  ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  e  =  matchedEntries [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( prefix )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( prefix  !==  '/' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          e  =  prefix  +  '/'  +  e 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          e  =  prefix  +  e 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( e . charAt ( 0 )  ===  '/'  &&  ! this . nomount )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        e  =  path . join ( this . root ,  e ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _emitMatch ( index ,  e ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // This was the last one, and no stats were needed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // now test all matched entries as stand-ins for that part
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // of the pattern.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  remain . shift ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  len ;  i  ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  e  =  matchedEntries [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  newPattern 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( prefix )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( prefix  !==  '/' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        e  =  prefix  +  '/'  +  e 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        e  =  prefix  +  e 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _process ( [ e ] . concat ( remain ) ,  index ,  inGlobStar ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _emitMatch  =  function  ( index ,  e )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . aborted ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( isIgnored ( this ,  e ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . paused )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _emitQueue . push ( [ index ,  e ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  abs  =  isAbsolute ( e )  ?  e  :  this . _makeAbs ( e ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . mark ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    e  =  this . _mark ( e ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . absolute ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    e  =  abs 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . matches [ index ] [ e ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . nodir )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  c  =  this . cache [ abs ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( c  ===  'DIR'  ||  Array . isArray ( c ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . matches [ index ] [ e ]  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  st  =  this . statCache [ abs ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( st ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . emit ( 'stat' ,  e ,  st ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . emit ( 'match' ,  e ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _readdirInGlobStar  =  function  ( abs ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . aborted ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // follow all symlinked directories forever
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // just proceed as if this is a non-globstar situation
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . follow ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  this . _readdir ( abs ,  false ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lstatkey  =  'lstat\0'  +  abs 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lstatcb  =  inflight ( lstatkey ,  lstatcb _ ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( lstatcb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fs . lstat ( abs ,  lstatcb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  lstatcb _  ( er ,  lstat )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( er  &&  er . code  ===  'ENOENT' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  isSym  =  lstat  &&  lstat . isSymbolicLink ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . symlinks [ abs ]  =  isSym 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // If it's not a symlink or a dir, then it's definitely a regular file.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // don't bother doing a readdir in that case.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! isSym  &&  lstat  &&  ! lstat . isDirectory ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . cache [ abs ]  =  'FILE' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . _readdir ( abs ,  false ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _readdir  =  function  ( abs ,  inGlobStar ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . aborted ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  cb  =  inflight ( 'readdir\0' + abs + '\0' + inGlobStar ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  //console.error('RD %j %j', +inGlobStar, abs)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( inGlobStar  &&  ! ownProp ( this . symlinks ,  abs ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  this . _readdirInGlobStar ( abs ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ownProp ( this . cache ,  abs ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  c  =  this . cache [ abs ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! c  ||  c  ===  'FILE' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( Array . isArray ( c ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  cb ( null ,  c ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fs . readdir ( abs ,  readdirCb ( this ,  abs ,  cb ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  readdirCb  ( self ,  abs ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  function  ( er ,  entries )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . _readdirError ( abs ,  er ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . _readdirEntries ( abs ,  entries ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _readdirEntries  =  function  ( abs ,  entries ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . aborted ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // if we haven't asked to stat everything, then just
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // assume that everything in there exists, so we can avoid
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // having to stat it a second time.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! this . mark  &&  ! this . stat )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ;  i  <  entries . length ;  i  ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  e  =  entries [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( abs  ===  '/' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        e  =  abs  +  e 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        e  =  abs  +  '/'  +  e 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . cache [ e ]  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . cache [ abs ]  =  entries 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  cb ( null ,  entries ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _readdirError  =  function  ( f ,  er ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . aborted ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // handle errors, and cache the information
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  switch  ( er . code )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  'ENOTSUP' :  // https://github.com/isaacs/node-glob/issues/205
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  'ENOTDIR' :  // totally normal. means it *does* exist.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  abs  =  this . _makeAbs ( f ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . cache [ abs ]  =  'FILE' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( abs  ===  this . cwdAbs )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  error  =  new  Error ( er . code  +  ' invalid cwd '  +  this . cwd ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        error . path  =  this . cwd 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        error . code  =  er . code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . emit ( 'error' ,  error ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . abort ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  'ENOENT' :  // not terribly unusual
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  'ELOOP' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  'ENAMETOOLONG' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  'UNKNOWN' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . cache [ this . _makeAbs ( f ) ]  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    default :  // some unusual error.  Treat as failure.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . cache [ this . _makeAbs ( f ) ]  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . strict )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . emit ( 'error' ,  er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // If the error is handled, then we abort
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // if not, we threw out of here
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . abort ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . silent ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        console . error ( 'glob error' ,  er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _processGlobStar  =  function  ( prefix ,  read ,  abs ,  remain ,  index ,  inGlobStar ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . _readdir ( abs ,  inGlobStar ,  function  ( er ,  entries )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . _processGlobStar2 ( prefix ,  read ,  abs ,  remain ,  index ,  inGlobStar ,  entries ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _processGlobStar2  =  function  ( prefix ,  read ,  abs ,  remain ,  index ,  inGlobStar ,  entries ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  //console.error('pgs2', prefix, remain[0], entries)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // no entries means not a dir, so it can never have matches
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // foo.txt/** doesn't match foo.txt
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! entries ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // test without the globstar, and with every child both below
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // and replacing the globstar.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  remainWithoutGlobStar  =  remain . slice ( 1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  gspref  =  prefix  ?  [  prefix  ]  :  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  noGlobStar  =  gspref . concat ( remainWithoutGlobStar ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // the noGlobStar pattern exits the inGlobStar state
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . _process ( noGlobStar ,  index ,  false ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  isSym  =  this . symlinks [ abs ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  len  =  entries . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // If it's a symlink, and we're in a globstar, then stop
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( isSym  &&  inGlobStar ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  len ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  e  =  entries [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( e . charAt ( 0 )  ===  '.'  &&  ! this . dot ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // these two cases enter the inGlobStar state
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  instead  =  gspref . concat ( entries [ i ] ,  remainWithoutGlobStar ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _process ( instead ,  index ,  true ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  below  =  gspref . concat ( entries [ i ] ,  remain ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _process ( below ,  index ,  true ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _processSimple  =  function  ( prefix ,  index ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // XXX review this.  Shouldn't it be doing the mounting etc
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // before doing stat?  kinda weird?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . _stat ( prefix ,  function  ( er ,  exists )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . _processSimple2 ( prefix ,  index ,  er ,  exists ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _processSimple2  =  function  ( prefix ,  index ,  er ,  exists ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  //console.error('ps2', prefix, exists)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! this . matches [ index ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . matches [ index ]  =  Object . create ( null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // If it doesn't exist, then just mark the lack of results
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! exists ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( prefix  &&  isAbsolute ( prefix )  &&  ! this . nomount )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  trail  =  /[\/\\]$/ . test ( prefix ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( prefix . charAt ( 0 )  ===  '/' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      prefix  =  path . join ( this . root ,  prefix ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      prefix  =  path . resolve ( this . root ,  prefix ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( trail ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        prefix  +=  '/' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( process . platform  ===  'win32' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    prefix  =  prefix . replace ( /\\/g ,  '/' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Mark this as a match
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . _emitMatch ( index ,  prefix ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Returns either 'DIR', 'FILE', or false
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _stat  =  function  ( f ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  abs  =  this . _makeAbs ( f ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  needDir  =  f . slice ( - 1 )  ===  '/' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( f . length  >  this . maxLength ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! this . stat  &&  ownProp ( this . cache ,  abs ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  c  =  this . cache [ abs ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( Array . isArray ( c ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      c  =  'DIR' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // It exists, but maybe not how we need it
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! needDir  ||  c  ===  'DIR' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  cb ( null ,  c ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( needDir  &&  c  ===  'FILE' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // otherwise we have to stat, because maybe c=true
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // if we know it exists, but not what it is.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  exists 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stat  =  this . statCache [ abs ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( stat  !==  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( stat  ===  false ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  cb ( null ,  stat ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  type  =  stat . isDirectory ( )  ?  'DIR'  :  'FILE' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( needDir  &&  type  ===  'FILE' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  cb ( null ,  type ,  stat ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  statcb  =  inflight ( 'stat\0'  +  abs ,  lstatcb _ ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( statcb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fs . lstat ( abs ,  statcb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  lstatcb _  ( er ,  lstat )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( lstat  &&  lstat . isSymbolicLink ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // If it's a symlink, then treat it as the target, unless
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // the target does not exist, then treat it as a file.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  fs . stat ( abs ,  function  ( er ,  stat )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          self . _stat2 ( f ,  abs ,  null ,  lstat ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          self . _stat2 ( f ,  abs ,  er ,  stat ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . _stat2 ( f ,  abs ,  er ,  lstat ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Glob . prototype . _stat2  =  function  ( f ,  abs ,  er ,  stat ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( er  &&  ( er . code  ===  'ENOENT'  ||  er . code  ===  'ENOTDIR' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . statCache [ abs ]  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  needDir  =  f . slice ( - 1 )  ===  '/' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . statCache [ abs ]  =  stat 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( abs . slice ( - 1 )  ===  '/'  &&  stat  &&  ! stat . isDirectory ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( null ,  false ,  stat ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  c  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( stat ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    c  =  stat . isDirectory ( )  ?  'DIR'  :  'FILE' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . cache [ abs ]  =  this . cache [ abs ]  ||  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( needDir  &&  c  ===  'FILE' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  cb ( null ,  c ,  stat ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  141 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  net  =  _ _webpack _require _ _ ( 631 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  tls  =  _ _webpack _require _ _ ( 16 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  http  =  _ _webpack _require _ _ ( 605 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  https  =  _ _webpack _require _ _ ( 211 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  events  =  _ _webpack _require _ _ ( 614 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  assert  =  _ _webpack _require _ _ ( 357 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  util  =  _ _webpack _require _ _ ( 669 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . httpOverHttp  =  httpOverHttp ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . httpsOverHttp  =  httpsOverHttp ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . httpOverHttps  =  httpOverHttps ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . httpsOverHttps  =  httpsOverHttps ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  httpOverHttp ( options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  agent  =  new  TunnelingAgent ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  agent . request  =  http . request ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  httpsOverHttp ( options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  agent  =  new  TunnelingAgent ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  agent . request  =  http . request ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  agent . createSocket  =  createSecureSocket ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  agent . defaultPort  =  443 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  httpOverHttps ( options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  agent  =  new  TunnelingAgent ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  agent . request  =  https . request ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  httpsOverHttps ( options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  agent  =  new  TunnelingAgent ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  agent . request  =  https . request ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  agent . createSocket  =  createSecureSocket ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  agent . defaultPort  =  443 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  TunnelingAgent ( options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . options  =  options  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . proxyOptions  =  self . options . proxy  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . maxSockets  =  self . options . maxSockets  ||  http . Agent . defaultMaxSockets ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . requests  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . sockets  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . on ( 'free' ,  function  onFree ( socket ,  host ,  port ,  localAddress )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  options  =  toOptions ( host ,  port ,  localAddress ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ,  len  =  self . requests . length ;  i  <  len ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  pending  =  self . requests [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( pending . host  ===  options . host  &&  pending . port  ===  options . port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Detect the request to connect same origin server,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // reuse the connection.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . requests . splice ( i ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pending . request . onSocket ( socket ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    socket . destroy ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . removeSocket ( socket ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								util . inherits ( TunnelingAgent ,  events . EventEmitter ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TunnelingAgent . prototype . addRequest  =  function  addRequest ( req ,  host ,  port ,  localAddress )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  options  =  mergeOptions ( { request :  req } ,  self . options ,  toOptions ( host ,  port ,  localAddress ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( self . sockets . length  >=  this . maxSockets )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // We are over limit so we'll add it to the queue.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . requests . push ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // If we are under maxSockets create a new one.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . createSocket ( options ,  function ( socket )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    socket . on ( 'free' ,  onFree ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    socket . on ( 'close' ,  onCloseOrRemove ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    socket . on ( 'agentRemove' ,  onCloseOrRemove ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    req . onSocket ( socket ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  onFree ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . emit ( 'free' ,  socket ,  options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  onCloseOrRemove ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . removeSocket ( socket ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      socket . removeListener ( 'free' ,  onFree ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      socket . removeListener ( 'close' ,  onCloseOrRemove ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      socket . removeListener ( 'agentRemove' ,  onCloseOrRemove ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TunnelingAgent . prototype . createSocket  =  function  createSocket ( options ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  placeholder  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . sockets . push ( placeholder ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  connectOptions  =  mergeOptions ( { } ,  self . proxyOptions ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    method :  'CONNECT' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    path :  options . host  +  ':'  +  options . port , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    agent :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    headers :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      host :  options . host  +  ':'  +  options . port 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( options . localAddress )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connectOptions . localAddress  =  options . localAddress ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( connectOptions . proxyAuth )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connectOptions . headers  =  connectOptions . headers  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connectOptions . headers [ 'Proxy-Authorization' ]  =  'Basic '  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        new  Buffer ( connectOptions . proxyAuth ) . toString ( 'base64' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  debug ( 'making CONNECT request' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  connectReq  =  self . request ( connectOptions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  connectReq . useChunkedEncodingByDefault  =  false ;  // for v0.6
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  connectReq . once ( 'response' ,  onResponse ) ;  // for v0.6
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  connectReq . once ( 'upgrade' ,  onUpgrade ) ;    // for v0.6
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  connectReq . once ( 'connect' ,  onConnect ) ;    // for v0.7 or later
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  connectReq . once ( 'error' ,  onError ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  connectReq . end ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  onResponse ( res )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Very hacky. This is necessary to avoid http-parser leaks.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    res . upgrade  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  onUpgrade ( res ,  socket ,  head )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Hacky.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    process . nextTick ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      onConnect ( res ,  socket ,  head ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  onConnect ( res ,  socket ,  head )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connectReq . removeAllListeners ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    socket . removeAllListeners ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( res . statusCode  !==  200 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      debug ( 'tunneling socket could not be established, statusCode=%d' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        res . statusCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      socket . destroy ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  error  =  new  Error ( 'tunneling socket could not be established, '  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        'statusCode='  +  res . statusCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      error . code  =  'ECONNRESET' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      options . request . emit ( 'error' ,  error ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . removeSocket ( placeholder ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( head . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      debug ( 'got illegal response body from proxy' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      socket . destroy ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  error  =  new  Error ( 'got illegal response body from proxy' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      error . code  =  'ECONNRESET' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      options . request . emit ( 'error' ,  error ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . removeSocket ( placeholder ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    debug ( 'tunneling connection has established' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . sockets [ self . sockets . indexOf ( placeholder ) ]  =  socket ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( socket ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  onError ( cause )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connectReq . removeAllListeners ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    debug ( 'tunneling socket could not be established, cause=%s\n' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          cause . message ,  cause . stack ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  error  =  new  Error ( 'tunneling socket could not be established, '  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                          'cause='  +  cause . message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    error . code  =  'ECONNRESET' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    options . request . emit ( 'error' ,  error ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . removeSocket ( placeholder ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TunnelingAgent . prototype . removeSocket  =  function  removeSocket ( socket )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  pos  =  this . sockets . indexOf ( socket ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( pos  ===  - 1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . sockets . splice ( pos ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  pending  =  this . requests . shift ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( pending )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // If we have pending requests and a socket gets closed a new one
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // needs to be created to take over in the pool for the one that closed.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . createSocket ( pending ,  function ( socket )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      pending . request . onSocket ( socket ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  createSecureSocket ( options ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  TunnelingAgent . prototype . createSocket . call ( self ,  options ,  function ( socket )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  hostHeader  =  options . request . getHeader ( 'host' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  tlsOptions  =  mergeOptions ( { } ,  self . options ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      socket :  socket , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      servername :  hostHeader  ?  hostHeader . replace ( /:.*$/ ,  '' )  :  options . host 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // 0 is dummy port for v0.6
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  secureSocket  =  tls . connect ( 0 ,  tlsOptions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . sockets [ self . sockets . indexOf ( socket ) ]  =  secureSocket ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cb ( secureSocket ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  toOptions ( host ,  port ,  localAddress )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  host  ===  'string' )  {  // since v0.10
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      host :  host , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      port :  port , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      localAddress :  localAddress 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  host ;  // for v0.11 or later
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  mergeOptions ( target )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  1 ,  len  =  arguments . length ;  i  <  len ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  overrides  =  arguments [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  overrides  ===  'object' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  keys  =  Object . keys ( overrides ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( var  j  =  0 ,  keyLen  =  keys . length ;  j  <  keyLen ;  ++ j )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  k  =  keys [ j ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( overrides [ k ]  !==  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          target [ k ]  =  overrides [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  target ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  debug ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( process . env . NODE _DEBUG  &&  /\btunnel\b/ . test ( process . env . NODE _DEBUG ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  debug  =  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  args  =  Array . prototype . slice . call ( arguments ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  args [ 0 ]  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      args [ 0 ]  =  'TUNNEL: '  +  args [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      args . unshift ( 'TUNNEL:' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    console . error . apply ( console ,  args ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  else  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  debug  =  function ( )  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . debug  =  debug ;  // for test
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  176 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  core _1  =  _ _webpack _require _ _ ( 470 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Status  Reporter  that  displays  information  about  the  progress / status  of  an  artifact  that  is  being  uploaded  or  downloaded 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Variable  display  time  that  can  be  adjusted  using  the  displayFrequencyInMilliseconds  variable 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  total  status  of  the  upload / download  gets  displayed  according  to  this  value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  If  there  is  a  large  file  that  is  being  uploaded ,  extra  information  about  the  individual  status  can  also  be  displayed  using  the  updateLargeFileStatus  function 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  StatusReporter  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( displayFrequencyInMilliseconds )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . totalNumberOfFilesToProcess  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . processedCount  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . largeFiles  =  new  Map ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . totalFileStatus  =  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . largeFileStatus  =  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . displayFrequencyInMilliseconds  =  displayFrequencyInMilliseconds ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    setTotalNumberOfFilesToProcess ( fileTotal )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . totalNumberOfFilesToProcess  =  fileTotal ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    start ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // displays information about the total upload/download status
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . totalFileStatus  =  setInterval ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // display 1 decimal place without any rounding
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  percentage  =  this . formatPercentage ( this . processedCount ,  this . totalNumberOfFilesToProcess ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core _1 . info ( ` Total file count:  ${ this . totalNumberOfFilesToProcess }  ---- Processed file # ${ this . processedCount }  ( ${ percentage . slice ( 0 ,  percentage . indexOf ( '.' )  +  2 ) } %) ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ,  this . displayFrequencyInMilliseconds ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // displays extra information about any large files that take a significant amount of time to upload or download every 1 second
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . largeFileStatus  =  setInterval ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            for  ( const  value  of  Array . from ( this . largeFiles . values ( ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core _1 . info ( value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // delete all entries in the map after displaying the information so it will not be displayed again unless explicitly added
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . largeFiles . clear ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ,  1000 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // if there is a large file that is being uploaded in chunks, this is used to display extra information about the status of the upload
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    updateLargeFileStatus ( fileName ,  numerator ,  denominator )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // display 1 decimal place without any rounding
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  percentage  =  this . formatPercentage ( numerator ,  denominator ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  displayInformation  =  ` Uploading  ${ fileName }  ( ${ percentage . slice ( 0 ,  percentage . indexOf ( '.' )  +  2 ) } %) ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // any previously added display information should be overwritten for the specific large file because a map is being used
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . largeFiles . set ( fileName ,  displayInformation ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stop ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . totalFileStatus )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            clearInterval ( this . totalFileStatus ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . largeFileStatus )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            clearInterval ( this . largeFileStatus ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    incrementProcessedCount ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . processedCount ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    formatPercentage ( numerator ,  denominator )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // toFixed() rounds, so use extra precision to display accurate information even though 4 decimal places are not displayed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  ( ( numerator  /  denominator )  *  100 ) . toFixed ( 4 ) . toString ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . StatusReporter  =  StatusReporter ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=status-reporter.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  211 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "https" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  214 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  artifact _client _1  =  _ _webpack _require _ _ ( 359 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Constructs  an  ArtifactClient 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  create ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  artifact _client _1 . DefaultArtifactClient . create ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . create  =  create ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=artifact-client.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  226 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  BasicCredentialHandler  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( username ,  password )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . username  =  username ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . password  =  password ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    prepareRequest ( options )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        options . headers [ 'Authorization' ]  = 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'Basic '  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                Buffer . from ( this . username  +  ':'  +  this . password ) . toString ( 'base64' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // This handler cannot handle 401
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    canHandleAuthentication ( response )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    handleAuthentication ( httpClient ,  requestInfo ,  objs )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . BasicCredentialHandler  =  BasicCredentialHandler ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  BearerCredentialHandler  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( token )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . token  =  token ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // currently implements pre-authorization
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // TODO: support preAuth = false where it hooks on 401
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    prepareRequest ( options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        options . headers [ 'Authorization' ]  =  'Bearer '  +  this . token ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // This handler cannot handle 401
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    canHandleAuthentication ( response )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    handleAuthentication ( httpClient ,  requestInfo ,  objs )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . BearerCredentialHandler  =  BearerCredentialHandler ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  PersonalAccessTokenCredentialHandler  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( token )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . token  =  token ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // currently implements pre-authorization
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // TODO: support preAuth = false where it hooks on 401
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    prepareRequest ( options )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        options . headers [ 'Authorization' ]  = 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'Basic '  +  Buffer . from ( 'PAT:'  +  this . token ) . toString ( 'base64' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // This handler cannot handle 401
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    canHandleAuthentication ( response )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    handleAuthentication ( httpClient ,  requestInfo ,  objs )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . PersonalAccessTokenCredentialHandler  =  PersonalAccessTokenCredentialHandler ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  245 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module ,  _ _unusedexports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  globSync  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								globSync . GlobSync  =  GlobSync  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  fs  =  _ _webpack _require _ _ ( 747 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  rp  =  _ _webpack _require _ _ ( 302 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  minimatch  =  _ _webpack _require _ _ ( 93 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  Minimatch  =  minimatch . Minimatch  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  Glob  =  _ _webpack _require _ _ ( 120 ) . Glob  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  util  =  _ _webpack _require _ _ ( 669 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  path  =  _ _webpack _require _ _ ( 622 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  assert  =  _ _webpack _require _ _ ( 357 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  isAbsolute  =  _ _webpack _require _ _ ( 681 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  common  =  _ _webpack _require _ _ ( 856 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  alphasort  =  common . alphasort  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  alphasorti  =  common . alphasorti  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  setopts  =  common . setopts  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  ownProp  =  common . ownProp  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  childrenIgnored  =  common . childrenIgnored  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  isIgnored  =  common . isIgnored  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  globSync  ( pattern ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  options  ===  'function'  ||  arguments . length  ===  3 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  TypeError ( 'callback provided to sync glob\n' + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        'See: https://github.com/isaacs/node-glob/issues/167' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  new  GlobSync ( pattern ,  options ) . found 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  GlobSync  ( pattern ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! pattern ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  Error ( 'must provide pattern' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  options  ===  'function'  ||  arguments . length  ===  3 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  TypeError ( 'callback provided to sync glob\n' + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        'See: https://github.com/isaacs/node-glob/issues/167' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ( this  instanceof  GlobSync ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  GlobSync ( pattern ,  options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  setopts ( this ,  pattern ,  options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . noprocess ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  this 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  n  =  this . minimatch . set . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . matches  =  new  Array ( n ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  n ;  i  ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _process ( this . minimatch . set [ i ] ,  i ,  false ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . _finish ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GlobSync . prototype . _finish  =  function  ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( this  instanceof  GlobSync ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . realpath )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  self  =  this 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . matches . forEach ( function  ( matchset ,  index )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  set  =  self . matches [ index ]  =  Object . create ( null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( var  p  in  matchset )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          p  =  self . _makeAbs ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          var  real  =  rp . realpathSync ( p ,  self . realpathCache ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          set [ real ]  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  catch  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( er . syscall  ===  'stat' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            set [ self . _makeAbs ( p ) ]  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  er 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  common . finish ( this ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GlobSync . prototype . _process  =  function  ( pattern ,  index ,  inGlobStar )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( this  instanceof  GlobSync ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Get the first [n] parts of pattern that are all strings.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  n  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while  ( typeof  pattern [ n ]  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    n  ++ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // now n is the index of the first one that is *not* a string.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // See if there's anything else
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  prefix 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  switch  ( n )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // if not, then this is rather simple
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  pattern . length : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _processSimple ( pattern . join ( '/' ) ,  index ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // pattern *starts* with some non-trivial item.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // going to readdir(cwd), but not include the prefix in matches.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      prefix  =  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // pattern has some string bits in the front.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // whatever it starts with, whether that's 'absolute' like /foo/bar,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // or 'relative' like '../baz'
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      prefix  =  pattern . slice ( 0 ,  n ) . join ( '/' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  remain  =  pattern . slice ( n ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // get the list of entries.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  read 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( prefix  ===  null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    read  =  '.' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else  if  ( isAbsolute ( prefix )  ||  isAbsolute ( pattern . join ( '/' ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! prefix  ||  ! isAbsolute ( prefix ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      prefix  =  '/'  +  prefix 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    read  =  prefix 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    read  =  prefix 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  abs  =  this . _makeAbs ( read ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  //if ignored, skip processing
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( childrenIgnored ( this ,  read ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  isGlobStar  =  remain [ 0 ]  ===  minimatch . GLOBSTAR 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( isGlobStar ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _processGlobStar ( prefix ,  read ,  abs ,  remain ,  index ,  inGlobStar ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _processReaddir ( prefix ,  read ,  abs ,  remain ,  index ,  inGlobStar ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GlobSync . prototype . _processReaddir  =  function  ( prefix ,  read ,  abs ,  remain ,  index ,  inGlobStar )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  entries  =  this . _readdir ( abs ,  inGlobStar ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // if the abs isn't a dir, then nothing can match!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! entries ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // It will only match dot entries if it starts with a dot, or if
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // dot is set.  Stuff like @(.foo|.bar) isn't allowed.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  pn  =  remain [ 0 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  negate  =  ! ! this . minimatch . negate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  rawGlob  =  pn . _glob 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  dotOk  =  this . dot  ||  rawGlob . charAt ( 0 )  ===  '.' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  matchedEntries  =  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  entries . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  e  =  entries [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( e . charAt ( 0 )  !==  '.'  ||  dotOk )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  m 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( negate  &&  ! prefix )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m  =  ! e . match ( pn ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m  =  e . match ( pn ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( m ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        matchedEntries . push ( e ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  len  =  matchedEntries . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // If there are no matched entries, then nothing matches.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( len  ===  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // if this is the last remaining pattern bit, then no need for
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // an additional stat *unless* the user has specified mark or
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // stat explicitly.  We know they exist, since readdir returned
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // them.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( remain . length  ===  1  &&  ! this . mark  &&  ! this . stat )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! this . matches [ index ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . matches [ index ]  =  Object . create ( null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ;  i  <  len ;  i  ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  e  =  matchedEntries [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( prefix )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( prefix . slice ( - 1 )  !==  '/' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          e  =  prefix  +  '/'  +  e 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          e  =  prefix  +  e 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( e . charAt ( 0 )  ===  '/'  &&  ! this . nomount )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        e  =  path . join ( this . root ,  e ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _emitMatch ( index ,  e ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // This was the last one, and no stats were needed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // now test all matched entries as stand-ins for that part
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // of the pattern.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  remain . shift ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  len ;  i  ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  e  =  matchedEntries [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  newPattern 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( prefix ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      newPattern  =  [ prefix ,  e ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      newPattern  =  [ e ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _process ( newPattern . concat ( remain ) ,  index ,  inGlobStar ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GlobSync . prototype . _emitMatch  =  function  ( index ,  e )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( isIgnored ( this ,  e ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  abs  =  this . _makeAbs ( e ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . mark ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    e  =  this . _mark ( e ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . absolute )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    e  =  abs 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . matches [ index ] [ e ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . nodir )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  c  =  this . cache [ abs ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( c  ===  'DIR'  ||  Array . isArray ( c ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . matches [ index ] [ e ]  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . stat ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _stat ( e ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GlobSync . prototype . _readdirInGlobStar  =  function  ( abs )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // follow all symlinked directories forever
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // just proceed as if this is a non-globstar situation
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( this . follow ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  this . _readdir ( abs ,  false ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  entries 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lstat 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stat 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    lstat  =  fs . lstatSync ( abs ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( er . code  ===  'ENOENT' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // lstat failed, doesn't exist
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  isSym  =  lstat  &&  lstat . isSymbolicLink ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . symlinks [ abs ]  =  isSym 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // If it's not a symlink or a dir, then it's definitely a regular file.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // don't bother doing a readdir in that case.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! isSym  &&  lstat  &&  ! lstat . isDirectory ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . cache [ abs ]  =  'FILE' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    entries  =  this . _readdir ( abs ,  false ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  entries 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GlobSync . prototype . _readdir  =  function  ( abs ,  inGlobStar )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  entries 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( inGlobStar  &&  ! ownProp ( this . symlinks ,  abs ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  this . _readdirInGlobStar ( abs ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ownProp ( this . cache ,  abs ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  c  =  this . cache [ abs ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! c  ||  c  ===  'FILE' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( Array . isArray ( c ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  this . _readdirEntries ( abs ,  fs . readdirSync ( abs ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _readdirError ( abs ,  er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GlobSync . prototype . _readdirEntries  =  function  ( abs ,  entries )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // if we haven't asked to stat everything, then just
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // assume that everything in there exists, so we can avoid
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // having to stat it a second time.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! this . mark  &&  ! this . stat )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ;  i  <  entries . length ;  i  ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  e  =  entries [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( abs  ===  '/' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        e  =  abs  +  e 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        e  =  abs  +  '/'  +  e 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . cache [ e ]  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . cache [ abs ]  =  entries 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // mark and cache dir-ness
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  entries 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GlobSync . prototype . _readdirError  =  function  ( f ,  er )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // handle errors, and cache the information
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  switch  ( er . code )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  'ENOTSUP' :  // https://github.com/isaacs/node-glob/issues/205
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  'ENOTDIR' :  // totally normal. means it *does* exist.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  abs  =  this . _makeAbs ( f ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . cache [ abs ]  =  'FILE' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( abs  ===  this . cwdAbs )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  error  =  new  Error ( er . code  +  ' invalid cwd '  +  this . cwd ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        error . path  =  this . cwd 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        error . code  =  er . code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  'ENOENT' :  // not terribly unusual
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  'ELOOP' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  'ENAMETOOLONG' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  'UNKNOWN' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . cache [ this . _makeAbs ( f ) ]  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    default :  // some unusual error.  Treat as failure.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . cache [ this . _makeAbs ( f ) ]  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . strict ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  er 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . silent ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        console . error ( 'glob error' ,  er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GlobSync . prototype . _processGlobStar  =  function  ( prefix ,  read ,  abs ,  remain ,  index ,  inGlobStar )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  entries  =  this . _readdir ( abs ,  inGlobStar ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // no entries means not a dir, so it can never have matches
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // foo.txt/** doesn't match foo.txt
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! entries ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // test without the globstar, and with every child both below
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // and replacing the globstar.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  remainWithoutGlobStar  =  remain . slice ( 1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  gspref  =  prefix  ?  [  prefix  ]  :  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  noGlobStar  =  gspref . concat ( remainWithoutGlobStar ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // the noGlobStar pattern exits the inGlobStar state
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . _process ( noGlobStar ,  index ,  false ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  len  =  entries . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  isSym  =  this . symlinks [ abs ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // If it's a symlink, and we're in a globstar, then stop
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( isSym  &&  inGlobStar ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  len ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  e  =  entries [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( e . charAt ( 0 )  ===  '.'  &&  ! this . dot ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // these two cases enter the inGlobStar state
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  instead  =  gspref . concat ( entries [ i ] ,  remainWithoutGlobStar ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _process ( instead ,  index ,  true ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  below  =  gspref . concat ( entries [ i ] ,  remain ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . _process ( below ,  index ,  true ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GlobSync . prototype . _processSimple  =  function  ( prefix ,  index )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // XXX review this.  Shouldn't it be doing the mounting etc
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // before doing stat?  kinda weird?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  exists  =  this . _stat ( prefix ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! this . matches [ index ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . matches [ index ]  =  Object . create ( null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // If it doesn't exist, then just mark the lack of results
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! exists ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( prefix  &&  isAbsolute ( prefix )  &&  ! this . nomount )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  trail  =  /[\/\\]$/ . test ( prefix ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( prefix . charAt ( 0 )  ===  '/' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      prefix  =  path . join ( this . root ,  prefix ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      prefix  =  path . resolve ( this . root ,  prefix ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( trail ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        prefix  +=  '/' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( process . platform  ===  'win32' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    prefix  =  prefix . replace ( /\\/g ,  '/' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Mark this as a match
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . _emitMatch ( index ,  prefix ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Returns either 'DIR', 'FILE', or false
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GlobSync . prototype . _stat  =  function  ( f )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  abs  =  this . _makeAbs ( f ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  needDir  =  f . slice ( - 1 )  ===  '/' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( f . length  >  this . maxLength ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! this . stat  &&  ownProp ( this . cache ,  abs ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  c  =  this . cache [ abs ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( Array . isArray ( c ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      c  =  'DIR' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // It exists, but maybe not how we need it
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! needDir  ||  c  ===  'DIR' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( needDir  &&  c  ===  'FILE' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // otherwise we have to stat, because maybe c=true
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // if we know it exists, but not what it is.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  exists 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stat  =  this . statCache [ abs ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! stat )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  lstat 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      lstat  =  fs . lstatSync ( abs ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  catch  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( er  &&  ( er . code  ===  'ENOENT'  ||  er . code  ===  'ENOTDIR' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . statCache [ abs ]  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( lstat  &&  lstat . isSymbolicLink ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        stat  =  fs . statSync ( abs ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  catch  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        stat  =  lstat 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      stat  =  lstat 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . statCache [ abs ]  =  stat 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  c  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( stat ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    c  =  stat . isDirectory ( )  ?  'DIR'  :  'FILE' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . cache [ abs ]  =  this . cache [ abs ]  ||  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( needDir  &&  c  ===  'FILE' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GlobSync . prototype . _mark  =  function  ( p )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  common . mark ( this ,  p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GlobSync . prototype . _makeAbs  =  function  ( f )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  common . makeAbs ( this ,  f ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  281 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  internal _globber _1  =  _ _webpack _require _ _ ( 297 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Constructs  a  globber 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  patterns   Patterns  separated  by  newlines 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  options    Glob  options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  create ( patterns ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  yield  internal _globber _1 . DefaultGlobber . create ( patterns ,  options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . create  =  create ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=glob.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  297 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _asyncValues  =  ( this  &&  this . _ _asyncValues )  ||  function  ( o )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! Symbol . asyncIterator )  throw  new  TypeError ( "Symbol.asyncIterator is not defined." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  m  =  o [ Symbol . asyncIterator ] ,  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  m  ?  m . call ( o )  :  ( o  =  typeof  _ _values  ===  "function"  ?  _ _values ( o )  :  o [ Symbol . iterator ] ( ) ,  i  =  { } ,  verb ( "next" ) ,  verb ( "throw" ) ,  verb ( "return" ) ,  i [ Symbol . asyncIterator ]  =  function  ( )  {  return  this ;  } ,  i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  verb ( n )  {  i [ n ]  =  o [ n ]  &&  function  ( v )  {  return  new  Promise ( function  ( resolve ,  reject )  {  v  =  o [ n ] ( v ) ,  settle ( resolve ,  reject ,  v . done ,  v . value ) ;  } ) ;  } ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  settle ( resolve ,  reject ,  d ,  v )  {  Promise . resolve ( v ) . then ( function ( v )  {  resolve ( {  value :  v ,  done :  d  } ) ;  } ,  reject ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _await  =  ( this  &&  this . _ _await )  ||  function  ( v )  {  return  this  instanceof  _ _await  ?  ( this . v  =  v ,  this )  :  new  _ _await ( v ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _asyncGenerator  =  ( this  &&  this . _ _asyncGenerator )  ||  function  ( thisArg ,  _arguments ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! Symbol . asyncIterator )  throw  new  TypeError ( "Symbol.asyncIterator is not defined." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  g  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ,  i ,  q  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  i  =  { } ,  verb ( "next" ) ,  verb ( "throw" ) ,  verb ( "return" ) ,  i [ Symbol . asyncIterator ]  =  function  ( )  {  return  this ;  } ,  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  verb ( n )  {  if  ( g [ n ] )  i [ n ]  =  function  ( v )  {  return  new  Promise ( function  ( a ,  b )  {  q . push ( [ n ,  v ,  a ,  b ] )  >  1  ||  resume ( n ,  v ) ;  } ) ;  } ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  resume ( n ,  v )  {  try  {  step ( g [ n ] ( v ) ) ;  }  catch  ( e )  {  settle ( q [ 0 ] [ 3 ] ,  e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  step ( r )  {  r . value  instanceof  _ _await  ?  Promise . resolve ( r . value . v ) . then ( fulfill ,  reject )  :  settle ( q [ 0 ] [ 2 ] ,  r ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  fulfill ( value )  {  resume ( "next" ,  value ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  reject ( value )  {  resume ( "throw" ,  value ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  settle ( f ,  v )  {  if  ( f ( v ) ,  q . shift ( ) ,  q . length )  resume ( q [ 0 ] [ 0 ] ,  q [ 0 ] [ 1 ] ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  core  =  _ _webpack _require _ _ ( 470 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  fs  =  _ _webpack _require _ _ ( 747 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  globOptionsHelper  =  _ _webpack _require _ _ ( 601 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  path  =  _ _webpack _require _ _ ( 622 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  patternHelper  =  _ _webpack _require _ _ ( 597 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  internal _match _kind _1  =  _ _webpack _require _ _ ( 327 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  internal _pattern _1  =  _ _webpack _require _ _ ( 923 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  internal _search _state _1  =  _ _webpack _require _ _ ( 728 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  IS _WINDOWS  =  process . platform  ===  'win32' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  DefaultGlobber  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . patterns  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . searchPaths  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . options  =  globOptionsHelper . getOptions ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getSearchPaths ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Return a copy
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . searchPaths . slice ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    glob ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  e _1 ,  _a ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  result  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for  ( var  _b  =  _ _asyncValues ( this . globGenerator ( ) ) ,  _c ;  _c  =  yield  _b . next ( ) ,  ! _c . done ; )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  itemPath  =  _c . value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    result . push ( itemPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( e _1 _1 )  {  e _1  =  {  error :  e _1 _1  } ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( _c  &&  ! _c . done  &&  ( _a  =  _b . return ) )  yield  _a . call ( _b ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                finally  {  if  ( e _1 )  throw  e _1 . error ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    globGenerator ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _asyncGenerator ( this ,  arguments ,  function *  globGenerator _1 ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Fill in defaults options
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  options  =  globOptionsHelper . getOptions ( this . options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Implicit descendants?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  patterns  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            for  ( const  pattern  of  this . patterns )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                patterns . push ( pattern ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( options . implicitDescendants  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ( pattern . trailingSeparator  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        pattern . segments [ pattern . segments . length  -  1 ]  !==  '**' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    patterns . push ( new  internal _pattern _1 . Pattern ( pattern . negate ,  pattern . segments . concat ( '**' ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Push the search paths
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  stack  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            for  ( const  searchPath  of  patternHelper . getSearchPaths ( patterns ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . debug ( ` Search path ' ${ searchPath } ' ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Exists?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Intentionally using lstat. Detection for broken symlink
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // will be performed later (if following symlinks).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  _ _await ( fs . promises . lstat ( searchPath ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( err . code  ===  'ENOENT' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    throw  err ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                stack . unshift ( new  internal _search _state _1 . SearchState ( searchPath ,  1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Search
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  traversalChain  =  [ ] ;  // used to detect cycles
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            while  ( stack . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Pop
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  item  =  stack . pop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Match?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  match  =  patternHelper . match ( patterns ,  item . path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  partialMatch  =  ! ! match  ||  patternHelper . partialMatch ( patterns ,  item . path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( ! match  &&  ! partialMatch )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Stat
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  stats  =  yield  _ _await ( DefaultGlobber . stat ( item ,  options ,  traversalChain ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Broken symlink, or symlink cycle detected, or no longer exists
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Broken symlink, or symlink cycle detected, or no longer exists
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( ! stats )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Directory
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( stats . isDirectory ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Matched
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( match  &  internal _match _kind _1 . MatchKind . Directory )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        yield  yield  _ _await ( item . path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Descend?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    else  if  ( ! partialMatch )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Push the child items in reverse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  childLevel  =  item . level  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  childItems  =  ( yield  _ _await ( fs . promises . readdir ( item . path ) ) ) . map ( x  =>  new  internal _search _state _1 . SearchState ( path . join ( item . path ,  x ) ,  childLevel ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    stack . push ( ... childItems . reverse ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // File
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  if  ( match  &  internal _match _kind _1 . MatchKind . File )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  yield  _ _await ( item . path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Constructs  a  DefaultGlobber 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  create ( patterns ,  options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  result  =  new  DefaultGlobber ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( IS _WINDOWS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                patterns  =  patterns . replace ( /\r\n/g ,  '\n' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                patterns  =  patterns . replace ( /\r/g ,  '\n' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  lines  =  patterns . split ( '\n' ) . map ( x  =>  x . trim ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            for  ( const  line  of  lines )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Empty or comment
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( ! line  ||  line . startsWith ( '#' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Pattern
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    result . patterns . push ( new  internal _pattern _1 . Pattern ( line ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            result . searchPaths . push ( ... patternHelper . getSearchPaths ( result . patterns ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  stat ( item ,  options ,  traversalChain )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Note:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // `stat` returns info about the target of a symlink (or symlink chain)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // `lstat` returns info about a symlink itself
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  stats ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( options . followSymbolicLinks )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Use `stat` (following symlinks)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    stats  =  yield  fs . promises . stat ( item . path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( err . code  ===  'ENOENT' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if  ( options . omitBrokenSymbolicLinks )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            core . debug ( ` Broken symlink ' ${ item . path } ' ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            return  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        throw  new  Error ( ` No information found for the path ' ${ item . path } '. This may indicate a broken symbolic link. ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    throw  err ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Use `lstat` (not following symlinks)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                stats  =  yield  fs . promises . lstat ( item . path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Note, isDirectory() returns false for the lstat of a symlink
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( stats . isDirectory ( )  &&  options . followSymbolicLinks )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Get the realpath
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  realPath  =  yield  fs . promises . realpath ( item . path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Fixup the traversal chain to match the item level
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                while  ( traversalChain . length  >=  item . level )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    traversalChain . pop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Test for a cycle
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( traversalChain . some ( ( x )  =>  x  ===  realPath ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . debug ( ` Symlink cycle detected for path ' ${ item . path } ' and realpath ' ${ realPath } ' ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Update the traversal chain
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                traversalChain . push ( realPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  stats ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . DefaultGlobber  =  DefaultGlobber ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=internal-globber.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  302 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module ,  _ _unusedexports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  realpath  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								realpath . realpath  =  realpath  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								realpath . sync  =  realpathSync  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								realpath . realpathSync  =  realpathSync  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								realpath . monkeypatch  =  monkeypatch  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								realpath . unmonkeypatch  =  unmonkeypatch  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  fs  =  _ _webpack _require _ _ ( 747 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  origRealpath  =  fs . realpath  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  origRealpathSync  =  fs . realpathSync  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  version  =  process . version  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  ok  =  /^v[0-5]\./ . test ( version )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  old  =  _ _webpack _require _ _ ( 117 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  newError  ( er )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  er  &&  er . syscall  ===  'realpath'  &&  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    er . code  ===  'ELOOP'  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    er . code  ===  'ENOMEM'  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    er . code  ===  'ENAMETOOLONG' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  realpath  ( p ,  cache ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ok )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  origRealpath ( p ,  cache ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  cache  ===  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cb  =  cache 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cache  =  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  origRealpath ( p ,  cache ,  function  ( er ,  result )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( newError ( er ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      old . realpath ( p ,  cache ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      cb ( er ,  result ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  realpathSync  ( p ,  cache )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ok )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  origRealpathSync ( p ,  cache ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  origRealpathSync ( p ,  cache ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( newError ( er ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  old . realpathSync ( p ,  cache ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      throw  er 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  monkeypatch  ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fs . realpath  =  realpath 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fs . realpathSync  =  realpathSync 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  unmonkeypatch  ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fs . realpath  =  origRealpath 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fs . realpathSync  =  origRealpathSync 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  306 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module ,  _ _unusedexports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  concatMap  =  _ _webpack _require _ _ ( 896 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  balanced  =  _ _webpack _require _ _ ( 621 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  expandTop ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  escSlash  =  '\0SLASH' + Math . random ( ) + '\0' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  escOpen  =  '\0OPEN' + Math . random ( ) + '\0' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  escClose  =  '\0CLOSE' + Math . random ( ) + '\0' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  escComma  =  '\0COMMA' + Math . random ( ) + '\0' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  escPeriod  =  '\0PERIOD' + Math . random ( ) + '\0' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  numeric ( str )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  parseInt ( str ,  10 )  ==  str 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ?  parseInt ( str ,  10 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    :  str . charCodeAt ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  escapeBraces ( str )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  str . split ( '\\\\' ) . join ( escSlash ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . split ( '\\{' ) . join ( escOpen ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . split ( '\\}' ) . join ( escClose ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . split ( '\\,' ) . join ( escComma ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . split ( '\\.' ) . join ( escPeriod ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  unescapeBraces ( str )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  str . split ( escSlash ) . join ( '\\' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . split ( escOpen ) . join ( '{' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . split ( escClose ) . join ( '}' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . split ( escComma ) . join ( ',' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . split ( escPeriod ) . join ( '.' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Basically just str.split(","), but handling cases
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// where we have nested braced sections, which should be
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// treated as individual members, like {a,{b,c},d}
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  parseCommaParts ( str )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! str ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  [ '' ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  parts  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  m  =  balanced ( '{' ,  '}' ,  str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! m ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  str . split ( ',' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  pre  =  m . pre ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  body  =  m . body ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  post  =  m . post ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  p  =  pre . split ( ',' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  p [ p . length - 1 ]  +=  '{'  +  body  +  '}' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  postParts  =  parseCommaParts ( post ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( post . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    p [ p . length - 1 ]  +=  postParts . shift ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    p . push . apply ( p ,  postParts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  parts . push . apply ( parts ,  p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  parts ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  expandTop ( str )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! str ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // I don't know why Bash 4.3 does this, but it does.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Anything starting with {} will have the first two bytes preserved
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // but *only* at the top level, so {},a}b will not expand to anything,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // but a{},b}c will be expanded to [a}c,abc].
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // One could argue that this is a bug in Bash, but since the goal of
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // this module is to match Bash's rules, we escape a leading {}
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( str . substr ( 0 ,  2 )  ===  '{}' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    str  =  '\\{\\}'  +  str . substr ( 2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  expand ( escapeBraces ( str ) ,  true ) . map ( unescapeBraces ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  identity ( e )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  embrace ( str )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  '{'  +  str  +  '}' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isPadded ( el )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  /^-?0\d/ . test ( el ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  lte ( i ,  y )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  i  <=  y ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  gte ( i ,  y )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  i  >=  y ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  expand ( str ,  isTop )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  expansions  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  m  =  balanced ( '{' ,  '}' ,  str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! m  ||  /\$$/ . test ( m . pre ) )  return  [ str ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  isNumericSequence  =  /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/ . test ( m . body ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  isAlphaSequence  =  /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/ . test ( m . body ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  isSequence  =  isNumericSequence  ||  isAlphaSequence ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  isOptions  =  m . body . indexOf ( ',' )  >=  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! isSequence  &&  ! isOptions )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // {a},b}
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( m . post . match ( /,.*\}/ ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      str  =  m . pre  +  '{'  +  m . body  +  escClose  +  m . post ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  expand ( str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  [ str ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  n ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( isSequence )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    n  =  m . body . split ( /\.\./ ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    n  =  parseCommaParts ( m . body ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( n . length  ===  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // x{{a,b}}y ==> x{a}y x{b}y
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      n  =  expand ( n [ 0 ] ,  false ) . map ( embrace ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( n . length  ===  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  post  =  m . post . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          ?  expand ( m . post ,  false ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          :  [ '' ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  post . map ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  m . pre  +  n [ 0 ]  +  p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // at this point, n is the parts, and we know it's not a comma set
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // with a single entry.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // no need to expand pre, since it is guaranteed to be free of brace-sets
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  pre  =  m . pre ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  post  =  m . post . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ?  expand ( m . post ,  false ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    :  [ '' ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  N ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( isSequence )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  x  =  numeric ( n [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  y  =  numeric ( n [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  width  =  Math . max ( n [ 0 ] . length ,  n [ 1 ] . length ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  incr  =  n . length  ==  3 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ?  Math . abs ( numeric ( n [ 2 ] ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      :  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  test  =  lte ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  reverse  =  y  <  x ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( reverse )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      incr  *=  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      test  =  gte ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  pad  =  n . some ( isPadded ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    N  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  x ;  test ( i ,  y ) ;  i  +=  incr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  c ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isAlphaSequence )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        c  =  String . fromCharCode ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( c  ===  '\\' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          c  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        c  =  String ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( pad )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          var  need  =  width  -  c . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( need  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            var  z  =  new  Array ( need  +  1 ) . join ( '0' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( i  <  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              c  =  '-'  +  z  +  c . slice ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              c  =  z  +  c ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      N . push ( c ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    N  =  concatMap ( n ,  function ( el )  {  return  expand ( el ,  false )  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  j  =  0 ;  j  <  N . length ;  j ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  k  =  0 ;  k  <  post . length ;  k ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  expansion  =  pre  +  N [ j ]  +  post [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! isTop  ||  isSequence  ||  expansion ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        expansions . push ( expansion ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  expansions ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  315 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( typeof  Object . create  ===  'function' )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // implementation from standard node.js 'util' module
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  module . exports  =  function  inherits ( ctor ,  superCtor )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( superCtor )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ctor . super _  =  superCtor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ctor . prototype  =  Object . create ( superCtor . prototype ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        constructor :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          value :  ctor , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          enumerable :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          writable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          configurable :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  else  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // old school shim for old browsers
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  module . exports  =  function  inherits ( ctor ,  superCtor )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( superCtor )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ctor . super _  =  superCtor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  TempCtor  =  function  ( )  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      TempCtor . prototype  =  superCtor . prototype 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ctor . prototype  =  new  TempCtor ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ctor . prototype . constructor  =  ctor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  327 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Indicates  whether  a  pattern  matches  a  path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  MatchKind ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								( function  ( MatchKind )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** Not matched */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MatchKind [ MatchKind [ "None" ]  =  0 ]  =  "None" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** Matched if the path is a directory */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MatchKind [ MatchKind [ "Directory" ]  =  1 ]  =  "Directory" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** Matched if the path is a regular file */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MatchKind [ MatchKind [ "File" ]  =  2 ]  =  "File" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** Matched */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MatchKind [ MatchKind [ "All" ]  =  3 ]  =  "All" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ( MatchKind  =  exports . MatchKind  ||  ( exports . MatchKind  =  { } ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=internal-match-kind.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  357 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "assert" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  359 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _importStar  =  ( this  &&  this . _ _importStar )  ||  function  ( mod )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  &&  mod . _ _esModule )  return  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  !=  null )  for  ( var  k  in  mod )  if  ( Object . hasOwnProperty . call ( mod ,  k ) )  result [ k ]  =  mod [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ "default" ]  =  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  core  =  _ _importStar ( _ _webpack _require _ _ ( 470 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  upload _specification _1  =  _ _webpack _require _ _ ( 590 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  upload _http _client _1  =  _ _webpack _require _ _ ( 608 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  utils _1  =  _ _webpack _require _ _ ( 870 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  download _http _client _1  =  _ _webpack _require _ _ ( 855 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  download _specification _1  =  _ _webpack _require _ _ ( 532 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  config _variables _1  =  _ _webpack _require _ _ ( 401 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  path _1  =  _ _webpack _require _ _ ( 622 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  DefaultArtifactClient  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Constructs  a  DefaultArtifactClient 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  create ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  new  DefaultArtifactClient ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Uploads  an  artifact 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    uploadArtifact ( name ,  files ,  rootDirectory ,  options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            utils _1 . checkArtifactName ( name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Get specification for the files being uploaded
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  uploadSpecification  =  upload _specification _1 . getUploadSpecification ( name ,  rootDirectory ,  files ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  uploadResponse  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                artifactName :  name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                artifactItems :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                size :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                failedItems :  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  uploadHttpClient  =  new  upload _http _client _1 . UploadHttpClient ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( uploadSpecification . length  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . warning ( ` No files found that can be uploaded ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Create an entry for the artifact in the file container
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  response  =  yield  uploadHttpClient . createArtifactInFileContainer ( name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( ! response . fileContainerResourceUrl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . debug ( response . toString ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    throw  new  Error ( 'No URL provided by the Artifact Service to upload an artifact to' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . debug ( ` Upload Resource URL:  ${ response . fileContainerResourceUrl } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Upload each of the files that were found concurrently
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  uploadResult  =  yield  uploadHttpClient . uploadArtifactToFileContainer ( response . fileContainerResourceUrl ,  uploadSpecification ,  options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Update the size of the artifact to indicate we are done uploading
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // The uncompressed size is used for display when downloading a zip of the artifact from the UI
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                yield  uploadHttpClient . patchArtifactSize ( uploadResult . totalSize ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . info ( ` Finished uploading artifact  ${ name } . Reported size is  ${ uploadResult . uploadSize }  bytes. There were  ${ uploadResult . failedItems . length }  items that failed to upload ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                uploadResponse . artifactItems  =  uploadSpecification . map ( item  =>  item . absoluteFilePath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                uploadResponse . size  =  uploadResult . uploadSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                uploadResponse . failedItems  =  uploadResult . failedItems ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  uploadResponse ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    downloadArtifact ( name ,  path ,  options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  downloadHttpClient  =  new  download _http _client _1 . DownloadHttpClient ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  artifacts  =  yield  downloadHttpClient . listArtifacts ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( artifacts . count  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  Error ( ` Unable to find any artifacts for the associated workflow ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  artifactToDownload  =  artifacts . value . find ( artifact  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  artifact . name  ===  name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! artifactToDownload )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  Error ( ` Unable to find an artifact with the name:  ${ name } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  items  =  yield  downloadHttpClient . getContainerItems ( artifactToDownload . name ,  artifactToDownload . fileContainerResourceUrl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                path  =  config _variables _1 . getWorkSpaceDirectory ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            path  =  path _1 . normalize ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            path  =  path _1 . resolve ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // During upload, empty directories are rejected by the remote server so there should be no artifacts that consist of only empty directories
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            const  downloadSpecification  =  download _specification _1 . getDownloadSpecification ( name ,  items . value ,  path ,  ( options  ===  null  ||  options  ===  void  0  ?  void  0  :  options . createArtifactFolder )  ||  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            if  ( downloadSpecification . filesToDownload . length  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . info ( ` No downloadable files were found for the artifact:  ${ artifactToDownload . name } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Create all necessary directories recursively before starting any download
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                yield  utils _1 . createDirectoriesForArtifact ( downloadSpecification . directoryStructure ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . info ( 'Directory structure has been setup for the artifact' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                yield  utils _1 . createEmptyFilesForArtifact ( downloadSpecification . emptyFilesToCreate ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                yield  downloadHttpClient . downloadSingleArtifact ( downloadSpecification . filesToDownload ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                artifactName :  name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                downloadPath :  downloadSpecification . rootDownloadLocation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    downloadAllArtifacts ( path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  downloadHttpClient  =  new  download _http _client _1 . DownloadHttpClient ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  response  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  artifacts  =  yield  downloadHttpClient . listArtifacts ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( artifacts . count  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . info ( 'Unable to find any artifacts for the associated workflow' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  response ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                path  =  config _variables _1 . getWorkSpaceDirectory ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            path  =  path _1 . normalize ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            path  =  path _1 . resolve ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  downloadedArtifacts  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            while  ( downloadedArtifacts  <  artifacts . count )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  currentArtifactToDownload  =  artifacts . value [ downloadedArtifacts ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                downloadedArtifacts  +=  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Get container entries for the specific artifact
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  items  =  yield  downloadHttpClient . getContainerItems ( currentArtifactToDownload . name ,  currentArtifactToDownload . fileContainerResourceUrl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  downloadSpecification  =  download _specification _1 . getDownloadSpecification ( currentArtifactToDownload . name ,  items . value ,  path ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( downloadSpecification . filesToDownload . length  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . info ( ` No downloadable files were found for any artifact  ${ currentArtifactToDownload . name } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  utils _1 . createDirectoriesForArtifact ( downloadSpecification . directoryStructure ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  utils _1 . createEmptyFilesForArtifact ( downloadSpecification . emptyFilesToCreate ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  downloadHttpClient . downloadSingleArtifact ( downloadSpecification . filesToDownload ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                response . push ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    artifactName :  currentArtifactToDownload . name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    downloadPath :  downloadSpecification . rootDownloadLocation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  response ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . DefaultArtifactClient  =  DefaultArtifactClient ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=artifact-client.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  383 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  assert  =  _ _webpack _require _ _ ( 357 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  path  =  _ _webpack _require _ _ ( 622 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  pathHelper  =  _ _webpack _require _ _ ( 972 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  IS _WINDOWS  =  process . platform  ===  'win32' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Helper  class  for  parsing  paths  into  segments 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  Path  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Constructs  a  Path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  itemPath  Path  or  array  of  segments 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( itemPath )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . segments  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // String
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( typeof  itemPath  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            assert ( itemPath ,  ` Parameter 'itemPath' must not be empty ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Normalize slashes and trim unnecessary trailing slash
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            itemPath  =  pathHelper . safeTrimTrailingSeparator ( itemPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Not rooted
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! pathHelper . hasRoot ( itemPath ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . segments  =  itemPath . split ( path . sep ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Rooted
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Add all segments, while not at the root
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  remaining  =  itemPath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  dir  =  pathHelper . dirname ( remaining ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                while  ( dir  !==  remaining )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Add the segment
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  basename  =  path . basename ( remaining ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    this . segments . unshift ( basename ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Truncate the last segment
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    remaining  =  dir ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    dir  =  pathHelper . dirname ( remaining ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Remainder is the root
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . segments . unshift ( remaining ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Array
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Must not be empty
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            assert ( itemPath . length  >  0 ,  ` Parameter 'itemPath' must not be an empty array ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Each segment
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            for  ( let  i  =  0 ;  i  <  itemPath . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  segment  =  itemPath [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Must not be empty
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                assert ( segment ,  ` Parameter 'itemPath' must not contain any empty segments ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Normalize slashes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                segment  =  pathHelper . normalizeSeparators ( itemPath [ i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Root segment
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( i  ===  0  &&  pathHelper . hasRoot ( segment ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    segment  =  pathHelper . safeTrimTrailingSeparator ( segment ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    assert ( segment  ===  pathHelper . dirname ( segment ) ,  ` Parameter 'itemPath' root segment contains information for multiple segments ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    this . segments . push ( segment ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // All other segments
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Must not contain slash
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    assert ( ! segment . includes ( path . sep ) ,  ` Parameter 'itemPath' contains unexpected path separators ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    this . segments . push ( segment ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Converts  the  path  to  it ' s  string  representation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    toString ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // First segment
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  result  =  this . segments [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // All others
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  skipSlash  =  result . endsWith ( path . sep )  ||  ( IS _WINDOWS  &&  /^[A-Z]:$/i . test ( result ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( let  i  =  1 ;  i  <  this . segments . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( skipSlash )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                skipSlash  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                result  +=  path . sep ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            result  +=  this . segments [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . Path  =  Path ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=internal-path.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  385 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _importStar  =  ( this  &&  this . _ _importStar )  ||  function  ( mod )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  &&  mod . _ _esModule )  return  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  !=  null )  for  ( var  k  in  mod )  if  ( Object . hasOwnProperty . call ( mod ,  k ) )  result [ k ]  =  mod [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ "default" ]  =  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  core  =  _ _importStar ( _ _webpack _require _ _ ( 470 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  artifact _1  =  _ _webpack _require _ _ ( 214 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  constants _1  =  _ _webpack _require _ _ ( 694 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  search _1  =  _ _webpack _require _ _ ( 575 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  run ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  name  =  core . getInput ( constants _1 . Inputs . Name ,  {  required :  false  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  path  =  core . getInput ( constants _1 . Inputs . Path ,  {  required :  true  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  searchResult  =  yield  search _1 . findFilesToUpload ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( searchResult . filesToUpload . length  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . warning ( ` No files were found for the provided path:  ${ path } . No artifacts will be uploaded. ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . info ( ` With the provided path, there will be  ${ searchResult . filesToUpload . length }  files uploaded ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . debug ( ` Root artifact directory is  ${ searchResult . rootDirectory } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  artifactClient  =  artifact _1 . create ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  options  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    continueOnError :  false 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                } ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                const  uploadResponse  =  yield  artifactClient . uploadArtifact ( name  ||  constants _1 . getDefaultArtifactName ( ) ,  searchResult . filesToUpload ,  searchResult . rootDirectory ,  options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( uploadResponse . failedItems . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . setFailed ( ` An error was encountered when uploading  ${ uploadResponse . artifactName } . There were  ${ uploadResponse . failedItems . length }  items that failed to upload. ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . info ( ` Artifact  ${ uploadResponse . artifactName }  has been successfully uploaded! ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core . setFailed ( err . message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								run ( ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  401 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// The number of concurrent uploads that happens at the same time
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getUploadFileConcurrency ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getUploadFileConcurrency  =  getUploadFileConcurrency ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// When uploading large files that can't be uploaded with a single http call, this controls
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// the chunk size that is used during upload
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getUploadChunkSize ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  4  *  1024  *  1024 ;  // 4 MB Chunks
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getUploadChunkSize  =  getUploadChunkSize ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// The maximum number of retries that can be attempted before an upload or download fails
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getRetryLimit ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  5 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getRetryLimit  =  getRetryLimit ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// With exponential backoff, the larger the retry count, the larger the wait time before another attempt
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// The retry multiplier controls by how much the backOff time increases depending on the number of retries
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getRetryMultiplier ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  1.5 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getRetryMultiplier  =  getRetryMultiplier ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// The initial wait time if an upload or download fails and a retry is being attempted for the first time
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getInitialRetryIntervalInMilliseconds ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  3000 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getInitialRetryIntervalInMilliseconds  =  getInitialRetryIntervalInMilliseconds ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// The number of concurrent downloads that happens at the same time
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getDownloadFileConcurrency ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getDownloadFileConcurrency  =  getDownloadFileConcurrency ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getRuntimeToken ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  token  =  process . env [ 'ACTIONS_RUNTIME_TOKEN' ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! token )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  Error ( 'Unable to get ACTIONS_RUNTIME_TOKEN env variable' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  token ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getRuntimeToken  =  getRuntimeToken ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getRuntimeUrl ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  runtimeUrl  =  process . env [ 'ACTIONS_RUNTIME_URL' ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! runtimeUrl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  Error ( 'Unable to get ACTIONS_RUNTIME_URL env variable' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  runtimeUrl ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getRuntimeUrl  =  getRuntimeUrl ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getWorkFlowRunId ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  workFlowRunId  =  process . env [ 'GITHUB_RUN_ID' ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! workFlowRunId )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  Error ( 'Unable to get GITHUB_RUN_ID env variable' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  workFlowRunId ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getWorkFlowRunId  =  getWorkFlowRunId ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getWorkSpaceDirectory ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  workspaceDirectory  =  process . env [ 'GITHUB_WORKSPACE' ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! workspaceDirectory )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  Error ( 'Unable to get GITHUB_WORKSPACE env variable' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  workspaceDirectory ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getWorkSpaceDirectory  =  getWorkSpaceDirectory ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=config-variables.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  402 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module ,  _ _unusedexports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * !  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Tmp 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Copyright  ( c )  2011 - 2017  KARASZI  Istvan  < github @ spam . raszi . hu > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  MIT  Licensed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Module  dependencies . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  fs  =  _ _webpack _require _ _ ( 747 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  os  =  _ _webpack _require _ _ ( 87 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  path  =  _ _webpack _require _ _ ( 622 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  crypto  =  _ _webpack _require _ _ ( 417 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  _c  =  fs . constants  &&  os . constants  ?  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  {  fs :  fs . constants ,  os :  os . constants  }  : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  process . binding ( 'constants' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  rimraf  =  _ _webpack _require _ _ ( 569 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  working  inner  variables . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // the random characters to choose from
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  RANDOM _CHARS  =  '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  TEMPLATE _PATTERN  =  /XXXXXX/ , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  DEFAULT _TRIES  =  3 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  CREATE _FLAGS  =  ( _c . O _CREAT  ||  _c . fs . O _CREAT )  |  ( _c . O _EXCL  ||  _c . fs . O _EXCL )  |  ( _c . O _RDWR  ||  _c . fs . O _RDWR ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  EBADF  =  _c . EBADF  ||  _c . os . errno . EBADF , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ENOENT  =  _c . ENOENT  ||  _c . os . errno . ENOENT , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  DIR _MODE  =  448  /* 0o700 */ , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FILE _MODE  =  384  /* 0o600 */ , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  EXIT  =  'exit' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  SIGINT  =  'SIGINT' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // this will hold the objects need to be removed on exit
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  _removeObjects  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  _gracefulCleanup  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Random  name  generator  based  on  crypto . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Adapted  from  http : //blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { number }  howMany 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns  { string }  the  generated  random  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _randomChars ( howMany )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    value  =  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rnd  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // make sure that we do not fail because we ran out of entropy
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rnd  =  crypto . randomBytes ( howMany ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rnd  =  crypto . pseudoRandomBytes ( howMany ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  howMany ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    value . push ( RANDOM _CHARS [ rnd [ i ]  %  RANDOM _CHARS . length ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  value . join ( '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Checks  whether  the  ` obj `  parameter  is  defined  or  not . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { Object }  obj 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns  { boolean }  true  if  the  object  is  undefined 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _isUndefined ( obj )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  typeof  obj  ===  'undefined' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Parses  the  function  arguments . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  function  helps  to  have  optional  arguments . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { ( Options | Function ) }  options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { Function }  callback 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns  { Array }  parsed  arguments 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _parseArguments ( options ,  callback )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  options  ===  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  [ { } ,  options ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( _isUndefined ( options ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  [ { } ,  callback ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  [ options ,  callback ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Generates  a  new  temporary  name . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { Object }  opts 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns  { string }  the  new  random  name  according  to  opts 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _generateTmpName ( opts )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  tmpDir  =  _getTmpDir ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // fail early on missing tmp dir
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( isBlank ( opts . dir )  &&  isBlank ( tmpDir ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  Error ( 'No tmp dir specified' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! isBlank ( opts . name ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  path . join ( opts . dir  ||  tmpDir ,  opts . name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // mkstemps like template
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // opts.template has already been guarded in tmpName() below
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( opts . template )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  template  =  opts . template ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // make sure that we prepend the tmp path if none was given
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( path . basename ( template )  ===  template ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      template  =  path . join ( opts . dir  ||  tmpDir ,  template ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  template . replace ( TEMPLATE _PATTERN ,  _randomChars ( 6 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // prefix and postfix
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  name  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( isBlank ( opts . prefix )  ?  'tmp-'  :  opts . prefix ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    process . pid , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _randomChars ( 12 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( opts . postfix  ?  opts . postfix  :  '' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ] . join ( '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  path . join ( opts . dir  ||  tmpDir ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Gets  a  temporary  file  name . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { ( Options | tmpNameCallback ) }  options  options  or  callback 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { ? tmpNameCallback }  callback  the  callback  function 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  tmpName ( options ,  callback )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    args  =  _parseArguments ( options ,  callback ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    opts  =  args [ 0 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cb  =  args [ 1 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tries  =  ! isBlank ( opts . name )  ?  1  :  opts . tries  ||  DEFAULT _TRIES ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( isNaN ( tries )  ||  tries  <  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( new  Error ( 'Invalid tries' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( opts . template  &&  ! opts . template . match ( TEMPLATE _PATTERN ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( new  Error ( 'Invalid template provided' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ( function  _getUniqueName ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  name  =  _generateTmpName ( opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // check whether the path exists then retry if needed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fs . stat ( name ,  function  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( tries --  >  0 )  return  _getUniqueName ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  cb ( new  Error ( 'Could not get a unique tmp filename, max tries reached '  +  name ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        cb ( null ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      cb ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Synchronous  version  of  tmpName . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { Object }  options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns  { string }  the  generated  random  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ throws  { Error }  if  the  options  are  invalid  or  could  not  generate  a  filename 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  tmpNameSync ( options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    args  =  _parseArguments ( options ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    opts  =  args [ 0 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tries  =  ! isBlank ( opts . name )  ?  1  :  opts . tries  ||  DEFAULT _TRIES ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( isNaN ( tries )  ||  tries  <  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  Error ( 'Invalid tries' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( opts . template  &&  ! opts . template . match ( TEMPLATE _PATTERN ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  Error ( 'Invalid template provided' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  do  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  name  =  _generateTmpName ( opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fs . statSync ( name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  while  ( tries --  >  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  throw  new  Error ( 'Could not get a unique tmp filename, max tries reached' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Creates  and  opens  a  temporary  file . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { ( Options | fileCallback ) }  options  the  config  options  or  the  callback  function 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { ? fileCallback }  callback 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  file ( options ,  callback )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    args  =  _parseArguments ( options ,  callback ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    opts  =  args [ 0 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cb  =  args [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // gets a temporary filename
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tmpName ( opts ,  function  _tmpNameCreated ( err ,  name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( err )  return  cb ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // create and open the file
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fs . open ( name ,  CREATE _FLAGS ,  opts . mode  ||  FILE _MODE ,  function  _fileCreated ( err ,  fd )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( err )  return  cb ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( opts . discardDescriptor )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  fs . close ( fd ,  function  _discardCallback ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Low probability, and the file exists, so this could be
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // ignored.  If it isn't we certainly need to unlink the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // file, and if that fails too its error is more
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // important.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              fs . unlinkSync ( name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              if  ( ! isENOENT ( e ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                err  =  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  cb ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          cb ( null ,  name ,  undefined ,  _prepareTmpFileRemoveCallback ( name ,  - 1 ,  opts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( opts . detachDescriptor )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  cb ( null ,  name ,  fd ,  _prepareTmpFileRemoveCallback ( name ,  - 1 ,  opts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      cb ( null ,  name ,  fd ,  _prepareTmpFileRemoveCallback ( name ,  fd ,  opts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Synchronous  version  of  file . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { Options }  options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns  { FileSyncObject }  object  consists  of  name ,  fd  and  removeCallback 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ throws  { Error }  if  cannot  create  a  file 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  fileSync ( options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    args  =  _parseArguments ( options ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    opts  =  args [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  discardOrDetachDescriptor  =  opts . discardDescriptor  ||  opts . detachDescriptor ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  name  =  tmpNameSync ( opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  fd  =  fs . openSync ( name ,  CREATE _FLAGS ,  opts . mode  ||  FILE _MODE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( opts . discardDescriptor )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fs . closeSync ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fd  =  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    name :  name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fd :  fd , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    removeCallback :  _prepareTmpFileRemoveCallback ( name ,  discardOrDetachDescriptor  ?  - 1  :  fd ,  opts ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Creates  a  temporary  directory . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { ( Options | dirCallback ) }  options  the  options  or  the  callback  function 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { ? dirCallback }  callback 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  dir ( options ,  callback )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    args  =  _parseArguments ( options ,  callback ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    opts  =  args [ 0 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cb  =  args [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // gets a temporary filename
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tmpName ( opts ,  function  _tmpNameCreated ( err ,  name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( err )  return  cb ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // create the directory
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fs . mkdir ( name ,  opts . mode  ||  DIR _MODE ,  function  _dirCreated ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( err )  return  cb ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      cb ( null ,  name ,  _prepareTmpDirRemoveCallback ( name ,  opts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Synchronous  version  of  dir . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { Options }  options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns  { DirSyncObject }  object  consists  of  name  and  removeCallback 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ throws  { Error }  if  it  cannot  create  a  directory 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  dirSync ( options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    args  =  _parseArguments ( options ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    opts  =  args [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  name  =  tmpNameSync ( opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fs . mkdirSync ( name ,  opts . mode  ||  DIR _MODE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    name :  name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    removeCallback :  _prepareTmpDirRemoveCallback ( name ,  opts ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Removes  files  asynchronously . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { Object }  fdPath 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { Function }  next 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _removeFileAsync ( fdPath ,  next )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  _handler  =  function  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( err  &&  ! isENOENT ( err ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // reraise any unanticipated error
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  next ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    next ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( 0  <=  fdPath [ 0 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fs . close ( fdPath [ 0 ] ,  function  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fs . unlink ( fdPath [ 1 ] ,  _handler ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else  fs . unlink ( fdPath [ 1 ] ,  _handler ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Removes  files  synchronously . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { Object }  fdPath 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _removeFileSync ( fdPath )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( 0  <=  fdPath [ 0 ] )  fs . closeSync ( fdPath [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // reraise any unanticipated error
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! isEBADF ( e )  &&  ! isENOENT ( e ) )  throw  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fs . unlinkSync ( fdPath [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // reraise any unanticipated error
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! isENOENT ( e ) )  throw  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Prepares  the  callback  for  removal  of  the  temporary  file . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { string }  name  the  path  of  the  file 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { number }  fd  file  descriptor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { Object }  opts 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns  { fileCallback } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _prepareTmpFileRemoveCallback ( name ,  fd ,  opts )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  removeCallbackSync  =  _prepareRemoveCallback ( _removeFileSync ,  [ fd ,  name ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  removeCallback  =  _prepareRemoveCallback ( _removeFileAsync ,  [ fd ,  name ] ,  removeCallbackSync ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! opts . keep )  _removeObjects . unshift ( removeCallbackSync ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  removeCallback ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Simple  wrapper  for  rimraf . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { string }  dirPath 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { Function }  next 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _rimrafRemoveDirWrapper ( dirPath ,  next )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  rimraf ( dirPath ,  next ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Simple  wrapper  for  rimraf . sync . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { string }  dirPath 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _rimrafRemoveDirSyncWrapper ( dirPath ,  next )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  next ( null ,  rimraf . sync ( dirPath ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  next ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Prepares  the  callback  for  removal  of  the  temporary  directory . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { string }  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { Object }  opts 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns  { Function }  the  callback 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _prepareTmpDirRemoveCallback ( name ,  opts )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  removeFunction  =  opts . unsafeCleanup  ?  _rimrafRemoveDirWrapper  :  fs . rmdir . bind ( fs ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  removeFunctionSync  =  opts . unsafeCleanup  ?  _rimrafRemoveDirSyncWrapper  :  fs . rmdirSync . bind ( fs ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  removeCallbackSync  =  _prepareRemoveCallback ( removeFunctionSync ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  removeCallback  =  _prepareRemoveCallback ( removeFunction ,  name ,  removeCallbackSync ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! opts . keep )  _removeObjects . unshift ( removeCallbackSync ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  removeCallback ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Creates  a  guarded  function  wrapping  the  removeFunction  call . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { Function }  removeFunction 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { Object }  arg 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns  { Function } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _prepareRemoveCallback ( removeFunction ,  arg ,  cleanupCallbackSync )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  called  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  function  _cleanupCallback ( next )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    next  =  next  ||  function  ( )  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! called )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  toRemove  =  cleanupCallbackSync  ||  _cleanupCallback ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  index  =  _removeObjects . indexOf ( toRemove ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( index  >=  0 )  _removeObjects . splice ( index ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      called  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // sync?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( removeFunction . length  ===  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          removeFunction ( arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  next ( null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // if no next is provided and since we are
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // in silent cleanup mode on process exit,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // we will ignore the error
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  next ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  return  removeFunction ( arg ,  next ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  return  next ( new  Error ( 'cleanup callback has already been called' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  garbage  collector . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _garbageCollector ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! _gracefulCleanup )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // the function being called removes itself from _removeObjects,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // loop until _removeObjects is empty
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while  ( _removeObjects . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      _removeObjects [ 0 ] ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // already removed?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Helper  for  testing  against  EBADF  to  compensate  changes  made  to  Node  7. x  under  Windows . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isEBADF ( error )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  isExpectedError ( error ,  - EBADF ,  'EBADF' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Helper  for  testing  against  ENOENT  to  compensate  changes  made  to  Node  7. x  under  Windows . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isENOENT ( error )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  isExpectedError ( error ,  - ENOENT ,  'ENOENT' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Helper  to  determine  whether  the  expected  error  code  matches  the  actual  code  and  errno , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  which  will  differ  between  the  supported  node  versions . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  Node  >=  7.0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *    error . code  { string } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *    error . errno  { string | number }  any  numerical  value  will  be  negated 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  Node  >=  6.0  <  7.0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *    error . code  { string } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *    error . errno  { number }  negated 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  Node  >=  4.0  <  6.0 :  introduces  SystemError 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *    error . code  { string } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *    error . errno  { number }  negated 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  Node  >=  0.10  <  4.0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *    error . code  { number }  negated 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *    error . errno  n / a 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isExpectedError ( error ,  code ,  errno )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  error . code  ===  code  ||  error . code  ===  errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Helper  which  determines  whether  a  string  s  is  blank ,  that  is  undefined ,  or  empty  or  null . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { string }  s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns  { Boolean }  true  whether  the  string  s  is  blank ,  false  otherwise 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isBlank ( s )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  s  ===  null  ||  s  ===  undefined  ||  ! s . trim ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Sets  the  graceful  cleanup . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  setGracefulCleanup ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  _gracefulCleanup  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Returns  the  currently  configured  tmp  dir  from  os . tmpdir ( ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns  { string }  the  currently  configured  tmp  dir 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _getTmpDir ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  os . tmpdir ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  If  there  are  multiple  different  versions  of  tmp  in  place ,  make  sure  that 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  we  recognize  the  old  listeners . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { Function }  listener 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns  { Boolean }  true  whether  listener  is  a  legacy  listener 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _is _legacy _listener ( listener )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( listener . name  ===  '_exit'  ||  listener . name  ===  '_uncaughtExceptionThrown' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    &&  listener . toString ( ) . indexOf ( '_garbageCollector();' )  >  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Safely  install  SIGINT  listener . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  NOTE :  this  will  only  work  on  OSX  and  Linux . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _safely _install _sigint _listener ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  listeners  =  process . listeners ( SIGINT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  existingListeners  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( let  i  =  0 ,  length  =  listeners . length ;  i  <  length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  lstnr  =  listeners [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( lstnr . name  ===  '_tmp$sigint_listener' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      existingListeners . push ( lstnr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      process . removeListener ( SIGINT ,  lstnr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  process . on ( SIGINT ,  function  _tmp$sigint _listener ( doExit )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( let  i  =  0 ,  length  =  existingListeners . length ;  i  <  length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // let the existing listener do the garbage collection (e.g. jest sandbox)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        existingListeners [ i ] ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // ignore
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // force the garbage collector even it is called again in the exit listener
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      _garbageCollector ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! ! doExit )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        process . exit ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Safely  install  process  exit  listener . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _safely _install _exit _listener ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  listeners  =  process . listeners ( EXIT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // collect any existing listeners
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  existingListeners  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( let  i  =  0 ,  length  =  listeners . length ;  i  <  length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  lstnr  =  listeners [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* istanbul ignore else */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // TODO: remove support for legacy listeners once release 1.0.0 is out
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( lstnr . name  ===  '_tmp$safe_listener'  ||  _is _legacy _listener ( lstnr ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // we must forget about the uncaughtException listener, hopefully it is ours
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( lstnr . name  !==  '_uncaughtExceptionThrown' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        existingListeners . push ( lstnr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      process . removeListener ( EXIT ,  lstnr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // TODO: what was the data parameter good for?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  process . addListener ( EXIT ,  function  _tmp$safe _listener ( data )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( let  i  =  0 ,  length  =  existingListeners . length ;  i  <  length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // let the existing listener do the garbage collection (e.g. jest sandbox)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        existingListeners [ i ] ( data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // ignore
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _garbageCollector ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								_safely _install _exit _listener ( ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								_safely _install _sigint _listener ( ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Configuration  options . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ typedef  { Object }  Options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ property  { ? number }  tries  the  number  of  tries  before  give  up  the  name  generation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ property  { ? string }  template  the  "mkstemp"  like  filename  template 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ property  { ? string }  name  fix  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ property  { ? string }  dir  the  tmp  directory  to  use 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ property  { ? string }  prefix  prefix  for  the  generated  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ property  { ? string }  postfix  postfix  for  the  generated  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ property  { ? boolean }  unsafeCleanup  recursively  removes  the  created  temporary  directory ,  even  when  it ' s  not  empty 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ typedef  { Object }  FileSyncObject 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ property  { string }  name  the  name  of  the  file 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ property  { string }  fd  the  file  descriptor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ property  { fileCallback }  removeCallback  the  callback  function  to  remove  the  file 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ typedef  { Object }  DirSyncObject 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ property  { string }  name  the  name  of  the  directory 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ property  { fileCallback }  removeCallback  the  callback  function  to  remove  the  directory 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ callback  tmpNameCallback 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { ? Error }  err  the  error  object  if  anything  goes  wrong 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { string }  name  the  temporary  file  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ callback  fileCallback 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { ? Error }  err  the  error  object  if  anything  goes  wrong 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { string }  name  the  temporary  file  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { number }  fd  the  file  descriptor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { cleanupCallback }  fn  the  cleanup  callback  function 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ callback  dirCallback 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { ? Error }  err  the  error  object  if  anything  goes  wrong 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { string }  name  the  temporary  file  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { cleanupCallback }  fn  the  cleanup  callback  function 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Removes  the  temporary  created  file  or  directory . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ callback  cleanupCallback 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { simpleCallback }  [ next ]  function  to  call  after  entry  was  removed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Callback  function  for  function  composition . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ see  { @ link  https : //github.com/raszi/node-tmp/issues/57|raszi/node-tmp#57}
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ callback  simpleCallback 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// exporting all the needed methods
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// evaluate os.tmpdir() lazily, mainly for simplifying testing but it also will
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// allow users to reconfigure the temporary directory
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( module . exports ,  'tmpdir' ,  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  enumerable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _getTmpDir ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . dir  =  dir ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . dirSync  =  dirSync ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . file  =  file ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . fileSync  =  fileSync ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . tmpName  =  tmpName ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . tmpNameSync  =  tmpNameSync ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . setGracefulCleanup  =  setGracefulCleanup ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  413 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module ,  _ _unusedexports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  _ _webpack _require _ _ ( 141 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  417 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "crypto" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  431 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _importStar  =  ( this  &&  this . _ _importStar )  ||  function  ( mod )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  &&  mod . _ _esModule )  return  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  !=  null )  for  ( var  k  in  mod )  if  ( Object . hasOwnProperty . call ( mod ,  k ) )  result [ k ]  =  mod [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ "default" ]  =  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  os  =  _ _importStar ( _ _webpack _require _ _ ( 87 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Commands 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Command  Format : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *    : : name  key = value , key = value : : message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Examples : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *    : : warning : : This  is  the  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *    : : set - env  name = MY _VAR : : some  value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  issueCommand ( command ,  properties ,  message )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  cmd  =  new  Command ( command ,  properties ,  message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    process . stdout . write ( cmd . toString ( )  +  os . EOL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . issueCommand  =  issueCommand ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  issue ( name ,  message  =  '' )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issueCommand ( name ,  { } ,  message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . issue  =  issue ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  CMD _STRING  =  '::' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  Command  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( command ,  properties ,  message )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! command )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            command  =  'missing.command' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . command  =  command ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . properties  =  properties ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . message  =  message ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    toString ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  cmdStr  =  CMD _STRING  +  this . command ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . properties  &&  Object . keys ( this . properties ) . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            cmdStr  +=  ' ' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  first  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            for  ( const  key  in  this . properties )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( this . properties . hasOwnProperty ( key ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  val  =  this . properties [ key ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( val )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if  ( first )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            first  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            cmdStr  +=  ',' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        cmdStr  +=  ` ${ key } = ${ escapeProperty ( val ) } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        cmdStr  +=  ` ${ CMD _STRING } ${ escapeData ( this . message ) } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  cmdStr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  escapeData ( s )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ( s  ||  '' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . replace ( /%/g ,  '%25' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . replace ( /\r/g ,  '%0D' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . replace ( /\n/g ,  '%0A' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  escapeProperty ( s )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ( s  ||  '' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . replace ( /%/g ,  '%25' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . replace ( /\r/g ,  '%0D' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . replace ( /\n/g ,  '%0A' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . replace ( /:/g ,  '%3A' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . replace ( /,/g ,  '%2C' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=command.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  452 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  utils _1  =  _ _webpack _require _ _ ( 870 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Used  for  managing  http  clients  during  either  upload  or  download 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  HttpManager  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( clientCount )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( clientCount  <  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( 'There must be at least one client' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . clients  =  new  Array ( clientCount ) . fill ( utils _1 . createHttpClient ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getClient ( index )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . clients [ index ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // client disposal is necessary if a keep-alive connection is used to properly close the connection
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // for more information see: https://github.com/actions/http-client/blob/04e5ad73cd3fd1f5610a32116b0759eddf6570d2/index.ts#L292
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    disposeAndReplaceClient ( index )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . clients [ index ] . dispose ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . clients [ index ]  =  utils _1 . createHttpClient ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    disposeAndReplaceAllClients ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( const  [ index ]  of  this . clients . entries ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . disposeAndReplaceClient ( index ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . HttpManager  =  HttpManager ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=http-manager.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  470 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _importStar  =  ( this  &&  this . _ _importStar )  ||  function  ( mod )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  &&  mod . _ _esModule )  return  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  !=  null )  for  ( var  k  in  mod )  if  ( Object . hasOwnProperty . call ( mod ,  k ) )  result [ k ]  =  mod [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ "default" ]  =  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  command _1  =  _ _webpack _require _ _ ( 431 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  os  =  _ _importStar ( _ _webpack _require _ _ ( 87 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  path  =  _ _importStar ( _ _webpack _require _ _ ( 622 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  code  to  exit  an  action 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  ExitCode ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								( function  ( ExitCode )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  A  code  indicating  that  the  action  was  successful 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ExitCode [ ExitCode [ "Success" ]  =  0 ]  =  "Success" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  A  code  indicating  that  the  action  was  a  failure 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ExitCode [ ExitCode [ "Failure" ]  =  1 ]  =  "Failure" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ( ExitCode  =  exports . ExitCode  ||  ( exports . ExitCode  =  { } ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Variables
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Sets  env  variable  for  this  action  and  future  actions  in  the  job 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  name  the  name  of  the  variable  to  set 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  val  the  value  of  the  variable 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  exportVariable ( name ,  val )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    process . env [ name ]  =  val ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issueCommand ( 'set-env' ,  {  name  } ,  val ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . exportVariable  =  exportVariable ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Registers  a  secret  which  will  get  masked  from  logs 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  secret  value  of  the  secret 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  setSecret ( secret )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issueCommand ( 'add-mask' ,  { } ,  secret ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . setSecret  =  setSecret ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Prepends  inputPath  to  the  PATH  ( for  this  action  and  future  actions ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  inputPath 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  addPath ( inputPath )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issueCommand ( 'add-path' ,  { } ,  inputPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    process . env [ 'PATH' ]  =  ` ${ inputPath } ${ path . delimiter } ${ process . env [ 'PATH' ] } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . addPath  =  addPath ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Gets  the  value  of  an  input .   The  value  is  also  trimmed . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      name      name  of  the  input  to  get 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      options   optional .  See  InputOptions . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns    string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getInput ( name ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  val  =  process . env [ ` INPUT_ ${ name . replace ( / /g ,  '_' ) . toUpperCase ( ) } ` ]  ||  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( options  &&  options . required  &&  ! val )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  Error ( ` Input required and not supplied:  ${ name } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  val . trim ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getInput  =  getInput ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Sets  the  value  of  an  output . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      name      name  of  the  output  to  set 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      value     value  to  store 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  setOutput ( name ,  value )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issueCommand ( 'set-output' ,  {  name  } ,  value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . setOutput  =  setOutput ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Results
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Sets  the  action  status  to  failed . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  When  the  action  exits  it  will  be  with  an  exit  code  of  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  message  add  error  issue  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  setFailed ( message )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    process . exitCode  =  ExitCode . Failure ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    error ( message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . setFailed  =  setFailed ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Logging Commands
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Gets  whether  Actions  Step  Debug  is  on  or  not 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isDebug ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  process . env [ 'RUNNER_DEBUG' ]  ===  '1' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . isDebug  =  isDebug ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Writes  debug  message  to  user  log 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  message  debug  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  debug ( message )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issueCommand ( 'debug' ,  { } ,  message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . debug  =  debug ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Adds  an  error  issue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  message  error  issue  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  error ( message )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issue ( 'error' ,  message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . error  =  error ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Adds  an  warning  issue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  message  warning  issue  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  warning ( message )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issue ( 'warning' ,  message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . warning  =  warning ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Writes  info  to  log  with  console . log . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  message  info  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  info ( message )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    process . stdout . write ( message  +  os . EOL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . info  =  info ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Begin  an  output  group . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Output  until  the  next  ` groupEnd `  will  be  foldable  in  this  group 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  name  The  name  of  the  output  group 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  startGroup ( name )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issue ( 'group' ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . startGroup  =  startGroup ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  End  an  output  group . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  endGroup ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issue ( 'endgroup' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . endGroup  =  endGroup ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Wrap  an  asynchronous  function  call  in  a  group . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Returns  the  same  type  as  the  function  itself . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  name  The  name  of  the  group 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  fn  The  function  to  wrap  in  the  group 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  group ( name ,  fn )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        startGroup ( name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            result  =  yield  fn ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            endGroup ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . group  =  group ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Wrapper action state
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Saves  state  for  current  action ,  the  state  can  only  be  retrieved  by  this  action ' s  post  job  execution . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      name      name  of  the  state  to  store 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      value     value  to  store 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  saveState ( name ,  value )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issueCommand ( 'save-state' ,  {  name  } ,  value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . saveState  =  saveState ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Gets  the  value  of  an  state  set  by  this  action ' s  main  execution . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      name      name  of  the  state  to  get 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns    string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getState ( name )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  process . env [ ` STATE_ ${ name } ` ]  ||  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getState  =  getState ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=core.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  532 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _importStar  =  ( this  &&  this . _ _importStar )  ||  function  ( mod )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  &&  mod . _ _esModule )  return  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  !=  null )  for  ( var  k  in  mod )  if  ( Object . hasOwnProperty . call ( mod ,  k ) )  result [ k ]  =  mod [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ "default" ]  =  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  path  =  _ _importStar ( _ _webpack _require _ _ ( 622 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Creates  a  specification  for  a  set  of  files  that  will  be  downloaded 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  artifactName  the  name  of  the  artifact 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  artifactEntries  a  set  of  container  entries  that  describe  that  files  that  make  up  an  artifact 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  downloadPath  the  path  where  the  artifact  will  be  downloaded  to 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  includeRootDirectory  specifies  if  there  should  be  an  extra  directory  ( denoted  by  the  artifact  name )  where  the  artifact  files  should  be  downloaded  to 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getDownloadSpecification ( artifactName ,  artifactEntries ,  downloadPath ,  includeRootDirectory )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // use a set for the directory paths so that there are no duplicates
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  directories  =  new  Set ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  specifications  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        rootDownloadLocation :  includeRootDirectory 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ?  path . join ( downloadPath ,  artifactName ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            :  downloadPath , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        directoryStructure :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        emptyFilesToCreate :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        filesToDownload :  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( const  entry  of  artifactEntries )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Ignore artifacts in the container that don't begin with the same name
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( entry . path . startsWith ( ` ${ artifactName } / ` )  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            entry . path . startsWith ( ` ${ artifactName } \\ ` ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // normalize all separators to the local OS
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  normalizedPathEntry  =  path . normalize ( entry . path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // entry.path always starts with the artifact name, if includeRootDirectory is false, remove the name from the beginning of the path
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  filePath  =  path . join ( downloadPath ,  includeRootDirectory 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ?  normalizedPathEntry 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                :  normalizedPathEntry . replace ( artifactName ,  '' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Case insensitive folder structure maintained in the backend, not every folder is created so the 'folder'
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // itemType cannot be relied upon. The file must be used to determine the directory structure
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( entry . itemType  ===  'file' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Get the directories that we need to create from the filePath for each individual file
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                directories . add ( path . dirname ( filePath ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( entry . fileLength  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // An empty file was uploaded, create the empty files locally so that no extra http calls are made
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    specifications . emptyFilesToCreate . push ( filePath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    specifications . filesToDownload . push ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        sourceLocation :  entry . contentLocation , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        targetPath :  filePath 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    specifications . directoryStructure  =  Array . from ( directories ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  specifications ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getDownloadSpecification  =  getDownloadSpecification ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=download-specification.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  539 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  url  =  _ _webpack _require _ _ ( 835 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  http  =  _ _webpack _require _ _ ( 605 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  https  =  _ _webpack _require _ _ ( 211 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  pm  =  _ _webpack _require _ _ ( 950 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								let  tunnel ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  HttpCodes ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								( function  ( HttpCodes )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "OK" ]  =  200 ]  =  "OK" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "MultipleChoices" ]  =  300 ]  =  "MultipleChoices" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "MovedPermanently" ]  =  301 ]  =  "MovedPermanently" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "ResourceMoved" ]  =  302 ]  =  "ResourceMoved" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "SeeOther" ]  =  303 ]  =  "SeeOther" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "NotModified" ]  =  304 ]  =  "NotModified" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "UseProxy" ]  =  305 ]  =  "UseProxy" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "SwitchProxy" ]  =  306 ]  =  "SwitchProxy" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "TemporaryRedirect" ]  =  307 ]  =  "TemporaryRedirect" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "PermanentRedirect" ]  =  308 ]  =  "PermanentRedirect" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "BadRequest" ]  =  400 ]  =  "BadRequest" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "Unauthorized" ]  =  401 ]  =  "Unauthorized" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "PaymentRequired" ]  =  402 ]  =  "PaymentRequired" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "Forbidden" ]  =  403 ]  =  "Forbidden" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "NotFound" ]  =  404 ]  =  "NotFound" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "MethodNotAllowed" ]  =  405 ]  =  "MethodNotAllowed" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "NotAcceptable" ]  =  406 ]  =  "NotAcceptable" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "ProxyAuthenticationRequired" ]  =  407 ]  =  "ProxyAuthenticationRequired" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "RequestTimeout" ]  =  408 ]  =  "RequestTimeout" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "Conflict" ]  =  409 ]  =  "Conflict" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "Gone" ]  =  410 ]  =  "Gone" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "TooManyRequests" ]  =  429 ]  =  "TooManyRequests" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "InternalServerError" ]  =  500 ]  =  "InternalServerError" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "NotImplemented" ]  =  501 ]  =  "NotImplemented" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "BadGateway" ]  =  502 ]  =  "BadGateway" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "ServiceUnavailable" ]  =  503 ]  =  "ServiceUnavailable" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "GatewayTimeout" ]  =  504 ]  =  "GatewayTimeout" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ( HttpCodes  =  exports . HttpCodes  ||  ( exports . HttpCodes  =  { } ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  Headers ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								( function  ( Headers )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Headers [ "Accept" ]  =  "accept" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Headers [ "ContentType" ]  =  "content-type" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ( Headers  =  exports . Headers  ||  ( exports . Headers  =  { } ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  MediaTypes ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								( function  ( MediaTypes )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MediaTypes [ "ApplicationJson" ]  =  "application/json" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ( MediaTypes  =  exports . MediaTypes  ||  ( exports . MediaTypes  =  { } ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Returns  the  proxy  URL ,  depending  upon  the  supplied  url  and  proxy  environment  variables . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  serverUrl   The  server  URL  where  the  request  will  be  sent .  For  example ,  https : //api.github.com
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getProxyUrl ( serverUrl )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  proxyUrl  =  pm . getProxyUrl ( url . parse ( serverUrl ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  proxyUrl  ?  proxyUrl . href  :  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getProxyUrl  =  getProxyUrl ;  
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  HttpRedirectCodes  =  [  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes . MovedPermanently , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes . ResourceMoved , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes . SeeOther , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes . TemporaryRedirect , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes . PermanentRedirect 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  HttpResponseRetryCodes  =  [  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes . BadGateway , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes . ServiceUnavailable , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes . GatewayTimeout 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								] ;  
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								const  RetryableHttpVerbs  =  [ 'OPTIONS' ,  'GET' ,  'DELETE' ,  'HEAD' ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  ExponentialBackoffCeiling  =  10 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  ExponentialBackoffTimeSlice  =  5 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  HttpClientResponse  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( message )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . message  =  message ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    readBody ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  new  Promise ( async  ( resolve ,  reject )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  output  =  Buffer . alloc ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . message . on ( 'data' ,  ( chunk )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                output  =  Buffer . concat ( [ output ,  chunk ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . message . on ( 'end' ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resolve ( output . toString ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . HttpClientResponse  =  HttpClientResponse ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isHttps ( requestUrl )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  parsedUrl  =  url . parse ( requestUrl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  parsedUrl . protocol  ===  'https:' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . isHttps  =  isHttps ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  HttpClient  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( userAgent ,  handlers ,  requestOptions )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _ignoreSslError  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _allowRedirects  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _allowRedirectDowngrade  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _maxRedirects  =  50 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _allowRetries  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _maxRetries  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _keepAlive  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _disposed  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . userAgent  =  userAgent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . handlers  =  handlers  ||  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . requestOptions  =  requestOptions ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( requestOptions )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( requestOptions . ignoreSslError  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _ignoreSslError  =  requestOptions . ignoreSslError ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _socketTimeout  =  requestOptions . socketTimeout ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( requestOptions . allowRedirects  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _allowRedirects  =  requestOptions . allowRedirects ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( requestOptions . allowRedirectDowngrade  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _allowRedirectDowngrade  =  requestOptions . allowRedirectDowngrade ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( requestOptions . maxRedirects  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _maxRedirects  =  Math . max ( requestOptions . maxRedirects ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( requestOptions . keepAlive  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _keepAlive  =  requestOptions . keepAlive ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( requestOptions . allowRetries  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _allowRetries  =  requestOptions . allowRetries ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( requestOptions . maxRetries  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _maxRetries  =  requestOptions . maxRetries ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    options ( requestUrl ,  additionalHeaders )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . request ( 'OPTIONS' ,  requestUrl ,  null ,  additionalHeaders  ||  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    get ( requestUrl ,  additionalHeaders )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . request ( 'GET' ,  requestUrl ,  null ,  additionalHeaders  ||  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    del ( requestUrl ,  additionalHeaders )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . request ( 'DELETE' ,  requestUrl ,  null ,  additionalHeaders  ||  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    post ( requestUrl ,  data ,  additionalHeaders )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . request ( 'POST' ,  requestUrl ,  data ,  additionalHeaders  ||  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    patch ( requestUrl ,  data ,  additionalHeaders )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . request ( 'PATCH' ,  requestUrl ,  data ,  additionalHeaders  ||  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    put ( requestUrl ,  data ,  additionalHeaders )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . request ( 'PUT' ,  requestUrl ,  data ,  additionalHeaders  ||  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    head ( requestUrl ,  additionalHeaders )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . request ( 'HEAD' ,  requestUrl ,  null ,  additionalHeaders  ||  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sendStream ( verb ,  requestUrl ,  stream ,  additionalHeaders )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . request ( verb ,  requestUrl ,  stream ,  additionalHeaders ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Gets  a  typed  object  from  an  endpoint 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Be  aware  that  not  found  returns  a  null .   Other  errors  ( 4 xx ,  5 xx )  reject  the  promise 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    async  getJson ( requestUrl ,  additionalHeaders  =  { } )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        additionalHeaders [ Headers . Accept ]  =  this . _getExistingOrDefaultHeader ( additionalHeaders ,  Headers . Accept ,  MediaTypes . ApplicationJson ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  res  =  await  this . get ( requestUrl ,  additionalHeaders ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . _processResponse ( res ,  this . requestOptions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    async  postJson ( requestUrl ,  obj ,  additionalHeaders  =  { } )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  data  =  JSON . stringify ( obj ,  null ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        additionalHeaders [ Headers . Accept ]  =  this . _getExistingOrDefaultHeader ( additionalHeaders ,  Headers . Accept ,  MediaTypes . ApplicationJson ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        additionalHeaders [ Headers . ContentType ]  =  this . _getExistingOrDefaultHeader ( additionalHeaders ,  Headers . ContentType ,  MediaTypes . ApplicationJson ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  res  =  await  this . post ( requestUrl ,  data ,  additionalHeaders ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . _processResponse ( res ,  this . requestOptions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    async  putJson ( requestUrl ,  obj ,  additionalHeaders  =  { } )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  data  =  JSON . stringify ( obj ,  null ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        additionalHeaders [ Headers . Accept ]  =  this . _getExistingOrDefaultHeader ( additionalHeaders ,  Headers . Accept ,  MediaTypes . ApplicationJson ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        additionalHeaders [ Headers . ContentType ]  =  this . _getExistingOrDefaultHeader ( additionalHeaders ,  Headers . ContentType ,  MediaTypes . ApplicationJson ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  res  =  await  this . put ( requestUrl ,  data ,  additionalHeaders ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . _processResponse ( res ,  this . requestOptions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    async  patchJson ( requestUrl ,  obj ,  additionalHeaders  =  { } )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  data  =  JSON . stringify ( obj ,  null ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        additionalHeaders [ Headers . Accept ]  =  this . _getExistingOrDefaultHeader ( additionalHeaders ,  Headers . Accept ,  MediaTypes . ApplicationJson ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        additionalHeaders [ Headers . ContentType ]  =  this . _getExistingOrDefaultHeader ( additionalHeaders ,  Headers . ContentType ,  MediaTypes . ApplicationJson ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  res  =  await  this . patch ( requestUrl ,  data ,  additionalHeaders ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . _processResponse ( res ,  this . requestOptions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Makes  a  raw  http  request . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  All  other  methods  such  as  get ,  post ,  patch ,  and  request  ultimately  call  this . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Prefer  get ,  del ,  post  and  patch 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    async  request ( verb ,  requestUrl ,  data ,  headers )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _disposed )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            throw  new  Error ( 'Client has already been disposed.' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  parsedUrl  =  url . parse ( requestUrl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  info  =  this . _prepareRequest ( verb ,  parsedUrl ,  headers ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Only perform retries on reads since writes may not be idempotent.
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        let  maxTries  =  this . _allowRetries  &&  RetryableHttpVerbs . indexOf ( verb )  !=  - 1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ?  this . _maxRetries  +  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            :  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        let  numTries  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  response ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        while  ( numTries  <  maxTries )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            response  =  await  this . requestRaw ( info ,  data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Check if it's an authentication challenge
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( response  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                response . message  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                response . message . statusCode  ===  HttpCodes . Unauthorized )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                let  authenticationHandler ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for  ( let  i  =  0 ;  i  <  this . handlers . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( this . handlers [ i ] . canHandleAuthentication ( response ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        authenticationHandler  =  this . handlers [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( authenticationHandler )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  authenticationHandler . handleAuthentication ( this ,  info ,  data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // We have received an unauthorized response but have no handlers to handle it.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Let the response return to the caller.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  response ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  redirectsRemaining  =  this . _maxRedirects ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            while  ( HttpRedirectCodes . indexOf ( response . message . statusCode )  !=  - 1  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _allowRedirects  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                redirectsRemaining  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  redirectUrl  =  response . message . headers [ 'location' ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                if  ( ! redirectUrl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // if there's no location to redirect to, we won't
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  parsedRedirectUrl  =  url . parse ( redirectUrl ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( parsedUrl . protocol  ==  'https:'  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    parsedUrl . protocol  !=  parsedRedirectUrl . protocol  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ! this . _allowRedirectDowngrade )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    throw  new  Error ( 'Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // we need to finish reading the response before reassigning response
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // which will leak the open socket.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                await  response . readBody ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                // strip authorization header if redirected to a different hostname
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( parsedRedirectUrl . hostname  !==  parsedUrl . hostname )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    for  ( let  header  in  headers )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        // header names are case insensitive
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if  ( header . toLowerCase ( )  ===  'authorization' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            delete  headers [ header ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                // let's make the request with the new redirectUrl
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                info  =  this . _prepareRequest ( verb ,  parsedRedirectUrl ,  headers ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                response  =  await  this . requestRaw ( info ,  data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                redirectsRemaining -- ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( HttpResponseRetryCodes . indexOf ( response . message . statusCode )  ==  - 1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // If not a retry code, return immediately instead of retrying
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  response ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            numTries  +=  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( numTries  <  maxTries )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                await  response . readBody ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                await  this . _performExponentialBackoff ( numTries ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  response ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Needs  to  be  called  if  keepAlive  is  set  to  true  in  request  options . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _agent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _agent . destroy ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _disposed  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Raw  request . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  info 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    requestRaw ( info ,  data )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  new  Promise ( ( resolve ,  reject )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  callbackForResult  =  function  ( err ,  res )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    reject ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resolve ( res ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . requestRawWithCallback ( info ,  data ,  callbackForResult ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Raw  request  with  callback . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  info 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  onResult 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    requestRawWithCallback ( info ,  data ,  onResult )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  socket ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof  data  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            info . options . headers [ 'Content-Length' ]  =  Buffer . byteLength ( data ,  'utf8' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  callbackCalled  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  handleResult  =  ( err ,  res )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! callbackCalled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                callbackCalled  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                onResult ( err ,  res ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  req  =  info . httpModule . request ( info . options ,  ( msg )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  res  =  new  HttpClientResponse ( msg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            handleResult ( null ,  res ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        req . on ( 'socket' ,  sock  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            socket  =  sock ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // If we ever get disconnected, we want the socket to timeout eventually
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        req . setTimeout ( this . _socketTimeout  ||  3  *  60000 ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( socket )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                socket . end ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            handleResult ( new  Error ( 'Request timeout: '  +  info . options . path ) ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        req . on ( 'error' ,  function  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // err has statusCode property
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // res should have headers
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            handleResult ( err ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( data  &&  typeof  data  ===  'string' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            req . write ( data ,  'utf8' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( data  &&  typeof  data  !==  'string' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            data . on ( 'close' ,  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                req . end ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            data . pipe ( req ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            req . end ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Gets  an  http  agent .  This  function  is  useful  when  you  need  an  http  agent  that  handles 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  routing  through  a  proxy  server  -  depending  upon  the  url  and  proxy  environment  variables . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  serverUrl   The  server  URL  where  the  request  will  be  sent .  For  example ,  https : //api.github.com
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getAgent ( serverUrl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  parsedUrl  =  url . parse ( serverUrl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . _getAgent ( parsedUrl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _prepareRequest ( method ,  requestUrl ,  headers )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  info  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        info . parsedUrl  =  requestUrl ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  usingSsl  =  info . parsedUrl . protocol  ===  'https:' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        info . httpModule  =  usingSsl  ?  https  :  http ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  defaultPort  =  usingSsl  ?  443  :  80 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        info . options  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        info . options . host  =  info . parsedUrl . hostname ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        info . options . port  =  info . parsedUrl . port 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ?  parseInt ( info . parsedUrl . port ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            :  defaultPort ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        info . options . path  = 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ( info . parsedUrl . pathname  ||  '' )  +  ( info . parsedUrl . search  ||  '' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        info . options . method  =  method ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        info . options . headers  =  this . _mergeHeaders ( headers ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . userAgent  !=  null )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            info . options . headers [ 'user-agent' ]  =  this . userAgent ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        info . options . agent  =  this . _getAgent ( info . parsedUrl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // gives handlers an opportunity to participate
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . handlers )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            this . handlers . forEach ( handler  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                handler . prepareRequest ( info . options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  info ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _mergeHeaders ( headers )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  lowercaseKeys  =  obj  =>  Object . keys ( obj ) . reduce ( ( c ,  k )  =>  ( ( c [ k . toLowerCase ( ) ]  =  obj [ k ] ) ,  c ) ,  { } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        if  ( this . requestOptions  &&  this . requestOptions . headers )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  Object . assign ( { } ,  lowercaseKeys ( this . requestOptions . headers ) ,  lowercaseKeys ( headers ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  lowercaseKeys ( headers  ||  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getExistingOrDefaultHeader ( additionalHeaders ,  header ,  _default )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  lowercaseKeys  =  obj  =>  Object . keys ( obj ) . reduce ( ( c ,  k )  =>  ( ( c [ k . toLowerCase ( ) ]  =  obj [ k ] ) ,  c ) ,  { } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        let  clientHeader ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . requestOptions  &&  this . requestOptions . headers )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            clientHeader  =  lowercaseKeys ( this . requestOptions . headers ) [ header ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  additionalHeaders [ header ]  ||  clientHeader  ||  _default ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getAgent ( parsedUrl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  proxyUrl  =  pm . getProxyUrl ( parsedUrl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  useProxy  =  proxyUrl  &&  proxyUrl . hostname ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _keepAlive  &&  useProxy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            agent  =  this . _proxyAgent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _keepAlive  &&  ! useProxy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            agent  =  this . _agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // if agent is already assigned use that agent.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! ! agent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  usingSsl  =  parsedUrl . protocol  ===  'https:' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  maxSockets  =  100 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! ! this . requestOptions )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            maxSockets  =  this . requestOptions . maxSockets  ||  http . globalAgent . maxSockets ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( useProxy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // If using proxy, need tunnel
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! tunnel )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                tunnel  =  _ _webpack _require _ _ ( 413 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  agentOptions  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                maxSockets :  maxSockets , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                keepAlive :  this . _keepAlive , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                proxy :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    proxyAuth :  proxyUrl . auth , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    host :  proxyUrl . hostname , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    port :  proxyUrl . port 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  tunnelAgent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  overHttps  =  proxyUrl . protocol  ===  'https:' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( usingSsl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                tunnelAgent  =  overHttps  ?  tunnel . httpsOverHttps  :  tunnel . httpsOverHttp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                tunnelAgent  =  overHttps  ?  tunnel . httpOverHttps  :  tunnel . httpOverHttp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            agent  =  tunnelAgent ( agentOptions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _proxyAgent  =  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // if reusing agent across request and tunneling agent isn't assigned create a new agent
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _keepAlive  &&  ! agent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  options  =  {  keepAlive :  this . _keepAlive ,  maxSockets :  maxSockets  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            agent  =  usingSsl  ?  new  https . Agent ( options )  :  new  http . Agent ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _agent  =  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // if not using private agent and tunnel agent isn't setup then use global agent
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! agent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            agent  =  usingSsl  ?  https . globalAgent  :  http . globalAgent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( usingSsl  &&  this . _ignoreSslError )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // we have to cast it to any and change it directly
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            agent . options  =  Object . assign ( agent . options  ||  { } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                rejectUnauthorized :  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _performExponentialBackoff ( retryNumber )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        retryNumber  =  Math . min ( ExponentialBackoffCeiling ,  retryNumber ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  ms  =  ExponentialBackoffTimeSlice  *  Math . pow ( 2 ,  retryNumber ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  new  Promise ( resolve  =>  setTimeout ( ( )  =>  resolve ( ) ,  ms ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  dateTimeDeserializer ( key ,  value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( typeof  value  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  a  =  new  Date ( value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! isNaN ( a . valueOf ( ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  a ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    async  _processResponse ( res ,  options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  new  Promise ( async  ( resolve ,  reject )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  statusCode  =  res . message . statusCode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  response  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                statusCode :  statusCode , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                result :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                headers :  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // not found leads to null obj returned
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( statusCode  ==  HttpCodes . NotFound )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resolve ( response ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  obj ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  contents ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // get the result from the body
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                contents  =  await  res . readBody ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( contents  &&  contents . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( options  &&  options . deserializeDates )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        obj  =  JSON . parse ( contents ,  HttpClient . dateTimeDeserializer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        obj  =  JSON . parse ( contents ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    response . result  =  obj ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                response . headers  =  res . message . headers ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Invalid resource (contents not json);  leaving result obj null
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // note that 3xx redirects are handled by the http layer.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( statusCode  >  299 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  msg ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // if exception/error in body, attempt to get better error
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( obj  &&  obj . message )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    msg  =  obj . message ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  if  ( contents  &&  contents . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // it may be the case that the exception is in the body message as string
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    msg  =  contents ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    msg  =  'Failed request: ('  +  statusCode  +  ')' ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  err  =  new  Error ( msg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // attach statusCode and body obj (if available) to the error object
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                err [ 'statusCode' ]  =  statusCode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( response . result )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    err [ 'result' ]  =  response . result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                reject ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resolve ( response ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . HttpClient  =  HttpClient ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  569 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module ,  _ _unusedexports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  rimraf  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								rimraf . sync  =  rimrafSync  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  assert  =  _ _webpack _require _ _ ( 357 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  path  =  _ _webpack _require _ _ ( 622 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  fs  =  _ _webpack _require _ _ ( 747 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  glob  =  _ _webpack _require _ _ ( 120 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _0666  =  parseInt ( '666' ,  8 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  defaultGlobOpts  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  nosort :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  silent :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// for EMFILE handling
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  timeout  =  0  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  isWindows  =  ( process . platform  ===  "win32" )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  defaults  ( options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  methods  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    'unlink' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    'chmod' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    'stat' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    'lstat' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    'rmdir' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    'readdir' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  methods . forEach ( function ( m )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    options [ m ]  =  options [ m ]  ||  fs [ m ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    m  =  m  +  'Sync' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    options [ m ]  =  options [ m ]  ||  fs [ m ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options . maxBusyTries  =  options . maxBusyTries  ||  3 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options . emfileWait  =  options . emfileWait  ||  1000 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( options . glob  ===  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    options . disableGlob  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options . disableGlob  =  options . disableGlob  ||  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options . glob  =  options . glob  ||  defaultGlobOpts 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  rimraf  ( p ,  options ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  options  ===  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cb  =  options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    options  =  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( p ,  'rimraf: missing path' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert . equal ( typeof  p ,  'string' ,  'rimraf: path should be a string' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert . equal ( typeof  cb ,  'function' ,  'rimraf: callback function required' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( options ,  'rimraf: invalid options argument provided' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert . equal ( typeof  options ,  'object' ,  'rimraf: options should be object' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  defaults ( options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  busyTries  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  errState  =  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  n  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( options . disableGlob  ||  ! glob . hasMagic ( p ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  afterGlob ( null ,  [ p ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options . lstat ( p ,  function  ( er ,  stat )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  afterGlob ( null ,  [ p ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    glob ( p ,  options . glob ,  afterGlob ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  next  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    errState  =  errState  ||  er 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( -- n  ===  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      cb ( errState ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  afterGlob  ( er ,  results )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  cb ( er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    n  =  results . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( n  ===  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  cb ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    results . forEach ( function  ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      rimraf _ ( p ,  options ,  function  CB  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( ( er . code  ===  "EBUSY"  ||  er . code  ===  "ENOTEMPTY"  ||  er . code  ===  "EPERM" )  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              busyTries  <  options . maxBusyTries )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            busyTries  ++ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            var  time  =  busyTries  *  100 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // try again, with the same exact callback as this one.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  setTimeout ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              rimraf _ ( p ,  options ,  CB ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ,  time ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // this one won't happen if graceful-fs is used.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( er . code  ===  "EMFILE"  &&  timeout  <  options . emfileWait )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  setTimeout ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              rimraf _ ( p ,  options ,  CB ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ,  timeout  ++ ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // already gone
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( er . code  ===  "ENOENT" )  er  =  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        timeout  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        next ( er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Two possible strategies.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 1. Assume it's a file.  unlink it, then do the dir stuff on EPERM or EISDIR
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 2. Assume it's a directory.  readdir, then do the file stuff on ENOTDIR
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Both result in an extra syscall when you guess wrong.  However, there
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// are likely far more normal files in the world than directories.  This
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// is based on the assumption that a the average number of files per
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// directory is >= 1.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// If anyone ever complains about this, then I guess the strategy could
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// be made configurable somehow.  But until then, YAGNI.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  rimraf _  ( p ,  options ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( typeof  cb  ===  'function' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // sunos lets the root user unlink directories, which is... weird.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // so we have to lstat here and make sure it's not a dir.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options . lstat ( p ,  function  ( er ,  st )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( er  &&  er . code  ===  "ENOENT" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  cb ( null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Windows can EPERM on stat.  Life is suffering.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( er  &&  er . code  ===  "EPERM"  &&  isWindows ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fixWinEPERM ( p ,  options ,  er ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( st  &&  st . isDirectory ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  rmdir ( p ,  options ,  er ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    options . unlink ( p ,  function  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( er . code  ===  "ENOENT" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  cb ( null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( er . code  ===  "EPERM" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  ( isWindows ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ?  fixWinEPERM ( p ,  options ,  er ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            :  rmdir ( p ,  options ,  er ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( er . code  ===  "EISDIR" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  rmdir ( p ,  options ,  er ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  cb ( er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  fixWinEPERM  ( p ,  options ,  er ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( typeof  cb  ===  'function' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert ( er  instanceof  Error ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options . chmod ( p ,  _0666 ,  function  ( er2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( er2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      cb ( er2 . code  ===  "ENOENT"  ?  null  :  er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      options . stat ( p ,  function ( er3 ,  stats )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( er3 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          cb ( er3 . code  ===  "ENOENT"  ?  null  :  er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  if  ( stats . isDirectory ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          rmdir ( p ,  options ,  er ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          options . unlink ( p ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  fixWinEPERMSync  ( p ,  options ,  er )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert ( er  instanceof  Error ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    options . chmodSync ( p ,  _0666 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( er2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( er2 . code  ===  "ENOENT" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      throw  er 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  stats  =  options . statSync ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( er3 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( er3 . code  ===  "ENOENT" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      throw  er 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( stats . isDirectory ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rmdirSync ( p ,  options ,  er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    options . unlinkSync ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  rmdir  ( p ,  options ,  originalEr ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( originalEr ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert ( originalEr  instanceof  Error ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( typeof  cb  ===  'function' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // if we guessed wrong, and it's not a directory, then
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // raise the original error.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options . rmdir ( p ,  function  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( er  &&  ( er . code  ===  "ENOTEMPTY"  ||  er . code  ===  "EEXIST"  ||  er . code  ===  "EPERM" ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      rmkids ( p ,  options ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  if  ( er  &&  er . code  ===  "ENOTDIR" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      cb ( originalEr ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      cb ( er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  rmkids ( p ,  options ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( typeof  cb  ===  'function' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options . readdir ( p ,  function  ( er ,  files )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  cb ( er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  n  =  files . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( n  ===  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  options . rmdir ( p ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  errState 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    files . forEach ( function  ( f )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      rimraf ( path . join ( p ,  f ) ,  options ,  function  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( errState ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  cb ( errState  =  er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( -- n  ===  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          options . rmdir ( p ,  cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// this looks simpler, and is strictly *faster*, but will
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// tie up the JavaScript thread and fail on excessively
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// deep directory trees.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  rimrafSync  ( p ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options  =  options  ||  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  defaults ( options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( p ,  'rimraf: missing path' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert . equal ( typeof  p ,  'string' ,  'rimraf: path should be a string' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( options ,  'rimraf: missing options' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert . equal ( typeof  options ,  'object' ,  'rimraf: options should be object' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  results 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( options . disableGlob  ||  ! glob . hasMagic ( p ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    results  =  [ p ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      options . lstatSync ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      results  =  [ p ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  catch  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      results  =  glob . sync ( p ,  options . glob ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! results . length ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  results . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  p  =  results [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  st  =  options . lstatSync ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  catch  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( er . code  ===  "ENOENT" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // Windows can EPERM on stat.  Life is suffering.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( er . code  ===  "EPERM"  &&  isWindows ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fixWinEPERMSync ( p ,  options ,  er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // sunos lets the root user unlink directories, which is... weird.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( st  &&  st . isDirectory ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        rmdirSync ( p ,  options ,  null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        options . unlinkSync ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  catch  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( er . code  ===  "ENOENT" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( er . code  ===  "EPERM" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  isWindows  ?  fixWinEPERMSync ( p ,  options ,  er )  :  rmdirSync ( p ,  options ,  er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( er . code  !==  "EISDIR" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  er 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      rmdirSync ( p ,  options ,  er ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  rmdirSync  ( p ,  options ,  originalEr )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( originalEr ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert ( originalEr  instanceof  Error ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    options . rmdirSync ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( er )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( er . code  ===  "ENOENT" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( er . code  ===  "ENOTDIR" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      throw  originalEr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( er . code  ===  "ENOTEMPTY"  ||  er . code  ===  "EEXIST"  ||  er . code  ===  "EPERM" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      rmkidsSync ( p ,  options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  rmkidsSync  ( p ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options . readdirSync ( p ) . forEach ( function  ( f )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rimrafSync ( path . join ( p ,  f ) ,  options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // We only end up here once we got ENOTEMPTY at least once, and
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // at this point, we are guaranteed to have removed all the kids.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // So, we know that it won't be ENOENT or ENOTDIR or anything else.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // try really hard to delete stuff on windows, because it has a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // PROFOUNDLY annoying habit of not closing handles promptly when
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // files are deleted, resulting in spurious ENOTEMPTY errors.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  retries  =  isWindows  ?  100  :  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  i  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  do  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  threw  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  ret  =  options . rmdirSync ( p ,  options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      threw  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  ret 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ++ i  <  retries  &&  threw ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  while  ( true ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  575 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _importStar  =  ( this  &&  this . _ _importStar )  ||  function  ( mod )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  &&  mod . _ _esModule )  return  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  !=  null )  for  ( var  k  in  mod )  if  ( Object . hasOwnProperty . call ( mod ,  k ) )  result [ k ]  =  mod [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ "default" ]  =  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  glob  =  _ _importStar ( _ _webpack _require _ _ ( 281 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  core _1  =  _ _webpack _require _ _ ( 470 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  fs _1  =  _ _webpack _require _ _ ( 747 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  path _1  =  _ _webpack _require _ _ ( 622 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getDefaultGlobOptions ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        followSymbolicLinks :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        implicitDescendants :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        omitBrokenSymbolicLinks :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  findFilesToUpload ( searchPath ,  globOptions )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  searchResults  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  globber  =  yield  glob . create ( searchPath ,  globOptions  ||  getDefaultGlobOptions ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  rawSearchResults  =  yield  globber . glob ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        / * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          Directories  will  be  rejected  if  attempted  to  be  uploaded .  This  includes  just  empty 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          directories  so  filter  any  directories  out  from  the  raw  search  results 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( const  searchResult  of  rawSearchResults )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! fs _1 . lstatSync ( searchResult ) . isDirectory ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core _1 . debug ( ` File: ${ searchResult }  was found using the provided searchPath ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                searchResults . push ( searchResult ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core _1 . debug ( ` Removing  ${ searchResult }  from rawSearchResults because it is a directory ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        / * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          Only  a  single  search  pattern  is  being  included  so  only  1  searchResult  is  expected .  In  the  future  if  multiple  search  patterns  are 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          simultaneously  supported  this  will  change 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  searchPaths  =  globber . getSearchPaths ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( searchPaths . length  >  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( 'Only 1 search path should be returned' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        / * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          Special  case  for  a  single  file  artifact  that  is  uploaded  without  a  directory  or  wildcard  pattern .  The  directory  structure  is 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          not  preserved  and  the  root  directory  will  be  the  single  files  parent  directory 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( searchResults . length  ===  1  &&  searchPaths [ 0 ]  ===  searchResults [ 0 ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                filesToUpload :  searchResults , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                rootDirectory :  path _1 . dirname ( searchResults [ 0 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            filesToUpload :  searchResults , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            rootDirectory :  searchPaths [ 0 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . findFilesToUpload  =  findFilesToUpload ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  590 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _importStar  =  ( this  &&  this . _ _importStar )  ||  function  ( mod )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  &&  mod . _ _esModule )  return  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  !=  null )  for  ( var  k  in  mod )  if  ( Object . hasOwnProperty . call ( mod ,  k ) )  result [ k ]  =  mod [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ "default" ]  =  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  fs  =  _ _importStar ( _ _webpack _require _ _ ( 747 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  core _1  =  _ _webpack _require _ _ ( 470 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  path _1  =  _ _webpack _require _ _ ( 622 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  utils _1  =  _ _webpack _require _ _ ( 870 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Creates  a  specification  that  describes  how  each  file  that  is  part  of  the  artifact  will  be  uploaded 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  artifactName  the  name  of  the  artifact  being  uploaded .  Used  during  upload  to  denote  where  the  artifact  is  stored  on  the  server 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  rootDirectory  an  absolute  file  path  that  denotes  the  path  that  should  be  removed  from  the  beginning  of  each  artifact  file 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  artifactFiles  a  list  of  absolute  file  paths  that  denote  what  should  be  uploaded  as  part  of  the  artifact 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getUploadSpecification ( artifactName ,  rootDirectory ,  artifactFiles )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    utils _1 . checkArtifactName ( artifactName ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  specifications  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! fs . existsSync ( rootDirectory ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  Error ( ` Provided rootDirectory  ${ rootDirectory }  does not exist ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! fs . lstatSync ( rootDirectory ) . isDirectory ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  Error ( ` Provided rootDirectory  ${ rootDirectory }  is not a valid directory ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Normalize and resolve, this allows for either absolute or relative paths to be used
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rootDirectory  =  path _1 . normalize ( rootDirectory ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rootDirectory  =  path _1 . resolve ( rootDirectory ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       Example  to  demonstrate  behavior 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       Input : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         artifactName :  my - artifact 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         rootDirectory :  '/home/user/files/plz-upload' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         artifactFiles :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           '/home/user/files/plz-upload/file1.txt' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           '/home/user/files/plz-upload/file2.txt' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           '/home/user/files/plz-upload/dir/file3.txt' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       Output : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         specifications :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           [ '/home/user/files/plz-upload/file1.txt' ,  'my-artifact/file1.txt' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           [ '/home/user/files/plz-upload/file1.txt' ,  'my-artifact/file2.txt' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           [ '/home/user/files/plz-upload/file1.txt' ,  'my-artifact/dir/file3.txt' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( let  file  of  artifactFiles )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! fs . existsSync ( file ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( ` File  ${ file }  does not exist ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! fs . lstatSync ( file ) . isDirectory ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Normalize and resolve, this allows for either absolute or relative paths to be used
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            file  =  path _1 . normalize ( file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            file  =  path _1 . resolve ( file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! file . startsWith ( rootDirectory ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  Error ( ` The rootDirectory:  ${ rootDirectory }  is not a parent directory of the file:  ${ file } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Check for forbidden characters in file paths that will be rejected during upload
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  uploadPath  =  file . replace ( rootDirectory ,  '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            utils _1 . checkArtifactFilePath ( uploadPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            / * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              uploadFilePath  denotes  where  the  file  will  be  uploaded  in  the  file  container  on  the  server .  During  a  run ,  if  multiple  artifacts  are  uploaded ,  they  will  all 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              be  saved  in  the  same  container .  The  artifact  name  is  used  as  the  root  directory  in  the  container  to  separate  and  distinguish  uploaded  artifacts 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              path . join  handles  all  the  following  cases  and  would  return  ' artifact - name / file - to - upload . txt 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                join ( 'artifact-name/' ,  'file-to-upload.txt' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                join ( 'artifact-name/' ,  '/file-to-upload.txt' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                join ( 'artifact-name' ,  'file-to-upload.txt' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                join ( 'artifact-name' ,  '/file-to-upload.txt' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            specifications . push ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                absoluteFilePath :  file , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                uploadFilePath :  path _1 . join ( artifactName ,  uploadPath ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Directories are rejected by the server during upload
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core _1 . debug ( ` Removing  ${ file }  from rawSearchResults because it is a directory ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  specifications ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getUploadSpecification  =  getUploadSpecification ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=upload-specification.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  597 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  pathHelper  =  _ _webpack _require _ _ ( 972 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  internal _match _kind _1  =  _ _webpack _require _ _ ( 327 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  IS _WINDOWS  =  process . platform  ===  'win32' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Given  an  array  of  patterns ,  returns  an  array  of  paths  to  search . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Duplicates  and  paths  under  other  included  paths  are  filtered  out . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getSearchPaths ( patterns )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Ignore negate patterns
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    patterns  =  patterns . filter ( x  =>  ! x . negate ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Create a map of all search paths
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  searchPathMap  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( const  pattern  of  patterns )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  key  =  IS _WINDOWS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ?  pattern . searchPath . toUpperCase ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            :  pattern . searchPath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        searchPathMap [ key ]  =  'candidate' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  result  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( const  pattern  of  patterns )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Check if already included
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  key  =  IS _WINDOWS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ?  pattern . searchPath . toUpperCase ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            :  pattern . searchPath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( searchPathMap [ key ]  ===  'included' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Check for an ancestor search path
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  foundAncestor  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  tempKey  =  key ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  parent  =  pathHelper . dirname ( tempKey ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        while  ( parent  !==  tempKey )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( searchPathMap [ parent ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                foundAncestor  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            tempKey  =  parent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            parent  =  pathHelper . dirname ( tempKey ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Include the search pattern in the result
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! foundAncestor )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            result . push ( pattern . searchPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            searchPathMap [ key ]  =  'included' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getSearchPaths  =  getSearchPaths ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Matches  the  patterns  against  the  path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  match ( patterns ,  itemPath )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  result  =  internal _match _kind _1 . MatchKind . None ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( const  pattern  of  patterns )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( pattern . negate )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            result  &=  ~ pattern . match ( itemPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            result  |=  pattern . match ( itemPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . match  =  match ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Checks  whether  to  descend  further  into  the  directory 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  partialMatch ( patterns ,  itemPath )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  patterns . some ( x  =>  ! x . negate  &&  x . partialMatch ( itemPath ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . partialMatch  =  partialMatch ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=internal-pattern-helper.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  601 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  core  =  _ _webpack _require _ _ ( 470 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Returns  a  copy  with  defaults  filled  in . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getOptions ( copy )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  result  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        followSymbolicLinks :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        implicitDescendants :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        omitBrokenSymbolicLinks :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( copy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( typeof  copy . followSymbolicLinks  ===  'boolean' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            result . followSymbolicLinks  =  copy . followSymbolicLinks ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core . debug ( ` followSymbolicLinks ' ${ result . followSymbolicLinks } ' ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( typeof  copy . implicitDescendants  ===  'boolean' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            result . implicitDescendants  =  copy . implicitDescendants ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core . debug ( ` implicitDescendants ' ${ result . implicitDescendants } ' ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( typeof  copy . omitBrokenSymbolicLinks  ===  'boolean' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            result . omitBrokenSymbolicLinks  =  copy . omitBrokenSymbolicLinks ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core . debug ( ` omitBrokenSymbolicLinks ' ${ result . omitBrokenSymbolicLinks } ' ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getOptions  =  getOptions ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=internal-glob-options-helper.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  605 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "http" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  608 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _importStar  =  ( this  &&  this . _ _importStar )  ||  function  ( mod )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  &&  mod . _ _esModule )  return  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  !=  null )  for  ( var  k  in  mod )  if  ( Object . hasOwnProperty . call ( mod ,  k ) )  result [ k ]  =  mod [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ "default" ]  =  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  fs  =  _ _importStar ( _ _webpack _require _ _ ( 747 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  core  =  _ _importStar ( _ _webpack _require _ _ ( 470 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  tmp  =  _ _importStar ( _ _webpack _require _ _ ( 875 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  stream  =  _ _importStar ( _ _webpack _require _ _ ( 794 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  utils _1  =  _ _webpack _require _ _ ( 870 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  config _variables _1  =  _ _webpack _require _ _ ( 401 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  util _1  =  _ _webpack _require _ _ ( 669 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  url _1  =  _ _webpack _require _ _ ( 835 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  perf _hooks _1  =  _ _webpack _require _ _ ( 630 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  status _reporter _1  =  _ _webpack _require _ _ ( 176 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  http _manager _1  =  _ _webpack _require _ _ ( 452 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  upload _gzip _1  =  _ _webpack _require _ _ ( 647 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  stat  =  util _1 . promisify ( fs . stat ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  UploadHttpClient  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . uploadHttpManager  =  new  http _manager _1 . HttpManager ( config _variables _1 . getUploadFileConcurrency ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . statusReporter  =  new  status _reporter _1 . StatusReporter ( 10000 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Creates  a  file  container  for  the  new  artifact  in  the  remote  blob  storage / file  service 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  { string }  artifactName  Name  of  the  artifact  being  created 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ returns  The  response  from  the  Artifact  Service  if  the  file  container  was  successfully  created 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    createArtifactInFileContainer ( artifactName )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  parameters  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                Type :  'actions_storage' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                Name :  artifactName 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  data  =  JSON . stringify ( parameters ,  null ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  artifactUrl  =  utils _1 . getArtifactUrl ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // use the first client from the httpManager, `keep-alive` is not used so the connection will close immediately
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  client  =  this . uploadHttpManager . getClient ( 0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            const  headers  =  utils _1 . getUploadHeaders ( 'application/json' ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  rawResponse  =  yield  client . post ( artifactUrl ,  data ,  headers ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            const  body  =  yield  rawResponse . readBody ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( utils _1 . isSuccessStatusCode ( rawResponse . message . statusCode )  &&  body )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  JSON . parse ( body ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( utils _1 . isForbiddenStatusCode ( rawResponse . message . statusCode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // if a 403 is returned when trying to create a file container, the customer has exceeded
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // their storage quota so no new artifact containers can be created
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  Error ( ` Artifact storage quota has been hit. Unable to upload any new artifacts ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                utils _1 . displayHttpDiagnostics ( rawResponse ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  Error ( ` Unable to create a container for the artifact  ${ artifactName }  at  ${ artifactUrl } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Concurrently  upload  all  of  the  files  in  chunks 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  { string }  uploadUrl  Base  Url  for  the  artifact  that  was  created 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  { SearchResult [ ] }  filesToUpload  A  list  of  information  about  the  files  being  uploaded 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ returns  The  size  of  all  the  files  uploaded  in  bytes 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    uploadArtifactToFileContainer ( uploadUrl ,  filesToUpload ,  options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  FILE _CONCURRENCY  =  config _variables _1 . getUploadFileConcurrency ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  MAX _CHUNK _SIZE  =  config _variables _1 . getUploadChunkSize ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core . debug ( ` File Concurrency:  ${ FILE _CONCURRENCY } , and Chunk Size:  ${ MAX _CHUNK _SIZE } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  parameters  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // by default, file uploads will continue if there is an error unless specified differently in the options
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  continueOnError  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( options . continueOnError  ===  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    continueOnError  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // prepare the necessary parameters to upload all the files
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            for  ( const  file  of  filesToUpload )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  resourceUrl  =  new  url _1 . URL ( uploadUrl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resourceUrl . searchParams . append ( 'itemPath' ,  file . uploadFilePath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                parameters . push ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    file :  file . absoluteFilePath , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    resourceUrl :  resourceUrl . toString ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    maxChunkSize :  MAX _CHUNK _SIZE , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    continueOnError 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  parallelUploads  =  [ ... new  Array ( FILE _CONCURRENCY ) . keys ( ) ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  failedItemsToReport  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  currentFile  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  completedFiles  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  uploadFileSize  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  totalFileSize  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  abortPendingFileUploads  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . statusReporter . setTotalNumberOfFilesToProcess ( filesToUpload . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . statusReporter . start ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // only allow a certain amount of files to be uploaded at once, this is done to reduce potential errors
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            yield  Promise . all ( parallelUploads . map ( ( index )  =>  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                while  ( currentFile  <  filesToUpload . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  currentFileParameters  =  parameters [ currentFile ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    currentFile  +=  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( abortPendingFileUploads )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        failedItemsToReport . push ( currentFileParameters . file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  startTime  =  perf _hooks _1 . performance . now ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  uploadFileResult  =  yield  this . uploadFileAsync ( index ,  currentFileParameters ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( core . isDebug ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        core . debug ( ` File:  ${ ++ completedFiles } / ${ filesToUpload . length } .  ${ currentFileParameters . file }  took  ${ ( perf _hooks _1 . performance . now ( )  -  startTime ) . toFixed ( 3 ) }  milliseconds to finish upload ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    uploadFileSize  +=  uploadFileResult . successfulUploadSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    totalFileSize  +=  uploadFileResult . totalSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( uploadFileResult . isSuccess  ===  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        failedItemsToReport . push ( currentFileParameters . file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if  ( ! continueOnError )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            // fail fast
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            core . error ( ` aborting artifact upload ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            abortPendingFileUploads  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    this . statusReporter . incrementProcessedCount ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . statusReporter . stop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // done uploading, safety dispose all connections
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . uploadHttpManager . disposeAndReplaceAllClients ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core . info ( ` Total size of all the files uploaded is  ${ uploadFileSize }  bytes ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                uploadSize :  uploadFileSize , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                totalSize :  totalFileSize , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                failedItems :  failedItemsToReport 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Asynchronously  uploads  a  file .  The  file  is  compressed  and  uploaded  using  GZip  if  it  is  determined  to  save  space . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  If  the  upload  file  is  bigger  than  the  max  chunk  size  it  will  be  uploaded  via  multiple  calls 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  { number }  httpClientIndex  The  index  of  the  httpClient  that  is  being  used  to  make  all  of  the  calls 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  { UploadFileParameters }  parameters  Information  about  the  file  that  needs  to  be  uploaded 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ returns  The  size  of  the  file  that  was  uploaded  in  bytes  along  with  any  failed  uploads 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    uploadFileAsync ( httpClientIndex ,  parameters )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  totalFileSize  =  ( yield  stat ( parameters . file ) ) . size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  offset  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  isUploadSuccessful  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  failedChunkSizes  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  uploadFileSize  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  isGzip  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // the file that is being uploaded is less than 64k in size, to increase throughput and to minimize disk I/O
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // for creating a new GZip file, an in-memory buffer is used for compression
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( totalFileSize  <  65536 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  buffer  =  yield  upload _gzip _1 . createGZipFileInBuffer ( parameters . file ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                //An open stream is needed in the event of a failure and we need to retry. If a NodeJS.ReadableStream is directly passed in,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // it will not properly get reset to the start of the stream if a chunk upload needs to be retried
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  openUploadStream ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                if  ( totalFileSize  <  buffer . byteLength )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // compression did not help with reducing the size, use a readable stream from the original file for upload
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    openUploadStream  =  ( )  =>  fs . createReadStream ( parameters . file ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                    isGzip  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    uploadFileSize  =  totalFileSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // create a readable stream using a PassThrough stream that is both readable and writable
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    openUploadStream  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        const  passThrough  =  new  stream . PassThrough ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        passThrough . end ( buffer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        return  passThrough ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                    uploadFileSize  =  buffer . byteLength ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                const  result  =  yield  this . uploadChunk ( httpClientIndex ,  parameters . resourceUrl ,  openUploadStream ,  0 ,  uploadFileSize  -  1 ,  uploadFileSize ,  isGzip ,  totalFileSize ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                if  ( ! result )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // chunk failed to upload
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    isUploadSuccessful  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    failedChunkSizes  +=  uploadFileSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . warning ( ` Aborting upload for  ${ parameters . file }  due to failure ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    isSuccess :  isUploadSuccessful , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    successfulUploadSize :  uploadFileSize  -  failedChunkSizes , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    totalSize :  totalFileSize 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // the file that is being uploaded is greater than 64k in size, a temporary file gets created on disk using the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // npm tmp-promise package and this file gets used to create a GZipped file
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  tempFile  =  yield  tmp . file ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // create a GZip file of the original file being uploaded, the original file should not be modified in any way
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                uploadFileSize  =  yield  upload _gzip _1 . createGZipFileOnDisk ( parameters . file ,  tempFile . path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  uploadFilePath  =  tempFile . path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // compression did not help with size reduction, use the original file for upload and delete the temp GZip file
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( totalFileSize  <  uploadFileSize )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    uploadFileSize  =  totalFileSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    uploadFilePath  =  parameters . file ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    isGzip  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  abortFileUpload  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // upload only a single chunk at a time
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                while  ( offset  <  uploadFileSize )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  chunkSize  =  Math . min ( uploadFileSize  -  offset ,  parameters . maxChunkSize ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // if an individual file is greater than 100MB (1024*1024*100) in size, display extra information about the upload status
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( uploadFileSize  >  104857600 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        this . statusReporter . updateLargeFileStatus ( parameters . file ,  offset ,  uploadFileSize ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  start  =  offset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  end  =  offset  +  chunkSize  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    offset  +=  parameters . maxChunkSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( abortFileUpload )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        // if we don't want to continue in the event of an error, any pending upload chunks will be marked as failed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        failedChunkSizes  +=  chunkSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    const  result  =  yield  this . uploadChunk ( httpClientIndex ,  parameters . resourceUrl ,  ( )  =>  fs . createReadStream ( uploadFilePath ,  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                        start , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        end , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        autoClose :  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } ) ,  start ,  end ,  uploadFileSize ,  isGzip ,  totalFileSize ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( ! result )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        // Chunk failed to upload, report as failed and do not continue uploading any more chunks for the file. It is possible that part of a chunk was
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        // successfully uploaded so the server may report a different size for what was uploaded
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        isUploadSuccessful  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        failedChunkSizes  +=  chunkSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        core . warning ( ` Aborting upload for  ${ parameters . file }  due to failure ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        abortFileUpload  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Delete the temporary file that was created as part of the upload. If the temp file does not get manually deleted by
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // calling cleanup, it gets removed when the node process exits. For more info see: https://www.npmjs.com/package/tmp-promise#about
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                yield  tempFile . cleanup ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    isSuccess :  isUploadSuccessful , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    successfulUploadSize :  uploadFileSize  -  failedChunkSizes , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    totalSize :  totalFileSize 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Uploads  a  chunk  of  an  individual  file  to  the  specified  resourceUrl .  If  the  upload  fails  and  the  status  code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  indicates  a  retryable  status ,  we  try  to  upload  the  chunk  as  well 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  { number }  httpClientIndex  The  index  of  the  httpClient  being  used  to  make  all  the  necessary  calls 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  { string }  resourceUrl  Url  of  the  resource  that  the  chunk  will  be  uploaded  to 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  @ param  { NodeJS . ReadableStream }  openStream  Stream  of  the  file  that  will  be  uploaded 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								     *  @ param  { number }  start  Starting  byte  index  of  file  that  the  chunk  belongs  to 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  { number }  end  Ending  byte  index  of  file  that  the  chunk  belongs  to 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  { number }  uploadFileSize  Total  size  of  the  file  in  bytes  that  is  being  uploaded 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  { boolean }  isGzip  Denotes  if  we  are  uploading  a  Gzip  compressed  stream 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  { number }  totalFileSize  Original  total  size  of  the  file  that  is  being  uploaded 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ returns  if  the  chunk  was  successfully  uploaded 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    uploadChunk ( httpClientIndex ,  resourceUrl ,  openStream ,  start ,  end ,  uploadFileSize ,  isGzip ,  totalFileSize )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // prepare all the necessary headers before making any http call
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            const  headers  =  utils _1 . getUploadHeaders ( 'application/octet-stream' ,  true ,  isGzip ,  totalFileSize ,  end  -  start  +  1 ,  utils _1 . getContentRange ( start ,  end ,  uploadFileSize ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            const  uploadChunkRequest  =  ( )  =>  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  client  =  this . uploadHttpManager . getClient ( httpClientIndex ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                return  yield  client . sendStream ( 'PUT' ,  resourceUrl ,  openStream ( ) ,  headers ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  retryCount  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  retryLimit  =  config _variables _1 . getRetryLimit ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Increments the current retry count and then checks if the retry limit has been reached
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // If there have been too many retries, fail so the download stops
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  incrementAndCheckRetryLimit  =  ( response )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                retryCount ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( retryCount  >  retryLimit )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( response )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        utils _1 . displayHttpDiagnostics ( response ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . info ( ` Retry limit has been reached for chunk at offset  ${ start }  to  ${ resourceUrl } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  backOff  =  ( retryAfterValue )  =>  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . uploadHttpManager . disposeAndReplaceClient ( httpClientIndex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( retryAfterValue )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . info ( ` Backoff due to too many requests, retry # ${ retryCount } . Waiting for  ${ retryAfterValue }  milliseconds before continuing the upload ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  new  Promise ( resolve  =>  setTimeout ( resolve ,  retryAfterValue ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  backoffTime  =  utils _1 . getExponentialRetryTimeInMilliseconds ( retryCount ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . info ( ` Exponential backoff for retry # ${ retryCount } . Waiting for  ${ backoffTime }  milliseconds before continuing the upload at offset  ${ start } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  new  Promise ( resolve  =>  setTimeout ( resolve ,  backoffTime ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . info ( ` Finished backoff for retry # ${ retryCount } , continuing with upload ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // allow for failed chunks to be retried multiple times
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            while  ( retryCount  <=  retryLimit )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  response ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    response  =  yield  uploadChunkRequest ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                catch  ( error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // if an error is caught, it is usually indicative of a timeout so retry the upload
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . info ( ` An error has been caught http-client index  ${ httpClientIndex } , retrying the upload ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // eslint-disable-next-line no-console
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    console . log ( error ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( incrementAndCheckRetryLimit ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  backOff ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Always read the body of the response. There is potential for a resource leak if the body is not read which will
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // result in the connection remaining open along with unintended consequences when trying to dispose of the client
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                yield  response . readBody ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( utils _1 . isSuccessStatusCode ( response . message . statusCode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  if  ( utils _1 . isRetryableStatusCode ( response . message . statusCode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . info ( ` A  ${ response . message . statusCode }  status code has been received, will attempt to retry the upload ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( incrementAndCheckRetryLimit ( response ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    utils _1 . isThrottledStatusCode ( response . message . statusCode ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        ?  yield  backOff ( utils _1 . tryGetRetryAfterValueTimeInMilliseconds ( response . message . headers ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        :  yield  backOff ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . error ( ` Unexpected response. Unable to upload chunk to  ${ resourceUrl } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    utils _1 . displayHttpDiagnostics ( response ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Updates  the  size  of  the  artifact  from  - 1  which  was  initially  set  when  the  container  was  first  created  for  the  artifact . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Updating  the  size  indicates  that  we  are  done  uploading  all  the  contents  of  the  artifact 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    patchArtifactSize ( size ,  artifactName )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            const  headers  =  utils _1 . getUploadHeaders ( 'application/json' ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            const  resourceUrl  =  new  url _1 . URL ( utils _1 . getArtifactUrl ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            resourceUrl . searchParams . append ( 'artifactName' ,  artifactName ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  parameters  =  {  Size :  size  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  data  =  JSON . stringify ( parameters ,  null ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core . debug ( ` URL is  ${ resourceUrl . toString ( ) } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // use the first client from the httpManager, `keep-alive` is not used so the connection will close immediately
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  client  =  this . uploadHttpManager . getClient ( 0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            const  response  =  yield  client . patch ( resourceUrl . toString ( ) ,  data ,  headers ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            const  body  =  yield  response . readBody ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( utils _1 . isSuccessStatusCode ( response . message . statusCode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . debug ( ` Artifact  ${ artifactName }  has been successfully uploaded, total size in bytes:  ${ size } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( response . message . statusCode  ===  404 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  Error ( ` An Artifact with the name  ${ artifactName }  was not found ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                utils _1 . displayHttpDiagnostics ( response ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . info ( body ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  Error ( ` Unable to finish uploading artifact  ${ artifactName }  to  ${ resourceUrl } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . UploadHttpClient  =  UploadHttpClient ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=upload-http-client.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  614 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "events" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  621 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  balanced ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  balanced ( a ,  b ,  str )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( a  instanceof  RegExp )  a  =  maybeMatch ( a ,  str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( b  instanceof  RegExp )  b  =  maybeMatch ( b ,  str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  r  =  range ( a ,  b ,  str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  r  &&  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    start :  r [ 0 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end :  r [ 1 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pre :  str . slice ( 0 ,  r [ 0 ] ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    body :  str . slice ( r [ 0 ]  +  a . length ,  r [ 1 ] ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    post :  str . slice ( r [ 1 ]  +  b . length ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  maybeMatch ( reg ,  str )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  m  =  str . match ( reg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  m  ?  m [ 0 ]  :  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								balanced . range  =  range ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  range ( a ,  b ,  str )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  begs ,  beg ,  left ,  right ,  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  ai  =  str . indexOf ( a ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  bi  =  str . indexOf ( b ,  ai  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  i  =  ai ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ai  >=  0  &&  bi  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    begs  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    left  =  str . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    while  ( i  >=  0  &&  ! result )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( i  ==  ai )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        begs . push ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ai  =  str . indexOf ( a ,  i  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  if  ( begs . length  ==  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        result  =  [  begs . pop ( ) ,  bi  ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        beg  =  begs . pop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( beg  <  left )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          left  =  beg ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          right  =  bi ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        bi  =  str . indexOf ( b ,  i  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      i  =  ai  <  bi  &&  ai  >=  0  ?  ai  :  bi ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( begs . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      result  =  [  left ,  right  ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  622 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "path" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  630 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "perf_hooks" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  631 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "net" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  647 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _asyncValues  =  ( this  &&  this . _ _asyncValues )  ||  function  ( o )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! Symbol . asyncIterator )  throw  new  TypeError ( "Symbol.asyncIterator is not defined." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  m  =  o [ Symbol . asyncIterator ] ,  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  m  ?  m . call ( o )  :  ( o  =  typeof  _ _values  ===  "function"  ?  _ _values ( o )  :  o [ Symbol . iterator ] ( ) ,  i  =  { } ,  verb ( "next" ) ,  verb ( "throw" ) ,  verb ( "return" ) ,  i [ Symbol . asyncIterator ]  =  function  ( )  {  return  this ;  } ,  i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  verb ( n )  {  i [ n ]  =  o [ n ]  &&  function  ( v )  {  return  new  Promise ( function  ( resolve ,  reject )  {  v  =  o [ n ] ( v ) ,  settle ( resolve ,  reject ,  v . done ,  v . value ) ;  } ) ;  } ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  settle ( resolve ,  reject ,  d ,  v )  {  Promise . resolve ( v ) . then ( function ( v )  {  resolve ( {  value :  v ,  done :  d  } ) ;  } ,  reject ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _importStar  =  ( this  &&  this . _ _importStar )  ||  function  ( mod )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  &&  mod . _ _esModule )  return  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  !=  null )  for  ( var  k  in  mod )  if  ( Object . hasOwnProperty . call ( mod ,  k ) )  result [ k ]  =  mod [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ "default" ]  =  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  fs  =  _ _importStar ( _ _webpack _require _ _ ( 747 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  zlib  =  _ _importStar ( _ _webpack _require _ _ ( 761 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  util _1  =  _ _webpack _require _ _ ( 669 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  stat  =  util _1 . promisify ( fs . stat ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Creates  a  Gzip  compressed  file  of  an  original  file  at  the  provided  temporary  filepath  location 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { string }  originalFilePath  filepath  of  whatever  will  be  compressed .  The  original  file  will  be  unmodified 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { string }  tempFilePath  the  location  of  where  the  Gzip  file  will  be  created 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns  the  size  of  gzip  file  that  gets  created 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  createGZipFileOnDisk ( originalFilePath ,  tempFilePath )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  new  Promise ( ( resolve ,  reject )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  inputStream  =  fs . createReadStream ( originalFilePath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  gzip  =  zlib . createGzip ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  outputStream  =  fs . createWriteStream ( tempFilePath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            inputStream . pipe ( gzip ) . pipe ( outputStream ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            outputStream . on ( 'finish' ,  ( )  =>  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // wait for stream to finish before calculating the size which is needed as part of the Content-Length header when starting an upload
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  size  =  ( yield  stat ( tempFilePath ) ) . size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resolve ( size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            outputStream . on ( 'error' ,  error  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // eslint-disable-next-line no-console
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                console . log ( error ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                reject ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . createGZipFileOnDisk  =  createGZipFileOnDisk ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Creates  a  GZip  file  in  memory  using  a  buffer .  Should  be  used  for  smaller  files  to  reduce  disk  I / O 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  originalFilePath  the  path  to  the  original  file  that  is  being  GZipped 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns  a  buffer  with  the  GZip  file 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  createGZipFileInBuffer ( originalFilePath )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  new  Promise ( ( resolve )  =>  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            var  e _1 ,  _a ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  inputStream  =  fs . createReadStream ( originalFilePath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  gzip  =  zlib . createGzip ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            inputStream . pipe ( gzip ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // read stream into buffer, using experimental async iterators see https://github.com/nodejs/readable-stream/issues/403#issuecomment-479069043
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  chunks  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for  ( var  gzip _1  =  _ _asyncValues ( gzip ) ,  gzip _1 _1 ;  gzip _1 _1  =  yield  gzip _1 . next ( ) ,  ! gzip _1 _1 . done ; )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  chunk  =  gzip _1 _1 . value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    chunks . push ( chunk ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( e _1 _1 )  {  e _1  =  {  error :  e _1 _1  } ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( gzip _1 _1  &&  ! gzip _1 _1 . done  &&  ( _a  =  gzip _1 . return ) )  yield  _a . call ( gzip _1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                finally  {  if  ( e _1 )  throw  e _1 . error ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            resolve ( Buffer . concat ( chunks ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . createGZipFileInBuffer  =  createGZipFileInBuffer ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=upload-gzip.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  669 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "util" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  674 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module ,  _ _unusedexports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  wrappy  =  _ _webpack _require _ _ ( 11 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  reqs  =  Object . create ( null )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  once  =  _ _webpack _require _ _ ( 49 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  wrappy ( inflight )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  inflight  ( key ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( reqs [ key ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    reqs [ key ] . push ( cb ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    reqs [ key ]  =  [ cb ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  makeres ( key ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  makeres  ( key )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  once ( function  RES  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  cbs  =  reqs [ key ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  len  =  cbs . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  args  =  slice ( arguments ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // XXX It's somewhat ambiguous whether a new callback added in this
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // pass should be queued for later execution if something in the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // list of callbacks throws, or if it should just be discarded.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // However, it's such an edge case that it hardly matters, and either
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // choice is likely as surprising as the other.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // As it happens, we do go ahead and schedule it for later execution.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( var  i  =  0 ;  i  <  len ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        cbs [ i ] . apply ( null ,  args ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( cbs . length  >  len )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // added more in the interim.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // de-zalgo, just in case, but don't call again.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        cbs . splice ( 0 ,  len ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        process . nextTick ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          RES . apply ( null ,  args ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        delete  reqs [ key ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  slice  ( args )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  length  =  args . length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  array  =  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  length ;  i ++ )  array [ i ]  =  args [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  array 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  681 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  posix ( path )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  path . charAt ( 0 )  ===  '/' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  win32 ( path )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  splitDeviceRe  =  /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  result  =  splitDeviceRe . exec ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  device  =  result [ 1 ]  ||  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  isUnc  =  Boolean ( device  &&  device . charAt ( 1 )  !==  ':' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// UNC paths are always absolute
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  Boolean ( result [ 2 ]  ||  isUnc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  process . platform  ===  'win32'  ?  win32  :  posix ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . posix  =  posix ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . win32  =  win32 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  689 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module ,  _ _unusedexports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								try  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  util  =  _ _webpack _require _ _ ( 669 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /* istanbul ignore next */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  util . inherits  !==  'function' )  throw  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  module . exports  =  util . inherits ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  catch  ( e )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /* istanbul ignore next */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  module . exports  =  _ _webpack _require _ _ ( 315 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  694 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  Inputs ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								( function  ( Inputs )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Inputs [ "Name" ]  =  "name" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Inputs [ "Path" ]  =  "path" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ( Inputs  =  exports . Inputs  ||  ( exports . Inputs  =  { } ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getDefaultArtifactName ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  'artifact' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getDefaultArtifactName  =  getDefaultArtifactName ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  728 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  SearchState  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( path ,  level )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . path  =  path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . level  =  level ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . SearchState  =  SearchState ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=internal-search-state.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  747 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "fs" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  761 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "zlib" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  794 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "stream" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  835 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "url" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  855 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _importStar  =  ( this  &&  this . _ _importStar )  ||  function  ( mod )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  &&  mod . _ _esModule )  return  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  !=  null )  for  ( var  k  in  mod )  if  ( Object . hasOwnProperty . call ( mod ,  k ) )  result [ k ]  =  mod [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ "default" ]  =  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  fs  =  _ _importStar ( _ _webpack _require _ _ ( 747 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  core  =  _ _importStar ( _ _webpack _require _ _ ( 470 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  zlib  =  _ _importStar ( _ _webpack _require _ _ ( 761 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  utils _1  =  _ _webpack _require _ _ ( 870 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  url _1  =  _ _webpack _require _ _ ( 835 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  status _reporter _1  =  _ _webpack _require _ _ ( 176 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  perf _hooks _1  =  _ _webpack _require _ _ ( 630 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  http _manager _1  =  _ _webpack _require _ _ ( 452 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  config _variables _1  =  _ _webpack _require _ _ ( 401 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  DownloadHttpClient  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . downloadHttpManager  =  new  http _manager _1 . HttpManager ( config _variables _1 . getDownloadFileConcurrency ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // downloads are usually significantly faster than uploads so display status information every second
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . statusReporter  =  new  status _reporter _1 . StatusReporter ( 1000 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Gets  a  list  of  all  artifacts  that  are  in  a  specific  container 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    listArtifacts ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  artifactUrl  =  utils _1 . getArtifactUrl ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // use the first client from the httpManager, `keep-alive` is not used so the connection will close immediately
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  client  =  this . downloadHttpManager . getClient ( 0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            const  headers  =  utils _1 . getDownloadHeaders ( 'application/json' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  response  =  yield  client . get ( artifactUrl ,  headers ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            const  body  =  yield  response . readBody ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( utils _1 . isSuccessStatusCode ( response . message . statusCode )  &&  body )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  JSON . parse ( body ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            utils _1 . displayHttpDiagnostics ( response ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( ` Unable to list artifacts for the run. Resource Url  ${ artifactUrl } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Fetches  a  set  of  container  items  that  describe  the  contents  of  an  artifact 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  artifactName  the  name  of  the  artifact 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  containerUrl  the  artifact  container  URL  for  the  run 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getContainerItems ( artifactName ,  containerUrl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // the itemPath search parameter controls which containers will be returned
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  resourceUrl  =  new  url _1 . URL ( containerUrl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            resourceUrl . searchParams . append ( 'itemPath' ,  artifactName ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // use the first client from the httpManager, `keep-alive` is not used so the connection will close immediately
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  client  =  this . downloadHttpManager . getClient ( 0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            const  headers  =  utils _1 . getDownloadHeaders ( 'application/json' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  response  =  yield  client . get ( resourceUrl . toString ( ) ,  headers ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            const  body  =  yield  response . readBody ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( utils _1 . isSuccessStatusCode ( response . message . statusCode )  &&  body )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  JSON . parse ( body ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            utils _1 . displayHttpDiagnostics ( response ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( ` Unable to get ContainersItems from  ${ resourceUrl } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Concurrently  downloads  all  the  files  that  are  part  of  an  artifact 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  downloadItems  information  about  what  items  to  download  and  where  to  save  them 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    downloadSingleArtifact ( downloadItems )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  DOWNLOAD _CONCURRENCY  =  config _variables _1 . getDownloadFileConcurrency ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // limit the number of files downloaded at a single time
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core . debug ( ` Download file concurrency is set to  ${ DOWNLOAD _CONCURRENCY } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  parallelDownloads  =  [ ... new  Array ( DOWNLOAD _CONCURRENCY ) . keys ( ) ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  currentFile  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  downloadedFiles  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core . info ( ` Total number of files that will be downloaded:  ${ downloadItems . length } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . statusReporter . setTotalNumberOfFilesToProcess ( downloadItems . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . statusReporter . start ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            yield  Promise . all ( parallelDownloads . map ( ( index )  =>  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                while  ( currentFile  <  downloadItems . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  currentFileToDownload  =  downloadItems [ currentFile ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    currentFile  +=  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  startTime  =  perf _hooks _1 . performance . now ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  this . downloadIndividualFile ( index ,  currentFileToDownload . sourceLocation ,  currentFileToDownload . targetPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( core . isDebug ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        core . debug ( ` File:  ${ ++ downloadedFiles } / ${ downloadItems . length } .  ${ currentFileToDownload . targetPath }  took  ${ ( perf _hooks _1 . performance . now ( )  -  startTime ) . toFixed ( 3 ) }  milliseconds to finish downloading ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    this . statusReporter . incrementProcessedCount ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                . catch ( error  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  Error ( ` Unable to download the artifact:  ${ error } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                . finally ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . statusReporter . stop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // safety dispose all connections
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . downloadHttpManager . disposeAndReplaceAllClients ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Downloads  an  individual  file 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  httpClientIndex  the  index  of  the  http  client  that  is  used  to  make  all  of  the  calls 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  artifactLocation  origin  location  where  a  file  will  be  downloaded  from 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  downloadPath  destination  location  for  the  file  being  downloaded 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    downloadIndividualFile ( httpClientIndex ,  artifactLocation ,  downloadPath )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  retryCount  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  retryLimit  =  config _variables _1 . getRetryLimit ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  destinationStream  =  fs . createWriteStream ( downloadPath ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            const  headers  =  utils _1 . getDownloadHeaders ( 'application/json' ,  true ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            // a single GET request is used to download a file
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  makeDownloadRequest  =  ( )  =>  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  client  =  this . downloadHttpManager . getClient ( httpClientIndex ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                return  yield  client . get ( artifactLocation ,  headers ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // check the response headers to determine if the file was compressed using gzip
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            const  isGzip  =  ( incomingHeaders )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ( 'content-encoding'  in  incomingHeaders  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    incomingHeaders [ 'content-encoding' ]  ===  'gzip' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Increments the current retry count and then checks if the retry limit has been reached
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // If there have been too many retries, fail so the download stops. If there is a retryAfterValue value provided,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // it will be used
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  backOff  =  ( retryAfterValue )  =>  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                retryCount ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( retryCount  >  retryLimit )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  Promise . reject ( new  Error ( ` Retry limit has been reached. Unable to download  ${ artifactLocation } ` ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    this . downloadHttpManager . disposeAndReplaceClient ( httpClientIndex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( retryAfterValue )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        // Back off by waiting the specified time denoted by the retry-after header
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        core . info ( ` Backoff due to too many requests, retry # ${ retryCount } . Waiting for  ${ retryAfterValue }  milliseconds before continuing the download ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        yield  new  Promise ( resolve  =>  setTimeout ( resolve ,  retryAfterValue ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        // Back off using an exponential value that depends on the retry count
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        const  backoffTime  =  utils _1 . getExponentialRetryTimeInMilliseconds ( retryCount ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        core . info ( ` Exponential backoff for retry # ${ retryCount } . Waiting for  ${ backoffTime }  milliseconds before continuing the download ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        yield  new  Promise ( resolve  =>  setTimeout ( resolve ,  backoffTime ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . info ( ` Finished backoff for retry # ${ retryCount } , continuing with download ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // keep trying to download a file until a retry limit has been reached
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            while  ( retryCount  <=  retryLimit )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  response ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    response  =  yield  makeDownloadRequest ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                catch  ( error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // if an error is caught, it is usually indicative of a timeout so retry the download
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . info ( 'An error occurred while attempting to download a file' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // eslint-disable-next-line no-console
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    console . log ( error ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // increment the retryCount and use exponential backoff to wait before making the next request
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  backOff ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( utils _1 . isSuccessStatusCode ( response . message . statusCode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // The body contains the contents of the file however calling response.readBody() causes all the content to be converted to a string
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // which can cause some gzip encoded data to be lost
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Instead of using response.readBody(), response.message is a readableStream that can be directly used to get the raw body contents
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  this . pipeResponseToFile ( response ,  destinationStream ,  isGzip ( response . message . headers ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  if  ( utils _1 . isRetryableStatusCode ( response . message . statusCode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . info ( ` A  ${ response . message . statusCode }  response code has been received while attempting to download an artifact ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // if a throttled status code is received, try to get the retryAfter header value, else differ to standard exponential backoff
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    utils _1 . isThrottledStatusCode ( response . message . statusCode ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        ?  yield  backOff ( utils _1 . tryGetRetryAfterValueTimeInMilliseconds ( response . message . headers ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        :  yield  backOff ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Some unexpected response code, fail immediately and stop the download
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    utils _1 . displayHttpDiagnostics ( response ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  Promise . reject ( new  Error ( ` Unexpected http  ${ response . message . statusCode }  during download for  ${ artifactLocation } ` ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Pipes  the  response  from  downloading  an  individual  file  to  the  appropriate  destination  stream  while  decoding  gzip  content  if  necessary 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  response  the  http  response  received  when  downloading  a  file 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  destinationStream  the  stream  where  the  file  should  be  written  to 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  isGzip  a  boolean  denoting  if  the  content  is  compressed  using  gzip  and  if  we  need  to  decode  it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pipeResponseToFile ( response ,  destinationStream ,  isGzip )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            yield  new  Promise ( ( resolve ,  reject )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( isGzip )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  gunzip  =  zlib . createGunzip ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    response . message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        . pipe ( gunzip ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        . pipe ( destinationStream ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        . on ( 'close' ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        resolve ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        . on ( 'error' ,  error  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        core . error ( ` An error has been encountered while decompressing and writing a downloaded file to  ${ destinationStream . path } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        reject ( error ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    response . message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        . pipe ( destinationStream ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        . on ( 'close' ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        resolve ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        . on ( 'error' ,  error  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        core . error ( ` An error has been encountered while writing a downloaded file to  ${ destinationStream . path } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        reject ( error ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . DownloadHttpClient  =  DownloadHttpClient ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=download-http-client.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  856 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . alphasort  =  alphasort  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . alphasorti  =  alphasorti  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . setopts  =  setopts  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . ownProp  =  ownProp  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . makeAbs  =  makeAbs  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . finish  =  finish  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . mark  =  mark  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . isIgnored  =  isIgnored  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . childrenIgnored  =  childrenIgnored  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  ownProp  ( obj ,  field )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  Object . prototype . hasOwnProperty . call ( obj ,  field ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  path  =  _ _webpack _require _ _ ( 622 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  minimatch  =  _ _webpack _require _ _ ( 93 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  isAbsolute  =  _ _webpack _require _ _ ( 681 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  Minimatch  =  minimatch . Minimatch  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  alphasorti  ( a ,  b )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  a . toLowerCase ( ) . localeCompare ( b . toLowerCase ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  alphasort  ( a ,  b )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  a . localeCompare ( b ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  setupIgnores  ( self ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . ignore  =  options . ignore  ||  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! Array . isArray ( self . ignore ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . ignore  =  [ self . ignore ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( self . ignore . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . ignore  =  self . ignore . map ( ignoreMap ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ignore patterns are always in dot:true mode.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  ignoreMap  ( pattern )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  gmatcher  =  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( pattern . slice ( - 3 )  ===  '/**' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  gpattern  =  pattern . replace ( /(\/\*\*)+$/ ,  '' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    gmatcher  =  new  Minimatch ( gpattern ,  {  dot :  true  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    matcher :  new  Minimatch ( pattern ,  {  dot :  true  } ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    gmatcher :  gmatcher 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  setopts  ( self ,  pattern ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    options  =  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // base-matching: just use globstar for that.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( options . matchBase  &&  - 1  ===  pattern . indexOf ( "/" ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( options . noglobstar )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      throw  new  Error ( "base matching requires globstar" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pattern  =  "**/"  +  pattern 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . silent  =  ! ! options . silent 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . pattern  =  pattern 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . strict  =  options . strict  !==  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . realpath  =  ! ! options . realpath 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . realpathCache  =  options . realpathCache  ||  Object . create ( null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . follow  =  ! ! options . follow 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . dot  =  ! ! options . dot 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . mark  =  ! ! options . mark 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . nodir  =  ! ! options . nodir 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( self . nodir ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . mark  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . sync  =  ! ! options . sync 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . nounique  =  ! ! options . nounique 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . nonull  =  ! ! options . nonull 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . nosort  =  ! ! options . nosort 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . nocase  =  ! ! options . nocase 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . stat  =  ! ! options . stat 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . noprocess  =  ! ! options . noprocess 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . absolute  =  ! ! options . absolute 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . maxLength  =  options . maxLength  ||  Infinity 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . cache  =  options . cache  ||  Object . create ( null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . statCache  =  options . statCache  ||  Object . create ( null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . symlinks  =  options . symlinks  ||  Object . create ( null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  setupIgnores ( self ,  options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . changedCwd  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  cwd  =  process . cwd ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ownProp ( options ,  "cwd" ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . cwd  =  cwd 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . cwd  =  path . resolve ( options . cwd ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . changedCwd  =  self . cwd  !==  cwd 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . root  =  options . root  ||  path . resolve ( self . cwd ,  "/" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . root  =  path . resolve ( self . root ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( process . platform  ===  "win32" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . root  =  self . root . replace ( /\\/g ,  "/" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // TODO: is an absolute `cwd` supposed to be resolved against `root`?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . cwdAbs  =  isAbsolute ( self . cwd )  ?  self . cwd  :  makeAbs ( self ,  self . cwd ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( process . platform  ===  "win32" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . cwdAbs  =  self . cwdAbs . replace ( /\\/g ,  "/" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . nomount  =  ! ! options . nomount 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // disable comments and negation in Minimatch.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Note that they are not supported in Glob itself anyway.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options . nonegate  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options . nocomment  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . minimatch  =  new  Minimatch ( pattern ,  options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . options  =  self . minimatch . options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  finish  ( self )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  nou  =  self . nounique 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  all  =  nou  ?  [ ]  :  Object . create ( null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ,  l  =  self . matches . length ;  i  <  l ;  i  ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  matches  =  self . matches [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! matches  ||  Object . keys ( matches ) . length  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( self . nonull )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // do like the shell, and spit out the literal glob
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  literal  =  self . minimatch . globSet [ i ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( nou ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          all . push ( literal ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          all [ literal ]  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // had matches
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  m  =  Object . keys ( matches ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( nou ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        all . push . apply ( all ,  m ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m . forEach ( function  ( m )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          all [ m ]  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! nou ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    all  =  Object . keys ( all ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! self . nosort ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    all  =  all . sort ( self . nocase  ?  alphasorti  :  alphasort ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // at *some* point we statted all of these
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( self . mark )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ;  i  <  all . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      all [ i ]  =  self . _mark ( all [ i ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( self . nodir )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      all  =  all . filter ( function  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  notDir  =  ! ( /\/$/ . test ( e ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  c  =  self . cache [ e ]  ||  self . cache [ makeAbs ( self ,  e ) ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( notDir  &&  c ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          notDir  =  c  !==  'DIR'  &&  ! Array . isArray ( c ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  notDir 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( self . ignore . length ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    all  =  all . filter ( function ( m )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  ! isIgnored ( self ,  m ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . found  =  all 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  mark  ( self ,  p )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  abs  =  makeAbs ( self ,  p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  c  =  self . cache [ abs ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  m  =  p 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( c )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  isDir  =  c  ===  'DIR'  ||  Array . isArray ( c ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  slash  =  p . slice ( - 1 )  ===  '/' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( isDir  &&  ! slash ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      m  +=  '/' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  if  ( ! isDir  &&  slash ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      m  =  m . slice ( 0 ,  - 1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( m  !==  p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  mabs  =  makeAbs ( self ,  m ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . statCache [ mabs ]  =  self . statCache [ abs ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . cache [ mabs ]  =  self . cache [ abs ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  m 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// lotta situps...
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  makeAbs  ( self ,  f )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  abs  =  f 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( f . charAt ( 0 )  ===  '/' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    abs  =  path . join ( self . root ,  f ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( isAbsolute ( f )  ||  f  ===  '' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    abs  =  f 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( self . changedCwd )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    abs  =  path . resolve ( self . cwd ,  f ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    abs  =  path . resolve ( f ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( process . platform  ===  'win32' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    abs  =  abs . replace ( /\\/g ,  '/' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  abs 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Return true, if pattern ends with globstar '**', for the accompanying parent directory.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isIgnored  ( self ,  path )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! self . ignore . length ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  self . ignore . some ( function ( item )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  item . matcher . match ( path )  ||  ! ! ( item . gmatcher  &&  item . gmatcher . match ( path ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  childrenIgnored  ( self ,  path )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! self . ignore . length ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  self . ignore . some ( function ( item )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ! ! ( item . gmatcher  &&  item . gmatcher . match ( path ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  870 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  core _1  =  _ _webpack _require _ _ ( 470 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  fs _1  =  _ _webpack _require _ _ ( 747 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  http _client _1  =  _ _webpack _require _ _ ( 539 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  auth _1  =  _ _webpack _require _ _ ( 226 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  config _variables _1  =  _ _webpack _require _ _ ( 401 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Returns  a  retry  time  in  milliseconds  that  exponentially  gets  larger 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  depending  on  the  amount  of  retries  that  have  been  attempted 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getExponentialRetryTimeInMilliseconds ( retryCount )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( retryCount  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  Error ( 'RetryCount should not be negative' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  if  ( retryCount  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  config _variables _1 . getInitialRetryIntervalInMilliseconds ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  minTime  =  config _variables _1 . getInitialRetryIntervalInMilliseconds ( )  *  config _variables _1 . getRetryMultiplier ( )  *  retryCount ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  maxTime  =  minTime  *  config _variables _1 . getRetryMultiplier ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // returns a random number between the minTime (inclusive) and the maxTime (exclusive)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  Math . random ( )  *  ( maxTime  -  minTime )  +  minTime ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getExponentialRetryTimeInMilliseconds  =  getExponentialRetryTimeInMilliseconds ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Parses  a  env  variable  that  is  a  number 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  parseEnvNumber ( key )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  value  =  Number ( process . env [ key ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( Number . isNaN ( value )  ||  value  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . parseEnvNumber  =  parseEnvNumber ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Various  utility  functions  to  help  with  the  necessary  API  calls 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getApiVersion ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  '6.0-preview' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getApiVersion  =  getApiVersion ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isSuccessStatusCode ( statusCode )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! statusCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  statusCode  >=  200  &&  statusCode  <  300 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . isSuccessStatusCode  =  isSuccessStatusCode ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isForbiddenStatusCode ( statusCode )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! statusCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  statusCode  ===  http _client _1 . HttpCodes . Forbidden ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . isForbiddenStatusCode  =  isForbiddenStatusCode ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isRetryableStatusCode ( statusCode )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! statusCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  retryableStatusCodes  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        http _client _1 . HttpCodes . BadGateway , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        http _client _1 . HttpCodes . ServiceUnavailable , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        http _client _1 . HttpCodes . GatewayTimeout , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        http _client _1 . HttpCodes . TooManyRequests 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  retryableStatusCodes . includes ( statusCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . isRetryableStatusCode  =  isRetryableStatusCode ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isThrottledStatusCode ( statusCode )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! statusCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  statusCode  ===  http _client _1 . HttpCodes . TooManyRequests ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . isThrottledStatusCode  =  isThrottledStatusCode ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Attempts  to  get  the  retry - after  value  from  a  set  of  http  headers .  The  retry  time 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  is  originally  denoted  in  seconds ,  so  if  present ,  it  is  converted  to  milliseconds 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  headers  all  the  headers  received  when  making  an  http  call 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  tryGetRetryAfterValueTimeInMilliseconds ( headers )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( headers [ 'retry-after' ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  retryTime  =  Number ( headers [ 'retry-after' ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! isNaN ( retryTime ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core _1 . info ( ` Retry-After header is present with a value of  ${ retryTime } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  retryTime  *  1000 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        core _1 . info ( ` Returned retry-after header value:  ${ retryTime }  is non-numeric and cannot be used ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    core _1 . info ( ` No retry-after header was found. Dumping all headers for diagnostic purposes ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // eslint-disable-next-line no-console
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    console . log ( headers ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . tryGetRetryAfterValueTimeInMilliseconds  =  tryGetRetryAfterValueTimeInMilliseconds ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getContentRange ( start ,  end ,  total )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Format: `bytes start-end/fileSize
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // start and end are inclusive
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // For a 200 byte chunk starting at byte 0:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Content-Range: bytes 0-199/200
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ` bytes  ${ start } - ${ end } / ${ total } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getContentRange  =  getContentRange ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Sets  all  the  necessary  headers  when  downloading  an  artifact 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { string }  contentType  the  type  of  content  being  uploaded 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { boolean }  isKeepAlive  is  the  same  connection  being  used  to  make  multiple  calls 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { boolean }  acceptGzip  can  we  accept  a  gzip  encoded  response 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { string }  acceptType  the  type  of  content  that  we  can  accept 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  @ returns  appropriate  headers  to  make  a  specific  http  call  during  artifact  download 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  getDownloadHeaders ( contentType ,  isKeepAlive ,  acceptGzip )  {  
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    const  requestOptions  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( contentType )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        requestOptions [ 'Content-Type' ]  =  contentType ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( isKeepAlive )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        requestOptions [ 'Connection' ]  =  'Keep-Alive' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // keep alive for at least 10 seconds before closing the connection
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        requestOptions [ 'Keep-Alive' ]  =  '10' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( acceptGzip )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // if we are expecting a response with gzip encoding, it should be using an octet-stream in the accept header
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        requestOptions [ 'Accept-Encoding' ]  =  'gzip' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        requestOptions [ 'Accept' ]  =  ` application/octet-stream;api-version= ${ getApiVersion ( ) } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // default to application/json if we are not working with gzip content
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        requestOptions [ 'Accept' ]  =  ` application/json;api-version= ${ getApiVersion ( ) } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  requestOptions ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								exports . getDownloadHeaders  =  getDownloadHeaders ;  
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Sets  all  the  necessary  headers  when  uploading  an  artifact 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { string }  contentType  the  type  of  content  being  uploaded 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { boolean }  isKeepAlive  is  the  same  connection  being  used  to  make  multiple  calls 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { boolean }  isGzip  is  the  connection  being  used  to  upload  GZip  compressed  content 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { number }  uncompressedLength  the  original  size  of  the  content  if  something  is  being  uploaded  that  has  been  compressed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { number }  contentLength  the  length  of  the  content  that  is  being  uploaded 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  { string }  contentRange  the  range  of  the  content  that  is  being  uploaded 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  @ returns  appropriate  headers  to  make  a  specific  http  call  during  artifact  upload 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  getUploadHeaders ( contentType ,  isKeepAlive ,  isGzip ,  uncompressedLength ,  contentLength ,  contentRange )  {  
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    const  requestOptions  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    requestOptions [ 'Accept' ]  =  ` application/json;api-version= ${ getApiVersion ( ) } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( contentType )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        requestOptions [ 'Content-Type' ]  =  contentType ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( isKeepAlive )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        requestOptions [ 'Connection' ]  =  'Keep-Alive' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // keep alive for at least 10 seconds before closing the connection
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        requestOptions [ 'Keep-Alive' ]  =  '10' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( isGzip )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        requestOptions [ 'Content-Encoding' ]  =  'gzip' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        requestOptions [ 'x-tfs-filelength' ]  =  uncompressedLength ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( contentLength )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        requestOptions [ 'Content-Length' ]  =  contentLength ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( contentRange )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        requestOptions [ 'Content-Range' ]  =  contentRange ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  requestOptions ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								exports . getUploadHeaders  =  getUploadHeaders ;  
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								function  createHttpClient ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  new  http _client _1 . HttpClient ( 'actions/artifact' ,  [ 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        new  auth _1 . BearerCredentialHandler ( config _variables _1 . getRuntimeToken ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . createHttpClient  =  createHttpClient ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getArtifactUrl ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  artifactUrl  =  ` ${ config _variables _1 . getRuntimeUrl ( ) } _apis/pipelines/workflows/ ${ config _variables _1 . getWorkFlowRunId ( ) } /artifacts?api-version= ${ getApiVersion ( ) } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    core _1 . debug ( ` Artifact Url:  ${ artifactUrl } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  artifactUrl ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getArtifactUrl  =  getArtifactUrl ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Uh  oh !  Something  might  have  gone  wrong  during  either  upload  or  download .  The  IHtttpClientResponse  object  contains  information 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  about  the  http  call  that  was  made  by  the  actions  http  client .  This  information  might  be  useful  to  display  for  diagnostic  purposes ,  but 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  this  entire  object  is  really  big  and  most  of  the  information  is  not  really  useful .  This  function  takes  the  response  object  and  displays  only 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  the  information  that  we  want . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Certain  information  such  as  the  TLSSocket  and  the  Readable  state  are  not  really  useful  for  diagnostic  purposes  so  they  can  be  avoided . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Other  information  such  as  the  headers ,  the  response  code  and  message  might  be  useful ,  so  this  is  displayed . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  displayHttpDiagnostics ( response )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    core _1 . info ( ` ##### Begin Diagnostic HTTP information #####
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Status  Code :  $ { response . message . statusCode }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Status  Message :  $ { response . message . statusMessage }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Header  Information :  $ { JSON . stringify ( response . message . headers ,  undefined ,  2 ) }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# # # # # #  End  Diagnostic  HTTP  information  # # # # # # ` );
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . displayHttpDiagnostics  =  displayHttpDiagnostics ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Invalid  characters  that  cannot  be  in  the  artifact  name  or  an  uploaded  file .  Will  be  rejected 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  from  the  server  if  attempted  to  be  sent  over .  These  characters  are  not  allowed  due  to  limitations  with  certain 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  file  systems  such  as  NTFS .  To  maintain  platform - agnostic  behavior ,  all  characters  that  are  not  supported  by  an 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  individual  filesystem / platform  will  not  be  supported  on  all  fileSystems / platforms 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  FilePaths  can  include  characters  such  as  \  and  /  which  are  not  permitted  in  the  artifact  name  alone 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  invalidArtifactFilePathCharacters  =  [ '"' ,  ':' ,  '<' ,  '>' ,  '|' ,  '*' ,  '?' ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  invalidArtifactNameCharacters  =  [  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ... invalidArtifactFilePathCharacters , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    '\\' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    '/' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Scans  the  name  of  the  artifact  to  make  sure  there  are  no  illegal  characters 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  checkArtifactName ( name )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  Error ( ` Artifact name:  ${ name } , is incorrectly provided ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( const  invalidChar  of  invalidArtifactNameCharacters )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( name . includes ( invalidChar ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( ` Artifact name is not valid:  ${ name } . Contains character: " ${ invalidChar } ". Invalid artifact name characters include:  ${ invalidArtifactNameCharacters . toString ( ) } . ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . checkArtifactName  =  checkArtifactName ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Scans  the  name  of  the  filePath  used  to  make  sure  there  are  no  illegal  characters 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  checkArtifactFilePath ( path )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  Error ( ` Artifact path:  ${ path } , is incorrectly provided ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( const  invalidChar  of  invalidArtifactFilePathCharacters )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( path . includes ( invalidChar ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( ` Artifact path is not valid:  ${ path } . Contains character: " ${ invalidChar } ". Invalid characters include:  ${ invalidArtifactFilePathCharacters . toString ( ) } . ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . checkArtifactFilePath  =  checkArtifactFilePath ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  createDirectoriesForArtifact ( directories )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( const  directory  of  directories )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            yield  fs _1 . promises . mkdir ( directory ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                recursive :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . createDirectoriesForArtifact  =  createDirectoriesForArtifact ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  createEmptyFilesForArtifact ( emptyFilesToCreate )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( const  filePath  of  emptyFilesToCreate )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            yield  ( yield  fs _1 . promises . open ( filePath ,  'w' ) ) . close ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . createEmptyFilesForArtifact  =  createEmptyFilesForArtifact ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=utils.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  875 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module ,  _ _unusedexports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  { promisify }  =  _ _webpack _require _ _ ( 669 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  tmp  =  _ _webpack _require _ _ ( 402 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// file
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . fileSync  =  tmp . fileSync ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  fileWithOptions  =  promisify ( ( options ,  cb )  =>  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tmp . file ( options ,  ( err ,  path ,  fd ,  cleanup )  => 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err  ?  cb ( err )  :  cb ( undefined ,  {  path ,  fd ,  cleanup :  promisify ( cleanup )  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . file  =  async  ( options )  =>  fileWithOptions ( options ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . withFile  =  async  function  withFile ( fn ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  {  path ,  fd ,  cleanup  }  =  await  module . exports . file ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  await  fn ( {  path ,  fd  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  cleanup ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// directory
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . dirSync  =  tmp . dirSync ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  dirWithOptions  =  promisify ( ( options ,  cb )  =>  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tmp . dir ( options ,  ( err ,  path ,  cleanup )  => 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err  ?  cb ( err )  :  cb ( undefined ,  {  path ,  cleanup :  promisify ( cleanup )  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . dir  =  async  ( options )  =>  dirWithOptions ( options ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . withDir  =  async  function  withDir ( fn ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  {  path ,  cleanup  }  =  await  module . exports . dir ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  await  fn ( {  path  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  cleanup ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// name generation
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . tmpNameSync  =  tmp . tmpNameSync ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . tmpName  =  promisify ( tmp . tmpName ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . tmpdir  =  tmp . tmpdir ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports . setGracefulCleanup  =  tmp . setGracefulCleanup ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  896 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  function  ( xs ,  fn )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  res  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ;  i  <  xs . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  x  =  fn ( xs [ i ] ,  i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( isArray ( x ) )  res . push . apply ( res ,  x ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  res . push ( x ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  res ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  isArray  =  Array . isArray  ||  function  ( xs )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  Object . prototype . toString . call ( xs )  ===  '[object Array]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  923 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  assert  =  _ _webpack _require _ _ ( 357 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  os  =  _ _webpack _require _ _ ( 87 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  path  =  _ _webpack _require _ _ ( 622 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  pathHelper  =  _ _webpack _require _ _ ( 972 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  minimatch _1  =  _ _webpack _require _ _ ( 93 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  internal _match _kind _1  =  _ _webpack _require _ _ ( 327 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  internal _path _1  =  _ _webpack _require _ _ ( 383 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  IS _WINDOWS  =  process . platform  ===  'win32' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  Pattern  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( patternOrNegate ,  segments )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         *  Indicates  whether  matches  should  be  excluded  from  the  result  set 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . negate  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Pattern overload
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  pattern ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( typeof  patternOrNegate  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pattern  =  patternOrNegate . trim ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Segments overload
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Convert to pattern
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            segments  =  segments  ||  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            assert ( segments . length ,  ` Parameter 'segments' must not empty ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  root  =  Pattern . getLiteral ( segments [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            assert ( root  &&  pathHelper . hasAbsoluteRoot ( root ) ,  ` Parameter 'segments' first element must be a root path ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pattern  =  new  internal _path _1 . Path ( segments ) . toString ( ) . trim ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( patternOrNegate )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                pattern  =  ` ! ${ pattern } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Negate
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        while  ( pattern . startsWith ( '!' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . negate  =  ! this . negate ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pattern  =  pattern . substr ( 1 ) . trim ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Normalize slashes and ensures absolute root
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pattern  =  Pattern . fixupPattern ( pattern ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Segments
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . segments  =  new  internal _path _1 . Path ( pattern ) . segments ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Trailing slash indicates the pattern should only match directories, not regular files
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . trailingSeparator  =  pathHelper 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . normalizeSeparators ( pattern ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . endsWith ( path . sep ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pattern  =  pathHelper . safeTrimTrailingSeparator ( pattern ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Search path (literal path prior to the first glob segment)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  foundGlob  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  searchSegments  =  this . segments 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . map ( x  =>  Pattern . getLiteral ( x ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . filter ( x  =>  ! foundGlob  &&  ! ( foundGlob  =  x  ===  '' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . searchPath  =  new  internal _path _1 . Path ( searchSegments ) . toString ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Root RegExp (required when determining partial match)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . rootRegExp  =  new  RegExp ( Pattern . regExpEscape ( searchSegments [ 0 ] ) ,  IS _WINDOWS  ?  'i'  :  '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Create minimatch
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  minimatchOptions  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            dot :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            nobrace :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            nocase :  IS _WINDOWS , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            nocomment :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            noext :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            nonegate :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pattern  =  IS _WINDOWS  ?  pattern . replace ( /\\/g ,  '/' )  :  pattern ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . minimatch  =  new  minimatch _1 . Minimatch ( pattern ,  minimatchOptions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Matches  the  pattern  against  the  specified  path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    match ( itemPath )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Last segment is globstar?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . segments [ this . segments . length  -  1 ]  ===  '**' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Normalize slashes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            itemPath  =  pathHelper . normalizeSeparators ( itemPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Append a trailing slash. Otherwise Minimatch will not match the directory immediately
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // preceeding the globstar. For example, given the pattern `/foo/**`, Minimatch returns
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // false for `/foo` but returns true for `/foo/`. Append a trailing slash to handle that quirk.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! itemPath . endsWith ( path . sep ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Note, this is safe because the constructor ensures the pattern has an absolute root.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // For example, formats like C: and C:foo on Windows are resolved to an aboslute root.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                itemPath  =  ` ${ itemPath } ${ path . sep } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Normalize slashes and trim unnecessary trailing slash
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            itemPath  =  pathHelper . safeTrimTrailingSeparator ( itemPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Match
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . minimatch . match ( itemPath ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  this . trailingSeparator  ?  internal _match _kind _1 . MatchKind . Directory  :  internal _match _kind _1 . MatchKind . All ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  internal _match _kind _1 . MatchKind . None ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Indicates  whether  the  pattern  may  match  descendants  of  the  specified  path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    partialMatch ( itemPath )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Normalize slashes and trim unnecessary trailing slash
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        itemPath  =  pathHelper . safeTrimTrailingSeparator ( itemPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // matchOne does not handle root path correctly
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( pathHelper . dirname ( itemPath )  ===  itemPath )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  this . rootRegExp . test ( itemPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . minimatch . matchOne ( itemPath . split ( IS _WINDOWS  ?  /\\+/  :  /\/+/ ) ,  this . minimatch . set [ 0 ] ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Escapes  glob  patterns  within  a  path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  globEscape ( s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  ( IS _WINDOWS  ?  s  :  s . replace ( /\\/g ,  '\\\\' ) )  // escape '\' on Linux/macOS
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . replace ( /(\[)(?=[^/]+\])/g ,  '[[]' )  // escape '[' when ']' follows within the path segment
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . replace ( /\?/g ,  '[?]' )  // escape '?'
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . replace ( /\*/g ,  '[*]' ) ;  // escape '*'
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Normalizes  slashes  and  ensures  absolute  root 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  fixupPattern ( pattern )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Empty
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert ( pattern ,  'pattern cannot be empty' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Must not contain `.` segment, unless first segment
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Must not contain `..` segment
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  literalSegments  =  new  internal _path _1 . Path ( pattern ) . segments . map ( x  =>  Pattern . getLiteral ( x ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert ( literalSegments . every ( ( x ,  i )  =>  ( x  !==  '.'  ||  i  ===  0 )  &&  x  !==  '..' ) ,  ` Invalid pattern ' ${ pattern } '. Relative pathing '.' and '..' is not allowed. ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Must not contain globs in root, e.g. Windows UNC path \\foo\b*r
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert ( ! pathHelper . hasRoot ( pattern )  ||  literalSegments [ 0 ] ,  ` Invalid pattern ' ${ pattern } '. Root segment must not contain globs. ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Normalize slashes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pattern  =  pathHelper . normalizeSeparators ( pattern ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Replace leading `.` segment
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( pattern  ===  '.'  ||  pattern . startsWith ( ` . ${ path . sep } ` ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pattern  =  Pattern . globEscape ( process . cwd ( ) )  +  pattern . substr ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Replace leading `~` segment
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  if  ( pattern  ===  '~'  ||  pattern . startsWith ( ` ~ ${ path . sep } ` ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  homedir  =  os . homedir ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            assert ( homedir ,  'Unable to determine HOME directory' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            assert ( pathHelper . hasAbsoluteRoot ( homedir ) ,  ` Expected HOME directory to be a rooted path. Actual ' ${ homedir } ' ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pattern  =  Pattern . globEscape ( homedir )  +  pattern . substr ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Replace relative drive root, e.g. pattern is C: or C:foo
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  if  ( IS _WINDOWS  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ( pattern . match ( /^[A-Z]:$/i )  ||  pattern . match ( /^[A-Z]:[^\\]/i ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  root  =  pathHelper . ensureAbsoluteRoot ( 'C:\\dummy-root' ,  pattern . substr ( 0 ,  2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( pattern . length  >  2  &&  ! root . endsWith ( '\\' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                root  +=  '\\' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pattern  =  Pattern . globEscape ( root )  +  pattern . substr ( 2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Replace relative root, e.g. pattern is \ or \foo
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  if  ( IS _WINDOWS  &&  ( pattern  ===  '\\'  ||  pattern . match ( /^\\[^\\]/ ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  root  =  pathHelper . ensureAbsoluteRoot ( 'C:\\dummy-root' ,  '\\' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! root . endsWith ( '\\' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                root  +=  '\\' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pattern  =  Pattern . globEscape ( root )  +  pattern . substr ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Otherwise ensure absolute root
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pattern  =  pathHelper . ensureAbsoluteRoot ( Pattern . globEscape ( process . cwd ( ) ) ,  pattern ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  pathHelper . normalizeSeparators ( pattern ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Attempts  to  unescape  a  pattern  segment  to  create  a  literal  path  segment . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Otherwise  returns  empty  string . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  getLiteral ( segment )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  literal  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( let  i  =  0 ;  i  <  segment . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  c  =  segment [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Escape
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( c  ===  '\\'  &&  ! IS _WINDOWS  &&  i  +  1  <  segment . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                literal  +=  segment [ ++ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Wildcard
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( c  ===  '*'  ||  c  ===  '?' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Character set
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( c  ===  '['  &&  i  +  1  <  segment . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  set  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  closed  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for  ( let  i2  =  i  +  1 ;  i2  <  segment . length ;  i2 ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  c2  =  segment [ i2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Escape
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( c2  ===  '\\'  &&  ! IS _WINDOWS  &&  i2  +  1  <  segment . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        set  +=  segment [ ++ i2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Closed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    else  if  ( c2  ===  ']' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        closed  =  i2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Otherwise
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        set  +=  c2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Closed?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( closed  >=  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Cannot convert
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( set . length  >  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        return  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Convert to literal
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( set )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        literal  +=  set ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        i  =  closed ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Otherwise fall thru
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Append
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            literal  +=  c ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  literal ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Escapes  regexp  special  characters 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  https : //javascript.info/regexp-escaping
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  regExpEscape ( s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  s . replace ( /[[\\^$.|?*+()]/g ,  '\\$&' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . Pattern  =  Pattern ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=internal-pattern.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  950 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  url  =  _ _webpack _require _ _ ( 835 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getProxyUrl ( reqUrl )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  usingSsl  =  reqUrl . protocol  ===  'https:' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  proxyUrl ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( checkBypass ( reqUrl ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  proxyUrl ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  proxyVar ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( usingSsl )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        proxyVar  =  process . env [ 'https_proxy' ]  ||  process . env [ 'HTTPS_PROXY' ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        proxyVar  =  process . env [ 'http_proxy' ]  ||  process . env [ 'HTTP_PROXY' ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( proxyVar )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        proxyUrl  =  url . parse ( proxyVar ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  proxyUrl ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getProxyUrl  =  getProxyUrl ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  checkBypass ( reqUrl )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! reqUrl . hostname )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    let  noProxy  =  process . env [ 'no_proxy' ]  ||  process . env [ 'NO_PROXY' ]  ||  '' ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    if  ( ! noProxy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Determine the request port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  reqPort ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( reqUrl . port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        reqPort  =  Number ( reqUrl . port ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  if  ( reqUrl . protocol  ===  'http:' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        reqPort  =  80 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  if  ( reqUrl . protocol  ===  'https:' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        reqPort  =  443 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Format the request hostname and hostname with port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  upperReqHosts  =  [ reqUrl . hostname . toUpperCase ( ) ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  reqPort  ===  'number' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        upperReqHosts . push ( ` ${ upperReqHosts [ 0 ] } : ${ reqPort } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Compare request host against noproxy
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 15:43:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  ( let  upperNoProxyItem  of  noProxy 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . split ( ',' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . map ( x  =>  x . trim ( ) . toUpperCase ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . filter ( x  =>  x ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-28 17:18:53 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        if  ( upperReqHosts . some ( x  =>  x  ===  upperNoProxyItem ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . checkBypass  =  checkBypass ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  972 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  assert  =  _ _webpack _require _ _ ( 357 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  path  =  _ _webpack _require _ _ ( 622 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  IS _WINDOWS  =  process . platform  ===  'win32' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Similar  to  path . dirname  except  normalizes  the  path  separators  and  slightly  better  handling  for  Windows  UNC  paths . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  For  example ,  on  Linux / macOS : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  ` /               => / ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  ` /hello          => / ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  For  example ,  on  Windows : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  ` C: \              => C: \` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  ` C: \h ello        => C: \` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  ` C:              => C: ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  ` C:hello         => C: ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  ` \                =>  \` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  ` \h ello          =>  \` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  ` \\ hello         =>  \\ hello ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  ` \\ hello \w orld   =>  \\ hello \w orld ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  dirname ( p )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Normalize slashes and trim unnecessary trailing slash
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    p  =  safeTrimTrailingSeparator ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Windows UNC root, e.g. \\hello or \\hello\world
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( IS _WINDOWS  &&  /^\\\\[^\\]+(\\[^\\]+)?$/ . test ( p ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Get dirname
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  result  =  path . dirname ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Trim trailing slash for Windows UNC root, e.g. \\hello\world\
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( IS _WINDOWS  &&  /^\\\\[^\\]+\\[^\\]+\\$/ . test ( result ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        result  =  safeTrimTrailingSeparator ( result ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . dirname  =  dirname ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Roots  the  path  if  not  already  rooted .  On  Windows ,  relative  roots  like  ` \` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  or  ` C: `  are  expanded  based  on  the  current  working  directory . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  ensureAbsoluteRoot ( root ,  itemPath )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert ( root ,  ` ensureAbsoluteRoot parameter 'root' must not be empty ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert ( itemPath ,  ` ensureAbsoluteRoot parameter 'itemPath' must not be empty ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Already rooted
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( hasAbsoluteRoot ( itemPath ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  itemPath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Windows
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( IS _WINDOWS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Check for itemPath like C: or C:foo
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( itemPath . match ( /^[A-Z]:[^\\/]|^[A-Z]:$/i ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  cwd  =  process . cwd ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            assert ( cwd . match ( /^[A-Z]:\\/i ) ,  ` Expected current directory to start with an absolute drive root. Actual ' ${ cwd } ' ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Drive letter matches cwd? Expand to cwd
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( itemPath [ 0 ] . toUpperCase ( )  ===  cwd [ 0 ] . toUpperCase ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Drive only, e.g. C:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( itemPath . length  ===  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Preserve specified drive letter case (upper or lower)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  ` ${ itemPath [ 0 ] } : \\ ${ cwd . substr ( 3 ) } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Drive + path, e.g. C:foo
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( ! cwd . endsWith ( '\\' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        cwd  +=  '\\' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Preserve specified drive letter case (upper or lower)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  ` ${ itemPath [ 0 ] } : \\ ${ cwd . substr ( 3 ) } ${ itemPath . substr ( 2 ) } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Different drive
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  ` ${ itemPath [ 0 ] } : \\ ${ itemPath . substr ( 2 ) } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Check for itemPath like \ or \foo
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  if  ( normalizeSeparators ( itemPath ) . match ( /^\\$|^\\[^\\]/ ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  cwd  =  process . cwd ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            assert ( cwd . match ( /^[A-Z]:\\/i ) ,  ` Expected current directory to start with an absolute drive root. Actual ' ${ cwd } ' ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  ` ${ cwd [ 0 ] } : \\ ${ itemPath . substr ( 1 ) } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert ( hasAbsoluteRoot ( root ) ,  ` ensureAbsoluteRoot parameter 'root' must have an absolute root ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Otherwise ensure root ends with a separator
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( root . endsWith ( '/' )  ||  ( IS _WINDOWS  &&  root . endsWith ( '\\' ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Intentionally empty
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Append separator
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        root  +=  path . sep ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  root  +  itemPath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . ensureAbsoluteRoot  =  ensureAbsoluteRoot ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  On  Linux / macOS ,  true  if  path  starts  with  ` / ` .  On  Windows ,  true  for  paths  like : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  ` \\ hello \s hare `  and  ` C: \h ello `  ( and  using  alternate  separator ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  hasAbsoluteRoot ( itemPath )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert ( itemPath ,  ` hasAbsoluteRoot parameter 'itemPath' must not be empty ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Normalize separators
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    itemPath  =  normalizeSeparators ( itemPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Windows
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( IS _WINDOWS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // E.g. \\hello\share or C:\hello
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  itemPath . startsWith ( '\\\\' )  ||  /^[A-Z]:\\/i . test ( itemPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // E.g. /hello
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  itemPath . startsWith ( '/' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . hasAbsoluteRoot  =  hasAbsoluteRoot ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  On  Linux / macOS ,  true  if  path  starts  with  ` / ` .  On  Windows ,  true  for  paths  like : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  ` \` ,  ` \ hello ` ,  ` \ \ hello \ share ` ,  ` C : ` , and  ` C : \ hello `  (and using alternate separator).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  hasRoot ( itemPath )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert ( itemPath ,  ` isRooted parameter 'itemPath' must not be empty ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Normalize separators
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    itemPath  =  normalizeSeparators ( itemPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Windows
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( IS _WINDOWS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // E.g. \ or \hello or \\hello
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // E.g. C: or C:\hello
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  itemPath . startsWith ( '\\' )  ||  /^[A-Z]:/i . test ( itemPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // E.g. /hello
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  itemPath . startsWith ( '/' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . hasRoot  =  hasRoot ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Removes  redundant  slashes  and  converts  ` / `  to  ` \`  on Windows
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  normalizeSeparators ( p )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    p  =  p  ||  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Windows
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( IS _WINDOWS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Convert slashes on Windows
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        p  =  p . replace ( /\//g ,  '\\' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Remove redundant slashes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  isUnc  =  /^\\\\+[^\\]/ . test ( p ) ;  // e.g. \\hello
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  ( isUnc  ?  '\\'  :  '' )  +  p . replace ( /\\\\+/g ,  '\\' ) ;  // preserve leading \\ for UNC
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Remove redundant slashes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  p . replace ( /\/\/+/g ,  '/' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . normalizeSeparators  =  normalizeSeparators ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Normalizes  the  path  separators  and  trims  the  trailing  separator  ( when  safe ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  For  example ,  ` /foo/ => /foo `  but  ` / => / ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  safeTrimTrailingSeparator ( p )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Short-circuit if empty
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Normalize separators
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    p  =  normalizeSeparators ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // No trailing slash
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! p . endsWith ( path . sep ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Check '/' on Linux/macOS and '\' on Windows
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( p  ===  path . sep )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // On Windows check if drive root. E.g. C:\
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( IS _WINDOWS  &&  /^[A-Z]:\\$/i . test ( p ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Otherwise trim trailing slash
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  p . substr ( 0 ,  p . length  -  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . safeTrimTrailingSeparator  =  safeTrimTrailingSeparator ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=internal-path-helper.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  } ) ;