
    ~U e'U                        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 d dlZd dlmZm	Z	 d dl
mZ d dlZd dlZd d	lmZ d d
lmZ  G d dej                  Z e	 ej        d                               e ddddd                               e	 e ddddd                     e	 e dddddej                             e	 eddd                     e	 eddd                     e	 eddd                    gZd Zej                            deeeg          ej                            de          ej                            de          d                                     Zej                            de          d             Z G d dej                  Z G d  d!ej                  ZdS )"    )date)datetime)time)	timedelta)
ParametersN)	vDatetime	vDDDTypes)WINDOWS_TO_OLSON)deepcopy)tzc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestPropc                    ddl m} d}d}|                      ||                                          |           |                     |                    |          |           d}d}|                      ||                                          |           |                     |                    |          |           |                      |d          j        t                     |                      |d          j        dd	d
           d}d}|                      ||                                          |           |                     |                    |          |           d S )N   )vBinarys   This is gibberishs   VGhpcyBpcyBnaWJiZXJpc2g=s   Binary data  Vs   QmluYXJ5IGRhdGEgEyBWtxtBINARYBASE64)VALUEENCODINGsc   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas   YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh)propr   assertEqualto_ical	from_icalassertIsInstanceparamsr   )selfr   r   txt_icals       b/var/www/dev/btcams2023/python_venv/lib/python3.11/site-packages/icalendar/tests/test_unit_prop.pytest_prop_vBinaryzTestProp.test_prop_vBinary   sw   """"""".--//:::**844c::: '*--//:::**844c:::ggenn3Z@@@GENN!X8#L#L	
 	
 	

 --//:::**844c:::::    c                    ddl m} |                      |d                                          d           |                      |d                                          d           |                     |                     |d                                                    d           |                     |                    d          d           d S )Nr   )vBooleanTs   TRUEr   s   FALSEtrue)r   r#   r   r   r   )r   r#   s     r   test_prop_vBooleanzTestProp.test_prop_vBoolean*   s    ######$//117;;;!,,..999 	++HHTNN,B,B,D,DEEtLLL++F33T:::::r!   c                 \   ddl m} d} ||          }d|j        d<   |                     |                                |           |                     |j        t                     |                     |j        ddi           |                     |                    |          d           d S )Nr   )vCalAddresss   MAILTO:maxm@mxm.dkzMax McnCNzMAILTO:maxm@mxm.dk)r   r'   r   r   r   r   r   r   )r   r'   r   as       r   test_prop_vCalAddresszTestProp.test_prop_vCalAddress4   s    &&&&&&#K c***ah
333D'?333..s335IJJJJJr!   c                 (   ddl m} |                      |d                                          d           |                     |                    d          d           |                      |d                                          d           d S )	Nr   )vFloatg      ?s   1.042g      E@*   s   42.0)r   r-   r   r   r   )r   r-   s     r   test_prop_vFloatzTestProp.test_prop_vFloat?   s    !!!!!!,,..777))$//666++--w77777r!   c                    ddl m} |                      |d                                          d           |                     |                    d          d           |                     t          |j        d           d S )Nr   )vIntr/   s   4213   1s3)r   r2   r   r   r   assertRaises
ValueError)r   r2   s     r   test_prop_vIntzTestProp.test_prop_vIntE   s    b))++U333--r222*dne<<<<<r!   c                 *   ddl m} |                    d          }|                     t	          |t
                               |                     t          |          d           |                     t	          |d         t                               |                     t          |d                   d           d}|                    |          }|                     t          |          d           |                     t          |d                   d           |                     t          |d                   d	            |g           }|                     |
                                d
            |t          ddd          g          }|                     |
                                d            |t          ddd          t          ddd          g          }|                     |
                                d           d S )Nr   )	vDDDLists19960402T010000Z   r   z1996-04-02 01:00:00+00:00z219960402T010000Z,19960403T010000Z,19960404T010000Z   z1996-04-04 01:00:00+00:00r!     s   20000101T000000   s   20000101T000000,20001111T000000)r   r:   r   
