
    -h                       U d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ erd dlmZmZmZ d dlmZ d dlm Z m!Z! ddddZ"ddddZ#dd!Z$dd%Z%i Z&d&e'd'<   ej(        d(k    rde&d)<   e G d* d#                      Z) edd+die& G d, d-e)                      Z* edd+die& G d. d/e)                      Z+ edd+die& G d0 d1e)                      Z, edd+die& G d2 d3e)                      Z- edd+die& G d4 d5e)                      Z. edd+die& G d6 d7e)                      Z/ edd+die& G d8 d9e)                      Z0 edd+die& G d: d;e)                      Z1 edd+die& G d< d=e)                      Z2 edd+die& G d> d?e)                      Z3 edd+die& G d@ dAe)                      Z4 edd+die& G dB dCe)                      Z5 edd+die& G dD dEe)                      Z6 edd+die& G dF dGe)                      Z7 edd+die& G dH dIe)                      Z8 edd+die& G dJ dKe)                      Z9 edd+die& G dL dMe)                      Z: edd+die& G dN dOe)                      Z; edd+die& G dP dQe)                      Z< edd+die& G dR dSe)                      Z= edd+dTie& G dU dVe)                      Z> edd+die& G dW dXe)                      Z? edd+die& G dY dZe)                      Z@ edd+die& G d[ d\e)                      ZA edd+die& G d] d^e)                      ZB edd+die& G d_ d`e)                      ZC edd+die& G da dbe)                      ZD edd+die& G dc dde)                      ZE edd+die& G de dfe)                      ZF edd+die& G dg dhe)                      ZG edd+die& G di dje)                      ZHejI        dkejJ        dlejK        dmejL        dniZMejN        dmejO        doejP        dpejQ        dqejR        drejS        dsejT        dtejU        duejV        dvejW        dwejX        dxejY        dyejZ        dniZ[ej\        dzej]        d{iZ^ej_        d|ej`        d}eja        d~ejb        dejc        dejd        deje        dejf        dejg        dejh        di
ZiddZjddZkddZlddZmddZnddZodTdTdTdTdddZpddZqddZrdTdddZsddZtddZudTdddZvdddZwddZxddZyddZzddZ{ddZ|ddZ}ddZ~ddZddZdTdTdTdddÄZdTdĜddƄZd dȄZddʄZdd̄Zi ej        ejej        ekej        elej        emej        enej        eoej        epej        eqej        erej        esej        etej        euej        evej        ewej        exej        eyej        ezej        e{ej        e|ej        e}ej        e~ej        eej        eej        eej        eej        eej        eej        eiZde'd<   ddЄZddќddԄZdej        dd֜ddۄZdZ e	edѦ          Z e	ededz  ަ          Z e	edTѦ          Z e	edTedz  ަ          Z e	edTѦ          Z e	edTedz  ަ          ZdS (      )annotationsN)	dataclass)fields)partial)zip_longest)TYPE_CHECKINGAnyCallable)get_parameters)LogLevelParameterKind)NameResolutionError)logger)IterableIteratorSequence)Path)ClassModuleTflatelement#str | Expr | tuple[str | Expr, ...]r   boolreturnIterator[str | Expr]c             #     K   t          | t                    r| V  d S t          | t                    r| D ]}t          ||          E d {V  d S |r|                     d          E d {V  d S | V  d S )Nr   T)
isinstancestrtuple_yielditerate)r   r   elems      P/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/_griffe/expressions.pyr!   r!      s      '3 	GU	#	#  	/ 	/Dd...........	/ 	/	 ???-----------    elements-Iterable[str | Expr | tuple[str | Expr, ...]]joint
str | Exprc             #     K   t          |           }	 t          t          |          |          E d {V  n# t          $ r Y d S w xY w|D ]0}t          ||          E d {V  t          ||          E d {V  1d S Nr   )iterr!   nextStopIteration)r&   r(   r   itr   s        r$   _joinr0   )   s       
hB$r((...........    . .%d++++++++++'-----------. .s   $8 
AA+str | bool | Expr | list[str | Expr] | Nonekwargsr	   str | bool | None | list | dictc                    t          | t                    rt          | fi S t          | t                    rfd| D             S | S )Nc                *    g | ]}t          |fi S  )_field_as_dict).0r#   r2   s     r$   
<listcomp>z"_field_as_dict.<locals>.<listcomp>@   s)    CCC4t..v..CCCr%   )r   Expr_expr_as_dictlist)r   r2   s    `r$   r7   r7   9   s_     '4   0W/////'4   DCCCC7CCCCNr%   
expressionr:   dict[str, Any]c                v      fdt          t                     d           D             } j        |d<   |S )Nc           	     r    i | ]3}|j         d k    |j         t          t          |j                   fi 4S )parent)namer7   getattr)r8   fieldr=   r2   s     r$   
<dictcomp>z!_expr_as_dict.<locals>.<dictcomp>E   sP       :!! 	
N7:uz#B#BMMfMM!!!r%   c                    | j         S N)rB   )fs    r$   <lambda>z_expr_as_dict.<locals>.<lambda>G   s     r%   )keycls)sorted	getfields	classname)r=   r2   r   s   `` r$   r;   r;   D   s]        Ij117G7GHHH  F
 (F5MMr%   zdict[str, bool]_dataclass_opts)   
   slotsc                      e Zd ZdZddZddZddddZddZddZe	dd            Z
