
    Q?h                     d   S r SrSSKJr  SSK7  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Jr  SSKJr  SS	K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"  SSK#J$r$J%r%  SSK&J'r'  SSK(J)r)   " S S\5      r* " S S\+5      r, " S S\5      r- " S S5      r. " S S5      r/ " S S\/\"5      r0 " S S\/\5      r1SSK2J3r3   " S S \35      r4 " S! S"\45      r5/ S#Q/ S$Q/r6 " S% S&\45      r7 " S' S(\75      r8 " S) S*\45      r9 " S+ S,\95      r:S- r; " S. S/\45      r<S0 r=S1 r>S2 r?S3 r@S4 rAS5 rBg6)7z3.3.0z9This module defines a very preliminary Line Plot example.    colors)*)flattenisStr)DrawingGroupRectPolyLinePolygon_SetKeyWordArgs)TypedPropertyCollection
PropHolder
tpcGetItem)Label)
XValueAxis
YValueAxisAdjYValueAxisNormalDateXValueAxis)uSymbol2Symbol
makeMarker)Grid
DoubleGridShadedPolygon)stringWidthgetFont)PlotArea   )FillPairedDatac                       \ rS rSr\" \" \SS9\" \SS9\" \SS9\" \SS9\" SSS	S
9\" SSS	S
9\" SSS	S
9\" \	SS9\" \
" \" SSS5      5      SS	S
9\" \SS	S
9\" \SS	S
9S9rSrg)LinePlotProperties   zWidth of a line.desczColor of a line.zDash array of a line.z,Color of infill defaults to the strokeColor.NzWidget placed at data points.r   r$   advancedUsagezShader Class.zFiller Class.zName of the line.line
joinedLinebarzWhat kind of plot this line isz2Percentage of available width to be used for a barzIf true flood fill to x axis)strokeWidthstrokeColorstrokeDashArray	fillColorsymbolshaderfillername	lineStylebarWidthinFill )__name__
__module____qualname____firstlineno__AttrMapAttrMapValueisNumberisColorOrNoneisListOfNumbersOrNoneisStringOrNoneNoneOrOneOfisNumberOrNone	isBoolean_attrMap__static_attributes__r5       U/var/www/html/env/lib/python3.13/site-packages/reportlab/graphics/charts/lineplots.pyr!   r!      s    "82DE"=7IJ&'<CZ[ 5cdd)HWXYdqIdqIN1DE f\%(H!IPp  @A  B4hwxyi.L[\]
HrF   r!   c                       \ rS rSrSS jrSrg)InFillValue'   Nc                 <    [         R                  X5      nX#l        U$ N)int__new__yValue)clsvrO   selfs       rG   rN   InFillValue.__new__(   s    {{3!rF   )rO   rL   )r6   r7   r8   r9   rN   rE   r5   rF   rG   rI   rI   '   s    rF   rI   c                   J    \ rS rSr\" \\" \SS9\" \" \	SSS9SS9S9r
S rS	rg
)Shader-   zIf true shade to x axisr#      )lohiz(AxisColor, LineColor))BASEverticalr   c                     S S /n[        U SU5      =(       d    UnUS   (       d  [        US[        R                  5      US'   US   (       d  XFS'   g g )Nr   r   r-   r   )getattrr   white)rR   lpgrowNorowColorrowcs          rG   shadeShader.shade3   sI    $KD!$)tGB{6<<@QqTtHqTtrF   r5   N)r6   r7   r8   r9   r:   r   r;   rC   
SequenceOfr=   rD   re   rE   r5   rF   rG   rU   rU   -   s2    H	0IJj!qAH`a
H
%rF   rU   c                       \ rS rSrS rSrg)NoFiller9   c                     g rL   r5   rR   r_   r`   ra   rb   pointss         rG   fillNoFiller.fill:   s    rF   r5   N)r6   r7   r8   r9   rn   rE   r5   rF   rG   ri   ri   9   s    rF   ri   c            	       R    \ rS rSrSr\" \" \SS9\" \SS9\" \SS9S9r	S r
S	 rS
rg)Filler=   z#mixin providing simple polygon fillzfiller interior colorr#   zfiller edge colorzfiller edge widthr-   r+   r*   c                     Xl         g rL   __dict__)rR   kws     rG   __init__Filler.__init__D   s    rF   c                 |    UR                  [        U[        U SU5      [        U SU5      [        U SS5      S95        g )Nr-   r+   r*   皙?rs   )addr   r]   rl   s         rG   rn   Filler.fillG   s;    	gfd;x8]8<]379 	:rF   ru   N)r6   r7   r8   r9   __doc__r:   r;   r=   rB   rD   rx   rn   rE   r5   rF   rG   rq   rq   =   s:    - 5LM"=7JK">8KL
H
:rF   rq   c                       \ rS rSrSrg)ShadedPolyFillerM   r5   Nr6   r7   r8   r9   rE   r5   rF   rG   r   r   M       rF   r   c                       \ rS rSrSrg)
PolyFillerP   r5   Nr   r5   rF   rG   r   r   P   r   rF   r   )AbstractLineChartc                   X   \ rS rSrSr\" \\" \SSS9\" \	SSS9\" SSS	9\" SS
S	9\" SSS	9\" \
SS	9\" \
SS	9\" SSS	9\" SSS	9\" SSS	9\" SSS	9\" SSSS9\" \SSS9\" \SSS9S9rS r\S 5       r\R                  S 5       rS rS rS rS rS rS r\R.                  SS4S  jrS!rg)"LinePlotT   z}Line plot with multiple lines.

