Ë
    ì—0jÄû  ã                   ó‚  — d Z ddlZddlZddl­ ddlmZmZ ddlmZm	Z	m
Z
 dPdddœd„Zd	„ ZdQdd
œd„Zd„ Zd„ ZdRd„Zd„ Zd„ ZdSd„Z ej(                  d«      ZdTd„Zd„ Zddœd„Zd„ Z G d„ de«      Z G d„ de«      ZdZdZ ee d«      s(d „ Z!d!„ Z"d"„ Z#d#„ Z$ e%e!e"«      e _&         e%e#e$«      e _'         G d$„ d%e(«      Z)d&„ Z* G d'„ d(e e)¬)«      Z+ G d*„ d+e e)¬)«      Z, G d,„ d-e e)¬)«      Z- G d.„ d/e e)¬)«      Z. G d0„ d1e e)¬)«      Z/e/Z0e+e1e2e3fe,e4fe-e5fe. e(d«      e6fe/ e(d2«      fiZ7e+e6fiZ8e6d/ e(d«      d/e1d(e2d(e3d(e4d+e5d- e(d2«      d1iZ9 G d3„ d4e:«      Z; G d5„ d6e;«      Z< G d7„ d8e;«      Z= ee>d9«      sd:„ Z?d;„ Z@ e%e?e@«      e>_A         G d<„ d=eB«      ZC G d>„ d?eD«      ZE G d@„ dAeD«      ZF G dB„ dCeD«      ZGdD eHej’                  j”                  dz   «      z   ZK e
e«       G dE„ dF«      «       ZLdGZMdHZNg eM¢eN¢­ZO G dI„ dJe«      ZPdK„ ZQdLD � ci c]  } |  eR«       j§                  | «      “Œ c} ZTdM„ ZUdN„ ZVeWdOk(  r eV«        yyc c} w )UaH  
    ast
    ~~~

    The `ast` module helps Python applications to process trees of the Python
    abstract syntax grammar.  The abstract syntax itself might change with
    each Python release; this module helps to find out programmatically what
    the current grammar looks like and allows modifications of it.

    An abstract syntax tree can be generated by passing `ast.PyCF_ONLY_AST` as
    a flag to the `compile()` builtin function or by using the `parse()`
    function from this module.  The result will be a tree of objects whose
    classes all inherit from `ast.AST`.

    A modified abstract syntax tree can be compiled into a Python code object
    using the built-in `compile()` function.

    Additionally various helper functions are provided that make working with
    the trees simpler.  The main intention of the helper functions and this
    module in general is to provide an easy to use interface for libraries
    that work tightly with the python syntax (template engines for example).


    :copyright: Copyright 2008 by Armin Ronacher.
    :license: Python License.
é    N)Ú*)ÚcontextmanagerÚnullcontext)ÚIntEnumÚautoÚ_simple_enumF)Útype_commentsÚfeature_versionc                ó¢   — t         }|r	|t        z  }|€d}n*t        |t        «      r|\  }}|dk7  rt	        d|› �«      ‚|}t        | ||||¬«      S )z½
    Parse the source into an AST node.
    Equivalent to compile(source, filename, mode, PyCF_ONLY_AST).
    Pass type_comments=True to get back type comments where the syntax allows.
    éÿÿÿÿé   zUnsupported major version: )Ú_feature_version)ÚPyCF_ONLY_ASTÚPyCF_TYPE_COMMENTSÚ
isinstanceÚtupleÚ
ValueErrorÚcompile)ÚsourceÚfilenameÚmoder	   r
   ÚflagsÚmajorÚminors           ú /usr/local/lib/python3.12/ast.pyÚparser   "   sl   € ô €EÙØÔ#Ñ#ˆØÐØ‰Ü	�O¤UÔ	+Ø&‰ˆˆuØ�AŠ:ÜÐ:¸5¸'ÐBÓCÐCØˆä�6˜8 T¨5Ø$3ô5ð 5ó    c                 óÔ   ‡‡‡‡— t        | t        «      rt        | j                  d«      d¬«      } t        | t        «      r| j
                  } d„ Šˆfd„Šˆfd„Šˆˆˆˆfd„Š ‰| «      S )aT  
    Evaluate an expression node or a string containing only a Python
    expression.  The string or node provided may only consist of the following
    Python literal structures: strings, bytes, numbers, tuples, lists, dicts,
    sets, booleans, and None.

    Caution: A complex expression can overflow the C stack and cause a crash.
    z 	Úeval©r   c                 óV   — d}t        | dd «      x}r|d|› �z  }t        |d| ›�z   «      ‚)Nzmalformed node or stringÚlinenoz	 on line ú: )Úgetattrr   )ÚnodeÚmsgÚlnos      r   Ú_raise_malformed_nodez+literal_eval.<locals>._raise_malformed_nodeE   sB   € Ø(ˆÜ˜$ ¨$Ó/Ð/ˆ3Ð/Ø�Y˜s˜eÐ$Ñ$ˆCÜ˜  D 8˜}Ñ,Ó-Ð-r   c                 ó˜   •— t        | t        «      r&t        | j                  «      t        t
        t        fvr ‰| «       | j                  S ©N)r   ÚConstantÚtypeÚvalueÚintÚfloatÚcomplex)r%   r(   s    €r   Ú_convert_numz"literal_eval.<locals>._convert_numJ   s7   ø€ Ü˜$¤Ô)¬T°$·*±*Ó-=ÄcÌ5ÔRYÐEZÑ-ZÙ! $Ô'Ø�z‰zÐr   c                 óØ   •— t        | t        «      rRt        | j                  t        t        f«      r2 ‰| j
                  «      }t        | j                  t        «      r|­S | S  ‰| «      S r*   )r   ÚUnaryOpÚopÚUAddÚUSubÚoperand)r%   r7   r1   s     €r   Ú_convert_signed_numz)literal_eval.<locals>._convert_signed_numN   sU   ø€ Ü�dœGÔ$¬°D·G±G¼dÄD¸\Ô)JÙ" 4§<¡<Ó0ˆGÜ˜$Ÿ'™'¤4Ô(Ø �yÐ à �yÐ Ù˜DÓ!Ð!r   c           	      ó|  •— t        | t        «      r| j                  S t        | t        «      rt	        t        ‰| j                  «      «      S t        | t        «      rt        t        ‰| j                  «      «      S t        | t        «      rt        t        ‰| j                  «      «      S t        | t        «      r]t        | j                  t        «      rC| j                  j                  dk(  r*| j                  | j                   cxk(  rg k(  rt        «       S  t        | t"        «      rpt%        | j&                  «      t%        | j(                  «      k7  r ‰| «       t+        t-        t        ‰| j&                  «      t        ‰| j(                  «      «      «      S t        | t.        «      rŽt        | j0                  t2        t4        f«      rn ‰| j6                  «      } ‰| j8                  «      }t        |t:        t<        f«      r4t        |t>        «      r$t        | j0                  t2        «      r||z   S ||z
  S  ‰| «      S )NÚset) r   r+   r-   ÚTupler   ÚmapÚeltsÚListÚlistÚSetr:   ÚCallÚfuncÚNameÚidÚargsÚkeywordsÚDictÚlenÚkeysÚvaluesÚdictÚzipÚBinOpr4   ÚAddÚSubÚleftÚrightr.   r/   r0   )r%   rP   rQ   Ú_convertr1   r8   r(   s      €€€€r   rR   zliteral_eval.<locals>._convertV   s”  ø€ Ü�dœHÔ%Ø—:‘:ÐÜ˜œeÔ$Üœ˜X t§y¡yÓ1Ó2Ð2Ü˜œdÔ#Üœ˜H d§i¡iÓ0Ó1Ð1Ü˜œcÔ"Ü”s˜8 T§Y¡YÓ/Ó0Ð0Ü˜œtÔ$¬°D·I±I¼tÔ)DØ�i‰i�l‰l˜eÒ#¨¯	©	°T·]±]Ô(HÀbÒ(HÜ“5ˆLð )Iä˜œdÔ#Ü�4—9‘9‹~¤ T§[¡[Ó!1Ò1Ù% dÔ+ÜœœC ¨$¯)©)Ó4Ü ¨$¯+©+Ó6ó8ó 9ð 9ä˜œeÔ$¬°D·G±G¼cÄ3¸ZÔ)HÙ& t§y¡yÓ1ˆDÙ  §¡Ó,ˆEÜ˜$¤¤e Ô-´*¸UÄGÔ2LÜ˜dŸg™g¤sÔ+Ø %™<Ð'à %™<Ð'Ù" 4Ó(Ð(r   )r   Ústrr   ÚlstripÚ
ExpressionÚbody)Únode_or_stringrR   r1   r8   r(   s    @@@@r   Úliteral_evalrX   8   s\   û€ ô �.¤#Ô&Ü˜~×4Ñ4°UÓ;À&ÔIˆÜ�.¤*Ô-Ø'×,Ñ,ˆò.ô
ô"÷)ñ4 �NÓ#Ð#r   )Úindentc                óÄ   ‡‡‡‡— dˆˆˆˆfd„	Št        | t        «      s"t        d| j                  j                  z  «      ‚‰�t        ‰t
        «      sd‰z  Š ‰| «      d   S )a�  
    Return a formatted dump of the tree in node.  This is mainly useful for
    debugging purposes.  If annotate_fields is true (by default),
    the returned string will show the names and the values for fields.
    If annotate_fields is false, the result string will be more compact by
    omitting unambiguous field names.  Attributes such as line
    numbers and column offsets are not dumped by default.  If this is wanted,
    include_attributes can be set to true.  If indent is a non-negative
    integer or string, then the tree will be pretty-printed with that indent
    level. None (the default) selects the single line representation.
    r   c                 óÆ  •‡— ‰�‰dz  Šd‰‰z  z   }d‰‰z  z   }nd}d}t        | t        «      �rNt        | «      }g }d}‰}| j                  D ]]  }	 t	        | |«      }	|	€t	        ||d«      €d}Œ" ‰|	‰«      \  }	}
|xr |
}|r|j                  |›d|	›�«       ŒM|j                  |	«       Œ_ ‰rb| j                  rV| j                  D ]G  }	 t	        | |«      }	|	€t	        ||d«      €Œ  ‰|	‰«      \  }	}
|xr |
}|j                  |›d|	›�«       ŒI |r<t        |«      d	k  r.| j                  j                  ›d
dj                  |«      ›d�| fS | j                  j                  ›d
|›|j                  |«      ›d�dfS t        | t        «      r&| syd|›|j                  ˆˆfd„| D «       «      ›d�dfS t        | «      dfS # t
        $ r d}Y �Œ‚w xY w# t
        $ r Y �Œw xY w)Né   Ú
