§
    Ètºf·h  ã                   ó<  — d 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ej        ¦  «         G d	„ d
¦  «        ¦   «         Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        ZdS )z$
Tests for L{twisted.conch.telnet}.
é    )Úimplementer)ÚverifyObject)Útelnet)Údefer)Ú	iterbytes)Úproto_helpers)Úunittestc                   ó^   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ ZdS )ÚTestProtocol© c                 óh   — d| _         g | _        g | _        g | _        g | _        g | _        g | _        d S )Nó    )ÚdataÚsubcmdÚcallsÚenabledLocalÚenabledRemoteÚdisabledLocalÚdisabledRemote©Úselfs    ú]/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/conch/test/test_telnet.pyÚ__init__zTestProtocol.__init__   s=   € ØˆŒ	ØˆŒØˆŒ
àˆÔØˆÔØˆÔØ ˆÔÐÐr   c                 ó²   ‡ — i x}|_         ‰ j        |d<   |j                             ¦   «         x}|_        dD ]}|fˆ fd„	|t	          t
          |¦  «        <   Œ d S )Nó   )
ÚEORÚNOPÚDMÚBRKÚIPÚAOÚAYTÚECÚELÚGAc                 ó8   •— ‰j                              |¦  «        S ©N)r   Úappend)ÚargÚcmdr   s     €r   ú<lambda>z-TestProtocol.makeConnection.<locals>.<lambda>)   s   ø€ ¸4¼:×;LÒ;LÈSÑ;QÔ;Q€ r   )ÚnegotiationMapÚneg_TEST_COMMANDÚ
commandMapÚcopyÚgetattrr   )r   Ú	transportÚdr*   s   `   r   ÚmakeConnectionzTestProtocol.makeConnection#   s{   ø€ Ø')Ð)ˆˆIÔ$ØÔ*ˆˆ'‰
à#,Ô#7×#<Ò#<Ñ#>Ô#>Ð>ˆˆIÔ ØSð 	Rð 	RˆCØ69Ð&QÐ&QÐ&QÐ&QÐ&QˆA�g•f˜cÑ"Ô"Ñ#Ð#ð	Rð 	Rr   c                 ó&   — | xj         |z  c_         d S r'   )r   ©r   r   s     r   ÚdataReceivedzTestProtocol.dataReceived+   s   € Øˆ	Œ	�TÑˆ	Œ	ˆ	ˆ	r   c                 ó   — d S r'   r   )r   Úreasons     r   ÚconnectionLostzTestProtocol.connectionLost.   s   € Øˆr   c                 ó   — || _         d S r'   )r   )r   Úpayloads     r   r-   zTestProtocol.neg_TEST_COMMAND1   s   € ØˆŒˆˆr   c                 óP   — || j         v r| j                             |¦  «         dS dS ©NTF)ÚlocalEnableabler   r(   ©r   Úoptions     r   ÚenableLocalzTestProtocol.enableLocal4   s1   € Ø�TÔ)Ð)Ð)ØÔ×$Ò$ VÑ,Ô,Ð,Ø�4Øˆur   c                 ó:   — | j                              |¦  «         d S r'   )r   r(   r?   s     r   ÚdisableLocalzTestProtocol.disableLocal:   s   € ØÔ×!Ò! &Ñ)Ô)Ð)Ð)Ð)r   c                 óP   — || j         v r| j                             |¦  «         dS dS r=   )ÚremoteEnableabler   r(   r?   s     r   ÚenableRemotezTestProtocol.enableRemote=   s1   € Ø�TÔ*Ð*Ð*ØÔ×%Ò% fÑ-Ô-Ð-Ø�4Øˆur   c                 ó:   — | j                              |¦  «         d S r'   )r   r(   r?   s     r   ÚdisableRemotezTestProtocol.disableRemoteC   s   € ØÔ×"Ò" 6Ñ*Ô*Ð*Ð*Ð*r   c                 ó   — d S r'   r   r   s    r   ÚconnectionMadezTestProtocol.connectionMadeF   ó   € àˆr   c                 ó   — d S r'   r   )r   ÚcommandÚarguments      r   ÚunhandledCommandzTestProtocol.unhandledCommandJ   rK   r   c                 ó   — d S r'   r   ©r   rM   r   s      r   ÚunhandledSubnegotiationz$TestProtocol.unhandledSubnegotiationN   rK   r   N)Ú__name__Ú
__module__Ú__qualname__r>   rE   r   r3   r6   r9   r-   rA   rC   rF   rH   rJ   rO   rR   r   r   r   r   r      sÖ   € € € € € à€OØÐð!ð !ð !ðRð Rð Rðð ð ðð ð ðð ð ðð ð ð*ð *ð *ðð ð ð+ð +ð +ðð ð ðð ð ðð ð ð ð r   r   c                   ó   — e Zd Zd„ ZdS )ÚInterfacesTestsc                 ó`   — t          j        ¦   «         }t          t           j        |¦  «         dS )zO
        L{telnet.TelnetProtocol} implements L{telnet.ITelnetProtocol}
        N)r   ÚTelnetProtocolr   ÚITelnetProtocol)r   Úps     r   Útest_interfacezInterfacesTests.test_interfaceT   s+   € õ Ô!Ñ#Ô#ˆÝ•VÔ+¨QÑ/Ô/Ð/Ð/Ð/r   N)rS   rT   rU   r\   r   r   r   rW   rW   S   s#   € € € € € ð0ð 0ð 0ð 0ð 0r   rW   c                   óú   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zg g g g fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'S )(ÚTelnetTransportTestsz.
    Tests for L{telnet.TelnetTransport}.
    c                 ó°   — t          j        t          ¦  «        | _        t	          j        ¦   «         | _        | j                             | j        ¦  «         d S r'   )r   ÚTelnetTransportr   r[   r   ÚStringTransportÚtr3   r   s    r   ÚsetUpzTelnetTransportTests.setUpa   sB   € ÝÔ'­Ñ5Ô5ˆŒÝÔ.Ñ0Ô0ˆŒØŒ×Ò˜dœfÑ%Ô%Ð%Ð%Ð%r   c                 óÀ   — | j         j        }g d¢}|D ]}| j                              |¦  «         Œ|                      |j        d                     |¦  «        ¦  «         d S )N)s   here are some bytes la la las   some more arrive heres   lots of bytes to play withs   la la las   ta de das   dumr   )r[   Úprotocolr6   ÚassertEqualr   Újoin©r   ÚhÚLÚbs       r   ÚtestRegularBytesz%TelnetTransportTests.testRegularBytesf   sp   € ð ŒFŒOˆð
ð 
ð 
ˆð ð 	#ð 	#ˆAØŒF×Ò Ñ"Ô"Ð"Ð"à×Ò˜œ §¢¨!¡¤Ñ-Ô-Ð-Ð-Ð-r   c                 ó4  — | j         j        }g d¢}|D ]}| j                              |¦  «         Œ|                      |j        |d         d d…         dz   |d         d d…         z   dz   |d         d d…         z   dz   |d         d d…         z   dz   ¦  «         d S )	N)s   here is the first line
s   here is the second line s   here is the third line
s   here is the last line r   éþÿÿÿó   
é   ó   é   é   )r[   re   r6   rf   r   rh   s       r   ÚtestNewlineHandlingz(TelnetTransportTests.testNewlineHandlingy   sä   € ð ŒFŒOˆð
ð 
ð 
ˆð ð 	#ð 	#ˆAØŒF×Ò Ñ"Ô"Ð"Ð"à×ÒØŒFØˆaŒD��"�ŒIØñà�Œd�3�B�3Œiñð ñð �Œd�3�B�3Œiñ	ð
 ñð �Œd�3�B�3Œiñð ññ
	
ô 
	
ð 
	
ð 
	
ð 
	
r   c                 óè   — | j         j        }g d¢}|D ]}| j                              |¦  «         Œ|                      |j        d                     |¦  «                             dd¦  «        ¦  «         d S )N)s*   here are some bytesÿÿ with an embedded IACs&   and here is a test of a border escapeÿs   ÿ did you get that IAC?r   s   ÿÿó   ÿ)r[   re   r6   rf   r   rg   Úreplacerh   s       r   ÚtestIACEscapez"TelnetTransportTests.testIACEscape”   s€   € ð ŒFŒOˆð
ð 
ð 
ˆð ð 	#ð 	#ˆAØŒF×Ò Ñ"Ô"Ð"Ð"à×Ò˜œ §¢¨!¡¤×!4Ò!4°[À'Ñ!JÔ!JÑKÔKÐKÐKÐKr   c                 óp  — | j         j        }t          j        t	          t          |¦  «        z   }dd|z   dz   g}|D ]}| j                              |¦  «         Œ|                      |j        |g¦  «         |                      |j        d 	                    |¦  «         
                    |d¦  «        ¦  «         d S )Ns   Here's some bytes, tra la las   But ono!s    an interruptr   )r[   re   r   ÚIACr0   r6   rf   r   r   rg   rw   )r   ÚcmdNameri   r*   rj   rk   s         r   Ú_simpleCommandTestz'TelnetTransportTests._simpleCommandTest¥   s²   € ð ŒFŒOˆåŒj�7¥6¨7Ñ3Ô3Ñ3ˆØ,¨k¸CÑ.?ÐBRÑ.RÐSˆàð 	#ð 	#ˆAØŒF×Ò Ñ"Ô"Ð"Ð"à×Ò˜œ 7 )Ñ,Ô,Ð,Ø×Ò˜œ §¢¨!¡¤×!4Ò!4°S¸#Ñ!>Ô!>Ñ?Ô?Ð?Ð?Ð?r   c                 ó0   — |                       d¦  «         d S )Nr    ©r|   r   s    r   ÚtestInterruptz"TelnetTransportTests.testInterrupt´   ó   € Ø×Ò Ñ%Ô%Ð%Ð%Ð%r   c                 ó0   — |                       d¦  «         d S )Nr   r~   r   s    r   ÚtestEndOfRecordz$TelnetTransportTests.testEndOfRecord·   ó   € Ø×Ò Ñ&Ô&Ð&Ð&Ð&r   c                 ó0   — |                       d¦  «         d S )Nr   r~   r   s    r   ÚtestNoOperationz$TelnetTransportTests.testNoOperationº   rƒ   r   c                 ó0   — |                       d¦  «         d S )Nr   r~   r   s    r   ÚtestDataMarkz!TelnetTransportTests.testDataMark½   r€   r   c                 ó0   — |                       d¦  «         d S )Nr   r~   r   s    r   Ú	testBreakzTelnetTransportTests.testBreakÀ   rƒ   r   c                 ó0   — |                       d¦  «         d S )Nr!   r~   r   s    r   ÚtestAbortOutputz$TelnetTransportTests.testAbortOutputÃ   r€   r   c                 ó0   — |                       d¦  «         d S )Nr"   r~   r   s    r   ÚtestAreYouTherez$TelnetTransportTests.testAreYouThereÆ   rƒ   r   c                 ó0   — |                       d¦  «         d S )Nr#   r~   r   s    r   ÚtestEraseCharacterz'TelnetTransportTests.testEraseCharacterÉ   r€   r   c                 ó0   — |                       d¦  «         d S )Nr$   r~   r   s    r   ÚtestEraseLinez"TelnetTransportTests.testEraseLineÌ   r€   r   c                 ó0   — |                       d¦  «         d S )Nr%   r~   r   s    r   ÚtestGoAheadz TelnetTransportTests.testGoAheadÏ   r€   r   c                 óÄ  — | j         j        }t          j        t          j        z   dz   t          j        z   t          j        z   }d|z   dg}|D ]}| j                              |¦  «         Œ|                      |j        d 	                    |¦  «         
                    |d¦  «        ¦  «         |                      |j        t          t          d¦  «        ¦  «        ¦  «         d S )Ns   hello worlds   These are some bytes but soons   there will be some morer   s   hello world)r[   re   r   rz   ÚSBÚSEr6   rf   r   rg   rw   r   Úlistr   ©r   ri   r*   rj   rk   s        r   ÚtestSubnegotiationz'TelnetTransportTests.testSubnegotiationÒ   sÇ   € ð ŒFŒOˆåŒj�6œ9Ñ$Ð'9Ñ9½F¼JÑFÍÌÑRˆØ-°Ñ3Ð5OÐPˆàð 	#ð 	#ˆAØŒF×Ò Ñ"Ô"Ð"Ð"à×Ò˜œ §¢¨!¡¤×!4Ò!4°S¸#Ñ!>Ô!>Ñ?Ô?Ð?Ø×Ò˜œ¥4­	°.Ñ(AÔ(AÑ#BÔ#BÑCÔCÐCÐCÐCr   c                 óÆ  — | j         j        }t          j        t          j        z   dz   t          j        z   t          j        z   t          j        z   }d|z   dz   dg}|D ]}| j                              |¦  «         Œ|                      |j        d 	                    |¦  «         
                    |d¦  «        ¦  «         |                      |j        t          j        g¦  «         d S )Nr   s   Some bytes are heres   and herer   )r[   re   r   rz   r•   r–   r6   rf   r   rg   rw   r   r˜   s        r   Ú testSubnegotiationWithEmbeddedSEz5TelnetTransportTests.testSubnegotiationWithEmbeddedSEà   sÅ   € ð ŒFŒOˆåŒj�6œ9Ñ$ wÑ.µ´Ñ:½V¼ZÑGÍ&Ì)ÑSˆà# cÑ)¨KÑ7¸ÐEˆàð 	#ð 	#ˆAØŒF×Ò Ñ"Ô"Ð"Ð"à×Ò˜œ §¢¨!¡¤×!4Ò!4°S¸#Ñ!>Ô!>Ñ?Ô?Ð?Ø×Ò˜œ¥F¤I ;Ñ/Ô/Ð/Ð/Ð/r   c           
      ó¼  — t           j        t           j        z   dz   t           j        z   dz   t           j        z   t           j        z   }t	          t          |¦  «        ¦  «        D ]ø}t          ¦   «         x}| j        _        | 	                    | j        ¦  «         |d |…         ||d …         }}d|z   |dz   g}|D ]}| j         
                    |¦  «         Œ|                      |j        d                     |¦  «                             |d¦  «        ¦  «         |                      |j        t           j        gt!          t#          d¦  «        ¦  «        z   ¦  «         Œùd S )Nr   s   hellos
   first parts	   last partr   )r   rz   r•   r–   ÚrangeÚlenr   r[   re   r3   r6   rf   r   rg   rw   r   r—   r   )r   r*   Úiri   Úark   rj   r   s           r   ÚtestBoundarySubnegotiationz/TelnetTransportTests.testBoundarySubnegotiationï   s\  € õ
 ŒJÝŒiñàñõ Œiñð ñ	õ
 Œjñõ Œiñð 	õ •s˜3‘x”x‘”ð 	Pð 	PˆAÝ".¡.¤.Ð0ˆA�””Ø×Ò˜TœVÑ$Ô$Ð$à�r˜�r”7˜C   œGˆqˆAØ Ñ" A¨Ñ$4Ð5ˆAàð *ð *�Ø”×#Ò# DÑ)Ô)Ð)Ð)à×Ò˜QœV S§X¢X¨a¡[¤[×%8Ò%8¸¸cÑ%BÔ%BÑCÔCÐCØ×Ò˜QœX­¬	 {µT½)ÀHÑ:MÔ:MÑ5NÔ5NÑ'NÑOÔOÐOÐOð	Pð 	Pr   c                 óÞ   — |                       |j        |¦  «         |                       |j        |¦  «         |                       |j        |¦  «         |                       |j        |¦  «         d S r'   )rf   r   r   r   r   )r   ÚoÚeLÚeRÚdLÚdRs         r   Ú_enabledHelperz#TelnetTransportTests._enabledHelper
  si   € Ø×Ò˜œ¨Ñ,Ô,Ð,Ø×Ò˜œ¨"Ñ-Ô-Ð-Ø×Ò˜œ¨"Ñ-Ô-Ð-Ø×Ò˜Ô)¨2Ñ.Ô.Ð.Ð.Ð.r   c                 óÀ  — t           j        t           j        z   dz   }d|z   dz   }| j                             |¦  «         |                      | j        j        j        |                     |d¦  «        ¦  «         |                      | j	         
                    ¦   «         t           j        t           j        z   dz   ¦  «         |                      | j        j        ¦  «         d S ©Nr   s   surrounding bytess   to spice things upr   )r   rz   ÚWILLr[   r6   rf   re   r   rw   rb   ÚvalueÚDONTr¨   ©r   r*   r   s      r   ÚtestRefuseWillz#TelnetTransportTests.testRefuseWill  s²   € åŒj�6œ;Ñ&¨Ñ0ˆà# cÑ)Ð,AÑAˆØŒ×Ò˜DÑ!Ô!Ð!à×Ò˜œœÔ-¨t¯|ª|¸CÀÑ/EÔ/EÑFÔFÐFØ×Ò˜œŸš™œ­¬µf´kÑ)AÀGÑ)KÑLÔLÐLØ×Ò˜DœFœOÑ,Ô,Ð,Ð,Ð,r   c                 óÀ  — t           j        t           j        z   dz   }d|z   dz   }| j                             |¦  «         |                      | j        j        j        |                     |d¦  «        ¦  «         |                      | j	         
                    ¦   «         t           j        t           j        z   dz   ¦  «         |                      | j        j        ¦  «         d S rª   )r   rz   ÚDOr[   r6   rf   re   r   rw   rb   r¬   ÚWONTr¨   r®   s      r   ÚtestRefuseDoz!TelnetTransportTests.testRefuseDo  s²   € åŒj�6œ9Ñ$ wÑ.ˆà# cÑ)Ð,AÑAˆØŒ×Ò˜DÑ!Ô!Ð!à×Ò˜œœÔ-¨t¯|ª|¸CÀÑ/EÔ/EÑFÔFÐFØ×Ò˜œŸš™œ­¬µf´kÑ)AÀGÑ)KÑLÔLÐLØ×Ò˜DœFœOÑ,Ô,Ð,Ð,Ð,r   c                 óf  — t           j        t           j        z   dz   }d|z   dz   }| j        j        }d|_        | j                             |¦  «         |                      | j         	                    ¦   «         t           j        t           j
        z   dz   ¦  «         |                      |dg¬¦  «         d S )Nó   ó   paddings   trailer)rµ   )r¤   )r   rz   r±   r[   re   r>   r6   rf   rb   r¬   r«   r¨   ©r   r*   r   ri   s       r   ÚtestAcceptDoz!TelnetTransportTests.testAcceptDo&  sœ   € õ Œj�6œ9Ñ$ wÑ.ˆØ˜CÑ *Ñ,ˆàŒFŒOˆØ&ˆÔØŒ×Ò˜DÑ!Ô!Ð!à×Ò˜œŸš™œ­¬µf´kÑ)AÀGÑ)KÑLÔLÐLØ×Ò˜A 7 )ÐÑ,Ô,Ð,Ð,Ð,r   c                 óf  — t           j        t           j        z   dz   }d|z   dz   }| j        j        }d|_        | j                             |¦  «         |                      | j         	                    ¦   «         t           j        t           j
        z   dz   ¦  «         |                      |dg¬¦  «         d S )Nó   ‘s   headerr¶   )rº   ©r¥   )r   rz   r«   r[   re   rE   r6   rf   rb   r¬   r±   r¨   r·   s       r   ÚtestAcceptWillz#TelnetTransportTests.testAcceptWill3  s™   € åŒj�6œ;Ñ&¨Ñ0ˆØ˜3‰ Ñ+ˆàŒFŒOˆØ'ˆÔØŒ×Ò˜DÑ!Ô!Ð!à×Ò˜œŸš™œ­¬µf´iÑ)?À'Ñ)IÑJÔJÐJØ×Ò˜A 7 )ÐÑ,Ô,Ð,Ð,Ð,r   c                 óL  — t           j        t           j        z   dz   }| j                             d¦  «        }d|j        _        d|z   }| j                             |¦  «         |                      | j        j	        j
        |                     |d¦  «        ¦  «         |                      | j                             ¦   «         t           j        t           j        z   dz   ¦  «         |                      |j        j        d¦  «         |                      | j        j	        dg¬¦  «         d S )Nó   )Úyess
   fiddle deer   Úno©r§   )r   rz   r²   r[   ÚgetOptionStateÚhimÚstater6   rf   re   r   rw   rb   r¬   r­   r¨   ©r   r*   Úsr   s       r   ÚtestAcceptWontz#TelnetTransportTests.testAcceptWont?  sï   € õ Œj�6œ;Ñ&¨Ñ0ˆð
 ŒF×!Ò! 'Ñ*Ô*ˆØˆŒŒà˜sÑ"ˆØŒ×Ò˜DÑ!Ô!Ð!à×Ò˜œœÔ-¨t¯|ª|¸CÀÑ/EÔ/EÑFÔFÐFØ×Ò˜œŸš™œ­¬µf´kÑ)AÀGÑ)KÑLÔLÐLØ×Ò˜œœ dÑ+Ô+Ð+Ø×Ò˜DœFœO°°	ÐÑ:Ô:Ð:Ð:Ð:r   c                 óL  — t           j        t           j        z   dz   }| j                             d¦  «        }d|j        _        d|z   }| j                             |¦  «         |                      | j        j	        j
        |                     |d¦  «        ¦  «         |                      | j                             ¦   «         t           j        t           j        z   dz   ¦  «         |                      |j        j        d¦  «         |                      | j        j	        dg¬¦  «         d S )Nr¾   r¿   s   fiddle dum r   rÀ   )r¦   )r   rz   r­   r[   rÂ   ÚusrÄ   r6   rf   re   r   rw   rb   r¬   r²   r¨   rÅ   s       r   ÚtestAcceptDontz#TelnetTransportTests.testAcceptDontS  sï   € õ Œj�6œ;Ñ&¨Ñ0ˆð
 ŒF×!Ò! 'Ñ*Ô*ˆØˆŒŒ
à Ñ#ˆØŒ×Ò˜DÑ!Ô!Ð!à×Ò˜œœÔ-¨t¯|ª|¸CÀÑ/EÔ/EÑFÔFÐFØ×Ò˜œŸš™œ­¬µf´kÑ)AÀGÑ)KÑLÔLÐLØ×Ò˜œœ TÑ*Ô*Ð*Ø×Ò˜DœFœO°°	ÐÑ:Ô:Ð:Ð:Ð:r   c                 óŒ  — t           j        t           j        z   dz   }d|z   dz   }| j                             |¦  «         |                      | j        j        j        |                     |d¦  «        ¦  «         |                      | j	         
                    ¦   «         d¦  «         |                      | j        j        ¦  «         d S ©Nó   Gó
   dum de dumó	   tra la lar   )r   rz   r²   r[   r6   rf   re   r   rw   rb   r¬   r¨   r®   s      r   ÚtestIgnoreWontz#TelnetTransportTests.testIgnoreWontg  s¥   € õ Œj�6œ;Ñ&¨Ñ0ˆà˜sÑ" \Ñ1ˆØŒ×Ò˜DÑ!Ô!Ð!à×Ò˜œœÔ-¨t¯|ª|¸CÀÑ/EÔ/EÑFÔFÐFØ×Ò˜œŸš™œ¨Ñ-Ô-Ð-Ø×Ò˜DœFœOÑ,Ô,Ð,Ð,Ð,r   c                 óŒ  — t           j        t           j        z   dz   }d|z   dz   }| j                             |¦  «         |                      | j        j        j        |                     |d¦  «        ¦  «         |                      | j	         
                    ¦   «         d¦  «         |                      | j        j        ¦  «         d S rÌ   )r   rz   r­   r[   r6   rf   re   r   rw   rb   r¬   r¨   r®   s      r   ÚtestIgnoreDontz#TelnetTransportTests.testIgnoreDonts  s¥   € õ Œj�6œ;Ñ&¨Ñ0ˆà˜sÑ" \Ñ1ˆØŒ×Ò˜DÑ!Ô!Ð!à×Ò˜œœÔ-¨t¯|ª|¸CÀÑ/EÔ/EÑFÔFÐFØ×Ò˜œŸš™œ¨Ñ-Ô-Ð-Ø×Ò˜DœFœOÑ,Ô,Ð,Ð,Ð,r   c                 óØ  — t           j        t           j        z   dz   }| j                             d¦  «        }d|j        _        d|z   dz   }| j                             |¦  «         |                      | j        j	        j
        |                     |d¦  «        ¦  «         |                      | j                             ¦   «         d¦  «         |                      | j        j	        ¦  «         d S ©Nó   Vr¿   rÏ   rÎ   r   )r   rz   r«   r[   rÂ   rÃ   rÄ   r6   rf   re   r   rw   rb   r¬   r¨   rÅ   s       r   ÚtestIgnoreWillz#TelnetTransportTests.testIgnoreWill€  sÅ   € õ Œj�6œ;Ñ&¨Ñ0ˆð
 ŒF×!Ò! 'Ñ*Ô*ˆØˆŒŒà˜cÑ! MÑ1ˆØŒ×Ò˜DÑ!Ô!Ð!à×Ò˜œœÔ-¨t¯|ª|¸CÀÑ/EÔ/EÑFÔFÐFØ×Ò˜œŸš™œ¨Ñ-Ô-Ð-Ø×Ò˜DœFœOÑ,Ô,Ð,Ð,Ð,r   c                 óØ  — t           j        t           j        z   dz   }| j                             d¦  «        }d|j        _        d|z   dz   }| j                             |¦  «         |                      | j        j	        j
        |                     |d¦  «        ¦  «         |                      | j                             ¦   «         d¦  «         |                      | j        j	        ¦  «         d S rÔ   )r   rz   r±   r[   rÂ   rÉ   rÄ   r6   rf   re   r   rw   rb   r¬   r¨   rÅ   s       r   ÚtestIgnoreDoz!TelnetTransportTests.testIgnoreDo“  sÅ   € õ Œj�6œ9Ñ$ wÑ.ˆð
 ŒF×!Ò! 'Ñ*Ô*ˆØˆŒŒ
à˜cÑ! MÑ1ˆØŒ×Ò˜DÑ!Ô!Ð!à×Ò˜œœÔ-¨t¯|ª|¸CÀÑ/EÔ/EÑFÔFÐFØ×Ò˜œŸš™œ¨Ñ-Ô-Ð-Ø×Ò˜DœFœOÑ,Ô,Ð,Ð,Ð,r   c                 óÂ  ‡ ‡— ‰ j                              d¦  «        }‰ j         j        Šd‰_        ‰                      ‰ j                             ¦   «         t          j        t          j	        z   dz   ¦  «         ‰ j          
                    t          j        t          j        z   dz   ¦  «         |                     ‰ j        d¦  «         |                     ˆˆ fd„¦  «         |S )Nó   B©rÚ   Tc                 ó4   •— ‰                      ‰dg¬¦  «        S )NrÚ   r»   )r¨   )Ú_ri   r   s    €€r   r+   z@TelnetTransportTests.testAcceptedEnableRequest.<locals>.<lambda>µ  s   ø€  × 3Ò 3°A¸7¸)Ð 3Ñ DÔ D€ r   )r[   Údore   rE   rf   rb   r¬   r   rz   r±   r6   r«   ÚaddCallback)r   r2   ri   s   ` @r   ÚtestAcceptedEnableRequestz.TelnetTransportTests.testAcceptedEnableRequest¦  s·   øø€ ð
 ŒF�IŠI�gÑÔˆàŒFŒOˆØ'ˆÔà×Ò˜œŸš™œ­¬µf´iÑ)?À'Ñ)IÑJÔJÐJàŒ×Ò�FœJ­¬Ñ4°wÑ>Ñ?Ô?Ð?à	�Š�dÔ&¨Ñ-Ô-Ð-Ø	�ŠÐDÐDÐDÐDÐDÑEÔEÐEØˆr   c                 ó(  ‡ ‡— d‰ j         j        _        ‰ j                              d¦  «        }‰                      ‰ j                             ¦   «         t          j        t          j	        z   dz   ¦  «         ‰ j          
                    d¦  «        Š‰                      ‰j        j        d¦  «         ‰                      ‰j        j        d¦  «         ‰                      ‰j        j        ¦  «         ‰                      ‰j        j        ¦  «         ‰ j                              t          j        t          j        z   dz   ¦  «         ‰                      |t          j        ¦  «        }|                     ˆ fd„¦  «         |                     ˆˆ fd„¦  «         |S )z¾
        If the peer refuses to enable an option we request it to enable, the
        L{Deferred} returned by L{TelnetProtocol.do} fires with an
        L{OptionRefused} L{Failure}.
        rÛ   rÚ   rÀ   c                 óB   •— ‰                      ‰j        j        ¦  «        S r'   ©r¨   r[   re   ©Úignoredr   s    €r   r+   z@TelnetTransportTests.test_refusedEnableRequest.<locals>.<lambda>Ð  ó   ø€  d×&9Ò&9¸$¼&¼/Ñ&JÔ&J€ r   c                 óB   •— ‰                      ‰j        j        ¦  «        S r'   )ÚassertFalserÃ   Únegotiating©rå   rÆ   r   s    €€r   r+   z@TelnetTransportTests.test_refusedEnableRequest.<locals>.<lambda>Ñ  s   ø€  d×&6Ò&6°q´uÔ7HÑ&IÔ&I€ r   )r[   re   rE   rÞ   rf   rb   r¬   r   rz   r±   rÂ   rÃ   rÄ   rÉ   Ú
assertTrueré   rè   r6   r²   ÚassertFailureÚOptionRefusedrß   ©r   r2   rÆ   s   ` @r   Útest_refusedEnableRequestz.TelnetTransportTests.test_refusedEnableRequest¸  sH  øø€ ð ,6ˆŒŒÔ(ØŒF�IŠI�gÑÔˆà×Ò˜œŸš™œ­¬µf´iÑ)?À'Ñ)IÑJÔJÐJàŒF×!Ò! 'Ñ*Ô*ˆØ×Ò˜œœ dÑ+Ô+Ð+Ø×Ò˜œœ TÑ*Ô*Ð*Ø�Š˜œÔ)Ñ*Ô*Ð*Ø×Ò˜œÔ)Ñ*Ô*Ð*àŒ×Ò�FœJ­¬Ñ4°wÑ>Ñ?Ô?Ð?à×Ò˜q¥&Ô"6Ñ7Ô7ˆØ	�ŠÐJÐJÐJÐJÑKÔKÐKØ	�ŠÐIÐIÐIÐIÐIÑJÔJÐJØˆr   c                 ó(  ‡ ‡— d‰ j         j        _        ‰ j                              d¦  «        }‰                      ‰ j                             ¦   «         t          j        t          j	        z   dz   ¦  «         ‰ j          
                    d¦  «        Š‰                      ‰j        j        d¦  «         ‰                      ‰j        j        d¦  «         ‰                      ‰j        j        ¦  «         ‰                      ‰j        j        ¦  «         ‰ j                              t          j        t          j        z   dz   ¦  «         ‰                      |t          j        ¦  «        }|                     ˆ fd„¦  «         |                     ˆˆ fd„¦  «         |S )z´
        If the peer refuses to allow us to enable an option, the L{Deferred}
        returned by L{TelnetProtocol.will} fires with an L{OptionRefused}
        L{Failure}.
        rÛ   rÚ   rÀ   c                 óB   •— ‰                      ‰j        j        ¦  «        S r'   rã   rä   s    €r   r+   z>TelnetTransportTests.test_refusedEnableOffer.<locals>.<lambda>ì  ræ   r   c                 óB   •— ‰                      ‰j        j        ¦  «        S r'   )rè   rÉ   ré   rê   s    €€r   r+   z>TelnetTransportTests.test_refusedEnableOffer.<locals>.<lambda>í  s   ø€  d×&6Ò&6°q´tÔ7GÑ&HÔ&H€ r   )r[   re   r>   Úwillrf   rb   r¬   r   rz   r«   rÂ   rÃ   rÄ   rÉ   rè   ré   rë   r6   r­   rì   rí   rß   rî   s   ` @r   Útest_refusedEnableOfferz,TelnetTransportTests.test_refusedEnableOfferÔ  sH  øø€ ð +5ˆŒŒÔ'ØŒF�KŠK˜Ñ Ô ˆà×Ò˜œŸš™œ­¬µf´kÑ)AÀGÑ)KÑLÔLÐLàŒF×!Ò! 'Ñ*Ô*ˆØ×Ò˜œœ dÑ+Ô+Ð+Ø×Ò˜œœ TÑ*Ô*Ð*Ø×Ò˜œÔ*Ñ+Ô+Ð+Ø�Š˜œÔ(Ñ)Ô)Ð)àŒ×Ò�FœJ­¬Ñ4°wÑ>Ñ?Ô?Ð?à×Ò˜q¥&Ô"6Ñ7Ô7ˆØ	�ŠÐJÐJÐJÐJÑKÔKÐKØ	�ŠÐHÐHÐHÐHÐHÑIÔIÐIØˆr   c                 óä  ‡ — ‰ j                              d¦  «        }d|j        _        ‰ j                              d¦  «        }‰                      ‰ j                             ¦   «         t          j	        t          j
        z   dz   ¦  «         ‰ j                              t          j	        t          j        z   dz   ¦  «         |                     ‰ j        d¦  «         |                     ˆ fd„¦  «         |S )NrÚ   r¿   Tc                 óH   •— ‰                      ‰j        j        dg¬¦  «        S )NrÚ   rÁ   rã   ©rÝ   r   s    €r   r+   zATelnetTransportTests.testAcceptedDisableRequest.<locals>.<lambda>ÿ  s    ø€  × 3Ò 3°D´F´OÈÈ	Ð 3Ñ RÔ R€ r   )r[   rÂ   rÃ   rÄ   Údontrf   rb   r¬   r   rz   r­   r6   r²   rß   ©r   rÆ   r2   s   `  r   ÚtestAcceptedDisableRequestz/TelnetTransportTests.testAcceptedDisableRequestð  sÀ   ø€ ð
 ŒF×!Ò! 'Ñ*Ô*ˆØˆŒŒàŒF�KŠK˜Ñ Ô ˆà×Ò˜œŸš™œ­¬µf´kÑ)AÀGÑ)KÑLÔLÐLàŒ×Ò�FœJ­¬Ñ4°wÑ>Ñ?Ô?Ð?à	�Š�dÔ&¨Ñ-Ô-Ð-Ø	�ŠÐRÐRÐRÐRÑSÔSÐSØˆr   c                 ó  ‡ — ‰ j                              d¦  «        }d|j        _        ‰ j                              d¦  «         ˆ fd„}ˆ fd„}ˆ fd„} |d ¦  «        }|                     |¦  «         |                     |¦  «         |S )Nó   $r¿   c                 óx   •— ‰j                              d¦  «        }‰                     |t          j        ¦  «        S ©Nrü   )r[   rÞ   rì   r   ÚAlreadyNegotiating©Úxr2   r   s     €r   Ú_dozITelnetTransportTests.testNegotiationBlocksFurtherNegotiation.<locals>._do
  s/   ø€ Ø”—	’	˜'Ñ"Ô"ˆAØ×%Ò% a­Ô)BÑCÔCÐCr   c                 óx   •— ‰j                              d¦  «        }‰                     |t          j        ¦  «        S rþ   )r[   rø   rì   r   rÿ   r   s     €r   Ú_dontzKTelnetTransportTests.testNegotiationBlocksFurtherNegotiation.<locals>._dont  s/   ø€ Ø”—’˜GÑ$Ô$ˆAØ×%Ò% a­Ô)BÑCÔCÐCr   c                 óØ  •— ‰j                              t          j        t          j        z   dz   ¦  «         ‰                     ‰j         j        dg¬¦  «         d‰j         j        _        ‰j                              d¦  «        }‰j                              t          j        t          j	        z   dz   ¦  «         | 
                    ‰j        d¦  «         | 
                    ˆfd„¦  «         |S )Nrü   rÁ   )rü   Tc                 óL   •— ‰                      ‰j        j        dgdg¬¦  «        S )Nrü   )r¥   r§   rã   r÷   s    €r   r+   z^TelnetTransportTests.testNegotiationBlocksFurtherNegotiation.<locals>._final.<locals>.<lambda>  s+   ø€ ˜$×-Ò-Ø”F”O¨¨	°w°ið .ñ ô € r   )r[   r6   r   rz   r²   r¨   re   rE   rÞ   r«   rß   rf   r   s     €r   Ú_finalzLTelnetTransportTests.testNegotiationBlocksFurtherNegotiation.<locals>._final  sÑ   ø€ ØŒF×Ò¥¤
­V¬[Ñ 8¸7Ñ BÑCÔCÐCà×Ò ¤¤°W°IÐÑ>Ô>Ð>à/9ˆDŒFŒOÔ,Ø”—	’	˜'Ñ"Ô"ˆAØŒF×Ò¥¤
­V¬[Ñ 8¸7Ñ BÑCÔCÐCØ�MŠM˜$Ô*¨DÑ1Ô1Ð1Ø�MŠMðð ð ð ñô ð ð
 ˆHr   )r[   rÂ   rÃ   rÄ   rø   rß   )r   rÆ   r  r  r  r2   s   `     r   Ú'testNegotiationBlocksFurtherNegotiationz<TelnetTransportTests.testNegotiationBlocksFurtherNegotiation  sÄ   ø€ ð ŒF×!Ò! 'Ñ*Ô*ˆØˆŒŒØŒ�Š�GÑÔÐð	Dð 	Dð 	Dð 	Dð 	Dð	Dð 	Dð 	Dð 	Dð 	Dð	ð 	ð 	ð 	ð 	ð  ˆC�‰IŒIˆØ	�Š�eÑÔÐØ	�Š�fÑÔÐØˆr   c                 óv   — | j                              d¦  «        }|                      |t          j        ¦  «        S )Nó   «)r[   rø   rì   r   ÚAlreadyDisabled)r   r2   s     r   Ú#testSuperfluousDisableRequestRaisesz8TelnetTransportTests.testSuperfluousDisableRequestRaises'  s.   € àŒF�KŠK˜Ñ Ô ˆØ×!Ò! !¥VÔ%;Ñ<Ô<Ð<r   c                 óÂ   — | j                              d¦  «        }d|j        _        | j                              d¦  «        }|                      |t          j        ¦  «        S )Nr
  r¿   )r[   rÂ   rÃ   rÄ   rÞ   rì   r   ÚAlreadyEnabledrù   s      r   Ú"testSuperfluousEnableRequestRaisesz7TelnetTransportTests.testSuperfluousEnableRequestRaises,  sL   € àŒF×!Ò! 'Ñ*Ô*ˆØˆŒŒØŒF�IŠI�gÑÔˆØ×!Ò! !¥VÔ%:Ñ;Ô;Ð;r   c                 ó¼  — | j                              d¦  «        }| j                              d¦  «        }| j                              d¦  «        } G d„ dt          ¦  «        }| j                               |d¦  «        ¦  «         |                      ||¦  «        }|                      ||¦  «        }|                      ||¦  «        }t          j        |||g¦  «        S )Nr   ó   #ó   4c                   ó   — e Zd ZdS )úLTelnetTransportTests.testLostConnectionFailsDeferreds.<locals>.TestExceptionN)rS   rT   rU   r   r   r   ÚTestExceptionr  8  s   € € € € € ØˆDr   r  zTotal failure!)r[   rÞ   Ú	Exceptionr9   rì   r   ÚgatherResults)r   Úd1Úd2Úd3r  s        r   Ú testLostConnectionFailsDeferredsz5TelnetTransportTests.testLostConnectionFailsDeferreds3  sÞ   € ØŒV�YŠY�wÑÔˆØŒV�YŠY�wÑÔˆØŒV�YŠY�wÑÔˆð	ð 	ð 	ð 	ð 	�Iñ 	ô 	ð 	ð 	Œ×Ò˜m˜mÐ,<Ñ=Ô=Ñ>Ô>Ð>à×Ò  MÑ2Ô2ˆØ×Ò  MÑ2Ô2ˆØ×Ò  MÑ2Ô2ˆÝÔ" B¨¨B <Ñ0Ô0Ð0r   N))rS   rT   rU   Ú__doc__rc   rl   rt   rx   r|   r   r‚   r…   r‡   r‰   r‹   r�   r�   r‘   r“   r™   r›   r¡   r¨   r¯   r³   r¸   r¼   rÇ   rÊ   rÐ   rÒ   rÖ   rØ   rà   rï   rô   rú   r  r  r  r  r   r   r   r^   r^   \   sf  € € € € € ðð ð&ð &ð &ð
.ð .ð .ð&
ð 
ð 
ð6Lð Lð Lð"@ð @ð @ð&ð &ð &ð'ð 'ð 'ð'ð 'ð 'ð&ð &ð &ð'ð 'ð 'ð&ð &ð &ð'ð 'ð 'ð&ð &ð &ð&ð &ð &ð&ð &ð &ðDð Dð Dð0ð 0ð 0ðPð Pð Pð6 $&¨"°¸ð /ð /ð /ð /ð	-ð 	-ð 	-ð	-ð 	-ð 	-ð-ð -ð -ð
-ð 
-ð 
-ð;ð ;ð ;ð(;ð ;ð ;ð(
-ð 
-ð 
-ð-ð -ð -ð-ð -ð -ð&-ð -ð -ð&ð ð ð$ð ð ð8ð ð ð8ð ð ð$#ð #ð #ðJ=ð =ð =ð
<ð <ð <ð1ð 1ð 1ð 1ð 1r   r^   c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )Ú
TestTelnetzP
    A trivial extension of the telnet protocol class useful to unit tests.
    c                 óR   — t           j                             | ¦  «         g | _        d S r'   )r   ÚTelnetr   Úeventsr   s    r   r   zTestTelnet.__init__H  s#   € ÝŒ×Ò˜tÑ$Ô$Ð$ØˆŒˆˆr   c                 ó>   — | j                              d|f¦  «         dS )z:
        Record the given data in C{self.events}.
        ÚbytesN©r!  r(   r5   s     r   ÚapplicationDataReceivedz"TestTelnet.applicationDataReceivedL  s$   € ð 	Œ×Ò˜G T˜?Ñ+Ô+Ð+Ð+Ð+r   c                 ó@   — | j                              d||f¦  «         dS )z=
        Record the given command in C{self.events}.
        rM   Nr$  rQ   s      r   rO   zTestTelnet.unhandledCommandR  s'   € ð 	Œ×Ò˜I w°Ð5Ñ6Ô6Ð6Ð6Ð6r   c                 ó@   — | j                              d||f¦  «         dS )zL
        Record the given subnegotiation command in C{self.events}.
        Ú	negotiateNr$  rQ   s      r   rR   z"TestTelnet.unhandledSubnegotiationX  s'   € ð 	Œ×Ò˜K¨°$Ð7Ñ8Ô8Ð8Ð8Ð8r   N)rS   rT   rU   r  r   r%  rO   rR   r   r   r   r  r  C  sZ   € € € € € ðð ðð ð ð,ð ,ð ,ð7ð 7ð 7ð9ð 9ð 9ð 9ð 9r   r  c                   ór   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTelnetTestsz°
    Tests for L{telnet.Telnet}.

    L{telnet.Telnet} implements the TELNET protocol (RFC 854), including option
    and suboption negotiation, and option state tracking.
    c                 ó,   — t          ¦   «         | _        dS )zM
        Create an unconnected L{telnet.Telnet} to be used by tests.
        N)r  re   r   s    r   rc   zTelnetTests.setUpg  s   € õ #™œˆŒˆˆr   c                 ó`   — |                       | j                             d¦  «        ¦  «         dS )z”
        L{telnet.Telnet.enableLocal} should reject all options, since
        L{telnet.Telnet} does not know how to implement any options.
        ó    N)rè   re   rA   r   s    r   Útest_enableLocalzTelnetTests.test_enableLocalm  s.   € ð
 	×Ò˜œ×2Ò2°5Ñ9Ô9Ñ:Ô:Ð:Ð:Ð:r   c                 ó`   — |                       | j                             d¦  «        ¦  «         dS )z•
        L{telnet.Telnet.enableRemote} should reject all options, since
        L{telnet.Telnet} does not know how to implement any options.
        r-  N)rè   re   rF   r   s    r   Útest_enableRemotezTelnetTests.test_enableRemotet  s.   € ð
 	×Ò˜œ×3Ò3°EÑ:Ô:Ñ;Ô;Ð;Ð;Ð;r   c                 óR   — |                       t          | j        j        d¦  «         dS )a	  
        It is an error for L{telnet.Telnet.disableLocal} to be called, since
        L{telnet.Telnet.enableLocal} will never allow any options to be enabled
        locally.  If a subclass overrides enableLocal, it must also override
        disableLocal.
        r-  N)ÚassertRaisesÚNotImplementedErrorre   rC   r   s    r   Útest_disableLocalzTelnetTests.test_disableLocal{  s(   € ð 	×ÒÕ-¨t¬}Ô/IÈ5ÑQÔQÐQÐQÐQr   c                 óR   — |                       t          | j        j        d¦  «         dS )a  
        It is an error for L{telnet.Telnet.disableRemote} to be called, since
        L{telnet.Telnet.enableRemote} will never allow any options to be
        enabled remotely.  If a subclass overrides enableRemote, it must also
        override disableRemote.
        r-  N)r2  r3  re   rH   r   s    r   Útest_disableRemotezTelnetTests.test_disableRemote„  s(   € ð 	×ÒÕ-¨t¬}Ô/JÈEÑRÔRÐRÐRÐRr   c                 óæ   — t          j        ¦   «         }| j                             |¦  «         | j                             dd¦  «         |                      |                     ¦   «         d¦  «         dS )z±
        L{telnet.Telnet.requestNegotiation} formats the feature byte and the
        payload bytes into the subnegotiation format and sends them.

        See RFC 855.
        ó   s   s   ÿúÿðN©r   ra   re   r3   ÚrequestNegotiationrf   r¬   ©r   r1   s     r   Útest_requestNegotiationz#TelnetTests.test_requestNegotiation�  sr   € õ "Ô1Ñ3Ô3ˆ	ØŒ×$Ò$ YÑ/Ô/Ð/ØŒ×(Ò(¨°+Ñ>Ô>Ð>Ø×ÒØ�OŠOÑÔà+ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 óæ   — t          j        ¦   «         }| j                             |¦  «         | j                             dd¦  «         |                      |                     ¦   «         d¦  «         dS )z®
        If the payload for a subnegotiation includes I{IAC}, it is escaped by
        L{telnet.Telnet.requestNegotiation} with another I{IAC}.

        See RFC 855.
        r8  rv   s   ÿúÿÿÿðNr9  r;  s     r   Ú!test_requestNegotiationEscapesIACz-TelnetTests.test_requestNegotiationEscapesIAC�  sg   € õ "Ô1Ñ3Ô3ˆ	ØŒ×$Ò$ YÑ/Ô/Ð/ØŒ×(Ò(¨°'Ñ:Ô:Ð:Ø×Ò˜ŸšÑ*Ô*Ð,KÑLÔLÐLÐLÐLr   c                 óœ   — g x}| j         _        | j                              |¦  «         |                      |t	          |¦  «        ¦  «         dS )z
        Pass the given bytes to the protocol's C{dataReceived} method and
        assert that the given events occur.
        N)re   r!  r6   rf   r—   )r   r   ÚexpectedÚreceiveds       r   Ú_deliverzTelnetTests._deliver©  sK   € ð
 +-Ð,ˆ�4”=Ô'ØŒ×"Ò" 4Ñ(Ô(Ð(Ø×Ò˜¥4¨¡>¤>Ñ2Ô2Ð2Ð2Ð2r   c                 ó2   — |                       dd¦  «         dS )zc
        One application-data byte in the default state gets delivered right
        away.
        ó   a)r#  rD  N©rB  r   s    r   Útest_oneApplicationDataBytez'TelnetTests.test_oneApplicationDataByte²  s   € ð
 	�Š�d˜OÑ,Ô,Ð,Ð,Ð,r   c                 ó2   — |                       dd¦  «         dS )za
        Two application-data bytes in the default state get delivered
        together.
        ó   bc)r#  rH  NrE  r   s    r   Útest_twoApplicationDataBytesz(TelnetTests.test_twoApplicationDataBytes¹  s   € ð
 	�Š�eÐ-Ñ.Ô.Ð.Ð.Ð.r   c                 óL   — |                       dt          j        z   d¦  «         dS )z~
        Three application-data bytes followed by a control byte get
        delivered, but the control byte doesn't.
        ó   def)r#  rK  N©rB  r   rz   r   s    r   Útest_threeApplicationDataBytesz*TelnetTests.test_threeApplicationDataBytesÀ  s&   € ð
 	�Š�f�vœzÑ)Ð+<Ñ=Ô=Ð=Ð=Ð=r   c                 ó¨   — |                       t          j        ¦  «         |                       t          j        dz   dt          j        dz   f¦  «         dS )zy
        IAC in the escaped state gets delivered and so does another
        application-data byte following it.
        ó   gr#  NrL  r   s    r   Útest_escapedControlzTelnetTests.test_escapedControlÇ  sE   € ð
 	�Š•f”jÑ!Ô!Ð!Ø�Š•f”j 4Ñ'¨'µ6´:ÀÑ3DÐ)EÑFÔFÐFÐFÐFr   c                 ó:  — |                       d¦  «         |                       dd¦  «         |                       dd¦  «         |                       d¦  «         |                       dd¦  «         |                       dd¦  «         |                       d¦  «         |                       dd	¦  «         |                       d
d	¦  «         |                       d¦  «         |                       t          j        t          j        z   dz   ddt          j        z   dz   f¦  «         dS )aÍ  
        A carriage return only puts the protocol into the newline state.  A
        linefeed in the newline state causes just the newline to be
        delivered.  A nul in the newline state causes a carriage return to
        be delivered.  An IAC in the newline state causes a carriage return
        to be delivered and puts the protocol into the escaped state.
        Anything else causes a carriage return and that thing to be
        delivered.
        rq   ro   )r#  ro   s   
r-  )r#  rq   s    rD  )r#  ó   arR  ó   xr#  NrL  r   s    r   Útest_carriageReturnzTelnetTests.test_carriageReturnÏ  s  € ð 	�Š�eÑÔÐØ�Š�eÐ-Ñ.Ô.Ð.Ø�Š�gÐ/Ñ0Ô0Ð0à�Š�eÑÔÐØ�Š�eÐ-Ñ.Ô.Ð.Ø�Š�gÐ/Ñ0Ô0Ð0à�Š�eÑÔÐØ�Š�dÐ-Ñ.Ô.Ð.Ø�Š�fÐ/Ñ0Ô0Ð0à�Š�eÑÔÐØ�ŠÝŒJ�œÑ# dÑ*¨W°e½f¼jÑ6HÈ4Ñ6OÐ,Pñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó‚   — |                       dt          j        z   t          j        z   ddt          j        df¦  «         dS )zt
        Application bytes received before a command are delivered before the
        command is processed.
        rS  )r#  rS  rM   N)rB  r   rz   r   r   s    r   Ú'test_applicationDataBeforeSimpleCommandz3TelnetTests.test_applicationDataBeforeSimpleCommandê  sD   € ð
 	�ŠØ•6”:Ñ¥¤
Ñ*ØØ�œ
 DÐ)ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó    — i | j         _        |                      dt          j        z   t          j        z   dz   ddt          j        df¦  «         dS )z~
        Application bytes received before a WILL/WONT/DO/DONT are delivered
        before the command is processed.
        ó   yr-  )r#  rX  rM   N)re   r.   rB  r   rz   r«   r   s    r   Ú!test_applicationDataBeforeCommandz-TelnetTests.test_applicationDataBeforeCommandõ  sS   € ð
 $&ˆŒÔ Ø�ŠØ•6”:Ñ¥¤Ñ+¨gÑ5ØØ�œ WÐ-ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 óª   — |                       dt          j        z   t          j        z   dz   t          j        z   t          j        z   ddddgf¦  «         dS )z‡
        Application bytes received before a subnegotiation command are
        delivered before the negotiation is processed.
        ó   zs   Qx)r#  r[  r(  ó   QrS  N)rB  r   rz   r•   r–   r   s    r   Ú(test_applicationDataBeforeSubnegotiationz4TelnetTests.test_applicationDataBeforeSubnegotiation  sW   € ð
 	�ŠØ•6”:Ñ¥¤	Ñ)¨EÑ1µF´JÑ>ÅÄÑJØØ˜$  Ð'ñ	
ô 	
ð 	
ð 	
ð 	
r   N)rS   rT   rU   r  rc   r.  r0  r4  r6  r<  r>  rB  rF  rI  rM  rP  rT  rV  rY  r]  r   r   r   r*  r*  _  s  € € € € € ðð ð%ð %ð %ð;ð ;ð ;ð<ð <ð <ðRð Rð RðSð Sð Sð
ð 
ð 
ð 
Mð 
Mð 
Mð3ð 3ð 3ð-ð -ð -ð/ð /ð /ð>ð >ð >ðGð Gð Gð
ð 
ð 
ð6	
ð 	
ð 	
ð

ð 

ð 

ð	
ð 	
ð 	
ð 	
ð 	
r   r*  N)r  Úzope.interfacer   Úzope.interface.verifyr   Útwisted.conchr   Útwisted.internetr   Útwisted.python.compatr   Útwisted.testr   Útwisted.trialr	   rZ   r   ÚTestCaserW   r^   r   r  r*  r   r   r   ú<module>rf     s¢  ðð
ð ð
 'Ð &Ð &Ð &Ð &Ð &Ø .Ð .Ð .Ð .Ð .Ð .à  Ð  Ð  Ð  Ð  Ð  Ø "Ð "Ð "Ð "Ð "Ð "Ø +Ð +Ð +Ð +Ð +Ð +Ø &Ð &Ð &Ð &Ð &Ð &Ø "Ð "Ð "Ð "Ð "Ð "ð €ˆVÔ#Ñ$Ô$ð;ð ;ð ;ð ;ð ;ñ ;ô ;ñ %Ô$ð;ð|0ð 0ð 0ð 0ð 0�hÔ'ñ 0ô 0ð 0ðd1ð d1ð d1ð d1ð d1˜8Ô,ñ d1ô d1ð d1ðN9ð 9ð 9ð 9ð 9�”ñ 9ô 9ð 9ð8k
ð k
ð k
ð k
ð k
�(Ô#ñ k
ô k
ð k
ð k
ð k
r   