<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
a
    XC?h                     @   s  d dl a d dlZd dlad dlZd dlZtjdkZerHd dlZd dl	Z	nd dl
Zer^ddgZndgZed  ZeeZdeZdd eD ZdZd	Zee Zd
d Zdd Zdd Zdd Zerdd Zndd Zdd Zdd Zdd Zdd Zdd Zer
dd  Znd!d  Zdld#d$Ze ej!Z"d%#d&d'd( Z$e%&e$d'Z'd)Z(d*Z)d+gZ*d,gZ+e+ Z,Z-dmdd-d.d/Z.d0d1 Z/d2d3 Z0d4d5 Z1d6d7 Z2d8d9 Z3d:d; Z4d<d= Z5d>d? Z6d@dA Z7dndBdCZ8dodDdEZ9dpdGdHZ:dIdJ Z;e< Z=dqde=dKdLdMZ>G dNdO dOZ?G dPdQ dQZ@G dRdS dSe@ZAG dTdU dUZBG dVdW dWeBeAZCG dXdY dYeBe@ZDg ZEG dZd[ d[eBe@ZFG d\d] d]ZGG d^d_ d_ZHG d`da daZIG dbdc dcZJdrdddeZKdfdg ZLdhdi ZMdjdk ZNdS )s    NZwin32\/ c                 C   s   h | ]}d | qS : .0sr   r   B/opt/alt/python39/lib64/python3.9/importlib/_bootstrap_external.py	<setcomp>/       r   )win)cygwindarwinc                     s<   t jtr0t jtrd nd  fdd} ndd } | S )NPYTHONCASEOKs   PYTHONCASEOKc                      s   t jj o tjv S N)sysflagsignore_environment_osenvironr   keyr   r   _relax_case@   s    z%_make_relax_case.<locals>._relax_casec                   S   s   dS )NFr   r   r   r   r   r   D   s    )r   platform
startswith_CASE_INSENSITIVE_PLATFORMS#_CASE_INSENSITIVE_PLATFORMS_STR_KEY)r   r   r   r   _make_relax_case9   s    r   c                 C   s   t | d@ ddS )N       little)intto_bytes)xr   r   r   _pack_uint32J   s    r&   c                 C   s   t | dS Nr"   r#   
from_bytesdatar   r   r   _unpack_uint32O   s    r,   c                 C   s   t | dS r'   r(   r*   r   r   r   _unpack_uint16T   s    r-   c                  G   s   | sdS t | dkr| d S d}g }ttj| D ]z\}}|tsL|trf|tpX|}t	| g}q0|dr|
 |
 kr|}|g}q|| q0|p|}|| q0dd |D }t |dkr|d s|t	 S |t	| S )Nr      r   r   c                 S   s   g | ]}|r| tqS r   rstrippath_separatorsr	   pr   r   r   
<listcomp>r   r   _path_join.<locals>.<listcomp>)lenmapr   _path_splitrootr   path_sep_tupleendswithr0   r1   path_sepcasefoldappendjoin)
path_partsrootpathZnew_roottailr   r   r   
_path_join[   s*    
rC   c                  G   s   t dd | D S )Nc                 S   s   g | ]}|r| tqS r   r/   )r	   partr   r   r   r4   {   s   r5   )r;   r>   )r?   r   r   r   rC   y   s    
c                    sB   t  fddtD }|dk r&d fS  d |  |d d  fS )Nc                 3   s   | ]}  |V  qd S r   )rfindr2   rA   r   r   	<genexpr>   r   z_path_split.<locals>.<genexpr>r   r   r.   )maxr1   )rA   ir   rF   r   _path_split   s    rJ   c                 C   s
   t | S r   )r   statrF   r   r   r   
_path_stat   s    rL   c                 C   s0   zt | }W n ty    Y dS 0 |jd@ |kS )NFi   )rL   OSErrorst_mode)rA   mode	stat_infor   r   r   _path_is_mode_type   s
    rQ   c                 C   s
   t | dS )Ni   )rQ   rF   r   r   r   _path_isfile   s    rR   c                 C   s   | st  } t| dS )Ni @  )r   getcwdrQ   rF   r   r   r   _path_isdir   s    rT   c                 C   s>   | sdS t | d dd}t|dko<|dp<|dS )NFr   r   r   r.   z\\)r   r8   replacer6   r   r:   )rA   r@   r   r   r   _path_isabs   s    rV   c                 C   s
   |  tS r   )r   r1   rF   r   r   r   rV      s      c                 C   s   d | t| }t|tjtjB tjB |d@ }zFt|d}|	| W d    n1 s^0    Y  t
