§
    aý®jÀ  ã                  óT  — d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
Z
ddlmZ ddlZddlmZ ddlmZmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZmZ ddlmZ ddlm Z   ee!¦  «         "                    ¦   «         j#        j#        Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,dd„Z-d„ Z.dd„Z/dS )z�Tests for the read-only Content.ggpk extract pipeline.

Live cases read the installed Path of Exile 2 client (Content.ggpk / HashCache.dat).
é    )ÚannotationsN)ÚPath)Úparse_bundle_header)Ú	cell_sizeÚparse_datc64)ÚGgpkFs)Úparse_hashcache)Úhash_bundle_pathÚmurmurhash64a)Úfind_content_ggpkÚfind_hashcache)Úextract)Úsnakec            
     óˆ	  — d} t          | ¦  «        }t          | ¦  «        }||k    }|�sxt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nddt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nddt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}t          | ¦  «        }d	}| |z   }t          |¦  «        }||k    }|�s‹t          j        d
|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nddt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nddt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}x}x}}d}
t          |
¦  «        }d}t          |¦  «        }||k    }|�s"t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |
¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}
x}x}x}}d S )Ns   data/baseitemtypes.datc64©ú==)zN%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py8)s
{%(py8)s = %(py5)s(%(py6)s)
}r   Úsample)Úpy0Úpy1Úpy3Úpy5Úpy6Úpy8úassert %(py10)sÚpy10ó   x)ú!=)z\%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} != %(py11)s
{%(py11)s = %(py5)s((%(py6)s + %(py8)s))
})r   r   r   r   r   r   Úpy11zassert %(py13)sÚpy13zData/BaseItemTypes.datc64údata/baseitemtypes.datc64)zP%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py10)s
{%(py10)s = %(py6)s(%(py8)s)
}r
   )r   Úpy2Úpy4r   r   r   zassert %(py12)sÚpy12)
