Ë
    ™2ÚiŠ,  ã                   ó  — d dl mZmZ d dlmZ d dlmZ d dlmZ dZ	ddddddd	d
dd	dœ
Z
d„ Z G d„ dej                  «      Z G d„ dej                  «      Z G d„ dej                  «      Zd„ Z ej"                  ej$                  ee«        ej&                  ej$                  e«        ej(                  de«        ej(                  de«        ej*                  ej$                  g d¢«        ej,                  ej$                  d«       y)é   )ÚImageÚ	ImageFile)Úi16be)Úo8)Úo32les    	
Ú1ÚLÚRGBÚCMYKÚPÚRGBA)
ó   P1ó   P2ó   P3ó   P4ó   P5ó   P6s   P0CMYKs   PyPs   PyRGBAs   PyCMYKc                 ó$   — | dd dk(  xr | d   dv S )Né    r   ó   Ps   0123456y© )Úprefixs    úI/var/www/html/acx/venv/lib/python3.12/site-packages/PIL/PpmImagePlugin.pyÚ_acceptr   -   s!   € Ø�!�Aˆ;˜$ÑÒ; 6¨!¡9°Ð#;Ð;ó    c                   ó&   — e Zd ZdZdZd„ Zd„ Zd„ Zy)ÚPpmImageFileÚPPMzPbmplus imagec                 ó„   — d}t        d«      D ]/  }| j                  j                  d«      }|r|t        v r |S ||z  }Œ1 |S )Nr   é   r   )ÚrangeÚfpÚreadÚb_whitespace)ÚselfÚmagicÚ_Úcs       r   Ú_read_magiczPpmImageFile._read_magic9   sO   € Øˆä�q“ò 	ˆAØ—‘—‘˜Q“ˆAÙ˜œ\Ñ)Øàˆð �Q‰J‰Eð		ð
 ˆr   c                 óœ  — d}t        |«      dk  r€| j                  j                  d«      }|snb|t        v r|sŒ7nV|dk(  r=| j                  j                  d«      dvr	 | j                  j                  d«      dvrŒŒz||z  }t        |«      dk  rŒ€|sd}t	        |«      ‚t        |«      dkD  rd|j                  «       › �}t	        |«      ‚|S )Nr   é
   r   ó   #s   
z Reached EOF while reading headerzToken too long in file header: )Úlenr"   r#   r$   Ú
ValueErrorÚdecode)r%   Útokenr(   Úmsgs       r   Ú_read_tokenzPpmImageFile._read_tokenC   sÊ   € ØˆÜ�%‹j˜BÒØ—‘—‘˜Q“ˆAÙØØ”lÑ"ÙàØØ�d’à—g‘g—l‘l 1“o¨WÑ4Øð —g‘g—l‘l 1“o¨WÒ4àØ�Q‰JˆEô �%‹j˜BÓñ à4ˆCÜ˜S“/Ð!Ü�‹Z˜"Š_Ø3°E·L±L³NÐ3CÐDˆCÜ˜S“/Ð!Øˆr   c                 ó„  — | j                  «       }	 t        |   }|dv rd| _        n|dv rd| _        n|dv rd| _        d }d}|d	v rd
}t        d«      D ]’  }t        | j                  «       «      }|dk(  r|}Œ$|dk(  r|}	|dk(  rd| _        d}
 nZ|x| _        }
ŒE|dk(  sŒK|}d|cxk  rdk  sn d}t        |«      ‚|dkD  r|dk(  rd| _        |d
k7  sŒ~|dk(  r|dk(  rd}
Œ‹|dk7  sŒ‘d}Œ” |dk(  r
ddfn
|f}	f| _
        |dd||	f| j                  j                  «       |fg| _        y # t        $ r d}t        |«      ‚w xY w)Nznot a PPM file)r   r   zimage/x-portable-bitmap)r   r   zimage/x-portable-graymap)r   r   zimage/x-portable-pixmapÚraw)r   r   r   Ú	ppm_plainé   r   r   r   ú1;Ié   i   z1maxval must be greater than 0 and less than 65536éÿ   r	   ÚIéÿÿ  úI;16BÚppm)r)   ÚMODESÚKeyErrorÚSyntaxErrorÚcustom_mimetyper!   Úintr2   Ú_moder.   Ú_sizer"   ÚtellÚtile)r%   Úmagic_numberÚmoder1   ÚmaxvalÚdecoder_nameÚixr0   ÚxsizeÚysizeÚrawmodeÚargss               r   Ú_openzPpmImageFile._open]   s™  € Ø×'Ñ'Ó)ˆð	#Ü˜Ñ&ˆDð
 ˜>Ñ)Ø#<ˆDÕ Ø˜^Ñ+Ø#=ˆDÕ Ø˜^Ñ+Ø#<ˆDÔ àˆØˆØÐ0Ñ0Ø&ˆLÜ˜“(ò 	-ˆBÜ˜×(Ñ(Ó*Ó+ˆEØ�QŠwØ‘Ø�q’Ø�Ø˜3’;Ø!$�D”JØ#�GÙà+/Ð/�D”J¡Ø�q“Ø�Ø˜6Ô) EÔ)ØM�CÜ$ S›/Ð)Ø˜C’< D¨C¢KØ!$�D”Jà ;Ó.à ’¨4°3ª;Ø")™Ø 3›Ø',™ð3	-ð6 #/°%Ò"7�˜˜A‰¸gÀvÐ=NˆØ˜E�\ˆŒ
