
    >OOf&                         d Z ddlmZmZ ddlZddlZddlmZmZm	Z	m
Z
 ddlmZ ddlmZ ddZdd	Zdd
ZddZd Zd Zd Zd Zd ZddZd Zd Zy)
    )	b64encode	b64decodeN   )SEQUENCE_TYPESSTRING_TYPESNUMERIC_TYPESget_config_parameter)CaseInsensitiveDict)LDAPDefinitionErrorc                    t        d      }t        d      }t        d      }t        d      }t        | t              rt        |       } t        | t        t
        f      r.|r||}	 | j                  |      S ||}	 | j                  |      S t        | t              r| S t        d| j                  j                  d|       # t        $ r: |D ]&  }	 | j                  |      c cY S # t        $ r Y $w xY w t        d| z        w xY w# t        $ r: |D ]&  }	 | j                  |      c cY S # t        $ r Y $w xY w t        d| z        w xY w)	zTry to convert bytes (and str in python2) to unicode.
     Return object unmodified if python3 string, else raise an exception
    DEFAULT_CLIENT_ENCODINGDEFAULT_SERVER_ENCODINGADDITIONAL_SERVER_ENCODINGSADDITIONAL_CLIENT_ENCODINGSz,Unable to convert server data to unicode: %rz,Unable to convert client data to unicode: %rzUnable to convert type z to unicode: )r
   
isinstancer	   strbytes	bytearraydecodeUnicodeDecodeErrorUnicodeErrorr   	__class____name__)objencodingfrom_serverconf_default_client_encodingconf_default_server_encoding conf_additional_server_encodings conf_additional_client_encodingss          Q/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/ldap3/utils/conv.py
to_unicoder#   #   s~    $88Q#R #78Q#R ';<Y'Z$';<Y'Z$#}%#h#y)*7Yzz(++ 7Yzz(++ #|$

S]]E[E[]`a
bb/ & Y @ H"zz(33- 
 ##QTW#WXXY & Y @ H"zz(33- 
 ##QTW#WXXYs`   %C ;D	 DC'"D'	C30D2C33D	ED-(E-	D96E8D99Ec                     t        | t              rt        |       } t        | t              sJt        | t              r| D cg c]  }t        |       c}S t        | t              r| j                  |      S | S c c}w )z*Tries to convert to raw bytes from unicode)r   r	   r   r   r   to_rawr   encode)r   r   elements      r"   r%   r%   N   sa    #}%#hsE"c>*367F7O77\*::h''J 8s    A8c                 6   |t        d      }	 t        | |      } | j                  dd      }|j                  dd      }|j                  dd      }|j                  dd	      }|j                  d
d      }|S # t        $ r t        t	        |             }Y |S w xY w)z$ Escape chars mentioned in RFC4515. DEFAULT_ENCODING\z\5c*z\2a(z\28)z\29 z\00)r
   r#   replace	Exceptionescape_bytes)textr   escapeds      r"   escape_filter_charsr4   [   s    '(:;1$),,tV,//#v.//#v.//#v.//&&1
 N	  1\$/0 N	1s   A&A7 7BBc                 4   |t        d      }t        | |      }|j                  dd      }|j                  dd      }|j                  dd      }|j                  dd      }|j                  dd	      }|j                  d
d      }|j                  dd      }|S )z& unescape chars mentioned in RFC4515. r)   s   \5c   \s   \5Cs   \2a   *s   \2As   \28   (s   \29   )s   \00    )r
   r%   r/   )r2   r   	unescapeds      r"   unescape_filter_charsr<   n   s    '(:;tX&I!!'51I!!'51I!!'40I!!'40I!!'40I!!'40I!!'73I    c           	      t   | rt         t        urIt        | t               rt        | d      } dj	                  | D cg c]  }dt        |      z   c}      }nOt        | t              r| j                  d      } dj	                  | D cg c]  }dt        |      z   c}      }nd}|rd|z   S dS c c}w c c}w )zY Convert a byte sequence to a properly escaped for LDAP (format BACKSLASH HEX HEX) stringutf-8)r   r*   z%02x )	r   r   r   r   joinintunicoder&   ord)bytes_valuebr3   s      r"   r1   r1   ~   s    e+s+'gFiiK Hq&3q6/ HIG+w/)009iiK Hq&3q6/ HIG&D7N.B. !I !Is   B0B5c                 >    t         t        ur| S | j                         S N)r   r   r   )values    r"   prepare_for_streamrJ      s    