e	dd            Ze	dd            Ze	dd            Ze	dd            Ze	dd            Ze	dd            Ze	dd            ZdS ) r:   zBase class for expressions.r   r   c                h    d                     d |                     d          D                       S )N c              3  R   K   | ]"}t          |t                    r|n|j        V  #d S rG   )r   r   rB   )r8   r#   s     r$   	<genexpr>zExpr.__str__.<locals>.<genexpr>Y   s7      hhz$44Ctt$)hhhhhhr%   Tr   )joinr"   selfs    r$   __str__zExpr.__str__X   s6    wwhhPTP\P\bfP\PgPghhhhhhr%   r   c              #  B   K   |                      d          E d{V  dS )z.Iterate on the expression syntax and elements.Fr   N)r"   rY   s    r$   __iter__zExpr.__iter__[   s2      <<U<+++++++++++r%   Tr   r   r   c             #     K   dE d{V  dS )a  Iterate on the expression elements.

        Parameters:
            flat: Expressions are trees.

                When flat is false, this method iterates only on the first layer of the tree.
                To iterate on all the subparts of the expression, you have to do so recursively.
                It allows to handle each subpart specifically (for example subscripts, attribute, etc.),
                without them getting rendered as strings.

                On the contrary, when flat is true, the whole tree is flattened as a sequence
                of strings and instances of [Names][griffe.ExprName].

        Yields:
            Strings and names when flat, strings and expressions otherwise.
        r6   Nr6   rZ   r   s     r$   r"   zExpr.iterate_   s      " r%   c                    | S )zModernize the expression.

        For example, use PEP 604 type unions `|` instead of `typing.Union`.

        Returns:
            A modernized expression.
        r6   rY   s    r$   	modernizezExpr.modernizer   s	     r%   r2   r	   r>   c                    t          | fi |S )zReturn the expression as a dictionary.

        Parameters:
            **kwargs: Configuration options (none available yet).


        Returns:
            A dictionary.
        )r;   )rZ   r2   s     r$   as_dictzExpr.as_dict|   s     T,,V,,,r%   c                    | j         j        S )zThe expression class name.)	__class____name__rY   s    r$   rN   zExpr.classname   s     ~&&r%   c                     t          |           S z%Path of the expressed name/attribute.r   rY   s    r$   pathz	Expr.path        4yyr%   c                     t          |           S rh   ri   rY   s    r$   canonical_pathzExpr.canonical_path   rk   r%   c                    | j                             dd          d                             dd          d                             d          S )z/Name of the expressed name/attribute/parameter..   ())rm   rsplitsplitremovesuffixrY   s    r$   canonical_namezExpr.canonical_name   sF     "))#q11"5;;CCCBGTTUXYYYr%   c                B    t          | t                    o
| j        dk    S )z4Whether this attribute is annotated with `ClassVar`.ClassVarr   ExprSubscriptrw   rY   s    r$   is_classvarzExpr.is_classvar   !     $..T43F*3TTr%   c                f    t          | t                    o| j                                        dk    S )z#Whether this expression is a tuple.r    )r   r{   rw   lowerrY   s    r$   is_tuplezExpr.is_tuple   s.     $..Y43F3L3L3N3NRY3YYr%   c                B    t          | t                    o
| j        dk    S )z'Whether this expression is an iterator.r   rz   rY   s    r$   is_iteratorzExpr.is_iterator   r}   r%   c                B    t          | t                    o
| j        dk    S )z'Whether this expression is a generator.	Generatorrz   rY   s    r$   is_generatorzExpr.is_generator   s!     $..U43F+3UUr%   Nr   r   )r   r   r   r   r   r   )r   r:   )r2   r	   r   r>   r   r   )rf   
__module____qualname____doc__r[   r]   r"   ra   rc   propertyrN   rj   rm   rw   r|   r   r   r   r6   r%   r$   r:   r:   T   s       %%i i i i, , , , '+      &   
- 
- 
- 
- ' ' ' X'    X    X Z Z Z XZ
 U U U XU Z Z Z XZ U U U XU V V V XV V Vr%   eqc                      e Zd ZU dZded<   	 dddd
ZddZedd            Zedd            Z	edd            Z
edd            ZdS )ExprAttributezAttributes like `a.b`.zlist[str | Expr]valuesTr   r   r   r   r   c             #  D   K   t          | j        d|          E d {V  d S )Nro   r   r0   r   r_   s     r$   r"   zExprAttribute.iterate   s5      c555555555555r%   valueExprNameNonec                `    |j         | j        |_         | j                            |           dS )zpAppend a name to this attribute.

        Parameters:
            value: The expression name to append.
        N)rA   lastr   append)rZ   r   s     r$   r   zExprAttribute.append   s1     <9EL5!!!!!r%   c                    | j         d         S )z/The last part of this attribute (on the right).rq   r   rY   s    r$   r   zExprAttribute.last   s    
 {2r%   r)   c                    | j         d         S )z/The first part of this attribute (on the left).r   r   rY   s    r$   firstzExprAttribute.first   s     {1~r%   r   c                    | j         j        S )zThe path of this attribute.)r   rj   rY   s    r$   rj   zExprAttribute.path   s     y~r%   c                    | j         j        S )z%The canonical path of this attribute.)r   rm   rY   s    r$   rm   zExprAttribute.canonical_path   s     y''r%   Nr   )r   r   r   r   )r   r   )r   r)   r   )rf   r   r   r   __annotations__r"   r   r   r   r   rj   rm   r6   r%   r$   r   r      s           2&* 6 6 6 6 6 6" " " "    X    X    X ( ( ( X( ( (r%   r   c                  F    e Zd ZU dZded<   	 ded<   	 ded<   	 ddddZdS )	ExprBinOpzBinary operations like `a + b`.r)   leftr   operatorrightTr   r   r   r   r   c             #     K   t          | j        |          E d {V  d| j         dV  t          | j        |          E d {V  d S Nr    )r!   r   r   r   r_   s     r$   r"   zExprBinOp.iterate   ss      $)$//////////"$-""""""$*4000000000000r%   Nr   rf   r   r   r   r   r"   r6   r%   r$   r   r      sg         ))MMM&* 1 1 1 1 1 1 1 1r%   r   c                  :    e Zd ZU dZded<   	 ded<   	 ddddZdS )
