
    -Ph              	      	   U d dl mZ d dlmZmZ d dlZd dlZd dlZd dlZ	ddl
mZ ddlmZ e	j        rd dlmZ ddlmZ  e	j        d	d
          Z ej        dej        ej        z            ZdsdZ G d de          Z G d de          Z e	j        deee          Z ed           G d de	j         e                               Z! ej        d          Z" G d d          Z#e G d d
                      Z$ ed            G d! d"e$                      Z% ed            G d# d$e	j         e         e$                      Z& G d% d&e&e                   Z' G d' d(e&e                   Z( ed            G d) d*e&e                               Z) ed            G d+ d,e&e                               Z* G d- d.e&          Z+ G d/ d0e&          Z, G d1 d2e&e                   Z- ed            G d3 d4e$                      Z. ed            G d5 d6e$                      Z/ ed            G d7 d8e$                      Z0 G d9 d:e$          Z1 ed            G d; d<e$                      Z2 G d= d>e2          Z3 G d? d@e2          Z4 ed            G dA dBe2                      Z5 ed            G dC dDe2                      Z6 ed            G dE dFe$                      Z7 G dG dHe7          Z8 G dI dJe7          Z9 ed            G dK dLe$                      Z: ed            G dM dNe$                      Z; ed            G dO dPe$                      Z< ed            G dQ dRe$                      Z= ed            G dS dTe$                      Z> G dU dVe>          Z? ed            G dW dXe$                      Z@ ed            G dY dZe$                      ZA ed            G d[ d\e$                      ZB ed            G d] d^e$                      ZC ed            G d_ d`e$                      ZD ed            G da dbe$                      ZE ed            G dc dde$                      ZFe	j        rede         ZGdfdgdhdidjdkdldmdnZHdoeIdp<    G dq dr          ZJdS )t    )annotations)	dataclassfieldN   )MesonException)mlog)Literal)
AstVisitor	BaseNodeTBaseNode)bounda,  
    ( \\U[A-Fa-f0-9]{8}   # 8-digit hex escapes
    | \\u[A-Fa-f0-9]{4}   # 4-digit hex escapes
    | \\x[A-Fa-f0-9]{2}   # 2-digit hex escapes
    | \\[0-7]{1,3}        # Octal escapes
    | \\N\{[^}]+\}        # Unicode characters by name
    | \\[\\'abfnrtv]      # Single-character escapes
    )matchT.Match[str]returnstrc                v    t          j        |                     d                                          d          S )Nr   unicode_escape)codecsdecodegroupencode)r   s    R/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/mparser.pydecode_matchr       s+    =Q..002BCCC    c                  0     e Zd ZU dZded<   d fdZ xZS )ParseExceptionNzT.Optional[CodeBlockNode]asttextr   linelinenointcolnor   Nonec                    t                                          t          j        |||                     || _        || _        d S N)super__init__r   	code_liner    r"   )selfr   r   r    r"   	__class__s        r   r'   zParseException.__init__'   s;    dE::;;;


r   )
r   r   r   r   r    r!   r"   r!   r   r#   )__name__
__module____qualname__r   __annotations__r'   __classcell__r*   s   @r   r   r   #   sP         %)C))))         r   r   c                      e Zd ZddZdS )BlockParseExceptionr   r   r   r    r!   r"   
start_linestart_linenostart_colnor   r#   c                   ||k    rKt          j        | d                    ||d                    d|z  d||z
  dz
  z                                 n+t          j        | d||dd|z  z  |||dd|z  z  fz             || _        || _        d S )Nz{}
{}
{}z{}^{}^ _r   z0%s
%s
%s
For a block that started at %d,%d
%s
%sz%s^)r   r'   formatr    r"   )r)   r   r   r    r"   r3   r4   r5   s           r   r'   zBlockParseException.__init__.   s&    \!! #D,*=*=dD(//Z]`kZkmpty  }H  uH  KL  uL  nM  KN  KN  +O  +O  P  P  P  P #D*aeikoqvz}  AF  {F  rG  IU  Wb  dn  pu  y|  J  yJ  pK  eL  +L  M  M  M


r   N)r   r   r   r   r    r!   r"   r!   r3   r   r4   r!   r5   r!   r   r#   )r+   r,   r-   r'    r   r   r2   r2   -   s(             r   r2   TV_TokenTypesF)eqc                  ^    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   d
ed<   ddZdS )Tokenr   tidfilenamer!   
line_startr    r"   T.Tuple[int, int]bytespanr;   valueotherobjectr   boolc                    t          |t                    r| j        |k    S t          |t                    r| j        |j        k    S t          S r%   )
isinstancer   r?   r>   NotImplemented)r)   rE   s     r   __eq__zToken.__eq__Z   sH    eS!! 	)8u$$u%% 	)8uy((r   N)rE   rF   r   rG   )r+   r,   r-   r.   rK   r:   r   r   r>   r>   P   so         HHHMMMOOOKKKJJJ     r   r>   z[_a-zA-Z][_0-9a-zA-Z]*c                  &    e Zd ZddZddZdd
ZdS )Lexercoder   c                V   |                     t          j                            d                    r,|                    dd          ^}}t          d|dd          || _        h d| _        d	h| _        d
t          j
        v | _        | j        r| j                            ddh           g dt          j        d          fdt          j        dt          j                  fdt          j        d          fdt           fdt          j        d          fdt          j        d          fdt          j        d          fdt          j        dt          j                  fdt          j        d          fdt          j        d          fd t          j        d!          fd"t          j        d#          fd$t          j        d%          fd&t          j        d'          fd(t          j        d)          fd*t          j        d+          fd,t          j        d-          fd.t          j        d/          fd0t          j        d1          fd2t          j        d3          fd4t          j        d5          fd6t          j        d7          fd8t          j        d9          fd:t          j        d;          fd<t          j        d=          fd>t          j        d?          fd@t          j        dA          fdBt          j        dC          fdDt          j        dE          fdFt          j        dG          fdHt          j        dI          fdJt          j        dK          fdLt          j        dM          fdNt          j        dO          f| _        d S )PNzutf-8
