
    =gi]                        S r SSKJr  SSKJr  SSKJr  SSKJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJr  SSK7  SSKJrJr  SSKJrJrJrJrJ r J!r!  SS	K"J#r#J$r$  SS
KJ%r%  SSK&J'r'J(r(  SSK)J*r*J+r+  SSK,J-r-J.r.J/r/  \0" \-\.\/S9r1SSK2J3r4  SSSSSSSSSS.	SSSSSSSSSS.	S.r5 SSK6J7r7  SSSSSSSSSS .	r9 " S! S"\#5      r: " S# S$5      r;\
" S%S&S'S(5      r< " S) S*\$5      r=\" \" \=5      5      r> " S+ S,\:5      r? " S- S.\?5      r@ " S/ S0\@5      rA\" \" \A5      5      rBSS1KCJDrD   " S2 S3\D5      rE " S4 S5\:5      rFg! \8 a    Sr7 Nf = f)6z3.3.0    )colors)simpleSplit)normalizeTRBL)isNumberisNumberOrNoneOneOfisColorOrNoneisStringisTextAnchorisBoxAnchor	isBooleanNoneOrisInstanceOfisNoneOrStringisNoneOrCallableisSubclassOfEitherOrisListOfNumbers)*)stringWidthgetAscentDescent)DrawingGroupCircleRectStringSTATE_DEFAULTS)Widget
PropHolder)
DirectDraw)XPreformattedFlowable)ParagraphStylePropertySet)TA_LEFTTA_RIGHT	TA_CENTER)startendmiddle   )	text2Pathnneesesswwnw)	r   -   Z            i  i;  xy)DirectDrawFlowableNr(   r)   r*   )	r3   r4   r2   r/   r.   r0   r-   r1   cc                   D   \ rS rSrSr\" S\0 S\" \SS9_S\" \SS9_S\" \SS9_S	\" \S
S9_S\" \SS9_S\" \SS9_S\" \	SS9_S\" \SS9_S\" \	SS9_S\" \
" SSSS5      SS9_S\" \SS9_S\" \SS9_S\" \	S S9_S!\" \	S"S9_S#\" \S$S9_S%\" \S&S9_S'\" \S(S9_S)\" \S*S9_S+\" \SS9_S,\" \S-S9_S.\" \S/S9_S0\" \S1S9_S2\" \S3S9_S4\" \S5S9_S6\" \S7S9_S8\" \S9S9_S:\" \S;S9_S<\" \S=S9_S>\" \" \\45      S?5      _S@\" \SAS9_SB\" \SCSDSE9_SF\" \" \" \5      SG5      SHSDSE9_SI\" \" \" \5      SG5      SJSDSE9_SK\" \" \" \5      \" \5      45      SLSDSE9_6rSM r\SN 5       r\R8                  SO 5       rSP rSQ rSR rSS r ST r!SU r"SV r#SW r$SX r%SY r&SZr'g[)]Label"   zA text label to attach to something else, such as a chart axis.

This allows you to specify an offset, angle and many anchor
properties relative to the label's origin.  It allows, for example,
angled multiline axis labels.
r<    descr=   dxzdelta x - offsetdyzdelta y - offsetanglezDangle of label: default (0), 90 is vertical, 180 is upside down, etc	boxAnchorzanchoring point of the labelboxStrokeColorzborder color of the boxboxStrokeWidthzborder widthboxFillColorzthe filling color of the box	boxTargetnormalantilohiz"one of ('normal','anti','lo','hi')boxRxzbox corner x radiusboxRyzbox corner y radius	fillColorzlabel text colorstrokeColorzlabel text border colorstrokeWidthzlabel text border widthtextzthe actual text to displayfontNamezthe name of the font usedfontSizezthe size of the fontleadingwidthzthe width of the labelmaxWidthz#maximum width the label can grow toheightzthe height of the text
textAnchorz0the anchoring point of the text inside the labelvisible True if the label is to be drawn
topPaddingzpadding at top of boxleftPaddingzpadding at left of boxrightPaddingzpadding at right of boxbottomPaddingzpadding at bottom of boxpaddingzTRBL css like paddinguseAscentDescentz^If True then the font's Ascent & Descent will be used to compute default heights and baseline.customDrawChangerzDAn instance of CustomDrawChanger to modify the behavior at draw time   )rE   _advancedUsageddfNoneOrDirectDrawzA DirectDrawFlowable instanceddfKlassz=A Flowable class for direct drawing (default is XPreformattedddfStylez-A style or style class for a ddfKlass or Nonec           
         U R                   " S*0 UD6  U R                   " S*0 SS_SS_SS_SS_SS_S	S_S
