§
    ÈtºfÊ?  ã            	       ó¨  — d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
mZmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZ dZdZ ed¦  «        \	  ZZZZZZZZ Z! G d„ dej"        ¦  «        Z#e#Z$ e edddd¦  «        ddd¦  «          eej%        ¦  «         G d„ dej&        ¦  «        ¦   «         Z' G d„ de(¦  «        Z) G d„ de'¦  «        Z*g d¢Z+dS )z<
Partial in-memory terminal emulator

@author: Jp Calderone
é    N)Úimplementer)ÚVersion)Úinsults)ÚdeferÚprotocolÚreactor)ÚLogger)Ú_textattributes)Ú	iterbytes)Ú
deprecatedÚdeprecatedModuleAttributeé   é(   é	   c                   ó~   — e Zd ZdZdZej        ddddeedfd„Z	 e
 edddd¦  «        ¦  «        d	„ ¦   «         Zd
„ ZdS )Ú_FormattingStatezì
    Represents the formatting state/attributes of a single character.

    Character set, intensity, underlinedness, blinkitude, video
    reversal, as well as foreground and background colors made up a
    character's attributes.
    ©ÚcharsetÚboldÚ	underlineÚblinkÚreverseVideoÚ
foregroundÚ
backgroundÚ_subtractingFc	                 óv   — || _         || _        || _        || _        || _        || _        || _        || _        d S ©Nr   )	Úselfr   r   r   r   r   r   r   r   s	            ú[/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/conch/insults/helper.pyÚ__init__z_FormattingState.__init__3   sD   € ð ˆŒØˆŒ	Ø"ˆŒØˆŒ
Ø(ˆÔØ$ˆŒØ$ˆŒØ(ˆÔÐÐó    ÚTwistedé   é   r   c                 ó\   — |                      ¦   «         \  }}|                      ||¦  «        S )a<  
        Add a character attribute to a copy of this formatting state.

        @param kw: An optional attribute name and value can be provided with
            a keyword argument.

        @return: A formatting state instance with the new attribute.

        @see: L{DefaultFormattingState._withAttribute}.
        )ÚpopitemÚ_withAttribute)r   ÚkwÚkÚvs       r   ÚwantOnez_FormattingState.wantOneG   s+   € ð �zŠz‰|Œ|‰ˆˆ1Ø×"Ò" 1 aÑ(Ô(Ð(r!   c                 óš  — g }| j         r|                     d¦  «         | j        r|                     t          j        ¦  «         | j        r|                     t          j        ¦  «         | j        r|                     t          j        ¦  «         | j	        r|                     t          j
        ¦  «         | j        t          k    r"|                     t          | j        z   ¦  «         | j        t          k    r"|                     t           | j        z   ¦  «         |r.dd                     t%          t&          |¦  «        ¦  «        z   dz   S dS )Nr   z[ú;ÚmÚ )r   Úappendr   r   ÚBOLDr   Ú	UNDERLINEr   ÚBLINKr   ÚREVERSE_VIDEOr   ÚWHITEÚ
FOREGROUNDr   ÚBLACKÚ
BACKGROUNDÚjoinÚmapÚstr)r   Úattrss     r   ÚtoVT102z_FormattingState.toVT102V   s  € ð ˆØÔð 	Ø�LŠL˜‰OŒOˆOØŒ9ð 	'Ø�LŠL�œÑ&Ô&Ð&ØŒ>ð 	,Ø�LŠL�Ô*Ñ+Ô+Ð+ØŒ:ð 	(Ø�LŠL�œÑ'Ô'Ð'ØÔð 	0Ø�LŠL�Ô.Ñ/Ô/Ð/ØŒ?�eÒ#Ð#Ø�LŠL� d¤oÑ5Ñ6Ô6Ð6ØŒ?�eÒ#Ð#Ø�LŠL� d¤oÑ5Ñ6Ô6Ð6Øð 	=Ø˜SŸXšX¥c­#¨u¡o¤oÑ6Ô6Ñ6¸Ñ<Ð<Øˆrr!   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚcompareAttributesr   ÚG0r5   r7   r    r   r   r+   r=   © r!   r   r   r      s›   € € € € € ðð ð	Ðð ”
ØØØØØØØð)ð )ð )ð )ð( €Z��˜	 2 q¨!Ñ,Ô,Ñ-Ô-ð)ð )ñ .Ô-ð)ðð ð ð ð r!   r   r"   r#   r$   z=Use twisted.conch.insults.text.assembleFormattedText instead.ztwisted.conch.insults.helperÚCharacterAttributec                   óö  — e Zd ZdZdD ]'Zedz   Ze                     d¦  «        Z ee¦  «         Œ(dZ	dZ
dZdZd	Z e¦   «         Z e¦   «         Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdCd„ZdCd„ZdCd„ZdCd„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)„ Z0d*„ Z1d+„ Z2d,„ Z3d-„ Z4d.„ Z5d/„ Z6dCd0„Z7dCd1„Z8dCd2„Z9d3„ Z:d4„ Z;d5„ Z<d6„ Z=d7„ Z>d8„ Z?d9„ Z@d:„ ZAd;„ ZBd<„ ZCd=„ ZDdDd?„ZEd@„ ZFdA„ ZGdBS )EÚTerminalBufferz)
    An in-memory terminal emulator.
    )s   UP_ARROWs
   DOWN_ARROWs   RIGHT_ARROWs
   LEFT_ARROWs   HOMEs   INSERTs   DELETEs   ENDs   PGUPs   PGDNs   F1s   F2s   F3s   F4s   F5s   F6s   F7s   F8s   F9s   F10s   F11s   F12s    = object()Úasciió   	ó   éP   é   ó    c                 ó(   — | j         |         |         S r   )Úlines)r   ÚxÚys      r   ÚgetCharacterzTerminalBuffer.getCharacter¤   s   € ØŒz˜!Œ}˜QÔÐr!   c                 ó.   — |                       ¦   «          d S r   )Úreset©r   s    r   ÚconnectionMadezTerminalBuffer.connectionMade§   s   € Ø�
