
    Mh.                        d Z ddlmZ ddlZdZd  ee          D             Zd  ed          D             ddd         Zd	 Z	d
 Z
dS )zPython implementation of Z85 85-bit encoding

Z85 encoding is a plaintext encoding for a bytestring interpreted as 32bit integers.
Since the chunks are 32bit, a bytestring must be a multiple of 4 bytes.
See ZMQ RFC 32 for details.


    )annotationsNsU   0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#c                    i | ]\  }}||	S  r   ).0idxcs      M/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/zmq/utils/z85.py
<dictcomp>r
      s    	3	3	3VS!!S	3	3	3    c                    g | ]}d |z  S )U   r   )r   is     r	   
<listcomp>r      s       !A   r      c                H   t          |           dz  rt          dt          |                      t          |           dz  }t          j        d|dd|           }g }|D ]2}t          D ](}|                    t          ||z  dz                      )3t          |          S )zencode raw bytes into Z85   z"length must be multiple of 4, not >dIr   )len
ValueErrorstructunpack_85sappendZ85CHARSbytes)rawbytesnvaluesvaluesencodedvoffsets         r	   encoder%      s     8}}q OMc(mmMMNNN(mmq G]+w++++X66FG 9 9 	9 	9FNN8Q&[B$678888	9 >>r   c                (   t          | t                    r4	 |                     d          } n# t          $ r t	          d          w xY wt          |           dz  rt	          dt          |                      t          |           dz  }g }t          dt          |           d          D ]O}d}t          t                    D ]!\  }}|t          | ||z                     |z  z  }"|
                    |           Pt          j        d|ddg|R  S )	z3decode Z85 bytes to raw bytes, accepts ASCII stringasciiz4string argument should contain only ASCII charactersr   z&Z85 length must be multiple of 5, not r   r   r   r   )
isinstancestrr%   UnicodeEncodeErrorr   r   range	enumerater   Z85MAPr   r   pack)z85bytesr    r!   r   valuejr$   s          r	   decoder2   (   s=   (C   U	Uw//HH! 	U 	U 	USTTT	U 8}}q SQ#h--QQRRR(mmq GF1c(mmQ''  "4 	6 	6IAvVHQUO,v55EEe;'7''''1&1111s	   - A)__doc__
__future__r   r   r   r,   r-   r+   r   r%   r2   r   r   r	   <module>r5      s     # " " " " "  d	3	3yy22	3	3	3  uuQxx   2&   2 2 2 2 2r   