r   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationr
   )r   Ú@py_assert2Ú@py_assert7Ú@py_assert4Ú@py_format9Ú@py_format11Ú@py_assert9Ú@py_assert10Ú@py_format12Ú@py_format14Ú@py_assert1Ú@py_assert3Ú@py_assert5Ú@py_format13s                 ú/C:\Projects\AutoPOE2\tests\test_ggpk_extract.pyÚtest_murmurhash64a_is_stabler:      sÛ  € Ø)€FÝ˜Ñ Ô Ð9¥M°&Ñ$9Ô$9Ð9Ð Ð$9Ò9Ð9Ð9Ñ9Õ9Ô9Ð9Ð9Ð9Ð9Ð Ð$9Ð9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9�=Ñ9Ô9Ð9Õ9Ô9�=Ñ9Ô9Ð9Ð9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9˜Ñ9Ô9Ð9Õ9Ô9˜Ñ9Ô9Ð9Ð9Õ9Ô9Ð Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9¥MÑ9Ô9Ð9Õ9Ô9¥MÑ9Ô9Ð9Ð9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9°&Ñ9Ô9Ð9Õ9Ô9°&Ñ9Ô9Ð9Ð9Õ9Ô9Ð$9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ý˜Ñ Ô Ð@¸4Ð@°&¸4±-Ð@¥M°-Ñ$@Ô$@Ð@Ð Ð$@Ò@Ð@Ð@Ñ@Õ@Ô@Ð@Ð@Ð@Ð@Ð Ð$@Ð@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@�=Ñ@Ô@Ð@Õ@Ô@�=Ñ@Ô@Ð@Ð@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@˜Ñ@Ô@Ð@Õ@Ô@˜Ñ@Ô@Ð@Ð@Õ@Ô@Ð Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@¥MÑ@Ô@Ð@Õ@Ô@¥MÑ@Ô@Ð@Ð@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@°&Ñ@Ô@Ð@Õ@Ô@°&Ñ@Ô@Ð@Ð@Õ@Ô@¸4Ñ@Ô@Õ@Ô@Ð$@Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ø7ÐiÕÐ7Ñ8Ô8ÐiÐMhÐiÕ<LÐMhÑ<iÔ<iÐiÐ8Ð<iÒiÐiÐiÑiÕiÔiÐiÐiÐiÐiÐ8Ð<iÐiÑiÔiÐiÕiÔiÑiÔiÐiÐiÕiÔiÕÑiÔiÐiÕiÔiÕÑiÔiÐiÐiÕiÔiÐ7ÑiÔiÕiÔiÐ8ÑiÔiÐiÕiÔiÑiÔiÐiÐiÕiÔiÕ<LÑiÔiÐiÕiÔiÕ<LÑiÔiÐiÐiÕiÔiÐMhÑiÔiÕiÔiÐ<iÑiÔiÐiÐiÑiÐiÐiÐiÐiÐiÑiÐiÕiÕiÔiÐiÑiÔiÑiÔiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐió    c                 ó‚  — d} t          | ¦  «        }d}||k    }|sÇt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x} x}x}}d	} t          | ¦  «        }d
}||k    }|sÇt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x} x}x}}d} t          | ¦  «        }d}||k    }|sÇt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x} x}x}}d S )NÚBaseItemTypesÚbase_item_typesr   ©z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sr   ©r   r!   r"   Úpy7úassert %(py9)sÚpy9Ú
WorldAreasÚworld_areasÚUniqueStashLayoutÚunique_stash_layout)	r   r$   r%   r&   r'   r(   r)   r*   r+   ©r5   r6   Ú@py_assert6r7   Ú@py_format8Ú@py_format10s         r9   Útest_snake_table_namesrL       s  € Ø Ð6�5�Ñ!Ô!Ð6Ð%6Ð6Ð!Ð%6Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6Ð!Ð%6Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6�5Ñ6Ô6Ð6Õ6Ô6�5Ñ6Ô6Ð6Ð6Õ6Ô6�Ñ6Ô6Õ6Ô6Ð!Ñ6Ô6Õ6Ô6Ð%6Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6ØÐ/�5�ÑÔÐ/ -Ð/Ð -Ò/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð -Ð/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/�5Ñ/Ô/Ð/Õ/Ô/�5Ñ/Ô/Ð/Ð/Õ/Ô/�Ñ/Ô/Õ/Ô/ÐÑ/Ô/Õ/Ô/ -Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ø$Ð>�5Ð$Ñ%Ô%Ð>Ð)>Ð>Ð%Ð)>Ò>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð%Ð)>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>�5Ñ>Ô>Ð>Õ>Ô>�5Ñ>Ô>Ð>Ð>Õ>Ô>Ð$Ñ>Ô>Õ>Ô>Ð%Ñ>Ô>Õ>Ô>Ð)>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>r;   c                 ón  — dddœ} t          | ¦  «        }d}||k    }|sÇt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x} x}x}}dddœ} t          | ¦  «        }d}||k    }|sÇt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x} x}x}}dddœ} t          | ¦  «        }d}||k    }|sÇt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x} x}x}}dddœ} t          | ¦  «        }d}||k    }|sÇt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x} x}x}}d S )NÚi32F)ÚtypeÚarrayé   r   r?   r   r@   rB   rC   Ústringé   Ú
foreignrowé   T)	r   r$   r%   r&   r'   r(   r)   r*   r+   rH   s         r9   Útest_cell_size_datc64_layoutrV   &   s,  € Ø#¨eÐ4Ð4Ð:�9Ð4Ñ5Ô5Ð:¸Ð:Ð5¸Ò:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð5¸Ð:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:�9Ñ:Ô:Ð:Õ:Ô:�9Ñ:Ô:Ð:Ð:Õ:Ô:Ð4Ñ:Ô:Õ:Ô:Ð5Ñ:Ô:Õ:Ô:¸Ñ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ø&°Ð7Ð7Ð=�9Ð7Ñ8Ô8Ð=¸AÐ=Ð8¸AÒ=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð8¸AÐ=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=�9Ñ=Ô=Ð=Õ=Ô=�9Ñ=Ô=Ð=Ð=Õ=Ô=Ð7Ñ=Ô=Õ=Ô=Ð8Ñ=Ô=Õ=Ô=¸AÑ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ø*°UÐ;Ð;ÐB�9Ð;Ñ<Ô<ÐBÀÐBÐ<ÀÒBÐBÐBÐBÕBÔBÐBÐBÐBÐBÐ<ÀÐBÑBÔBÐBÕBÔBÑBÔBÐBÐBÕBÔB�9ÑBÔBÐBÕBÔB�9ÑBÔBÐBÐBÕBÔBÐ;ÑBÔBÕBÔBÐ<ÑBÔBÕBÔBÀÑBÔBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBÐBÐBÐBÐBØ#¨dÐ3Ð3Ð:�9Ð3Ñ4Ô4Ð:¸Ð:Ð4¸Ò:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð4¸Ð:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:�9Ñ:Ô:Ð:Õ:Ô:�9Ñ:Ô:Ð:Ð:Õ:Ô:Ð3Ñ:Ô:Õ:Ô:Ð4Ñ:Ô:Õ:Ô:¸Ñ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:r;   c                 ó¬  — dddddœgdœ} t          j        dd¦  «        t          j        d	d
d¦  «        z   dz   }t          || ¦  «        }d„ |D ¦   «         }d
dg}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )NÚContractI32ÚValrN   F©ÚnamerO   rP   ©r[   Úcolumnsú<Ié   z<iié   é   ó   »»»»»»»»c                ó   — g | ]
}|d          ‘ŒS )rY   © ©Ú.0Úrs     r9   ú
<listcomp>z?test_datc64_rowcount_and_bb_marker_contract.<locals>.<listcomp>1   s   € Ð#Ð#Ð#˜ˆAˆeŒHÐ#Ð#Ð#r;   r   ©z%(py1)s == %(py4)s©r   r"   úassert %(py6)sr   ©ÚstructÚpackr   r$   r%   r)   r*   r+   ©ÚschemaÚrawÚrowsÚ@py_assert0r6   r,   Ú@py_format5Ú@py_format7s           r9   Ú+test_datc64_rowcount_and_bb_marker_contractrv   -   s  € Ø#¸%ÈÐY^Ð1_Ð1_Ð0`ÐaÐa€FÝ
Œ+�d˜AÑ
Ô
¥¤¨U°A°rÑ!:Ô!:Ñ
:¸kÑ
J€CÝ˜˜VÑ$Ô$€DØ#Ð#˜dÐ#Ñ#Ô#Ð.¨¨2 wÐ.Ð# wÒ.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð# wÐ.Ñ.Ô.Õ.Ô.Ð#Ñ.Ô.Õ.Ô. wÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.r;   c                 ó°  — dddddœgdœ} t          j        ddd	¦  «        }t          j        d
d¦  «        |z   dz   }t          || ¦  «        }|d         d         }g }||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )NÚArrÚRefsÚrowTrZ   r\   z<QQé   l   þ~ý}û{÷w r^   é   rb   r   r   ri   rj   rk   r   rl   )	rp   Ú	count_relrq   rr   rs   r6   r,   rt   ru   s	            r9   Ú/test_datc64_null_array_offset_does_not_overflowr~   4   s  € àØ#¨U¸TÐBÐBÐCðð €Fõ ”˜E 1Ð&8Ñ9Ô9€IÝ
Œ+�d˜AÑ
Ô
 Ñ