Š
‰Œˆˆˆr!   c                 ó|   — t          |                     dd¦  «        ¦  «        D ]}|                      |¦  «         ŒdS )z¡
        Add the given printable bytes to the terminal.

        Line feeds in L{bytes} will be replaced with carriage return / line
        feed pairs.
        ó   
s   
N)r   ÚreplaceÚinsertAtCursor)r   ÚdataÚbs      r   ÚwritezTerminalBuffer.writeª   sJ   € õ ˜4Ÿ<š<¨¨wÑ7Ô7Ñ8Ô8ð 	#ð 	#ˆAØ×Ò Ñ"Ô"Ð"Ð"ð	#ð 	#r!   c                 ó0   — t          | j        fi | j        ¤ŽS r   )r   ÚactiveCharsetÚgraphicRenditionrU   s    r   Ú_currentFormattingStatez&TerminalBuffer._currentFormattingState´   s   € Ý Ô 2ÐLÐL°dÔ6KÐLÐLÐLr!   c                 óJ  — |dk    r	d| _         dS |dk    r|                      ¦   «          dS |t          j                             d¦  «        v rÖ| j         | j        k    r|                      ¦   «          ||                      ¦   «         f}| j         	                    t          j        j        ¦  «        rG|g| j        | j                 | j         | j         …<   | j        | j                                      ¦   «          n|| j        | j                 | j         <   | xj         dz  c_         dS dS )aä  
        Add one byte to the terminal at the cursor and make consequent state
        updates.

        If b is a carriage return, move the cursor to the beginning of the
        current row.

        If b is a line feed, move the cursor to the next row or scroll down if
        the cursor is already in the last row.

        Otherwise, if b is printable, put it at the cursor position (inserting
        or overwriting as dictated by the current mode) and move the cursor.
        ó   r   rX   rH   r$   N)rP   Ú_scrollDownÚstringÚ	printableÚencodeÚwidthÚnextLinera   ÚmodesÚgetr   ÚIRMrO   rQ   Úpop)r   r\   Úchs      r   rZ   zTerminalBuffer.insertAtCursor·   s  € ð �Š:ˆ:ØˆDŒFˆFˆFØ�%ŠZˆZØ×ÒÑÔÐÐÐØ•&Ô"×)Ò)¨'Ñ2Ô2Ð2Ð2ØŒv˜œÒ#Ð#Ø—’‘”�Ø�T×1Ò1Ñ3Ô3Ð4ˆBØŒz�~Š~�gœmÔ/Ñ0Ô0ð 0Ø79°d�”