z,
Ú ú, T.Ú=r   Ú(Ú)F)z[]TÚ[c              3   ó6   •K  — | ]  } ‰|‰«      d    –— Œ y­w©r   N© )Ú.0ÚxÚ_formatÚlevels     €€r   Ú	<genexpr>z(dump.<locals>._format.<locals>.<genexpr>¬   s   øè ø€ Ð/SÉdÈ±¸¸5Ó0AÀ!Õ0DÉdùs   ƒÚ])r   ÚASTr,   Ú_fieldsr$   ÚAttributeErrorÚappendÚ_attributesrH   Ú	__class__Ú__name__Újoinr?   Úrepr)r%   rj   ÚprefixÚsepÚclsrE   Ú	allsimplerF   Únamer-   Úsimpleri   Úannotate_fieldsÚinclude_attributesrY   s    `         €€€€r   ri   zdump.<locals>._format   s
  ù€ ØÐØ�Q‰JˆEØ˜F U™NÑ*ˆFØ˜& 5™.Ñ(‰CàˆFØˆCÜ�dœCÕ Ü�t“*ˆCØˆDØˆIØ&ˆHØŸœ�ðÜ# D¨$Ó/�Eð �=¤W¨S°$¸Ó%<Ð%DØ#�HØÙ '¨¨uÓ 5‘��vØ%Ò0¨&�	ÙØ—K‘Kª4±Ð 7Õ8à—K‘K Õ&ð %ñ " d×&6Ò&6Ø ×,Ô,�Dð!Ü '¨¨dÓ 3˜ð �}¬°°d¸CÓ)@Ð)HØ Ù$+¨E°5Ó$9‘M�E˜6Ø )Ò 4¨f�IØ—K‘Kª4±Ð 7Õ8ð -ñ œS ›Y¨!š^Ø#'§>¡>×#:Ó#:¸D¿I¹IÀd½OÐLÐRVÈhÐVÐVØ!%§¡×!8Ó!8¹&À#Ç(Á(È4Å.ÐQÐSXÐXÐXÜ˜œdÔ#ÙØ!ð á% s§x¡xÔ/SÉdÓ/SÕ'SÐTÐV[Ð[Ð[Ü�D‹z˜4ÐÐøô= &ò Ø#�HÚðûô  *ò !Ú ð!ús$   ÁGÃGÇGÇGÇ	G ÇG zexpected AST, got %rÚ )r   )r   rm   Ú	TypeErrorrr   rs   rS   )r%   r|   r}   rY   ri   s    ```@r   Údumpr€   s   s\   û€ ÷. ð . ô` �dœCÔ ÜÐ.°·±×1HÑ1HÑHÓIÐIØÐ¤*¨V´SÔ"9Ø�v‘ˆÙ�4‹=˜ÑÐr   c                 óÆ   — dD ][  }||j                   v sŒ|| j                   v sŒ!t        ||d«      }|€t        ||«      sŒ=|j                  d«      sŒOt	        | ||«       Œ] | S )z¬
    Copy source location (`lineno`, `col_offset`, `end_lineno`, and `end_col_offset`
    attributes) from *old_node* to *new_node* if possible, and return *new_node*.
    )r"   Ú
col_offsetÚ
end_linenoÚend_col_offsetNÚend_)rq   r$   ÚhasattrÚ
startswithÚsetattr)Únew_nodeÚold_nodeÚattrr-   s       r   Úcopy_locationrŒ   ¶   si   € ó
 GˆØ�8×'Ñ'Ò'¨D°H×4HÑ4HÒ,HÜ˜H d¨DÓ1ˆEð Ð Ü˜ $Õ'¨D¯O©O¸FÕ,Cä˜ $¨Õ.ð Gð €Or   c                 ó*   ‡— ˆfd„Š ‰| dddd«       | S )a{  
    When you compile a node tree with compile(), the compiler expects lineno and
    col_offset attributes for every node that supports them.  This is rather
    tedious to fill in for generated nodes, so this helper adds these attributes
    recursively where not already set, by setting them to the values of the
    parent node.  It works recursively starting at *node*.
    c                 ó²  •— d| j                   v r t        | d«      s|| _        n| j                  }d| j                   v r!t        | dd «      €|| _        n| j                  }d| j                   v r t        | d«      s|| _        n| j
                  }d| j                   v r!t        | dd «      €|| _        n| j                  }t        | «      D ]  } ‰|||||«       Œ y )Nr"   rƒ   r‚   r„   )rq   r†   r"   r$   rƒ   r‚   r„   Úiter_child_nodes)r%   r"   r‚   rƒ   r„   ÚchildÚ_fixs         €r   r‘   z#fix_missing_locations.<locals>._fixÏ   sÐ   ø€ Ø�t×'Ñ'Ñ'Ü˜4 Ô*Ø$�•àŸ™�Ø˜4×+Ñ+Ñ+Ü�t˜\¨4Ó0Ð8Ø",�•à!Ÿ_™_�
Ø˜4×+Ñ+Ñ+Ü˜4 Ô.Ø",�•à!Ÿ_™_�
Ø˜t×/Ñ/Ñ/Ü�tÐ-¨tÓ4Ð<Ø&4�Õ#à!%×!4Ñ!4�Ü% dÖ+ˆEÙ�˜ 
¨J¸ÕGñ ,r   r\   r   rf   )r%   r‘   s    @r   Úfix_missing_locationsr’   Ç   s    ø€ ôHñ. 	ˆˆq�!�Q˜ÔØ€Kr   r\   c                 ó
  — t        | «      D ]t  }t        |t        «      rt        |dd«      |z   |_        Œ)d|j
                  v rt        |dd«      |z   |_        d|j
                  v sŒ[t        |dd«      x}€Œk||z   |_        Œv | S )z´
    Increment the line number and end line number of each node in the tree
    starting at *node* by *n*. This is useful to "move code" to a different
    location in a file.
    r"   r   rƒ   )Úwalkr   Ú
TypeIgnorer$   r"   rq   rƒ   )r%   Únr�   rƒ   s       r   Úincrement_linenor—   ê   sŽ   € ô �d–ˆô �eœZÔ(Ü" 5¨(°AÓ6¸Ñ:ˆEŒLØà�u×(Ñ(Ñ(Ü" 5¨(°AÓ6¸Ñ:ˆEŒLà˜E×-Ñ-Ò-Ü& u¨l¸AÓ>Ð>�ÑKà)¨A™~ˆEÕð ð €Kr   c              #   ón   K  — | j                   D ]  }	 |t        | |«      f–— Œ y# t        $ r Y Œ"w xY w­w)zs
    Yield a tuple of ``(fieldname, value)`` for each field in ``node._fields``
    that is present on *node*.
    N)rn   r$   ro   )r%   Úfields     r   Úiter_fieldsrš     s@   è ø€ ð
 —”ˆð	Øœ  uÓ-Ð-Ó-ñ øô ò 	Ùð	üs   ‚5“&£5¦	2¯5±2²5c              #   ó¶   K  — t        | «      D ]G  \  }}t        |t        «      r|–— Œt        |t        «      sŒ,|D ]  }t        |t        «      sŒ|–— Œ ŒI y­w)z‰
    Yield all direct child nodes of *node*, that is, all fields that are nodes
    and all items of fields that are lists of nodes.
    N)rš   r   rm   r?   )r%   rz   r™   Úitems       r   r�   r�     sM   è ø€ ô
 # 4Ö(‰ˆˆeÜ�eœSÔ!Ø‹KÜ˜œtÕ$Û�Ü˜d¤CÕ(Ø“Jñ ñ	 )ùs   ‚7AºAÁ	Ac                 ó®  — t        | t        t        t        t        f«      s"t        d| j                  j                  z  «      ‚| j                  rt        | j                  d   t        «      sy| j                  d   j                  } t        | t        «      r't        | j                  t        «      r| j                  }ny|rddl}|j                  |«      }|S )aC  
    Return the docstring for the given node or None if no docstring can
    be found.  If the node provided does not have docstrings a TypeError
    will be raised.

    If *clean* is `True`, all tabs are expanded to spaces and any whitespace
    that can be uniformly removed from the second line onwards is removed.
    z%r can't have docstringsr   N)r   ÚAsyncFunctionDefÚFunctionDefÚClassDefÚModuler   rr   rs   rV   ÚExprr-   r+   rS   ÚinspectÚcleandoc)r%   ÚcleanÚtextr£   s       r   Úget_docstringr§     sŸ   € ô �dÔ-¬{¼HÄfÐMÔNÜÐ2°T·^±^×5LÑ5LÑLÓMÐMØ�9Š9œ D§I¡I¨a¡L´$Ô7ØØ�9‰9�Q‰<×Ñ€DÜ�$œÔ!¤j°·±¼SÔ&AØ�z‰z‰àÙÛØ×Ñ Ó%ˆØ€Kr   z(.*?(?:\r\n|\n|\r|$))c                 ó”   — g }t        t        j                  | «      d«      D ]#  \  }}|�||kD  r |S |j                  |d   «       Œ% |S )z}Split a string into lines ignoring form feed and other chars.

    This mimics how the Python parser splits source code.
    r\   r   )Ú	enumerateÚ_line_patternÚfinditerrp   )r   ÚmaxlinesÚlinesr"   Úmatchs        r   Ú_splitlines_no_ffr¯   4  sX   € ð
 €EÜ"¤=×#9Ñ#9¸&Ó#AÀ1ÖE‰ˆ�ØÐ F¨XÒ$5Øà€Lð 	�‰�U˜1‘XÕð Fð €Lr   c                 ó6   — d}| D ]  }|dv r||z  }Œ|dz  }Œ |S )z6Replace all chars except '\f\t' in a line with spaces.r^   z	r~   rf   )r   ÚresultÚcs      r   Ú_pad_whitespacer³   A  s1   € à€FÛˆØ�‰;Ø�a‰K‰Fà�c‰M‰Fð	 ð
 €Mr   )Úpaddedc                ó¤  — 	 |j                   �|j                  €y|j                  dz
  }|j                   dz
  }|j                  }|j                  }t        | |dz   ¬«      }||k(  r$||   j                  «       || j                  «       S |r.t        ||   j                  «       d| j                  «       «      }nd}|||   j                  «       |d j                  «       z   }	||   j                  «       d| j                  «       }
||dz   | }|j                  d|	«       |j                  |
«       dj                  |«      S # t        $ r Y yw xY w)aB  Get source code segment of the *source* that generated *node*.

    If some location information (`lineno`, `end_lineno`, `col_offset`,
    or `end_col_offset`) is missing, return None.

    If *padded* is `True`, the first line of a multi-line statement will
    be padded with spaces to match its original position.
    Nr\   )r¬   r^   r   )rƒ   r„   r"   r‚   ro   r¯   ÚencodeÚdecoder³   Úinsertrp   rt   )r   r%   r´   r"   rƒ   r‚   r„   r­   ÚpaddingÚfirstÚlasts              r   Úget_source_segmentr¼   L  sP  € ðØ�?‰?Ð" d×&9Ñ&9Ð&AØØ—‘˜q‘ˆØ—_‘_ qÑ(ˆ
Ø—_‘_ˆ
Ø×,Ñ,ˆô ˜f¨z¸!©|Ô<€EØ�VÒØ�V‰}×#Ñ#Ó% j°Ð@×GÑGÓIÐIáÜ! %¨¡-×"6Ñ"6Ó"8¸¸*Ð"E×"LÑ"LÓ"NÓO‰àˆà�e˜F‘m×*Ñ*Ó,¨Z¨[Ð9×@Ñ@ÓBÑB€EØ�Ñ×#Ñ#Ó% o ~Ð6×=Ñ=Ó?€DØ�&˜‘(˜:Ð&€Eà	‡L�L��EÔØ	‡L�L�ÔØ�7‰7�5‹>Ðøô% ò Ùðús   ‚E ›6E Å	EÅEc              #   ó’   K  — ddl m}  || g«      }|r2|j                  «       } |j                  t	        | «      «       | –— |rŒ1yy­w)zå
    Recursively yield all descendant nodes in the tree starting at *node*
    (including *node* itself), in no specified order.  This is useful if you
    only want to modify nodes in place and don't care about the context.
    r   )ÚdequeN)Úcollectionsr¾   ÚpopleftÚextendr�   )r%   r¾   Útodos      r   r”   r”   q  s@   è ø€ õ "Ù�$�‹=€DÙ
Ø�|‰|‹~ˆØ�‰Ô$ TÓ*Ô+ØŠ
ô ùs   ‚AAÁAc                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚNodeVisitora<  
    A node visitor base class that walks the abstract syntax tree and calls a
    visitor function for every node found.  This function may return a value
    which is forwarded by the `visit` method.

    This class is meant to be subclassed, with the subclass adding visitor
    methods.

    Per default the visitor functions for the nodes are ``'visit_'`` +
    class name of the node.  So a `TryFinally` node visit function would
    be `visit_TryFinally`.  This behavior can be changed by overriding
    the `visit` method.  If no visitor function exists for a node
    (return value `None`) the `generic_visit` visitor is used instead.

    Don't use the `NodeVisitor` if you want to apply changes to nodes during
    traversing.  For this a special visitor exists (`NodeTransformer`) that
    allows modifications.
    c                 ór   — d|j                   j                  z   }t        | || j                  «      } ||«      S )zVisit a node.Úvisit_)rr   rs   r$   Úgeneric_visit)Úselfr%   ÚmethodÚvisitors       r   ÚvisitzNodeVisitor.visit“  s4   € à˜DŸN™N×3Ñ3Ñ3ˆÜ˜$ ¨×(:Ñ(:Ó;ˆÙ�t‹}Ðr   c                 óâ   — t        |«      D ]a  \  }}t        |t        «      r*|D ]$  }t        |t        «      sŒ| j	                  |«       Œ& Œ@t        |t        «      sŒQ| j	                  |«       Œc y)z9Called if no explicit visitor function exists for a node.N)rš   r   r?   rm   rË   )rÈ   r%   r™   r-   rœ   s        r   rÇ   zNodeVisitor.generic_visit™  sW   € ä'¨Ö-‰LˆE�5Ü˜%¤Ô&Û!�DÜ! $¬Õ,ØŸ
™
 4Õ(ñ "ô ˜E¤3Õ'Ø—
‘
˜5Õ!ñ .r   c                 óf  — |j                   }t        j                  t        |«      «      }|€,t        j	                  «       D ]  \  }}t        ||«      sŒ|} n |�8d|z   }	 t        | |«      }dd l}|j                  |› d�t        d«        ||«      S | j                  |«      S # t        $ r Y Œw xY w)NrÆ   r   z" is deprecated; add visit_Constanté   )r-   Ú_const_node_type_namesÚgetr,   Úitemsr   r$   ÚwarningsÚwarnÚDeprecationWarningro   rÇ   )	rÈ   r%   r-   Ú	type_namerx   rz   rÉ   rÊ   rÒ   s	            r   Úvisit_ConstantzNodeVisitor.visit_Constant£  sÀ   € Ø—
‘
ˆÜ*×.Ñ.¬t°E«{Ó;ˆ	ØÐÜ3×9Ñ9Ö;‘	��TÜ˜e SÕ)Ø $�IÙð <ð Ð Ø 	Ñ)ˆFð%Ü! $¨Ó/�ó  Ø—‘  Ð(JÐKÜ0°!ô5á˜t“}Ð$Ø×!Ñ! $Ó'Ð'øô "ò Ùðús   Á!B$ Â$	B0Â/B0N)rs   Ú
__module__Ú__qualname__Ú__doc__rË   rÇ   rÖ   rf   r   r   rÄ   rÄ     s   „ ñò&ò"ó(r   rÄ   c                   ó   — e Zd ZdZd„ Zy)ÚNodeTransformeraC  
    A :class:`NodeVisitor` subclass that walks the abstract syntax tree and
    allows modification of nodes.

    The `NodeTransformer` will walk the AST and use the return value of the
    visitor methods to replace or remove the old node.  If the return value of
    the visitor method is ``None``, the node will be removed from its location,
    otherwise it is replaced with the return value.  The return value may be the
    original node in which case no replacement takes place.

    Here is an example transformer that rewrites all occurrences of name lookups
    (``foo``) to ``data['foo']``::

       class RewriteName(NodeTransformer):

           def visit_Name(self, node):
               return Subscript(
                   value=Name(id='data', ctx=Load()),
                   slice=Constant(value=node.id),
                   ctx=node.ctx
               )

    Keep in mind that if the node you're operating on has child nodes you must
    either transform the child nodes yourself or call the :meth:`generic_visit`
    method for the node first.

    For nodes that were part of a collection of statements (that applies to all
    statement nodes), the visitor may also return a list of nodes rather than
    just a single node.

    Usually you use the transformer like this::

       node = YourTransformer().visit(node)
    c                 ó”  — t        |«      D ]¹  \  }}t        |t        «      rfg }|D ]Y  }t        |t        «      r6| j	                  |«      }|€Œ't        |t        «      s|j                  |«       ŒI|j                  |«       Œ[ ||d d  Œ|t        |t        «      sŒ�| j	                  |«      }|€t        ||«       Œ­t        |||«       Œ» |S r*   )	rš   r   r?   rm   rË   rÁ   rp   Údelattrrˆ   )rÈ   r%   r™   Ú	old_valueÚ
new_valuesr-   r‰   s          r   rÇ   zNodeTransformer.generic_visitÝ  s¾   € Ü +¨DÖ 1ÑˆE�9Ü˜)¤TÔ*Ø�
Û&�EÜ! %¬Ô-Ø $§
¡
¨5Ó 1˜Ø ˜=Ø$Ü!+¨E´3Ô!7Ø&×-Ñ-¨eÔ4Ø$Ø×%Ñ% eÕ,ð 'ð  *�	™!‘Ü˜I¤sÕ+ØŸ:™: iÓ0�ØÐ#Ü˜D %Õ(ä˜D %¨Õ2ð% !2ð& ˆr   N)rs   r×   rØ   rÙ   rÇ   rf   r   r   rÛ   rÛ   ¹  s   „ ñ!óFr   rÛ   zN{name} is deprecated and will be removed in Python {remove}; use value insteadzU{name} is deprecated and will be removed in Python {remove}; use ast.Constant insteadr–   c                 óR   — ddl }|j                  dt        d¬«       | j                  S )úDeprecated. Use value instead.r   NúAttribute n©r   é   ©ÚmessageÚremove©rÒ   Ú_deprecatedÚ_DEPRECATED_VALUE_ALIAS_MESSAGEr-   ©rÈ   rÒ   s     r   Ú	_n_getterrì     ó,   € ãØ×ÑØÔ#BÈ7ð 	ô 	
ð �z‰zÐr   c                 óJ   — dd l }|j                  dt        d¬«       || _        y )Nr   râ   rã   rå   rè   ©rÈ   r-   rÒ   s      r   Ú	_n_setterrð   
  ó)   € ÛØ×ÑØÔ#BÈ7ð 	ô 	
ð ˆ�
r   c                 óR   — ddl }|j                  dt        d¬«       | j                  S )rá   r   NúAttribute srã   rå   rè   rë   s     r   Ú	_s_getterrô     rí   r   c                 óJ   — dd l }|j                  dt        d¬«       || _        y )Nr   ró   rã   rå   rè   rï   s      r   Ú	_s_setterrö     rñ   r   c                   ó   — e Zd Zd„ Zd„ Zy)Ú_ABCc                 ó   — d| _         y )Nz3Deprecated AST node class. Use ast.Constant instead)rÙ   )rx   rE   s     r   Ú__init__z_ABC.__init__%  s	   € ØOˆ�r   c                 óf  — | t         v r)dd l}|j                  d| j                  › �t        d¬«       t        |t        «      sy| t         v rC	 |j                  }t        |t         |    «      xr! t        |t        j                  | d«      «       S t        j                  | |«      S # t        $ r Y yw xY w)Nr   úast.rã   rå   Frf   )Ú_const_typesrÒ   ré   rØ   Ú_DEPRECATED_CLASS_MESSAGEr   r+   r-   Ú_const_types_notrÐ   ro   r,   Ú__instancecheck__)rx   ÚinstrÒ   r-   s       r   r   z_ABC.__instancecheck__(  s¼   € Ø”,ÑÛØ× Ñ Ø�s×'Ñ'Ð(Ð)Ü1Øð !ô ô
 ˜$¤Ô)ØØ”,ÑðØŸ
™
�ô
 ˜u¤l°3Ñ&7Ó8ò IÜ" 5Ô*:×*>Ñ*>¸sÀBÓ*GÓHÐHðô ×%Ñ% c¨4Ó0Ð0øô "ò Ùðús   ÁB$ Â$	B0Â/B0N)rs   r×   rØ   rú   r   rf   r   r   rø   rø   #  s   „ òPó1r   rø   c                 ó^  — |D ]T  }|| j                   vrŒ| j                   j                  |«      }|t        |«      k  sŒ<t        | j                  › d|›�«      ‚ | t
        v r4dd l}|j                  d| j                  › �t        d¬«       t        |i |¤ŽS t        j                  | g|¢­i |¤ŽS )Nz" got multiple values for argument r   rü   rã   rå   )rn   ÚindexrH   r   rs   rý   rÒ   ré   rØ   rþ   r+   Ú__new__)rx   rE   ÚkwargsÚkeyÚposrÒ   s         r   Ú_newr  >  s¹   € ÛˆØ�c—k‘kÑ!àØ�k‰k×Ñ Ó$ˆØ”�T“‹?Ü˜sŸ|™|˜nÐ,NÈsÈgÐVÓWÐWð ð ŒlÑÛØ×ÑØ�3×#Ñ#Ð$Ð%Ô/HÐQXð 	ô 	
ô ˜Ð( Ñ(Ð(Ü×Ñ˜CÐ1 $Ò1¨&Ñ1Ð1r   c                   ó   — e Zd ZdZeZy)ÚNum)r–   N©rs   r×   rØ   rn   r  r  rf   r   r   r
  r
  N  ó   „ Ø€GØ�Gr   r
  )Ú	metaclassc                   ó   — e Zd ZdZeZy)ÚStr©ÚsNr  rf   r   r   r  r  R  r  r   r  c                   ó   — e Zd ZdZeZy)ÚBytesr  Nr  rf   r   r   r  r  V  r  r   r  c                   ó   — e Zd ZeZy)ÚNameConstantN)rs   r×   rØ   r  r  rf   r   r   r  r  Z  s   „ Ø�Gr   r  c                   ó   — e Zd ZdZd„ Zy)ÚEllipsisrf   c                 óš   — | t         u r+dd l}|j                  dt        d¬«       t	        dg|¢­i |¤ŽS t	        j
                  | g|¢­i |¤ŽS )Nr   zast.Ellipsisrã   rå   .)Ú_ast_EllipsisrÒ   ré   rþ   r+   r  )rx   rE   r  rÒ   s       r   r  zEllipsis.__new__`  sZ   € Ø”-ÑÛØ× Ñ ØÔ(AÈ'ð !ô ô ˜CÐ1 $Ò1¨&Ñ1Ð1Ü×Ñ Ð5 dÒ5¨fÑ5Ð5r   N)rs   r×   rØ   rn   r  rf   r   r   r  r  ]  s   „ Ø€Gó6r   r  .c                   ó   — e Zd ZdZy)ÚslicezDeprecated AST node class.N©rs   r×   rØ   rÙ   rf   r   r   r  r  „  s   „ Ú$r   r  c                   ó   — e Zd ZdZd„ Zy)ÚIndexz@Deprecated AST node class. Use the index value directly instead.c                 ó   — |S r*   rf   )rx   r-   r  s      r   r  zIndex.__new__‰  s   € Øˆr   N©rs   r×   rØ   rÙ   r  rf   r   r   r  r  ‡  s
   „ ÙJór   r  c                   ó   — e Zd ZdZdd„Zy)ÚExtSlicez1Deprecated AST node class. Use ast.Tuple instead.c                 ó>   — t        t        |«      t        «       fi |¤ŽS r*   )r;   r?   ÚLoad)rx   Údimsr  s      r   r  zExtSlice.__new__Ž  s   € Ü”T˜$“Z¤£Ñ2¨6Ñ2Ð2r   N)rf   r   rf   r   r   r"  r"  Œ  s
   „ Ù;ô3r   r"  r%  c                 ó   — | j                   S )zDeprecated. Use elts instead.©r=   ©rÈ   s    r   Ú_dims_getterr)  –  s   € à�y‰yÐr   c                 ó   — || _         y r*   r'  ©rÈ   r-   s     r   Ú_dims_setterr,  š  s	   € Øˆ�	r   c                   ó   — e Zd ZdZy)ÚSuiteú/Deprecated AST node class.  Unused in Python 3.Nr  rf   r   r   r.  r.  Ÿ  ó   „ Ú9r   r.  c                   ó   — e Zd ZdZy)ÚAugLoadr/  Nr  rf   r   r   r2  r2  ¢  r0  r   r2  c                   ó   — e Zd ZdZy)ÚAugStorer/  Nr  rf   r   r   r4  r4  ¥  r0  r   r4  c                   ó   — e Zd ZdZy)ÚParamr/  Nr  rf   r   r   r6  r6  ¨  r0  r   r6  Ú1ec                   ó  — e Zd ZdZ e«       Z e«       Z e«       Z e«       Z e«       Z	 e«       Z
 e«       Z e«       Z e«       ZeZ e«       Z e«       Z e«       Z e«       Z e«       Z e«       Z e«       Z e«       Z e«       Zd„ Zy)Ú_Precedencez5Precedence table that originated from python grammar.c                 óN   — 	 | j                  | dz   «      S # t        $ r | cY S w xY w©Nr\   )rr   r   r(  s    r   Únextz_Precedence.nextÉ  s.   € ð	Ø—>‘> $¨¡(Ó+Ð+øÜò 	ØŠKð	ús   ‚ –$£$N)rs   r×   rØ   rÙ   r   Ú
