+
    JV-j¸@  ã                  óè  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RI
Ht ^RIHtHt  ! R R]4      t ! R	 R
]4      t ! R R]4      tR R ltR)R R lltR R ltR R lt ! R R]4      tR R lt ! R R]P                  4      t ! R R]P4                  ]P6                  4      t ! R R]4      t ! R R ]4      t ! R! R"]P>                  4      t R# R$ lt!]PD                  ! ]PF                  ]]4       ]PH                  ! ]PF                  R%4       ]PJ                  ! R&]4       ]PJ                  ! R']4       ]PL                  ! ]PF                  ]!4       ]PN                  ! R(] 4       R# )*aÑ  
Blizzard Mipmap Format (.blp)
Jerome Leclanche <jerome@leclan.ch>

The contents of this file are hereby released in the public domain (CC0)
Full text of the CC0 license:
  https://creativecommons.org/publicdomain/zero/1.0/

BLP1 files, used mostly in Warcraft III, are not fully supported.
All types of BLP2 files used in World of Warcraft are supported.

The BLP file structure consists of a header, up to 16 mipmaps of the
texture

Texture sizes must be powers of two, though the two dimensions do
not have to be equal; 512x256 is valid, but 512x200 is not.
The first mipmap (mipmap #0) is the full size image; each subsequent
mipmap halves both dimensions. The final mipmap should be 1x1.

BLP files come in many different flavours:
* JPEG-compressed (type == 0) - only supported for BLP1.
* RAW images (type == 1, encoding == 1). Each mipmap is stored as an
  array of 8-bit values, one per pixel, left to right, top to bottom.
  Each value is an index to the palette.
* DXT-compressed (type == 1, encoding == 2):
- DXT1 compression is used if alpha_encoding == 0.
  - An additional alpha bit is used if alpha_depth == 1.
  - DXT3 compression is used if alpha_encoding == 1.
  - DXT5 compression is used if alpha_encoding == 7.
)ÚannotationsN)ÚIntEnum)ÚBytesIO)ÚIO)ÚImageÚ	ImageFilec                  ó   € ] tR t^,t^ tRtR# )ÚFormat© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚJPEGÚ__static_attributes__r
   ó    Úc/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/PIL/BlpImagePlugin.pyr	   r	   ,   s   † Ø„Dr   r	   c                  ó"   € ] tR t^0t^t^t^tRtR# )ÚEncodingr
   N)r   r   r   r   ÚUNCOMPRESSEDÚDXTÚUNCOMPRESSED_RAW_BGRAr   r
   r   r   r   r   0   s   † Ø€LØ
€CØÔr   r   c                  ó"   € ] tR t^6t^ t^t^tRtR# )ÚAlphaEncodingr
   N)r   r   r   r   ÚDXT1ÚDXT3ÚDXT5r   r
   r   r   r   r   6   s   † Ø€DØ€DØ„Dr   r   c               ó    € V ^8„  d   QhRRRR/# )é   ÚiÚintÚreturnztuple[int, int, int]r
   )Úformats   "r   Ú__annotate__r#   <   s   € ÷ Lñ L�#ð LÐ.ñ Lr   c                ó|   € V ^,	          ^,          ^,          V ^,	          ^?,          ^,          V ^,          ^,          3# )é   r
   )r   s   &r   Ú
unpack_565r&   <   s2   € Ø�"�W˜Õ Õ" a¨1¥f°¥_¸Õ$:¸QÀ½XÈ!½OÐKÐKr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚdataÚbytesÚalphaÚboolr!   ú1tuple[bytearray, bytearray, bytearray, bytearray]r
   )r"   s   "r   r#   r#   @   s$   € ÷ 6ñ 6Ø
