
    'jF
                        d dl Z d dlZd dlZ ej        d          Z e j        d          Z e j        d          ZdefdZ	dde
d	efd
Zde
d	e
fdZde
d	efdZde
d	e
fdZde
d	efdZde
d	e
fdZddddddZde
d	e
fdZdS )    Nsurrogateescapez(\\U\+[A-F0-9]{4})z(\\M\+[1-5][A-F0-9]{4})excc                 l   t          | t          t          f          r}d}| j        | j        | j                 D ]X}t          |          }|dk    r	|d|z  z  } d|cxk    rdk    rn nt          |           c S |dk    r	|d|z  z  }P|d|z  z  }Y|| j        fS t          d	| j	        j
                   )
N    z\x%02xi  i  i  z\U+%04xz\U+%08xzCan't handle )
isinstanceUnicodeEncodeErrorUnicodeTranslateErrorobjectstartendordsurrogate_escape	TypeError	__class____name__)r   scxs       N/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/lldxf/encoding.pydxf_backslash_replacer      s    #*,ABCC BCI/0 
	$ 
	$AAADyyY]"1&&&&&&&&&',,,,,fZ!^#Z!^##'z@(>@@AAA    utf8r   returnc                 0    |                      |d          S )z)Shortcut to use the correct error handler
dxfreplace)errors)encode)r   encodings     r   r   r       s    88H\8222r   c                 z    |                      d          r%t          t          | dd          d                    S | S )Nz\U+      )
startswithchrintr   s    r   _decoder'   %   s9    ||F 3qub>>"""r   c                 P    t          t          j        t          |                     S )zHReturns ``True``  if string `s` contains ``\U+xxxx`` encoded characters.)boolresearchBACKSLASH_UNICODEr&   s    r   has_dxf_unicoder-   ,   s    	+Q//000r   c                 p    d                     d t          j        t          |           D                       S )z&Decode ``\U+xxxx`` encoded characters.r   c              3   4   K   | ]}t          |          V  d S N)r'   .0parts     r   	<genexpr>z%decode_dxf_unicode.<locals>.<genexpr>4   s(      LLT74==LLLLLLr   )joinr*   splitr,   r&   s    r   decode_dxf_unicoder7   1   s2     77LLRX6G-K-KLLLLLLr   c                 P    t          t          j        t          |                     S )zSReturns ``True`` if string `s` contains MIF encoded (``\M+cxxxx``) characters.
    )r)   r*   r+   MIF_ENCODEDr&   s    r   has_mif_encodingr:   7   s     	+q))***r   c                 p    d                     d t          j        t          |           D                       S )z+Decode MIF encoded characters ``\M+cxxxx``.r   c              3   4   K   | ]}t          |          V  d S r0   )_decode_mifr1   s     r   r4   z(decode_mif_to_unicode.<locals>.<genexpr>?   s*      JJ;t$$JJJJJJr   )r5   r*   r6   r9   r&   s    r   decode_mif_to_unicoder>   =   s/    77JJ+q1I1IJJJJJJr   cp932cp950cp949cp1391cp936)12345c                    |                      d          ro	 t          | d                  }t          j        |          }t	          j        | dd                    }|                    |          d         S # t          $ r Y nw xY w| S )Nz\M+r!      r   )r#   MIF_CODE_PAGEcodecslookupbinascii	unhexlifydecode	Exception)r   	code_pagecodec	byte_datas       r   r=   r=   L   s    ||F 	%ad+IM),,E *1QRR511I<<	**1-- 	 	 	D	Hs   AA5 5
BB)r   )r*   rL   rN   lookup_errorr   compiler,   r9   rQ   r   strbytesr   r'   r)   r-   r7   r:   r>   rK   r=    r   r   <module>rZ      s   
			  &6&'899 BJ455 bj344By B B B B(3 3c 3u 3 3 3 3
s s    1s 1t 1 1 1 1
M# M# M M M M+ + + + + +KS KS K K K K 
				 	3 	3 	 	 	 	 	 	r   