Ë
    RPfâh  ã            !       óÐ  — d 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mZm	Z	m
Z
m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ZddlZddlZddlZddlmZ ddlmZmZmZmZmZmZm Z m!Z!m"Z"m#Z# e"rddl$Z$ejJ                  jL                  Z'd„ Z(d>d„Z)	 d>dejT                  jV                  d	eejX                  jZ                  e.f   d
ede	e/   de
e0e/f   f
d„Z1	 	 	 	 	 	 	 	 	 	 d?dejT                  jV                  d
e	e   de	e/   de2de2de	eejf                  jh                  ejj                  jl                  f      de	e.   de2de2de2de	ejX                  jZ                     defd„Z7	 	 	 	 	 	 	 	 	 	 	 d@dejX                  jZ                  de8de	e/   de0de	e8   de0de2de2de2de2de	ejT                  jV                     de	ejT                  jr                     de2dejX                  jZ                  fd „Z:	 	 	 	 	 	 	 	 	 	 	 dAdejX                  jZ                  de8de	e/   de0de	e8   de0de2de2de2d!e	ejT                  jV                     d"e	ejT                  jv                     de	ejT                  jr                     de2de
ejX                  jZ                  e2f   fd#„Z<	 d>dejT                  jv                  d	eejX                  jZ                  e.f   de	e/   de
e0e/f   fd$„Z=d%„ Z>	 	 	 	 	 dBdejT                  jv                  de	e/   de2de	eejf                  jh                  ejj                  jl                  f      de	e.   de2de
ejX                  jZ                  e/f   fd&„Z?	 	 	 	 	 	 	 	 dCdejX                  jZ                  de8de	e/   de0de	e8   de0de2de2de	ejT                  jv                     de	ejT                  jr                     dejX                  jZ                  fd'„Z@	 	 	 	 	 	 	 	 	 	 	 dDdejX                  jZ                  de8de	e/   de0de	e8   de0de2de2de	ejT                  jv                     de	ejT                  jr                     d)e	e#j‚                     d*e	e8   d+ee2e8f   dejX                  jZ                  fd,„ZBdd-dddddd.d(d(ddej†                  fdejX                  jZ                  de8de	e/   de0de	e8   de0de2de2d/e	d0   d1e8d2e2d+ee2e8f   d3e	e8   d4e	d5   d6e	e0   dejX                  jZ                  f d7„ZDddddddejŠ                  dfde8d8ejŒ                  jŽ                  de	ejX                  jZ                     de0de	e/   d9e	e/   de	e8   de0d:ede	ejT                  jr                     ddfd;„ZH	 	 	 	 	 	 	 	 	 	 dEdejX                  jZ                  de8de	e/   de0de	e8   de0de2de2d<e	ej’                  j”                     d+ee2e8f   de	ejT                  jr                     d*e	e8   dejX                  jZ                  fd=„ZIy)FzTalk to a DNS server.é    N)ÚAnyÚDictÚOptionalÚTupleÚUnion)ÚNullContext)
ÚBadResponseÚNoDOHÚNoDOQÚUDPModeÚ_compute_timesÚ_make_dot_ssl_contextÚ_matches_destinationÚ
_remainingÚhave_dohÚsslc                 ó˜   — |s|rF|€@| t         j                  k(  rd}||fS | t         j                  k(  rd}||fS t        d| › �«      ‚||fS y )Nz0.0.0.0z::zunknown address family )ÚsocketÚAF_INETÚAF_INET6ÚNotImplementedError)ÚafÚaddressÚports      úH/var/www/fastapitest/venv/lib/python3.12/site-packages/dns/asyncquery.pyÚ_source_tupler   :   sl   € ñ ‘$Øˆ?Ø”V—^‘^Ò#Ø#�ð
 ˜ˆÐð	 ”v—‘Ò&Ø�ð ˜ˆÐô *Ð,CÀBÀ4Ð*HÓIÐIØ˜ˆÐàó    c                 óR   — | �%|st        j                   «       }t        | |z
  d«      S y )Nr   )ÚtimeÚmax)Ú
expirationÚnows     r   Ú_timeoutr#   J   s+   € ØÐÙÜ—)‘)“+ˆCÜ�: Ñ# QÓ'Ð'àr   ÚsockÚwhatÚdestinationr!   Úreturnc              ƒ   óð   K  — t        |t        j                  j                  «      r|j	                  «       }t        j
                  «       }| j                  ||t        ||«      «      ƒ d{  –—† }||fS 7 Œ­w)a†  Send a DNS message to the specified UDP socket.

    *sock*, a ``dns.asyncbackend.DatagramSocket``.

    *what*, a ``bytes`` or ``dns.message.Message``, the message to send.

    *destination*, a destination tuple appropriate for the address family
    of the socket, specifying where to send the query.

    *expiration*, a ``float`` or ``None``, the absolute time at which
    a timeout exception should be raised.  If ``None``, no timeout will
    occur.  The expiration value is meaningless for the asyncio backend, as
    asyncio's transport sendto() never blocks.

    Returns an ``(int, float)`` tuple of bytes sent and the sent time.
    N)Ú