ExprBoolOpz!Boolean operations like `a or b`.r   r   Sequence[str | Expr]r   Tr   r   r   r   r   c             #  V   K   t          | j        d| j         d|          E d {V  d S )Nr   r   )r0   r   r   r_   s     r$   r"   zExprBoolOp.iterate   sC      &:$-&:&:&:FFFFFFFFFFFFr%   Nr   r   r6   r%   r$   r   r      s`         ++MMM    &* G G G G G G G Gr%   r   c                  R    e Zd ZU dZded<   	 ded<   	 edd            Zd	d
ddZdS )ExprCallzCalls like `f()`.r:   functionr   	argumentsr   r   c                    | j         j        S z1The canonical path of this subscript's left part.)r   rm   rY   s    r$   rm   zExprCall.canonical_path  s     }++r%   Tr   r   r   r   c             #     K   t          | j        |          E d {V  dV  t          | j        d|          E d {V  dV  d S )Nr   rr   , rs   )r!   r   r0   r   r_   s     r$   r"   zExprCall.iterate  sl      $-d3333333333			D9999999999					r%   Nr   r   )rf   r   r   r   r   r   rm   r"   r6   r%   r$   r   r      sx         NNN####, , , X, '+        r%   r   c                  F    e Zd ZU dZded<   	 ded<   	 ded<   	 dd	ddZdS )ExprComparezComparisons like `a > b`.r)   r   zSequence[str]	operatorsr   comparatorsTr   r   r   r   r   c             #     K   t          | j        |          E d {V  dV  t          t          | j        g | j        d          d|          E d {V  d S )Nr   r   )	fillvalue)r!   r   r0   r   r   r   r_   s     r$   r"   zExprCompare.iterate   s|      $)$//////////			T^R9IUXYYY[^eijjjjjjjjjjjjr%   Nr   r   r6   r%   r$   r   r     sr         ##%%%%&* k k k k k k k kr%   r   c                  V    e Zd ZU dZded<   	 ded<   	 ded<   	 dZded	<   	 d
dddZdS )ExprComprehensionz(Comprehensions like `a for b in c if d`.r)   targetiterabler   
conditionsFr   is_asyncTr   r   r   r   c             #     K   | j         rdV  dV  t          | j        |          E d {V  dV  t          | j        |          E d {V  | j        r#dV  t          | j        d|          E d {V  d S d S )Nzasync zfor r   z in  if )r   r!   r   r   r   r0   r_   s     r$   r"   zExprComprehension.iterate4  s      = 	NNN$+D1111111111$-d3333333333? 	ALLLT_f4@@@@@@@@@@@@	A 	Ar%   Nr   )rf   r   r   r   r   r   r"   r6   r%   r$   r   r   '  s         22;$$$$9H%&* 	A 	A 	A 	A 	A 	A 	A 	Ar%   r   c                  .    e Zd ZU dZded<   	 dddd
ZdS )ExprConstantzConstants like `"a"` or `1`.r   r   Tr   r   r   r   r   c             #     K   | j         V  d S rG   )r   r_   s     r$   r"   zExprConstant.iterateL  s      jr%   Nr   r   r6   r%   r$   r   r   E  sI         &&JJJ&*        r%   r   c                  :    e Zd ZU dZded<   	 ded<   	 ddddZdS )ExprDictzDictionaries like `{"a": 0}`.zSequence[str | Expr | None]keysr   r   Tr   r   r   r   r   c             #     K   dV  t          d t          | j        | j                  D             d|          E d {V  dV  d S )N{c              3  .   K   | ]\  }}|dn|d|fV  d S )Nr   : r6   )r8   rJ   r   s      r$   rW   z#ExprDict.iterate.<locals>.<genexpr>]  s5      iizsEffdE:iiiiiir%   r   r   })r0   zipr   r   r_   s     r$   r"   zExprDict.iterateZ  s|      			iiSQUQZ\`\gMhMhiii
 
 
 	
 	
 	
 	
 	
 	
 	

 					r%   Nr   r   r6   r%   r$   r   r   Q  s[         ''%%%%    &*        r%   r   c                  F    e Zd ZU dZded<   	 ded<   	 ded<   	 ddddZdS )ExprDictCompz0Dict comprehensions like `{k: v for k, v in a}`.r)   rJ   r   Sequence[Expr]
generatorsTr   r   r   r   r   c             #     K   dV  t          | j        |          E d {V  dV  t          | j        |          E d {V  t          | j        d|          E d {V  dV  d S )Nr   r   r   r   r   )r!   rJ   r   r0   r   r_   s     r$   r"   zExprDictComp.iteratep  s      			$(..........


$*40000000000#D9999999999					r%   Nr   r   r6   r%   r$   r   r   e  sg         ::OOO!&*        r%   r   c                  .    e Zd ZU dZded<   	 dddd
ZdS )ExprExtSlicez Extended slice like `a[x:y, z]`.r   dimsTr   r   r   r   r   c             #  D   K   t          | j        d|          E d {V  d S )Nr   r   )r0   r   r_   s     r$   r"   zExprExtSlice.iterate  s5      Dt444444444444r%   Nr   r   r6   r%   r$   r   r   z  sL         **&* 5 5 5 5 5 5 5 5r%   r   c                  .    e Zd ZU dZded<   	 dddd
ZdS )ExprFormattedz Formatted string like `{1 + 1}`.r)   r   Tr   r   r   r   r   c             #  R   K   dV  t          | j        |          E d {V  dV  d S )Nr   r   r   r!   r   r_   s     r$   r"   zExprFormatted.iterate  sC      			$*40000000000					r%   Nr   r   r6   r%   r$   r   r     sL         **&*        r%   r   c                  :    e Zd ZU dZded<   	 ded<   	 ddddZdS )ExprGeneratorExpz5Generator expressions like `a for b in c for d in e`.r)   r   r   r   Tr   r   r   r   r   c             #     K   t          | j        |          E d {V  dV  t          | j        d|          E d {V  d S r   r!   r   r0   r   r_   s     r$   r"   zExprGeneratorExp.iterate  se      $,T2222222222			#D999999999999r%   Nr   r   r6   r%   r$   r   r     s[         ??!&* : : : : : : : :r%   r   c                  F    e Zd ZU dZded<   	 ded<   	 ded<   	 ddddZdS )	ExprIfExpz Conditions like `a if b else c`.r)   bodytestorelseTr   r   r   r   r   c             #     K   t          | j        |          E d {V  dV  t          | j        |          E d {V  dV  t          | j        |          E d {V  d S )Nr   r   z else )r!   r   r   r   r_   s     r$   r"   zExprIfExp.iterate  s      $)$//////////$)$//////////$+D111111111111r%   Nr   r   r6   r%   r$   r   r     sj         **&* 2 2 2 2 2 2 2 2r%   r   c                  .    e Zd ZU dZded<   	 dddd
ZdS )ExprJoinedStrz!Joined strings like `f"a {b} c"`.r   r   Tr   r   r   r   r   c             #  T   K   dV  t          | j        d|          E d {V  dV  d S )Nzf'rU   r   'r   r_   s     r$   r"   zExprJoinedStr.iterate  sE      


