U
    M»{j£t  ã                A   @  sB  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
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 ddlmZ dd	lmZ dd
lmZ ddddœdd„Zdd„ Zddddœdd„Zddddœdd„Zddddœdd„Zddefddefddefdd efd!d"efd#d$efd%d&efd'd(efd)d*d+efd,d-efd.d/efd0d1efd2d3efd4d5efd6d7efd8d9d:d;d<d=d>d?d@dAdBdCefddDefdEdFefdGdHefdIdJefdKdLefdMdNefdOdPefdQdRefdSdTefdUdVefdWdXefdYdZefd[d\efd]d^efd_d`efdadbefdcddefdedfefdgdhefdidjefdkdlefdmdndodpdqdrdsdtdudvdwdxdydzdd{efd|œ?Z d}d~dœd€d�„Z!G d‚d„ dejƒZ"dƒd„œd…d†„Z#d‡dˆ„ Z$d‰d‰dŠdŠd‹dŒd�œZ%dŽZ&d dd�d�œZ'd‘d’„ Z(d“d”d•dd–œd—d˜„Z)d“d”d•dd–œd™dš„Z*d¢d›dœ„Z+e ,e"j-e+e!¡ e .e"j-e)¡ e /e"j-d�dždŸd g¡ e 0e"j-d¡¡ dS )£é    )ÚannotationsN)ÚIOÚAnyé   )ÚImageÚ	ImageFile)Úi16be)Úi32be)Úo8)Úo16be)ÚpresetsÚJpegImageFileÚintÚNone)ÚselfÚmarkerÚreturnc                 C  s&   t | j d¡ƒd }t | j|¡ d S )Né   )Úi16ÚfpÚreadr   Ú
_safe_read)r   r   Ún© r   úR/var/www/html/bwave/python/venv/lib/python3.8/site-packages/PIL/JpegImagePlugin.pyÚSkip:   s    r   c                 C  sš  t | j d¡ƒd }t | j|¡}d|d@  }|| j|< | j ||f¡ |dkrä|d d… dkrät |dƒ | jd< }t	|d	ƒ| jd
< z |d }t |dƒt |dƒf}W n t
k
r¸   Y n(X |dkrÌ|| jd< || jd< || jd< �n²|dk�rJ|d d… dk�rJd| jk�r(| jd  |dd … 7  < n|| jd< | j ¡ | d | _�nL|dk�r€|d d… dk�r€| dd¡d | jd< �n|dk�rª|d d… dk�rª|| jd< �nì|dk�rÖ|d d… dk�rÖ| j |¡ �nÀ|dk�rô|d d … d!k�rôd }| j d"i ¡}	|||d … d#k�r–z´|d7 }t ||ƒ}
|d7 }|| }|d| 7 }||d@ 7 }t||ƒ}|d7 }|||| … }|
d$k�r°t|d%ƒd& t |dƒt|dƒd& t |dƒd'œ}||	|
< ||7 }||d@ 7 }W n tjk
�rì   Y �q–Y nX �qn¢|d(k�rP|d d… d)k�rPt |dƒ| jd*< z|d+ }W n tk
�rB   Y nX || jd,< nF|dk�r–|d d… d-k�r–|dd … | jd.< | j ¡ | d | jd/< d S )0Nr   zAPP%dé   éàÿ  é   s   JFIFé   Zjfifé   Zjfif_versioné   é   é
   r   ÚdpiÚ	jfif_unitÚjfif_densityéáÿ  é   s   Exif  Úexifé   s   http://ns.adobe.com/xap/1.0/ ó    Zxmpéâÿ  s   FPXR Zflashpixé   ó   ICC_PROFILE éíÿ  é   s   Photoshop 3.0 Ú	photoshops   8BIMií  r   i   )ZXResolutionZDisplayedUnitsXZYResolutionZDisplayedUnitsYéîÿ  s   AdobeÚadobeé   Úadobe_transforms   MPF ÚmpZmpoffset)r   r   r   r   r   ÚappÚapplistÚappendÚinfoÚdivmodÚ	ExceptionÚtellZ_exif_offsetÚsplitÚicclistÚ