˜4œ6Ô" 4¤6¨D¬F ?Ñ3Ø”
˜4œ6Ô"×&Ò&Ñ(Ô(Ð(Ð(à-/�”
˜4œ6Ô" 4¤6Ñ*ØˆFŒF�a‰KˆFŒFˆFˆFð 3Ð2r!   c                 ó:   ‡ — ˆ fd„t          |¦  «        D ¦   «         S )Nc                 óF   •— g | ]}‰j         ‰                     ¦   «         f‘ŒS rD   )Úvoidra   ©Ú.0Úir   s     €r   ú
<listcomp>z-TerminalBuffer._emptyLine.<locals>.<listcomp>Õ   s,   ø€ ÐRÐRÐRÀ�”˜D×8Ò8Ñ:Ô:Ð;ÐRÐRÐRr!   )Úrange©r   rh   s   ` r   Ú
_emptyLinezTerminalBuffer._emptyLineÔ   s#   ø€ ØRÐRÐRÐRÅUÈ5Á\Ä\ÐRÑRÔRÐRr!   c                 óÞ   — | xj         dz  c_         | j         | j        k    rL| xj         dz  c_         | j        d= | j                             |                      | j        ¦  «        ¦  «         d S d S )Nr$   r   )rQ   ÚheightrO   r0   rx   rh   rU   s    r   rd   zTerminalBuffer._scrollDown×   sj   € ØˆŒ�!‰ˆŒØŒ6�T”[Ò Ð ØˆFŒF�a‰KˆFŒFØ”
˜1�ØŒJ×Ò˜dŸošo¨d¬jÑ9Ô9Ñ:Ô:Ð:Ð:Ð:ð !Ð r!   c                 óÄ   — | xj         dz  c_         | j         dk     rDd| _         | j        d= | j                             d|                      | j        ¦  «        ¦  «         d S d S )Nr$   r   éÿÿÿÿ)rQ   rO   Úinsertrx   rh   rU   s    r   Ú	_scrollUpzTerminalBuffer._scrollUpÞ   s_   € ØˆŒ�!‰ˆŒØŒ6�AŠ:ˆ:ØˆDŒFØ”
˜2�ØŒJ×Ò˜a §¢°´Ñ!<Ô!<Ñ=Ô=Ð=Ð=Ð=ð ˆ:r!   r$   c                 ó@   — t          d| j        |z
  ¦  «        | _        d S ©Nr   )ÚmaxrQ   ©r   Úns     r   ÚcursorUpzTerminalBuffer.cursorUpå   ó   € Ý�Q˜œ ™
Ñ#Ô#ˆŒˆˆr!   c                 óP   — t          | j        dz
  | j        |z   ¦  «        | _        d S ©Nr$   )Úminrz   rQ   r‚   s     r   Ú
cursorDownzTerminalBuffer.cursorDownè   s#   € Ý�T”[ 1‘_ d¤f¨q¡jÑ1Ô1ˆŒˆˆr!   c                 ó@   — t          d| j        |z
  ¦  «        | _        d S r€   )r�   rP   r‚   s     r   ÚcursorBackwardzTerminalBuffer.cursorBackwardë   r…   r!   c                 óJ   — t          | j        | j        |z   ¦  «        | _        d S r   )rˆ   rh   rP   r‚   s     r   ÚcursorForwardzTerminalBuffer.cursorForwardî   s   € Ý�T”Z ¤¨!¡Ñ,Ô,ˆŒˆˆr!   c                 ó"   — || _         || _        d S r   ©rP   rQ   )r   ÚcolumnÚlines      r   ÚcursorPositionzTerminalBuffer.cursorPositionñ   s   € ØˆŒØˆŒˆˆr!   c                 óJ   — | j         j        | _        | j         j        | _        d S r   )ÚhomerP   rQ   rU   s    r   Ú
cursorHomezTerminalBuffer.cursorHomeõ   s   € Ø””ˆŒØ””ˆŒˆˆr!   c                 ó.   — |                       ¦   «          d S r   )rd   rU   s    r   ÚindexzTerminalBuffer.indexù   s   € Ø×ÒÑÔÐÐÐr!   c                 ó.   — |                       ¦   «          d S r   )r~   rU   s    r   ÚreverseIndexzTerminalBuffer.reverseIndexü   s   € Ø�ŠÑÔÐÐÐr!   c                 ó<   — d| _         |                      ¦   «          dS )zW
        Update the cursor position attributes and scroll down if appropriate.
        r   N)rP   rd   rU   s    r   ri   zTerminalBuffer.nextLineÿ   s#   € ð ˆŒØ×ÒÑÔÐÐÐr!   c                 ó,   — | j         | j        f| _        d S r   )rP   rQ   Ú_savedCursorrU   s    r   Ú
saveCursorzTerminalBuffer.saveCursor  s   € Ø!œV T¤VÐ,ˆÔÐÐr!   c                 ó2   — | j         \  | _        | _        | ` d S r   )rœ   rP   rQ   rU   s    r   ÚrestoreCursorzTerminalBuffer.restoreCursor	  s   € ØÔ*‰ˆŒ�”ØÐÐÐr!   c                 ó$   — |D ]}d| j         |<   Œd S )NT)rj   ©r   rj   r.   s      r   ÚsetModeszTerminalBuffer.setModes  s(   € Øð 	!ð 	!ˆAØ ˆDŒJ�q‰MˆMð	!ð 	!r!   c                 óB   — |D ]}	 | j         |= Œ# t          $ r Y Œw xY wd S r   )rj   ÚKeyErrorr¡   s      r   Ú
resetModeszTerminalBuffer.resetModes  sK   € Øð 	ð 	ˆAðØ”J˜q�M�MøÝð ð ð Ø�ðøøøð	ð 	ó   †�
›c                 ó$   — |D ]}d| j         |<   ŒdS )aH  
        Enable the given modes.

        Track which modes have been enabled so that the implementations of
        other L{insults.ITerminalTransport} methods can be properly implemented
        to respect these settings.

        @see: L{resetPrivateModes}
        @see: L{insults.ITerminalTransport.setPrivateModes}
        TN)ÚprivateModesr¡   s      r   ÚsetPrivateModeszTerminalBuffer.setPrivateModes  s-   € ð ð 	(ð 	(ˆAØ#'ˆDÔ˜aÑ Ð ð	(ð 	(r!   c                 óB   — |D ]}	 | j         |= Œ# t          $ r Y Œw xY wdS )zŠ
        Disable the given modes.

        @see: L{setPrivateModes}
        @see: L{insults.ITerminalTransport.resetPrivateModes}
        N)r¨   r¤   r¡   s      r   ÚresetPrivateModesz TerminalBuffer.resetPrivateModes&  sP   € ð ð 	ð 	ˆAðØÔ% aÐ(Ð(øÝð ð ð Ø�ðøøøð	ð 	r¦   c                 ó   — d| _         d S )NÚapp©Ú
keypadModerU   s    r   ÚapplicationKeypadModez$TerminalBuffer.applicationKeypadMode3  ó   € ØˆŒˆˆr!   c                 ó   — d| _         d S )NÚnumr®   rU   s    r   ÚnumericKeypadModez TerminalBuffer.numericKeypadMode6  r±   r!   c                 ó   — || j         |<   d S r   )Úcharsets)r   ÚcharSetÚwhichs      r   ÚselectCharacterSetz!TerminalBuffer.selectCharacterSet9  s   € Ø&ˆŒ�eÑÐÐr!   c                 ó(   — t           j        | _        d S r   )r   rC   r_   rU   s    r   ÚshiftInzTerminalBuffer.shiftIn<  ó   € Ý$œZˆÔÐÐr!   c                 ó(   — t           j        | _        d S r   )r   ÚG1r_   rU   s    r   ÚshiftOutzTerminalBuffer.shiftOut?  r¼   r!   c                 óf   ‡ ‡‡— ‰ j         Št          j        ‰ _         ‰ j        Šˆˆˆ fd„}|‰ _        d S )Nc                 ó0   •—  ‰| ¦  «         ‰` ‰‰_        d S r   ©rZ   r_   ©r\   ÚfÚoldActiveCharsetr   s    €€€r   rZ   z3TerminalBuffer.singleShift2.<locals>.insertAtCursorG  ó$   ø€ ØˆAˆa‰DŒDˆDØÐ#Ø!1ˆDÔÐÐr!   )r_   r   ÚG2rZ   ©r   rZ   rÄ   rÅ   s   ` @@r   ÚsingleShift2zTerminalBuffer.singleShift2B  óS   øøø€ ØÔ-ÐÝ$œZˆÔØÔˆð	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð
 -ˆÔÐÐr!   c                 óf   ‡ ‡‡— ‰ j         Št          j        ‰ _         ‰ j        Šˆˆˆ fd„}|‰ _        d S )Nc                 ó0   •—  ‰| ¦  «         ‰` ‰‰_        d S r   rÂ   rÃ   s    €€€r   rZ   z3TerminalBuffer.singleShift3.<locals>.insertAtCursorS  rÆ   r!   )r_   r   ÚG3rZ   rÈ   s   ` @@r   ÚsingleShift3zTerminalBuffer.singleShift3N  rÊ   r!   c                 óÆ  — |D �]\}|t           j        k    rddddt          t          dœ| _        Œ,|t           j        k    rd| j        d<   ŒG|t           j        k    rd| j        d<   Œb|t           j        k    rd| j        d<   Œ}|t           j        k    rd| j        d<   Œ˜	 t          |¦  «        }t          |cxk    rt          t          z   k    rn n|t          z
  | j        d<   ŒÝt          |cxk    rt          t          z   k    rn n|t          z
  | j        d	<   �Œ| j                             d