ð6Øð6à6ñ6r   c           	     óþ  € \        V 4      ^,          p\        4       \        4       \        4       \        4       3p\        V4       EF´  pV^,          p\        P                  ! RW4      w  rgp\        V4      w  ršp\        V4      w  rÍp\        ^4       EFa  p\        ^4       EFM  pV^,          pV^,	          p^ÿpV^ 8X  d   YšTpppMèV^8X  d   YÍTpppMÛV^8X  d{   Wg8”  dG   ^V	,          V,           ^,          p^V
,          V,           ^,          p^V,          V,           ^,          pMˆWœ,           ^,          pW­,           ^,          pW¾,           ^,          pMZV^8X  dT   Wg8”  dG   ^V,          V	,           ^,          p^V,          V
,           ^,          p^V,          V,           ^,          pMRw  ppppV'       d   W?,          P                  XXXV.4       EK3  W?,          P                  XXX.4       EKP  	  EKd  	  EK·  	  V# )ú=
input: one "row" of data (i.e. will produce 4*width pixels)
z<HHI)é    r/   r/   r/   ©ÚlenÚ	bytearrayÚrangeÚstructÚunpack_fromr&   Úextend)r(   r*   ÚblocksÚretÚblock_indexÚidxÚcolor0Úcolor1ÚbitsÚr0Úg0Úb0Úr1Úg1Úb1Újr   ÚcontrolÚaÚrÚgÚbs   &&                    r   Údecode_dxt1rJ   @   s·  € ô �‹Y˜!�^€FÜ‹;œ	›¤Y£[´)³+Ð
>€Cä˜V—}ˆà˜A�oˆÜ%×1Ò1°&¸$ÓDÑˆ˜ä Ó'‰
ˆ�Ü Ó'‰
ˆ�ô �q—ˆAÜ˜1—X�ð  �(�Ø˜q•y�à�Ø˜a”<Ø  b˜!�q�A˜!Ø ”\Ø  b˜!�q�A˜!Ø ”\Ø”Ø �V b�[¨QÕ.˜Ø �V b�[¨QÕ.˜Ø �V b�[¨QÕ.™à�W¨�N˜Ø�W¨�N˜Ø�W¨�N™Ø ”\Ø”Ø �V b�[¨QÕ.˜Ø �V b�[¨QÕ.˜Ø �V b�[¨QÕ.™à%/™
˜˜1˜a çØ•F—M‘M 1 a¨¨A ,×/à•F—M‘M 1 a¨ )×,ô? ô ñ %ðX €Jr   c               ó    € V ^8„  d   QhRRRR/# ©r   r(   r)   r!   r,   r
   )r"   s   "r   r#   r#   y   s   € ÷ 2ñ 2�eð 2Ð Qñ 2r   c           	     ó`  € \        V 4      ^,          p\        4       \        4       \        4       \        4       3p\        V4       EFå  pV^,          pWV^,            p\        P                  ! RV4      p\        P                  ! RV^4      w  rx\        P                  ! RV^4      w  p	\        V4      w  r«p\        V4      w  rÞp\        ^4       EFV  pRp\        ^4       EF@  p^V,          V,           ^,          pVV,          pV'       d   RpV^,          pMRpV^,          pV^,          pV	^^V,          V,           ,          ,	          ^,          pV^ 8X  d   Y«TpppM¦V^8X  d   YÞTpppM™V^8X  dG   ^V
,          V,           ^,          p^V,          V,           ^,          p^V,          V,           ^,          pMLV^8X  dF   ^V,          V
,           ^,          p^V,          V,           ^,          p^V,          V,           ^,          pVV,          P                  XXXV.4       EKC  	  EKY  	  EKè  	  V# )r.   z<8Bú<HHú<IFTr0   )r(   r7   r8   r9   r:   Úblockr=   r;   r<   Úcoder>   r?   r@   rA   rB   rC   rD   Úhighr   Úalphacode_indexrF   Ú
color_coderG   rH   rI   s   &                        r   Údecode_dxt3rU   y   sé  € ô
 �‹Y˜"�_€FÜ‹;œ	›¤Y£[´)³+Ð
>€Cä˜V—}ˆØ˜BÕˆØ˜3 �8Ð$ˆä×!Ò! %¨Ó/ˆÜ×+Ò+¨E°5¸!Ó<‰ˆä×$Ò$ T¨5°"Ó5‰ˆä Ó'‰
ˆ�Ü Ó'‰
ˆ�ä�q—ˆAØˆDÜ˜1—X�Ø#$ q¥5¨1¥9°Õ"2�Ø˜Õ)�ßØ �DØ˜!•G‘Aà�DØ˜•H�AØ�R•�à" a¨1¨q­5°1­9¥oÕ5¸Õ=�
à ”?Ø  b˜!�q�A˜!Ø 1”_Ø  b˜!�q�A˜!Ø 1”_Ø˜R� "�¨Õ*�AØ˜R� "�¨Õ*�AØ˜R� "�¨Õ*‘AØ 1”_Ø˜R� "�¨Õ*�AØ˜R� "�¨Õ*�AØ˜R� "�¨Õ*�Aà�A•—‘˜q ! Q¨˜l×+ô5 ô ñ %ðT €Jr   c               ó    € V ^8„  d   QhRRRR/# rL   r
   )r"   s   "r   r#   r#   ®   s   € ÷ Cñ C�eð CÐ Qñ Cr   c           	     ó¶  € \        V 4      ^,          p\        4       \        4       \        4       \        4       3p\        V4       EF  pV^,          pWV^,            p\        P                  ! RV4      w  rg\        P                  ! RV^4      pV^,          V^,          ^,          ,          V^,          ^,          ,          V^,          ^,          ,          p	V^ ,          V^,          ^,          ,          p
\        P                  ! RV^4      w  r¼\        P                  ! RV^4      w  p\        V4      w  rïp\        V4      w  ppp\        ^4       EF   p\        ^4       EFì  p^^V,          V,           ,          pV^8:  d   V
V,	          ^,          pM=V^8X  d    V
^,	          V	^,          ^,          ,          pMV	V^,
          ,	          ^,          pV^ 8X  d   TpM}V^8X  d   TpMsWg8”  d.   ^V,
          V,          V^,
          V,          ,           ^,          pM@V^8X  d   ^ pM6V^8X  d   ^ÿpM,^V,
          V,          V^,
          V,          ,           ^,          pV^^V,          V,           ,          ,	          ^,          pV^ 8X  d   YïTpppM§V^8X  d   TTTpppM™V^8X  dG   ^V,          V,           ^,          p^V,          V,           ^,          p^V,          V,           ^,          pMLV^8X  dF   ^V,          V,           ^,          p^V,          V,           ^,          p^V,          V,           ^,          pVV,          P                  XXXV.4       EKï  	  EK  	  EK  	  V# )z?
input: one "row" of data (i.e. will produce 4 * width pixels)
z<BBz<6BrN   rO   r0   )r(   r7   r8   r9   r:   rP   Úa0Úa1r=   Ú
alphacode1Ú
alphacode2r;   r<   rQ   r>   r?   r@   rA   rB   rC   rD   r   rS   Ú	alphacoderF   rT   rG   rH   rI   s   &                            r   Údecode_dxt5r]   ®   sÔ  € ô
 �‹Y˜"�_€FÜ‹;œ	›¤Y£[´)³+Ð
>€Cä˜V—}ˆØ˜BÕˆØ˜3 �8Ð$ˆä×#Ò# E¨5Ó1‰ˆä×!Ò! %¨°Ó2ˆØ˜!•W  Q¥¨1¥Õ-°°aµ¸BµÕ?À4ÈÅ7ÈbÅ=ÕQˆ
Ø˜!•W  Q¥¨1¥Õ-ˆ
ä×+Ò+¨E°5¸!Ó<‰ˆä×$Ò$ T¨5°"Ó5‰ˆä Ó'‰
ˆ�Ü Ó'‰
ˆˆB�ä�q—ˆAÜ˜1—X�à"# q¨1¥u¨q¥y¥/�à" bÔ(Ø!+¨Õ!>À$Õ F‘IØ$¨Ô*Ø!+¨rÕ!1°zÀQµÈ$Õ6NÕ O‘Ià!+°À"Õ0DÕ!EÈÕ M�Ià ”>Ø‘AØ !”^Ø‘AØ”WØ˜i�-¨2Õ-°¸QµÀ"Õ0DÕDÈÕJ‘AØ !”^Ø‘AØ !”^Ø‘Aà˜i�-¨2Õ-°¸QµÀ"Õ0DÕDÈÕJ�Aà" a¨1¨q­5°1­9¥oÕ5¸Õ=�
à ”?Ø  b˜!�q�A˜!Ø 1”_Ø  " b˜!�q�A˜!Ø 1”_Ø˜R� "�¨Õ*�AØ˜R� "�¨Õ*�AØ˜R� "�¨Õ*‘AØ 1”_Ø˜R� "�¨Õ*�AØ˜R� "�¨Õ*�AØ˜R� "�¨Õ*�Aà�A•—‘˜q ! Q¨˜l×+ôO ô ñ# %ðv €Jr   c                  ó   € ] tR t^ôtRtR# )ÚBLPFormatErrorr
   N)r   r   r   r   r   r
   r   r   r_   r_   ô   s   † Ûr   r_   c               ó    € V ^8„  d   QhRRRR/# )r   Úprefixr)   r!   r+   r
   )r"   s   "r   r#   r#   ø   s   € ÷ 1ñ 1�Eð 1˜dñ 1r   c                ó$   € V P                  R4      # )ó   BLP1)rc   ó   BLP2)Ú