assertTrue
isinstancelistr   lenr   strr   )r   r:   dt_listps       r   test_prop_vDDDListszTestProp.test_prop_vDDDListsK   s   $$$$$$%%&899
7D11222Wq)))
71:x88999WQZ*EFFF@%%a((Wq)))WQZ*EFFFWQZ*EFFF)B--**C000)XdAq11233**,>???)XdAq118D"b3I3IJKK**,NOOOOOr!   c                    ddl m} |                     t           |j        d          t
                               |                      |j        d          t          j        	                    t          ddddd                               |                     t           |j        d	          t                               |                      |j        d
          t          d                     |                      |j        d          t          d                     |                     t          |d           d S )Nr   )r	   20010101T12300020010101T123000Z  r<         20010101P31D   z-P31Dir/   )r   r	   r@   rA   r   r   r   pytzutclocalizer   r   r6   r7   )r   r	   s     r   test_prop_vDDDTypeszTestProp.test_prop_vDDDTypesc   s;   $$$$$$
#69#67H#I#I#+- - 	. 	. 	. 	,,-?@@**8D!QB+G+GHH	J 	J 	J 	
#69#6z#B#BDIIJJJ,,V44immDDD,,W55y~~FFF 	*i44444r!   c           	         ddl m} |                      |t          ddd                                                    d           |                      |t          ddd                                                    d           |                     |                    d          t          ddd                     |                     t          |d	           d S )
Nr   )vDaterK   r<   s   20010101k  s   1899010120010102d)r   rV   r   r   r   r   r6   r7   )r   rV   s     r   test_prop_vDatezTestProp.test_prop_vDateu   s          tD!Q//0088::KHHHtD!Q//0088::KHHH44d4A6F6FGGG*eS11111r!   c           
      (   ddl m} t          dddddd          }|                      ||                                          d           |                      |j        d	          t          d
dddd                     t          j                            t          dddddd                    }|                      ||                                          d           t          j                            t          dddddd                    }|                      ||                                          d           |                      |j        d          t          ddddd                     | 	                    t          |j        d            |j        d          }|                      ||                                          d            |j        dd          }|                     |                    d          d            |j        dd          }|                     |                    d          d            |j        dd          }|                      ||                                          d           d S )Nr   )r   rK   r<   rL   rM   r   s   20010101T12300020000101T120000r>   s   20010101T123000ZrW   s   18990101T123000Z20010101T00000020010101T000000A20010101T000000Zs   20010101T000000Z20120311T015959zAmerica/Denverz%Y%m%d%H%M%S %zz20120311015959 -070020120311T030000z20120311030000 -060020101010T000000Europe/Viennas   20101010T000000)r   r   r   r   r   r   rQ   rR   rS   r6   r7   strftime)r   r   dtdutcrR   dats         r   test_prop_vDatetimezTestProp.test_prop_vDatetime   s   $$$$$$dAq"b!,,2..002DEEE,,->??!$1b!44	6 	6 	6 x  $1b"a!@!@AA400224GHHHx  $1b"a!@!@AA400224GHHH,,->??!$1a33	5 	5 	5 	*i&9;MNNN!i!"4553//113FGGG "i!"35EFF&788/	1 	1 	1 "i!"35EFF&788/	1 	1 	1 "i!"3_EE3//113EFFFFFr!   c                    ddl m} |                      |t          d                                                    d           |                      |t          d                                                    d           |                      |t          dd                                                    d	           |                      |t          dd
                                                    d           |                      |t          dd                                                    d           |                      |t          dd                                                    d           |                      |t          dd                                                    d           |                      |t          dd                                                    d           |                      |t          dd                                                    d           |                      |t          dd                                                    d           |                      |t          dd                                                    d           |                      |t          d                                                    d           |                      |t          dd                                                    d           |                     |                    d          t          dd                     |                     t          |j        d            |                     |                    d!          t          d                     |                     t          |d            |t          dd                    }|                     |                                d           |                     |                                d           d S )"Nr   )	vDurationr?   s   P11Dis   -P14Dr<   i  s
   P1DT2H3M4Si  s   P1DT2H3M   s   P1DT2Hr   s   PT2Hs   PT2H3M4S   s   PT3M4S   s   PT22Si&  s	   PT1H0M22S   )dayshourss   P1DT5Hrp   s   -PT5Hs   -P1DT5H	PT1H0M22Skoxz-P14D)r   rj   r   r   r   r   r6   r7   )r   rj   durations      r   test_prop_vDurationzTestProp.test_prop_vDuration   s   $$$$$$9R==1199;;WEEE9S>>22::<<hGGGIi4(())1133	
 	
 	
 	9Q#5#566>>@@+NNN9Q#5#566>>@@)LLL9Q#5#566>>@@'JJJ9Q#5#566>>@@+NNN9Q#4#455==??KKK9Q#3#344<<>>III9Q#5#566>>@@,OOO9!1#=#=#=>>FFHH"	$ 	$ 	$92#6#6#677??AA8LLL9"B#?#?#?@@HHJJ#	% 	% 	% 	,,[999Q;M;MNNN*i&95AAA,,W55y~~FFF*i444 9YBb999::))++Z888))++Z88888r!   c                    ddl m} t          ddd          t          ddd          f}|                      ||                                          d           t          ddd          t          d          f}|                      ||                                          d           |                    d	          }|                     |t          dddd
