Ë
    ¡ëi—'  ã                   óÒ   — d Z dZddlZddl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 g dfd	„Zd
dddœZddddœZdd„Zdd„Zdd„Zd„ Zd„ Zdd„Zd„ Zd„ Zd d„Zd„ Z G d„ d«      Zy)!z3.3.0Ú é    N)ÚBytesIO)Ú	rl_config)ÚImageReaderÚ	isUnicode)ÚasciiBase85EncodeÚasciiBase85Decodeé<   c                 ój   — t        dt        | «      |«      D ]  }|j                  | |||z    «       Œ |S ©Nr   )ÚrangeÚlenÚappend)ÚsrcÚdstÚ	chunkSizeÚis       úZ/var/www/html/chat/reports/venv/lib/python3.12/site-packages/reportlab/pdfbase/pdfutils.pyÚ_chunkerr      s:   € Ü�1”S˜“X˜iÓ(ò 'ˆØ�
‰
�3�q˜˜9™Ð%Õ&ð'à€Jó    ÚRGBÚCMYKÚG)r   r   ÚLé   é   é   c           	      óð  — dd l }t        | «      }|�$|j                  |«       |r|j                  «       ry |j	                  «       \  }}|j                  «       }g }|j                  }	 |	d«        |	d|›d|›dt        |j                     ›d�«        |	d«       t        |«      ||z  t        |j                     z  k(  sJ d«       ‚|j                  |«      }
t        |
«      }t        ||«        |	d	«       |S )
Nr   ÚBIú/W ú /H ú /BPC 8 /CS /z /F [/A85 /Fl]ÚIDúWrong amount of data for imageÚEI)Úzlibr   r   Újpeg_fhÚgetSizeÚ
getRGBDataÚ_mode2csÚmoder   Ú	_mode2bppÚcompressr   r   )ÚfilenameÚIMGÚ
detectJpegr&   ÚimgÚimgwidthÚ	imgheightÚrawÚcoder   Ú
compressedÚencodeds               r   ÚmakeA85Imager8      sÛ   € ÛÜ
�hÓ
€CØ
€Ø�
‰
�3ŒÙ˜#Ÿ+™+œ-ØàŸ+™+›-Ñ€HˆiØ
�.‰.Ó
€Cà€DØ�[‰[€Fá
ˆ4„LÚ
ºÂ9ÌXÐVY×V^ÑV^ÓM_Ð`ÔaÙ
ˆ4„Läˆs‹8�x )Ñ+¬I°c·h±hÑ,?Ñ?Ò?ÐaÐAaÓaÐ?Ø—‘˜sÓ#€JÜ 
Ó+€Gô ˆW�TÔá
ˆ4„LØ€Kr   c           	      óÚ  — dd l }t        | «      }|�$|j                  |«       |r|j                  «       ry |j	                  «       \  }}|j                  «       }g }|j                  }	 |	d«        |	d|›d|›dt        |j                     ›d�«        |	d«       t        |«      ||z  t        |j                     z  k(  sJ d«       ‚|j                  |«      }
t        |
|«        |	d	«       |S )
Nr   r   r    r!   r"   z	 /F [/Fl]r#   r$   r%   )r&   r   r   r'   r(   r)   r*   r+   r   r,   r-   r   )r.   r/   r0   r&   r1   r2   r3   r4   r5   r   r6   s              r   ÚmakeRawImager:   9   sÑ   € ÛÜ
�hÓ
€CØ
€Ø�
‰
�3ŒÙ˜#Ÿ+™+œ-ØàŸ+™+›-Ñ€HˆiØ
�.‰.Ó
€Cà€DØ�[‰[€Fá
ˆ4„LÚ
²HºiÌÐQT×QYÑQYÓHZÐ[Ô\Ù
ˆ4„Läˆs‹8�x )Ñ+¬I°c·h±hÑ,?Ñ?Ò?ÐaÐAaÓaÐ?Ø—‘˜sÓ#€Jô ˆZ˜Ôá
ˆ4„LØ€Kr   c                 ó<  — t         j                  j                  | «      d   t        j                  xr dxs dz   }| |k(  rQt        | «      r7ddlm} |r=t        d ||«      j                  «       j                  d«      «      S t        d| z  «      ‚yt        j                  rt        | |«      }nt        | |«      }|r|S t        |d«      }|j                  dj!                  |«      dz   «       |j#                  «        t        j$                  rt'        d	|z  «       yy)
zHProcesses image as if for encoding, saves to a file with .a85 extension.r   ú.a85z.bin)Úopen_for_readNú
zNo such cached image %sÚwbzcached image as %s)ÚosÚpathÚsplitextr   ÚuseA85ÚcachedImageExistsÚreportlab.lib.utilsr=   ÚfilterÚreadÚsplitÚIOErrorr8   r:   ÚopenÚwriteÚjoinÚcloseÚverboseÚprint)r.   ÚreturnInMemoryr/   Ú
cachednamer=   r5   Úfs          r   ÚcacheImageFilerS   T   sü   € ô —‘×!Ñ! (Ó+¨AÑ.´)×2BÑ2BÒ2MÀvÒ2WÐQWÑX€JØ�ÒÜ˜XÔ&Ý9Ù¤f¨T±-À
Ó2K×2PÑ2PÓ2R×2XÑ2XÐY_Ó2`Ó&aÐaäÐ3°hÑ>Ó?Ð?ð ô ×ÒÜ ¨Ó-‰Dä ¨Ó-ˆDÙ $˜;ô �˜DÓ!ˆØ	�‰�—‘˜DÓ! &Ñ(Ô)Ø	�‰Œ	Ü×ÒÜÐ&¨Ñ3Õ4ð r   c                 óÎ   — ddl }t        | t        «      r|j                  | «      }n| }|D ]8  }t        |«      r t        j
                  sŒt        d|z  «       Œ.t        |«       Œ: y)zòPreprocesses one or more image files.

    Accepts either a filespec ('C:\mydir\*.jpg') or a list
    of image filenames, crunches them all to save time.  Run this
    to save huge amounts of time when repeatedly building image
    documents.r   Nz#cached version of %s already exists)ÚglobÚ
