Ë
    ojXD  ã                   ó   — d Z ddlZddlZddlmZ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  G d	„ d
ej                   «      Z G d„ d«      Z G d„ de	j&                  «      Z G d„ dej*                  «      Z G d„ dej*                  «      Zy)z_
Tests for L{twisted.protocol.socks}, an implementation of the SOCKSv4 and
SOCKSv4a protocols.
é    N)ÚaddressÚdefer)ÚDNSLookupError)Úsocks)Ú	iterbytes)Úproto_helpers)Úunittestc                   ó&   — e Zd ZdZdZd„ Zd„ Zd„ Zy)ÚStringTCPTransportFNc                 ó   — | j                   S )N)Úpeer©Úselfs    ú9/usr/lib/python3/dist-packages/twisted/test/test_socks.pyÚgetPeerzStringTCPTransport.getPeer   s   € Ø�y‰yÐó    c                 ó0   — t        j                  ddd«      S )NÚTCPz2.3.4.5é*   )r   ÚIPv4Addressr   s    r   ÚgetHostzStringTCPTransport.getHost   s   € Ü×"Ñ" 5¨)°RÓ8Ð8r   c                 ó   — d| _         y )NT)ÚstringTCPTransport_closingr   s    r   ÚloseConnectionz!StringTCPTransport.loseConnection   s
   € Ø*.ˆÕ'r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   © r   r   r   r      s   „ Ø!&ÐØ€Dòò9ó/r   r   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚFakeResolverReactorzP
    Bare-bones reactor with deterministic behavior for the resolve method.
    c                 ó   — || _         y)zÃ
        @type names: L{dict} containing L{str} keys and L{str} values.
        @param names: A hostname to IP address mapping. The IP addresses are
            stringified dotted quads.
        N)Únames)r   r"   s     r   Ú__init__zFakeResolverReactor.__init__'   s   € ð ˆ�
r   c           	      óÆ   — 	 t        j                  | j                  |   «      S # t        $ r3 t        j                  t        d|j                  d«      z   «      «      cY S w xY w)zQ
        Resolve a hostname by looking it up in the C{names} dictionary.
        z"FakeResolverReactor couldn't find zutf-8)r   Úsucceedr"   ÚKeyErrorÚfailr   Údecode)r   Úhostnames     r   ÚresolvezFakeResolverReactor.resolve/   sX   € ð	Ü—=‘= §¡¨HÑ!5Ó6Ð6øÜò 	Ü—:‘:ÜØ8¸8¿?¹?È7Ó;SÑSóóò ð	ús   ‚!$ ¤9A ÁA N)r   r   r   Ú__doc__r#   r*   r   r   r   r    r    "   s   „ ñòór   r    c                   ó    — e Zd ZdZdZd„ Zd„ Zy)ÚSOCKSv4DriverNc                 óÎ   —  ||Ž }t        «       |_        t        j                  d||«      |j                  _        |j                  «        || _        t        j                  |«      S )Nr   )	r   Ú	transportr   r   r   ÚconnectionMadeÚdriver_outgoingr   r%   )r   ÚhostÚportÚklassÚargsÚprotos         r   ÚconnectClasszSOCKSv4Driver.connectClassD   sS   € á�t�ˆÜ,Ó.ˆŒÜ&×2Ñ2°5¸$ÀÓEˆ�‰ÔØ×ÑÔØ$ˆÔÜ�}‰}˜UÓ#Ð#r   c                 óV   —  ||Ž }|| _         |dk(  rd}t        j                  d|f«      S )Nr   éÒ  ú6.7.8.9)Údriver_listenr   r%   )r   r3   r4   r5   Úfactorys        r   ÚlistenClasszSOCKSv4Driver.listenClassM   s3   € á˜�,ˆØ$ˆÔØ�1Š9ØˆDÜ�}‰}˜i¨Ð.Ó/Ð/r   )r   r   r   r1   r;   r7   r=   r   r   r   r-   r-   =   s   „ à€Oð €Mò$ó0r   r-   c                   ó@   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)ÚConnectTestszV
    Tests for SOCKS and SOCKSv4a connect requests using the L{SOCKSv4} protocol.
    c                 óÀ   — t        «       | _        t        «       | j                  _        | j                  j	                  «        t        ddi«      | j                  _        y ©Ns	   localhostú	127.0.0.1©r-   Úsockr   r/   r0   r    Úreactorr   s    r   ÚsetUpzConnectTests.setUp[   ó@   € Ü!“OˆŒ	Ü0Ó2ˆ�	‰	ÔØ�	‰	× Ñ Ô"Ü/°¸{Ð0KÓLˆ�	‰	Õr   c                 ó‚   — | j                   j                  }|�'| j                  |j                  j                  d«       y y )Nz-Outgoing SOCKS connections need to be closed.)rD   r1   Ú
assertTruer/   r   )r   Úoutgoings     r   ÚtearDownzConnectTests.tearDowna   s:   € Ø—9‘9×,Ñ,ˆØÐØ�O‰OØ×"Ñ"×=Ñ=Ø?õð  r   c           	      óì  — | j                   j                  t        j                  dddd«      t	        j
                  d«      z   dz   dz   «       | j                   j                  j                  «       }| j                   j                  j                  «        | j                  |t        j                  ddd	d«      t	        j
                  d«      z   «       | j                  | j                   j                  j                  «       | j                  | j                   j                  «       | j                   j                  d