*¨kÑ
:€CÝ˜˜VÑ$Ô$€DØ�Œ7�6Œ?Ð ˜bÐ ˆ?˜bÒ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆ?˜bÐ Ñ Ô Õ Ô ˆ?Ñ Ô Õ Ô ˜bÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ð Ð r;   c                 ó¸  — dddddœd dddœgdœ} t          j        dd¦  «        t          j        d	d
¦  «        z   dz   }t          || ¦  «        }|d         d         }d
}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d}|d         }||v}|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )NÚWiderY   rN   FrZ   r\   r^   r|   z<ié	   rb   r   r   ri   rj   rk   r   Úcol_0)únot in)z%(py1)s not in %(py4)srl   ro   s           r9   Ú4test_datc64_trims_trailing_schema_wider_than_055_rowr„   ?   s¼  € àà E°EÐ:Ð:Ø 5°5Ð9Ð9ð
ðð €Fõ Œ+�d˜AÑ
Ô
¥¤¨T°1Ñ!5Ô!5Ñ
5¸Ñ
E€CÝ˜˜VÑ$Ô$€DØ�Œ7�5Œ>Ð˜QÐˆ>˜QÒÐÐÐÕÔÐÐÐÐˆ>˜QÐÑÔÕÔˆ>ÑÔÕÔ˜QÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØÐ!˜$˜qœ'Ð!ˆ7˜'Ð!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ7˜'Ð!Ñ!Ô!Õ!Ô!ˆ7Ñ!Ô!Õ!Ô!˜'Ñ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!r;   c                 ó
  — t          ¦   «         } | €t          j        d¦  «         t          | ¦  «        }| j        } |¦   «         }|j        }d}||k    }|sÐt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}}t          |¦  «        }	d	}|	|k    }
|
sòt          j        d|
fd
|	|f¦  «        dt          j	        ¦   «         v st          j
        t          ¦  «        rt          j        t          ¦  «        nddt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}	x}
}d„ |D ¦   «         }d„ |D ¦   «         }t          |¦  «        }|s•ddt          j	        ¦   «         v st          j
        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}}t!          d„ |D ¦   «         ¦  «        }|j        }d}
||
v }|sªt          j        d|fd||
f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}
|j        }	t          |	¦  «        }
d}|
|k    }|�st          j        d|fd|
|f¦  «        dt          j	        ¦   «         v st          j
        t          ¦  «        rt          j        t          ¦  «        nddt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }d d!|iz  }t          t          j        |¦  «        ¦  «        ‚d x}	x}
