ó
    /j-j8  ã                   ó¸   • S r SSKrSSKJr  SSKJr  \R                  " S5      r\R                  " S5      rS\	S\	4S	 jr
\R                  " S
5      rS\	S\	4S jrg)zBPython implementation of ASCII85/ASCIIHex decoder (Adobe version).é    N)Ú	a85decode)Ú	unhexlifys   ^\s*<?\s*~\s*s   \s*~\s*>?\s*$ÚdataÚreturnc                 óp   • [         R                  SU 5      n [        R                  SU 5      n [        U 5      $ )a®  In ASCII85 encoding, every four bytes are encoded with five ASCII
letters, using 85 different types of characters (as 256**4 < 85**5).
When the length of the original bytes is not a multiple of 4, a special
rule is used for round up.

Adobe's ASCII85 implementation expects the input to be terminated
by `b"~>"`, and (though this is absent from the PDF spec) it can
also begin with `b"<~"`.  We can't reliably expect this to be the
case, and there can be off-by-one errors in stream lengths which
mean we only see `~` at the end.  Worse yet, `<` and `>` are
ASCII85 digits, so we can't strip them.  We settle on a compromise
where we strip leading `<~` or `~` and trailing `~` or `~>`.
ó    )Ústart_reÚsubÚend_rer   )r   s    ÚJ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/playa/ascii85.pyÚascii85decoder      s.   € ô �<‰<˜˜TÓ"€DÜ�:‰:�c˜4Ó €DÜ�T‹?Ðr   s   \sc                 óª   • [         R                  SU 5      n U R                  S5      nUS:w  a  U SU n [        U 5      S-  S:X  a  U S-  n [	        U 5      $ )aÅ  ASCIIHexDecode filter: PDFReference v1.4 section 3.3.1
For each pair of ASCII hexadecimal digits (0-9 and A-F or a-f), the
ASCIIHexDecode filter produces one byte of binary data. All white-space
characters are ignored. A right angle bracket character (>) indicates
EOD. Any other characters will cause an error. If the filter encounters
the EOD marker after reading an odd number of hexadecimal digits, it
will behave as if a 0 followed the last digit.
r   ó   >éÿÿÿÿNé   é   ó   0)Úbws_rer
   ÚfindÚlenr   )r   Úends     r   Úasciihexdecoder   !   sV   € ô �:‰:�c˜4Ó €DØ
�)‰)�D‹/€CØ
ˆbƒyØ�D�SˆzˆÜ
ˆ4ƒy�1�}˜ÓØ�‰ˆÜ�T‹?Ðr   )Ú__doc__ÚreÚbase64r   Úbinasciir   Úcompiler	   r   Úbytesr   r   r   © r   r   Ú<module>r       se   ðÙ Hã 	Ý Ý à�:Š:Ð'Ó(€Ø	�ŠÐ%Ó	&€ð˜ð  %ô ð& 
�Š�FÓ	€ð˜ð  5õ r   