isinstanceÚstrrD   r   rN   rO   rS   )ÚspecrU   Úfilelistr.   s       r   ÚpreProcessImagesrZ   m   sY   € ó ä�$”sÔØ—9‘9˜T“?‰àˆàò %ˆÜ˜XÔ&Ü× Ó ÜÐ;¸hÑFÕGä˜8Õ$ñ%r   c                 ó&  — t         j                  j                  | «      d   t        j                  xr dxs dz   }t         j                  j                  |«      r7t        j                  | «      d   }t        j                  |«      d   }||kD  ryyy)z­Determines if a cached image already exists for a given file.

    Determines if a cached image exists which has the same name
    and equal or newer date to the given file.r   r<   Úbiné   r   )r@   rA   rB   r   rC   ÚisfileÚstat)r.   rQ   Úoriginal_dateÚcached_dates       r   rD   rD   „   sz   € ô
 —‘×!Ñ! (Ó+¨AÑ.´)×2BÑ2BÒ2MÀvÒ2VÐQVÑW€JÜ	‡w�w‡~�~�jÔ!äŸ™ Ó)¨!Ñ,ˆÜ—g‘g˜jÓ)¨!Ñ,ˆØ˜;Ò&Øààr   c                 ó†   — | j                  d|«      j                  d|«      j                  d|«      j                  ||«      S )zzNormalizes different line end character(s).

    Ensures all instances of CR, LF and CRLF end up as
    the specified one.r>   úú
)Úreplace)ÚtextÚdesiredÚunlikelys      r   Ú_normalizeLineEndsri   œ   s<   € ð ß‰W�V˜XÓ&ß‰W�T˜8Ó$ß‰W�T˜8Ó$ß‰W�X˜wÓ'ð	)r   c                 óØ   — t        | «      r| j                  d«      } t        «       }|j                  t	        j
                  | «      «       |j                  d«       |j                  «       S )zÂEncodes input using ASCII-Hex coding.

    This is a verbose encoding used for binary data within
    a PDF file.  One byte binary becomes two bytes of ASCII.
    Helper function used by images.úutf-8ó   >)r   Úencoder   rK   ÚbinasciiÚb2a_hexÚgetvalue)ÚinputÚoutputs     r   Ú_AsciiHexEncoders   ¨   sQ   € ô �ÔØ—‘˜WÓ%ˆÜ‹Y€FØ
