§
    Z)¢j�  ã                  óx   — d Z ddlmZ ddlZddlmZ ddlmZ dada	da
 G d„ d	e¦  «        Zdd„Zddd„Zdd„ZdS )z>Load a user-provided Oodle/ooz DLL. Never redistributes Oodle.é    )ÚannotationsN)ÚPathé   )Úfind_oodle_dllÚnonec                  ó   — e Zd ZdS )ÚOodleUnavailableN)Ú__name__Ú
__module__Ú__qualname__© ó    ú=C:\Projects\AutoPOE2\src\assistant_tool\ggpk_extract\oodle.pyr	   r	      s   € € € € € Ø€Dr   r	   ÚreturnÚstrc                 ó   — t           S ©N)Ú_BACKENDr   r   r   Úoodle_backendr      s   € Ý€Or   Úexplicitústr | Path | Noneúctypes.WinDLLc                óö  — t           �t           S t          | ¦  «        }|€t          d¦  «        ‚t          j        t          |¦  «        ¦  «        }t          |d¦  «        rÇ|j        }t          j        t          j	        t          j        t          j	        t          j
        t          j
        t          j
        t          j        t          j        t          j        t          j        t          j        t          j        t          j
        g|_        t          j	        |_        d|j        › �ada�nPt          |d¦  «        rÆ|j        }t          j        t          j
        t          j        t          j        t          j
        t          j
        t          j
        t          j        t          j        t          j        t          j        t          j        t          j        t          j
        g|_        t          j
        |_        d|j        › �adanzt          |d¦  «        rX|j        }t          j        t          j        t          j        t          j        g|_        t          j
        |_        d	|j        › �ad
ant          |› d�¦  «        ‚|a |S )Nz…Oodle/ooz DLL not found. PoE2 0.5.5 does not ship oo2core*.dll. Build libooz.dll (zao/ooz) into tools/bin/ or set AUTOPOE2_OODLE_DLL.ÚOodleLZ_Decompresszoo2core:Úoo2coreÚOoz_Decompresszooz14:Úooz14ÚKraken_Decompresszkraken4:Úkraken4zF has neither OodleLZ_Decompress, Ooz_Decompress, nor Kraken_Decompress)Ú_DLLr   r	   ÚctypesÚWinDLLr   Úhasattrr   Úc_void_pÚc_int64Úc_intÚargtypesÚrestypeÚnamer   Ú_MODEr   Úc_size_tr   )r   ÚpathÚdllÚfns       r   Ú
load_oodler/      sà  € åÐÝˆÝ˜(Ñ#Ô#€DØ€|ÝðTñ
ô 
ð 	
õ Œ-�˜D™	œ	Ñ
"Ô
"€CÝˆsÐ(Ñ)Ô)ð 3
ØÔ#ˆåŒOÝŒNÝŒOÝŒNÝŒLÝŒLÝŒLÝŒOÝŒOÝŒOÝŒOÝŒOÝŒOÝŒLð
ˆŒõ  ”^ˆŒ
Ø)˜dœiÐ)Ð)ˆØˆ‰Ý	�Ð&Ñ	'Ô	'ð 
ØÔˆåŒOÝŒLÝŒOÝŒOÝŒLÝŒLÝŒLÝŒOÝŒOÝŒOÝŒOÝŒOÝŒOÝŒLð
ˆŒõ  ”\ˆŒ
Ø'˜DœIÐ'Ð'ˆØˆˆÝ	�Ð)Ñ	*Ô	*ð 	
ØÔ"ˆÝ”­¬½¼Í&Ì/ÐZˆŒÝ”\ˆŒ
Ø)˜dœiÐ)Ð)ˆØˆˆåØÐ[Ð[Ð[ñ
ô 
ð 	
ð €DØ€Jr   ÚsrcÚbytesÚdst_lenÚintc                ó`  — t          ¦   «         }t          j        t          | ¦  «        z                       | ¦  «        }t          j        |dz   z  ¦   «         }t          j        |t          j        ¦  «        }t          j        |t          j        ¦  «        }t          dk    r0|                     |t          | ¦  «        ||dddd d d d d d d¦  «        }n`t          dk    r0| 	                    |t          | ¦  «        ||dddd dd d d dd¦  «        }n%| 
                    |t          | ¦  «        ||¦  «        }t          |¦  «        dk     st          |¦  «        |k    rCt          d|› d|› dt          | ¦  «        › d	| d d
…                              ¦   «         › d�	¦  «        ‚t          |d |…         ¦  «        S )Né@   r   r   é   r   zOodle decompress failed (wrote=z, expected=z, src=z, magic=é   ú))r/   r!   Úc_uint8ÚlenÚfrom_buffer_copyÚcastr$   r*   r   r   r   r3   r	   Úhexr1   )r0   r2   r-   Úsrc_bufÚoutÚsrc_ptrÚdst_ptrÚwrotes           r   Údecompress_chunkrC   Y   s½  € Ý
‰,Œ,€CÝŒ~¥ C¡¤Ñ(×:Ò:¸3Ñ?Ô?€GÝŒ>˜W r™\Ñ*Ñ
-Ô
-€CÝŒk˜'¥6¤?Ñ3Ô3€GÝŒk˜#�vœÑ/Ô/€GÝ�	ÒÐØ×&Ò&ØÝ�‰HŒHØØØØØØØØØØØØñ
ô 
ˆˆõ  
�'Ò	Ð	Ø×"Ò"ØÝ�‰HŒHØØØØØØØØØØØØñ
ô 
ˆˆð" ×%Ò% g­s°3©x¬x¸À'ÑJÔJˆÝ
ˆ5�z„z�A‚~€~�˜U™œ wÒ.Ð.ÝØq¨eÐqÐqÀÐqÐqÍsÐSVÉxÌxÐqÐqÐadÐegÐfgÐegÔah×alÒalÑanÔanÐqÐqÐqñ
ô 
ð 	
õ ��X�g�X”ÑÔÐr   )r   r   r   )r   r   r   r   )r0   r1   r2   r3   r   r1   )Ú__doc__Ú
__future__r   r!   Úpathlibr   Úpathsr   r    r   r*   ÚRuntimeErrorr	   r   r/   rC   r   r   r   ú<module>rI      sÔ   ðØ DÐ DØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !à€Ø€Ø€ð	ð 	ð 	ð 	ð 	�|ñ 	ô 	ð 	ðð ð ð ð@ð @ð @ð @ð @ðF. ð . ð . ð . ð . ð . r   