ó
    Ö›‘hÕ%  ã                   ón  • S r SSKJrJrJrJrJrJrJrJ	r	J
r
  SSKJrJrJrJrJrJrJrJrJr  SSKJr  SSKJr  SSKJrJr  SSKJr  SSKJr  SS	K J!r!J"r"J#r#J$r$J%r%J&r&  SS
K'J(r(  SSK)J*r*  SSK+J,r,  \(       a  SSK-J.r.  \" \#5       " S S5      5       r/\0" \\/5      r1\0" \/5      \\0" \/5      \\1\0r2\\\\0r3\\S.r4\S\S0r5\\\\\6\7\\\7\64   \\7\6\6\64   4   4      r8\" \"5       " S S5      5       r9\" \"5       " S S5      5       r:\" \%5       " S S5      5       r;\" \&5       " S S5      5       r<g)z=
IPv6-aware hostname resolution.

@see: L{IHostnameResolver}
é    )	ÚAF_INETÚAF_INET6Ú	AF_UNSPECÚ
SOCK_DGRAMÚSOCK_STREAMÚAddressFamilyÚ
SocketKindÚgaierrorÚgetaddrinfo)	ÚTYPE_CHECKINGÚCallableÚListÚNoReturnÚOptionalÚSequenceÚTupleÚTypeÚUnion)Úimplementer)Ú
_idnaBytes)ÚIPv4AddressÚIPv6Address)ÚDeferred)ÚDNSLookupError)ÚIAddressÚIHostnameResolverÚIHostResolutionÚIReactorThreadsÚIResolutionReceiverÚIResolverSimple)ÚdeferToThreadPool)ÚLogger)ÚnativeString)Ú
ThreadPoolc                   ó4   • \ rS rSrSrS\4S jrS\4S jrSr	g)	ÚHostResolutioné9   z1
The in-progress resolution of a given hostname.
Únamec                 ó   • Xl         g)z1
Create a L{HostResolution} with the given name.
N©r(   )Úselfr(   s     Ú^C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/internet/_resolver.pyÚ__init__ÚHostResolution.__init__?   s	   € ð �	ó    Úreturnc                 ó   • [        5       e©N)ÚNotImplementedError©r+   s    r,   ÚcancelÚHostResolution.cancelE   s   € ä!Ó#Ð#r/   r*   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ústrr-   r   r5   Ú__static_attributes__© r/   r,   r&   r&   9   s   † ñð˜Sô ð$˜÷ $r/   r&   )ÚTCPÚUDPr?   r@   c                   ó–   • \ rS rSrSrS\4S\S\\/ S4      S\\	\
\
\
/\4   4S jjr   SS	\S
\	S\
S\\\\         S\	S\4S jjrSrg)ÚGAIResolverém   zd
L{IHostnameResolver} implementation that resolves hostnames by calling
L{getaddrinfo} in a thread.
NÚreactorÚgetThreadPoolr$   r   c                 óH   • Xl         Uc  UR                  OUU l        X0l        g)a1  
Create a L{GAIResolver}.

@param reactor: the reactor to schedule result-delivery on
@type reactor: L{IReactorThreads}

@param getThreadPool: a function to retrieve the thread pool to use for
    scheduling name resolutions.  If not supplied, the use the given
    C{reactor}'s thread pool.
@type getThreadPool: 0-argument callable returning a
    L{twisted.python.threadpool.ThreadPool}

@param getaddrinfo: a reference to the L{getaddrinfo} to use - mainly
    parameterized for testing.