«       | j                  | j                   j                  j                  j                  «       d
«       | j                   j                  j                  d«       | j                  | j                   j                  j                  «       d«       | j                   j                  d«       y )Nú!BBHé   é   é"   ú1.2.3.4ó   fooBARó    r   éZ   ó   hello, worldó   hi thereúfake reason)rD   ÚdataReceivedÚstructÚpackÚsocketÚ	inet_atonr/   ÚvalueÚclearÚassertEqualÚassertFalser   ÚassertIsNotNoner1   ÚconnectionLost)r   Úsents     r   Útest_simplezConnectTests.test_simplei   sq  € Ø�	‰	×ÑÜ�K‰K˜  1 bÓ)Ü×Ñ˜yÓ)ñ*àñð ñô	
ð �y‰y×"Ñ"×(Ñ(Ó*ˆØ�	‰	×Ñ×!Ñ!Ô#Ø×ÑØ”&—+‘+˜f a¨¨RÓ0´6×3CÑ3CÀIÓ3NÑNô	
ð 	×Ñ˜Ÿ™×,Ñ,×GÑGÔHØ×Ñ˜TŸY™Y×6Ñ6Ô7ð 	�	‰	×Ñ˜Ô/Ø×Ñ˜Ÿ™×2Ñ2×<Ñ<×BÑBÓDÀoÔVð 	�	‰	×!Ñ!×.Ñ.¨{Ô;Ø×Ñ˜Ÿ™×,Ñ,×2Ñ2Ó4°kÔBà�	‰	× Ñ  Õ/r   c           	      ó  — t        j                  dddd«      t        j                  d«      z   dz   dz   }t	        |«      D ]  }| j
                  j                  |«       Œ | j
                  j                  j                  «       }| j
                  j                  j                  «        | j                  |t        j                  ddd	d«      t        j                  d