r   )maxsplitz3Builder file must be encoded in UTF-8 (with no BOM)r   )r    r"   >   ifinorandnotelifelsetruebreakendiffalseforeachcontinue
endforeachr   MESON_RUNNING_IN_PROJECT_TESTStestcaseendtestcase
whitespacez[ \t]+multiline_fstringzf'''(.|\n)*?'''fstringzf'([^'\\]|(\\.))*'idnumberz30[bB][01]+|0[oO][0-7]+|0[xX][0-9a-fA-F]+|0|[1-9]\d*eol_contz\\[ \t]*(#.*)?\neolz\nmultiline_stringz'''(.|\n)*?'''commentz#.*lparenz\(rparenz\)lbracketz\[rbracketz\]lcurlz\{rcurlz\}dblquote"stringz'([^'\\]|(\\.))*'comma,
plusassignz\+=dotz\.plusz\+dash-starz\*percent%fslash/colon:equal==nequal!=assign=le<=lt<ge>=gt>questionmarkz\?)
startswithr   BOM_UTF8r   splitr   rN   keywordsfuture_keywordsosenvironin_unit_testupdaterecompileMIDENT_REtoken_specification)r)   rN   r   r8   s       r   r'   zLexer.__init__e   s"   ??6?11'::;; 	qzz$z33HD1 !VX\efnopppp	4 4 4 !)z<
J 	>M  *m!<===$$
2:i001$$
 !"*-?"F"FG$$
 
#899:	$$

 8$$
 rz"XYYZ$$
 $7889$$
 BJu%%&$$
  ,=rt!D!DE$$
 
6**+$$
 rz%(()$$
 rz%(()$$
 E**+$$
 E**+$$
 bj''($$
  bj''(!$$
" D))*#$$
$ rz"6778%$$
& bj&&''$$
( 2:f--.)$$
* BJu%%&+$$
, RZ&&'-$$
. RZ%%&/$$
0 RZ&&'1$$
2 
4(()3$$
4 rz$''(5$$
6 bj&&'7$$
8 bj''(9$$
: rz%(();$$
< rz$''(=$$
> 2:e$$%?$$
@ 2:d##$A$$
B 2:e$$%C$$
D 2:d##$E$$
F RZ../G$$
   r   rA   r!   r   c                R    | j         || j                             d|                   S )NrP   )rN   find)r)   rA   s     r   getlinezLexer.getline   s$    yDINN4$D$DDEEr   r@   T.Generator[Token, None, None]c           
   #    K   d}d}d}d}d}d}d}|t          | j                  k     rd}	d}
| j        D ]u\  }}|                    | j        |          }|rQ|}|}|                                |z
  }d}	|}|                                }|}||f}|                                }
|dk    r|dz  }n|dk    r|dz  }n|dk    r|dz  }n|d	k    r|dz  }n|d
k    r|dz  }n|dk    r|dz  }n|dk    r%t          d|                     |          ||          |dv rz|
	                    d          dk    rNd}t          j        t          j        ||                     |          |          t          |||                     |
|dk    rdndd         }
n|dv rz|
|dk    rdndd         }
|
                    d          }t          |          dk    r?|t          |          dz
  z  }|                                t          |d                   z
  }nv|dk    r
|dz  }|}d}nf|dk    r|dz  }|}|dk    s|dk    s|dk    rd}nD|dk    r>|
| j        v r|
}n2|
| j        v r)t          j        d|
 dt          |||                     t#          |||||||
          V   nw|	s6t          d | j        |         |                     |          |||z
            |t          | j                  k     d S d S )!Nr   r   F Trl   rm   rn   ro   rp   rq   rr   z3Double quotes are not supported. Use single quotes.>   rt   re   rP   zNewline character in a string detected, use ''' (three single quotes) for multiline strings instead.
This will become a hard error in a future Meson release.locationre      >   rj   rd   rd         rh   rc   ri   rf   zIdentifier 'zG' will become a reserved keyword in a future release. Please rename it.zlexer: unrecognized token )lenrN   r   r   startendr   r   r   r   r   warningr(   r   r   r   r   r>   )r)   r@   rA   r    loc	par_countbracket_count
curl_countcolmatchedrD   r?   regmocurlinecurline_start
span_startspan_endrC   msgliness                        r   lexz	Lexer.lex   s     
	
C	NN""GE"6 8 8
cYYty#.. 6$G$.M((**z1C"G!$J&&((C"H *H5HHHJJEh!Q		!Q		
**%*
**%*"a

"a


**,-bdhdpdpq{d|d|  E  GJ  K  K  K 555 ::d++r11$^C !LT\\*=U=UWZ)[)[fnouwz  }E  gF  gF  G  G  G  G %3)+;+;aa2&E F III %32E+E+Eaa1R&O P %D 1 1u::>>"c%jj1n4F)+Cb	NN)BJ
**!%(
*!%(
$q==MA,=,=a".C DM11"'CC$(<<< $  .KE  .K  .K  .K6>vsH6U6U!W !W !W !WX}gsHV[\\\\\Em6n  J$%T$)C.%T%TVZVbVbcmVnVnpvx{  I  yI  J  J  J{ C	NN""""""r   N)rN   r   )rA   r!   r   r   )r@   r   r   r   )r+   r,   r-   r'   r   r   r:   r   r   rM   rM   d   sa        1
 1
 1
 1
fF F F FEJ EJ EJ EJ EJ EJr   rM   c                      e Zd ZU ded<   ded<    ed          Zded<    ed          Zded<    ed          Zded	<    ed          Zd
ed<   	 dddZ	ddZ
ddZdS )r   r!   r    r"   Fhashr   r@   
end_lineno	end_colnoT.Optional[WhitespaceNode]whitespacesNT.Optional[int]r   r#   c                    || _         || _        || _        ||n|| _        ||n|| _        d | _        d| _        d| _        d| _        d S )Nr   r   )	r    r"   r@   r   r   r   levelast_idcondition_level)r)   r    r"   r@   r   r   s         r   r'   zBaseNode.__init__   s]    
 (2(>**F&/&; 
 r   visitor'AstVisitor'c                    d                     t          |           j                  }t          ||          r,t	          ||          }t          |          r ||            d S d S d S )Nzvisit_{})r9   typer+   hasattrgetattrcallable)r)   r   fnamefuncs       r   acceptzBaseNode.accept   sr    !!$t**"5667E"" 	7E**D~~ T




	 	 r   tokenr>   c                t    | j         t          |          | _         d S | j                             |           d S r%   )r   WhitespaceNodeappendr)   r   s     r   append_whitespaceszBaseNode.append_whitespaces   s>    #-e44D##E*****r   )NN)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      s         KKKJJJEu%%%H%%%%e'''J''''U&&&I&&&&.3e.?.?.?K???? SW! ! ! ! !   + + + + + +r   T)unsafe_hashc                  4     e Zd ZU ded<   d	 fdZd