Ø" Q¨¨5°%Ð$8¸$¿'¹'¿,¹,».È$ÐOÐPˆ�	øôY ò 	#Ø"ˆCÜ˜cÓ"Ð"ð	#ús   ’	D( Ä(D?N)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr)   r2   rP   r   r   r   r   r   5   s   „ Ø€FØ(Ðòòó40Qr   r   c                   ó6   — e Zd ZdZd„ Zd	d„Zd„ Zd„ Zd„ Zd„ Z	y)
ÚPpmPlainDecoderTc                 óT   — | j                   j                  t        j                  «      S )N)Úfdr#   r   Ú	SAFEBLOCK)r%   s    r   Ú_read_blockzPpmPlainDecoder._read_block—   s   € Ø�w‰w�|‰|œI×/Ñ/Ó0Ð0r   c                 óŠ   — |j                  d|«      }|j                  d|«      }||z  dkD  rt        ||«      S t        ||«      S )Nó   
ó   r   )ÚfindÚminÚmax)r%   ÚblockÚstartÚaÚbs        r   Ú_find_comment_endz!PpmPlainDecoder._find_comment_endš   sC   € Ø�J‰J�u˜eÓ$ˆØ�J‰J�u˜eÓ$ˆØ ™E AšIŒs�1�a‹yÐ4¬3¨q°!«9Ð4r   c                 ó0  — | j                   r4|r2| j                  |«      }|dk7  r	||dz   d  }n| j                  «       }|rŒ2d| _         	 |j                  d«      }|dk(  r	 |S | j                  ||«      }|dk7  r|d | ||dz   d  z   }n|d | }d| _         	 |S ŒO)Néÿÿÿÿr   FTr,   )Ú_comment_spansrf   r[   r_   )r%   rb   Úcomment_endÚcomment_starts       r   Ú_ignore_commentsz PpmPlainDecoder._ignore_commentsŸ   sÜ   € Ø×ÒáØ"×4Ñ4°UÓ;�Ø "Ò$ð " +°¡/Ð"3Ð4�EØð !×,Ñ,Ó.�Eò ð $ˆÔØØ!ŸJ™J tÓ,ˆMØ Ò"àð ˆð ×0Ñ0°¸ÓFˆKØ˜bÒ ð ˜n˜}Ð-°°kÀA±oÐ6GÐ0HÑH‘ð ˜n˜}Ð-�Ø&*�Ô#ØØˆð r   c                 óØ  — t        «       }| j                  j                  | j                  j                  z  }t	        |«      |k7  r| j                  «       }|snl| j                  |«      }dj                  |j                  «       «      }|D ]   }|dvsŒdt        |g«      z  }t        |«      ‚ ||z   d| }t	        |«      |k7  rŒt        j                  dd«      }|j                  |«      S )z¥
        This is a separate method because in the plain PBM format, all data tokens are
        exactly one byte, so the inter-token whitespace is optional.
        r   )é0   é1   s   Invalid token for this mode: %sNs   01s   ÿ )Ú	bytearrayÚstaterL   rM   r-   r[   rl   ÚjoinÚsplitÚbytesr.   Ú	maketransÚ	translate)r%   ÚdataÚtotal_bytesrb   Útokensr0   r1   Úinverts           r   Ú_decode_bitonalzPpmPlainDecoder._decode_bitonalÁ   sß   € ô
 ‹{ˆØ—j‘j×&Ñ&¨¯©×)9Ñ)9Ñ9ˆä�$‹i˜;Ò&Ø×$Ñ$Ó&ˆEÙàà×)Ñ)¨%Ó0ˆEà—X‘X˜eŸk™k›mÓ,ˆFØò *�Ø Ò(Ø<¼uÀeÀW»~ÑM�CÜ$ S›/Ð)ð*ð ˜6‘M < KÐ0ˆDô �$‹i˜;Ó&ô —‘ ¨Ó4ˆØ�~‰~˜fÓ%Ð%r   c                 ó¤  — t        «       }d}| j                  dk(  rdnd}| j                  dk(  rdnd}t        j                  | j                  «      }| j                  j
                  | j                  j                  z  |z  |z  }d}t        |«      |k7  �r:| j                  «       }	|	s|rt        d«      }	n	 |S | j                  |	«      }	|r||	z   }	d}|	j                  «       }