startswith)ra   s   &r   Ú_acceptrf   ø   s   € Ø×ÑÐ/Ó0Ð0r   c                  ó.   € ] tR t^ütRtRtRtR R ltRtR# )ÚBlpImageFilez
Blizzard Mipmap Format
ÚBLPzBlizzard Mipmap Formatc               ó   € V ^8„  d   QhRR/# ©r   r!   ÚNoner
   )r"   s   "r   r#   ÚBlpImageFile.__annotate__  s   € ÷  Qñ  Q�tñ  Qr   c                	ó¬  € V P                   f   Q hV P                   P                  ^4      V n        \        V P                  4      '       g$   R\	        V P                  4       2p\        V4      h\        P                  ! RV P                   P                  ^4      4      ^ ,          pV P                  R8X  d<   \        P                  ! RV P                   P                  ^4      4      ^ ,          ^ 8g  pMÒ\        P                  ! RV P                   P                  ^4      4      ^ ,          p\        P                  ! RV P                   P                  ^4      4      ^ ,          ^ 8g  p\        P                  ! RV P                   P                  ^4      4      ^ ,          pV P                   P                  ^\        P                  4       \        P                  ! RV P                   P                  ^4      4      V n        V P                  R8X  di   \        P                  ! RV P                   P                  ^4      4      ^ ,          pV P                   P                  ^\        P                  4       W$V3p^pMVXVX3p^pV P                  P                  4       pV'       d   RMRV n        \        P                  ! VR	V P                   ,           Wv4      .V n        R # )