||  W n6 ty   zt| W n ty   Y n0  Y n0 d S )N{}.{}rW   wb)formatidr   openO_EXCLO_CREATO_WRONLY_ioFileIOwriterU   rM   unlink)rA   r+   rO   path_tmpfdfiler   r   r   _write_atomic   s    (rg   ia     r"   s   
__pycache__zopt-z.pyz.pyc)optimizationc                C   sX  |d ur4t dt |d ur(d}t||r0dnd}t| } t| \}}|d\}}}tj	j
}	|	d u rrtdd|r~|n|||	g}
|d u rtjjdkrd}ntjj}t|}|dkr| std|d	|
t|}
|
td  }tjd urLt|stt |}|d d
kr8|d tvr8|dd  }ttj|t|S t|t|S )NzFthe debug_override parameter is deprecated; use 'optimization' insteadz2debug_override or optimization must be set to Noner   r.   .$sys.implementation.cache_tag is Noner   z{!r} is not alphanumericz{}.{}{}r   rh   )	_warningswarnDeprecationWarning	TypeErrorr   fspathrJ   
rpartitionr   implementation	cache_tagNotImplementedErrorr>   r   optimizestrisalnum
ValueErrorrZ   _OPTBYTECODE_SUFFIXESpycache_prefixrV   rC   rS   r1   lstrip_PYCACHE)rA   debug_overriderj   messageheadrB   basesepresttagalmost_filenamefilenamer   r   r   cache_from_sourcei  sH    
	
r   c           
      C   s.  t jjd u rtdt| } t| \}}d}t jd urft jt	}|
|t rf|t|d  }d}|st|\}}|tkrtt d| |d}|dvrtd|n\|dkr|dd	d
 }|
tstdt|ttd  }| std|d|dd }	t||	td  S )Nrl   FTz not bottom-level directory in rk   >   rh      zexpected only 2 or 3 dots in r   rh   z5optimization portion of filename does not start with zoptimization level z is not an alphanumeric valuer   )r   rs   rt   ru   r   rq   rJ   r|   r0   r1   r   r;   r6   r~   ry   countrsplitrz   rx   	partitionrC   SOURCE_SUFFIXES)
rA   r   pycache_filenamefound_in_pycache_prefixstripped_pathpycache	dot_countrj   	opt_levelbase_filenamer   r   r   source_from_cache  s<    	





r   c              	   C   s|   t | dkrd S | d\}}}|r8| dd dkr<| S zt| }W n" ttfyj   | d d }Y n0 t|rx|S | S )Nr   rk   py)r6   rr   lowerr   ru   ry   rR   )bytecode_pathr   _	extensionsource_pathr   r   r   _get_sourcefile  s    r   c                 C   sH   |  ttr.z
t| W S  ty*   Y qD0 n|  ttr@| S d S d S r   )r:   tupler   r   ru   r{   )r   r   r   r   _get_cached  s    
r   c                 C   s2   zt | j}W n ty$   d}Y n0 |dO }|S )NrW      )rL   rN   rM   )rA   rO   r   r   r   
_calc_mode  s    
r   c                    sB   d fdd	}z
t j}W n ty2   dd }Y n0 ||  |S )Nc                    sH   |d u r| j }n | j |kr0td| j |f |d | |g|R i |S )Nzloader for %s cannot handle %sname)r   ImportError)selfr   argskwargsmethodr   r   _check_name_wrapper  s    
z(_check_name.<locals>._check_name_wrapperc                 S   s8   dD ] }t ||rt| |t|| q| j|j d S )N)
__module____name____qualname____doc__)hasattrsetattrgetattr__dict__update)newoldrU   r   r   r   _wrap  s    
z_check_name.<locals>._wrap)N)
_bootstrapr   	NameError)r   r   r   r   r   r   _check_name  s    