NAMED_EXPRÚTUPLEÚYIELDÚTESTÚORÚANDÚNOTÚCMPÚEXPRÚBORÚBXORÚBANDÚSHIFTÚARITHÚTERMÚFACTORÚPOWERÚAWAITÚATOMr<  rf   r   r   r9  r9  °  s�   „ á?á“€JÙ‹F€EÙ‹F€EÙ‹6€DÙ	‹€BÙ
‹&€CÙ
‹&€CÙ
‹&€Cá‹6€DØ
€CÙ‹6€DÙ‹6€DÙ‹F€EÙ‹F€EÙ‹6€DÙ‹V€FÙ‹F€EÙ‹F€EÙ‹6€Dór   r9  )Ú'Ú")z"""ú'''c                   óà  ‡ — e Zd ZdZddœd„Zd„ Zd„ Zd„ Zd“d„Zd	„ Z	e
d”d„«       Ze
d
dœd„«       Ze
d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd „ Zd!„ Z d"„ Z!d#„ Z"d$„ Z#d%„ Z$d&„ Z%d'„ Z&d(„ Z'd)„ Z(d*„ Z)d+„ Z*d,„ Z+d-„ Z,d.„ Z-d/„ Z.d0„ Z/d1„ Z0d2„ Z1d3„ Z2d4„ Z3d5„ Z4d6„ Z5d7„ Z6d8„ Z7d9„ Z8d:„ Z9d;„ Z:d<„ Z;d=„ Z<d>„ Z=d?„ Z>d@„ Z?e@ddAœdB„ZAe@dCœdD„ZBdE„ ZCd•dF„ZDdG„ ZEdH„ ZFdI„ ZGdJ„ ZHdK„ ZIdL„ ZJdM„ ZKdN„ ZLdO„ ZMdP„ ZNdQ„ ZOdR„ ZPdS„ ZQdT„ ZRdU„ ZSdVdWdXdYdZœZTeUj¬                  eUj®                  eUj®                  eUj®                  d[œZXd\„ ZYdXdYd]d^d_d`dadbdcdddedfdgdhœZZeUj¶                  eUj¶                  eUj¸                  eUj¸                  eUj¸                  eUj¸                  eUjº                  eUjº                  eUj¼                  eUj¾                  eUjÀ                  eUj¸                  eUjÂ                  diœZb ecdj«      Zddk„ Zedldmdndodpdqdrdsdtdudvœ
Zfdw„ ZgdxdydzœZheUjÒ                  eUjÔ                  d{œZkd|„ Zld}„ Zmd~„ Znd„ Zod€„ Zpd�„ Zqd‚„ Zrdƒ„ Zsd„„ Ztd…„ Zud†„ Zvd‡„ Zwdˆ„ Zxd‰„ ZydŠ„ Zzd‹„ Z{dŒ„ Z|d�„ Z}dŽ„ Z~d�„ Zd�„ Z€d‘„ Z�d’„ Z‚ˆ xZƒS )–Ú	_Unparserz�Methods in this class recursively traverse an AST and
    output source code for the abstract syntax; original formatting
    is disregarded.F)Ú_avoid_backslashesc                óX   — g | _         i | _        i | _        d| _        || _        d| _        y )Nr   F)Ú_sourceÚ_precedencesÚ_type_ignoresÚ_indentrU  Ú_in_try_star)rÈ   rU  s     r   rú   z_Unparser.__init__Ù  s0   € ØˆŒØˆÔØˆÔØˆŒØ"4ˆÔØ!ˆÕr   c                 óˆ   — t        |«      }	  |t        |«      «       |D ]  } |«         ||«       Œ y# t        $ r Y yw xY w)z7Call f on each item in seq, calling inter() in between.N)Úiterr<  ÚStopIteration)rÈ   ÚinterÚfÚseqrh   s        r   Ú
interleavez_Unparser.interleaveá  sG   € ä�3‹iˆð	ÙŒd�3‹iŒLó �Ù”Ù�!•ñ øô ò 	Ùð	ús   �5 µ	AÁ Ac                 óˆ   ‡ — t        |«      dk(  r ||d   «       ‰ j                  d«       y‰ j                  ˆ fd„||«       y)z§Traverse and separate the given *items* with a comma and append it to
        the buffer. If *items* is a single item sequence, a trailing comma
        will be added.r\   r   Ú,c                  ó&   •— ‰ j                  d«      S ©Nr_   ©Úwriter(  s   €r   Ú<lambda>z&_Unparser.items_view.<locals>.<lambda>õ  ó   ø€  D§J¡J¨tÔ$4r   N)rH   rh  rb  )rÈ   Ú	traverserrÑ   s   `  r   Ú
items_viewz_Unparser.items_viewí  s8   ø€ ô ˆu‹:˜Š?Ù�e˜A‘hÔØ�J‰J�s�Oà�O‰OÓ4°iÀÕGr   c                 ó@   — | j                   r| j                  d«       yy)z8Adds a newline if it isn't the start of generated sourcer]   N)rW  rh  r(  s    r   Úmaybe_newlinez_Unparser.maybe_newline÷  s   € à�<Š<Ø�J‰J�tÕð r   c                 óf   — | j                  «        | j                  d| j                  z  |z   «       y)zXIndent a piece of text and append it, according to the current
        indentation levelz    N)rn  rh  rZ  ©rÈ   r¦   s     r   Úfillz_Unparser.fillü  s*   € ð 	×ÑÔØ�
‰
�6˜DŸL™LÑ(¨4Ñ/Õ0r   c                 ó:   — | j                   j                  |«       y)zAdd new source partsN)rW  rÁ   rp  s     r   rh  z_Unparser.write  s   € à�‰×Ñ˜DÕ!r   Nc              #   óP   K  — |€g }| j                   }|| _         |–— || _         y ­wr*   )rW  )rÈ   ÚbufferÚoriginal_sources      r   Úbufferedz_Unparser.buffered  s,   è ø€ àˆ>ØˆFàŸ,™,ˆØˆŒØŠØ&ˆ�ùs   ‚$&©Úextrac             #   ó°   K  — | j                  d«       |r| j                  |«       | xj                  dz  c_        d–— | xj                  dz  c_        y­w)a  A context manager for preparing the source for blocks. It adds
        the character':', increases the indentation on enter and decreases
        the indentation on exit. If *extra* is given, it will be directly
        appended after the colon character.
        Ú:r\   N)rh  rZ  )rÈ   rx  s     r   Úblockz_Unparser.block  sA   è ø€ ð 	�
‰
�3ŒÙØ�J‰J�uÔØ�Š˜Ñ�ÛØ�Š˜ÑŽùs   ‚AAc              #   óX   K  — | j                  |«       d–— | j                  |«       y­w)z‡A context manager for preparing the source for expressions. It adds
        *start* to the buffer and enters, after exit it adds *end*.Nrg  )rÈ   ÚstartÚends      r   Údelimitz_Unparser.delimit  s"   è ø€ ð
 	�
‰
�5ÔÛØ�
‰
�3�ùs   ‚(*c                 ó>   — |r| j                  ||«      S t        «       S r*   )r  r   )rÈ   r}  r~  Ú	conditions       r   Ú
delimit_ifz_Unparser.delimit_if'  s   € ÙØ—<‘<  sÓ+Ð+ä“=Ð r   c                 óL   — | j                  dd| j                  |«      |kD  «      S )z,Shortcut to adding precedence related parensra   rb   )r‚  Úget_precedence)rÈ   Ú
precedencer%   s      r   Úrequire_parensz_Unparser.require_parens-  s%   € à�‰˜s C¨×)<Ñ)<¸TÓ)BÀZÑ)OÓPÐPr   c                 óV   — | j                   j                  |t        j                  «      S r*   )rX  rÐ   r9  r@  ©rÈ   r%   s     r   r„  z_Unparser.get_precedence1  s!   € Ø× Ñ ×$Ñ$ T¬;×+;Ñ+;Ó<Ð<r   c                 ó0   — |D ]  }|| j                   |<   Œ y r*   )rX  )rÈ   r…  Únodesr%   s       r   Úset_precedencez_Unparser.set_precedence4  s   € ÛˆDØ&0ˆD×Ñ˜dÒ#ñ r   c                 ó(  — t        |t        t        t        t        f«      rt        |j                  «      dk  ry|j                  d   }t        |t        «      sy|j                  }t        |t        «      rt        |j                  t        «      r|S yy)z«If a docstring node is found in the body of the *node* parameter,
        return that docstring node, None otherwise.

        Logic mirrored from ``_PyAST_GetDocString``.r\   Nr   )r   rž   rŸ   r    r¡   rH   rV   r¢   r-   r+   rS   rˆ  s     r   Úget_raw_docstringz_Unparser.get_raw_docstring8  sv   € ô
 ØÔ#¤[´(¼FÐCô
ä�—‘‹^˜aÒØØ�y‰y˜‰|ˆÜ˜$¤Ô%ØØ�z‰zˆÜ�dœHÔ%¬*°T·Z±ZÄÔ*EØˆKð +FÐ%r   c                 óx   — | j                   j                  |j                  «      xs |j                  }|�d|› �S y )Nz	 # type: )rY  rÐ   r"   Útype_comment)rÈ   r%   Úcomments      r   Úget_type_commentz_Unparser.get_type_commentH  s?   € Ø×$Ñ$×(Ñ(¨¯©Ó5ÒJ¸×9JÑ9JˆØÐØ˜w˜iÐ(Ð(ð r   c                 óv   •— t        |t        «      r|D ]  }| j                  |«       Œ y t        ‰| �  |«       y r*   )r   r?   ÚtraverseÚsuperrË   )rÈ   r%   rœ   rr   s      €r   r“  z_Unparser.traverseM  s1   ø€ Ü�dœDÔ!Û�Ø—‘˜dÕ#ñ ô ‰G‰M˜$Õr   c                 óh   — g | _         | j                  |«       dj                  | j                   «      S )z‚Outputs a source code string that, if converted back to an ast
        (using ast.parse) will generate an AST equivalent to *node*r^   )rW  r“  rt   rˆ  s     r   rË   z_Unparser.visitW  s*   € ð ˆŒØ�‰�dÔØ�w‰w�t—|‘|Ó$Ð$r   c                 óÀ   — | j                  |«      x}r0| j                  |«       | j                  |j                  dd  «       y | j                  |j                  «       y r;  )r�  Ú_write_docstringr“  rV   )rÈ   r%   Ú	docstrings      r   Ú"_write_docstring_and_traverse_bodyz,_Unparser._write_docstring_and_traverse_body^  sL   € Ø×/Ñ/°Ó5Ð5ˆIÐ5Ø×!Ñ! )Ô,Ø�M‰M˜$Ÿ)™) A B˜-Õ(à�M‰M˜$Ÿ)™)Õ$r   c                 óÒ   — |j                   D �ci c]  }|j                  d|j                  › �“Œ c}| _        | j	                  |«       | j                  j                  «        y c c}w )NÚignore)Útype_ignoresr"   ÚtagrY  r™  Úclear)rÈ   r%   r›  s      r   Úvisit_Modulez_Unparser.visit_Modulee  se   € ð ×+Ò+ó
á+�ð �M‰M˜V F§J¡J <Ð0Ñ0Ø+ñ
ˆÔð 	×/Ñ/°Ô5Ø×Ñ× Ñ Õ"ùò
s   �!A$c                 ó   ‡ — ‰ j                  dd«      5  ‰ j                  ˆ fd„‰ j                  |j                  «       d d d «       ‰ j	                  d«       ‰ j                  |j
                  «       y # 1 sw Y   Œ6xY w)Nra   rb   c                  ó&   •— ‰ j                  d«      S rf  rg  r(  s   €r   ri  z._Unparser.visit_FunctionType.<locals>.<lambda>p  ó   ø€ ˜Ÿ
™
 4Ô(r   ú -> )r  rb  r“  Úargtypesrh  Úreturnsrˆ  s   ` r   Úvisit_FunctionTypez_Unparser.visit_FunctionTypem  sX   ø€ Ø�\‰\˜#˜sÕ#Ø�O‰OÛ(¨$¯-©-¸¿¹ô÷ $ð
 	�
