
     hW-                     Z   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlZd dl	Z	d dl
Z
d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ  ej4                  e      Z G d
 de      Zd dlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dlm)Z) d dl*m+Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 e,Z3e4Z4e"Z5d Z6d Z7d8dZ8d9dZ9d dl:m;c m<Z= e=j|                  Z?d dl@Z@d ZAeBd        ZCeBd        ZDeCe_C        eDe_D        d ZEd ZF	  ej                  d       dZHd ZKd:dZLd  ZMd! ZN	 d dlOZPej                  j                  d"d#      ZSeSj                         d$k(   ZUd% ZWd;d&ZXd'ZY e
j                  d(eYz   d)z         Z[d*Z\d+j                  e\eY,      Z^e\e^d-Z_g d.Z`d/Zad0d1j                  e`D  cg c]  } | e_z  	 c}       z   d2z   Zcd3eaz   d4z   Zdd5ecz   d0z   edz   d6z   Ze e
j                  d(eez   d)z         Zf egd7      Zh	 d dliZidZjy# eIeJf$ r dZHY w xY w# eV$ r dZUY w xY wc c} w # eV$ r dZjY yw xY w)<    N)HTTPMessage)OrderedDict)MutableMapping)floor)six)MD5UnavailableError)tzlocal)
exceptionsc                       e Zd Zy)HTTPHeadersN)__name__
__module____qualname__     k/home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/botocore/compat.pyr   r   %   s    r   r   )
quote	urlencodeunquoteunquote_plusurlparseurlsplit
urlunspliturljoin	parse_qslparse_qs)HTTPResponse)IOBase)encodebytes)
formatdate)zip_longestc                 v    | j                   j                  j                  j                  j	                  |       y)z|Set the timeout of the socket from an HTTPResponse.

    :param http_response: An instance of ``httplib.HTTPResponse``

    N)_fpfpraw_sock
settimeout)http_responsetimeouts     r   set_socket_timeoutr*   @   s*     ""--g6r   c                 2    t        j                  |       d   S )N   )inspectgetfullargspec)funcs    r   accepts_kwargsr0   H   s    !!$'**r   c                     | S Nr   sencodingerrorss      r   ensure_unicoder7   K   s    Hr   c                     t        | t              r| j                  ||      S t        | t              r| S t	        dt        |        d      )Nz Expected str or bytes, received .)
isinstancestrencodebytes
ValueErrortyper3   s      r   ensure_bytesr@   O   sE    !Sxx&))!U
7QyB
CCr   c                  R    t        j                  ddt        j                  d       y )Nignorez+A true SSLContext object is not available.*z.*urllib3\.util\.ssl_)messagecategorymodule)warningsfilterwarningsr
   InsecurePlatformWarningr   r   r   filter_ssl_warningsrI   ]   s"    =33'	r   c                 N     |        }|j                         D ]
  \  }}|||<    |S r2   )items)clsdnew_instancekeyvalues        r   	from_dictrQ   g   s2    5Lggi "
U!S"r   c                 2     |        }|D ]
  \  }}|||<    |S r2   r   )rL   pairsrN   rO   rP   s        r   
from_pairsrT   o   s,    5L "
U!S"r   c                 0    t        j                   |       }|S )zI
    This used to be a compat shim for 2.6 but is now just an alias.
    )copy)kwargscopy_kwargss     r   rX   rX   {   s     ))F#Kr   c                 "    | j                         S )z
    Returns the total seconds in a ``datetime.timedelta``.

    This used to be a compat shim for 2.6 but is now just an alias.

    :param delta: The timedelta object
    :type delta: ``datetime.timedelta``
    )total_seconds)deltas    r   rZ   rZ      s       r   F)usedforsecurityTc                  L    t         rt        j                  | i |S t               )a:  
    Attempts to get an md5 hashing object.

    :param args: Args to pass to the MD5 constructor
    :param kwargs: Key word arguments to pass to the MD5 constructor
    :return: An MD5 hashing object if available. If it is unavailable, None
        is returned if raise_error_if_unavailable is set to False.
    )MD5_AVAILABLEhashlibmd5r   )argsrW   s     r   get_md5rb      s$     {{D+F++!##r   c                 p    |t         j                  }|dk(  rt        |       S t        j                  |       S )Nwin32)sysplatform_windows_shell_splitshlexsplit)r4   rf   s     r   compat_shell_splitrj      s2    <<7#A&&{{1~r   c           
         | sg S g }g }d}d}| D ]  }|dk(  r|dz  }|dk(  ra|dkD  rG|j                  dt        t        |dz              z         |dz  }d}|dk(  r|j                  d       _| }|j                  d       t|dv rC|sA|dkD  r|j                  d|z         d}|s|j                  dj                  |             g }|dkD  r|j                  d|z         d}|j                  |        |rt	        d	|        |dkD  r|j                  d|z         |r |j                  dj                  |             |S )