r   c                 C   s<   |  |\}}|d u r8t|r8d}t||d t |S )Nz,Not importing directory {}: missing __init__r   )find_loaderr6   rm   rn   rZ   ImportWarning)r   fullnameloaderportionsmsgr   r   r   _find_module_shim  s
    
r   c                 C   s   | d d }|t kr@d|d|}td| t|fi |t| dk rjd|}td| t|t| dd }|d@ rd	|d
|}t|fi ||S )Nr!   zbad magic number in z: {}   z(reached EOF while reading pyc header of    zinvalid flags z in )MAGIC_NUMBERr   _verbose_messager   r6   EOFErrorr,   )r+   r   exc_detailsmagicr   r   r   r   r   _classify_pyc0  s    
r   c                 C   sx   t | dd |d@ kr>d|}td| t|fi ||d urtt | dd |d@ krttd|fi |d S )Nr      r    zbytecode is stale for r   r   )r,   r   r   r   )r+   source_mtimesource_sizer   r   r   r   r   r   _validate_timestamp_pycQ  s    
r   c                 C   s*   | dd |kr&t d|fi |d S )Nr   r   z.hash in bytecode doesn't match hash of source )r   )r+   source_hashr   r   r   r   r   _validate_hash_pycm  s    r   c                 C   sP   t | }t|tr8td| |d ur4t|| |S td	|||dd S )Nzcode object from {!r}zNon-code object in {!r}r   rA   )
marshalloads
isinstance
_code_typer   r   _imp_fix_co_filenamer   rZ   )r+   r   r   r   coder   r   r   _compile_bytecode  s    


