ó
    Âu„j{  ã                  óN  • S SK J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  \R                  S:X  d   e\(       d
  S SKrS S	KJr  S S
KJrJrJr  S SKJrJrJr  S SKJrJr  S SKJr  S SKJr  S SKJ r J!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,J-r-J.r.  SSK/J0r0  SSK1J2r2  SSK3J4r4  / SQr5Sr6Sr7Sr8Sr9Sr: " S S\25      r; " S S\;5      r< " S S 5      r= " S! S"5      r> " S# S$5      r?\
      S,S% j5       r@\
S-S& j5       rA " S' S(5      rB " S) S*\B5      rCS.S+ jrDg)/é    )ÚannotationsN)Úabstractmethod)Úget_running_loop)ÚAbstractContextManagerÚcontextmanageré   )ÚSPHINX_AUTODOC_RUNNINGÚwin32)Úwindll)ÚCallableÚIterableÚIterator)ÚArrayÚbyrefÚpointer)ÚDWORDÚHANDLE)ÚTextIO©Úrun_in_executor_with_context)Úcreate_win32_eventÚwait_for_handles)ÚKeyPress)ÚKeys)ÚMouseButtonÚMouseEventType)ÚINPUT_RECORDÚKEY_EVENT_RECORDÚMOUSE_EVENT_RECORDÚSTD_INPUT_HANDLEÚ
EventTypesé   )ÚREVERSE_ANSI_SEQUENCES)ÚInput)ÚVt100Parser)Ú
Win32InputÚConsoleInputReaderÚraw_modeÚcooked_modeÚattach_win32_inputÚdetach_win32_inputé   i   c                  ó@   • \ rS rSrSrSS jr\\SS j5       5       rSr	g)	Ú_Win32InputBaseé=   z3
Base class for `Win32Input` and `Win32PipeInput`.
c                ó"   • [        5       U l        g ©N)Ú_Win32HandlesÚwin32_handles©Úselfs    Ú¨C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\prompt_toolkit/input/win32.pyÚ__init__Ú_Win32InputBase.__init__B   s   € Ü*›_ˆÕó    c                ó   • g r1   © r4   s    r6   ÚhandleÚ_Win32InputBase.handleE   s   € ð 	r9   )r3   N©ÚreturnÚNone©r?   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r7   Úpropertyr   r<   Ú__static_attributes__r;   r9   r6   r.   r.   =   s(   † ñô-ð Øóó ó ór9   r.   c                  ó¾   ^ • \ rS rSrSrSSU 4S jjjr    SS jrSS jrSS jrSS jr	\
SS j5       rSS	 jrSS
 jrSS jrSS jrSS jr\