|¬¦  «         �Œ1# t          $ r  | j                             d
|¬¦  «         Y �ŒZw xY wd S )NF©r   r   r   r   r   r   Tr   r   r   r   r   r   z-Unknown graphic rendition attribute: {attr!r})Úattr)r   ÚNORMALr5   r7   r`   r1   r2   r3   r4   Úintr6   ÚN_COLORSr8   Ú_logÚerrorÚ
ValueError)r   Ú
attributesÚar*   s       r   ÚselectGraphicRenditionz%TerminalBuffer.selectGraphicRenditionZ  s½  € Øð !	ñ !	ˆAØ•G”NÒ"Ð"à!Ø!&Ø"Ø$)Ý"'Ý"'ð)ð )�Ô%Ð%ð •g”lÒ"Ð"Ø04�Ô% fÑ-Ð-Ø•gÔ'Ò'Ð'Ø59�Ô% kÑ2Ð2Ø•g”mÒ#Ð#Ø15�Ô% gÑ.Ð.Ø•gÔ+Ò+Ð+Ø8<�Ô% nÑ5Ð5ðÝ˜A™œ�Aõ " QÐ?Ð?Ò?Ð?­*µxÑ*?Ò?Ð?Ð?Ð?Ð?Ø>?Å*¹n˜Ô-¨lÑ;Ð;Ý# qÐAÐAÒAÐA­J½Ñ,AÒAÐAÐAÐAÐAØ>?Å*¹n˜Ô-¨lÑ;Ñ;àœ	ŸšØKÐRSð (ñ ô ð ñ øõ "ð ð ð Ø”I—O’OØGÈað $ñ ô ð ð ñ ðøøøð+!	ð !	s   ÂD4Ä4&EÅEc                 óT   — |                       | j        ¦  «        | j        | j        <   d S r   )rx   rh   rO   rQ   rU   s    r   Ú	eraseLinezTerminalBuffer.eraseLine~  s$   € Ø!Ÿ_š_¨T¬ZÑ8Ô8ˆŒ
�4”6ÑÐÐr!   c                 ó‚   — | j         | j        z
  }|                      |¦  «        | j        | j                 | j        d …<   d S r   )rh   rP   rx   rO   rQ   rw   s     r   ÚeraseToLineEndzTerminalBuffer.eraseToLineEnd�  s;   € Ø”
˜TœVÑ#ˆØ'+§¢°uÑ'=Ô'=ˆŒ
�4”6Ô˜4œ6˜8˜8Ñ$Ð$Ð$r!   c                 óz   — |                       | j        dz   ¦  «        | j        | j                 d | j        dz   …<   d S r‡   )rx   rP   rO   rQ   rU   s    r   ÚeraseToLineBeginningz#TerminalBuffer.eraseToLineBeginning…  s7   € Ø+/¯?ª?¸4¼6ÀA¹:Ñ+FÔ+FˆŒ
�4”6Ô˜<˜TœV a™Z˜<Ñ(Ð(Ð(r!   c                 óR   ‡ — ˆ fd„t          ‰ j        ¦  «        D ¦   «         ‰ _        d S )Nc                 óD   •— g | ]}‰                      ‰j        ¦  «        ‘ŒS rD   ©rx   rh   rr   s     €r   ru   z/TerminalBuffer.eraseDisplay.<locals>.<listcomp>‰  s'   ø€ ÐNÐNÐN°a�d—o’o d¤jÑ1Ô1ÐNÐNÐNr!   )rv   rz   rO   rU   s   `r   ÚeraseDisplayzTerminalBuffer.eraseDisplayˆ  s,   ø€ ØNÐNÐNÐN½5ÀÄÑ;MÔ;MÐNÑNÔNˆŒ
ˆ
ˆ
r!   c                 ó®   ‡ — ‰                       ¦   «          ‰ j        ‰ j        z
  dz
  }ˆ fd„t          |¦  «        D ¦   «         ‰ j        ‰ j        dz   d …<   d S )Nr$   c                 óD   •— g | ]}‰                      ‰j        ¦  «        ‘ŒS rD   rã   rr   s     €r   ru   z4TerminalBuffer.eraseToDisplayEnd.<locals>.<listcomp>Ž  s'   ø€ Ð#WÐ#WÐ#WÀA D§O¢O°D´JÑ$?Ô$?Ð#WÐ#WÐ#Wr!   )rÞ   rz   rQ   rv   rO   )r   rz   s   ` r   ÚeraseToDisplayEndz TerminalBuffer.eraseToDisplayEnd‹  s^   ø€ Ø×ÒÑÔÐØ”˜tœvÑ%¨Ñ)ˆØ#WÐ#WÐ#WÐ#WÍÈvÉÌÐ#WÑ#WÔ#WˆŒ
