Ë
    ý¸e‘/  ã                   óø   — d Z ddlmZ ddlmZ ddl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d„ Zd„ Zd„ Zd„ Z G d„ dej                  «      Z G d „ d!e«      Zy)"aï  This implements an ANSI (VT100) terminal emulator as a subclass of screen.

PEXPECT LICENSE

    This license is approved by the OSI and FSF as GPL-compatible.
        http://opensource.org/licenses/isc-license.txt

    Copyright (c) 2012, Noah Spurrier <noah@noah.org>
    PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY
    PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE
    COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES.
    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
    WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
    MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
    ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

é   )Úscreen)ÚFSMé    Nc                 óZ   — | j                   d   } |j                  | j                  «       y ©Nr   )ÚmemoryÚwrite_chÚinput_symbol©Úfsmr   s     ú./usr/lib/python3/dist-packages/pexpect/ANSI.pyÚDoEmitr   $   s#   € à�Z‰Z˜‰]€FØ€F‡O�O�C×$Ñ$Õ%ó    c                 óN   — | j                   j                  | j                  «       y ©N)r   Úappendr
   )r   s    r   ÚDoStartNumberr   )   s   € à‡J�J×Ñ�s×'Ñ'Õ(r   c                 óŒ   — | j                   j                  «       }|| j                  z   }| j                   j                  |«       y r   )r   Úpopr
   r   )r   Únss     r   ÚDoBuildNumberr   -   s4   € à	�‰�‰Ó	€BØ	ˆc×ÑÑ	€BØ‡J�J×Ñ�rÕr   c                 óD   — | j                   d   } |j                  «        y r   )r   Úcursor_backr   s     r   Ú	DoBackOner   3   ó   € à�Z‰Z˜‰]€FØ€F×ÑÕr   c                 óŒ   — t        | j                  j                  «       «      }| j                  d   } |j                  |«       y r   )Úintr   r   r   ©r   Úcountr   s      r   ÚDoBackr    8   ó4   € ä�—