Both x- and y-axis are value axis (so there are no seperate
X and Y versions of this class).
zIf true reverse plot order.r   r%   z,Distance between a data point and its label.Nz(Handle to the list of data point labels.r#   z9Formatting string or function used for data point labels.zHexplicit array of line label values, must match size of data if present.z.Color used for background border of plot area.0Color used for background interior of plot area.zHandle of the lines.zHandle of the x axis.zHandle of the y axis.z2Data to be plotted, list of (lists of) x/y tuples.z<list of callables, will be called with self, xscale, yscale.z If true use separate line group.z#If true use draw grids before axes.)rZ   reversePlotOrderlineLabelNudge
lineLabelslineLabelFormatlineLabelArrayr+   r-   lines
xValueAxis
yValueAxisdataannotations
behindAxes	gridFirstc                    [         R                  " U 5        SU l        [        5       U l        [        5       U l        SS/U l        [        [        5      U l
        SU R                  l        SU l        [        R                  U R                  S   l        [        R                   U R                  S   l        [        ["        5      U l        S U l        S U l        SU l        S U l        / U l        SU l        SU l        g )Nr   )r   r   )rW   rW   )      @r   )   r   )      )r   rW   rW   r   r   rW   )r   r   r      r   
   )r   rx   r   r   r   r   r   r   r   r!   r   r*   joinedLinesr   redr+   bluer   r   r   r   r   _inFillr   r   r   rR   s    rG   rx   LinePlot.__init__l   s    $ !$,$, 21	
 --?@
!"

$*JJ

1!$*KK

1!1%8#" !
 rF   c                 4    U R                   R                  S:H  $ )Nr(   r   r2   r   s    rG   r   LinePlot.joinedLines   s    zz##\11rF   c                 8    U(       a  SOSU R                   l        g )Nr(   r'   r   )rR   rQ   s     rG   r   r      s    /0|f

rF   c                    [        SS5      nSS/n[        5       nSUl        SUl        SUl        SUl        X#l        SUl        S	Ul        [        R                  Ul        [        R                  UR                  S
   l        [        S5      UR                  S
   l        [        R                   UR                  S   l        [        S5      UR                  S   l        S
UR"                  l        SUR"                  l        SUR"                  l        S
UR*                  l        SUR*                  l        SUR*                  l        UR-                  U5        U$ )z Shows basic use of a line chart.     r   r   r   r   )g      @r   r   2   }   ,  r   %2.0fr   FilledCircleFilledDiamondr      )r   r   xyheightwidthr   r   r   r   blackr+   r   r   r   r.   r   r   valueMinvalueMax	valueStepr   r|   )rR   drawingr   r_   s       rG   demoLinePlot.demo   s    #s# 23
 Z	$"(**'7"(++'8!"!""#!"!""#BrF   c                    [        U R                  5      U l        [        [	        [        [         U R                  5      5      5      U l        [        5       n/ R                  nU R                  R                  nU R                  R                  nU R                  n[        U5      n[        U5       H  u  px[        U[        5      (       aU  UR                  n	SU	s=::  a  U:  a)  O  O&X:X  a  [!        SU-  5      eUR#                  Xy45        O[!        SU< SU	< 35      e/ R                  n
[        U5       HM  u  pUS   nU
" [%        U5      (       a  U" ['        [)        U5      5      5      OU" U5      U" US   5      45        MO     U" U
R*                  5        M     UR*                  nU H  u  py[        X'   U	5      X''   M     [        U5      U l        X l        g)zmWorks out where they go.

Sets an attribute _positions which is a list of
lists of (x, y) matching the data.
r   z)data row %r may not be paired with itselfz	data row z! is paired with invalid data row r   N)lenr   _seriesCountmaxlistmap
_rowLengthsetappendr   scaler   	enumerate
isinstancer   other
ValueErrorr|   r   mktimemkTimeTuple__self___pairInFills
_positions)rR   pairsPxscaleyscaler   nra   rc   r   r'   colNodatumxvs                 rG   calcPositionsLinePlot.calcPositions   sz     		Nd3s499#567II&&&&yyI#D/JE#~..		e:A:|()TW\)\]]IIum,$Y^`e%fgg99D )#1X7<RyyF6+b/23fRj58$ !/ dmm% *& JJ "LE%ahu5AH "JrF   c                 D   U R                   nU R                  U   U   S   nUc  SnOw[        U[        5      (       a  US:X  a  U R                  U   U   nOIXV-  nOD[        US5      (       a%  [        US5      (       d	  U" U5      nOU" XX#U5      nO[        SU-  5      eU(       ax  U R                  X4   nUR                  (       d  gUS:  a  UR                  X4U R                  -   5        OUR                  X4U R                  -
  5        UR                  U5        U$ SnU$ )z*Draw a label for a given item in the list.r   Nvalues__call____labelFmtEX__z6Unknown formatter type %s, expected string or functionr   )r   r   r   strr   hasattrr   r   visible	setOriginr   setText)	rR   ra   r   r   r   labelFmt
labelValue	labelTextlabels	            rG   _innerDrawLabelLinePlot._innerDrawLabel   s    ''YYu%e,Q/
I%%8# //6u=	$1	Xj))8$455$Z0	$T:	UW__``OOUN3E==&1ut':':#:;t':':#:;MM)$  ErF   c                 F    UR                  U R                  X#XE5      5        g)zDDraw a label for a given item in the list.
G must have an add methodN)r|   r   )rR   Gra   r   r   r   s         rG   	drawLabelLinePlot.drawLabel  s     	
d""5q34rF   c                 t   [        5       nU R                  nU R                  n[        U SS 5      nU(       a,  [	        UR
                  UR
                  5      nUR                  nU R                  nU R                  n[        U SS 5      n	U R                  n
[        U
5      nU	(       dT  U R                  (       dC  [        [        U5      5       Vs/ s H  n[        XU-     SS5      (       d  M  UPM      sn(       aU  [        U	SS 5      nUc  UR                  nOUR                  U5      nUR                  nXR                   -   n[        U SU5      nS n[        U SU5      n[        [        U5      5      nU R"                  (       a  [%        U5      nU GH  nX   nX-  nU
U   n[        USS 5      n[        US	S 5      n[        US
U5      n[        USU	5      n[        USS 5      n[        USS 5      n['        US	5      (       a  UR(                  nO ['        U
S	5      (       a  U
R(                  nOS nUS:X  Gaf  Uc  [+        [-        [        U5      5      S-
  nUS:  a  U R.                  U-  S-
  OU R.                  n[        US[1        S5      5      nU R                  nUR                  S5      n [+        UR                  U 5      n![	        UR                  UR                   -   U 5      n"U R                  R                  n#U#U R                  R                   -   n$[3        U[0        5      (       a	  UUS-  -  nOUS-  nU H]  u  nn%Un&U%W :  a  W"OW!n'UU&S-  -  nUW#:  a  U&U#U-
  -  n&U#nOUU&-   W$:  a  U&U$U-
  -  n&UR5                  [7        UU'U&U%U'-
  UUUS95        M_     GOUS:X  Ga  [9        U5      n(U(       d  [3        U[:        5      (       a  [        USS 5      n)[3        U[:        5      (       a%  U([9        [%        UUR<                     5      5      -   n*OWW/U(-   WU/-   n*U)(       a  U)R?                  U WUUU*5        O,WR5                  [A        U*UUU:X  a  UOS U=(       d    SS95        U(       a  US:X  d  UU:w  a9  [C        U(USSS9n+U(       a  UU+l        U(       a  UU+l"        UR5                  U+5        ['        US5      (       a  URF                  n,O ['        U
S5      (       a  U
RF                  n,OS n,U,(       a  U(       a  U RH                  U   n-[K        U5       H  u  n.n/UU.4U
;   a  [        U
UU.4   SU,5      n0OU,n0U0U,L a  U,n1Un2OU0n1[        U1S
U5      n2[M        [O        U1U.5      U/S   U/S   U25      n1U1(       d  Mc  U(       a  WW-U.   S   W-  S-  -  U1l(        UR5                  U15        M     OU(       a  U RH                  U   n-[K        U5       H  u  n.n/[        U
UU.4   SS 5      n0U0(       d  M!  [        U0S
[        U0SU5      5      n2[M        U0U/S   U/S   U25      n1U1(       d  MV  U(       a  WW-U.   S   W-  S-  -  U1l(        UR5                  U15        M     [K        U5       H  u  n3n4U4u  n5n6U RS                  XU3U5U65        M!     [        USS 5      n7U7(       d  GM
  U7RU                  XUUU5        GM!     U$ s  snf )N_bubblePlotr   r4   FrO   _inFillG_lineGr+   r*   r-   r,   r2   r)   r   r   r3   r   g{Gzt?      ?rW   )r*   r+   r-   r(   r0   r{   rs   )r+   strokeLineCapstrokeLineJoinr.   r/   )+r	   r   r   r]   min_bubbleRadius
_bubbleMaxr   r   r   r   r   range_yr   _x_lengthr   reversedr   r*   r   r   r   
Percentager   r|   r
   r   r   r   rn   r   r   r,   r.   r   r   r   r   sizer   re   )8rR   r`   yAxA
bubblePlotbubbleR	bubbleMaxr   r   r   r   
styleCountra   inFillYinFillX0inFillX1inFillGbwlGRrc   
styleRowNorowStyler+   r*   r-   r4   dashr2   r   r   r3   y0byposbynegxminxmaxr   w_y0rm   r0   fpointsr'   uSymboldrowjxyjuSymbolr.   symColorr   r   x1y1r/   s8                                                           rG   	makeLinesLinePlot.makeLines  sN   G____T-5
"**2+;+;<GI''OO$y.

Z
t(($)#a&M LM5"5z)9#:8EJ M L ght4G%%((7+uuH**,Hd:a0GT(1%#a&M  hqk!E(C+JZ(H!(=>K!(=>K+{CIXhw7F8%6=DT:Ix// ,,..)) %:CAJ!+A/0s$**Q,*

B&x
:b>JHABRLEQYYr2E??--D$//"9"99D!(:66hun,%c\DAqA#$R4%UC1HAvTAX 1tTAXEE$qQquQ\gpqr   L( ZN;;$Xx>F!#n55"(78AciiL3I+J"J#+G"4v"='@R"RDyIGGicnpycyT_  @D  QV  Q]  Z]  %^  _k9.D#F{QRbcdD+0(/3,FF4Lx**"//)),,dii&6t%cNDAb"1~.#*5A+>x#P#*7*!(#.!)#*6+k#J+Jva,@Ar!uXVFv%*1471:i3G#2M*MFKf +" dii&6t%cNDAb&uZ\':8DIH#X&xGH][f<ghH+HRU2a5JFv%*1471:i3G#2M*MFKf +  )~eBqB7  . Xx6Fvv||D5SAY \ }Ls   Z5,Z5c                 
   U R                   nU R                  n[        U SS 5      (       a  S=Ul        Ul        UR	                  U R
                  U R                  U R                  5        U(       a  X!l        U(       a  Xl        UR                  U R                  5        UR                  S5      nX0R                  U R                  -   :  d  X0R                  :  a  U R                  nOUnUR	                  U R
                  X@R                  5        UR                  U R                  5        U R                  5         [        5       nUR                  U R!                  5       5        U R"                  (       d  U R$                  (       a  UR'                  5         U R"                  (       a*  [        5       U l        UR                  U R(                  5        U R$                  (       a*  [        5       U l        UR                  U R*                  5        UR'                  5         UR'                  5         UR,                  =(       a    UR.                  /=(       d    / nUR,                  =(       a    UR0                  /=(       d    / n[        USS5      nUS :w  aO  US;   a(  UR3                  UR0                  UR4                  -   5        US;   a  UR3                  UR0                  5        [        USS5      nUS :w  aO  US;   a(  UR3                  UR.                  UR4                  -   5        US;   a  UR3                  UR.                  5        U R6                  (       a6  UR9                  XPUR:                  US9  UR9                  XPUR:                  US9  UR                  UR=                  5       5        UR                  UR=                  5       5        U R6                  (       d^  [        US	S
5      n	[        US	S
5      n
U	(       d  UR9                  XPUR:                  US9  U
(       d  UR9                  XPUR:                  US9  [        U S/ 5      nU HC  n[        USS 5      (       d  M  UR                  U" XR                  UR                  5      5        ME     UR                  U R?                  5       5        U R6                  (       dD  W	(       a  UR9                  XPUR:                  US9  W
(       a  UR9                  XPUR:                  US9  U HC  n[        USS 5      (       a  M  UR                  U" XR                  UR                  5      5        ME     U$ )Nr   r   r   skipGridnone)bothtop)r*  bottom)parentdimexcludedrawGridLastFr   beforeLines) r   r   r]   r   setPositionr   r   r   joinAxis	configurer   r   r   r   r	   r|   makeBackgroundr   r   _joinToAxisr   r   visibleAxisr   r   r   r  r   makeGridgetGridDimsdrawr%  )rR   r  r  xAxisCrossesAtr   r`   xAexyAexr(  xAdglyAdglr   as                rG   r:  LinePlot.draw  s   ____4d++.//BNR^
tvvtvvt{{3R{R{
TYY !fft{{228OAA
tvvq**-
TYYG	d!!#$<<4??NN|| %dmm$#gdkk"

~~)255'/R~~)255'/R2j0T>>)BEE"**,-,,BEE"2j0T>>)BEE"**,-,,BEE">>KK"..KFKK"..KF	bggi	bggi~~B~e4EB~e4E"++at+T"++at+Td=4Aqt,,aXXbhh/0  	
dnn~~bkk!BNN4kPbkk!BNN4kPA1]400aXXbhh/0  rF   Tc                    ^^^^^
^ SSK Jm
Jm  [        U S/ 5       Vs/ s H  n[        USS 5      U:w  d  M  UPM     nnU
UUUUU4S jn	Xil        UR                  U	5        Xl        g s  snf )Nr   )r	   Liner   r1   c                 L  > U" T5      nU" T5      nT" 5       nUR                   nUR                  T	" UR                  XFR                  UR                  -   UT
TS95        UR                   nUR                  T	" X7R                  X7R                  UR                  -   T
TS95        U$ )N)r+   r*   )r   r|   r   r  r   )rR   xScaleyScaler   r   r`   r  r  r	   rC  r+   r*   r   yvs           rG   
annotation)LinePlot.addCrossHair.<locals>.annotation  s    r
Ar
AABEE$ruuQuuRZZ/kVabcBEE$qqrzz!1kVabcHrF   )reportlab.graphics.shapesr	   rC  r]   r1  r   r   )rR   r1   r   rG  r+   r*   r1  r@  r   rH  r	   rC  s     ````    @@rG   addCrossHairLinePlot.addCrossHair  sc    9")$}R"@a"@QGAfUYDZ\`D`q"@a	 	 "-:&& bs
   A(A()r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r6   r7   r8   r9   r~   r:   r   r;   rC   r<   r=   rD   rx   propertyr   setterr   r   r   r   r%  r:  r   r   rK  rE   r5   rF   rG   r   r   T   s*   
 H'	8Udef%h5crst!$-WX&t2mn%d1{|"=7gh 5ghT(>?!$-DE!$-DED'[\"4.l{|}!)2Tcde 1Vefg
H$%N 2 2 = =$N)V D5
N`CJ 28!X\ 'rF   r   c                   x    \ 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S
rS rS rS rS rSrg)
LinePlot3Di  zdx/dzr#   zdy/dzzdepth of an individual serieszz gap around series)rZ   theta_xtheta_yzDepthzSpacer   r   r   c                 &   [         R                  U 5        U R                  nU R                  nU R                  nU R
                  R                  S:X  a  X-  US-   U-  -   nOUSU-  -   nU R                  U-  U l        U R                  U-  U l
        g )Nparallel_3dr   rW   )r   r   r   rT  rS  r   stylerQ  _3d_dxrR  _3d_dy)rR   nSeriesrT  rS  	_3d_depths        rG   r   LinePlot3D.calcPositions  s    t$##??  -/	6'99I6)Ill9,ll9,rF   c                     U R                   nU R                  R                  S:X  a  XR                  U-   -  U-   nU$ UnU$ )NrV  )rT  r   rW  rS  )rR   ra   rT  z0s       rG   _calc_z0LinePlot3D._calc_z0  sF    ??  -/F*+F2B 	 B	rF   c                 F    XU R                   -  -   X#U R                  -  -   4$ rL   )rQ  rR  )rR   r   r   zs       rG   _zadjustLinePlot3D._zadjust  s#    4<<T\\>!111rF   c                    [        U SS 5      nU(       a   S5       eU R                  nU R                  n[        [	        [        U5      5      5      nU R                  (       a  UR                  5         [        U SS 5      nU(       a   S5       eU R                  nU R                  nU R                  nU R                  n	SSKJn
  U
" 5       nSSKJnJn  U R"                  R$                  S:w  a  [        U S	S
5      n[        U SS 5      (       a^  SSKJn  [        [)        X5      5      nU" UUS9nS nU H2  u  nnnnUU:w  a  UnSnOWS
-  nUU   R+                  UU-   UU45        M4     S nOUnOS nUn[        U R,                  5      nU GH  nUU   n[        U5      nU R,                  UU-     nUR.                  n[        USS 5      nU R1                  U5      nUU-   n [3        US5      (       a  UR4                  n!O4[3        U R,                  S5      (       a  U R,                  R4                  n!OS n!U R6                  (       aP  U(       aI  UU   n"U"S   u  n#n$[	        S
[        U"5      5       H#  n%U"U%   u  n&n'U" UU#U&U$U'UU XUS US S S SS9  U&U'n$n#M%     [3        US5      (       a  UR8                  n(O4[3        U R,                  S5      (       a  U R,                  R8                  n(OS n(U((       aR  U HL  n)UW%   u  n&n'U" U&U'U5      u  n&n'[;        U(U)S   U)S
   U5      n*U*(       d  M5  UR=                  S
UUU&U'U*45        MN     [	        U5       HL  n%UU%   u  n&n'U" U&U'U5      u  n&n'U R?                  UU%U&U'5      n+U+(       d  M5  UR=                  SUUU&U'U+45        MN     GM     URA                  5         [C        5       n,URE                  5        H  n-U,R=                  U-S   5        M     U,$ )Nr   z$_bubblePlot not supported for 3d yetr   zinFill not supported for 3d yetr   )
_FakeGroup)_make_3d_line_infofind_intersectionsrV  _3d_tilewidthr   _find_intersections)copy)smallr,   r*   r{   )fillColorShaded	tileWidthr+   r*   r,   shadingr.   rW   )#r]   r   r   r   r   r   r   reverserS  rc  rQ  rR  $reportlab.graphics.charts.linechartsrf  !reportlab.graphics.charts.utils3drg  rh  r   rW  rk  r   insertr   r+   r_  r   r*   r   r.   r   r|   r   sortr	   value).rR   r  r   	positionsr   r4   rS  rc  rQ  rR  rf  Frg  rh  rn  rk  
fpositionsIicir  r   r   jcr
  ra   rc   r   r  rb   r  r^  z1r   frowx0r  r   r#  r$  r  r   r.   Lr`   rQ   s.                                                 rG   r%  LinePlot3D.makeLines  s   T-5
EEE~ ''OO	s9~&'  !))+i-<<<z ==,,,,CL\??  -/_Q7It1$77%!#d"56
&z	B GAa!1uAqM((2qe4  ! !	&
I"J _
EE"CCAzz%*"45H++H8%6=Du%BfBx// ,,]33

.. %e,D!!WFB!&qT!3!%eB*Ar2r2r2 ' ($),0dTX(+	-
 "$RBB "4 x**"//X..**++B ZFB%bB/FB+GBqE"Q%IFvquua2bF%;<	  qUB!"R+B((r2>1aeeQr"R1-.	 "[ f 	
GAAEE!B%LrF   )rX  rY  N)r6   r7   r8   r9   r:   r   r;   r<   rD   rQ  rR  rS  rT  r   r_  rc  r%  rE   r5   rF   rG   rP  rP    sc    Hxg6xg6h-LMh-BC	
H GGFF
-2jrF   rP  ) i0      Y@)韼0gq"Uo
Y@)c0gt	dY@)0gY@)+0g=hY@)0gkRY@)0g#޺Y@)V0g޴ϙY@)0grwY@)0g_i]^Z@)0g#T[@)0g/+^v[@)J0bȺ[@)0r  )s1gY?[@)1gr[@);1ga:{[@)1g'Q=c[@)1gCU[@)f1gL[@)1gі⠍[@)/	1g`[@)	1g R\@)	1g%^O.\@)Z
1gc3v\@)
1g+m\@)-1g^;[@)-1gP[@)K.1g&}kS\@).1g[@)/1gUP[@)v/1g|\pSe\@) r  )r  r  )r  g333333Y@)r  g     Y@)r  gyY@)r       Y@)r  r  )r  fffffY@)r  r  )r  g33333Y@)r  gffffffZ@)r  g33333[@)r  gfffff[@)r  g[@)r  gfffffF\@)r  ǧ[@)r  g33333[@)r  g33333\@)r  gfffff[@)r  g33333S[@)r  g[@)r  g[@)r  fffff&\@)r  gL\@)r  皙y\@)r  g\@)r  g,\@)r  r  )r  g33333\@)r  g\@)r  r  )r  gfffff\@c                       \ rS rSrSrS rSrg)SimpleTimeSeriesPloti  zkA customized version of LinePlot.
It uses NormalDateXValueAxis() and AdjYValueAxis() for the X and Y axes.
c                     [         R                  U 5        [        5       U l        [	        5       U l        [        U l        g rL   )r   rx   r   r   r   r   _monthlyIndexDatar   r   s    rG   rx   SimpleTimeSeriesPlot.__init__  s*    $.0$,%	rF   r   r   r   N)r6   r7   r8   r9   r~   rx   rE   r5   rF   rG   r  r    s    &rF   r  c            	       R    \ rS rSrSr\" \\" SSS9\" \SS9S9r	S r
SS	 jrS
 rSrg)GridLinePloti  a  A customized version of SimpleTimeSeriesSPlot.
It uses NormalDateXValueAxis() and AdjYValueAxis() for the X and Y axes.
The chart has a default grid background with thin horizontal lines
aligned with the tickmarks (and labels). You can change the back-
ground to be any Grid or ShadedRect, or scale the whole chart.
If you do provide a background, you can specify the colours of the
stripes with 'background.stripeColors'.
Nz3Background for chart area (now Grid or ShadedRect).r#   z&Scalefactor to apply to whole drawing.)rZ   
backgroundscaleFactorc                 $   SSK Jn  [        R                  U 5        S U l        [        5       U l        SU R                  l        SU R                  l        SU R                  l	        SU R                  l
        UR                  U R                  l        g )Nr   r   
horizontalr   r   )reportlab.libr   r  rx   r  r   r  orientationuseRectsuseLinesr*   r   r+   )rR   r   s     rG   rx   GridLinePlot.__init__  sd    (%%d+&&2##$ #$ &)#&,ll#rF   c           	         SSK Jn  U(       d  [        SS5      n[        5       nSUl        SUl        SUl        SUl        [        Ul	        SUl
        UR                  Ul        UR                  " S	S
SSSS	S9nXCR                  S   l        SUR                  S   l        S UR                  S   l        UR                  " SSSSSS	S9nXSR                  S   l        SUR                  S   l        SS/UR                  S   l        SUR"                  R$                  l        SUR"                  R$                  l        SUR"                  R$                  l        SUR"                  R$                  l        SUR"                  R$                  l        SUR"                  R$                  l        SUR"                  l        SUR4                  l        SUR4                  l        SUR4                  R$                  l        [;        5       Ul        UR>                  UR@                  /UR<                  l!        SUR<                  l"        URG                  US5        U$ )Nr   r   r   r   r   r   r   r   d   A      zPANTONE 288 CV)spotNamedensityrW   O   [   zPANTONE Wm Red CVr   r   startr  iiz	{mm}/{yy}z%5d%% r   r[   plot)$r  r   r   r  r   r   r   r   r  r   r   r   r+   
PCMYKColorr   r*   r,   r   labelsfontSize
textAnchor	boxAnchorangledxdyxLabelFormatr   labelTextFormattickLeftr   r  pink	lightbluestripeColorsr  r|   )rR   r   r   r_   c0c1s         rG   r   GridLinePlot.demo  s   (c3'G^	#s2a5EsS"$"#&*#qBq3FPST"$"#'(e#(*%*1'),&%(""#"$%0"(0%!"(*%&,kk63C3C%D"$.!BvrF   c                    U R                   U R                  p!U(       a  X!l        U(       a  Xl        UR                  U R                  U R
                  U R                  5        UR                  U R                  5        UR                  S5      nX0R
                  U R                  -   :  d  X0R
                  :  a  U R
                  nOUnUR                  U R                  X@R                  5        UR                  U R                  5        U R                  n[        U[        5      (       Ga6  UR                  S:X  a  UR                  (       az  [!        [#        UR                  UR$                  /UR                  -   5      5      n/ n['        [)        U5      S-
  5       H  nUR+                  XhS-      Xh   -
  5        M      Xul        GO?UR                  S:X  a  UR                  (       ax  [!        [#        UR                  UR$                  /UR                  -   5      5      n	/ n['        [)        U	5      S-
  5       H  nUR+                  XS-      X   -
  5        M      Xul        GO[        U[.        5      (       Ga  U R                  UR0                  l        U R
                  UR0                  l        U R                  UR0                  l
        U R                  UR0                  l        U R                  UR2                  l        U R
                  UR2                  l        U R                  UR2                  l
        U R                  UR2                  l        UR0                  R                  S:X  a  UR                  (       a  [!        [#        UR                  UR$                  /UR                  -   5      5      n/ n['        [)        U5      S-
  5       H  nUR+                  XhS-      Xh   -
  5        M      XuR0                  l        OUR0                  R                  S:X  a  UR                  (       a  [!        [#        UR                  UR$                  /UR                  -   5      5      n	/ n['        [)        U	5      S-
  5       H  nUR+                  XS-      X   -
  5        M      XuR0                  l        UR2                  R                  S:X  a  UR                  (       a  [!        [#        UR                  UR$                  /UR                  -   5      5      n/ n['        [)        U5      S-
  5       H  nUR+                  XhS-      Xh   -
  5        M      XuR2                  l        OUR2                  R                  S:X  a  UR                  (       a  [!        [#        UR                  UR$                  /UR                  -   5      5      n	/ n['        [)        U	5      S-
  5       H  nUR+                  XS-      X   -
  5        M      XuR2                  l        U R5                  5         U R                  U R                  U R6                  pn
U(       a  US:w  a  USSUSS4Wl        O
[;        5       nUR=                  U R?                  5       5        UR=                  U R                   5        UR=                  U R                  5        UR=                  U RA                  5       5        U$ )Nr   r[   r   r  )!r   r   r3  r2  r   r   r   r4  r   r   r   r  r   r   r  _tickValuesr   r   	_valueMinr   r   r   
deltaStepsr   grid0grid1r   r  	transformr	   r|   r5  r%  )rR   xvayvar;  r   backxposstepsr|  yposr   r   r  r`   s                 rG   r:  GridLinePlot.draw  s   ??DOOSss4dii  1fft{{228OAA::.dii dD!!:-#//C		CMM?S__+LMNs4y{+ALLcTW!45 ,"'!!\1cooC		CMM?S__+LMNs4y{+ALLcTW!45 ,"'j))66DJJL66DJJL#zzDJJ $DJJ66DJJL66DJJL#zzDJJ $DJJ zz%%3C		CMM?S__+LMNs4y{+ALLcTW!45 ,(-

%''<7COOC		CMM?S__+LMNs4y{+ALLcTW!45 ,(-

%zz%%3C		CMM?S__+LMNs4y{+ALLcTW!45 ,(-

%''<7COOC		CMM?S__+LMNs4y{+ALLcTW!45 ,(-

%%)ZZd>N>N{;>&1k!A>AKA	d!!#$	doo	doo	dnnrF   )r  r  rL   )r6   r7   r8   r9   r~   r:   r   r;   rB   rD   rx   r   r:  rE   r5   rF   rG   r  r    s<     H!$-bc">8`a
H
	3"HTrF   r  c                   $    \ rS rSrSrS rS rSrg)AreaLinePlotig  z@we're given data in the form [(X1,Y11,..Y1M)....(Xn,Yn1,...YnM)]c                 \    [         R                  U 5        SU l        SU l        / SQU l        g )Nr   ))r      r  r  )rW      r      )r   r  F   (   )r   rx   r   r   r   r   s    rG   rx   AreaLinePlot.__init__i  s&    $ !=	rF   c                     U R                   n[        U5      n[        US   5      nUS/-  n/ U l         [        SU5       HZ  n/ n[        U5       H+  nXG   X   U   -   XG'   UR                  X   S   XG   45        M-     U R                   R                  U5        M\     [        R                  U 5      Xl         $ ! WU l         f = f)Nr   r   )r   r   r   r   r   r:  )rR   odatar   mSr|  Dr  s           rG   r:  AreaLinePlot.drawo  s    	IIEE
AE!HA1#ADI1QZqA4%(1+-ADHHehqk!$/0 " 		  #   ==&IDIs   B0B9 9	C)r   r   r   N)r6   r7   r8   r9   r~   rx   r:  rE   r5   rF   rG   r  r  g  s    J>rF   r  c                       \ rS rSrS rSrg)SplitLinePloti  c                    [         R                  U 5        [        5       U l        [	        5       U l        / SQU l        S U R
                  l        SU R
                  l        SU R
                  l	        SU R
                  l
        [        R                  " S5      U R                  S   l        [        R                  " S5      U R                  S   l        [        R                  " S5      U R                  S   l        g )N))i1ffffff?皙?        )i1r  r  r  )iQ1r  r  r  )i1r  r  r  )i1r  r  r  )i}1r  r  r  )i1r  r  r  )i1r  r  r  )i	1r  r  r  )im1r  r  r  )i1r  r  r  )i51r  r  r  )i1r  r  r  )i1r  r  r  )ia1r  r  r  )i1r  r  r  )i)1r  r  r  )i1r  r  r  )i1r  r  r  )i1r  r  r  )i1r  r  r  )i}1r  r  r  )i1r  r  r  )iE1r  r  r  )i1r  r  r  )i1r  r  r  )iq1r  r  r  )i1r  r  r  )i91r  r  r  )i1r  r  r  )i1r  r  r  )i2r  r  r  )i)2r  r  r  )i2r  r  r  )i2r  r  r  )iU2r  r  r  )i2r  r  r  )i2r  r  r  )i2r  r  r  )i2r  r  r  )iI2r  r  r  )i2r  r  r  )i2r  r  r  )i>2r  r  r  )i9?2r  r  r  )i?2r  r  r  )i@2r  r  r  )ie@2r  r  r  )i@2r  r  r  )i-A2r  r  r  )iA2r  r  r  )iA2r  r  r  )iYB2r  r  r  )iB2r  r  r  )i!C2r  r  r  )ie2r  r  r  )iIf2r  r  r  )if2r  r  r  )ig2r  r  r  )iug2r  r  r  )ig2r  r  r  )i=h2r  r  r  )ih2r  r  r  )ii2r  r  r  )iii2r  r  r  )ii2r  r  r  )i1j2r  r  r  )i2r  r  r  )iY2Q?
ףp=
?r  )i2r  r  r  )i!2r  r  r  )i2r  r  r  )i2r  r  r  )iM2r  r  r  )i2r  r  r  )i2r  r  r  )iy2r  r  r  )iݐ2r  r  r  )iA2r  r  r  )i2r  r  r  )ii2Q?RQ?r  )iʹ2r  r  r  )i12r  r  r  )i2r  r  r  )i2r  r  r  )i]2r  r  r  )i2r  r  r  )i%2r  r  r  )i2r  r  r  )i2r  r  r  )iQ2r  r  r  )i2r  r  r  )iy2
ףp=
?Q?r  )i2r  r  r  )iA2r  r  r  )i2r  r  r  )i	2r  r  r  )im2r  r  r  )i2r  r  r  )i52r  r  r  )i2r  r  r  )i2r  r  r  )ia2r  r  r  )i%3r  r  r  )i3(\?Gz?r  )i3r  r  r  )iQ3r  r  r  )i3r  r  r  )i3r  r  r  )i}3r  r  r  )i3r  r  r  )iE3r  r  r  )i3r  r  r  )i3r  r  r  )iq3r  r  r  )i5)3r  r  r  )i)3)\(?Q?r  )i)3r   r  r  )ia*3r   r  r  )i*3r   r  r  )i)+3r   r  r  )i+3r   r  r  )i+3r   r  r  )iU,3r   r  r  )i,3r   r  r  )i-3r   r  r  )i-3r   r  r  )iEP3r   r  r  )iP3
ףp=
?r   Q?)iQ3r  r   r  )iqQ3r  r   r  )iQ3r  r   r  )i9R3r  r   r  )iR3r  r   r  )iS3r  r   r  )ieS3r  r   r  )iS3r  r   r  )i-T3r  r   r  )iT3r  r   r  )iUw3r  r   r  )iw3333333?=
ףp=?(\?)ix3r  r  r  )ix3r  r  r  )ix3r  r  r  )iIy3r  r  r  )iy3r  r  r  )iz3r  r  r  )iuz3r  r  r  )iz3r  r  r  )i={3r  r  r  )i{3r  r  r  )ie3r  r  r  )iɞ3p=
ף?r  RQ?)i-3r  r  r  )i3r  r  r  )i3r  r  r  )iY3r  r  r  )i3r  r  r  )i!3r  r  r  )i3r  r  r  )i3r  r  r  )iM3r  r  r  )i3r  r  r  )iu3r  r  r  )i3皙?r  r   )i=3r	  r  r   )i3r	  r  r   )i3r	  r  r   )ii3r	  r  r   )i3r	  r  r   )i13r	  r  r   )i3r	  r  r   )i3r	  r  r   )i]3r	  r  r   )i3r	  r  r   )i3r	  r  r   )i3p=
ף?Gz?r   )iM3r
  r  r   )i3r
  r  r   )i3r
  r  r   )iy3r
  r  r   )i3r
  r  r   )iA3r
  r  r   )i3r
  r  r   )i	3r
  r  r   )im3r
  r  r   )i3r
  r  r   )i4r
  r  r   )i4r{   皙?r   )i]4r{   r  r   )i4r{   r  r   )i%4r{   r  r   )i4r{   r  r   )i4r{   r  r   )iQ4r{   r  r   )i4r{   r  r   )i4r{   r  r   )i}4r{   r  r   )i4r{   r  r   )i:4r{   r  r   r   i3  iÙ r   i3  rW   )r  rx   r   r   r   r   r   requiredRangeleftAxisPercentleftAxisOrigShiftMinleftAxisOrigShiftIPCr   toColorr   r+   r   s    rG   rx   SplitLinePlot.__init__  s    d#.0'/ xM	(,%*+'/0,/0,$*NN8$<