dZ xZS )r   r   rD   r   
Token[str]c                    t                                          |j        |j        |j                   d| _        |                     |           d| _        d| _        d S )Nr   F)	r&   r'   r    r"   r@   rD   r   block_indentis_continuationr)   r   r*   s     r   r'   zWhitespaceNode.__init__  sT    u{ENCCC
E!$r   r   r#   c                0    | xj         |j         z  c_         d S r%   )rD   r   s     r   r   zWhitespaceNode.append  s    

ek!



r   r   r   )r   r   r   r#   )r+   r,   r-   r.   r'   r   r/   r0   s   @r   r   r     s^          JJJ% % % % % %" " " " " " " "r   r   c                  N     e Zd ZU ded<    ed          Zded<   d
 fd	Z xZS )ElementaryNoder;   rD   Fr   rB   rC   r   Token[TV_TokenTypes]c                    t                                          |j        |j        |j                   |j        | _        |j        | _        d S r%   )r&   r'   r    r"   r@   rD   rC   r   s     r   r'   zElementaryNode.__init__  s;    u{ENCCC[
r   r   r   )r+   r,   r-   r.   r   rC   r'   r/   r0   s   @r   r   r     sk          "'%U"3"3"3H3333' ' ' ' ' ' ' ' ' 'r   r   c                      e Zd ZdS )BooleanNodeNr+   r,   r-   r:   r   r   r   r   !          Dr   r   c                      e Zd ZdS )IdNodeNr   r:   r   r   r   r   $  r   r   r   c                  :    e Zd ZU  ed          Zded<   d	dZdS )

NumberNodeFr   r   	raw_valuer   r   c                    t                               | |j        |j        |j                   |j        | _        t          |j        d          | _        |j        | _        d S )Nr   )base)	r   r'   r    r"   r@   rD   r   r!   rC   r   s     r   r'   zNumberNode.__init__,  sN    $ek5>JJJ1---
r   Nr   )r+   r,   r-   r   r   r.   r'   r:   r   r   r   r   '  sJ          U&&&I&&&&' ' ' ' ' 'r   r   c                  b     e Zd ZU  ed          Zded<   ded<   ded<   dd fdZddZ xZS )
StringNodeFr   r   r   rG   is_multiline
is_fstringTr   r   escapec                    t                                          |           d|j        v | _        d|j        v | _        |j        | _        |r"| j        s|                                 | _        d S d S d S )N	multilinere   )r&   r'   r?   r   r   rD   r   r   )r)   r   r   r*   s      r   r'   zStringNode.__init__9  sz    '594#uy0 	'$+ 	'DJJJ	' 	' 	' 	'r   r   c                L    t                               t          | j                  S r%   )ESCAPE_SEQUENCE_SINGLE_REsubr   r   r)   s    r   r   zStringNode.escapeC  s    (,,\4>JJJr   )T)r   r   r   rG   r   r   )	r+   r,   r-   r   r   r.   r'   r   r/   r0   s   @r   r   r   2  s          U&&&I&&&&' ' ' ' ' ' 'K K K K K K K Kr   r   c                      e Zd ZdS )ContinueNodeNr   r:   r   r   r  r  F  r   r   r  c                      e Zd ZdS )	BreakNodeNr   r:   r   r   r  r  I  r   r   r  c                      e Zd ZdS )
SymbolNodeNr   r:   r   r   r  r  L  r   r   r  c                       e Zd ZU  ed          Zded<    ed          Zded<    ed          Zded<    ed          Zded	<   d fdZ	ddZ
ddZd dZd!dZd"dZd"dZd#dZd"dZ xZS )$ArgumentNodeFr   T.List[BaseNode]	argumentsT.List[SymbolNode]commascolonszT.Dict[BaseNode, BaseNode]kwargsr   r   c                    t                                          |j        |j        |j                   g | _        g | _        g | _        i | _        d| _	        d| _
        d S )NF)r&   r'   r    r"   r@   r  r  r  r  order_errorr   r   s     r   r'   zArgumentNode.__init__W  sY    u{ENCCC  "r   	statementr   r   r#   c                    |                                  dk    rd| _        t          |t                    s|g| j        z   | _        d S d S Nr   T
num_kwargsr  rI   	EmptyNoder  r)   r  s     r   prependzArgumentNode.prependb  sO    ??q  #D)Y// 	:'[4>9DNNN	: 	:r   c                    |                                  dk    rd| _        t          |t                    s| xj        |gz  c_        d S d S r  r  r  s     r   r   zArgumentNode.appendh  sQ    ??q  #D)Y// 	*NNyk)NNNN	* 	*r   namer   rD   c                    t          fd| j        D                       r3t          j        dj         d|            t          j        d           || j        <   d S )Nc              3  b   K   | ])}t          |t                    oj        |j        k    V  *d S r%   )rI   r   rD   ).0xr  s     r   	<genexpr>z)ArgumentNode.set_kwarg.<locals>.<genexpr>o  s;      VVQ
1f%%?$**?VVVVVVr   zKeyword argument "z" defined multiple times.r   z#This will be an error in Meson 2.0.)anyr  r   r   rD   r)   r  rD   s    ` r   	set_kwargzArgumentNode.set_kwargn  sr    VVVV$+VVVVV 	@LSdjSSS^bccccL>???!Dr   c                    || j         |<   d S r%   )r  r"  s      r   set_kwarg_no_checkzArgumentNode.set_kwarg_no_checkt  s    !Dr   r!   c                *    t          | j                  S r%   )r   r  r   s    r   num_argszArgumentNode.num_argsw  s    4>"""r   c                *    t          | j                  S r%   )r   r  r   s    r   r  zArgumentNode.num_kwargsz  s    4;r   rG   c                    | j         S r%   )r  r   s    r   incorrect_orderzArgumentNode.incorrect_order}  s    r   c                T    |                                  |                                 z   S r%   )r'  r  r   s    r   __len__zArgumentNode.__len__  s    }}!2!222r   r   )r  r   r   r#   )r  r   rD   r   r   r#   )r  r   rD   r   r   r#   )r   r!   )r   rG   )r+   r,   r-   r   r  r.   r  r  r  r'   r  r   r#  r%  r'  r  r*  r,  r/   r0   s   @r   r	  r	  O  sY         #(%U"3"3"3I3333!&E!2!2!2F2222!&E!2!2!2F2222).E):):):F::::	" 	" 	" 	" 	" 	": : : :* * * *" " " "" " " "# # # #              3 3 3 3 3 3 3 3r   r	  c                  @     e Zd ZU ded<   ded<   ded<   d fdZ xZS )	ArrayNoder  rn   r	  argsro   c                    t                                          |j        |j        |j        |j        |j        dz              || _        || _        || _        d S Nr   )r   r   )r&   r'   r    r"   r@   rn   r/  ro   )r)   rn   r/  ro   r*   s       r   r'   zArrayNode.__init__  s\    (.$-T\Tcowo}~o  	A  	A  	A 	 r   )rn   r  r/  r	  ro   r  r+   r,   r-   r.   r'   r/   r0   s   @r   r.  r.    se          ! ! ! ! ! ! ! ! ! !r   r.  c                  @     e Zd ZU ded<   ded<   ded<   d fdZ xZS )DictNoder  rp   r	  r/  rq   c                    t                                          |j        |j        |j        |j        |j        dz              || _        || _        || _        d S r1  )r&   r'   r    r"   r@   rp   r/  rq   )r)   rp   r/  rq   r*   s       r   r'   zDictNode.__init__  sQ    u{DMelfkfqrsfsttt
	


