§
    ŒŸjR' ã                  óÂ  — d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZmZ d dlmZ d dlmZmZmZmZ d dlmZ d d	lmZ d d
lmZmZmZmZmZmZ d dlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z> ddl?m@Z@mAZAmBZB ddlCmDZD ddgZEe3ZFejG        ZGeGdz   ZH G d„ de¦  «        ZI G d„ d¦  «        ZJe	eFgeJf         ZK edeK¬¦  «        ZLd1d$„ZMe	eFeJgdf         ZN ed%eN¬¦  «        ZOd2d'„ZPed3d)„¦   «         ZQed3d*„¦   «         ZRed3d+„¦   «         ZSed3d,„¦   «         ZTed3d-„¦   «         ZUd4d/„ZVd4d0„ZWdS )5é    )ÚannotationsN)ÚEnum)Ú
accumulate)ÚCallableÚIterableÚTupleÚTypeVar)Úget_app)ÚBufferÚindentÚreshape_textÚunindent)ÚClipboardData)ÚDocument)ÚAlwaysÚ	ConditionÚFilterÚhas_argÚis_read_onlyÚis_searching)Úin_paste_modeÚis_multilineÚvi_digraph_modeÚvi_insert_modeÚvi_insert_multiple_modeÚvi_modeÚvi_navigation_modeÚvi_recording_macroÚvi_replace_modeÚvi_replace_single_modeÚvi_search_direction_reversedÚvi_selection_modeÚvi_waiting_for_text_object_mode)ÚVt100Parser)ÚDIGRAPHS)ÚKeyPressÚKeyPressEvent)ÚCharacterFindÚ	InputMode)ÚKeys)ÚSearchDirection)Ú	PasteModeÚSelectionStateÚSelectionTypeé   )ÚConditionalKeyBindingsÚKeyBindingsÚKeyBindingsBaseé   )Úget_by_nameÚload_vi_bindingsÚload_vi_search_bindingsÚ
0123456789c                  ó   — e Zd ZdZdZdZdZdS )ÚTextObjectTypeÚ	EXCLUSIVEÚ	INCLUSIVEÚLINEWISEÚBLOCKN)Ú__name__Ú
__module__Ú__qualname__r:   r;   r<   r=   © ó    ús/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/prompt_toolkit/key_binding/bindings/vi.pyr9   r9   <   s"   € € € € € Ø€IØ€IØ€HØ€E€E€ErB   r9   c                  ób   — e Zd ZdZdej        fdd„Zedd„¦   «         Zdd„Z	dd„Z
dd„Zdd„ZdS )Ú
TextObjectz‰
    Return struct for functions wrapped in ``text_object``.
    Both `start` and `end` are relative to the current cursor position.
    r   ÚstartÚintÚendÚtyper9   c                ó0   — || _         || _        || _        d S ©N)rF   rH   rI   )ÚselfrF   rH   rI   s       rC   Ú__init__zTextObject.__init__I   s   € ð ˆŒ
ØˆŒØˆŒ	ˆ	ˆ	rB   Úreturnr.   c                óž   — | j         t          j        k    rt          j        S | j         t          j        k    rt          j        S t          j        S rK   )rI   r9   r<   r.   ÚLINESr=   Ú
CHARACTERS©rL   s    rC   Úselection_typezTextObject.selection_typeP   s=   € àŒ9�Ô/Ò/Ð/Ý Ô&Ð&ØŒ9�Ô,Ò,Ð,Ý Ô&Ð&å Ô+Ð+rB   útuple[int, int]c                óZ   — | j         | j        k     r| j         | j        fS | j        | j         fS )zA
        Return a (start, end) tuple where start <= end.
        )rF   rH   rR   s    rC   ÚsortedzTextObject.sortedY   s1   € ð Œ:˜œÒ Ð Ø”:˜tœxÐ'Ð'à”8˜TœZÐ'Ð'rB   Údocumentr   c                óD  — |                       ¦   «         \  }}|}| j        t          j        k    r,|                     ||j        z   ¦  «        d         dk    r|dz  }| j        t          j        k    r|dz  }| j        t          j        k    r”|                     ||j        z   ¦  «        \  }}|                     |d¦  «        |j        z
  }|                     ||j        z   ¦  «        \  }}|                     |t          |j
        |         ¦  «        ¦  «        |j        z
  }||fS )a2  
        Return a (start, end) tuple with start <= end that indicates the range
        operators should operate on.
        `buffer` is used to get start and end of line positions.

        This should return something that can be used in a slice, so the `end`
        position is *not* included.
        r3   r   )rV   rI   r9   r:   Útranslate_index_to_positionÚcursor_positionr;   r<   Útranslate_row_col_to_indexÚlenÚlines)rL   rW   rF   rH   ÚdocÚrowÚcols          rC   Úoperator_rangezTextObject.operator_rangeb   s  € ð —[’[‘]”]‰
ˆˆsØˆð ŒI�Ô1Ò1Ð1Ø×/Ò/°°cÔ6IÑ0IÑJÔJÈ1ÔMÐQRÒRÐRð �1‰HˆCØŒ9�Ô0Ò0Ð0Ø�1‰HˆCØŒ9�Ô/Ò/Ð/à×6Ò6°u¸sÔ?RÑ7RÑSÔS‰HˆC�Ø×2Ò2°3¸Ñ:Ô:¸SÔ=PÑPˆEØ×6Ò6°s¸SÔ=PÑ7PÑQÔQ‰HˆC�à×.Ò.¨sµC¸¼	À#¼Ñ4GÔ4GÑHÔHØÔ%ñ&ð ð �cˆzÐrB   Úbufferr   c                óà   — |                       |j        ¦  «        \  }}||j        z  }||j        z  }|j                             |¦  «        \  }}|j                             |¦  «        \  }}||fS )z7
        Return a (start_line, end_line) pair.
        )ra   rW   rZ   rY   )rL   rb   Úfrom_ÚtoÚ_s        rC   Úget_line_numberszTextObject.get_line_numbers‚   su   € ð
 ×'Ò'¨¬Ñ8Ô8‰	ˆˆrØ�Ô'Ñ'ˆØ
ˆfÔ$Ñ$ˆð ”?×>Ò>¸uÑEÔE‰ˆˆqØ”×;Ò;¸BÑ?Ô?‰ˆˆAà�bˆyÐrB   útuple[Document, ClipboardData]c                ó"  — |                       |j        ¦  «        \  }}||j        z  }||j        z  }| j        t          j        k    r|dz  }t          |j        |t          || j	        ¬¦  «        ¦  «        }| 
                    ¦   «         \  }}||fS )zA
        Turn text object into `ClipboardData` instance.
        r3   )Úoriginal_cursor_positionrI   )ra   rW   rZ   rI   r9   r<   r   Útextr-   rS   Úcut_selection)rL   rb   rd   re   rW   Únew_documentÚclipboard_datas          rC   ÚcutzTextObject.cut‘   sŸ   € ð ×'Ò'¨¬Ñ8Ô8‰	ˆˆrà�Ô'Ñ'ˆØ
ˆfÔ$Ñ$ˆð Œ9�Ô/Ò/Ð/Ø�!‰GˆBåØŒKØÝ°EÀÔ@SÐTÑTÔTñ
ô 
ˆð (0×'=Ò'=Ñ'?Ô'?Ñ$ˆ�nØ˜^Ð+Ð+rB   N)rF   rG   rH   rG   rI   r9   )rN   r.   )rN   rT   )rW   r   rN   rT   )rb   r   rN   rT   )rb   r   rN   rh   )r>   r?   r@   Ú__doc__r9   r:   rM   ÚpropertyrS   rV   ra   rg   ro   rA   rB   rC   rE   rE   C   s²   € € € € € ðð ð &'¸~Ô?Wðð ð ð ð ð ð,ð ,ð ,ñ „Xð,ð(ð (ð (ð (ðð ð ð ð@ð ð ð ð,ð ,ð ,ð ,ð ,ð ,rB   rE   Ú_TOF)ÚboundÚkey_bindingsr1   rN   ú%Callable[..., Callable[[_TOF], _TOF]]c                ó8   ‡ — t          ¦   «         ddddœdˆ fd„}|S )zY
    Create a decorator that can be used to register Vi text object implementations.
    F)ÚfilterÚno_move_handlerÚno_selection_handlerÚeagerÚkeysú
Keys | strrw   r   rx   Úboolry   rz   rN   úCallable[[_TOF], _TOF]c                ó(   •‡ ‡‡‡‡— dˆˆ ˆˆˆˆfd„}|S )a‚  
        Register a text object function.

        Usage::

            @text_object('w', filter=..., no_move_handler=False)
            def handler(event):
                # Return a text object for this key.
                return TextObject(...)

        :param no_move_handler: Disable the move handler in navigation mode.
            (It's still active in selection mode.)
        Útext_object_funcrr   rN   c                ó  •‡ —  ‰j         ‰t          ‰z  ‰dœŽd	ˆ fd„¦   «         }‰s+ ‰j         ‰t           ‰z  t          z  ‰dœŽd	ˆ fd„¦   «         }‰	s+ ‰j         ‰t           ‰z  t          z  ‰dœŽd	ˆ fd„¦   «         }‰ S )
N©rw   rz   ÚeventÚErN   ÚNonec                óò   •— | j         j        }t          |j        pd| j        pdz  ¦  «        | _         ‰| ¦  «        }|j        }|�|� || |¦  «         d | j         j        _        d | j         j        _        d S ©Nr3   )ÚappÚvi_stateÚstrÚoperator_argÚargÚ_argÚoperator_func)rƒ   r‰   Útext_objrŽ   r€   s       €rC   Ú_apply_operator_to_text_objectzvcreate_text_object_decorator.<locals>.text_object_decorator.<locals>.decorator.<locals>._apply_operator_to_text_objectÍ   sŒ   ø€ ð
 !œ9Ô-�Ý  (Ô"7Ð"<¸1ÀÄÀÈaÑ!PÑQÔQ�”
ð ,Ð+¨EÑ2Ô2�ð
 !)Ô 6�àÐ'¨MÐ,Eà!�M %¨Ñ2Ô2Ð2ð 48�”	Ô"Ô0Ø26�”	Ô"Ô/Ð/Ð/rB   c                óR   •—  ‰| ¦  «        }| j         xj        |j        z  c_        dS )zK
                    Move handler for navigation mode.
                    N)Úcurrent_bufferrZ   rF   )rƒ   Útext_objectr€   s     €rC   Ú_move_in_navigation_modezpcreate_text_object_decorator.<locals>.text_object_decorator.<locals>.decorator.<locals>._move_in_navigation_modeè   s5   ø€ ð #3Ð"2°5Ñ"9Ô"9�KØÔ(Ð8Ô8¸KÔ<MÑMÐ8Ô8Ð8Ð8rB   c                óx  •—  ‰| ¦  «        }| j         }|j        }|€dS |j        rz|                     |j        ¦  «        \  }}||j        z  }||j        z  }||_        ||_        |j        t          j	        k    rt          j        |_        dS t          j        |_        dS | j         xj        |j        z  c_        dS )zJ
                    Move handler for selection mode.
                    N)r’   Úselection_staterH   ra   rW   rZ   rj   rI   r9   r<   r.   rP   rQ   rF   )rƒ   r“   Úbuffr–   rF   rH   r€   s         €rC   Ú_move_in_selection_modezocreate_text_object_decorator.<locals>.text_object_decorator.<locals>.decorator.<locals>._move_in_selection_modeù   sÕ   ø€ ð #3Ð"2°5Ñ"9Ô"9�KØ Ô/�DØ&*Ô&:�Oà&Ð.Ø˜ð #”ð Rà%0×%?Ò%?ÀÄÑ%NÔ%N™
˜˜sØ Ô!5Ñ5˜Ø˜tÔ3Ñ3˜àCH˜Ô@Ø/2˜Ô,ð 'Ô+­~Ô/FÒFÐFÝ3@Ô3F˜OÔ0Ð0Ð0å3@Ô3K˜OÔ0Ð0Ð0àÔ,Ð<Ô<ÀÔ@QÑQÐ<Ô<Ð<Ð<rB   ©rƒ   r„   rN   r…   ©Úaddr#   r   r"   )
r€   r�   r”   r˜   rz   rw   rt   r{   rx   ry   s
   `   €€€€€€rC   Ú	decoratorzNcreate_text_object_decorator.<locals>.text_object_decorator.<locals>.decoratorÌ   s4  øø€ Øˆ\ÔØÕ=ÀÑFÈeðð ð ð7ð 7ð 7ð 7ð 7ñô ð7ð, #ð Nà!�Ô!ØÝ;Ð;Øñå(ñ)ð  ðð ð ðNð Nð Nð Nð Nñô ðNð (ð %Rà!�Ô!ØÝ;Ð;Øñå'ñ(ð  ðð ð ðRð Rð Rð Rð Rñô ðRð> $Ð#rB   )r€   rr   rN   rr   rA   )rw   rx   ry   rz   r{   rœ   rt   s   ````` €rC   Útext_object_decoratorz;create_text_object_decorator.<locals>.text_object_decorator·   sS   øøøøøø€ ð*S	$ð S	$ð S	$ð S	$ð S	$ð S	$ð S	$ð S	$ð S	$ð S	$ð S	$ðj ÐrB   )r{   r|   rw   r   rx   r}   ry   r}   rz   r}   rN   r~   ©r   )rt   r�   s   ` rC   Úcreate_text_object_decoratorrŸ   °   sN   ø€ õ  ™œØ %Ø%*Øðjð jð jð jð jð jð jð jðX !Ð rB   Ú_OFú#Callable[..., Callable[[_OF], _OF]]c                ó4   ‡ — t          ¦   «         ddœdˆ fd„}|S )zK
    Create a decorator that can be used for registering Vi operators.
    Fr‚   r{   r|   rw   r   rz   r}   rN   úCallable[[_OF], _OF]c                ó    •‡ ‡‡— dˆˆ ˆˆfd„}|S )zÉ
        Register a Vi operator.

        Usage::

            @operator('d', filter=...)
            def handler(event, text_object):
                # Do something with the text object here.
        rŽ   r    rN   c                ó¶   •‡ —  ‰j         ‰t           ‰z  t          z  ‰dœŽdˆ fd„¦   «         } ‰j         ‰t           ‰z  t          z  ‰dœŽdˆ fd„¦   «         }‰ S )	Nr‚   rƒ   r„   rN   r…   c                óV   •— ‰| j         j        _        | j        | j         j        _        dS )zE
                Handle operator in navigation mode.
                N)rˆ   r‰   rŽ   rŒ   r‹   )rƒ   rŽ   s    €rC   Ú_operator_in_navigationzicreate_operator_decorator.<locals>.operator_decorator.<locals>.decorator.<locals>._operator_in_navigation@  s(   ø€ ð 4A�”	Ô"Ô0Ø27´)�”	Ô"Ô/Ð/Ð/rB   c                ó.  •— | j         }|j        }|�ƒ|j        t          j        k    rt
          j        }n.|j        t          j        k    rt
          j        }nt
          j        }t          |j
        |j        z
  |¬¦  «        } ‰| |¦  «         d|_        dS dS )zD
                Handle operator in selection mode.
                N©rI   )r’   r–   rI   r.   rP   r9   r<   r=   r;   rE   rj   rZ   )rƒ   r—   r–   Útext_obj_typer“   rŽ   s        €rC   Ú_operator_in_selectionzhcreate_operator_decorator.<locals>.operator_decorator.<locals>.decorator.<locals>._operator_in_selectionO  sª   ø€ ð Ô+�Ø"&Ô"6�à"Ð.à&Ô+­}Ô/BÒBÐBÝ(6Ô(?˜˜Ø(Ô-µÔ1DÒDÐDÝ(6Ô(<˜˜å(6Ô(@˜å",Ø'Ô@À4ÔCWÑWØ*ð#ñ #ô #�Kð "�M %¨Ñ5Ô5Ð5ð ,0�DÔ(Ð(Ð(ð% /Ð.rB   r™   rš   )rŽ   r§   r«   rz   rw   rt   r{   s   `  €€€€rC   rœ   zHcreate_operator_decorator.<locals>.operator_decorator.<locals>.decorator?  sº   øø€ Øˆ\ÔØÝ7Ð7¸&Ñ@ÕCUÑUØðð ð ð