r   c                 C   sF   t t}|td |t| |t| |t|  |S Nr   	bytearrayr   extendr&   r   dumps)r   mtimer   r+   r   r   r   _code_to_timestamp_pyc  s    r   Tc                 C   s@   t t}d|d> B }|t| || |t|  |S )Nr.   r   )r   r   checkedr+   r   r   r   r   _code_to_hash_pyc  s    
r   c                 C   s>   dd l }t| j}||}td d}|| |d S )Nr   T)tokenizer`   BytesIOreadlinedetect_encodingIncrementalNewlineDecoderdecode)source_bytesr   source_bytes_readlineencodingnewline_decoderr   r   r   decode_source  s
    
r   r   submodule_search_locationsc          	      C   s  |d u r:d}t |drDz|| }W qD ty6   Y qD0 n
t|}tj| ||d}d|_|d u rt D ]*\}}|	t
|rh|| |}||_ qqhd S |tu rt |drz|| }W n ty   Y q0 |rg |_n||_|jg kr|rt|d }|j| |S )Nz	<unknown>get_filenameoriginT
is_packager   )r   r   r   r   rq   r   
ModuleSpec_set_fileattr_get_supported_file_loadersr:   r   r   	_POPULATEr   r   rJ   r=   )	r   locationr   r   specloader_classsuffixesr   dirnamer   r   r   spec_from_file_location  s>    



r   c                   @   sL   e Zd ZdZdZdZedd Zedd Zedd	d
Z	edddZ
dS )WindowsRegistryFinderz;Software\Python\PythonCore\{sys_version}\Modules\{fullname}zASoftware\Python\PythonCore\{sys_version}\Modules\{fullname}\DebugFc                 C   s6   zt t j|W S  ty0   t t j| Y S 0 d S r   )winregOpenKeyHKEY_CURRENT_USERrM   HKEY_LOCAL_MACHINE)clsr   r   r   r   _open_registry  s    z$WindowsRegistryFinder._open_registryc                 C   s   | j r| j}n| j}|j|dtjd d  d}z:| |}t|d}W d    n1 s^0    Y  W n t	y~   Y d S 0 |S )Nz%d.%drh   )r   sys_versionr   )
DEBUG_BUILDREGISTRY_KEY_DEBUGREGISTRY_KEYrZ   r   version_infor  r  
QueryValuerM   )r  r   registry_keyr   hkeyfilepathr   r   r   _search_registry  s    .z&WindowsRegistryFinder._search_registryNc                 C   sx   |  |}|d u rd S zt| W n ty6   Y d S 0 t D ]4\}}|t|r>tj|||||d}|  S q>d S )Nr   )r  rL   rM   r   r:   r   r   spec_from_loader)r  r   rA   targetr  r   r   r   r   r   r   	find_spec  s    
zWindowsRegistryFinder.find_specc                 C   s"   |  ||}|d ur|jS d S d S r   r  r   r  r   rA   r   r   r   r   find_module.  s    z!WindowsRegistryFinder.find_module)NN)N)r   r   r   r
  r	  r  classmethodr  r  r  r  r   r   r   r   r     s   

r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
_LoaderBasicsc                 C   s@   t | |d }|ddd }|dd }|dko>|dkS )Nr.   rk   r   rh   __init__)rJ   r   r   rr   )r   r   r   filename_base	tail_namer   r   r   r   A  s    z_LoaderBasics.is_packagec                 C   s   d S r   r   r   r   r   r   r   create_moduleI  s    z_LoaderBasics.create_modulec                 C   s8   |  |j}|d u r$td|jtt||j d S )Nz4cannot load module {!r} when get_code() returns None)get_coder   r   rZ   r   _call_with_frames_removedexecr   )r   moduler   r   r   r   exec_moduleL  s    z_LoaderBasics.exec_modulec                 C   s   t | |S r   )r   _load_module_shimr   r   r   r   r   load_moduleT  s    z_LoaderBasics.load_moduleN)r   r   r   r   r  r"  r%  r   r   r   r   r  <  s   r  c                   @   sJ   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZddddZdd Z	dS )SourceLoaderc                 C   s   t d S r   )rM   r   rA   r   r   r   
path_mtime[  s    zSourceLoader.path_mtimec                 C   s   d|  |iS )Nr   )r(  r'  r   r   r   
path_statsc  s    zSourceLoader.path_statsc                 C   s   |  ||S r   )set_data)r   r   
cache_pathr+   r   r   r   _cache_bytecodeq  s    zSourceLoader._cache_bytecodec                 C   s   d S r   r   )r   rA   r+   r   r   r   r*  {  s    zSourceLoader.set_datac              
   C   sT   |  |}z| |}W n2 tyJ } ztd|d|W Y d }~n
d }~0 0 t|S )Nz'source not available through get_data()r   )r   get_datarM   r   r   )r   r   rA   r   excr   r   r   
get_source  s    
zSourceLoader.get_sourcer   )	_optimizec                C   s   t jt||dd|dS )Nr   T)dont_inheritrv   )r   r  compile)r   r+   rA   r0  r   r   r   source_to_code  s    zSourceLoader.source_to_codec              	   C   s  |  |}d }d }d }d}d}zt|}W n tyB   d }Y n*0 z| |}	W n tyf   Y n0 t|	d }z| |}
W n ty   Y n0 ||d}zt|
||}t|
dd  }|d@ dk}|r|d@ dk}t	j
d	kr2|st	j
d
kr2| |}t	t|}t|
||| nt|
||	d || W n ttfyL   Y n 0 td|| t||||dS |d u r| |}| ||}td| tjs|d ur|d ur|r|d u rt	|}t|||}
nt||t|}
z| |||
 W n ty   Y n0 |S )NFTr   r   r   r.   r   rh   neveralwayssizez{} matches {})r   r   r   zcode object from {})r   r   ru   r)  rM   r#   r-  r   
memoryviewr   check_hash_based_pycsr   _RAW_MAGIC_NUMBERr   r   r   r   r   r   r   r3  r   dont_write_bytecoder   r   r6   r,  )r   r   r   r   r   r   
hash_basedcheck_sourcer   str+   r   r   
bytes_datacode_objectr   r   r   r    s    





zSourceLoader.get_codeN)
r   r   r   r(  r)  r,  r*  r/  r3  r  r   r   r   r   r&  Y  s   

r&  c                       sx   e Zd Zdd Zdd Zdd Ze fddZed	d
 Zdd Z	edd Z
dd Zdd Zdd Zdd Z  ZS )
FileLoaderc                 C   s   || _ || _d S r   r   )r   r   rA   r   r   r   r    s    zFileLoader.__init__c                 C   s   | j |j ko| j|jkS r   	__class__r   r   otherr   r   r   __eq__  s    
zFileLoader.__eq__c                 C   s   t | jt | jA S r   hashr   rA   r   r   r   r   __hash__  s    zFileLoader.__hash__c                    s   t t| |S r   )superr@  r%  r$  rB  r   r   r%    s    
zFileLoader.load_modulec                 C   s   | j S r   rF   r$  r   r   r   r     s    zFileLoader.get_filenamec                 C   s~   t | ttfrFtt|}| W  d    S 1 s:0    Y  n4t|d}| W  d    S 1 sp0    Y  d S )Nr)r   r&  ExtensionFileLoaderr`   	open_coderw   readra   )r   rA   rf   r   r   r   r-    s
    (zFileLoader.get_datac                 C   s   |  |r| S d S r   )r   r   r!  r   r   r   get_resource_reader  s    