r   )rp   r  r/  r	  rq   r  r2  r0   s   @r   r4  r4    se                   r   r4  c                      e Zd ZdS )r  Nr   r:   r   r   r  r    r   r   r  c                  @     e Zd ZU ded<   ded<   ded<   d fdZ xZS )BinaryOperatorNoder   leftr  operatorrightc                    t                                          |j        |j        |j                   || _        || _        || _        d S r%   )r&   r'   r    r"   r@   r9  r:  r;  )r)   r9  r:  r;  r*   s       r   r'   zBinaryOperatorNode.__init__  s>    dj$-@@@	 


r   )r9  r   r:  r  r;  r   r2  r0   s   @r   r8  r8    s_          NNNOOO         r   r8  c                      e Zd ZdS )OrNodeNr   r:   r   r   r>  r>    r   r   r>  c                      e Zd ZdS )AndNodeNr   r:   r   r   r@  r@    r   r   r@  c                  ,     e Zd ZU ded<   d	 fdZ xZS )
ComparisonNodeCOMPARISONSctyper9  r   r:  r  r;  c                \    t                                          |||           || _        d S r%   )r&   r'   rD  )r)   rD  r9  r:  r;  r*   s        r   r'   zComparisonNode.__init__  s*    x///


r   )rD  rC  r9  r   r:  r  r;  r   r2  r0   s   @r   rB  rB    sM                   r   rB  c                  ,     e Zd ZU ded<   d	 fdZ xZS )
ArithmeticNoder   	operationr9  r   r:  r  r;  c                \    t                                          |||           || _        d S r%   )r&   r'   rH  )r)   rH  r9  r:  r;  r*   s        r   r'   zArithmeticNode.__init__  s*    x///"r   )rH  r   r9  r   r:  r  r;  r   r2  r0   s   @r   rG  rG    sJ          NNN# # # # # # # # # #r   rG  c                  6     e Zd ZU ded<   ded<   d fdZ xZS )	UnaryOperatorNoder  r:  r   rD   r   r   c                    t                                          |j        |j        |j                   || _        || _        d S r%   )r&   r'   r    r"   r@   r:  rD   )r)   r   r:  rD   r*   s       r   r'   zUnaryOperatorNode.__init__  s7    u{ENCCC 


r   )r   r   r:  r  rD   r   r2  r0   s   @r   rK  rK    sV          OOO         r   rK  c                      e Zd ZdS )NotNodeNr   r:   r   r   rN  rN    r   r   rN  c                      e Zd ZdS )
UMinusNodeNr   r:   r   r   rP  rP    r   r   rP  c                  n     e Zd ZU  ed          Zded<    ed          Zded<   d fd	ZddZ xZ	S )CodeBlockNodeFr   r   pre_whitespacesr
  r   r   r   c                    t                                          |j        |j        |j                   d | _        g | _        d S r%   )r&   r'   r    r"   r@   rS  r   r   s     r   r'   zCodeBlockNode.__init__  s8    u{ENCCC#


r   r>   r   r#   c                    | j         r"| j         d                             |           d S | j        t          |          | _        d S | j                            |           d S )Nr   )r   r   rS  r   r   r   s     r   r   z CodeBlockNode.append_whitespaces  sh    : 	/JrN--e44444!)#1%#8#8D    ''.....r   r   r   )
r+   r,   r-   r   rS  r.   r   r'   r   r/   r0   s   @r   rR  rR    s          38%U2C2C2COCCCC#e///E////     
/ / / / / / / /r   rR  c                  J     e Zd ZU ded<   ded<   ded<   ded<   d fdZ xZS )		IndexNoder   iobjectr  rn   indexro   c                    t                                          |j        |j        |j                   || _        || _        || _        || _        d S r%   )	r&   r'   r    r"   r@   rX  rn   rY  ro   )r)   rX  rn   rY  ro   r*   s        r   r'   zIndexNode.__init__  sF    8HIII 
 r   )rX  r   rn   r  rY  r   ro   r  r2  r0   s   @r   rW  rW    sn          OOO! ! ! ! ! ! ! ! ! !r   rW  c                  ^     e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   d fdZ xZS )
MethodNoder   source_objectr  rx   r   r  lparr	  r/  rparc                    t                                          |j        |j        |j        |j        |j        dz              || _        || _        || _        || _        || _	        || _
        d S r1  )r&   r'   r    r"   r@   r]  rx   r  r^  r/  r_  )r)   r]  rx   r  r^  r/  r_  r*   s          r   r'   zMethodNode.__init__  sg    dj$-DKcgcmnocoppp*						r   )r]  r   rx   r  r  r   r^  r  r/  r	  r_  r  r2  r0   s   @r   r\  r\    s          OOOLLL         r   r\  c                  J     e Zd ZU ded<   ded<   ded<   ded<   d	 fdZ xZS )
FunctionNoder   	func_namer  r^  r	  r/  r_  c                    t                                          |j        |j        |j        |j        |j        dz              || _        || _        || _	        || _
        d S r1  )r&   r'   r    r"   r@   r   r   rc  r^  r/  r_  )r)   rc  r^  r/  r_  r*   s        r   r'   zFunctionNode.__init__  sq    )9?I<N[_[jvz  wE  FG  wG  	H  	H  	H"					r   )rc  r   r^  r  r/  r	  r_  r  r2  r0   s   @r   rb  rb    sq                   r   rb  c                  @     e Zd ZU ded<   ded<   ded<   d fdZ xZS )	AssignmentNoder   var_namer  r:  r   rD   c                    t                                          |j        |j        |j                   || _        || _        || _        d S r%   )r&   r'   r    r"   r@   rg  r:  rD   )r)   rg  r:  rD   r*   s       r   r'   zAssignmentNode.__init__"  s?    (.(:KLLL  