bt4444444444					r%   Nr   r   r6   r%   r$   r   r     sL         ++    &*        r%   r   c                  l     e Zd ZU dZded<   	 ded<   	 dZded<   	 ed fd
            ZddddZ xZ	S )ExprKeywordzKeyword arguments like `a=b`.r   rB   r)   r   NExpr | Noner   r   c                t    | j         r| j         j         d| j         dS t          t          |           j        S )zPath of the expressed keyword.rr   rs   )r   rm   rB   superr   )rZ   re   s    r$   rm   zExprKeyword.canonical_path  sA     = 	Bm2AATYAAAA[$''66r%   Tr   r   r   r   c             #  \   K   | j         V  dV  t          | j        |          E d {V  d S )N=r   )rB   r!   r   r_   s     r$   r"   zExprKeyword.iterate  sG      i			$*4000000000000r%   r   r   )
rf   r   r   r   r   r   r   rm   r"   __classcell__)re   s   @r$   r   r     s         ''III" !H    I7 7 7 7 7 X7 '+ 1 1 1 1 1 1 1 1 1 1r%   r   c                  .    e Zd ZU dZded<   	 dddd
ZdS )ExprVarPositionalz,Variadic positional parameters like `*args`.r:   r   Tr   r   r   r   r   c             #  J   K   dV  t          | j        |          E d {V  d S )N*r   r   r_   s     r$   r"   zExprVarPositional.iterate  s<      			$*4000000000000r%   Nr   r   r6   r%   r$   r   r     sI         66KKK&* 1 1 1 1 1 1 1 1r%   r   c                  .    e Zd ZU dZded<   	 dddd
ZdS )ExprVarKeywordz,Variadic keyword parameters like `**kwargs`.r:   r   Tr   r   r   r   r   c             #  J   K   dV  t          | j        |          E d {V  d S )N**r   r   r_   s     r$   r"   zExprVarKeyword.iterate  s<      


$*4000000000000r%   Nr   r   r6   r%   r$   r   r     sI         66KKK&* 1 1 1 1 1 1 1 1r%   r   c                  :    e Zd ZU dZded<   	 ded<   	 ddddZdS )
ExprLambdaz(Lambda expressions like `lambda a: a.b`.zSequence[ExprParameter]
parametersr)   r   Tr   r   r   r   r   c             #    K   d}d}d}t          | j                  }dV  |rdV  t          | j        d          D ]\  }}|j        t          j        u rd}nc|j        t          j        u rdV  nK|j        t          j        u rdV  n3|j        t          j        u r|sd}n|j        t          j	        u r|sd}dV  |j        t          j        ur|rd}d	V  |j
        V  |j        r?|j        t          j        t          j        fvr d
V  t          |j        |          E d {V  ||k     rdV  dV  t          | j        |          E d {V  d S )NFlambdar   rp   Tr   r   z*, z/, r   r   r   r   )lenr   	enumeratekindr   positional_onlyvar_positionalvar_keywordpositional_or_keywordkeyword_onlyrB   defaultr!   r   )rZ   r   pos_only	pos_or_kwkw_onlylengthindex	parameters           r$   r"   zExprLambda.iterate  s     	T_%% 	III )$/1 = = 	 	E9~!>>>=#???				=#<<<



=#FFFyF 		=#===g=~]%BBBxB .     @Y^M<XZgZs;t%t%t			!)"3$??????????v~~





$)$////////////r%   Nr   r   r6   r%   r$   r   r   	  s[         22''''&* 0 0 0 0 0 0 0 0r%   r   c                  .    e Zd ZU dZded<   	 dddd
ZdS )ExprListzLists like `[0, 1, 2]`.r   r&   Tr   r   r   r   r   c             #  T   K   dV  t          | j        d|          E d {V  dV  d S )N[r   r   ]r0   r&   r_   s     r$   r"   zExprList.iterate;  E      			48888888888					r%   Nr   r   r6   r%   r$   r  r  4  sL         !!&*        r%   r  c                  :    e Zd ZU dZded<   	 ded<   	 ddddZdS )ExprListCompz*List comprehensions like `[a for b in c]`.r)   r   r   r   Tr   r   r   r   r   c             #     K   dV  t          | j        |          E d {V  dV  t          | j        d|          E d {V  dV  d S )Nr  r   r   r  r   r_   s     r$   r"   zExprListComp.iterateK  u      			$,T2222222222			#D9999999999					r%   Nr   r   r6   r%   r$   r  r  B  s[         44!&*        r%   r  Fc                      e Zd ZU dZded<   	 dZded<   	 ddZddddZedd            Z	edd            Z
edd            Zedd            Zedd            Zedd            ZdS )r   zLThis class represents a Python object identified by a name in a given scope.r   rB   Nz&str | ExprName | Module | Class | NonerA   otherobjectr   r   c                Z    t          |t                    r| j        |j        k    S t          S )zXTwo name expressions are equal if they have the same `name` value (`parent` is ignored).)r   r   rB   NotImplemented)rZ   r  s     r$   __eq__zExprName.__eq__]  s)    eX&& 	+9
**r%   Tr   r   Iterator[ExprName]c             #     K   | V  d S rG   r6   r_   s     r$   r"   zExprName.iteratec  s      




r%   c                p    t          | j        t                    r| j        j         d| j         S | j        S )zThe full, resolved name.

        If it was given when creating the name, return that.
        If a callable was given, call it and return its result.
        It the name cannot be resolved, return the source.
        ro   )r   rA   r   rj   rB   rY   s    r$   rj   zExprName.pathf  s;     dk8,, 	5k&44444yr%   c                B   | j         | j        S t          | j         t                    r| j         j         d| j         S t          | j         t
                    r| j          d| j         S 	 | j                             | j                  S # t          $ r
 | j        cY S w xY w)z2The canonical name (resolved one, not alias name).Nro   )rA   rB   r   r   rm   r   resolver   rY   s    r$   rm   zExprName.canonical_pathr  s     ;9dk8,, 	?k0>>49>>>dk3'' 	0k//DI///	;&&ty111" 	 	 	9	s   +B
 
BBModule | Class | Nonec                    	 | j         j        | j                             | j                           S # t          $ r | j         j        | j                 cY S w xY w)z(The resolved object this name refers to.)rA   modules_collectionr#  rB   	ExceptionresolvedrY   s    r$   r(  zExprName.resolved  s\    	3;1$+2E2Edi2P2PQQ 	3 	3 	3;'	2222	3s   .1 !AAc                r    	 | j         j        }n# t          $ r Y dS w xY wt          d |D                       S )z3Whether this name resolves to an enumeration class.Fc              3  V   K   | ]$}t          |t                    o
|j        d k    V  %dS )z	enum.EnumN)r   r:   rm   )r8   bases     r$   rW   z)ExprName.is_enum_class.<locals>.<genexpr>  s:      ccUY:dD))Pd.A[.Pccccccr%   )r(  basesr'  any)rZ   r,  s     r$   is_enum_classzExprName.is_enum_class  sU    	M'EE 	 	 	55	
 cc]bccccccs    