NzBad BLP magic ú<irc   rO   ú<bú<IIÚRGBAÚRGB©r/   r/   )ÚfpÚreadÚmagicrf   Úreprr_   r4   ÚunpackÚseekÚosÚSEEK_CURÚ_sizeÚdecodeÚ_moder   Ú_TileÚsizeÚtile)	ÚselfÚmsgÚcompressionr*   ÚencodingÚalpha_encodingÚargsÚoffsetÚdecoders	   &        r   Ú_openÚBlpImageFile._open  sè  € Ø�w‰wÒ"Ð"Ð"Ø—W‘W—\‘\ !“_ˆŒ
Ü�t—z‘z×"Ò"Ø"¤4¨¯
©
Ó#3Ð"4Ð5ˆCÜ  Ó%Ð%ä—m’m D¨$¯'©'¯,©,°q«/Ó:¸1Õ=ˆØ�:‰:˜Ô Ü—M’M $¨¯©¯©°Q«Ó8¸Õ;¸qÑ@‰Eä—}’} T¨4¯7©7¯<©<¸«?Ó;¸AÕ>ˆHÜ—M’M $¨¯©¯©°Q«Ó8¸Õ;¸qÑ@ˆEÜ#Ÿ]š]¨4°·±·±¸a³ÓAÀ!ÕDˆNØ�G‰G�L‰L˜œBŸK™KÔ(ä—]’] 5¨$¯'©'¯,©,°q«/Ó:ˆŒ
ð �:‰:˜Ô Ü—}’} T¨4¯7©7¯<©<¸«?Ó;¸AÕ>ˆHØ�G‰G�L‰L˜œBŸK™KÔ(à¨5Ð1ˆDØ‰Fà ¨5°.ÐAˆDØˆFà—*‘*×#Ñ#Ó%ˆç$‘V¨%ˆŒ
Ü—_’_ W¨f°t·y±yÕ.@À&ÓOÐPˆŽ	r   )r   r}   rw   r‚   N)	r   r   r   r   Ú__doc__r"   Úformat_descriptionr‹   r   r
   r   r   rh   rh   ü   s    † ñð €FØ1Ð÷ Qñ  Qr   rh   c                  ó€   € ] tR tRtRtR R lt]P                  R R l4       tR R lt	R	 R
 lt
R R ltR R ltRtR# )Ú_BLPBaseDecoderi'  Tc               ó    € V ^8„  d   QhRRRR/# )r   Úbufferz$bytes | Image.SupportsArrayInterfacer!   ztuple[int, int]r
   )r"   s   "r   r#   Ú_BLPBaseDecoder.__annotate__*  s   € ÷ ñ ÐAð Àoñ r   c                	óž   €  V P                  4        V P                  4        R#   \        P                   d   pR p\	        T4      ThRp?ii ; i)zTruncated BLP fileN)éÿÿÿÿr/   )Ú_read_headerÚ_loadr4   ÚerrorÚOSError)rƒ   r’   Úer„   s   &&  r   r~   Ú_BLPBaseDecoder.decode*  sJ   € ð	&Ø×ÑÔØ�J‰JŒLð ˆøô �|‰|ô 	&Ø&ˆCÜ˜#“, AÐ%ûð	&ús   ‚ $ ¤A¹AÁAc               ó   € V ^8„  d   QhRR/# rk   r
   )r"   s   "r   r#   r“   4  s   € ÷ ñ �tñ r   c                	ó   € R # ©Nr
   ©rƒ   s   &r   r—   Ú_BLPBaseDecoder._load3  s   € ár   c               ó   € V ^8„  d   QhRR/# rk   r
   )r"   s   "r   r#   r“   7  s   € ÷ Gñ G˜dñ Gr   c                	ó²   € \         P                  ! R V P                  ^@4      4      V n        \         P                  ! R V P                  ^@4      4      V n        R# )ú<16IN)r4   ry   Ú