�4”6˜A‘:�<�<Ñ Ð Ð r!   c                 óŽ   ‡ — ‰                       ¦   «          ˆ fd„t          ‰ j        ¦  «        D ¦   «         ‰ j        d ‰ j        …<   d S )Nc                 óD   •— g | ]}‰                      ‰j        ¦  «        ‘ŒS rD   rã   rr   s     €r   ru   z:TerminalBuffer.eraseToDisplayBeginning.<locals>.<listcomp>’  s'   ø€ ÐSÐSÐSÀ §¢°´
Ñ ;Ô ;ÐSÐSÐSr!   )rà   rv   rQ   rO   rU   s   `r   ÚeraseToDisplayBeginningz&TerminalBuffer.eraseToDisplayBeginning�  sI   ø€ Ø×!Ò!Ñ#Ô#Ð#ØSÐSÐSÐSÅUÈ4Ì6Á]Ä]ÐSÑSÔSˆŒ
�8�T”V�8ÑÐÐr!   c                 óð   — | j         | j                 | j        | j        |z   …= | j         | j                                      |                      t          | j        | j        z
  |¦  «        ¦  «        ¦  «         d S r   )rO   rQ   rP   Úextendrx   rˆ   rh   r‚   s     r   ÚdeleteCharacterzTerminalBuffer.deleteCharacter”  sb   € ØŒJ�t”vÔ˜tœv¨¬°©
Ð2Ð3ØŒ
�4”6Ô×!Ò! $§/¢/µ#°d´jÀ4Ä6Ñ6IÈ1Ñ2MÔ2MÑ"NÔ"NÑOÔOÐOÐOÐOr!   c                 ó„   ‡ — ˆ fd„t          |¦  «        D ¦   «         ‰ j        ‰ j        ‰ j        …<   ‰ j        ‰ j        d …= d S )Nc                 óD   •— g | ]}‰                      ‰j        ¦  «        ‘ŒS rD   rã   rr   s     €r   ru   z-TerminalBuffer.insertLine.<locals>.<listcomp>™  s'   ø€ Ð&UÐ&UÐ&UÀq t§¢°t´zÑ'BÔ'BÐ&UÐ&UÐ&Ur!   )rv   rO   rQ   rz   r‚   s   ` r   Ú
insertLinezTerminalBuffer.insertLine˜  sH   ø€ Ø&UÐ&UÐ&UÐ&UÍEÐRSÉHÌHÐ&UÑ&UÔ&UˆŒ
�4”6˜DœF�?Ñ#ØŒJ�t”{�}�}Ð%Ð%Ð%r!   c                 óœ   ‡ — ‰ j         ‰ j        ‰ j        |z   …= ‰ j                              ˆ fd„t          |¦  «        D ¦   «         ¦  «         d S )Nc                 óD   •— g | ]}‰                      ‰j        ¦  «        ‘ŒS rD   rã   rr   s     €r   ru   z-TerminalBuffer.deleteLine.<locals>.<listcomp>ž  s'   ø€ ÐIÐIÐI¸1˜4Ÿ?š?¨4¬:Ñ6Ô6ÐIÐIÐIr!   )rO   rQ   rì   rv   r‚   s   ` r   Ú
deleteLinezTerminalBuffer.deleteLineœ  sQ   ø€ ØŒJ�t”v ¤¨¡
Ð*Ð+ØŒ
×ÒÐIÐIÐIÐIÅÀaÁÄÐIÑIÔIÑJÔJÐJÐJÐJr!   c                 ó   — | j         | j        fS r   r�   rU   s    r   ÚreportCursorPositionz#TerminalBuffer.reportCursorPosition   s   € Ø”˜œÐÐr!   c                 ó"  — t          j        dd¦  «        | _        dx| _        | _        i | _        i | _        |                      t           j        j        t           j        j	        g¦  «         d| _
        t           j        | _        ddddt          t          dœ| _        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        i| _        |                      ¦   «          d S )Nr   r­   FrÐ   )r   ÚVectorr”   rP   rQ   rj   r¨   r©   Ú	AUTO_WRAPÚCURSOR_MODEÚnumericKeypadrC   r_   r5   r7   r`   ÚCS_USr¾   rÇ   ÚCS_ALTERNATErÍ   ÚCS_ALTERNATE_SPECIALr¶   rä   rU   s    r   rT   zTerminalBuffer.reset£  sÞ   € Ý”N 1 aÑ(Ô(ˆŒ	ØÐˆŒ�”ØˆŒ
ØˆÔØ×ÒÝÔ!Ô+­WÔ-AÔ-MÐNñ	
ô 	
ð 	
ð #ˆÔÝ$œZˆÔàØØØ!ÝÝð!
ð !
ˆÔõ ŒJ�œÝŒJ�œÝŒJ�Ô,ÝŒJ�Ô4ð	
ˆŒð 	×ÒÑÔÐÐÐr!   c                 ó@   — t          dt          |¦  «        ¦  «         d S )NzCould not handle)ÚprintÚrepr)r   Úbufs     r   ÚunhandledControlSequencez'TerminalBuffer.unhandledControlSequence½  s   € ÝÐ ¥$ s¡)¤)Ñ,Ô,Ð,Ð,Ð,r!   c                 óL  — g }| j         D ]†}g }d}|D ]M\  }}|| j        ur%|                     |¦  «         t          |¦  «        }Œ3|                     | j        ¦  «         ŒN|                     d                     |d |…         ¦  «        ¦  «         Œ‡d                     |¦  «        S )Nr   r!   rX   )rO   rq   r0   ÚlenÚfillr9   )r   rO   ÚLr  Úlengthrn   rÑ   s          r   Ú	__bytes__zTerminalBuffer.__bytes__À  s°   € ØˆØ”ð 		1ð 		1ˆAØˆCØˆFØð *ð *‘��DØ˜TœYÐ&Ð&Ø—J’J˜r‘N”N�NÝ  ™XœX�F�Fà—J’J˜tœyÑ)Ô)Ð)Ð)Ø�LŠL˜Ÿš # g v g¤,Ñ/Ô/Ñ0Ô0Ð0Ð0Ø�zŠz˜%Ñ Ô Ð r!   c                 ó    — t          d¦  «        ‚)Nz%Unimplemented: TerminalBuffer.getHost©ÚNotImplementedErrorrU   s    r   ÚgetHostzTerminalBuffer.getHostÎ  ó   € å!Ð"IÑJÔJÐJr!   c                 ó    — t          d¦  «        ‚)Nz%Unimplemented: TerminalBuffer.getPeerr
  rU   s    r   ÚgetPeerzTerminalBuffer.getPeerÒ  r  r!   c                 ó    — t          d¦  «        ‚)Nz,Unimplemented: TerminalBuffer.loseConnectionr
  rU   s    r   ÚloseConnectionzTerminalBuffer.loseConnectionÖ  s   € å!Ð"PÑQÔQÐQr!   c                 ó    — t          d¦  «        ‚)Nz+Unimplemented: TerminalBuffer.writeSequencer
  ©r   r[   s     r   ÚwriteSequencezTerminalBuffer.writeSequenceÚ  s   € å!Ð"OÑPÔPÐPr!   c                 ó    — t          d¦  «        ‚)Nz5Unimplemented: TerminalBuffer.horizontalTabulationSetr
  rU   s    r   ÚhorizontalTabulationSetz&TerminalBuffer.horizontalTabulationSetÞ  s   € å!ØCñ
ô 
ð 	
r!   c                 ó    — t          d¦  «        ‚)Nz-Unimplemented: TerminalBuffer.tabulationClearr
  rU   s    r   ÚtabulationClearzTerminalBuffer.tabulationClearä  ó   € å!Ð"QÑRÔRÐRr!   c                 ó    — t          d¦  «        ‚)Nz0Unimplemented: TerminalBuffer.tabulationClearAllr
  rU   s    r   ÚtabulationClearAllz!TerminalBuffer.tabulationClearAllè  s   € å!Ð"TÑUÔUÐUr!   Tc                 ó    — t          d¦  «        ‚)Nz.Unimplemented: TerminalBuffer.doubleHeightLiner
  )r   Útops     r   ÚdoubleHeightLinezTerminalBuffer.doubleHeightLineì  s   € å!Ð"RÑSÔSÐSr!   c                 ó    — t          d¦  «        ‚)Nz-Unimplemented: TerminalBuffer.singleWidthLiner
  rU   s    r   ÚsingleWidthLinezTerminalBuffer.singleWidthLineð  r  r!   c                 ó    — t          d¦  «        ‚)Nz-Unimplemented: TerminalBuffer.doubleWidthLiner
  rU   s    r   ÚdoubleWidthLinezTerminalBuffer.doubleWidthLineô  r  r!   N)r$   )T)Hr>   r?   r@   rA   ÚkeyIDÚ	execBytesÚdecodeÚexecStrÚexecÚTABÚ	BACKSPACErh   rz   r  Úobjectrq   r	   rÕ   rR   rV   r]   ra   rZ   rx   rd   r~   r„   r‰   r‹   r�   r’   r•   r—   r™   ri   r�   rŸ   r¢   r¥   r©   r«   r°   r´   r¹   r»   r¿   rÉ   rÎ   rÚ   rÜ   rÞ   rà   rä   rç   rê   rí   rð   ró   rõ   rT   r  r  r  r  r  r  r  r  r  r  r   r"  rD   r!   r   rG   rG   x   s  € € € € € ðð ðð ð ˆð0 ˜NÑ*ˆ	Ø×"Ò" 7Ñ+Ô+ˆØˆˆW‰Œˆˆà
€CØ€Ià€EØ€Fà€DØˆ6‰8Œ8€DØˆ6‰8Œ8€Dð ð  ð  ðð ð ð#ð #ð #ðMð Mð Mðð ð ð:Sð Sð Sð;ð ;ð ;ð>ð >ð >ð$ð $ð $ð $ð2ð 2ð 2ð 2ð$ð $ð $ð $ð-ð -ð -ð -ðð ð ðð ð ðð ð ðð ð ðð ð ð-ð -ð -ðð ð ð!ð !ð !ðð ð ð(ð (ð (ðð ð ð ð  ð  ð ð  ð  ð'ð 'ð 'ð(ð (ð (ð(ð (ð (ð
-ð 
-ð 
-ð
-ð 
-ð 
-ð"ð "ð "ðH9ð 9ð 9ð>ð >ð >ðGð Gð GðOð Oð OðXð Xð Xð
Tð Tð TðPð Pð Pð Pð&ð &ð &ð &ðKð Kð Kð Kð ð  ð  ðð ð ð4-ð -ð -ð!ð !ð !ðKð Kð KðKð Kð KðRð Rð RðQð Qð Qð
ð 
ð 
ðSð Sð SðVð Vð VðTð Tð Tð TðSð Sð SðSð Sð Sð Sð Sr!   rG   c                   ó   — e Zd ZdS )ÚExpectationTimeoutN)r>   r?   r@   rD   r!   r   r,  r,  ù  s   € € € € € Ø€Dr!   r,  c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zde	fd„Z
dS )	ÚExpectableBufferr   c                 óH   — t                                | ¦  «         g | _        d S r   )rG   rV   Ú
_expectingrU   s    r   rV   zExpectableBuffer.connectionMade   s!   € Ý×%Ò% dÑ+Ô+Ð+ØˆŒˆˆr!   c                 ód   — t                                | |¦  «         |                      ¦   «          d S r   )rG   r]   Ú_checkExpectedr  s     r   r]   zExpectableBuffer.write  s0   € Ý×Ò˜T 4Ñ(Ô(Ð(Ø×ÒÑÔÐÐÐr!   c                 óH   — t                                | ¦  «         d| _        d S r€   )rG   r•   Ú_markrU   s    r   r•   zExpectableBuffer.cursorHome  s!   € Ý×!Ò! $Ñ'Ô'Ð'ØˆŒ
ˆ
ˆ
r!   c                 óp   — |                      t          ¦   «         ¦  «         |                      ¦   «          d S r   )Úerrbackr,  r2  )r   Úds     r   Ú_timeoutExpectedz!ExpectableBuffer._timeoutExpected  s3   € Ø	�	Š	Õ$Ñ&Ô&Ñ'Ô'Ð'Ø×ÒÑÔÐÐÐr!   c                 óà  — |                       ¦   «         | j        d …         }| j        rÅ| j        d         \  }}}|r|                     ¦   «         s	| j        d= Œ7|                     |¦  «        D ]t}|r|                     ¦   «          | j        d= | xj        |                     ¦   «         z  c_        ||                     ¦   «         d …         }|                     |¦  «          nd S | j        °Ãd S d S r€   )r  r4  r0  ÚactiveÚfinditerÚcancelÚendÚcallback)r   ÚsÚexprÚtimerÚdeferredÚmatchs         r   r2  zExpectableBuffer._checkExpected  s  € Ø�NŠNÑÔ˜TœZ˜\˜\Ô*ˆØŒoð 	Ø$(¤O°AÔ$6Ñ!ˆD�%˜Øð ˜UŸ\š\™^œ^ð Ø”O AÐ&ØØŸš qÑ)Ô)ð 	ð 	�Øð #Ø—L’L‘N”N�NØ”O AÐ&Ø�
”
˜eŸiši™kœkÑ)�
”
Ø�e—i’i‘k”k�m�mÔ$�Ø×!Ò! %Ñ(Ô(Ð(Ø�à�ð Œoð 	ð 	ð 	ð 	ð 	r!   Nc                 óò   — t          j        ¦   «         }d }|r|                     || j        |¦  «        }| j                             t          j        |¦  «        ||f¦  «         |                      ¦   «          |S r   )	r   ÚDeferredÚ	callLaterr8  r0  r0   ÚreÚcompiler2  )r   Ú
expressionÚtimeoutÚ	schedulerr7  rA  s         r   ÚexpectzExpectableBuffer.expect"  su   € ÝŒNÑÔˆØˆØð 	KØ×'Ò'¨°Ô1FÈÑJÔJˆEØŒ×Ò¥¤
¨:Ñ 6Ô 6¸¸qÐAÑBÔBÐBØ×ÒÑÔÐØˆr!   )r>   r?   r@   r4  rV   r]   r•   r8  r2  r   rL  rD   r!   r   r.  r.  ý  s   € € € € € Ø€Eðð ð ðð ð ðð ð ðð ð ðð ð ð$ *.¸ð ð ð ð ð ð r!   r.  )rE   rG   r.  ),rA   rG  re   Úzope.interfacer   Úincrementalr   Útwisted.conch.insultsr   Útwisted.internetr   r   r   Útwisted.loggerr	   Útwisted.pythonr
   Útwisted.python.compatr   Útwisted.python.deprecater   r   r6   r8   rv   r7   ÚREDÚGREENÚYELLOWÚBLUEÚMAGENTAÚCYANr5   rÔ   Ú_FormattingStateMixinr   rE   ÚITerminalTransportÚProtocolrG   Ú	Exceptionr,  r.  Ú__all__rD   r!   r   ú<module>r`     s  ðð
ð ð 
€	€	€	Ø €€€à &Ð &Ð &Ð &Ð &Ð &à Ð Ð Ð Ð Ð à )Ð )Ð )Ð )Ð )Ð )Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø !Ð !Ð !Ð !Ð !Ð !Ø *Ð *Ð *Ð *Ð *Ð *Ø +Ð +Ð +Ð +Ð +Ð +Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ Jà€
Ø€
ØBGÀ%ÈÁ(Ä(Ñ ?€€sˆE�6˜4 ¨$°°xðKð Kð Kð Kð K�Ô<ñ Kô Kð Kð\ &Ð à Ð Ø€GˆI�r˜1˜aÑ Ô ØCØ"Øñ	ô ð ð €ˆWÔ'Ñ(Ô(ð}Sð }Sð }Sð }Sð }S�XÔ&ñ }Sô }Sñ )Ô(ð}Sð@	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ð,ð ,ð ,ð ,ð ,�~ñ ,ô ,ð ,ð^ GÐ
FÐ
F€€€r!   