@type getaddrinfo: callable with the same signature as L{getaddrinfo}
N)Ú_reactorrE   Ú_getThreadPoolÚ_getaddrinfo)r+   rD   rE   r   s       r,   r-   ÚGAIResolver.__init__t   s)   € ð,  Œà%2Ñ%:ˆG×!Ò!Àð 	Ôð (Õr/   ÚresolutionReceiverÚhostNameÚ
portNumberÚaddressTypesÚtransportSemanticsr0   c                 ó@  ^ ^^^^^• T R                  5       n[        Uc  [        O
[        U5         m[        U   mS[
        4UUUU U4S jjn[        T R                  Xg5      n[        T5      n	TR                  U	5        UR                  S[
        SS4U4S jj5       n
U	$ )úü
See L{IHostnameResolver.resolveHostName}

@param resolutionReceiver: see interface

@param hostName: see interface

@param portNumber: see interface

@param addressTypes: see interface

@param transportSemantics: see interface

@return: see interface
Nr0   c                  óR   >•  TR                  TTT T5      $ ! [         a    / s $ f = fr2   )rI   r
   )ÚaddressFamilyrL   rM   r+   Ú
socketTypes   €€€€€r,   ÚgetÚ(GAIResolver.resolveHostName.<locals>.get­   s:   ø€ ðØ×(Ñ(Ø˜j¨-¸óð øô ó Ø’	ðús   ƒ —&¥&Úresultc           	      óª   >• U  H<  u  pp4n[         U   nTR                  U" [        R                  US5      /UQ76 5        M>     TR	                  5         g ©Nr?   )Ú	_afToTypeÚaddressResolvedÚ_socktypeToTyperU   ÚresolutionComplete)rW   ÚfamilyÚsocktypeÚprotoÚ	cannonameÚsockaddrÚaddrTyperK   s          €r,   ÚdeliverResultsÚ3GAIResolver.resolveHostName.<locals>.deliverResults¹   sV   ø€ ã@FÑ<� %°HÜ$ VÑ,�Ø"×2Ñ2Ùœ_×0Ñ0°¸5ÓAÐMÀHÒMöñ AGð
 ×1Ñ1Õ3r/   )rH   Ú
_typesToAFÚ_anyÚ	frozensetÚ_transportToSocketÚ_GETADDRINFO_RESULTr!   rG   r&   ÚresolutionBeganÚaddCallback)r+   rK   rL   rM   rN   rO   ÚpoolrU   ÚdÚ
resolutionrd   rS   rT   s   ````       @@r,   ÚresolveHostNameÚGAIResolver.resolveHostName�   s¢   ý€ ð. ×"Ñ"Ó$ˆÜ"Ø Ñ(�D¬i¸Ó.Eñ
ˆô (Ð(:Ñ;ˆ
ð	Ô(÷ 	ó 	ô ˜dŸm™m¨TÓ7ˆÜ# HÓ-ˆ
Ø×*Ñ*¨:Ô6à	
�‰ð	4Ô#6ð 	4¸4ö 	4ó 
ð	4ð Ðr/   )rH   rI   rG   ©r   Nr?   )r7   r8   r9   r:   r;   r   r   r   r   r<   Úintrj   r-   r   r   r   r   r   rp   r=   r>   r/   r,   rB   rB   m   s²   † ñð ?CØKVñ	(à ð(ð   ¨¨\Ð)9Ñ :Ñ;ð(ð ˜s C¨¨cÐ2Ð4GÐGÑHõ	(ð@ Ø;?Ø"'ñ2à/ð2ð ð2ð ð	2ð
 ˜x¨¨X©Ñ7Ñ8ð2ð  ð2ð 
÷2ð 2r/   rB   c                   ór   • \ rS rSrSr\" 5       rS\4S jr   SS\	S\
S\S	\\\\         S
\
S\4S jjrSrg)ÚSimpleResolverComplexifieréÅ   z>
A converter from L{IResolverSimple} to L{IHostnameResolver}.
ÚsimpleResolverc                 ó   • Xl         g)zG
Construct a L{SimpleResolverComplexifier} with an L{IResolverSimple}.
N©Ú_simpleResolver)r+   rw   s     r,   r-   Ú#SimpleResolverComplexifier.__init__Í   s
   € ð  .Õr/   NrK   rL   rM   rN   rO   r0   c                 ób  ^ ^^^•  TR                  S5      n[        U5      m[	        T5      nTR                  U5        T R                  R                  T5      R                  UU4S j5      R                  UU 4S j5      R                  U4S j5        U$ ! [         a    [        T5      n N–f = f)rQ   Úasciic                 ó<   >• TR                  [        SU T5      5      $ rY   )r[   r   )ÚaddressrM   rK   s    €€r,   Ú<lambda>Ú<SimpleResolverComplexifier.resolveHostName.<locals>.<lambda>ü   s   ø€ Ð 2× BÑ BÜ  w°
Ó;ô!r/   c                 óˆ   >• U R                  [        5      (       a  S $ TR                  R                  SU TTR                  S9$ )Nz'while looking up {name} with {resolver})r(   Úresolver)Úcheckr   Ú_logÚfailurerz   )ÚerrorrL   r+   s    €€r,   r€   r�     sJ   ø€ Ø—;‘;œ~×.Ñ.ð #ð à—Y‘Y×&Ñ&Ø=ØØ!Ø!×1Ñ1ð	 'ð ðr/   c                 ó$   >• TR                  5       $ r2   )r]   )ÚnothingrK   s    €r,   r€   r�   
  s   ø€ Ð);×)NÑ)NÔ)Pr/   )
ÚencodeÚUnicodeEncodeErrorr   r#   r&   rk   rz   ÚgetHostByNamerl   Ú
addErrback)r+   rK   rL   rM   rN   rO   ÚhostName_bytesro   s   ````    r,   rp   Ú*SimpleResolverComplexifier.resolveHostNameÓ   sž   û€ ð0	2Ø%Ÿ_™_¨WÓ5ˆNô   Ó/ˆä# HÓ-ˆ
Ø×*Ñ*¨:Ô6à× Ñ ×.Ñ.¨xÓ8ß‰[õó÷
 ‰Zõó	÷ ‰[ÔPÔQàÐøô? "ó 	2ô
 (¨Ó1ŠNð	2ús   †B ÂB.Â-B.ry   rr   )r7   r8   r9   r:   r;   r"   r…   r    r-   r   r<   rs   r   r   r   r   r   rp   r=   r>   r/   r,   ru   ru   Å   sy   † ññ ‹8€Dð. ô .ð Ø;?Ø"'ñ9à/ð9ð ð9ð ð	9ð
 ˜x¨¨X©Ñ7Ñ8ð9ð  ð9ð 
÷9ð 9r/   ru   c                   óP   • \ rS rSrSrSS jrS\SS4S jrS\SS4S	 jr	SS
 jr
Srg)ÚFirstOneWinsi  zL
An L{IResolutionReceiver} which fires a L{Deferred} with its first result.
c                 ó   • Xl         SU l        g)zX
@param deferred: The L{Deferred} to fire when the first resolution
    result arrives.
FN)Ú	_deferredÚ	_resolved)r+   Údeferreds     r,   r-   ÚFirstOneWins.__init__  s   € ð
 "ŒØˆ�r/   ro   r0   Nc                 ó   • Xl         g)zk
See L{IResolutionReceiver.resolutionBegan}

@param resolution: See L{IResolutionReceiver.resolutionBegan}
N)Ú_resolution)r+   ro   s     r,   rk   ÚFirstOneWins.resolutionBegan  s
   € ð &Õr/   r   c                 ó®   • U R                   (       a  gSU l         [        U[        5      (       d   eU R                  R	                  UR
                  5        g)zh
See L{IResolutionReceiver.addressResolved}

@param address: See L{IResolutionReceiver.addressResolved}
NT)r”   Ú
isinstancer   r“   ÚcallbackÚhost)r+   r   s     r,   r[   ÚFirstOneWins.addressResolved%  s@   € ð �>�>ØØˆŒô ˜'¤;×/Ñ/Ð/Ð/Ø�‰×Ñ §¡Õ-r/   c                 ó˜   • U R                   (       a  gU R                  R                  [        U R                  R
                  5      5        g)z/
See L{IResolutionReceiver.resolutionComplete}
N)r”   r“   Úerrbackr   r˜   r(   r4   s    r,   r]   ÚFirstOneWins.resolutionComplete3  s1   € ð �>�>ØØ�‰×Ñœ~¨d×.>Ñ.>×.CÑ.CÓDÕEr/   )r“   r˜   r”   )r•   úDeferred[str])r0   N)r7   r8   r9   r:   r;   r-   r   rk   r   r[   r]   r=   r>   r/   r,   r‘   r‘     s8   † ñôð&¨/ð &¸dô &ð. xð .°Dô .÷Fr/   r‘   c                   óF   • \ rS rSrSrS\4S jrSS\S\\	   SS4S	 jjr
S
rg)ÚComplexResolverSimplifieri<  z=
A converter from L{IHostnameResolver} to L{IResolverSimple}
ÚnameResolverc                 ó   • Xl         g)z|
Create a L{ComplexResolverSimplifier} with an L{IHostnameResolver}.