<ð <ð <ð <ð <ñô ð
<ð ˆ\ÔØÝ7Ð7¸&Ñ@ÕCTÑTØðð ð ð
0ð 0ð 0ð 0ð 0ñô ð
0ð6 !Ð rB   )rŽ   r    rN   r    rA   )rw   rz   r{   rœ   rt   s   ``` €rC   Úoperator_decoratorz5create_operator_decorator.<locals>.operator_decorator2  s<   øøøø€ ð0	!ð 0	!ð 0	!ð 0	!ð 0	!ð 0	!ð 0	!ð 0	!ð 0	!ðd ÐrB   )r{   r|   rw   r   rz   r}   rN   r£   rž   )rt   r¬   s   ` rC   Úcreate_operator_decoratorr­   +  s?   ø€ õ -3©H¬HÀEð?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ðB ÐrB   r}   c                 ó2   — t          ¦   «         j        j        S rK   )r
   r’   Úis_returnablerA   rB   rC   r¯   r¯   v  s   € å‰9Œ9Ô#Ô1Ð1rB   c                 ó„   — t          ¦   «         j        } t          | j        o| j        j        t
          j        k    ¦  «        S rK   )r
   r’   r}   r–   rI   r.   r=   )r—   s    rC   Úin_block_selectionr±   {  s9   € å‰9Œ9Ô#€DÝØÔÐQ Ô!5Ô!:½mÔ>QÒ!Qñô ð rB   c                 ó6   — t          ¦   «         j        j        d uS rK   )r
   r‰   Údigraph_symbol1rA   rB   rC   Údigraph_symbol_1_givenr´   ƒ  s   € å‰9Œ9ÔÔ-°TÐ9Ð9rB   c                 ó:   — t          ¦   «         j        j        dk    S )z-Returns True when the search buffer is empty.Ú )r
   r’   rk   rA   rB   rC   Úsearch_buffer_is_emptyr·   ˆ  s   € õ ‰9Œ9Ô#Ô(¨BÒ.Ð.rB   c                 ó2   — t          ¦   «         j        j        S rK   )r
   r‰   Útilde_operatorrA   rB   rC   r¹   r¹   Ž  s   € å‰9Œ9ÔÔ,Ð,rB   r2   c                 óT&  ‡�‡‘‡’— t          ¦   «         } | j        }t          t          t          df         t          t
          t          gt          f         f         }dt          ¦   «         d„ fdt          ¦   «         d„ fdt          ¦   «         d„ fdt          ¦   «         d	„ fd
t          d„ fg}  |dt          ¬¦  «        t          d¦  «        ¦  «          |d¦  «        �dd„¦   «         } |dt          ¬¦  «        �dd„¦   «         } |dt          ¬¦  «        �dd„¦   «         } |dt          ¬¦  «         |dt          ¬¦  «        �dd„¦   «         ¦   «         } |dt          ¬¦  «        �dd„¦   «         } |dt          ¬¦  «         |dt          ¬¦  «        �dd„¦   «         ¦   «         }	 |dt          ¬¦  «        �dd „¦   «         }
 |d!t          ¬¦  «        �dd"„¦   «         } |dt          ¬¦  «        �dd#„¦   «         } |dt          ¬¦  «        �dd$„¦   «         } |d%t          ¬¦  «         |d&t          ¬¦  «        �dd'„¦   «         ¦   «         } |d(t          ¬¦  «        �dd)„¦   «         }  |d*t          t          z  ¬¦  «        t          d+¦  «        ¦  «           |d*t          t           z  ¬¦  «        t          d+¦  «        ¦  «          |d*t           t          z  ¬¦  «        �dd,„¦   «         } |d-t          ¬¦  «        �dd.„¦   «         } |d-t          ¬¦  «        �dd/„¦   «         } |d0t          t           z  ¬¦  «        �dd1„¦   «         } |d2t          t           z  ¬¦  «        �dd3„¦   «         } |d4t          t           z  ¬¦  «        �dd5„¦   «         } |d6d6t          t           z  ¬¦  «         |d7t          t           z  ¬¦  «        �dd8„¦   «         ¦   «         } |d9t          ¬¦  «        �dd:„¦   «         } |d;d;t          ¬¦  «        �dd<„¦   «         } |d=t          ¬¦  «        �dd>„¦   «         } |d?t          t           z  ¬¦  «        �dd@„¦   «         } |dAt          t           z  ¬¦  «        �ddB„¦   «         } |dAt          t           z  ¬¦  «        �d�ddF„¦   «         Š� |d2t          t           z  ¬¦  «        �dˆ�fdG„¦   «         } |dHt          t           z  ¬¦  «        �ddI„¦   «         } |dJdHt          t           z  ¬¦  «        �ddK„¦   «         } |dHt          t           z  ¬¦  «        �ddL„¦   «         } |dJdHt          t           z  ¬¦  «        �ddM„¦   «         }  |dNt          ¬¦  «        �ddO„¦   «         }! |dPt          ¬¦  «        �ddQ„¦   «         }" |dRt           j        dNt          ¬¦  «        �ddS„¦   «         }# |dRt           j        dPt          ¬¦  «        �ddT„¦   «         }$ |dUt          ¬¦  «        �ddV„¦   «         }% |dWt          ¬¦  «        �ddX„¦   «         }& |dYt          t           z  ¬¦  «        �ddZ„¦   «         }' |d[t          d\„ ¬]¦  «        �dd^„¦   «         }( |d_t          ¬¦  «        �dd`„¦   «         }) |dt          ¬¦  «        �dda„¦   «         }* |d_t          ¬¦  «        �ddb„¦   «         }+ |dct          ¬¦  «        �ddd„¦   «         }, |dct          ¬¦  «        �dde„¦   «         }- |dt          ¬¦  «        �ddf„¦   «         }. |d0dgt          ¬¦  «         |d0dht          ¬¦  «        �ddi„¦   «         ¦   «         }/ |d=t          ¬¦  «        �ddj„¦   «         }0 |dkt          ¬¦  «        �ddl„¦   «         }1 |dmdmt          ¬¦  «         |dnt          ¬¦  «        �ddo„¦   «         ¦   «         }2 |dpt          ¬¦  «        �ddq„¦   «         }3 |drt          ¬¦  «        �dds„¦   «         }4 |dtdtt          ¬¦  «         |dut          ¬¦  «        �ddv„¦   «         ¦   «         }5 |dwdwt          ¬¦  «         |dxt          ¬¦  «        �ddy„¦   «         ¦   «         }6 |dzt          t           z  ¬¦  «        �dd{„¦   «         }7 |d|t          t           z  ¬¦  «        �dd}„¦   «         }8 |d~t          ¬¦  «        �dd„¦   «         }9 |dJd[d[t          t           z  ¬¦  «        �dd€„¦   «         }: |dJd�d�t          t           z  ¬¦  «        �dd‚„¦   «         }; |dJd~d~t          t           z  ¬¦  «        �ddƒ„¦   «         }< |d„t          ¬¦  «        �dd…„¦   «         }= |d†t          ¬¦  «        �dd‡„¦   «         }> |dˆt          ¬¦  «        �dd‰„¦   «         }? |dŠt          ¬¦  «        �dd‹„¦   «         }@t%          | ¦  «        Š‘t'          | ¦  «        Š’ |t           j        t(          ¬¦  «        �ddŒ„¦   «         }A	 �d�dˆ‘fd�„}B |BdCdC¦  «          |BdCd�¦  «          |Bd�dC¦  «          |Bd�d�¦  «         �dˆ‘fd–„}C|D ]\  }D}E}F |C|E|Fg|D¢R Ž  Œ ‰‘dm¦  «        �dd™„¦   «         }G ‰‘dRt           j        dm¦  «        �ddš„¦   «         }H ‰‘dt¦  «        �dd›„¦   «         }I ‰‘dw¦  «        �ddœ„¦   «         }J ‰‘dJd�¦  «        �ddž„¦   «         }K ‰’dŸ¦  «        �dd „¦   «         }L ‰’d¡¦  «        �dd¢„¦   «         }M ‰’d£¦  «        �dd¤„¦   «         }N ‰’dg¦  «        �dd¥„¦   «         }O ‰’dh¦  «        �dd¦„¦   «         }P ‰’d§¦  «        �dd¨„¦   «         }Q ‰’d¦  «        �dd©„¦   «         }R ‰’d?dgd�¬ª¦  «        �dd«„¦   «         }S ‰’d0dgd�¬ª¦  «        �dd¬„¦   «         }T ‰’d?dhd�¬ª¦  «        �dd­„¦   «         }U ‰’d0dhd�¬ª¦  «        �dd®„¦   «         }V ‰’d0dNd�¬ª¦  «        �dd¯„¦   «         }W ‰’d°¦  «        �dd±„¦   «         }X ‰’d²¦  «        �dd³„¦   «         }Y	 �d�dˆ’fdº„}Zd»D ]3}[d¼D ]\  }\}] |Z|\|]|[¦  «         Œ |ZdˆdŠ|[dŸ¦  «          |Zd½d¾|[d¡¦  «         Œ4 ‰’d½¦  «        �dd¿„¦   «         }^ ‰’d¾¦  «        �ddÀ„¦   «         }_ ‰’dÁt           j        ¦  «        �ddÂ„¦   «         }` ‰’dÃt           j        ¦  «        �ddÄ„¦   «         }a ‰’dÅt           j        ¦  «        �ddÆ„¦   «         }b ‰’dÇt           j        ¦  «        �ddÈ„¦   «         }c�dˆ’fdÊ„}d |dd�¦  «          |ddC¦  «          ‰’dË¦  «         ‰’dÌ¦  «        �ddÍ„¦   «         ¦   «         }e ‰’dd�d�¬Î¦  «        �ddÏ„¦   «         }f ‰’dd�d�¬Î¦  «        �ddÐ„¦   «         }g ‰’dÑ¦  «         ‰’dÒ¦  «         ‰’dÓ¦  «        �ddÔ„¦   «         ¦   «         ¦   «         }h ‰’dÕ¦  «        �ddÖ„¦   «         }i ‰’d×¦  «        �ddØ„¦   «         }j ‰’dÙ¦  «        �ddÚ„¦   «         }k ‰’dÛd�¬ª¦  «        �ddÜ„¦   «         }l |dÛt          ¬¦  «        �ddÝ„¦   «         }m ‰’dÞd�¬ª¦  «        �ddß„¦   «         }n |dÞt          ¬¦  «        �ddà„¦   «         }o |dádpt          t          z  ¬¦  «         |dádÅt          t          z  ¬¦  «         |dád*t          t          z  ¬¦  «        �ddâ„¦   «         ¦   «         ¦   «         }p |dádrt          t          z  ¬¦  «         |dádŸt          t          z  ¬¦  «        �ddã„¦   «         ¦   «         }q |dádát          t          z  ¬¦  «        �ddä„¦   «         }r ‰’då¦  «        �ddæ„¦   «         }s ‰’dç¦  «        �ddè„¦   «         }t ‰’dJdJ¦  «        �ddé„¦   «         }u ‰’dJdê¦  «        �ddë„¦   «         }v ‰’dJd§¦  «        �ddì„¦   «         }w ‰’dJd¦  «        �ddí„¦   «         }x ‰’dJdî¦  «        �ddï„¦   «         }y ‰’dð¦  «        �ddñ„¦   «         }z |dðt*          ¬¦  «        �ddò„¦   «         }{dóD ]/}| |||t          t          z  t(          z  ¬¦  «        �ddô„¦   «         }}Œ0 |d²t          t          z  t(          z  t*          z  ¬¦  «        �ddõ„¦   «         }~ |t           j        t,          ¬¦  «        �ddö„¦   «         } |t           j        t.          ¬¦  «        �dd÷„¦   «         }€ |t           j        t0          dø„ ¬]¦  «        �ddù„¦   «         }� |d!t0          ¬¦  «        �ddú„¦   «         }‚ |dût0          ¬¦  «        �ddü„¦   «         }ƒ |dÌt0          ¬¦  «        �ddý„¦   «         }„ |dÓt0          ¬¦  «        �ddþ„¦   «         }… |dt0          ¬¦  «         |dt0          ¬¦  «        �ddÿ„¦   «         ¦   «         }† |�d �dt          ¬¦  «        �d�d„¦   «         }‡ |�d �dt          ¬¦  «        �d�d„¦   «         }ˆ |�dt          t,          z  ¬¦  «        �d�d„¦   «         }‰ |t           j        t2          t4           z  ¬¦  «        �d�d„¦   «         }Š |t           j        t2          t4          z  ¬¦  «        �d�d„¦   «         }‹ |�d	t          t,          z  ¬¦  «        �d�d
„¦   «         }Œ |d�t           j        t          t6           z  ¬¦  «        �d�d„¦   «         }� |d�t          t6          z  ¬¦  «        �d�d„¦   «         }Ž |�dt           j        t          dC�¬¦  «        �d�d„¦   «         }�t9          | t:          ¦  «        S (  z�
    Vi extensions.

    # Overview of Readline Vi commands:
    # http://www.catonmat.net/download/bash-vi-editing-mode-cheat-sheet.pdf
    .)Úgú?c                ó,   — t          j        | d¦  «        S )NÚrot_13)ÚcodecsÚencode©Ústrings    rC   ú<lambda>z"load_vi_bindings.<locals>.<lambda>°  s   € �6œ=¨°Ñ:Ô:€ rB   )r»   Úuc                ó    —  | j         ¦   «         S rK   ©ÚlowerrÁ   s    rC   rÃ   z"load_vi_bindings.<locals>.<lambda>³  ó   € ¨l¨f¬l©n¬n€ rB   )r»   ÚUc                ó    —  | j         ¦   «         S rK   ©ÚupperrÁ   s    rC   rÃ   z"load_vi_bindings.<locals>.<lambda>µ  rÈ   rB   )r»   ú~c                ó    —  | j         ¦   «         S rK   ©ÚswapcaserÁ   s    rC   rÃ   z"load_vi_bindings.<locals>.<lambda>·  s   € ¨o¨f¬oÑ.?Ô.?€ rB   )rÍ   c                ó    —  | j         ¦   «         S rK   rÏ   rÁ   s    rC   rÃ   z"load_vi_bindings.<locals>.<lambda>»  s   € ˜?˜6œ?Ñ,Ô,€ rB   zc-v©rw   zquoted-insertÚescaperƒ   r„   rN   r…   c                ó.  — | j         }| j        j        }|j        t          j        t          j        fv r'|xj        |j         	                    ¦   «         z  c_        t          j
        |_        t          |j        ¦  «        r|                     ¦   «          dS dS )z4
        Escape goes to vi navigation mode.
        N)r’   rˆ   r‰   Ú
input_moder)   ÚINSERTÚREPLACErZ   rW   Úget_cursor_left_positionÚ
NAVIGATIONr}   r–   Úexit_selection)rƒ   rb   r‰   s      rC   Ú_back_to_navigationz-load_vi_bindings.<locals>._back_to_navigationÂ  s‘   € ð
 Ô%ˆØ”9Ô%ˆàÔ¥9Ô#3µYÔ5FÐ"GÐGÐGØÐ"Ô" f¤o×&NÒ&NÑ&PÔ&PÑPÐ"Ô"å'Ô2ˆÔå�Ô&Ñ'Ô'ð 	$Ø×!Ò!Ñ#Ô#Ð#Ð#Ð#ð	$ð 	$rB   Úkc                óF   — | j                              | j        ¬¦  «         dS )z-
        Arrow up in selection mode.
        ©ÚcountN)r’   Ú	cursor_uprŒ   ©rƒ   s    rC   Ú_up_in_selectionz*load_vi_bindings.<locals>._up_in_selectionÒ  s&   € ð
 	Ô×&Ò&¨U¬YÐ&Ñ7Ô7Ð7Ð7Ð7rB   Újc                óF   — | j                              | j        ¬¦  «         dS )z/
        Arrow down in selection mode.
        rÞ   N)r’   Úcursor_downrŒ   rá   s    rC   Ú_down_in_selectionz,load_vi_bindings.<locals>._down_in_selectionÙ  s&   € ð
 	Ô×(Ò(¨u¬yÐ(Ñ9Ô9Ð9Ð9Ð9rB   Úupzc-pc                óF   — | j                              | j        ¬¦  «         dS )zA
        Arrow up and ControlP in navigation mode go up.
        rÞ   N©r’   Úauto_uprŒ   rá   s    rC   Ú_up_in_navigationz+load_vi_bindings.<locals>._up_in_navigationà  s&   € ð 	Ô×$Ò$¨5¬9Ð$Ñ5Ô5Ð5Ð5Ð5rB   c                óH   — | j                              | j        d¬¦  «         dS )zd
        Go up, but if we enter a new history entry, move to the start of the
        line.
        T©rß   Ú&go_to_start_of_line_if_history_changesNré   rá   s    rC   Ú_go_upz load_vi_bindings.<locals>._go_upè  s5   € ð 	Ô×$Ò$Ø”)ÀDð 	%ñ 	
ô 	
ð 	
ð 	
ð 	
rB   Údownzc-nc                óF   — | j                              | j        ¬¦  «         dS )z>
        Arrow down and Control-N in navigation mode.
        rÞ   N©r’   Ú	auto_downrŒ   rá   s    rC   Ú_go_downz"load_vi_bindings.<locals>._go_downò  s&   € ð 	Ô×&Ò&¨U¬YÐ&Ñ7Ô7Ð7Ð7Ð7rB   c                óH   — | j                              | j        d¬¦  «         dS )z\
        Go down, but if we enter a new history entry, go to the start of the line.
        Trí   Nrò   rá   s    rC   Ú	_go_down2z#load_vi_bindings.<locals>._go_down2ú  s5   € ð
 	Ô×&Ò&Ø”)ÀDð 	'ñ 	
ô 	
ð 	
ð 	
ð 	
rB   Ú	backspacec                óv   — | j         xj        | j         j                             | j        ¬¦  «        z  c_        dS )z2
        In navigation-mode, move cursor.
        rÞ   N)r’   rZ   rW   rØ   rŒ   rá   s    rC   Ú_go_leftz"load_vi_bindings.<locals>._go_left  s=   € ð
 	ÔÐ,Ô,ØÔ Ô)×BÒBÈÌÐBÑSÔSñ	