‰
�6ÔØ�‰�d—l‘lÕ#÷ $Ð#ús   ”+A4Á4A=c                 ó®   — | j                  «        | j                  t        j                  |j                  «       | j                  |j                  «       y r*   )rq  r‹  r9  r?  r-   r“  rˆ  s     r   Ú
visit_Exprz_Unparser.visit_Exprv  s5   € Ø�	‰	ŒØ×ÑœK×-Ñ-¨t¯z©zÔ:Ø�‰�d—j‘jÕ!r   c                 óf  — | j                  t        j                  |«      5  | j                  t        j                  |j
                  |j                  «       | j                  |j
                  «       | j                  d«       | j                  |j                  «       d d d «       y # 1 sw Y   y xY w)Nz := )	r†  r9  r=  r‹  rO  Útargetr-   r“  rh  rˆ  s     r   Úvisit_NamedExprz_Unparser.visit_NamedExpr{  sp   € Ø× Ñ ¤×!7Ñ!7¸Õ>Ø×Ñ¤× 0Ñ 0°$·+±+¸t¿z¹zÔJØ�M‰M˜$Ÿ+™+Ô&Ø�J‰J�vÔØ�M‰M˜$Ÿ*™*Ô%÷	 ?×>Ñ>ús   ¡A=B'Â'B0c                 ó|   ‡ — ‰ j                  d«       ‰ j                  ˆ fd„‰ j                  |j                  «       y )Nzimport c                  ó&   •— ‰ j                  d«      S rf  rg  r(  s   €r   ri  z(_Unparser.visit_Import.<locals>.<lambda>„  ó   ø€  §
¡
¨4Ô 0r   )rq  rb  r“  Únamesrˆ  s   ` r   Úvisit_Importz_Unparser.visit_Import‚  s(   ø€ Ø�	‰	�)ÔØ�‰Ó0°$·-±-ÀÇÁÕLr   c                 ó0  ‡ — ‰ j                  d«       ‰ j                  d|j                  xs dz  «       |j                  r‰ j                  |j                  «       ‰ j                  d«       ‰ j	                  ˆ fd„‰ j
                  |j                  «       y )Nzfrom Ú.r   z import c                  ó&   •— ‰ j                  d«      S rf  rg  r(  s   €r   ri  z,_Unparser.visit_ImportFrom.<locals>.<lambda>Œ  r®  r   )rq  rh  rj   Úmodulerb  r“  r¯  rˆ  s   ` r   Úvisit_ImportFromz_Unparser.visit_ImportFrom†  sd   ø€ Ø�	‰	�'ÔØ�
‰
�3˜$Ÿ*™*š/¨Ñ*Ô+Ø�;Š;Ø�J‰J�t—{‘{Ô#Ø�
‰
�:ÔØ�‰Ó0°$·-±-ÀÇÁÕLr   c                 óJ  — | j                  «        |j                  D ]D  }| j                  t        j                  |«       | j                  |«       | j                  d«       ŒF | j                  |j                  «       | j                  |«      x}r| j                  |«       y y )Nú = )	rq  Útargetsr‹  r9  r>  r“  rh  r-   r‘  )rÈ   r%   rª  r�  s       r   Úvisit_Assignz_Unparser.visit_AssignŽ  s€   € Ø�	‰	ŒØ—l”lˆFØ×Ñ¤× 1Ñ 1°6Ô:Ø�M‰M˜&Ô!Ø�J‰J�uÕð #ð 	�‰�d—j‘jÔ!Ø×0Ñ0°Ó6Ð6ˆ<Ð6Ø�J‰J�|Õ$ð 7r   c                 ó  — | j                  «        | j                  |j                  «       | j                  d| j                  |j
                  j                  j                     z   dz   «       | j                  |j                  «       y )Nr~   z= )	rq  r“  rª  rh  Úbinopr4   rr   rs   r-   rˆ  s     r   Úvisit_AugAssignz_Unparser.visit_AugAssign˜  sZ   € Ø�	‰	ŒØ�‰�d—k‘kÔ"Ø�
‰
�3˜Ÿ™ D§G¡G×$5Ñ$5×$>Ñ$>Ñ?Ñ?À$ÑFÔGØ�‰�d—j‘jÕ!r   c                 óÂ  — | j                  «        | j                  dd|j                   xr t        |j                  t
        «      «      5  | j                  |j                  «       d d d «       | j                  d«       | j                  |j                  «       |j                  r-| j                  d«       | j                  |j                  «       y y # 1 sw Y   ŒoxY w)Nra   rb   r#   r·  )