a  Splits up a windows command as the built-in command parser would.

    Windows has potentially bizarre rules depending on where you look. When
    spawning a process via the Windows C runtime (which is what python does
    when you call popen) the rules are as follows:

    https://docs.microsoft.com/en-us/cpp/cpp/parsing-cpp-command-line-arguments

    To summarize:

    * Only space and tab are valid delimiters
    * Double quotes are the only valid quotes
    * Backslash is interpreted literally unless it is part of a chain that
      leads up to a double quote. Then the backslashes escape the backslashes,
      and if there is an odd number the final backslash escapes the quote.

    :param s: The command string to split up into parts.
    :return: A list of command components.
    Fr   \   "r,    ) 	z No closing quotation in string: )appendintr   joinr>   )r4   
componentsbuff	is_quotednum_backslashes	character	remainders          r   rg   rg      s~   ( 	JDIO 1#	
 q O#" D3u_q-@'A#BBC+a/	"#> KK$ &I KKO+%i "D?23"# !!"''$-0 "D?23"#KK	"c1#h ;A3?@@ D?*+ "''$-(r   c                  R    t         j                  dk(  rddlm}  t        | fS t        fS )Nrd   r   
tzwinlocal)re   rf   dateutil.tzr}   r	   r|   s    r   get_tzinfo_optionsr     s&     ||w*$$zr   BOTO_DISABLE_CRTfalsetruec                     t         syt        j                  }	 t        t        |j                  d            }t        |      }|| k\  S # t        t        f$ r Y yw xY w)z&Not intended for use outside botocore.Fr9   )	HAS_CRTawscrt__version__maprs   ri   tuple	TypeErrorr>   )minimum_versioncrt_version_strcrt_version_intscrt_version_tuples       r   has_minimum_crt_versionr   &  sb    ((OsO$9$9#$>?!"23 // z" s   *A AAc                     t         j                   j                  t         j                  j                        }| r|j	                  d      }|S )zKRetrieve the current timezone in UTC, with or without an explicit timezone.N)tzinfo)datetimenowtimezoneutcreplace)remove_tzinfodatetime_nows     r   get_current_datetimer   5  s@    $$(():):)>)>?L#++4+8r   z(?:[0-9]{1,3}\.){3}[0-9]{1,3}^$z[0-9A-Fa-f]{1,4}z(?:{hex}:{hex}|{ipv4}))hexipv4)r   ls32)	z(?:%(hex)s:){6}%(ls32)sz::(?:%(hex)s:){5}%(ls32)sz%(?:%(hex)s)?::(?:%(hex)s:){4}%(ls32)sz2(?:(?:%(hex)s:)?%(hex)s)?::(?:%(hex)s:){3}%(ls32)sz6(?:(?:%(hex)s:){0,2}%(hex)s)?::(?:%(hex)s:){2}%(ls32)sz/(?:(?:%(hex)s:){0,3}%(hex)s)?::%(hex)s:%(ls32)sz'(?:(?:%(hex)s:){0,4}%(hex)s)?::%(ls32)sz&(?:(?:%(hex)s:){0,5}%(hex)s)?::%(hex)sz(?:(?:%(hex)s:){0,6}%(hex)s)?::zDABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._!\-~z(?:|)z(?:%25|%)(?:[z]|%[a-fA-F0-9]{2})+z\[z)?\]z	
)NN)zutf-8strictr2   )T)krV   r   re   r-   rF   r_   http.clientr   loggingrh   reoscollectionsr   collections.abcr   mathr   botocore.vendoredr   botocore.exceptionsr   r~   r	   urllib3r
   	getLoggerr   loggerr   urllib.parser   r   r   r   r   r   r   r   r   r   r   ior   _IOBasebase64r   email.utilsr    	itertoolsr!   	file_typezipunquote_strr*   r0   r7   r@   xml.etree.ElementTreeetreeElementTreeETree
ParseErrorXMLParseErrorjsonrI   classmethodrQ   rT   rX   rZ   r`   r^   AttributeErrorr>   rb   rj   rg   r   awscrt.authr   environgetdisabledlowerr   ImportErrorr   r   IPV4_PATcompileIPV4_REHEX_PATformatLS32_PAT_subs_variationsUNRESERVED_PATrt   IPV6_PATZONE_ID_PATIPV6_ADDRZ_PATIPV6_ADDRZ_RE	frozensetUNSAFE_URL_CHARSgzipHAS_GZIP)xs   0r   <module>r      s     
    #   	 	 # *  ! 3  			8	$	+ 	   %    " !		 7+D & %        " # 	!GKK&M
$[|	 zz~~0':H.."f,,G
0 ,
"**S8^c)
*
#**wX*F*, L  388<1QY<==C.1FF!F*[87B

3/#56 X& Ho 	
# M\  G| =  Hs<   G? $4H )H
8H  ?	H
HHH H*)H*