Ð,Ô,Ð,Ð,rB   c                óz   — | j         }|j        r|                     ¦   «          d S |                     d¬¦  «         d S )NT)Úselect_first)r’   Úcomplete_stateÚcomplete_nextÚstart_completion©rƒ   Úbs     rC   Ú_complete_nextz(load_vi_bindings.<locals>._complete_next  sH   € àÔ ˆàÔð 	2Ø�OŠOÑÔÐÐÐà×Ò¨DÐÑ1Ô1Ð1Ð1Ð1rB   c                óz   — | j         }|j        r|                     ¦   «          dS |                     d¬¦  «         dS )z4
        Control-P: To previous completion.
        T)Úselect_lastN)r’   rü   Úcomplete_previousrþ   rÿ   s     rC   Ú_complete_prevz(load_vi_bindings.<locals>._complete_prev  sL   € ð
 Ô ˆàÔð 	1Ø×ÒÑ!Ô!Ð!Ð!Ð!à×Ò¨4ÐÑ0Ô0Ð0Ð0Ð0rB   úc-gzc-yc                ó   — d| j         _        dS )z,
        Accept current completion.
        N)r’   rü   rá   s    rC   Ú_accept_completionz,load_vi_bindings.<locals>._accept_completion!  s   € ð /3ˆÔÔ+Ð+Ð+rB   zc-ec                ó8   — | j                              ¦   «          dS )zF
        Cancel completion. Go back to originally typed text.
        N)r’   Úcancel_completionrá   s    rC   Ú_cancel_completionz,load_vi_bindings.<locals>._cancel_completion)  s   € ð
 	Ô×.Ò.Ñ0Ô0Ð0Ð0Ð0rB   Úenterzaccept-linec                óœ   — | j         }|                     | j        ¬¦  «         |xj        |j                             d¬¦  «        z  c_        dS )z3
        Go to the beginning of next line.
        rÞ   T©Úafter_whitespaceN)r’   rå   rŒ   rZ   rW   Úget_start_of_line_positionrÿ   s     rC   Ú_start_of_next_linez-load_vi_bindings.<locals>._start_of_next_line9  sY   € ð
 Ô ˆØ	�Š˜EœIˆÑ&Ô&Ð&Ø	ÐÔ˜QœZ×BÒBØ!ð Cñ 
ô 
ñ 	
ÐÔÐÐrB   Úinsertc                ó<   — t           j        | j        j        _        dS ©z*
        Pressing the Insert key.
        N©r)   rÖ   rˆ   r‰   rÕ   rá   s    rC   Ú_insert_modez&load_vi_bindings.<locals>._insert_modeH  s   € õ
 )2Ô(8ˆŒ	ÔÔ%Ð%Ð%rB   c                ó<   — t           j        | j        j        _        dS r  )r)   rÙ   rˆ   r‰   rÕ   rá   s    rC   Ú_navigation_modez*load_vi_bindings.<locals>._navigation_modeO  s   € õ
 )2Ô(<ˆŒ	ÔÔ%Ð%Ð%rB   Úac                óž   — | j         xj        | j         j                             ¦   «         z  c_        t          j        | j        j        _        d S rK   )	r’   rZ   rW   Úget_cursor_right_positionr)   rÖ   rˆ   r‰   rÕ   rá   s    rC   Ú_azload_vi_bindings.<locals>._aV  sH   € ð 	ÔÐ,Ô,ØÔ Ô)×CÒCÑEÔEñ	
Ð,Ô,õ )2Ô(8ˆŒ	ÔÔ%Ð%Ð%rB   ÚAc                óž   — | j         xj        | j         j                             ¦   «         z  c_        t          j        | j        j        _        d S rK   )	r’   rZ   rW   Úget_end_of_line_positionr)   rÖ   rˆ   r‰   rÕ   rá   s    rC   Ú_Azload_vi_bindings.<locals>._A_  sF   € àÔÐ,Ô,ØÔ Ô)×BÒBÑDÔDñ	
Ð,Ô,õ )2Ô(8ˆŒ	ÔÔ%Ð%Ð%rB   ÚCc                óâ   — | j         }|                     |j                             ¦   «         ¬¦  «        }| j        j                             |¦  «         t          j        | j        j	        _
        dS )z_
        Change to end of line.
        Same as 'c$' (which is implemented elsewhere.)
        rÞ   N)r’   ÚdeleterW   r  rˆ   Ú	clipboardÚset_textr)   rÖ   r‰   rÕ   ©rƒ   rb   Údeleteds      rC   Ú_change_until_end_of_linez3load_vi_bindings.<locals>._change_until_end_of_linef  s\   € ð Ô%ˆà—-’- f¤o×&NÒ&NÑ&PÔ&P�-ÑQÔQˆØŒ	Ô×$Ò$ WÑ-Ô-Ð-Ý(1Ô(8ˆŒ	ÔÔ%Ð%Ð%rB   ÚcÚSc                ó|  — | j         }t          |j        j        t          j        ¦  «        }| j        j                             |¦  «         |xj	        |j         
                    d¬¦  «        z  c_	        |                     |j                             ¦   «         ¬¦  «         t          j        | j        j        _        dS )z%
        Change current line
        Tr  rÞ   N)r’   r   rW   Úcurrent_liner.   rP   rˆ   r$  Úset_datarZ   r  r#  r  r)   rÖ   r‰   rÕ   )rƒ   rb   Údatas      rC   Ú_change_current_linez.load_vi_bindings.<locals>._change_current_liner  s«   € ð Ô%ˆõ ˜Vœ_Ô9½=Ô;NÑOÔOˆØŒ	Ô×$Ò$ TÑ*Ô*Ð*ð 	ÐÔ &¤/×"LÒ"LØ!ð #Mñ #
ô #
ñ 	
ÐÔð 	�Š˜FœO×DÒDÑFÔFˆÑGÔGÐGÝ(1Ô(8ˆŒ	ÔÔ%Ð%Ð%rB   ÚDc                ó¬   — | j         }|                     |j                             ¦   «         ¬¦  «        }| j        j                             |¦  «         dS )zH
        Delete from cursor position until the end of the line.
        rÞ   N)r’   r#  rW   r  rˆ   r$  r%  r&  s      rC   Ú_delete_until_end_of_linez3load_vi_bindings.<locals>._delete_until_end_of_line…  sL   € ð
 Ô%ˆØ—-’- f¤o×&NÒ&NÑ&PÔ&P�-ÑQÔQˆØŒ	Ô×$Ò$ WÑ-Ô-Ð-Ð-Ð-rB   Údc           	     ó|  — | j         }|j        j        }d                     |d|j        j        …         ¦  «        }d                     ||j        j        |j        j        | j        z   …         ¦  «        }d                     ||j        j        | j        z   d…         ¦  «        }|r|r|dz   }t          ||z   t          |¦  «        t          |¦  «        z   t          |                     d¦  «        ¦  «        z
  ¬¦  «        |_        | j	        j
                             t          |t          j        ¦  «        ¦  «         dS )z<
        Delete line. (Or the following 'n' lines.)
        ú
Nú )rk   rZ   )r’   rW   r]   ÚjoinÚcursor_position_rowrŒ   r   r\   Úlstriprˆ   r$  r-  r   r.   rP   )rƒ   rb   r]   Úbeforer'  Úafters         rC   Ú_delete_linez&load_vi_bindings.<locals>._delete_lineŽ  s0  € ð
 Ô%ˆð ”Ô%ˆà—’˜5Ð!F 6¤?Ô#FÐ!FÔGÑHÔHˆØ—)’)ØØ”Ô3°f´oÔ6YØ”)ñ7ð ôñ
ô 
ˆð —	’	˜% ¤Ô CÀeÄiÑ OÐ QÐ QÔRÑSÔSˆð ð 	#�eð 	#Ø˜d‘]ˆFõ #Ø˜%‘å ™KœK­#¨e©*¬*Ñ4µs¸5¿<º<ÈÑ;LÔ;LÑ7MÔ7MÑMð
ñ 
ô 
ˆŒð 	Œ	Ô×$Ò$¥]°7½MÔ<OÑ%PÔ%PÑQÔQÐQÐQÐQrB   Úxc                óv   — | j                              ¦   «         }| j        j                             |¦  «         dS )zB
        Cut selection.
        ('x' is not an operator.)
        N)r’   rl   rˆ   r$  r-  )rƒ   rn   s     rC   Ú_cutzload_vi_bindings.<locals>._cut¯  s7   € ð Ô-×;Ò;Ñ=Ô=ˆØŒ	Ô×$Ò$ ^Ñ4Ô4Ð4Ð4Ð4rB   Úic                ó<   — t           j        | j        j        _        d S rK   r  rá   s    rC   Ú_izload_vi_bindings.<locals>._i¸  s   € å(1Ô(8ˆŒ	ÔÔ%Ð%Ð%rB   ÚIc                ó¢   — t           j        | j        j        _        | j        xj        | j        j                             d¬¦  «        z  c_        d S )NTr  )	r)   rÖ   rˆ   r‰   rÕ   r’   rZ   rW   r  rá   s    rC   Ú_Izload_vi_bindings.<locals>._I¼  sQ   € å(1Ô(8ˆŒ	ÔÔ%ØÔÐ,Ô,ØÔ Ô)×DÒDØ!%ð Eñ ô ñ	
Ð,Ô,Ð,Ð,rB   Fr;  r}   c                óZ  — | j         }g }|rd	d„}nd	d„}t          |j                             ¦   «         ¦  «        D ]9\  }}|                      ||¦  «        ¦  «         |dk    r ||¦  «        |_        Œ:||_        t          j        | j	        j
        _        |                     ¦   «          dS )
z1
        Insert in block selection mode.
        Úfrom_torT   rN   rG   c                ó   — | d         S r‡   rA   ©rG  s    rC   Úget_poszDload_vi_bindings.<locals>.insert_in_block_selection.<locals>.get_posÑ  ó   € Ø˜q”zÐ!rB   c                ó   — | d         S )Nr   rA   rI  s    rC   rJ  zDload_vi_bindings.<locals>.insert_in_block_selection.<locals>.get_posÖ  rK  rB   r   N)rG  rT   rN   rG   )r’   Ú	enumeraterW   Úselection_rangesÚappendrZ   Úmultiple_cursor_positionsr)   ÚINSERT_MULTIPLErˆ   r‰   rÕ   rÚ   )rƒ   r;  r—   Ú	positionsrJ  r@  rG  s          rC   Úinsert_in_block_selectionz3load_vi_bindings.<locals>.insert_in_block_selectionÅ  sß   € ð
 Ô#ˆð ˆ	àð 	"ð"ð "ð "ð "ð "ð
"ð "ð "ð "õ $ D¤M×$BÒ$BÑ$DÔ$DÑEÔEð 	8ð 	8‰JˆAˆwØ×Ò˜W˜W WÑ-Ô-Ñ.Ô.Ð.Ø�AŠvˆvØ'. w¨wÑ'7Ô'7�Ô$øà)2ˆÔ&õ )2Ô(AˆŒ	ÔÔ%Ø×ÒÑÔÐÐÐrB   c                ó"   •—  ‰| d¬¦  «         d S )NT)r;  rA   )rƒ   rS  s    €rC   Ú_append_after_blockz-load_vi_bindings.<locals>._append_after_blockä  s   ø€ à!Ð! %¨tÐ4Ñ4Ô4Ð4Ð4Ð4rB   ÚJc                óf   — t          | j        ¦  «        D ]}| j                             ¦   «          ŒdS )z
        Join lines.
        N©ÚrangerŒ   r’   Újoin_next_line©rƒ   r@  s     rC   Ú_joinzload_vi_bindings.<locals>._joinè  s?   € õ
 �u”yÑ!Ô!ð 	2ð 	2ˆAØÔ ×/Ò/Ñ1Ô1Ð1Ð1ð	2ð 	2rB   r»   c                ój   — t          | j        ¦  «        D ]}| j                             d¬¦  «         ŒdS )z+
        Join lines without space.
        r¶   ©Ú	separatorNrX  r[  s     rC   Ú_join_nospacez'load_vi_bindings.<locals>._join_nospaceð  sD   € õ
 �u”yÑ!Ô!ð 	>ð 	>ˆAØÔ ×/Ò/¸"Ð/Ñ=Ô=Ð=Ð=ð	>ð 	>rB   c                ó8   — | j                              ¦   «          dS )z&
        Join selected lines.
        N©r’   Újoin_selected_linesrá   s    rC   Ú_join_selectionz)load_vi_bindings.<locals>._join_selectionø  s   € ð
 	Ô×0Ò0Ñ2Ô2Ð2Ð2Ð2rB   c                ó<   — | j                              d¬¦  «         dS )z4
        Join selected lines without space.
        r¶   r^  Nrb  rá   s    rC   Ú_join_selection_nospacez1load_vi_bindings.<locals>._join_selection_nospaceÿ  s$   € ð
 	Ô×0Ò0¸2Ð0Ñ>Ô>Ð>Ð>Ð>rB   Úpc                ó–   — | j                              | j        j                             ¦   «         | j        t          j        ¬¦  «         dS )z
        Paste after
        ©rß   Ú
paste_modeN)r’   Úpaste_clipboard_datarˆ   r$  Úget_datarŒ   r,   ÚVI_AFTERrá   s    rC   Ú_pastez load_vi_bindings.<locals>._paste  sM   € ð
 	Ô×1Ò1ØŒIÔ×(Ò(Ñ*Ô*Ø”)Ý Ô)ð 	2ñ 	
ô 	
ð 	
ð 	
ð 	
rB   ÚPc                ó–   — | j                              | j        j                             ¦   «         | j        t          j        ¬¦  «         dS )z
        Paste before
        ri  N)r’   rk  rˆ   r$  rl  rŒ   r,   Ú	VI_BEFORErá   s    rC   Ú_paste_beforez'load_vi_bindings.<locals>._paste_before  sM   € ð
 	Ô×1Ò1ØŒIÔ×(Ò(Ñ*Ô*Ø”)Ý Ô*ð 	2ñ 	
ô 	
ð 	
ð 	
ð 	
rB   ú"c                óè   — | j         d         j        }|t          v rT| j        j        j                             |¦  «        }|r0| j                             || j	        t          j        ¬¦  «         dS dS dS )z,
        Paste from named register.
        r3   ri  N)Úkey_sequencer.  Úvi_register_namesrˆ   r‰   Únamed_registersÚgetr’   rk  rŒ   r,   rm  ©rƒ   r)  r.  s      rC   Ú_paste_registerz)load_vi_bindings.<locals>._paste_register  s‹   € ð
 Ô˜qÔ!Ô&ˆØÕ!Ð!Ð!Ø”9Ô%Ô5×9Ò9¸!Ñ<Ô<ˆDØð ØÔ$×9Ò9Ø ¤	µiÔ6Hð :ñ ô ð ð ð ð "Ð!ðð rB   c                óè   — | j         d         j        }|t          v rT| j        j        j                             |¦  «        }|r0| j                             || j	        t          j        ¬¦  «         dS dS dS )z5
        Paste (before) from named register.
        r3   ri  N)ru  r.  rv  rˆ   r‰   rw  rx  r’   rk  rŒ   r,   rq  ry  s      rC   Ú_paste_register_beforez0load_vi_bindings.<locals>._paste_register_before)  s‹   € ð
 Ô˜qÔ!Ô&ˆØÕ!Ð!Ð!Ø”9Ô%Ô5×9Ò9¸!Ñ<Ô<ˆDØð ØÔ$×9Ò9Ø ¤	µiÔ6Ið :ñ ô ð ð ð ð "Ð!ðð rB   Úrc                ó<   — t           j        | j        j        _        dS )z.
        Go to 'replace-single'-mode.
        N)r)   ÚREPLACE_SINGLErˆ   r‰   rÕ   rá   s    rC   Ú_replacez"load_vi_bindings.<locals>._replace6  s   € õ
 )2Ô(@ˆŒ	ÔÔ%Ð%Ð%rB   ÚRc                ó<   — t           j        | j        j        _        dS )z'
        Go to 'replace'-mode.
        N)r)   r×   rˆ   r‰   rÕ   rá   s    rC   Ú_replace_modez'load_vi_bindings.<locals>._replace_mode=  s   € õ
 )2Ô(9ˆŒ	ÔÔ%Ð%Ð%rB   Úsc                óº   — | j                              | j        ¬¦  «        }| j        j                             |¦  «         t          j        | j        j        _	        dS )z_
        Substitute with new text
        (Delete character(s) and go to insert mode.)
        rÞ   N)