zFileLoader.get_resource_readerc                 C   s    t t| jd |}t|dS )Nr   rL  )rC   rJ   rA   r`   ra   r   resourcerA   r   r   r   open_resource  s    zFileLoader.open_resourcec                 C   s&   |  |sttt| jd |}|S r   )is_resourceFileNotFoundErrorrC   rJ   rA   rR  r   r   r   resource_path!  s    
zFileLoader.resource_pathc                 C   s(   t |v rdS tt| jd |}t|S )NFr   )r;   rC   rJ   rA   rR   r   r   rA   r   r   r   rU  '  s    zFileLoader.is_resourcec                 C   s   t tt| jd S r   )iterr   listdirrJ   rA   rH  r   r   r   contents-  s    zFileLoader.contents)r   r   r   r  rE  rI  r   r%  r   r-  rQ  rT  rW  rU  r[  __classcell__r   r   rK  r   r@    s   

r@  c                   @   s*   e Zd Zdd Zdd ZddddZd	S )
SourceFileLoaderc                 C   s   t |}|j|jdS )N)r   r6  )rL   st_mtimest_size)r   rA   r=  r   r   r   r)  5  s    zSourceFileLoader.path_statsc                 C   s   t |}| j|||dS )N_mode)r   r*  )r   r   r   r+   rO   r   r   r   r,  :  s    z SourceFileLoader._cache_bytecoderW   r`  c          	      C   s   t |\}}g }|r4t|s4t |\}}|| qt|D ]h}t||}zt| W q< tyn   Y q<Y q< ty } zt	
d|| W Y d }~ d S d }~0 0 q<zt||| t	
d| W n4 t y } zt	
d|| W Y d }~n
d }~0 0 d S )Nzcould not create {!r}: {!r}zcreated {!r})rJ   rT   r=   reversedrC   r   mkdirFileExistsErrorrM   r   r   rg   )	r   rA   r+   ra  parentr   r?   rD   r.  r   r   r   r*  ?  s.    
zSourceFileLoader.set_dataN)r   r   r   r)  r,  r*  r   r   r   r   r]  1  s   r]  c                   @   s   e Zd Zdd Zdd ZdS )SourcelessFileLoaderc                 C   sD   |  |}| |}||d}t||| tt|dd  ||dS )Nr   r   )r   r   )r   r-  r   r   r7  )r   r   rA   r+   r   r   r   r   r  b  s    