‡L�L”×!Ñ! %Ó(Ô)Ø
‡L�L�ÔØ�?‰?ÓÐr   c                 ór  — t        | «      s| j                  d«      } dj                  | j                  «       «      }|d   dk(  sJ d«       ‚|dd }t	        |«      dz  dk(  sJ d	«       ‚dj                  t        dt	        |«      d«      D �cg c]  }t        t        |||dz    d
«      «      ‘Œ c}«      S c c}w )zeDecodes input using ASCII-Hex coding.

    Not used except to provide a test of the inverse function.rk   r   éÿÿÿÿú>z'Invalid terminator for Ascii Hex StreamNé   r   z(Ascii Hex stream has odd number of bytesé   )r   ÚdecoderL   rH   r   r   ÚchrÚint)rq   Ústrippedr   s      r   Ú_AsciiHexDecoder}   ¶   s¯   € ô �UÔØ—‘˜WÓ%ˆØ�w‰w�u—{‘{“}Ó%€HØ�B‰<˜3ÒÐIÐ IÓIÐØ˜˜ˆ}€HÜˆx‹=˜1Ñ Ò!ÐMÐ#MÓMÐ!à�7‰7¼%ÀÄ#ÀhÃ-ÐPQÓ:RÖS°Q”Cœ˜H Q q¨¡s˜O¨BÓ/Õ0ÒSÓTÐTùÒSs   Â"B4c                 óø   — g }t        | «      }d}||z  }||k  r'|j                  | |||z    «       |dz   }||z  }||k  rŒ't        |d   «      dk(  r|d   dd |d   d   |d   z   g|dd dj                  |«      S )z>Wraps input at a given column size by inserting 
 characters.r   r   ru   éþÿÿÿNr>   )r   r   rL   )rq   Úcolumnsrr   Úlengthr   Úposs         r   Ú_wraprƒ   Å   s£   € à€FÜ�‹Z€FØ	€AØ
�A‰+€CØ
�Š,Ø�‰�e˜C  G¡Ð,Ô-Ø�‰EˆØ˜‰kˆð �‹,ô
 ˆ6�"‰:ƒ˜ÒØ˜b‘z # 2� v¨b¡z°"¡~°f¸R±jÑ'@ÐAˆˆrˆsˆØ�;‰;�vÓÐr   c                 óf  — ddl }ddlm} g d¢}g d¢}g d¢}d}d}|�s|j                  d| j	                  d	«      «      }|d   d
k(  �rå|j                  d| j	                  d	«      «      }|d   |v rÍ| j                  dd	«       |j                  d| j	                  d	«      «      }|d   dk7  r |d«      ‚|j                  d| j	                  d«      «      }	|	d   dz  |	d	   z   }
|j                  d| j	                  d«      «      }	|	d   dz  |	d	   z   }|j                  d| j	                  d	«      «      }	|	d   }||
||fS |d   dk(  rŠ|j                  d| j	                  d«      «      }|d   dz  |d	   z   dz
  }| j	                  |«      }|j                  d|dd «      }	|j                  d|dd «      }|d   dz  |d	   z   |	d   dz  |	d	   z   f}n^|d   |v r |d|d   z  «      ‚|d   |vrB|j                  d| j	                  d«      «      }| j                  |d   dz  |d	   z   dz
  d	«       |s�Œyy)z@Read width, height and number of components from open JPEG file.r   N)ÚPDFError)éÀ   éÁ   éÂ   )
éÐ   éÑ   éÒ   éÓ   éÔ   éÕ   éÖ   é×   éØ   r   )éÃ   éÅ   éÆ   éÇ   éÈ   éÉ   éÊ   éË   éÍ   éÎ   éÏ   )éH   r�   ÚBr   éÿ   rw   r]   z#JPEG must have 8 bits per componentÚBBéà   é
   é   z#JPEG Unsupported JPEG marker: %0.2x)ÚstructÚreportlab.pdfbase.pdfdocr…   ÚunpackrG   Úseek)Úimager¤   r…   ÚvalidMarkersÚnoParamMarkersÚunsupportedMarkersÚdpiÚdoneÚxÚyÚheightÚwidthÚcolorÚns                 r   ÚreadJPEGInfor´   ß   sY  € ó Ý1ò &€Lò 	Gð ò
 	Mð ð €CØ€DÚØ�M‰M˜#˜uŸz™z¨!›}Ó-ˆØˆQ‰4�4‹<Ø—‘˜c 5§:¡:¨a£=Ó1ˆAà�‰t�|Ñ#Ø—