r’   r#  rŒ   rˆ   r$  r%  r)   rÖ   r‰   rÕ   ©rƒ   rk   s     rC   Ú_substitutez%load_vi_bindings.<locals>._substituteD  sN   € ð Ô#×*Ò*°´Ð*Ñ;Ô;ˆØŒ	Ô×$Ò$ TÑ*Ô*Ð*Ý(1Ô(8ˆŒ	ÔÔ%Ð%Ð%rB   rÄ   c                ó   — dS )NFrA   ©Úes    rC   rÃ   z"load_vi_bindings.<locals>.<lambda>N  s   € À5€ rB   )rw   Úsave_beforec                óf   — t          | j        ¦  «        D ]}| j                             ¦   «          Œd S rK   )rY  rŒ   r’   Úundor[  s     rC   Ú_undozload_vi_bindings.<locals>._undoN  s=   € å�u”yÑ!Ô!ð 	(ð 	(ˆAØÔ ×%Ò%Ñ'Ô'Ð'Ð'ð	(ð 	(rB   ÚVc                óP   — | j                              t          j        ¬¦  «         dS )z(
        Start lines selection.
        ©rS   N)r’   Ústart_selectionr.   rP   rá   s    rC   Ú_visual_linez&load_vi_bindings.<locals>._visual_lineS  ó'   € ð
 	Ô×,Ò,½MÔ<OÐ,ÑPÔPÐPÐPÐPrB   c                óP   — | j                              t          j        ¬¦  «         dS )z-
        Enter block selection mode.
        r‘  N)r’   r’  r.   r=   rá   s    rC   Ú_visual_blockz'load_vi_bindings.<locals>._visual_blockZ  r”  rB   c                ó¨   — | j         j        }|�C|j        t          j        k    rt          j        |_        dS | j                              ¦   «          dS dS )zn
        Exit line selection mode, or go from non line selection mode to line
        selection mode.
        N)r’   r–   rI   r.   rP   rÚ   ©rƒ   r–   s     rC   Ú_visual_line2z'load_vi_bindings.<locals>._visual_line2a  óZ   € ð  Ô.Ô>ˆàÐ&ØÔ#¥}Ô':Ò:Ð:Ý'4Ô':�Ô$Ð$Ð$àÔ$×3Ò3Ñ5Ô5Ð5Ð5Ð5ð	 'Ð&rB   Úvc                óP   — | j                              t          j        ¬¦  «         dS )z1
        Enter character selection mode.
        r‘  N)r’   r’  r.   rQ   rá   s    rC   Ú_visualz!load_vi_bindings.<locals>._visualo  s'   € ð
 	Ô×,Ò,½MÔ<TÐ,ÑUÔUÐUÐUÐUrB   c                ó¨   — | j         j        }|�C|j        t          j        k    rt          j        |_        dS | j                              ¦   «          dS dS )z}
        Exit character selection mode, or go from non-character-selection mode
        to character selection mode.
        N)r’   r–   rI   r.   rQ   rÚ   r˜  s     rC   Ú_visual2z"load_vi_bindings.<locals>._visual2v  sZ   € ð  Ô.Ô>ˆàÐ&ØÔ#¥}Ô'?Ò?Ð?Ý'4Ô'?�Ô$Ð$Ð$àÔ$×3Ò3Ñ5Ô5Ð5Ð5Ð5ð	 'Ð&rB   c                ó¨   — | j         j        }|�C|j        t          j        k    rt          j        |_        dS | j                              ¦   «          dS dS )zq
        Exit block selection mode, or go from non block selection mode to block
        selection mode.
        N)r’   r–   rI   r.   r=   rÚ   r˜  s     rC   Ú_visual_block2z(load_vi_bindings.<locals>._visual_block2„  rš  rB   ÚwÚWc                óŠ   — | j         }|j        r2|j        j        t          j        k    rt          j        |j        _        dS dS dS )zP
        Switch from visual linewise mode to visual characterwise mode.
        N)r’   r–   rI   r.   rP   rQ   ©rƒ   rb   s     rC   Ú_visual_auto_wordz+load_vi_bindings.<locals>._visual_auto_word’  sT   € ð Ô%ˆð Ô"ð	CàÔ&Ô+­}Ô/BÒBÐBå*7Ô*BˆFÔ"Ô'Ð'Ð'ð		Cð 	CàBÐBrB   c                óè   — | j         }t          | j        t          |j        j        ¦  «        ¦  «        }|r<| j                              |¬¦  «        }| j        j         	                    |¦  «         dS dS )z#
        Delete character.
        rÞ   N)
r’   ÚminrŒ   r\   rW   Úcurrent_line_after_cursorr#  rˆ   r$  r%  ©rƒ   r—   rß   rk   s       rC   Ú_deletez!load_vi_bindings.<locals>._delete   st   € ð
 Ô#ˆÝ�E”I�s 4¤=Ô#JÑKÔKÑLÔLˆØð 	/ØÔ'×.Ò.°UÐ.Ñ;Ô;ˆDØŒIÔ×(Ò(¨Ñ.Ô.Ð.Ð.Ð.ð	/ð 	/rB   ÚXc                óè   — | j         }t          | j        t          |j        j        ¦  «        ¦  «        }|r<| j                              |¬¦  «        }| j        j         	                    |¦  «         d S d S )NrÞ   )
r’   r¨  rŒ   r\   rW   Úcurrent_line_before_cursorÚdelete_before_cursorrˆ   r$  r%  rª  s       rC   Ú_delete_before_cursorz/load_vi_bindings.<locals>._delete_before_cursor«  sr   € àÔ#ˆÝ�E”I�s 4¤=Ô#KÑLÔLÑMÔMˆØð 	/ØÔ'×<Ò<À5Ð<ÑIÔIˆDØŒIÔ×(Ò(¨Ñ.Ô.Ð.Ð.Ð.ð	/ð 	/rB   ÚyÚYc                óÖ   — d                      | j        j        j        d| j        …         ¦  «        }| j        j                             t          |t          j
        ¦  «        ¦  «         dS )z&
        Yank the whole line.
        r5  N)r7  r’   rW   Úlines_from_currentrŒ   rˆ   r$  r-  r   r.   rP   r†  s     rC   Ú
_yank_linez$load_vi_bindings.<locals>._yank_line³  sU   € ð �yŠy˜Ô-Ô6ÔIÈ+ÈEÌIÈ+ÔVÑWÔWˆØŒ	Ô×$Ò$¥]°4½Ô9LÑ%MÔ%MÑNÔNÐNÐNÐNrB   ú+c                óÂ   — | j         }|xj        |j                             | j        ¬¦  «        z  c_        |xj        |j                             d¬¦  «        z  c_        dS )z;
        Move to first non whitespace of next line
        rÞ   Tr  N)r’   rZ   rW   Úget_cursor_down_positionrŒ   r  r¥  s     rC   Ú
_next_linez$load_vi_bindings.<locals>._next_line¼  sx   € ð
 Ô%ˆØÐÔ &¤/×"JÒ"JØ”)ð #Kñ #
ô #
ñ 	
ÐÔð 	ÐÔ &¤/×"LÒ"LØ!ð #Mñ #
ô #
ñ 	
ÐÔÐÐrB   ú-c                óÂ   — | j         }|xj        |j                             | j        ¬¦  «        z  c_        |xj        |j                             d¬¦  «        z  c_        dS )z?
        Move to first non whitespace of previous line
        rÞ   Tr  N)r’   rZ   rW   Úget_cursor_up_positionrŒ   r  r¥  s     rC   Ú
_prev_linez$load_vi_bindings.<locals>._prev_lineÉ  sx   € ð
 Ô%ˆØÐÔ &¤/×"HÒ"HØ”)ð #Iñ #
ô #
ñ 	
ÐÔð 	ÐÔ &¤/×"LÒ"LØ!ð #Mñ #
ô #
ñ 	
ÐÔÐÐrB   ú>zc-tc                ó^   — | j         }|j        j        }t          |||| j        z   ¦  «         dS )z
        Indent lines.
        N)r’   rW   r8  r   rŒ   )rƒ   rb   Úcurrent_rows      rC   Ú_indentz!load_vi_bindings.<locals>._indentÖ  s5   € ð Ô%ˆØ”oÔ9ˆÝˆv�{ K°%´)Ñ$;Ñ<Ô<Ð<Ð<Ð<rB   ú<zc-dc                ód   — | j         j        j        }t          | j         ||| j        z   ¦  «         dS )z!
        Unindent lines.
        N)r’   rW   r8  r   rŒ   )rƒ   rÀ  s     rC   Ú	_unindentz#load_vi_bindings.<locals>._unindentà  s4   € ð Ô*Ô3ÔGˆÝ�Ô% {°KÀ%Ä)Ñ4KÑLÔLÐLÐLÐLrB   ÚOc                óŒ   — | j                              t          ¦   «          ¬¦  «         t          j        | j        j        _        dS )z:
        Open line above and enter insertion mode
        ©Úcopy_marginN)r’   Úinsert_line_abover   r)   rÖ   rˆ   r‰   rÕ   rá   s    rC   Ú_open_abovez%load_vi_bindings.<locals>._open_aboveé  ó;   € ð
 	Ô×.Ò.½}¹¼Ð;NÐ.ÑOÔOÐOÝ(1Ô(8ˆŒ	ÔÔ%Ð%Ð%rB   Úoc                óŒ   — | j                              t          ¦   «          ¬¦  «         t          j        | j        j        _        dS )z:
        Open line below and enter insertion mode
        rÇ  N)r’   Úinsert_line_belowr   r)   rÖ   rˆ   r‰   rÕ   rá   s    rC   Ú_open_belowz%load_vi_bindings.<locals>._open_belowñ  rË  rB   rÍ   c                ó–   — | j         }|j        j        }|�1|dk    r-|                     |                     ¦   «         d¬¦  «         dS dS dS )zL
        Reverse case of current character and move cursor forward.
        Nr5  T©Ú	overwrite)r’   rW   Úcurrent_charÚinsert_textrÐ   )rƒ   rb   r)  s      rC   Ú_reverse_casez'load_vi_bindings.<locals>._reverse_caseù  sU   € ð
 Ô%ˆØŒOÔ(ˆàˆ=˜Q $šY˜YØ×Ò˜qŸzšz™|œ|°tÐÑ<Ô<Ð<Ð<Ð<ð ˆ=˜Y˜YrB   c                ó@   — | j         }|                     d„ ¦  «         dS )z)
        Lowercase current line.
        c                ó*   — |                       ¦   «         S rK   rÆ   ©r„  s    rC   rÃ   z;load_vi_bindings.<locals>._lowercase_line.<locals>.<lambda>
  ó   € ¨a¯gªg©i¬i€ rB   N©r’   Útransform_current_line©rƒ   r—   s     rC   Ú_lowercase_linez)load_vi_bindings.<locals>._lowercase_line  ó*   € ð
 Ô#ˆØ×#Ò#Ð$7Ð$7Ñ8Ô8Ð8Ð8Ð8rB   rÉ   c                ó@   — | j         }|                     d„ ¦  «         dS )z)
        Uppercase current line.
        c                ó*   — |                       ¦   «         S rK   rË   rØ  s    rC   rÃ   z;load_vi_bindings.<locals>._uppercase_line.<locals>.<lambda>  rÙ  rB   NrÚ  rÜ  s     rC   Ú_uppercase_linez)load_vi_bindings.<locals>._uppercase_line  rÞ  rB   c                ó@   — | j         }|                     d„ ¦  «         dS )z0
        Swap case of the current line.
        c                ó*   — |                       ¦   «         S rK   rÏ   rØ  s    rC   rÃ   z:load_vi_bindings.<locals>._swapcase_line.<locals>.<lambda>  s   € ¨a¯jªj©l¬l€ rB   NrÚ  rÜ  s     rC   Ú_swapcase_linez(load_vi_bindings.<locals>._swapcase_line  s*   € ð
 Ô#ˆØ×#Ò#Ð$:Ð$:Ñ;Ô;Ð;Ð;Ð;rB   ú#c                óÄ   — | j         }| j        j        }|j                             ¦   «         |_        t          j        |_        | 	                    || j
        d¬¦  «         dS )z9
        Go to previous occurrence of this word.
        F©rß   Úinclude_current_positionN)r’   rˆ   Úcurrent_search_staterW   Úget_word_under_cursorrk   r+   ÚBACKWARDÚ	directionÚapply_searchrŒ   ©rƒ   r   Úsearch_states      rC   Ú_prev_occurrencez*load_vi_bindings.<locals>._prev_occurrence  sW   € ð
 Ô ˆØ”yÔ5ˆàœJ×<Ò<Ñ>Ô>ˆÔÝ!0Ô!9ˆÔà	�Š�|¨5¬9ÈuˆÑUÔUÐUÐUÐUrB   Ú*c                óÄ   — | j         }| j        j        }|j                             ¦   «         |_        t          j        |_        | 	                    || j
        d¬¦  «         dS )z5
        Go to next occurrence of this word.
        Frç  N)r’   rˆ   ré  rW   rê  rk   r+   ÚFORWARDrì  rí  rŒ   rî  s      rC   Ú_next_occurrencez*load_vi_bindings.<locals>._next_occurrence)  sW   € ð
 Ô ˆØ”yÔ5ˆàœJ×<Ò<Ñ>Ô>ˆÔÝ!0Ô!8ˆÔà	�Š�|¨5¬9ÈuˆÑUÔUÐUÐUÐUrB   ú(c                ó   — d S rK   rA   rá   s    rC   Ú_begin_of_sentencez,load_vi_bindings.<locals>._begin_of_sentence6  ó	   € ð 	ˆrB   ú)c                ó   — d S rK   rA   rá   s    rC   Ú_end_of_sentencez*load_vi_bindings.<locals>._end_of_sentence<  rø  rB   c                óB   — | j         j                             ¦   «          dS )zF
        Unknown key binding while waiting for a text object.
        N)rˆ   ÚoutputÚbellrá   s    rC   Ú_unknown_text_objectz.load_vi_bindings.<locals>._unknown_text_objectE  s!   € ð
 	Œ	Ô×ÒÑÔÐÐÐrB   Údelete_onlyÚwith_registerc                ó‚   •‡ ‡— ‰rdt           j        d‰          f}nd‰          } ‰|dt           iŽdˆ ˆfd
„¦   «         }dS )zð
        Delete and change operators.

        :param delete_only: Create an operator that deletes, but doesn't go to insert mode.
        :param with_register: Copy the deleted text to this named register instead of the clipboard.
        rs  Úcdrw   rƒ   r„   r“   rE   rN   r…   c                óN  •— d }| j         }|r|                     |¦  «        \  }}||_        |rX|j        rQ‰r0| j        d         j        }|t          v r|| j        j        j	        |<   n| j        j
                             |¦  «         ‰st          j        | j        j        _        d S d S r‡   )r’   ro   rW   rk   ru  r.  rv  rˆ   r‰   rw  r$  r-  r)   rÖ   rÕ   )rƒ   r“   rn   r—   rm   Úreg_namer   r  s         €€rC   Údelete_or_change_operatorz_load_vi_bindings.<locals>.create_delete_and_change_operators.<locals>.delete_or_change_operator_  sÉ   ø€ à!ˆNØÔ'ˆDàð -Ø/:¯ª¸tÑ/DÔ/DÑ,�˜nØ ,�”ð ð A .Ô"5ð AØ ð AØ$Ô1°!Ô4Ô9�HØÕ#4Ð4Ð4ØGU˜œ	Ô*Ô:¸8ÑDøà”IÔ'×0Ò0°Ñ@Ô@Ð@ð ð AÝ09Ô0@�”	Ô"Ô-Ð-Ð-ðAð ArB   N©rƒ   r„   r“   rE   rN   r…   )r*   ÚAnyr   )r   r  Úhandler_keysr  Úoperators   ``  €rC   Ú"create_delete_and_change_operatorsz<load_vi_bindings.<locals>.create_delete_and_change_operatorsP  s€   øøø€ ð ð 	-Ø¥¤¨4°Ô+<Ð=ˆLˆLà Ô,ˆLà	ˆ�<Ð	6­¨Ð	6Ð	6ð	Að 	Að 	Að 	Að 	Að 	Añ 
