ó
    •JÕiŠh  ã                  ó’  • % S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKJr  SSKJr  SSKJrJr  SSKJrJrJr  SSKJr  SS	KJr  SS
KJr  Sr\(       a  S SKJrJrJrJ r J!r!  OS r S r! " S S\"5      r#\RH                  \RH                  \#4r%\&" \RN                  \RP                  \RR                  /5      r*Sr+\," \SS5      r-\," \SS5      r.SS jr// SQr00 r1S\2S'   \0 H  r3\/" \1\35        M     C3C/\Rh                  " S5      r5 \Rl                  r6S\2S'    " S S\5      r9g! \7 a     " S S5      r8\8r6 N f = f) é    )ÚannotationsN)Úioctlé   )Úcurses)ÚConsoleÚEvent)Ú	tcgetattrÚ	tcsetattrÚ	TermState)Útrace)Ú
EventQueue)ÚwlenF)ÚAbstractSetÚIOÚLiteralÚoverloadÚcastc                ó   • g ©N© )Úfuncs    ÚLib\_pyrepl\unix_console.pyÚ<lambda>r   1   s   € ˜Dó    c                ó   • U$ r   r   )ÚtypÚvals     r   r   r   2   s   € ™Cr   c                  ó,   ^ • \ rS rSrSU 4S jjrSrU =r$ )ÚInvalidTerminalé5   c                óB   >• [         TU ]  [        R                  U5        g r   )ÚsuperÚ__init__ÚerrnoÚEIO)ÚselfÚmessageÚ	__class__s     €r   r#   ÚInvalidTerminal.__init__6   s   ø€ Ü‰ÑœŸ™ GÕ,r   r   )r'   ÚstrÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r#   Ú__static_attributes__Ú__classcell__©r(   s   @r   r   r   5   s   ø† ÷-õ -r   r   ÚrepaintÚFIONREADÚ
TIOCGWINSZúdict[int, int]c                ó^   • SU-  n[        [        U5      (       a  X[        [        U5      '   g g )NzB%d)ÚhasattrÚtermiosÚgetattr)Ú
dictionaryÚrateÚbaudrate_names      r   Úadd_baudrate_if_supportedr?   G   s,   € Ø˜D‘L€MÜŒw˜×&Ñ&Ø6:”7œ7 MÓ2Ò3ð 'r   )r   én   i Â i°  é†   é–   i  i K  éÈ   i „ i`	  i,  i –  i  iÀ  é2   i á  iX  éK   i€%  Úratedicts   \$<([0-9]+)((?:/|\*){0,2})>ztype[select.poll]Úpollc                  ó.   • \ rS rSrS rS rSSS jjrSrg)	ÚMinimalPollév   c                ó   • g r   r   ©r&   s    r   r#   ÚMinimalPoll.__init__w   s   € Ør   c                ó   • Xl         g r   ©Úfd)r&   rP   Úflags      r   ÚregisterÚMinimalPoll.registerz   s   € Ø�Gr   Nc                ó°   • Uc(  [         R                   " U R                  // / 5      u  p#nU$ [         R                   " U R                  // / US-  5      u  p#nU$ )Néè  )ÚselectrP   )r&   ÚtimeoutÚrÚwÚes        r   rG   ÚMinimalPoll.poll~   sS   € Ø‰Ü Ÿ-š-¨¯©¨	°2°rÓ:‘��að ˆHô !Ÿ-š-¨¯©¨	°2°r¸7ÀT¹>ÓJ‘��aØˆHr   rO   r   )rW   úfloat | Noner+   z	list[int])r-   r.   r/   r0   r#   rR   rG   r1   r   r   r   rI   rI   v   s   † ò	ò	÷	ñ 	r   rI   c                  óº  ^ • \ rS rSr    S.       S/U 4S jjjrS rS0S jrS1S jrS2S jrS r	S r
S	 rS
 rS3S jrS4S5S jjrS6S7S jjrS r\(       a  S rOS rS rS rS rS r\(       a  S rOS rS r\S 5       rS8S jrS8S jrS rS rS r S r!S r"S  r#S! r$S9S" jr%S9S# jr&S9S$ jr'S% r(S& r)S' r*S( r+S) r,S* r-\.4S+ jr/\04     S:S, jjr1S-r2U =r3$ );ÚUnixConsoleéˆ   c                óÊ  >• [         TU ]  XX45        [        5       U l        U R                  R	                  U R
                  [        R                  5        SU l        SU l	        [        R                  " U=(       d    SU R                  5        X0l        [        R                  " 5       S:H  =(       a    [         R"                  " S5      S:H  U l         U R'                  [)        U R
                  5      [+        5       S9  [2         S(     S)S jj5       n[2        S*S j5       nS(S*S jjnU" S5      U l        U" SSS9U l        U" S5      U l        U" SSS9U l        U" SSS9U l        U" SSS9U l        U" SSS9U l         U" SSS9U l!        U" SSS9U l"        U" SSS9U l#        U" S5      U l$        U" SSS9U l%        U" SSS9U l&        U" SSS9U l'        U" SSS9U l(        U" S5      U l)        U" S SS9U l*        U" S!SS9U l+        U" S"SS9U l,        U" S#SS9U l-        U" S$SS9U l.        U" S%SS9U l/        U" S&SS9U l0        U" S'SS9U l1        U Re                  5         [g        U R
                  U Rh                  5      U l5        S	U l6        [n        Rn                  " [n        Rp                  U Rr                  5        g! [,         a!  n[/        SUR0                  S	    S
35      eSnAff = f)+a  
Initialize the UnixConsole.

Parameters:
- f_in (int or file-like object): Input file descriptor or object.
- f_out (int or file-like object): Output file descriptor or object.
- term (str): Terminal name.
- encoding (str): Encoding to use for I/O operations.
r   r   NÚDarwinÚTERM_PROGRAMÚApple_Terminal)Úignoreztermios failure (r   Ú)c                ó   • g r   r   ©ÚcapÚoptionals     r   Ú
_my_getstrÚ(UnixConsole.__init__.<locals>._my_getstr«   s   € ð r   c                ó   • g r   r   rg   s     r   rj   rk   °   s   € ØBEr   c                ód   • [         R                  " U 5      nU(       d  Uc  [        SU  S35      eU$ )Nz#terminal doesn't have the required z capability)r   Útigetstrr   )rh   ri   rX   s      r   rj   rk   ³   s7   € Ü—’ Ó$ˆAÞ ¡	Ü%Ø9¸#¸¸kÐJóð ð ˆHr   ÚbelÚcivisT)ri   ÚclearÚcnormÚcubÚcub1ÚcudÚcud1ÚcufÚcuf1ÚcupÚcuuÚcuu1Údch1ÚdchÚelÚhpaÚichÚich1ÚindÚpadÚriÚrmkxÚsmkx)F)rh   r*   ri   zLiteral[False]r+   Úbytes)rh   r*   ri   Úboolr+   zbytes | None):r"   r#   rG   ÚpollobrR   Úinput_fdrV   ÚPOLLINÚinput_bufferÚinput_buffer_posr   Ú	setuptermÚ	output_fdÚtermÚplatformÚsystemÚosÚgetenvÚis_apple_terminalÚ_UnixConsole__input_fd_setr	   Ú	frozensetÚ_errorÚRuntimeErrorÚargsr   Ú_belÚ_civisÚ_clearÚ_cnormÚ_cubÚ_cub1Ú_cudÚ_cud1Ú_cufÚ_cuf1Ú_cupÚ_cuuÚ_cuu1Ú_dch1Ú_dchÚ_elÚ_hpaÚ_ichÚ_ich1Ú_indÚ_padÚ_riÚ_rmkxÚ_smkxÚ_UnixConsole__setup_movementr   ÚencodingÚevent_queueÚcursor_visibleÚsignalÚSIGCONTÚ_sigcont_handler)r&   Úf_inÚf_outr�   r´   rZ   rj   r(   s          €r   r#   ÚUnixConsole.__init__‰   s»  ø€ ô  	‰Ñ˜ dÔ5ä“fˆŒØ�‰×Ñ˜TŸ]™]¬F¯M©MÔ:ØˆÔØ !ˆÔÜ×Ò˜Ÿ  t§~¡~Ô6ØŒ	ä�OŠOÓ Ñ)÷ >Ü—	’	˜.Ó)Ð-=Ñ=ð 	Ôð
	AØ×Ñ¤	¨$¯-©-Ó 8ÄÃÐÑMô 
à16ð	Øð	Ø .ð	àô	ó 
ð	ô 
ÛEó 
ØEö	ñ ˜uÓ%ˆŒ	Ù  °4Ñ8ˆŒÙ  Ó)ˆŒÙ  °4Ñ8ˆŒÙ˜u¨tÑ4ˆŒ	Ù °Ñ6ˆŒ
Ù˜u¨tÑ4ˆŒ	Ù °Ñ6ˆŒ
Ù˜u¨tÑ4ˆŒ	Ù °Ñ6ˆŒ
Ù˜uÓ%ˆŒ	Ù˜u¨tÑ4ˆŒ	Ù °Ñ6ˆŒ
Ù °Ñ6ˆŒ
Ù˜u¨tÑ4ˆŒ	Ù˜dÓ#ˆŒÙ˜u¨tÑ4ˆŒ	Ù˜u¨tÑ4ˆŒ	Ù °Ñ6ˆŒ
Ù˜u¨tÑ4ˆŒ	Ù˜u¨tÑ4ˆŒ	Ù˜d¨TÑ2ˆŒÙ °Ñ6ˆŒ
Ù °Ñ6ˆŒ
à×ÑÔä% d§m¡m°T·]±]ÓCˆÔØˆÔä�Š”f—n‘n d×&;Ñ&;Õ<øôc ó 	AÜÐ!2°1·6±6¸!±9°+¸QÐ?Ó@Ð@ûð	Aús   Ã+J7 Ê7
K"ËKËK"c                óD   • U R                  5         U R                  5         g r   )ÚrestoreÚprepare©r&   ÚsignumÚframes      r   r¹   ÚUnixConsole._sigcont_handlerÛ   s   € Ø�‰ŒØ�‰�r   c                ó~   • [        U R                  =(       a"    U R                  [        U R                  5      :  5      $ r   )rˆ   rŒ   r�   ÚlenrL   s    r   Úmore_in_bufferÚUnixConsole.more_in_bufferß   s6   € ÜØ×Ñ÷ ?Ø×%Ñ%¬¨D×,=Ñ,=Ó(>Ñ>ó
ð 	
r   c                óf  • U R                  5       (       d&  [        R                  " U R                  S5      U l        U R                  U R
                  U R
                  U-    nU =R
                  [        U5      -  sl        U R
                  [        U R                  5      :¼  a  SU l        SU l        U$ )Né'  r   r   )rÆ   r“   ÚreadrŠ   rŒ   r�   rÅ   )r&   ÚnÚrets      r   Ú__readÚUnixConsole.__readå   s�   € Ø×"Ñ"×$Ñ$Ü "§¢¨¯©°uÓ =ˆDÔà×Ñ × 5Ñ 5¸×8MÑ8MÐPQÑ8QÐRˆØ×Ò¤ S£Ñ)ÕØ× Ñ ¤C¨×(9Ñ(9Ó$:Ó:Ø #ˆDÔØ$%ˆDÔ!Øˆ
r   c                ó   • Xl         g)zb
Change the encoding used for I/O operations.

Parameters:
- encoding (str): New encoding to use.
N)r´   )r&   r´   s     r   Úchange_encodingÚUnixConsole.change_encodingð   s	   € ð !�r   c                ó,	  • Uu  p4U R                   (       Gd   [        U R                  5      [        [        U5      U R                  5      :  aÉ  U R                  5         U R                  (       a9  U R                  S[        U R                  5      S-
  5        U R                  S5        S[        U R                  5      4U l        U R                  R                  S5        [        U R                  5      [        [        U5      U R                  5      :  a  MÉ  Oa[        U R                  5      [        U5      :  a?  U R                  R                  S5        [        U R                  5      [        U5      :  a  M?  [        U5      U R                  :”  a  SU l         U R                  U l        U R                  u  pVU R                  =pxU R                  n	XH:  a  UnOPXHU	-   :¼  a  XI-
  S-   nO@US:”  a:  [        U5      X‰-   :  a)  [        [        U5      U	-
  S5      nUR                  S5        U R                  XwU	-    n
XX‰-    nXx:”  aš  U R                  (       a‰  U R                  5         U R                  U R                  SS5        SU4U l        [!        Xx-
  5       HA  nU R                  U R                  5        U
R#                  S5        U
R%                  SS5        MC     O¹Xx:  a´  U R&                  (       a£  U R                  5         U R                  U R                  U R                  S-
  S5        SXpR                  -   S-
  4U l        [!        X‡-
  5       H@  nU R                  U R&                  5        U
R#                  S5        U
R                  S5        MB     X€l        [)        [!        XˆU	-   5      X«5       H   u  nnnXï:w  d  M  U R+                  XÞXõ5        M"     [        U5      nU[        U
5      :  a\  U R                  5         U R                  SU5        SU4U l        U R                  U R,                  5        US-  nU[        U
5      :  a  M\  U R/                  5         UR1                  5       U l        U R3                  X45        U R5                  5         g)z£
Refresh the console screen.

Parameters:
- screen (list): List of strings representing the screen contents.
- c_xy (tuple): Cursor position (x, y) on the screen.
r   r   Ú
Ú éÿÿÿÿN)Ú_UnixConsole__gone_tallrÅ   ÚscreenÚminÚheightÚ_UnixConsole__hide_cursorÚ_UnixConsole__moveÚ_UnixConsole__writeÚposxyÚappendÚ_UnixConsole__move_tallÚ_UnixConsole__offsetÚmaxr°   Ú_UnixConsole__write_coder¥   ÚrangeÚpopÚinsertr®   ÚzipÚ _UnixConsole__write_changed_linerª   Ú_UnixConsole__show_cursorÚcopyÚmove_cursorÚflushoutput)r&   r×   Úc_xyÚcxÚcyÚpxÚpyÚ
old_offsetÚoffsetrÙ   ÚoldscrÚnewscrÚiÚyÚoldlineÚnewlines                   r   ÚrefreshÚUnixConsole.refreshù   s™  € ð ‰ˆØ××ÐÜ�d—k‘kÓ"¤S¬¨V«°d·k±kÓ%BÓBØ×"Ñ"Ô$Ø—;—;Ø—K‘K ¤3 t§{¡{Ó#3°aÑ#7Ô8Ø—L‘L Ô&Ø¤ D§K¡KÓ 0Ð0�”
Ø—‘×"Ñ" 2Ô&ô �d—k‘kÓ"¤S¬¨V«°d·k±kÓ%BÕBøô �d—k‘kÓ"¤S¨£[Ó0Ø—‘×"Ñ" 2Ô&ô �d—k‘kÓ"¤S¨£[Õ0ô ˆv‹;˜Ÿ™Ó$Ø ˆDÔØ×*Ñ*ˆDŒKà—‘‰ˆØ"Ÿm™mÐ+ˆ
Ø—‘ˆð ‹;Ø‰FØ˜F‘?Ó"Ø‘[ 1‘_‰FØ�a‹ZœC ›K¨&©/Ó9Üœ˜V› vÑ-¨qÓ1ˆFØ�M‰M˜"Ôà—‘˜Z°vÑ*=Ð>ˆØ ¡Ð1ˆð Ó 4§8§8Ø×ÑÔ Ø×Ñ˜dŸi™i¨¨AÔ.Ø˜J˜ˆDŒJÜ˜:Ñ.Ö/�Ø×!Ñ! $§(¡(Ô+Ø—
‘
˜2”Ø—‘˜a Ö$ò 0ð Ó  T§Y§YØ×ÑÔ Ø×Ñ˜dŸi™i¨¯©°q©¸!Ô<Ø˜J¯©Ñ4°qÑ8Ð8ˆDŒJÜ˜6Ñ.Ö/�Ø×!Ñ! $§)¡)Ô,Ø—
‘
˜1”Ø—‘˜bÖ!ñ 0ð
 Œô ”�v¨™Ó/°Ö@ñ	
ØØØàÕ!Ø×)Ñ)¨!°gÖBñ Aô �‹KˆØ”#�f“+‹oØ×ÑÔ Ø�K‰K˜˜1ÔØ˜A˜ˆDŒJØ×Ñ˜dŸh™hÔ'Ø�‰FˆAð ”#�f“+�oð 	×ÑÔà—k‘k“mˆŒØ×Ñ˜Ô Ø×ÑÕr   c                óø   • X R                   :  d  X R                   U R                  -   :¼  a&  U R                  R                  [	        SS5      5        gU R                  X5        X4U l        U R                  5         g)zy
Move the cursor to the specified position on the screen.

Parameters:
- x (int): X coordinate.
- y (int): Y coordinate.
ÚscrollN)rà   rÙ   rµ   rå   r   rÛ   rÝ   rë   ©r&   Úxrö   s      r   rê   ÚUnixConsole.move_cursorM  s\   € ð �}‰}Ó §]¡]°T·[±[Ñ%@Ó @Ø×Ñ×#Ñ#¤E¨(°DÓ$9Õ:à�K‰K˜ÔØ˜ˆDŒJØ×ÑÕr   c                ó„  • / U l         [        U R                  5      U l        U R                  R	                  5       nU=R
                  [        R                  [        R                  -  [        R                  -  ) -  sl        U=R                  [        R                  ) -  sl
        U=R                  [        R                  [        R                  -  ) -  sl        U=R                  [        R                  -  sl        U=R
                  [        R                   -  sl        U=R"                  [        R$                  [        R&                  -  [        R(                  -  ) -  sl        U=R"                  [        R*                  -  sl        SUR,                  [        R.                  '   SUR,                  [        R0                  '   U R3                  U5        U R4                  (       a!  [6        R8                  " U R:                  S5        / U l        U R?                  5       u  U l         U l!        SU l"        SU l#        U RH                  U l%        SU l&        U RO                  U RP                  5         [R        RR                  " [R        RT                  U RV                  5      U l,        U R]                  5         g! [Z         a     Nf = f)z2
Prepare the console for input/output operations.
r   r   s   [?7l©r   r   N)/Ú_UnixConsole__bufferr	   rŠ   Ú_UnixConsole__svtermstateré   Úiflagr:   ÚINPCKÚISTRIPÚIXONÚoflagÚOPOSTÚcflagÚCSIZEÚPARENBÚCS8ÚBRKINTÚlflagÚICANONÚECHOÚIEXTENÚISIGÚccÚVMINÚVTIMEr–   r•   r“   Úwriter�   r×   ÚgetheightwidthrÙ   ÚwidthrÝ   rÖ   Ú_UnixConsole__move_shortrÛ   rà   Ú_UnixConsole__maybe_write_coder²   r·   ÚSIGWINCHÚ_UnixConsole__sigwinchÚold_sigwinchÚ
ValueErrorÚ$_UnixConsole__enable_bracketed_paste)r&   Úraws     r   r¿   ÚUnixConsole.prepare\  sË  € ð ˆŒä& t§}¡}Ó5ˆÔØ× Ñ ×%Ñ%Ó'ˆØ�	Š	”w—}‘}¤w§~¡~Ñ5¼¿¹ÑDÐEÑE�	Ø�	Š	”w—}‘}Ð%Ñ%�	Ø�	Š	”w—}‘}¤w§~¡~Ñ5Ð6Ñ6�	Ø�	Š	”W—[‘[Ñ �	Ø�	Š	”W—^‘^Ñ#�	Ø�	Š	”w—~‘~¬¯©Ñ4´w·~±~ÑEÐFÑF�	Ø�	Š	”W—\‘\Ñ!�	Ø ˆ�‰Œw�|‰|ÑØ !ˆ�‰Œw�}‰}ÑØ×Ñ˜CÔ ð ×!×!Ü�HŠH�T—^‘^ [Ô1àˆŒØ"&×"5Ñ"5Ó"7ÑˆŒ�T”ZàˆŒ
ØˆÔØ×'Ñ'ˆŒØˆŒà×Ñ §
¡
Ô+ð	Ü &§¢¬f¯o©o¸t¿¹Ó OˆDÔð 	×%Ñ%Õ'øô ó 	Ùð	ús   É-4J2 Ê2
J?Ê>J?c                ó  • U R                  5         U R                  U R                  5        U R                  5         U R	                  U R
                  5        U R                  (       a!  [        R                  " U R                  S5        [        U S5      (       a3   [        R                  " [        R                  U R                  5        U ?gg! [         a1  nSSKnUR!                  5       UR#                  5       L a  Ue SnAN:SnAff = f)z*
Restore the console to the default state
s   [?7hr  r   N)Ú%_UnixConsole__disable_bracketed_paster  r±   rë   r–   r  r•   r“   r  r�   r9   r·   r  r  r  Ú	threadingÚcurrent_threadÚmain_thread)r&   rZ   r%  s      r   r¾   ÚUnixConsole.restore„  sÎ   € ð 	×&Ñ&Ô(Ø×Ñ §
¡
Ô+Ø×ÑÔØ×Ñ˜D×.Ñ.Ô/à×!×!Ü�HŠH�T—^‘^ [Ô1ä�4˜×(Ñ(ðÜ—’œfŸo™o¨t×/@Ñ/@ÔAð
 Ñ!ð )øô ó Û Ø×+Ñ+Ó-°×1FÑ1FÓ1HÒHØ�Gô Iûðús   Â/C Ã
D	Ã'DÄD	c                óN   • [        SUS9  U R                  R                  U5        g)z.
Push a character to the console event queue.
zpush char {char!r})ÚcharN)r   rµ   Úpush)r&   r*  s     r   Ú	push_charÚUnixConsole.push_char™  s#   € ô 	Ð"¨Ò.Ø×Ñ×Ñ˜dÕ#r   c                óŒ  • U(       d  U R                  SS9(       d  gU R                  R                  5       (       aD    U R                  U R	                  S5      5         U R                  R                  5       (       a  MD  U R                  R                  5       $ ! [
         aŸ  nUR                  [        R                  :X  aD  U R                  R                  5       (       d  U R                  R                  5       s SnA$  SnAMÊ  UR                  [        R                  :X  a  [        [        R                  5      ee SnAff = f)z­
Get an event from the console event queue.

Parameters:
- block (bool): Whether to block until an event is available.

Returns:
- Event: Event object from the event queue.
r   )rW   Nr   )Úwaitrµ   Úemptyr,  Ú_UnixConsole__readÚOSErrorr$   ÚEINTRÚgetr%   Ú
SystemExit)r&   ÚblockÚerrs      r   Ú	get_eventÚUnixConsole.get_event   sì   € ö ˜TŸY™Y¨q˜YÖ1Øà×Ñ×$Ñ$×&Ñ&ØðØ—N‘N 4§;¡;¨q£>Ô2ð ð ×Ñ×$Ñ$×&Ó&ð  ×Ñ×#Ñ#Ó%Ð%øô ó 	Ø—y‘y¤E§K¡KÓ/Ø#×/Ñ/×5Ñ5×7Ñ7Ø#'×#3Ñ#3×#7Ñ#7Ó#9Õ9å$ØŸ™¤e§i¡iÓ/Ü(¬¯©Ó3Ð3àûð	ús$   ¾ B Â
EÂ$AD>Ã:EÄ8D>Ä>Ec                óÄ   • U R                   R                  5       (       + =(       d;    U R                  5       =(       d$    [        U R                  R                  U5      5      $ )z!
Wait for events on the console.
)rµ   r0  rÆ   rˆ   r‰   rG   )r&   rW   s     r   r/  ÚUnixConsole.wait¿  sK   € ð
 × Ñ ×&Ñ&Ó(Ô(÷ /Ø×"Ñ"Ó$÷/ä�D—K‘K×$Ñ$ WÓ-Ó.ð	
r   c                óT   • U(       a  U R                  5         gU R                  5         g)zS
Set the visibility of the cursor.

Parameters:
- visible (bool): Visibility flag.
N)rè   rÚ   )r&   Úvisibles     r   Úset_cursor_visÚUnixConsole.set_cursor_visÉ  s   € ö Ø×ÑÕ à×ÑÕ r   c                óV  •  [        [        R                  S   5      [        [        R                  S   5      4$ ! [        [        [
        4 aY     [        U R                  [        S5      nO! [         a      gf = f[        R                  " SU5      SS u  p#U(       d   gX#4s $ f = f)ú^
Get the height and width of the console.

Returns:
- tuple: Height and width of the console.
ÚLINESÚCOLUMNSs           ©é   éP   Úhhhhr   é   )Úintr“   ÚenvironÚKeyErrorÚ	TypeErrorr  r   rŠ   r6   r2  ÚstructÚunpack)r&   ÚsizerÙ   r  s       r   r  ÚUnixConsole.getheightwidth×  s”   € ð
%Üœ2Ÿ:™: gÑ.Ó/´´R·Z±ZÀ	Ñ5JÓ1KÐKÐKøÜœi¬Ð4ó %ð"Ü  §¡´
¸KÓH‘DøÜó "Ú!ð"úä &§¢¨f°dÓ ;¸A¸aÐ @‘�ÞÙ!Ø�}Ò$ð%ús9   ‚7: ºB(ÁA,Á+B(Á,
A:Á6B(Á9A:Á:&B(Â"B(Â'B(c                óª   •  [        [        R                  S   5      [        [        R                  S   5      4$ ! [        [        [
        4 a     gf = f)rA  rB  rC  rD  )rI  r“   rJ  rK  rL  r  rL   s    r   r  rP  ì  sG   € ðÜœ2Ÿ:™: gÑ.Ó/´´R·Z±ZÀ	Ñ5JÓ1KÐKÐKøÜœi¬Ð4ó Ùðús   ‚7: ºAÁAc                ób   • [         R                  " U R                  [         R                  5        g)z+
Discard any pending input on the console.
N)r:   ÚtcflushrŠ   ÚTCIFLUSHrL   s    r   ÚforgetinputÚUnixConsole.forgetinputø  s   € ô 	�Š˜Ÿ™¤w×'7Ñ'7Õ8r   c                óö   • U R                    HZ  u  pU(       a  U R                  U5        M  [        R                  " U R                  UR                  U R                  S5      5        M\     U R                   SS2	 g)z
Flush the output buffer.
ÚreplaceN)r  Ú_UnixConsole__tputsr“   r  r�   Úencoder´   )r&   ÚtextÚiscodes      r   rë   ÚUnixConsole.flushoutputþ  sR   € ð !ŸMœM‰LˆDÞØ—‘˜TÖ"ä—’˜Ÿ™¨¯©°T·]±]ÀIÓ)NÖOñ	 *ð
 �M‰Mš!Ñr   c                óV  • [        U R                  5      S-
  nUS:¼  a5  U R                  U   (       d!  US-  nUS:¼  a  U R                  U   (       d  M!  U R                  S[        XR                  U R
                  -   S-
  5      5        U R                  S5        U R                  5         g)z8
Finish console operations and flush the output buffer.
r   r   z
N)rÅ   r×   rÛ   rØ   rÙ   rà   rÜ   rë   )r&   rö   s     r   ÚfinishÚUnixConsole.finish	  sƒ   € ô �—‘Ó˜qÑ ˆØ�1‹f˜TŸ[™[¨Ÿ^Ø�‰FˆAð �1‹f˜TŸ[™[¨Ÿ^™^à�‰�A”s˜1Ÿk™k¨D¯M©MÑ9¸AÑ=Ó>Ô?Ø�‰�VÔØ×ÑÕr   c                óZ   • U R                  U R                  5        U R                  5         g)z
Emit a beep sound.
N)r  r›   rë   rL   s    r   ÚbeepÚUnixConsole.beep  s"   € ð 	×Ñ §	¡	Ô*Ø×ÑÕr   c                óX  • [        SSS5      nU R                  R                  5       (       dy  U R                  R                  5       nU=R                  UR                  -  sl        U=R
                  UR
                  -  sl        U R                  R                  5       (       d  My  [        R                  " S[        U R                  [        S5      5      S   nU R                  U5      n[        X@R                  S5      nU=R                  U-  sl        U=R
                  U-  sl        U$ )úi
Get pending events from the console event queue.

Returns:
- Event: Pending event from the event queue.
ÚkeyrÔ   r   rõ   s       r   rX  )r   rµ   r0  r4  Údatar!  rM  rN  r   rŠ   r5   r1  r*   r´   ©r&   rZ   Úe2Úamountr!  rg  s         r   Ú
getpendingÚUnixConsole.getpending  s×   € ô �e˜R Ó%ˆAà×&Ñ&×,Ñ,×.Ñ.Ø×%Ñ%×)Ñ)Ó+�Ø—’˜"Ÿ'™'Ñ!•Ø—’˜Ÿ™‘•ð ×&Ñ&×,Ñ,×.Ó.ô
 —]’] 3¬¨d¯m©m¼XÀ{Ó(SÓTÐUVÑWˆFØ—+‘+˜fÓ%ˆCÜ�sŸM™M¨9Ó5ˆDØ�FŠF�d‰N�FØ�EŠE�S‰L�EØˆHr   c                óö  • [        SSS5      nU R                  R                  5       (       dy  U R                  R                  5       nU=R                  UR                  -  sl        U=R
                  UR
                  -  sl        U R                  R                  5       (       d  My  SnU R                  U5      n[        X@R                  S5      nU=R                  U-  sl        U=R
                  U-  sl        U$ )re  rf  rÔ   r   rÉ   rX  )	r   rµ   r0  r4  rg  r!  r1  r*   r´   rh  s         r   rk  rl  4  s¹   € ô �e˜R Ó%ˆAà×&Ñ&×,Ñ,×.Ñ.Ø×%Ñ%×)Ñ)Ó+�Ø—’˜"Ÿ'™'Ñ!•Ø—’˜Ÿ™‘•ð ×&Ñ&×,Ñ,×.Ó.ð
 ˆFØ—+‘+˜fÓ%ˆCÜ�sŸM™M¨9Ó5ˆDØ�FŠF�d‰N�FØ�EŠE�S‰L�EØˆHr   c                ó†   • U R                  U R                  5        SU l        U R                  U l        SU l        / U l        g)z
Clear the console screen.
r   r  N)râ   r�   rÖ   rß   rÛ   rÝ   r×   rL   s    r   rq   ÚUnixConsole.clearI  s9   € ð 	×Ñ˜$Ÿ+™+Ô&ØˆÔØ×&Ñ&ˆŒØˆŒ
Øˆ�r   c                óp   •  SS K nUR                  5       (       a  UR                  $ g ! [         a     g f = f©Nr   )ÚposixÚImportErrorÚ_is_inputhook_installedÚ
_inputhook)r&   rr  s     r   Ú
input_hookÚUnixConsole.input_hookS  s@   € ð	Ûð ×(Ñ(×*Ñ*Ø×#Ñ#Ð#ð +øô ó 	Ùð	ús   ‚( ¨
5´5c                óF   • [         R                  " U R                  S5        g )Ns   [?2004h©r“   r  r�   rL   s    r   Ú__enable_bracketed_pasteÚ$UnixConsole.__enable_bracketed_paste\  ó   € Ü
�Š�—‘ Õ0r   c                óF   • [         R                  " U R                  S5        g )Ns   [?2004lry  rL   s    r   Ú__disable_bracketed_pasteÚ%UnixConsole.__disable_bracketed_paste_  r|  r   c                ó|  •  U R                  (       a#  U R                  (       a  U R
                  U l        O?U R                  (       a#  U R                  (       a  U R                  U l        O[        S5      eU R                  (       a#  U R                  (       a  U R                  U l        O?U R                  (       a#  U R                  (       a  U R                   U l        O[        S5      eU R"                  (       a  U R"                  U l        O?U R&                  (       a'  [(        R*                  " U R&                  S5      U l        OSU l        U R,                  (       a  U R,                  U l        O?U R0                  (       a'  [(        R*                  " U R0                  S5      U l        OSU l        U R2                  U l        g)zC
Set up the movement functions based on the terminal capabilities.
z"insufficient terminal (horizontal)z insufficient terminal (vertical)r   N)r«   Ú_UnixConsole__move_x_hpaÚ_UnixConsole__move_xrŸ   r£   Ú_UnixConsole__move_x_cub_cufr    r¤   Ú_UnixConsole__move_x_cub1_cuf1r™   r¦   r¡   Ú_UnixConsole__move_y_cuu_cudÚ_UnixConsole__move_yr§   r¢   Ú_UnixConsole__move_y_cuu1_cud1r¨   r|   r©   r   Útparmr­   r�   r¬   r  rÛ   rL   s    r   Ú__setup_movementÚUnixConsole.__setup_movementb  s   € ð à�Y�Y˜4Ÿ9Ÿ9Ø ×1Ñ1ˆD�MØ�Z�Z˜DŸJŸJØ ×3Ñ3ˆD�MäÐCÓDÐDà�9�9˜ŸŸØ ×1Ñ1ˆD�MØ�Z�Z˜DŸJŸJØ ×3Ñ3ˆD�MäÐAÓBÐBà�:�:ØŸ
™
ˆD�IØ�Y�YÜŸš T§Y¡Y°Ó2ˆD�IàˆDŒIà�:�:ØŸ
™
ˆD�IØ�Y�YÜŸš T§Y¡Y°Ó2ˆD�IàˆDŒIà×'Ñ'ˆ�r   c                ó¨  • [        [        U5      [        U5      5      nSnSnSnSn	U H  n
X”:¼  a    OU	[        U
5      -  n	US-  nM     Xu:  a@  X&   X6   :X  a6  X6   S:w  a.  U[        X6   5      -  nUS-  nXu:  a  X&   X6   :X  a
  X6   S:w  a  M.  X&S  X6S-   S  :X  a¢  U R                  (       a‘  XR                  S   :X  a&  XpR                  S   :”  a  X(U X8S-   US-    :X  a  UnUn[        X6   5      nU R	                  Xq5        U R                  U R                  5        U R                  X6   5        X{-   U4U l        GOüXu:  aj  X&S-   S  X6S-   S  :X  aZ  [        X&   5      [        X6   5      :X  a>  [        X6   5      nU R	                  Xq5        U R                  X6   5        X{-   U4U l        GO�U R                  (       Ga  U R                  (       añ  [        U5      U R                  :X  aØ  U[        U5      S-
  :  aÆ  X6S-   S X&S :X  a¹  U R                  5         U R	                  U R                  S-
  U5        U R                  S-
  U4U l        U R                  U R                  5        [        X6   5      nU R	                  Xq5        U R                  U R                  5        U R                  X6   5        US-   U4U l        OyU R                  5         U R	                  Xq5        [        U5      [        U5      :”  a  U R                  U R                  5        U R                  X6S  5        [        U5      U4U l        SU;   a  U R                  SU5        g g )Nr   r   ÚrH  rÕ   éþÿÿÿ)rØ   r   r�   rÝ   rÛ   râ   rÜ   r|   r  rÚ   rª   rê   )r&   rö   r÷   rø   Úpx_coordÚminlenÚx_posÚx_coordÚpx_posÚjÚcÚcharacter_widths               r   Ú__write_changed_lineÚ UnixConsole.__write_changed_line†  s  € ô
 ”T˜'“]¤D¨£MÓ2ˆØˆØˆàˆØˆÛˆAØ‹}ÙØ”�a“‰LˆAØ�a‰KŠFñ	 ð ÓØ‘ '¡.Ó0Ø‘ &Ó(à”t˜G™NÓ+Ñ+ˆGØ�Q‰JˆEð ÓØ‘ '¡.Ó0Ø‘ &Õ(ð �6ˆ?˜g¨a¡i kÐ2Ó2°t·y·yà—Z‘Z ‘]Ó"ØŸj™j¨™mÓ+Ø 5Ð)¨W¸a±ZÀ%È!Á)Ð-LÓLà�Ø"�Ü" 7¡>Ó2ˆOØ�K‰K˜Ô#Ø×Ñ˜dŸi™iÔ(Ø�L‰L˜™Ô(Ø Ñ2°AÐ5ˆDŽJð ÓØ ™	˜Ð$¨¸±	°Ð(<Ó<Ü�W‘^Ó$¬¨W©^Ó(<Ó<ä" 7¡>Ó2ˆOØ�K‰K˜Ô#Ø�L‰L˜™Ô(Ø Ñ2°AÐ5ˆDŽJð �I�IˆIØ—	—	Ü�W“ §¡Ó+Øœ$˜w›-¨!Ñ+Ó+Ø ™	 BÐ'¨7¸Ð+<Ó<à×ÑÔ Ø�K‰K˜Ÿ
™
 Q™¨Ô*ØŸ™ a™¨Ð*ˆDŒJØ×Ñ˜dŸi™iÔ(ä" 7¡>Ó2ˆOØ�K‰K˜Ô#Ø×Ñ˜dŸi™iÔ(Ø�L‰L˜™Ô(Ø(¨1Ñ,¨aÐ/ˆD�Jð ×ÑÔ Ø�K‰K˜Ô#Ü�G‹}œt G›}Ó,Ø×!Ñ! $§(¡(Ô+Ø�L‰L˜ ˜Ô)Ü˜g›¨Ð)ˆDŒJà�WÓð ×Ñ˜Q Õ"ð	 r   c                ó>   • U R                   R                  US45        g rq  )r  rÞ   )r&   r[  s     r   Ú__writeÚUnixConsole.__writeÝ  s   € Ø�‰×Ñ˜d A˜YÕ'r   c                óh   • U R                   R                  [        R                  " U/UQ76 S45        g ©Nr   )r  rÞ   r   rˆ  ©r&   Úfmtrš   s      r   Ú__write_codeÚUnixConsole.__write_codeà  s'   € Ø�‰×ÑœfŸlšl¨3Ð6°Ò6¸Ð:Õ;r   c                ó:   • U(       a  U R                   " U/UQ76   g g r   )râ   r�  s      r   Ú__maybe_write_codeÚUnixConsole.__maybe_write_codeã  s   € ÞØ×Ò˜cÐ) DÔ)ð r   c                óö   • U R                   c   eU R                  c   eXR                  S   -
  nUS:”  a  U R                  X R                   -  5        g US:  a   U R                  U* U R                  -  5        g g ©Nr   r   )r¢   r§   rÝ   râ   ©r&   rö   Údys      r   Ú__move_y_cuu1_cud1ÚUnixConsole.__move_y_cuu1_cud1ç  sr   € Ø�z‰zÑ%Ð%Ð%Ø�z‰zÑ%Ð%Ð%Ø—‘˜A‘ÑˆØ�‹6Ø×Ñ˜b§:¡:™oÕ.Ø�!‹VØ×Ñ ˜s d§j¡jÑ0Õ1ð r   c                ó´   • XR                   S   -
  nUS:”  a  U R                  U R                  U5        g US:  a  U R                  U R                  U* 5        g g r¥  )rÝ   râ   r¡   r¦   r¦  s      r   Ú__move_y_cuu_cudÚUnixConsole.__move_y_cuu_cudð  óO   € Ø—‘˜A‘ÑˆØ�‹6Ø×Ñ˜dŸi™i¨Õ,Ø�!‹VØ×Ñ˜dŸi™i¨"¨Õ-ð r   c                ób   • XR                   S   :w  a  U R                  U R                  U5        g g rq  )rÝ   râ   r«   )r&   rþ   s     r   Ú__move_x_hpaÚUnixConsole.__move_x_hpa÷  s)   € Ø—
‘
˜1‘ÓØ×Ñ˜dŸi™i¨Õ+ð r   c                óø   • U R                   c   eU R                  c   eXR                  S   -
  nUS:”  a  U R                  U R                   U-  5        g US:  a   U R                  U R                  U* -  5        g g rq  )r¤   r    rÝ   râ   ©r&   rþ   Údxs      r   Ú__move_x_cub1_cuf1ÚUnixConsole.__move_x_cub1_cuf1û  st   € Ø�z‰zÑ%Ð%Ð%Ø�z‰zÑ%Ð%Ð%Ø—‘˜A‘ÑˆØ�‹6Ø×Ñ˜dŸj™j¨2™oÕ.Ø�!‹VØ×Ñ˜dŸj™j¨R¨CÑ0Õ1ð r   c                ó´   • XR                   S   -
  nUS:”  a  U R                  U R                  U5        g US:  a  U R                  U R                  U* 5        g g rq  )rÝ   râ   r£   rŸ   r²  s      r   Ú__move_x_cub_cufÚUnixConsole.__move_x_cub_cuf  r­  r   c                óH   • U R                  U5        U R                  U5        g r   )r‚  r†  rý   s      r   Ú__move_shortÚUnixConsole.__move_short  s   € Ø�‰�aÔØ�‰�aÕr   c                óÆ   • SX R                   -
  s=::  a  U R                  :  d  O   X R                   -
  5       eU R                  U R                  X R                   -
  U5        g rq  )rà   rÙ   râ   r¥   rý   s      r   Ú__move_tallÚUnixConsole.__move_tall  sI   € Ø�AŸ™Ñ%Õ3¨¯©Õ3ÐF°Q¿¹Ñ5FÓFÐ3Ø×Ñ˜$Ÿ)™) Q¯©Ñ%6¸Õ:r   c                óˆ   • U R                  5       u  U l        U l        U R                  R	                  [        SS 5      5        g )NÚresize)r  rÙ   r  rµ   rå   r   rÀ   s      r   Ú
__sigwinchÚUnixConsole.__sigwinch  s4   € Ø"&×"5Ñ"5Ó"7ÑˆŒ�T”ZØ×Ñ×Ñ¤ h°Ó 5Õ6r   c                ól   • U R                   (       a#  U R                  U R                  5        SU l         g g rq  )r¶   r  rœ   rL   s    r   Ú__hide_cursorÚUnixConsole.__hide_cursor  s*   € Ø××Ø×#Ñ# D§K¡KÔ0Ø"#ˆDÕð r   c                ól   • U R                   (       d#  U R                  U R                  5        SU l         g g rœ  )r¶   r  rž   rL   s    r   Ú__show_cursorÚUnixConsole.__show_cursor  s*   € Ø×"×"Ø×#Ñ# D§K¡KÔ0Ø"#ˆDÕð #r   c                ór  • U R                   (       dT  SU R                  S   4U l        U R                  S5        [        U R                  5      SU R
                  -  /-  nXl        g SU R                  4U l        U R                  SU R                  5        U R                  SU R
                  -  /-  nXl        g )Nr   r   ÚÚ )	rÖ   rÝ   rÜ   rÅ   r×   r  rà   rÛ   rÙ   )r&   Únss     r   r4   ÚUnixConsole.repaint!  s�   € Ø××Ø˜DŸJ™J q™MÐ)ˆDŒJØ�L‰L˜ÔÜ�T—[‘[Ó! V¨d¯j©jÑ%8Ð$9Ñ9ˆBØ�Kà˜DŸM™MÐ)ˆDŒJØ�K‰K˜˜4Ÿ=™=Ô)Ø—‘ ¨¯©Ñ 3Ð4Ñ4ˆBØ�Kr   c                ó–  • [         R                  U R                  R                  5      n UR	                  U5      nU(       d"  [
        R                  " U R                  U5        gUR                  5       u  pV[
        R                  " U R                  USU 5        XS n[        UR                  S5      5      nSUR                  S5      ;   a  XpR                  -  nU R                  (       a9  Ub6  X7-  S-  n[
        R                  " U R                  U R                  U-  5        O"[        R                  " [        U5      S-  5        GM   )zÇA Python implementation of the curses tputs function; the
curses one can't really be wrapped in a sane manner.

I have the strong suspicion that this is complexity that
will never do anyone any good.r   Nó   *rH  rU   g     @�@)rF   r4  r  ÚospeedÚsearchr“   r  r�   ÚspanrI  ÚgrouprÙ   r¯   ÚtimeÚsleepÚfloat)	r&   rž  ÚprogÚbpsÚmrþ   rö   ÚdelayÚncharss	            r   Ú__tputsÚUnixConsole.__tputs-  sî   € ô �l‰l˜4×-Ñ-×4Ñ4Ó5ˆØØ—‘˜CÓ ˆAÞÜ—’˜Ÿ™¨Ô-ØØ—6‘6“8‰DˆAÜ�HŠH�T—^‘^ S¨¨! WÔ-Ø�b�'ˆCÜ˜Ÿ™ ›
“OˆEØ�q—w‘w˜q“zÓ!ØŸ™Ñ$�Ø�y�y˜S™_Ø™+¨Ñ-�Ü—’˜Ÿ™¨¯©°VÑ);Õ<ä—
’
œ5 ›<¨&Ñ0Ô1ò r   c                óº   •  [        U R                  [        R                  U5        g! [        R                   a  nUR
                  S   U;  a  e  S nAgS nAff = f)NTr   F)r
   rŠ   r:   Ú	TCSADRAINÚerrorrš   )r&   Ústaterd   Útes       r   Ú__input_fd_setÚUnixConsole.__input_fd_setH  sN   € ð
	Ü�d—m‘m¤W×%6Ñ%6¸Ô>ð øô �}‰}ó 	Ø�w‰w�q‰z Ó'ØÜûð	ús   ‚%( ¨A¼AÁA).Ú__bufferÚ__gone_tallÚ__moveÚ__move_xÚ__move_yÚ__offsetÚ__svtermstater›   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  )r   r   rÔ   rÔ   )rº   úIO[bytes] | intr»   rì  r�   r*   r´   r*   )r+   rˆ   )rË   rI  r+   r‡   )r´   r*   r+   r,   )r*  zint | bytesr+   r,   )T)r6  rˆ   r+   zEvent | Noner   )rW   r\   r+   rˆ   )r+   r,   )rþ   rI  r+   r,   )rá  r   rd   zAbstractSet[int]r+   rˆ   )4r-   r.   r/   r0   r#   r¹   rÆ   r1  rÐ   rù   rê   r¿   r¾   r,  r8  r/  r>  r6   r  rU  rë   r_  rb  r5   rk  rq   Úpropertyrv  r   r$  r³   rç   rÜ   râ   r  r‡  r…  r�  r„  rƒ  r  rß   r  rÚ   rè   r4   Ú	delayprogrY  Ú_error_codes_to_ignorer–   r1   r2   r3   s   @r   r^   r^   ˆ   sd  ø† ð !"Ø!"ØØðP=àðP=ð ðP=ð ð	P=ð
 ÷P=ð P=òdô
ô	ô!òRòhò&(òP"ô*$ö&ö>
ò
!ö ó	%ò*
	ò9ò	ò	òö ó	ò.	ò*ð ñ$ó ð$ô1ô1ò"(òHU#òn(ò<ò*ò2ò.ô,ô2ô.òò;ò7ò$ò
$ò

ð !*ô 2ð< $:ðàðð !ðð 
÷	ó r   r^   )r<   r7   r=   rI  r+   r,   ):Ú
__future__r   r$   r“   ÚrerV   r·   rM  r:   rÔ  r‘   Úfcntlr   rÔ   r   Úconsoler   r   Úfancy_termiosr	   r
   r   r   Úunix_eventqueuer   Úutilsr   ÚTYPE_CHECKINGÚtypingr   r   r   r   r   r™   r   rà  r˜   r—   r%   ÚENXIOÚEPERMrï  ÚSIGWINCH_EVENTr;   r5   r6   r?   Úpotential_baudratesrF   Ú__annotations__r=   Úcompilerî  rG   ÚAttributeErrorrI   r^   r   r   r   Ú<module>r      sD  ðö, #ã Û 	Û 	Û Û Û Û Û Û Ý å ß #ß :Ñ :Ý Ý 'Ý ð €ö ß?Ö?á €HÙ€Dô-�lô -ð
 �-‰-˜Ÿ™ Ð	7€Ù" E§I¡I¨u¯{©{¸E¿K¹KÐ#HÓIÐ à€á�7˜J¨Ó-€Ù�W˜l¨DÓ1€
ô;òÐ ð. €ˆ.Ó Û€DÙ˜h¨Ö-ñ  ð 	Ð
#ð �JŠJÐ7Ó8€	ðØ$Ÿk™k€DÐ
Ó)ô,L�'õ Løð+ ó ÷ñ ð ‚Dð%ús   ÄD1 Ä1EÅE