zSourcelessFileLoader.get_codec                 C   s   d S r   r   r$  r   r   r   r/  r  s    zSourcelessFileLoader.get_sourceN)r   r   r   r  r/  r   r   r   r   rf  ^  s   rf  c                   @   sX   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
edd ZdS )rM  c                 C   s>   || _ t|s4ztt |}W n ty2   Y n0 || _d S r   )r   rV   rC   r   rS   rM   rA   rX  r   r   r   r    s    zExtensionFileLoader.__init__c                 C   s   | j |j ko| j|jkS r   rA  rC  r   r   r   rE    s    
zExtensionFileLoader.__eq__c                 C   s   t | jt | jA S r   rF  rH  r   r   r   rI    s    zExtensionFileLoader.__hash__c                 C   s$   t tj|}t d|j| j |S )Nz&extension module {!r} loaded from {!r})r   r  r   create_dynamicr   r   rA   )r   r   r!  r   r   r   r    s    z!ExtensionFileLoader.create_modulec                 C   s$   t tj| t d| j| j d S )Nz(extension module {!r} executed from {!r})r   r  r   exec_dynamicr   r   rA   rP  r   r   r   r"    s    zExtensionFileLoader.exec_modulec                    s$   t | jd  t fddtD S )Nr.   c                 3   s   | ]} d | kV  qdS )r  Nr   r	   suffix	file_namer   r   rG     s   z1ExtensionFileLoader.is_package.<locals>.<genexpr>)rJ   rA   anyEXTENSION_SUFFIXESr$  r   rk  r   r     s    zExtensionFileLoader.is_packagec                 C   s   d S r   r   r$  r   r   r   r    s    zExtensionFileLoader.get_codec                 C   s   d S r   r   r$  r   r   r   r/    s    zExtensionFileLoader.get_sourcec                 C   s   | j S r   rF   r$  r   r   r   r     s    z ExtensionFileLoader.get_filenameN)r   r   r   r  rE  rI  r  r"  r   r  r/  r   r   r   r   r   r   rM  {  s   	rM  c                   @   sh   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )_NamespacePathr   c                 C   s,   || _ || _t|  | _| j| _|| _d S r   )_name_pathr   _get_parent_path_last_parent_path_epoch_last_epoch_path_finderr   r   rA   path_finderr   r   r   r    s
    z_NamespacePath.__init__c                 C   s&   | j d\}}}|dkrdS |dfS )Nrk   r   )r   rA   __path__)rp  rr   )r   re  dotmer   r   r   _find_parent_path_names  s    z&_NamespacePath._find_parent_path_namesc                 C   s   |   \}}ttj| |S r   )r|  r   r   modules)r   parent_module_namepath_attr_namer   r   r   rr    s    z_NamespacePath._get_parent_pathc                 C   sd   t |  }|| jks"| j| jkr^| | j|}|d urP|jd u rP|jrP|j| _	|| _| j| _| j	S r   )
r   rr  rs  rt  ru  rv  rp  r   r   rq  )r   parent_pathr   r   r   r   _recalculate  s    z_NamespacePath._recalculatec                 C   s   t |  S r   )rY  r  rH  r   r   r   __iter__  s    z_NamespacePath.__iter__c                 C   s   |   | S r   r  )r   indexr   r   r   __getitem__  s    z_NamespacePath.__getitem__c                 C   s   || j |< d S r   )rq  )r   r  rA   r   r   r   __setitem__  s    z_NamespacePath.__setitem__c                 C   s   t |  S r   )r6   r  rH  r   r   r   __len__  s    z_NamespacePath.__len__c                 C   s   d | jS )Nz_NamespacePath({!r}))rZ   rq  rH  r   r   r   __repr__  s    z_NamespacePath.__repr__c                 C   s   ||   v S r   r  r   itemr   r   r   __contains__  s    z_NamespacePath.__contains__c                 C   s   | j | d S r   )rq  r=   r  r   r   r   r=     s    z_NamespacePath.appendN)r   r   r   rt  r  r|  rr  r  r  r  r  r  r  r  r=   r   r   r   r   ro    s   	
ro  c                   @   sP   e Zd Zdd Zedd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd ZdS )_NamespaceLoaderc                 C   s   t |||| _d S r   )ro  rq  rw  r   r   r   r    s    z_NamespaceLoader.__init__c                 C   s   d |jS )Nz<module {!r} (namespace)>)rZ   r   )r  r!  r   r   r   module_repr  s    z_NamespaceLoader.module_reprc                 C   s   dS )NTr   r$  r   r   r   r     s    z_NamespaceLoader.is_packagec                 C   s   dS Nr   r   r$  r   r   r   r/  
  s    z_NamespaceLoader.get_sourcec                 C   s   t dddddS )Nr   z<string>r   T)r1  )r2  r$  r   r   r   r    s    z_NamespaceLoader.get_codec                 C   s   d S r   r   r  r   r   r   r    s    z_NamespaceLoader.create_modulec                 C   s   d S r   r   rP  r   r   r   r"    s    z_NamespaceLoader.exec_modulec                 C   s   t d| j t | |S )Nz&namespace module loaded with path {!r})r   r   rq  r#  r$  r   r   r   r%    s    z_NamespaceLoader.load_moduleN)r   r   r   r  r  r  r   r/  r  r  r"  r%  r   r   r   r   r    s   