_safe_readÚ_offsetsÚ_lengthsrŸ   s   &r   r–   Ú_BLPBaseDecoder._read_header7  s8   € ÜŸš f¨d¯o©o¸fÓ.EÓFˆŒÜŸš f¨d¯o©o¸fÓ.EÓFˆŽr   c               ó    € V ^8„  d   QhRRRR/# )r   Úlengthr    r!   r)   r
   )r"   s   "r   r#   r“   ;  s   € ÷ 5ñ 5 ð 5¨ñ 5r   c                	ód   € V P                   f   Q h\        P                  ! V P                   V4      # rž   )Úfdr   r¤   )rƒ   r©   s   &&r   r¤   Ú_BLPBaseDecoder._safe_read;  s)   € Ø�w‰wÒ"Ð"Ð"Ü×#Ò# D§G¡G¨VÓ4Ð4r   c               ó   € V ^8„  d   QhRR/# )r   r!   úlist[tuple[int, int, int, int]]r
   )r"   s   "r   r#   r“   ?  s   € ÷ ñ Ð>ñ r   c                	óâ   € . p\        R 4       F@  p \        P                  ! RV P                  ^4      4      w  r4rVTP                  Y4YV34       KB  	  V#   \        P                   d      T# i ; i)é   ú<4B)r3   r4   ry   r¤   r˜   Úappend)rƒ   r8   r   rI   rH   rG   rF   s   &      r   Ú_read_paletteÚ_BLPBaseDecoder._read_palette?  sm   € ØˆÜ�s–ˆAðÜ#Ÿ]š]¨5°$·/±/À!Ó2DÓE‘
��að �J‰J˜˜a�|Ö$ñ ð ˆ
øô —<‘<ô Ùàˆ
ðús   ’)AÁA.Á-A.c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úpaletter®   r*   r+   r!   r2   r
   )r"   s   "r   r#   r“   I  s$   € ÷ ñ Ø6ðØ?Cðà	ñr   c                	ó^  € \        4       p\        V P                  V P                  ^ ,          4      4      p  \        P
                  ! RVP                  ^4      4      w  pY,          w  rgr‰Y‡T3p
T'       d
   Y©3,          p
TP                  T
4       K]    \        P                   d     T# i ; i)r/   ú<B)	r2   r   r¤   r¦   r4   ry   rv   r˜   r6   )rƒ   r¶   r*   r(   Ú_datar‰   rI   rH   rG   rF   Úds   &&&        r   Ú
_read_bgraÚ_BLPBaseDecoder._read_bgraI  s•   € ô ‹{ˆÜ˜Ÿ™¨¯©°aÕ(8Ó9Ó:ˆØðÜ"ŸMšM¨$°·
±
¸1³Ó>‘	�ð !�‰JˆA�!Ø"#¨ ˆAßØ�T•	�Ø�K‰K˜ŽNøô —<‘<ô Øð ˆðús   ¸(B ÂB,Â+B,)r¦   r¥   N)r   r   r   r   Ú	_pulls_fdr~   ÚabcÚabstractmethodr—   r–   r¤   r³   r»   r   r
   r   r   r�   r�   '  s@   † Ø€Iõð 	×Ñôó ðõGõ5õ÷ñ r   r�   c                  ó.   € ] tR tRtR R ltR R ltRtR# )ÚBLP1Decoderi[  c               ó   € V ^8„  d   QhRR/# rk   r
   )r"   s   "r   r#   ÚBLP1Decoder.__annotate__\  s   € ÷ &ñ &�tñ &r   c                	óÐ  € V P                   w  V n        V n        pV P                  \        P                  8X  d   V P                  4        R# V P                  ^8X  di   V P                  R9   d5   V P                  4       pV P                  W!4      pV P                  V4       R# R\        V P                  4       2p\        V4      hR\        V P                  4       2p\        V4      h)é   zUnsupported BLP encoding zUnsupported BLP compression N)é   é   )rˆ   Ú_compressionÚ	_encodingr	   r   Ú_decode_jpeg_streamr³   r»   Ú
set_as_rawrx   r_   )rƒ   r*   r¶   r(   r„   s   &    r   r—   ÚBLP1Decoder._load\  s¹   € Ø37·9±9Ñ0ˆÔ˜4œ>¨5à×Ñ¤§¡Ô+Ø×$Ñ$Ö&à×Ñ !Ô#Ø�~‰~ Ô'Ø×,Ñ,Ó.�Ø—‘ wÓ6�Ø—‘ Ö%à1´$°t·~±~Ó2FÐ1GÐH�Ü$ SÓ)Ð)à0´°d·n±nÓ1EÐ0FÐGˆCÜ  Ó%Ð%r   c               ó   € V ^8„  d   QhRR/# rk   r
   )r"   s   "r   r#   rÃ   n  s   € ÷ ?ñ ? Tñ ?r   c                	ó*  € ^RI Hp \        P                  ! RV P	                  ^4      4      w  pV P	                  V4      pV P
                  f   Q hV P	                  V P                  ^ ,          V P
                  P                  4       ,
          4       V P	                  V P                  ^ ,          4      pW4,           pV! \        V4      4      p\        P                  ! VP                  4       VP                  R8X  dh   VP                  ^ ,          P                  p\!        V\"        4      '       g   Q hVP                  ^ ,          P%                  V^ ,          R3R7      .Vn        V P'                  VP)                  R4      P+                  4       R4       R# )rÅ   )ÚJpegImageFilerO   NÚCMYK)rˆ   rs   ÚBGR)ÚJpegImagePluginrÏ   r4   ry   r¤   r«   r¥   Útellr¦   r   r   Ú_decompression_bomb_checkr�   Úmoder‚   rˆ   Ú