SS j5       rSrU =r$ )r&   éK   z4
`Input` class that reads from the Windows console.
c                ó¤   >• [         TU ]  5         [        5       U l        U   U R                  (       a  [	        5       U l        g [        5       U l        g r1   )Úsuperr7   Ú_is_win_vt100_input_enabledÚ_use_virtual_terminal_inputÚVt100ConsoleInputReaderÚconsole_input_readerr'   )r5   ÚstdinÚ	__class__s     €r6   r7   ÚWin32Input.__init__P   s;   ø€ Ü‰ÑÔÜ+FÓ+HˆÔ(áà×+×+Ü(?Ó(AˆDÕ%ä(:Ó(<ˆDÕ%r9   c                ó   • [        X5      $ )zR
Return a context manager that makes this input active in the current
event loop.
)r*   )r5   Úinput_ready_callbacks     r6   ÚattachÚWin32Input.attach[   s   € ô " $Ó=Ð=r9   c                ó   • [        U 5      $ )zc
Return a context manager that makes sure that this input is not active
in the current event loop.
)r+   r4   s    r6   ÚdetachÚWin32Input.detachd   s   € ô
 " $Ó'Ð'r9   c                óH   • [        U R                  R                  5       5      $ r1   )ÚlistrP   Úreadr4   s    r6   Ú	read_keysÚWin32Input.read_keysk   s   € Ü�D×-Ñ-×2Ñ2Ó4Ó5Ð5r9   c                ó6   • U R                   R                  5       $ r1   )rP   Ú
flush_keysr4   s    r6   ra   ÚWin32Input.flush_keysn   s   € Ø×(Ñ(×3Ñ3Ó5Ð5r9   c                ó   • g©NFr;   r4   s    r6   ÚclosedÚWin32Input.closedq   s   € àr9   c                ó(   • [        U R                  S9$ )N)Ú use_win10_virtual_terminal_input)r(   rN   r4   s    r6   r(   ÚWin32Input.raw_modeu   s   € ÜØ-1×-MÑ-Mñ
ð 	
r9   c                ó   • [        5       $ r1   )r)   r4   s    r6   r)   ÚWin32Input.cooked_modez   s
   € Ü‹}Ðr9   c                ó>   • [         R                  R                  5       $ r1   )ÚsysrQ   Úfilenor4   s    r6   rn   ÚWin32Input.fileno}   s   € ô
 �y‰y×ÑÓ!Ð!r9   c                ó   • g)Nzwin32-inputr;   r4   s    r6   Útypeahead_hashÚWin32Input.typeahead_hash„   s   € Ør9   c                ó8   • U R                   R                  5         g r1   )rP   Úcloser4   s    r6   rt   ÚWin32Input.close‡   s   € Ø×!Ñ!×'Ñ'Õ)r9   c                ó.   • U R                   R                  $ r1   )rP   r<   r4   s    r6   r<   ÚWin32Input.handleŠ   s   € à×(Ñ(×/Ñ/Ð/r9   )rN   rP   r1   )rQ   zTextIO | Noner?   r@   )rU   úCallable[[], None]r?   úAbstractContextManager[None])r?   ry   ©r?   úlist[KeyPress]©r?   Úbool)r?   Úint)r?   Ústrr>   rA   )rB   rC   rD   rE   rF   r7   rV   rY   r^   ra   rG   re   r(   r)   rn   rq   rt   r<   rH   Ú__classcell__)rR   s   @r6   r&   r&   K   sw   ø† ñ÷	=ñ 	=ð>Ø$6ð>à	%ô>ô(ô6ô6ð óó ðô
ô
ô"ôô*ð ó0ó ö0r9   r&   c                  óH  • \ rS rSrSr0 S\R                  _S\R                  _S\R                  _S\R                  _S\R                  _S\R                  _S	\R                  _S
\R                  _S\R                  _S\R                  _S\R                   _S\R"                  _S\R$                  _S\R&                  _S\R(                  _S\R*                  _S\R,                  _0 S\R.                  _S\R0                  _S\R2                  _S\R4                  _S\R6                  _S\R8                  _S\R:                  _S\R<                  _S\R>                  _S\R@                  _S\RB                  _S\RD                  _S \RF                  _S!\RH                  _S"\RJ                  _S#\RL                  _Er'0 S$\RP                  _S%\RR                  _S&\RT                  _S'\RV                  _S(\RX                  _S)\RZ                  _S*\R\                  _S+\R^                  _S,\R`                  _S-\Rb                  _S.\Rd                  _S/\Rf                  _S0\Rh                  _S1\Rj                  _S2\Rl                  _S3\Rn                  _S4\Rp                  _\Rr                  \Rt                  \Rv                  \Rx                  \Rz                  S5.Er>S6r?S7r@S8rAS9rBS:rCSGSHS; jjrDSIS< jrESJS= jrFSKS> jrGSLS? jrH      SMS@ jrI\JSNSA j5       rK\JSOSB j5       rLSPSC jrMSQSD jrNSErOgF)Rr'   é�   zp
:param recognize_paste: When True, try to discover paste actions and turn
    the event into a BracketedPaste.
ó   ó    ó   ó   ó   ó   ó   ó   ó   ó   ó   	ó   
ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   é!   é"   é#   é$   é%   é&   é'   é(   é-   é.   ép   éq   ér   és   ét   éu   év   )éw   éx   éy   éz   é{   r   r"   é   é   r,   c                óž  • S U l         Xl        U   [        R                  R	                  5       (       a2  [        [        R                  R                  [        5      5      U l
        g [        R                  " S[        R                  [        R                  -  5      U l         [        [        R                   " U R                   5      5      U l
        g )NúCONIN$)Ú_fdconÚrecognize_pasterm   rQ   Úisattyr   r   Úkernel32ÚGetStdHandler    r<   ÚosÚopenÚO_RDWRÚO_BINARYÚmsvcrtÚget_osfhandle)r5   r¿   s     r6   r7   ÚConsoleInputReader.__init__Ý   s}   € ØˆŒØ.Ôñ 	Ü�9‰9×Ñ×ÑÜ ¤§¡×!=Ñ!=Ô>NÓ!OÓPˆD�KäŸ'š' (¬B¯I©I¼¿¹Ñ,CÓDˆDŒKÜ ¤×!5Ò!5°d·k±kÓ!BÓCˆD�Kr9   c                ó`   • U R                   b!  [        R                  " U R                   5        gg©zClose fdcon.N©r¾   rÃ   rt   r4   s    r6   rt   ÚConsoleInputReader.closeê   ó!   € à�;‰;Ñ"Ü�HŠH�T—[‘[Õ!ð #r9   c              #  óˆ  #   • Sn[        S5      n[        U-  nU" 5       n[        U R                  /SS9(       d  g[        R
                  R                  U R                  [        U5      U[        U5      5        [        U R                  X$5      5      nU Vs/ s H  o`R                  U5      PM     nn[        U R                  U5      5      nU R                  (       Ga?  U R                  U5      (       Ga(  [        U5      nU GH  n/ n	U(       aÌ  [        UR                   ["        5      (       a.  UR                   ["        R$                  ["        R&                  1;   a  U	R)                  UR*                  5         [-        U5      nU(       aQ  [        UR                   ["        5      (       d  MO  UR                   ["        R$                  ["        R&                  1;   a  M  U	(       a+  [1        ["        R2                  SR5                  U	5      5      v •  Uc  GM  Uv •  GM     gU Sh  v•N   gs  snf ! [.         a    Sn N¸f = f N7f)úÑ
Return a list of `KeyPress` instances. It won't return anything when
there was nothing to read.  (This function doesn't block.)

http://msdn.microsoft.com/en-us/library/windows/desktop/ms684961(v=vs.85).aspx
é   r   ©ÚtimeoutNÚ )r   r   r   r<   r   rÁ   ÚReadConsoleInputWr   r\   Ú	_get_keysÚ_insert_key_dataÚ_merge_paired_surrogatesr¿   Ú	_is_pasteÚiterÚ
isinstanceÚkeyr   ÚControlJÚControlMÚappendÚdataÚnextÚStopIterationr   ÚBracketedPasteÚjoin)
r5   Ú	max_countr]   ÚarrtypeÚinput_recordsÚall_keysrÜ   ÚgenÚkrà   s
             r6   r]   ÚConsoleInputReader.readï   s·  é € ð ˆ	ä�Q‹xˆÜ Ñ*ˆÙ›	ˆô   §¡ °q×9Øô 	�‰×)Ñ)Ø�K‰Kœ Ó/°¼GÀD»Mô	
ô ˜Ÿ™ tÓ;Ó<ˆñ ;CÓCº(°3×)Ñ)¨#Ö.¹(ˆÐCô ˜×5Ñ5°hÓ?Ó@ˆà××Ð D§N¡N°8×$<Ò$<Ü�x“.ˆCô �ð �ÞÜ" 1§5¡5¬$×/Ñ/Ø—u‘u¤§¡´·±Ð >Ó>à—K‘K §¡Ô'ð!Ü  ›I˜ö Ü" 1§5¡5¬$×/Ó/Ø—u‘u¤§¡´·±Ð >Õ>ö Ü"¤4×#6Ñ#6¸¿¹À»ÓFÒFØ”=Ø•Gò# ð&  ×Ñùò9 Døô( )ó !Ø šð!úñ  ùsU   ‚BIÂH)Â1CIÅ9H.Æ&IÆ,.IÇ3IÈIÈ#I È$
IÈ.H=È:IÈ<H=È=Ic                ó   • / $ r1   r;   r4   s    r6   ra   ÚConsoleInputReader.flush_keys-  s   € àˆ	r9   c                óÚ   • UR                   (       a  U$ [        UR                  [        5      (       a"  [        R
                  " UR                  S5      nOSn[        UR                  U5      $ )z0
Insert KeyPress data, for vt100 compatibility.
rÔ   )rà   rÛ   rÜ   r   r#   Úgetr   )r5   Ú	key_pressrà   s      r6   r×   Ú#ConsoleInputReader._insert_key_data1  sN   € ð �>�>ØÐä�i—m‘m¤T×*Ñ*Ü)×-Ò-¨i¯m©m¸RÓ@‰DàˆDä˜	Ÿ™ tÓ,Ð,r9   c              #  ó°  #   • [        UR                  5       Hµ  nX#   nUR                  [        ;   d  M  [	        UR
                  [        UR                     5      n[        U[        5      (       a,  UR                  (       a  U R                  U5       Sh  v•N   M…  [        U[        5      (       d  Mœ  U R                  U5       Sh  v•N   M·     g N; N7f)úB
Generator that yields `KeyPress` objects from the input records.
N)ÚrangeÚvalueÚ	EventTyper!   ÚgetattrÚEventrÛ   r   ÚKeyDownÚ_event_to_key_pressesr   Ú_handle_mouse)r5   r]   rç   ÚiÚirÚevs         r6   rÖ   ÚConsoleInputReader._get_keys?  sŸ   é € ô �t—z‘zÖ"ˆAØÑ!ˆBð �|‰|œzÕ)Ü˜RŸX™X¤z°"·,±,Ñ'?Ó@�ô ˜bÔ"2×3Ñ3¸¿
¿
Ø#×9Ñ9¸"Ó=×=Ò=ä Ô$6×7Ó7Ø#×1Ñ1°"Ó5×5Ò5ò! #ñ >ñ 6ùs/   ‚/CµA!CÂCÂCÂ4CÃCÃ	
CÃCc              #  óæ  #   • SnU  HÙ  n[        UR                  [        5      (       + nU=(       a    SUR                  s=:*  =(       a    S:*  Os  nU=(       a    SUR                  s=:*  =(       a    S:*  Os  nU(       aQ  U(       aD  UR                  UR                  -   R                  SS5      R	                  S5      n[        Xf5      nOUv •  SnU(       a  UnMÕ  Uv •  MÛ     U(       a  Uv •  gg7f)zU
Combines consecutive KeyPresses with high and low surrogates into
single characters
Nu   í €u   í¯¿u   í°€u   í¿¿z	utf-16-leÚsurrogatepass)rÛ   rÜ   r   ÚencodeÚdecoder   )Úkey_pressesÚbuffered_high_surrogaterÜ   Úis_textÚis_high_surrogateÚis_low_surrogateÚfullchars          r6   rØ   Ú+ConsoleInputReader._merge_paired_surrogatesW  sÍ   é € ð #'ÐÛˆCÜ$ S§W¡W¬dÓ3Ô3ˆGØ '× K¨H¸¿¹×,KÓ,KÀ8Ô,KÐØ&×J¨8°s·w±w×+JÓ+JÀ(Ô+JÐæ&Þ#ð 1×4Ñ4°s·w±wÑ>ß™ ¨_Ó=ß™ Ó,ð ô
 # 8Ó6‘Cà1Ò1Ø*.Ð'æ Ø*-Ò'à”	ñ+ ö. #Ø)Ó)ð #ùs   ‚C/C1c                óÐ   • SnSnU  HL  n[        UR                  [        5      (       d  US-  nUR                  [        R                  :X  d  MG  US-  nMN     US:¬  =(       a    US:¬  $ )a  
Return `True` when we should consider this list of keys as a paste
event. Pasted text on windows will be turned into a
`Keys.BracketedPaste` event. (It's not 100% correct, but it is probably
the best possible way to detect pasting of text and handle that
correctly.)
r   r"   )rÛ   rÜ   r   rÞ   )ÚkeysÚ
text_countÚnewline_countrê   s       r6   rÙ   ÚConsoleInputReader._is_pastex  sb   € ð ˆ
ØˆãˆAÜ˜aŸe™e¤T×*Ñ*Ø˜a‘�
Ø�u‰uœŸ™Õ%Ø Ñ"’ñ	 ð  Ñ!×5 j°A¡oÐ5r9   c                ó  • [        U[        5      (       a  UR                  (       d   eSnUR                  nUR                  R
                  nUR                  SS5      nUS:X  a>  UR                  U R                  ;   a#  [        U R                  UR                     S5      nOWXPR                  ;   a=  U R                  U   [        R                  :X  a  Sn[        U R                  U   U5      nO[        XD5      nX0R                  -  (       d  X0R                  -  (       GaW  X0R                  -  (       GaC  U(       Ga;  [        R                   [        R"                  [        R$                  [        R&                  [        R(                  [        R*                  [        R,                  [        R.                  [        R0                  [        R2                  [        R4                  [        R6                  [        R8                  [        R:                  [        R<                  [        R>                  [        R@                  [        RB                  0	nURE                  URF                  URF                  5      Ul#        X0R                  -  (       d  X0R                  -  (       Gaa  U(       GaY  [        R                   [        RH                  [        R$                  [        RJ                  [        R(                  [        RL                  [        R,                  [        RN                  [        R0                  [        RP                  [        R4                  [        RR                  [        R8                  [        RT                  [        RV                  [        RX                  [        R<                  [        RZ                  [        R@                  [        R\                  0
nURE                  URF                  URF                  5      Ul#        X0R                  -  (       Ga  U(       Gaw  [        R^                  [        R`                  [        R                   [        Rb                  [        R$                  [        Rd                  [        R(                  [        Rf                  [        R,                  [        Rh                  [        R0                  [        Rj                  [        R4                  [        Rl                  [        R8                  [        Rn                  [        RV                  [        Rp                  [        R<                  [        Rr                  [        R@                  [        Rt                  0nURE                  URF                  URF                  5      Ul#        X0R                  -  (       d  X0R                  -  (       a1  U(       a*  URv                  S:X  a  [        [        Rx                  S5      nX0R                  -  (       d  X0R                  -  (       aA  U(       a:  URF                  [        R                  :X  a  [        [        Rz                  S5      U/$ U(       a4  X0R|                  -  nU(       a  [        [        Rz                  S5      U/$ U/$ / $ )zE
For this `KEY_EVENT_RECORD`, return a list of `KeyPress` instances.
Nzutf-8r  Ú rÔ   Ú
Ú )?rÛ   r   rù   ÚControlKeyStateÚuCharÚUnicodeCharr  ÚVirtualKeyCodeÚkeycodesr   Úmappingsr   rÝ   ÚLEFT_CTRL_PRESSEDÚRIGHT_CTRL_PRESSEDÚSHIFT_PRESSEDÚLeftÚControlShiftLeftÚRightÚControlShiftRightÚUpÚControlShiftUpÚDownÚControlShiftDownÚHomeÚControlShiftHomeÚEndÚControlShiftEndÚInsertÚControlShiftInsertÚPageUpÚControlShiftPageUpÚPageDownÚControlShiftPageDownrï   rÜ   ÚControlLeftÚControlRightÚ	ControlUpÚControlDownÚControlHomeÚ
ControlEndÚControlInsertÚDeleteÚControlDeleteÚControlPageUpÚControlPageDownÚTabÚBackTabÚ	ShiftLeftÚ
ShiftRightÚShiftUpÚ	ShiftDownÚ	ShiftHomeÚShiftEndÚShiftInsertÚShiftDeleteÚShiftPageUpÚShiftPageDownrà   ÚControlSpaceÚEscapeÚLEFT_ALT_PRESSED)r5   rþ   ÚresultÚcontrol_key_stateÚu_charÚ
ascii_charÚmappingÚmeta_presseds           r6   rú   Ú(ConsoleInputReader._event_to_key_pressesŽ  s  € ô ˜"Ô.×/Ñ/°B·J·JÐ>Ð>à"&ˆà×.Ñ.ÐØ—‘×%Ñ%ˆà—]‘] 7¨OÓ<ˆ
ð �VÓØ× Ñ  D§M¡MÓ1Ü! $§-¡-°×0AÑ0AÑ"BÀBÓG�øàŸ]™]Ó*Ø—=‘= Ñ,´·±Ó=àð ô " $§-¡-°
Ñ";¸VÓD‘ä! &Ó1�ð
 "×$:Ñ$:×:Ø$×'>Ñ'>×>Ð>à!×$6Ñ$6×6Ð6ßô —	‘	œ4×0Ñ0Ü—
‘
œD×2Ñ2Ü—‘œ×,Ñ,Ü—	‘	œ4×0Ñ0Ü—	‘	œ4×0Ñ0Ü—‘œ$×.Ñ.Ü—‘œT×4Ñ4Ü—‘œT×4Ñ4Ü—‘œt×8Ñ8ð
'ˆGð !Ÿ™ V§Z¡Z°·±Ó<ˆFŒJð × 6Ñ 6×6Ø ×#:Ñ#:×:Ð:ßä—	‘	œ4×+Ñ+Ü—
‘
œD×-Ñ-Ü—‘œŸ™Ü—	‘	œ4×+Ñ+Ü—	‘	œ4×+Ñ+Ü—‘œ$Ÿ/™/Ü—‘œT×/Ñ/Ü—‘œT×/Ñ/Ü—‘œT×/Ñ/Ü—‘œt×3Ñ3ðˆGð !Ÿ™ V§Z¡Z°·±Ó<ˆFŒJð ×1Ñ1×1Ð1·fä—‘œ$Ÿ,™,Ü—	‘	œ4Ÿ>™>Ü—
‘
œDŸO™OÜ—‘œŸ™Ü—	‘	œ4Ÿ>™>Ü—	‘	œ4Ÿ>™>Ü—‘œ$Ÿ-™-Ü—‘œT×-Ñ-Ü—‘œT×-Ñ-Ü—‘œT×-Ñ-Ü—‘œt×1Ñ1ðˆGð !Ÿ™ V§Z¡Z°·±Ó<ˆFŒJð
 "×$:Ñ$:×:Ø$×'>Ñ'>×>æØ—‘˜sÓ"äœd×/Ñ/°Ó5ˆFð "×$:Ñ$:×:Ø$×'>Ñ'>×>æØ—
‘
œdŸm™mÓ+äœTŸ[™[¨"Ó-¨vÐ6Ð6ö Ø,×/DÑ/DÑDˆLæÜ ¤§¡¨bÓ1°6Ð:Ð:à�x�ð ˆIr9   c                ó¸  • UR                   nUR                  nSn[        R                  nU[        -  (       a(  US:”  a  [
        R                  nOF[
        R                  nO5U[        :X  a  [        R                  nOU[        :X  a  [        R                  nU[        -  (       a  [
        R                  nUc'  US:”  a  [
        R                  nO[
        R                  nSR!                  UR"                  UR"                  [%        UR&                  R(                  5      [%        UR&                  R*                  5      /5      n[-        [.        R0                  U5      /$ )z;
Handle mouse events. Return a list of KeyPress instances.
Nr   Ú;)Ú
EventFlagsÚButtonStater   ÚNONEÚMOUSE_WHEELEDr   Ú	SCROLL_UPÚSCROLL_DOWNÚFROM_LEFT_1ST_BUTTON_PRESSEDÚLEFTÚRIGHTMOST_BUTTON_PRESSEDÚRIGHTÚMOUSE_MOVEDÚ
MOUSE_MOVEÚ
MOUSE_DOWNÚMOUSE_UPrä   rõ   r   ÚMousePositionÚXÚYr   r   ÚWindowsMouseEvent)r5   rþ   Úevent_flagsÚbutton_stateÚ
event_typeÚbuttonrà   s          r6   rû   Ú ConsoleInputReader._handle_mouse  s  € ð —m‘mˆØ—~‘~ˆà,0ˆ
Ü)×.Ñ.ˆð œ×&Ø˜aÓÜ+×5Ñ5‘
ä+×7Ñ7‘
ð Ô;Ó;Ü$×)Ñ)‘àÔ!9Ó9Ü$×*Ñ*�ð œ×$Ü'×2Ñ2ˆJð ÑØ˜aÓä+×6Ñ6‘
ô ,×4Ñ4�
à�x‰xà—‘Ø× Ñ Ü�B×$Ñ$×&Ñ&Ó'Ü�B×$Ñ$×&Ñ&Ó'ð	ó
ˆô œ×/Ñ/°Ó6Ð7Ð7r9   )r¾   r<   r¿   N)T)r¿   r}   r?   r@   r>   ©r?   zIterable[KeyPress]rz   )rð   r   r?   r   )r]   r   rç   úArray[INPUT_RECORD]r?   úIterator[KeyPress])r  r{   r?   rk  )r  r{   r?   r}   )rþ   r   r?   r{   )rþ   r   r?   r{   )PrB   rC   rD   rE   rF   r   rG  rF  ÚControlAÚControlBÚControlCÚControlDÚControlEÚControlFÚControlGÚControlHÚControlIrÝ   ÚControlKÚControlLrÞ   ÚControlNÚControlOÚControlPÚControlQÚControlRÚControlSÚControlTÚControlUÚControlVÚControlWÚControlXÚControlYÚControlZÚControlBackslashÚControlSquareCloseÚControlCircumflexÚControlUnderscoreÚ	Backspacer  r+  r-  r'  r%  r  r!  r  r#  r)  r6  ÚF1ÚF2ÚF3ÚF4ÚF5ÚF6ÚF7ÚF8ÚF9ÚF10ÚF11ÚF12r  rH  ÚRIGHT_ALT_PRESSEDr  r  r  r7   rt   r]   ra   r×   rÖ   ÚstaticmethodrØ   rÙ   rú   rû   rH   r;   r9   r6   r'   r'   �   sô  † ñð"Ø�—‘ð"à�×"Ñ"ð"ð 	�—‘ð"ð 	�—‘ð	"ð
 	�—‘ð"ð 	�—‘ð"ð 	�—‘ð"ð 	�—‘ð"ð 	�—‘ð"ð 	�—‘ð"ð 	�—‘ð"ð 	�—‘ð"ð 	�—‘ð"ð 	�—‘ð"ð 	�—‘ð"ð  	�—‘ð!"ð" 	�—‘ñ#"ð$ 	�—‘ð%"ð& 	�—‘ð'"ð( 	�—‘ð)"ð* 	�—‘ð+"ð, 	�—‘ð-"ð. 	�—‘ð/"ð0 	�—‘ð1"ð2 	�—‘ð3"ð4 	�—‘ð5"ð6 	�—‘ð7"ð8 	�—‘ð9"ð: 	�×&Ñ&ð;"ð< 	�×(Ñ(ð="ð> 	�×'Ñ'ð?"ð@ 	�×'Ñ'ðA"ðB 	�—‘ñC"€HðJà
ˆD�K‰Kðð 	ˆD�M‰Mðð 	ˆD�H‰Hð	ð
 	ˆD�I‰Iðð 	ˆD�I‰Iðð 	ˆD�G‰Gðð 	ˆD�J‰Jðð 	ˆD�I‰Iðð 	ˆD�K‰Kðð 	ˆD�K‰Kðð 	ˆT�W‰Wðð 	ˆT�W‰Wðð  	ˆT�W‰Wð!ð" 	ˆT�W‰Wð#ð$ 	ˆT�W‰Wð%ð& 	ˆT�W‰Wð'ð( 	ˆT�W‰Wð)ð* �W‰WØ�W‰WØ�X‰XØ�X‰XØ�X‰Xò3€Hð8 ÐØÐØ€MØÐØÐöDô"ô
< ô|ô-ð6Øð6Ø*=ð6à	ô6ð0 ó*ó ð*ð@ ó6ó ð6ô*B÷H-8r9   r'   c                  óV   • \ rS rSrSrS
S jrS
S jrSS jrSS jr      SS jr	Sr
g	)rO   iB  a·  
Similar to `ConsoleInputReader`, but for usage when
`ENABLE_VIRTUAL_TERMINAL_INPUT` is enabled. This assumes that Windows sends
us the right vt100 escape sequences and we parse those with our vt100
parser.

(Using this instead of `ConsoleInputReader` results in the "data" attribute
from the `KeyPress` instances to be more correct in edge cases, because
this responds to for instance the terminal being in application cursor keys
mode.)
c                óÊ  ^ • S T l         / T l        [        U 4S j5      T l        T   [        R
                  R                  5       (       a2  [        [        R                  R                  [        5      5      T l        g [        R                  " S[        R                  [        R                   -  5      T l         [        ["        R$                  " T R                   5      5      T l        g )Nc                ó:   >• TR                   R                  U 5      $ r1   )Ú_bufferrß   )rð   r5   s    €r6   Ú<lambda>Ú2Vt100ConsoleInputReader.__init__.<locals>.<lambda>T  s   ø€ ˜dŸl™l×1Ñ1°)Ô<r9   r½   )r¾   rš  r%   Ú_vt100_parserrm   rQ   rÀ   r   r   rÁ   rÂ   r    r<   rÃ   rÄ   rÅ   rÆ   rÇ   rÈ   r4   s   `r6   r7   Ú Vt100ConsoleInputReader.__init__O  s�   ø€ ØˆŒà')ˆŒÜ(Ü<ó
ˆÔñ 	Ü�9‰9×Ñ×ÑÜ ¤§¡×!=Ñ!=Ô>NÓ!OÓPˆD�KäŸ'š' (¬B¯I©I¼¿¹Ñ,CÓDˆDŒKÜ ¤×!5Ò!5°d·k±kÓ!BÓCˆD�Kr9   c                ó`   • U R                   b!  [        R                  " U R                   5        ggrË   rÌ   r4   s    r6   rt   ÚVt100ConsoleInputReader.close`  rÎ   r9   c                ó€  • Sn[        S5      n[        U-  nU" 5       n[        U R                  /SS9(       d  / $ [        R
                  R                  U R                  [        U5      U[        U5      5        U R                  X$5       H  nU R                  R                  U5        M      U R                  n/ U l        U$ )rÐ   rÑ   r   rÒ   )r   r   r   r<   r   rÁ   rÕ   r   rÖ   r�  Úfeedrš  )r5   rå   r]   ræ   rç   Úkey_datarI  s          r6   r]   ÚVt100ConsoleInputReader.reade  s¤   € ð ˆ	ä�Q‹xˆÜ Ñ*ˆÙ›	ˆô   §¡ °q×9ØˆIô 	�‰×)Ñ)Ø�K‰Kœ Ó/°¼GÀD»Mô	
ð Ÿ™ tÖ;ˆHØ×Ñ×#Ñ# HÖ-ñ <ð —‘ˆØˆŒØˆr9   c                ó`   • U R                   R                  5         U R                  n/ U l        U$ )zK
Flush pending keys and return them.
(Used for flushing the 'escape' key.)
)r�  Úflushrš  )r5   rI  s     r6   ra   Ú"Vt100ConsoleInputReader.flush_keysŠ  s-   € ð 	×Ñ× Ñ Ô"ð —‘ˆØˆŒØˆr9   c              #  ó^  #   • [        UR                  5       H�  nX#   nUR                  [        ;   d  M  [	        UR
                  [        UR                     5      n[        U[        5      (       d  M[  UR                  (       d  Mn  UR                  R                  nUS:w  d  MŒ  Uv •  M’     g7f)ró   r  N)rô   rõ   rö   r!   r÷   rø   rÛ   r   rù   r  r  )r5   r]   rç   rü   rý   rþ   rK  s          r6   rÖ   Ú!Vt100ConsoleInputReader._get_keys˜  s}   é € ô �t—z‘zÖ"ˆAØÑ!ˆBð �|‰|œzÕ)Ü˜RŸX™X¤z°"·,±,Ñ'?Ó@�ô ˜bÔ"2×3Ó3¸¿
¿
¹
ØŸX™X×1Ñ1�FØ Õ'Ø$œò #ùs   ‚/B-µ:B-Á3B-ÂB-Â$	B-)rš  r¾   r�  r<   Nr>   ri  rz   )r]   r   rç   rj  r?   zIterator[str])rB   rC   rD   rE   rF   r7   rt   r]   ra   rÖ   rH   r;   r9   r6   rO   rO   B  s:   † ñ
ôDô""ô
#ôJð%Øð%Ø*=ð%à	÷%r9   rO   c                  ó6   • \ rS rSrSrSS jrS	S jrS
S jrSrg)r2   i°  a€  
Utility to keep track of which handles are connectod to which callbacks.

`add_win32_handle` starts a tiny event loop in another thread which waits
for the Win32 handle to become ready. When this happens, the callback will
be called in the current asyncio event loop using `call_soon_threadsafe`.

`remove_win32_handle` will stop this tiny event loop.

NOTE: We use this technique, so that we don't have to use the
      `ProactorEventLoop` on Windows and we can wait for things like stdin
      in a `SelectorEventLoop`. This is important, because our inputhook
      mechanism (used by IPython), only works with the `SelectorEventLoop`.
c                ó    • 0 U l         0 U l        g r1   ©Ú_handle_callbacksÚ_remove_eventsr4   s    r6   r7   Ú_Win32Handles.__init__À  s   € Ø@BˆÔð 24ˆÕr9   c                ó  ^^^^^^• TR                   nUc  [        S5      eU R                  T5        [        5       mTU R                  U'   [        5       mTU R                  U'   SUUU4S jjmSUUUU4S jjm[        TTS9  g)z'
Add a Win32 handle to the event loop.
NúInvalid handle.c                 óH   >•  T " 5         [        TTS9  g ! [        TTS9  f = f)N©Úloopr   )Úcallbackr´  Úwaits   €€€r6   ÚreadyÚ-_Win32Handles.add_win32_handle.<locals>.readyÛ  s#   ø€ ð>Ù”
ä,¨T¸Ó=øÔ,¨T¸Ó=ús   ƒ •!c                 óŒ   >• [        TT/5      n U TL a   [        R                  R                  T5        g TR	                  T5        g r1   )r   r   rÁ   ÚCloseHandleÚcall_soon_threadsafe)rI  r<   r´  r·  Úremove_events    €€€€r6   r¶  Ú,_Win32Handles.add_win32_handle.<locals>.waitå  s?   ø€ ô & |°VÐ&<Ó=ˆFà˜Ò%Ü—‘×+Ñ+¨LÔ9Øà×)Ñ)¨%Õ0r9   r³  r>   )rõ   Ú
ValueErrorÚremove_win32_handler   r­  r   r®  r   )r5   r<   rµ  Úhandle_valuer´  r·  r¼  r¶  s    `` @@@@r6   Úadd_win32_handleÚ_Win32Handles.add_win32_handleÇ  s‚   ý€ ð —|‘|ˆàÑÜÐ.Ó/Ð/ð 	× Ñ  Ô(äÓ!ˆØ/7ˆ×Ñ˜|Ñ,ô *Ó+ˆØ,8ˆ×Ñ˜LÑ)÷	>ñ 	>÷		1ò 		1ô 	% T°Ó5r9   c                ó4  • UR                   c  g U R                  R                  UR                   5      n[        R                  R                  U5         U R                  R                  UR                   5      $ ! [         a     N2f = f! [         a     gf = f)z\
Remove a Win32 handle from the event loop.
Return either the registered handler or `None`.
N)rõ   r®  Úpopr   rÁ   ÚSetEventÚKeyErrorr­  )r5   r<   Úevents      r6   r¿  Ú!_Win32Handles.remove_win32_handleò  s‹   € ð
 �<‰<ÑØð	,Ø×'Ñ'×+Ñ+¨F¯L©LÓ9ˆEô �O‰O×$Ñ$ UÔ+ð	Ø×)Ñ)×-Ñ-¨f¯l©lÓ;Ð;øô ó 	Ùð	ûô ó 	Ùð	ús#   �%A: Á$B
 Á:
BÂBÂ

BÂBr¬  Nr>   )r<   r   rµ  rx   r?   r@   )r<   r   r?   zCallable[[], None] | None)	rB   rC   rD   rE   rF   r7   rÁ  r¿  rH   r;   r9   r6   r2   r2   °  s   † ñô4ô)6÷Vr9   r2   c              #  ól  #   • U R                   nU R                  nUR                  c  [        S5      eUR	                  U5      nUR                  X15         Sv •  UR	                  U5        U(       a  UR                  X45        gg! UR	                  U5        U(       a  UR                  X45        f f = f7f)zÊ
Context manager that makes this input active in the current event loop.

:param input: :class:`~prompt_toolkit.input.Input` object.
:param input_ready_callback: Called when the input is ready to read.
Nr±  ©r3   r<   rõ   r¾  r¿  rÁ  )Úinputrµ  r3   r<   Úprevious_callbacks        r6   r*   r*     s¦   é € ð ×'Ñ'€MØ�\‰\€Fà‡|�|ÑÜÐ*Ó+Ð+ð &×9Ñ9¸&ÓAÐØ×"Ñ" 6Ô4ðFÛà×)Ñ)¨&Ô1æØ×*Ñ*¨6ÕEð øð 	×)Ñ)¨&Ô1æØ×*Ñ*¨6ÕEð üs   ‚AB4ÁB Á+B4Â,B1Â1B4c              #  ó  #   • U R                   nU R                  nUR                  c  [        S5      eUR	                  U5      n S v •  U(       a  UR                  X#5        g g ! U(       a  UR                  X#5        f f = f7f)Nr±  rÊ  )rË  r3   r<   rÌ  s       r6   r+   r+   %  sv   é € à×'Ñ'€MØ�\‰\€Fà‡|�|ÑÜÐ*Ó+Ð+à%×9Ñ9¸&ÓAÐðFÛæØ×*Ñ*¨6ÕEð øÖØ×*Ñ*¨6ÕEð üs   ‚ABÁA# Á	BÁ#A>Á>Bc                  óP   • \ rS rSrSr S	     S
S jjrSS jrSS jrSS jrSr	g)r(   i6  zÈ
::

    with raw_mode(stdin):
        ''' the windows terminal is now in 'raw' mode. '''

The ``fileno`` attribute is ignored. This is to be compatible with the
`raw_input` method of `.vt100_input`.
Nc                ór   • [        [        R                  R                  [        5      5      U l        X l        g r1   )r   r   rÁ   rÂ   r    r<   rh   )r5   rn   rh   s      r6   r7   Úraw_mode.__init__A  s&   € ô œVŸ_™_×9Ñ9Ô:JÓKÓLˆŒØ0PÕ-r9   c                óª   • [        5       n[        R                  R                  U R                  [        U5      5        Xl        U R                  5         g r1   )r   r   rÁ   ÚGetConsoleModer<   r   Úoriginal_modeÚ_patch)r5   rÓ  s     r6   Ú	__enter__Úraw_mode.__enter__G  s5   € ä›ˆÜ�‰×&Ñ& t§{¡{´G¸MÓ4JÔKØ*Ôà�‰�r9   c                óÖ   • SnSnSnU R                   R                  X-  U-  ) -  nU R                  (       a	  U[        -  n[        R
                  R                  U R                  U5        g ©Nr,   r   r"   )rÓ  rõ   rh   ÚENABLE_VIRTUAL_TERMINAL_INPUTr   rÁ   ÚSetConsoleModer<   )r5   ÚENABLE_ECHO_INPUTÚENABLE_LINE_INPUTÚENABLE_PROCESSED_INPUTÚnew_modes        r6   rÔ  Úraw_mode._patchO  si   € à"ÐØ"ÐØ!'Ðà×%Ñ%×+Ñ+ØÑ1Ð4JÑJð/
ñ 
ˆð ×0×0ØÔ5Ñ5ˆHä�‰×&Ñ& t§{¡{°HÕ=r9   c                ól   • [         R                  R                  U R                  U R                  5        g r1   )r   rÁ   rÚ  r<   rÓ  )r5   Úas     r6   Ú__exit__Úraw_mode.__exit__^  s    € ä�‰×&Ñ& t§{¡{°D×4FÑ4FÕGr9   )r<   rÓ  rh   rd   )rn   z
int | Nonerh   r}   r?   r@   r>   )rá  Úobjectr?   r@   )
rB   rC   rD   rE   rF   r7   rÕ  rÔ  râ  rH   r;   r9   r6   r(   r(   6  s?   † ñð SXðQØ ðQØKOðQà	õQôô>÷Hr9   r(   c                  ó"   • \ rS rSrSrSS jrSrg)r)   ic  zh
::

    with cooked_mode(stdin):
        ''' The pseudo-terminal stdin is now used in cooked mode. '''
c                óœ   • SnSnSn[         R                  R                  U R                  U R                  R
                  X-  U-  -  5        g rØ  )r   rÁ   rÚ  r<   rÓ  rõ   )r5   rÛ  rÜ  rÝ  s       r6   rÔ  Úcooked_mode._patchk  sN   € à"ÐØ"ÐØ!'Ðä�‰×&Ñ&Ø�K‰KØ×Ñ×$Ñ$Ø Ñ4Ð7MÑMñOõ	
r9   r;   Nr>   )rB   rC   rD   rE   rF   rÔ  rH   r;   r9   r6   r)   r)   c  s   † ñ÷

r9   r)   c                 ó®  • [        [        R                  R                  [        5      5      n [        S5      n[        R                  R                  U [        U5      5         [        R                  R                  U [        [        5      5      nUS:H  [        R                  R                  X5        $ ! [        R                  R                  X5        f = f)zS
Returns True when we're running Windows and VT100 escape sequences are
supported.
r   r"   )
r   r   rÁ   rÂ   r    r   rÒ  r   rÚ  rÙ  )ÚhconsolerÓ  rI  s      r6   rM   rM   x  s•   € ô
 ”f—o‘o×2Ñ2Ô3CÓDÓE€Hô ˜!“H€MÜ
‡O�O×"Ñ" 8¬U°=Ó-AÔBð@ä—o‘o×4Ñ4Ø”eÔ9Ó:ó
ˆð ˜‰{ä�‰×&Ñ& xÕ?øŒ�‰×&Ñ& xÕ?ús   Á"1B3 Â3!C)rË  r.   rµ  rx   r?   úIterator[None])rË  r.   r?   rê  r|   )EÚ
__future__r   rÃ   rm   Úabcr   Úasyncior   Ú
contextlibr   r   Úutilsr	   ÚplatformrÇ   Úctypesr   Úcollections.abcr   r   r   r   r   r   Úctypes.wintypesr   r   Útypingr   Úprompt_toolkit.eventloopr   Úprompt_toolkit.eventloop.win32r   r   Ú(prompt_toolkit.key_binding.key_processorr   Úprompt_toolkit.keysr   Úprompt_toolkit.mouse_eventsr   r   Úprompt_toolkit.win32_typesr   r   r   r    r!   Úansi_escape_sequencesr#   Úbaser$   Úvt100_parserr%   Ú__all__rX  rZ  r\  rU  rÙ  r.   r&   r'   rO   r2   r*   r+   r(   r)   rM   r;   r9   r6   Ú<module>rÿ     s<  ðÝ "ã 	Û 
Ý Ý $ß =å *à
‡|�|�wÓÐ Ðö ÛÝç 8Ñ 8ß (Ñ (ß )Ý å Aß OÝ =Ý $ß C÷õ õ :Ý Ý %ò€ð  #Ð ØÐ Ø€Ø€ð !'Ð ô�eô ôA0�ô A0÷Hp8ñ p8÷fk%ñ k%÷\Uñ Uðp ðFØðFØ&8ðFàóFó ðFð8 óFó ðF÷ *Hñ *HôZ
�(ô 
õ*@r9   