
    E2iFm                        U d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZmZmZ dd	lmZmZmZ eZeed
<    G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z! G d de!          Z" G d de"          Z# ed           G d d                       Z$ ed           G d! d"e$                      Z%dS )#    N)	dataclass)Enum)AnyCallableDictListOptionalSequenceUnion)Example)	FieldInfo)	AnnotatedLiteral
deprecated   )PYDANTIC_V2PYDANTIC_VERSION_MINOR_TUPLE	Undefined_Unsetc                       e Zd ZdZdZdZdZdS )
ParamTypesqueryheaderpathcookieN)__name__
__module____qualname__r   r   r   r        M/var/www/html/pixcura-vrs/venv/lib/python3.11/site-packages/fastapi/params.pyr   r      s"        EFDFFFr    r   c            ?           e Zd ZU eed<   efeddedddddddddddddeeeeededdddddedee	g ef         df         de
e         de
e         d	eedf         d
eedf         deedf         de
e         de
e         de
e         de
e         de
e         de
e         de
e         de
e         de
e         dee
e          ed          f         deedf         deedf         deedf         deedf         deedf         deedf         de
ee                  dee
e          ed          f         d e
eeef                  d!eeeedf         d"ed#eeeef         df         d$ef< fd%Zd&efd'Z xZS )(Paramin_NTdefault_factory
annotationaliasalias_priorityvalidation_aliasserialization_aliastitledescriptiongtgeltle
min_length
max_lengthpatternregexdiscriminatorstrictmultiple_ofallow_inf_nan
max_digitsdecimal_placesexamplesexampleopenapi_examplesr   include_in_schemajson_schema_extradefaultr&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   EDeprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead.r6   r7   r8   r9   r:   r;   r<   r=   nDeprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, although still supported. Use examples instead.r>   r   r?   r@   extrac          	      b   |t           urt          j        dt          d           || _        || _        || _        t          di d|d|d|d|d|	d	|
d
|d|d|d|d|d|d|d|d|d||}|||d<   |t          j        dt          d           |p|} t          dk     r|| _	        n||d<   t          r$|                    |||||| d           |p||d<   n|p||d<    |j        di |  d |                                D             }! t                      j        di |! d S )N<`example` has been deprecated, please use `examples` instead   category
stacklevelrA   r&   r(   r,   r-   r.   r/   r0   r1   r2   r3   r6   r8   r9   r:   r;   r<   9`regex` has been deprecated, please use `pattern` instead      r   r'   r)   r*   r+   r7   r@   r4   r5   c                 ,    i | ]\  }}|t           u||S r   r   .0kvs      r!   
<dictcomp>z"Param.__init__.<locals>.<dictcomp>   #    IIItq!&ar    r   )r   warningswarnDeprecationWarningr=   r?   r>   dictr   r   r   updateitemssuper__init__)#selfrA   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r   r?   r@   rD   kwargscurrent_json_schema_extra
use_kwargs	__class__s#                                     r!   r_   zParam.__init__   s<   ^ &  MN+   
 !2 0 
 
 
G
+O
 %
 %	

 $
 r
 r
 r
 r
 "z
 "z
 (-
 $
 (-
 "z
  *>#
 
& !)F:MK+   
 %6$>!'&00(DOO#-F<  	7MM",&4(8+>$)B 	 	 	 !( 05F9%.F7OFM665666IIv||~~III
&&:&&&&&r    returnc                 0    | j         j         d| j         dS N()rd   r   rA   r`   s    r!   __repr__zParam.__repr__        .);;DL;;;;r    )r   r   r   r   __annotations__r   r   r   r   r   r	   strintfloatr   r   boolr   r   r   r_   rl   __classcell__rd   s   @r!   r#   r#      sG        	OOO !i' ;A$(#+1 .204#%)""""$($(!% *.$**0+1'-+1(, 9=9="&9=Yi' i' i'i' xC0$67	i'
 SMi' }i' c4i(i'  T	*i' #39-i' }i' c]i' UOi' UOi'  UO!i'" UO#i'$ SM%i'& SM'i'( #)i'* SMJW 
+i'6 S$Y'7i'8 dDj!9i': 5$;';i'< T4Z(=i'> #t)$?i'@ c4i(Ai'B 49%Ci'D SMJB 
Ei'R #4W#56Si'T *c456Ui'V  Wi'X !c3h!56Yi'Z [i' i' i' i' i' i'V<# < < < < < < < <r    r#   c            ?           e Zd Zej        Z	 d&eddedddddddddddddeeeeededdddddedee	g ef         df         de
e         de
e         d	eedf         d
eedf         deedf         de
e         de
e         de
e         de
e         de
e         de
e         de
e         de
e         de
e         dee
e          ed          f         deedf         deedf         deedf         deedf         deedf         deedf         de
ee                  dee
e          ed          f         d e
eeef                  d!eeeedf         d"ed#eeeef         df         d$ef< fd%Z xZS )'Path.NTr%   rA   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   rB   r6   r7   r8   r9   r:   r;   r<   r=   rC   r>   r   r?   r@   rD   c                   |du s
J d            | j         | _          t                      j        d i d|d|d|d|d|d|d	|d
|d|	d|
d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|| d S )!N.z+Path parameters cannot have a default valuerA   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r   r=   r<   r>   r?   r@   r   )r$   r^   r_    r`   rA   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r   r?   r@   rD   rd   s                                   r!   r_   zPath.__init__   s   ^ #~~~L~~~8 	
 	
 	
G	
+O	
 "z	
 %		

 *>	
 .-	
 !4 3	
 %	
 $	
 r	
 r	
 r	
 r	
 "z	
 "z	
  G!	
" %#	
$ (-%	
& 6'	
( $)	
* (-+	
, "z-	
. *>/	
0 "z1	
2 G3	
4 X5	
6 .-7	
8 0/9	
: 0/=	
 	
 	
 	
 	
r    ).)r   r   r   r   r   r$   r   r   r   r   r	   ro   rp   rq   r   r   rr   r   r   r   r_   rs   rt   s   @r!   rv   rv      s+       
/C P
 ;A$(#+1 .204#%)""""$($(!% *.$**0+1'-+1(, 9=9="&9=YP
 P
 P
P
 xC0$67	P

 SMP
 }P
 c4i(P
  T	*P
 #39-P
 }P
 c]P
 UOP
 UOP
  UO!P
" UO#P
$ SM%P
& SM'P
( #)P
* SMJW 
+P
6 S$Y'7P
8 dDj!9P
: 5$;';P
< T4Z(=P
> #t)$?P
@ c4i(AP
B 49%CP
D SMJB 
EP
R #4W#56SP
T *c456UP
V  WP
X !c3h!56YP
Z [P
 P
 P
 P
 P
 P
 P
 P
 P
 P
r    rv   c            ?           e Zd Zej        Zefeddedddddddddddddeeeeededdddddede	e
g ef         df         dee         dee         de	edf         d	e	edf         d
e	edf         dee         dee         dee         dee         dee         dee         dee         dee         dee         deee          ed          f         de	edf         de	edf         de	edf         de	edf         de	edf         de	edf         deee                  deee          ed          f         deeeef                  d e	eeedf         d!ed"e	eeef         df         d#ef< fd$Z xZS )%QueryNTr%   rA   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   rB   r6   r7   r8   r9   r:   r;   r<   r=   rC   r>   r   r?   r@   rD   c                     t                      j        di d|d|d|d|d|d|d|d|d	|	d
|
d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|| d S NrA   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r   r=   r<   r>   r?   r@   r   r^   r_   rx   s                                   r!   r_   zQuery.__init__      ^ 	 	
 	
 	
G	
+O	
 "z	
 %		

 *>	
 .-	
 !4 3	
 %	
 $	
 r	
 r	
 r	
 r	
 "z	
 "z	
  G!	
" %#	
$ (-%	
& 6'	
( $)	
* (-+	
, "z-	
. *>/	
0 "z1	
2 G3	
4 X5	
6 .-7	
8 0/9	
: 0/=	
 	
 	
 	
 	
r    )r   r   r   r   r   r$   r   r   r   r   r   r	   ro   rp   rq   r   r   rr   r   r   r   r_   rs   rt   s   @r!   rz   rz      s,       

C !N
 ;A$(#+1 .204#%)""""$($(!% *.$**0+1'-+1(, 9=9="&9=YN
 N
 N
N
 xC0$67	N

 SMN
 }N
 c4i(N
  T	*N
 #39-N
 }N
 c]N
 UON
 UON
  UO!N
" UO#N
$ SM%N
& SM'N
( #)N
* SMJW 
+N
6 S$Y'7N
8 dDj!9N
: 5$;';N
< T4Z(=N
> #t)$?N
@ c4i(AN
B 49%CN
D SMJB 
EN
R #4W#56SN
T *c456UN
V  WN
X !c3h!56YN
Z [N
 N
 N
 N
 N
 N
 N
 N
 N
 N
r    rz   c            A           e Zd Zej        Zefeddeddddddddddddddeeeeededdddddede	e
g ef         df         dee         dee         de	edf         d	e	edf         d
e	edf         dedee         dee         dee         dee         dee         dee         dee         dee         dee         deee          ed          f         de	edf         de	edf         de	edf         de	edf         de	edf         de	edf         deee                  deee          ed          f         d eeeef                  d!e	eeedf         d"ed#e	eeef         df         d$ef> fd%Z xZS )&HeaderNT)r&   r'   r(   r)   r*   r+   convert_underscoresr,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r   r?   r@   rA   r&   r'   r(   r)   r*   r+   r   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   rB   r6   r7   r8   r9   r:   r;   r<   r=   rC   r>   r   r?   r@   rD   c                    || _          t                      j        di d|d|d|d|d|d|d|d|	d	|
d
|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|| d S r|   )r   r^   r_   )!r`   rA   r&   r'   r(   r)   r*   r+   r   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r   r?   r@   rD   rd   s!                                   r!   r_   zHeader.__init__9  s   ` $7  	
 	
 	
G	
+O	
 "z	
 %		

 *>	
 .-	
 !4 3	
 %	
 $	
 r	
 r	
 r	
 r	
 "z	
 "z	
  G!	
" %#	
$ (-%	
& 6'	
( $)	
* (-+	
, "z-	
. *>/	
0 "z1	
2 G3	
4 X5	
6 .-7	
8 0/9	
: 0/=	
 	
 	
 	
 	
r    )r   r   r   r   r   r$   r   r   r   r   r   r	   ro   rp   rr   rq   r   r   r   r   r   r_   rs   rt   s   @r!   r   r   6  s<       

C !P
 ;A$(#+1 .204$(#%)""""$($(!% *.$**0+1'-+1(, 9=9="&9=[P
 P
 P
P
 xC0$67	P

 SMP
 }P
 c4i(P
  T	*P
 #39-P
 "P
 }P
 c]P
 UOP
  UO!P
" UO#P
$ UO%P
& SM'P
( SM)P
* #+P
, SMJW 
-P
8 S$Y'9P
: dDj!;P
< 5$;'=P
> T4Z(?P
@ #t)$AP
B c4i(CP
D 49%EP
F SMJB 
GP
T #4W#56UP
V *c456WP
X  YP
Z !c3h!56[P
\ ]P
 P
 P
 P
 P
 P
 P
 P
 P
 P
r    r   c            ?           e Zd Zej        Zefeddedddddddddddddeeeeededdddddede	e
g ef         df         dee         dee         de	edf         d	e	edf         d
e	edf         dee         dee         dee         dee         dee         dee         dee         dee         dee         deee          ed          f         de	edf         de	edf         de	edf         de	edf         de	edf         de	edf         deee                  deee          ed          f         deeeef                  d e	eeedf         d!ed"e	eeef         df         d#ef< fd$Z xZS )%CookieNTr%   rA   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   rB   r6   r7   r8   r9   r:   r;   r<   r=   rC   r>   r   r?   r@   rD   c                     t                      j        di d|d|d|d|d|d|d|d|d	|	d
|
d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|| d S r|   r}   rx   s                                   r!   r_   zCookie.__init__  r~   r    )r   r   r   r   r   r$   r   r   r   r   r   r	   ro   rp   rq   r   r   rr   r   r   r   r_   rs   rt   s   @r!   r   r     s,       

C !N
 ;A$(#+1 .204#%)""""$($(!% *.$**0+1'-+1(, 9=9="&9=YN
 N
 N
N
 xC0$67	N

 SMN
 }N
 c4i(N
  T	*N
 #39-N
 }N
 c]N
 UON
 UON
  UO!N
" UO#N
$ SM%N
& SM'N
( #)N
* SMJW 
+N
6 S$Y'7N
8 dDj!9N
: 5$;';N
< T4Z(=N
> #t)$?N
@ c4i(AN
B 49%CN
D SMJB 
EN
R #4W#56SN
T *c456UN
V  WN
X !c3h!56YN
Z [N
 N
 N
 N
 N
 N
 N
 N
 N
 N
r    r   c            C           e Zd Zefeddddedddddddddddddeeeeededdddddedeeg ef         df         dee         dee	df         d	e
d
ee
         deedf         dee
df         dee
df         dee
         dee
         dee         dee         dee         dee         dee         dee         dee
         deee
          ed          f         dee
df         dee	df         deedf         dee	df         deedf         deedf         deee                  d eee          ed!          f         d"eee
ef                  d#eee
e	df         d$e	d%eee
ef         df         d&ef@ fd'Zd(e
fd)Z xZS )*BodyNzapplication/jsonT)r&   r'   embed
media_typer(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r   r?   r@   rA   r&   r'   r   r   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   rB   r6   r7   r8   r9   r:   r;   r<   r=   rC   r>   r   r?   r@   rD   c          	      ~   || _         || _        |t          urt          j        dt
          d           || _        || _        || _        t          di d|d|d|d|
d|d	|d
|d|d|d|d|d|d|d|d|d|| }!|||!d<   |t          j        dt
          d           |p| }"t          dk     r|| _        n||!d<   t          r$|!                    ||||	||"d           |p||!d<   n|p||!d<    |!j        di |" d |!                                D             }# t                      j        di |# d S )NrF   rG   rH   rA   r&   r(   r,   r-   r.   r/   r0   r1   r2   r3   r6   r8   r9   r:   r;   r<   rK   rL   r   rO   r4   r5   c                 ,    i | ]\  }}|t           u||S r   rQ   rR   s      r!   rV   z!Body.__init__.<locals>.<dictcomp>M  rW   r    r   )r   r   r   rX   rY   rZ   r=   r?   r>   r[   r   r   r   r\   r]   r^   r_   )%r`   rA   r&   r'   r   r   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r   r?   r@   rD   ra   rb   rc   rd   s%                                       r!   r_   zBody.__init__  sJ   b 
$&  MN+   
 !2 0 
 
 
G
+O
 %
 %	

 $
 r
 r
 r
 r
 "z
 "z
 (-
 $
 (-
 "z
  *>#
 
& !)F:MK+   
 %6$>!'&00(DOO#-F<  	7MM",&4(8+>$)B 	 	 	 !( 05F9%.F7OFM665666IIv||~~III
&&:&&&&&r    re   c                 0    | j         j         d| j         dS rg   rj   rk   s    r!   rl   zBody.__repr__Q  rm   r    )r   r   r   r   r   r   r   r   r	   rr   ro   rp   rq   r   r   r   r   r   r_   rl   rs   rt   s   @r!   r   r     se        !n' ;A$(#',#+1 .204#%)""""$($(!% *.$**0+1'-+1(, 9=9="&9=]n' n' n'n' xC0$67	n'
 SMn' T4Z n' n' }n' c4i(n'  T	*n' #39-n' }n' c]n'  UO!n'" UO#n'$ UO%n'& UO'n'( SM)n'* SM+n', #-n'. SMJW 
/n': S$Y';n'< dDj!=n'> 5$;'?n'@ T4Z(An'B #t)$Cn'D c4i(En'F 49%Gn'H SMJB 
In'V #4W#56Wn'X *c456Yn'Z  [n'\ !c3h!56]n'^ _n' n' n' n' n' n'`<# < < < < < < < <r    r   c            A           e Zd Zefedddedddddddddddddeeeeededdddddedeeg ef         df         dee         de	d	ee	         d
ee
df         dee	df         dee	df         dee	         dee	         dee         dee         dee         dee         dee
         dee
         dee	         deee	          ed          f         dee	df         deedf         deedf         deedf         dee
df         dee
df         deee                  deee          ed           f         d!eee	ef                  d"eee	edf         d#ed$eee	ef         df         d%ef> fd&Z xZS )'FormNz!application/x-www-form-urlencodedTr&   r'   r   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r   r?   r@   rA   r&   r'   r   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   rB   r6   r7   r8   r9   r:   r;   r<   r=   rC   r>   r   r?   r@   rD   c                     t                      j        di d|d|d|d|d|d|d|d|d	|	d
|
d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|| d S  NrA   r&   r'   r   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r   r=   r<   r>   r?   r@   r   r}   !r`   rA   r&   r'   r   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r   r?   r@   rD   rd   s!                                   r!   r_   zForm.__init__V     ` 	  	
  	
  	
G 	
+O 	
 "z 	
 "z	 	

 % 	
 *> 	
 .- 	
 !4 3 	
 % 	
 $ 	
 r 	
 r 	
 r 	
 r 	
 "z 	
  "z! 	
" G# 	
$ %% 	
& (-' 	
( 6) 	
* $+ 	
, (-- 	
. "z/ 	
0 *>1 	
2 "z3 	
4 G5 	
6 X7 	
8 .-9 	
: 0/; 	
< 0/? 	
  	
  	
  	
  	
r    r   r   r   r   r   r   r   r   r	   ro   rp   rq   r   r   rr   r   r   r   r_   rs   rt   s   @r!   r   r   U  s4        !P
 ;A$(=#+1 .204#%)""""$($(!% *.$**0+1'-+1(, 9=9="&9=[P
 P
 P
P
 xC0$67	P

 SMP
 P
 }P
 c4i(P
  T	*P
 #39-P
 }P
 c]P
 UOP
  UO!P
" UO#P
$ UO%P
& SM'P
( SM)P
* #+P
, SMJW 
-P
8 S$Y'9P
: dDj!;P
< 5$;'=P
> T4Z(?P
@ #t)$AP
B c4i(CP
D 49%EP
F SMJB 
GP
T #4W#56UP
V *c456WP
X  YP
Z !c3h!56[P
\ ]P
 P
 P
 P
 P
 P
 P
 P
 P
 P
r    r   c            A           e Zd Zefedddedddddddddddddeeeeededdddddedeeg ef         df         dee         de	d	ee	         d
ee
df         dee	df         dee	df         dee	         dee	         dee         dee         dee         dee         dee
         dee
         dee	         deee	          ed          f         dee	df         deedf         deedf         deedf         dee
df         dee
df         deee                  deee          ed           f         d!eee	ef                  d"eee	edf         d#ed$eee	ef         df         d%ef> fd&Z xZS )'FileNzmultipart/form-dataTr   rA   r&   r'   r   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   rB   r6   r7   r8   r9   r:   r;   r<   r=   rC   r>   r   r?   r@   rD   c                     t                      j        di d|d|d|d|d|d|d|d|d	|	d
|
d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|| d S r   r}   r   s!                                   r!   r_   zFile.__init__  r   r    r   rt   s   @r!   r   r     s4        !P
 ;A$(/#+1 .204#%)""""$($(!% *.$**0+1'-+1(, 9=9="&9=[P
 P
 P
P
 xC0$67	P

 SMP
 P
 }P
 c4i(P
  T	*P
 #39-P
 }P
 c]P
 UOP
  UO!P
" UO#P
$ UO%P
& SM'P
( SM)P
* #+P
, SMJW 
-P
8 S$Y'9P
: dDj!;P
< 5$;'=P
> T4Z(?P
@ #t)$AP
B c4i(CP
D 49%EP
F SMJB 
GP
T #4W#56UP
V *c456WP
X  YP
Z !c3h!56[P
\ ]P
 P
 P
 P
 P
 P
 P
 P
 P
 P
r    r   T)frozenc                   r    e Zd ZU dZeedef                  ed<   dZe	ed<   dZ
eed         df         ed<   dS )DependsN.
dependencyT	use_cache)functionrequestscope)r   r   r   r   r	   r   r   rn   r   rr   r   r   r   r   r    r!   r   r     s`         /3J#s(+,333It9=E5./56=====r    r   c                   6    e Zd ZU dZeee                  ed<   dS )SecurityNscopes)r   r   r   r   r	   r
   ro   rn   r   r    r!   r   r     s+         &*FHXc]#*****r    r   )&rX   dataclassesr   enumr   typingr   r   r   r   r	   r
   r   fastapi.openapi.modelsr   pydantic.fieldsr   typing_extensionsr   r   r   _compatr   r   r   r   rn   r   r#   rv   rz   r   r   r   r   r   r   r   r   r    r!   <module>r      sB    ! ! ! ! ! !       G G G G G G G G G G G G G G G G G G * * * * * * % % % % % % < < < < < < < < < <                    o< o< o< o< o<I o< o< o<dS
 S
 S
 S
 S
5 S
 S
 S
lQ
 Q
 Q
 Q
 Q
E Q
 Q
 Q
hS
 S
 S
 S
 S
U S
 S
 S
lQ
 Q
 Q
 Q
 Q
U Q
 Q
 Q
hr< r< r< r< r<9 r< r< r<jQ
 Q
 Q
 Q
 Q
4 Q
 Q
 Q
hQ
 Q
 Q
 Q
 Q
4 Q
 Q
 Q
h $> > > > > > > > $+ + + + +w + + + + +r    