isinstanceÚtupleÚ_replacerË   ÚconvertÚtobytes)rƒ   rÏ   Újpeg_header_sizeÚjpeg_headerr(   Úimagerˆ   s   &      r   rÊ   ÚBLP1Decoder._decode_jpeg_streamn  s  € Ý2ä$Ÿmšm¨D°$·/±/À!Ó2DÓEÑÐ	Ø—o‘oÐ&6Ó7ˆØ�w‰wÒ"Ð"Ð"Ø�‰˜Ÿ™ aÕ(¨4¯7©7¯<©<«>Õ9Ô:Ø�‰˜tŸ}™}¨QÕ/Ó0ˆØÕ!ˆÙœg d›mÓ,ˆÜ×'Ò'¨¯
©
Ô3Ø�:‰:˜ÔØ—:‘:˜a•=×%Ñ%ˆDÜ˜d¤E×*Ò*Ð*Ð*ØŸ*™* Q�-×0Ñ0°t¸AµwÀÐ6GÐ0ÓHÐIˆEŒJØ�‰˜Ÿ™ eÓ,×4Ñ4Ó6¸Ö>r   )rÈ   rÉ   N)r   r   r   r   r—   rÊ   r   r
   r   r   rÁ   rÁ   [  s   † õ&÷$?ñ ?r   rÁ   c                  ó"   € ] tR tRtR R ltRtR# )ÚBLP2Decoderi€  c               ó   € V ^8„  d   QhRR/# rk   r
   )r"   s   "r   r#   ÚBLP2Decoder.__annotate__�  s   € ÷ ,ñ ,�tñ ,r   c                	ó¢  € V P                   w  V n        V n        qn        V P	                  4       pV P
                  f   Q hV P
                  P                  V P                  ^ ,          4       V P                  ^8X  Edž   V P                  \        P                  8X  d   V P                  W!4      pEMŽV P                  \        P                  8X  Ed)   \        4       pV P                  \        P                  8X  dŒ   V P                  P                   ^,           ^,          ^,          p\#        V P                  P$                  ^,           ^,          4       F-  p\'        V P)                  V4      V4       F  pW6,          pK  	  K/  	  EMºV P                  \        P*                  8X  d‹   V P                  P                   ^,           ^,          ^,          p\#        V P                  P$                  ^,           ^,          4       F,  p\-        V P)                  V4      4       F  pW6,          pK  	  K.  	  EMV P                  \        P.                  8X  dŠ   V P                  P                   ^,           ^,          ^,          p\#        V P                  P$                  ^,           ^,          4       F,  p\1        V P)                  V4      4       F  pW6,          pK  	  K.  	  MiR\3        V P                  4       2p\5        V4      hR\3        V P                  4       2p\5        V4      hR\3        V P                  4       2p\5        V4      hV P7                  V4       R # )NzUnsupported alpha encoding zUnknown BLP encoding zUnknown BLP compression )rˆ   rÈ   rÉ   Ú_alpha_encodingr³   r«   rz   r¥   r   r   r»   r   r2   r   r   ÚstateÚxsizer3   ÚysizerJ   r¤   r   rU   r   r]   rx   r_   rË   )rƒ   r*   r¶   r(   ÚlinesizeÚybrº   r„   s   &       r   r—   ÚBLP2Decoder._load�  sw  € ØIMÏÉÑFˆÔ˜4œ>¨5Ô2Fà×$Ñ$Ó&ˆà�w‰wÒ"Ð"Ð"Ø�‰�‰�T—]‘] 1Õ%Ô&à×Ñ Õ!ð �~‰~¤×!6Ñ!6Ô6Ø—‘ wÓ6’à—‘¤8§<¡<Õ/Ü “{�Ø×'Ñ'¬=×+=Ñ+=Ô=Ø $§