«      z   «       | j                  | j
                  j                  j                  «       | j                  | j
                  j                  «       | j
                  j                  d«       | j                  | j
                  j                  j                  j                  «       d«       | j
                  j                  j                  d«       | j                  | j
                  j                  j                  «       d«       | j
                  j                  d«       y)áu  
        If the destination IP address has zeros for the first three octets and
        non-zero for the fourth octet, the client is attempting a v4a
        connection.  A hostname is specified after the user ID string and the
        server connects to the address that hostname resolves to.

        @see: U{http://en.wikipedia.org/wiki/SOCKS#SOCKS_4a_protocol}
        rM   rN   rO   rP   ú0.0.0.1ó   fooBAZ ó
   localhost r   rT   rB   rU   rV   rW   N)rY   rZ   r[   r\   r   rD   rX   r/   r]   r^   r_   r`   r   ra   r1   rb   ©r   ÚclientRequestÚbyterc   s       r   Ú test_socks4aSuccessfulResolutionz-ConnectTests.test_socks4aSuccessfulResolution‚   s�  € ô �K‰K˜  1 bÓ)Ü×Ñ˜yÓ)ñ*àñð ñð 	ô ˜mÓ,ò 	)ˆDØ�I‰I×"Ñ" 4Õ(ð	)ð �y‰y×"Ñ"×(Ñ(Ó*ˆØ�	‰	×Ñ×!Ñ!Ô#ð 	×ÑØ”&—+‘+˜f a¨¨RÓ0´6×3CÑ3CÀKÓ3PÑPô	
ð 	×Ñ˜Ÿ™×,Ñ,×GÑGÔHØ×Ñ˜TŸY™Y×6Ñ6Ô7ð 	�	‰	×Ñ˜Ô/Ø×Ñ˜Ÿ™×2Ñ2×<Ñ<×BÑBÓDÀoÔVð 	�	‰	×!Ñ!×.Ñ.¨{Ô;Ø×Ñ˜Ÿ™×,Ñ,×2Ñ2Ó4°kÔBà�	‰	× Ñ  Õ/r   c           	      ó.  — t        j                  dddd«      t        j                  d«      z   dz   dz   }t	        |«      D ]  }| j
                  j                  |«       Œ | j
                  j                  j                  «       }| j                  |t        j                  ddd	d«      t        j                  d
«      z   «       | j                  | j
                  j                  j                  «       | j                  | j
                  j                  «       y)ú‹
        Failed hostname resolution on a SOCKSv4a packet results in a 91 error
        response and the connection getting closed.
        rM   rN   rO   rP   rg   rh   ó   failinghost r   é[   ú0.0.0.0N©rY   rZ   r[   r\   r   rD   rX   r/   r]   r_   rI   r   ÚassertIsNoner1   rj   s       r   Útest_socks4aFailedResolutionz)ConnectTests.test_socks4aFailedResolution°   óê   € ô �K‰K˜  1 bÓ)Ü×Ñ˜yÓ)ñ*àñð ñð 	ô ˜mÓ,ò 	)ˆDØ�I‰I×"Ñ" 4Õ(ð	)ð �y‰y×"Ñ"×(Ñ(Ó*ˆØ×ÑØ”&—+‘+˜f a¨¨QÓ/´&×2BÑ2BÀ9Ó2MÑMô	
ð
 	�‰˜Ÿ	™	×+Ñ+×FÑFÔGØ×Ñ˜$Ÿ)™)×3Ñ3Õ4r   c           	      ó*  — d„ | j                   _        | j                   j                  t        j                  dddd«      t        j                  d«      z   dz   dz   «       | j                  | j                   j                  j                  «       t        j                  dd	d
d	«      t        j                  d«      z   «       | j                  | j                   j                  j                  «       | j                  | j                   j                  «       y )Nc                  ó   — y©Nr   r   ©ÚcodeÚserverr3   Úusers       r   ú<lambda>z0ConnectTests.test_accessDenied.<locals>.<lambda>Î   ó   � r   rM   rN   rO   é’  ú10.2.3.4rR   rS   r   rq   rr   )rD   Ú	authorizerX   rY   rZ   r[   r\   r_   r/   r]   rI   r   rt   r1   r   s    r   Útest_accessDeniedzConnectTests.test_accessDeniedÍ   sÕ   € Ù@ˆ�	‰	ÔØ�	‰	×ÑÜ�K‰K˜  1 dÓ+Ü×Ñ˜zÓ*ñ+àñð ñô	
ð 	×ÑØ�I‰I×Ñ×%Ñ%Ó'Ü�K‰K˜  2 qÓ)¬F×,<Ñ,<¸YÓ,GÑGô	
ð 	�‰˜Ÿ	™	×+Ñ+×FÑFÔGØ×Ñ˜$Ÿ)™)×3Ñ3Õ4r   c                 ó>  — | j                   j                  t        j                  dddd«      t	        j
                  d«      z   dz   dz   «       | j                   j                  j                  «        | j                   j                  d«       | j                  | j                   j                  j                  j                  «       d«       | j                   j                  j                  j                  «        | j                   j                  j                  d	«       y ©
NrM   rN   rO   rP   rQ   rR   rS   rU   rW   )rD   rX   rY   rZ   r[   r\   r/   r^   r_   r1   r]   r   rb   r   s    r   Útest_eofRemotezConnectTests.test_eofRemoteÜ   sÖ   € Ø�	‰	×ÑÜ�K‰K˜  1 bÓ)Ü×Ñ˜yÓ)ñ*àñð ñô	
ð 	�	‰	×Ñ×!Ñ!Ô#ð 	�	‰	×Ñ˜Ô/Ø×Ñ˜Ÿ™×2Ñ2×<Ñ<×BÑBÓDÀoÔVð 	�	‰	×!Ñ!×+Ñ+×:Ñ:Ô<Ø�	‰	×!Ñ!×0Ñ0°Õ?r   c                 óÎ  — | j                   j                  t        j                  dddd«      t	        j
                  d«      z   dz   dz   «       | j                   j                  j                  «        | j                   j                  d«       | j                  | j                   j                  j                  j                  «       d«       | j                   j                  d	«       y r…   )rD   rX   rY   rZ   r[   r\   r/   r^   r_   r1   r]   rb   r   s    r   Útest_eofLocalzConnectTests.test_eofLocalí   s´   € Ø�	‰	×ÑÜ�K‰K˜  1 bÓ)Ü×Ñ˜yÓ)ñ*àñð ñô	
ð 	�	‰	×Ñ×!Ñ!Ô#ð 	�	‰	×Ñ˜Ô/Ø×Ñ˜Ÿ™×2Ñ2×<Ñ<×BÑBÓDÀoÔVð 	�	‰	× Ñ  Õ/r   N)r   r   r   r+   rF   rK   rd   rm   ru   rƒ   r†   rˆ   r   r   r   r?   r?   V   s2   „ ñòMòò0ò2,0ò\5ò:5ò@ó"0r   r?   c                   ó@   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)Ú	BindTestszS
    Tests for SOCKS and SOCKSv4a bind requests using the L{SOCKSv4} protocol.
    c                 óÀ   — t        «       | _        t        «       | j                  _        | j                  j	                  «        t        ddi«      | j                  _        y rA   rC   r   s    r   rF   zBindTests.setUp  rG   r   c           	      ó°  — | j                   j                  t        j                  dddd«      t	        j
                  d«      z   dz   dz   «       | j                   j                  j                  «       }| j                   j                  j                  «        | j                  |t        j                  ddd	d
«      t	        j
                  d«      z   «       | j                  | j                   j                  j                  «       | j                  | j                   j                  «       | j                   j                  j                  d«      }| j                  |«       t        «       |_        |j!                  «        | j                   j                  j                  «       }| j                   j                  j                  «        | j                  |t        j                  ddd	d«      t	        j
                  d«      z   «       | j                  | j                   j                  j                  «       | j                   j                  d«       | j                  |j                  j                  «       d«       |j                  d«       | j                  | j                   j                  j                  «       d«       | j                   j#                  d«       y )NrM   rN   é   rP   rQ   rR   rS   r   rT   r9   r:   ©rQ   éá  rr   rU   rV   rW   )rD   rX   rY   rZ   r[   r\   r/   r]   r^   r_   r`   r   ra   r;   ÚbuildProtocolr   r0   rb   ©r   rc   Úincomings      r   rd   zBindTests.test_simple  s!  € Ø�	‰	×ÑÜ�K‰K˜  1 bÓ)Ü×Ñ˜yÓ)ñ*àñð ñô	