d
          t          dddd
d
          f           |                      ||                                          d           |                     |                    d          t          dddd
d
          t          d          f           |                    d          }|                      ||                                          d           |                     t          |j        d           t          j
        d          }|                    t          ddd                    }|                    t          ddd                    }||f}|                      ||                                          d           |                      ||          j        d         d            ||                    t          ddd                    t          d          f          }|                     |                                d           d S )Nr   )vPeriodr>   r<   s   20000101T000000/20000102T000000rP   )ro   s   20000101T000000/P31Dz20000101T000000/20000102T000000r   z20000101T000000/P31Dz!20000101T000000Z/20000102T000000Zs!   20000101T000000Z/20000102T000000Zz20000101T000000/Psd31DzEurope/CopenhagenTZID)r   ry   r   r   r   r   r   r6   r7   rQ   timezonerS   r   )r   ry   perrF   dkstartends          r   test_prop_vPeriodzTestProp.test_prop_vPeriod   s   """""" a##XdAq%9%9:--//;	= 	= 	= a##YB%7%7%78--//1HIII ?@@dAq!Q''$1a)C)CD	
 	
 	
 	++--;	= 	= 	= 	**+ABB"4Aq!44immD	F 	F 	F ABB++--=	? 	? 	? 	*!+-E	G 	G 	G ].//HT1a0011kk(4A..//cl--//;	= 	= 	=,V4,	. 	. 	. GR[[$1!5!566	r8J8J8JKLL&=>>>>>r!   c                    ddl m} |                      |d                                          d           |                     t
          |d           |                     |                    d          d           |                     |                    d          d           |                     t
          |j        d	           |                      |d
                                          d           |                      |d                                          d           |                      |d                                          d           d S )Nr   )vWeekdaymos   MOerwerMOz+3moz+3MOSaturdayz+mos   +MOs   +3MOz-tus   -TU)r   r   r   r   r6   r7   r   )r   r   s     r   test_prop_vWeekdayzTestProp.test_prop_vWeekday   s?   ######$//115999*h888++D114888++F33V<<<*h&8*EEE%0022F;;;&))1133W===%0022F;;;;;r!   c                    ddl m} |                     t          |d           |                      |d                                          d           |                      |d                              d          d           d S )Nr   )