‘
—‘Ó Ó!€EØ�Z‰Z˜‰]€FØ€F×Ñ˜Õr   c                 óD   — | j                   d   } |j                  «        y r   )r   Úcursor_downr   s     r   Ú	DoDownOner$   >   r   r   c                 óŒ   — t        | j                  j                  «       «      }| j                  d   } |j                  |«       y r   )r   r   r   r#   r   s      r   ÚDoDownr&   C   r!   r   c                 óD   — | j                   d   } |j                  «        y r   )r   Úcursor_forwardr   s     r   ÚDoForwardOner)   I   s   € à�Z‰Z˜‰]€FØ€F×ÑÕr   c                 óŒ   — t        | j                  j                  «       «      }| j                  d   } |j                  |«       y r   )r   r   r   r(   r   s      r   Ú	DoForwardr+   N   s4   € ä�—
‘
—‘Ó Ó!€EØ�Z‰Z˜‰]€FØ€F×Ñ˜5Õ!r   c                 óD   — | j                   d   } |j                  «        y r   )r   Úcursor_up_reverser   s     r   ÚDoUpReverser.   T   ó   € à�Z‰Z˜‰]€FØ€F×ÑÕr   c                 óD   — | j                   d   } |j                  «        y r   )r   Ú	cursor_upr   s     r   ÚDoUpOner2   Y   s   € à�Z‰Z˜‰]€FØ€F×ÑÕr   c                 óŒ   — t        | j                  j                  «       «      }| j                  d   } |j                  |«       y r   )r   r   r   r1   r   s      r   ÚDoUpr4   ^   s4   € ä�—
‘
—‘Ó Ó!€EØ�Z‰Z˜‰]€FØ€F×Ñ�eÕr   c                 óÔ   — t        | j                  j                  «       «      }t        | j                  j                  «       «      }| j                  d   } |j                  ||«       y r   )r   r   r   Úcursor_home©r   ÚcÚrr   s       r   ÚDoHomer:   d   sK   € äˆC�J‰J�N‰NÓÓ€AÜˆC�J‰J�N‰NÓÓ€AØ�Z‰Z˜‰]€FØ€F×Ñ˜˜!Õr   c                 óP   — d}d}| j                   d   } |j                  ||«       y )Nr   r   )r   r6   r7   s       r   ÚDoHomeOriginr<   k   s+   € à	€AØ	€AØ�Z‰Z˜‰]€FØ€F×Ñ˜˜!Õr   c                 óD   — | j                   d   } |j                  «        y r   )r   Ú
erase_downr   s     r   ÚDoEraseDownr?   r   s   € à�Z‰Z˜‰]€FØ€F×ÑÕr   c                 óò   — t        | j                  j                  «       «      }| j                  d   }|dk(  r |j                  «        y |dk(  r |j                  «        y |dk(  r |j
                  «        y y ©Nr   r   é   )r   r   r   r>   Úerase_upÚerase_screen©r   Úargr   s      r   ÚDoEraserG   w   sf   € ä
ˆc�j‰j�n‰nÓÓ
€CØ�Z‰Z˜‰]€FØ
ˆa‚xØˆ×ÑÕØ	�ŠØˆ�‰ÕØ	�ŠØˆ×ÑÕð 
r   c                 óD   — | j                   d   } |j                  «        y r   )r   Úerase_end_of_liner   s     r   ÚDoEraseEndOfLinerJ   ‚   r/   r   c                 óò   — t        | j                  j                  «       «      }| j                  d   }|dk(  r |j                  «        y |dk(  r |j                  «        y |dk(  r |j
                  «        y y rA   )r   r   r   rI   Úerase_start_of_lineÚ
erase_linerE   s      r   ÚDoEraseLinerN   ‡   sh   € ä
ˆc�j‰j�n‰nÓÓ
€CØ�Z‰Z˜‰]€FØ
ˆa‚xØ ˆ× Ñ Õ"Ø	�ŠØ"ˆ×"Ñ"Õ$Ø	�ŠØˆ×ÑÕð 
r   c                 óD   — | j                   d   } |j                  «        y r   )r   Úscroll_screenr   s     r   ÚDoEnableScrollrQ   ’   s   € à�Z‰Z˜‰]€FØ€F×ÑÕr   c                 óD   — | j                   d   } |j                  «        y r   )r   Úcursor_save_attrsr   s     r   ÚDoCursorSaverT   —   r/   r   c                 óD   — | j                   d   } |j                  «        y r   )r   Úcursor_restore_attrsr   s     r   ÚDoCursorRestorerW   œ   s   € à�Z‰Z˜‰]€FØ€F×ÑÕ!r   c                 óÔ   — | j                   d   }t        | j                   j                  «       «      }t        | j                   j                  «       «      } |j                  ||«       y r   )r   r   r   Úscroll_screen_rows)r   r   Úr2Úr1s       r   ÚDoScrollRegionr\   ¡   sK   € à�Z‰Z˜‰]€FÜ	ˆS�Z‰Z�^‰^ÓÓ	€BÜ	ˆS�Z‰Z�^‰^ÓÓ	€BØ€F×Ñ˜r "Õ%r   c                 óV   — | j                   d   }| j                   j                  «       }y r   )r   r   )r   r   Úmodes      r   ÚDoModer_   ¨   s   € à�Z‰Z˜‰]€FØ�:‰:�>‰>Ó�Dr   c                 óÆ   — | j                   d   }|g| _         t        dd«      }|j                  | j                  dz   | j                  z   dz   «       |j                  «        y )Nr   ÚlogÚaú,ú
)r   ÚopenÚwriter
   Úcurrent_stateÚclose)r   r   Úfouts      r   ÚDoLogrj   ®   sT   € à�Z‰Z˜‰]€FØ�€C„JÜ�˜Ó€DØ‡J�J�× Ñ  3Ñ&¨×):Ñ):Ñ:¸TÑAÔBØ‡J�J…Lr   c                   ó   — e Zd ZdZdd„Zy)Útermz²This class is an abstract, generic terminal.
    This does nothing. This is a placeholder that
    provides a common base class for other terminals
    such as an ANSI terminal. c                 óN   — t        j                   j                  | ||g|¢­i |¤Ž y r   )r   Ú__init__©Úselfr9   r8   ÚargsÚkwargss        r   rn   zterm.__init__½   s"   € ä�‰×Ñ˜t Q qÐ8¨$Ò8°Ó8r   N©é   éP   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rn   © r   r   rl   rl   ¶   s   „ ñ"ô