|	rG|	d	d  j                  «       s4|
j                  «       }t        |«      |kD  rd
|d |dz    z  }t        |«      ‚|
D ]�  }t        |«      |kD  rd
|d |dz    z  }t        |«      ‚t        |«      }||kD  rd|› �}t        |«      ‚t        ||z  |z  «      }|| j                  dk(  rt!        |«      n
t#        |«      z  }t        |«      |k(  sŒ� n t        |«      |k7  r�Œ:|S )Nr+   r:   é   r   r;   r9   Fó    rh   s    Token too long found in data: %sz'Channel value too large for this mode: )rp   rH   r   Úgetmodebandsrq   rL   rM   r-   r[   rl   rs   ÚisspaceÚpopr.   rB   ÚroundÚo32r   )r%   rI   rw   Úmax_lenÚout_byte_countÚout_maxÚbandsrx   Ú
half_tokenrb   ry   r1   r0   Úvalues                 r   Ú_decode_blockszPpmPlainDecoder._decode_blocksÚ   sß  € Ü‹{ˆØˆØ"Ÿi™i¨3Ò.™°AˆØŸ9™9¨Ò+‘%°ˆÜ×"Ñ" 4§9¡9Ó-ˆØ—j‘j×&Ñ&¨¯©×)9Ñ)9Ñ9¸EÑAÀNÑRˆàˆ
Ü�$‹i˜;Ó&Ø×$Ñ$Ó&ˆEÙÙÜ% d›O‘Eð ð< ˆð9 ×)Ñ)¨%Ó0ˆEáØ" UÑ*�Ø"�
à—[‘[“]ˆFá˜U 2 3˜Z×/Ñ/Ô1Ø#ŸZ™Z›\�
Ü�z“? WÒ,à;¸jÈÈ7ÐUVÉ;Ð>WÑWð ô % S›/Ð)àò �Ü�u“: Ò'Ø=ÀÀmÈÐRSÉÐ@TÑT�CÜ$ S›/Ð)Ü˜E›
�Ø˜6’>ØCÀEÀ7ÐK�CÜ$ S›/Ð)Ü˜e f™n¨wÑ6Ó7�Ø d§i¡i°3Ò&6œ˜Eœ
¼B¸u»IÑE�Ü�t“9 Ó+Ùðô3 �$‹i˜;Ô&ðJ ˆr   c                 ó  — d| _         | j                  dk(  r| j                  «       }d}n=| j                  d   }| j	                  |«      }| j                  dk(  rdn| j                  }| j                  t        |«      |«       y)NFr   z1;8rh   r:   úI;32©rh   r   )ri   rH   r{   rO   rŠ   Ú
set_as_rawrt   )r%   Úbufferrw   rN   rI   s        r   r/   zPpmPlainDecoder.decode
  sq   € Ø#ˆÔØ�9‰9˜ÒØ×'Ñ'Ó)ˆDØ‰Gà—Y‘Y˜r‘]ˆFØ×&Ñ& vÓ.ˆDØ $§	¡	¨SÒ 0‘f°d·i±iˆGØ�‰œ˜d› WÔ-Ør   N)r   )
