ó
    "%vgB0  ã                  óD  • S SK Jr  S SKrS SKJr  SSKJrJr  SSKJ	r
  SSKJr  SSKJr  S	rS
SSS
SSSSSSSS.rSS jr " S S\R                  5      r " S S\R$                  5      r " S S\R$                  5      rSS jr\R,                  " \R.                  \\5        \R0                  " \R.                  \5        \R2                  " S\5        \R2                  " S\5        \R4                  " \R.                  / SQ5        \R6                  " \R.                  S5        g) é    )ÚannotationsN)ÚIOé   )ÚImageÚ	ImageFile)Úi16be)Úo8)Úo32les    	
Ú1ÚLÚRGBÚCMYKÚFÚPÚRGBA)ó   P1ó   P2ó   P3ó   P4ó   P5ó   P6s   P0CMYKó   Pfs   PyPs   PyRGBAs   PyCMYKc                ó0   • U SS S:H  =(       a    U S   S;   $ )Nr   r   ó   Ps	   0123456fy© )Úprefixs    Ú4/usr/lib/python3/dist-packages/PIL/PpmImagePlugin.pyÚ_acceptr   1   s!   € Ø�!�Aˆ;˜$Ñ×< 6¨!¡9°Ñ#<Ð<ó    c                  ó:   • \ rS rSrSrSrS	S jrS	S jrS
S jrSr	g)ÚPpmImageFileé9   ÚPPMzPbmplus imagec                ó²   • U R                   c   eSn[        S5       H6  nU R                   R                  S5      nU(       a
  U[        ;   a    U$ X-  nM8     U$ )Nr   é   r   )ÚfpÚrangeÚreadÚb_whitespace)ÚselfÚmagicÚ_Úcs       r   Ú_read_magicÚPpmImageFile._read_magic=   sX   € Ø�w‰wÑ"Ð"Ð"àˆä�q–ˆAØ—‘—‘˜Q“ˆAÞ˜œ\Ó)Øàˆð ‰JŠEñ	 ð
 ˆr   c                óò  • U R                   c   eSn[        U5      S::  a•  U R                   R                  S5      nU(       d  OrU[        ;   a
  U(       d  ME  O^US:X  aC  U R                   R                  S5      S;  a"   U R                   R                  S5      S;  a  M"  M�  X-  n[        U5      S::  a  M•  U(       d  Sn[	        U5      e[        U5      S:”  a  SUR                  5        3n[	        U5      eU$ )Nr   é
   r   ó   #s   
z Reached EOF while reading headerzToken too long in file header: )r&   Úlenr(   r)   Ú
ValueErrorÚdecode)r*   Útokenr-   Úmsgs       r   Ú_read_tokenÚPpmImageFile._read_tokenI   sØ   € Ø�w‰wÑ"Ð"Ð"àˆÜ�%‹j˜BÓØ—‘—‘˜Q“ˆAÞØØ”lÓ"ÞáØØ�d“à—g‘g—l‘l 1“o¨WÓ4Øð —g‘g—l‘l 1“o¨WÕ4áØ‰JˆEô �%‹j˜BÕö à4ˆCÜ˜S“/Ð!Ü�‹Z˜"‹_Ø3°E·L±L³NÐ3CÐDˆCÜ˜S“/Ð!Øˆr   c                óÔ  • U R                   c   eU R                  5       n [        U   nX l        US;   a  SU l        OUS;   a  SU l        OUS;   a  SU l        [        U R                  5       5      [        U R                  5       5      4U l	        SnUS	;   a  S
nUS:X  a  SnOçUS:X  ao  [        U R                  5       5      nUS:X  d  [        R                  " U5      (       d  Sn[        U5      e[        U5      U R                  S'   US:  a  SOSnUSS4nOr[        U R                  5       5      nSUs=:  a  S:  d  O  Sn[        U5      eUS:”  a  US:X  a  SU l        UnUS
:w  a  US:X  a	  US:X  a  SnOUS:w  a  SnUS:X  a  UOXx4n[         R"                  " USU R$                  -   U R                   R'                  5       U5      /U l        g ! [         a    Sn[	        U5      ef = f)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_plainr   ú1;Ir   g        z!scale must be finite and non-zeroÚscaler   úF;32FzF;32BFéÿÿÿÿi   z1maxval must be greater than 0 and less than 65536éÿ   r   ÚIéÿÿ  úI;16BÚppm©r   r   )r&   r.   ÚMODESÚKeyErrorÚSyntaxErrorÚ_modeÚcustom_mimetypeÚintr8   Ú_sizeÚfloatÚmathÚisfiniter4   ÚabsÚinfor   Ú_TileÚsizeÚtellÚtile)	r*   Úmagic_numberÚmoder7   Údecoder_nameÚargsr>   ÚrawmodeÚmaxvals	            r   Ú_openÚPpmImageFile._opene   sç  € Ø�w‰wÑ"Ð"Ð"à×'Ñ'Ó)ˆð	#Ü˜Ñ&ˆDð Œ
à˜>Ó)Ø#<ˆDÕ Ø˜^Ó+Ø#=ˆDÕ Ø˜^Ó+Ø#<ˆDÔ ä˜×)Ñ)Ó+Ó,¬c°$×2BÑ2BÓ2DÓ.EÐEˆŒ
àˆØÐ0Ó0Ø&ˆLð �3‹;Ø‰DØ�S‹[Ü˜$×*Ñ*Ó,Ó-ˆEØ˜‹|¤4§=¢=°×#7Ñ#7Ø9�Ü  “oÐ%Ü!$ U£ˆD�I‰I�gÑà!&¨£‘g°ˆGØ˜Q Ð#‰Dä˜×)Ñ)Ó+Ó,ˆFØ�vÕ% Õ%ØI�Ü  “oÐ%Ø˜‹| ¨£Ø �”
àˆGØ˜{Ó*à˜U“? t¨s£{Ø%‘GØ˜s“]Ø#(�Là*¨eÓ3‘7¸'Ð9JˆDä�OŠO˜L¨&°4·9±9Ñ*<¸d¿g¹g¿l¹l»nÈdÓSð
ˆ�	øô_ ó 	#Ø"ˆCÜ˜cÓ"Ð"ð	#ús   ¡	G ÇG')rJ   rM   rK   rV   N©ÚreturnÚbytes)r`   ÚNone)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚformatÚformat_descriptionr.   r8   r]   Ú__static_attributes__r   r   r   r!   r!   9   s   † Ø€FØ(Ðô
ô÷87
r   r!   c                  ód   • \ rS rSr% SrS\S'   SS jrSSS jjrSS jrSS jr	SS	 jr
SS
 jrSrg)ÚPpmPlainDecoderé£   TÚboolÚ_comment_spansc                ór   • U R                   c   eU R                   R                  [        R                  5      $ )N)Úfdr(   r   Ú	SAFEBLOCK)r*   s    r   Ú_read_blockÚPpmPlainDecoder._read_block§   s+   € Ø�w‰wÑ"Ð"Ð"à�w‰w�|‰|œI×/Ñ/Ó0Ð0r   c                ó†   • UR                  SU5      nUR                  SU5      nX4-  S:”  a  [        X45      $ [        X45      $ )Nó   
ó   r   )ÚfindÚminÚmax)r*   ÚblockÚstartÚaÚbs        r   Ú_find_comment_endÚ!PpmPlainDecoder._find_comment_end¬   s=   € Ø�J‰J�u˜eÓ$ˆØ�J‰J�u˜eÓ$ˆØ™E A›IŒs�1‹yÐ4¬3¨q«9Ð4r   c                óR  • U R                   (       a?  U(       a8  U R                  U5      nUS:w  a  XS-   S  nOU R                  5       nU(       a  M8  SU l          UR                  S5      nUS:X  a   U$ U R                  X5      nUS:w  a  US U XS-   S  -   nOUS U nSU l          U$ MP  )Nr@   r   FTr2   )rn   r~   rr   rw   )r*   rz   Úcomment_endÚcomment_starts       r   Ú_ignore_commentsÚ PpmPlainDecoder._ignore_comments±   sØ   € Ø××æØ"×4Ñ4°UÓ;�Ø "Ó$ð "°¡/Ð"3Ð4�EØð !×,Ñ,Ó.�E÷ �%ð $ˆÔØØ!ŸJ™J tÓ,ˆMØ Ó"àð ˆð ×0Ñ0°ÓFˆKØ˜bÓ ð ˜n˜}Ð-°ÀA±oÐ6GÐ0HÑH‘ð ˜n˜}Ð-�Ø&*�Ô#ØØˆñ r   c                óî  • [        5       nU R                  R                  U R                  R                  -  n[	        U5      U:w  a‰  U R                  5       nU(       d  OqU R                  U5      nSR                  UR                  5       5      nU H#  nUS;  d  M  S[        U/5      -  n[        U5      e   X-   SU n[	        U5      U:w  a  M‰  [        R                  SS5      nUR                  U5      $ )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ÚstateÚxsizeÚysizer3   rr   rƒ   ÚjoinÚsplitra   r4   Ú	maketransÚ	translate)r*   ÚdataÚtotal_bytesrz   Útokensr6   r7   Úinverts           r   Ú_decode_bitonalÚ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›/Ð)ñ  ð ‘M < KÐ0ˆDô �$‹i˜;Õ&ô —‘ ¨Ó4ˆØ�~‰~˜fÓ%Ð%r   c                ó  • [        5       nSnU R                  S:X  a  SOSnU R                  S:X  a  SOSn[        R                  " U R                  5      nU R                  R
                  U R                  R                  -  U-  U-  nSn[        U5      U:w  Gan  U R                  5       n	U	(       d  U(       a  [        S5      n	O U$ U R                  U	5      n	U(       a  X‰-   n	SnU	R                  5       n
U	(       aM  U	S	S  R                  5       (       d5  U
R                  5       n[        U5      U:”  a  S
US US-    -  n[        U5      eU
 H§  n[        U5      U:”  a  S
US US-    -  n[        U5      e[        U5      nUS:  a  SU 3n[        U5      eXÑ:”  a  SU 3n[        U5      e[        XÑ-  U-  5      nX R                  S:X  a  [!        U5      O
[#        U5      -  n[        U5      U:X  d  M§    O   [        U5      U:w  a  GMn  U$ )Nr1   rB   é   r   rC   rA   r   ó    r@   s    Token too long found in data: %sr   zChannel value is negative: z'Channel value too large for this mode: )rˆ   rX   r   Úgetmodebandsr‰   rŠ   r‹   r3   rr   rƒ   r�   ÚisspaceÚpopr4   rL   ÚroundÚo32r	   )r*   r\   r�   Úmax_lenÚout_byte_countÚout_maxÚbandsr‘   Ú
half_tokenrz   r’   r7   r6   ÚvalueÚmsg_strs                  r   Ú_decode_blocksÚ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ð ðB ˆð? ×)Ñ)¨%Ó0ˆEæØ"Ñ*�Ø �
à—[‘[“]ˆFæ˜U 2 3˜Z×/Ñ/×1Ñ1Ø#ŸZ™Z›\�
Ü�z“? WÓ,à;¸jÈÈ7ÐUVÉ;Ð>WÑWð ô % S›/Ð)ã�Ü�u“: Ó'Ø=ÀÀmÈÐRSÉÐ@TÑT�CÜ$ S›/Ð)Ü˜E›
�Ø˜1“9Ø ;¸E¸7ÐC�GÜ$ WÓ-Ð-Ø“>Ø GÈÀwÐO�GÜ$ WÓ-Ð-Ü˜e™n¨wÑ6Ó7�Ø§i¡i°3Ó&6œ˜Eœ
¼B¸u»IÑE�Ü�t“9 Õ+Ùñ  ô3 �$‹i˜;Ö&ðP ˆr   c                ó
  • SU l         U R                  S:X  a  U R                  5       nSnO>U R                  S   nU R	                  U5      nU R                  S:X  a  SOU R                  nU R                  [        U5      U5        g)NFr   z1;8r@   rB   úI;32©r@   r   )rn   rX   r”   rZ   r¥   Ú
set_as_rawra   )r*   Úbufferr�   r[   r\   s        r   r5   ÚPpmPlainDecoder.decode  sq   € Ø#ˆÔØ�9‰9˜ÓØ×'Ñ'Ó)ˆDØ‰Gà—Y‘Y˜r‘]ˆFØ×&Ñ& vÓ.ˆDØ $§	¡	¨SÓ 0‘f°d·i±iˆGØ�‰œ˜d› WÔ-Ør   )rn   Nr_   )r   )rz   ra   r{   rL   r`   rL   )rz   ra   r`   ra   )r`   rˆ   )r\   rL   r`   rˆ   ©r«   z$bytes | Image.SupportsArrayInterfacer`   ztuple[int, int])rc   rd   re   rf   Ú	_pulls_fdÚ__annotations__rr   r~   rƒ   r”   r¥   r5   ri   r   r   r   rk   rk   £   s-   ‡ Ø€IØÓô1ö
5ô
 ôD&ô21÷f
r   rk   c                  ó"   • \ rS rSrSrSS jrSrg)Ú
PpmDecoderi,  Tc                óF  • U R                   c   e[        5       nU R                  S   nUS:  a  SOSnU R                  S:X  a  SOSnU R                  S:X  a  SOSn[        R
                  " U R                  5      nU R                  R                  U R                  R                  -  U-  U-  n[        U5      U:  a¬  U R                   R                  XG-  5      n	[        U	5      XG-  :  a  O}[        U5       H]  n
US:X  a  Xš   O[        XšU-  5      n[        U[        X³-  U-  5      5      nX R                  S:X  a  [        U5      O
[!        U5      -  nM_     [        U5      U:  a  M¬  U R                  S:X  a  S	OU R                  nU R#                  [%        U5      U5        g
)Nr@   é   r   é   rB   r—   rC   rA   r¨   r©   )rp   rˆ   rZ   rX   r   r™   r‰   rŠ   r‹   r3   r(   r'   Úi16rx   rœ   r�   r	   rª   ra   )r*   r«   r�   r\   Úin_byte_countrŸ   r    r¡   Údest_lengthÚpixelsr}   r£   r[   s                r   r5   ÚPpmDecoder.decode/  sc  € Ø�w‰wÑ"Ð"Ð"ä‹{ˆØ—‘˜2‘ˆØ# c›\™¨qˆØ"Ÿi™i¨3Ó.™°AˆØŸ9™9¨Ó+‘%°ˆÜ×"Ò" 4§9¡9Ó-ˆØ—j‘j×&Ñ&¨¯©×)9Ñ)9Ñ9¸EÑAÀNÑRˆÜ�$‹i˜+Ó%Ø—W‘W—\‘\ -Ñ"7Ó8ˆFÜ�6‹{˜]Ñ2Ó2àÜ˜5–\�à!.°!Ó!3�F’I¼¸VÈÑEVÓ9Wð ô ˜G¤U¨5©>¸GÑ+CÓ%DÓE�Ø§i¡i°3Ó&6œ˜Eœ
¼B¸u»IÑE’ñ "ô �$‹i˜+Õ%ð !ŸI™I¨Ó,‘&°$·)±)ˆØ�‰œ˜d› WÔ-Ør   r   Nr­   )rc   rd   re   rf   r®   r5   ri   r   r   r   r±   r±   ,  s   † Ø€I÷r   r±   c                ó²  • U R                   S:X  a  Su  p4OoU R                   S:X  a  Su  p4OZU R                   S;   a  Su  p4OEU R                   S;   a  Su  p4O0U R                   S	:X  a  S
u  p4OSU R                    S3n[        U5      eUR                  USU R                  -  -   5        US:X  a  UR                  S5        OGUS:X  a*  US:X  a  UR                  S5        O)UR                  S5        OUS:X  a  UR                  S5        U R                   S	:X  a  SOSn[        R
                  " X[        R                  " SSU R                  -   SUSU45      /5        g )Nr   )r=   r   r   )r   r   )rB   zI;16)rD   r   )r   r   )r   r   r   )r?   r   zcannot write mode z as PPMs   
%d %d
r   s   255
r   s   65535
r   s   -1.0
r@   r   r;   rF   r   )rX   ÚOSErrorÚwriterT   r   Ú_saverS   )Úimr&   Úfilenamer[   Úheadr7   Ú	row_orders          r   r½   r½   M  s.  € Ø	‡w�w�#ƒ~Ø$‰ˆ�Ø	�‰�C‹Ø"‰ˆ�Ø	�‰�MÓ	!Ø&‰ˆ�Ø	�‰�OÓ	#Ø$‰ˆ�Ø	�‰�C‹Ø&‰ˆ�à" 2§7¡7 )¨7Ð3ˆÜ�c‹lÐØ‡H�HˆT�L 2§7¡7Ñ*Ñ*Ô+Øˆuƒ}Ø
�‰�ÕØ	�‹Ø�c‹>Ø�H‰H�XÕà�H‰H�ZÕ Ø	�‹Ø
�‰�ÔØ—g‘g “n‘¨!€IÜ‡O‚OØ
”—’ ¨°·±Ñ(8¸!¸gÀqÈ)Ð=TÓUÐVõr   rE   r<   )z.pbmz.pgmz.ppmz.pnmz.pfmzimage/x-portable-anymap)r   ra   r`   rm   )r¾   zImage.Imager&   z	IO[bytes]r¿   zstr | bytesr`   rb   )Ú
__future__r   rO   Útypingr   Ú r   r   Ú_binaryr   rµ   r	   r
   r�   r)   rG   r   r!   Ú	PyDecoderrk   r±   r½   Úregister_openrg   Úregister_saveÚregister_decoderÚregister_extensionsÚregister_mimer   r   r   Ú<module>rÌ      s  ðõ  #ã Ý ç Ý !Ý Ý !ð
 +€ð ØØØØØàØàØØñ	€ô$=ôc
�9×&Ñ&ô c
ôTF�i×)Ñ)ô FôR�×$Ñ$ô ôBðD × Ò �L×'Ñ'¨°wÔ ?Ø × Ò �L×'Ñ'¨Ô /à × Ò �u˜jÔ )Ø × Ò �{ OÔ 4à × Ò ˜,×-Ñ-Ò/WÔ Xà × Ò �L×'Ñ'Ð)BÕ Cr   