r   )rg  r   r:  r  rD   r   r2  r0   s   @r   rf  rf    sb          OOO         r   rf  c                      e Zd ZdS )PlusAssignmentNodeNr   r:   r   r   rj  rj  (  r   r   rj  c                       e Zd ZU  ed          Zded<    ed          Zded<    ed          Zded<    ed          Zded	<   d
ed<   ded<    ed          Z	ded<   d fdZ
 xZS )ForeachClauseNodeFr   r  foreach_T.List[IdNode]varnamesr  r  r   r   itemsrR  blockr_   c                    t                                          |j        |j        |j                   || _        || _        || _        || _        || _	        || _
        || _        d S r%   )r&   r'   r    r"   r@   rm  ro  r  r   rp  rq  r_   )	r)   rm  ro  r  r   rp  rq  r_   r*   s	           r   r'   zForeachClauseNode.__init__6  s[    (.(:KLLL  


$r   )rm  r  ro  rn  r  r  r   r  rp  r   rq  rR  r_   r  )r+   r,   r-   r   rm  r.   ro  r  r   r_   r'   r/   r0   s   @r   rl  rl  +  s          !5e,,,H,,,,$u%000H0000!&E!2!2!2F22225)))E))))OOO"U...J....% % % % % % % % % %r   rl  c                  @     e Zd ZU ded<   ded<   ded<   d
 fd	Z xZS )IfNoder  if_r   	conditionrR  rq  linenodeif_nodec                    t                                          |j        |j        |j                   || _        || _        || _        d S r%   )r&   r'   r    r"   r@   ru  rv  rq  )r)   rw  rx  rv  rq  r*   s        r   r'   zIfNode.__init__H  s?    (.(:KLLL"


r   )rw  r   rx  r  rv  r   rq  rR  r2  r0   s   @r   rt  rt  A  sb          OOO         r   rt  c                  6     e Zd ZU ded<   ded<   d fdZ xZS )ElseNoder  else_rR  rq  c                    t                                          |j        |j        |j                   || _        || _        d S r%   )r&   r'   r    r"   r@   r|  rq  )r)   r|  rq  r*   s      r   r'   zElseNode.__init__T  s7    u{ENCCC



r   )r|  r  rq  rR  r2  r0   s   @r   r{  r{  N  sY                   r   r{  c                  X     e Zd ZU  ed          Zded<   ded<   ded<   d fdZ xZS )IfClauseNodeFr   zT.List[IfNode]ifszT.Union[EmptyNode, ElseNode]	elseblockr  r[   rw  r   c                    t                                          |j        |j        |j                   g | _        t          |j        |j        |j                  | _        d S r%   )r&   r'   r    r"   r@   r  r  r  )r)   rw  r*   s     r   r'   zIfClauseNode.__init__`  sK    (.(:KLLL"8?HNHDUVVr   )rw  r   )r+   r,   r-   r   r  r.   r'   r/   r0   s   @r   r  r  Y  s           %U+++C++++++++W W W W W W W W W Wr   r  c                  J     e Zd ZU ded<   ded<   ded<   ded<   d	 fdZ xZS )
TestCaseClauseNoder  ra   r   rv  rR  rq  rb   c                    t                                          |j        |j        |j                   || _        || _        || _        || _        d S r%   )	r&   r'   r    r"   r@   ra   rv  rq  rb   )r)   ra   rv  rq  rb   r*   s        r   r'   zTestCaseClauseNode.__init__m  sJ    )9?I<NOOO "
&r   )ra   r  rv  r   rq  rR  rb   r  r2  r0   s   @r   r  r  e  sq          ' ' ' ' ' ' ' ' ' 'r   r  c                  T     e Zd ZU ded<   ded<   ded<   ded<   ded<   d	 fdZ xZS )
TernaryNoder   rv  r  r   	trueblockr   
falseblockc                    t                                          |j        |j        |j                   || _        || _        || _        || _        || _	        d S r%   )
r&   r'   r    r"   r@   rv  r   r  r   r  )r)   rv  r   r  r   r  r*   s         r   r'   zTernaryNode.__init__}  sO    )9?I<NOOO"("
$r   )
rv  r   r   r  r  r   r   r  r  r   r2  r0   s   @r   r  r  t  s}          % % % % % % % % % %r   r  c                  p     e Zd ZU  ed          Zded<   ded<    ed          Zded<   d	 fdZ xZS )
ParenthesizedNodeFr   r  r^  r   innerr_  c                    t                                          |j        |j        |j        |j        |j        dz              || _        || _        || _        d S r1  )r&   r'   r    r"   r@   r^  r  r_  )r)   r^  r  r_  r*   s       r   r'   zParenthesizedNode.__init__  sQ    dj%.T[dhdnopdpqqq	
			r   )r^  r  r  r   r_  r  )	r+   r,   r-   r   r^  r.   r_  r'   r/   r0   s   @r   r  r    s          u%(((D((((OOOu%(((D((((         r   r  )r   r   r   r   r   r   rS   notinr   r   r   r   r   r   rS   r  )r   r   r   r   r   r   rS   znot inzT.Mapping[str, COMPARISONS]comparison_mapc                     e Zd Zd>dZd?dZd@dZdAdZdBdZdCdZdBdZ	dDdZ
dEdZdFdZdFdZdFdZdFd ZdFd!ZdFd"ZdFd#ZdFd$ZdFd%ZdFd&ZdFd'ZdFd(ZdGd*ZdGd+ZdHd.ZdId0ZdJd2ZdKd4ZdLd6ZdMd8ZdNd:Z dFd;Z!dEd<Z"d=S )OParserrN   r   r@   c           	         t          |          | _        | j                            |          | _        t	          ddddddd           | _        | j        | _        g | _        |                                  d| _	        d S )Neofr   r   r   r   F)
rM   lexerr   streamr>   currentprevious
current_wsgetsym
in_ternary)r)   rN   r@   s      r   r'   zParser.__init__  sg    4[[
jnnX..#E2q!QEE)+r   	node_typeT.Type[BaseNodeT]r/  T.Anyr  r   r   c                b     ||i |}| j         D ]}|                    |           g | _         |S r%   )r  r   )r)   r  r/  r  nodews_tokens         r   create_nodezParser.create_node  sJ    y$)&)) 	. 	.H##H----r   r#   c           
         | j         | _        	 t          | j                  | _         | j         j        dv rZ| j                            | j                    | j         j        dk    rd S t          | j                  | _         | j         j        dv Xd S d S # t          $ rb t          dd| j         j	        | j         j
        | j         j        | j         j        d         z   | j         j        d         z
  dd           | _         Y d S w xY w)N>   ri   rk   rc   ri   r  r   r   r   r  )r  r  nextr  r?   r  r   StopIterationr>   rA   r    r"   rC   r   s    r   r  zParser.getsym  s?   
	r,,DL,"&FFF&&t|444<#u,,E#DK00	 ,"&FFFFFFF  	r 	r 	r DL,CT\EXZ^ZfZloso{  pE  FG  pH  [H  KO  KW  K`  ab  Kc  [c  ek  mq  r  rDLLLL	rs   AB &'B A(C=<C=c                J    | j                             | j        j                  S r%   )r  r   r  rA   r   s    r   r   zParser.getline  s    z!!$,"9:::r   srG   c                R    | j         j        |k    r|                                  dS dS )NTFr  r?   r  r)   r  s     r   r   zParser.accept  s)    <q  KKMMM4ur   tidsT.Tuple[str, ...]c                R    | j         j        }||v r|                                  |S dS )Nr   r  )r)   r  r?   s      r   
accept_anyzParser.accept_any  s,    l$;;KKMMMJrr   c                    |                      |          rdS t          d| d| j        j         d|                                 | j        j        | j        j                  NTz
Expecting z got .)r   r   r  r?   r   r    r"   r  s     r   expectzParser.expect  s\    ;;q>> 	4E!EE$,2BEEEt||~~W[WcWjlplxl~r   block_startr>   c           	        |                      |          rdS t          d| d| j        j         d|                                 | j        j        | j        j        | j                            |j                  |j        |j                  r  )	r   r2   r  r?   r   r    r"   r  rA   )r)   r  r  s      r   block_expectzParser.block_expect  s    ;;q>> 	4!"Jq"J"Jt|7G"J"J"JDLLNN\`\h\oquq}  rD  FJ  FP  FX  FX  Yd  Yo  Fp  Fp  r}  rD  FQ  FW  X  X  	Xr   rR  c                    |                                  }	 |                     d           n# t          $ r}||_         d }~ww xY w|S )Nr  )	codeblockr  r   r   )r)   rq  es      r   parsezParser.parse  s[      	KK 	 	 	AE	 s   , 
A>Ar   c                *    |                                  S r%   )e1r   s    r   r  zParser.statement  s    wwyyr   c                *   |                                  }|                     d          r|                     t          | j                  }|                                 }t          |t                    s.t          d| 	                                |j
        |j                  t          |j        t                    sJ |                     t          |||          S |                     d          r|                     t          | j                  }|                                 }t          |t                    s.t          d| 	                                |j
        |j                  t          |j        t                    sJ |                     t          |||          S |                     d          r| j        r.t          d| 	                                |j
        |j                  |                     t          | j                  }d| _        |                                 }|                     d           |                     t          | j                  }|                                 }d	| _        |                     t$          |||||          S |S )
Nrw   z$Plusassignment target must be an id.r   z Assignment target must be an id.r   z)Nested ternary operators are not allowed.Tr   F)e2r   r  r  r  r  rI   r   r   r   r    r"   rD   r   rj  rf  r  r  r  )r)   r9  r:  rD   qm_noder  
colon_noder  s           r   r  z	Parser.e1  s5   wwyy;;|$$ 	c''
DMBBHGGIIEdF++ v$%KT\\^^]a]hjnjtuuudj#.....##$6hNNN[["" 	c''
DMBBHGGIIEdF++ N$%G%)\\^^T[$*N N Ndj#.....##ND(EJJJ[[(( 	c N$%P%)\\^^T[$*N N N &&z4=AAG"DO		IKK   ))*dmDDJJ#DO##Kw	:Wabbbr   c                   |                                  }|                     d          r|                     t          | j                  }t          |t                    r.t          d|                                 |j	        |j
                  |                     t          |||                                            }|                     d          |S )NrT   zInvalid or clause.)e3r   r  r  r  rI   r  r   r   r    r"   r>  r)   r9  r:  s      r   r  z	Parser.e2  s    wwyykk$ 	G''
DMBBH$	** N$%9%)\\^^T[$*N N N##FD(DGGIIFFD kk$ 	G r   c                   |                                  }|                     d          r|                     t          | j                  }t          |t                    r.t          d|                                 |j	        |j
                  |                     t          |||                                            }|                     d          |S )NrU   zInvalid and clause.)e4r   r  r  r  rI   r  r   r   r    r"   r@  r  s      r   r  z	Parser.e3!  s    wwyykk%   	H''
DMBBH$	** N$%:%)\\^^T[$*N N N##GT8TWWYYGGD kk%   	H r   c           	        |                                  }t                                          D ]l\  }}|                     |          rR|                     t
          | j                  }|                     t          ||||                                            c S m|                     d          r#| j        	                                }| j        }|                     d          r| j        }| j        t          |          d          | _        t          |j        |j        |j                  }|D ]}	|                    |	           |j        d         |j        d         f|_        |xj        |j        j        |j        z   z  c_        |                     t
          |          }|                     t          d|||                                            S |S )NrV   rS   r   r   r  )e5r  rp  r   r  r  r  rB  r  copyr   r  r    r"   r@   r   rC   rD   r   )
r)   r9  nodenameoperator_typer:  ws	not_tokenin_token	temp_nodews
             r   r  z	Parser.e4+  s   wwyy'5';';'='= 	b 	b#Hm{{8$$ b++JFF''tXW[W^W^W`W`aaaaab ;;u 	\%%''BI{{4   
\="&/#b''((";%hox~xGXYY	 4 4A003333&/&8&;X=Nq=Q%R	"9#8#>#OO++J	BB''xQUQXQXQZQZ[[[r   c                *    |                                  S r%   )e5addsubr   s    r   r  z	Parser.e5A  s    }}r   c                X   ddd}|                                  }	 |                     t          |                                                    }|rW|                     t
          | j                  }|                     t          ||         |||                                            }nn|S )Naddr   )ry   rz   )e5muldivr  tuplekeysr  r  r  rG  r)   op_mapr9  opr:  s        r   r  zParser.e5addsubD  s    
 
 }}	v{{}}!5!566B ++JFF''r
D(TXTaTaTcTcdd	 r   c                Z   dddd}|                                  }	 |                     t          |                                                    }|rW|                     t
          | j                  }|                     t          ||         |||                                            }nn|S )Nmodmuldiv)r}   r|   r   )e6r  r  r  r  r  r  rG  r  s        r   r  zParser.e5muldivS  s    
 

 wwyy	v{{}}!5!566B ++JFF''r
D(TXT[T[T]T]^^	 r   c                   |                      d          rT|                     t          | j                  }|                     t          | j        ||                                           S |                      d          rT|                     t          | j                  }|                     t          | j        ||                                           S |                                 S )NrV   rz   )r   r  r  r  rN  r  e7rP  )r)   r:  s     r   r  z	Parser.e6c  s    ;;u 	P''
DMBBH##GT\8TWWYYOOO;;v 	S''
DMBBH##Jh		RRRwwyyr   c                   |                                  }| j        }|                     d          r|                     t          |          }|                                 }|                     d|           |                     t          | j                  }t          |t                    s.t          d|                                 |j        |j                  t          |j        t                    sJ |                     t           ||||          }d}|r\d}|                     d          rd}|                     |          }|                     d          rd}|                     |          }|\|S )Nrl   rm   z)Function call must be applied to plain idTFrx   rn   )e8r  r   r  r  r/  r  r  rI   r   r   r   r    r"   rD   r   rb  method_call
index_call)r)   r9  r  r^  r/  r_  go_agains          r   r  z	Parser.e7l  sd   wwyyl;;x   		J##J<<D99;;Dh444##J>>DdF++ N$%P%)\\^^T[$*N N Ndj#.....##L$dDIID 	-H{{5!! .''--{{:&& -t,,  	- r   c                   | j         }|                     d          rv|                     t          |          }|                                 }|                     d|           |                     t          | j                  }t          |||          S |                     d          r|                     t          |          }|                                 }|                     d|           |                     t          | j                  }|                     t          |||          S |                     d          r|                     t          |          }| 
                                }	|                     d|           |                     t          | j                  }
|                     t          ||	|
          S |                                 S )Nrl   rm   rn   ro   rp   rq   )r  r   r  r  r  r  r  r  r/  r.  
key_valuesr4  e9)r)   r  r^  r  r_  rn   r/  ro   rp   r  rq   s              r   r  z	Parser.e8  s   l;;x   	##J<<D  Ah444##J>>D$T1d333[[$$ 	''
K@@H99;;Dj+666''
DMBBH##IxxHHH[[!! 	$$Z==E**Jg{333$$Z??E##HeZGGG7799r   c                j   | j         }|                     d          r"d|_        |                     t          |          S |                     d          r"d|_        |                     t          |          S |                     d          r|                     t
          |          S |                     d          r|                     t          |          S |                     d          r|                     t          |          S t          | j         j
        | j         j        | j         j                  S )NrY   Tr\   Frf   rg   )rt   re   rj   rd   )r  r   rD   r  r   r   r   r  r   r  r    r"   r@   )r)   ts     r   r  z	Parser.e9  s   L;;v 	4AG##K333;;w 	4AG##K333;;t 	/##FA...;;x   	3##J222??YZZ 	3##J222,dl.@$,BWXXXr   r	  c                   |                                  }|                     t          | j                  }t	          |t
                    s|                     d          r|j                            |                     t          | j
                             |                    ||                                             |                     d          s|S |j                            |                     t          | j
                             n.t          d|                                 |j        |j                  |                                  }t	          |t
                    |S )Nr   ru   z4Only key:value pairs are valid in dict construction.)r  r  r	  r  rI   r  r   r  r   r  r  r%  r  r   r   r    r"   r)   r  as      r   r  zParser.key_values  s,   NN\4<88Q	** 
	!{{7## H 0 0T] K KLLL$$Q(8(8999{{7++ H 0 0T] K KLLLL$%[%)\\^^QXqwH H H  A Q	** 
	! r   c                   |                                  }|                     t          | j                  }t	          |t
                    s|                     d          rO|j                            |                     t          | j
                             |                    |           n|                     d          r|j                            |                     t          | j
                             t	          |t                    s.t          d|                                 |j        |j                  |                    ||                                             |                     d          s|S |j                            |                     t          | j
                             n|                    |           |S |                                  }t	          |t
                    |S )Nru   r   z*Dictionary key must be a plain identifier.)r  r  r	  r  rI   r  r   r  r   r  r  r  r   r   r   r    r"   r#  r  s      r   r/  zParser.args  s   NN\4<88Q	** 	!{{7##  0 0T] K KLLLW%%  0 0T] K KLLL!!V,, L()U)-17L L LAt~~//000{{7++ H 0 0T] K KLLLL  A! Q	** 	!" r   r]  r\  c           	        |                      t          | j                  }|                                 }t	          |t
                    st	          |t                    rCt	          |t                    r.t          d|                                 |j	        |j
                  t          d|                                 | j        j	        | j        j
                  t	          |j        t                    sJ |                     d           |                      t          | j                  }|                                 }|                      t          | j                  }|                     d           |                      t           ||||||          }|                     d          r|                     |          S |S )Nz$meson does not support float numberszMethod name must be plain idrl   rm   rx   )r  r  r  r  rI   r   r   r   r   r    r"   r  rD   r   r  r/  r\  r   r  )r)   r]  rx   
methodnamer^  r/  r_  methods           r   r  zParser.method_call  s   z4=99WWYY
*f-- 	Z-44 `JPZ9[9[ `$%K%)\\^^]5I=K^` ` ` !?!%1DdlFXZ Z Z**C00000H
DM::yy{{
DL99H!!*mS*dTXZ^__;;u 	,##F+++r   rW  c                   |                      t          | j                  }|                                 }|                     d           |                      t          | j                  }|                      t
          ||||          S )Nro   )r  r  r  r  r  rW  )r)   r]  rn   index_statementro   s        r   r  zParser.index_call  sn    ##J>>..**J##J>>	=(OU]^^^r   rl  c           
        |                      t          | j                  }|                     d           t	          | j        j        t                    sJ |                      t          | j                  g}g }|                     d          r|	                    |                      t          | j                             |                     d           t	          | j        j        t                    sJ |	                    |                      t          | j                             |                     d           |                      t          | j                  }| 
                                }|                                 }|                      t          | j                  }|                      t          |||||||          S )Nrf   ru   r   )r  r  r  r  rI   rD   r   r   r   r   r  r  r  rl  )r)   rm  ro  r  r   rp  rq  r_   s           r   foreachblockzParser.foreachblock  ss   ##J>>D$--s33333$$VT];;<;;w 	EMM$**:t}EEFFFKKdm1377777OOD,,VT]CCDDDG  T];;    %%j$,??
 18XvuV[]bdnooor   r  c           	        |                      t          | j                  }|                                 }|                      t          |          }|                     d           |                                 }|j                            |                      t          ||||                     | 
                    |           |                                 |_        |                      t          | j                  |_        |S Nri   )r  r  r  r  r  r  r  r  r   rt  elseifblockr  r  r[   )r)   rx  rv  clauserq  s        r   ifblockzParser.ifblock  s    "":t}==NN$$	!!,	::E  