x}}d S )"NzHashCache.dat not installedi  r   ©z`%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.stat
}()
}.st_size
} == %(py9)sÚhc©r   r!   r"   r   rC   úassert %(py11)sr   é!   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenÚrecs)r   r   r   r   zassert %(py8)sr   c                óD   — h | ]}|j                              d d¦  «        ’ŒS )ú\ú/)r[   Úreplacere   s     r9   ú	<setcomp>z2test_hashcache_live_client_file.<locals>.<setcomp>T   s(   € Ð5Ð5Ð5¨1ˆQŒV�^Š^˜D #Ñ&Ô&Ð5Ð5Ð5r;   c              3  óL   K  — | ]}|                      d ¦  «        p|d k    V — Œ dS ©zPathOfExile.exeN)Úendswith)rf   Úns     r9   ú	<genexpr>z2test_hashcache_live_client_file.<locals>.<genexpr>U   s:   è è € ÐVÐVÈ1ˆq�zŠzÐ+Ñ,Ô,ÐF°Ð5FÒ0FÐVÐVÐVÐVÐVÐVr;   z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úany)r   r!   r"   c              3  ód   K  — | ]+}|j                              d ¦  «        s|j         d k    ¯'|V — Œ,dS r“   )r[   r”   re   s     r9   r–   z2test_hashcache_live_client_file.<locals>.<genexpr>V   sC   è è € ÐdÐd�Q !¤&§/¢/Ð2CÑ"DÔ"DÐdÈÌÐRcÒHcÐHcˆqÐHcÐHcÐHcÐHcÐdÐdr;   )iX«iX%«iX5«©Úin)z,%(py2)s
{%(py2)s = %(py0)s.size
} in %(py5)sÚexe©r   r!   r   úassert %(py7)srA   é    )zL%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.sha256
})
} == %(py8)s)r   r   r   r   r   r   r   )r   ÚpytestÚskipr	   ÚstatÚst_sizer$   r%   r&   r'   r(   r)   r*   r+   r‹   r—   ÚnextÚsizeÚsha256)r‡   rŒ   r5   r6   r7   Ú@py_assert8r-   rK   r3   r,   r.   ru   r/   Únamesrt   r›   Ú@py_format6rJ   rI   r0   s                       r9   Útest_hashcache_live_client_filer©   M   sh  € Ý	Ñ	Ô	€BØ	€zÝŒÐ1Ñ2Ô2Ð2Ý˜2ÑÔ€DØŒ7Ð$ˆ7ˆ7‰9Œ9Ð$ˆ9ÔÐ$ Ð$Ð Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆ2Ñ$Ô$Ð$Õ$Ô$ˆ2Ñ$Ô$Ð$Ð$Õ$Ô$ˆ7Ñ$Ô$Õ$Ô$ˆ9Ñ$Ô$Õ$Ô$ÐÑ$Ô$Õ$Ô$ Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ýˆt‰9Œ9Ð˜Ðˆ9˜Š?ÐÐÐÕÔÐÐÐÐˆ9˜ÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆtÑÔÐÕÔˆtÑÔÐÐÕÔˆ9ÑÔÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ5Ð5°Ð5Ñ5Ô5€EØVÐVÐPUÐVÑVÔVÐV�3ÐVÑVÔVÐVÐVÐVÐVÐVÕVÔVÑVÔVÐVÐVÕVÔV�3ÑVÔVÐVÕVÔV�3ÑVÔVÐVÐVÕVÔVÐVÑVÔVÕVÔVÐVÑVÔVÐVÐVÑVÐVÕVÕVÔVÐVÑVÔVÑVÔVÐVÐVÐVÐVÐVÝ
ÐdÐd˜$ÐdÑdÔdÑ
dÔ
d€CØŒ8Ð5Ð5Ð5ˆ8Ð5Ð5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5ˆ8Ð5Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆ3Ñ5Ô5Ð5Õ5Ô5ˆ3Ñ5Ô5Ð5Ð5Õ5Ô5ˆ8Ñ5Ô5Õ5Ô5Ð5Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ØŒzÐ �3ˆz‰?Œ?Ð ˜bÐ ˆ?˜bÒ Ð Ð Ñ Õ Ô Ð Ð Ð Ð ˆ?˜bÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �3Ñ Ô Ð Õ Ô �3Ñ Ô Ð Ð Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆsÑ Ô Ð Õ Ô ˆsÑ Ô Ð Ð Õ Ô ˆzÑ Ô Õ Ô ˆ?Ñ Ô Õ Ô ˜bÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð r;   c            	     ó:  — t          ¦   «         } | €t          j        d¦  «         | j        } |¦   «         }|j        }d}||k    }|sÐt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        | ¦  «        rt          j
        | ¦  «        ndt          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}}t          | ¦  «        5 }d	„ |                     |j        ¦  «        D ¦   «         }	|	j        }d
} ||¦  «        }d}||k    }|sÐt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |	¦  «        rt          j
        |	¦  «        ndt          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}}d}
|
|	v }|s—t          j        d|fd|
|	f¦  «        t          j
        |
¦  «        dt          j        ¦   «         v st          j	        |	¦  «        rt          j
        |	¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}
}|                     d¦  «        }|                     d¦  «        }g }d }||u}|}
|rd }||u}|}
|
�sXt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dœz  }dd|iz  }|                     |¦  «         |r‹t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dœz  }dd |iz  }|                     |¦  «         t          j        |d!¦  «        i z  }d"d#|iz  }t          t          j        |¦  «        ¦  «        ‚d x}
x}x}x}x}}t)          |                     |d$¦  «        ¦  «        }t)          |                     |d$¦  «        ¦  «        }|j        }d%}||v }|sªt          j        d|fd&||f¦  «        d't          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd't          j
        |¦  «        t          j
        |¦  «        d(œz  }d)d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|j        }d*}||v }|sªt          j        d|fd+||f¦  «        d't          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd't          j
        |¦  «        t          j
        |¦  «        d(œz  }d)d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|j        }d,} |||¦  «        }|sÜd-d.t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd.t          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        d/œz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                     ||j        d,z   ¦  «        }||j        |j        d,z   …         }
d0}|
|k    }|slt          j        d|fd1|
|f¦  «        t          j
        |
¦  «        t          j
        |¦  «        d2œz  }d3d4|iz  }t          t          j        |¦  «        ¦  «        ‚d x}
x}}|j        }d5}||v }|sªt          j        d|fd&||f¦  «        d6t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd6t          j
        |¦  «        t          j
        |¦  «        d(œz  }d)d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|j        }d7}||k    }|sªt          j        d|fd8||f¦  «        d6t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd6t          j
        |¦  «        t          j
        |¦  «        d(œz  }d)d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d d d ¦  «         d S # 1 swxY w Y   d S )9NúContent.ggpk not installedì   û17g– r   r†   Úggpkrˆ   r‰   r   c                ó   — g | ]	}|j         ‘Œ