7Ô	6ð	Að 	Að 	ArB   Trw   r   Útransform_funcúCallable[[str], str]rŠ   c                óD   •‡—  ‰|d| t            z  iŽd	ˆfd„¦   «         }d S )
Nrw   rƒ   r„   r“   rE   rN   r…   c                óæ   •— | j         }|                     |j        ¦  «        \  }}||k     rE|                     |j        |z   |j        |z   ‰¦  «         |xj        |j        p|j        z  c_        dS dS )zX
            Apply transformation (uppercase, lowercase, rot13, swap case).
            N)r’   ra   rW   Útransform_regionrZ   rH   rF   )rƒ   r“   r—   rF   rH   r  s        €rC   rf   z=load_vi_bindings.<locals>.create_transform_handler.<locals>._}  s�   ø€ ð
 Ô'ˆDØ$×3Ò3°D´MÑBÔB‰JˆE�3à�sŠ{ˆ{à×%Ò%ØÔ(¨5Ñ0ØÔ(¨3Ñ.Ø"ñô ð ð Ð$Ô$¨¬Ð(L¸;Ô;LÑLÐ$Ô$Ð$Ð$ð ˆ{rB   r  )r   )rw   r  r  rf   r
  s    `  €rC   Úcreate_transform_handlerz2load_vi_bindings.<locals>.create_transform_handlerz  sW   øø€ ð 
ˆ�1Ð	4˜V¥| mÑ3Ð	4Ð	4ð	Mð 	Mð 	Mð 	Mð 	Mñ 
5Ô	4ð	Mð 	Mð 	MrB   r“   rE   c                ó�   — |                      | j        ¦  «        \  }}|j        r!| j        j                             |¦  «         dS dS )z-
        Yank operator. (Copy text.)
        N)ro   r’   rk   rˆ   r$  r-  )rƒ   r“   rf   rn   s       rC   Ú_yankzload_vi_bindings.<locals>._yank“  sQ   € ð
 (ŸOšO¨EÔ,@ÑAÔAÑˆˆ>ØÔð 	9ØŒIÔ×(Ò(¨Ñ8Ô8Ð8Ð8Ð8ð	9ð 	9rB   c                ó¢   — | j         d         j        }|t          v r3|                     | j        ¦  «        \  }}|| j        j        j        |<   dS dS )z3
        Yank selection to named register.
        r3   N)ru  r.  rv  ro   r’   rˆ   r‰   rw  )rƒ   r“   r)  rf   rn   s        rC   Ú_yank_to_registerz+load_vi_bindings.<locals>._yank_to_registerœ  sY   € ð
 Ô˜qÔ!Ô&ˆØÕ!Ð!Ð!Ø +§¢°Ô0DÑ EÔ EÑˆAˆ~Ø4BˆEŒIÔÔ.¨qÑ1Ð1Ð1ð "Ð!rB   c                óz   — | j         }|                     |¦  «        \  }}t          |||dz   | j        ¬¦  «         dS )z
        Indent.
        r3   rÞ   N)r’   rg   r   rŒ   ©rƒ   r“   r—   rd   re   s        rC   Ú_indent_text_objectz-load_vi_bindings.<locals>._indent_text_object¦  sF   € ð
 Ô#ˆØ×0Ò0°Ñ6Ô6‰	ˆˆrÝˆt�U˜B ™F¨%¬)Ð4Ñ4Ô4Ð4Ð4Ð4rB   c                óz   — | j         }|                     |¦  «        \  }}t          |||dz   | j        ¬¦  «         dS )z
        Unindent.
        r3   rÞ   N)r’   rg   r   rŒ   r  s        rC   Ú_unindent_text_objectz/load_vi_bindings.<locals>._unindent_text_object¯  sF   € ð
 Ô#ˆØ×0Ò0°Ñ6Ô6‰	ˆˆrÝ��u˜b 1™f¨E¬IÐ6Ñ6Ô6Ð6Ð6Ð6rB   Úqc                óf   — | j         }|                     |¦  «        \  }}t          |||¦  «         dS )z
        Reshape text.
        N)r’   rg   r   r  s        rC   Ú_reshapez"load_vi_bindings.<locals>._reshape¸  s;   € ð
 Ô#ˆØ×0Ò0°Ñ6Ô6‰	ˆˆrÝ�T˜5 "Ñ%Ô%Ð%Ð%Ð%rB   r   c                ój   — t          | j        j                             | j        ¬¦  «        pd¦  «        S )z.
        Move one word or token left.
        rÞ   r   ©rE   r’   rW   Úfind_start_of_previous_wordrŒ   rá   s    rC   Ú_bzload_vi_bindings.<locals>._bÅ  s:   € õ
 ØÔ Ô)×EÒEÈEÌIÐEÑVÔVð Øñ
ô 
ð 	
rB   ÚBc                ól   — t          | j        j                             | j        d¬¦  «        pd¦  «        S )z.
        Move one non-blank word left
        T©rß   ÚWORDr   r  rá   s    rC   Ú_Bzload_vi_bindings.<locals>._BÏ  sF   € õ
 ØÔ Ô)×EÒEØ”i dð Fñ ô ð ð ñ	
ô 
ð 	
rB   ú$c                óX   — t          | j        j                             ¦   «         ¦  «        S )zL
        'c$', 'd$' and '$':  Delete/change/move until end of line.
        )rE   r’   rW   r  rá   s    rC   Ú_dollarz!load_vi_bindings.<locals>._dollarÛ  s$   € õ
 ˜%Ô.Ô7×PÒPÑRÔRÑSÔSÐSrB   c                ó¢   — t          | j        j                             | j        ¬¦  «        p| j        j                             ¦   «         ¦  «        S )zO
        'word' forward. 'cw', 'dw', 'w': Delete/change/move one word.
        rÞ   ©rE   r’   rW   Úfind_next_word_beginningrŒ   Úget_end_of_document_positionrá   s    rC   Ú_word_forwardz'load_vi_bindings.<locals>._word_forwardâ  sM   € õ
 ØÔ Ô)×BÒBÈÌÐBÑSÔSð LØÔ#Ô,×IÒIÑKÔKñ
ô 
ð 	
rB   c                ó¤   — t          | j        j                             | j        d¬¦  «        p| j        j                             ¦   «         ¦  «        S )zO
        'WORD' forward. 'cW', 'dW', 'W': Delete/change/move one WORD.
        Tr$  r+  rá   s    rC   Ú_WORD_forwardz'load_vi_bindings.<locals>._WORD_forwardì  sY   € õ
 ØÔ Ô)×BÒBØ”i dð Cñ ô ð Lð Ô#Ô,×IÒIÑKÔKñ	
ô 
ð 	
rB   rŠ  c                ó�   — | j         j                             | j        ¬¦  «        }t	          |r|dz
  ndt
          j        ¬¦  «        S )z0
        End of 'word': 'ce', 'de', 'e'
        rÞ   r3   r   r©   ©r’   rW   Úfind_next_word_endingrŒ   rE   r9   r;   ©rƒ   rH   s     rC   Ú_end_of_wordz&load_vi_bindings.<locals>._end_of_wordø  sE   € ð
 Ô"Ô+×AÒAÈÌ	ÐAÑRÔRˆÝ SÐ/˜# ™'˜'¨aµnÔ6NÐOÑOÔOÐOrB   c                ó’   — | j         j                             | j        d¬¦  «        }t	          |r|dz
  ndt
          j        ¬¦  «        S )z0
        End of 'WORD': 'cE', 'dE', 'E'
        Tr$  r3   r   r©   r2  r4  s     rC   Ú_end_of_WORDz&load_vi_bindings.<locals>._end_of_WORD   sQ   € ð
 Ô"Ô+×AÒAØ”) $ð Bñ 
ô 
ˆõ  SÐ/˜# ™'˜'¨aµnÔ6NÐOÑOÔOÐOrB   ©rx   c                ód   — | j         j                             ¦   «         \  }}t          ||¦  «        S )z+
        Inner 'word': ciw and diw
        ©r’   rW   Úfind_boundaries_of_current_wordrE   ©rƒ   rF   rH   s      rC   Ú_inner_wordz%load_vi_bindings.<locals>._inner_word
  s/   € ð
 Ô)Ô2×RÒRÑTÔT‰
ˆˆsÝ˜% Ñ%Ô%Ð%rB   c                óh   — | j         j                             d¬¦  «        \  }}t          ||¦  «        S )z'
        A 'word': caw and daw
        T)Úinclude_trailing_whitespacer:  r<  s      rC   Ú_a_wordz!load_vi_bindings.<locals>._a_word  s>   € ð
 Ô)Ô2×RÒRØ(,ð Sñ 
ô 
‰
ˆˆsõ ˜% Ñ%Ô%Ð%rB   c                óh   — | j         j                             d¬¦  «        \  }}t          ||¦  «        S )z+
        Inner 'WORD': ciW and diW
        T)r%  r:  r<  s      rC   Ú_inner_WORDz%load_vi_bindings.<locals>._inner_WORD  s>   € ð
 Ô)Ô2×RÒRØð Sñ 
ô 
‰
ˆˆsõ ˜% Ñ%Ô%Ð%rB   c                ój   — | j         j                             dd¬¦  «        \  }}t          ||¦  «        S )z'
        A 'WORD': caw and daw
        T)r%  r?  r:  r<  s      rC   Ú_a_WORDz!load_vi_bindings.<locals>._a_WORD&  s@   € ð
 Ô)Ô2×RÒRØ°4ð Sñ 
ô 
‰
ˆˆsõ ˜% Ñ%Ô%Ð%rB   c                ó¨   — | j         j                             ¦   «         }| j         j                             | j        ¬¦  «        }t          ||¦  «        S )z!
        Auto paragraph.
        rÞ   )r’   rW   Ústart_of_paragraphÚend_of_paragraphrŒ   rE   r<  s      rC   Ú
_paragraphz$load_vi_bindings.<locals>._paragraph0  sI   € ð
 Ô$Ô-×@Ò@ÑBÔBˆØÔ"Ô+×<Ò<À5Ä9Ð<ÑMÔMˆÝ˜% Ñ%Ô%Ð%rB   ú^c                ó\   — t          | j        j                             d¬¦  «        ¦  «        S )z9'c^', 'd^' and '^': Soft start of line, after whitespace.Tr  ©rE   r’   rW   r  rá   s    rC   Ú_start_of_linez(load_vi_bindings.<locals>._start_of_line9  s8   € õ ØÔ Ô)×DÒDØ!%ð Eñ ô ñ
ô 
ð 	
rB   Ú0c                ó\   — t          | j        j                             d¬¦  «        ¦  «        S )z¤
        'c0', 'd0': Hard start of line, before whitespace.
        (The move '0' key is implemented elsewhere, because a '0' could also change the `arg`.)
        Fr  rK  rá   s    rC   Ú_hard_start_of_linez-load_vi_bindings.<locals>._hard_start_of_lineB  s8   € õ ØÔ Ô)×DÒDØ!&ð Eñ ô ñ
ô 
ð 	
rB   NÚci_startÚci_endÚinnerÚkeyú
str | Nonec                óÔ   •‡ ‡‡— d
ˆˆ ˆfd„}|€<  ‰d‰         ‰ d¬	¦  «        |¦  «           ‰d‰         ‰d¬	¦  «        |¦  «         dS   ‰d‰         |d¬	¦  «        |¦  «         dS )zÂ
        Delete/Change string between this start and stop character. But keep these characters.
        This implements all the ci", ci<, ci{, ci(, di", di<, ca", ca<, ... combinations.
        rƒ   r„   rN   rE   c                óz  •— ‰‰k    rC| j         j                             ‰d¬¦  «        }| j         j                             ‰d¬¦  «        }n@| j         j                             ‰‰¦  «        }| j         j                             ‰‰¦  «        }|�!|�‰rdnd}t          |dz   |z
  ||z   ¦  «        S t          d¦  «        S )NF)Úin_current_liner   r3   )r’   rW   Úfind_backwardsÚfindÚfind_enclosing_bracket_leftÚfind_enclosing_bracket_rightrE   )rƒ   rF   rH   ÚoffsetrQ  rP  rR  s       €€€rC   Úhandlerz?load_vi_bindings.<locals>.create_ci_ca_handles.<locals>.handlerW  sà   ø€ Ø˜6Ò!Ð!àÔ,Ô5×DÒDØ¨eð Eñ ô �ð Ô*Ô3×8Ò8¸ÐQVÐ8ÑWÔW��ð Ô,Ô5×QÒQØ˜fñô �ð Ô*Ô3×PÒPØ˜fñô �ð Ð  S _Ø#Ð*˜˜¨�Ý! %¨!¡)¨fÑ"4°c¸F±lÑCÔCÐCõ " !‘}”}Ð$rB   NÚaiTr8  ©rƒ   r„   rN   rE   rA   )rP  rQ  rR  rS  r]  r“   s   ```  €rC   Úcreate_ci_ca_handlesz.load_vi_bindings.<locals>.create_ci_ca_handlesN  s°   øøøø€ ð	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð. ˆ;ØDˆKˆK˜˜Uœ X¸tÐDÑDÔDÀWÑMÔMÐMØBˆKˆK˜˜Uœ V¸TÐBÑBÔBÀ7ÑKÔKÐKÐKÐKà?ˆKˆK˜˜Uœ S¸$Ð?Ñ?Ô?ÀÑHÔHÐHÐHÐHrB   )FT))rs  rs  )ú'ra  )ú`rb  )ú[ú])rÂ  r¾  )Ú{Ú})rõ  rù  re  rf  c                ól   — | j         j                             | j        d¬¦  «        }t	          |¦  «        S )zi
        Move to previous blank-line separated section.
        Implements '{', 'c{', 'd{', 'y{'
        T)rß   r:  )r’   rW   rF  rŒ   rE   ©rƒ   Úindexs     rC   Ú_previous_sectionz+load_vi_bindings.<locals>._previous_sectionƒ  s<   € ð Ô$Ô-×@Ò@Ø”) Dð Añ 
ô 
ˆõ ˜%Ñ Ô Ð rB   c                ól   — | j         j                             | j        d¬¦  «        }t	          |¦  «        S )ze
        Move to next blank-line separated section.
        Implements '}', 'c}', 'd}', 'y}'
        T)rß   r;  )r’   rW   rG  rŒ   rE   rh  s     rC   Ú_next_sectionz'load_vi_bindings.<locals>._next_sectionŽ  s;   € ð Ô$Ô-×>Ò>Ø”) 4ð ?ñ 
ô 
ˆõ ˜%Ñ Ô Ð rB   Úfc                óú   — t          | j        d¦  «        | j        j        _        | j        j                             | j        d| j        ¬¦  «        }|rt          |t          j        ¬¦  «        S t          d¦  «        S )zˆ
        Go to next occurrence of character. Typing 'fx' will move the
        cursor to the next occurrence of character. 'x'.
        FT©rW  rß   r©   r   ©r(   r.  rˆ   r‰   Úlast_character_findr’   rW   rY  rŒ   rE   r9   r;   ©rƒ   Úmatchs     rC   Ú_find_next_occurrencez/load_vi_bindings.<locals>._find_next_occurrence™  st   € õ 2?¸u¼zÈ5Ñ1QÔ1QˆŒ	ÔÔ.ØÔ$Ô-×2Ò2ØŒJ¨°E´Ið 3ñ 
ô 
ˆð ð 	!Ý˜e­.Ô*BÐCÑCÔCÐCå˜a‘=”=Ð rB   ÚFc                óÀ   — t          | j        d¦  «        | j        j        _        t          | j        j                             | j        d| j	        ¬¦  «        pd¦  «        S )z�
        Go to previous occurrence of character. Typing 'Fx' will move the
        cursor to the previous occurrence of character. 'x'.
        Tro  r   )
r(   r.  rˆ   r‰   rq  rE   r’   rW   rX  rŒ   rá   s    rC   Ú_find_previous_occurrencez3load_vi_bindings.<locals>._find_previous_occurrence¨  sb   € õ 2?¸u¼zÈ4Ñ1PÔ1PˆŒ	ÔÔ.ÝØÔ Ô)×8Ò8Ø”
¨D¸¼	ð 9ñ ô ð ð ñ	
ô 
ð 	
rB   Útc                ó   — t          | j        d¦  «        | j        j        _        | j        j                             | j        d| j        ¬¦  «        }|rt          |dz
  t          j        ¬¦  «        S t          d¦  «        S )zQ
        Move right to the next occurrence of c, then one char backward.
        FTro  r3   r©   r   rp  rr  s     rC   Ú_tzload_vi_bindings.<locals>._t¶  sx   € õ
 2?¸u¼zÈ5Ñ1QÔ1QˆŒ	ÔÔ.ØÔ$Ô-×2Ò2ØŒJ¨°E´Ið 3ñ 
ô 
ˆð ð 	!Ý˜e a™i­nÔ.FÐGÑGÔGÐGå˜a‘=”=Ð rB   ÚTc                óÎ   — t          | j        d¦  «        | j        j        _        | j        j                             | j        d| j        ¬¦  «        }t          |r|dz   nd¦  «        S )zS
        Move left to the previous occurrence of c, then one char forward.
        Tro  r3   r   )
r(   r.  rˆ   r‰   rq  r’   rW   rX  rŒ   rE   rr  s     rC   Ú_Tzload_vi_bindings.<locals>._TÄ  se   € õ
 2?¸u¼zÈ4Ñ1PÔ1PˆŒ	ÔÔ.ØÔ$Ô-×<Ò<ØŒJ¨°E´Ið =ñ 
ô 
ˆõ  uÐ3˜% !™)˜)°!Ñ4Ô4Ð4rB   Úreversec                ó@   •‡ —  ‰‰ rdnd¦  «        d	ˆ fd„¦   «         }dS )
z.
        Create ',' and ';' commands.
        ú,ú;rƒ   r„   rN   rE   c                ó~  •— d}| j         j        }t          j        }|j        rz|j        j        }|j        j        }‰r| }|r(| j        j         	                    |d| j
        ¬¦  «        }n3| j        j                             |d| j
        ¬¦  «        }t          j        }|rt          ||¬¦  «        S t          d¦  «        S )zB
            Repeat the last 'f'/'F'/'t'/'T' command.
            r   Tro  r©   )rˆ   r‰   r9   r:   rq  Ú	characterÚ	backwardsr’   rW   rX  rŒ   rY  r;   rE   )rƒ   Úposr‰   rI   Úcharr„  r~  s         €rC   rf   z+load_vi_bindings.<locals>.repeat.<locals>._Ô  sÜ   ø€ ð
  ˆCØ”yÔ)ˆHå!Ô+ˆDàÔ+ð 4ØÔ3Ô=�Ø$Ô8ÔB�	àð .Ø$- �Iàð 4ØÔ.Ô7×FÒFØ¨d¸%¼)ð Gñ ô �C�Cð  Ô.Ô7×<Ò<Ø¨d¸%¼)ð =ñ ô �Cõ *Ô3�DØð %Ý! #¨DÐ1Ñ1Ô1Ð1å! !‘}”}Ð$rB   Nr_  rA   )r~  rf   r“   s   ` €rC   Úrepeatz load_vi_bindings.<locals>.repeatÏ  sL   øø€ ð
 
ˆ˜GÐ,�S�S¨Ñ	-Ô	-ð	%ð 	%ð 	%ð 	%ð 	%ñ 
.Ô	-ð	%ð 	%ð 	%rB   ÚhÚleftc                óf   — t          | j        j                             | j        ¬¦  «        ¦  «        S )z:
        Implements 'ch', 'dh', 'h': Cursor left.
        rÞ   )rE   r’   rW   rØ   rŒ   rá   s    rC   Ú_leftzload_vi_bindings.<locals>._leftö  s2   € õ ØÔ Ô)×BÒBÈÌÐBÑSÔSñ