rq  r‚  r{   r   rª  rC   r“  rh  Ú
annotationr-   rˆ  s     r   Úvisit_AnnAssignz_Unparser.visit_AnnAssignž  s–   € Ø�	‰	ŒØ�_‰_˜S #¨4¯;©; Ò'X¼:ÀdÇkÁkÔSWÓ;XÕYØ�M‰M˜$Ÿ+™+Ô&÷ Zà�
‰
�4ÔØ�‰�d—o‘oÔ&Ø�:Š:Ø�J‰J�uÔØ�M‰M˜$Ÿ*™*Õ%ð ÷	 ZÐYús   ÁCÃCc                 ó˜   — | j                  d«       |j                  r-| j                  d«       | j                  |j                  «       y y )NÚreturnr~   )rq  r-   rh  r“  rˆ  s     r   Úvisit_Returnz_Unparser.visit_Return¨  s5   € Ø�	‰	�(ÔØ�:Š:Ø�J‰J�sŒOØ�M‰M˜$Ÿ*™*Õ%ð r   c                 ó&   — | j                  d«       y )NÚpass©rq  rˆ  s     r   Ú
visit_Passz_Unparser.visit_Pass®  s   € Ø�	‰	�&Õr   c                 ó&   — | j                  d«       y )NÚbreakrÅ  rˆ  s     r   Úvisit_Breakz_Unparser.visit_Break±  s   € Ø�	‰	�'Õr   c                 ó&   — | j                  d«       y )NÚcontinuerÅ  rˆ  s     r   Úvisit_Continuez_Unparser.visit_Continue´  s   € Ø�	‰	�*Õr   c                 ó|   ‡ — ‰ j                  d«       ‰ j                  ˆ fd„‰ j                  |j                  «       y )Nzdel c                  ó&   •— ‰ j                  d«      S rf  rg  r(  s   €r   ri  z(_Unparser.visit_Delete.<locals>.<lambda>¹  r®  r   )rq  rb  r“  r¸  rˆ  s   ` r   Úvisit_Deletez_Unparser.visit_Delete·  s(   ø€ Ø�	‰	�&ÔØ�‰Ó0°$·-±-ÀÇÁÕNr   c                 óÎ   — | j                  d«       | j                  |j                  «       |j                  r-| j	                  d«       | j                  |j                  «       y y )Nzassert r_   )rq  r“  Útestr&   rh  rˆ  s     r   Úvisit_Assertz_Unparser.visit_Assert»  sF   € Ø�	‰	�)ÔØ�‰�d—i‘iÔ Ø�8Š8Ø�J‰J�tÔØ�M‰M˜$Ÿ(™(Õ#ð r   c                 ó|   ‡ — ‰ j                  d«       ‰ j                  ˆ fd„‰ j                  |j                  «       y )Nzglobal c                  ó&   •— ‰ j                  d«      S rf  rg  r(  s   €r   ri  z(_Unparser.visit_Global.<locals>.<lambda>Ä  r®  r   ©rq  rb  rh  r¯  rˆ  s   ` r   Úvisit_Globalz_Unparser.visit_GlobalÂ  s(   ø€ Ø�	‰	�)ÔØ�‰Ó0°$·*±*¸d¿j¹jÕIr   c                 ó|   ‡ — ‰ j                  d«       ‰ j                  ˆ fd„‰ j                  |j                  «       y )Nz	nonlocal c                  ó&   •— ‰ j                  d«      S rf  rg  r(  s   €r   ri  z*_Unparser.visit_Nonlocal.<locals>.<lambda>È  r®  r   rÕ  rˆ  s   ` r   Úvisit_Nonlocalz_Unparser.visit_NonlocalÆ  s(   ø€ Ø�	‰	�+ÔØ�‰Ó0°$·*±*¸d¿j¹jÕIr   c                 óT  — | j                  t        j                  |«      5  | j                  d«       |j                  rV| j                  d«       | j                  t        j                  |j                  «       | j                  |j                  «       d d d «       y # 1 sw Y   y xY w)NÚawaitr~   )r†  r9  rN  rh  r-   r‹  rO  r“  rˆ  s     r   Úvisit_Awaitz_Unparser.visit_AwaitÊ  ól   € Ø× Ñ ¤×!2Ñ!2°DÕ9Ø�J‰J�wÔØ�zŠzØ—
‘
˜3”Ø×#Ñ#¤K×$4Ñ$4°d·j±jÔAØ—‘˜dŸj™jÔ)÷ :×9Ñ9úó   ¡A4BÂB'c                 óT  — | j                  t        j                  |«      5  | j                  d«       |j                  rV| j                  d«       | j                  t        j                  |j                  «       | j                  |j                  «       d d d «       y # 1 sw Y   y xY w)NÚyieldr~   )r†  r9  r?  rh  r-   r‹  rO  r“  rˆ  s     r   Úvisit_Yieldz_Unparser.visit_YieldÒ  rÝ  rÞ  c                 óH  — | j                  t        j                  |«      5  | j                  d«       |j                  st        d«      ‚| j                  t        j                  |j                  «       | j                  |j                  «       d d d «       y # 1 sw Y   y xY w)Nzyield from z-Node can't be used without a value attribute.)	r†  r9  r?  rh  r-   r   r‹  rO  r“  rˆ  s     r   Úvisit_YieldFromz_Unparser.visit_YieldFromÚ  sm   € Ø× Ñ ¤×!2Ñ!2°DÕ9Ø�J‰J�}Ô%Ø—:’:Ü Ð!PÓQÐQØ×Ñ¤× 0Ñ 0°$·*±*Ô=Ø�M‰M˜$Ÿ*™*Ô%÷ :×9Ñ9ús   ¡A.BÂB!c                 ó8  — | j                  d«       |j                  s|j                  rt        d«      ‚y | j	                  d«       | j                  |j                  «       |j                  r-| j	                  d«       | j                  |j                  «       y y )NÚraisez*Node can't use cause without an exception.r~   z from )rq  ÚexcÚcauser   rh  r“  rˆ  s     r   Úvisit_Raisez_Unparser.visit_Raiseâ  sn   € Ø�	‰	�'ÔØ�xŠxØ�zŠzÜ Ð#MÓOÐOØØ�
‰
�3ŒØ�‰�d—h‘hÔØ�:Š:Ø�J‰J�xÔ Ø�M‰M˜$Ÿ*™*Õ%ð r   c                 ó`  — | j                  d«       | j                  «       5  | j                  |j                  «       d d d «       |j                  D ]  }| j                  |«       Œ |j
                  rE| j                  d«       | j                  «       5  | j                  |j
                  «       d d d «       |j                  rF| j                  d«       | j                  «       5  | j                  |j                  «       d d d «       y y # 1 sw Y   ŒÏxY w# 1 sw Y   ŒhxY w# 1 sw Y   y xY w)NÚtryÚelseÚfinally)rq  r{  r“  rV   ÚhandlersÚorelseÚ	finalbody)rÈ   r%   Úexs      r   Údo_visit_tryz_Unparser.do_visit_tryî  sÇ   € Ø�	‰	�%ÔØ�Z‰Z�\Ø�M‰M˜$Ÿ)™)Ô$÷ à—-”-ˆBØ�M‰M˜"Õð  à�;Š;Ø�I‰I�fÔØ—‘•Ø—‘˜dŸk™kÔ*÷ à�>Š>Ø�I‰I�iÔ Ø—‘•Ø—‘˜dŸn™nÔ-÷ �ð ÷ ˆ\ú÷ �ú÷ �ús#   ¢DÂDÃ&D$ÄDÄD!Ä$D-c                 ót   — | j                   }	 d| _         | j                  |«       || _         y # || _         w xY w)NF©r[  rñ  ©rÈ   r%   Úprev_in_try_stars      r   Ú	visit_Tryz_Unparser.visit_Tryý  s;   € Ø×,Ñ,Ðð	1Ø %ˆDÔØ×Ñ˜dÔ#à 0ˆDÕøÐ 0ˆDÕúó   Ž. ®	7c                 ót   — | j                   }	 d| _         | j                  |«       || _         y # || _         w xY w)NTró  rô  s      r   Úvisit_TryStarz_Unparser.visit_TryStar  s;   € Ø×,Ñ,Ðð	1Ø $ˆDÔØ×Ñ˜dÔ#à 0ˆDÕøÐ 0ˆDÕúr÷  c                 ó¢  — | j                  | j                  rdnd«       |j                  r,| j                  d«       | j	                  |j                  «       |j
                  r,| j                  d«       | j                  |j
                  «       | j                  «       5  | j	                  |j                  «       d d d «       y # 1 sw Y   y xY w)Nzexcept*Úexceptr~   ú as )rq  r[  r,   rh  r“  rz   r{  rV   rˆ  s     r   Úvisit_ExceptHandlerz_Unparser.visit_ExceptHandler  s€   € Ø�	‰	˜t×0Ò0‘)°hÔ?Ø�9Š9Ø�J‰J�sŒOØ�M‰M˜$Ÿ)™)Ô$Ø�9Š9Ø�J‰J�vÔØ�J‰J�t—y‘yÔ!Ø�Z‰Z�\Ø�M‰M˜$Ÿ)™)Ô$÷ �\‰\ús   Â CÃCc                 óè  — | j                  «        |j                  D ]$  }| j                  d«       | j                  |«       Œ& | j                  d|j                  z   «       t        |d«      r| j                  |j                  «       | j                  dd|j                  xs |j                  ¬«      5  d}|j                  D ])  }|r| j                  d«       nd	}| j                  |«       Œ+ |j                  D ])  }|r| j                  d«       nd	}| j                  |«       Œ+ 	 d d d «       | j                  «       5  | j                  |«       d d d «       y # 1 sw Y   Œ4xY w# 1 sw Y   y xY w)
NÚ@zclass Útype_paramsra   rb   )r�  Fr_   T)rn  Údecorator_listrq  r“  rz   r†   Ú_type_params_helperr   r‚  ÚbasesrF   rh  r{  r™  )rÈ   r%   ÚdecoÚcommaÚes        r   Úvisit_ClassDefz_Unparser.visit_ClassDef  s$  € Ø×ÑÔØ×'Ô'ˆDØ�I‰I�cŒNØ�M‰M˜$Õð (ð 	�	‰	�(˜TŸY™YÑ&Ô'Ü�4˜Ô'Ø×$Ñ$ T×%5Ñ%5Ô6Ø�_‰_˜S #°4·:±:Ò3NÀÇÁˆ_ÕOØˆEØ—Z”Z�ÙØ—J‘J˜tÕ$à �EØ—‘˜aÕ ð  ð —]”]�ÙØ—J‘J˜tÕ$à �EØ—‘˜aÕ ñ #÷ Pð �Z‰Z�\Ø×3Ñ3°DÔ9÷ ˆ\÷ PÐOú÷ ˆ\ús   Â5A3EÅE(ÅE%Å(E1c                 ó(   — | j                  |d«       y )NÚdef©Ú_function_helperrˆ  s     r   Úvisit_FunctionDefz_Unparser.visit_FunctionDef2  s   € Ø×Ñ˜d EÕ*r   c                 ó(   — | j                  |d«       y )Nz	async defr
  rˆ  s     r   Úvisit_AsyncFunctionDefz _Unparser.visit_AsyncFunctionDef5  s   € Ø×Ñ˜d KÕ0r   c                 ó   — | j                  «        |j                  D ]$  }| j                  d«       | j                  |«       Œ& |dz   |j                  z   }| j                  |«       t        |d«      r| j                  |j                  «       | j                  dd«      5  | j                  |j                  «       d d d «       |j                  r,| j                  d«       | j                  |j                  «       | j                  | j                  |«      ¬«      5  | j                  |«       d d d «       y # 1 sw Y   Œ}xY w# 1 sw Y   y xY w)Nrÿ  r~   r   ra   rb   r£  rw  )rn  r  rq  r“  rz   r†   r  r   r  rE   r¥  rh  r{  r‘  r™  )rÈ   r%   Úfill_suffixr  Údef_strs        r   r  z_Unparser._function_helper8  sû   € Ø×ÑÔØ×'Ô'ˆDØ�I‰I�cŒNØ�M‰M˜$Õð (ð  Ñ# d§i¡iÑ/ˆØ�	‰	�'ÔÜ�4˜Ô'Ø×$Ñ$ T×%5Ñ%5Ô6Ø�\‰\˜#˜sÕ#Ø�M‰M˜$Ÿ)™)Ô$÷ $à�<Š<Ø�J‰J�vÔØ�M‰M˜$Ÿ,™,Ô'Ø�Z‰Z˜d×3Ñ3°DÓ9ˆZÕ:Ø×3Ñ3°DÔ9÷ ;Ð:÷ $Ð#ú÷
 ;Ð:ús   Â D8ÄEÄ8EÅEc                 ó¸   ‡ — |�Kt        |«      dkD  r<‰ j                  dd«      5  ‰ j                  ˆ fd„‰ j                  |«       d d d «       y y y # 1 sw Y   y xY w)Nr   rc   rl   c                  ó&   •— ‰ j                  d«      S rf  rg  r(  s   €r   ri  z/_Unparser._type_params_helper.<locals>.<lambda>L  ó   ø€ ¨¯
©
°4Ô(8r   )rH   r  rb  r“  )rÈ   r   s   ` r   r  z_Unparser._type_params_helperI  sO   ø€ ØÐ"¤s¨;Ó'7¸!Ò';Ø—‘˜c 3Õ'Ø—‘Ó 8¸$¿-¹-ÈÔU÷ (Ð'ð (<Ð"ß'Ð'ús   ¤!AÁAc                 ó¬   — | j                  |j                  «       |j                  r-| j                  d«       | j                  |j                  «       y y ©Nr#   )rh  rz   Úboundr“  rˆ  s     r   Úvisit_TypeVarz_Unparser.visit_TypeVarN  s:   € Ø�
‰
�4—9‘9ÔØ�:Š:Ø�J‰J�tÔØ�M‰M˜$Ÿ*™*Õ%ð r   c                 ó@   — | j                  d|j                  z   «       y ©Nr   ©rh  rz   rˆ  s     r   Úvisit_TypeVarTuplez_Unparser.visit_TypeVarTupleT  s   € Ø�
‰
�3˜Ÿ™‘?Õ#r   c                 ó@   — | j                  d|j                  z   «       y ©Nú**r  rˆ  s     r   Úvisit_ParamSpecz_Unparser.visit_ParamSpecW  s   € Ø�
‰
�4˜$Ÿ)™)Ñ#Õ$r   c                 óê   — | j                  d«       | j                  |j                  «       | j                  |j                  «       | j                  d«       | j                  |j                  «       y )Nztype r·  )rq  r“  rz   r  r   rh  r-   rˆ  s     r   Úvisit_TypeAliasz_Unparser.visit_TypeAliasZ  sN   € Ø�	‰	�'ÔØ�‰�d—i‘iÔ Ø× Ñ  ×!1Ñ!1Ô2Ø�
‰
�5ÔØ�‰�d—j‘jÕ!r   c                 ó(   — | j                  d|«       y )Nzfor ©Ú_for_helperrˆ  s     r   Ú	visit_Forz_Unparser.visit_Fora  s   € Ø×Ñ˜ Õ&r   c                 ó(   — | j                  d|«       y )Nz
async for r$  rˆ  s     r   Úvisit_AsyncForz_Unparser.visit_AsyncFord  s   € Ø×Ñ˜ tÕ,r   c                 óf  — | j                  |«       | j                  t        j                  |j                  «       | j                  |j                  «       | j                  d«       | j                  |j                  «       | j                  | j                  |«      ¬«      5  | j                  |j                  «       d d d «       |j                  rF| j                  d«       | j                  «       5  | j                  |j                  «       d d d «       y y # 1 sw Y   Œ\xY w# 1 sw Y   y xY w)Nú in rw  rë  )rq  r‹  r9  r>  rª  r“  rh  r]  r{  r‘  rV   rî  )rÈ   rq  r%   s      r   r%  z_Unparser._for_helperg  sÊ   € Ø�	‰	�$ŒØ×ÑœK×-Ñ-¨t¯{©{Ô;Ø�‰�d—k‘kÔ"Ø�
‰
�6ÔØ�‰�d—i‘iÔ Ø�Z‰Z˜d×3Ñ3°DÓ9ˆZÕ:Ø�M‰M˜$Ÿ)™)Ô$÷ ;à�;Š;Ø�I‰I�fÔØ—‘•Ø—‘˜dŸk™kÔ*÷ �ð ÷ ;Ð:ú÷ �ús   Â$DÃ5D'ÄD$Ä'D0c                 ó–  — | j                  d«       | j                  |j                  «       | j                  «       5  | j                  |j                  «       d d d «       |j
                  ræt        |j
                  «      dk(  rÎt        |j
                  d   t        «      r±|j
                  d   }| j                  d«       | j                  |j                  «       | j                  «       5  | j                  |j                  «       d d d «       |j
                  r6t        |j
                  «      dk(  rt        |j
                  d   t        «      rŒ±|j
                  rF| j                  d«       | j                  «       5  | j                  |j
                  «       d d d «       y y # 1 sw Y   �ŒOxY w# 1 sw Y   Œ«xY w# 1 sw Y   y xY w)Nzif r\   r   zelif rë  )	rq  r“  rÑ  r{  rV   rî  rH   r   ÚIfrˆ  s     r   Úvisit_Ifz_Unparser.visit_Ift  s+  € Ø�	‰	�%ÔØ�‰�d—i‘iÔ Ø�Z‰Z�\Ø�M‰M˜$Ÿ)™)Ô$÷ ð �kŠkœc $§+¡+Ó.°!Ò3¼
À4Ç;Á;ÈqÁ>ÔSUÔ8VØ—;‘;˜q‘>ˆDØ�I‰I�gÔØ�M‰M˜$Ÿ)™)Ô$Ø—‘•Ø—‘˜dŸi™iÔ(÷ ð	 �kŠkœc $§+¡+Ó.°!Ò3¼
À4Ç;Á;ÈqÁ>ÔSUÕ8Vð �;Š;Ø�I‰I�fÔØ—‘•Ø—‘˜dŸk™kÔ*÷ �ð ÷ ‰\ú÷ �ú÷
 �ús#   ½F&Ã-F3Æ F?Æ&F0Æ3F<Æ?Gc                 ó˜  — | j                  d«       | j                  |j                  «       | j                  «       5  | j                  |j                  «       d d d «       |j
                  rF| j                  d«       | j                  «       5  | j                  |j
                  «       d d d «       y y # 1 sw Y   Œ\xY w# 1 sw Y   y xY w)Nzwhile rë  )rq  r“  rÑ  r{  rV   rî  rˆ  s     r   Úvisit_Whilez_Unparser.visit_While†  s„   € Ø�	‰	�(ÔØ�‰�d—i‘iÔ Ø�Z‰Z�\Ø�M‰M˜$Ÿ)™)Ô$÷ à�;Š;Ø�I‰I�fÔØ—‘•Ø—‘˜dŸk™kÔ*÷ �ð ÷ ˆ\ú÷ �ús   ½B4ÂC Â4B=Ã C	c                 ó  ‡ — ‰ j                  d«       ‰ j                  ˆ fd„‰ j                  |j                  «       ‰ j	                  ‰ j                  |«      ¬«      5  ‰ j                  |j                  «       d d d «       y # 1 sw Y   y xY w)Nzwith c                  ó&   •— ‰ j                  d«      S rf  rg  r(  s   €r   ri  z&_Unparser.visit_With.<locals>.<lambda>’  r®  r   rw  ©rq  rb  r“  rÑ   r{  r‘  rV   rˆ  s   ` r   Ú
visit_Withz_Unparser.visit_With�  s]   ø€ Ø�	‰	�'ÔØ�‰Ó0°$·-±-ÀÇÁÔLØ�Z‰Z˜d×3Ñ3°DÓ9ˆZÕ:Ø�M‰M˜$Ÿ)™)Ô$÷ ;×:Ñ:úó   ÁBÂBc                 ó  ‡ — ‰ j                  d«       ‰ j                  ˆ fd„‰ j                  |j                  «       ‰ j	                  ‰ j                  |«      ¬«      5  ‰ j                  |j                  «       d d d «       y # 1 sw Y   y xY w)Nzasync with c                  ó&   •— ‰ j                  d«      S rf  rg  r(  s   €r   ri  z+_Unparser.visit_AsyncWith.<locals>.<lambda>˜  r®  r   rw  r2  rˆ  s   ` r   Úvisit_AsyncWithz_Unparser.visit_AsyncWith–  s]   ø€ Ø�	‰	�-Ô Ø�‰Ó0°$·-±-ÀÇÁÔLØ�Z‰Z˜d×3Ñ3°DÓ9ˆZÕ:Ø�M‰M˜$Ÿ)™)Ô$÷ ;×:Ñ:úr4  ©Úquote_typesÚescape_special_whitespacec                ó®  ‡‡‡— ˆfd„}dj                  t        |‰«      «      Š|}d‰v r|D �cg c]  }|t        v sŒ|‘Œ }}|D �cg c]	  }|‰vsŒ|‘Œ }}|s+t        ‰«      Št	        ˆfd„|D «       ‰d   «      }‰dd |gfS ‰rD|j                  ˆfd„¬	«       |d   d   ‰d   k(  r!t        |d   «      d
k(  sJ ‚‰dd dz   ‰d   z   Š‰|fS c c}w c c}w )z‹Helper for writing string literals, minimizing escapes.
        Returns the tuple (string literal to write, possible quote types).
        c                 ó‚   •— ‰s| dv r| S | dk(  s| j                  «       s | j                  d«      j                  d«      S | S )Nz
	Ú\Úunicode_escapeÚascii)Úisprintabler¶   r·   )r²   r:  s    €r   Úescape_charz2_Unparser._str_literal_helper.<locals>.escape_char¢  sB   ø€ ñ -°°f±Ø�à�DŠy §¡¤Ø—x‘xÐ 0Ó1×8Ñ8¸ÓAÐAØˆHr   r^   r]   c              3   ó2   •K  — | ]  }‰d    |v sŒ|–— Œ y­wre   rf   )rg   ÚqÚstrings     €r   rk   z0_Unparser._str_literal_helper.<locals>.<genexpr>¶  s   øè ø€ ÐC¡[ °F¸1±IÀ²Nœ!¡[ùs   ƒ�r   r\   r   c                 ó   •— | d   ‰d   k(  S )Nr   r   rf   )rC  Úescaped_strings    €r   ri  z/_Unparser._str_literal_helper.<locals>.<lambda>º  s   ø€ ¨q°©t°~ÀbÑ7IÒ/Ir   )r  r   Nr=  )rt   r<   Ú_MULTI_QUOTESru   r<  ÚsortrH   )	rÈ   rD  r9  r:  rA  Úpossible_quotesrC  ÚquoterF  s	    ` `    @r   Ú_str_literal_helperz_Unparser._str_literal_helperœ  s  ú€ ô	ð Ÿ™¤ [°&Ó!9Ó:ˆØ%ˆØ�>Ñ!Ù*9ÓP©/ Q¸QÄ-Ò=Ošq¨/ˆOÐPÙ&5ÓQ¡o ¸À.Ò9Pš1 oˆÐQÙô ˜&“\ˆFÜÓC¡[ÓCÀVÈAÁYÓOˆEØ˜!˜B�< % Ð(Ð(Ùà× Ñ Ó%IÐ ÔJð ˜qÑ! !Ñ$¨°rÑ(:Ò:Ü˜?¨1Ñ-Ó.°!Ò3Ð3Ð3Ø!/°°Ð!4°tÑ!;¸nÈRÑ>PÑ!P�Ø˜Ð.Ð.ùò# QùÚQs   ®C¼CÁ	CÁC©r9  c                óh   — | j                  ||¬«      \  }}|d   }| j                  |› |› |› �«       y)zKWrite string literal value with a best effort attempt to avoid backslashes.rL  r   N)rK  rh  )rÈ   rD  r9  Ú
quote_types       r   Ú_write_str_avoiding_backslashesz)_Unparser._write_str_avoiding_backslashesÂ  s>   € à"×6Ñ6°vÈ;Ð6ÓWÑˆ�Ø  ‘^ˆ
Ø�
‰
�j�\ & ¨*¨Ð6Õ7r   c                 óª  — | j                  d«       g }|j                  D ]\  }| j                  «       5 }| j                  |«       d d d «       |j	                  dj                  «      t        |t        «      f«       Œ^ g }t        t        «      }d}|D ]ˆ  \  }}|r8| j                  ||d¬«      \  }}	t        |	«      j                  |«      rd} nN|	}n8d|v r|D �
cg c]  }
|
t        v sŒ|
‘Œ }}
|sJ ‚|D �
cg c]	  }
|
|vsŒ|
‘Œ }	}
|	r|	}|j	                  |«       ŒŠ |rodg}|j                  «        |D ]W  \  }}|r?t        d|z   «      }d	}|j!                  |«      sJ t        |«      «       ‚|t#        |«      d
 }|j	                  |«       ŒY dj                  |«      }|d   }| j                  |› |› |› �«       y # 1 sw Y   �Œ{xY wc c}
