
    <[ju                     n    d Z ddlZddlZ eedd          pej        ej        z   ZdZd Zd Z	d Z
d ZdS )	zn
escape/unescape routines available for backends which need
alphanumeric usernames, services, or other values
    Nlettersz_%02Xc                     t          | t                    rt          |           } | t          v r| nt          t          |           z  S )zASingle char escape. Return the char, escaped if not already legal)
isinstanceintchrLEGAL_CHARS
ESCAPE_FMTord)cs    [/home/thesage/.hermes/hermes-agent/venv/lib/python3.11/site-packages/keyrings/alt/escape.py_escape_charr      s>    !S FF[  11j3q66&99    c                 f    d                     d |                     d          D                       S )zd
    Escapes given string so the result consists of alphanumeric chars and
    underscore only.
     c              3   4   K   | ]}t          |          V  d S )N)r   ).0r   s     r   	<genexpr>zescape.<locals>.<genexpr>   s(      BBq<??BBBBBBr   utf-8)joinencode)values    r   escaper      s1    
 77BBELL,A,ABBBBBBr   c                 h    t          |                     d          d          }t          |g          S )Ncode   )r   groupbytes)regex_matchordinals     r   _unescape_coder        s/    +##F++R00G'r   c                    t                               dd          }|                    d          }t          j        |          }|                    t          |                     d                                        d          S )z
    Inverse of escape.
    z%02Xz(?P<code>[0-9A-Fa-f]{2})asciir   )r	   replacer   recompilesubr    decode)r   patternpattern_bytesre_escs       r   unescaper+   %   sh       )CDDGNN7++MZ&&F::nell7&;&;<<CCGLLLr   )__doc__r$   stringgetattrascii_lettersdigitsr   r	   r   r   r    r+    r   r   <module>r2      s    
 
			  GFIt$$ 
M
 
: : :C C C  
M M M M Mr   