ð �y‰y×"Ñ"×(Ñ(Ó*ˆØ�	‰	×Ñ×!Ñ!Ô#Ø×ÑØ”&—+‘+˜f a¨¨TÓ2´V×5EÑ5EÀiÓ5PÑPô	
ð 	×Ñ˜Ÿ™×,Ñ,×GÑGÔHØ×Ñ˜TŸY™Y×4Ñ4Ô5ð —9‘9×*Ñ*×8Ñ8Ð9JÓKˆØ×Ñ˜XÔ&Ü/Ó1ˆÔØ×ÑÔ!ð �y‰y×"Ñ"×(Ñ(Ó*ˆØ�	‰	×Ñ×!Ñ!Ô#Ø×ÑØ”&—+‘+˜f a¨¨QÓ/´&×2BÑ2BÀ9Ó2MÑMô	
ð 	×Ñ˜Ÿ™×,Ñ,×GÑGÔHð 	�	‰	×Ñ˜Ô/Ø×Ñ˜×+Ñ+×1Ñ1Ó3°_ÔEð 	×Ñ˜kÔ*Ø×Ñ˜Ÿ™×,Ñ,×2Ñ2Ó4°kÔBà�	‰	× Ñ  Õ/r   c           	      óÖ  — t        j                  dddd«      t        j                  d«      z   dz   dz   }t	        |«      D ]  }| j
                  j                  |«       Œ | j
                  j                  j                  «       }| j
                  j                  j                  «        | j                  |t        j                  ddd	d