$**667IuUUVVV   >>++''
DLAAr   r  c           	        |                      d          r|                     t          | j                  }|                                 }|                     d           |                                 }|j                            |                     t          ||||                     |                      d          d S d S )NrW   ri   )
r   r  r  r  r  r  r  r  r   rt  )r)   r  elif_r  bs        r   r  zParser.elseifblock  s    kk&!! 	H$$Z??E  AKK  AJd..vq%AFFGGG kk&!! 	H 	H 	H 	H 	Hr   T.Union[ElseNode, EmptyNode]c                <   |                      d          rY|                     t          | j                  }|                     d           |                                 }t          ||          S t          | j        j	        | j        j
        | j        j                  S )NrX   ri   )r   r  r  r  r  r  r{  r  r  r    r"   r@   )r)   r|  rq  s      r   r  zParser.elseblock  s    ;;v 	*$$Z??EKKNN$$EE5))),dl.@$,BWXXXr   r  c                    |                      t          | j                  }|                                 }|                     d           |                                 }t          | j                  }|                      t          ||||          S r  )r  r  r  r  r  r  r  r  )r)   ra   rv  rq  rb   s        r   testcaseblockzParser.testcaseblock  sv    ##J>>NN$$	E   .. 2HiP[\\\r   c                   | j         }| j         dk    r/t          | j         j        | j         j        | j         j                  S |                     d          r,|                                 }|                     d|           |S |                     d          r,|                                 }|                     d|           |S |                     d          r | 	                    t          | j                   S |                     d          r | 	                    t          | j                   S | j        j        rA|                     d          r,|                                 }|                     d	|           |S |                                 S )
Nri   rR   r[   r]   r_   r^   rZ   ra   rb   )r  r  r    r"   r@   r   r  r  r  r  r  r  r  r   r  r  )r)   r  r  forblockrq  s        r   r   zParser.line&  sh   l<5  T\0$,2DdlF[\\\;;t 	llnnGg{333N;;y!! 	((**HlK888O;;z"" 	@##L$,???;;w 	=##It|<<<:" 	t{{:'>'> 	&&((Em[999L~~r   c                   |                      t          | j                  }d}	 |r| j        D ]}|                    |           g | _        |                                 }t          |t                    s|j        	                    |           | 
                    d          }|n# t          $ r}||_         d }~ww xY w| j        D ]}|                    |           g | _        |S )NTri   )r  rR  r  r  r   r   rI   r  r   r   r   r   r   )r)   rq  condr  r   r  s         r   r  zParser.codeblock<  s     ==	 
