
                                  S SK r S SKrS SKrS SKrS SKr\R
                  R                  rS rSr	Sr
Sr " S S\5      r " S S5      rg)	    N         c                       \ rS rSrSrg)ArchiveReadError#    N)__name__
__module____qualname____firstlineno____static_attributes__r	       &PyInstaller\loader\pyimod01_archive.pyr   r   #   s    r   r   c                   @    \ rS rSrSrSrS	S jr\S 5       rS
S jr	Sr
g)ZlibArchiveReader'   z
Reader for PyInstaller's PYZ (ZlibArchive) archive. The archive is used to store collected byte-compiled Python
modules, as individually-compressed entries.
s   PYZ Nc                     Xl         X l        0 U l        Uc  U R                  U5      u  U l         U l        [	        U R                   S5       nUR                  U R                  [        R                  5        UR                  [        U R                  5      5      nXPR                  :w  a  [        S5      eUR                  [        [        5      5      nU(       a  U[        :w  a  [        S5      e[        R                  " SUR                  S5      5      tpxUR                  U R                  U-   [        R                  5        [        [         R"                  " U5      5      U l        S S S 5        g ! , (       d  f       g = f)NrbzPYZ magic pattern mismatch!zPython magic pattern mismatch!z!i   )	_filename_start_offsettoc_parse_offset_from_filenameopenseekosSEEK_SETreadlen_PYZ_MAGIC_PATTERNr   PYTHON_MAGIC_NUMBERstructunpackdictmarshalload)	selffilenamestart_offsetcheck_pymagicfpmagicpymagic
toc_offset_s	            r   __init__ZlibArchiveReader.__init__.   s   !) 151Q1QRZ1[.DND.
 $..$'2GGD&&4GGC 7 789E///&'DEE ggc"567G,?!?&'GHH $]]4<NJ GGD&&3R[[AGLL,-DH% (''s   DE//
E=c                     SnU R                  S5      nUS:X  a  X4$  [        XS-   S 5      nU SU n X4$ ! [         a     X4$ f = f)zL
Parse the numeric offset from filename, stored as: `/path/to/file?offset`.
r   ?r   N)rfindint
ValueError)r)   offsetidxs      r   r   -ZlibArchiveReader._parse_offset_from_filenameO   sr    
 nnS!"9##	'(+,F~H
 	  			s   6 
AAc                 4   U R                   R                  U5      nUc  gUu  pEn [        U R                  S5       nUR	                  U R
                  U-   5        UR                  U5      nSSS5         [        R                  " W5      nU[        [        [        4;   a  U(       d  [        R                  " U5      nU$ ! , (       d  f       NY= f! [         a    [        SU R                   S35      ef = f! [          a  n	[#        SU< S35      U	eSn	A	ff = f)z
Extract data from entry with the given name.

If the entry belongs to a module or a package, the data is loaded (unmarshaled) into code object. To retrieve
raw data, set `raw` flag to True.
Nr   zERROR: z appears to have been moved or deleted since this application was launched. Continouation from this state is impossible. Exiting now.zFailed to unmarshal PYZ entry !)r   getr   r   r   r   r   FileNotFoundError
SystemExitzlib
decompressPYZ_ITEM_MODULEPYZ_ITEM_PKGPYZ_ITEM_NSPKGr&   loadsEOFErrorImportError)
r(   namerawentrytypecodeentry_offsetentry_lengthr,   objes
             r   extractZlibArchiveReader.extractc   s    T"=/4,	dnnd+r**\9:ggl+ ,	Q//#&CO\>JJSVmmC( 
+ ,+ ! 		 $..) *L L 		  	Q >thaHIqP	QsA   C 0B?,C 5AC7 ?
C	C C $C47
DDD)r   r   r   )NF)F)r
   r   r   r   __doc__r!   r1   staticmethodr   rQ   r   r	   r   r   r   r   '   s.     ".B    &$r   r   )r   r#   r&   rA   _frozen_importlib_bootstrap_externalMAGIC_NUMBERr"   rC   rD   PYZ_ITEM_DATArE   RuntimeErrorr   r   r	   r   r   <module>rZ      sX   " 
    ';;HH  	| 	` `r   