ô 
ð 	
rB   )rx   ry   c                ó~   — t          | j        j                             | j        ¬¦  «        t
          j        ¬¦  «        S )z<
        Implements 'cj', 'dj', 'j', ... Cursor up.
        rÞ   r©   )rE   r’   rW   r¸  rŒ   r9   r<   rá   s    rC   Ú_downzload_vi_bindings.<locals>._down   s=   € õ ØÔ Ô)×BÒBÈÌÐBÑSÔSÝÔ(ð
ñ 
ô 
ð 	
rB   c                ó~   — t          | j        j                             | j        ¬¦  «        t
          j        ¬¦  «        S )z<
        Implements 'ck', 'dk', 'k', ... Cursor up.
        rÞ   r©   )rE   r’   rW   r¼  rŒ   r9   r<   rá   s    rC   Ú_upzload_vi_bindings.<locals>._up  s=   € õ
 ØÔ Ô)×@Ò@ÀuÄyÐ@ÑQÔQÝÔ(ð
ñ 
ô 
ð 	
rB   Úlr6  Úrightc                óf   — t          | j        j                             | j        ¬¦  «        ¦  «        S )zL
        Implements 'cl', 'dl', 'l', 'c ', 'd ', ' '. Cursor right.
        rÞ   )rE   r’   rW   r  rŒ   rá   s    rC   Ú_rightz load_vi_bindings.<locals>._right  s2   € õ ØÔ Ô)×CÒCÈ%Ì)ÐCÑTÔTñ
ô 
ð 	
rB   ÚHc                ó(  — | j         j        j        }| j        }|rD|j        r=|j                             |j                             d¬¦  «        d¦  «        |j        z
  }nt          |j        j
        ¦  «         }t          |t          j        ¬¦  «        S )zz
        Moves to the start of the visible region. (Below the scroll offset.)
        Implements 'cH', 'dH', 'H'.
        T)Úafter_scroll_offsetr   r©   )rˆ   ÚlayoutÚcurrent_windowr’   Úrender_inforW   r[   Úfirst_visible_linerZ   r\   Útext_before_cursorrE   r9   r<   ©rƒ   r¢  r   r…  s       rC   Ú_top_of_screenz(load_vi_bindings.<locals>._top_of_screen"  s›   € ð ŒIÔÔ+ˆØÔ ˆàð 	6�”ð 	6ð ”
×5Ò5Ø”M×4Ò4ÈÐ4ÑNÔNÐPQñô ð Ô#ñ$ð ˆCõ �q”zÔ4Ñ5Ô5Ð5ˆCÝ˜#¥NÔ$;Ð<Ñ<Ô<Ð<rB   ÚMc                ó$  — | j         j        j        }| j        }|rB|j        r;|j                             |j                             ¦   «         d¦  «        |j        z
  }nt          |j        j
        ¦  «         }t          |t          j        ¬¦  «        S )zp
        Moves cursor to the vertical center of the visible region.
        Implements 'cM', 'dM', 'M'.
        r   r©   )rˆ   r—  r˜  r’   r™  rW   r[   Úcenter_visible_linerZ   r\   r›  rE   r9   r<   rœ  s       rC   Ú_middle_of_screenz+load_vi_bindings.<locals>._middle_of_screen:  s•   € ð ŒIÔÔ+ˆØÔ ˆàð 	6�”ð 	6ð ”
×5Ò5Ø”M×5Ò5Ñ7Ô7¸ñô ð Ô#ñ$ð ˆCõ �q”zÔ4Ñ5Ô5Ð5ˆCÝ˜#¥NÔ$;Ð<Ñ<Ô<Ð<rB   ÚLc                ó&  — | j         j        j        }| j        }|rD|j        r=|j                             |j                             d¬¦  «        d¦  «        |j        z
  }nt          |j        j
        ¦  «        }t          |t          j        ¬¦  «        S )zT
        Moves to the end of the visible region. (Above the scroll offset.)
        T)Úbefore_scroll_offsetr   r©   )rˆ   r—  r˜  r’   r™  rW   r[   Úlast_visible_linerZ   r\   Útext_after_cursorrE   r9   r<   rœ  s       rC   Ú_end_of_screenz(load_vi_bindings.<locals>._end_of_screenR  s˜   € ð
 ŒIÔÔ+ˆØÔ ˆàð 	4�”ð 	4ð ”
×5Ò5Ø”M×3Ò3ÈÐ3ÑNÔNÐPQñô ð Ô#ñ$ð ˆCõ �a”jÔ2Ñ3Ô3ˆCÝ˜#¥NÔ$;Ð<Ñ<Ô<Ð<rB   Únc                ó�   — | j         }| j        j        }|                     |d| j        ¬¦  «        }t          ||j        z
  ¦  «        S )z
        Search next.
        F©rè  rß   ©r’   rˆ   ré  Úget_search_positionrŒ   rE   rZ   ©rƒ   r—   rï  rZ   s       rC   Ú_search_nextz&load_vi_bindings.<locals>._search_nexti  sQ   € ð
 Ô#ˆØ”yÔ5ˆà×2Ò2Ø°5ÀÄ	ð 3ñ 
ô 
ˆõ ˜/¨DÔ,@Ñ@ÑAÔAÐArB   c                ób   — | j         j        }| j                             |d| j        ¬¦  «         dS )zR
        Search next in navigation mode. (This goes through the history.)
        Frª  N©rˆ   ré  r’   rí  rŒ   ©rƒ   rï  s     rC   Ú_search_next2z'load_vi_bindings.<locals>._search_next2v  sA   € ð
 ”yÔ5ˆàÔ×)Ò)Ø°5ÀÄ	ð 	*ñ 	
ô 	
ð 	
ð 	
ð 	
rB   ÚNc                ó’   — | j         }| j        j        }|                     | d| j        ¬¦  «        }t          ||j        z
  ¦  «        S )z"
        Search previous.
        Frª  r«  r­  s       rC   Ú_search_previousz*load_vi_bindings.<locals>._search_previous�  sS   € ð
 Ô#ˆØ”yÔ5ˆà×2Ò2ØˆM°EÀÄð 3ñ 
ô 
ˆõ ˜/¨DÔ,@Ñ@ÑAÔAÐArB   c                ód   — | j         j        }| j                             | d| j        ¬¦  «         dS )zV
        Search previous in navigation mode. (This goes through the history.)
        Frª  Nr°  r±  s     rC   Ú_search_previous2z+load_vi_bindings.<locals>._search_previous2Ž  sC   € ð
 ”yÔ5ˆàÔ×)Ò)ØˆM°EÀÄð 	*ñ 	
ô 	
ð 	
ð 	
ð 	
rB   Úzc                óT   — | j         }|j        j        | j        j        j        _        dS )zd
        Scrolls the window to makes the current line the first line in the visible region.
        N)r’   rW   r8  rˆ   r—  r˜  Úvertical_scrollrÿ   s     rC   Ú_scroll_topz%load_vi_bindings.<locals>._scroll_top™  s'   € ð Ô ˆØ:;¼*Ô:XˆŒ	ÔÔ'Ô7Ð7Ð7rB   c                ó2   — d| j         j        j        _        dS )zc
        Scrolls the window to makes the current line the last line in the visible region.
        r   N)rˆ   r—  r˜  rº  rá   s    rC   Ú_scroll_bottomz(load_vi_bindings.<locals>._scroll_bottom£  s   € ð ;<ˆŒ	ÔÔ'Ô7Ð7Ð7rB   c                ó*  — | j         j        j        }| j        }|rv|j        rq|j        }|j        dz  }t          d|j        j        dz
  ¦  «        }d}|dk    r0| 	                    |¦  «        }||z   |k     r||z  }|dz  }nn|dk    °0||_
        dS dS dS )z9
        Center Window vertically around cursor.
        r/   r   r3   N)rˆ   r—  r˜  r’   r™  Úwindow_heightÚmaxrW   r8  Úget_height_for_linerº  )rƒ   r¢  r   ÚinfoÚscroll_heightr±  ÚheightÚline_heights           rC   Ú_scroll_centerz(load_vi_bindings.<locals>._scroll_center®  sÑ   € ð
 ŒIÔÔ+ˆØÔ ˆàð 	"�”ð 	"Ø”=ˆDð !Ô.°!Ñ3ˆMå�A�q”zÔ5¸Ñ9Ñ:Ô:ˆAØˆFØ�a’%�%Ø"×6Ò6°qÑ9Ô9�à˜KÑ'¨-Ò7Ð7Ø˜kÑ)�FØ˜‘F�A�Aàð �a’%�%ð !"ˆAÔÐÐð%	"ð 	"ð 	"ð 	"rB   ú%c                óÀ  — | j         }| j        rŒd| j        cxk     rdk    rkn nh|j                             t          | j        |j        j        z  dz
  dz  ¦  «        d¦  «        }t          ||j        j        z
  t          j
        ¬¦  «        S t          d¦  «        S |j                             ¦   «         }|rt          |t          j        ¬¦  «        S t          d¦  «        S )z›
        Implements 'c%', 'd%', '%, 'y%' (Move to corresponding bracket.)
        If an 'arg' has been given, go this this % position in the file.
        r   éd   r3   r©   )r’   r�   rŒ   rW   r[   rG   Ú
line_countrE   rZ   r9   r<   Úfind_matching_bracket_positionr;   )rƒ   rb   Úabsolute_indexrs  s       rC   Ú_goto_corresponding_bracketz5load_vi_bindings.<locals>._goto_corresponding_bracketÊ  sï   € ð Ô%ˆàŒ:ð 	%ð �5”9Ð#Ð#Ò#Ð# Ò#Ð#Ð#Ð#Ð#Ø!'¤×!KÒ!KÝ˜œ V¤_Ô%?Ñ?À!ÑCÀsÑJÑKÔKÈQñ"ô "�õ "Ø" V¤_Ô%DÑDÝ'Ô0ðñ ô ð õ
 " !‘}”}Ð$ð ”O×BÒBÑDÔDˆEØð %Ý! %­nÔ.FÐGÑGÔGÐGå! !‘}”}Ð$rB   ú|c                ój   — t          | j        j                             | j        dz
  ¦  «        ¦  «        S )z�
        Move to the n-th column (you may specify the argument n by typing it on
        number keys, for example, 20|).
        r3   )rE   r’   rW   Úget_column_cursor_positionrŒ   rá   s    rC   Ú
_to_columnz$load_vi_bindings.<locals>._to_columnè  s4   € õ ØÔ Ô)×DÒDÀUÄYÐQRÁ]ÑSÔSñ
ô 
ð 	
rB   c                ó   — | j         j        }| j        r?t          |                     | j        dz
  d¦  «        |j        z
  t          j        ¬¦  «        S t          | 	                    ¦   «         t          j        ¬¦  «        S )z_
        Go to the start of the very first line.
        Implements 'gg', 'cgg', 'ygg'
        r3   r   r©   )
r’   rW   r�   rE   r[   rŒ   rZ   r9   r<   Úget_start_of_document_position)rƒ   r3  s     rC   Ú_goto_first_linez*load_vi_bindings.<locals>._goto_first_lineò  s„   € ð Ô Ô)ˆàŒ:ð 
	åØ×,Ò,¨U¬Y¸©]¸AÑ>Ô>ÀÔARÑRÝ#Ô,ðñ ô ð õ Ø×0Ò0Ñ2Ô2½Ô9Pðñ ô ð rB   rf   c                óp   — t          | j        j                             ¦   «         t          j        ¬¦  «        S )zQ
        Go to last non-blank of line.
        'g_', 'cg_', 'yg_', etc..
        r©   )rE   r’   rW   Ú'last_non_blank_of_current_line_positionr9   r;   rá   s    rC   Ú_goto_last_linez)load_vi_bindings.<locals>._goto_last_line  s6   € õ ØÔ Ô)×QÒQÑSÔSÝÔ)ð
ñ 
ô 
ð 	
rB   c                ó�   — | j         j                             | j        ¬¦  «        }t	          |�|dz
  ndt
          j        ¬¦  «        S )zZ
        Go to last character of previous word.
        'ge', 'cge', 'yge', etc..
        rÞ   Nr3   r   r©   ©r’   rW   Úfind_previous_word_endingrŒ   rE   r9   r;   ©rƒ   Úprev_ends     rC   Ú_gezload_vi_bindings.<locals>._ge  sX   € ð Ô'Ô0×JÒJØ”)ð Kñ 
ô 
ˆõ Ø$Ð0ˆH�q‰LˆL°a½nÔ>Vð
ñ 
ô 
ð 	
rB   c                ó’   — | j         j                             | j        d¬¦  «        }t	          |�|dz
  ndt
          j        ¬¦  «        S )zZ
        Go to last character of previous WORD.
        'gE', 'cgE', 'ygE', etc..
        Tr$  Nr3   r   r©   rÙ  rÛ  s     rC   Ú_gEzload_vi_bindings.<locals>._gE  sZ   € ð Ô'Ô0×JÒJØ”) $ð Kñ 
ô 
ˆõ Ø$Ð0ˆH�q‰LˆL°a½nÔ>Vð
ñ 
ô 
ð 	
rB   Úmc           	     óZ  — | j         j        j        }| j        }|rƒ|j        r||j        j        }|j                             d¬¦  «        }|t          t          |dz  t          |j        j        ¦  «        ¦  «        ¦  «        z  }t          |t          j        ¬¦  «        S t          d¦  «        S )zY
        Like g0, but half a screenwidth to the right. (Or as much as possible.)
        Fr  r/   r©   r   )rˆ   r—  r˜  r’   r™  Úwindow_widthrW   r  rG   r¨  r\   r,  rE   r9   r;   )rƒ   r¢  r—   ÚwidthrF   s        rC   Ú_gmzload_vi_bindings.<locals>._gm+  s�   € ð
 ŒIÔÔ+ˆØÔ#ˆàð 	D�”ð 	DØ”MÔ.ˆEØ”M×<Ò<ÈeÐ<ÑTÔTˆEØ•S�˜U Q™Y­¨D¬MÔ,FÑ(GÔ(GÑHÔHÑIÔIÑIˆEå˜e­.Ô*BÐCÑCÔCÐCÝ˜!‰}Œ}ÐrB   ÚGc                ó¢   — | j         }t          |j                             |j        j        dz
  d¦  «        |j        z
  t          j        ¬¦  «        S )zL
        Go to the end of the document. (If no arg has been given.)
        r3   r   r©   )r’   rE   rW   r[   rÊ  rZ   r9   r<   )rƒ   Úbufs     rC   Ú
_last_linez$load_vi_bindings.<locals>._last_line;  sT   € ð
 Ô"ˆÝØŒL×3Ò3°C´LÔ4KÈaÑ4OÐQRÑSÔSØÔ!ñ"åÔ(ð
ñ 
ô 
ð 	
rB   c                óJ   — | j                              | j        dz
  ¦  «         dS )zh
        If an argument is given, move to this line in the  history. (for
        example, 15G)
        r3   N)r’   Úgo_to_historyrŒ   rá   s    rC   Ú_to_nth_history_linez.load_vi_bindings.<locals>._to_nth_history_lineK  s'   € ð 	Ô×*Ò*¨5¬9°q©=Ñ9Ô9Ð9Ð9Ð9rB   Ú	123456789c                ó:   — |                       | j        ¦  «         dS )zK
            Always handle numerics in navigation mode as arg.
            N©Úappend_to_arg_countr.  rá   s    rC   r�   zload_vi_bindings.<locals>._argU  s    € ð ×%Ò% e¤jÑ1Ô1Ð1Ð1Ð1rB   c                ó:   — |                       | j        ¦  «         dS )z9
        Zero when an argument was already give.
        Nrî  rá   s    rC   Ú_0_argz load_vi_bindings.<locals>._0_arga  s    € ð 	×!Ò! %¤*Ñ-Ô-Ð-Ð-Ð-rB   c                óH   — | j                              | j        d¬¦  «         dS )z1
        Insert data at cursor position.
        TrÑ  N)r’   rÔ  r.  rá   s    rC   Ú_insert_textz&load_vi_bindings.<locals>._insert_textn  s(   € ð
 	Ô×(Ò(¨¬¸tÐ(ÑDÔDÐDÐDÐDrB   c                ó¨   — | j                              | j        d¬¦  «         | j         xj        dz  c_        t          j        | j        j        _        dS )z>
        Replace single character at cursor position.
        TrÑ  r3   N)	r’   rÔ  r.  rZ   r)   rÙ   rˆ   r‰   rÕ   rá   s    rC   Ú_replace_singlez)load_vi_bindings.<locals>._replace_singleu  sO   € ð
 	Ô×(Ò(¨¬¸tÐ(ÑDÔDÐDØÔÐ,Ô,°Ñ1Ð,Ô,Ý(1Ô(<ˆŒ	ÔÔ%Ð%Ð%rB   c                ó   — | j          S rK   )Ú	is_repeatr‰  s    rC   rÃ   z"load_vi_bindings.<locals>.<lambda>�  s
   €  1¤;˜€ rB   c                óˆ  — | j         }|j        }g }d}|j        D ];}|                     |||…         ¦  «         |                     | j        ¦  «         |}Œ<|                     ||d…         ¦  «         d„ t          |j        ¦  «        D ¦   «         }d                     |¦  «        |_        ||_        |xj        dz  c_        dS )zŽ
        Insert data at multiple cursor positions at once.
        (Usually a result of pressing 'I' or 'A' in block-selection mode.)
        r   Nc                ó$   — g | ]\  }}||z   d z   ‘ŒS )r3   rA   )Ú.0r@  r…  s      rC   ú