setdefaultÚi32ÚstructÚerrorÚ
IndexError)r   r   r   Úsr7   Úversionr%   r&   Úoffsetr1   ÚcodeZname_lenÚsizeÚdatar5   r   r   r   ÚAPP?   s~    






ürK   c                 C  sJ   t | j d¡ƒd }t | j|¡}|| jd< || jd< | j d|f¡ d S )Nr   ÚcommentÚCOM)	r   r   r   r   r   r:   r7   r8   r9   )r   r   r   rE   r   r   r   rM   ¥   s
    

rM   c           	      C  sˆ  t | j d¡ƒd }t | j|¡}t |dƒt |dƒf| _|d | _| jdkrbd| j› d�}t|ƒ‚|d | _| jdkr~d	| _	n:| jdkr�d
| _	n(| jdkr¢d| _	nd| j› d�}t|ƒ‚|dkrÔd | j
d< | j
d< | j�r0| j ¡  | jd d t| jƒk�rdd„ | jD ƒ}d |¡}nd }|| j
d< g | _tdt|ƒdƒD ]B}|||d … }| j |d |d d |d d@ |d f¡ �q@d S )Nr   é   r   r   r"   zcannot handle z-bit layersr   ÚLÚRGBr   ÚCMYKz-layer images)éÂÿ  éÆÿ  éÊÿ  éÎÿ  ÚprogressiveÚprogressioné   c                 S  s   g | ]}|d d… ‘qS )r0   Nr   )Ú.0Úpr   r   r   Ú
<listcomp>Ó   s     zSOF.<locals>.<listcomp>ó    Úicc_profiler(   é   r   )r   r   r   r   r   Ú_sizeÚbitsÚSyntaxErrorÚlayersÚ_moder:   r?   ÚsortÚlenÚjoinÚrangeÚlayerr9   )	r   r   r   rE   ÚmsgZprofiler]   ÚiÚtr   r   r   ÚSOF°   s:    