‘
˜1˜aÔ Ø—M‘M # u§z¡z°!£}Ó5�Ø�Q‘4˜1’9Ù"Ð#HÓIÐIØ—M‘M $¨¯
©
°1«Ó6�Ø˜A™$ !™) q¨¡tÑ+�Ø—M‘M $¨¯
©
°1«Ó6�Ø˜A™$ !™) q¨¡tÑ+�Ø—M‘M # u§z¡z°!£}Ó5�Ø˜1™�Ø˜f e¨SÐ0Ð0Ø�1‘�t’Ø—M‘M $¨¯
©
°1«Ó6�Ø�q‘T˜Q‘Y ! A¡$Ñ&¨Ñ*�Ø—J‘J˜q“M�Ø—M‘M $¨¨"¨R¨Ó1�Ø—M‘M $¨¨!¨B¨Ó0�Ø˜!™˜a™ 1 Q¡4Ñ'¨¨1©¨q©°!°A±$©Ð7‘Ø�1‘Ð+Ñ+ÙÐDÀqÈÁtÑKÓLÐLØ�1‘˜^Ñ+ð —M‘M $¨¯
©
°1«Ó6�Ø—
‘
˜Q˜q™T Q™Y¨!¨A©$Ñ.°Ñ2°AÔ6õ= r   c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú_fuscc                 ól   — |sJ d«       ‚|| _         t        |«      | _        t        |«      xs d| _        y )Nz'Argument k should be a non empty stringé   )Ú_kr   Ú_klenr{   Ú_n)ÚselfÚkr³   s      r   Ú__init__z_fusc.__init__  s1   € ÙÐ;Ð;Ó;ˆqØˆŒÜ˜“VˆŒ
Ü�a“&’+˜Aˆ�r   c                 óÒ   — | j                  t        dj                  t        t        | j                  t        t        t        |«      «      «      «      «      «      | j                  «      S ©Nr   )	Ú_fusc__rotater   rL   Úmaprz   Ú_fusc__fuscÚlistÚordr»   ©r¼   Úss     r   Úencryptz_fusc.encrypt  sH   € Ø�}‰}Ô.¨r¯w©w´s¼3¸t¿{¹{Ì4ÔPSÔTWÐXYÓPZÓK[Ó?\Ó7]Ó/^Ó_Ð`d×`gÑ`gÓhÐhr   c                 óÔ   — dj                  t        t        | j                  t	        t        t
        t        | j                  || j                   «      «      «      «      «      «      «      S rÀ   )	rL   rÂ   rz   rÃ   rÄ   rÅ   r	   rÁ   r»   rÆ   s     r   Údecryptz_fusc.decrypt  sI   € Ø�w‰w”sœ3˜tŸ{™{¬4´´CÔ8IÈ$Ï-É-ÐXYÐ[_×[bÑ[bÐZbÓJcÓ8dÓ0eÓ+fÓgÓhÓiÐir   c                 ó\   — t        |«      }|dk  r||z   }||z  }|s|S || d  |d ||z
   z   S r   )r   )r¼   rÇ   r³   Úls       r   Ú__rotatez_fusc.__rotate!  sF   € Ü�‹FˆØˆQŠ3�A�a‘C�Ø	ˆQ‰ˆÙ˜�(Ø�!��ˆv�a˜˜˜1™�g‰~Ðr   c                 óÆ   — t        |«      }t        t        d„ |t        t        t        t	        || j
                  z  «      dz   | j                  z  d | «      «      «      «      S )Nc                 ó   — | |z  S )N© )r®   r¯   s     r   ú<lambda>z_fusc.__fusc.<locals>.<lambda>*  s
   €  A¨¡E€ r   r   )r   rÄ   rÂ   rÅ   r{   rº   r¹   )r¼   rÇ   Úslens      r   Ú__fuscz_fusc.__fusc(  sT   € Ü�1‹vˆÜ”CÑ)¨!¬D´´S¼3¸tÀDÇJÁJ¹Ó;OÐPQÑ;QÐSW×SZÑSZÑ:ZÐ\aÐ]aÐ9bÓ1cÓ,dÓeÓfÐfr   N)Ú__name__Ú
__module__Ú__qualname__r¾   rÈ   rÊ   rÁ   rÃ   rÐ   r   r   r¶   r¶     s   „ òòiòjòógr   r¶   )NF)r   N)r>   z )r
   )Ú__version__Ú__doc__r@   rn   Úior   Ú	reportlabr   rE   r   r   Úreportlab.lib.rl_accelr   r	   r   r*   r,   r8   r:   rS   rZ   rD   ri   rs   r}   rƒ   r´   r¶   rÐ   r   r   ú<module>rÜ      s‰   ðð €Ø
€ó 
Û Ý å ß 6ß Gà "ó ð  ¨cÑ2€Ø˜a QÑ'€	óó6ó65ò2%ò.ó0
)òòUóò437÷jgò gr   