1!$*NN8$<

1!$*NN8$<

1!rF   r  N)r6   r7   r8   r9   rx   rE   r5   rF   rG   r  r    s    =rF   r  c           	          [        U [        [        45      (       d  U 4n U  Vs/ s H  o3(       d  M  UPM     n nU =(       a'    [        [        [	        [
        X4S jU 5      5      5      =(       d    S$ s  snf )z0return max stringWidth for the list of strings Tc                     U" XU5      $ rL   r5   )tsWfNfSs       rG   <lambda>_maxWidth.<locals>.<lambda>  s    PRSTXZP[rF   r   )r   tupler   r   r   r   )TfontNamer  _fs       rG   	_maxWidthr    s\    at%%A4qa2aA`T#+[\]^_`edee 	s
   
A2A2c                   H   \ rS rSrSr\" S-0 S\_S\" \SS9_S\" \SS9_S	\" \	S
S9_S\" \
SS9_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_S\" \S S9_S!\" \S"S9_S#\" \S$S9_S%\" \S&S9_6rS' rS( rS.S* jrS+ rS,rg))/ScatterPloti  zA scatter plot widgetrZ   r   z!Width of the area inside the axesr#   r   z"Height of the area inside the axesouterBorderOnz/Is there an outer border (continuation of axes)outerBorderColorzColor of outer border (if any)labelOffsetz.Space between label and Axis (or other labels)r   r%   axisTickLengthszLenth of the ticks on both axesaxisStrokeWidthzStroke width for both axesxLabelzLabel for the whole X-AxisyLabelzLabel for the whole Y-Axisr   z#Data points - a list of x/y tuples.r+   z#Color used for border of plot area.r-   r   leftPaddingzPadding on left of drawingrightPaddingzPadding on right of drawing
topPaddingzPadding at top of drawingbottomPaddingzPadding at bottom of drawingc                 4   [         R                  U 5        SU l        SU l        SU l        [
        R                  U l        S U l        SnSnSnS U R                  l
        S U R                  l        S U R                  l        SU R                  l        SU l        S	U R                  R                   l        S
U l        S	U R                  R                   l        / SQU l        SU l        SU l        SU l        SU l        SU l        U R*                  U-   US-  -   U l        U R2                  [5        [7        U R                  R                  5      U R                  R                   R8                  U R                  R                   R"                  5      -   U l        U R0                  U-   U-   U R                  R                   R"                  -   U l        U* U R                  R                   l        X R                  l        X0R                  l         SU R                  l!        U* U R                  R                   l"        X R                  l#        X0R                  l         SU R                  l!        SU l$        SU RJ                  l        SU RJ                  l&        SU RJ                  l"        SU l'        [Q        SSS9U RR                  l*        [Q        SSS9U RR                  S   l*        [Q        SSS9U RR                  S   l*        [
        RV                  U RR                  S   l,        g )N   r   r   r   rW   r   z%szX Labler   zY Lable)))gQ?g=
ףp]O@)gl?gX9v.K@)g~jt?gX91@))g(\?gˡE='@)gx&1?g rhI@)g+?gE<Q@))gv?gFԸU@)gMb?g
ףp=A@)gK7A?gfffffB@r   r   r   r*  z%.2fer   )r  r   FilledSquare)-r   rx   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  tickDownr*   
rangeRoundr  r  r   r   r  r   r   r   r.   greenr+   )rR   _labelOffset_axisTickLengths_axisStrokeWidths       rG   rx   ScatterPlot.__init__  si   $
 &#' #' $(!+/'*+'*+'