vFrequencyzbad testdailys   DAILYMONTHLY)r   r   r6   r7   r   r   r   )r   r   s     r   test_prop_vFrequencyzTestProp.test_prop_vFrequency  s    %%%%%%*j*===G,,4466AAAG,,66yAA9MMMMMr!   c                    ddl m} t          ddd          }|                    ddddgd	d
           |                      ||                                          d            |dd          }|                    ddddgd	d           |                     |                                d            |dd          }g d|d<   |                     |                                d            |dt          dddddd                    }|                     |                                d           |                    d          }|                     |dgdgdgd           |                      ||                                          d           |                    d          }|                     |ddgdgd	gdgdgdgd           |                      ||                                          d            |                    d!          }|                     |d"gdgd#gd$           |                      ||                                          d%           |                    d&          }|                      ||                                          d'           d(}|                    |          }|                      ||                                          d           |                     t          |j        d)           |                    d*          }|                      ||                                          d+           d S ),Nr   )vRecuryearly)freqintervalr<   su   	   rM   )bymonthbydaybyhourbyminutes@   FREQ=YEARLY;INTERVAL=2;BYMINUTE=30;BYHOUR=8,9;BYDAY=SU;BYMONTH=1)FREQINTERVAL)BYMONTHBYDAYBYHOURBYMINUTEDAILY
   )r   count)r      rM   -   byseconds'   FREQ=DAILY;COUNT=10;BYSECOND=0,15,30,45  rL   r   )r   untils    FREQ=DAILY;UNTIL=20050101T120000zFREQ=DAILY;INTERVAL=2;COUNT=10)COUNTr   r   s   FREQ=DAILY;COUNT=10;INTERVAL=2zAFREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=-SU;BYHOUR=8,9;BYMINUTE=30z-SUYEARLY)r   r   r   r   r   r   sA   FREQ=YEARLY;INTERVAL=2;BYMINUTE=30;BYHOUR=8,9;BYDAY=-SU;BYMONTH=1z#FREQ=WEEKLY;INTERVAL=1;BYWEEKDAY=THWEEKLYTH)r   r   	BYWEEKDAYs#   FREQ=WEEKLY;INTERVAL=1;BYWEEKDAY=THz-FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1s-   FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1z@FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU;BYHOUR=8,9;BYMINUTE=30zBYDAY=12z%FREQ=MONTHLY;BYOTHER=TEXT;BYEASTER=-3s%   FREQ=MONTHLY;BYEASTER=-3;BYOTHER=TEXT)
r   r   dictupdater   r   r   r   r6   r7   )r   r   rrF   s       r   test_prop_vRecurzTestProp.test_prop_vRecur  s   !!!!!!
 (2233	!f	
 
 	 	 	 	F1IIO	
 	
 	

 F1---	!f	
 
 	 	 	 	IIKKO	
 	
 	

 Fr***'*C	E 	E 	E FxaB1'E'EFFF&IJJJ =>>$&4'LL	N 	N 	NF1II-	
 	
 	

  6 7 71vbThZaSB B	
 	
 	
 	F1II	
 	
 	
 BCCZaSvFF	
 	
 	

 	F1II2	
 	
 	
 LMM**,,I	K 	K 	K OQF1IIO	
 	
 	
 	*f&6
CCC DEE**,,A	C 	C 	C 	C 	Cr!   c                    ddl m} |                      |d                                          d            |d          }|                     |                                d           |                      |d                                          d            |d	          }|                     |                                d
           |                     |                    d          d           |                    d          }|                     |d           |                     |                    d          d           d S )Nr   )vTextzSimple texts   Simple textzText ; with escaped, charss   Text \; with escaped\, charszText with escaped\N charss   Text with escaped\n charsu   international chars äöüs   international chars äöüzText \; with escaped\, charsz'A string with\; some\\ characters in\itz%A string with; some\ characters in\its   Olu   Ol�)r   r   r   r   r   )r   r   ts      r   test_prop_vTextzTestProp.test_prop_vTexte  sb         }--5577HHH E.//&GHHH 	;<<DDFF6	8 	8 	8
 E455H	J 	J 	J 	)IJJ5	7 	7 	7 OOIJJEFFF
 	33Z@@@@@r!   c                 (   ddl m} |                      |ddd                                          d           |                     |                    d          t          dd                     |                     t          |j        d           d S )Nr   )vTimerL   rM   r   123000263000)r   r   r   r   r   r   r6   r7   )r   r   s     r   test_prop_vTimezTestProp.test_prop_vTime  s          r2q))1133X>>>22DRLLAAA 	*eox@@@@@r!   c                     ddl m} |                      |d                                          d           |                     |                    d          d           d S )Nr   )vUrizhttp://www.example.com/s   http://www.example.com/)r   r   r   r   r   )r   r   s     r   test_prop_vUrizTestProp.test_prop_vUri  s|    788@@BB3	5 	5 	5(ABB2	4 	4 	4 	4 	4r!   c                    ddl m} |                      |ddg                                          d           |                      |d                                          d           |                    d          }|                     |t          d          t          d	          f           |                      ||                                          d           |                     t          |d
           d S )Nr   )vGeo333333?      @z1.2;3.0)r   r   z37.386013;-122.082932z	37.386013z-122.082932g)r   r   r   r   r   floatr6   r7   )r   r   r   s      r   test_prop_vGeozTestProp.test_prop_vGeo  s     	sCj))1133Y??? 	j))1133Y???NN233U;//}1E1EFGGGa**,CDDD*dC00000r!   c           	      J   ddl m} |                      |t          d                                                    d           |                      |t          d                                                    d           |                      |t                                                                d           |                      |t          d	                                                    d
           |                      |t          dd                                                    d           |                      |t          dd                                                    d           |                      |t          ddd                                                    d           |                     |                    d          t          d                     |                     |                    d
          t          dd                     |                     |                    d          t          dd                     |                     |                    d          t          dd                     |                      ||                    d                                                    d           |                     t          |j        d           |                     t          |j        d           d S )Nr   )