<listcomp>zKload_vi_bindings.<locals>._insert_text_multiple_cursors.<locals>.<listcomp>—  s1   € ð  
ð  
ð  
Ù"˜A˜sˆC�!‰G�a‰Kð 
ð  
ð  
rB   r¶   r3   )r’   rk   rP  rO  r.  rM  r7  rZ   )rƒ   r—   Úoriginal_textrk   rg  Úp2Únew_cursor_positionss          rC   Ú_insert_text_multiple_cursorsz7load_vi_bindings.<locals>._insert_text_multiple_cursors~  sá   € ð Ô#ˆØœ	ˆð ˆØˆàÔ0ð 	ð 	ˆBØ�KŠK˜ a¨ dÔ+Ñ,Ô,Ð,Ø�KŠK˜œ
Ñ#Ô#Ð#ØˆAˆAà�Š�M ! " "Ô%Ñ&Ô&Ð&ð 
ð  
Ý&/°Ô0NÑ&OÔ&Oð 
ñ  
ô  
Ðð
 —G’G˜D‘M”MˆŒ	Ø)=ˆÔ&ØÐÔ Ñ!ÐÔÐÐrB   c                ó0  — | j         }|j        }d}g }d}|j        D ]Y}|dk    r2||dz
           dk    r#|                     |||dz
  …         ¦  «         d}n|                     |||…         ¦  «         |}ŒZ|                     ||d…         ¦  «         |rcd„ |dd…         D ¦   «         }t	          t          |¦  «        ¦  «        }d	                     |¦  «        |_        ||_        |xj        dz  c_        dS | j        j	         
                    ¦   «          dS )
z4
        Backspace, using multiple cursors.
        Fr   r3   r5  TNc                ó,   — g | ]}t          |¦  «        ‘ŒS rA   ©r\   ©rú  Úparts     rC   rû  zMload_vi_bindings.<locals>._delete_before_multiple_cursors.<locals>.<listcomp>¹  ó   € Ð7Ð7Ð7 T•s˜4‘y”yÐ7Ð7Ð7rB   éÿÿÿÿr¶   )r’   rk   rP  rO  Úlistr   r7  rZ   rˆ   rý  rþ  )	rƒ   r—   rü  Údeleted_somethingrk   rg  rý  Úlengthsrþ  s	            rC   Ú_delete_before_multiple_cursorsz9load_vi_bindings.<locals>._delete_before_multiple_cursors   sC  € ð
 Ô#ˆØœ	ˆð "ÐØˆØˆàÔ0ð 	ð 	ˆBØ�AŠvˆv˜-¨¨Q©Ô/°4Ò7Ð7Ø—’˜M¨!¨b°1©f¨*Ô5Ñ6Ô6Ð6Ø$(Ð!Ð!à—’˜M¨!¨B¨$Ô/Ñ0Ô0Ð0ØˆAˆAà�Š�M ! " "Ô%Ñ&Ô&Ð&àð 
	$à7Ð7¨T°#°2°#¬YÐ7Ñ7Ô7ˆGÝ#'­
°7Ñ(;Ô(;Ñ#<Ô#<Ð ð Ÿš ™œˆDŒIØ-AˆDÔ*ØÐ Ô  AÑ%Ð Ô Ð Ð àŒIÔ×!Ò!Ñ#Ô#Ð#Ð#Ð#rB   r#  c                óò  — | j         }|j        }d}g }g }d}|j        D ]H}|                     |||…         ¦  «         |t	          |¦  «        k    s||         dk    r|}ŒA|dz   }d}ŒI|                     ||d…         ¦  «         |rSd„ |dd…         D ¦   «         }t          t          |¦  «        ¦  «        }d	                     |¦  «        |_        ||_        dS | j        j	         
                    ¦   «          dS )
z1
        Delete, using multiple cursors.
        Fr   r5  r3   TNc                ó,   — g | ]}t          |¦  «        ‘ŒS rA   r  r  s     rC   rû  zLload_vi_bindings.<locals>._delete_after_multiple_cursors.<locals>.<listcomp>Þ  r  rB   r  r¶   )r’   rk   rP  rO  r\   r  r   r7  rˆ   rý  rþ  )	rƒ   r—   rü  r  rk   rþ  rg  rý  r	  s	            rC   Ú_delete_after_multiple_cursorsz8load_vi_bindings.<locals>._delete_after_multiple_cursorsÃ  s%  € ð
 Ô#ˆØœ	ˆð "ÐØˆØ!ÐØˆàÔ0ð 	)ð 	)ˆBØ�KŠK˜ a¨ dÔ+Ñ,Ô,Ð,Ø•S˜Ñ'Ô'Ò'Ð'¨=¸Ô+<ÀÒ+DÐ+Dà��à˜‘F�Ø$(Ð!Ð!à�Š�M ! " "Ô%Ñ&Ô&Ð&àð 		$à7Ð7¨T°#°2°#¬YÐ7Ñ7Ô7ˆGÝ#'­
°7Ñ(;Ô(;Ñ#<Ô#<Ð ð Ÿš ™œˆDŒIØ-AˆDÔ*Ð*Ð*àŒIÔ×!Ò!Ñ#Ô#Ð#Ð#Ð#rB   c                óú   — | j         }g }|j        D ]@}|j                             |¦  «        d         dk    r|dz  }|                     |¦  «         ŒA||_        |j        j        dk    r|xj        dz  c_        dS dS )z`
        Move all cursors to the left.
        (But keep all cursors on the same line.)
        r3   r   N)r’   rP  rW   rY   rO  Úcursor_position_colrZ   )rƒ   r—   Únew_positionsrg  s       rC   Ú_left_multiplez(load_vi_bindings.<locals>._left_multipleç  s�   € ð Ô#ˆØˆàÔ/ð 	$ð 	$ˆAØŒ}×8Ò8¸Ñ;Ô;¸AÔ>ÀÒBÐBØ�Q‘�Ø× Ò  Ñ#Ô#Ð#Ð#à)6ˆÔ&àŒ=Ô,¨qÒ0Ð0ØÐ Ô  AÑ%Ð Ô Ð Ð ð 1Ð0rB   c                ó*  — | j         }g }|j        D ]\}|j                             |¦  «        \  }}|t	          |j        j        |         ¦  «        k     r|dz  }|                     |¦  «         Œ]||_        |j        j        s|xj        dz  c_        dS dS )za
        Move all cursors to the right.
        (But keep all cursors on the same line.)
        r3   N)	r’   rP  rW   rY   r\   r]   rO  Úis_cursor_at_the_end_of_linerZ   )rƒ   r—   r  rg  r_   Úcolumns         rC   Ú_right_multiplez)load_vi_bindings.<locals>._right_multipleú  s²   € ð Ô#ˆØˆàÔ/ð 	$ð 	$ˆAØœ-×CÒCÀAÑFÔF‰KˆC�Ø�˜DœMÔ/°Ô4Ñ5Ô5Ò5Ð5Ø�Q‘�Ø× Ò  Ñ#Ô#Ð#Ð#à)6ˆÔ&àŒ}Ô9ð 	&ØÐ Ô  AÑ%Ð Ô Ð Ð ð	&ð 	&rB   c                ó   — dS )zN
        Ignore all up/down key presses when in multiple cursor mode.
        NrA   rá   s    rC   Ú_updown_multiplez*load_vi_bindings.<locals>._updown_multiple  s   € € € rB   zc-xzc-lc                ó8   — | j                              ¦   «          dS )z�
        Pressing the ControlX - ControlL sequence in Vi mode does line
        completion based on the other lines in the document and the history.
        N)r’   Ústart_history_lines_completionrá   s    rC   Ú_complete_linez(load_vi_bindings.<locals>._complete_line  s   € ð 	Ô×;Ò;Ñ=Ô=Ð=Ð=Ð=rB   zc-fc                ó   — dS )z&
        Complete file names.
        NrA   rá   s    rC   Ú_complete_filenamez,load_vi_bindings.<locals>._complete_filename  s	   € ð 	ˆrB   zc-kc                ó(   — d| j         j        _        dS )z'
        Go into digraph mode.
        TN)rˆ   r‰   Úwaiting_for_digraphrá   s    rC   Ú_digraphz"load_vi_bindings.<locals>._digraph%  s   € ð
 26ˆŒ	ÔÔ.Ð.Ð.rB   c                ó2   — | j         | j        j        _        dS )z'
        First digraph symbol.
        N)r.  rˆ   r‰   r³   rá   s    rC   Ú	_digraph1z#load_vi_bindings.<locals>._digraph1,  s   € ð
 .3¬ZˆŒ	ÔÔ*Ð*Ð*rB   c                ó   — 	 | j         j        j        pd| j        f}|t          vr|ddd…         }t          |         }| j         j        j        t          j        k    }| j         	                    t          |¦  «        |¬¦  «         d| j         j        _        n.# t          $ r! | j         j                             ¦   «          Y nw xY wd| j         j        _        d| j         j        _        dS # d| j         j        _        d| j         j        _        w xY w)z!
        Insert digraph.
        r¶   Nr  rÑ  F)rˆ   r‰   r³   r.  r%   rÕ   r)   r×   r’   rÔ  Úchrr  ÚKeyErrorrý  rþ  )rƒ   ÚcodeÚsymbolrÒ  s       rC   Ú_create_digraphz)load_vi_bindings.<locals>._create_digraph3  s  € ð
	6ð ”	Ô"Ô2Ð8°bØ”