isinstanceÚdnsÚmessageÚMessageÚto_wirer   Úsendtor#   )r$   r%   r&   r!   Ú	sent_timeÚns         r   Úsend_udpr1   S   s^   è ø€ ô. �$œŸ™×+Ñ+Ô,Ø�|‰|‹~ˆÜ—	‘	“€IØ�k‰k˜$ ¬X°jÀ)Ó-LÓM×M€AØˆyˆ>Ðð 	Nús   ‚A)A6Á+A4Á,	A6FÚignore_unexpectedÚone_rr_per_rrsetÚkeyringÚrequest_macÚignore_trailingÚraise_on_truncationÚignore_errorsÚqueryc              ƒ   óò  K  — d}	 | j                  dt        |«      «      ƒ d{  –—† \  }}t        | j                  |||«      sŒ@t	        j                  «       }	 t
        j                  j                  ||||||¬«      }|	r|
�|
j                  |«      sŒ�|||fS 7 Œu# t
        j                  j                  $ r.}|	r&|
�$|
j                  |j                  «       «      sY d}~ŒÜ‚ d}~wt        $ r |	rY Œí‚ w xY w­w)aj  Read a DNS message from a UDP socket.

    *sock*, a ``dns.asyncbackend.DatagramSocket``.

    See :py:func:`dns.query.receive_udp()` for the documentation of the other
    parameters, and exceptions.

    Returns a ``(dns.message.Message, float, tuple)`` tuple of the received message, the
    received time, and the address where the message arrived from.
    r   éÿÿ  N)r4   r5   r3   r6   r7   )Úrecvfromr#   r   Úfamilyr   r*   r+   Ú	from_wireÚ	TruncatedÚis_responseÚ	Exception)r$   r&   r!   r2   r3   r4   r5   r6   r7   r8   r9   ÚwireÚfrom_addressÚreceived_timeÚrÚes                   r   Úreceive_udprG   q   s  è ø€ ð0 €DØ
Ø%)§]¡]°5¼(À:Ó:NÓ%O×OÑˆˆ|Ü#Ø�K‰K˜ {Ð4Eô
ð ÜŸ	™	›ˆð	Ü—‘×%Ñ%ØØØ'Ø!1Ø /Ø$7ð &ó ˆAñ. ˜UÐ.°u×7HÑ7HÈÔ7KØØ�= ,Ð/Ð/ðA  Pùô �{‰{×$Ñ$ò 		ñ ØÐ%Ø×)Ñ)¨!¯)©)«+Ô6äàûÜò 	ÙÙàð		üsK   ‚"C7¤B¥4C7Á%B Á?C7ÂC4Â9#C"ÃC7Ã!C"Ã"C4Ã0C7Ã2C4Ã4C7é5   ÚqÚwhereÚtimeoutr   ÚsourceÚsource_portÚbackendc              ƒ   óð  K  — | j                  «       }t        |«      \  }}t        j                  j	                  |«      }t        ||f|«      }|
rt        |
«      }no|st        j                  j                  «       }t        |||«      }|j                  «       r||f}nd}|j                  |t        j                  d||«      ƒ d{  –—† }|4 ƒd{  –—† }t        ||||«      ƒ d{  –—†  t        |||||| j                   | j"                  ||	|| «      ƒ d{  –—† \  }}}||z
  |_        |s| j'                  |«      st(        ‚|cddd«      ƒd{  –—†  S 7 Œ�7 Œ‡7 Œs7 ŒD7 Œ# 1 ƒd{  –—†7  sw Y   yxY w­w)aF  Return the response obtained after sending a query via UDP.

    *sock*, a ``dns.asyncbackend.DatagramSocket``, or ``None``,
    the socket to use for the query.  If ``None``, the default, a
    socket is created.  Note that if a socket is provided, the
    *source*, *source_port*, and *backend* are ignored.

    *backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
    the default, then dnspython will use the default backend.

    See :py:func:`dns.query.udp()` for the documentation of the other
    parameters, exceptions, and return type of this method.
    Nr   )r-   r   r*   ÚinetÚaf_for_addressÚ_lltupler   ÚasyncbackendÚget_default_backendr   Údatagram_connection_requiredÚmake_socketr   Ú