S rd   )r[   )rf   Úes     r9   rh   z:test_ggpk_root_and_bundle_headers_live.<locals>.<listcomp>a   s   € ÐFÐFÐF˜A�”ÐFÐFÐFr;   ÚBundles2r|   )zK%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.count
}(%(py4)s)
} == %(py9)sr§   zgateway_list.txtr™   )z%(py1)s in %(py3)s)r   r   úassert %(py5)sr   úBundles2/_.index.binú$Bundles2/Folders/data.dat.bundle.bin©úis not©z%(py2)s is not %(py5)sÚindex©r!   r   ú%(py7)srA   )z%(py9)s is not %(py12)sÚdata)rC   r#   z%(py14)sÚpy14r   zassert %(py17)sÚpy17i  ©i¦pãi¶QäiÞæ)z9%(py2)s
{%(py2)s = %(py0)s.uncompressed_size
} in %(py5)sÚihrœ   r�   )i9  i:  i;  )z3%(py2)s
{%(py2)s = %(py0)s.block_count
} in %(py5)sr_   z^assert %(py7)s
{%(py7)s = %(py2)s
{%(py2)s = %(py0)s.read_payload_prefix
}(%(py3)s, %(py5)s)
}Úfs)r   r!   r   r   rA   s   Œri   rj   rk   r   )i‚“ iâ›“ iü©“ Údhé%   )z3%(py2)s
{%(py2)s = %(py0)s.block_count
} == %(py5)s)r   rŸ   r    r¡   r¢   r$   r%   r&   r'   r(   r)   r*   r+   r   Úiter_dir_childrenÚroot_offsetÚcountÚfindÚappendÚ_format_boolopr   Úread_payload_prefixÚuncompressed_sizeÚblock_countÚpayload_offset)r­   r5   r6   r7   r¦   r-   rK   r3   r¿   r§   rs   r,   Ú@py_format4r¨   r·   rº   r.   Ú@py_assert11r2   rJ   r8   Ú@py_format15Ú@py_format16Ú@py_format18r¾   rÀ   rI   Úpayloadrt   ru   s                                 r9   Ú&test_ggpk_root_and_bundle_headers_liverÒ   [   sL  € ÝÑÔ€DØ€|ÝŒÐ0Ñ1Ô1Ð1ØŒ9Ð1ˆ9ˆ9‰;Œ;Ð1ˆ;ÔÐ1 /Ð1Ð /Ò1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð /Ð1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1ˆ4Ñ1Ô1Ð1Õ1Ô1ˆ4Ñ1Ô1Ð1Ð1Õ1Ô1ˆ9Ñ1Ô1Õ1Ô1ˆ;Ñ1Ô1Õ1Ô1ÐÑ1Ô1Õ1Ô1 /Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ý	�‰Œð $˜ØFÐF ×!5Ò!5°b´nÑ!EÔ!EÐFÑFÔFˆØŒ{Ð+˜:Ð+ˆ{ˆ{˜:Ñ&Ô&Ð+¨!Ð+Ð&¨!Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð&¨!Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆuÑ+Ô+Ð+Õ+Ô+ˆuÑ+Ô+Ð+Ð+Õ+Ô+ˆ{Ñ+Ô+Õ+Ô+˜:Ñ+Ô+Õ+Ô+Ð&Ñ+Ô+Õ+Ô+¨!Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ø!Ð*Ð! UÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð! UÐ*Ñ*Ô*Õ*Ô*Ð!Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô* UÑ*Ô*Ð*Õ*Ô* UÑ*Ô*Ð*Ð*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ø—’Ð.Ñ/Ô/ˆØ�wŠwÐ=Ñ>Ô>ˆØ5Ð5˜DÐ5ˆu˜DÐ Ð5Ð5Ð5Ð5Ð5°Ð5 T°Ð%5Ð5Ð5Ð5Ð5Ñ5Õ5Ô5Ð5Ð5Ð5Ð5ˆu˜DÐ5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆuÑ5Ô5Ð5Õ5Ô5ˆuÑ5Ô5Ð5Ð5Õ5Ô5˜DÑ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Ð5×5Ò5Ð5Ñ5Ô5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5 T°Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5 TÑ5Ô5Ð5Õ5Ô5 TÑ5Ô5Ð5Ð5Õ5Ô5°Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Ð5×5Ò5Ð5Ñ5Ô5Ð5Õ5Ô5Ð5Ð5Ñ5Ô5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ý  ×!7Ò!7¸¸yÑ!IÔ!IÑJÔJˆÝ  ×!7Ò!7¸¸iÑ!HÔ!HÑIÔIˆØÔ#ÐNÐ'NÐNÐ#Ð'NÐNÐNÐNÐNÕNÔNÐNÐNÐNÐNÐ#Ð'NÐNÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔNˆrÑNÔNÐNÕNÔNˆrÑNÔNÐNÐNÕNÔNÐ#ÑNÔNÕNÔNÐ'NÑNÔNÐNÐNÑNÐNÐNÐNÐNÐNÑNÐNÕNÕNÔNÐNÑNÔNÑNÔNÐNÐNÐNÐNÐNÐNÐNØŒ~Ð0 Ð0ˆ~ Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0ˆ~ Ð0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0ˆrÑ0Ô0Ð0Õ0Ô0ˆrÑ0Ô0Ð0Ð0Õ0Ô0ˆ~Ñ0Ô0Õ0Ô0 Ñ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØÔ%Ð/¨QÐ/Ð%Ð% e¨QÑ/Ô/Ð/Ð/Ð/Ð/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ˆrÑ/Ô/Ð/Õ/Ô/ˆrÑ/Ô/Ð/Ð/Õ/Ô/Ð%Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ eÑ/Ô/Ð/Õ/Ô/ eÑ/Ô/Ð/Ð/Õ/Ô/¨QÑ/Ô/Õ/Ô/Ð/Ñ/Ô/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ø×(Ò(¨°Ô0AÀAÑ0EÑFÔFˆØ�rÔ(¨2Ô+<¸qÑ+@Ð@ÔAÐPÀ[ÐPÐAÀ[ÒPÐPÐPÐPÕPÔPÐPÐPÐPÐPÐAÀ[ÐPÑPÔPÕPÔPÐAÑPÔPÕPÔPÀ[ÑPÔPÐPÐPÑPÐPÐPÐPÐPÐPÑPÐPÕPÕPÔPÐPÑPÔPÑPÔPÐPÐPÐPÐPÐPÐPÐPØÔ#ÐHÐ'HÐHÐ#Ð'HÐHÐHÐHÐHÕHÔHÐHÐHÐHÐHÐ#Ð'HÐHÑHÔHÐHÕHÔHÑHÔHÐHÐHÕHÔHˆrÑHÔHÐHÕHÔHˆrÑHÔHÐHÐHÕHÔHÐ#ÑHÔHÕHÔHÐ'HÑHÔHÐHÐHÑHÐHÐHÐHÐHÐHÑHÐHÕHÕHÔHÐHÑHÔHÑHÔHÐHÐHÐHÐHÐHÐHÐHØŒ~Ð# Ð#ˆ~ Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ~ Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆrÑ#Ô#Ð#Õ#Ô#ˆrÑ#Ô#Ð#Ð#Õ#Ô#ˆ~Ñ#Ô#Õ#Ô# Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $s   Ä0afæfæfÚtmp_pathr   c                ó¨  — t          ¦   «         }|€t          j        d¦  «         | dz  }t          dz  dz  dz  }t	          |||dd„ ¬¦  «        }|d	         }d
}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚d x}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚d x}x}}t          j        t          |¦  «        ¦  «        }
|
                     d¦  «                             ¦   «         d         }|d         }||k    }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}|
                     dd¦  «                             ¦   «         }g }d }||u}|}|r|d         }d}||v }|}|�s-t          j        d|fd||f¦  «        d t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd t          j        |¦  «        d!œz  }d"d#|iz  }|                     |¦  «         |r`t          j        d$|fd%||f¦  «        t          j        |¦  «        t          j        |¦  «        d&œz  }d'd(|iz  }|                     |¦  «         t          j        |d¦  «        i z  }d)d*|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}x}x}x}x}}t)          |
                     d+¦  «        ¦  «        }|d,         }d-}t          |¦  «        }||k    }|sÇt          j        d|fd.||f¦  «        t          j        |¦  «        d/t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd/t          j        |¦  «        t          j        |¦  «        d0œz  }d1d2|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}x}}|d3         }t+          |¦  «        }d4}||v }|sÇt          j        d$|fd5||f¦  «        d6t          j        ¦   «         v st          j        t*          ¦  «        rt          j        t*          ¦  «        nd6t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d7œz  }d1d2|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}x}}|
                     d8¦  «                             ¦   «         d         }d9}||k    }|s—t          j        d|fd||f¦  «        d:t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd:t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}t          dz  dz  dz                       ¦   «         rø|j        }d;} ||¦  «        }d<}||k    }|sÐt          j        d|fd=||f¦  «        d>t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd>t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d?œz  }d@dA|iz  } t          t          j	        | ¦  «        ¦  «        ‚d x}x}x}x}}|
                     ¦   «          d S )BNr«   zpoe2_ggpk.dbÚassetsÚ	game_datazschema.min.jsonTc                 ó   — d S )Nrd   )Ú_aÚ_ks     r9   ú<lambda>z4test_catalog_extract_writes_sqlite.<locals>.<lambda>}   s   € ˜d€ r;   )Ú	ggpk_pathÚdb_pathÚschema_pathÚcatalog_onlyÚlogÚstatuszcatalog-onlyr   ri   rj   rk   r   Úggpk_recordsé
   )ú>=)z%(py1)s >= %(py4)szSELECT COUNT(*) FROM ggpk_filesr   ©z%(py0)s == %(py3)sr•   ©r   r   r±   r   z/SELECT data_size FROM ggpk_files WHERE path = ?)r²   )iàÚi“šÚiÎàÛr´   r¶   rz   r¸   r¹   rA   r™   )z%(py10)s in %(py13)s)r   r   z%(py15)sÚpy15zassert %(py18)sÚpy18z#SELECT key, value FROM extract_metaÚ	ggpk_sizer¬   )z0%(py1)s == %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}Ústr)r   r   r   rA   rB   rC   Úindex_uncompressedr½   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} in %(py7)sÚintr@   z$SELECT COUNT(*) FROM hashcache_filesrŠ   Úhc_nÚschema_versionÚ7)zI%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py4)s)
} == %(py9)sÚmetarˆ   r‰   r   )r   rŸ   r    ÚREPOr   r$   r%   r)   r*   r+   Úsqlite3Úconnectré   ÚexecuteÚfetchoner&   r'   r(   rÆ   rÇ   Údictrë   Úis_fileÚgetÚclose)!rÓ   r­   rÜ   rÝ   Ústatsrs   r6   r,   rt   ru   Úconnr•   r5   rÌ   r¨   rz   r.   r1   Ú@py_assert12rÍ   rJ   r4   rÏ   Ú@py_format17Ú@py_format19rï   rI   rK   r7   rì   r¦   r-   r3   s!                                    r9   Ú"test_catalog_extract_writes_sqliterþ   r   s	  € ÝÑÔ€DØ€|ÝŒÐ0Ñ1Ô1Ð1Ø˜Ñ'€GÝ˜‘/ KÑ/Ð2CÑC€KÝØØØØØ"Ð"ðñ ô €Eð �Œ?Ð,˜nÐ,ˆ?˜nÒ,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,ˆ?˜nÐ,Ñ,Ô,Õ,Ô,ˆ?Ñ,Ô,Õ,Ô,˜nÑ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ø�Ô Ð& BÐ&Ð  BÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð  BÐ&Ñ&Ô&Õ&Ô&Ð Ñ&Ô&Õ&Ô& BÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ÝŒ?�3˜w™<œ<Ñ(Ô(€DØ�ŠÐ6Ñ7Ô7×@Ò@ÑBÔBÀ1ÔE€AØ�nÔ%Ð%ˆ1Ð%Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ1Ð%Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆ1Ñ%Ô%Ð%Õ%Ô%ˆ1Ñ%Ô%Ð%Ð%Õ%Ô%Ð%Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ø
�,Š,Ø9Ø!ñô ÷ ‚h�j„jð ð QÐP�dÐPˆ3�dˆ?ÐPÐPÐPÐPÐP˜s 1œvÐPÐ)PÐP˜vÐ)PÐPÐPÐPÐPÐPÑPÕPÔPÐPÐPÐPÐPˆ3�dÐPÑPÔPÐPÕPÔPÑPÔPÐPÐPÕPÔPˆ3ÑPÔPÐPÕPÔPˆ3ÑPÔPÐPÐPÕPÔP�dÑPÔPÐPÐPÑPÐPÐPÐPÐPÐPÑPÐPÐP×PÒPÐPÑPÔPÐPÐPÐPÕPÔPÐPÐPÐPÐP˜vÐ)PÐPÑPÔPÕPÔP˜vÑPÔPÕPÔPÐ)PÑPÔPÐPÐPÑPÐPÐPÐPÐPÐPÑPÐPÐP×PÒPÐPÑPÔPÐPÕPÔPÐPÐPÑPÔPÐPÑPÐPÐPÐPÐPÐPÑPÐPÕPÕPÔPÐPÑPÔPÑPÔPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÝ�—’ÐBÑCÔCÑDÔD€DØ�ÔÐ4 OÐ4¥ OÑ 4Ô 4Ð4ÐÐ 4Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4ÐÐ 4Ð4Ñ4Ô4Õ4Ô4ÐÑ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4¥Ñ4Ô4Ð4Õ4Ô4¥Ñ4Ô4Ð4Ð4Õ4Ô4 OÑ4Ô4Õ4Ô4Ð 4Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ØÐ(Ô)ÐU�3Ð)Ñ*Ô*ÐUÐ.UÐUÐ*Ð.UÐUÐUÐUÐUÕUÔUÐUÐUÐUÐUÐ*Ð.UÐUÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔU�3ÑUÔUÐUÕUÔU�3ÑUÔUÐUÐUÕUÔUÐ)ÑUÔUÕUÔUÐ*ÑUÔUÕUÔUÐ.UÑUÔUÐUÐUÑUÐUÐUÐUÐUÐUÑUÐUÕUÕUÔUÐUÑUÔUÑUÔUÐUÐUÐUÐUÐUÐUÐUÐUÐUØ�<Š<Ð>Ñ?Ô?×HÒHÑJÔJÈ1ÔM€DØÐˆ4�2Š:ÐÐÐÕÔÐÐÐÐˆ4�2ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�2ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÝˆx‰˜+Ñ%Ð(9Ñ9×BÒBÑDÔDð 1ØŒxÐ0Ð(Ð0ˆxˆxÐ(Ñ)Ô)Ð0¨SÐ0Ð)¨SÒ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð)¨SÐ0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0ˆtÑ0Ô0Ð0Õ0Ô0ˆtÑ0Ô0Ð0Ð0Õ0Ô0ˆxÑ0Ô0Õ0Ô0Ð(Ñ0Ô0Õ0Ô0Ð)Ñ0Ô0Õ0Ô0¨SÑ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ø‡J‚J�L„L€L€L€Lr;   c            
     óL  — ddl m}  ddlm}  | dddddd¦  «         | dd	dddd