w c c}
w )Nr`  r^   FTr8  r]   rR  rQ  z'"r   r   )rh  rJ   rv  Ú_write_fstring_innerrp   rt   r   r+   r?   Ú_ALL_QUOTESrK  r:   Ú
isdisjointrG  rž  ru   r‡   rH   )rÈ   r%   Úfstring_partsr-   rt  Únew_fstring_partsr9  Úfallback_to_reprÚis_constantÚnew_quote_typesrC  Úexpected_prefixrN  s                r   Úvisit_JoinedStrz_Unparser.visit_JoinedStrÈ  sð  € Ø�
‰
�3ŒàˆØ—[”[ˆEØ—‘” FØ×)Ñ)¨%Ô0÷ !à× Ñ Ø—‘˜“¤*¨U´HÓ"=Ð>õð !ð ÐÜœ;Ó'ˆØ ÐÛ"/ÑˆE�;ÙØ)-×)AÑ)AØØ +Ø.2ð *Bó *Ñ&��ô
 �Ó'×2Ñ2°;Ô?Ø'+Ð$ÙØ-‘à˜5‘=Ù.9Ó"P©k¨¸QÄ-Ò=O¢1¨k�KÐ"PÙ&Ð&˜;á.9Ó"L©k¨¸QÀeº^¢1¨k�Ð"LÙ"Ø"1�KØ×$Ñ$ UÕ+ð' #0ñ* ð !˜'ˆKØ×#Ñ#Ô%Û&3Ñ"��{ÙÜ   u¡Ó-�EØ&+�OØ ×+Ñ+¨OÔ<ÐI¼dÀ5»kÓIÐ<Ø!¤# oÓ"6°rÐ:�EØ!×(Ñ(¨Õ/ð '4ð —‘Ð)Ó*ˆØ  ‘^ˆ
Ø�
‰
�j�\ % ¨¨Ð5Õ6÷[ !‘üò, #Qùò #Ms#   ³F>ÃGÃ*GÃ8	GÄGÆ>G	c                 ó0  — t        |t        «      r%|j                  D ]  }| j                  ||¬«       Œ y t        |t        «      r¢t        |j
                  t        «      rˆ|j
                  j                  dd«      j                  dd«      }|rH|j                  dd«      }|j                  dd	«      }|j                  d
d«      }|j                  dd«      }| j                  |«       y t        |t        «      r| j                  |«       y t        d|›�«      ‚)N©Úis_format_specÚ{z{{Ú}z}}r=  z\\rP  z\'rQ  z\"r]   z\nz"Unexpected node inside JoinedStr, )r   Ú	JoinedStrrJ   rQ  r+   r-   rS   Úreplacerh  ÚFormattedValueÚvisit_FormattedValuer   )rÈ   r%   r]  r-   s       r   rQ  z_Unparser._write_fstring_innerü  sá   € Ü�dœIÔ&àŸœ�Ø×)Ñ)¨%ÀÐ)ÕOñ %ä˜œhÔ'¬J°t·z±zÄ3Ô,GØ—J‘J×&Ñ& s¨DÓ1×9Ñ9¸#¸tÓDˆEáØŸ™ d¨FÓ3�ØŸ™ c¨5Ó1�ØŸ™ c¨5Ó1�ØŸ™ d¨EÓ2�Ø�J‰J�uÕÜ˜œnÔ-Ø×%Ñ% dÕ+äÐAÀ$ÀÐJÓKÐKr   c                 óÈ  ‡ — ˆ fd„}‰ j                  dd«      5   ||j                  «      }|j                  d«      r‰ j                  d«       ‰ j                  |«       |j                  dk7  r'‰ j                  dt        |j                  «      › �«       |j                  r.‰ j                  d«       ‰ j                  |j                  d¬	«       d d d «       y # 1 sw Y   y xY w)
Nc                 ó¢   •—  t        ‰«      «       }|j                  t        j                  j	                  «       | «       |j                  | «      S r*   )r,   r‹  r9  r@  r<  rË   )ÚinnerÚunparserrÈ   s     €r   Úunparse_innerz5_Unparser.visit_FormattedValue.<locals>.unparse_inner  s>   ø€ Ø!”t˜D“z“|ˆHØ×#Ñ#¤K×$4Ñ$4×$9Ñ$9Ó$;¸UÔCØ—>‘> %Ó(Ð(r   r^  r_  r~   r   Ú!rz  Tr\  )r  r-   r‡   rh  Ú
conversionÚchrÚformat_specrQ  )rÈ   r%   rh  Úexprs   `   r   rc  z_Unparser.visit_FormattedValue  s«   ø€ ô	)ð
 �\‰\˜#˜sÕ#Ù  §¡Ó,ˆDØ�‰˜sÔ#à—
‘
˜3”Ø�J‰J�tÔØ�‰ "Ò$Ø—
‘
˜Qœs 4§?¡?Ó3Ð4Ð5Ô6Ø×ÒØ—
‘
˜3”Ø×)Ñ)¨$×*:Ñ*:È4Ð)ÔP÷ $×#Ñ#ús   ™B6CÃC!c                 ó:   — | j                  |j                  «       y r*   )rh  rD   rˆ  s     r   Ú
visit_Namez_Unparser.visit_Name!  s   € Ø�
‰
�4—7‘7Õr   c                 ó¦   — | j                  «        |j                  dk(  r| j                  d«       | j                  |j                  t
        ¬«       y )NÚurL  )rq  Úkindrh  rO  r-   rG  rˆ  s     r   r—  z_Unparser._write_docstring$  s9   € Ø�	‰	ŒØ�9‰9˜ÒØ�J‰J�sŒOØ×,Ñ,¨T¯Z©ZÄ]Ð,ÕSr   c           
      ó\  — t        |t        t        f«      rN| j                  t	        |«      j                  dt        «      j                  ddt        › dt        › d�«      «       y | j                  r"t        |t        «      r| j                  |«       y | j                  t	        |«      «       y )NÚinfÚnanra   Ú-rb   )
r   r/   r0   rh  ru   ra  Ú_INFSTRrU  rS   rO  r+  s     r   Ú_write_constantz_Unparser._write_constant*  s   € Ü�eœe¤WÐ-Ô.ð �J‰JÜ�U“ß‘˜¤Ó(ß‘˜ !¤G 9¨A¬g¨Y°aÐ 8Ó9õð
 ×$Ò$¬°E¼3Ô)?Ø×0Ñ0°Õ7à�J‰J”t˜E“{Õ#r   c                 óf  — |j                   }t        |t        «      r8| j                  dd«      5  | j	                  | j
                  |«       d d d «       y |du r| j                  d«       y |j                  dk(  r| j                  d«       | j                  |j                   «       y # 1 sw Y   y xY w)Nra   rb   .ú...rq  )r-   r   r   r  rl  rx  rh  rr  )rÈ   r%   r-   s      r   rÖ   z_Unparser.visit_Constant8  s„   € Ø—
‘
ˆÜ�eœUÔ#Ø—‘˜c 3Õ'Ø—‘ × 4Ñ 4°eÔ<÷ (Ð'à�c‰\Ø�J‰J�uÕà�y‰y˜CÒØ—
‘
˜3”Ø× Ñ  §¡Õ,÷ (Ð'ús   ¯B'Â'B0c                 ó¨   ‡ — ‰ j                  dd«      5  ‰ j                  ˆ fd„‰ j                  |j                  «       d d d «       y # 1 sw Y   y xY w)Nrc   rl   c                  ó&   •— ‰ j                  d«      S rf  rg  r(  s   €r   ri  z&_Unparser.visit_List.<locals>.<lambda>F  rj  r   )r  rb  r“  r=   rˆ  s   ` r   Ú
visit_Listz_Unparser.visit_ListD  s6   ø€ Ø�\‰\˜#˜sÕ#Ø�O‰OÓ4°d·m±mÀTÇYÁYÔO÷ $×#Ñ#úó   ”+AÁAc                 óÎ   — | j                  dd«      5  | j                  |j                  «       |j                  D ]  }| j                  |«       Œ 	 d d d «       y # 1 sw Y   y xY w)Nrc   rl   ©r  r“  ÚeltÚ
generators©rÈ   r%   Úgens      r   Úvisit_ListCompz_Unparser.visit_ListCompH  óF   € Ø�\‰\˜#˜sÕ#Ø�M‰M˜$Ÿ(™(Ô#Ø—”�Ø—‘˜cÕ"ñ '÷ $×#Ñ#úó   “>AÁA$c                 óÎ   — | j                  dd«      5  | j                  |j                  «       |j                  D ]  }| j                  |«       Œ 	 d d d «       y # 1 sw Y   y xY w)Nra   rb   r€  rƒ  s      r   Úvisit_GeneratorExpz_Unparser.visit_GeneratorExpN  r†  r‡  c                 óÎ   — | j                  dd«      5  | j                  |j                  «       |j                  D ]  }| j                  |«       Œ 	 d d d «       y # 1 sw Y   y xY w)Nr^  r_  r€  rƒ  s      r   Úvisit_SetCompz_Unparser.visit_SetCompT  r†  r‡  c                 ó&  — | j                  dd«      5  | j                  |j                  «       | j                  d«       | j                  |j                  «       |j
                  D ]  }| j                  |«       Œ 	 d d d «       y # 1 sw Y   y xY w)Nr^  r_  r#   )r  r“  r  rh  r-   r‚  rƒ  s      r   Úvisit_DictCompz_Unparser.visit_DictCompZ  sb   € Ø�\‰\˜#˜sÕ#Ø�M‰M˜$Ÿ(™(Ô#Ø�J‰J�tÔØ�M‰M˜$Ÿ*™*Ô%Ø—”�Ø—‘˜cÕ"ñ '÷	 $×#Ñ#ús   “A*BÂBc                 ó2  — |j                   r| j                  d«       n| j                  d«       | j                  t        j                  |j
                  «       | j                  |j
                  «       | j                  d«        | j                  t        j                  j                  «       |j                  g|j                  ¢­Ž  | j                  |j                  «       |j                  D ]$  }| j                  d«       | j                  |«       Œ& y )Nz async for z for r*  ú if )Úis_asyncrh  r‹  r9  r>  rª  r“  r@  r<  r]  Úifs)rÈ   r%   Ú	if_clauses      r   Úvisit_comprehensionz_Unparser.visit_comprehensionb  s»   € Ø�=Š=Ø�J‰J�}Õ%à�J‰J�wÔØ×ÑœK×-Ñ-¨t¯{©{Ô;Ø�‰�d—k‘kÔ"Ø�
‰
�6ÔØˆ×ÑœK×,Ñ,×1Ñ1Ó3°T·Y±YÐJÀÇÁÓJØ�‰�d—i‘iÔ ØŸœˆIØ�J‰J�vÔØ�M‰M˜)Õ$ñ "r   c                 ó.  — | j                  t        j                  |«      5  | j                  t        j                  j	                  «       |j
                  |j                  «       | j                  |j
                  «       | j                  d«       | j                  |j                  «       | j                  d«       | j                  t        j                  |j                  «       | j                  |j                  «       d d d «       y # 1 sw Y   y xY w)Nr�  z else )
r†  r9  r@  r‹  r<  rV   rÑ  r“  rh  rî  rˆ  s     r   Úvisit_IfExpz_Unparser.visit_IfExpp  s¯   € Ø× Ñ ¤×!1Ñ!1°4Õ8Ø×Ñ¤× 0Ñ 0× 5Ñ 5Ó 7¸¿¹ÀDÇIÁIÔNØ�M‰M˜$Ÿ)™)Ô$Ø�J‰J�vÔØ�M‰M˜$Ÿ)™)Ô$Ø�J‰J�xÔ Ø×Ñ¤× 0Ñ 0°$·+±+Ô>Ø�M‰M˜$Ÿ+™+Ô&÷ 9×8Ñ8ús   ¡C!DÄDc                 óä   ‡ — |j                   rF‰ j                  dd«      5  ‰ j                  ˆ fd„‰ j                  |j                   «       d d d «       y ‰ j	                  d«       y # 1 sw Y   y xY w)Nr^  r_  c                  ó&   •— ‰ j                  d«      S rf  rg  r(  s   €r   ri  z%_Unparser.visit_Set.<locals>.<lambda>}  r  r   z{*()})r=   r  rb  r“  rh  rˆ  s   ` r   Ú	visit_Setz_Unparser.visit_Setz  sP   ø€ Ø�9Š9Ø—‘˜c 3Õ'Ø—‘Ó 8¸$¿-¹-ÈÏÉÔS÷ (Ð'ð
 �J‰J�wÕ÷ (Ð'ús    +A&Á&A/c           	      óÔ   ‡ ‡— ˆ fd„Šˆ ˆfd„}‰ j                  dd«      5  ‰ j                  ˆ fd„|t        |j                  |j                  «      «       d d d «       y # 1 sw Y   y xY w)Nc                 ól   •— ‰j                  | «       ‰j                  d«       ‰j                  |«       y r  ©r“  rh  )ÚkÚvrÈ   s     €r   Úwrite_key_value_pairz2_Unparser.visit_Dict.<locals>.write_key_value_pair„  s'   ø€ Ø�M‰M˜!ÔØ�J‰J�tÔØ�M‰M˜!Õr   c                 ó¬   •— | \  }}|€C‰j                  d«       ‰j                  t        j                  |«       ‰j	                  |«       y  ‰||«       y r  )rh  r‹  r9  rE  r“  )rœ   rœ  r�  rÈ   rž  s      €€r   Ú