¡
× 0Ñ 0°1Õ 4¸Õ:¸QÕ>�HÜ# T§Z¡Z×%5Ñ%5¸Õ%9¸aÕ$?Ö@˜Ü!,¨T¯_©_¸XÓ-FÈÖ!N˜AØ �IšDó "Oó Að ×)Ñ)¬]×-?Ñ-?Ô?Ø $§
¡
× 0Ñ 0°1Õ 4¸Õ:¸RÕ?�HÜ# T§Z¡Z×%5Ñ%5¸Õ%9¸aÕ$?Ö@˜Ü!,¨T¯_©_¸XÓ-FÖ!G˜AØ �IšDó "Hó Að ×)Ñ)¬]×-?Ñ-?Ô?Ø $§
¡
× 0Ñ 0°1Õ 4¸Õ:¸RÕ?�HÜ# T§Z¡Z×%5Ñ%5¸Õ%9¸aÕ$?Ö@˜Ü!,¨T¯_©_¸XÓ-FÖ!G˜AØ �IšDó "Hò Að 8¼¸T×=QÑ=QÓ8RÐ7SÐT�CÜ(¨Ó-Ð-à-¬d°4·>±>Ó.BÐ-CÐD�Ü$ SÓ)Ð)ð -¬T°$×2CÑ2CÓ-DÐ,EÐFˆCÜ  Ó%Ð%à�‰˜Ör   )rä   rÈ   rÉ   N)r   r   r   r   r—   r   r
   r   r   rà   rà   €  s   † ÷,ñ ,r   rà   c                  ó2   € ] tR tRtRtR R ltR R ltRtR# )	Ú
BLPEncoderi°  Tc               ó   € V ^8„  d   QhRR/# )r   r!   r)   r
   )r"   s   "r   r#   ÚBLPEncoder.__annotate__³  s   € ÷ 	ñ 	 ñ 	r   c           	     	óR  € R pV P                   f   Q hV P                   P                  RR4      p\        \        V4      ^,          4       F>  pW#^,          V^,           ^,           w  rErgV\        P
                  ! RWeWG4      ,          pK@  	  \        V4      R8  d   VR,          pK  V# )r   rr   r±   i   s       )ÚimÚ
getpaletter3   r1   r4   Úpack)rƒ   r(   r¶   r   rG   rH   rI   rF   s   &       r   Ú_write_paletteÚBLPEncoder._write_palette³  s“   € ØˆØ�w‰wÒ"Ð"Ð"Ø—'‘'×$Ñ$ V¨VÓ4ˆÜ”s˜7“| qÕ(Ö)ˆAØ  Q¥¨!¨a­%°1­Ð5‰JˆA�!Ø”F—K’K  q¨QÓ2Õ2ŠDñ *ô �$‹i˜'Ô!Ø�KÕŠDØˆr   c               ó    € V ^8„  d   QhRRRR/# )r   Úbufsizer    r!   ztuple[int, int, bytes]r
   )r"   s   "r   r#   rî   ¾  s   € ÷ "ñ "˜cð "Ð&<ñ "r   c           
     	óø  € V P                  4       p^”\        V4      ,           p\        P                  ! RV.RO5!  pV P                  f   Q hV P                  P
                  w  rVV\        P                  ! RWV,          .RO5!  ,          pWB,          p\        V4       FM  p\        V4       F;  pV\        P                  ! RV P                  P                  W‡34      4      ,          pK=  	  KO  	  \        V4      ^ V3# )é   r£   r¸   )r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   r/   )ró   r1   r4   rò   rð   r�   r3   Úgetpixel)	rƒ   rö   Úpalette_datar‰   r(   ÚwÚhÚyÚxs	   &&       r   ÚencodeÚBLPEncoder.encode¾  sÌ   € Ø×*Ñ*Ó,ˆà ¤3 |Ó#4Õ4ˆÜ�{Š{˜6 6Ð8¨YÓ8ˆà�w‰wÒ"Ð"Ð"Ø�w‰w�|‰|‰ˆØ”—’˜F A¥EÐ8¨YÓ8Õ8ˆàÕˆä�q–ˆAÜ˜1–X�ØœŸš D¨$¯'©'×*:Ñ*:¸A¸6Ó*BÓCÕC’ó ñ ô �4‹y˜!˜TÐ!Ð!r   r
   N)r   r   r   r   Ú