¦  «         | dddddd
¦  «        g} ||d¦  «        }d„ |D ¦   «         }ddg}||k    }|slt	          j        d|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}ddl	m
}	 ddlm}
  |	ddddddd¬¦  «        }|g}d
} |
||¦  «        }||u }|sût	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |
¦  «        rt	          j        |
¦  «        ndt	          j        |¦  «        t	          j        |¦  «        t	          j        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndd œz  }d!d"|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}x}}|g}d#} |
||¦  «        }||u }|sût	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |
¦  «        rt	          j        |
¦  «        ndt	          j        |¦  «        t	          j        |¦  «        t	          j        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndd œz  }d!d"|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}x}}d S )$Nr   )ÚLogicalFile)Úselect_canonical_dat_filesz french/data/baseitemtypes.datc64r|   râ   Úfrr    r_   rº   zdata/tags.datc64r{   )r=   ÚTagsc                ó   — g | ]	}|j         ‘Œ
S rd   )Úpath)rf   Úfs     r9   rh   z=test_select_canonical_prefers_data_datc64.<locals>.<listcomp>�   s   € Ð#Ð#Ð#�qˆAŒFÐ#Ð#Ð#r;   r   ri   rj   rk   r   )Ú	GgpkEntry)Úfind_bundle_entryzdata.dat.bundle.binÚFILEr;   r³   éd   )r[   ÚtagÚoffsetÚrecord_lengthr¥   r  Ú	data_size)Úis)z9%(py6)s
{%(py6)s = %(py0)s(%(py2)s, %(py4)s)
} is %(py8)sr  Úentry)r   r!   r"   r   r   r   r   z	Data/data)Ú)src.assistant_tool.ggpk_extract.index_binr   Ú(src.assistant_tool.ggpk_extract.pipeliner  r$   r%   r)   r*   r+   Ú'src.assistant_tool.ggpk_extract.ggpk_fsr  r  r&   r'   r(   )r   r  ÚfilesÚpickedrs   r6   r,   rt   ru   r  r  r  r5   r7   r-   r/   r0   s                    r9   Ú)test_select_canonical_prefers_data_datc64r  “   s%  € ØEÐEÐEÐEÐEÐEØSÐSÐSÐSÐSÐSð 	ˆÐ6¸¸1¸aÀÀTÑJÔJØˆÐ/°°A°q¸"¸fÑEÔEØˆÐ&¨¨1¨a°°VÑ<Ô<ð€Eð
 (Ð'¨Ð/HÑIÔI€FØ#Ð#˜FÐ#Ñ#Ô#ÐXÐ(CÐEWÐ'XÐXÐ#Ð'XÒXÐXÐXÐXÕXÔXÐXÐXÐXÐXÐ#Ð'XÐXÑXÔXÕXÔXÐ#ÑXÔXÕXÔXÐ'XÑXÔXÐXÐXÑXÐXÐXÐXÐXÐXÑXÐXÕXÕXÔXÐXÑXÔXÑXÔXÐXÐXÐXÐXÐXÐXÐXØAÐAÐAÐAÐAÐAØJÐJÐJÐJÐJÐJàˆIØ"ØØØØØ3Øðñ ô €Eð $˜WÐ6 fÐ6ÐÐ˜W fÑ-Ô-Ð6Ð-°Ð6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6Ð-°Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6ÐÑ6Ô6Ð6Õ6Ô6ÐÑ6Ô6Ð6Ð6Õ6Ô6˜WÑ6Ô6Õ6Ô6 fÑ6Ô6Õ6Ô6Ð-Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6°Ñ6Ô6Ð6Õ6Ô6°Ñ6Ô6Ð6Ð6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø#˜WÐ; kÐ;ÐÐ˜W kÑ2Ô2Ð;Ð2°eÐ;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð2°eÐ;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;ÐÑ;Ô;Ð;Õ;Ô;ÐÑ;Ô;Ð;Ð;Õ;Ô;˜WÑ;Ô;Õ;Ô; kÑ;Ô;Õ;Ô;Ð2Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;°eÑ;Ô;Ð;Õ;Ô;°eÑ;Ô;Ð;Ð;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;r;   c                óp  — ddl m}m}m}m} | dz  } ||¦  «        } ||¦  «          ||ddddœg¦  «          ||ddddd	œg¦  «          ||¦  «         |                     d
¦  «                             ¦   «         }d}||k    }	|	s—t          j        d|	fd||f¦  «        dt          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}	}|                     ¦   «          d S )Nr   )rò   Úinit_catalog_schemaÚwrite_dat_tableÚwrite_projectionszproj.dbÚWordsÚ
Headhunter)Ú_rowÚTextrF   r`   )r  ÚWordsKeyÚItemVisualIdentityKeyz'SELECT id, name, base_item FROM uniques)Ú0r  Ú r   rä   rz   rå   r±   r   )Ú-src.assistant_tool.ggpk_extract.sqlite_exportrò   r  r  r  ró   rô   r$   r%   r&   r'   r(   r)   r*   r+   rø   )rÓ   rò   r  r  r  rÜ   rú   rz   r,   r5   rÌ   r¨   s               r9   Ú&test_unique_projection_joins_words_keyr$  ®   sº  € ðð ð ð ð ð ð ð ð ð ð ð ð ˜Ñ"€GØˆ7�7ÑÔ€DØÐ˜ÑÔÐØ€O�D˜'¨Q¸Ð$EÐ$EÐ#FÑGÔGÐGØ€OØØØ ¸QÐ	?Ð	?Ð@ñô ð ð
 Ð�dÑÔÐØ
�,Š,Ð@Ñ
AÔ
A×
JÒ
JÑ
LÔ
L€CØ)Ð)ˆ3Ð)Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ3Ð)Ð)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆ3Ñ)Ô)Ð)Õ)Ô)ˆ3Ñ)Ô)Ð)Ð)Õ)Ô)Ð)Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ø‡J‚J�L„L€L€L€Lr;   )rÓ   r   )0Ú__doc__Ú
__future__r   Úbuiltinsr&   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter$   rñ   rm   Úpathlibr   rŸ   Ú&src.assistant_tool.ggpk_extract.bundler   Ú&src.assistant_tool.ggpk_extract.datc64r   r   r  r   Ú)src.assistant_tool.ggpk_extract.hashcacher	   Ú&src.assistant_tool.ggpk_extract.murmurr
   r   Ú%src.assistant_tool.ggpk_extract.pathsr   r   r  r   r#  r   Ú__file__ÚresolveÚparentrð   r:   rL   rV   rv   r~   r„   r©   rÒ   rþ   r  r$  rd   r;   r9   ú<module>r4     sè  ððð ð #Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € €€€€Ø €€€Ø Ð Ð Ð Ð Ð à €€€à FÐ FÐ FÐ FÐ FÐ FØ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ :Ð :Ð :Ð :Ð :Ð :Ø EÐ EÐ EÐ EÐ EÐ EØ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ <Ð <Ð <Ð <Ð <Ð <Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?à€tˆH�~„~×ÒÑÔÔ&Ô-€ðjð jð jð?ð ?ð ?ð;ð ;ð ;ð/ð /ð /ð!ð !ð !ð"ð "ð "ð!ð !ð !ð$ð $ð $ð.ð ð ð ðB<ð <ð <ð6ð ð ð ð ð r;   