c                >    	 | j         j        S # t          $ r Y dS w xY w)z6Whether this name resolves to an enumeration instance.F)rA   r.  r'  rY   s    r$   is_enum_instancezExprName.is_enum_instance  s4    	;,, 	 	 	55	s    
c                T    	 | j         dk    o| j        j        S # t          $ r Y dS w xY w)z3Whether this name resolves to an enumeration value.r   F)rB   rA   r0  r'  rY   s    r$   is_enum_valuezExprName.is_enum_value  s@    	9'HDK,HH 	 	 	55	s    
'')r  r  r   r   )r   r   r   r  r   )r   r$  r   )rf   r   r   r   r   rA   r  r"   r   rj   rm   r(  r.  r0  r2  r6   r%   r$   r   r   T  s7        VVIII59F9999/    '+       	 	 	 X	    X 3 3 3 X3 	d 	d 	d X	d    X    X  r%   r   c                  :    e Zd ZU dZded<   	 ded<   	 ddddZdS )ExprNamedExprz+Named/assignment expressions like `a := b`.r:   r   r)   r   Tr   r   r   r   r   c             #     K   dV  t          | j        |          E d {V  dV  t          | j        |          E d {V  dV  d S )Nrr   r   z := rs   )r!   r   r   r_   s     r$   r"   zExprNamedExpr.iterate  ss      			$+D1111111111$*40000000000					r%   Nr   r   r6   r%   r$   r4  r4    sX         55LLL&*        r%   r4  c                  X    e Zd ZU dZded<   	 ej        Zded<   	 dZded<   	 dZ	d	ed
<   dS )ExprParameterz4Parameters in function signatures like `a: int = 0`.r   rB   r   r  Nr   
annotationstr | Expr | Noner  )
rf   r   r   r   r   r   r  r  r8  r  r6   r%   r$   r7  r7    s`         >>III'=D===="J""""!%G%%%%r%   r7  c                  .    e Zd ZU dZded<   	 dddd
ZdS )ExprSetzSets like `{0, 1, 2}`.r   r&   Tr   r   r   r   r   c             #  T   K   dV  t          | j        d|          E d {V  dV  d S )Nr   r   r   r   r  r_   s     r$   r"   zExprSet.iterate  r  r%   Nr   r   r6   r%   r$   r;  r;    sL           """"&*        r%   r;  c                  :    e Zd ZU dZded<   	 ded<   	 ddddZdS )ExprSetCompz)Set comprehensions like `{a for b in c}`.r)   r   r   r   Tr   r   r   r   r   c             #     K   dV  t          | j        |          E d {V  dV  t          | j        d|          E d {V  dV  d S )Nr   r   r   r   r   r_   s     r$   r"   zExprSetComp.iterate  r  r%   Nr   r   r6   r%   r$   r>  r>    s[         33!&*        r%   r>  c                  R    e Zd ZU dZdZded<   	 dZded<   	 dZded<   	 ddddZdS )	ExprSlicezSlices like `[a:b:c]`.Nr9  r   upperstepTr   r   r   r   r   c             #     K   | j         t          | j         |          E d {V  dV  | j        t          | j        |          E d {V  | j        "dV  t          | j        |          E d {V  d S d S )Nr   :)r   r!   rB  rC  r_   s     r$   r"   zExprSlice.iterate  s      :!djt4444444444			:!djt44444444449 IIIdid333333333333 ! r%   r   )	rf   r   r   r   r   r   rB  rC  r"   r6   r%   r$   rA  rA    sy           #E#####E####"D""""&* 4 4 4 4 4 4 4 4r%   rA  c                  j    e Zd ZU dZded<   	 ded<   	 ddddZedd            Zedd            ZdS )r{   zSubscripts like `a[b]`.r)   r   r:   sliceTr   r   r   r   r   c             #     K   t          | j        |          E d {V  dV  t          | j        |          E d {V  dV  d S )Nr   r  r  )r!   r   rG  r_   s     r$   r"   zExprSubscript.iterate  sj      $)$//////////			$*40000000000					r%   r   c                \    t          | j        t                    r| j        S | j        j        S )z'The path of this subscript's left part.)r   r   r   rj   rY   s    r$   rj   zExprSubscript.path  s*     di%% 	9y~r%   c                \    t          | j        t                    r| j        S | j        j        S r   )r   r   r   rm   rY   s    r$   rm   zExprSubscript.canonical_path  s+     di%% 	9y''r%   Nr   r   )	rf   r   r   r   r   r"   r   rj   rm   r6   r%   r$   r{   r{     s         !!KKK&*          X ( ( ( X( ( (r%   r{   c                  >    e Zd ZU dZded<   	 dZded<   	 ddddZdS )	ExprTuplezTuples like `(0, 1, 2)`.r   r&   Fr   implicitTr   r   r   r   c             #     K   | j         sdV  t          | j        d|          E d {V  t          | j                  dk    rdV  | j         sdV  d S d S )Nrr   r   r   rp   ,rs   )rM  r0   r&   r   r_   s     r$   r"   zExprTuple.iterate&  s      } 	III48888888888t}""III} 	IIIII	 	r%   Nr   )rf   r   r   r   r   rM  r"   r6   r%   r$   rL  rL    s`         """"""HZ&*        r%   rL  c                  :    e Zd ZU dZded<   	 ded<   	 ddddZdS )ExprUnaryOpzUnary operations like `-1`.r   r   r)   r   Tr   r   r   r   r   c             #  T   K   | j         V  t          | j        |          E d {V  d S r+   )r   r!   r   r_   s     r$   r"   zExprUnaryOp.iterate:  sA      m$*4000000000000r%   Nr   r   r6   r%   r$   rQ  rQ  1  sX         %%MMM&* 1 1 1 1 1 1 1 1r%   rQ  c                  2    e Zd ZU dZdZded<   	 ddddZdS )	ExprYieldz Yield statements like `yield a`.Nr9  r   Tr   r   r   r   r   c             #  d   K   dV  | j         "dV  t          | j         |          E d {V  d S d S )Nyieldr   r   )r   r!   r_   s     r$   r"   zExprYield.iterateG  sU      :!IIIdjt444444444444 "!r%   r   )rf   r   r   r   r   r   r"   r6   r%   r$   rT  rT  @  sQ         **#E####&* 5 5 5 5 5 5 5 5r%   rT  c                  .    e Zd ZU dZded<   	 dddd
ZdS )ExprYieldFromz%Yield statements like `yield from a`.r)   r   Tr   r   r   r   r   c             #  J   K   dV  t          | j        |          E d {V  d S )Nzyield from r   r   r_   s     r$   r"   zExprYieldFrom.iterateV  s?      $*4000000000000r%   Nr   r   r6   r%   r$   rX  rX  O  sL         //&* 1 1 1 1 1 1 1 1r%   rX  ~znot +-&|^/z//z<<@%r   r   z>>andorz==z!=<z<=>z>=iszis notinznot innodeast.AttributerA   Module | Classc                   t          | j        |fi |}t          |t                    r)|                    t          | j                             |S t          |t
                    r$t          |t          | j        |          g          S t          |t                    r$t          |t          | j        d          g          S t          |t          | j                  g          S )Nr   )_buildr   r   r   r   r   attrr   )ri  rA   r2   r   s       r$   _build_attributero    s    $*f////D$&& HTY''((($!! @dHTY$=$=>???$ AdHTY$>$>?@@@$ 3 34555r%   	ast.BinOpc           	         t          t          | j        |fi |t          t	          | j                           t          | j        |fi |          S rG   )r   rm  r   _binary_op_maptypeopr   ri  rA   r2   s      r$   _build_binoprv    sR    ty&++F++tDG}}%tz6,,V,,  r%   