r  c                   @   sr   e Zd Zedd Zedd Zedd Zedd Zedd
dZedddZ	edddZ
edd Zd	S )
PathFinderc                 C   sN   t tj D ],\}}|d u r(tj|= qt|dr|  qt jd7  _d S )Ninvalidate_cachesr.   )listr   path_importer_cacheitemsr   r  ro  rt  )r  r   finderr   r   r   r  (  s    


zPathFinder.invalidate_cachesc              	   C   sR   t jd urt jstdt t jD ]*}z||W   S  tyJ   Y q"Y q"0 q"d S )Nzsys.path_hooks is empty)r   
path_hooksrm   rn   r   r   )r  rA   hookr   r   r   _path_hooks5  s    
zPathFinder._path_hooksc                 C   sd   |dkr*zt  }W n ty(   Y d S 0 ztj| }W n& ty^   | |}|tj|< Y n0 |S r  )r   rS   rV  r   r  KeyErrorr  )r  rA   r  r   r   r   _path_importer_cacheB  s    
zPathFinder._path_importer_cachec                 C   sR   t |dr||\}}n||}g }|d ur<t||S t|d }||_|S )Nr   )r   r   r  r   r  r   r   )r  r   r  r   r   r   r   r   r   _legacy_get_specX  s    

zPathFinder._legacy_get_specNc           	      C   s   g }|D ]}t |ttfsq| |}|d urt|drF|||}n| ||}|d u r\q|jd urn|  S |j}|d u rt	d|
| qt|d }||_|S )Nr  zspec missing loader)r   rw   bytesr  r   r  r  r   r   r   r   r   r   )	r  r   rA   r  namespace_pathentryr  r   r   r   r   r   	_get_specg  s(    


zPathFinder._get_specc                 C   sd   |d u rt j}| |||}|d u r(d S |jd u r\|j}|rVd |_t||| j|_|S d S n|S d S r   )r   rA   r  r   r   r   ro  )r  r   rA   r  r   r  r   r   r   r    s    
zPathFinder.find_specc                 C   s   |  ||}|d u rd S |jS r   r  r  r   r   r   r    s    zPathFinder.find_modulec                 O   s   ddl m} |j|i |S )Nr   )MetadataPathFinder)importlib.metadatar  find_distributions)r  r   r   r  r   r   r   r    s    
zPathFinder.find_distributions)N)NN)N)r   r   r   r  r  r  r  r  r  r  r  r  r   r   r   r   r  $  s    



r  c                   @   sV   e Zd Zdd Zdd ZeZdd Zdd Zdd
dZ	dd Z
edd Zdd Zd	S )
FileFinderc                    sp   g }|D ] \ }|  fdd|D  q|| _|p6d| _t| jsVtt | j| _d| _t | _	t | _
d S )Nc                 3   s   | ]}| fV  qd S r   r   ri  r   r   r   rG     r   z&FileFinder.__init__.<locals>.<genexpr>rk   r   )r   _loadersrA   rV   rC   r   rS   _path_mtimeset_path_cache_relaxed_path_cache)r   rA   loader_detailsloadersr   r   r  r   r    s    

zFileFinder.__init__c                 C   s
   d| _ d S )Nr   )r  rH  r   r   r   r    s    zFileFinder.invalidate_cachesc                 C   s*   |  |}|d u rd g fS |j|jp&g fS r   )r  r   r   )r   r   r   r   r   r   r     s    
zFileFinder.find_loaderc                 C   s   |||}t ||||dS )Nr   )r   )r   r   r   rA   smslr  r   r   r   r   r    s    
zFileFinder._get_specNc              	   C   s~  d}| dd }zt| jp"t j}W n ty@   d}Y n0 || jkrZ|   || _t	 rp| j
}| }n
| j}|}||v rt| j|}| jD ]:\}	}
d|	 }t||}t|r| |
|||g|  S qt|}| jD ]p\}	}
zt| j||	 }W n ty   Y  d S 0 tjd|dd ||	 |v rt|r| |
||d |  S q|rztd| t|d }|g|_|S d S )	NFrk   rh   r   r  z	trying {})	verbosityzpossible namespace for {})rr   rL   rA   r   rS   r^  rM   r  _fill_cacher   r  r   r  rC   r  rR   r  rT   ry   r   r   r   r   )r   r   r  is_namespacetail_moduler   cachecache_module	base_pathrj  r   init_filename	full_pathr   r   r   r   r    sN    