&	 !!"22LNCvviDOO$<$< =t?U?U?^?^`d`o`o`v`v``  A  A##$44\A$//BXBXBaBaa%1M!#3 &6##)"%1M!#3 &6##)"##$ $'!)+$^;

'Q?

1'A>

1$*LL

1!rF   c                    U R                   U R                  R                  -   U R                  R                  R                  S-  -   U R
                  R                  R                  -   nUS[        [        U R                  R                  5      U R                  R                  R                  U R                  R                  R                  5      -  -   nXR                  -   U R                  -   nSU R
                  R                  -  nU[        X R                  R                  R                  U R                  R                  R                  5      -   nU R                  U R
                  R                  -   U R
                  R                  R                  S-  -   U R
                  R                  R                  S-  -   nX0R                  R                  R                  -   U R                   -   U R"                  -   nX4$ )NrW   r   z%.2f%%)r)  r   r  r  r  r   r  r  r   r   r  r   r*  r,  r2  r  r   r+  )rR   txr  tys       rG   _getDrawingDimensions!ScatterPlot._getDrawingDimensions  sx   doo6668N8N8Q8QRS8STUYUdUdUkUkUtUttq3t778$//:P:P:Y:Y[_[j[j[q[q[z[z{{|jj=***DOO,,,yOO22;;T__=S=S=\=\]^ 8 88$//:P:P:S:STU:UVX\XgXgXnXnXwXwxyXyzoo$$---dkk9$//IwrF   Nc                     U(       d  U R                  5       u  p#[        X#5      nUR                  U R                  5       5        U$ rL   )r<  r   r|   r:  )rR   r   r:  r;  s       rG   r   ScatterPlot.demo  s5    ,,.EBbnGDIIK rF   c                    [        U R                  R                  R                  5      R                  R
                  nUS:X  a  SnXR                  R                  R                  -  n[        R                  U 5      nU R                  nU(       a  [        5       nU R                  U R                  -   S-  Ul        SUl        U R                  R                  R                  Ul        U R                  R                  R                  Ul        UR                  U5        UR                  U5        U R                   nU(       a  [        5       nSUl        SUl        U R                  U R$                  S-  -   Ul        U R&                  R                  R                  Ul        U R&                  R                  R                  Ul        UR                  U5        UR                  U5        U R(                  (       ad  UR                  [+        U R                  U R                  U R                  U R$                  U R,                  U R&                  R.                  S S95        UR1                  U R2                  U R4                  5        U$ )Nr   g`"?g       @Z   )r+   r*   r-   )r   r   r  r  faceascentr  r   r:  r'  r   r   r   r   r   r|   r(  r  r   r   r"  r
   r#  r*   shiftr)  r,  )rR   rC  r_   r'  xlr(  yls          rG   r:  ScatterPlot.draw  s   t--667<<CC19Foo,,555 ]]4 wBFF4::%s*BDBD//0099BK//0099BKJJvFF2JwBBHBDFF4;;s?*BD//0099BK//0099BKJJvFF2J FF4

DKK%)%:%:%)__%@%@#') *
 	!!4#5#56	rF   )r  r,  r   r   r   r)  r   r   r#  r"  r*  r+  r   r   r'  r   r(  r5   rL   )r6   r7   r8   r9   r~   r:   r   r;   r<   rC   r=   isString
isAnythingrD   rx   r<  r   r:  rE   r5   rF   rG   r!  r!    sK    H (8[\)(9]^ %1Ar$s (4MHh'i	
 #/x>n}~" '38Bc&d '38B^&_ *(9UV *(9UV (
9^_ #/}Ch"i !-]As t #/x>Z"[ $0?\#] ".h=X!Y  %1@^$_!H&@1D	'rF   r!  c                  (   [        SS5      n SS/n[        5       nSUl        SUl        SUl        SUl        Xl        SUl        [        R                  Ul
        [        S	5      UR                  l        S
UR                  S   l        SUR                  S   l        SUR                  l        SUR                  l        SUR                  l        SUR&                  l        SUR&                  l        SUR&                  l        U R)                  U5        U $ )2A line plot with non-equidistant points in x-axis.r   r   r   r   r   r   r   r   UK_FlagrW   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      rG   sample1arN  '  s     c3G 23
D
 
BBDBDBIBHGBN\\BN +BHHOBHHQKBHHQKBMMBMMBMMBMMBMMBMMKKONrF   c                     [        SS5      n SS/n[        5       nSUl        SUl        SUl        SUl        Xl        SUl        [        S	5      UR                  l
        S
Ul        [        R                  Ul        SUR                  l        SUR                  l        / SQUR                  l        SUR                  l        SUR(                  l        SUR(                  l        SUR(                  l        U R-                  U5        U $ )rK  r   r   r   r   r   r   r   r   Circler   r   r   r   rW   r   r   r   r   %2.1fr   )r   r   r   r   r   r   r   r   r   r   r.   r   r   r   r+   r   r   r   
valueStepsr  r   r   r|   rM  s      rG   sample1brT  M  s     c3G 23
D
 
BBDBDBIBHGBN *BHHO B\\BNBMMBMM3BMM$+BMM!BMMBMMBMMKKONrF   c                  P   [        SS5      n SS/n[        5       nSUl        SUl        SUl        SUl        Xl        SUl        [        S	5      UR                  S
   l
        [        S5      UR                  S   l
        SUl        [        R                  Ul        S
UR                  l        SUR                  l        / SQUR                  l        SUR                  l        S
UR(                  l        SUR(                  l        / SQUR(                  l        U R+                  U5        U $ )rK  r   r   r   r   r   r   r   r   r   r   rP  r   r   rQ  rR  r   )r   rW   r   r   r   )r   r   r   r   r   r   r   r   r   r   r.   r   r   r   r+   r   r   r   rS  r  r   r|   rM  s      rG   sample1crV  q  s     c3G 23
D
 
BBDBDBIBHGBN#N3BHHQK#H-BHHQK B\\BNBMMBMM3BMM$+BMM!BMMBMM.BMMKKONrF   c                 Z    U  Vs/ s H  n[        US   5      US   S-  4PM     sn$ s  snf )z=Convert date strings into seconds and multiply values by 100.r   r   r  )str2seconds)seriesr   s     rG   preprocessDatarZ    s2     4::6a[1!S)6:::s    (c                     [        SS5      n S/n[        US   5      US'   [        5       nSUl        SUl        SUl        SUl        Xl        SUl        [        S	5      UR                  l        [        R                  Ul        [        [!        S
5      5      n[        [!        S5      5      n[        [!        S5      5      n[        [!        S5      5      n[        [!        S5      5      n[        [!        S5      5      n[        [!        S5      5      n	X2R"                  l        XR"                  l        X4XVXxU	/UR"                  l        [*        UR"                  l        SUR"                  R.                  S   l        SUR"                  R.                  S   l        SUR2                  l        SUR2                  l        SUR2                  l        SUR2                  l        U R7                  U5        U $ )rK  r   r   ))
25/11/1991r   )
30/11/1991gea?)
31/12/1991ga+e?)z
31/01/1992gvq-?)z
29/02/1992gm4@?)
31/03/1992gyT?)z
30/04/1992g )
k?)z
31/05/1992gcȎ{?)
30/06/1992gy,?)z
31/07/1992gQ צ?)z
31/08/1992g[B>٬?)
30/09/1992gY)?)z
31/10/1992g~@?)z
30/11/1992g30?)
31/12/1992g`"?r   r   r   r   r   r   r\  r]  r^  r_  r`  ra  rb  iirW   z%4.2fr  n   )r   rZ  r   r   r   r   r   r   r   r   r   r.   r   r   r+   r   r   r   r   r   rS  seconds2strr  r  r  r   r   r|   )
r   r   r_   r  t0t1t2t3t4ends
             rG   sample2rk    s    c3G	
D& T!W%DG	BBDBDBIBHGBN 1BHHO\\BN;|,-E	L)	*B	L)	*B	L)	*B	L)	*B	L)	*B
\*
+C"MM MM %223?BMM$/BMM!!$BMM!$BMM$+BMM! BMM BMMBMMKKONrF   c                  `   [        SS5      n [        5       nU R                  U5        [        UR                  S   S5      UR                  S   /Ul        [        [        R                  " S5      SS S9UR                  S   l	        S UR                  S   l
        S UR                  S   l
        U $ )Nr   r   r   r   z#9f9f9f)r-   r*   r+   )r   r  r|   r   r   rq   r   r  r   r0   r+   )dcharts     rG   sampleFillPairedDataro    s    CA "EEE%L Aq1%**Q-@EJ!FNN9,ERS`deEKKN!%EKKN!%EKKNHrF   N)C__version__r~   r  r   reportlab.lib.validatorsreportlab.lib.attrmapreportlab.lib.utilsr   r   rJ  r   r	   r
   r   r   r   reportlab.graphics.widgetbaser   r   r   $reportlab.graphics.charts.textlabelsr   reportlab.graphics.charts.axesr   r   r   r   reportlab.graphics.charts.utils"reportlab.graphics.widgets.markersr   r    reportlab.graphics.widgets.gridsr   r   r   reportlab.pdfbase.pdfmetricsr   r   reportlab.graphics.charts.areasr   utilsr   r!   rM   rI   rU   ri   rq   r   r   rr  r   r   rP  r  r  r  r  r  r  r!  rN  rT  rV  rZ  rk  ro  r5   rF   rG   <module>r}     s@  
 G   & # . ^ ^ Y Y 6 f f - I L L = 4 !
 
# 
%_ 
% : : 	vm 		 	 Cc'  c'JM M^@A? B&8 &R' Rh8 2=L =fQ( Qf#L!H"J;:xrF   