ast.BoolOpc                    t          t          t          | j                           fd| j        D                       S )Nc                ,    g | ]}t          |fi S r6   rm  r8   r   r2   rA   s     r$   r9   z!_build_boolop.<locals>.<listcomp>  +    BBBUv	(	(	(	(BBBr%   )r   _bool_op_maprs  rt  r   ru  s    ``r$   _build_boolopr~    sB    T$']]#BBBBBdkBBB  r%   ast.Callc                    t          | j        fi fd| j        D             }fd| j        D             }t	          g ||          S )Nc                ,    g | ]}t          |fi S r6   rz  )r8   argr2   rA   s     r$   r9   z_build_call.<locals>.<listcomp>  s+    JJJvc644V44JJJr%   c                0    g | ]}t          |fd iS r   rz  )r8   kwargr   r2   rA   s     r$   r9   z_build_call.<locals>.<listcomp>  s0    bbb5F5&FF8FvFFbbbr%   )rm  funcargskeywordsr   )ri  rA   r2   positional_argskeyword_argsr   s    ``  @r$   _build_callr    sz    di22622HJJJJJ	JJJObbbbbbTXTabbbLH??,?@@@r%   ast.Comparec                    t          t          | j        fi d | j        D             fd| j        D                       S )Nc                B    g | ]}t           t          |                   S r6   )_compare_op_maprs  )r8   rt  s     r$   r9   z"_build_compare.<locals>.<listcomp>  s#    666rb	"666r%   c                ,    g | ]}t          |fi S r6   rz  )r8   compr2   rA   s     r$   r9   z"_build_compare.<locals>.<listcomp>  s+    EEEDf	'	'	'	'EEEr%   )r   rm  r   opsr   ru  s    ``r$   _build_comparer    s]    ty&++F++66TX666EEEEED4DEEE  r%   ast.comprehensionc                    t          t          | j        fi t          | j        fi fd| j        D             t          | j                            S )Nc                ,    g | ]}t          |fi S r6   rz  )r8   	conditionr2   rA   s     r$   r9   z(_build_comprehension.<locals>.<listcomp>  s+    GGG	6	,	,V	,	,GGGr%   )r   )r   rm  r   r,   ifsr   r   ru  s    ``r$   _build_comprehensionr    sr    t{F--f--ty&++F++GGGGGdhGGGdm$$	   r%   )in_formatted_strin_joined_strparse_stringsliteral_stringsast.Constantr  r  r  r  c                  t          | j        t                    rp|r	|s| j        S |rc|sa	 t          | j        ddt          j        d          }t          |j        |fi |S # t          $ r t          j
        d| j                   Y nw xY w t          d          d i                    t          | j                  t                    | j                  S )Nevalz<string-annotation>rp   )modefilenameflagsoptimizezTried and failed to parse %r as Python code, falling back to using it as a string literal (postponed annotations might help: https://peps.python.org/pep-0563/).c                    dS )Nz...r6   )_s    r$   rI   z!_build_constant.<locals>.<lambda>  s     r%   )r   r   r   compileastPyCF_ONLY_ASTrm  r   SyntaxErrorr   debugrs  getrepr)ri  rA   r  r  r  r  r2   parseds           r$   _build_constantr    s    $*c"" = 	!1 	: 	= 	=
= J2+   fk6<<V<<<    \ J	     DDII'++D,<,<dCCDJOOOs   #A! !$BBast.Dictc                n    t          fd| j        D             fd| j        D                       S )Nc                4    g | ]}|d nt          |fi S rG   rz  )r8   rJ   r2   rA   s     r$   r9   z_build_dict.<locals>.<listcomp>  s3    UUUC&f"?"?"?"?UUUr%   c                ,    g | ]}t          |fi S r6   rz  r{  s     r$   r9   z_build_dict.<locals>.<listcomp>  r|  r%   )r   r   r   ru  s    ``r$   _build_dictr    sN    UUUUU49UUUBBBBBdkBBB  r%   ast.DictCompc                    t          t          | j        fi t          | j        fi fd| j        D                       S )Nc                ,    g | ]}t          |fi S r6   rz  r8   genr2   rA   s     r$   r9   z#_build_dictcomp.<locals>.<listcomp>  +    BBB3V	&	&v	&	&BBBr%   )r   rm  rJ   r   r   ru  s    ``r$   _build_dictcompr    s`    tx**6**tz6,,V,,BBBBB$/BBB  r%   )r  ast.FormattedValuec               F    t          t          | j        |fddi|          S )Nr  T)r   rm  r   )ri  rA   r  r2   s       r$   _build_formattedr    s+     
FTTTTVTTUUUr%   ast.GeneratorExpc                l    t          t          | j        fi fd| j        D                       S )Nc                ,    g | ]}t          |fi S r6   rz  r  s     r$   r9   z'_build_generatorexp.<locals>.<listcomp>  r  r%   )r   rm  eltr   ru  s    ``r$   _build_generatorexpr    sI    tx**6**BBBBB$/BBB  r%   	ast.IfExpc           	         t          t          | j        |fi |t          | j        |fi |t          | j        |fi |          S rG   )r   rm  r   r   r   ru  s      r$   _build_ifexpr    sY    ty&++F++ty&++F++t{F--f--  r%   )r  ast.JoinedStrc               H    t          fd| j        D                       S )Nc                0    g | ]}t          |fd diS )r  Trz  r{  s     r$   r9   z$_build_joinedstr.<locals>.<listcomp>  s1    gggRW&MMdMfMMgggr%   )r   r   )ri  rA   r  r2   s    ` `r$   _build_joinedstrr    s0     ggggg[_[fggghhhr%   ast.keywordr   r   c                    | j          t          t          | j        |fi |          S t	          | j         t          | j        |fi ||          S )Nr  )r  r   rm  r   r   )ri  rA   r   r2   s       r$   _build_keywordr    sX    xfTZBB6BBCCCtx
F!E!Ef!E!EPXYYYYr%   
ast.Lambdac                    t          fdt          | j                  D             t          | j        fi |          S )Nc                    g | ]A\  }}}}t          ||d t          |t                    r|nt          |d                    BS )NF)rA   r  )rB   r  r8  r  )r7  r   r   safe_get_expression)r8   rB   r  r  r  rA   s        r$   r9   z!_build_lambda.<locals>.<listcomp>  st     

 

 

 'aw gs++V(uUUU  

 

 