9r   rl   c                   óH   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚANSIz©This class implements an ANSI (VT100) terminal.
    It is a stream filter that recognizes ANSI terminal
    escape sequences and maintains the state of a screen object. c                 ó4  — t        j                  | ||g|¢­i |¤Ž t        j                  d| g«      | _        | j                  j	                  t
        d«       | j                  j                  dt        d«       | j                  j                  ddd d«       | j                  j                  dt
        d«       | j                  j                  ddd d«       | j                  j                  ddd d«       | j                  j                  ddd d«       | j                  j                  ddd d«       | j                  j                  d	dt        d«       | j                  j                  d
dt        d«       | j                  j                  ddt        d«       | j                  j                  ddt        d«       | j                  j                  ddt        d«       | j                  j                  ddd d«       | j                  j                  ddd d«       | j                  j                  dd d«       | j                  j                  ddd d«       | j                  j                  ddt        d«       | j                  j                  ddt        d«       | j                  j                  ddt        d«       | j                  j                  ddt         d«       | j                  j                  ddt"        d«       | j                  j                  ddt$        d«       | j                  j                  ddt&        d«       | j                  j                  ddt(        d«       | j                  j                  dd| j*                  d«       | j                  j                  ddd d«       | j                  j                  t,        j.                  dt0        d«       | j                  j                  t,        j.                  dt2        d«       | j                  j                  ddt4        d«       | j                  j                  ddt6        d«       | j                  j                  ddt8        d«       | j                  j                  ddt:        d«       | j                  j                  ddt<        d«       | j                  j                  ddt>        d«       | j                  j                  ddt@        d«       | j                  j                  dd| j*                  d«       | j                  j                  d d| jB                  d«       | j                  j                  t,        j.                  dt0        d!«       | j                  j                  t,        j.                  d!t2        d!«       | j                  j                  dd!| jD                  d«       | j                  j                  d"d!| jD                  d«       | j                  j                  d#dd d$«       | j                  j                  d$t
        d«       | j                  j                  t,        j.                  d$t0        d%«       | j                  j                  t,        j.                  d%t2        d%«       | j                  j                  d%t
        d«       | j                  j                  dd%tF        d«       | j                  j                  d&d%tF        d«       | j                  j                  dd%tH        d«       | j                  j                  dd%| j*                  d«       | j                  j                  d d%| jB                  d«       | j                  j                  d#d%d d'«       | j                  j                  d't
        d«       | j                  j                  t,        j.                  d't0        d(«       | j                  j                  t,        j.                  d(t2        d(«       | j                  j                  d(t
        d«       | j                  j                  dd(| j*                  d«       | j                  j                  d d(| jB                  d«       | j                  j                  d#d(d d'«       y ))NÚINITúÚESCú(ÚG0SCSú)ÚG1SCSÚAB012Ú7Ú8ÚMú>ú<ú=ú#ÚGRAPHICS_POUNDú[ÚELBÚHÚDÚBÚCÚAÚJÚKr9   Úmú?ÚMODECRAPÚNUMBER_1ÚlÚqÚMODECRAP_NUMÚhú;Ú	SEMICOLONÚNUMBER_2ÚfÚSEMICOLON_XÚNUMBER_X)%rl   rn   r   ÚstateÚset_default_transitionrj   Úadd_transition_anyr   Úadd_transitionÚadd_transition_listrT   rW   r.   r<   r   r$   r)   r2   r?   rJ   rQ   Údo_sgrÚstringÚdigitsr   r   r    r&   r+   r4   rG   rN   r_   Ú	do_decscaÚdo_modecrapr:   r\   ro   s        r   rn   zANSI.__init__Æ   s  € ä�‰�d˜1˜QÐ. Ò. vÒ.ô —W‘W˜f d VÓ,ˆŒ
Ø�
‰
×)Ñ)¬5°&Ô9Ø�
‰
×%Ñ% v¬v°vÔ>Ø�
‰
×!Ñ! 6¨6°4¸Ô?Ø�
‰
×%Ñ% u¬e°VÔ<Ø�
‰
×!Ñ! 3¨¨t°WÔ=Ø�
‰
×!Ñ! 3¨¨t°WÔ=Ø�
‰
×&Ñ&¨°¸$ÀÔGØ�
‰
×&Ñ&¨°¸$ÀÔGØ�
‰
×!Ñ! 3¨¬|¸VÔDØ�
‰
×!Ñ! 3¨¬ÀÔGØ�
‰
×!Ñ! 3¨¬{¸FÔCØ�
‰
×!Ñ! 3¨¬{¸FÔCØ�
‰
×!Ñ! 3¨¬{¸FÔCØ�
‰
×!Ñ! 3¨¨t°VÔ<Ø�
‰
×!Ñ! 3¨¨tÐ5EÔFØ�
‰
×%Ñ%Ð'7¸¸vÔFØ�
‰
×!Ñ! 3¨¨t°UÔ;à�
‰
×!Ñ! 3¨¬|¸VÔDØ�
‰
×!Ñ! 3¨¬y¸&ÔAØ�
‰
×!Ñ! 3¨¬y¸&ÔAØ�
‰
×!Ñ! 3¨¬|¸VÔDØ�
‰
×!Ñ! 3¨¬w¸Ô?Ø�
‰
×!Ñ! 3¨¬{¸FÔCØ�
‰
×!Ñ! 3¨Ô/?ÀÔHØ�
‰
×!Ñ! 3¨¬~¸vÔFØ�
‰
×!Ñ! 3¨¨t¯{©{¸FÔCØ�
‰
×!Ñ! 3¨¨t°ZÔ@Ø�
‰
×&Ñ&¬¯©°u¼mÈZÔXØ�
‰
×&Ñ&¬¯©°zÄ=ÐR\Ô]Ø�
‰
×!Ñ! 3¨
´F¸FÔCØ�
‰
×!Ñ! 3¨
´F¸FÔCØ�
‰
×!Ñ! 3¨
´I¸vÔFØ�
‰
×!Ñ! 3¨
´D¸&ÔAØ�
‰
×!Ñ! 3¨
´G¸VÔDØ�
‰
×!Ñ! 3¨
´KÀÔHØ�
‰
×!Ñ! 3¨
´F¸FÔCð 	�
‰
×!Ñ! 3¨
°D·K±KÀÔHà�
‰
×!Ñ! 3¨
°D·N±NÀFÔKð 	�
‰
×&Ñ&¬¯©°zÄ=ÐR`ÔaØ�
‰
×&Ñ&¬¯©°~Ä}ÐVdÔeØ�
‰
×!Ñ! 3¨¸×8HÑ8HÈ&ÔQØ�
‰
×!Ñ! 3¨¸×8HÑ8HÈ&ÔQð 	�
‰
×!Ñ! 3¨
°D¸+ÔFØ�
‰
×%Ñ% {´E¸6ÔBØ�
‰
×&Ñ&¬¯©°{ÄMÐS]Ô^Ø�
‰
×&Ñ&¬¯©°zÄ=ÐR\Ô]Ø�
‰
×%Ñ% z´5¸&ÔAØ�
‰
×!Ñ! 3¨
´F¸FÔCØ�
‰
×!Ñ! 3¨
´F¸FÔCØ�
‰
×!Ñ! 3¨
´NÀFÔKð 	�
‰
×!Ñ! 3¨
°D·K±KÀÔHà�
‰
×!Ñ! 3¨
°D·N±NÀFÔKØ�
‰
×!Ñ! 3¨
°D¸-ÔHð 	�
‰
×%Ñ% }´e¸VÔDØ�
‰
×&Ñ&¬¯©°}ÄmÐU_Ô`Ø�
‰
×&Ñ&¬¯©°zÄ=ÐR\Ô]Ø�
‰
×%Ñ% z´5¸&ÔAØ�
‰
×!Ñ! 3¨
°D·K±KÀÔHØ�
‰
×!Ñ! 3¨
°D·N±NÀFÔKØ�
‰
×!Ñ! 3¨
°D¸-ÕHr   c                 ó|   — t        |t        «      r| j                  |«      }| j                  j	                  |«       y)z4Process a single character. Called by :meth:`write`.N)Ú
isinstanceÚbytesÚ_decoder¥   Úprocess)rp   r8   s     r   r³   zANSI.process  s+   € ä�aœÔØ—‘˜Q“ˆAØ�
‰
×Ñ˜1Õr   c                 ó&   — | j                  |«       y r   )rf   )rp   r›   s     r   Úprocess_listzANSI.process_list  s   € à�
‰
�1�r   c                 óv   — t        |t        «      r| j                  |«      }|D ]  }| j                  |«       Œ y)zaProcess text, writing it to the virtual screen while handling
        ANSI escape codes.
        N)r°   r±   r²   r³   )rp   Úsr8   s      r   rf   z