SOCK_DGRAMr1   rG   r4   Úmacr   r@   r	   )rI   rJ   rK   r   rL   rM   r2   r3   r6   r7   r$   rN   r8   rB   Ú
begin_timer!   r   r&   ÚcmÚstupleÚdtupleÚsrE   rD   Ú_s                            r   Úudpr_   ®   sw  è ø€ ð8 �9‰9‹;€DÜ-¨gÓ6Ñ€Z�Ü	�‰×	 Ñ	  Ó	'€BÜ˜E 4˜=¨"Ó-€KÙÜ5@ÀÓ5F‰áÜ×&Ñ&×:Ñ:Ó<ˆGÜ˜r 6¨;Ó7ˆØ×/Ñ/Ô1Ø˜T�]‰FàˆFØ×&Ñ& r¬6×+<Ñ+<¸aÀÈÓP×PˆØ÷ ð �QÜ�q˜$ ¨ZÓ8×8Ð8Ü&1ØØØØØØ�I‰IØ�E‰EØØØØó'
÷ !
ÑˆˆM˜1ð  Ñ+ˆŒñ  §¡¨qÔ!1ÜÐØ÷)÷ ñ ð QøðøØ8øð!
øðø÷ ÷ ñ üs~   ‚CE6ÃEÃ
E6ÃEÃE6ÃE!Ã'EÃ(0E!ÄEÄ,E!ÅE6ÅEÅE6ÅE6ÅE!ÅE!ÅE6Å!E3Å'E*Å(E3Å/E6Úudp_sockÚtcp_sockc              ƒ   óÞ   K  — 	 t        | ||||||||d|	||«      ƒ d{  –—† }|dfS 7 Œ# t        j                  j                  $ r$ t	        | ||||||||
|«
      ƒ d{  –—†7  }|dfcY S w xY w­w)aÃ  Return the response to the query, trying UDP first and falling back
    to TCP if UDP results in a truncated response.

    *udp_sock*, a ``dns.asyncbackend.DatagramSocket``, or ``None``,
    the socket to use for the UDP query.  If ``None``, the default, a
    socket is created.  Note that if a socket is provided the *source*,
    *source_port*, and *backend* are ignored for the UDP query.

    *tcp_sock*, a ``dns.asyncbackend.StreamSocket``, or ``None``, the
    socket to use for the TCP query.  If ``None``, the default, a
    socket is created.  Note that if a socket is provided *where*,
    *source*, *source_port*, and *backend*  are ignored for the TCP query.

    *backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
    the default, then dnspython will use the default backend.

    See :py:func:`dns.query.udp_with_fallback()` for the documentation
    of the other parameters, exceptions, and return type of this
    method.
    TNF)r_   r*   r+   r?   Útcp)rI   rJ   rK   r   rL   rM   r2   r3   r6   r`   ra   rN   r8   Úresponses                 r   Úudp_with_fallbackre   ð   s­   è ø€ ðF ÜØØØØØØØØØØØØØó
÷ 
ˆð ˜%Ð Ð ð
ùô  �;‰;× Ñ ò  ÜØØØØØØØØØØó
÷ 
ð 
ˆð ˜$ÐÒð üs=   ‚A-„) ž'Ÿ) ¦A-§) ©4A*ÁA Á	A*Á'A-Á)A*Á*A-c              ƒ   óB  K  — t        |t        j                  j                  «      r|j	                  d¬«      }nt        |«      j                  dd«      |z   }t        j                  «       }| j                  |t        ||«      «      ƒ d{  –—†  t        |«      |fS 7 Œ­w)zîSend a DNS message to the specified TCP socket.

    *sock*, a ``dns.asyncbackend.StreamSocket``.

    See :py:func:`dns.query.send_tcp()` for the documentation of the other
    parameters, exceptions, and return type of this method.
    T)Úprepend_lengthé   ÚbigN)
r)   r*   r+   r,   r-   ÚlenÚto_bytesr   Úsendallr#   )r$   r%   r!   Útcpmsgr/   s        r   Úsend_tcprn   4  s„   è ø€ ô �$œŸ™×+Ñ+Ô,Ø—‘¨T�Ó2‰ô
 �T“×#Ñ# A uÓ-°Ñ4ˆÜ—	‘	“€IØ
�,‰,�vœx¨
°IÓ>Ó
?×?Ð?Ü�‹K˜Ð#Ð#ð @ús   ‚B	BÂBÂBc              ƒ   ó®   K  — d}|dkD  rG| j                  |t        |«      «      ƒ d{  –—† }|dk(  rt        ‚|t        |«      z
  }||z   }|dkD  rŒG|S 7 Œ*­w)z|Read the specified number of bytes from stream.  Keep trying until we
    either get the desired amount, or we hit EOF.
    r   r   N)Úrecvr#   ÚEOFErrorrj   )r$   Úcountr!   r]   r0   s        r   Ú_read_exactlyrs   M  sc   è ø€ ð 	€AØ
�!Š)Ø—)‘)˜E¤8¨JÓ#7Ó8×8ˆØ�Š8ÜˆNØœ˜A›‘ˆØ�‰Eˆð �!‹)ð €Hð 9ús   ‚&A¨A©'AÁAc              ƒ   ó  K  — t        | d|«      ƒ d{  –—† }t        j                  d|«      \  }t        | ||«      ƒ d{  –—† }t        j                  «       }	t        j
                  j                  |||||¬«      }
|
|	fS 7 Œm7 ŒB­w)zçRead a DNS message from a TCP socket.

    *sock*, a ``dns.asyncbackend.StreamSocket``.

    See :py:func:`dns.query.receive_tcp()` for the documentation of the other
    parameters, exceptions, and return type of this method.
    rh   Nú!H©r4   r5   r3   r6   )rs   ÚstructÚunpackr   r*   r+   r>   )r$   r!   r3   r4   r5   r6   ÚldataÚlrB   rD   rE   s              r   Úreceive_tcpr{   [  s…   è ø€ ô     a¨Ó4×4€EÜ�=‰=˜˜uÓ%�D€QÜ˜t Q¨
Ó3×3€DÜ—I‘I“K€MÜ�‰×ÑØØØØ)Ø'ð 	ó 	€Að ˆ}ÐÐð 5øà3ús"   ‚B“B”,BÁ BÁABÂBc
           	   ƒ   óÔ  K  — | j                  «       }
t        |«      \  }}|r$|j                  «       ƒ d{  –—†  t        |«      }n|t        j
                  j                  |«      }t        |||«      }||f}|	st        j                  j                  «       }	|	j                  |t        j                  d|||«      ƒ d{  –—† }|4 ƒd{  –—† }t        ||
|«      ƒ d{  –—†  t        |||| j                  | j                   |«      ƒ d{  –—† \  }}||z
  |_        | j%                  |«      st&        ‚|cddd«      ƒd{  –—†  S 7 �Œ7 ŒŠ7 Œ�7 Œn7 ŒD7 Œ# 1 ƒd{  –—†7  sw Y   yxY w­w)aO  Return the response obtained after sending a query via TCP.

    *sock*, a ``dns.asyncbacket.StreamSocket``, or ``None``, the
    socket to use for the query.  If ``None``, the default, a socket
    is created.  Note that if a socket is provided
    *where*, *port*, *source*, *source_port*, and *backend* are ignored.

    *backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
    the default, then dnspython will use the default backend.

    See :py:func:`dns.query.tcp()` for the documentation of the other
    parameters, exceptions, and return type of this method.
    Nr   )r-   r   Úgetpeernamer   r*   rP   rQ   r   rS   rT   rV   r   ÚSOCK_STREAMrn   r{   r4   rX   r   r@   r	   )rI   rJ   rK   r   rL   rM   r3   r6   r$   rN   rB   rY   r!   rZ   r   r[   r\   r]   rE   rD   s                       r   rc   rc   y  s_  è ø€ ð4 �9‰9‹;€DÜ-¨gÓ6Ñ€Z�Ùð ×ÑÓ × Ð Ü5@ÀÓ5F‰ô �X‰X×$Ñ$ UÓ+ˆÜ˜r 6¨;Ó7ˆØ˜�ˆÙÜ×&Ñ&×:Ñ:Ó<ˆGØ×&Ñ&Ø”×"Ñ" A v¨v°wó
÷ 
ˆð ÷ ð �QÜ�q˜$ 
Ó+×+Ð+Ü#.ØˆzÐ+¨Q¯Y©Y¸¿¹¸ó$
÷ 
ÑˆˆMð  Ñ+ˆŒØ�}‰}˜QÔÜÐØ÷÷ ñ ð 	!ùð
øðøØ+øð
øðø÷ ÷ ñ üsŽ   ‚4E(¶E·BE(Â>E	Â?
E(Ã	EÃ
E(ÃEÃEÃ+EÄ
EÄ)EÄ4E(Å EÅE(Å	E(ÅE(ÅEÅEÅE(ÅE%ÅEÅE%Å!E(TÚssl_contextÚserver_hostnameÚverifyc              ƒ   óZ  K  — t        |«      \  }}|rt        |«      }nŒ|
€t        ||«      }
t        j                  j                  |«      }t        |||«      }||f}|	st        j                  j                  «       }	|	j                  |t        j                  d||||
|«      ƒ d{  –—† }|4 ƒd{  –—† }t        |«      }t        | |||||||||	«
      ƒ d{  –—† }t        j                  «       }||z
  |_        |cddd«      ƒd{  –—†  S 7 Œg7 Œ^7 Œ97 Œ# 1 ƒd{  –—†7  sw Y   yxY w­w)a¦  Return the response obtained after sending a query via TLS.

    *sock*, an ``asyncbackend.StreamSocket``, or ``None``, the socket
    to use for the query.  If ``None``, the default, a socket is
    created.  Note that if a socket is provided, it must be a
    connected SSL stream socket, and *where*, *port*,
    *source*, *source_port*, *backend*, *ssl_context*, and *server_hostname*
    are ignored.

    *backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
    the default, then dnspython will use the default backend.

    See :py:func:`dns.query.tls()` for the documentation of the other
    parameters, exceptions, and return type of this method.
    Nr   )r   r   r   r*   rP   rQ   r   rS   rT   rV   r   r~   r#   rc   r   )rI   rJ   rK   r   rL   rM   r3   r6   r$   rN   r   r€   r�   rY   r!   rZ   r   r[   r\   r]   rd   Úend_times                         r   Útlsr„   ±  sE  è ø€ ô<  .¨gÓ6Ñ€Z�ÙÜ5@ÀÓ5F‰àÐÜ/°ÀÓHˆKÜ�X‰X×$Ñ$ UÓ+ˆÜ˜r 6¨;Ó7ˆØ˜�ˆÙÜ×&Ñ&×:Ñ:Ó<ˆGØ×&Ñ&ØÜ×ÑØØØØØØó	
÷ 	
ˆð ÷ ð �QÜ˜:Ó&ˆÜØØØØØØØØØØó
÷ 
ˆô —9‘9“;ˆØ  :Ñ-ˆŒØ÷!÷ ñ ð	
øðøð
øðø÷ ÷ ñ üsl   ‚B$D+Â&DÂ'
D+Â1DÂ2D+Â5#DÃDÃ#DÃ<D+ÄDÄ	D+ÄD+ÄDÄD+ÄD(ÄDÄD(Ä$D+i»  z
/dns-queryÚclientzhttpx.AsyncClientÚpathÚpostÚbootstrap_addressÚresolverzdns.asyncresolver.Resolverr=   c           
   ƒ   ó0  K  — t         st        ‚|r%t        |t        j                  «      st        d«      ‚| j                  «       }	 t        j                  j                  |«      }d}ddi}|�mt        j                  j                  |«      rN|t        j                  k(  rdj                  |||	«      }n)|t        j                  k(  rdj                  |||	«      }n|}t        j                  j!                  «       }|€d}d}n|}|} |j#                  «       |dd|||||¬	«      }|rt%        |«      }nt        j                  dd||¬
«      }|4 ƒd{  –—† }|
rS|j'                  dt)        t+        |«      «      dœ«       |j-                  |j/                  ||¬«      |«      ƒ d{  –—† }nbt1        j2                  |«      j5                  d«      }|j7                  «       }|j-                  |j9                  |d|i¬«      |«      ƒ d{  –—† }ddd«      ƒd{  –—†  j:                  dk  s|j:                  dkD  r0t        dj                  ||j:                  |j<                  «      «      ‚t        j>                  jA                  |j<                  | jB                  | jD                  ||¬«      }|jF                  jI                  «       |_%        | jM                  |«      stN        ‚|S # t
        $ r d}Y �Œ�w xY w7 �Œ¦7 �ŒU7 Œô7 Œæ# 1 ƒd{  –—†7  sw Y   ŒöxY w­w)aÃ  Return the response obtained after sending a query via DNS-over-HTTPS.

    *client*, a ``httpx.AsyncClient``.  If provided, the client to use for
    the query.

    Unlike the other dnspython async functions, a backend cannot be provided
    in this function because httpx always auto-detects the async backend.

    See :py:func:`dns.query.https()` for the documentation of the other
    parameters, exceptions, and return type of this method.
    z.session parameter must be an httpx.AsyncClientNÚacceptzapplication/dns-messagezhttps://{}:{}{}zhttps://[{}]:{}{}r   T)Úlocal_addressÚhttp1Úhttp2r�   Ú
local_portrˆ   r‰   r=   )r�   rŽ   r�   Ú	transport)zcontent-typezcontent-length)ÚheadersÚcontentó   =r*   )r‘   ÚparamséÈ   i+  z4{} responded with status code {}
Response body: {!r}rv   )(r   r
   r)   ÚhttpxÚAsyncClientÚ
ValueErrorr-   r*   rP   rQ   Ú
is_addressr   r   Úformatr   rS   rT   Úget_transport_classr   ÚupdateÚstrrj   Úwait_forr‡   Úbase64Úurlsafe_b64encodeÚrstripÚdecodeÚgetÚstatus_coder’   r+   r>   r4   r5   ÚelapsedÚtotal_secondsr   r@   r	   )rI   rJ   rK   r   rL   rM   r3   r6   r…   r†   r‡   r�   rˆ   r‰   r=   rB   r   r�   r‘   ÚurlrN   rŒ   r�   rZ   Ú
the_clientrd   ÚtwirerE   s                               r   Úhttpsrª   ÷  sò  è ø€ õ: ÜˆÙ”j ¬×):Ñ):Ô;ÜÐIÓJÐJà�9‰9‹;€DðÜ�X‰X×$Ñ$ UÓ+ˆð €IØÐ2Ð3€GØ	€~œ#Ÿ(™(×-Ñ-¨eÔ4Ø”—‘ÒØ#×*Ñ*¨5°$¸Ó=‰CØ”6—?‘?Ò"Ø%×,Ñ,¨U°D¸$Ó?‰Càˆä×Ñ×2Ñ2Ó4€Gà€~ØˆØ‰
àˆØ ˆ
Ø-�×+Ñ+Ó-Ø#ØØØØØ+ØØô	€Iñ Ü5@ÀÓ5H‰ä×ÑØ˜d¨6¸Yô
ˆð ÷ ð �Zñ Ø�N‰Nà$=Ü&)¬#¨d«)£nñôð %×-Ñ-Ø—‘ ¨W¸d�ÓCÀWó÷ ‰Hô ×+Ñ+¨DÓ1×8Ñ8¸Ó>ˆDØ—K‘K“MˆEØ$×-Ñ-Ø—‘˜s¨G¸UÀE¸N�ÓKÈWó÷ ˆH÷!÷ ð, ×Ñ˜cÒ! X×%9Ñ%9¸CÒ%?Üð$ß$*¡FØ�x×+Ñ+¨X×-=Ñ-=ó%ó
ð 	
ô 	�‰×ÑØ×ÑØ—	‘	Ø—M‘MØ)Ø'ð 	ó 	€Að ×Ñ×+Ñ+Ó-€A„FØ�=‰=˜ÔÜÐØ€Høô[ ò Ø‹ðúðLùðùðøð!ø÷ ÷ ñ üs”   ‚ALÁK% Á&C+LÅK7ÅLÅALÆ%K:Æ&A"LÈK=È	LÈLÈK?ÈCLË%K4Ë0LË3K4Ë4LË:LË=LË?LÌLÌL
ÌLÌLÚtxn_managerÚlifetimeÚudp_modec
              ƒ   óô  K  — |€#t         j                  j                  |«      \  }}
nt         j                  j                  |«      }
|j                  d   j
                  }|t         j                  j                  k(  }|j                  «       }|j                  «       }t         j                  j                  | «      }t        |||«      }| |f}t        |«      \  }}d}|�r�d}|r&|t        j                  k7  rt         j"                  }d}nt         j$                  }d}|	st         j&                  j)                  «       }	|	j+                  ||d||t-        |«      «      ƒ d{  –—† }|4 ƒd{  –—†  |r%|j/                  ||t-        |«      «      ƒ d{  –—†  n<t1        j2                  dt5        |«      «      |z   }|j7                  ||«      ƒ d{  –—†  t         j                  j9                  |||
|«      5 }d}d}|�st        |«      \  }}|�|�||kD  r|}|rGt;        | |f|«      }	 t-        |«      }|j=                  d|«      ƒ d{  –—† \  }}t?        |||d«      rnCŒ8tA        |d|«      ƒ d{  –—† } t1        jB                  d| «      \  }!tA        ||!|«      ƒ d{  –—† }|t         j                  j                  k(  }t         jD                  jG                  ||jH                  |jJ                  d||| |¬«      }"	 |jM                  |"«      }|"jR                  }|s�Œ|s7|jH                  r+"jT                  st         jV                  jY                  d	«      ‚ddd«       ddd«      ƒd{  –—†  |r�Œ�yy7 �Œ7 �Œ7 �Œè7 �Œ®7 �Œ87 �Œ7 Œè# t         j                  jN                  $ r0 |sJ ‚|t        jP                  k(  r‚ d}d}t        j                  }Y �ŒÙw xY w# 1 sw Y   ŒƒxY w7 Œz# 1 ƒd{  –—†7  sw Y   ŒŠxY w­w)
am  Conduct an inbound transfer and apply it via a transaction from the
    txn_manager.

    *backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
    the default, then dnspython will use the default backend.

    See :py:func:`dns.query.inbound_xfr()` for the documentation of
    the other parameters, exceptions, and return type of this method.
    Nr   TFru   r;   rh   )r4   r5   ÚxfrÚoriginÚtsig_ctxÚmultir3   zmissing TSIG)-r*   r¯   Ú
make_queryÚextract_serial_from_queryÚquestionÚrdtypeÚ	rdatatypeÚIXFRÚfrom_wire_originr-   rP   rQ   r   r   r   ÚNEVERr   rW   r~   rS   rT   rV   r#   r.   rw   Úpackrj   rl   ÚInboundrR   r<   r   rs   rx   r+   r>   r4   rX   Úprocess_messageÚUseTCPÚONLYr±   Úhad_tsigÚ	exceptionÚ	FormError)#rJ   r«   r9   r   rK   r¬   rL   rM   r­   rN   Úserialr¶   Úis_ixfrr°   rB   r   r[   r\   r^   r!   ÚretryÚ	sock_typeÚis_udpr]   rm   ÚinboundÚdoner±   Úmexpirationr&   ÚrwirerC   ry   rz   rE   s#                                      r   Úinbound_xfrrÌ   l  s«  è ø€ ð* €}ÜŸ'™'×,Ñ,¨[Ó9‰ˆ‘ä—‘×2Ñ2°5Ó9ˆØ�^‰^˜AÑ×%Ñ%€FØœŸ™×*Ñ*Ñ*€GØ×)Ñ)Ó+€FØ�=‰=‹?€DÜ	�‰×	 Ñ	  Ó	'€BÜ˜2˜v {Ó3€FØ�Tˆ]€FÜ$ XÓ.�O€Qˆ
Ø€EÚ
ØˆÙ�x¤7§=¡=Ò0Ü×)Ñ)ˆIØ‰Fä×*Ñ*ˆIØˆFÙÜ×&Ñ&×:Ñ:Ó<ˆGØ×%Ñ%Ø�	˜1˜f f¬h°zÓ.Bó
÷ 
ˆð ÷ 3	Bñ 3	BÙØ—h‘h˜t V¬X°jÓ-AÓB×BÑBäŸ™ T¬3¨t«9Ó5¸Ñ<�Ø—i‘i ¨
Ó3×3Ð3Ü—‘—‘ ¨f°f¸fÓEð -BÈØ�Ø�ÚÜ'5°gÓ'>Ñ$�Q˜Ø"Ð*Ø"Ð.°;ÀÒ3Kà&0˜ÙÜ&.°°t¨}¸bÓ&A˜Ø"Ü&.¨{Ó&;˜GØ:;¿*¹*ÀUÈGÓ:T×4TÑ1˜U LÜ3Ø " L°+¸tô ð !&ð #ô '4°A°q¸+Ó&F× F˜Ü%Ÿ}™}¨T°5Ó9™˜Ü&3°A°q¸+Ó&F× F˜Ø$¬¯©×(:Ñ(:Ñ:�GÜŸ™×-Ñ-ØØ %§¡Ø$)§I¡IØ Ø%Ø!)Ø#)˜zØ)0ð .ó 	�Að	!Ø&×6Ñ6°qÓ9˜ð  !Ÿz™z�HóQ ñR  §¢°q·z²zÜŸ-™-×1Ñ1°.ÓAÐA÷[-B÷3	B÷ 3	Bõ ð
ùð3	BùàBùð 4ùð 5Uùð !Gùà Fùô Ÿ7™7Ÿ>™>ò !Ù%˜˜vØ#¤w§|¡|Ò3Ø!Ø#˜Ø $˜Ü#*§=¡=˜Ú ð!ú÷G-Bð -Búð3	Bø÷ 3	B÷ 3	Bñ 3	Büsÿ   ‚EO8ÅM1Å
O8Å)M4Å*O8Å-"O#ÆM7Æ<O#ÇM:Ç&O#Ç3AOÉM=É'OÉ-N É.,OÊNÊAOË9NÌ
OÌ9OÍO#ÍO8Í&O!Í'O8Í/O8Í4O8Í7O#Í:O#Í=OÎ OÎOÎA	OÏOÏOÏOÏO	ÏO#Ï!O8Ï#O5Ï)O,Ï*O5Ï1O8Ú
connectionc           	   ƒ   ó€  K  — t         j                  j                  st        d«      ‚d| _        | j                  «       }|r7t         j                  j                  }t         j                  j                  }|}n"t         j                  j                  |
«      \  }} |«       4 ƒd{  –—† } |||	|¬«      4 ƒd{  –—† }|s|j                  ||||«      }t        |«      \  }}j                  |«      ƒ d{  –—† }|4 ƒd{  –—†  |j                  |d«      ƒ d{  –—†  |j                  t        |«      «      ƒ d{  –—† }ddd«      ƒd{  –—†  t        j                  «       }ddd«      ƒd{  –—†  t         j                  j!                  || j"                  | j$                  ||¬«      }ddd«      ƒd{  –—†  t'        z
  d«      _        | j)                  |«      st*        ‚|S 7 �ŒF7 �Œ57 Œú7 Œñ7 ŒÙ7 Œ¹7 Œ«# 1 ƒd{  –—†7  sw Y   Œ»xY w7 Œž# 1 ƒd{  –—†7  sw Y   Œ®xY w7 Œm# 1 ƒd{  –—†7  sw Y   Œ}xY w­w)ai  Return the response obtained after sending an asynchronous query via
    DNS-over-QUIC.

    *backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
    the default, then dnspython will use the default backend.

    See :py:func:`dns.query.quic()` for the documentation of the other
    parameters, exceptions, and return type of this method.
    zDNS-over-QUIC is not available.r   N)Úverify_modeÚserver_nameTrv   g        )r*   ÚquicÚ	have_quicr   Úidr-   Únull_factoryÚfactories_for_backendÚconnectr   Úmake_streamÚsendÚreceiver   r   r+   r>   r4   r5   r    r@   r	   )rI   rJ   rK   r   rL   rM   r3   r6   rÍ   r�   rN   r€   rB   ÚcfactoryÚmfactoryÚthe_connectionÚcontextÚthe_managerÚstartr!   ÚstreamÚfinishrE   s                          r   rÑ   rÑ   Ñ  s  è ø€ ô0 �8‰8×ÒÜÐ5Ó6Ð6à€A„DØ�9‰9‹;€DáÜ—8‘8×(Ñ(ˆÜ—8‘8×(Ñ(ˆØ#‰ä"Ÿx™x×=Ñ=¸gÓFÑˆ�8á‹z÷ 
ð 
˜WÙØ °_ô
÷ 
	!ð 
	!àÙØ!,×!4Ñ!4°U¸DÀ&È+Ó!V�Ü"0°Ó"9ÑˆU�JØ)×5Ñ5°gÓ>×>ˆFØ÷ Dñ DØ—k‘k $¨Ó-×-Ð-Ø#Ÿ^™^¬J°zÓ,BÓC×C�÷D÷ Dô —Y‘Y“[ˆF÷
	!÷ 
	!ô �K‰K×!Ñ!ØØ—I‘IØŸ™Ø-Ø+ð "ó 
ˆ÷
÷ 
ô& �˜%‘ Ó%€A„FØ�=‰=˜ÔÜÐØ€Hð-
ùð
	!ùð ?øðDøØ-øØCøðDø÷ D÷ Dñ Dúð
	!ø÷ 
	!÷ 
	!ñ 
	!úð
ø÷ 
÷ 
ñ 
üs  ‚B#H>Â%G+Â&H>Â)H)Â9G.Â:H)Â=9HÃ6G1Ã7
HÄG3
ÄHÄG;ÄG5
Ä!G;Ä=G7
Ä>G;ÅHÅG9ÅHÅ&H)Å1HÅ2<H)Æ.H>Æ9H'Æ:2H>Ç.H)Ç1HÇ3HÇ5G;Ç7G;Ç9HÇ;HÈHÈHÈ	HÈH)ÈH$	ÈHÈH$	È H)È'H>È)H;È/H2È0H;È7H>)N)
NNFFNr   FFFN)NrH   Nr   FFFFNNF)NrH   Nr   FFFNNNF)NFNr   F)NrH   Nr   FFNN)NéU  Nr   FFNNNNT)
Nrâ   Nr   FFNTNN)KÚ__doc__rŸ   Ú
contextlibr   rw   r   Útypingr   r   r   r   r   Údns.asyncbackendr*   Údns.exceptionÚdns.inetÚdns.messageÚdns.nameÚdns.quicÚ	dns.rcodeÚdns.rdataclassÚdns.rdatatypeÚdns.transactionÚdns._asyncbackendr   Ú	dns.queryr	   r
   r   r   r   r   r   r   r   r   r–   rP   Úlow_level_address_tuplerR   r   r#   rS   ÚDatagramSocketr+   r,   ÚbytesÚfloatÚintr1   ÚboolÚnameÚNameÚtsigÚKeyrG   r�   ÚBackendr_   ÚStreamSocketre   rn   rs   r{   rc   Ú
SSLContextr„   Ú	AF_UNSPECrª   rº   ÚtransactionÚTransactionManagerrÌ   rÑ   ÚAsyncQuicConnection© r   r   ú<module>r     s	  ðñ$ ã Û Û Û Û ß 4Õ 4ã Û Û Û Û Û Û Û Û Û Ý )÷÷ ÷ ñ Ûð �8‰8×+Ñ+€òó ð #'ñ	Ø
×
Ñ
×
)Ñ
)ðà
�—‘×#Ñ# UÐ*Ñ
+ðð ðð ˜‘ð	ð
 ˆ3�ˆ:Ñóð@ "&Ø"&Ø#Ø"Ø;?Ø#&Ø!Ø %ØØ+/ñ:0Ø
×
Ñ
×
)Ñ
)ð:0à˜#‘ð:0ð ˜‘ð:0ð ð	:0ð
 ð:0ð �d˜3Ÿ8™8Ÿ=™=¨#¯(©(¯,©,Ð6Ñ7Ñ8ð:0ð ˜%‘ð:0ð ð:0ð ð:0ð ð:0ð �C—K‘K×'Ñ'Ñ(ð:0ð 	ó:0ð@  $ØØ ØØ#Ø"Ø!Ø %Ø6:Ø26Øñ?Ø
‡{�{×Ñð?àð?ð �e‰_ð?ð ð	?ð
 �S‰Mð?ð ð?ð ð?ð ð?ð ð?ð ð?ð �3×#Ñ#×2Ñ2Ñ
3ð?ð �c×&Ñ&×.Ñ.Ñ/ð?ð ð?ð 	‡[�[×Ñó?ðJ  $ØØ ØØ#Ø"Ø!Ø:>Ø8<Ø26ØñA Ø
‡{�{×ÑðA àðA ð �e‰_ðA ð ð	A ð
 �S‰MðA ð ðA ð ðA ð ðA ð ðA ð �s×'Ñ'×6Ñ6Ñ7ðA ð �s×'Ñ'×4Ñ4Ñ5ðA ð �c×&Ñ&×.Ñ.Ñ/ðA ð ðA ð ˆ3�;‰;×Ñ Ð$Ñ%óA ðN #'ñ$Ø
×
Ñ
×
'Ñ
'ð$à
�—‘×#Ñ# UÐ*Ñ
+ð$ð ˜‘ð$ð ˆ3�ˆ:Ñó	$ò2ð  #'Ø"Ø;?Ø#&Ø!ñØ
×
Ñ
×
'Ñ
'ðà˜‘ðð ðð �d˜3Ÿ8™8Ÿ=™=¨#¯(©(¯,©,Ð6Ñ7Ñ8ð	ð
 ˜%‘ðð ðð ˆ3�;‰;×Ñ Ð%Ñ&óðB  $ØØ ØØ"Ø!Ø48Ø26ñ5Ø
‡{�{×Ñð5àð5ð �e‰_ð5ð ð	5ð
 �S‰Mð5ð ð5ð ð5ð ð5ð �3×#Ñ#×0Ñ0Ñ
1ð5ð �c×&Ñ&×.Ñ.Ñ/ð5ð 	‡[�[×Ñó5ðv  $ØØ ØØ"Ø!Ø48Ø26Ø,0Ø%)Ø#ñCØ
‡{�{×ÑðCàðCð �e‰_ðCð ð	Cð
 �S‰MðCð ðCð ðCð ðCð �3×#Ñ#×0Ñ0Ñ
1ðCð �c×&Ñ&×.Ñ.Ñ/ðCð ˜#Ÿ.™.Ñ)ðCð ˜c‘]ðCð �$˜�)ÑðCð 	‡[�[×ÑóCðR  $ØØ ØØ"Ø!Ø,0ØØØ#Ø'+Ø7;Ø"×,Ñ,ñrØ
‡{�{×Ñðràðrð �e‰_ðrð ð	rð
 �S‰Mðrð ðrð ðrð ðrð Ð(Ñ)ðrð ðrð ðrð �$˜�)Ñðrð   ‘}ðrð Ð3Ñ4ðrð �S‰Mðrð  	‡[�[×Ñó!rðp ,0ØØ#Ø $Ø ØØŸ™Ø26ñbBØðbBà—‘×3Ñ3ðbBð �C—K‘K×'Ñ'Ñ(ðbBð ð	bBð
 �e‰_ðbBð �u‰oðbBð �S‰MðbBð ðbBð ðbBð �c×&Ñ&×.Ñ.Ñ/ðbBð 
óbBðP  $ØØ ØØ"Ø!Ø9=Ø#Ø26Ø%)ñ;Ø
‡{�{×Ñð;àð;ð �e‰_ð;ð ð	;ð
 �S‰Mð;ð ð;ð ð;ð ð;ð ˜Ÿ™×5Ñ5Ñ6ð;ð �$˜�)Ñð;ð �c×&Ñ&×.Ñ.Ñ/ð;ð ˜c‘]ð;ð 	‡[�[×Ñô;r   