r%   )r   r   )r   r   r  rm  r   ru  s    ` r$   _build_lambdar    se    

 

 

 

 +9*C*C

 

 

 DIv0000   r%   ast.Listc                H    t          fd| j        D                       S )Nc                ,    g | ]}t          |fi S r6   rz  r8   elr2   rA   s     r$   r9   z_build_list.<locals>.<listcomp>)  s+    FFFbVB11&11FFFr%   )r  eltsru  s    ``r$   _build_listr  (  s,    FFFFFDIFFFGGGr%   ast.ListCompc                l    t          t          | j        fi fd| j        D                       S )Nc                ,    g | ]}t          |fi S r6   rz  r  s     r$   r9   z#_build_listcomp.<locals>.<listcomp>-  s-    <v<v<v_bVC=Z=ZSY=Z=Z<v<v<vr%   )r  rm  r  r   ru  s    ``r$   _build_listcompr  ,  sD    tx::6::<v<v<v<v<vfjfu<v<v<vwwwr%   ast.Namec                ,    t          | j        |          S rG   )r   idru  s      r$   _build_namer  0  s    DGV$$$r%   ast.NamedExprc                f    t          t          | j        |fi |t          | j        |fi |          S rG   )r4  rm  r   r   ru  s      r$   _build_named_exprr  4  s<    V>>v>>tzSY@d@d]c@d@deeer%   ast.Setc                H    t          fd| j        D                       S )Nc                ,    g | ]}t          |fi S r6   rz  r  s     r$   r9   z_build_set.<locals>.<listcomp>9  s+    EEERF2v0000EEEr%   )r;  r  ru  s    ``r$   
_build_setr  8  s,    EEEEE49EEEFFFr%   ast.SetCompc                l    t          t          | j        fi fd| j        D                       S )Nc                ,    g | ]}t          |fi S r6   rz  r  s     r$   r9   z"_build_setcomp.<locals>.<listcomp>=  s-    ;u;u;u^aF3<Y<YRX<Y<Y;u;u;ur%   )r>  rm  r  r   ru  s    ``r$   _build_setcompr  <  sD    vdh99&99;u;u;u;u;ueiet;u;u;uvvvr%   	ast.Slicec           	         t          | j        d nt          | j        |fi || j        d nt          | j        |fi || j        d nt          | j        |fi |          S rG   )rA  r   rm  rB  rC  ru  s      r$   _build_slicer  @  sz    
"tz6(L(LV(L(L
"tz6(L(LV(L(L	!vdi'J'J6'J'J  r%   ast.Starredc                B    t          t          | j        |fi |          S rG   )r   rm  r   ru  s      r$   _build_starredr  H  s$    VDJAA&AABBBr%   r  r  in_subscriptast.Subscriptr  c                   t          | j        |fi |}|r?t          |t          t          f          r|j        dv rd}t          | j        |fd|dd|}nt          | j        |fddi|}t          ||          S )N>   typing.Literaltyping_extensions.LiteralTr  r  )rm  r   r   r   r   rm   rG  r{   )ri  rA   r  r  r  r2   r   rG  s           r$   _build_subscriptr  L  s     $*f////D Hd]H566 	#4;N S
 <
 <
 #OJ
 +
 
 
 
 tz6GGGGGu%%%r%   )r  	ast.Tuplec               L    t          fd| j        D             |          S )Nc                ,    g | ]}t          |fi S r6   rz  r  s     r$   r9   z _build_tuple.<locals>.<listcomp>p  s+    GGGrfR22622GGGr%   )rM  )rL  r  )ri  rA   r  r2   s    ` `r$   _build_tupler  i  s4     GGGGGTYGGGR^____r%   ast.UnaryOpc                ~    t          t          t          | j                           t	          | j        |fi |          S rG   )rQ  _unary_op_maprs  rt  rm  operandru  s      r$   _build_unaryopr  s  s4    }T$']]3VDL&5[5[TZ5[5[\\\r%   	ast.Yieldc                T    t          | j        d nt          | j        |fi |          S rG   )rT  r   rm  ru  s      r$   _build_yieldr  w  s0    TZ/TTVDJ5Y5YRX5Y5YZZZr%   ast.YieldFromc                B    t          t          | j        |fi |          S rG   )rX  rm  r   ru  s      r$   _build_yield_fromr  {  s$    
F==f==>>>r%   z1dict[type, Callable[[Any, Module | Class], Expr]]	_node_mapast.ASTc                D    t          t          |                    | |fi |S rG   )r	  rs  ru  s      r$   rm  rm    s%    T$ZZ v88888r%   r  ast.AST | Nonebool | Nonec               x    | dS |#	 |j         }|j         }n# t          $ r d}Y nw xY wt          | ||          S )a  Build an expression from an AST.

    Parameters:
        node: The annotation node.
        parent: The parent used to resolve the name.
        parse_strings: Whether to try and parse strings as type annotations.

    Returns:
        A string or resovable name or expression.
    NFr  )moduleimports_future_annotations
ValueErrorrm  )ri  rA   r  r  s       r$   get_expressionr    sm      |t	B]F !' AAMM  	" 	" 	"!MMM	" $m<<<<s    ''zD{path}:{lineno}: Failed to get expression from {node_class}: {error})r  	log_level
msg_formatr  LogLevel | Noner  r   c               `   	 t          | ||          S # t          $ r}|Y d}~dS | j        j        }	 |j        }n# t
          $ r d}Y nw xY w| j        }|j        j         d| }	|                    ||||	          }
 t          t          |j
                  |
           Y d}~nd}~ww xY wdS )a  Safely (no exception) build a resolvable annotation.

    Parameters:
        node: The annotation node.
        parent: The parent used to resolve the name.
        parse_strings: Whether to try and parse strings as type annotations.
        log_level: Log level to use to log a message. None to disable logging.
        msg_format: A format string for the log message. Available placeholders:
            path, lineno, node, error.

    Returns:
        A string or resovable name or expression.
    r  Nz<in-memory>r   )rj   lineno