vUTCOffsetrr   z+0200rq   z-0500z+0000i)minutesz-0030)rp   r   z+0130r<   rM      )rp   r   secondsz+0130070000r   rs   ixJ rk   z+023040iP#  z+0230z+323kz+2400)r   r   r   r   r   r   r6   r7   )r   r   s     r   test_prop_vUTCOffsetzTestProp.test_prop_vUTCOffset  s   %%%%%%IA$6$6$677??AA7KKKIB$7$7$788@@BBGLLLIKK0088::GDDDIc$:$:$:;;CCEE 	" 	" 	" 	Jyq#66677??AA	
 	
 	

 	IAr$B$B$BCCKKMM 	" 	" 	" 	IA6867%9 %9 %9 : ::A'))Y	P 	P 	P 	--f55y||DDD--g66	"e8L8LMMM--g66	!T8J8JKKK--i88)At:L:LMMMJ$8$8$A$ABBJJLL 	" 	" 	" 	*j&:GDDD*j&:GDDDDDr!   c                 F   ddl m} |                      |d          d           |                     |                    d          d            |d          }d|j        d<   |                     |j        t                     |                     |j        ddi           d S )Nr   )vInlinez	Some textz
other textzTest Osteroner(   r)   )r   r   r   r   r   r   r   )r   r   t2s      r   test_prop_vInlinezTestProp.test_prop_vInline  s    """"""--{;;;**;77EEEW\"")	$bi444T?$;<<<<<r!   c                     ddl m} g d} ||          }|                     |                                d           |                     |                    |                                          |           d S )Nr   )	vCategory)zcat 1zcat 2zcat 3s   cat 1,cat 2,cat 3)r   r   r   r   r   )r   r   catzv_cats       r   test_prop_vCategoryzTestProp.test_prop_vCategory  s}    $$$$$$***	$*>???,,U]]__==tDDDDDr!   c           
         ddl m}  |            }|d         }|                      |t          ddd                                                    d           d}d}|                     |                    |d                              |          t          d	ddd
d                     |                     |                    dd          d           |                     |                    dd          d           |                     |                    dd          d           |                     |                    dd          d           d S )Nr   )TypesFactoryz	date-timerK   r<   s   20010101T00000020050101T123000textr   rL   rM   commentu   by Rasmussen, Max Müllers   by Rasmussen\, Max Müllerpriority   1r(   u   Rasmussen, Max Müllers   Rasmussen\, Max Müllers   Rasmussen\, Max Mølleru   Rasmussen, Max Møller)r   r   r   r   r   getr   )r   r   factorydatetime_parservalue
value_types         r   test_prop_TypesFactoryzTestProp.test_prop_TypesFactory  sy   '''''' ,..!+.$1)=)=>>FFHH+	- 	- 	-
 " 
Z88BB5II!$1b"55	7 	7 	7 	OOI'DEE0	
 	
 	
 	Q77>>>/IJJ:	< 	< 	<d$EFF&	
 	
 	
 	
 	