ANSI.write#  s5   € ô �aœÔØ—‘˜Q“ˆAØò 	ˆAØ�L‰L˜�Oñ	r   c                  ó   — y r   rz   )rp   s    r   Úflushz
ANSI.flush,  s   € Ør   c                 ó°  — t        |t        «      r| j                  |«      }|d   }|dk(  r| j                  «        y|dk(  r| j	                  «        y|t        t        j                  «      k(  r| j                  «        y| j                  | j                  | j                  |«       | j                  }| j                  }| j                  «        || j                  k(  ry| j                  «        || j                  k7  r| j                  | j                  d«       y| j                  «        | j                  | j                  d«       | j!                  «        yy)zÏThis puts a character at the current cursor position. The cursor
        position is moved forward with wrap-around, but no scrolling is done if
        the cursor hits the lower-right corner of the screen. r   úNrd   r   )r°   r±   r²   ÚcrÚcrlfÚchrr   ÚBSr   Úput_absÚcur_rÚcur_cr(   r#   r6   Ú	scroll_uprM   )rp   ÚchÚold_rÚold_cs       r   r	   zANSI.write_ch/  s  € ô
 �bœ%Ô Ø—‘˜bÓ!ˆBð �‰Uˆà�Š;Ø�G‰GŒIØØ�Š;Ø�I‰IŒKØØ””V—Y‘Y“ÒØ×ÑÔØØ�‰�T—Z‘Z §¡¨RÔ0Ø—
‘
ˆØ—
‘
ˆØ×ÑÔØ�D—J‘JÒØ×ÑÔØ˜Ÿ
™
Ò"Ø× Ñ  $§*¡*¨aÕ0à—‘Ô!Ø× Ñ  $§*¡*¨aÔ0Ø—‘Õ!ð r   c                 ó2   — |j                   d   }|g|_         y)z&Select Graphic Rendition, e.g. color. r   N©r   ©rp   r   r   s      r   rª   zANSI.do_sgrP  ó   € à—‘˜A‘ˆØ�Xˆ�
r   c                 ó2   — |j                   d   }|g|_         y)z'Select character protection attribute. r   NrÈ   rÉ   s      r   r­   zANSI.do_decscaU  rÊ   r   c                 ó2   — |j                   d   }|g|_         y)z¿Handler for [?<number>h and [?<number>l. If anyone
        wanted to actually use these, they'd need to add more states to the
        FSM rather than just improve or override this method. r   NrÈ   rÉ   s      r   r®   zANSI.do_modecrapZ  s   € ð —‘˜A‘ˆØ�Xˆ�
r   Nrs   )rv   rw   rx   ry   rn   r³   rµ   rf   r¹   r	   rª   r­   r®   rz   r   r   r|   r|   Á   s9   „ ñEóQIòfòòòò"òBò
ó
r   r|   )ry   Ú r   r   r«   r   r   r   r   r    r$   r&   r)   r+   r.   r2   r4   r:   r<   r?   rG   rJ   rN   rQ   rT   rW   r\   r_   rj   rl   r|   rz   r   r   ú<module>rÎ      s«   ðñõ8 Ý Û ò
&ò
)òòò
òò
òò
"òò
ò
òòòò
	òò
	òò
ò
"ò
&òòô	9ˆF�M‰Mô 	9ô^ˆDõ ^r   