%||~r=   c                     	 t        dt        |             S # t        $ r+}t        dt	        |       z   dz   t	        |      z         d }~ww xY w)Nbase64)r   encodedzunable to encode z - )dictr   r0   r   r   )r   es     r"   json_encode_b64rP      sN    SXy~>> S!"5C"@5"H3q6"QRRSs    	A&AAc                    | j                         D ]  \  }}t        |t              rt        |       "t        |t              rt        |j
                         Ht        |t              rdt        |      D ]U  \  }}t        |t              rt        |       "t        |t              rt        |j
                         Ht        |      ||<   W t        |      | |<    y rH   )	itemsr   rN   check_json_dictr   _storer   	enumerateformat_json)	json_dictkvirO   s        r"   rS   rS      s     ! *1aA./AHH%>*!! *1a&#A&#67#AHH-&q>AaD* 'q>IaL*r=   c                     t        | d      rWt        t        | j                                     dk(  r2d| j                         v r d| j                         v rt	        | d         S | S )Nkeysr   r   rM   )hasattrlenlistr\   r   )r   s    r"   	json_hookr`      sV    sFD$4 5 :zSXXZ?W\eiliqiqis\sY((Jr=   c                    t        | t              r| j                  S t        | t        j                        rt	        |       S t        | t
              r| S t        | t        j                        r|r| j                         S t	        |       S t        t        u rt        | t              r| S 	 t        t        ur5t        | t              rt	        | dd      S t        dt	        |       z         t        | t              r| S t        |       S # t        t        f$ r Y nw xY w	 t        t        |             S # t        $ r Y nw xY wt        dt	        |       z         )Nr?   strict)errorszunable to serialize )r   r   rT   datetimer   rB   	timedelta	isoformatr   longr   rC   	TypeErrorr   rP   r0   )r   
iso_formats     r"   rV   rV      s(   #*+zz#x(()3x#s
#x))*==?"3x
e|c4 Je#u%399%&<s3x&GHH#w'
 s|#)* uSz**  4s3x?
@@s0   *)D (D =
D DDD2 2	D>=D>c                      t               t        t        uxr t        xs t        k(  st	        d      t         fddD              xr t        j                  d        S )Nzunicode input expectedc              3   &   K   | ]  }|v 
 y wrH    ).0cr2   s     r"   	<genexpr>z$is_filter_escaped.<locals>.<genexpr>   s     .q}.s   z()* z \\([^0-9a-fA-F]|(.[^0-9a-fA-F])))typer   r   rC   
ValueErrorallresearch)r2   s   `r"   is_filter_escapedru      sP    :3e+4?@122.g..lryyAegk7l3llr=   c                 D   t               }d}	 t        | t              r|t        |       k  r3| |   dk(  rNt        |       |dz   kD  r+	 |j	                  t        | |dz   |dz    d             |dz  }S|j	                  d       n&t        | |         }|D ]  }|j	                  |        |dz  }|t        |       k  rnt        | t        t         f      r|t        |       k  r~| |   dk(  rNt        |       |dz   kD  r+	 |j	                  t        | |dz   |dz    d             |dz  }R|j	                  d       n|j	                  | |          |dz  }|t        |       k  r~t        |      S # t        $ r Y w xY w# t        $ r Y `w xY w# t        $ r t        d      w xY w)	Nr   r*   r            \   z*badly formatted LDAP byte escaped sequence)r   r   r   r^   appendrB   rq   r%   r   r0   r   )r2   bytesequencerZ   rawrn   s        r"   ldap_escape_to_bytesr~      s   ;L	A PdL)c$i-7d?4y1q5(!(//D1QqSM20FGFA$ !''+ a/C  /$++A./Q c$i- ui01c$i-7b=4y1q5(!(//DQq1u4Er0JKFA$ !''+ ''Q0Q c$i-  3  * ! !   * ! !  P!"NOOPsZ   8F
 )E+ 0AF
 =>F
 <)E; %:F
 +	E84F
 7E88F
 ;	FF
 FF
 
F)NF)r?   rH   )F)__doc__rL   r   r   rd   rs   r@   r   r   r	   r
   utils.ciDictr   core.exceptionsr   r#   r%   r4   r<   r1   rJ   rP   rS   r`   rV   ru   r~   rl   r=   r"   <module>r      sc   2 (  	 P P . 1(cV
& /"S*('ATm%r=   