write_itemz(_Unparser.visit_Dict.<locals>.write_item‰  sK   ø€ Ø‰DˆAˆqØˆyð —
‘
˜4Ô Ø×#Ñ#¤K×$4Ñ$4°aÔ8Ø—‘˜aÕ á$ Q¨Õ*r   r^  r_  c                  ó&   •— ‰ j                  d«      S rf  rg  r(  s   €r   ri  z&_Unparser.visit_Dict.<locals>.<lambda>–  r¢  r   )r  rb  rL   rI   rJ   )rÈ   r%   r   rž  s   `  @r   Ú
visit_Dictz_Unparser.visit_Dictƒ  sK   ù€ ô	õ
		+ð �\‰\˜#˜sÕ#Ø�O‰OÛ(¨*´c¸$¿)¹)ÀTÇ[Á[Ó6Qô÷ $×#Ñ#ús    5AÁA'c                 ó  — | j                  ddt        |j                  «      dk(  xs" | j                  |«      t        j
                  kD  «      5  | j                  | j                  |j                  «       d d d «       y # 1 sw Y   y xY w)Nra   rb   r   )r‚  rH   r=   r„  r9  r>  rl  r“  rˆ  s     r   Úvisit_Tuplez_Unparser.visit_Tuple™  sg   € Ø�_‰_ØØÜ�—	‘	‹N˜aÑÒP 4×#6Ñ#6°tÓ#<¼{×?PÑ?PÑ#Põ
ð
 �O‰O˜DŸM™M¨4¯9©9Ô5÷
÷ 
ñ 
ús   Á'A>Á>BÚ~ÚnotÚ+rv  )ÚInvertÚNotr5   r6   )r¦  r¥  r§  rv  c                 ó   — | j                   |j                  j                  j                     }| j                  |   }| j                  ||«      5  | j                  |«       |t        j                  ur| j                  d«       | j                  ||j                  «       | j                  |j                  «       d d d «       y # 1 sw Y   y xY w©Nr~   )Úunopr4   rr   rs   Úunop_precedencer†  rh  r9  rL  r‹  r7   r“  )rÈ   r%   ÚoperatorÚoperator_precedences       r   Úvisit_UnaryOpz_Unparser.visit_UnaryOp©  sš   € Ø—9‘9˜TŸW™W×.Ñ.×7Ñ7Ñ8ˆØ"×2Ñ2°8Ñ<ÐØ× Ñ Ð!4°dÕ;Ø�J‰J�xÔ ð #¬+×*<Ñ*<Ñ<Ø—
‘
˜3”Ø×ÑÐ 3°T·\±\ÔBØ�M‰M˜$Ÿ,™,Ô'÷ <×;Ñ;ús   ÁA,CÃCr   rÿ  Ú/Ú%ú<<ú>>Ú|Ú^Ú&ú//r  )rN   rO   ÚMultÚMatMultÚDivÚModÚLShiftÚRShiftÚBitOrÚBitXorÚBitAndÚFloorDivÚPow)r§  rv  r   rÿ  r±  r²  r³  r´  rµ  r¶  r·  r¸  r  )r  c                 ó6  — | j                   |j                  j                  j                     }| j                  |   }| j                  ||«      5  || j                  v r|j                  «       }|}n|}|j                  «       }| j                  ||j                  «       | j                  |j                  «       | j                  d|› d�«       | j                  ||j                  «       | j                  |j                  «       d d d «       y # 1 sw Y   y xY wr«  )r»  r4   rr   rs   Úbinop_precedencer†  Úbinop_rassocr<  r‹  rP   r“  rh  rQ   )rÈ   r%   r®  r¯  Úleft_precedenceÚright_precedences         r   Úvisit_BinOpz_Unparser.visit_BinOpÖ  sá   € Ø—:‘:˜dŸg™g×/Ñ/×8Ñ8Ñ9ˆØ"×3Ñ3°HÑ=ÐØ× Ñ Ð!4°dÕ;Ø˜4×,Ñ,Ñ,Ø"5×":Ñ":Ó"<�Ø#6Ñ à"5�Ø#6×#;Ñ#;Ó#=Ð à×Ñ °·±Ô;Ø�M‰M˜$Ÿ)™)Ô$Ø�J‰J˜˜8˜* A�Ô'Ø×ÑÐ 0°$·*±*Ô=Ø�M‰M˜$Ÿ*™*Ô%÷ <×;Ñ;ús   ÁB7DÄDz==z!=Ú<z<=Ú>z>=Úiszis notÚinznot in)
ÚEqÚNotEqÚLtÚLtEÚGtÚGtEÚIsÚIsNotÚInÚNotInc                 ó  — | j                  t        j                  |«      5   | j                  t        j                  j	                  «       |j
                  g|j                  ¢­Ž  | j                  |j
                  «       t        |j                  |j                  «      D ]N  \  }}| j                  d| j                  |j                  j                     z   dz   «       | j                  |«       ŒP 	 d d d «       y # 1 sw Y   y xY wr«  )r†  r9  rD  r‹  r<  rP   Úcomparatorsr“  rL   Úopsrh  Úcmpopsrr   rs   )rÈ   r%   Úor  s       r   Úvisit_Comparez_Unparser.visit_Compareô  s´   € Ø× Ñ ¤§¡°$Õ7ØˆD×Ñ¤§¡× 4Ñ 4Ó 6¸¿	¹	ÐUÀD×DTÑDTÓUØ�M‰M˜$Ÿ)™)Ô$Ü˜DŸH™H d×&6Ñ&6Ö7‘��1Ø—
‘
˜3 §¡¨Q¯[©[×-AÑ-AÑ!BÑBÀSÑHÔIØ—‘˜aÕ ñ 8÷ 8×7Ñ7ús   ¡CC<Ã<DÚandÚor)ÚAndÚOr)rÞ  rß  c                 ó*  ‡ ‡‡— ‰ j                   |j                  j                  j                     }‰ j                  |   Šˆˆ fd„}‰ j                  ‰|«      5  d|› d�Š‰ j                  ˆˆ fd„||j                  «       d d d «       y # 1 sw Y   y xY w)Nc                 ól   •— ‰j                  «       Š‰j                  ‰| «       ‰j                  | «       y r*   )r<  r‹  r“  )r%   r¯  rÈ   s    €€r   Úincreasing_level_traversez9_Unparser.visit_BoolOp.<locals>.increasing_level_traverse  s/   ø€ à"5×":Ñ":Ó"<ÐØ×ÑÐ 3°TÔ:Ø�M‰M˜$Õr   r~   c                  ó&   •— ‰j                  ‰ «      S r*   rg  )r  rÈ   s   €€r   ri  z(_Unparser.visit_BoolOp.<locals>.<lambda>  s   ø€  D§J¡J¨q¤Mr   )Úboolopsr4   rr   rs   Úboolop_precedencer†  rb  rJ   )rÈ   r%   r®  rä  r¯  r  s   `   @@r   Úvisit_BoolOpz_Unparser.visit_BoolOpÿ  sy   ú€ Ø—<‘< §¡× 1Ñ 1× :Ñ :Ñ;ˆØ"×4Ñ4°XÑ>Ðõ	 ð × Ñ Ð!4°dÕ;Ø�H�:˜Q�ˆAØ�O‰OÔ1Ð3LÈdÏkÉkÔZ÷ <×;Ñ;ús   Á(B	Â	Bc                 ó„  — | j                  t        j                  |j                  «       | j	                  |j                  «       t        |j                  t        «      r5t        |j                  j                  t        «      r| j                  d«       | j                  d«       | j                  |j                  «       y )Nr~   r²  )
r‹  r9  rO  r-   r“  r   r+   r.   rh  r‹   rˆ  s     r   Úvisit_Attributez_Unparser.visit_Attribute  su   € Ø×ÑœK×,Ñ,¨d¯j©jÔ9Ø�‰�d—j‘jÔ!ô �d—j‘j¤(Ô+´
¸4¿:¹:×;KÑ;KÌSÔ0QØ�J‰J�sŒOØ�
‰
�3ŒØ�
‰
�4—9‘9Õr   c                 óÂ  — | j                  t        j                  |j                  «       | j	                  |j                  «       | j                  dd«      5  d}|j                  D ])  }|r| j                  d«       nd}| j	                  |«       Œ+ |j                  D ])  }|r| j                  d«       nd}| j	                  |«       Œ+ 	 d d d «       y # 1 sw Y   y xY w)Nra   rb   Fr_   T)	r‹  r9  rO  rB   r“  r  rE   rh  rF   )rÈ   r%   r  r  s       r   Ú
visit_Callz_Unparser.visit_Call  s©   € Ø×ÑœK×,Ñ,¨d¯i©iÔ8Ø�‰�d—i‘iÔ Ø�\‰\˜#˜sÕ#ØˆEØ—Y”Y�ÙØ—J‘J˜tÕ$à �EØ—‘˜aÕ ð ð —]”]�ÙØ—J‘J˜tÕ$à �EØ—‘˜aÕ ñ #÷ $×#Ñ#ús   ÁA3CÃCc                 óž  — d„ }| j                  t        j                  |j                  «       | j	                  |j                  «       | j                  dd«      5   ||j                  «      r1| j                  | j                  |j                  j                  «       n| j	                  |j                  «       d d d «       y # 1 sw Y   y xY w)Nc                 ó>   — t        | t        «      xr | j                  S r*   )r   r;   r=   )Úslice_values    r   Úis_non_empty_tuplez5_Unparser.visit_Subscript.<locals>.is_non_empty_tuple+  s   € ä˜;¬Ó.ò %Ø×$Ñ$ðr   rc   rl   )	r‹  r9  rO  r-   r“  r  r  rl  r=   )rÈ   r%   rð  s      r   Úvisit_Subscriptz_Unparser.visit_Subscript*  sƒ   € ò	ð 	×ÑœK×,Ñ,¨d¯j©jÔ9Ø�‰�d—j‘jÔ!Ø�\‰\˜#˜sÕ#Ù! $§*¡*Ô-à—‘ §¡¨t¯z©z¯©Õ?à—‘˜dŸj™jÔ)÷ $×#Ñ#ús   ÁACÃCc                 ó°   — | j                  d«       | j                  t        j                  |j                  «       | j                  |j                  «       y r  )rh  r‹  r9  rE  r-   r“  rˆ  s     r   Úvisit_Starredz_Unparser.visit_Starred:  s7   € Ø�
‰
�3ŒØ×ÑœK×,Ñ,¨d¯j©jÔ9Ø�‰�d—j‘jÕ!r   c                 ó&   — | j                  d«       y )Nrz  rg  rˆ  s     r   Úvisit_Ellipsisz_Unparser.visit_Ellipsis?  s   € Ø�
‰
�5Õr   c                 ó4  — |j                   r| j                  |j                   «       | j                  d«       |j                  r| j                  |j                  «       |j                  r-| j                  d«       | j                  |j                  «       y y )Nrz  )Úlowerr“  rh  ÚupperÚsteprˆ  s     r   Úvisit_Slicez_Unparser.visit_SliceB  sb   € Ø�:Š:Ø�M‰M˜$Ÿ*™*Ô%Ø�
‰
�3ŒØ�:Š:Ø�M‰M˜$Ÿ*™*Ô%Ø�9Š9Ø�J‰J�sŒOØ�M‰M˜$Ÿ)™)Õ$ð r   c                 óì   — | j                  d«       | j                  |j                  «       | j                  «       5  |j                  D ]  }| j                  |«       Œ 	 d d d «       y # 1 sw Y   y xY w)Nzmatch )rq  r“  Úsubjectr{  Úcases)rÈ   r%   Úcases      r   Úvisit_Matchz_Unparser.visit_MatchL  sK   € Ø�	‰	�(ÔØ�‰�d—l‘lÔ#Ø�Z‰Z�\ØŸ
œ
�Ø—‘˜dÕ#ñ #÷ �\‰\ús   ½#A*Á*A3c                 ó¬   — | j                  |j                  «       |j                  r-| j                  d«       | j                  |j                  «       y y r  )rh  Úargr¾  r“  rˆ  s     r   Ú	visit_argz_Unparser.visit_argS  s:   € Ø�
‰
�4—8‘8ÔØ�?Š?Ø�J‰J�tÔØ�M‰M˜$Ÿ/™/Õ*ð r   c                 ól  — d}|j                   |j                  z   }d gt        |«      t        |j                  «      z
  z  |j                  z   }t	        t        ||«      d«      D ]  \  }}|\  }}|rd}n| j                  d«       | j                  |«       |r"| j                  d«       | j                  |«       |t        |j                   «      k(  sŒo| j                  d«       Œ� |j                  s|j                  r¤|rd}n| j                  d«       | j                  d«       |j                  rq| j                  |j                  j                  «       |j                  j                  r6| j                  d«       | j                  |j                  j                  «       |j                  rot        |j                  |j                  «      D ]L  \  }}| j                  d«       | j                  |«       |sŒ+| j                  d«       | j                  |«       ŒN |j                  rŒ|rd}n| j                  d«       | j                  d	|j                  j                  z   «       |j                  j                  r7| j                  d«       | j                  |j                  j                  «       y y y )