S_SS_SS_SS_SS_SS_SS _SS_SS_SS_SS _SS _SS _SS _SS _SS _S[        S   _S[        S   _S[        S   _SS _S!S"_S#S$_S%S&_S'[        _S([        U R                  S(S 5      _S)[        U R                  S)S 5      _6  g )+N_textzMulti-Line
StringrI   r?   rH   r   r<   r=   rF   rG   ra   rb   rc   rd   rK         ?rJ   rM   rN   rR   rS   rU   rL   rZ   r[   r\   r]   rT   rX   rY   rV   g?r^   r(   r_   rh   rf   Frj   rl   rm    )_setKeywordsr   r>   getattr	__class__)selfkws     [/var/www/html/hfs/venv/lib/python3.13/site-packages/reportlab/graphics/charts/textlabels.py__init__Label.__init__Q   s   B !	,!	!	 !	 	!	
 !	 !	 !	 !	  !	  !!	 !"!	 "%!	 "&!	 %!	 !	  !!	" ##!	$  $%!	& '!	( )!	*  +!	, -!	. +;7/!	0 **51!	2 **53!	4 "5!	6 %7!	8 9!	: $);!	< )=!	> #4>>*TB?!	@ #4>>*TBA!	    c                    U R                   U R                  U R                  U R                  4n[	        [        U5      5      nUS:X  a  US   $ US:X  a  US   US   :X  a  US   US   :X  a  US S $ US:X  a  US   US   :X  a  US S $ U$ )Nrh   r   r+      )ra   rc   rd   rb   lenset)ru   pr-   s      rw   re   Label.paddingv   s    OOT..0B0BDDTDTTAKa4!TadAaDjQqT1Q4Z"1TadAaDj2A,rz   c                 L    [        U5      u  U l        U l        U l        U l        g N)r   ra   rc   rd   rb   )ru   r   s     rw   re   r      s!    S`abScP*D,>@Prz   c                     Xl         g)zhSet the text property.  May contain embedded newline characters.
Called by the containing chart or axis.N)ro   )ru   rW   s     rw   setTextLabel.setText   s	     
rz   c                     Xl         X l        g)zSet the origin.  This would be the tick mark or bar top relative to
which it is defined.  Called by the containing chart or axis.Nr;   )ru   r<   r=   s      rw   	setOriginLabel.setOrigin   s     rz   c           	      N   [        SS5      nUR                  [        SSS[        R                  S95        [        5       nUR                  SS5        SUl        SUl        SUl	        S	Ul
        [        R                  Ul        UR                  S
5        UR                  U5        U$ )zqThis shows a label positioned with its top right corner
at the top centre of the drawing, and rotated 45 degrees.   d   r6      rT   r.   r5   r   izAnother
Multi-Line
String)r   addr   r   greenrA   r   rI   rH   rF   rG   rJ   r   )ru   dlabs      rw   demo
Label.demo   s     C 	
fSQ&,,78gc"	#\\12	c
rz   c                     U R                   nUS;   ak  U R                  n[        US-  S-  5      S-  S-  nUS-  (       d/  X#-
  S-  n[        U5      S:  a  X4S:  =(       a    S=(       d    S-   n[        US	      U   nU$ )
z,hook for allowing special box anchor effects)autoxautoyih  g     F@r5   r6   r   r   r:   )rI   rH   intabs_A2BA)ru   barH   nadas        rw   _getBoxAnchorLabel._getBoxAnchor   s    ^^##JJEuSy#o&r)3.BGjC'r719!t{1c2Br"vr"B	rz   c                     U R                   (       aY  [        U R                  U R                  5      u  U l        U l        U R                  U R                  U R
                  -
  -  U l        g SU l        g )Ng?)rf   r   rX   rY   _ascent_descent_baselineRatioru   s    rw   _getBaseLineRatioLabel._getBaseLineRatio   sN      *:4==*W'DL$-"&,,T]]0J"KD"'Drz   c                    U R                   =(       d    XR                  -   U R                  -   U l        U R                  U R
                  -
  U R                  -
  U l        U R                  U R                  -
  U R                  -
  U l        U R                  5       nUS;   a  U R                  * U l
        O9US;   a  U R                  U R                  -
  U l
        OSU R                  -  U l
        U R                  U R                  -
  U l        US;   a  U R
                  U R                  -
  U l        O-US;   a  U R
                  U l        OU R                  * S-  U l        U R                  U R                  -   U l        g )N)r-   r.   r4   )r1   r2   r0   rp   )r.   r/   r0   )r4   r3   r2   )r]   ra   rd   _height_widthrb   rc   _ewidth_eheightr   _top_bottom_left_right)ru   objHrI   s      rw   _computeSizeEndLabel._computeSizeEnd   s!   {{Stoo'=@R@R'RD$4$44T5F5FFdoo5d6H6HH&&(	'(DI/)T__4DIDMM)DIyy4==0'))DKK7DJ/)))DJ,,s*DJjj-rz   c                    [        U SS 5      nU(       Gd  / U l        [        U R                  U R                  U R
                  U R                  5      U l        U R                  (       d  U R                  U R                  -   U l        U R                  (       ah  U R                   Vs/ s H#  n[        X R                  U R
                  5      PM%     snU l        U =R                  [        U R                  5      -  sl        OU R                  U l        U R                  5         U R                  (       a  U R                  U l        ODU R"                  (       a  U R$                  U R&                  -
  U l        OU R
                  S-  U l        U R                   [)        U R                  5      -  nGOU R*                  c  [-        S5      e[/        SU R                  U R
                  U R0                  U R2                  S9nU R4                  (       d  [7        S0 UD6nO[9        U R4                  [:        5      (       a  U R4                  R<                  " S0 UD6nOr[9        U R4                  [>        5      (       a2  [A        U R4                  [:        5      (       a  U R4                  " S0 UD6nO![C        S[?        U R4                  5       35      eX@l"        U R                  5         U R"                  (       a&  SUl#        U R$                  U R&                  -
  Ul        O1U R                  (       a  U R                  OU R
                  S-  Ul        UR                  U l        U RI                  5       nU R                  =(       d    SnUS	:w  aO  [J        Ul&        U" U R                  US
9nURO                  US5      u  pU R                  =(       d    URP                  n[R        U   Ul&        U" U R                  US
9=U l*        nURO                  US5      u  pU R                  (       d>  U R                  U R                  -   U l        U =R                  URP                  -  sl        OU R                  U l        U RW                  U5        g s  snf )Nrl   g333333?z[DirectDrawFlowable class is not available you need the rlextra package as well as reportlabzxlabel-generated)namerX   rY   rT   rU   zddfStyle has invalid type Tir(   )stylerq   ),rs   _lineWidthsr   ro   rX   rY   r\   _linesr[   rb   rc   r   r   maxr   rZ   _leadingrf   r   r   r}   rj   RuntimeErrordictrT   rU   rm   r#   
isinstancer$   clonetype
issubclass
ValueError_styleautoLeading_getTextAnchorr%   	alignmentwrap
_width_max_ta2al_ddfObjr   )	ru   rl   liner   stytaaWobj_s	            rw   computeSizeLabel.computeSize   s/   4
40!D%djjt}}T]][DK::"..t/@/@@;;bfbmbm'nbmZ^Dt}}(Ubm'nD$KK3t'7'7#88K"jj""$|| $&& $t}} < $c 1==T[[!11Dxx"  $A  B  B+!]]!]]"nn $ 0 0C ==$+s+DMM+66mm))0C0DMM$//Jt}}[4Y4Ymm*c* #=d4==>Q=R!STTK""$$$"&"llT]]:.2lldllc@QKKDM$$&B,*B7{ 'tzz4((2j1]]4cnn"2JCM!)$**3!??DL3hhr*-GA::"..t/@/@@s~~-"jjT"s (os   &*Q:c                 X    U R                   nUS:X  a  [        U R                  5          nU$ )z/This can be overridden to allow special effectsboxauto)r^   _BA2TAr   )ru   r   s     rw   r   Label._getTextAnchor  s)    __y=vd&8&8&:;"	rz   c                    U R                   nU=(       d    SU l         U R                  5         Xl         [        5       nUR                  U R                  U R
                  -   U R                  U R                  -   5        UR                  U R                  5        [        U SS 5      nU(       a  U R                  nOxU R                  U R                  U R                  -  -
  nU R                  5       nUS:X  a  U R                  nO/US:X  a  U R                  U R                   S-  -   nOU R"                  nU R$                  (       d"  U R&                  (       a  U R(                  (       a  UR+                  [-        U R                  U R.                  -
  U R0                  U R2                  -
  U R4                  U R6                  U R&                  U R(                  U R$                  U R8                  U R:                  S9	5        U(       ao  [        5       nUR                  X@R                  U R<                  -
  5        UR+                  U R?                  U R@                  5      5        UR+                  U5        U$ U RB                  U RD                  U RF                  pnU RH                  U RJ                  U R                  pn[        U S0 5      nU(       aM  U RL                   H;  n[O        XWXW5      nUUl!        UUl$        UUl%        UR+                  U5        X]-  nM=     U$ U RL                   H?  n[Q        UWXS9nWUl)        U	Ul"        U
Ul#        UUl!        UR+                  U5        X]-  nMA     U$ )	NrC   rl   r(   r*   rp   )rU   rV   rT   rxry	_svgAttrs)r   )*ro   r   r   	translater<   rF   r=   rG   rotaterH   rs   r   r   r   r   r   r   r   rL   rJ   rK   r   r   rb   r   rd   r   r   rR   rS   r   rj   r   rT   rX   rY   rU   rV   r   
_text2Pathr   r^   )ru   ro   grl   r<   r=   r^   g1rT   rX   rY   rU   rV   rZ   svgAttrsr   r1   s                    rw   _rawDrawLabel._rawDraw  s   

[b

G	DFFTWW$dfftww&67	4
40

A		DMM$*=*===A,,.JW$JJx'JJc!11KK !4!49L9LEE$

4#3#33T%7%77$($7$7$($7$7"&"3"3::::	 	 BLL99T]]23FF488DLL)*EE"I. + -1NNDMM4==I040@0@$BRBRTXTaTagKT+b1H KKD"4Ax:NA"+AK$/AM$/AMEE!HLA ("  !KKDq!T>A#-AL!)AJ!)AJ"+AKEE!HLA ( rz   c                     [        U SS 5      nU(       a#  U" SU 5         U R                  5       U" SU 5        $ U R                  5       $ ! U" SU 5        f = f)Nrg   TF)rs   r   )ru   rg   s     rw   draw
Label.drawY  sQ    #D)<TBd4(.}}!%-==?" "%-s   A A)r   r   r   r   r   r   r   r   r   r   r   r   r   r   ro   r   r   rd   rb   rc   ra   r<   r=   Nrq   )(__name__
__module____qualname____firstlineno____doc__AttrMapAttrMapValuer   r   r	   r   r
   r   r   r   r   r   r   r   r   r    r"   r$   r   _attrMaprx   propertyre   setterr   r   r   r   r   r   r   r   r   r   __static_attributes__rq   rz   rw   rA   rA   "   s]     #
r*#
r*#
 ((:;#
 ((:;	#

 X+qr#
 !2PQ#
 &m9RS#
 &hNC#
 $M7UV#
 !xtD!AGkl#
 X+@A#
 X+@A#
 !4FG#
 #=6OP#
 #81JK#
  H*FG!#
"  .IJ##
$  .DE%#
& ~26'#
( ^1IJ)#
*  4YZ+#
, n2JK-#
. ",4fg/#
0 y.PQ1#
2 "(0GH3#
4 #81IJ5#
6 $H2KL7#
8 %X3MN9#
: x(HIJab;#
< (	  8X  Y=#
> ))9  @F  WX  Y?#
@ 6,z":;MNTs  EF  GA#
B  |H'=>P Q  XW  hi  jC#
D  [(A,{B['\ ]  dS  de  fE#
HJ#J   ^^d d*(.*B#H?B	#rz   rA   c            
       z   \ rS rSr\" S0 S\" \SS9_S\" \SS9_S\" \SS9_S\" \SS9_S\" \SS9_S	\" \SS9_S
\" \SS9_S\" \SS9_S\" \SS9_S\" \SS9_S\" \SS9_S\" \5      _SS_S\" \	SS9_S\" \SS9_S\" \SS9_S\" \SS9_S\" \SS9_S\" \SS9_S\" \
SS9_S\" \SS9_6rS rS rS rSrg) LabelDecoratorid  r<   rC   rD   r=   rF   rG   rH   rI   rJ   rK   rL   rT   rU   rV   rE   rX   rY   rZ   r[   r\   r]   r^   r_   r`   c                     SU l         SU l        U R                  R                  5        H!  n[	        X5      (       a  M  [        XS 5        M#     g )Nr(   r3   )r^   rI   r   keyshasattrsetattrru   as     rw   rx   LabelDecorator.__init__|  s9    !##%A4??GD4$8 &rz   c                     UR                   u  p4pVpxpppUR                  UR                  R                  U   5        UR	                  U5        g r   )_callOutInfor   categoryAxiscategoryNamesr   )ru   lLchartr   rowNocolNor<   r=   r[   r]   x00y00x0y0s                  rw   decorateLabelDecorator.decorate  s@    =>^^:ASR			%$$2259:	arz   c                     [        5       nU R                  R                  5        H   u  p4Uc  [        XS 5      n[	        X#U5        M"     U R                  X5        g r   )rA   __dict__itemsrs   r   r  )ru   r   r   r   vs        rw   __call__LabelDecorator.__call__  sI    G==&&(CAyga$/!AN ) 	arz   )rI   r^   Nrq   )r   r   r   r   r   r   r   r   r	   r   r   r   r   rx   r  r  r   rq   rz   rw   r   r   d  st    
R0
R0
 .b1
 .b1	

 ^4
 !"5
 &m<
 &n"=
 $Mr:
 !B7
 #=b9
 #>2
 9;
  B7
  B7
 ~26
  ^4!
"  B7#
$ n"5%
& ",B7'
( y.PQ)
H.9
rz   r   highlowbaraxisc            
       Z    \ rS rSr\" \" \SS9\" \SS9\" \SS9\" \SS9S9rS r	S	 r
S
rg)LabelOffseti  zWhere to base +ve offsetrD   zValue for positive elementszWhere to base -ve offsetzValue for negative elements)posModeposnegModenegc                 <    S=U l         U l        S=U l        U l        g )Nr  r   )r  r  r  r  r   s    rw   rx   LabelOffset.__init__  s    "((T\48rz   c                    UR                   nUR                  nUR                  nUS:  a  U R                  nU R                  nOU R
                  nU R                  nU(       a  UR                  nOUR                  nU(       aN  U(       a  UR                  n	OUR                  n	US:X  a  XR                  -   nX-   $ US:X  a  U	nX-   $ US:X  a  X-   nX-   $ )Nr   r  r  r  )
_flipXYr   joinAxisr  r  r  r  _x_y_length)
ru   r   valflipXYAjAmodedeltar
  _vs
             rw   	_getValueLabelOffset._getValue  s    ZZ6<<DHHE<<DHHEAAUUUUV|O
 w	 u w uFwrz   )r  r  r  r  N)r   r   r   r   r   r   isOffsetModer   r   rx   r&  r   rq   rz   rw   r  r    sB    &|9ST"81NO&|9ST"81NO	H rz   r  c                   2    \ rS rSr\" \S9rS rS rS r	Sr
g)PMVLabeli  BASEc                 @    [         R                  " U 40 UD6  SU l        g Nr   )rA   rx   _pmvru   kwdss     rw   rx   PMVLabel.__init__  s    t$t$	rz   c           
      n    [         R                  U 5      nU R                  S:  a  SSSSSSSS	S
S.	U   nU$ )Nr   r0   r1   r2   r/   r?   r3   r.   r-   r4   )	r4   r-   r.   r3   r?   r/   r2   r1   r0   )rA   r   r/  r   s     rw   r   PMVLabel._getBoxAnchor  sB    %99Q;$3DSSSVZ_bhlmnoprz   c                 b    [         R                  U 5      nU R                  S:  a	  SSSS.U   nU$ )Nr   r)   r*   r(   )r(   r*   r)   )rA   r   r/  r   s     rw   r   PMVLabel._getTextAnchor  s2      &99Q;UXWMaPrz   )r/  N)r   r   r   r   r   rA   r   rx   r   r   r   rq   rz   rw   r*  r*    s    
H
rz   r*  c                       \ rS rSrSr\" \\" \SS9\" \	SS9\" \
SS9\" \
SS9\" \SS9\" \" S	S
SSS5      SS9S9rS rSrg)BarChartLabeli  >
An extended Label allowing for nudging, lines visibility etc
zNon-zero for a drawn linerD   zColor for a drawn linezNone or fixed draw ends +/-zNone or fixed draw starts +/-zNon-zero sign dependent nudgerN   rO   rP   rQ   midz(one of ('normal','anti','lo','hi','mid'))r,  lineStrokeWidthlineStrokeColorfixedEnd
fixedStartnudgerM   c                 x    [         R                  " U 40 UD6  SU l        S U l        S =U l        U l        SU l        g r.  )r*  rx   r;  r<  r>  r=  r?  r0  s     rw   rx   BarChartLabel.__init__  s:    $'$' #*..$-
rz   )r=  r>  r<  r;  r?  N)r   r   r   r   r   r   r*  r   r   r	   NoneOrInstanceOfLabelOffsetr   r   r   rx   r   rq   rz   rw   r8  r8    sl     &~<WX&};ST ;B_`!"=DcdX,KL xtD!GMwx
Hrz   r8  c                   6    \ rS rSrSr\" \\" \SS9S9r	S r
Srg)	NA_Labeli  r9  zText to be used for N/A valuesrD   )r,  rW   c                 <    [         R                  U 5        SU l        g )Nzn/a)r8  rx   rW   r   s    rw   rx   NA_Label.__init__  s    t$	rz   )rW   N)r   r   r   r   r   r   r8  r   r   r   rx   r   rq   rz   rw   rD  rD    s&     N1QR
Hrz   rD  )CustomDrawChangerc                   :    \ rS rSr\R
                  4S jrS rSrg)RedNegativeChangeri  c                 <    [         R                  " U 5        Xl        g r   )rG  rx   rT   )ru   rT   s     rw   rx   RedNegativeChanger.__init__  s    ""4("rz   c                     0 nUR                   R                  S5      (       a   UR                  US'   U R                  Ul        U$ )N-rT   )ro   
startswithrT   )ru   r   Rs      rw   _changerRedNegativeChanger._changer  s9    99$$ ]]AkN NNCMrz   r   N)	r   r   r   r   r   redrx   rP  r   rq   rz   rw   rI  rI    s     &

 #rz   rI  c                   *    \ rS rSrSr\" \S9rS rSrg)XLabeli  z=like label but uses XPreFormatted/Paragraph to draw the _textr+  c                     [         R                  " U /UQ70 UD6  UR                  S[        5      U l        UR                  SU R
                  5      U l        g )Nrl   directDrawClass)rA   rx   popr!   rl   rj   )ru   argsr1  s      rw   rx   XLabel.__init__  sA    t)T)D)M:88-dhh7rz   )
_ddf_flowableClassr   r   _objr   ro   r   rj   rl   N)r   r   r   r   r   r   rA   r   rx   r   r   r   rq   rz   rw   rT  rT    s    GE H8
 rz   rT  )G__version__reportlab.libr   reportlab.lib.utilsr   reportlab.lib.geomutilsr   reportlab.lib.validatorsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   reportlab.lib.attrmapreportlab.pdfbase.pdfmetricsr   r   reportlab.graphics.shapesr   r   r   r   r   r   reportlab.graphics.widgetbaser   r   r    reportlab.platypusr!   r"   reportlab.lib.stylesr#   r$   reportlab.lib.enumsr%   r&   r'   r   r   utilsr,   r   r   rlextra.graphics.canvasadapterr>   ImportErrorr   rA   r   r(  r  rB  r*  r8  rD  NoneOrInstanceOfNA_Labelreportlab.graphics.charts.utilsrG  rI  rT  rq   rz   rw   <module>rn     st      + 10 0 0 0 0 $ F Z Z < 0 6 < < <	G		: + $CTsQU\`a$CTsQU\`a	

A g%u5V^ckpxy@#F @#D
( (T 6%f-$* $L #<#<= u &H *
} 
  X 67  =	* 	MU Mu  s   $D; ;EE