zFileFinder.find_specc           	   
   C   s   | j }zt|pt }W n tttfy8   g }Y n0 tj	dsRt
|| _nJt
 }|D ]8}|d\}}}|rd|| }n|}|| q\|| _tj	trdd |D | _d S )Nr   rk   rX   c                 S   s   h | ]}|  qS r   )r   )r	   fnr   r   r   r   :  r   z)FileFinder._fill_cache.<locals>.<setcomp>)rA   r   rZ  rS   rV  PermissionErrorNotADirectoryErrorr   r   r   r  r  r   rZ   r   addr   r  )	r   rA   r[  lower_suffix_contentsr  r   rz  rj  new_namer   r   r   r    s"    
zFileFinder._fill_cachec                    s    fdd}|S )Nc                    s$   t | std| d | gR  S )Nzonly directories are supportedrF   )rT   r   rF   r  r  r   r   path_hook_for_FileFinderF  s    z6FileFinder.path_hook.<locals>.path_hook_for_FileFinderr   )r  r  r  r   r  r   	path_hook<  s    
zFileFinder.path_hookc                 C   s   d | jS )NzFileFinder({!r}))rZ   rA   rH  r   r   r   r  N  s    zFileFinder.__repr__)N)r   r   r   r  r  r   r  r   r  r  r  r  r  r  r   r   r   r   r    s   	
3
r  c                 C   s   |  d}|  d}|sB|r$|j}n||kr8t||}n
t||}|sTt|||d}z$|| d< || d< || d< || d< W n ty   Y n0 d S )N
__loader____spec__r  __file__
__cached__)getr   rf  r]  r   	Exception)nsr   pathname	cpathnamer   r   r   r   r   _fix_up_moduleT  s"    


r  c                  C   s&   t t f} ttf}ttf}| ||gS r   )rM  r   extension_suffixesr]  r   rf  r{   )
extensionssourcebytecoder   r   r   r   k  s    r   c           
   	   C   sj  | a t jat jatjt }ddgfdddgff}|D ]V\}}|d }|tjv r^tj| } qq4zt |}W  qW q4 ty   Y q4Y q40 q4tdt|d| t|d| t|d	d
| t|ddd |D  g d}|dkr|	d |D ]2}|tjvrt |}	n
tj| }	t|||	 qt|dt
  tt  |dkrft	d dtv rfdt_d S )Nposixr   ntr   r   zimportlib requires posix or ntr   r;   r1   r   _pathseps_with_colonc                 S   s   h | ]}d | qS r   r   r   r   r   r   r     r   z_setup.<locals>.<setcomp>)r`   rm   r   r  r   z.pywz_d.pydT)r   r   r   r}  r   _builtin_from_namer   r   r>   r=   r   rn  r   r  r   r   r  )
_bootstrap_moduleself_module
os_details
builtin_osr1   r;   	os_modulebuiltin_namesbuiltin_namebuiltin_moduler   r   r   _setupv  sD    









r  c                 C   s2   t |  t }tjtj| g tjt	 d S r   )
r  r   r   r  r   r  r  	meta_pathr=   r  )r  supported_loadersr   r   r   _install  s    r  )rW   )N)NNN)r   r   )T)N)N)Or   r`   r   rm   r   r   _MS_WINDOWSr  r   r  r  r1   r;   r   r9   r>   r  r   %_CASE_INSENSITIVE_PLATFORMS_BYTES_KEYr   r   r&   r,   r-   rC   rJ   rL   rQ   rR   rT   rV   rg   type__code__r   r$   r   r#   r)   r9  r~   rz   r   r{   DEBUG_BYTECODE_SUFFIXESOPTIMIZED_BYTECODE_SUFFIXESr   r   r   r   r   r   r   r   r   r   r   r   r   r   objectr   r   r   r  r&  r@  r]  rf  rn  rM  ro  r  r  r  r  r   r  r  r   r   r   r   <module>   s   





	


 G(!



D@ H-:E*  
9