@param nameResolver: The L{IHostnameResolver} to use.
N©Ú_nameResolver)r+   r¥   s     r,   r-   Ú"ComplexResolverSimplifier.__init__B  s
   € ð *Õr/   r(   Útimeoutsr0   r¢   c                 ór   • [        5       nU R                  R                  [        U5      US[        /5        U$ )z¿
See L{IResolverSimple.getHostByName}

@param name: see L{IResolverSimple.getHostByName}

@param timeouts: see L{IResolverSimple.getHostByName}

@return: see L{IResolverSimple.getHostByName}
r   )r   r¨   rp   r‘   r   )r+   r(   rª   rW   s       r,   rŒ   Ú'ComplexResolverSimplifier.getHostByNameJ  s1   € ô #+£*ˆØ×Ñ×*Ñ*¬<¸Ó+?ÀÀqÌ;È-ÔXØˆr/   r§   N)r>   )r7   r8   r9   r:   r;   r   r-   r<   r   rs   rŒ   r=   r>   r/   r,   r¤   r¤   <  s7   † ñð*Ð%6ô *ñ #ð °¸#±ð È÷ ð r/   r¤   N)=r;   Úsocketr   r   r   r   r   r   r	   r
   r   Útypingr   r   r   r   r   r   r   r   r   Úzope.interfacer   Útwisted.internet._idnar   Útwisted.internet.addressr   r   Útwisted.internet.deferr   Útwisted.internet.errorr   Útwisted.internet.interfacesr   r   r   r   r   r    Útwisted.internet.threadsr!   Útwisted.loggerr"   Útwisted.python.compatr#   Útwisted.python.threadpoolr$   r&   rh   rg   rf   rZ   ri   r\   rs   r<   rj   rB   ru   r‘   r¤   r>   r/   r,   Ú<module>r¹      s¯  ðñ
÷
÷ 
õ 
÷
÷ 
õ 
õ 'å -ß =Ý +Ý 1÷÷ õ 7Ý !Ý .æÝ4ñ ˆ_Ó÷$ð $ó ð$ñ  �+˜{Ð+Ó,€ñ ˆ{ˆmÓ˜gÙˆ{ˆmÓ˜hØˆ)ð€
ð ˆ[Øˆkð€	ð ØñÐ ð �Ø�ð€ð Ø	ØØØØØˆe�C˜�H‰o˜u S¨#¨s°CÐ%7Ñ8Ð8Ñ9ð		;ññÐ ñ ÐÓ÷Tð Tó  ðTñn ÐÓ÷Fð Fó  ðFñR Ð Ó!÷)Fð )Fó "ð)FñX ˆ_Ó÷ð ó ñr/   