«      t        j                  d«      z   «       | j                  | j
                  j                  j                  «       | j                  | j
                  j                  «       | j
                  j                  j                  d«      }| j                  |«       t!        «       |_        |j#                  «        | j
                  j                  j                  «       }| j
                  j                  j                  «        | j                  |t        j                  ddd	d«      t        j                  d«      z   «       | j%                  | j
                  j                  j                  d«       | j
                  j                  d«       | j                  |j                  j                  «       d«       |j                  d«       | j                  | j
                  j                  j                  «       d«       | j
                  j'                  d«       y)rf   rM   rN   r�   rP   rg   rh   ri   r   rT   r9   r:   )rB   r�   rr   NrV   rW   )rY   rZ   r[   r\   r   rD   rX   r/   r]   r^   r_   r`   r   ra   r;   r�   r   r0   ÚassertIsNotrb   )r   rk   rl   rc   r’   s        r   Útest_socks4azBindTests.test_socks4a7  sB  € ô �K‰K˜  1 bÓ)Ü×Ñ˜yÓ)ñ*àñð ñð 	ô ˜mÓ,ò 	)ˆDØ�I‰I×"Ñ" 4Õ(ð	)ð �y‰y×"Ñ"×(Ñ(Ó*ˆØ�	‰	×Ñ×!Ñ!Ô#ð 	×ÑØ”&—+‘+˜f a¨¨TÓ2´V×5EÑ5EÀiÓ5PÑPô	
ð 	×Ñ˜Ÿ™×,Ñ,×GÑGÔHØ×Ñ˜TŸY™Y×4Ñ4Ô5ð —9‘9×*Ñ*×8Ñ8Ð9LÓMˆØ×Ñ˜XÔ&Ü/Ó1ˆÔØ×ÑÔ!ð �y‰y×"Ñ"×(Ñ(Ó*ˆØ�	‰	×Ñ×!Ñ!Ô#Ø×ÑØ”&—+‘+˜f a¨¨QÓ/´&×2BÑ2BÀ9Ó2MÑMô	
ð 	×Ñ˜Ÿ™×,Ñ,×GÑGÈÔNð 	�	‰	×Ñ˜{Ô+Ø×Ñ˜×+Ñ+×1Ñ1Ó3°[ÔAð 	×Ñ˜kÔ*Ø×Ñ˜Ÿ™×,Ñ,×2Ñ2Ó4°kÔBà�	‰	× Ñ  Õ/r   c           	      ó.  — t        j                  dddd«      t        j                  d«      z   dz   dz   }t	        |«      D ]  }| j
                  j                  |«       Œ | j
                  j                  j                  «       }| j                  |t        j                  ddd	d«      t        j                  d