* $ 7 7H,,X6666"$))++!'955 0K&&w///{{5))  
*  	 	 	AE	
  	/ 	/H$$X....s   BB' '
B>1B99B>N)rN   r   r@   r   )r  r  r/  r  r  r  r   r   )r   r#   r  )r  r   r   rG   )r  r  r   r   )r  r   r  r>   r   rG   )r   rR  )r   r   )r   r	  )r]  r   r   r\  )r]  r   r   rW  )r   rl  )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    s                 r r r r; ; ; ;      @ @ @ @
X X X X
         @         ,                0   .Y Y Y Y    "   .   (_ _ _ _p p p p(
 
 
 
H H H HY Y Y Y] ] ] ]       ,     r   r  )r   r   r   r   )K
__future__r   dataclassesr   r   r   r   r   typingTmesonlibr   r   r   TYPE_CHECKINGtyping_extensionsr	   r   r
   TypeVarr   r   UNICODEVERBOSEr   r   r   r2   r!   r   rG   r;   Genericr>   r   rM   r   r   r   r   r   r   r   r  r  r  r	  r.  r4  r  r8  r>  r@  rB  rG  rK  rN  rP  rR  rW  r\  rb  rf  rj  rl  rt  r{  r  r  r  r  rC  r  r.   r  r:   r   r   <module>r     s
   # " " " " " " ( ( ( ( ( ( ( ( 				  				     $ $ $ $ $ $      ? 9))))))	+Z888I 'BJ (	 *rz
!# # D D D D    ^       .   B 	/3T::
e    AIm$   " 2:.//|J |J |J |J |J |J |J |J| !+ !+ !+ !+ !+ !+ !+ !+H t" " " " "X " " " t' ' ' ' 'QY}-x ' ' '	 	 	 	 	.& 	 	 		 	 	 	 	^C  	 	 	 t' ' ' ' '$ ' ' ' tK K K K K$ K K K&	 	 	 	 	> 	 	 		 	 	 	 	 	 	 		 	 	 	 	$ 	 	 	 t13 13 13 13 138 13 13 13f t
! 
! 
! 
! 
! 
! 
! 
! t
 
 
 
 
x 
 
 
	 	 	 	 	 	 	 	 t
 
 
 
 
 
 
 
	 	 	 	 	 	 	 		 	 	 	 	  	 	 	 t    '    t# # # # #' # # # t       	 	 	 	 	 	 	 		 	 	 	 	" 	 	 	 t/ / / / /H / / /$ t! ! ! ! ! ! ! ! t       $ t    8    t
 
 
 
 
X 
 
 
	 	 	 	 	 	 	 	 t% % % % % % % %* t
 
 
 
 
X 
 
 
 t    x    t	W 	W 	W 	W 	W8 	W 	W 	W t' ' ' ' ' ' ' ' t% % % % %( % % %" t
 
 
 
 
 
 
 
 ? KIJK 




	/ 	/ 	 	 	 	4e e e e e e e e e er   