_pushes_fdró   rÿ   r   r
   r   r   rì   rì   °  s   † Ø€Jõ	÷"ñ "r   rì   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rð   zImage.Imageru   z	IO[bytes]Úfilenamezstr | bytesr!   rl   r
   )r"   s   "r   r#   r#   Ñ  s.   € ÷ Tñ Tˆkð T˜yð T°Kð TÀDñ Tr   c           
     óš  € V P                   R 8w  d   Rp\        V4      hV P                  P                  R4      R8X  d   RMRpVP	                  V4       V P
                  f   Q hVP	                  \        P                  ! R^4      4       V P
                  P                   R8X  d   ^M^ pVR8X  d(   VP	                  \        P                  ! R	V4      4       M¦VP	                  \        P                  ! R
\        P                  4      4       VP	                  \        P                  ! R
V4      4       VP	                  \        P                  ! R
^ 4      4       VP	                  \        P                  ! R
^ 4      4       VP	                  \        P                  ! R.V P                  O5!  4       VR8X  dM   VP	                  \        P                  ! R^4      4       VP	                  \        P                  ! R^ 4      4       \        P                  ! W\        P                  ! RRV P                  ,           ^ V P                   4      .4       R# )ÚPzUnsupported BLP image modeÚblp_versionÚBLP1rc   rd   Nro   rr   z<Lrp   rq   ri   rt   )rÕ   Ú
ValueErrorÚencoderinfoÚgetÚwriter¶   r4   rò   r   r   r�   r   Ú_saver€   )rð   ru   r  r„   rw   Úalpha_depths   &&&   r   r  r  Ñ  sƒ  € Ø	‡w�w�#„~Ø*ˆÜ˜‹oÐà—~‘~×)Ñ)¨-Ó8¸FÔB‰GÈ€EØ‡H�HˆU„Oà�:‰:Ò!Ð!Ð!Ø‡H�HŒV�[Š[˜˜qÓ!Ô"à—z‘z—‘¨&Ô0‘!°a€KØ�ÔØ
�‰”—’˜T ;Ó/Õ0à
�‰”—’˜T¤8×#8Ñ#8Ó9Ô:Ø
�‰”—’˜T ;Ó/Ô0Ø
�‰”—’˜T 1Ó%Ô&Ø
�‰”—’˜T 1Ó%Ô&Ø‡H�HŒV�[Š[˜Ð) §¡Ó)Ô*Ø�ÔØ
�‰”—’˜T 1Ó%Ô&Ø
�‰”—’˜T 1Ó%Ô&ä‡O‚O�BœYŸ_š_¨U°F¸R¿W¹WÕ4DÀaÈÏÉÓQÐRÖSr   z.blpr  ÚBLP2ri   )F)(r�   Ú
__future__r   r¾   r{   r4   Úenumr   Úior   Útypingr   Ú r   r   r	   r   r   r&   rJ   rU   r]   ÚNotImplementedErrorr_   rf   rh   ÚABCÚ	PyDecoderr�   rÁ   rà   Ú	PyEncoderrì   r  Úregister_openr"   Úregister_extensionÚregister_decoderÚregister_saveÚregister_encoderr
   r   r   Ú<module>r     sJ  ðñõ> #ã 
Û 	Û Ý Ý Ý ç ôˆWô ôˆwô ô�Gô õL÷6õr2õjCôL	Ð(ô 	õ1ô(Q�9×&Ñ&ô (QôV1�c—g‘g˜y×2Ñ2ô 1ôh"?�/ô "?ôJ-�/ô -ô`"�×$Ñ$ô "õBTð6 × Ò �L×'Ñ'¨°wÔ ?Ø × Ò ˜×,Ñ,¨fÔ 5Ø × Ò �v˜{Ô +Ø × Ò �v˜{Ô +à × Ò �L×'Ñ'¨Ô /Ø × Ò �u˜jÖ )r   