«      z   «       | j                  | j
                  j                  j                  «       | j                  | j
                  j                  «       y)ro   rM   rN   r�   rP   rg   rh   rp   r   rq   rr   Nrs   rj   s       r   ru   z&BindTests.test_socks4aFailedResolutionr  rv   r   c           	      ó*  — d„ | j                   _        | j                   j                  t        j                  dddd«      t        j                  d«      z   dz   dz   «       | j                  | j                   j                  j                  «       t        j                  dd	d
d	«      t        j                  d«      z   «       | j                  | j                   j                  j                  «       | j                  | j                   j                  «       y )Nc                  ó   — yry   r   rz   s       r   r~   z-BindTests.test_accessDenied.<locals>.<lambda>�  r   r   rM   rN   r�   r€   r�   rR   rS   r   rq   rr   )rD   r‚   rX   rY   rZ   r[   r\   r_   r/   r]   rI   r   rt   r;   r   s    r   rƒ   zBindTests.test_accessDenied�  sÕ   € Ù@ˆ�	‰	ÔØ�	‰	×ÑÜ�K‰K˜  1 dÓ+Ü×Ñ˜zÓ*ñ+àñð ñô	
ð 	×ÑØ�I‰I×Ñ×%Ñ%Ó'Ü�K‰K˜  2 qÓ)¬F×,<Ñ,<¸YÓ,GÑGô	
ð 	�‰˜Ÿ	™	×+Ñ+×FÑFÔGØ×Ñ˜$Ÿ)™)×1Ñ1Õ2r   c           	      ó"  — | j                   j                  t        j                  dddd«      t	        j
                  d«      z   dz   dz   «       | j                   j                  j                  «       }| j                   j                  j                  «        | j                   j                  j                  d«      }| j                  |«       t        «       |_        |j                  «        | j                   j                  j                  «       }| j                   j                  j                  «        | j                  |t        j                  dd	d
d	«      t	        j
                  d«      z   «       | j                  | j                   j                  j                   «       | j                   j                  d«       | j                  |j                  j                  «       d«       |j                  j#                  «        |j%                  d«       y ©NrM   rN   r�   rP   rQ   rR   rS   rŽ   r   rT   rr   rU   rW   )rD   rX   rY   rZ   r[   r\   r/   r]   r^   r;   r�   ra   r   r0   r_   r`   r   r   rb   r‘   s      r   r†   zBindTests.test_eofRemotež  s”  € Ø�	‰	×ÑÜ�K‰K˜  1 bÓ)Ü×Ñ˜yÓ)ñ*àñð ñô	
ð �y‰y×"Ñ"×(Ñ(Ó*ˆØ�	‰	×Ñ×!Ñ!Ô#ð —9‘9×*Ñ*×8Ñ8Ð9JÓKˆØ×Ñ˜XÔ&Ü/Ó1ˆÔØ×ÑÔ!ð �y‰y×"Ñ"×(Ñ(Ó*ˆØ�	‰	×Ñ×!Ñ!Ô#Ø×ÑØ”&—+‘+˜f a¨¨QÓ/´&×2BÑ2BÀ9Ó2MÑMô	
ð 	×Ñ˜Ÿ™×,Ñ,×GÑGÔHð 	�	‰	×Ñ˜Ô/Ø×Ñ˜×+Ñ+×1Ñ1Ó3°_ÔEð 	×Ñ×)Ñ)Ô+Ø×Ñ Õ.r   c           	      ó  — | j                   j                  t        j                  dddd«      t	        j
                  d«      z   dz   dz   «       | j                   j                  j                  «       }| j                   j                  j                  «        | j                   j                  j                  d«      }| j                  |«       t        «       |_        |j                  «        | j                   j                  j                  «       }| j                   j                  j                  «        | j                  |t        j                  dd	d