node_classerror)r  r'  re   rf   relative_filepathr  r  formatrC   r   r   )ri  rA   r  r  r  r  r  rj   r  	error_strmessages              r$   r  r    s    *2dF-HHHH 2 2 244444^,
	!%7DD 	! 	! 	! DDD	!/::5::	##f[d#ee(	((111111112 4s:    
B+B&B&;B&A
B&	A

AB&&B+zG{path}:{lineno}: Failed to get %s expression from {node_class}: {error}r8  )r  r  z
base classr  )r   r   r   r   r   r   )r&   r'   r(   r)   r   r   r   r   )r   r1   r2   r	   r   r3   )r=   r:   r2   r	   r   r>   r6   )ri  rj  rA   rk  r2   r	   r   r:   )ri  rp  rA   rk  r2   r	   r   r:   )ri  rw  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r  r   r  r   r  r   r  r   r2   r	   r   r)   )ri  r  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )
ri  r  rA   rk  r  r   r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )
ri  r  rA   rk  r  r   r2   r	   r   r:   rG   )
ri  r  rA   rk  r   r   r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r  r   r  r   r  r   r2   r	   r   r:   )
ri  r  rA   rk  r  r   r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r2   r	   r   r:   )ri  r
  rA   rk  r2   r	   r   r:   )ri  r  rA   rk  r  r  r   r   )ri  r  rA   rk  r  r  r  r  r  r   r   r   )
__future__r   r  sysdataclassesr   r   rM   	functoolsr   	itertoolsr   typingr   r	   r
   _griffe.agents.nodes.parametersr   _griffe.enumerationsr   r   _griffe.exceptionsr   _griffe.loggerr   collections.abcr   r   r   pathlibr   _griffe.modelsr   r   r!   r0   r7   r;   rO   r   version_infor:   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r4  r7  r;  r>  rA  r{   rL  rQ  rT  rX  InvertNotUAddUSubr   AddBitAndBitOrBitXorDivFloorDivLShiftMatMultModMultPowRShiftSubrr  AndOrr}  EqNotEqLtLtEGtGtEIsIsNotInNotInr  ro  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  	AttributeBinOpBoolOpCallComparecomprehensionConstantDictDictCompFormattedValueGeneratorExpIfExp	JoinedStrkeywordLambdaListListCompName	NamedExprSetSetCompSliceStarred	SubscriptTupleUnaryOpYield	YieldFromr	  rm  r  r  r  _msg_formatget_annotationsafe_get_annotationget_base_classsafe_get_base_classget_conditionsafe_get_conditionr6   r%   r$   <module>rm     s   # " " " " " " 



 



 ! ! ! ! ! ! + + + + + +       ! ! ! ! ! ! / / / / / / / / / / : : : : : : 8 8 8 8 8 8 8 8 2 2 2 2 2 2 ! ! ! ! ! ! -<<<<<<<<<<,,,,,,,, JN 	 	 	 	 	 	  	. . . . . .        $& % % % %w#OG ZV ZV ZV ZV ZV ZV ZV ZV| &&d&o&&'( '( '( '( '(D '( '( '&'(V &&d&o&&1 1 1 1 1 1 1 '&1" &&d&o&&	G 	G 	G 	G 	G 	G 	G '&	G &&d&o&&    t   '&* &&d&o&&k k k k k$ k k '&k" &&d&o&&A A A A A A A '&A: &&d&o&&    4   '& &&d&o&&    t   '&& &&d&o&&    4   '&( &&d&o&&5 5 5 5 54 5 5 '&5 &&d&o&&	 	 	 	 	D 	 	 '&	 &&d&o&&: : : : :t : : '&: &&d&o&&2 2 2 2 2 2 2 '&2& &&d&o&&	 	 	 	 	D 	 	 '&	 &&d&o&&$1 $1 $1 $1 $1$ $1 $1 '&$1P &&d&o&&1 1 1 1 1 1 1 '&1 &&d&o&&1 1 1 1 1T 1 1 '&1 &&d&o&&&0 &0 &0 &0 &0 &0 &0 '&&0T &&d&o&&	 	 	 	 	t 	 	 '&	 &&d&o&&    4   '&" ''e'''M M M M Mt M M ('Mb &&d&o&&    D   '&" &&d&o&&
 
 
 
 
D 
 
 '&
 &&d&o&&	 	 	 	 	d 	 	 '&	 &&d&o&&    $   '&" &&d&o&&4 4 4 4 4 4 4 '&4, &&d&o&&( ( ( ( (D ( ( '&(< &&d&o&&       '&& &&d&o&&
1 
1 
1 
1 
1$ 
1 
1 '&
1 &&d&o&&
5 
5 
5 
5 
5 
5 
5 '&
5 &&d&o&&1 1 1 1 1D 1 1 '&1 JGVHcHc	 GSJIsJGSL$JKGSHcGTJGS" GUFD FDItFCGTFCGTFDIxFDIx	6 	6 	6 	6      A A A A       #!$P $P $P $P $P $PN       #	V V V V V V        	i i i i i iZ Z Z Z Z   "H H H Hx x x x% % % %f f f fG G G Gw w w w   C C C C  !& & & & & &B 	` ` ` ` ` `] ] ] ][ [ [ [? ? ? ?@M#@I|@ J@ Hk	@
 K@ +@ L/@ Hk@ L/@ (@ )@ I|@ M#@ K@ J@  Hk!@" L/#@$ HkM$GZKI|KM#I|KI|M$9@ @	    @9 9 9 9 "&	= = = = = =@ "&!)\# # # # # #L Xt<<<g\)   
 u===g\)   
 e<<<W[(     r%   