rl   c                   sÒ   t | j d¡ƒd }t | j|¡}t|ƒrÎ|d }|d dkrBdnd}d|d  }t|ƒ|k rjd}t|ƒ‚t |dkrzdnd|d|… ¡‰ tj	d	kr¤|dkr¤ˆ  
¡  ‡ fd
d„tD ƒ| j|d@ < ||d … }q"d S )Nr   r   r^   r   é@   zbad quantization table markerÚBÚHÚlittlec                   s   g | ]}ˆ | ‘qS r   r   )rY   rj   ©rJ   r   r   r[   ô   s     zDQT.<locals>.<listcomp>r   )r   r   r   r   r   re   ra   ÚarrayÚsysÚ	byteorderÚbyteswapÚzigzag_indexÚquantization)r   r   r   rE   ÚvÚ	precisionZ	qt_lengthri   r   rq   r   ÚDQTà   s     rz   ZSOF0zBaseline DCTZSOF1zExtended Sequential DCTZSOF2zProgressive DCTZSOF3zSpatial losslessZDHTzDefine Huffman tableZSOF5zDifferential sequential DCTZSOF6zDifferential progressive DCTZSOF7zDifferential spatial)ZJPGÚ	ExtensionNZSOF9zExtended sequential DCT (AC)ZSOF10zProgressive DCT (AC)ZSOF11zSpatial lossless DCT (AC)ZDACz%Define arithmetic coding conditioningZSOF13z Differential sequential DCT (AC)ZSOF14z!Differential progressive DCT (AC)ZSOF15zDifferential spatial (AC))ZRST0z	Restart 0N)ZRST1z	Restart 1N)ZRST2z	Restart 2N)ZRST3z	Restart 3N)ZRST4z	Restart 4N)ZRST5z	Restart 5N)ZRST6z	Restart 6N)ZRST7z	Restart 7N)ZSOIzStart of imageN)ZEOIzEnd of imageNZSOSzStart of scanzDefine quantization tableZDNLzDefine number of linesZDRIzDefine restart intervalZDHPzDefine hierarchical progressionZEXPzExpand reference componentZAPP0zApplication segment 0ÚAPP1zApplication segment 1ZAPP2zApplication segment 2ZAPP3zApplication segment 3ZAPP4zApplication segment 4ZAPP5zApplication segment 5ZAPP6zApplication segment 6ZAPP7zApplication segment 7ZAPP8zApplication segment 8ZAPP9zApplication segment 9ZAPP10zApplication segment 10ZAPP11zApplication segment 11ZAPP12zApplication segment 12ZAPP13zApplication segment 13ZAPP14zApplication segment 14ZAPP15zApplication segment 15)ZJPG0zExtension 0N)ZJPG1zExtension 1N)ZJPG2zExtension 2N)ZJPG3zExtension 3N)ZJPG4zExtension 4N)ZJPG5zExtension 5N)ZJPG6zExtension 6N)ZJPG7zExtension 7N)ZJPG8zExtension 8N)ZJPG9zExtension 9N)ZJPG10zExtension 10N)ZJPG11zExtension 11N)ZJPG12zExtension 12N)ZJPG13zExtension 13NÚComment)?iÀÿ  iÁÿ  rR   iÃÿ  iÄÿ  iÅÿ  rS   iÇÿ  iÈÿ  iÉÿ  rT   iËÿ  iÌÿ  iÍÿ  rU   iÏÿ  iÐÿ  iÑÿ  iÒÿ  iÓÿ  iÔÿ  iÕÿ  iÖÿ  i×ÿ  iØÿ  iÙÿ  éÚÿ  iÛÿ  iÜÿ  iÝÿ  iÞÿ  ißÿ  r   r'   r,   iãÿ  iäÿ  iåÿ  iæÿ  içÿ  ièÿ  iéÿ  iêÿ  iëÿ  iìÿ  r/   r2   iïÿ  iðÿ  iñÿ  iòÿ  ióÿ  iôÿ  iõÿ  iöÿ  i÷ÿ  iøÿ  iùÿ  iúÿ  iûÿ  iüÿ  éýÿ  iþÿ  ÚbytesÚbool)Úprefixr   c                 C  s   | d d… dkS )NrN   s   ÿØÿr   )r‚   r   r   r   Ú_accept>  s    rƒ   c                   @  sp   e Zd ZdZdZdd„ Zdddœdd	„Zd
dddœdd„Zddœdd„Zddœdd„Z	ddœdd„Z
dd„ ZdS )r   ÚJPEGzJPEG (ISO 10918)c                 C  sF  | j  d¡}t|ƒs d}t|ƒ‚d}d | _| _g | _i | _i | _i | _	i | _
g | _g | _|d }|dkr„|| j  d¡ }t|ƒ}n| j  d¡}qZ|tk�rt| \}}}|d k	r¼|| |ƒ |dkrö| j}| jdkrØd	}d
d| j d|dffg| _�q:| j  d¡}qZ|dk�rd}qZ|dk�r,| j  d¡}qZd}t|ƒ‚qZ|  ¡  d S )NrN   znot a JPEG fileó   ÿr   éÿ   r   r~   rQ   úCMYK;IÚjpeg©r   r   Ú >   r   éÿÿ  i ÿ  zno marker found)r   r   rƒ   ra   r`   rb   rh   Z
huffman_dcZ
huffman_acrw   r7   r8   r?   r   ÚMARKERÚmoderI   ÚtileÚ_read_dpi_from_exif)r   rE   ri   rj   ÚnameÚdescriptionÚhandlerÚrawmoder   r   r   Ú_openK  sJ    






zJpegImageFile._openr   r€   )Ú
read_bytesr   c                 C  s.   | j  |¡}|s*tjr*t| dƒs*d| _dS |S )z›
        internal: read more image data
        For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker
        so libjpeg can finish decoding
        Ú_endedTs   ÿÙ)r   r   r   ZLOAD_TRUNCATED_IMAGESÚhasattrr–   )r   r•   rE   r   r   r   Ú	load_read€  s
    zJpegImageFile.load_readz
str | Noneztuple[int, int] | Nonez0tuple[str, tuple[int, int, float, float]] | None)r�   rI   r   c                 C  sb  t | jƒdkrd S | jrd S | jd \}}}}d}| j}|d dkrZ|dkrZ|| _|df}|�r"t| jd |d  | jd |d  ƒ}dD ]}	||	krŠ qœqŠ|d |d |d |d  |	 d |	 |d  |d |d  |	 d |	 |d  f}| jd |	 d |	 | jd |	 d |	 f| _|	}||||fg| _|df| _dd|d | |d | f}
| j|
fS )	Nr   r   rP   )rO   ÚYCbCrrŠ   )r"   r   r   r   r   rN   )re   rŽ   ZdecoderconfigrI   rc   Úminr_   r�   )r   r�   rI   ÚdÚeÚoÚaÚscaleZoriginal_sizerE   Úboxr   r   r   Údraft�  s4    &""ü.
zJpegImageFile.draftr   ©r   c                 C  sÚ   t  ¡ \}}t |¡ tj | j¡r:t dd|| jg¡ n0zt 	|¡ W n t
k
r\   Y nX d}t|ƒ‚z*t |¡�}| ¡  |j| _W 5 Q R X W 5 zt 	|¡ W n t
k
r¸   Y nX X | jj| _| jj| _g | _d S )NZdjpegú-outfilezInvalid Filename)ÚtempfileÚmkstempÚosÚcloseÚpathÚexistsÚfilenameÚ
subprocessÚ
check_callÚunlinkÚOSErrorÚ
ValueErrorr   ÚopenÚloadÚimr�   rc   rI   r_   rŽ   )r   Úfr¨   ri   Z_imr   r   r   Ú
load_djpeg¶  s*    


zJpegImageFile.load_djpegúdict[str, Any] | Nonec                 C  s   t | ƒS ©N)Ú_getexif©r   r   r   r   r·   Õ  s    zJpegImageFile._getexifc                 C  sÌ   d| j ksd| j krd S z‚|  ¡ }|d }|d }zt|d ƒ|d  }W n tk
rb   |}Y nX t |¡rzd}t|ƒ‚|dkrŠ|d	9 }||f| j d< W n, tjt	t
tttfk
rÆ   d
| j d< Y nX d S )Nr$   r)   i(  i  r   r   zDPI is not a numberrN   gR¸…ëQ@)éH   r¹   )r:   ÚgetexifÚfloatÚ	TypeErrorÚmathÚisnanr¯   rB   rC   ÚKeyErrorra   ÚZeroDivisionError)r   r)   Zresolution_unitZx_resolutionr$   ri   r   r   r   r�   Ø  s2    

úz!JpegImageFile._read_dpi_from_exifc                 C  s   t | ƒS r¶   )Ú_getmpr¸   r   r   r   rÁ   õ  s    zJpegImageFile._getmpN)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr”   r˜   r¡   r´   r·   r�   rÁ   r   r   r   r   r   G  s   5&rµ   r¢   c                 C  s   d| j krd S |  ¡  ¡ S )Nr)   )r:   rº   Z_get_merged_dictr¸   r   r   r   r·   ù  s    
r·   c              
   C  s<  z| j d }W n tk
r$   Y d S X t |¡}| d¡}|d d… dkrNdnd}ddlm} z,| |¡}| |j	¡ | 
|¡ t|ƒ}W n0 tk
rº } zd	}	t|	ƒ|‚W 5 d }~X Y nX z|d
 }
W n0 tk
rø } zd}	t|	ƒ|‚W 5 d }~X Y nX g }�z|d }td|
ƒD ]ä}t |› d�||d ¡}d}tt||ƒƒ}t|d d@ ƒt|d d@ ƒt|d d@ ƒ|d d@ d? |d d@ d? |d d@ dœ}|d dk�r°d|d< nd}	t|	ƒ‚ddd d!d"d#d$d%œ}| |d& d'¡|d&< ||d< | |¡ �q||d< W n2 tk
�r6 } zd(}	t|	ƒ|‚W 5 d }~X Y nX |S ))Nr6   r"   r   s   MM *ú>ú<r   )ÚTiffImagePluginz)malformed MP Index (unreadable directory)é°  z(malformed MP Index (no number of images)i°  r   ZLLLHHr^   )Ú	AttributeÚSizeZ
DataOffsetZEntryNo1ZEntryNo2rË   l        i   @i    i   é   i   é   iÿÿÿ )ZDependentParentImageFlagZDependentChildImageFlagZRepresentativeImageFlagÚReservedÚImageDataFormatÚMPTyperÐ   r„   z!unsupported picture format in MPOZ	Undefinedz Large Thumbnail (VGA Equivalent)z$Large Thumbnail (Full HD Equivalent)zMulti-Frame Image (Panorama)zMulti-Frame Image: (Disparity)z Multi-Frame Image: (Multi-Angle)zBaseline MP Primary Image)r   i  i  i  i  i  i   rÑ   ÚUnknownz!malformed MP Index (bad MP Entry))r:   r¿   ÚioÚBytesIOr   rŠ   rÉ   ZImageFileDirectory_v2ÚseekÚnextr±   Údictr<   ra   rg   rB   Úunpack_fromÚzipr�   Úgetr9   )r   rJ   Úfile_contentsÚheadZ
endiannessrÉ   r:   r6   rœ   ri   ZquantZ	mpentriesZrawmpentriesZentrynumZunpackedentryÚlabelsZmpentryZmpentryattrZ	mptypemapr   r   r   rÁ   ÿ  sv    



  ÿ
ú
ù	rÁ   rO   rP   r‡   r™   )Ú1rO   rP   ZRGBXrQ   r™   )@r   r   r   r(   r0   r   rÍ   é   r   r   r!   rX   r^   é   r*   é*   rN   r"   r-   é   é   é   é)   é+   é	   r4   é   rÎ   é   é(   é,   é5   r#   é   é   é    é'   é-   é4   é6   é   é   é!   é&   é.   é3   é7   é<   é   é"   é%   é/   é2   é8   é;   é=   é#   é$   é0   é1   é9   é:   é>   é?   r   ))r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   c                 C  sZ   t | dƒr| jdkrdS | jd dd… | jd dd…  | jd dd…  }t |d¡S )Nrb   )r   r   éÿÿÿÿr   r   rN   r   )r—   rb   rh   Ú	samplingsrÚ   )r²   Zsamplingr   r   r   Úget_samplingk  s    6r  zImage.Imagez	IO[bytes]zstr | bytes)r²   r   rª   r   c                 C  sF  | j dks| jdkr d}t|ƒ‚zt| j }W n: tk
rh } zd| j› d�}t|ƒ|‚W 5 d }~X Y nX | j}dd„ | dd¡D ƒ}| d	d
¡}| dd
¡}	| d¡}
|dkr¾d
}d}	d}
n„|t	krêt	| }d
}| dd
¡}	| d¡}
nXt
|tƒ�sd}t|ƒ‚n>|	t	k�rt	|	  dd
¡}	t
|
tƒ�rB|
t	k�rBt	|
  d¡}
|	dk�rRd}	nZ|	dk�rbd}	nJ|	dk�rrd}	n:|	dk�r‚d}	n*|	dk�r¬| jdk�r¤d}t|ƒ‚t| ƒ}	dd„ }|
dk�râ| jdk�rÖd}t|ƒ‚t| dd ƒ}
||
ƒ}
| dd¡}d}| d¡}|�r–d}|| }g }|�rB| |d |… ¡ ||d … }�qd}|D ]J}td| t|ƒ ƒ}|d| d  t|ƒ tt|ƒƒ | 7 }|d7 }�qJ| d!| j d!¡¡}| d"d#¡�pÂ| d$d#¡}| d%d#¡}| d&d¡}t
|tjƒ�rò| ¡ }t|ƒ|k�rd'}t|ƒ‚||| d(d¡|| d)d#¡| d*d¡|d |d |	| d+d¡| d,d¡|
|||f| _d}|�sp|�r| jd-k�r–d.| jd  | jd  }nB|d/k�sª|d
k�rÄd| jd  | jd  }n| jd | jd  }|�rî|t|ƒd0 7 }|�r"|t|ƒd 7 }nt|t|ƒd0 t|ƒd ƒ}t | |d1d| j d|fg|¡ d S )2Nr   z cannot write empty image as JPEGzcannot write mode z as JPEGc                 S  s   g | ]}t |ƒ‘qS r   )Úround)rY   Úxr   r   r   r[   †  s     z_save.<locals>.<listcomp>r$   r‰   Úqualityr  ÚsubsamplingÚqtablesZkeeprw   zInvalid quality settingz4:4:4z4:2:2r   z4:2:0r   z4:1:1r„   z3Cannot use 'keep' when original image is not a JPEGc                   sp  ˆd krˆS t ˆtƒr|zdd„ ˆ ¡ D ƒ‰ W n0 tk
r\ } zd}t|ƒ|‚W 5 d }~X Y n X ‡ fdd„tdtˆ ƒdƒD ƒ‰t ˆtttfƒ�rlt ˆtƒr´‡fdd„ttˆƒƒD ƒ‰nt ˆtƒrÆtˆƒ‰dtˆƒ  k rÞdk sìn d	}t|ƒ‚t	ˆƒD ]r\}}z*t|ƒdk�rd}t
|ƒ‚t d
|¡}W n2 t
k
�rX } zd}t|ƒ|‚W 5 d }~X Y qôX t|ƒˆ|< qôˆS d S )Nc                 S  s.   g | ]&}|  d d¡d   ¡ D ]}t|ƒ‘qqS )ú#r   r   )r>   r   )rY   ÚlineÚnumr   r   r   r[   ³  s    þz3_save.<locals>.validate_qtables.<locals>.<listcomp>zInvalid quantization tablec                   s   g | ]}ˆ ||d  … ‘qS )rm   r   )rY   rE   )Úlinesr   r   r[   ¼  s     r   rm   c                   s   g | ]}|ˆ krˆ | ‘qS r   r   )rY   Úkey)r  r   r   r[   ¿  s     r   z$None or too many quantization tablesro   )Ú
isinstanceÚstrÚ
splitlinesr¯   rg   re   ÚtupleÚlistr×   Ú	enumerater¼   rr   )r  rœ   ri   ÚidxÚtabler   )r  r  r   Úvalidate_qtables®  s@    
þ



ÿ
z_save.<locals>.validate_qtablesÚextrar\   r   r]   r0   s   ÿâr.   rL   rV   FrW   Úoptimizer)   zEXIF data is too longZsmoothZkeep_rgbZ
streamtypeZrestart_marker_blocksZrestart_marker_rowsrQ   r   é_   r   rˆ   )ÚwidthÚheightr¯   ÚRAWMODEr�   r¿   r®   ZencoderinforÚ   r   r  r   r  rÅ   r  Úgetattrr9   Úo16re   r
   r:   r   ZExifÚtobytesZencoderconfigrI   Úmaxr   Ú_save)r²   r   rª   ri   r“   rœ   r:   r$   r  r  r  Úpresetr!  r"  ZMAX_BYTES_IN_MARKERr]   ZICC_OVERHEAD_LENZMAX_DATA_BYTES_IN_MARKERÚmarkersrj   r   rI   rL   rV   r#  r)   Úbufsizer   r   r   r,  y  sä    







&

ÿþý
üûÿ




ñr,  c                 C  sB   |   ¡ }t dd||g¡ zt |¡ W n tk
r<   Y nX d S )NZcjpegr£   )Ú_dumpr«   r¬   r¦   r­   r®   )r²   r   rª   r¤   r   r   r   Ú_save_cjpeg0  s    r1  c              	   C  sž   t | |ƒ}zZ| ¡ }|d dkrb|jD ]"\}}|dkr&d|kr&|  W S q&ddlm} | ||¡}W n4 ttfk
r|   Y n tk
r˜   t	 
d¡ Y nX |S )NrÊ   r   r|   s    hdrgm:Version=")ÚMpoImageFilezTImage appears to be a malformed MPO file, it will be interpreted as a base JPEG file)r   rÁ   r8   ZMpoImagePluginr2  Zadoptr¼   rD   ra   ÚwarningsÚwarn)r   rª   r²   ZmpheaderÚsegmentÚcontentr2  r   r   r   Újpeg_factory<  s     
ÿ
r7  z.jfifz.jpez.jpgz.jpegz
image/jpeg)NN)1Ú
__future__r   rr   rÓ   r½   r¦   rB   r«   rs   r¤   r3  Útypingr   r   rŠ   r   r   Ú_binaryr   r   r	   rA   r
   r   r)  ZJpegPresetsr   r   rK   rM   rl   rz   rŒ   rƒ   r   r·   rÁ   r'  rv   r  r  r,  r1  r7  Zregister_openrÅ   Zregister_saveZregister_extensionsZregister_mimer   r   r   r   Ú<module>"   sÞ   f0ÁC	 3Pú
ý 8