ð%ˆDð �8Ð#Ð#Ø˜D˜D˜b˜D”z�Ý˜d”^ˆFð œ	Ô*Ô5½Ô9JÒJˆIØÔ ×,Ò,­S°©[¬[ÀIÐ,ÑNÔNÐNØ5:ˆEŒIÔÔ2Ð2øõ ð 	$ð 	$ð 	$àŒIÔ×!Ò!Ñ#Ô#Ð#Ð#Ð#ð	$øøøð 6;ˆEŒIÔÔ2Ø15ˆEŒIÔÔ.Ð.Ð.øð 6;ˆEŒIÔÔ2Ø15ˆEŒIÔÔ.Ð5Ð5Ð5Ð5s)   ‚;B ½AC) Â(CÂ?C) ÃCÃC) Ã)$Dzc-oc                ó(   — d| j         j        _        dS )z<
        Go into normal mode for one single action.
        TN)rˆ   r‰   Útemporary_navigation_moderá   s    rC   Ú_quick_normal_modez,load_vi_bindings.<locals>._quick_normal_modeM  s   € ð
 8<ˆŒ	ÔÔ4Ð4Ð4rB   c                ót   — | j         d         j        }|t          v r| j        j        }||_        d|_        dS dS )z(
        Start recording macro.
        r3   r¶   N)ru  r.  rv  rˆ   r‰   Úrecording_registerÚcurrent_recording)rƒ   r)  r‰   s      rC   Ú_start_macroz&load_vi_bindings.<locals>._start_macroT  sH   € ð
 Ô˜qÔ!Ô&ˆØÕ!Ð!Ð!Ø”yÔ)ˆHà*+ˆHÔ'Ø)+ˆHÔ&Ð&Ð&ð	 "Ð!rB   c                óŽ   — | j         j        }|j        r1t          |j        ¦  «        |j        |j        <   d|_        d|_        dS dS )z'
        Stop recording macro.
        Nr¶   )rˆ   r‰   r,  r   r-  rw  )rƒ   r‰   s     rC   Ú_stop_macroz%load_vi_bindings.<locals>._stop_macro`  s_   € ð
 ”9Ô%ˆð Ô&ð 	,ÝDQØÔ*ñEô EˆHÔ$ XÔ%@ÑAð +/ˆHÔ'Ø)+ˆHÔ&Ð&Ð&ð	,ð 	,rB   ú@)rw   Úrecord_in_macroc                óv  — | j         d         j        }	 | j        j        j        |         }n# t
          $ r Y dS w xY wg }t          |j        ¦  «        }|                     |j	        ¦  «         | 
                    ¦   «          t          | j        ¦  «        D ]#}| j        j                             |d¬¦  «         Œ$dS )al  
        Execute macro.

        Notice that we pass `record_in_macro=False`. This ensures that the `@x`
        keys don't appear in the recording itself. This function inserts the
        body of the called macro back into the KeyProcessor, so these keys will
        be added later on to the macro of their handlers have
        `record_in_macro=True`.
        r3   NT)Úfirst)ru  r.  rˆ   r‰   rw  r$  r$   rO  Úfeedrk   ÚflushrY  rŒ   Úkey_processorÚfeed_multiple)rƒ   r)  Úmacror{   Úparserrf   s         rC   Ú_execute_macroz(load_vi_bindings.<locals>._execute_macroo  sÐ   € ð Ô˜qÔ!Ô&ˆð	Ø”IÔ&Ô6°qÔ9ˆEˆEøÝð 	ð 	ð 	ØˆFˆFð	øøøð
  "ˆå˜Tœ[Ñ)Ô)ˆØ�Š�E”JÑÔÐØ�Š‰Œˆõ �u”yÑ!Ô!ð 	Dð 	DˆAØŒIÔ#×1Ò1°$¸dÐ1ÑCÔCÐCÐCð	Dð 	Ds   ”, ¬
:¹:r™   )F)rƒ   r„   r;  r}   rN   r…   )r   r}   r  r}   rN   r…   )rw   r   r  r  r  rŠ   rN   r…   r  r_  rK   )
rP  rŠ   rQ  rŠ   rR  r}   rS  rT  rN   r…   )r~  r}   rN   r…   )r1   r›   r   rŠ   r   r   r   r¹   r   r4   r"   r   r¯   r   r   r±   r*   r  r­   rŸ   r#   r   r   r    r   r   r´   r   r0   r   )“rt   ÚhandleÚTransformFunctionÚvi_transform_functionsrÛ   râ   ræ   rë   rï   rô   rö   rù   r  r  r  r  r  r  r  r  r   r(  r/  r2  r<  r?  rB  rE  rU  r\  r`  rd  rf  rn  rr  rz  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Ü   rm  Úfuncr  r  r  r  r  r!  r&  r)  r.  r0  r5  r7  r=  r@  rB  rD  rH  rL  rO  r`  rR  rP  rQ  rj  rl  rt  rw  rz  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.  r0  r;  rS  r
  r“   s“                                                                                                                                                   @@@rC   r5   r5   “  s­  øøø€ õ  ‘=”=€LØÔ€Fõ
 �e¥C¨ Hœo­vµxÅÀÅsÀ
Ô7KÐKÔLÐð
 Ý‰HŒHØ:Ð:ð	
ð 
•V‘X”XÐ<Ð<Ð=à	•V‘X”XÐ<Ð<Ð=à	•V‘X”XÐ?Ð?Ð@àÝØ,Ð,ð	
ð7Ðð* )€F€Fˆ5�Ð(Ñ(Ô(­°_Ñ)EÔ)EÑFÔFÐFà€VˆHÑÔñ$ð $ð $ñ Ôð$ð €VˆCÕ)Ð*Ñ*Ô*ñ8ð 8ð 8ñ +Ô*ð8ð €VˆCÕ)Ð*Ñ*Ô*ñ:ð :ð :ñ +Ô*ð:ð €VˆDÕ+Ð,Ñ,Ô,Ø€VˆEÕ,Ð-Ñ-Ô-ñ6ð 6ð 6ñ .Ô-ñ -Ô,ð6ð €VˆCÕ*Ð+Ñ+Ô+ñ
ð 
ð 
ñ ,Ô+ð
ð €VˆFÕ-Ð.Ñ.Ô.Ø€VˆEÕ,Ð-Ñ-Ô-ñ8ð 8ð 8ñ .Ô-ñ /Ô.ð8ð €VˆCÕ*Ð+Ñ+Ô+ñ
ð 
ð 
ñ ,Ô+ð
ð €VˆKÕ 2Ð3Ñ3Ô3ñ
ð 
ð 
ñ 4Ô3ð
ð €VˆE�.Ð)Ñ)Ô)ñ2ð 2ð 2ñ *Ô)ð2ð €VˆE�.Ð)Ñ)Ô)ñ	1ð 	1ð 	1ñ *Ô)ð	1ð €VˆE�.Ð)Ñ)Ô)Ø€VˆE�.Ð)Ñ)Ô)ñ3ð 3ð 3ñ *Ô)ñ *Ô)ð3ð €VˆE�.Ð)Ñ)Ô)ñ1ð 1ð 1ñ *Ô)ð1ð ?€F€Fˆ7Õ-µÑ=Ð>Ñ>Ô>Ý�MÑ"Ô"ñô ð ð :€F€Fˆ7�=­L¨=Ñ8Ð9Ñ9Ô9½+ÀmÑ:TÔ:TÑUÔUÐUà€VˆG�]˜NÕ-?Ñ?Ð@Ñ@Ô@ñ
ð 
ð 
ñ AÔ@ð
ð €VˆHÕ/Ð0Ñ0Ô0ñ9ð 9ð 9ñ 1Ô0ð9ð €VˆH�^Ð,Ñ,Ô,ñ=ð =ð =ñ -Ô,ð=ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ9ð 9ð 9ñ <Ô;ð9ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ9ð 9ð 9ñ <Ô;ð9ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ	9ð 	9ð 	9ñ <Ô;ð	9ð €VˆC�Õ/µ<°-Ñ?Ð@Ñ@Ô@Ø€VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ9ð 9ð 9ñ <Ô;ñ AÔ@ð9ð" €VˆCÕ*Ð+Ñ+Ô+ñ.ð .ð .ñ ,Ô+ð.ð €VˆC�Õ/Ð0Ñ0Ô0ñRð Rð Rñ 1Ô0ðRð@ €VˆCÕ)Ð*Ñ*Ô*ñ5ð 5ð 5ñ +Ô*ð5ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ9ð 9ð 9ñ <Ô;ð9ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ
ð 
ð 
ñ <Ô;ð
ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ññ ð ð ñ <Ô;ðð< €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ5ð 5ð 5ð 5ð 5ñ <Ô;ð5ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ2ð 2ð 2ñ <Ô;ð2ð €VˆC�Õ/µ<°-Ñ?Ð@Ñ@Ô@ñ>ð >ð >ñ AÔ@ð>ð €VˆCÕ)­\¨MÑ9Ð:Ñ:Ô:ñ3ð 3ð 3ñ ;Ô:ð3ð €VˆC�Õ.µ,°Ñ>Ð?Ñ?Ô?ñ?ð ?ð ?ñ @Ô?ð?ð €VˆCÕ*Ð+Ñ+Ô+ñ
ð 
ð 
ñ ,Ô+ð
ð €VˆCÕ*Ð+Ñ+Ô+ñ
ð 
ð 
ñ ,Ô+ð
ð €VˆC•”˜3Õ'9Ð:Ñ:Ô:ñ
ð 
ð 
ñ ;Ô:ð
ð €VˆC•”˜3Õ'9Ð:Ñ:Ô:ñ
ð 
ð 
ñ ;Ô:ð
ð €VˆCÕ*Ð+Ñ+Ô+ñAð Að Añ ,Ô+ðAð €VˆCÕ*Ð+Ñ+Ô+ñ:ð :ð :ñ ,Ô+ð:ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ9ð 9ð 9ñ <Ô;ð9ð €VˆCÕ*¸¸ÐJÑJÔJñ(ð (ð (ñ KÔJð(ð €VˆCÕ*Ð+Ñ+Ô+ñQð Qð Qñ ,Ô+ðQð €VˆEÕ,Ð-Ñ-Ô-ñQð Qð Qñ .Ô-ðQð €VˆCÕ)Ð*Ñ*Ô*ñ6ð 6ð 6ñ +Ô*ð6ð €VˆCÕ*Ð+Ñ+Ô+ñVð Vð Vñ ,Ô+ðVð €VˆCÕ)Ð*Ñ*Ô*ñ6ð 6ð 6ñ +Ô*ð6ð €VˆEÕ+Ð,Ñ,Ô,ñ6ð 6ð 6ñ -Ô,ð6ð €VˆC�Õ.Ð/Ñ/Ô/Ø€VˆC�Õ.Ð/Ñ/Ô/ñ
Cð 
Cð 
Cñ 0Ô/ñ 0Ô/ð
Cð €VˆCÕ*Ð+Ñ+Ô+ñ/ð /ð /ñ ,Ô+ð/ð €VˆCÕ*Ð+Ñ+Ô+ñ/ð /ð /ñ ,Ô+ð/ð €VˆC�Õ/Ð0Ñ0Ô0Ø€VˆCÕ*Ð+Ñ+Ô+ñOð Oð Oñ ,Ô+ñ 1Ô0ðOð €VˆCÕ*Ð+Ñ+Ô+ñ

ð 

ð 

ñ ,Ô+ð

ð €VˆCÕ*Ð+Ñ+Ô+ñ

ð 

ð 

ñ ,Ô+ð

ð €VˆC�Õ/Ð0Ñ0Ô0Ø€VˆE�.Ð)Ñ)Ô)ñ=ð =ð =ñ *Ô)ñ 1Ô0ð=ð €VˆC�Õ/Ð0Ñ0Ô0Ø€VˆE�.Ð)Ñ)Ô)ñMð Mð Mñ *Ô)ñ 1Ô0ðMð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ9ð 9ð 9ñ <Ô;ð9ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ9ð 9ð 9ñ <Ô;ð9ð €VˆCÕ*Ð+Ñ+Ô+ñ=ð =ð =ñ ,Ô+ð=ð €VˆC��cÕ"4½°}Ñ"DÐEÑEÔEñ9ð 9ð 9ñ FÔEð9ð €VˆC��cÕ"4½°}Ñ"DÐEÑEÔEñ9ð 9ð 9ñ FÔEð9ð €VˆC��cÕ"4½°}Ñ"DÐEÑEÔEñ<ð <ð <ñ FÔEð<ð €VˆCÕ*Ð+Ñ+Ô+ñ
Vð 
Vð 
Vñ ,Ô+ð
Vð €VˆCÕ*Ð+Ñ+Ô+ñ
Vð 
Vð 
Vñ ,Ô+ð
Vð €VˆCÕ*Ð+Ñ+Ô+ñð ð ñ ,Ô+ðð
 €VˆCÕ*Ð+Ñ+Ô+ñð ð ñ ,Ô+ðõ
 )¨Ñ6Ô6€HÝ.¨|Ñ<Ô<€Kà€V�DŒHÕ<Ð=Ñ=Ô=ñ ð  ð  ñ >Ô=ð ð 27ñ#Añ #Að #Að #Að #Að #Að #AðJ 'Ð& u¨eÑ4Ô4Ð4Ø&Ð& u¨dÑ3Ô3Ð3Ø&Ð& t¨UÑ3Ô3Ð3Ø&Ð& t¨TÑ2Ô2Ð2ñMð Mð Mð Mð Mð Mð, -ð .ð .‰
ˆˆ1ˆdØ Ð   DÐ-¨1Ð-Ð-Ð-Ð-Ð-à€Xˆc�]„]ñ9ð 9ð 9ñ „]ð9ð €Xˆc•4”8˜SÑ!Ô!ñCð Cð Cñ "Ô!ðCð €Xˆc�]„]ñ5ð 5ð 5ñ „]ð5ð €Xˆc�]„]ñ7ð 7ð 7ñ „]ð7ð €Xˆc�3ÑÔñ&ð &ð &ñ Ôð&ð €[�ÑÔñ
ð 
ð 
ñ Ôð
ð €[�ÑÔñ	
ð 	
ð 	
ñ Ôð	
ð €[�ÑÔñTð Tð Tñ ÔðTð €[�ÑÔñ
ð 
ð 
ñ Ôð
ð €[�ÑÔñ	
ð 	
ð 	
ñ Ôð	
ð €[�ÑÔñPð Pð Pñ ÔðPð €[�ÑÔñPð Pð Pñ ÔðPð €[��c¨4Ð0Ñ0Ô0ñ&ð &ð &ñ 1Ô0ð&ð €[��c¨4Ð0Ñ0Ô0ñ&ð &ð &ñ 1Ô0ð&ð €[��c¨4Ð0Ñ0Ô0ñ&ð &ð &ñ 1Ô0ð&ð €[��c¨4Ð0Ñ0Ô0ñ&ð &ð &ñ 1Ô0ð&ð €[��c¨4Ð0Ñ0Ô0ñ&ð &ð &ñ 1Ô0ð&ð €[�ÑÔñ
ð 
ð 
ñ Ôð
ð €[�ÑÔñ	
ð 	
ð 	
ñ Ôð	
ð DHñ$Iñ $Ið $Ið $Ið $Ið $Ið $IðL ð 3ð 3ˆð!
ð 		:ð 		:ÑˆH�fð !Ð  ¨6°5Ñ9Ô9Ð9Ð9àÐ˜S # u¨cÑ2Ô2Ð2ØÐ˜S # u¨cÑ2Ô2Ð2Ð2à€[�ÑÔñ!ð !ð !ñ Ôð!ð €[�ÑÔñ!ð !ð !ñ Ôð!ð €[�•d”hÑÔñ!ð !ð !ñ  Ôð!ð €[�•d”hÑÔñ
ð 
ð 
ñ  Ôð
ð €[�•d”hÑÔñ!ð !ð !ñ  Ôð!ð €[�•d”hÑÔñ5ð 5ð 5ñ  Ôð5ñ"%ð "%ð "%ð "%ð "%ð "%ðH €Fˆ4�L„L€LØ
€Fˆ5�M„M€Mà€[�ÑÔØ€[�ÑÔñ
ð 
ð 
ñ Ôñ Ôð
ð €[� dÀÐFÑFÔFñ
ð 
ð 
ñ	 GÔFð
ð €[� dÀÐFÑFÔFñ
ð 
ð 
ñ GÔFð
ð €[�ÑÔØ€[�ÑÔØ€[�ÑÔñ
ð 
ð 
ñ Ôñ Ôñ Ôð
ð €[�ÑÔñ=ð =ð =ñ Ôð=ð. €[�ÑÔñ=ð =ð =ñ Ôð=ð. €[�ÑÔñ=ð =ð =ñ Ôð=ð, €[� dÐ+Ñ+Ô+ñ
Bð 
Bð 
Bñ ,Ô+ð
Bð €VˆCÕ*Ð+Ñ+Ô+ñ
ð 
ð 
ñ ,Ô+ð
ð €[� dÐ+Ñ+Ô+ñ
Bð 
Bð 
Bñ ,Ô+ð
Bð €VˆCÕ*Ð+Ñ+Ô+ñ
ð 
ð 
ñ ,Ô+ð
ð €VˆC�Õ/Õ2CÑCÐDÑDÔDØ€VˆC�Õ/Õ2CÑCÐDÑDÔDØ€VˆC�Õ!3Õ6GÑ!GÐHÑHÔHñYð Yð Yñ IÔHñ EÔDñ EÔDðYð €VˆC�Õ/Õ2CÑCÐDÑDÔDØ€VˆC�Õ/Õ2CÑCÐDÑDÔDñ<ð <ð <ñ EÔDñ EÔDð<ð €VˆC�Õ/Õ2CÑCÐDÑDÔDñ"ð "ð "ñ EÔDð"ð6 €[�ÑÔñ%ð %ð %ñ Ôð%ð: €[�ÑÔñ
ð 
ð 
ñ Ôð
ð €[��cÑÔñð ð ñ Ôðð& €[��cÑÔñ
ð 
ð 
ñ Ôð
ð €[��cÑÔñ

ð 

ð 

ñ Ôð

ð €[��cÑÔñ

ð 

ð 

ñ Ôð

ð €[��cÑÔñð ð ñ Ôðð €[�ÑÔñ	
ð 	
ð 	
ñ Ôð	
ð €VˆC�Ð Ñ Ô ñ:ð :ð :ñ !Ô ð:ð ð 2ð 2ˆà	ˆØÝ%Ýñ å-ñ.ð

ñ 

ô 

ñ	2ð 	2ð 	2ñ

ô 

ð	2ð 	2ð €VØåÕ!2Ñ2Õ5TÑTå
ñðñ ô ñ.ð .ð .ñô ð.ð €V�DŒH�_Ð-Ñ-Ô-ñEð Eð Eñ .Ô-ðEð €V�DŒHÕ3Ð4Ñ4Ô4ñ=ð =ð =ñ 5Ô4ð=ð €VÝŒÝ&Ø.Ð.ðñ ô ñ
"ð "ð "ñô ð
"ð: €VˆKÕ 7Ð8Ñ8Ô8ñ $ð  $ð  $ñ 9Ô8ð $ðD €VˆHÕ4Ð5Ñ5Ô5ñ!$ð !$ð !$ñ 6Ô5ð!$ðF €VˆFÕ2Ð3Ñ3Ô3ñ&ð &ð &ñ 4Ô3ð&ð$ €VˆGÕ3Ð4Ñ4Ô4ñ&ð &ð &ñ 5Ô4ð&ð& €VˆDÕ0Ð1Ñ1Ô1Ø€VˆFÕ2Ð3Ñ3Ô3ñð ð ñ 4Ô3ñ 2Ô1ðð
 €V‰E‘5¥Ð0Ñ0Ô0ñ>ñ >ð >ñ 1Ô0ð>ð €V‰E‘5¥Ð0Ñ0Ô0ññ ð ñ 1Ô0ðð €V‰E�.­?Ñ:Ð;Ñ;Ô;ñ6ñ 6ð 6ñ <Ô;ð6ð €V�DŒH�_Õ0FÐ/FÑFÐGÑGÔGñ8ñ 8ð 8ñ HÔGð8ð €V�DŒH�_Õ/EÑEÐFÑFÔFñ6ñ 6ð 6ñ GÔFð6ð2 €V‰E�.­?Ñ:Ð;Ñ;Ô;ñ<ñ <ð <ñ <Ô;ð<ð €VˆC•”Õ"4Õ8JÐ7JÑ"JÐKÑKÔKñ	,ñ 	,ð 	,ñ LÔKð	,ð €VˆCÕ*Õ-?Ñ?Ð@Ñ@Ô@ñ,ñ ,ð ,ñ AÔ@ð,ð €V‰C•”Õ"4ÀeÑLÑLÔLñDñ Dð Dñ MÔLðDõ: " ,µÑ8Ô8Ð8rB   c                 óà  — t          ¦   «         } | j        }ddlm}   |dt          t
          z  t           z  ¬¦  «        |j        ¦  «           |dt          t
          z  t          z  ¬¦  «        |j        ¦  «           |d¦  «        |j        ¦  «           |dt          t
          z  t           z  ¬¦  «        |j        ¦  «           |dt          t
          z  t          z  ¬¦  «        |j        ¦  «           |d¦  «        |j        ¦  «           |dt          ¬¦  «        |j
        ¦  «           |dt          ¬¦  «        |j        ¦  «           |dt          ¬¦  «        |j        ¦  «           |d	¦  «        |j        ¦  «           |d
¦  «        |j        ¦  «           |dt          ¬¦  «        |j        ¦  «           |d¦  «        |j
        ¦  «         t          | t           ¦  «        S )Nr3   )Úsearchú/rÒ   r¼   zc-szc-rr  zc-cr  r÷   rÓ   )r1   r›   r¶   rA  r   r"   r!   Ú start_forward_incremental_searchÚ start_reverse_incremental_searchr   Úaccept_searchÚreverse_incremental_searchÚforward_incremental_searchÚabort_searchr·   r0   r   )rt   r<  rA  s      rC   r6   r6   �  sY  € Ý‘=”=€LØÔ€FØÐÐÐÐÐð€F€FØÝ"Õ%6Ñ6Õ;WÐ:WÑWðñ ô ð Ô-ñ/ô /ð /ð€F€FØÝ"Õ%6Ñ6Õ:VÑVðñ ô ð Ô-ñ/ô /ð /ð €F€Fˆ5�M„M�&Ô9Ñ:Ô:Ð:ð€F€FØÝ"Õ%6Ñ6Õ;WÐ:WÑWðñ ô ð Ô-ñ/ô /ð /ð€F€FØÝ"Õ%6Ñ6Õ:VÑVðñ ô ð Ô-ñ/ô /ð /ð €F€Fˆ5�M„M�&Ô9Ñ:Ô:Ð:ð )€F€Fˆ7�<Ð(Ñ(Ô(¨Ô)=Ñ>Ô>Ð>à&€F€Fˆ5�Ð&Ñ&Ô& vÔ'HÑIÔIÐIØ&€F€Fˆ5�Ð&Ñ&Ô& vÔ'HÑIÔIÐIà€F€Fˆ5�M„M�&Ô%Ñ&Ô&Ð&Ø€F€Fˆ5�M„M�&Ô%Ñ&Ô&Ð&Ø6€F€Fˆ;Õ5Ð6Ñ6Ô6°vÔ7JÑKÔKÐKð €F€Fˆ8ÑÔ�VÔ)Ñ*Ô*Ð*å! ,µÑ8Ô8Ð8rB   )rt   r1   rN   ru   )rt   r1   rN   r¡   )rN   r}   )rN   r2   )XÚ
__future__r   r¿   rÂ   Úenumr   Ú	itertoolsr   Útypingr   r   r   r	   Ú"prompt_toolkit.application.currentr
   Úprompt_toolkit.bufferr   r   r   r   Úprompt_toolkit.clipboardr   Úprompt_toolkit.documentr   Úprompt_toolkit.filtersr   r   r   r   r   r   Úprompt_toolkit.filters.appr   r   r   r   r   r   r   r   r   r    r!   r"   r#   Ú!prompt_toolkit.input.vt100_parserr$   Ú#prompt_toolkit.key_binding.digraphsr%   Ú(prompt_toolkit.key_binding.key_processorr&   r'   Ú#prompt_toolkit.key_binding.vi_stater(   r)   Úprompt_toolkit.keysr*   Úprompt_toolkit.searchr+   Úprompt_toolkit.selectionr,   r-   r.   rt   r0   r1   r2   Únamed_commandsr4   Ú__all__r„   Úascii_lowercaserv  r9   rE   ÚTextObjectFunctionrr   rŸ   ÚOperatorFunctionr    r­   r¯   r±   r´   r·   r¹   r5   r6   rA   rB   rC   ú<module>r_     sY  ðà "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð :Ð 9Ð 9Ð 9Ð 9Ð 9Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ $Ð $Ð $Ð $Ð $Ð $Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ Mà OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ 'Ð 'Ð 'Ð 'Ð 'Ð 'ð Øð€ð
 €àÔ(€à# lÑ2Ð ðð ð ð ð �Tñ ô ð ðe,ð e,ð e,ð e,ð e,ñ e,ô e,ð e,ðR ˜q˜c :˜oÔ.Ð Ø€wˆvÐ/Ð0Ñ0Ô0€ðs!ð s!ð s!ð s!ðn ˜Q 
˜O¨TÐ1Ô2Ð Ø€gˆeÐ+Ð,Ñ,Ô,€ðHð Hð Hð HðV ð2ð 2ð 2ñ „ð2ð ðð ð ñ „ðð ð:ð :ð :ñ „ð:ð ð/ð /ð /ñ „ð/ð
 ð-ð -ð -ñ „ð-ðz9ð z9ð z9ð z9ðz7)9ð )9ð )9ð )9ð )9ð )9rB   