d	«      t	        j
                  d«      z   «       | j                  | j                   j                  j                   «       | j                   j                  d«       | j                  |j                  j                  «       d«       | j                   j#                  d«       y rš   )rD   rX   rY   rZ   r[   r\   r/   r]   r^   r;   r�   ra   r   r0   r_   r`   r   rb   r‘   s      r   rˆ   zBindTests.test_eofLocal¾  s†  € Ø�	‰	×ÑÜ�K‰K˜  1 bÓ)Ü×Ñ˜yÓ)ñ*àñð ñô	
ð �y‰y×"Ñ"×(Ñ(Ó*ˆØ�	‰	×Ñ×!Ñ!Ô#ð —9‘9×*Ñ*×8Ñ8Ð9JÓKˆØ×Ñ˜XÔ&Ü/Ó1ˆÔØ×ÑÔ!ð �y‰y×"Ñ"×(Ñ(Ó*ˆØ�	‰	×Ñ×!Ñ!Ô#Ø×ÑØ”&—+‘+˜f a¨¨QÓ/´&×2BÑ2BÀ9Ó2MÑMô	
ð 	×Ñ˜Ÿ™×,Ñ,×GÑGÔHð 	�	‰	×Ñ˜Ô/Ø×Ñ˜×+Ñ+×1Ñ1Ó3°_ÔEð 	�	‰	× Ñ  Õ/r   c           	      ó  — | j                   j                  t        j                  dddd«      t	        j
                  d«      z   dz   dz   «       | j                   j                  j                  «       }| j                   j                  j                  «        | j                   j                  j                  d«      }| j                  |«       | j                   j                  j                  «       }| j                   j                  j                  «        | j                  |t        j                  dd	d
d	«      t	        j
                  d«      z   «       | j                  | j                   j                  j                  «       y )NrM   rN   r�   rP   rQ   rR   rS   )z1.6.6.6iš  r   rq   rr   )rD   rX   rY   rZ   r[   r\   r/   r]   r^   r;   r�   rt   r_   rI   r   r‘   s      r   Útest_badSourcezBindTests.test_badSourceÝ  s&  € Ø�	‰	×ÑÜ�K‰K˜  1 bÓ)Ü×Ñ˜yÓ)ñ*àñð ñô	
ð �y‰y×"Ñ"×(Ñ(Ó*ˆØ�	‰	×Ñ×!Ñ!Ô#ð —9‘9×*Ñ*×8Ñ8Ð9IÓJˆØ×Ñ˜(Ô#ð �y‰y×"Ñ"×(Ñ(Ó*ˆØ�	‰	×Ñ×!Ñ!Ô#Ø×ÑØ”&—+‘+˜f a¨¨QÓ/´&×2BÑ2BÀ9Ó2MÑMô	
ð 	�‰˜Ÿ	™	×+Ñ+×FÑFÕGr   N)r   r   r   r+   rF   rd   r•   ru   rƒ   r†   rˆ   r�   r   r   r   rŠ   rŠ   þ   s4   „ ñòMò%0òN90òv5ò:3ò/ò@0ó>Hr   rŠ   )r+   r[   rY   Útwisted.internetr   r   Útwisted.internet.errorr   Útwisted.protocolsr   Útwisted.python.compatr   Útwisted.testr   Útwisted.trialr	   ÚStringTransportr   r    ÚSOCKSv4r-   ÚTestCaser?   rŠ   r   r   r   ú<module>r§      s{   ðñó
 Û ç +Ý 1Ý #Ý +Ý &Ý "ô/˜×6Ñ6ô /÷ñ ô60�E—M‘Mô 0ô2e0�8×$Ñ$ô e0ôPtH�×!Ñ!õ tHr   