rQ   rR   rS   Ú	_pulls_fdr[   rf   rl   r{   rŠ   r/   r   r   r   rW   rW   ”   s'   „ Ø€Iò1ó5ò
 òD&ò2.ó`
r   rW   c                   ó   — e Zd ZdZd„ Zy)Ú
PpmDecoderTc                 óx  — t        «       }| j                  d   }|dk  rdnd}| j                  dk(  rdnd}| j                  dk(  rdnd}t        j                  | j                  «      }t        |«      | j                  j                  | j                  j                  z  |z  |z  k  rÜ| j                  j                  ||z  «      }t        |«      ||z  k  rn¬t        |«      D ]^  }	|dk(  r||	   nt        ||	|z  «      }
t        |t        |
|z  |z  «      «      }
|| j                  dk(  rt        |
«      n
t!        |
«      z  }Œ` t        |«      | j                  j                  | j                  j                  z  |z  |z  k  rŒÜ| j                  dk(  rd	n| j                  }| j#                  t%        |«      |«       y
)Nrh   é   r   r8   r:   r}   r;   r9   rŒ   r�   )rp   rO   rH   r   r   r-   rq   rL   rM   rY   r#   r!   Úi16r`   r‚   rƒ   r   rŽ   rt   )r%   r�   rw   rI   Úin_byte_countr…   r†   r‡   Úpixelsre   r‰   rN   s               r   r/   zPpmDecoder.decode  s„  € Ü‹{ˆØ—‘˜2‘ˆØ# cš\™¨qˆØ"Ÿi™i¨3Ò.™°AˆØŸ9™9¨Ò+‘%°ˆÜ×"Ñ" 4§9¡9Ó-ˆÜ�$‹i˜$Ÿ*™*×*Ñ*¨T¯Z©Z×-=Ñ-=Ñ=ÀÑEÈÑVÒVØ—W‘W—\‘\ -°%Ñ"7Ó8ˆFÜ�6‹{˜]¨UÑ2Ò2àÜ˜5“\ò F�à!.°!Ò!3�F˜1’I¼¸VÀQÈÑEVÓ9Wð ô ˜G¤U¨5°6©>¸GÑ+CÓ%DÓE�Ø d§i¡i°3Ò&6œ˜Eœ
¼B¸u»IÑE‘ðFô �$‹i˜$Ÿ*™*×*Ñ*¨T¯Z©Z×-=Ñ-=Ñ=ÀÑEÈÑVÓVð !ŸI™I¨Ò,‘&°$·)±)ˆØ�‰œ˜d› WÔ-Ør   N)rQ   rR   rS   r�   r/   r   r   r   r’   r’     s   „ Ø€Iór   r’   c           
      ó  — | j                   dk(  rd\  }}nY| j                   dk(  rd\  }}nD| j                   dk(  rd\  }}n/| j                   dv rd\  }}nd	| j                   › d
�}t        |«      ‚|j                  |d| j                  z  z   «       |dk(  r|j                  d«       n-|dk(  r(|dk(  r|j                  d«       n|j                  d«       t	        j
                  | |dd| j                  z   d|ddffg«       y )Nr   )r7   r   r	   )r	   r   r:   )r<   r   )r
   r   )r
   r   zcannot write mode z as PPMs   
%d %d
r   s   255
r   s   65535
r4   )r   r   r   r   )rH   ÚOSErrorÚwriteÚsizer   Ú_save)Úimr"   ÚfilenamerN   Úheadr1   s         r   rœ   rœ   5  sí   € Ø	‡w�w�#‚~Ø$‰ˆ‘Ø	�‰�CŠØ"‰ˆ‘Ø	�‰�CŠØ&‰ˆ‘Ø	�‰�OÑ	#Ø$‰ˆ‘à" 2§7¡7 )¨7Ð3ˆÜ�c‹lÐØ‡H�HˆT�L 2§7¡7Ñ*Ñ*Ô+Øˆu‚}Ø
�‰�ÕØ	�ŠØ�cŠ>Ø�H‰H�XÕà�H‰H�ZÔ Ü‡O�O�B˜˜e V¨b¯g©gÑ%5°q¸7ÀAÀq¸/ÐJÐKÕLr   r=   r5   )z.pbmz.pgmz.ppmz.pnmzimage/x-portable-anymapN)Ú r   r   Ú_binaryr   r•   r   r   rƒ   r$   r>   r   r   Ú	PyDecoderrW   r’   rœ   Úregister_openrT   Úregister_saveÚregister_decoderÚregister_extensionsÚregister_mimer   r   r   ú<module>r¨      s  ð÷$ Ý !Ý Ý !ð
 +€ð ØØØØØààØØñ	€ò"<ôXQ�9×&Ñ&ô XQô~@�i×)Ñ)ô @ôF�×$Ñ$ô ò<Mð< €× Ñ �L×'Ñ'¨°wÔ ?Ø €× Ñ �L×'Ñ'¨Ô /à €× Ñ �u˜jÔ )Ø €× Ñ �{ OÔ 4à €× Ñ ˜,×-Ñ-Ò/OÔ Pà €× Ñ �L×'Ñ'Ð)BÕ Cr   