r!   N)__name__
__module____qualname__r    r%   r+   r0   r8   rG   rT   rZ   rh   rw   r   r   r   r   r   r   r   r   r   r   r   r    r!   r   r   r      s       ; ; ;2; ; ;	K 	K 	K8 8 8= = =P P P05 5 5$2 2 2"G "G "GH"9 "9 "9J+? +? +?Z
< 
< 
<N N N[C [C [CzA A ADA A A4 4 41 1 1 &E &E &EP	= 	= 	=E E E
 
 
 
 
r!   r   z
US/Easterni  r   rm   rL   )yearmonthdayhourminute)r   r   r   r   r   tzinfo)r   r   r      r   )r   r   secondc                     | S )Nr   )xs    r   identityr     s    Hr!   mapv_typeotherc                 j   ||u rX | |           | |          k    sJ d| j          d             | |           | |          k    rJ d| j          d            d S  | |           | |          k    sJ d| j          d             | |           | |          k    rJ d| j          d            d S )Nzidentity implies equality: z()zexpected inequality: )r   )r   r   r   s      r   test_vDDDTypes_equivalancer     s     s6{{cc%jj(((*X*X*X*X(((CKK33u::---0^cl0^0^0^-----s6{{cc%jj(((*R#,*R*R*R(((CKK33u::---0X0X0X0X-----r!   c                 &    | dk    sJ | dk    sJ d S )Nr/   testr   )r   s    r   $test_inequality_with_different_typesr     s&    R<<<<Vr!   c                       e Zd Zd ZdS )TestPropertyValuesc                    ddl m}  |            }t          j        d          }|                    t          ddd                    }|                    t          ddd                    }|                    t          ddd                    }|                    d||g           |                    d|           |                                }|                     d	|v            |                     d
|v            dS )z2Test vDDDLists with timezone information.
        r   )Eventrc   i  r<   r=   rdateexdates8   RDATE;TZID=Europe/Vienna:20130101T000000,20130102T000000s)   EXDATE;TZID=Europe/Vienna:20130103T000000N)	 r   rQ   r{   rS   r   addr   r@   )r   r   veventatdt1dt2dt3icals           r   test_vDDDLists_timezonez*TestPropertyValues.test_vDDDLists_timezone%  s     	]?++kk(4A..//kk(4A..//kk(4A..//

7S#J'''

8S!!!~~G4O	
 	
 	
 	DLMMMMMr!   N)r   r   r   r  r   r!   r   r   r   #  s(        N N N N Nr!   r   c                       e Zd ZdZd Zd ZdS )TestWindowsOlsonMappingz-Test the mappings from windows to olson tzidsc                     |                      t          j        dd          t          j        d                              t          dddddd	                               d
S )ztest that an example20170507T181920zEastern Standard TimezAmerica/New_Yorki  rn   r            N)r   r   r   rQ   r{   rS   r   )r   s    r   test_windows_timezonez-TestWindowsOlsonMapping.test_windows_timezone;  sf     13JKKM,--66xaBPRTV7W7WXX	
 	
 	
 	
 	
r!   c                 Z    t          j                    D ]}t          j        |           dS )z5test if all mappings actually map to valid pytz tzidsN)r
   valuesrQ   r{   )r   olsons     r   test_allz TestWindowsOlsonMapping.test_allB  s7    %,.. 	! 	!EM%    	! 	!r!   N)r   r   r   __doc__r  r  r   r!   r   r  r  8  s8        77
 
 
! ! ! ! !r!   r  ) r   r   r   r   icalendar.parserr   unittesticalendar.propr   r	   icalendar.windows_to_olsonr
   pytestrQ   copyr   dateutilr   TestCaser   r{   rS   UTCvDDDTypes_listr   markparametrizehashr   r   r   r  r   r!   r   <module>r      s                           ' ' ' ' ' '  / / / / / / / / 7 7 7 7 7 7              p
 p
 p
 p
 p
x  p
 p
 p
j ImdmL))2288QTV]_hi3j3j3jkkllIhhDr1EEEFFIhhDr1RVTTTUUIddA2...//IddA2...//Idd1Q///00   !  
 >22.11Y Y 21 32 Y >22  32N N N N N* N N N*! ! ! ! !h/ ! ! ! ! !r!   