NTr\   Fr_   r`   z, /r   r#   r  )ÚposonlyargsrE   rH   Údefaultsr©   rL   rh  r“  ÚvarargÚ
kwonlyargsr  r¾  Úkw_defaultsÚkwarg)	rÈ   r%   rº   Úall_argsr  r  ÚelementsÚaÚds	            r   Úvisit_argumentsz_Unparser.visit_argumentsY  s  € Øˆà×#Ñ# d§i¡iÑ/ˆØ�6œS ›]¬S°·±Ó-?Ñ?Ñ@À4Ç=Á=ÑPˆÜ(¬¨X°xÓ)@À!ÖD‰OˆE�8Ø‰DˆAˆqÙØ‘à—
‘
˜4Ô Ø�M‰M˜!ÔÙØ—
‘
˜3”Ø—‘˜aÔ Øœ˜D×,Ñ,Ó-Ó-Ø—
‘
˜5Õ!ð  Eð �;Š;˜$Ÿ/š/ÙØ‘à—
‘
˜4Ô Ø�J‰J�sŒOØ�{Š{Ø—
‘
˜4Ÿ;™;Ÿ?™?Ô+Ø—;‘;×)Ò)Ø—J‘J˜tÔ$Ø—M‘M $§+¡+×"8Ñ"8Ô9ð �?Š?Ü˜DŸO™O¨T×-=Ñ-=Ö>‘��1Ø—
‘
˜4Ô Ø—‘˜aÔ ÚØ—J‘J˜s”OØ—M‘M !Õ$ð ?ð �:Š:ÙØ‘à—
‘
˜4Ô Ø�J‰J�t˜dŸj™jŸn™nÑ,Ô-Ø�z‰z×$Ò$Ø—
‘
˜4Ô Ø—‘˜dŸj™j×3Ñ3Õ4ð %ð r   c                 óÎ   — |j                   €| j                  d«       n,| j                  |j                   «       | j                  d«       | j                  |j                  «       y )Nr  r`   )r  rh  r“  r-   rˆ  s     r   Úvisit_keywordz_Unparser.visit_keywordŒ  sC   € Ø�8‰8ÐØ�J‰J�tÕà�J‰J�t—x‘xÔ Ø�J‰J�sŒOØ�‰�d—j‘jÕ!r   c                 óæ  — | j                  t        j                  |«      5  | j                  d«       | j	                  «       5 }| j                  |j                  «       d d d «       r | j                  dg|¢­Ž  | j                  d«       | j                  t        j                  |j                  «       | j                  |j                  «       d d d «       y # 1 sw Y   Œ}xY w# 1 sw Y   y xY w)NÚlambdar~   r#   )	r†  r9  r@  rh  rv  r“  rE   r‹  rV   )rÈ   r%   rt  s      r   Úvisit_Lambdaz_Unparser.visit_Lambda”  s§   € Ø× Ñ ¤×!1Ñ!1°4Õ8Ø�J‰J�xÔ Ø—‘” FØ—‘˜dŸi™iÔ(÷ !áØ�—
‘
˜3Ð( Ó(Ø�J‰J�tÔØ×Ñ¤× 0Ñ 0°$·)±)Ô<Ø�M‰M˜$Ÿ)™)Ô$÷ 9Ð8ç �ú÷ 9Ð8ús$   ¡"C'ÁCÁA3C'ÃC$	Ã C'Ã'C0c                 ó�   — | j                  |j                  «       |j                  r| j                  d|j                  z   «       y y ©Nrü  )rh  rz   Úasnamerˆ  s     r   Úvisit_aliasz_Unparser.visit_aliasŸ  s3   € Ø�
‰
�4—9‘9ÔØ�;Š;Ø�J‰J�v §¡Ñ+Õ,ð r   c                 ó¬   — | j                  |j                  «       |j                  r-| j                  d«       | j                  |j                  «       y y r  )r“  Úcontext_exprÚoptional_varsrh  rˆ  s     r   Úvisit_withitemz_Unparser.visit_withitem¤  s@   € Ø�‰�d×'Ñ'Ô(Ø×ÒØ�J‰J�vÔØ�M‰M˜$×,Ñ,Õ-ð r   c                 óL  — | j                  d«       | j                  |j                  «       |j                  r,| j	                  d«       | j                  |j                  «       | j                  «       5  | j                  |j                  «       d d d «       y # 1 sw Y   y xY w)Nzcase r�  )rq  r“  ÚpatternÚguardrh  r{  rV   rˆ  s     r   Úvisit_match_casez_Unparser.visit_match_caseª  sd   € Ø�	‰	�'ÔØ�‰�d—l‘lÔ#Ø�:Š:Ø�J‰J�vÔØ�M‰M˜$Ÿ*™*Ô%Ø�Z‰Z�\Ø�M‰M˜$Ÿ)™)Ô$÷ �\‰\ús   Á5BÂB#c                 ó:   — | j                  |j                  «       y r*   )r“  r-   rˆ  s     r   Úvisit_MatchValuez_Unparser.visit_MatchValue³  s   € Ø�‰�d—j‘jÕ!r   c                 ó:   — | j                  |j                  «       y r*   )rx  r-   rˆ  s     r   Úvisit_MatchSingletonz_Unparser.visit_MatchSingleton¶  s   € Ø×Ñ˜TŸZ™ZÕ(r   c                 ó¨   ‡ — ‰ j                  dd«      5  ‰ j                  ˆ fd„‰ j                  |j                  «       d d d «       y # 1 sw Y   y xY w)Nrc   rl   c                  ó&   •— ‰ j                  d«      S rf  rg  r(  s   €r   ri  z/_Unparser.visit_MatchSequence.<locals>.<lambda>¼  r¢  r   )r  rb  r“  Úpatternsrˆ  s   ` r   Úvisit_MatchSequencez_Unparser.visit_MatchSequence¹  s8   ø€ Ø�\‰\˜#˜sÕ#Ø�O‰OÛ(¨$¯-©-¸¿¹ô÷ $×#Ñ#úr~  c                 óL   — |j                   }|€d}| j                  d|› �«       y )NÚ_r   )rz   rh  )rÈ   r%   rz   s      r   Úvisit_MatchStarz_Unparser.visit_MatchStar¿  s'   € Ø�y‰yˆØˆ<ØˆDØ�
‰
�Q�t�f�:Õr   c           
      ó8  ‡ — ˆ fd„}‰ j                  dd«      5  |j                  }‰ j                  ˆ fd„|t        ||j                  d¬«      «       |j
                  }|�'|r‰ j                  d«       ‰ j                  d|› �«       d d d «       y # 1 sw Y   y xY w)	Nc                 óv   •— | \  }}‰j                  |«       ‰j                  d«       ‰j                  |«       y r  r›  )Úpairrœ  ÚprÈ   s      €r   Úwrite_key_pattern_pairz<_Unparser.visit_MatchMapping.<locals>.write_key_pattern_pairÆ  s0   ø€ Ø‰DˆAˆqØ�M‰M˜!ÔØ�J‰J�tÔØ�M‰M˜!Õr   r^  r_  c                  ó&   •— ‰ j                  d«      S rf  rg  r(  s   €r   ri  z._Unparser.visit_MatchMapping.<locals>.<lambda>Ï  r¢  r   T©Ústrictr_   r  )r  rI   rb  rL   r&  Úrestrh  )rÈ   r%   r/  rI   r3  s   `    r   Úvisit_MatchMappingz_Unparser.visit_MatchMappingÅ  s�   ø€ ô	ð �\‰\˜#˜sÕ#Ø—9‘9ˆDØ�O‰OÛ(Ø&Ü�D˜$Ÿ-™-°Ô5ôð
 —9‘9ˆDØÐÙØ—J‘J˜tÔ$Ø—
‘
˜R ˜v˜;Ô'÷ $×#Ñ#ús   ™A.BÂBc           
      óÚ  ‡ — ‰ j                  t        j                  |j                  «       ‰ j	                  |j                  «       ‰ j                  dd«      5  |j                  }‰ j                  ˆ fd„‰ j                  |«       |j                  }|rDˆ fd„}|r‰ j                  d«       ‰ j                  ˆ fd„|t        ||j                  d¬«      «       d d d «       y # 1 sw Y   y xY w)	Nra   rb   c                  ó&   •— ‰ j                  d«      S rf  rg  r(  s   €r   ri  z,_Unparser.visit_MatchClass.<locals>.<lambda>ß  r¢  r   c                 óZ   •— | \  }}‰j                  |› d�«       ‰j                  |«       y )Nr`   )rh  r“  )r-  r‹   r  rÈ   s      €r   Úwrite_attr_patternz6_Unparser.visit_MatchClass.<locals>.write_attr_patternã  s*   ø€ Ø$(‘M�D˜'Ø—J‘J $  q˜zÔ*Ø—M‘M 'Õ*r   r_   c                  ó&   •— ‰ j                  d«      S rf  rg  r(  s   €r   ri  z,_Unparser.visit_MatchClass.<locals>.<lambda>ë  s   ø€ ˜DŸJ™J tÔ,r   Tr1  )r‹  r9  rO  rx   r“  r  r&  rb  Ú	kwd_attrsrh  rL   Úkwd_patterns)rÈ   r%   r&  Úattrsr8  s   `    r   Úvisit_MatchClassz_Unparser.visit_MatchClassÙ  s¯   ø€ Ø×ÑœK×,Ñ,¨d¯h©hÔ7Ø�‰�d—h‘hÔØ�\‰\˜#˜sÕ#Ø—}‘}ˆHØ�O‰OÛ(¨$¯-©-¸ôð —N‘NˆEÙô+ñ
 Ø—J‘J˜tÔ$Ø—‘Û,Ø&Ü˜˜t×0Ñ0¸Ô>ô÷ $×#Ñ#ús   ÁA?C!Ã!C*c                 óÈ  — |j                   }|j                  }|€| j                  d«       y |€| j                  |j                   «       y | j                  t        j
                  |«      5  | j                  t        j                  |j                  «       | j                  |j                  «       | j                  d|j                   › �«       d d d «       y # 1 sw Y   y xY w)Nr)  rü  )	rz   r  rh  r†  r9  r@  r‹  rF  r“  )rÈ   r%   rz   r  s       r   Úvisit_MatchAsz_Unparser.visit_MatchAsð  sš   € Ø�y‰yˆØ—,‘,ˆØˆ<Ø�J‰J�s�OØˆ_Ø�J‰J�t—y‘yÕ!à×$Ñ$¤[×%5Ñ%5°tÕ<Ø×#Ñ#¤K§O¡O°T·\±\ÔBØ—‘˜dŸl™lÔ+Ø—
‘
˜T $§)¡) Ð-Ô.÷ =×<Ñ<ús   Á+A$CÃC!c                 ó6  ‡ — ‰ j                  t        j                  |«      5   ‰ j                  t        j                  j	                  «       g|j
                  ¢­Ž  ‰ j                  ˆ fd„‰ j                  |j
                  «       d d d «       y # 1 sw Y   y xY w)Nc                  ó&   •— ‰ j                  d«      S )Nz | rg  r(  s   €r   ri  z)_Unparser.visit_MatchOr.<locals>.<lambda>   s   ø€  D§J¡J¨uÔ$5r   )r†  r9  rF  r‹  r<  r&  rb  r“  rˆ  s   ` r   Úvisit_MatchOrz_Unparser.visit_MatchOrý  sb   ø€ Ø× Ñ ¤§¡°$Õ7ØˆD×Ñ¤§¡× 4Ñ 4Ó 6ÐG¸¿¹ÓGØ�O‰OÓ5°t·}±}ÀdÇmÁmÔT÷ 8×7Ñ7ús   ¢A$BÂB)r^   r*   )F)„rs   r×   rØ   rÙ   rú   rb  rl  rn  rq  rh  r   rv  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  r   r"  r&  r(  r%  r-  r/  r3  r7  rR  rK  rO  rZ  rQ  rc  ro  r—  rx  rÖ   r}  r…  r‰  r‹  r�  r“  r•  r˜  r¢  r¤  r¬  r9  rC  rL  r­  r°  r»  rJ  rK  rI  rF  rG  rH  rM  rÅ  Ú	frozensetrÆ  rÉ  rÛ  rÝ  ræ  rB  rA  rç  rè  rê  rì  rñ  ró  rõ  rú  rÿ  r  r  r  r  r  r  r  r!  r#  r'  r*  r4  r=  r?  rB  Ú__classcell__)rr   s   @r   rT  rT  Ô  sœ  ø„ ñð .3ô "ò
òHòó
1ò"ð ò'ó ð'ð Ø#ó ó ðð ñó ðò!òQò=ò1òò )ô
 ò%ò%ò#ò$ò"ò
&òMòMò%ò"ò&ò&òòòòOò$òJòJò*ò*ò&ò
&ò.ò1ò1ò	%ò:ò4+ò1ò:ò"Vò
&ò$ò%ò"ò'ò-ò+ò+ò$+ò%ò%ð &1ÈEô$/ðL FQô 8ò27óhLò&Qò$òTò$ò
-òPò#ò#ò#ò#ò%ò'ò òò,6ð  %°¸cÑB€Dà�‰Ø×ÑØ×ÑØ×Ññ	€Oò
(ð ØØØØØØØØØØØØñ€Eð" ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ�_‰_Ø×ÑØ×ÑØ×ÑØ×ÑñÐñ  ˜WÓ%€Lò&ð$ ØØØØØØØØØñ€Fò!ð  4Ñ(€GØ +§¡°{·~±~ÑFÐò[ò	ò!ò$*ò "ò
ò%ò$ò+ò15òf"ò	%ò-ò
.ò%ò"ò)òòò(ò(ò./öUr   rT  c                 ó8   — t        «       }|j                  | «      S r*   )rT  rË   )Úast_objrg  s     r   ÚunparserG    s   € Ü‹{€HØ�>‰>˜'Ó"Ð"r   )r
  r  r  r  r  c                 óž   — | t         v r7t         |    xt        «       | <   }dd l}|j                  d| › �t        d¬«       |S t        d| › d�«      ‚)Nr   rü   rã   rå   zmodule 'ast' has no attribute 'rP  )Ú_deprecated_globalsÚglobalsrÒ   ré   rþ   ro   )rz   r-   rÒ   s      r   Ú__getattr__rK    s`   € ØÔ"Ñ"Ü"5°dÑ";Ð;Œ‹	�$‰˜%ÛØ×ÑØ�4�&ˆMÔ#<ÀWð 	ô 	
ð ˆÜ
Ð:¸4¸&ÀÐBÓ
CÐCr   c                  óv  — dd l } | j                  d¬«      }|j                  d| j                  d¬«      ddd	¬
«       |j                  ddddd¬«       |j                  dddd¬«       |j                  dddd¬«       |j                  ddt        dd¬«       |j                  «       }|j                  5 }|j                  «       }d d d «       t        |j                  j                  |j                  |j                  ¬ «      }t        t        ||j                  |j                  ¬!«      «       y # 1 sw Y   ŒlxY w)"Nr   zpython -m ast)ÚprogÚinfileÚrbr    Ú?rv  z$the file to parse; defaults to stdin)r,   ÚnargsÚdefaultÚhelpz-mz--modeÚexec)rT  Úsingler   Ú	func_typez(specify what kind of code must be parsed)rR  ÚchoicesrS  z--no-type-commentsTÚstore_falsez)don't add information about type comments)rR  ÚactionrS  z-az--include-attributesÚ
store_truez:include attributes such as line numbers and column offsets)rY  rS  z-iz--indentr   z'indentation of nodes (number of spaces))r,   rR  rS  )r	   )r}   rY   )ÚargparseÚArgumentParserÚadd_argumentÚFileTyper.   Ú
parse_argsrN  Úreadr   rz   r   Úno_type_commentsÚprintr€   r}   rY   )r[  ÚparserrE   rN  r   Útrees         r   Úmainre    s6  € Ûà×$Ñ$¨/Ð$Ó:€FØ
×Ñ˜ x×'8Ñ'8¸dÐ'8Ó'CÈ3Ø #ØCð ô Eð ×Ñ˜˜h°Ø GØGð ô Ið ×ÑÐ,°dÀ=ØHð ô Jà
×Ñ˜Ð4¸\ð.ð ô /ð ×Ñ˜˜j¬s¸AØFð ô Hà×ÑÓ€Dà	�Š˜Ø—‘“ˆ÷ 
ä�˜Ÿ™×)Ñ)¨4¯9©9ÀD×DYÑDYÔZ€DÜ	Œ$ˆt¨×(?Ñ(?ÈÏÉÔ
TÕU÷ 
ˆús   Â3D/Ä/D8Ú__main__)z	<unknown>rT  )TF)r\   )Tr*   )XrÙ   ÚsysÚreÚ_astÚ
contextlibr   r   Úenumr   r   r   r   rX   r€   rŒ   r’   r—   rš   r�   r§   r   rª   r¯   r³   r¼   r”   ÚobjectrÄ   rÛ   rê   rþ   r†   r+   rì   rð   rô   rö   Úpropertyr–   r  r,   rø   r  r
  r  r  r  r  r  r.   r/   r0   rS   ÚbytesÚboolrý   rÿ   rÏ   rm   r  r  r"  r;   r)  r,  r%  Úmodr.  Úexpr_contextr2  r4  r6  ru   Ú
float_infoÚ
max_10_exprw  r9  Ú_SINGLE_QUOTESrG  rR  rT  rG  rJ  ÚpoprI  rK  re  rs   )rz   s   0r   Ú<module>rv     s  ðñó4 Û 	Ü ß 2ß ,Ñ ,ð5Ø¨tô5ò,8$ðv@Èô @òFò" óFò.	òóð0 �—
‘
Ð3Ó4€ó
òð 05ô "òJô7(�&ô 7(ôt8�kô 8ðx Uð  ðð ñ ˆx˜Ôòòòòñ ˜) YÓ/€H„JÙ˜) YÓ/€H„Jô1ˆ4ô 1ò62ô ˆ(˜dõ ôˆ(˜dõ ôˆH õ ô�8 tõ ô
6ˆx 4õ 
6ð €ð ˆ#ˆu�gÐ	Øˆ#ˆØ	ˆEˆ8Ø‘4˜“:˜tÐ$Ø‰t�C‹yˆlð€ð ˆ$ˆðÐ ð
 	ˆ.ÙˆƒJ�ØˆØ	ˆ5ØˆUØˆØ	ˆ7ÙˆƒIˆzð	Ð ô%ˆCô %ôˆEô ô
3ˆuô 3ñ ˆu�fÔòòñ ˜,¨Ó5€E„Jô:ˆCô :ô:ˆlô :ô:ˆ|ô :ô:ˆLô :ð ‘�c—n‘n×/Ñ/°!Ñ3Ó4Ñ
4€áˆgÓ÷ð ó ðð> €Ø€Ø/�Ð/ Ñ/€ôlU�ô lUò\!#ñ DóáCˆð 	‰'‹)�-‰-˜Ó
ÑØCñÐ ò
DòVð0 ˆzÒÙ…Fð ùòQs   ÈH<