From 87210330460ba5d0f3a021f9c1e36ee7cafebec5 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Sun, 11 Jun 2017 14:56:30 -0700 Subject: [PATCH 01/73] checkin --- _examples/stacked_bar/main.go | 5 +- stacked_bar_chart.go | 175 ++++++++++++++++++++++++++-------- 2 files changed, 140 insertions(+), 40 deletions(-) diff --git a/_examples/stacked_bar/main.go b/_examples/stacked_bar/main.go index 7053bf3..1f3eb45 100644 --- a/_examples/stacked_bar/main.go +++ b/_examples/stacked_bar/main.go @@ -10,8 +10,9 @@ import ( func drawChart(res http.ResponseWriter, req *http.Request) { sbc := chart.StackedBarChart{ - Title: "Test Stacked Bar Chart", - TitleStyle: chart.StyleShow(), + Title: "Test Stacked Bar Chart", + TitleStyle: chart.StyleShow(), + Orientation: chart.OrientationLandscape, Background: chart.Style{ Padding: chart.Box{ Top: 40, diff --git a/stacked_bar_chart.go b/stacked_bar_chart.go index 0a5e723..af06d61 100644 --- a/stacked_bar_chart.go +++ b/stacked_bar_chart.go @@ -11,6 +11,18 @@ import ( util "github.com/wcharczuk/go-chart/util" ) +// Orientation is an orientation for an element. +type Orientation int + +const ( + // OrientationDefault is the default orientation. + OrientationDefault Orientation = iota + // OrientationLandscape is the landscape orientation. + OrientationLandscape Orientation = iota + // OrientationPortrait is the portrait orientation. + OrientationPortrait Orientation = iota +) + // StackedBar is a bar within a StackedBarChart. type StackedBar struct { Name string @@ -43,7 +55,8 @@ type StackedBarChart struct { XAxis Style YAxis Style - BarSpacing int + BarSpacing int + Orientation Orientation Font *truetype.Font defaultFont *truetype.Font @@ -95,6 +108,16 @@ func (sbc StackedBarChart) GetBarSpacing() int { return sbc.BarSpacing } +// GetOrientation gets the orientation or the default. +func (sbc StackedBarChart) GetOrientation() Orientation { + switch sbc.Orientation { + case OrientationDefault: + return OrientationPortrait + default: + return sbc.Orientation + } +} + // Render renders the chart with the given renderer to the given io.Writer. func (sbc StackedBarChart) Render(rp RendererProvider, w io.Writer) error { if len(sbc.Bars) == 0 { @@ -134,33 +157,63 @@ func (sbc StackedBarChart) drawCanvas(r Renderer, canvasBox Box) { } func (sbc StackedBarChart) drawBars(r Renderer, canvasBox Box) { - xoffset := canvasBox.Left + var offset int + if sbc.GetOrientation() == OrientationPortrait { + offset = canvasBox.Left + } else { + offset = canvasBox.Top + } + for _, bar := range sbc.Bars { - sbc.drawBar(r, canvasBox, xoffset, bar) - xoffset += (sbc.GetBarSpacing() + bar.GetWidth()) + sbc.drawBar(r, canvasBox, offset, bar) + offset += (sbc.GetBarSpacing() + bar.GetWidth()) } } -func (sbc StackedBarChart) drawBar(r Renderer, canvasBox Box, xoffset int, bar StackedBar) int { +func (sbc StackedBarChart) drawBar(r Renderer, canvasBox Box, offset int, bar StackedBar) int { barSpacing2 := sbc.GetBarSpacing() >> 1 - bxl := xoffset + barSpacing2 - bxr := bxl + bar.GetWidth() normalizedBarComponents := Values(bar.Values).Normalize() - yoffset := canvasBox.Top + + if sbc.GetOrientation() == OrientationPortrait { + bxl := offset + barSpacing2 + bxr := bxl + bar.GetWidth() + + normalizedBarComponents := Values(bar.Values).Normalize() + yoffset := canvasBox.Top + for index, bv := range normalizedBarComponents { + barHeight := int(math.Ceil(bv.Value * float64(canvasBox.Height()))) + barBox := Box{ + Top: yoffset, + Left: bxl, + Right: bxr, + Bottom: util.Math.MinInt(yoffset+barHeight, canvasBox.Bottom-DefaultStrokeWidth), + } + Draw.Box(r, barBox, bv.Style.InheritFrom(sbc.styleDefaultsStackedBarValue(index))) + yoffset += barHeight + } + + return bxr + } + + bxt := offset + barSpacing2 + bxb := bxt + bar.GetWidth() + + xoffset := canvasBox.Left for index, bv := range normalizedBarComponents { barHeight := int(math.Ceil(bv.Value * float64(canvasBox.Height()))) barBox := Box{ - Top: yoffset, - Left: bxl, - Right: bxr, - Bottom: util.Math.MinInt(yoffset+barHeight, canvasBox.Bottom-DefaultStrokeWidth), + Top: bxt, + Left: xoffset, + Right: util.Math.MinInt(xoffset+barHeight, canvasBox.Right-DefaultStrokeWidth), + Bottom: bxb, } Draw.Box(r, barBox, bv.Style.InheritFrom(sbc.styleDefaultsStackedBarValue(index))) - yoffset += barHeight + xoffset += barHeight } - return bxr + return bxb + } func (sbc StackedBarChart) drawXAxis(r Renderer, canvasBox Box) { @@ -178,7 +231,6 @@ func (sbc StackedBarChart) drawXAxis(r Renderer, canvasBox Box) { cursor := canvasBox.Left for _, bar := range sbc.Bars { - barLabelBox := Box{ Top: canvasBox.Bottom + DefaultXAxisMargin, Left: cursor, @@ -271,46 +323,93 @@ func (sbc StackedBarChart) getDefaultCanvasBox() Box { } func (sbc StackedBarChart) getAdjustedCanvasBox(r Renderer, canvasBox Box) Box { - var totalWidth int + var total int + for _, bar := range sbc.Bars { - totalWidth += bar.GetWidth() + sbc.GetBarSpacing() + total += bar.GetWidth() + sbc.GetBarSpacing() } if sbc.XAxis.Show { - xaxisHeight := DefaultVerticalTickHeight - - axisStyle := sbc.XAxis.InheritFrom(sbc.styleDefaultsAxes()) - axisStyle.WriteToRenderer(r) - - cursor := canvasBox.Left - for _, bar := range sbc.Bars { - if len(bar.Name) > 0 { - barLabelBox := Box{ - Top: canvasBox.Bottom + DefaultXAxisMargin, - Left: cursor, - Right: cursor + bar.GetWidth() + sbc.GetBarSpacing(), - Bottom: sbc.GetHeight(), - } - lines := Text.WrapFit(r, bar.Name, barLabelBox.Width(), axisStyle) - linesBox := Text.MeasureLines(r, lines, axisStyle) - - xaxisHeight = util.Math.MaxInt(linesBox.Height()+(2*DefaultXAxisMargin), xaxisHeight) + if sbc.GetOrientation() == OrientationPortrait { + return Box{ + Top: canvasBox.Top, + Left: canvasBox.Left, + Right: canvasBox.Left + total, + Bottom: sbc.GetHeight() - sbc.measurePortraitAxisHeight(r, canvasBox), } } + return Box{ Top: canvasBox.Top, Left: canvasBox.Left, - Right: canvasBox.Left + totalWidth, - Bottom: sbc.GetHeight() - xaxisHeight, + Right: sbc.GetWidth() - sbc.measureLandscapeAxisWidth(r, canvasBox), + Bottom: canvasBox.Top + total, + } + } + + if sbc.GetOrientation() == OrientationPortrait { + return Box{ + Top: canvasBox.Top, + Left: canvasBox.Left, + Right: canvasBox.Left, + Bottom: canvasBox.Top + total, } } return Box{ Top: canvasBox.Top, Left: canvasBox.Left, - Right: canvasBox.Left + totalWidth, + Right: canvasBox.Left + total, Bottom: canvasBox.Bottom, } +} +func (sbc StackedBarChart) measurePortraitAxisHeight(r Renderer, canvasBox Box) int { + xaxisHeight := DefaultVerticalTickHeight + + axisStyle := sbc.XAxis.InheritFrom(sbc.styleDefaultsAxes()) + axisStyle.WriteToRenderer(r) + + cursor := canvasBox.Left + for _, bar := range sbc.Bars { + if len(bar.Name) > 0 { + barLabelBox := Box{ + Top: canvasBox.Bottom + DefaultXAxisMargin, + Left: cursor, + Right: cursor + bar.GetWidth() + sbc.GetBarSpacing(), + Bottom: sbc.GetHeight(), + } + lines := Text.WrapFit(r, bar.Name, barLabelBox.Width(), axisStyle) + linesBox := Text.MeasureLines(r, lines, axisStyle) + + xaxisHeight = util.Math.MaxInt(linesBox.Height()+(2*DefaultXAxisMargin), xaxisHeight) + } + } + return xaxisHeight +} + +func (sbc StackedBarChart) measureLandscapeAxisWidth(r Renderer, canvasBox Box) int { + axisWidth := DefaultVerticalTickHeight + + axisStyle := sbc.XAxis.InheritFrom(sbc.styleDefaultsAxes()) + axisStyle.WriteToRenderer(r) + + cursor := canvasBox.Top + for _, bar := range sbc.Bars { + if len(bar.Name) > 0 { + barLabelBox := Box{ + Top: cursor, + Left: canvasBox.Right + DefaultXAxisMargin, + Right: sbc.GetWidth(), + Bottom: cursor + bar.GetWidth() + sbc.GetBarSpacing(), + } + lines := Text.WrapFit(r, bar.Name, barLabelBox.Width(), axisStyle) + linesBox := Text.MeasureLines(r, lines, axisStyle) + + axisWidth = util.Math.MaxInt(linesBox.Width()+(2*DefaultYAxisMargin), axisWidth) + cursor += bar.GetWidth() + sbc.GetBarSpacing() + } + } + return axisWidth } // Box returns the chart bounds as a box. From f72f7fd57b99907bc56d34b7071656c83dbf0a16 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Thu, 12 Oct 2017 13:29:55 -0700 Subject: [PATCH 02/73] fix for issues/56 --- _examples/pie_chart/main.go | 19 +++++++++++++++++++ _examples/pie_chart/reg.svg | 17 +++++++++++++++++ pie_chart.go | 1 + vector_renderer.go | 7 ++++++- 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 _examples/pie_chart/reg.svg diff --git a/_examples/pie_chart/main.go b/_examples/pie_chart/main.go index d928c41..9d1098d 100644 --- a/_examples/pie_chart/main.go +++ b/_examples/pie_chart/main.go @@ -30,7 +30,26 @@ func drawChart(res http.ResponseWriter, req *http.Request) { } } +func drawChartRegression(res http.ResponseWriter, req *http.Request) { + pie := chart.PieChart{ + Width: 512, + Height: 512, + Values: []chart.Value{ + {Value: 5, Label: "Blue"}, + {Value: 2, Label: "Two"}, + {Value: 1, Label: "One"}, + }, + } + + res.Header().Set("Content-Type", chart.ContentTypeSVG) + err := pie.Render(chart.SVG, res) + if err != nil { + fmt.Printf("Error rendering pie chart: %v\n", err) + } +} + func main() { http.HandleFunc("/", drawChart) + http.HandleFunc("/reg", drawChartRegression) log.Fatal(http.ListenAndServe(":8080", nil)) } diff --git a/_examples/pie_chart/reg.svg b/_examples/pie_chart/reg.svg new file mode 100644 index 0000000..6b8d2ff --- /dev/null +++ b/_examples/pie_chart/reg.svg @@ -0,0 +1,17 @@ + + + + + \ No newline at end of file diff --git a/pie_chart.go b/pie_chart.go index d0f1260..6d5d75e 100644 --- a/pie_chart.go +++ b/pie_chart.go @@ -11,6 +11,7 @@ import ( ) const ( + _pi = math.Pi _pi2 = math.Pi / 2.0 _pi4 = math.Pi / 4.0 ) diff --git a/vector_renderer.go b/vector_renderer.go index 17d7b73..6996fe8 100644 --- a/vector_renderer.go +++ b/vector_renderer.go @@ -107,7 +107,12 @@ func (vr *vectorRenderer) ArcTo(cx, cy int, rx, ry, startAngle, delta float64) { dd := util.Math.RadiansToDegrees(delta) - vr.p = append(vr.p, fmt.Sprintf("A %d %d %0.2f 0 1 %d %d", int(rx), int(ry), dd, endx, endy)) + largeArcFlag := 0 + if delta > _pi { + largeArcFlag = 1 + } + + vr.p = append(vr.p, fmt.Sprintf("A %d %d %0.2f %d 1 %d %d", int(rx), int(ry), dd, largeArcFlag, endx, endy)) } // Close closes a shape. From 11e380634bd594f5635f2f8e89a6e8c075ec1222 Mon Sep 17 00:00:00 2001 From: oneumyvakin Date: Thu, 25 Jan 2018 00:43:24 +0700 Subject: [PATCH 03/73] Port changes 'fixing styling issues w/ the stack bar chart.' from commit a0ea0129036c613675742b96f051df3a1a08821f (#66) --- _examples/bar_chart/main.go | 7 +++++++ _examples/bar_chart/output.png | Bin 16476 -> 19152 bytes bar_chart.go | 37 +++++++++++++++++++++++++++++---- 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/_examples/bar_chart/main.go b/_examples/bar_chart/main.go index 6afc886..6b8db61 100644 --- a/_examples/bar_chart/main.go +++ b/_examples/bar_chart/main.go @@ -11,6 +11,13 @@ import ( func drawChart(res http.ResponseWriter, req *http.Request) { sbc := chart.BarChart{ + Title: "Test Bar Chart", + TitleStyle: chart.StyleShow(), + Background: chart.Style{ + Padding: chart.Box{ + Top: 40, + }, + }, Height: 512, BarWidth: 60, XAxis: chart.Style{ diff --git a/_examples/bar_chart/output.png b/_examples/bar_chart/output.png index 59c6c890246854df3e13817f5f14ac2b4c8ac0cb..321a3414e6355cb11c52ec6c30ba7e89147b2c49 100644 GIT binary patch literal 19152 zcmeIa2{e{(-!6PN3q?hWB8?)Hu`-pUA{jD8Xfl(`Q-+EtNfScIlsT1|P$6YVZeuc3 z$UM*E{Tp1q#;d!N0YckjLS_wBWI>%Sg7ab5Ryo#$^je#dc~?kJr(v4)nFmP8`0 zIdxJ-g+yA8zb+-wEX9|{DR%})B)Py-GDlS%p7k|5sxoOTOb*MZM%}!-ly)7H{iWr1 zWDdMsCc8u<@=lh=(@iDHk57Nx^@xl0G?VbhILmsO^S4j#zejfdtJYbOXx+O*Gw`%iDO9Gw2m}|~ewGbmA)+PAxBkW8w?D$G@r)(u2 zhO})5@o1zYvNXgO_j`=Q7t&@<>K6fN>X$1X)GwcCh&zxTtlQwiKwKEB7@qGko5A>@ zy1Kf!_;_pK64IgV_OKR?Ch99v5Jy7~LRe*Kbgo=`Os5*4**%CdaC zTVc!At>eN8JQ^>f@#n=0EiEk()4C*u5Rv}I^hBkN8#ZiUVcFv`H8)zhnnZfeg2%M7 zpBd{;DOi}<>(kuaJkCzCvbOI05~^KWC1T#Ve8r0C*;xv|m(4&^_Jaox#>U2I`}3S9 z!z5jtqGWv+0&guLsrng`Nbk0t4wsy-6*zFWPZESCwrZ?tR!t(i%onWCM6}s&z~~F zYyG=C+ot;wq;;MJ~6 zHB>Y-?38jQvGD7j&#{S5>+kFoH7I}jyCS6Zt)q2in8fSXuNgQb%Rhf!O-EN49*g(YxiyjTAFRx!IR2e18je)N`*KA-N}DJdF~ ze89ekA}i@PF|x99o9E`_oOyQewPLtr)Cs?h($5ZB{wfa=Ov#_=376PJdRM&-tCRXY z-BjcH^*MhYjeEYn+UX{>@n>T>kKNw1d9xaqm|b7P{jFkTGI?ZVBv{Cp{6@b_IZF1> zp+l!m96NT*$Hym~Vf%>_C&I-Y$)7(PkF{mC%F9n{E2*dmSpPoFDU;_kE;&C|Eo@r%Ox#g`pWmYJ_L?

a_y($LV)LT_(x9~SABBIxhmo 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%0DT62jW`lyy3%A#ZK19p)(!^+=@^<9z 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 literal 16476 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 z

~?kRBbssN0Q|MRIJ$^kAH`>h!KPuVxrd$Lk7hL^8igO=TCfdYudd-8<|MGEP#@ ze{Gi8_gj2x@p^sy(RS_MFS@!xqN?geao}-({9~pb9b-@Mqt31_iG5S(jy&AlnYe

cOi$ocfYQ2tyWsBSZa9`Af($uv z;_FLZ@{tVtu^%`#fO$$pk}Ib>1~~w+kakPpf*&1?NNYniqaI>_>9h}G8*ne?)uqsk za%=`ja&i?2@uGr)-Fx>QH>#5+*P^Q6s03WYh#|NuaB2!92t`Rnqf2XX#t&l-pjfyh z`+9pFkV#n7yB;2E*$(Gdy0UrSo)M9BnCPX9qv4oRO^K$$W3v4gSFoe}b0 zZS*-idbrvUu&~^h78g6fpJYt&hDk;)bj$ymnSqd3*V?KjXbw50rpF40CeYCU#BsVS z#Oi~%fx&*;>!KutYacp3CQn1zW3o6*VA`As$z&R4ZdvLmV-f9K#BtIX0gh1W|M8

l{i5K%~&;_tp>@UR>06q#Ger|p~{MD=2 zeTSgpxdIO&5TKEQFra$j?jXE8*}%UeVhdR1$v0=Qw486J%)aE*LeTmN&tHiDChl*&1QZ&70M_T((?g#4)Nk%@!Et&J>NZ zIn2?Wc5zuqYjq*l8sfZC$g^kT?^pBIWX9wHJc93nr3wZQQqGAvOvEBd7~dBa71h;E zKH$xz@F8qEEaw#cFVS_r#Educiz7 zdQhPNJ-#(JqhT&xx|A4qc>|6;7}mT72n8(2o@#MKk$K0dS=P}nqGyQV8y0^6sYj6u zoo7?U!f31?7IUnDHRh_M`0|R1^{ZAL`6gxH6mc>UA;G^DzBrg$D8<&o!krO|t0<=5 znB3zylw*sjB%)P4%O-y2;A1;`dw-%qeL`@J3(my!tX1Sm+N1)+apR0;q9nCf6>H$K$bT6x>SNoZjSyit0P@NuFF z+{!d(g4nF;jM#>4aQa7}sR*oGV5k&Nzn*9n{|M6F1rsQcGqm(^0HC$wJK32a*j>g1 z1c$|3F!4sx;eA#tTUKMM_7Tt#60j?N3|OC;kpaqb0g$0mM-t?#K@%zE8ciBSZ95Lcd@o00?J0{P*B+8lLaDlLZvOV!0U;qF zN^LSdJFJI*9>oDC0fVY*FrxyfOpK2sccS<{Qu-3CY@nowhJA#&NB}gSprARF#~Pvf zdSLjk6rbkxvciX(l@t`-B9cc(EtckoN1SDWaZ6J(!B)xMH_!Q;Hz4CX2$ZuiC<#3K z_rou*t{(SAf8kcx83FAAiuD^DMmg=Gz9@2NIyRn6r>iH*&B2@kHn=NR=dm&2pCMjc!QY)h+l1w6^ILrAS9sNWXhRA z{2VLjLxgO`BQp-4>0R7ITl-aw2(kf_FJj*9Dz&KU9?E$IJP%d}3iANcO5?4zM~$Yc z>Ss|0@1Pd%jhKAFd`DIY|I*prz36q;hu6TRXP&QpDEf~i6jk(M4WAMMWa&nus=sCnu#rjPn#m?Fr@d4^mIxkNG$s#`L4 z4n;Q`zIxZ$1N!55q8yyMf+MCK$KGOIzxMR<;>QGMc1#bF%QzQIIu#3zANl`qBJ@!u=DwYci z3nOfyp>H}!8poM1yu=K!ZdDW-5zHpF1qGdp^LdL?X?eHAhj6Y&4V#EIiCoDAltmFs zP)m~?;(ZGEe!ckFemFQUr<;Xgycig$h6yfWqPMRB#%h?OQR66%P07gKs>lbg?lZOn zvTZ(PV~jbcot+)RF(P^&9f4hnp{Gb>$;;;m$rRH3-Swne<(P?qC?XkIaSeSD2VEB1 zuZold_dk>D;%K>dK!!J?Vylg%g$1}QDjLqUu2{oX2}d`~k~RIY$;r*g5qu`ET6~t{4e3moBBFgCvY_0_Qih{@5T& z5So0kbXnU5yf$T~)8f!~(A3lvym|3saj_xfRm1@>2hK`%!7(#~L&KXL{7}0!+W{LKI68f$%>quK()+FID&ar+JHq7aJ03cBwN9b+^?wEx`d$EW-cN fKQ3Z}78mQ2KAZ|71BuJc>J(nPM<<|cJ(aAZk diff --git a/bar_chart.go b/bar_chart.go index d6a8f7b..0c24d92 100644 --- a/bar_chart.go +++ b/bar_chart.go @@ -126,7 +126,7 @@ func (bc BarChart) Render(rp RendererProvider, w io.Writer) error { canvasBox = bc.getAdjustedCanvasBox(r, canvasBox, yr, yt) yr = bc.setRangeDomains(canvasBox, yr) } - + bc.drawCanvas(r, canvasBox) bc.drawBars(r, canvasBox, yr) bc.drawXAxis(r, canvasBox) bc.drawYAxis(r, canvasBox, yr, yt) @@ -139,6 +139,10 @@ func (bc BarChart) Render(rp RendererProvider, w io.Writer) error { return r.Save(w) } +func (bc BarChart) drawCanvas(r Renderer, canvasBox Box) { + Draw.Box(r, canvasBox, bc.getCanvasStyle()) +} + func (bc BarChart) getRanges() Range { var yrange Range if bc.YAxis.Range != nil && !bc.YAxis.Range.IsZero() { @@ -280,7 +284,32 @@ func (bc BarChart) drawYAxis(r Renderer, canvasBox Box, yr Range, ticks []Tick) func (bc BarChart) drawTitle(r Renderer) { if len(bc.Title) > 0 && bc.TitleStyle.Show { - Draw.TextWithin(r, bc.Title, bc.box(), bc.styleDefaultsTitle()) + r.SetFont(bc.TitleStyle.GetFont(bc.GetFont())) + r.SetFontColor(bc.TitleStyle.GetFontColor(bc.GetColorPalette().TextColor())) + titleFontSize := bc.TitleStyle.GetFontSize(bc.getTitleFontSize()) + r.SetFontSize(titleFontSize) + + textBox := r.MeasureText(bc.Title) + + textWidth := textBox.Width() + textHeight := textBox.Height() + + titleX := (bc.GetWidth() >> 1) - (textWidth >> 1) + titleY := bc.TitleStyle.Padding.GetTop(DefaultTitleTop) + textHeight + + r.Text(bc.Title, titleX, titleY) + } +} + +func (bc BarChart) getCanvasStyle() Style { + return bc.Canvas.InheritFrom(bc.styleDefaultsCanvas()) +} + +func (bc BarChart) styleDefaultsCanvas() Style { + return Style{ + FillColor: bc.GetColorPalette().CanvasColor(), + StrokeColor: bc.GetColorPalette().CanvasStrokeColor(), + StrokeWidth: DefaultCanvasStrokeWidth, } } @@ -397,8 +426,8 @@ func (bc BarChart) box() Box { dpb := bc.Background.Padding.GetBottom(50) return Box{ - Top: 20, - Left: 20, + Top: bc.Background.Padding.GetTop(20), + Left: bc.Background.Padding.GetLeft(20), Right: bc.GetWidth() - dpr, Bottom: bc.GetHeight() - dpb, } From 7d284700553e67bfa65e2bb4812ddc510c8c6708 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Wed, 4 Apr 2018 22:06:34 -0700 Subject: [PATCH 04/73] removing dep on go-util from blend --- raster_renderer.go | 2 +- style.go | 2 +- value.go | 2 +- vector_renderer.go | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/raster_renderer.go b/raster_renderer.go index dacc939..1f18309 100644 --- a/raster_renderer.go +++ b/raster_renderer.go @@ -6,9 +6,9 @@ import ( "io" "math" - util "github.com/blendlabs/go-util" "github.com/golang/freetype/truetype" "github.com/wcharczuk/go-chart/drawing" + "github.com/wcharczuk/go-chart/util" ) // PNG returns a new png/raster renderer. diff --git a/style.go b/style.go index b1a145d..9d1b268 100644 --- a/style.go +++ b/style.go @@ -4,9 +4,9 @@ import ( "fmt" "strings" - util "github.com/blendlabs/go-util" "github.com/golang/freetype/truetype" "github.com/wcharczuk/go-chart/drawing" + "github.com/wcharczuk/go-chart/util" ) const ( diff --git a/value.go b/value.go index 4b747e0..75eedbb 100644 --- a/value.go +++ b/value.go @@ -1,6 +1,6 @@ package chart -import util "github.com/blendlabs/go-util" +import util "github.com/wcharczuk/go-chart/util" // Value is a chart value. type Value struct { diff --git a/vector_renderer.go b/vector_renderer.go index 6996fe8..6f9b6f4 100644 --- a/vector_renderer.go +++ b/vector_renderer.go @@ -9,9 +9,9 @@ import ( "golang.org/x/image/font" - util "github.com/blendlabs/go-util" "github.com/golang/freetype/truetype" "github.com/wcharczuk/go-chart/drawing" + "github.com/wcharczuk/go-chart/util" ) // SVG returns a new png/raster renderer. From df14434b6e7cbc6aaf89a9c0be5600abfa67d74d Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Thu, 5 Apr 2018 00:36:12 -0700 Subject: [PATCH 05/73] changing assert --- .travis.yml | 2 +- annotation_series_test.go | 2 +- bar_chart_test.go | 2 +- bollinger_band_series_test.go | 2 +- box_test.go | 2 +- chart_test.go | 2 +- concat_series_test.go | 2 +- continuous_range_test.go | 2 +- continuous_series_test.go | 2 +- drawing/color_test.go | 2 +- drawing/curve_test.go | 2 +- ema_series_test.go | 2 +- grid_line_test.go | 2 +- histogram_series_test.go | 2 +- legend_test.go | 2 +- linear_regression_series_test.go | 2 +- macd_series_test.go | 2 +- market_hours_range_test.go | 2 +- matrix/matrix_test.go | 2 +- matrix/regression_test.go | 2 +- pie_chart_test.go | 2 +- polynomial_regression_test.go | 2 +- seq/buffer_test.go | 2 +- seq/linear_test.go | 2 +- seq/random_test.go | 2 +- seq/sequence_test.go | 2 +- seq/time_test.go | 2 +- sma_series_test.go | 2 +- style_test.go | 2 +- text_test.go | 2 +- tick_test.go | 2 +- time_series_test.go | 2 +- util/date_test.go | 2 +- util/math_test.go | 2 +- value_formatter_test.go | 2 +- value_test.go | 2 +- vector_renderer_test.go | 2 +- xaxis_test.go | 2 +- yaxis_test.go | 2 +- 39 files changed, 39 insertions(+), 39 deletions(-) diff --git a/.travis.yml b/.travis.yml index f2e55e9..b319970 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ go: sudo: false before_script: - - go get -u github.com/blendlabs/go-assert + - go get -u github.co/blend/go-sdk/assert - go get ./... script: diff --git a/annotation_series_test.go b/annotation_series_test.go index 8945836..8fc5a9c 100644 --- a/annotation_series_test.go +++ b/annotation_series_test.go @@ -4,7 +4,7 @@ import ( "image/color" "testing" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/drawing" ) diff --git a/bar_chart_test.go b/bar_chart_test.go index 2a8e96d..3a8e047 100644 --- a/bar_chart_test.go +++ b/bar_chart_test.go @@ -5,7 +5,7 @@ import ( "math" "testing" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" ) func TestBarChartRender(t *testing.T) { diff --git a/bollinger_band_series_test.go b/bollinger_band_series_test.go index 9ef75fe..0bbcb5c 100644 --- a/bollinger_band_series_test.go +++ b/bollinger_band_series_test.go @@ -5,7 +5,7 @@ import ( "math" "testing" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/seq" ) diff --git a/box_test.go b/box_test.go index 3f3fa02..206add0 100644 --- a/box_test.go +++ b/box_test.go @@ -4,7 +4,7 @@ import ( "math" "testing" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" ) func TestBoxClone(t *testing.T) { diff --git a/chart_test.go b/chart_test.go index 90a3c19..0b0e7fc 100644 --- a/chart_test.go +++ b/chart_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/drawing" "github.com/wcharczuk/go-chart/seq" ) diff --git a/concat_series_test.go b/concat_series_test.go index 3856e0a..fa5a070 100644 --- a/concat_series_test.go +++ b/concat_series_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/seq" ) diff --git a/continuous_range_test.go b/continuous_range_test.go index fe3b233..e457193 100644 --- a/continuous_range_test.go +++ b/continuous_range_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/util" ) diff --git a/continuous_series_test.go b/continuous_series_test.go index 89af981..7d3cdea 100644 --- a/continuous_series_test.go +++ b/continuous_series_test.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/seq" ) diff --git a/drawing/color_test.go b/drawing/color_test.go index bdedd02..4830e49 100644 --- a/drawing/color_test.go +++ b/drawing/color_test.go @@ -5,7 +5,7 @@ import ( "image/color" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" ) func TestColorFromHex(t *testing.T) { diff --git a/drawing/curve_test.go b/drawing/curve_test.go index 5c22cc1..95dfe58 100644 --- a/drawing/curve_test.go +++ b/drawing/curve_test.go @@ -3,7 +3,7 @@ package drawing import ( "testing" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" ) type point struct { diff --git a/ema_series_test.go b/ema_series_test.go index e2867d0..a891a29 100644 --- a/ema_series_test.go +++ b/ema_series_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/seq" ) diff --git a/grid_line_test.go b/grid_line_test.go index ac57f7b..b552f12 100644 --- a/grid_line_test.go +++ b/grid_line_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" ) func TestGenerateGridLines(t *testing.T) { diff --git a/histogram_series_test.go b/histogram_series_test.go index 744ebe1..64b0e39 100644 --- a/histogram_series_test.go +++ b/histogram_series_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/seq" ) diff --git a/legend_test.go b/legend_test.go index 720506c..2b4681e 100644 --- a/legend_test.go +++ b/legend_test.go @@ -4,7 +4,7 @@ import ( "bytes" "testing" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" ) func TestLegend(t *testing.T) { diff --git a/linear_regression_series_test.go b/linear_regression_series_test.go index c24dff0..51a9a84 100644 --- a/linear_regression_series_test.go +++ b/linear_regression_series_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/seq" ) diff --git a/macd_series_test.go b/macd_series_test.go index 842eb4c..8b3e9e8 100644 --- a/macd_series_test.go +++ b/macd_series_test.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" ) var ( diff --git a/market_hours_range_test.go b/market_hours_range_test.go index 3846ccc..7e5f620 100644 --- a/market_hours_range_test.go +++ b/market_hours_range_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/util" ) diff --git a/matrix/matrix_test.go b/matrix/matrix_test.go index bc896be..6700e60 100644 --- a/matrix/matrix_test.go +++ b/matrix/matrix_test.go @@ -3,7 +3,7 @@ package matrix import ( "testing" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" ) func TestNew(t *testing.T) { diff --git a/matrix/regression_test.go b/matrix/regression_test.go index c55a480..fa9d44a 100644 --- a/matrix/regression_test.go +++ b/matrix/regression_test.go @@ -3,7 +3,7 @@ package matrix import ( "testing" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" ) func TestPoly(t *testing.T) { diff --git a/pie_chart_test.go b/pie_chart_test.go index 788cbe2..6424125 100644 --- a/pie_chart_test.go +++ b/pie_chart_test.go @@ -4,7 +4,7 @@ import ( "bytes" "testing" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" ) func TestPieChart(t *testing.T) { diff --git a/polynomial_regression_test.go b/polynomial_regression_test.go index beabf37..6662467 100644 --- a/polynomial_regression_test.go +++ b/polynomial_regression_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/matrix" ) diff --git a/seq/buffer_test.go b/seq/buffer_test.go index 19fd64d..8b9fa82 100644 --- a/seq/buffer_test.go +++ b/seq/buffer_test.go @@ -3,7 +3,7 @@ package seq import ( "testing" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" ) func TestBuffer(t *testing.T) { diff --git a/seq/linear_test.go b/seq/linear_test.go index 70c5719..c5ce49e 100644 --- a/seq/linear_test.go +++ b/seq/linear_test.go @@ -3,7 +3,7 @@ package seq import ( "testing" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" ) func TestRange(t *testing.T) { diff --git a/seq/random_test.go b/seq/random_test.go index 2176909..5b92d93 100644 --- a/seq/random_test.go +++ b/seq/random_test.go @@ -3,7 +3,7 @@ package seq import ( "testing" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" ) func TestRandomRegression(t *testing.T) { diff --git a/seq/sequence_test.go b/seq/sequence_test.go index 33f8458..4c56be7 100644 --- a/seq/sequence_test.go +++ b/seq/sequence_test.go @@ -3,7 +3,7 @@ package seq import ( "testing" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" ) func TestSequenceEach(t *testing.T) { diff --git a/seq/time_test.go b/seq/time_test.go index 31da051..763dfb1 100644 --- a/seq/time_test.go +++ b/seq/time_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/util" ) diff --git a/sma_series_test.go b/sma_series_test.go index fabb06a..6930fd0 100644 --- a/sma_series_test.go +++ b/sma_series_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/seq" "github.com/wcharczuk/go-chart/util" ) diff --git a/style_test.go b/style_test.go index 4fe8303..4668737 100644 --- a/style_test.go +++ b/style_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" "github.com/golang/freetype/truetype" "github.com/wcharczuk/go-chart/drawing" ) diff --git a/text_test.go b/text_test.go index 78c0e9b..0b972df 100644 --- a/text_test.go +++ b/text_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" ) func TestTextWrapWord(t *testing.T) { diff --git a/tick_test.go b/tick_test.go index 7cea3c9..a8c0093 100644 --- a/tick_test.go +++ b/tick_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" ) func TestGenerateContinuousTicks(t *testing.T) { diff --git a/time_series_test.go b/time_series_test.go index ebf14e2..7870ae3 100644 --- a/time_series_test.go +++ b/time_series_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" ) func TestTimeSeriesGetValue(t *testing.T) { diff --git a/util/date_test.go b/util/date_test.go index 223ebae..c2478ee 100644 --- a/util/date_test.go +++ b/util/date_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" ) func parse(v string) time.Time { diff --git a/util/math_test.go b/util/math_test.go index af6750a..d467541 100644 --- a/util/math_test.go +++ b/util/math_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" ) func TestMinAndMax(t *testing.T) { diff --git a/value_formatter_test.go b/value_formatter_test.go index ac94060..473d60b 100644 --- a/value_formatter_test.go +++ b/value_formatter_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/util" ) diff --git a/value_test.go b/value_test.go index 0b3b0b5..2d09641 100644 --- a/value_test.go +++ b/value_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - assert "github.com/blendlabs/go-assert" + assert "github.co/blend/go-sdk/assert" ) func TestValuesValues(t *testing.T) { diff --git a/vector_renderer_test.go b/vector_renderer_test.go index f802970..d9f4ed4 100644 --- a/vector_renderer_test.go +++ b/vector_renderer_test.go @@ -5,7 +5,7 @@ import ( "strings" "testing" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/drawing" ) diff --git a/xaxis_test.go b/xaxis_test.go index f55ea29..446be99 100644 --- a/xaxis_test.go +++ b/xaxis_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" ) func TestXAxisGetTicks(t *testing.T) { diff --git a/yaxis_test.go b/yaxis_test.go index 86deae5..061738f 100644 --- a/yaxis_test.go +++ b/yaxis_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - "github.com/blendlabs/go-assert" + "github.co/blend/go-sdk/assert" ) func TestYAxisGetTicks(t *testing.T) { From 70e6cfddc50ab7c2872ccc66fb14bd18358d8017 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Thu, 5 Apr 2018 00:42:38 -0700 Subject: [PATCH 06/73] fixing find and replace issue --- .travis.yml | 2 +- annotation_series_test.go | 2 +- bar_chart_test.go | 2 +- bollinger_band_series_test.go | 2 +- box_test.go | 2 +- chart_test.go | 2 +- concat_series_test.go | 2 +- continuous_range_test.go | 2 +- continuous_series_test.go | 2 +- drawing/color_test.go | 2 +- drawing/curve_test.go | 2 +- ema_series_test.go | 2 +- grid_line_test.go | 2 +- histogram_series_test.go | 2 +- legend_test.go | 2 +- linear_regression_series_test.go | 2 +- macd_series_test.go | 2 +- market_hours_range_test.go | 2 +- matrix/matrix_test.go | 2 +- matrix/regression_test.go | 2 +- pie_chart_test.go | 2 +- polynomial_regression_test.go | 2 +- seq/buffer_test.go | 2 +- seq/linear_test.go | 2 +- seq/random_test.go | 2 +- seq/sequence_test.go | 2 +- seq/time_test.go | 2 +- sma_series_test.go | 2 +- style_test.go | 2 +- text_test.go | 2 +- tick_test.go | 2 +- time_series_test.go | 2 +- util/date_test.go | 2 +- util/math_test.go | 2 +- value_formatter_test.go | 2 +- value_test.go | 2 +- vector_renderer_test.go | 2 +- xaxis_test.go | 2 +- yaxis_test.go | 2 +- 39 files changed, 39 insertions(+), 39 deletions(-) diff --git a/.travis.yml b/.travis.yml index b319970..d3fbf34 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ go: sudo: false before_script: - - go get -u github.co/blend/go-sdk/assert + - go get -u github.com/blend/go-sdk/assert - go get ./... script: diff --git a/annotation_series_test.go b/annotation_series_test.go index 8fc5a9c..a92d655 100644 --- a/annotation_series_test.go +++ b/annotation_series_test.go @@ -4,7 +4,7 @@ import ( "image/color" "testing" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/drawing" ) diff --git a/bar_chart_test.go b/bar_chart_test.go index 3a8e047..14dc231 100644 --- a/bar_chart_test.go +++ b/bar_chart_test.go @@ -5,7 +5,7 @@ import ( "math" "testing" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" ) func TestBarChartRender(t *testing.T) { diff --git a/bollinger_band_series_test.go b/bollinger_band_series_test.go index 0bbcb5c..92bb088 100644 --- a/bollinger_band_series_test.go +++ b/bollinger_band_series_test.go @@ -5,7 +5,7 @@ import ( "math" "testing" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/seq" ) diff --git a/box_test.go b/box_test.go index 206add0..4bc3f71 100644 --- a/box_test.go +++ b/box_test.go @@ -4,7 +4,7 @@ import ( "math" "testing" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" ) func TestBoxClone(t *testing.T) { diff --git a/chart_test.go b/chart_test.go index 0b0e7fc..6adf62d 100644 --- a/chart_test.go +++ b/chart_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/drawing" "github.com/wcharczuk/go-chart/seq" ) diff --git a/concat_series_test.go b/concat_series_test.go index fa5a070..3b661f7 100644 --- a/concat_series_test.go +++ b/concat_series_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/seq" ) diff --git a/continuous_range_test.go b/continuous_range_test.go index e457193..0543971 100644 --- a/continuous_range_test.go +++ b/continuous_range_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/util" ) diff --git a/continuous_series_test.go b/continuous_series_test.go index 7d3cdea..f8b1ee6 100644 --- a/continuous_series_test.go +++ b/continuous_series_test.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/seq" ) diff --git a/drawing/color_test.go b/drawing/color_test.go index 4830e49..1b38ba6 100644 --- a/drawing/color_test.go +++ b/drawing/color_test.go @@ -5,7 +5,7 @@ import ( "image/color" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" ) func TestColorFromHex(t *testing.T) { diff --git a/drawing/curve_test.go b/drawing/curve_test.go index 95dfe58..3e792eb 100644 --- a/drawing/curve_test.go +++ b/drawing/curve_test.go @@ -3,7 +3,7 @@ package drawing import ( "testing" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" ) type point struct { diff --git a/ema_series_test.go b/ema_series_test.go index a891a29..2e11336 100644 --- a/ema_series_test.go +++ b/ema_series_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/seq" ) diff --git a/grid_line_test.go b/grid_line_test.go index b552f12..cbaedec 100644 --- a/grid_line_test.go +++ b/grid_line_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" ) func TestGenerateGridLines(t *testing.T) { diff --git a/histogram_series_test.go b/histogram_series_test.go index 64b0e39..1f47bad 100644 --- a/histogram_series_test.go +++ b/histogram_series_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/seq" ) diff --git a/legend_test.go b/legend_test.go index 2b4681e..7f8fae8 100644 --- a/legend_test.go +++ b/legend_test.go @@ -4,7 +4,7 @@ import ( "bytes" "testing" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" ) func TestLegend(t *testing.T) { diff --git a/linear_regression_series_test.go b/linear_regression_series_test.go index 51a9a84..335a636 100644 --- a/linear_regression_series_test.go +++ b/linear_regression_series_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/seq" ) diff --git a/macd_series_test.go b/macd_series_test.go index 8b3e9e8..fa7c7fd 100644 --- a/macd_series_test.go +++ b/macd_series_test.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" ) var ( diff --git a/market_hours_range_test.go b/market_hours_range_test.go index 7e5f620..26ff06b 100644 --- a/market_hours_range_test.go +++ b/market_hours_range_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/util" ) diff --git a/matrix/matrix_test.go b/matrix/matrix_test.go index 6700e60..eb14e33 100644 --- a/matrix/matrix_test.go +++ b/matrix/matrix_test.go @@ -3,7 +3,7 @@ package matrix import ( "testing" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" ) func TestNew(t *testing.T) { diff --git a/matrix/regression_test.go b/matrix/regression_test.go index fa9d44a..5bd282b 100644 --- a/matrix/regression_test.go +++ b/matrix/regression_test.go @@ -3,7 +3,7 @@ package matrix import ( "testing" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" ) func TestPoly(t *testing.T) { diff --git a/pie_chart_test.go b/pie_chart_test.go index 6424125..960941e 100644 --- a/pie_chart_test.go +++ b/pie_chart_test.go @@ -4,7 +4,7 @@ import ( "bytes" "testing" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" ) func TestPieChart(t *testing.T) { diff --git a/polynomial_regression_test.go b/polynomial_regression_test.go index 6662467..6495f56 100644 --- a/polynomial_regression_test.go +++ b/polynomial_regression_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/matrix" ) diff --git a/seq/buffer_test.go b/seq/buffer_test.go index 8b9fa82..fb177d2 100644 --- a/seq/buffer_test.go +++ b/seq/buffer_test.go @@ -3,7 +3,7 @@ package seq import ( "testing" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" ) func TestBuffer(t *testing.T) { diff --git a/seq/linear_test.go b/seq/linear_test.go index c5ce49e..f90b179 100644 --- a/seq/linear_test.go +++ b/seq/linear_test.go @@ -3,7 +3,7 @@ package seq import ( "testing" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" ) func TestRange(t *testing.T) { diff --git a/seq/random_test.go b/seq/random_test.go index 5b92d93..8fd8602 100644 --- a/seq/random_test.go +++ b/seq/random_test.go @@ -3,7 +3,7 @@ package seq import ( "testing" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" ) func TestRandomRegression(t *testing.T) { diff --git a/seq/sequence_test.go b/seq/sequence_test.go index 4c56be7..a1b8dd6 100644 --- a/seq/sequence_test.go +++ b/seq/sequence_test.go @@ -3,7 +3,7 @@ package seq import ( "testing" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" ) func TestSequenceEach(t *testing.T) { diff --git a/seq/time_test.go b/seq/time_test.go index 763dfb1..e33a74e 100644 --- a/seq/time_test.go +++ b/seq/time_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/util" ) diff --git a/sma_series_test.go b/sma_series_test.go index 6930fd0..e25901d 100644 --- a/sma_series_test.go +++ b/sma_series_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/seq" "github.com/wcharczuk/go-chart/util" ) diff --git a/style_test.go b/style_test.go index 4668737..ae4d8bd 100644 --- a/style_test.go +++ b/style_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" "github.com/golang/freetype/truetype" "github.com/wcharczuk/go-chart/drawing" ) diff --git a/text_test.go b/text_test.go index 0b972df..41034c4 100644 --- a/text_test.go +++ b/text_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" ) func TestTextWrapWord(t *testing.T) { diff --git a/tick_test.go b/tick_test.go index a8c0093..9802150 100644 --- a/tick_test.go +++ b/tick_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" ) func TestGenerateContinuousTicks(t *testing.T) { diff --git a/time_series_test.go b/time_series_test.go index 7870ae3..55cec72 100644 --- a/time_series_test.go +++ b/time_series_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" ) func TestTimeSeriesGetValue(t *testing.T) { diff --git a/util/date_test.go b/util/date_test.go index c2478ee..333dd13 100644 --- a/util/date_test.go +++ b/util/date_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" ) func parse(v string) time.Time { diff --git a/util/math_test.go b/util/math_test.go index d467541..6a2e392 100644 --- a/util/math_test.go +++ b/util/math_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" ) func TestMinAndMax(t *testing.T) { diff --git a/value_formatter_test.go b/value_formatter_test.go index 473d60b..a47e45d 100644 --- a/value_formatter_test.go +++ b/value_formatter_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/util" ) diff --git a/value_test.go b/value_test.go index 2d09641..ed7a96f 100644 --- a/value_test.go +++ b/value_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - assert "github.co/blend/go-sdk/assert" + assert "github.com/blend/go-sdk/assert" ) func TestValuesValues(t *testing.T) { diff --git a/vector_renderer_test.go b/vector_renderer_test.go index d9f4ed4..ccd7044 100644 --- a/vector_renderer_test.go +++ b/vector_renderer_test.go @@ -5,7 +5,7 @@ import ( "strings" "testing" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/drawing" ) diff --git a/xaxis_test.go b/xaxis_test.go index 446be99..516be73 100644 --- a/xaxis_test.go +++ b/xaxis_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" ) func TestXAxisGetTicks(t *testing.T) { diff --git a/yaxis_test.go b/yaxis_test.go index 061738f..9b903ba 100644 --- a/yaxis_test.go +++ b/yaxis_test.go @@ -3,7 +3,7 @@ package chart import ( "testing" - "github.co/blend/go-sdk/assert" + "github.com/blend/go-sdk/assert" ) func TestYAxisGetTicks(t *testing.T) { From 7c3982fe3d8ab0c9eea9ab5d2aced51e45d447bc Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Thu, 5 Apr 2018 00:47:39 -0700 Subject: [PATCH 07/73] fixing tests --- bar_chart_test.go | 2 +- grid_line_test.go | 2 +- market_hours_range_test.go | 2 +- matrix/regression_test.go | 2 +- seq/buffer_test.go | 2 +- seq/linear_test.go | 6 +++--- seq/random.go | 2 +- seq/random_test.go | 2 +- seq/sequence_test.go | 2 +- seq/time_test.go | 9 +++++---- text_test.go | 10 +++++----- tick_test.go | 4 ++-- util/math_test.go | 2 +- value_test.go | 6 +++--- xaxis_test.go | 4 ++-- yaxis_test.go | 4 ++-- 16 files changed, 31 insertions(+), 30 deletions(-) diff --git a/bar_chart_test.go b/bar_chart_test.go index 14dc231..32ce674 100644 --- a/bar_chart_test.go +++ b/bar_chart_test.go @@ -242,7 +242,7 @@ func TestBarChartGetAxesTicks(t *testing.T) { bc.YAxis.Style.Show = true ticks = bc.getAxesTicks(r, yr, yf) - assert.Len(ticks, 2) + assert.Len(2, ticks) } func TestBarChartCalculateEffectiveBarSpacing(t *testing.T) { diff --git a/grid_line_test.go b/grid_line_test.go index cbaedec..584d18d 100644 --- a/grid_line_test.go +++ b/grid_line_test.go @@ -17,7 +17,7 @@ func TestGenerateGridLines(t *testing.T) { } gl := GenerateGridLines(ticks, Style{}, Style{}) - assert.Len(gl, 2) + assert.Len(2, gl) assert.Equal(2.0, gl[0].Value) assert.Equal(3.0, gl[1].Value) diff --git a/market_hours_range_test.go b/market_hours_range_test.go index 26ff06b..564ea83 100644 --- a/market_hours_range_test.go +++ b/market_hours_range_test.go @@ -67,7 +67,7 @@ func TestMarketHoursRangeGetTicks(t *testing.T) { ticks := ra.GetTicks(r, defaults, TimeValueFormatter) assert.NotEmpty(ticks) - assert.Len(ticks, 5) + assert.Len(5, ticks) assert.NotEqual(util.Time.ToFloat64(ra.Min), ticks[0].Value) assert.NotEmpty(ticks[0].Label) } diff --git a/matrix/regression_test.go b/matrix/regression_test.go index 5bd282b..10caa28 100644 --- a/matrix/regression_test.go +++ b/matrix/regression_test.go @@ -14,7 +14,7 @@ func TestPoly(t *testing.T) { c, err := Poly(xGiven, yGiven, degree) assert.Nil(err) - assert.Len(c, 3) + assert.Len(3, c) assert.InDelta(c[0], 0.999999999, DefaultEpsilon) assert.InDelta(c[1], 2, DefaultEpsilon) diff --git a/seq/buffer_test.go b/seq/buffer_test.go index fb177d2..17685c4 100644 --- a/seq/buffer_test.go +++ b/seq/buffer_test.go @@ -132,7 +132,7 @@ func TestBufferArray(t *testing.T) { buffer.Enqueue(5) contents := buffer.Array() - assert.Len(contents, 5) + assert.Len(5, contents) assert.Equal(1, contents[0]) assert.Equal(2, contents[1]) assert.Equal(3, contents[2]) diff --git a/seq/linear_test.go b/seq/linear_test.go index f90b179..5e93e8c 100644 --- a/seq/linear_test.go +++ b/seq/linear_test.go @@ -10,7 +10,7 @@ func TestRange(t *testing.T) { assert := assert.New(t) values := Range(1, 100) - assert.Len(values, 100) + assert.Len(100, values) assert.Equal(1, values[0]) assert.Equal(100, values[99]) } @@ -20,7 +20,7 @@ func TestRangeWithStep(t *testing.T) { values := RangeWithStep(0, 100, 5) assert.Equal(100, values[20]) - assert.Len(values, 21) + assert.Len(21, values) } func TestRangeReversed(t *testing.T) { @@ -42,7 +42,7 @@ func TestValuesRegression(t *testing.T) { assert.Equal(100, linearProvider.Len()) values := Seq{Provider: linearProvider}.Array() - assert.Len(values, 100) + assert.Len(100, values) assert.Equal(1.0, values[0]) assert.Equal(100, values[99]) } diff --git a/seq/random.go b/seq/random.go index 3d0768f..ea65084 100644 --- a/seq/random.go +++ b/seq/random.go @@ -11,7 +11,7 @@ func RandomValues(count int) []float64 { return Seq{NewRandom().WithLen(count)}.Array() } -// RandomValuesWithAverage returns an array of random values with a given average. +// RandomValuesWithMax returns an array of random values with a given average. func RandomValuesWithMax(count int, max float64) []float64 { return Seq{NewRandom().WithMax(max).WithLen(count)}.Array() } diff --git a/seq/random_test.go b/seq/random_test.go index 8fd8602..d51e4a6 100644 --- a/seq/random_test.go +++ b/seq/random_test.go @@ -15,6 +15,6 @@ func TestRandomRegression(t *testing.T) { randomSequence := New(randomProvider) randomValues := randomSequence.Array() - assert.Len(randomValues, 4096) + assert.Len(4096, randomValues) assert.InDelta(128, randomSequence.Average(), 10.0) } diff --git a/seq/sequence_test.go b/seq/sequence_test.go index a1b8dd6..09f89e1 100644 --- a/seq/sequence_test.go +++ b/seq/sequence_test.go @@ -88,7 +88,7 @@ func TestSequenceNormalize(t *testing.T) { normalized := Values(1, 2, 3, 4, 5).Normalize().Array() assert.NotEmpty(normalized) - assert.Len(normalized, 5) + assert.Len(5, normalized) assert.Equal(0, normalized[0]) assert.Equal(0.25, normalized[1]) assert.Equal(1, normalized[4]) diff --git a/seq/time_test.go b/seq/time_test.go index e33a74e..9d6876d 100644 --- a/seq/time_test.go +++ b/seq/time_test.go @@ -13,7 +13,7 @@ func TestTimeMarketHours(t *testing.T) { today := time.Date(2016, 07, 01, 12, 0, 0, 0, util.Date.Eastern()) mh := Time.MarketHours(today, today, util.NYSEOpen(), util.NYSEClose(), util.Date.IsNYSEHoliday) - assert.Len(mh, 8) + assert.Len(8, mh) assert.Equal(util.Date.Eastern(), mh[0].Location()) } @@ -21,7 +21,7 @@ func TestTimeMarketHourQuarters(t *testing.T) { assert := assert.New(t) today := time.Date(2016, 07, 01, 12, 0, 0, 0, util.Date.Eastern()) mh := Time.MarketHourQuarters(today, today, util.NYSEOpen(), util.NYSEClose(), util.Date.IsNYSEHoliday) - assert.Len(mh, 4) + assert.Len(4, mh) assert.Equal(9, mh[0].Hour()) assert.Equal(30, mh[0].Minute()) assert.Equal(util.Date.Eastern(), mh[0].Location()) @@ -42,7 +42,7 @@ func TestTimeHours(t *testing.T) { seq := Time.Hours(today, 24) end := Time.End(seq) - assert.Len(seq, 24) + assert.Len(24, seq) assert.Equal(2016, end.Year()) assert.Equal(07, int(end.Month())) assert.Equal(02, end.Day()) @@ -73,7 +73,8 @@ func TestSequenceHoursFill(t *testing.T) { } filledTimes, filledValues := Time.HoursFilled(xdata, ydata) - assert.Len(filledTimes, util.Date.DiffHours(Time.Start(xdata), Time.End(xdata))+1) + expected := util.Date.DiffHours(Time.Start(xdata), Time.End(xdata)) + 1 + assert.Len(expected, filledTimes) assert.Equal(len(filledValues), len(filledTimes)) assert.NotZero(filledValues[0]) diff --git a/text_test.go b/text_test.go index 41034c4..e7ab72b 100644 --- a/text_test.go +++ b/text_test.go @@ -18,7 +18,7 @@ func TestTextWrapWord(t *testing.T) { output := Text.WrapFitWord(r, "this is a test string", 100, basicTextStyle) assert.NotEmpty(output) - assert.Len(output, 3) + assert.Len(3, output) for _, line := range output { basicTextStyle.WriteToRenderer(r) @@ -30,16 +30,16 @@ func TestTextWrapWord(t *testing.T) { assert.Equal("string", output[2]) output = Text.WrapFitWord(r, "foo", 100, basicTextStyle) - assert.Len(output, 1) + assert.Len(1, output) assert.Equal("foo", output[0]) // test that it handles newlines. output = Text.WrapFitWord(r, "this\nis\na\ntest\nstring", 100, basicTextStyle) - assert.Len(output, 5) + assert.Len(5, output) // test that it handles newlines and long lines. output = Text.WrapFitWord(r, "this\nis\na\ntest\nstring that is very long", 100, basicTextStyle) - assert.Len(output, 8) + assert.Len(8, output) } func TestTextWrapRune(t *testing.T) { @@ -54,7 +54,7 @@ func TestTextWrapRune(t *testing.T) { output := Text.WrapFitRune(r, "this is a test string", 150, basicTextStyle) assert.NotEmpty(output) - assert.Len(output, 2) + assert.Len(2, output) assert.Equal("this is a t", output[0]) assert.Equal("est string", output[1]) } diff --git a/tick_test.go b/tick_test.go index 9802150..b8b6441 100644 --- a/tick_test.go +++ b/tick_test.go @@ -26,7 +26,7 @@ func TestGenerateContinuousTicks(t *testing.T) { ticks := GenerateContinuousTicks(r, ra, false, Style{}, vf) assert.NotEmpty(ticks) - assert.Len(ticks, 11) + assert.Len(11, ticks) assert.Equal(0.0, ticks[0].Value) assert.Equal(10, ticks[len(ticks)-1].Value) } @@ -52,7 +52,7 @@ func TestGenerateContinuousTicksDescending(t *testing.T) { ticks := GenerateContinuousTicks(r, ra, false, Style{}, vf) assert.NotEmpty(ticks) - assert.Len(ticks, 11) + assert.Len(11, ticks) assert.Equal(10.0, ticks[0].Value) assert.Equal(9.0, ticks[1].Value) assert.Equal(1.0, ticks[len(ticks)-2].Value) diff --git a/util/math_test.go b/util/math_test.go index 6a2e392..8306ae2 100644 --- a/util/math_test.go +++ b/util/math_test.go @@ -99,7 +99,7 @@ func TestNormalize(t *testing.T) { values := []float64{10, 9, 8, 7, 6} normalized := Math.Normalize(values...) - assert.Len(normalized, 5) + assert.Len(5, normalized) assert.Equal(0.25, normalized[0]) assert.Equal(0.1499, normalized[4]) } diff --git a/value_test.go b/value_test.go index ed7a96f..aeb1ae9 100644 --- a/value_test.go +++ b/value_test.go @@ -20,7 +20,7 @@ func TestValuesValues(t *testing.T) { } values := Values(vs).Values() - assert.Len(values, 7) + assert.Len(7, values) assert.Equal(10, values[0]) assert.Equal(9, values[1]) assert.Equal(8, values[2]) @@ -44,7 +44,7 @@ func TestValuesValuesNormalized(t *testing.T) { } values := Values(vs).ValuesNormalized() - assert.Len(values, 7) + assert.Len(7, values) assert.Equal(0.2127, values[0]) assert.Equal(0.0425, values[6]) } @@ -63,7 +63,7 @@ func TestValuesNormalize(t *testing.T) { } values := Values(vs).Normalize() - assert.Len(values, 7) + assert.Len(7, values) assert.Equal(0.2127, values[0].Value) assert.Equal(0.0425, values[6].Value) } diff --git a/xaxis_test.go b/xaxis_test.go index 516be73..e6a7fe1 100644 --- a/xaxis_test.go +++ b/xaxis_test.go @@ -23,7 +23,7 @@ func TestXAxisGetTicks(t *testing.T) { } vf := FloatValueFormatter ticks := xa.GetTicks(r, xr, styleDefaults, vf) - assert.Len(ticks, 16) + assert.Len(16, ticks) } func TestXAxisGetTicksWithUserDefaults(t *testing.T) { @@ -45,7 +45,7 @@ func TestXAxisGetTicksWithUserDefaults(t *testing.T) { } vf := FloatValueFormatter ticks := xa.GetTicks(r, xr, styleDefaults, vf) - assert.Len(ticks, 1) + assert.Len(1, ticks) } func TestXAxisMeasure(t *testing.T) { diff --git a/yaxis_test.go b/yaxis_test.go index 9b903ba..938ccc8 100644 --- a/yaxis_test.go +++ b/yaxis_test.go @@ -23,7 +23,7 @@ func TestYAxisGetTicks(t *testing.T) { } vf := FloatValueFormatter ticks := ya.GetTicks(r, yr, styleDefaults, vf) - assert.Len(ticks, 32) + assert.Len(32, ticks) } func TestYAxisGetTicksWithUserDefaults(t *testing.T) { @@ -45,7 +45,7 @@ func TestYAxisGetTicksWithUserDefaults(t *testing.T) { } vf := FloatValueFormatter ticks := ya.GetTicks(r, yr, styleDefaults, vf) - assert.Len(ticks, 1) + assert.Len(1, ticks) } func TestYAxisMeasure(t *testing.T) { From 2dc8482db31a4f9ef63fe238484ab606aa16f9af Mon Sep 17 00:00:00 2001 From: Edwin Date: Mon, 16 Apr 2018 03:35:39 +0800 Subject: [PATCH 08/73] allow 'zero y-range delta' (#72) --- chart.go | 6 ------ chart_test.go | 16 ---------------- util/math.go | 6 ++++++ util/math_test.go | 2 ++ 4 files changed, 8 insertions(+), 22 deletions(-) diff --git a/chart.go b/chart.go index 83b70ec..1354bc0 100644 --- a/chart.go +++ b/chart.go @@ -317,9 +317,6 @@ func (c Chart) checkRanges(xr, yr, yra Range) error { if math.IsNaN(yDelta) { return errors.New("nan y-range delta") } - if yDelta == 0 { - return errors.New("zero y-range delta") - } if c.hasSecondarySeries() { yraDelta := yra.GetDelta() @@ -329,9 +326,6 @@ func (c Chart) checkRanges(xr, yr, yra Range) error { if math.IsNaN(yraDelta) { return errors.New("nan secondary y-range delta") } - if yraDelta == 0 { - return errors.New("zero secondary y-range delta") - } } return nil diff --git a/chart_test.go b/chart_test.go index 6adf62d..c7d089a 100644 --- a/chart_test.go +++ b/chart_test.go @@ -443,22 +443,6 @@ func TestChartCheckRanges(t *testing.T) { assert.Nil(c.checkRanges(xr, yr, yra)) } -func TestChartCheckRangesFailure(t *testing.T) { - assert := assert.New(t) - - c := Chart{ - Series: []Series{ - ContinuousSeries{ - XValues: []float64{1.0, 2.0}, - YValues: []float64{3.14, 3.14}, - }, - }, - } - - xr, yr, yra := c.getRanges() - assert.NotNil(c.checkRanges(xr, yr, yra)) -} - func TestChartCheckRangesWithRanges(t *testing.T) { assert := assert.New(t) diff --git a/util/math.go b/util/math.go index 73f4976..380a7f6 100644 --- a/util/math.go +++ b/util/math.go @@ -93,12 +93,18 @@ func (m mathUtil) GetRoundToForDelta(delta float64) float64 { // RoundUp rounds up to a given roundTo value. func (m mathUtil) RoundUp(value, roundTo float64) float64 { + if roundTo < 0.000000000000001 { + return value + } d1 := math.Ceil(value / roundTo) return d1 * roundTo } // RoundDown rounds down to a given roundTo value. func (m mathUtil) RoundDown(value, roundTo float64) float64 { + if roundTo < 0.000000000000001 { + return value + } d1 := math.Floor(value / roundTo) return d1 * roundTo } diff --git a/util/math_test.go b/util/math_test.go index 8306ae2..b143948 100644 --- a/util/math_test.go +++ b/util/math_test.go @@ -78,6 +78,7 @@ func TestRoundUp(t *testing.T) { assert.Equal(0.5, Math.RoundUp(0.49, 0.1)) assert.Equal(1.0, Math.RoundUp(0.51, 1.0)) assert.Equal(0.4999, Math.RoundUp(0.49988, 0.0001)) + assert.Equal(0.123, Math.RoundUp(0.123, 0)) } func TestRoundDown(t *testing.T) { @@ -85,6 +86,7 @@ func TestRoundDown(t *testing.T) { assert.Equal(0.5, Math.RoundDown(0.51, 0.1)) assert.Equal(1.0, Math.RoundDown(1.01, 1.0)) assert.Equal(0.5001, Math.RoundDown(0.50011, 0.0001)) + assert.Equal(0.123, Math.RoundDown(0.123, 0)) } func TestPercentDifference(t *testing.T) { From 62338336c37a94172eb910104db27a6d2d4af563 Mon Sep 17 00:00:00 2001 From: Nat Welch Date: Sun, 15 Apr 2018 15:36:03 -0400 Subject: [PATCH 09/73] Update .gitignore (#73) * Delete .DS_Store * Update .gitignore w/ common exclusions From https://github.com/github/gitignore/blob/master/Go.gitignore --- .DS_Store | Bin 8196 -> 0 bytes .gitignore | 17 +++++++++++++++++ 2 files changed, 17 insertions(+) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 4680624dfd43e14eaa39036e6bf705ae350eddbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHMO>7la6h7ahzziMefK@7X!oyPeNreK1LbUq&0}7P1p)D;x@|gE#prg~7@@8IJ zDAmTqm7;Nn5RFkcO57>vQr-BsFw%rT!bTUU3teEMB*u8|+<6W3Ct+a>hPlbT-@W&o zbAQf!_s*R6hzKo3YXeag5hg8O_kc3?1X(<)=lre(si3VtpT(T+14NucfIuZ{g z9!NZpcp&jW;(@!t1N_bwNtxxnFQrMDcp&k>J?Q~)KcqPe%)~e@F}gaqh(Z8H5duVs z>l_C}Ht85MF^)@&OnFQhJs>tk9AZG4vpg--88b1COO)mWX-^eb%)-H_%AUT8X=UARU4P_N@z{&0(5^sFEn zr_&7k*;Z9mMa}9}qobP}H`k>%H#UsbrAHeZ>+8}Do3@ONDaz8?4NW_b44gPQdTQ+X zH{|XR-w;$WWw&Q%-l`i6waTrgCQ4hqTH30*pj=yM?AqPFN9)MyONMwC9fP6cd%-@t z5HM!-ih%vFGw*wy1zX5_^S)ag@Pe$qIB&Z7qHBhBv+H&_CvEPl2=WErbvymQ5yR~7 z3+<6m$fk+<4g`K7Y>fuX>UuG-_u4#`Gi0~%h(VvjQwl>J>iI=Wm#1sZulg^8Ua8 zZ!w7bnp+Ixu$Z>p48o2<+v6pDDdy&_?cgQt7qVu{5(`plG6y6*YBHd}NJkwG(dVIO+Y2NOrp4+qa8zz9xa6sPbKUdCy>iq~)kZ{r=ji}&y$F5n_Q!Dsjm z-{TS{a1Gb-6Mn`oxPiY?b5jda@yC0r#QM(CHYBDh8D}`)%=-9%r_RmH`sy7|J-t)g zefP5d$|6bi`yW`Eu3fvnVcQcela!dkgIn1cQBZO$;$Dec(PO`j&=c}ZXv<6IW$NMR zVd~l=ia0^~e5w6#^-6_Vrz^6#s(OvW=R!|KO|7naoyzRj=Sb-WZIi-0*XK&<7HzA_ zCqXZh(#NzWg$b|ElTt%#R#ly3V^wvz`md4rYq~@~(64lZZqnbFhjLV51=e6awnfBk zMH_aY1D)85F7)6qvP|I|EDXTIAdWMQPhku%U>q+pjbDjq{5sC!9NxrROy~FU0nSg- z`BQw3ZNQ+nQ#$>PKwy{*Rb=Zx#Olf$ckH diff --git a/.gitignore b/.gitignore index 722d5e7..ab2dcb7 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,18 @@ +# Binaries for programs and plugins +*.exe +*.dll +*.so +*.dylib + +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 +.glide/ + +# Other .vscode +.DS_Store From 1ebbcf493d199a97a59c3aa47a02c2d4183d5441 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Sun, 15 Apr 2018 12:43:32 -0700 Subject: [PATCH 10/73] adding profanity checks --- Makefile | 9 ++++++++- PROFANITY | 8 ++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 PROFANITY diff --git a/Makefile b/Makefile index cc16258..b144792 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,14 @@ all: test test: @go test ./... +.PHONY: profanity +profanity: + @profanity + cover: @go test -short -covermode=set -coverprofile=profile.cov @go tool cover -html=profile.cov - @rm profile.cov \ No newline at end of file + @rm profile.cov + +deps: + @go get -u github.com/blend/go-sdk/_bin/profanity diff --git a/PROFANITY b/PROFANITY new file mode 100644 index 0000000..9806333 --- /dev/null +++ b/PROFANITY @@ -0,0 +1,8 @@ +- contains: "github.com/blend/" + message: "should not include go-sdk in this (outside tests)" + include: "*.go" + exclude: "*_test.go" +- contains: "github.com/blendlabs/" + message: "should not include blend go-* packages in this" + include: "*.go" + From 9e3a080aa3e7573281cf8d65a55305e1148d857d Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Sun, 15 Apr 2018 16:53:01 -0700 Subject: [PATCH 11/73] profanity tweaks --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b144792..1ecb433 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ test: .PHONY: profanity profanity: - @profanity + @profanity -include="*.go,Makefile,README.md" cover: @go test -short -covermode=set -coverprofile=profile.cov From 0506f7460018434dca8ceadc26d70b15eb8c6232 Mon Sep 17 00:00:00 2001 From: Andrew Poydence Date: Wed, 5 Sep 2018 09:43:35 -0600 Subject: [PATCH 12/73] Fix typo in example (#100) --- _examples/timeseries/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_examples/timeseries/main.go b/_examples/timeseries/main.go index 9303ab7..8acccb0 100644 --- a/_examples/timeseries/main.go +++ b/_examples/timeseries/main.go @@ -79,7 +79,7 @@ func drawCustomChart(res http.ResponseWriter, req *http.Request) { func main() { http.HandleFunc("/", drawChart) - http.HandleFunc("/favico.ico", func(res http.ResponseWriter, req *http.Request) { + http.HandleFunc("/favicon.ico", func(res http.ResponseWriter, req *http.Request) { res.Write([]byte{}) }) http.HandleFunc("/custom", drawCustomChart) From d667b8c983f113196ad2fdc264f7b197233f4dd4 Mon Sep 17 00:00:00 2001 From: Michael Bruce Date: Wed, 5 Sep 2018 16:43:52 +0100 Subject: [PATCH 13/73] spelling correction (#98) --- _examples/timeseries/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_examples/timeseries/main.go b/_examples/timeseries/main.go index 8acccb0..87b2f67 100644 --- a/_examples/timeseries/main.go +++ b/_examples/timeseries/main.go @@ -10,7 +10,7 @@ import ( func drawChart(res http.ResponseWriter, req *http.Request) { /* This is an example of using the `TimeSeries` to automatically coerce time.Time values into a continuous xrange. - Note: chart.TimeSeries implements `ValueFormatterProvider` and as a result gives the XAxis the appropariate formatter to use for the ticks. + Note: chart.TimeSeries implements `ValueFormatterProvider` and as a result gives the XAxis the appropriate formatter to use for the ticks. */ graph := chart.Chart{ XAxis: chart.XAxis{ From 3edccc4758104f98e428245a2e342fe3a1d02389 Mon Sep 17 00:00:00 2001 From: David Mis Date: Wed, 5 Sep 2018 10:44:49 -0500 Subject: [PATCH 14/73] Added BaseValue funtionality to bar chart (#94) --- _examples/bar_chart_base_value/main.go | 88 ++++++++++++++++++++++ _examples/bar_chart_base_value/output.png | Bin 0 -> 18491 bytes bar_chart.go | 22 ++++-- 3 files changed, 105 insertions(+), 5 deletions(-) create mode 100644 _examples/bar_chart_base_value/main.go create mode 100644 _examples/bar_chart_base_value/output.png diff --git a/_examples/bar_chart_base_value/main.go b/_examples/bar_chart_base_value/main.go new file mode 100644 index 0000000..1874f0b --- /dev/null +++ b/_examples/bar_chart_base_value/main.go @@ -0,0 +1,88 @@ +package main + +import ( + "fmt" + "log" + "net/http" + "os" + + "github.com/wcharczuk/go-chart" + "github.com/wcharczuk/go-chart/drawing" +) + +func drawChart(res http.ResponseWriter, req *http.Request) { + profitStyle := chart.Style{ + Show: true, + FillColor: drawing.ColorFromHex("13c158"), + StrokeColor: drawing.ColorFromHex("13c158"), + StrokeWidth: 0, + } + + lossStyle := chart.Style{ + Show: true, + FillColor: drawing.ColorFromHex("c11313"), + StrokeColor: drawing.ColorFromHex("c11313"), + StrokeWidth: 0, + } + + sbc := chart.BarChart{ + Title: "Bar Chart Using BaseValue", + TitleStyle: chart.StyleShow(), + Background: chart.Style{ + Padding: chart.Box{ + Top: 40, + }, + }, + Height: 512, + BarWidth: 60, + XAxis: chart.Style{ + Show: true, + }, + YAxis: chart.YAxis{ + Style: chart.Style{ + Show: true, + }, + Ticks: []chart.Tick{ + {-4.0, "-4"}, + {-2.0, "-2"}, + {0, "0"}, + {2.0, "2"}, + {4.0, "4"}, + {6.0, "6"}, + {8.0, "8"}, + {10.0, "10"}, + {12.0, "12"}, + }, + }, + UseBaseValue: true, + BaseValue: 0.0, + Bars: []chart.Value{ + {Value: 10.0, Style: profitStyle, Label: "Profit"}, + {Value: 12.0, Style: profitStyle, Label: "More Profit"}, + {Value: 8.0, Style: profitStyle, Label: "Still Profit"}, + {Value: -4.0, Style: lossStyle, Label: "Loss!"}, + {Value: 3.0, Style: profitStyle, Label: "Phew Ok"}, + {Value: -2.0, Style: lossStyle, Label: "Oh No!"}, + }, + } + + res.Header().Set("Content-Type", "image/png") + err := sbc.Render(chart.PNG, res) + if err != nil { + fmt.Printf("Error rendering chart: %v\n", err) + } +} + +func port() string { + if len(os.Getenv("PORT")) > 0 { + return os.Getenv("PORT") + } + return "8080" +} + +func main() { + listenPort := fmt.Sprintf(":%s", port()) + fmt.Printf("Listening on %s\n", listenPort) + http.HandleFunc("/", drawChart) + log.Fatal(http.ListenAndServe(listenPort, nil)) +} diff --git a/_examples/bar_chart_base_value/output.png b/_examples/bar_chart_base_value/output.png new file mode 100644 index 0000000000000000000000000000000000000000..94231c8515f1e847e9fd3afe7a2271189cf82d00 GIT binary patch literal 18491 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 literal 0 HcmV?d00001 diff --git a/bar_chart.go b/bar_chart.go index 0c24d92..45ddcc7 100644 --- a/bar_chart.go +++ b/bar_chart.go @@ -31,6 +31,9 @@ type BarChart struct { BarSpacing int + UseBaseValue bool + BaseValue float64 + Font *truetype.Font defaultFont *truetype.Font @@ -199,11 +202,20 @@ func (bc BarChart) drawBars(r Renderer, canvasBox Box, yr Range) { by = canvasBox.Bottom - yr.Translate(bar.Value) - barBox = Box{ - Top: by, - Left: bxl, - Right: bxr, - Bottom: canvasBox.Bottom, + if bc.UseBaseValue { + barBox = Box{ + Top: by, + Left: bxl, + Right: bxr, + Bottom: canvasBox.Bottom - yr.Translate(bc.BaseValue), + } + } else { + barBox = Box{ + Top: by, + Left: bxl, + Right: bxr, + Bottom: canvasBox.Bottom, + } } Draw.Box(r, barBox, bar.Style.InheritFrom(bc.styleDefaultsBar(index))) From ac680bd82ddad4755deb3a341e8b1806cf7ceff3 Mon Sep 17 00:00:00 2001 From: David Mis Date: Wed, 5 Sep 2018 10:45:19 -0500 Subject: [PATCH 15/73] Fixed order of arguments to assert.Len in test files. (#93) * Fixed order of arguments to assert.Len in test files. * Added BaseValue funtionality to bar chart --- bar_chart_test.go | 2 +- grid_line_test.go | 2 +- market_hours_range_test.go | 2 +- matrix/regression_test.go | 2 +- seq/buffer_test.go | 2 +- seq/linear_test.go | 6 +++--- seq/random_test.go | 2 +- seq/sequence_test.go | 2 +- seq/time_test.go | 8 ++++---- text_test.go | 10 +++++----- tick_test.go | 4 ++-- util/math_test.go | 2 +- value_test.go | 6 +++--- xaxis_test.go | 4 ++-- yaxis_test.go | 4 ++-- 15 files changed, 29 insertions(+), 29 deletions(-) diff --git a/bar_chart_test.go b/bar_chart_test.go index 32ce674..14dc231 100644 --- a/bar_chart_test.go +++ b/bar_chart_test.go @@ -242,7 +242,7 @@ func TestBarChartGetAxesTicks(t *testing.T) { bc.YAxis.Style.Show = true ticks = bc.getAxesTicks(r, yr, yf) - assert.Len(2, ticks) + assert.Len(ticks, 2) } func TestBarChartCalculateEffectiveBarSpacing(t *testing.T) { diff --git a/grid_line_test.go b/grid_line_test.go index 584d18d..cbaedec 100644 --- a/grid_line_test.go +++ b/grid_line_test.go @@ -17,7 +17,7 @@ func TestGenerateGridLines(t *testing.T) { } gl := GenerateGridLines(ticks, Style{}, Style{}) - assert.Len(2, gl) + assert.Len(gl, 2) assert.Equal(2.0, gl[0].Value) assert.Equal(3.0, gl[1].Value) diff --git a/market_hours_range_test.go b/market_hours_range_test.go index 564ea83..26ff06b 100644 --- a/market_hours_range_test.go +++ b/market_hours_range_test.go @@ -67,7 +67,7 @@ func TestMarketHoursRangeGetTicks(t *testing.T) { ticks := ra.GetTicks(r, defaults, TimeValueFormatter) assert.NotEmpty(ticks) - assert.Len(5, ticks) + assert.Len(ticks, 5) assert.NotEqual(util.Time.ToFloat64(ra.Min), ticks[0].Value) assert.NotEmpty(ticks[0].Label) } diff --git a/matrix/regression_test.go b/matrix/regression_test.go index 10caa28..5bd282b 100644 --- a/matrix/regression_test.go +++ b/matrix/regression_test.go @@ -14,7 +14,7 @@ func TestPoly(t *testing.T) { c, err := Poly(xGiven, yGiven, degree) assert.Nil(err) - assert.Len(3, c) + assert.Len(c, 3) assert.InDelta(c[0], 0.999999999, DefaultEpsilon) assert.InDelta(c[1], 2, DefaultEpsilon) diff --git a/seq/buffer_test.go b/seq/buffer_test.go index 17685c4..fb177d2 100644 --- a/seq/buffer_test.go +++ b/seq/buffer_test.go @@ -132,7 +132,7 @@ func TestBufferArray(t *testing.T) { buffer.Enqueue(5) contents := buffer.Array() - assert.Len(5, contents) + assert.Len(contents, 5) assert.Equal(1, contents[0]) assert.Equal(2, contents[1]) assert.Equal(3, contents[2]) diff --git a/seq/linear_test.go b/seq/linear_test.go index 5e93e8c..f90b179 100644 --- a/seq/linear_test.go +++ b/seq/linear_test.go @@ -10,7 +10,7 @@ func TestRange(t *testing.T) { assert := assert.New(t) values := Range(1, 100) - assert.Len(100, values) + assert.Len(values, 100) assert.Equal(1, values[0]) assert.Equal(100, values[99]) } @@ -20,7 +20,7 @@ func TestRangeWithStep(t *testing.T) { values := RangeWithStep(0, 100, 5) assert.Equal(100, values[20]) - assert.Len(21, values) + assert.Len(values, 21) } func TestRangeReversed(t *testing.T) { @@ -42,7 +42,7 @@ func TestValuesRegression(t *testing.T) { assert.Equal(100, linearProvider.Len()) values := Seq{Provider: linearProvider}.Array() - assert.Len(100, values) + assert.Len(values, 100) assert.Equal(1.0, values[0]) assert.Equal(100, values[99]) } diff --git a/seq/random_test.go b/seq/random_test.go index d51e4a6..8fd8602 100644 --- a/seq/random_test.go +++ b/seq/random_test.go @@ -15,6 +15,6 @@ func TestRandomRegression(t *testing.T) { randomSequence := New(randomProvider) randomValues := randomSequence.Array() - assert.Len(4096, randomValues) + assert.Len(randomValues, 4096) assert.InDelta(128, randomSequence.Average(), 10.0) } diff --git a/seq/sequence_test.go b/seq/sequence_test.go index 09f89e1..a1b8dd6 100644 --- a/seq/sequence_test.go +++ b/seq/sequence_test.go @@ -88,7 +88,7 @@ func TestSequenceNormalize(t *testing.T) { normalized := Values(1, 2, 3, 4, 5).Normalize().Array() assert.NotEmpty(normalized) - assert.Len(5, normalized) + assert.Len(normalized, 5) assert.Equal(0, normalized[0]) assert.Equal(0.25, normalized[1]) assert.Equal(1, normalized[4]) diff --git a/seq/time_test.go b/seq/time_test.go index 9d6876d..ca1148f 100644 --- a/seq/time_test.go +++ b/seq/time_test.go @@ -13,7 +13,7 @@ func TestTimeMarketHours(t *testing.T) { today := time.Date(2016, 07, 01, 12, 0, 0, 0, util.Date.Eastern()) mh := Time.MarketHours(today, today, util.NYSEOpen(), util.NYSEClose(), util.Date.IsNYSEHoliday) - assert.Len(8, mh) + assert.Len(mh, 8) assert.Equal(util.Date.Eastern(), mh[0].Location()) } @@ -21,7 +21,7 @@ func TestTimeMarketHourQuarters(t *testing.T) { assert := assert.New(t) today := time.Date(2016, 07, 01, 12, 0, 0, 0, util.Date.Eastern()) mh := Time.MarketHourQuarters(today, today, util.NYSEOpen(), util.NYSEClose(), util.Date.IsNYSEHoliday) - assert.Len(4, mh) + assert.Len(mh, 4) assert.Equal(9, mh[0].Hour()) assert.Equal(30, mh[0].Minute()) assert.Equal(util.Date.Eastern(), mh[0].Location()) @@ -42,7 +42,7 @@ func TestTimeHours(t *testing.T) { seq := Time.Hours(today, 24) end := Time.End(seq) - assert.Len(24, seq) + assert.Len(seq, 24) assert.Equal(2016, end.Year()) assert.Equal(07, int(end.Month())) assert.Equal(02, end.Day()) @@ -74,7 +74,7 @@ func TestSequenceHoursFill(t *testing.T) { filledTimes, filledValues := Time.HoursFilled(xdata, ydata) expected := util.Date.DiffHours(Time.Start(xdata), Time.End(xdata)) + 1 - assert.Len(expected, filledTimes) + assert.Len(filledTimes, expected) assert.Equal(len(filledValues), len(filledTimes)) assert.NotZero(filledValues[0]) diff --git a/text_test.go b/text_test.go index e7ab72b..41034c4 100644 --- a/text_test.go +++ b/text_test.go @@ -18,7 +18,7 @@ func TestTextWrapWord(t *testing.T) { output := Text.WrapFitWord(r, "this is a test string", 100, basicTextStyle) assert.NotEmpty(output) - assert.Len(3, output) + assert.Len(output, 3) for _, line := range output { basicTextStyle.WriteToRenderer(r) @@ -30,16 +30,16 @@ func TestTextWrapWord(t *testing.T) { assert.Equal("string", output[2]) output = Text.WrapFitWord(r, "foo", 100, basicTextStyle) - assert.Len(1, output) + assert.Len(output, 1) assert.Equal("foo", output[0]) // test that it handles newlines. output = Text.WrapFitWord(r, "this\nis\na\ntest\nstring", 100, basicTextStyle) - assert.Len(5, output) + assert.Len(output, 5) // test that it handles newlines and long lines. output = Text.WrapFitWord(r, "this\nis\na\ntest\nstring that is very long", 100, basicTextStyle) - assert.Len(8, output) + assert.Len(output, 8) } func TestTextWrapRune(t *testing.T) { @@ -54,7 +54,7 @@ func TestTextWrapRune(t *testing.T) { output := Text.WrapFitRune(r, "this is a test string", 150, basicTextStyle) assert.NotEmpty(output) - assert.Len(2, output) + assert.Len(output, 2) assert.Equal("this is a t", output[0]) assert.Equal("est string", output[1]) } diff --git a/tick_test.go b/tick_test.go index b8b6441..9802150 100644 --- a/tick_test.go +++ b/tick_test.go @@ -26,7 +26,7 @@ func TestGenerateContinuousTicks(t *testing.T) { ticks := GenerateContinuousTicks(r, ra, false, Style{}, vf) assert.NotEmpty(ticks) - assert.Len(11, ticks) + assert.Len(ticks, 11) assert.Equal(0.0, ticks[0].Value) assert.Equal(10, ticks[len(ticks)-1].Value) } @@ -52,7 +52,7 @@ func TestGenerateContinuousTicksDescending(t *testing.T) { ticks := GenerateContinuousTicks(r, ra, false, Style{}, vf) assert.NotEmpty(ticks) - assert.Len(11, ticks) + assert.Len(ticks, 11) assert.Equal(10.0, ticks[0].Value) assert.Equal(9.0, ticks[1].Value) assert.Equal(1.0, ticks[len(ticks)-2].Value) diff --git a/util/math_test.go b/util/math_test.go index b143948..c290b12 100644 --- a/util/math_test.go +++ b/util/math_test.go @@ -101,7 +101,7 @@ func TestNormalize(t *testing.T) { values := []float64{10, 9, 8, 7, 6} normalized := Math.Normalize(values...) - assert.Len(5, normalized) + assert.Len(normalized, 5) assert.Equal(0.25, normalized[0]) assert.Equal(0.1499, normalized[4]) } diff --git a/value_test.go b/value_test.go index aeb1ae9..ed7a96f 100644 --- a/value_test.go +++ b/value_test.go @@ -20,7 +20,7 @@ func TestValuesValues(t *testing.T) { } values := Values(vs).Values() - assert.Len(7, values) + assert.Len(values, 7) assert.Equal(10, values[0]) assert.Equal(9, values[1]) assert.Equal(8, values[2]) @@ -44,7 +44,7 @@ func TestValuesValuesNormalized(t *testing.T) { } values := Values(vs).ValuesNormalized() - assert.Len(7, values) + assert.Len(values, 7) assert.Equal(0.2127, values[0]) assert.Equal(0.0425, values[6]) } @@ -63,7 +63,7 @@ func TestValuesNormalize(t *testing.T) { } values := Values(vs).Normalize() - assert.Len(7, values) + assert.Len(values, 7) assert.Equal(0.2127, values[0].Value) assert.Equal(0.0425, values[6].Value) } diff --git a/xaxis_test.go b/xaxis_test.go index e6a7fe1..516be73 100644 --- a/xaxis_test.go +++ b/xaxis_test.go @@ -23,7 +23,7 @@ func TestXAxisGetTicks(t *testing.T) { } vf := FloatValueFormatter ticks := xa.GetTicks(r, xr, styleDefaults, vf) - assert.Len(16, ticks) + assert.Len(ticks, 16) } func TestXAxisGetTicksWithUserDefaults(t *testing.T) { @@ -45,7 +45,7 @@ func TestXAxisGetTicksWithUserDefaults(t *testing.T) { } vf := FloatValueFormatter ticks := xa.GetTicks(r, xr, styleDefaults, vf) - assert.Len(1, ticks) + assert.Len(ticks, 1) } func TestXAxisMeasure(t *testing.T) { diff --git a/yaxis_test.go b/yaxis_test.go index 938ccc8..9b903ba 100644 --- a/yaxis_test.go +++ b/yaxis_test.go @@ -23,7 +23,7 @@ func TestYAxisGetTicks(t *testing.T) { } vf := FloatValueFormatter ticks := ya.GetTicks(r, yr, styleDefaults, vf) - assert.Len(32, ticks) + assert.Len(ticks, 32) } func TestYAxisGetTicksWithUserDefaults(t *testing.T) { @@ -45,7 +45,7 @@ func TestYAxisGetTicksWithUserDefaults(t *testing.T) { } vf := FloatValueFormatter ticks := ya.GetTicks(r, yr, styleDefaults, vf) - assert.Len(1, ticks) + assert.Len(ticks, 1) } func TestYAxisMeasure(t *testing.T) { From 4ed65028e4b11c1d55025cbe6affffb45bb08c71 Mon Sep 17 00:00:00 2001 From: Yuji Yaginuma Date: Thu, 6 Sep 2018 00:45:45 +0900 Subject: [PATCH 16/73] Fix func name typo in examples (#91) It seems that `RandomValuesWithMax` is correct. https://github.com/wcharczuk/go-chart/blob/9e3a080aa3e7573281cf8d65a55305e1148d857d/seq/random.go#L15 --- _examples/linear_regression/main.go | 4 ++-- _examples/poly_regression/main.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/_examples/linear_regression/main.go b/_examples/linear_regression/main.go index 8209f9f..d7578b2 100644 --- a/_examples/linear_regression/main.go +++ b/_examples/linear_regression/main.go @@ -16,8 +16,8 @@ func drawChart(res http.ResponseWriter, req *http.Request) { mainSeries := chart.ContinuousSeries{ Name: "A test series", - XValues: seq.Range(1.0, 100.0), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. - YValues: seq.RandomValuesWithAverage(100, 100), //generates a []float64 randomly from 0 to 100 with 100 elements. + XValues: seq.Range(1.0, 100.0), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. + YValues: seq.RandomValuesWithMax(100, 100), //generates a []float64 randomly from 0 to 100 with 100 elements. } // note we create a LinearRegressionSeries series by assignin the inner series. diff --git a/_examples/poly_regression/main.go b/_examples/poly_regression/main.go index 9ca6b2b..f2bb3cd 100644 --- a/_examples/poly_regression/main.go +++ b/_examples/poly_regression/main.go @@ -16,8 +16,8 @@ func drawChart(res http.ResponseWriter, req *http.Request) { mainSeries := chart.ContinuousSeries{ Name: "A test series", - XValues: seq.Range(1.0, 100.0), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. - YValues: seq.RandomValuesWithAverage(100, 100), //generates a []float64 randomly from 0 to 100 with 100 elements. + XValues: seq.Range(1.0, 100.0), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. + YValues: seq.RandomValuesWithMax(100, 100), //generates a []float64 randomly from 0 to 100 with 100 elements. } polyRegSeries := &chart.PolynomialRegressionSeries{ From 1f159d195f21ec7d72daca52b4c1488698f67ac0 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Fri, 7 Sep 2018 11:17:11 -0700 Subject: [PATCH 17/73] adding IntValueFormatter --- PROFANITY | 4 ++-- value_formatter.go | 29 +++++++++++++++++++++++------ 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/PROFANITY b/PROFANITY index 9806333..cdf3646 100644 --- a/PROFANITY +++ b/PROFANITY @@ -1,8 +1,8 @@ -- contains: "github.com/blend/" +- contains: "github.com/blend/go-sdk/" message: "should not include go-sdk in this (outside tests)" include: "*.go" exclude: "*_test.go" -- contains: "github.com/blendlabs/" +- contains: "github.com/blendlabs/go-" message: "should not include blend go-* packages in this" include: "*.go" diff --git a/value_formatter.go b/value_formatter.go index 1c264c2..19e0370 100644 --- a/value_formatter.go +++ b/value_formatter.go @@ -2,6 +2,7 @@ package chart import ( "fmt" + "strconv" "time" ) @@ -49,6 +50,22 @@ func formatTime(v interface{}, dateFormat string) string { return "" } +// IntValueFormatter is a ValueFormatter for float64. +func IntValueFormatter(v interface{}) string { + switch v.(type) { + case int: + return strconv.Itoa(v.(int)) + case int64: + return strconv.FormatInt(v.(int64), 10) + case float32: + return strconv.FormatInt(int64(v.(float32)), 10) + case float64: + return strconv.FormatInt(int64(v.(float64)), 10) + default: + return "" + } +} + // FloatValueFormatter is a ValueFormatter for float64. func FloatValueFormatter(v interface{}) string { return FloatValueFormatterWithFormat(v, DefaultFloatFormat) @@ -65,17 +82,17 @@ func PercentValueFormatter(v interface{}) string { // FloatValueFormatterWithFormat is a ValueFormatter for float64 with a given format. func FloatValueFormatterWithFormat(v interface{}, floatFormat string) string { - if typed, isTyped := v.(float64); isTyped { - return fmt.Sprintf(floatFormat, typed) - } - if typed, isTyped := v.(float32); isTyped { - return fmt.Sprintf(floatFormat, typed) - } if typed, isTyped := v.(int); isTyped { return fmt.Sprintf(floatFormat, float64(typed)) } if typed, isTyped := v.(int64); isTyped { return fmt.Sprintf(floatFormat, float64(typed)) } + if typed, isTyped := v.(float32); isTyped { + return fmt.Sprintf(floatFormat, typed) + } + if typed, isTyped := v.(float64); isTyped { + return fmt.Sprintf(floatFormat, typed) + } return "" } From 1144b80a46d4898662e5e5d8c51fb2172b4ed3ad Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Fri, 7 Sep 2018 11:19:23 -0700 Subject: [PATCH 18/73] latest go --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d3fbf34..38ebb8e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: go go: - - 1.6.2 + - 1.11 sudo: false From 1555902fc46a6084e841a53194f0d80f945459b9 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Fri, 7 Sep 2018 12:52:30 -0700 Subject: [PATCH 19/73] updates + tests --- annotation_series.go | 5 +++ bollinger_band_series.go | 5 +++ continuous_series.go | 12 ++++++ ema_series.go | 20 ++++++++++ first_value_annotation.go | 37 +++++++++++++++++++ first_value_annotation_test.go | 22 +++++++++++ ...tion_series.go => last_value_annotation.go | 0 last_value_annotation_test.go | 22 +++++++++++ linear_regression_series.go | 20 ++++++++++ polynomial_regression_series.go | 24 ++++++++++++ sma_series.go | 18 +++++++++ time_series.go | 19 +++++++++- value_provider.go | 5 +++ 13 files changed, 207 insertions(+), 2 deletions(-) create mode 100644 first_value_annotation.go create mode 100644 first_value_annotation_test.go rename last_value_annotation_series.go => last_value_annotation.go (100%) create mode 100644 last_value_annotation_test.go diff --git a/annotation_series.go b/annotation_series.go index 9c383c9..c99779b 100644 --- a/annotation_series.go +++ b/annotation_series.go @@ -7,6 +7,11 @@ import ( util "github.com/wcharczuk/go-chart/util" ) +// Interface Assertions. +var ( + _ Series = (*AnnotationSeries)(nil) +) + // AnnotationSeries is a series of labels on the chart. type AnnotationSeries struct { Name string diff --git a/bollinger_band_series.go b/bollinger_band_series.go index 9dbd3b8..0a2b447 100644 --- a/bollinger_band_series.go +++ b/bollinger_band_series.go @@ -6,6 +6,11 @@ import ( "github.com/wcharczuk/go-chart/seq" ) +// Interface Assertions. +var ( + _ Series = (*BollingerBandsSeries)(nil) +) + // BollingerBandsSeries draws bollinger bands for an inner series. // Bollinger bands are defined by two lines, one at SMA+k*stddev, one at SMA-k*stdev. type BollingerBandsSeries struct { diff --git a/continuous_series.go b/continuous_series.go index bca80de..7e5ed2a 100644 --- a/continuous_series.go +++ b/continuous_series.go @@ -2,6 +2,13 @@ package chart import "fmt" +// Interface Assertions. +var ( + _ Series = (*ContinuousSeries)(nil) + _ FirstValuesProvider = (*ContinuousSeries)(nil) + _ LastValuesProvider = (*ContinuousSeries)(nil) +) + // ContinuousSeries represents a line on a chart. type ContinuousSeries struct { Name string @@ -36,6 +43,11 @@ func (cs ContinuousSeries) GetValues(index int) (float64, float64) { return cs.XValues[index], cs.YValues[index] } +// GetFirstValues gets the first x,y values. +func (cs ContinuousSeries) GetFirstValues() (float64, float64) { + return cs.XValues[0], cs.YValues[0] +} + // GetLastValues gets the last x,y values. func (cs ContinuousSeries) GetLastValues() (float64, float64) { return cs.XValues[len(cs.XValues)-1], cs.YValues[len(cs.YValues)-1] diff --git a/ema_series.go b/ema_series.go index ceaec39..44415b5 100644 --- a/ema_series.go +++ b/ema_series.go @@ -7,6 +7,13 @@ const ( DefaultEMAPeriod = 12 ) +// Interface Assertions. +var ( + _ Series = (*EMASeries)(nil) + _ FirstValuesProvider = (*EMASeries)(nil) + _ LastValuesProvider = (*EMASeries)(nil) +) + // EMASeries is a computed series. type EMASeries struct { Name string @@ -66,6 +73,19 @@ func (ema *EMASeries) GetValues(index int) (x, y float64) { return } +// GetFirstValues computes the first moving average value. +func (ema *EMASeries) GetFirstValues() (x, y float64) { + if ema.InnerSeries == nil { + return + } + if len(ema.cache) == 0 { + ema.ensureCachedValues() + } + x, _ = ema.InnerSeries.GetValues(0) + y = ema.cache[0] + return +} + // GetLastValues computes the last moving average value but walking back window size samples, // and recomputing the last moving average chunk. func (ema *EMASeries) GetLastValues() (x, y float64) { diff --git a/first_value_annotation.go b/first_value_annotation.go new file mode 100644 index 0000000..2b214b3 --- /dev/null +++ b/first_value_annotation.go @@ -0,0 +1,37 @@ +package chart + +import "fmt" + +// FirstValueAnnotation returns an annotation series of just the first value of a value provider as an annotation. +func FirstValueAnnotation(innerSeries ValuesProvider, vfs ...ValueFormatter) AnnotationSeries { + var vf ValueFormatter + if len(vfs) > 0 { + vf = vfs[0] + } else if typed, isTyped := innerSeries.(ValueFormatterProvider); isTyped { + _, vf = typed.GetValueFormatters() + } else { + vf = FloatValueFormatter + } + + var firstValue Value2 + if typed, isTyped := innerSeries.(FirstValuesProvider); isTyped { + firstValue.XValue, firstValue.YValue = typed.GetFirstValues() + firstValue.Label = vf(firstValue.YValue) + } else { + firstValue.XValue, firstValue.YValue = innerSeries.GetValues(0) + firstValue.Label = vf(firstValue.YValue) + } + + var seriesName string + var seriesStyle Style + if typed, isTyped := innerSeries.(Series); isTyped { + seriesName = fmt.Sprintf("%s - First Value", typed.GetName()) + seriesStyle = typed.GetStyle() + } + + return AnnotationSeries{ + Name: seriesName, + Style: seriesStyle, + Annotations: []Value2{firstValue}, + } +} diff --git a/first_value_annotation_test.go b/first_value_annotation_test.go new file mode 100644 index 0000000..1f1d4cf --- /dev/null +++ b/first_value_annotation_test.go @@ -0,0 +1,22 @@ +package chart + +import ( + "testing" + + "github.com/blend/go-sdk/assert" +) + +func TestFirstValueAnnotation(t *testing.T) { + assert := assert.New(t) + + series := ContinuousSeries{ + XValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0}, + YValues: []float64{5.0, 3.0, 3.0, 2.0, 1.0}, + } + + fva := FirstValueAnnotation(series) + assert.NotEmpty(fva.Annotations) + fvaa := fva.Annotations[0] + assert.Equal(1, fvaa.XValue) + assert.Equal(5, fvaa.YValue) +} diff --git a/last_value_annotation_series.go b/last_value_annotation.go similarity index 100% rename from last_value_annotation_series.go rename to last_value_annotation.go diff --git a/last_value_annotation_test.go b/last_value_annotation_test.go new file mode 100644 index 0000000..3d1931f --- /dev/null +++ b/last_value_annotation_test.go @@ -0,0 +1,22 @@ +package chart + +import ( + "testing" + + "github.com/blend/go-sdk/assert" +) + +func TestLastValueAnnotation(t *testing.T) { + assert := assert.New(t) + + series := ContinuousSeries{ + XValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0}, + YValues: []float64{5.0, 3.0, 3.0, 2.0, 1.0}, + } + + lva := LastValueAnnotation(series) + assert.NotEmpty(lva.Annotations) + lvaa := lva.Annotations[0] + assert.Equal(5, lvaa.XValue) + assert.Equal(1, lvaa.YValue) +} diff --git a/linear_regression_series.go b/linear_regression_series.go index 13c3cb0..ebeb98b 100644 --- a/linear_regression_series.go +++ b/linear_regression_series.go @@ -7,6 +7,13 @@ import ( util "github.com/wcharczuk/go-chart/util" ) +// Interface Assertions. +var ( + _ Series = (*LinearRegressionSeries)(nil) + _ FirstValuesProvider = (*LinearRegressionSeries)(nil) + _ LastValuesProvider = (*LinearRegressionSeries)(nil) +) + // LinearRegressionSeries is a series that plots the n-nearest neighbors // linear regression for the values. type LinearRegressionSeries struct { @@ -82,6 +89,19 @@ func (lrs *LinearRegressionSeries) GetValues(index int) (x, y float64) { return } +// GetFirstValues computes the first linear regression value. +func (lrs *LinearRegressionSeries) GetFirstValues() (x, y float64) { + if lrs.InnerSeries == nil || lrs.InnerSeries.Len() == 0 { + return + } + if lrs.m == 0 && lrs.b == 0 { + lrs.computeCoefficients() + } + x, y = lrs.InnerSeries.GetValues(0) + y = (lrs.m * lrs.normalize(x)) + lrs.b + return +} + // GetLastValues computes the last linear regression value. func (lrs *LinearRegressionSeries) GetLastValues() (x, y float64) { if lrs.InnerSeries == nil || lrs.InnerSeries.Len() == 0 { diff --git a/polynomial_regression_series.go b/polynomial_regression_series.go index 506a4cb..bf39af0 100644 --- a/polynomial_regression_series.go +++ b/polynomial_regression_series.go @@ -8,6 +8,13 @@ import ( util "github.com/wcharczuk/go-chart/util" ) +// Interface Assertions. +var ( + _ Series = (*PolynomialRegressionSeries)(nil) + _ FirstValuesProvider = (*PolynomialRegressionSeries)(nil) + _ LastValuesProvider = (*PolynomialRegressionSeries)(nil) +) + // PolynomialRegressionSeries implements a polynomial regression over a given // inner series. type PolynomialRegressionSeries struct { @@ -101,6 +108,23 @@ func (prs *PolynomialRegressionSeries) GetValues(index int) (x, y float64) { return } +// GetFirstValues computes the first poly regression value. +func (prs *PolynomialRegressionSeries) GetFirstValues() (x, y float64) { + if prs.InnerSeries == nil || prs.InnerSeries.Len() == 0 { + return + } + if prs.coeffs == nil { + coeffs, err := prs.computeCoefficients() + if err != nil { + panic(err) + } + prs.coeffs = coeffs + } + x, y = prs.InnerSeries.GetValues(0) + y = prs.apply(x) + return +} + // GetLastValues computes the last poly regression value. func (prs *PolynomialRegressionSeries) GetLastValues() (x, y float64) { if prs.InnerSeries == nil || prs.InnerSeries.Len() == 0 { diff --git a/sma_series.go b/sma_series.go index 396ecaa..7ed75e1 100644 --- a/sma_series.go +++ b/sma_series.go @@ -11,6 +11,13 @@ const ( DefaultSimpleMovingAveragePeriod = 16 ) +// Interface Assertions. +var ( + _ Series = (*SMASeries)(nil) + _ FirstValuesProvider = (*SMASeries)(nil) + _ LastValuesProvider = (*SMASeries)(nil) +) + // SMASeries is a computed series. type SMASeries struct { Name string @@ -63,6 +70,17 @@ func (sma SMASeries) GetValues(index int) (x, y float64) { return } +// GetFirstValues computes the first moving average value. +func (sma SMASeries) GetFirstValues() (x, y float64) { + if sma.InnerSeries == nil || sma.InnerSeries.Len() == 0 { + return + } + px, _ := sma.InnerSeries.GetValues(0) + x = px + y = sma.getAverage(0) + return +} + // GetLastValues computes the last moving average value but walking back window size samples, // and recomputing the last moving average chunk. func (sma SMASeries) GetLastValues() (x, y float64) { diff --git a/time_series.go b/time_series.go index d2636a1..21d39ee 100644 --- a/time_series.go +++ b/time_series.go @@ -7,6 +7,14 @@ import ( util "github.com/wcharczuk/go-chart/util" ) +// Interface Assertions. +var ( + _ Series = (*TimeSeries)(nil) + _ FirstValuesProvider = (*TimeSeries)(nil) + _ LastValuesProvider = (*TimeSeries)(nil) + _ ValueFormatterProvider = (*TimeSeries)(nil) +) + // TimeSeries is a line on a chart. type TimeSeries struct { Name string @@ -33,14 +41,21 @@ func (ts TimeSeries) Len() int { return len(ts.XValues) } -// GetValues gets a value at a given index. +// GetValues gets x, y values at a given index. func (ts TimeSeries) GetValues(index int) (x, y float64) { x = util.Time.ToFloat64(ts.XValues[index]) y = ts.YValues[index] return } -// GetLastValues gets the last value. +// GetFirstValues gets the first values. +func (ts TimeSeries) GetFirstValues() (x, y float64) { + x = util.Time.ToFloat64(ts.XValues[0]) + y = ts.YValues[0] + return +} + +// GetLastValues gets the last values. func (ts TimeSeries) GetLastValues() (x, y float64) { x = util.Time.ToFloat64(ts.XValues[len(ts.XValues)-1]) y = ts.YValues[len(ts.YValues)-1] diff --git a/value_provider.go b/value_provider.go index e93c30d..e3a1a02 100644 --- a/value_provider.go +++ b/value_provider.go @@ -14,6 +14,11 @@ type BoundedValuesProvider interface { GetBoundedValues(index int) (x, y1, y2 float64) } +// FirstValuesProvider is a special type of value provider that can return it's (potentially computed) first value. +type FirstValuesProvider interface { + GetFirstValues() (x, y float64) +} + // LastValuesProvider is a special type of value provider that can return it's (potentially computed) last value. type LastValuesProvider interface { GetLastValues() (x, y float64) From 1a099890558e433f921c1590e1fc5b100ee5d2cd Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Fri, 7 Sep 2018 15:25:58 -0700 Subject: [PATCH 20/73] fixing issues --- _examples/min_max/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_examples/min_max/main.go b/_examples/min_max/main.go index d8cc3a0..5d838c3 100644 --- a/_examples/min_max/main.go +++ b/_examples/min_max/main.go @@ -11,7 +11,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { mainSeries := chart.ContinuousSeries{ Name: "A test series", XValues: seq.Range(1.0, 100.0), - YValues: seq.New(seq.NewRandom().WithLen(100).WithAverage(100).WithScale(50)).Array(), + YValues: seq.New(seq.NewRandom().WithLen(100).WithMax(150).WithMin(50)).Array(), } minSeries := &chart.MinSeries{ From 0e849b11bb53f8fbe9a1805fd88beeace9a91c09 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Mon, 10 Sep 2018 13:08:20 -0700 Subject: [PATCH 21/73] sequence tweaks, removing market hours anything --- Makefile | 11 +- linear_coefficient_provider.go | 42 ++++ linear_regression_series.go | 63 +++-- linear_series.go | 119 ++++++++++ market_hours_range.go | 195 ---------------- market_hours_range_test.go | 73 ------ seq/{sequence.go => seq.go} | 0 seq/{sequence_test.go => seq_test.go} | 0 seq/time.go | 127 +--------- seq/time_test.go | 35 +-- seq/times.go | 31 +++ util/date.go | 322 +++++--------------------- util/date_posix.go | 17 -- util/date_test.go | 134 +---------- util/date_windows.go | 17 -- util/time.go | 74 ++++++ util/time_test.go | 30 +++ 17 files changed, 413 insertions(+), 877 deletions(-) create mode 100644 linear_coefficient_provider.go create mode 100644 linear_series.go delete mode 100644 market_hours_range.go delete mode 100644 market_hours_range_test.go rename seq/{sequence.go => seq.go} (100%) rename seq/{sequence_test.go => seq_test.go} (100%) create mode 100644 seq/times.go delete mode 100644 util/date_posix.go delete mode 100644 util/date_windows.go create mode 100644 util/time_test.go diff --git a/Makefile b/Makefile index 1ecb433..0f8d424 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,9 @@ all: test +tools: + @go get -u github.com/blend/go-sdk/_bin/coverage + @go get -u github.com/blend/go-sdk/_bin/profanity + test: @go test ./... @@ -8,9 +12,4 @@ profanity: @profanity -include="*.go,Makefile,README.md" cover: - @go test -short -covermode=set -coverprofile=profile.cov - @go tool cover -html=profile.cov - @rm profile.cov - -deps: - @go get -u github.com/blend/go-sdk/_bin/profanity + @coverage \ No newline at end of file diff --git a/linear_coefficient_provider.go b/linear_coefficient_provider.go new file mode 100644 index 0000000..9701f6b --- /dev/null +++ b/linear_coefficient_provider.go @@ -0,0 +1,42 @@ +package chart + +// LinearCoefficientProvider is a type that returns linear cofficients. +type LinearCoefficientProvider interface { + Coefficients() (m, b, stdev, avg float64) +} + +// LinearCoefficients returns a fixed linear coefficient pair. +func LinearCoefficients(m, b float64) LinearCoefficientSet { + return LinearCoefficientSet{ + M: m, + B: b, + } +} + +// NormalizedLinearCoefficients returns a fixed linear coefficient pair. +func NormalizedLinearCoefficients(m, b, stdev, avg float64) LinearCoefficientSet { + return LinearCoefficientSet{ + M: m, + B: b, + StdDev: stdev, + Avg: avg, + } +} + +// LinearCoefficientSet is the m and b values for the linear equation in the form: +// y = (m*x) + b +type LinearCoefficientSet struct { + M float64 + B float64 + StdDev float64 + Avg float64 +} + +// Coefficients returns the coefficients. +func (lcs LinearCoefficientSet) Coefficients() (m, b, stdev, avg float64) { + m = lcs.M + b = lcs.B + stdev = lcs.StdDev + avg = lcs.Avg + return +} diff --git a/linear_regression_series.go b/linear_regression_series.go index ebeb98b..ae5253c 100644 --- a/linear_regression_series.go +++ b/linear_regression_series.go @@ -9,9 +9,10 @@ import ( // Interface Assertions. var ( - _ Series = (*LinearRegressionSeries)(nil) - _ FirstValuesProvider = (*LinearRegressionSeries)(nil) - _ LastValuesProvider = (*LinearRegressionSeries)(nil) + _ Series = (*LinearRegressionSeries)(nil) + _ FirstValuesProvider = (*LinearRegressionSeries)(nil) + _ LastValuesProvider = (*LinearRegressionSeries)(nil) + _ LinearCoefficientProvider = (*LinearRegressionSeries)(nil) ) // LinearRegressionSeries is a series that plots the n-nearest neighbors @@ -31,6 +32,19 @@ type LinearRegressionSeries struct { stddevx float64 } +// Coefficients returns the linear coefficients for the series. +func (lrs LinearRegressionSeries) Coefficients() (m, b, stdev, avg float64) { + if lrs.IsZero() { + lrs.computeCoefficients() + } + + m = lrs.m + b = lrs.b + stdev = lrs.stddevx + avg = lrs.avgx + return +} + // GetName returns the name of the time series. func (lrs LinearRegressionSeries) GetName() string { return lrs.Name @@ -79,7 +93,7 @@ func (lrs *LinearRegressionSeries) GetValues(index int) (x, y float64) { if lrs.InnerSeries == nil || lrs.InnerSeries.Len() == 0 { return } - if lrs.m == 0 && lrs.b == 0 { + if lrs.IsZero() { lrs.computeCoefficients() } offset := lrs.GetOffset() @@ -94,7 +108,7 @@ func (lrs *LinearRegressionSeries) GetFirstValues() (x, y float64) { if lrs.InnerSeries == nil || lrs.InnerSeries.Len() == 0 { return } - if lrs.m == 0 && lrs.b == 0 { + if lrs.IsZero() { lrs.computeCoefficients() } x, y = lrs.InnerSeries.GetValues(0) @@ -107,7 +121,7 @@ func (lrs *LinearRegressionSeries) GetLastValues() (x, y float64) { if lrs.InnerSeries == nil || lrs.InnerSeries.Len() == 0 { return } - if lrs.m == 0 && lrs.b == 0 { + if lrs.IsZero() { lrs.computeCoefficients() } endIndex := lrs.GetEndIndex() @@ -116,6 +130,29 @@ func (lrs *LinearRegressionSeries) GetLastValues() (x, y float64) { return } +// Render renders the series. +func (lrs *LinearRegressionSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + style := lrs.Style.InheritFrom(defaults) + Draw.LineSeries(r, canvasBox, xrange, yrange, style, lrs) +} + +// Validate validates the series. +func (lrs *LinearRegressionSeries) Validate() error { + if lrs.InnerSeries == nil { + return fmt.Errorf("linear regression series requires InnerSeries to be set") + } + return nil +} + +// IsZero returns if we've computed the coefficients or not. +func (lrs *LinearRegressionSeries) IsZero() bool { + return lrs.m == 0 && lrs.b == 0 +} + +// +// internal helpers +// + func (lrs *LinearRegressionSeries) normalize(xvalue float64) float64 { return (xvalue - lrs.avgx) / lrs.stddevx } @@ -151,17 +188,3 @@ func (lrs *LinearRegressionSeries) computeCoefficients() { lrs.m = (p*sumxy - sumx*sumy) / (p*sumxx - sumx*sumx) lrs.b = (sumy / p) - (lrs.m * sumx / p) } - -// Render renders the series. -func (lrs *LinearRegressionSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { - style := lrs.Style.InheritFrom(defaults) - Draw.LineSeries(r, canvasBox, xrange, yrange, style, lrs) -} - -// Validate validates the series. -func (lrs *LinearRegressionSeries) Validate() error { - if lrs.InnerSeries == nil { - return fmt.Errorf("linear regression series requires InnerSeries to be set") - } - return nil -} diff --git a/linear_series.go b/linear_series.go new file mode 100644 index 0000000..89afa93 --- /dev/null +++ b/linear_series.go @@ -0,0 +1,119 @@ +package chart + +import ( + "fmt" +) + +// Interface Assertions. +var ( + _ Series = (*LinearSeries)(nil) + _ FirstValuesProvider = (*LinearSeries)(nil) + _ LastValuesProvider = (*LinearSeries)(nil) +) + +// LinearSeries is a series that plots a line in a given domain. +type LinearSeries struct { + Name string + Style Style + YAxis YAxisType + + XValues []float64 + InnerSeries LinearCoefficientProvider + + m float64 + b float64 + stdev float64 + avg float64 +} + +// GetName returns the name of the time series. +func (ls LinearSeries) GetName() string { + return ls.Name +} + +// GetStyle returns the line style. +func (ls LinearSeries) GetStyle() Style { + return ls.Style +} + +// GetYAxis returns which YAxis the series draws on. +func (ls LinearSeries) GetYAxis() YAxisType { + return ls.YAxis +} + +// Len returns the number of elements in the series. +func (ls LinearSeries) Len() int { + return len(ls.XValues) +} + +// GetEndIndex returns the effective limit end. +func (ls LinearSeries) GetEndIndex() int { + return len(ls.XValues) - 1 +} + +// GetValues gets a value at a given index. +func (ls *LinearSeries) GetValues(index int) (x, y float64) { + if ls.InnerSeries == nil || len(ls.XValues) == 0 { + return + } + if ls.IsZero() { + ls.computeCoefficients() + } + x = ls.XValues[index] + y = (ls.m * ls.normalize(x)) + ls.b + return +} + +// GetFirstValues computes the first linear regression value. +func (ls *LinearSeries) GetFirstValues() (x, y float64) { + if ls.InnerSeries == nil || len(ls.XValues) == 0 { + return + } + if ls.IsZero() { + ls.computeCoefficients() + } + x, y = ls.GetValues(0) + return +} + +// GetLastValues computes the last linear regression value. +func (ls *LinearSeries) GetLastValues() (x, y float64) { + if ls.InnerSeries == nil || len(ls.XValues) == 0 { + return + } + if ls.IsZero() { + ls.computeCoefficients() + } + x, y = ls.GetValues(ls.GetEndIndex()) + return +} + +// Render renders the series. +func (ls *LinearSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + Draw.LineSeries(r, canvasBox, xrange, yrange, ls.Style.InheritFrom(defaults), ls) +} + +// Validate validates the series. +func (ls LinearSeries) Validate() error { + if ls.InnerSeries == nil { + return fmt.Errorf("linear regression series requires InnerSeries to be set") + } + return nil +} + +// IsZero returns if the linear series has computed coefficients or not. +func (ls LinearSeries) IsZero() bool { + return ls.m == 0 && ls.b == 0 +} + +// computeCoefficients computes the `m` and `b` terms in the linear formula given by `y = mx+b`. +func (ls *LinearSeries) computeCoefficients() { + ls.m, ls.b, ls.stdev, ls.avg = ls.InnerSeries.Coefficients() +} + +func (ls *LinearSeries) normalize(xvalue float64) float64 { + if ls.avg > 0 && ls.stdev > 0 { + return (xvalue - ls.avg) / ls.stdev + } + return xvalue +} diff --git a/market_hours_range.go b/market_hours_range.go deleted file mode 100644 index de32e8c..0000000 --- a/market_hours_range.go +++ /dev/null @@ -1,195 +0,0 @@ -package chart - -import ( - "fmt" - "time" - - "github.com/wcharczuk/go-chart/seq" - "github.com/wcharczuk/go-chart/util" -) - -// MarketHoursRange is a special type of range that compresses a time range into just the -// market (i.e. NYSE operating hours and days) range. -type MarketHoursRange struct { - Min time.Time - Max time.Time - - MarketOpen time.Time - MarketClose time.Time - - HolidayProvider util.HolidayProvider - - ValueFormatter ValueFormatter - - Descending bool - Domain int -} - -// IsDescending returns if the range is descending. -func (mhr MarketHoursRange) IsDescending() bool { - return mhr.Descending -} - -// GetTimezone returns the timezone for the market hours range. -func (mhr MarketHoursRange) GetTimezone() *time.Location { - return mhr.GetMarketOpen().Location() -} - -// IsZero returns if the range is setup or not. -func (mhr MarketHoursRange) IsZero() bool { - return mhr.Min.IsZero() && mhr.Max.IsZero() -} - -// GetMin returns the min value. -func (mhr MarketHoursRange) GetMin() float64 { - return util.Time.ToFloat64(mhr.Min) -} - -// GetMax returns the max value. -func (mhr MarketHoursRange) GetMax() float64 { - return util.Time.ToFloat64(mhr.GetEffectiveMax()) -} - -// GetEffectiveMax gets either the close on the max, or the max itself. -func (mhr MarketHoursRange) GetEffectiveMax() time.Time { - maxClose := util.Date.On(mhr.MarketClose, mhr.Max) - if maxClose.After(mhr.Max) { - return maxClose - } - return mhr.Max -} - -// SetMin sets the min value. -func (mhr *MarketHoursRange) SetMin(min float64) { - mhr.Min = util.Time.FromFloat64(min) - mhr.Min = mhr.Min.In(mhr.GetTimezone()) -} - -// SetMax sets the max value. -func (mhr *MarketHoursRange) SetMax(max float64) { - mhr.Max = util.Time.FromFloat64(max) - mhr.Max = mhr.Max.In(mhr.GetTimezone()) -} - -// GetDelta gets the delta. -func (mhr MarketHoursRange) GetDelta() float64 { - min := mhr.GetMin() - max := mhr.GetMax() - return max - min -} - -// GetDomain gets the domain. -func (mhr MarketHoursRange) GetDomain() int { - return mhr.Domain -} - -// SetDomain sets the domain. -func (mhr *MarketHoursRange) SetDomain(domain int) { - mhr.Domain = domain -} - -// GetHolidayProvider coalesces a userprovided holiday provider and the date.DefaultHolidayProvider. -func (mhr MarketHoursRange) GetHolidayProvider() util.HolidayProvider { - if mhr.HolidayProvider == nil { - return func(_ time.Time) bool { return false } - } - return mhr.HolidayProvider -} - -// GetMarketOpen returns the market open time. -func (mhr MarketHoursRange) GetMarketOpen() time.Time { - if mhr.MarketOpen.IsZero() { - return util.NYSEOpen() - } - return mhr.MarketOpen -} - -// GetMarketClose returns the market close time. -func (mhr MarketHoursRange) GetMarketClose() time.Time { - if mhr.MarketClose.IsZero() { - return util.NYSEClose() - } - return mhr.MarketClose -} - -// GetTicks returns the ticks for the range. -// This is to override the default continous ticks that would be generated for the range. -func (mhr *MarketHoursRange) GetTicks(r Renderer, defaults Style, vf ValueFormatter) []Tick { - times := seq.Time.MarketHours(mhr.Min, mhr.Max, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.GetHolidayProvider()) - timesWidth := mhr.measureTimes(r, defaults, vf, times) - if timesWidth <= mhr.Domain { - return mhr.makeTicks(vf, times) - } - - times = seq.Time.MarketHourQuarters(mhr.Min, mhr.Max, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.GetHolidayProvider()) - timesWidth = mhr.measureTimes(r, defaults, vf, times) - if timesWidth <= mhr.Domain { - return mhr.makeTicks(vf, times) - } - - times = seq.Time.MarketDayCloses(mhr.Min, mhr.Max, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.GetHolidayProvider()) - timesWidth = mhr.measureTimes(r, defaults, vf, times) - if timesWidth <= mhr.Domain { - return mhr.makeTicks(vf, times) - } - - times = seq.Time.MarketDayAlternateCloses(mhr.Min, mhr.Max, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.GetHolidayProvider()) - timesWidth = mhr.measureTimes(r, defaults, vf, times) - if timesWidth <= mhr.Domain { - return mhr.makeTicks(vf, times) - } - - times = seq.Time.MarketDayMondayCloses(mhr.Min, mhr.Max, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.GetHolidayProvider()) - timesWidth = mhr.measureTimes(r, defaults, vf, times) - if timesWidth <= mhr.Domain { - return mhr.makeTicks(vf, times) - } - - return GenerateContinuousTicks(r, mhr, false, defaults, vf) - -} - -func (mhr *MarketHoursRange) measureTimes(r Renderer, defaults Style, vf ValueFormatter, times []time.Time) int { - defaults.GetTextOptions().WriteToRenderer(r) - var total int - for index, t := range times { - timeLabel := vf(t) - - labelBox := r.MeasureText(timeLabel) - total += labelBox.Width() - if index > 0 { - total += DefaultMinimumTickHorizontalSpacing - } - } - return total -} - -func (mhr *MarketHoursRange) makeTicks(vf ValueFormatter, times []time.Time) []Tick { - ticks := make([]Tick, len(times)) - for index, t := range times { - ticks[index] = Tick{ - Value: util.Time.ToFloat64(t), - Label: vf(t), - } - } - return ticks -} - -func (mhr MarketHoursRange) String() string { - return fmt.Sprintf("MarketHoursRange [%s, %s] => %d", mhr.Min.Format(time.RFC3339), mhr.Max.Format(time.RFC3339), mhr.Domain) -} - -// Translate maps a given value into the ContinuousRange space. -func (mhr MarketHoursRange) Translate(value float64) int { - valueTime := util.Time.FromFloat64(value) - valueTimeEastern := valueTime.In(util.Date.Eastern()) - totalSeconds := util.Date.CalculateMarketSecondsBetween(mhr.Min, mhr.GetEffectiveMax(), mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.HolidayProvider) - valueDelta := util.Date.CalculateMarketSecondsBetween(mhr.Min, valueTimeEastern, mhr.GetMarketOpen(), mhr.GetMarketClose(), mhr.HolidayProvider) - translated := int((float64(valueDelta) / float64(totalSeconds)) * float64(mhr.Domain)) - - if mhr.IsDescending() { - return mhr.Domain - translated - } - - return translated -} diff --git a/market_hours_range_test.go b/market_hours_range_test.go deleted file mode 100644 index 26ff06b..0000000 --- a/market_hours_range_test.go +++ /dev/null @@ -1,73 +0,0 @@ -package chart - -import ( - "testing" - "time" - - assert "github.com/blend/go-sdk/assert" - "github.com/wcharczuk/go-chart/util" -) - -func TestMarketHoursRangeGetDelta(t *testing.T) { - assert := assert.New(t) - - r := &MarketHoursRange{ - Min: time.Date(2016, 07, 19, 9, 30, 0, 0, util.Date.Eastern()), - Max: time.Date(2016, 07, 22, 16, 00, 0, 0, util.Date.Eastern()), - MarketOpen: util.NYSEOpen(), - MarketClose: util.NYSEClose(), - HolidayProvider: util.Date.IsNYSEHoliday, - } - - assert.NotZero(r.GetDelta()) -} - -func TestMarketHoursRangeTranslate(t *testing.T) { - assert := assert.New(t) - - r := &MarketHoursRange{ - Min: time.Date(2016, 07, 18, 9, 30, 0, 0, util.Date.Eastern()), - Max: time.Date(2016, 07, 22, 16, 00, 0, 0, util.Date.Eastern()), - MarketOpen: util.NYSEOpen(), - MarketClose: util.NYSEClose(), - HolidayProvider: util.Date.IsNYSEHoliday, - Domain: 1000, - } - - weds := time.Date(2016, 07, 20, 9, 30, 0, 0, util.Date.Eastern()) - - assert.Equal(0, r.Translate(util.Time.ToFloat64(r.Min))) - assert.Equal(400, r.Translate(util.Time.ToFloat64(weds))) - assert.Equal(1000, r.Translate(util.Time.ToFloat64(r.Max))) -} - -func TestMarketHoursRangeGetTicks(t *testing.T) { - assert := assert.New(t) - - r, err := PNG(1024, 1024) - assert.Nil(err) - - f, err := GetDefaultFont() - assert.Nil(err) - - defaults := Style{ - Font: f, - FontSize: 10, - FontColor: ColorBlack, - } - - ra := &MarketHoursRange{ - Min: util.Date.On(util.NYSEOpen(), util.Date.Date(2016, 07, 18, util.Date.Eastern())), - Max: util.Date.On(util.NYSEClose(), util.Date.Date(2016, 07, 22, util.Date.Eastern())), - MarketOpen: util.NYSEOpen(), - MarketClose: util.NYSEClose(), - HolidayProvider: util.Date.IsNYSEHoliday, - Domain: 1024, - } - - ticks := ra.GetTicks(r, defaults, TimeValueFormatter) - assert.NotEmpty(ticks) - assert.Len(ticks, 5) - assert.NotEqual(util.Time.ToFloat64(ra.Min), ticks[0].Value) - assert.NotEmpty(ticks[0].Label) -} diff --git a/seq/sequence.go b/seq/seq.go similarity index 100% rename from seq/sequence.go rename to seq/seq.go diff --git a/seq/sequence_test.go b/seq/seq_test.go similarity index 100% rename from seq/sequence_test.go rename to seq/seq_test.go diff --git a/seq/time.go b/seq/time.go index 79ef02a..4d859a1 100644 --- a/seq/time.go +++ b/seq/time.go @@ -20,95 +20,6 @@ func (ts timeSequence) Days(days int) []time.Time { return values } -func (ts timeSequence) MarketHours(from, to time.Time, marketOpen, marketClose time.Time, isHoliday util.HolidayProvider) []time.Time { - var times []time.Time - cursor := util.Date.On(marketOpen, from) - toClose := util.Date.On(marketClose, to) - for cursor.Before(toClose) || cursor.Equal(toClose) { - todayOpen := util.Date.On(marketOpen, cursor) - todayClose := util.Date.On(marketClose, cursor) - isValidTradingDay := !isHoliday(cursor) && util.Date.IsWeekDay(cursor.Weekday()) - - if (cursor.Equal(todayOpen) || cursor.After(todayOpen)) && (cursor.Equal(todayClose) || cursor.Before(todayClose)) && isValidTradingDay { - times = append(times, cursor) - } - if cursor.After(todayClose) { - cursor = util.Date.NextMarketOpen(cursor, marketOpen, isHoliday) - } else { - cursor = util.Date.NextHour(cursor) - } - } - return times -} - -func (ts timeSequence) MarketHourQuarters(from, to time.Time, marketOpen, marketClose time.Time, isHoliday util.HolidayProvider) []time.Time { - var times []time.Time - cursor := util.Date.On(marketOpen, from) - toClose := util.Date.On(marketClose, to) - for cursor.Before(toClose) || cursor.Equal(toClose) { - - isValidTradingDay := !isHoliday(cursor) && util.Date.IsWeekDay(cursor.Weekday()) - - if isValidTradingDay { - todayOpen := util.Date.On(marketOpen, cursor) - todayNoon := util.Date.NoonOn(cursor) - today2pm := util.Date.On(util.Date.Time(14, 0, 0, 0, cursor.Location()), cursor) - todayClose := util.Date.On(marketClose, cursor) - times = append(times, todayOpen, todayNoon, today2pm, todayClose) - } - - cursor = util.Date.NextDay(cursor) - } - return times -} - -func (ts timeSequence) MarketDayCloses(from, to time.Time, marketOpen, marketClose time.Time, isHoliday util.HolidayProvider) []time.Time { - var times []time.Time - cursor := util.Date.On(marketOpen, from) - toClose := util.Date.On(marketClose, to) - for cursor.Before(toClose) || cursor.Equal(toClose) { - isValidTradingDay := !isHoliday(cursor) && util.Date.IsWeekDay(cursor.Weekday()) - if isValidTradingDay { - todayClose := util.Date.On(marketClose, cursor) - times = append(times, todayClose) - } - - cursor = util.Date.NextDay(cursor) - } - return times -} - -func (ts timeSequence) MarketDayAlternateCloses(from, to time.Time, marketOpen, marketClose time.Time, isHoliday util.HolidayProvider) []time.Time { - var times []time.Time - cursor := util.Date.On(marketOpen, from) - toClose := util.Date.On(marketClose, to) - for cursor.Before(toClose) || cursor.Equal(toClose) { - isValidTradingDay := !isHoliday(cursor) && util.Date.IsWeekDay(cursor.Weekday()) - if isValidTradingDay { - todayClose := util.Date.On(marketClose, cursor) - times = append(times, todayClose) - } - - cursor = cursor.AddDate(0, 0, 2) - } - return times -} - -func (ts timeSequence) MarketDayMondayCloses(from, to time.Time, marketOpen, marketClose time.Time, isHoliday util.HolidayProvider) []time.Time { - var times []time.Time - cursor := util.Date.On(marketClose, from) - toClose := util.Date.On(marketClose, to) - - for cursor.Equal(toClose) || cursor.Before(toClose) { - isValidTradingDay := !isHoliday(cursor) && util.Date.IsWeekDay(cursor.Weekday()) - if isValidTradingDay { - times = append(times, cursor) - } - cursor = util.Date.NextDayOfWeek(cursor, time.Monday) - } - return times -} - func (ts timeSequence) Hours(start time.Time, totalHours int) []time.Time { times := make([]time.Time, totalHours) @@ -123,49 +34,17 @@ func (ts timeSequence) Hours(start time.Time, totalHours int) []time.Time { // HoursFilled adds zero values for the data bounded by the start and end of the xdata array. func (ts timeSequence) HoursFilled(xdata []time.Time, ydata []float64) ([]time.Time, []float64) { - start := Time.Start(xdata) - end := Time.End(xdata) - - totalHours := util.Math.AbsInt(util.Date.DiffHours(start, end)) + start, end := util.Time.StartAndEnd(xdata...) + totalHours := util.Time.DiffHours(start, end) finalTimes := ts.Hours(start, totalHours+1) finalValues := make([]float64, totalHours+1) var hoursFromStart int for i, xd := range xdata { - hoursFromStart = util.Date.DiffHours(start, xd) + hoursFromStart = util.Time.DiffHours(start, xd) finalValues[hoursFromStart] = ydata[i] } return finalTimes, finalValues } - -// Start returns the earliest (min) time in a list of times. -func (ts timeSequence) Start(times []time.Time) time.Time { - if len(times) == 0 { - return time.Time{} - } - - start := times[0] - for _, t := range times[1:] { - if t.Before(start) { - start = t - } - } - return start -} - -// Start returns the earliest (min) time in a list of times. -func (ts timeSequence) End(times []time.Time) time.Time { - if len(times) == 0 { - return time.Time{} - } - - end := times[0] - for _, t := range times[1:] { - if t.After(end) { - end = t - } - } - return end -} diff --git a/seq/time_test.go b/seq/time_test.go index ca1148f..b37fb84 100644 --- a/seq/time_test.go +++ b/seq/time_test.go @@ -8,40 +8,13 @@ import ( "github.com/wcharczuk/go-chart/util" ) -func TestTimeMarketHours(t *testing.T) { - assert := assert.New(t) - - today := time.Date(2016, 07, 01, 12, 0, 0, 0, util.Date.Eastern()) - mh := Time.MarketHours(today, today, util.NYSEOpen(), util.NYSEClose(), util.Date.IsNYSEHoliday) - assert.Len(mh, 8) - assert.Equal(util.Date.Eastern(), mh[0].Location()) -} - -func TestTimeMarketHourQuarters(t *testing.T) { - assert := assert.New(t) - today := time.Date(2016, 07, 01, 12, 0, 0, 0, util.Date.Eastern()) - mh := Time.MarketHourQuarters(today, today, util.NYSEOpen(), util.NYSEClose(), util.Date.IsNYSEHoliday) - assert.Len(mh, 4) - assert.Equal(9, mh[0].Hour()) - assert.Equal(30, mh[0].Minute()) - assert.Equal(util.Date.Eastern(), mh[0].Location()) - - assert.Equal(12, mh[1].Hour()) - assert.Equal(00, mh[1].Minute()) - assert.Equal(util.Date.Eastern(), mh[1].Location()) - - assert.Equal(14, mh[2].Hour()) - assert.Equal(00, mh[2].Minute()) - assert.Equal(util.Date.Eastern(), mh[2].Location()) -} - func TestTimeHours(t *testing.T) { assert := assert.New(t) today := time.Date(2016, 07, 01, 12, 0, 0, 0, time.UTC) seq := Time.Hours(today, 24) - end := Time.End(seq) + end := util.Time.End(seq...) assert.Len(seq, 24) assert.Equal(2016, end.Year()) assert.Equal(07, int(end.Month())) @@ -73,7 +46,7 @@ func TestSequenceHoursFill(t *testing.T) { } filledTimes, filledValues := Time.HoursFilled(xdata, ydata) - expected := util.Date.DiffHours(Time.Start(xdata), Time.End(xdata)) + 1 + expected := util.Time.DiffHours(util.Time.Start(xdata...), util.Time.End(xdata...)) + 1 assert.Len(filledTimes, expected) assert.Equal(len(filledValues), len(filledTimes)) @@ -94,7 +67,7 @@ func TestTimeStart(t *testing.T) { time.Now().AddDate(0, 0, -5), } - assert.InTimeDelta(Time.Start(times), times[4], time.Millisecond) + assert.InTimeDelta(util.Time.Start(times...), times[4], time.Millisecond) } func TestTimeEnd(t *testing.T) { @@ -108,5 +81,5 @@ func TestTimeEnd(t *testing.T) { time.Now().AddDate(0, 0, -5), } - assert.InTimeDelta(Time.End(times), times[2], time.Millisecond) + assert.InTimeDelta(util.Time.End(times...), times[2], time.Millisecond) } diff --git a/seq/times.go b/seq/times.go new file mode 100644 index 0000000..8c65ced --- /dev/null +++ b/seq/times.go @@ -0,0 +1,31 @@ +package seq + +import ( + "time" + + "github.com/wcharczuk/go-chart/util" +) + +// Assert types implement interfaces. +var ( + _ Provider = (*Times)(nil) +) + +// Times are an array of times. +// It wraps the array with methods that implement `seq.Provider`. +type Times []time.Time + +// Array returns the times to an array. +func (t Times) Array() []time.Time { + return []time.Time(t) +} + +// Len returns the length of the array. +func (t Times) Len() int { + return len(t) +} + +// GetValue returns a value at an index as a time. +func (t Times) GetValue(index int) float64 { + return util.Time.ToFloat64(t[index]) +} diff --git a/util/date.go b/util/date.go index 18b8603..11fff97 100644 --- a/util/date.go +++ b/util/date.go @@ -1,7 +1,6 @@ package util import ( - "sync" "time" ) @@ -45,192 +44,88 @@ var ( Epoch = time.Unix(0, 0) ) -var ( - _easternLock sync.Mutex - _eastern *time.Location -) - -// NYSEOpen is when the NYSE opens. -func NYSEOpen() time.Time { return Date.Time(9, 30, 0, 0, Date.Eastern()) } - -// NYSEClose is when the NYSE closes. -func NYSEClose() time.Time { return Date.Time(16, 0, 0, 0, Date.Eastern()) } - -// NASDAQOpen is when NASDAQ opens. -func NASDAQOpen() time.Time { return Date.Time(9, 30, 0, 0, Date.Eastern()) } - -// NASDAQClose is when NASDAQ closes. -func NASDAQClose() time.Time { return Date.Time(16, 0, 0, 0, Date.Eastern()) } - -// NYSEArcaOpen is when NYSEARCA opens. -func NYSEArcaOpen() time.Time { return Date.Time(4, 0, 0, 0, Date.Eastern()) } - -// NYSEArcaClose is when NYSEARCA closes. -func NYSEArcaClose() time.Time { return Date.Time(20, 0, 0, 0, Date.Eastern()) } - -// HolidayProvider is a function that returns if a given time falls on a holiday. -type HolidayProvider func(time.Time) bool - -// defaultHolidayProvider implements `HolidayProvider` and just returns false. -func defaultHolidayProvider(_ time.Time) bool { return false } - -var ( - // Date contains utility functions that operate on dates. - Date = &date{} -) +// Date contains utility functions that operate on dates. +var Date date type date struct{} -// IsNYSEHoliday returns if a date was/is on a nyse holiday day. -func (d date) IsNYSEHoliday(t time.Time) bool { - te := t.In(d.Eastern()) - if te.Year() == 2013 { - if te.Month() == 1 { - return te.Day() == 1 || te.Day() == 21 - } else if te.Month() == 2 { - return te.Day() == 18 - } else if te.Month() == 3 { - return te.Day() == 29 - } else if te.Month() == 5 { - return te.Day() == 27 - } else if te.Month() == 7 { - return te.Day() == 4 - } else if te.Month() == 9 { - return te.Day() == 2 - } else if te.Month() == 11 { - return te.Day() == 28 - } else if te.Month() == 12 { - return te.Day() == 25 - } - } else if te.Year() == 2014 { - if te.Month() == 1 { - return te.Day() == 1 || te.Day() == 20 - } else if te.Month() == 2 { - return te.Day() == 17 - } else if te.Month() == 4 { - return te.Day() == 18 - } else if te.Month() == 5 { - return te.Day() == 26 - } else if te.Month() == 7 { - return te.Day() == 4 - } else if te.Month() == 9 { - return te.Day() == 1 - } else if te.Month() == 11 { - return te.Day() == 27 - } else if te.Month() == 12 { - return te.Day() == 25 - } - } else if te.Year() == 2015 { - if te.Month() == 1 { - return te.Day() == 1 || te.Day() == 19 - } else if te.Month() == 2 { - return te.Day() == 16 - } else if te.Month() == 4 { - return te.Day() == 3 - } else if te.Month() == 5 { - return te.Day() == 25 - } else if te.Month() == 7 { - return te.Day() == 3 - } else if te.Month() == 9 { - return te.Day() == 7 - } else if te.Month() == 11 { - return te.Day() == 26 - } else if te.Month() == 12 { - return te.Day() == 25 - } - } else if te.Year() == 2016 { - if te.Month() == 1 { - return te.Day() == 1 || te.Day() == 18 - } else if te.Month() == 2 { - return te.Day() == 15 - } else if te.Month() == 3 { - return te.Day() == 25 - } else if te.Month() == 5 { - return te.Day() == 30 - } else if te.Month() == 7 { - return te.Day() == 4 - } else if te.Month() == 9 { - return te.Day() == 5 - } else if te.Month() == 11 { - return te.Day() == 24 || te.Day() == 25 - } else if te.Month() == 12 { - return te.Day() == 26 - } - } else if te.Year() == 2017 { - if te.Month() == 1 { - return te.Day() == 1 || te.Day() == 16 - } else if te.Month() == 2 { - return te.Day() == 20 - } else if te.Month() == 4 { - return te.Day() == 15 - } else if te.Month() == 5 { - return te.Day() == 29 - } else if te.Month() == 7 { - return te.Day() == 4 - } else if te.Month() == 9 { - return te.Day() == 4 - } else if te.Month() == 11 { - return te.Day() == 23 - } else if te.Month() == 12 { - return te.Day() == 25 - } - } else if te.Year() == 2018 { - if te.Month() == 1 { - return te.Day() == 1 || te.Day() == 15 - } else if te.Month() == 2 { - return te.Day() == 19 - } else if te.Month() == 3 { - return te.Day() == 30 - } else if te.Month() == 5 { - return te.Day() == 28 - } else if te.Month() == 7 { - return te.Day() == 4 - } else if te.Month() == 9 { - return te.Day() == 3 - } else if te.Month() == 11 { - return te.Day() == 22 - } else if te.Month() == 12 { - return te.Day() == 25 +func (d date) MustEastern() *time.Location { + if eastern, err := d.Eastern(); err != nil { + panic(err) + } else { + return eastern + } +} + +// Eastern returns the eastern timezone. +func (d date) Eastern() (*time.Location, error) { + // Try POSIX + est, err := time.LoadLocation("America/New_York") + if err == nil { + // Try Windows + est, err = time.LoadLocation("EST") + if err == nil { + return nil, err } } - return false + return est, nil } -// IsNYSEArcaHoliday returns that returns if a given time falls on a holiday. -func (d date) IsNYSEArcaHoliday(t time.Time) bool { - return d.IsNYSEHoliday(t) +func (d date) MustPacific() *time.Location { + if pst, err := d.Pacific(); err != nil { + panic(err) + } else { + return pst + } } -// IsNASDAQHoliday returns if a date was a NASDAQ holiday day. -func (d date) IsNASDAQHoliday(t time.Time) bool { - return d.IsNYSEHoliday(t) +// Pacific returns the pacific timezone. +func (d date) Pacific() (*time.Location, error) { + // Try POSIX + pst, err := time.LoadLocation("America/Los_Angeles") + if err == nil { + // Try Windows + pst, err = time.LoadLocation("PST") + if err == nil { + return nil, err + } + } + return pst, nil +} + +// TimeUTC returns a new time.Time for the given clock components in UTC. +// It is meant to be used with the `OnDate` function. +func (d date) TimeUTC(hour, min, sec, nsec int) time.Time { + return time.Date(0, 0, 0, hour, min, sec, nsec, time.UTC) } // Time returns a new time.Time for the given clock components. +// It is meant to be used with the `OnDate` function. func (d date) Time(hour, min, sec, nsec int, loc *time.Location) time.Time { return time.Date(0, 0, 0, hour, min, sec, nsec, loc) } +// DateUTC returns a new time.Time for the given date comonents at (noon) in UTC. +func (d date) DateUTC(year, month, day int) time.Time { + return time.Date(year, time.Month(month), day, 12, 0, 0, 0, time.UTC) +} + +// DateUTC returns a new time.Time for the given date comonents at (noon) in a given location. func (d date) Date(year, month, day int, loc *time.Location) time.Time { return time.Date(year, time.Month(month), day, 12, 0, 0, 0, loc) } -// On returns the clock components of clock (hour,minute,second) on the date components of d. -func (d date) On(clock, cd time.Time) time.Time { - tzAdjusted := cd.In(clock.Location()) +// OnDate returns the clock components of clock (hour,minute,second) on the date components of d. +func (d date) OnDate(clock, date time.Time) time.Time { + tzAdjusted := date.In(clock.Location()) return time.Date(tzAdjusted.Year(), tzAdjusted.Month(), tzAdjusted.Day(), clock.Hour(), clock.Minute(), clock.Second(), clock.Nanosecond(), clock.Location()) } -// NoonOn is a shortcut for On(Time(12,0,0), cd) a.k.a. noon on a given date. -func (d date) NoonOn(cd time.Time) time.Time { +// NoonOnDate is a shortcut for On(Time(12,0,0), cd) a.k.a. noon on a given date. +func (d date) NoonOnDate(cd time.Time) time.Time { return time.Date(cd.Year(), cd.Month(), cd.Day(), 12, 0, 0, 0, cd.Location()) } -// Optional returns a pointer reference to a given time. -func (d date) Optional(t time.Time) *time.Time { - return &t -} - // IsWeekDay returns if the day is a monday->friday. func (d date) IsWeekDay(day time.Weekday) bool { return !d.IsWeekendDay(day) @@ -253,116 +148,11 @@ func (d date) Before(before, reference time.Time) bool { return tzAdjustedBefore.Year() == reference.Year() && tzAdjustedBefore.Month() == reference.Month() && tzAdjustedBefore.Day() < reference.Day() } -// NextMarketOpen returns the next market open after a given time. -func (d date) NextMarketOpen(after, openTime time.Time, isHoliday HolidayProvider) time.Time { - afterLocalized := after.In(openTime.Location()) - todaysOpen := d.On(openTime, afterLocalized) - - if isHoliday == nil { - isHoliday = defaultHolidayProvider - } - - todayIsValidTradingDay := d.IsWeekDay(todaysOpen.Weekday()) && !isHoliday(todaysOpen) - - if (afterLocalized.Equal(todaysOpen) || afterLocalized.Before(todaysOpen)) && todayIsValidTradingDay { - return todaysOpen - } - - for cursorDay := 1; cursorDay < 7; cursorDay++ { - newDay := todaysOpen.AddDate(0, 0, cursorDay) - isValidTradingDay := d.IsWeekDay(newDay.Weekday()) && !isHoliday(newDay) - if isValidTradingDay { - return d.On(openTime, newDay) - } - } - panic("Have exhausted day window looking for next market open.") -} - -// NextMarketClose returns the next market close after a given time. -func (d date) NextMarketClose(after, closeTime time.Time, isHoliday HolidayProvider) time.Time { - afterLocalized := after.In(closeTime.Location()) - - if isHoliday == nil { - isHoliday = defaultHolidayProvider - } - - todaysClose := d.On(closeTime, afterLocalized) - if afterLocalized.Before(todaysClose) && d.IsWeekDay(todaysClose.Weekday()) && !isHoliday(todaysClose) { - return todaysClose - } - - if afterLocalized.Equal(todaysClose) { //rare but it might happen. - return todaysClose - } - - for cursorDay := 1; cursorDay < 6; cursorDay++ { - newDay := todaysClose.AddDate(0, 0, cursorDay) - if d.IsWeekDay(newDay.Weekday()) && !isHoliday(newDay) { - return d.On(closeTime, newDay) - } - } - panic("Have exhausted day window looking for next market close.") -} - -// CalculateMarketSecondsBetween calculates the number of seconds the market was open between two dates. -func (d date) CalculateMarketSecondsBetween(start, end, marketOpen, marketClose time.Time, isHoliday HolidayProvider) (seconds int64) { - startEastern := start.In(d.Eastern()) - endEastern := end.In(d.Eastern()) - - startMarketOpen := d.On(marketOpen, startEastern) - startMarketClose := d.On(marketClose, startEastern) - - if !d.IsWeekendDay(startMarketOpen.Weekday()) && !isHoliday(startMarketOpen) { - if (startEastern.Equal(startMarketOpen) || startEastern.After(startMarketOpen)) && startEastern.Before(startMarketClose) { - if endEastern.Before(startMarketClose) { - seconds += int64(endEastern.Sub(startEastern) / time.Second) - } else { - seconds += int64(startMarketClose.Sub(startEastern) / time.Second) - } - } - } - - cursor := d.NextMarketOpen(startMarketClose, marketOpen, isHoliday) - for d.Before(cursor, endEastern) { - if d.IsWeekDay(cursor.Weekday()) && !isHoliday(cursor) { - close := d.NextMarketClose(cursor, marketClose, isHoliday) - seconds += int64(close.Sub(cursor) / time.Second) - } - cursor = cursor.AddDate(0, 0, 1) - } - - finalMarketOpen := d.NextMarketOpen(cursor, marketOpen, isHoliday) - finalMarketClose := d.NextMarketClose(cursor, marketClose, isHoliday) - if endEastern.After(finalMarketOpen) { - if endEastern.Before(finalMarketClose) { - seconds += int64(endEastern.Sub(finalMarketOpen) / time.Second) - } else { - seconds += int64(finalMarketClose.Sub(finalMarketOpen) / time.Second) - } - } - - return -} - const ( _secondsPerHour = 60 * 60 _secondsPerDay = 60 * 60 * 24 ) -func (d date) DiffDays(t1, t2 time.Time) (days int) { - t1n := t1.Unix() - t2n := t2.Unix() - diff := t2n - t1n //yields seconds - return int(diff / (_secondsPerDay)) -} - -func (d date) DiffHours(t1, t2 time.Time) (hours int) { - t1n := t1.Unix() - t2n := t2.Unix() - diff := t2n - t1n //yields seconds - return int(diff / (_secondsPerHour)) -} - // NextDay returns the timestamp advanced a day. func (d date) NextDay(ts time.Time) time.Time { return ts.AddDate(0, 0, 1) diff --git a/util/date_posix.go b/util/date_posix.go deleted file mode 100644 index 1a5a80c..0000000 --- a/util/date_posix.go +++ /dev/null @@ -1,17 +0,0 @@ -// +build !windows - -package util - -import "time" - -// Eastern returns the eastern timezone. -func (d date) Eastern() *time.Location { - if _eastern == nil { - _easternLock.Lock() - defer _easternLock.Unlock() - if _eastern == nil { - _eastern, _ = time.LoadLocation("America/New_York") - } - } - return _eastern -} diff --git a/util/date_test.go b/util/date_test.go index 333dd13..80bf0e8 100644 --- a/util/date_test.go +++ b/util/date_test.go @@ -33,10 +33,10 @@ func TestDateDate(t *testing.T) { assert.Equal(time.UTC, ts.Location()) } -func TestDateOn(t *testing.T) { +func TestDateOnDate(t *testing.T) { assert := assert.New(t) - ts := Date.On(Date.Time(5, 4, 3, 2, time.UTC), Date.Date(2016, 6, 7, Date.Eastern())) + ts := Date.OnDate(Date.Time(5, 4, 3, 2, time.UTC), Date.Date(2016, 6, 7, Date.MustEastern())) assert.Equal(2016, ts.Year()) assert.Equal(6, ts.Month()) assert.Equal(7, ts.Day()) @@ -47,9 +47,9 @@ func TestDateOn(t *testing.T) { assert.Equal(time.UTC, ts.Location()) } -func TestDateNoonOn(t *testing.T) { +func TestDateNoonOnDate(t *testing.T) { assert := assert.New(t) - noon := Date.NoonOn(time.Date(2016, 04, 03, 02, 01, 0, 0, time.UTC)) + noon := Date.NoonOnDate(time.Date(2016, 04, 03, 02, 01, 0, 0, time.UTC)) assert.Equal(2016, noon.Year()) assert.Equal(4, noon.Month()) @@ -77,101 +77,16 @@ func TestDateBeforeHandlesTimezones(t *testing.T) { tuesdayUTC := time.Date(2016, 8, 02, 22, 00, 0, 0, time.UTC) mondayUTC := time.Date(2016, 8, 01, 1, 00, 0, 0, time.UTC) - sundayEST := time.Date(2016, 7, 31, 22, 00, 0, 0, Date.Eastern()) + sundayEST := time.Date(2016, 7, 31, 22, 00, 0, 0, Date.MustEastern()) assert.True(Date.Before(sundayEST, tuesdayUTC)) assert.False(Date.Before(sundayEST, mondayUTC)) } -func TestNextMarketOpen(t *testing.T) { - assert := assert.New(t) - - beforeOpen := time.Date(2016, 07, 18, 9, 0, 0, 0, Date.Eastern()) - todayOpen := time.Date(2016, 07, 18, 9, 30, 0, 0, Date.Eastern()) - - afterOpen := time.Date(2016, 07, 18, 9, 31, 0, 0, Date.Eastern()) - tomorrowOpen := time.Date(2016, 07, 19, 9, 30, 0, 0, Date.Eastern()) - - afterFriday := time.Date(2016, 07, 22, 9, 31, 0, 0, Date.Eastern()) - mondayOpen := time.Date(2016, 07, 25, 9, 30, 0, 0, Date.Eastern()) - - weekend := time.Date(2016, 07, 23, 9, 31, 0, 0, Date.Eastern()) - - assert.True(todayOpen.Equal(Date.NextMarketOpen(beforeOpen, NYSEOpen(), Date.IsNYSEHoliday))) - assert.True(tomorrowOpen.Equal(Date.NextMarketOpen(afterOpen, NYSEOpen(), Date.IsNYSEHoliday))) - assert.True(mondayOpen.Equal(Date.NextMarketOpen(afterFriday, NYSEOpen(), Date.IsNYSEHoliday))) - assert.True(mondayOpen.Equal(Date.NextMarketOpen(weekend, NYSEOpen(), Date.IsNYSEHoliday))) - - assert.Equal(Date.Eastern(), todayOpen.Location()) - assert.Equal(Date.Eastern(), tomorrowOpen.Location()) - assert.Equal(Date.Eastern(), mondayOpen.Location()) - - testRegression := time.Date(2016, 07, 18, 16, 0, 0, 0, Date.Eastern()) - shouldbe := time.Date(2016, 07, 19, 9, 30, 0, 0, Date.Eastern()) - - assert.True(shouldbe.Equal(Date.NextMarketOpen(testRegression, NYSEOpen(), Date.IsNYSEHoliday))) -} - -func TestNextMarketClose(t *testing.T) { - assert := assert.New(t) - - beforeClose := time.Date(2016, 07, 18, 15, 0, 0, 0, Date.Eastern()) - todayClose := time.Date(2016, 07, 18, 16, 00, 0, 0, Date.Eastern()) - - afterClose := time.Date(2016, 07, 18, 16, 1, 0, 0, Date.Eastern()) - tomorrowClose := time.Date(2016, 07, 19, 16, 00, 0, 0, Date.Eastern()) - - afterFriday := time.Date(2016, 07, 22, 16, 1, 0, 0, Date.Eastern()) - mondayClose := time.Date(2016, 07, 25, 16, 0, 0, 0, Date.Eastern()) - - weekend := time.Date(2016, 07, 23, 9, 31, 0, 0, Date.Eastern()) - - assert.True(todayClose.Equal(Date.NextMarketClose(beforeClose, NYSEClose(), Date.IsNYSEHoliday))) - assert.True(tomorrowClose.Equal(Date.NextMarketClose(afterClose, NYSEClose(), Date.IsNYSEHoliday))) - assert.True(mondayClose.Equal(Date.NextMarketClose(afterFriday, NYSEClose(), Date.IsNYSEHoliday))) - assert.True(mondayClose.Equal(Date.NextMarketClose(weekend, NYSEClose(), Date.IsNYSEHoliday))) - - assert.Equal(Date.Eastern(), todayClose.Location()) - assert.Equal(Date.Eastern(), tomorrowClose.Location()) - assert.Equal(Date.Eastern(), mondayClose.Location()) -} - -func TestCalculateMarketSecondsBetween(t *testing.T) { - assert := assert.New(t) - - start := time.Date(2016, 07, 18, 9, 30, 0, 0, Date.Eastern()) - end := time.Date(2016, 07, 22, 16, 00, 0, 0, Date.Eastern()) - - shouldbe := 5 * 6.5 * 60 * 60 - - assert.Equal(shouldbe, Date.CalculateMarketSecondsBetween(start, end, NYSEOpen(), NYSEClose(), Date.IsNYSEHoliday)) -} - -func TestCalculateMarketSecondsBetween1D(t *testing.T) { - assert := assert.New(t) - - start := time.Date(2016, 07, 22, 9, 45, 0, 0, Date.Eastern()) - end := time.Date(2016, 07, 22, 15, 45, 0, 0, Date.Eastern()) - - shouldbe := 6 * 60 * 60 - - assert.Equal(shouldbe, Date.CalculateMarketSecondsBetween(start, end, NYSEOpen(), NYSEClose(), Date.IsNYSEHoliday)) -} - -func TestCalculateMarketSecondsBetweenLTM(t *testing.T) { - assert := assert.New(t) - - start := time.Date(2015, 07, 01, 9, 30, 0, 0, Date.Eastern()) - end := time.Date(2016, 07, 01, 9, 30, 0, 0, Date.Eastern()) - - shouldbe := 253 * 6.5 * 60 * 60 //253 full market days since this date last year. - assert.Equal(shouldbe, Date.CalculateMarketSecondsBetween(start, end, NYSEOpen(), NYSEClose(), Date.IsNYSEHoliday)) -} - func TestDateNextHour(t *testing.T) { assert := assert.New(t) - start := time.Date(2015, 07, 01, 9, 30, 0, 0, Date.Eastern()) + start := time.Date(2015, 07, 01, 9, 30, 0, 0, Date.MustEastern()) next := Date.NextHour(start) assert.Equal(2015, next.Year()) assert.Equal(07, next.Month()) @@ -221,40 +136,3 @@ func TestDateNextDayOfWeek(t *testing.T) { assert.Equal(time.UTC, nextSunday.Location()) assert.Equal(time.UTC, nextMonday.Location()) } - -func TestDateIsNYSEHoliday(t *testing.T) { - assert := assert.New(t) - - cursor := time.Date(2013, 01, 01, 0, 0, 0, 0, time.UTC) - end := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC) - var holidays int - for Date.Before(cursor, end) { - if Date.IsNYSEHoliday(cursor) { - holidays++ - } - cursor = cursor.AddDate(0, 0, 1) - } - assert.Equal(holidays, 55) -} - -func TestDateDiffDays(t *testing.T) { - assert := assert.New(t) - - t1 := time.Date(2017, 02, 27, 12, 0, 0, 0, time.UTC) - t2 := time.Date(2017, 01, 10, 3, 0, 0, 0, time.UTC) - t3 := time.Date(2017, 02, 24, 16, 0, 0, 0, time.UTC) - - assert.Equal(48, Date.DiffDays(t2, t1)) - assert.Equal(2, Date.DiffDays(t3, t1)) // technically we should round down. -} - -func TestDateDiffHours(t *testing.T) { - assert := assert.New(t) - - t1 := time.Date(2017, 02, 27, 12, 0, 0, 0, time.UTC) - t2 := time.Date(2017, 02, 24, 16, 0, 0, 0, time.UTC) - t3 := time.Date(2017, 02, 28, 12, 0, 0, 0, time.UTC) - - assert.Equal(68, Date.DiffHours(t2, t1)) - assert.Equal(24, Date.DiffHours(t1, t3)) -} diff --git a/util/date_windows.go b/util/date_windows.go deleted file mode 100644 index c42a367..0000000 --- a/util/date_windows.go +++ /dev/null @@ -1,17 +0,0 @@ -// +build windows - -package util - -import "time" - -// Eastern returns the eastern timezone. -func (d date) Eastern() *time.Location { - if _eastern == nil { - _easternLock.Lock() - defer _easternLock.Unlock() - if _eastern == nil { - _eastern, _ = time.LoadLocation("EST") - } - } - return _eastern -} diff --git a/util/time.go b/util/time.go index 88e0c8b..cb07856 100644 --- a/util/time.go +++ b/util/time.go @@ -18,3 +18,77 @@ func (tu timeUtil) ToFloat64(t time.Time) float64 { func (tu timeUtil) FromFloat64(tf float64) time.Time { return time.Unix(0, int64(tf)) } + +func (tu timeUtil) DiffDays(t1, t2 time.Time) (days int) { + t1n := t1.Unix() + t2n := t2.Unix() + var diff int64 + if t1n > t2n { + diff = t2n - t1n //yields seconds + } else { + diff = t1n - t2n //yields seconds + } + return int(diff / (_secondsPerDay)) +} + +func (tu timeUtil) DiffHours(t1, t2 time.Time) (hours int) { + t1n := t1.Unix() + t2n := t2.Unix() + var diff int64 + if t1n > t2n { + diff = t1n - t2n + } else { + diff = t2n - t1n + } + return int(diff / (_secondsPerHour)) +} + +// Start returns the earliest (min) time in a list of times. +func (tu timeUtil) Start(times ...time.Time) time.Time { + if len(times) == 0 { + return time.Time{} + } + + start := times[0] + for _, t := range times[1:] { + if t.Before(start) { + start = t + } + } + return start +} + +// Start returns the earliest (min) time in a list of times. +func (tu timeUtil) End(times ...time.Time) time.Time { + if len(times) == 0 { + return time.Time{} + } + + end := times[0] + for _, t := range times[1:] { + if t.After(end) { + end = t + } + } + return end +} + +// StartAndEnd returns the start and end of a given set of time in one pass. +func (tu timeUtil) StartAndEnd(values ...time.Time) (start time.Time, end time.Time) { + if len(values) == 0 { + return + } + + start = values[0] + end = values[0] + + for _, v := range values[1:] { + if end.Before(v) { + end = v + } + if start.After(v) { + start = v + } + } + return +} diff --git a/util/time_test.go b/util/time_test.go new file mode 100644 index 0000000..c4f9668 --- /dev/null +++ b/util/time_test.go @@ -0,0 +1,30 @@ +package util + +import ( + "testing" + "time" + + "github.com/blend/go-sdk/assert" +) + +func TestTimeDiffDays(t *testing.T) { + assert := assert.New(t) + + t1 := time.Date(2017, 02, 27, 12, 0, 0, 0, time.UTC) + t2 := time.Date(2017, 01, 10, 3, 0, 0, 0, time.UTC) + t3 := time.Date(2017, 02, 24, 16, 0, 0, 0, time.UTC) + + assert.Equal(48, Time.DiffDays(t2, t1)) + assert.Equal(2, Time.DiffDays(t3, t1)) // technically we should round down. +} + +func TestTimeDiffHours(t *testing.T) { + assert := assert.New(t) + + t1 := time.Date(2017, 02, 27, 12, 0, 0, 0, time.UTC) + t2 := time.Date(2017, 02, 24, 16, 0, 0, 0, time.UTC) + t3 := time.Date(2017, 02, 28, 12, 0, 0, 0, time.UTC) + + assert.Equal(68, Time.DiffHours(t2, t1)) + assert.Equal(24, Time.DiffHours(t1, t3)) +} From a7ff82d63f407177cb73ff7e80a99376d5daf8cb Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Mon, 10 Sep 2018 13:11:25 -0700 Subject: [PATCH 22/73] lots of changes --- util/date.go | 8 ++++---- util/date_test.go | 12 +++++++++++- util/time.go | 4 ++-- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/util/date.go b/util/date.go index 11fff97..50c17dd 100644 --- a/util/date.go +++ b/util/date.go @@ -61,10 +61,10 @@ func (d date) MustEastern() *time.Location { func (d date) Eastern() (*time.Location, error) { // Try POSIX est, err := time.LoadLocation("America/New_York") - if err == nil { + if err != nil { // Try Windows est, err = time.LoadLocation("EST") - if err == nil { + if err != nil { return nil, err } } @@ -83,10 +83,10 @@ func (d date) MustPacific() *time.Location { func (d date) Pacific() (*time.Location, error) { // Try POSIX pst, err := time.LoadLocation("America/Los_Angeles") - if err == nil { + if err != nil { // Try Windows pst, err = time.LoadLocation("PST") - if err == nil { + if err != nil { return nil, err } } diff --git a/util/date_test.go b/util/date_test.go index 80bf0e8..e4deee6 100644 --- a/util/date_test.go +++ b/util/date_test.go @@ -12,6 +12,13 @@ func parse(v string) time.Time { return ts } +func TestDateEastern(t *testing.T) { + assert := assert.New(t) + eastern, err := Date.Eastern() + assert.Nil(err) + assert.NotNil(eastern) +} + func TestDateTime(t *testing.T) { assert := assert.New(t) @@ -36,7 +43,10 @@ func TestDateDate(t *testing.T) { func TestDateOnDate(t *testing.T) { assert := assert.New(t) - ts := Date.OnDate(Date.Time(5, 4, 3, 2, time.UTC), Date.Date(2016, 6, 7, Date.MustEastern())) + eastern := Date.MustEastern() + assert.NotNil(eastern) + + ts := Date.OnDate(Date.Time(5, 4, 3, 2, time.UTC), Date.Date(2016, 6, 7, eastern)) assert.Equal(2016, ts.Year()) assert.Equal(6, ts.Month()) assert.Equal(7, ts.Day()) diff --git a/util/time.go b/util/time.go index cb07856..e48b10b 100644 --- a/util/time.go +++ b/util/time.go @@ -24,9 +24,9 @@ func (tu timeUtil) DiffDays(t1, t2 time.Time) (days int) { t2n := t2.Unix() var diff int64 if t1n > t2n { - diff = t2n - t1n //yields seconds - } else { diff = t1n - t2n //yields seconds + } else { + diff = t2n - t1n //yields seconds } return int(diff / (_secondsPerDay)) } From 872b97b99f7629ca1deba823d589833a1fc068f4 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Mon, 10 Sep 2018 13:14:46 -0700 Subject: [PATCH 23/73] removing example --- _examples/market_hours/main.go | 46 ------------------------------ _examples/market_hours/output.png | Bin 68539 -> 0 bytes util/math.go | 22 -------------- util/math_test.go | 35 ----------------------- util/time_test.go | 34 ++++++++++++++++++++++ 5 files changed, 34 insertions(+), 103 deletions(-) delete mode 100644 _examples/market_hours/main.go delete mode 100644 _examples/market_hours/output.png diff --git a/_examples/market_hours/main.go b/_examples/market_hours/main.go deleted file mode 100644 index d0be1d3..0000000 --- a/_examples/market_hours/main.go +++ /dev/null @@ -1,46 +0,0 @@ -package main - -import ( - "net/http" - - "github.com/wcharczuk/go-chart" - "github.com/wcharczuk/go-chart/seq" - "github.com/wcharczuk/go-chart/util" -) - -func drawChart(res http.ResponseWriter, req *http.Request) { - start := util.Date.Date(2016, 7, 01, util.Date.Eastern()) - end := util.Date.Date(2016, 07, 21, util.Date.Eastern()) - xv := seq.Time.MarketHours(start, end, util.NYSEOpen(), util.NYSEClose(), util.Date.IsNYSEHoliday) - yv := seq.New(seq.NewRandom().WithLen(len(xv)).WithAverage(200).WithScale(10)).Array() - - graph := chart.Chart{ - XAxis: chart.XAxis{ - Style: chart.StyleShow(), - TickPosition: chart.TickPositionBetweenTicks, - ValueFormatter: chart.TimeHourValueFormatter, - Range: &chart.MarketHoursRange{ - MarketOpen: util.NYSEOpen(), - MarketClose: util.NYSEClose(), - HolidayProvider: util.Date.IsNYSEHoliday, - }, - }, - YAxis: chart.YAxis{ - Style: chart.StyleShow(), - }, - Series: []chart.Series{ - chart.TimeSeries{ - XValues: xv, - YValues: yv, - }, - }, - } - - res.Header().Set("Content-Type", "image/png") - graph.Render(chart.PNG, res) -} - -func main() { - http.HandleFunc("/", drawChart) - http.ListenAndServe(":8080", nil) -} diff --git a/_examples/market_hours/output.png b/_examples/market_hours/output.png deleted file mode 100644 index 82610ef7d06269542f2cb7fdce8693284292418e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68539 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 ku^Phv^<-E4K=^cf``XC|3$4#5>+V%g Date: Fri, 5 Oct 2018 15:57:51 +0900 Subject: [PATCH 24/73] Put a space between the badges (#101) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0ed0a51..57437ba 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ go-chart ======== -[![Build Status](https://travis-ci.org/wcharczuk/go-chart.svg?branch=master)](https://travis-ci.org/wcharczuk/go-chart)[![Go Report Card](https://goreportcard.com/badge/github.com/wcharczuk/go-chart)](https://goreportcard.com/report/github.com/wcharczuk/go-chart) +[![Build Status](https://travis-ci.org/wcharczuk/go-chart.svg?branch=master)](https://travis-ci.org/wcharczuk/go-chart) [![Go Report Card](https://goreportcard.com/badge/github.com/wcharczuk/go-chart)](https://goreportcard.com/report/github.com/wcharczuk/go-chart) Package `chart` is a very simple golang native charting library that supports timeseries and continuous line charts. From 0fb4aa53e9ebaabf49116a841ce1eb7a7827a1d1 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Thu, 11 Oct 2018 17:18:46 -0700 Subject: [PATCH 25/73] adds a rerender example --- _examples/rerender/main.go | 50 ++++++++++++++++++++++++++++++++++++++ util/time.go | 5 ++++ 2 files changed, 55 insertions(+) create mode 100644 _examples/rerender/main.go diff --git a/_examples/rerender/main.go b/_examples/rerender/main.go new file mode 100644 index 0000000..8ba4ba6 --- /dev/null +++ b/_examples/rerender/main.go @@ -0,0 +1,50 @@ +package main + +import ( + "log" + "net/http" + "sync" + "time" + + "github.com/wcharczuk/go-chart/util" + + chart "github.com/wcharczuk/go-chart" +) + +var lock sync.Mutex +var graph *chart.Chart +var ts *chart.TimeSeries + +func addData(t time.Time, e time.Duration) { + lock.Lock() + ts.XValues = append(ts.XValues, t) + ts.YValues = append(ts.YValues, util.Time.Millis(e)) + lock.Unlock() +} + +func drawChart(res http.ResponseWriter, req *http.Request) { + start := time.Now() + defer func() { + addData(start, time.Since(start)) + }() + if len(ts.XValues) == 0 { + http.Error(res, "no data (yet)", http.StatusBadRequest) + return + } + res.Header().Set("Content-Type", "image/png") + if err := graph.Render(chart.PNG, res); err != nil { + log.Printf("%v", err) + } +} + +func main() { + ts = &chart.TimeSeries{ + XValues: []time.Time{}, + YValues: []float64{}, + } + graph = &chart.Chart{ + Series: []chart.Series{ts}, + } + http.HandleFunc("/", drawChart) + log.Fatal(http.ListenAndServe(":8080", nil)) +} diff --git a/util/time.go b/util/time.go index e48b10b..7d68f91 100644 --- a/util/time.go +++ b/util/time.go @@ -9,6 +9,11 @@ var ( type timeUtil struct{} +// Millis returns the duration as milliseconds. +func (tu timeUtil) Millis(d time.Duration) float64 { + return float64(d) / float64(time.Millisecond) +} + // TimeToFloat64 returns a float64 representation of a time. func (tu timeUtil) ToFloat64(t time.Time) float64 { return float64(t.UnixNano()) From 865ff54ab9d0f7d1e557448ee4d2450c2ccaf990 Mon Sep 17 00:00:00 2001 From: nptrx <34382237+nptrx@users.noreply.github.com> Date: Fri, 12 Oct 2018 09:20:44 +0900 Subject: [PATCH 26/73] unification of sample and test coding styles will improve visibility (#67) * "Style{Show: true}" to "StyleShow()" * "Box{IsSet: true}" to "BoxZero" --- _examples/axes/main.go | 8 ++------ _examples/bar_chart/main.go | 8 ++------ _examples/custom_formatters/main.go | 4 +--- _examples/custom_padding/main.go | 16 ++++------------ _examples/custom_ranges/main.go | 4 +--- _examples/custom_ticks/main.go | 4 +--- _examples/descending/main.go | 8 ++------ _examples/legend/main.go | 4 ++-- _examples/legend_left/main.go | 4 ++-- _examples/request_timings/main.go | 4 +--- _examples/scatter/main.go | 4 ++-- _examples/stacked_bar/main.go | 8 ++------ _examples/stock_analysis/main.go | 4 ++-- _examples/timeseries/main.go | 8 ++------ _examples/twoaxis/main.go | 12 +++--------- _examples/twopoint/main.go | 6 ++---- annotation_series_test.go | 5 ++--- chart_test.go | 28 ++++++++++++---------------- 18 files changed, 45 insertions(+), 94 deletions(-) diff --git a/_examples/axes/main.go b/_examples/axes/main.go index ee0a88c..6f2bdd5 100644 --- a/_examples/axes/main.go +++ b/_examples/axes/main.go @@ -15,14 +15,10 @@ func drawChart(res http.ResponseWriter, req *http.Request) { graph := chart.Chart{ XAxis: chart.XAxis{ - Style: chart.Style{ - Show: true, //enables / displays the x-axis - }, + Style: chart.StyleShow(), //enables / displays the x-axis }, YAxis: chart.YAxis{ - Style: chart.Style{ - Show: true, //enables / displays the y-axis - }, + Style: chart.StyleShow(), //enables / displays the y-axis }, Series: []chart.Series{ chart.ContinuousSeries{ diff --git a/_examples/bar_chart/main.go b/_examples/bar_chart/main.go index 6b8db61..693a300 100644 --- a/_examples/bar_chart/main.go +++ b/_examples/bar_chart/main.go @@ -20,13 +20,9 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, Height: 512, BarWidth: 60, - XAxis: chart.Style{ - Show: true, - }, + XAxis: chart.StyleShow(), YAxis: chart.YAxis{ - Style: chart.Style{ - Show: true, - }, + Style: chart.StyleShow(), }, Bars: []chart.Value{ {Value: 5.25, Label: "Blue"}, diff --git a/_examples/custom_formatters/main.go b/_examples/custom_formatters/main.go index 5da4b00..fe1805d 100644 --- a/_examples/custom_formatters/main.go +++ b/_examples/custom_formatters/main.go @@ -16,9 +16,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { graph := chart.Chart{ YAxis: chart.YAxis{ - Style: chart.Style{ - Show: true, - }, + Style: chart.StyleShow(), ValueFormatter: func(v interface{}) string { if vf, isFloat := v.(float64); isFloat { return fmt.Sprintf("%0.6f", vf) diff --git a/_examples/custom_padding/main.go b/_examples/custom_padding/main.go index f1a5db5..a7cfc17 100644 --- a/_examples/custom_padding/main.go +++ b/_examples/custom_padding/main.go @@ -20,14 +20,10 @@ func drawChart(res http.ResponseWriter, req *http.Request) { FillColor: drawing.ColorFromHex("efefef"), }, XAxis: chart.XAxis{ - Style: chart.Style{ - Show: true, - }, + Style: chart.StyleShow(), }, YAxis: chart.YAxis{ - Style: chart.Style{ - Show: true, - }, + Style: chart.StyleShow(), }, Series: []chart.Series{ chart.ContinuousSeries{ @@ -47,14 +43,10 @@ func drawChartDefault(res http.ResponseWriter, req *http.Request) { FillColor: drawing.ColorFromHex("efefef"), }, XAxis: chart.XAxis{ - Style: chart.Style{ - Show: true, - }, + Style: chart.StyleShow(), }, YAxis: chart.YAxis{ - Style: chart.Style{ - Show: true, - }, + Style: chart.StyleShow(), }, Series: []chart.Series{ chart.ContinuousSeries{ diff --git a/_examples/custom_ranges/main.go b/_examples/custom_ranges/main.go index 4529684..f4b4205 100644 --- a/_examples/custom_ranges/main.go +++ b/_examples/custom_ranges/main.go @@ -14,9 +14,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { graph := chart.Chart{ YAxis: chart.YAxis{ - Style: chart.Style{ - Show: true, - }, + Style: chart.StyleShow(), Range: &chart.ContinuousRange{ Min: 0.0, Max: 10.0, diff --git a/_examples/custom_ticks/main.go b/_examples/custom_ticks/main.go index 21b9d31..8be25e0 100644 --- a/_examples/custom_ticks/main.go +++ b/_examples/custom_ticks/main.go @@ -14,9 +14,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { graph := chart.Chart{ YAxis: chart.YAxis{ - Style: chart.Style{ - Show: true, - }, + Style: chart.StyleShow(), Range: &chart.ContinuousRange{ Min: 0.0, Max: 4.0, diff --git a/_examples/descending/main.go b/_examples/descending/main.go index 6270104..683c3dd 100644 --- a/_examples/descending/main.go +++ b/_examples/descending/main.go @@ -20,17 +20,13 @@ func drawChart(res http.ResponseWriter, req *http.Request) { Height: 500, Width: 500, XAxis: chart.XAxis{ - Style: chart.Style{ - Show: true, - }, + Style: chart.StyleShow(), /*Range: &chart.ContinuousRange{ Descending: true, },*/ }, YAxis: chart.YAxis{ - Style: chart.Style{ - Show: true, - }, + Style: chart.StyleShow(), Range: &chart.ContinuousRange{ Descending: true, }, diff --git a/_examples/legend/main.go b/_examples/legend/main.go index 41cff72..a82d7d3 100644 --- a/_examples/legend/main.go +++ b/_examples/legend/main.go @@ -16,10 +16,10 @@ func drawChart(res http.ResponseWriter, req *http.Request) { graph := chart.Chart{ XAxis: chart.XAxis{ - Style: chart.Style{Show: true}, + Style: chart.StyleShow(), }, YAxis: chart.YAxis{ - Style: chart.Style{Show: true}, + Style: chart.StyleShow(), }, Background: chart.Style{ Padding: chart.Box{ diff --git a/_examples/legend_left/main.go b/_examples/legend_left/main.go index b5e61b6..9eb7fc5 100644 --- a/_examples/legend_left/main.go +++ b/_examples/legend_left/main.go @@ -16,10 +16,10 @@ func drawChart(res http.ResponseWriter, req *http.Request) { graph := chart.Chart{ XAxis: chart.XAxis{ - Style: chart.Style{Show: true}, + Style: chart.StyleShow(), }, YAxis: chart.YAxis{ - Style: chart.Style{Show: true}, + Style: chart.StyleShow(), }, Background: chart.Style{ Padding: chart.Box{ diff --git a/_examples/request_timings/main.go b/_examples/request_timings/main.go index d5867af..000829d 100644 --- a/_examples/request_timings/main.go +++ b/_examples/request_timings/main.go @@ -105,9 +105,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, }, XAxis: chart.XAxis{ - Style: chart.Style{ - Show: true, - }, + Style: chart.StyleShow(), ValueFormatter: chart.TimeHourValueFormatter, GridMajorStyle: chart.Style{ Show: true, diff --git a/_examples/scatter/main.go b/_examples/scatter/main.go index 6d0560c..e20539a 100644 --- a/_examples/scatter/main.go +++ b/_examples/scatter/main.go @@ -44,10 +44,10 @@ func unit(res http.ResponseWriter, req *http.Request) { Height: 50, Width: 50, Canvas: chart.Style{ - Padding: chart.Box{IsSet: true}, + Padding: chart.BoxZero, }, Background: chart.Style{ - Padding: chart.Box{IsSet: true}, + Padding: chart.BoxZero, }, Series: []chart.Series{ chart.ContinuousSeries{ diff --git a/_examples/stacked_bar/main.go b/_examples/stacked_bar/main.go index 7053bf3..3a6f22e 100644 --- a/_examples/stacked_bar/main.go +++ b/_examples/stacked_bar/main.go @@ -18,12 +18,8 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, }, Height: 512, - XAxis: chart.Style{ - Show: true, - }, - YAxis: chart.Style{ - Show: true, - }, + XAxis: chart.StyleShow(), + YAxis: chart.StyleShow(), Bars: []chart.StackedBar{ { Name: "This is a very long string to test word break wrapping.", diff --git a/_examples/stock_analysis/main.go b/_examples/stock_analysis/main.go index ddfa4b3..397e70f 100644 --- a/_examples/stock_analysis/main.go +++ b/_examples/stock_analysis/main.go @@ -43,11 +43,11 @@ func drawChart(res http.ResponseWriter, req *http.Request) { graph := chart.Chart{ XAxis: chart.XAxis{ - Style: chart.Style{Show: true}, + Style: chart.StyleShow(), TickPosition: chart.TickPositionBetweenTicks, }, YAxis: chart.YAxis{ - Style: chart.Style{Show: true}, + Style: chart.StyleShow(), Range: &chart.ContinuousRange{ Max: 220.0, Min: 180.0, diff --git a/_examples/timeseries/main.go b/_examples/timeseries/main.go index 87b2f67..b77f554 100644 --- a/_examples/timeseries/main.go +++ b/_examples/timeseries/main.go @@ -14,9 +14,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { */ graph := chart.Chart{ XAxis: chart.XAxis{ - Style: chart.Style{ - Show: true, - }, + Style: chart.StyleShow(), }, Series: []chart.Series{ chart.TimeSeries{ @@ -48,9 +46,7 @@ func drawCustomChart(res http.ResponseWriter, req *http.Request) { */ graph := chart.Chart{ XAxis: chart.XAxis{ - Style: chart.Style{ - Show: true, - }, + Style: chart.StyleShow(), ValueFormatter: chart.TimeHourValueFormatter, }, Series: []chart.Series{ diff --git a/_examples/twoaxis/main.go b/_examples/twoaxis/main.go index baac87e..471cf85 100644 --- a/_examples/twoaxis/main.go +++ b/_examples/twoaxis/main.go @@ -18,9 +18,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { graph := chart.Chart{ XAxis: chart.XAxis{ - Style: chart.Style{ - Show: true, //enables / displays the x-axis - }, + Style: chart.StyleShow(), //enables / displays the x-axis TickPosition: chart.TickPositionBetweenTicks, ValueFormatter: func(v interface{}) string { typed := v.(float64) @@ -29,14 +27,10 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, }, YAxis: chart.YAxis{ - Style: chart.Style{ - Show: true, //enables / displays the y-axis - }, + Style: chart.StyleShow(), //enables / displays the y-axis }, YAxisSecondary: chart.YAxis{ - Style: chart.Style{ - Show: true, //enables / displays the secondary y-axis - }, + Style: chart.StyleShow(), //enables / displays the secondary y-axis }, Series: []chart.Series{ chart.ContinuousSeries{ diff --git a/_examples/twopoint/main.go b/_examples/twopoint/main.go index d51d37e..fc49641 100644 --- a/_examples/twopoint/main.go +++ b/_examples/twopoint/main.go @@ -14,10 +14,8 @@ func main() { b = 1000 ts1 := chart.ContinuousSeries{ //TimeSeries{ - Name: "Time Series", - Style: chart.Style{ - Show: true, - }, + Name: "Time Series", + Style: chart.StyleShow(), XValues: []float64{10 * b, 20 * b, 30 * b, 40 * b, 50 * b, 60 * b, 70 * b, 80 * b}, YValues: []float64{1.0, 2.0, 30.0, 4.0, 50.0, 6.0, 7.0, 88.0}, } diff --git a/annotation_series_test.go b/annotation_series_test.go index a92d655..64ab4db 100644 --- a/annotation_series_test.go +++ b/annotation_series_test.go @@ -5,6 +5,7 @@ import ( "testing" "github.com/blend/go-sdk/assert" + "github.com/wcharczuk/go-chart/drawing" ) @@ -12,9 +13,7 @@ func TestAnnotationSeriesMeasure(t *testing.T) { assert := assert.New(t) as := AnnotationSeries{ - Style: Style{ - Show: true, - }, + Style: StyleShow(), Annotations: []Value2{ {XValue: 1.0, YValue: 1.0, Label: "1.0"}, {XValue: 2.0, YValue: 2.0, Label: "2.0"}, diff --git a/chart_test.go b/chart_test.go index c7d089a..e57f8ae 100644 --- a/chart_test.go +++ b/chart_test.go @@ -8,7 +8,9 @@ import ( "testing" "time" + "github.com/blend/go-sdk/assert" + "github.com/wcharczuk/go-chart/drawing" "github.com/wcharczuk/go-chart/seq" ) @@ -278,27 +280,21 @@ func TestChartHasAxes(t *testing.T) { x := Chart{ XAxis: XAxis{ - Style: Style{ - Show: true, - }, + Style: StyleShow(), }, } assert.True(x.hasAxes()) y := Chart{ YAxis: YAxis{ - Style: Style{ - Show: true, - }, + Style: StyleShow(), }, } assert.True(y.hasAxes()) ya := Chart{ YAxisSecondary: YAxis{ - Style: Style{ - Show: true, - }, + Style: StyleShow(), }, } assert.True(ya.hasAxes()) @@ -312,15 +308,15 @@ func TestChartGetAxesTicks(t *testing.T) { c := Chart{ XAxis: XAxis{ - Style: Style{Show: true}, + Style: StyleShow(), Range: &ContinuousRange{Min: 9.8, Max: 19.8}, }, YAxis: YAxis{ - Style: Style{Show: true}, + Style: StyleShow(), Range: &ContinuousRange{Min: 9.9, Max: 19.9}, }, YAxisSecondary: YAxis{ - Style: Style{Show: true}, + Style: StyleShow(), Range: &ContinuousRange{Min: 9.7, Max: 19.7}, }, } @@ -482,10 +478,10 @@ func TestChartE2ELine(t *testing.T) { Height: 50, Width: 50, Canvas: Style{ - Padding: Box{IsSet: true}, + Padding: BoxZero, }, Background: Style{ - Padding: Box{IsSet: true}, + Padding: BoxZero, }, Series: []Series{ ContinuousSeries{ @@ -522,10 +518,10 @@ func TestChartE2ELineWithFill(t *testing.T) { Height: 50, Width: 50, Canvas: Style{ - Padding: Box{IsSet: true}, + Padding: BoxZero, }, Background: Style{ - Padding: Box{IsSet: true}, + Padding: BoxZero, }, Series: []Series{ ContinuousSeries{ From 6735e8990adb686811f5635e54840d2122d2dd15 Mon Sep 17 00:00:00 2001 From: Bernhard Reisenberger Date: Fri, 12 Oct 2018 02:21:06 +0200 Subject: [PATCH 27/73] draw circle if single value; do not position text on negative coordinates (#82) --- pie_chart.go | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/pie_chart.go b/pie_chart.go index 6d5d75e..cb8cd07 100644 --- a/pie_chart.go +++ b/pie_chart.go @@ -138,19 +138,26 @@ func (pc PieChart) drawSlices(r Renderer, canvasBox Box, values []Value) { // draw the pie slices var rads, delta, delta2, total float64 var lx, ly int - for index, v := range values { - v.Style.InheritFrom(pc.stylePieChartValue(index)).WriteToRenderer(r) + if len(values) == 1 { + pc.stylePieChartValue(0).WriteToRenderer(r) r.MoveTo(cx, cy) - rads = util.Math.PercentToRadians(total) - delta = util.Math.PercentToRadians(v.Value) + r.Circle(radius, cx, cy) + } else { + for index, v := range values { + v.Style.InheritFrom(pc.stylePieChartValue(index)).WriteToRenderer(r) - r.ArcTo(cx, cy, radius, radius, rads, delta) + r.MoveTo(cx, cy) + rads = util.Math.PercentToRadians(total) + delta = util.Math.PercentToRadians(v.Value) - r.LineTo(cx, cy) - r.Close() - r.FillStroke() - total = total + v.Value + r.ArcTo(cx, cy, radius, radius, rads, delta) + + r.LineTo(cx, cy) + r.Close() + r.FillStroke() + total = total + v.Value + } } // draw the labels @@ -166,6 +173,13 @@ func (pc PieChart) drawSlices(r Renderer, canvasBox Box, values []Value) { lx = lx - (tb.Width() >> 1) ly = ly + (tb.Height() >> 1) + if lx < 0 { + lx = 0 + } + if ly < 0 { + lx = 0 + } + r.Text(v.Label, lx, ly) } total = total + v.Value From f97f94425fa445314c69c47c647e885a050ef62b Mon Sep 17 00:00:00 2001 From: Justin Kromlinger Date: Fri, 12 Oct 2018 02:21:46 +0200 Subject: [PATCH 28/73] Add ability to set CSS classes instead of inline styles (#103) * Add ability to set CSS classes instead of inline styles This allows to set a `ClassName` field in `Style` structs. Setting this field to anything but "" will cause all other styles to be ignored. The element will then have a `class=` tag instead with the corresponding name. Possible reasons to use this: * Including multiple SVGs on the same webside, using the same styles * Desire to use strict CSP headers * Add warning that setting `ClassName` will drop all other inline styles --- _examples/css_classes/main.go | 55 +++++++++++++++++++++++++++++++++++ raster_renderer.go | 4 +++ renderer.go | 3 ++ style.go | 31 +++++++++++++++++++- vector_renderer.go | 20 +++++++++---- vector_renderer_test.go | 14 +++++++++ 6 files changed, 120 insertions(+), 7 deletions(-) create mode 100644 _examples/css_classes/main.go diff --git a/_examples/css_classes/main.go b/_examples/css_classes/main.go new file mode 100644 index 0000000..d650e96 --- /dev/null +++ b/_examples/css_classes/main.go @@ -0,0 +1,55 @@ +package main + +import ( + "fmt" + "github.com/wcharczuk/go-chart" + "log" + "net/http" +) + +func inlineSVGWithClasses(res http.ResponseWriter, req *http.Request) { + res.Write([]byte( + "" + + "" + + "" + + "")) + + pie := chart.PieChart{ + // Note that setting ClassName will cause all other inline styles to be dropped! + Background: chart.Style{ClassName: "background"}, + Canvas: chart.Style{ + ClassName: "canvas", + }, + Width: 512, + Height: 512, + Values: []chart.Value{ + {Value: 5, Label: "Blue", Style: chart.Style{ClassName: "blue"}}, + {Value: 5, Label: "Green", Style: chart.Style{ClassName: "green"}}, + {Value: 4, Label: "Gray", Style: chart.Style{ClassName: "gray"}}, + }, + } + + err := pie.Render(chart.SVG, res) + if err != nil { + fmt.Printf("Error rendering pie chart: %v\n", err) + } + res.Write([]byte("")) +} + +func css(res http.ResponseWriter, req *http.Request) { + res.Header().Set("Content-Type", "text/css") + res.Write([]byte("svg .background { fill: white; }" + + "svg .canvas { fill: white; }" + + "svg path.blue { fill: blue; stroke: lightblue; }" + + "svg path.green { fill: green; stroke: lightgreen; }" + + "svg path.gray { fill: gray; stroke: lightgray; }" + + "svg text.blue { fill: white; }" + + "svg text.green { fill: white; }" + + "svg text.gray { fill: white; }")) +} + +func main() { + http.HandleFunc("/", inlineSVGWithClasses) + http.HandleFunc("/main.css", css) + log.Fatal(http.ListenAndServe(":8080", nil)) +} diff --git a/raster_renderer.go b/raster_renderer.go index 1f18309..18b4fef 100644 --- a/raster_renderer.go +++ b/raster_renderer.go @@ -49,6 +49,10 @@ func (rr *rasterRenderer) SetDPI(dpi float64) { rr.gc.SetDPI(dpi) } +// SetClassName implements the interface method. However, PNGs have no classes. +func (vr *rasterRenderer) SetClassName(_ string) { +} + // SetStrokeColor implements the interface method. func (rr *rasterRenderer) SetStrokeColor(c drawing.Color) { rr.s.StrokeColor = c diff --git a/renderer.go b/renderer.go index 7eb06bb..68a668b 100644 --- a/renderer.go +++ b/renderer.go @@ -18,6 +18,9 @@ type Renderer interface { // SetDPI sets the DPI for the renderer. SetDPI(dpi float64) + // SetClassName sets the current class name. + SetClassName(string) + // SetStrokeColor sets the current stroke color. SetStrokeColor(drawing.Color) diff --git a/style.go b/style.go index 9d1b268..eafc552 100644 --- a/style.go +++ b/style.go @@ -39,6 +39,8 @@ type Style struct { Show bool Padding Box + ClassName string + StrokeWidth float64 StrokeColor drawing.Color StrokeDashArray []float64 @@ -71,7 +73,8 @@ func (s Style) IsZero() bool { s.FillColor.IsZero() && s.FontColor.IsZero() && s.FontSize == 0 && - s.Font == nil + s.Font == nil && + s.ClassName == "" } // String returns a text representation of the style. @@ -87,6 +90,12 @@ func (s Style) String() string { output = []string{"\"show\": false"} } + if s.ClassName != "" { + output = append(output, fmt.Sprintf("\"class_name\": %s", s.ClassName)) + } else { + output = append(output, "\"class_name\": null") + } + if !s.Padding.IsZero() { output = append(output, fmt.Sprintf("\"padding\": %s", s.Padding.String())) } else { @@ -155,6 +164,16 @@ func (s Style) String() string { return "{" + strings.Join(output, ", ") + "}" } +func (s Style) GetClassName(defaults ...string) string { + if s.ClassName == "" { + if len(defaults) > 0 { + return defaults[0] + } + return "" + } + return s.ClassName +} + // GetStrokeColor returns the stroke color. func (s Style) GetStrokeColor(defaults ...drawing.Color) drawing.Color { if s.StrokeColor.IsZero() { @@ -321,6 +340,7 @@ func (s Style) GetTextRotationDegrees(defaults ...float64) float64 { // WriteToRenderer passes the style's options to a renderer. func (s Style) WriteToRenderer(r Renderer) { + r.SetClassName(s.GetClassName()) r.SetStrokeColor(s.GetStrokeColor()) r.SetStrokeWidth(s.GetStrokeWidth()) r.SetStrokeDashArray(s.GetStrokeDashArray()) @@ -337,6 +357,7 @@ func (s Style) WriteToRenderer(r Renderer) { // WriteDrawingOptionsToRenderer passes just the drawing style options to a renderer. func (s Style) WriteDrawingOptionsToRenderer(r Renderer) { + r.SetClassName(s.GetClassName()) r.SetStrokeColor(s.GetStrokeColor()) r.SetStrokeWidth(s.GetStrokeWidth()) r.SetStrokeDashArray(s.GetStrokeDashArray()) @@ -345,6 +366,7 @@ func (s Style) WriteDrawingOptionsToRenderer(r Renderer) { // WriteTextOptionsToRenderer passes just the text style options to a renderer. func (s Style) WriteTextOptionsToRenderer(r Renderer) { + r.SetClassName(s.GetClassName()) r.SetFont(s.GetFont()) r.SetFontColor(s.GetFontColor()) r.SetFontSize(s.GetFontSize()) @@ -352,6 +374,8 @@ func (s Style) WriteTextOptionsToRenderer(r Renderer) { // InheritFrom coalesces two styles into a new style. func (s Style) InheritFrom(defaults Style) (final Style) { + final.ClassName = s.GetClassName(defaults.ClassName) + final.StrokeColor = s.GetStrokeColor(defaults.StrokeColor) final.StrokeWidth = s.GetStrokeWidth(defaults.StrokeWidth) final.StrokeDashArray = s.GetStrokeDashArray(defaults.StrokeDashArray) @@ -379,6 +403,7 @@ func (s Style) InheritFrom(defaults Style) (final Style) { // GetStrokeOptions returns the stroke components. func (s Style) GetStrokeOptions() Style { return Style{ + ClassName: s.ClassName, StrokeDashArray: s.StrokeDashArray, StrokeColor: s.StrokeColor, StrokeWidth: s.StrokeWidth, @@ -388,6 +413,7 @@ func (s Style) GetStrokeOptions() Style { // GetFillOptions returns the fill components. func (s Style) GetFillOptions() Style { return Style{ + ClassName: s.ClassName, FillColor: s.FillColor, } } @@ -395,6 +421,7 @@ func (s Style) GetFillOptions() Style { // GetDotOptions returns the dot components. func (s Style) GetDotOptions() Style { return Style{ + ClassName: s.ClassName, StrokeDashArray: nil, FillColor: s.DotColor, StrokeColor: s.DotColor, @@ -405,6 +432,7 @@ func (s Style) GetDotOptions() Style { // GetFillAndStrokeOptions returns the fill and stroke components. func (s Style) GetFillAndStrokeOptions() Style { return Style{ + ClassName: s.ClassName, StrokeDashArray: s.StrokeDashArray, FillColor: s.FillColor, StrokeColor: s.StrokeColor, @@ -415,6 +443,7 @@ func (s Style) GetFillAndStrokeOptions() Style { // GetTextOptions returns just the text components of the style. func (s Style) GetTextOptions() Style { return Style{ + ClassName: s.ClassName, FontColor: s.FontColor, FontSize: s.FontSize, Font: s.Font, diff --git a/vector_renderer.go b/vector_renderer.go index 6f9b6f4..c154424 100644 --- a/vector_renderer.go +++ b/vector_renderer.go @@ -54,6 +54,11 @@ func (vr *vectorRenderer) SetDPI(dpi float64) { vr.c.dpi = dpi } +// SetClassName implements the interface method. +func (vr *vectorRenderer) SetClassName(classname string) { + vr.s.ClassName = classname +} + // SetStrokeColor implements the interface method. func (vr *vectorRenderer) SetStrokeColor(c drawing.Color) { vr.s.StrokeColor = c @@ -230,20 +235,20 @@ func (c *canvas) Path(d string, style Style) { if len(style.StrokeDashArray) > 0 { strokeDashArrayProperty = c.getStrokeDashArray(style) } - c.w.Write([]byte(fmt.Sprintf(``, strokeDashArrayProperty, d, c.styleAsSVG(style)))) + c.w.Write([]byte(fmt.Sprintf(``, strokeDashArrayProperty, d, c.styleAsSVG(style)))) } func (c *canvas) Text(x, y int, body string, style Style) { if c.textTheta == nil { - c.w.Write([]byte(fmt.Sprintf(`%s`, x, y, c.styleAsSVG(style), body))) + c.w.Write([]byte(fmt.Sprintf(`%s`, x, y, c.styleAsSVG(style), body))) } else { transform := fmt.Sprintf(` transform="rotate(%0.2f,%d,%d)"`, util.Math.RadiansToDegrees(*c.textTheta), x, y) - c.w.Write([]byte(fmt.Sprintf(`%s`, x, y, c.styleAsSVG(style), transform, body))) + c.w.Write([]byte(fmt.Sprintf(`%s`, x, y, c.styleAsSVG(style), transform, body))) } } func (c *canvas) Circle(x, y, r int, style Style) { - c.w.Write([]byte(fmt.Sprintf(``, x, y, r, c.styleAsSVG(style)))) + c.w.Write([]byte(fmt.Sprintf(``, x, y, r, c.styleAsSVG(style)))) } func (c *canvas) End() { @@ -274,8 +279,11 @@ func (c *canvas) getFontFace(s Style) string { return fmt.Sprintf("font-family:%s", family) } -// styleAsSVG returns the style as a svg style string. +// styleAsSVG returns the style as a svg style or class string. func (c *canvas) styleAsSVG(s Style) string { + if s.ClassName != "" { + return fmt.Sprintf("class=\"%s\"", s.ClassName) + } sw := s.StrokeWidth sc := s.StrokeColor fc := s.FillColor @@ -311,5 +319,5 @@ func (c *canvas) styleAsSVG(s Style) string { if s.Font != nil { pieces = append(pieces, c.getFontFace(s)) } - return strings.Join(pieces, ";") + return fmt.Sprintf("style=\"%s\"", strings.Join(pieces, ";")) } diff --git a/vector_renderer_test.go b/vector_renderer_test.go index ccd7044..19c38b6 100644 --- a/vector_renderer_test.go +++ b/vector_renderer_test.go @@ -71,7 +71,21 @@ func TestCanvasStyleSVG(t *testing.T) { svgString := canvas.styleAsSVG(set) assert.NotEmpty(svgString) + assert.True(strings.HasPrefix(svgString, "style=\"")) assert.True(strings.Contains(svgString, "stroke:rgba(255,255,255,1.0)")) assert.True(strings.Contains(svgString, "stroke-width:5")) assert.True(strings.Contains(svgString, "fill:rgba(255,255,255,1.0)")) + assert.True(strings.HasSuffix(svgString, "\"")) +} + +func TestCanvasClassSVG(t *testing.T) { + as := assert.New(t) + + set := Style{ + ClassName: "test-class", + } + + canvas := &canvas{dpi: DefaultDPI} + + as.Equal("class=\"test-class\"", canvas.styleAsSVG(set)) } From 3e352f140b0141e1a9f17563cffd6b13b76431be Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Fri, 12 Oct 2018 09:23:30 -0700 Subject: [PATCH 29/73] adds circle ci --- .circleci/config.yml | 0 COVERAGE | 1 + Makefile | 9 +- coverage.html | 11486 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 11493 insertions(+), 3 deletions(-) create mode 100644 .circleci/config.yml create mode 100644 COVERAGE create mode 100644 coverage.html diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..e69de29 diff --git a/COVERAGE b/COVERAGE new file mode 100644 index 0000000..f309e21 --- /dev/null +++ b/COVERAGE @@ -0,0 +1 @@ +70.89 \ No newline at end of file diff --git a/Makefile b/Makefile index 0f8d424..fb421e7 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,11 @@ all: test -tools: - @go get -u github.com/blend/go-sdk/_bin/coverage - @go get -u github.com/blend/go-sdk/_bin/profanity +ci: profanity coverage + +new-install: + @go get -v -u ./... + @go get -v -u github.com/blend/go-sdk/cmd/coverage + @go get -v -u github.com/blend/go-sdk/cmd/profanity test: @go test ./... diff --git a/coverage.html b/coverage.html new file mode 100644 index 0000000..9957897 --- /dev/null +++ b/coverage.html @@ -0,0 +1,11486 @@ + + + + + + + + +

+ +
+ not tracked + + not covered + covered + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + From 4e6c06ca87e10431de842ccdd15bd2fd23393922 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Fri, 12 Oct 2018 09:23:56 -0700 Subject: [PATCH 30/73] removing coverage artifact --- .gitignore | 1 + coverage.html | 11486 ------------------------------------------------ 2 files changed, 1 insertion(+), 11486 deletions(-) delete mode 100644 coverage.html diff --git a/.gitignore b/.gitignore index ab2dcb7..3e4b6e1 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ # Other .vscode .DS_Store +coverage.html \ No newline at end of file diff --git a/coverage.html b/coverage.html deleted file mode 100644 index 9957897..0000000 --- a/coverage.html +++ /dev/null @@ -1,11486 +0,0 @@ - - - - - - - - -
- -
- not tracked - - not covered - covered - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - From f5889c93aee3b900f3b4258a8796cc648b9a4908 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Fri, 12 Oct 2018 09:24:20 -0700 Subject: [PATCH 31/73] copy pasta --- .circleci/config.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index e69de29..0b7654d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -0,0 +1,17 @@ +version: 2 +jobs: + build: + working_directory: /go/src/github.com/wcharczuk/go-chart + docker: + - image: circleci/golang:1.11 + steps: + - checkout + - run: + name: new-install + command: make new-install + - run: + name: ci + command: make ci + - store_artifacts: + path: coverage.html + destination: coverage.html \ No newline at end of file From 70d5b73afdcad98123e0cfd019bb4716e7630d9f Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Fri, 12 Oct 2018 09:26:46 -0700 Subject: [PATCH 32/73] fixing build --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index fb421e7..84f7228 100644 --- a/Makefile +++ b/Makefile @@ -14,5 +14,5 @@ test: profanity: @profanity -include="*.go,Makefile,README.md" -cover: +coverage: @coverage \ No newline at end of file From 31d235310c1c471e088ea8f2cf7eb6876f301684 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Fri, 12 Oct 2018 09:28:44 -0700 Subject: [PATCH 33/73] removing travis references --- .travis.yml | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 38ebb8e..0000000 --- a/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: go - -go: - - 1.11 - -sudo: false - -before_script: - - go get -u github.com/blend/go-sdk/assert - - go get ./... - -script: - - go test ./... From 96acfc6a9fbadd98cb536958bff56faf5a803044 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Fri, 12 Oct 2018 09:35:03 -0700 Subject: [PATCH 34/73] switching the build badge --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 57437ba..0ba77f8 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ go-chart ======== -[![Build Status](https://travis-ci.org/wcharczuk/go-chart.svg?branch=master)](https://travis-ci.org/wcharczuk/go-chart) [![Go Report Card](https://goreportcard.com/badge/github.com/wcharczuk/go-chart)](https://goreportcard.com/report/github.com/wcharczuk/go-chart) +[![CircleCI](https://circleci.com/gh/wcharczuk/go-chart.svg?style=svg)](https://circleci.com/gh/wcharczuk/go-chart) [![Go Report Card](https://goreportcard.com/badge/github.com/wcharczuk/go-chart)](https://goreportcard.com/report/github.com/wcharczuk/go-chart) Package `chart` is a very simple golang native charting library that supports timeseries and continuous -line charts. +line charts. The v1.0 release has been tagged so things should be more or less stable, if something changes please log an issue. @@ -17,9 +17,9 @@ To install `chart` run the following: > go get -u github.com/wcharczuk/go-chart ``` -Most of the components are interchangeable so feel free to crib whatever you want. +Most of the components are interchangeable so feel free to crib whatever you want. -# Output Examples +# Output Examples Spark Lines: From 3cb33d48d32d580a77d3712f2db2be1388a00cac Mon Sep 17 00:00:00 2001 From: Justin Kromlinger Date: Fri, 12 Oct 2018 18:43:30 +0200 Subject: [PATCH 35/73] Add ability to set custom stylesheets for SVG renderer (#105) * Add ability to set custom stylesheets for SVG renderer This allow to set custom inline CSS and a optional CSP nonce. This solves the problem mentioned in #103 and is best used with it, as seen in the added examples. Without this one would have to write a custom renderer. * Add note with link to the custom_stylesheets example --- _examples/css_classes/main.go | 2 + _examples/custom_stylesheets/inlineOutput.svg | 21 +++++ _examples/custom_stylesheets/main.go | 87 +++++++++++++++++++ vector_renderer.go | 30 +++++++ vector_renderer_test.go | 28 ++++++ 5 files changed, 168 insertions(+) create mode 100644 _examples/custom_stylesheets/inlineOutput.svg create mode 100644 _examples/custom_stylesheets/main.go diff --git a/_examples/css_classes/main.go b/_examples/css_classes/main.go index d650e96..5046b72 100644 --- a/_examples/css_classes/main.go +++ b/_examples/css_classes/main.go @@ -7,6 +7,8 @@ import ( "net/http" ) +// Note: Additional examples on how to add Stylesheets are in the custom_stylesheets example + func inlineSVGWithClasses(res http.ResponseWriter, req *http.Request) { res.Write([]byte( "" + diff --git a/_examples/custom_stylesheets/inlineOutput.svg b/_examples/custom_stylesheets/inlineOutput.svg new file mode 100644 index 0000000..fdb2515 --- /dev/null +++ b/_examples/custom_stylesheets/inlineOutput.svg @@ -0,0 +1,21 @@ +\nBlueGreenGray \ No newline at end of file diff --git a/_examples/custom_stylesheets/main.go b/_examples/custom_stylesheets/main.go new file mode 100644 index 0000000..2432b2d --- /dev/null +++ b/_examples/custom_stylesheets/main.go @@ -0,0 +1,87 @@ +package main + +import ( + "fmt" + "github.com/hashworks/go-chart" + "log" + "net/http" +) + +const style = "svg .background { fill: white; }" + + "svg .canvas { fill: white; }" + + "svg path.blue { fill: blue; stroke: lightblue; }" + + "svg path.green { fill: green; stroke: lightgreen; }" + + "svg path.gray { fill: gray; stroke: lightgray; }" + + "svg text.blue { fill: white; }" + + "svg text.green { fill: white; }" + + "svg text.gray { fill: white; }" + +func svgWithCustomInlineCSS(res http.ResponseWriter, _ *http.Request) { + res.Header().Set("Content-Type", chart.ContentTypeSVG) + + // Render the CSS with custom css + err := pieChart().Render(chart.SVGWithCSS(style, ""), res) + if err != nil { + fmt.Printf("Error rendering pie chart: %v\n", err) + } +} + +func svgWithCustomInlineCSSNonce(res http.ResponseWriter, _ *http.Request) { + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src + // This should be randomly generated on every request! + const nonce = "RAND0MBASE64" + + res.Header().Set("Content-Security-Policy", fmt.Sprintf("style-src 'nonce-%s'", nonce)) + res.Header().Set("Content-Type", chart.ContentTypeSVG) + + // Render the CSS with custom css and a nonce. + // Try changing the nonce to a different string - your browser should block the CSS. + err := pieChart().Render(chart.SVGWithCSS(style, nonce), res) + if err != nil { + fmt.Printf("Error rendering pie chart: %v\n", err) + } +} + +func svgWithCustomExternalCSS(res http.ResponseWriter, _ *http.Request) { + // Add external CSS + res.Write([]byte( + ``+ + ``+ + ``)) + + res.Header().Set("Content-Type", chart.ContentTypeSVG) + err := pieChart().Render(chart.SVG, res) + if err != nil { + fmt.Printf("Error rendering pie chart: %v\n", err) + } +} + +func pieChart() chart.PieChart { + return chart.PieChart{ + // Note that setting ClassName will cause all other inline styles to be dropped! + Background: chart.Style{ClassName: "background"}, + Canvas: chart.Style{ + ClassName: "canvas", + }, + Width: 512, + Height: 512, + Values: []chart.Value{ + {Value: 5, Label: "Blue", Style: chart.Style{ClassName: "blue"}}, + {Value: 5, Label: "Green", Style: chart.Style{ClassName: "green"}}, + {Value: 4, Label: "Gray", Style: chart.Style{ClassName: "gray"}}, + }, + } +} + +func css(res http.ResponseWriter, req *http.Request) { + res.Header().Set("Content-Type", "text/css") + res.Write([]byte(style)) +} + +func main() { + http.HandleFunc("/", svgWithCustomInlineCSS) + http.HandleFunc("/nonce", svgWithCustomInlineCSSNonce) + http.HandleFunc("/external", svgWithCustomExternalCSS) + http.HandleFunc("/main.css", css) + log.Fatal(http.ListenAndServe(":8080", nil)) +} diff --git a/vector_renderer.go b/vector_renderer.go index c154424..71c6a86 100644 --- a/vector_renderer.go +++ b/vector_renderer.go @@ -28,6 +28,25 @@ func SVG(width, height int) (Renderer, error) { }, nil } +// SVGWithCSS returns a new png/raster renderer with attached custom CSS +// The optional nonce argument sets a CSP nonce. +func SVGWithCSS(css string, nonce string) (func(width, height int)(Renderer, error)) { + return func(width, height int) (Renderer, error) { + buffer := bytes.NewBuffer([]byte{}) + canvas := newCanvas(buffer) + canvas.css = css + canvas.nonce = nonce + canvas.Start(width, height) + return &vectorRenderer{ + b: buffer, + c: canvas, + s: &Style{}, + p: []string{}, + dpi: DefaultDPI, + }, nil + } +} + // vectorRenderer renders chart commands to a bitmap. type vectorRenderer struct { dpi float64 @@ -222,12 +241,23 @@ type canvas struct { textTheta *float64 width int height int + css string + nonce string } func (c *canvas) Start(width, height int) { c.width = width c.height = height c.w.Write([]byte(fmt.Sprintf(`\n`, c.width, c.height))) + if c.css != "" { + c.w.Write([]byte(``, c.css))) + } } func (c *canvas) Path(d string, style Style) { diff --git a/vector_renderer_test.go b/vector_renderer_test.go index 19c38b6..d937d2d 100644 --- a/vector_renderer_test.go +++ b/vector_renderer_test.go @@ -2,6 +2,7 @@ package chart import ( "bytes" + "fmt" "strings" "testing" @@ -89,3 +90,30 @@ func TestCanvasClassSVG(t *testing.T) { as.Equal("class=\"test-class\"", canvas.styleAsSVG(set)) } + +func TestCanvasCustomInlineStylesheet(t *testing.T) { + b := strings.Builder{} + + canvas := &canvas{ + w: &b, + css: ".background { fill: red }", + } + + canvas.Start(200, 200) + + assert.New(t).Contains(b.String(), fmt.Sprintf(``, canvas.css)) +} + +func TestCanvasCustomInlineStylesheetWithNonce(t *testing.T) { + b := strings.Builder{} + + canvas := &canvas{ + w: &b, + css: ".background { fill: red }", + nonce: "RAND0MSTRING", + } + + canvas.Start(200, 200) + + assert.New(t).Contains(b.String(), fmt.Sprintf(``, canvas.nonce, canvas.css)) +} \ No newline at end of file From 26eaa1d8988e06338b0298b8391074de63d2eafb Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Wed, 13 Feb 2019 16:09:26 -0800 Subject: [PATCH 36/73] snapshot --- _examples/axes/main.go | 2 +- _examples/axes_labels/main.go | 2 +- _examples/bar_chart/main.go | 2 +- _examples/bar_chart_base_value/main.go | 20 +- _examples/basic/main.go | 2 +- _examples/benchmark_line_charts/main.go | 2 +- _examples/css_classes/main.go | 3 +- _examples/custom_formatters/main.go | 2 +- _examples/custom_padding/main.go | 2 +- _examples/custom_ranges/main.go | 2 +- _examples/custom_styles/main.go | 2 +- _examples/custom_stylesheets/main.go | 9 +- _examples/custom_ticks/main.go | 14 +- _examples/image_writer/main.go | 2 +- _examples/legend/main.go | 2 +- _examples/legend_left/main.go | 2 +- _examples/linear_regression/main.go | 2 +- _examples/min_max/main.go | 2 +- _examples/pie_chart/main.go | 2 +- _examples/poly_regression/main.go | 2 +- _examples/request_timings/main.go | 17 +- _examples/rerender/main.go | 4 +- annotation_series.go | 10 +- bar_chart.go | 5 +- bollinger_band_series.go | 16 +- bollinger_band_series_test.go | 9 +- box.go | 56 ++-- chart.go | 9 +- chart_test.go | 12 +- cmd/chart/main.go | 137 +++++++++ concat_series_test.go | 13 +- continuous_range_test.go | 3 +- continuous_series_test.go | 13 +- draw.go | 6 +- fileutil.go | 51 ++++ legend.go | 9 +- linear_regression_series.go | 15 +- util/math.go => mathutil.go | 309 +++++++++++---------- parse.go | 36 +++ pie_chart.go | 26 +- polynomial_regression_series.go | 7 +- raster_renderer.go | 6 +- seq/seq.go => seq.go | 191 +++++++++++-- seq/array.go | 19 -- seq/linear.go | 73 ----- seq/linear_test.go | 48 ---- seq/random.go | 88 ------ seq/random_test.go | 20 -- seq/seq_test.go | 95 ------- seq/time.go | 50 ---- seq/time_test.go | 85 ------ seq/times.go | 31 --- seq/util.go | 32 --- sma_series.go | 4 +- sma_series_test.go | 5 +- stacked_bar_chart.go | 10 +- stringutil.go | 57 ++++ stringutil_test.go | 22 ++ style.go | 4 +- text.go | 4 +- tick.go | 10 +- time_series.go | 8 +- timeutil.go | 105 +++++++ util/date.go | 186 ------------- util/date_test.go | 148 ---------- util/file_util.go | 57 ---- util/math_test.go | 151 ---------- util/time.go | 99 ------- util/time_test.go | 64 ----- value.go | 6 +- seq/buffer.go => value_buffer.go | 54 ++-- seq/buffer_test.go => value_buffer_test.go | 178 +++++++++--- value_formatter_test.go | 3 +- vector_renderer.go | 13 +- xaxis.go | 12 +- yaxis.go | 14 +- 76 files changed, 1076 insertions(+), 1717 deletions(-) create mode 100644 cmd/chart/main.go create mode 100644 fileutil.go rename util/math.go => mathutil.go (55%) create mode 100644 parse.go rename seq/seq.go => seq.go (50%) delete mode 100644 seq/array.go delete mode 100644 seq/linear.go delete mode 100644 seq/linear_test.go delete mode 100644 seq/random.go delete mode 100644 seq/random_test.go delete mode 100644 seq/seq_test.go delete mode 100644 seq/time.go delete mode 100644 seq/time_test.go delete mode 100644 seq/times.go delete mode 100644 seq/util.go create mode 100644 stringutil.go create mode 100644 stringutil_test.go create mode 100644 timeutil.go delete mode 100644 util/date.go delete mode 100644 util/date_test.go delete mode 100644 util/file_util.go delete mode 100644 util/math_test.go delete mode 100644 util/time.go delete mode 100644 util/time_test.go rename seq/buffer.go => value_buffer.go (79%) rename seq/buffer_test.go => value_buffer_test.go (52%) diff --git a/_examples/axes/main.go b/_examples/axes/main.go index 6f2bdd5..daf7267 100644 --- a/_examples/axes/main.go +++ b/_examples/axes/main.go @@ -3,7 +3,7 @@ package main import ( "net/http" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" ) func drawChart(res http.ResponseWriter, req *http.Request) { diff --git a/_examples/axes_labels/main.go b/_examples/axes_labels/main.go index 6074259..935aa3f 100644 --- a/_examples/axes_labels/main.go +++ b/_examples/axes_labels/main.go @@ -3,7 +3,7 @@ package main import ( "net/http" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" ) func drawChart(res http.ResponseWriter, req *http.Request) { diff --git a/_examples/bar_chart/main.go b/_examples/bar_chart/main.go index 693a300..1694a29 100644 --- a/_examples/bar_chart/main.go +++ b/_examples/bar_chart/main.go @@ -6,7 +6,7 @@ import ( "net/http" "os" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" ) func drawChart(res http.ResponseWriter, req *http.Request) { diff --git a/_examples/bar_chart_base_value/main.go b/_examples/bar_chart_base_value/main.go index 1874f0b..a0ce4c3 100644 --- a/_examples/bar_chart_base_value/main.go +++ b/_examples/bar_chart_base_value/main.go @@ -6,7 +6,7 @@ import ( "net/http" "os" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" "github.com/wcharczuk/go-chart/drawing" ) @@ -43,15 +43,15 @@ func drawChart(res http.ResponseWriter, req *http.Request) { Show: true, }, Ticks: []chart.Tick{ - {-4.0, "-4"}, - {-2.0, "-2"}, - {0, "0"}, - {2.0, "2"}, - {4.0, "4"}, - {6.0, "6"}, - {8.0, "8"}, - {10.0, "10"}, - {12.0, "12"}, + {Value: -4.0, Label: "-4"}, + {Value: -2.0, Label: "-2"}, + {Value: 0, Label: "0"}, + {Value: 2.0, Label: "2"}, + {Value: 4.0, Label: "4"}, + {Value: 6.0, Label: "6"}, + {Value: 8.0, Label: "8"}, + {Value: 10.0, Label: "10"}, + {Value: 12.0, Label: "12"}, }, }, UseBaseValue: true, diff --git a/_examples/basic/main.go b/_examples/basic/main.go index 1fd9d38..797dcb9 100644 --- a/_examples/basic/main.go +++ b/_examples/basic/main.go @@ -4,7 +4,7 @@ import ( "log" "net/http" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" ) func drawChart(res http.ResponseWriter, req *http.Request) { diff --git a/_examples/benchmark_line_charts/main.go b/_examples/benchmark_line_charts/main.go index 09b1b89..c3790b3 100644 --- a/_examples/benchmark_line_charts/main.go +++ b/_examples/benchmark_line_charts/main.go @@ -8,7 +8,7 @@ import ( "strconv" "time" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" ) func random(min, max float64) float64 { diff --git a/_examples/css_classes/main.go b/_examples/css_classes/main.go index 5046b72..b1dda8c 100644 --- a/_examples/css_classes/main.go +++ b/_examples/css_classes/main.go @@ -2,9 +2,10 @@ package main import ( "fmt" - "github.com/wcharczuk/go-chart" "log" "net/http" + + chart "github.com/wcharczuk/go-chart" ) // Note: Additional examples on how to add Stylesheets are in the custom_stylesheets example diff --git a/_examples/custom_formatters/main.go b/_examples/custom_formatters/main.go index fe1805d..b569581 100644 --- a/_examples/custom_formatters/main.go +++ b/_examples/custom_formatters/main.go @@ -4,7 +4,7 @@ import ( "fmt" "net/http" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" ) func drawChart(res http.ResponseWriter, req *http.Request) { diff --git a/_examples/custom_padding/main.go b/_examples/custom_padding/main.go index a7cfc17..0de71d9 100644 --- a/_examples/custom_padding/main.go +++ b/_examples/custom_padding/main.go @@ -3,7 +3,7 @@ package main import ( "net/http" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" "github.com/wcharczuk/go-chart/drawing" "github.com/wcharczuk/go-chart/seq" ) diff --git a/_examples/custom_ranges/main.go b/_examples/custom_ranges/main.go index f4b4205..d8ee5eb 100644 --- a/_examples/custom_ranges/main.go +++ b/_examples/custom_ranges/main.go @@ -3,7 +3,7 @@ package main import ( "net/http" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" ) func drawChart(res http.ResponseWriter, req *http.Request) { diff --git a/_examples/custom_styles/main.go b/_examples/custom_styles/main.go index 4c93856..612e175 100644 --- a/_examples/custom_styles/main.go +++ b/_examples/custom_styles/main.go @@ -3,7 +3,7 @@ package main import ( "net/http" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" "github.com/wcharczuk/go-chart/drawing" ) diff --git a/_examples/custom_stylesheets/main.go b/_examples/custom_stylesheets/main.go index 2432b2d..35a11ce 100644 --- a/_examples/custom_stylesheets/main.go +++ b/_examples/custom_stylesheets/main.go @@ -2,9 +2,10 @@ package main import ( "fmt" - "github.com/hashworks/go-chart" "log" "net/http" + + chart "github.com/wcharczuk/go-chart" ) const style = "svg .background { fill: white; }" + @@ -45,9 +46,9 @@ func svgWithCustomInlineCSSNonce(res http.ResponseWriter, _ *http.Request) { func svgWithCustomExternalCSS(res http.ResponseWriter, _ *http.Request) { // Add external CSS res.Write([]byte( - ``+ - ``+ - ``)) + `` + + `` + + ``)) res.Header().Set("Content-Type", chart.ContentTypeSVG) err := pieChart().Render(chart.SVG, res) diff --git a/_examples/custom_ticks/main.go b/_examples/custom_ticks/main.go index 8be25e0..4afdd18 100644 --- a/_examples/custom_ticks/main.go +++ b/_examples/custom_ticks/main.go @@ -3,7 +3,7 @@ package main import ( "net/http" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" ) func drawChart(res http.ResponseWriter, req *http.Request) { @@ -20,12 +20,12 @@ func drawChart(res http.ResponseWriter, req *http.Request) { Max: 4.0, }, Ticks: []chart.Tick{ - {0.0, "0.00"}, - {2.0, "2.00"}, - {4.0, "4.00"}, - {6.0, "6.00"}, - {8.0, "Eight"}, - {10.0, "Ten"}, + {Value: 0.0, Label: "0.00"}, + {Value: 2.0, Label: "2.00"}, + {Value: 4.0, Label: "4.00"}, + {Value: 6.0, Label: "6.00"}, + {Value: 8.0, Label: "Eight"}, + {Value: 10.0, Label: "Ten"}, }, }, Series: []chart.Series{ diff --git a/_examples/image_writer/main.go b/_examples/image_writer/main.go index 13bf013..9bf92ce 100644 --- a/_examples/image_writer/main.go +++ b/_examples/image_writer/main.go @@ -4,7 +4,7 @@ import ( "fmt" "log" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" ) func main() { diff --git a/_examples/legend/main.go b/_examples/legend/main.go index a82d7d3..ecb243b 100644 --- a/_examples/legend/main.go +++ b/_examples/legend/main.go @@ -3,7 +3,7 @@ package main import ( "net/http" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" ) func drawChart(res http.ResponseWriter, req *http.Request) { diff --git a/_examples/legend_left/main.go b/_examples/legend_left/main.go index 9eb7fc5..e7f0caf 100644 --- a/_examples/legend_left/main.go +++ b/_examples/legend_left/main.go @@ -3,7 +3,7 @@ package main import ( "net/http" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" ) func drawChart(res http.ResponseWriter, req *http.Request) { diff --git a/_examples/linear_regression/main.go b/_examples/linear_regression/main.go index d7578b2..eb4cc60 100644 --- a/_examples/linear_regression/main.go +++ b/_examples/linear_regression/main.go @@ -3,7 +3,7 @@ package main import ( "net/http" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" "github.com/wcharczuk/go-chart/seq" ) diff --git a/_examples/min_max/main.go b/_examples/min_max/main.go index 5d838c3..a0cb4b1 100644 --- a/_examples/min_max/main.go +++ b/_examples/min_max/main.go @@ -3,7 +3,7 @@ package main import ( "net/http" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" "github.com/wcharczuk/go-chart/seq" ) diff --git a/_examples/pie_chart/main.go b/_examples/pie_chart/main.go index 9d1098d..268239d 100644 --- a/_examples/pie_chart/main.go +++ b/_examples/pie_chart/main.go @@ -5,7 +5,7 @@ import ( "log" "net/http" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" ) func drawChart(res http.ResponseWriter, req *http.Request) { diff --git a/_examples/poly_regression/main.go b/_examples/poly_regression/main.go index f2bb3cd..27a39a3 100644 --- a/_examples/poly_regression/main.go +++ b/_examples/poly_regression/main.go @@ -3,7 +3,7 @@ package main import ( "net/http" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" "github.com/wcharczuk/go-chart/seq" ) diff --git a/_examples/request_timings/main.go b/_examples/request_timings/main.go index 000829d..ccea8e4 100644 --- a/_examples/request_timings/main.go +++ b/_examples/request_timings/main.go @@ -7,8 +7,7 @@ import ( "strings" "time" - "github.com/wcharczuk/go-chart" - util "github.com/wcharczuk/go-chart/util" + chart "github.com/wcharczuk/go-chart" ) func parseInt(str string) int { @@ -24,7 +23,7 @@ func parseFloat64(str string) float64 { func readData() ([]time.Time, []float64) { var xvalues []time.Time var yvalues []float64 - err := util.File.ReadByLines("requests.csv", func(line string) error { + err := chart.ReadLines("requests.csv", func(line string) error { parts := strings.Split(line, ",") year := parseInt(parts[0]) month := parseInt(parts[1]) @@ -43,12 +42,12 @@ func readData() ([]time.Time, []float64) { func releases() []chart.GridLine { return []chart.GridLine{ - {Value: util.Time.ToFloat64(time.Date(2016, 8, 1, 9, 30, 0, 0, time.UTC))}, - {Value: util.Time.ToFloat64(time.Date(2016, 8, 2, 9, 30, 0, 0, time.UTC))}, - {Value: util.Time.ToFloat64(time.Date(2016, 8, 2, 15, 30, 0, 0, time.UTC))}, - {Value: util.Time.ToFloat64(time.Date(2016, 8, 4, 9, 30, 0, 0, time.UTC))}, - {Value: util.Time.ToFloat64(time.Date(2016, 8, 5, 9, 30, 0, 0, time.UTC))}, - {Value: util.Time.ToFloat64(time.Date(2016, 8, 6, 9, 30, 0, 0, time.UTC))}, + {Value: chart.TimeToFloat64(time.Date(2016, 8, 1, 9, 30, 0, 0, time.UTC))}, + {Value: chart.TimeToFloat64(time.Date(2016, 8, 2, 9, 30, 0, 0, time.UTC))}, + {Value: chart.TimeToFloat64(time.Date(2016, 8, 2, 15, 30, 0, 0, time.UTC))}, + {Value: chart.TimeToFloat64(time.Date(2016, 8, 4, 9, 30, 0, 0, time.UTC))}, + {Value: chart.TimeToFloat64(time.Date(2016, 8, 5, 9, 30, 0, 0, time.UTC))}, + {Value: chart.TimeToFloat64(time.Date(2016, 8, 6, 9, 30, 0, 0, time.UTC))}, } } diff --git a/_examples/rerender/main.go b/_examples/rerender/main.go index 8ba4ba6..e014e8f 100644 --- a/_examples/rerender/main.go +++ b/_examples/rerender/main.go @@ -6,8 +6,6 @@ import ( "sync" "time" - "github.com/wcharczuk/go-chart/util" - chart "github.com/wcharczuk/go-chart" ) @@ -18,7 +16,7 @@ var ts *chart.TimeSeries func addData(t time.Time, e time.Duration) { lock.Lock() ts.XValues = append(ts.XValues, t) - ts.YValues = append(ts.YValues, util.Time.Millis(e)) + ts.YValues = append(ts.YValues, chart.TimeMillis(e)) lock.Unlock() } diff --git a/annotation_series.go b/annotation_series.go index c99779b..a251622 100644 --- a/annotation_series.go +++ b/annotation_series.go @@ -3,8 +3,6 @@ package chart import ( "fmt" "math" - - util "github.com/wcharczuk/go-chart/util" ) // Interface Assertions. @@ -62,10 +60,10 @@ func (as AnnotationSeries) Measure(r Renderer, canvasBox Box, xrange, yrange Ran lx := canvasBox.Left + xrange.Translate(a.XValue) ly := canvasBox.Bottom - yrange.Translate(a.YValue) ab := Draw.MeasureAnnotation(r, canvasBox, style, lx, ly, a.Label) - box.Top = util.Math.MinInt(box.Top, ab.Top) - box.Left = util.Math.MinInt(box.Left, ab.Left) - box.Right = util.Math.MaxInt(box.Right, ab.Right) - box.Bottom = util.Math.MaxInt(box.Bottom, ab.Bottom) + box.Top = MinInt(box.Top, ab.Top) + box.Left = MinInt(box.Left, ab.Left) + box.Right = MaxInt(box.Right, ab.Right) + box.Bottom = MaxInt(box.Bottom, ab.Bottom) } } return box diff --git a/bar_chart.go b/bar_chart.go index 45ddcc7..e6b9936 100644 --- a/bar_chart.go +++ b/bar_chart.go @@ -7,7 +7,6 @@ import ( "math" "github.com/golang/freetype/truetype" - util "github.com/wcharczuk/go-chart/util" ) // BarChart is a chart that draws bars on a range. @@ -410,7 +409,7 @@ func (bc BarChart) getAdjustedCanvasBox(r Renderer, canvasBox Box, yrange Range, lines := Text.WrapFit(r, bar.Label, barLabelBox.Width(), axisStyle) linesBox := Text.MeasureLines(r, lines, axisStyle) - xaxisHeight = util.Math.MinInt(linesBox.Height()+(2*DefaultXAxisMargin), xaxisHeight) + xaxisHeight = MinInt(linesBox.Height()+(2*DefaultXAxisMargin), xaxisHeight) } } @@ -477,7 +476,7 @@ func (bc BarChart) styleDefaultsTitle() Style { } func (bc BarChart) getTitleFontSize() float64 { - effectiveDimension := util.Math.MinInt(bc.GetWidth(), bc.GetHeight()) + effectiveDimension := MinInt(bc.GetWidth(), bc.GetHeight()) if effectiveDimension >= 2048 { return 48 } else if effectiveDimension >= 1024 { diff --git a/bollinger_band_series.go b/bollinger_band_series.go index 0a2b447..6451f13 100644 --- a/bollinger_band_series.go +++ b/bollinger_band_series.go @@ -2,8 +2,6 @@ package chart import ( "fmt" - - "github.com/wcharczuk/go-chart/seq" ) // Interface Assertions. @@ -22,7 +20,7 @@ type BollingerBandsSeries struct { K float64 InnerSeries ValuesProvider - valueBuffer *seq.Buffer + valueBuffer *ValueBuffer } // GetName returns the name of the time series. @@ -72,7 +70,7 @@ func (bbs *BollingerBandsSeries) GetBoundedValues(index int) (x, y1, y2 float64) return } if bbs.valueBuffer == nil || index == 0 { - bbs.valueBuffer = seq.NewBufferWithCapacity(bbs.GetPeriod()) + bbs.valueBuffer = NewValueBufferWithCapacity(bbs.GetPeriod()) } if bbs.valueBuffer.Len() >= bbs.GetPeriod() { bbs.valueBuffer.Dequeue() @@ -81,8 +79,8 @@ func (bbs *BollingerBandsSeries) GetBoundedValues(index int) (x, y1, y2 float64) bbs.valueBuffer.Enqueue(py) x = px - ay := seq.New(bbs.valueBuffer).Average() - std := seq.New(bbs.valueBuffer).StdDev() + ay := NewSeq(bbs.valueBuffer).Average() + std := NewSeq(bbs.valueBuffer).StdDev() y1 = ay + (bbs.GetK() * std) y2 = ay - (bbs.GetK() * std) @@ -101,15 +99,15 @@ func (bbs *BollingerBandsSeries) GetBoundedLastValues() (x, y1, y2 float64) { startAt = 0 } - vb := seq.NewBufferWithCapacity(period) + vb := NewValueBufferWithCapacity(period) for index := startAt; index < seriesLength; index++ { xn, yn := bbs.InnerSeries.GetValues(index) vb.Enqueue(yn) x = xn } - ay := seq.Seq{Provider: vb}.Average() - std := seq.Seq{Provider: vb}.StdDev() + ay := Seq{vb}.Average() + std := Seq{vb}.StdDev() y1 = ay + (bbs.GetK() * std) y2 = ay - (bbs.GetK() * std) diff --git a/bollinger_band_series_test.go b/bollinger_band_series_test.go index 92bb088..6afa71b 100644 --- a/bollinger_band_series_test.go +++ b/bollinger_band_series_test.go @@ -6,15 +6,14 @@ import ( "testing" "github.com/blend/go-sdk/assert" - "github.com/wcharczuk/go-chart/seq" ) func TestBollingerBandSeries(t *testing.T) { assert := assert.New(t) s1 := mockValuesProvider{ - X: seq.Range(1.0, 100.0), - Y: seq.RandomValuesWithMax(100, 1024), + X: SeqRange(1.0, 100.0), + Y: SeqRandomValuesWithMax(100, 1024), } bbs := &BollingerBandsSeries{ @@ -38,8 +37,8 @@ func TestBollingerBandLastValue(t *testing.T) { assert := assert.New(t) s1 := mockValuesProvider{ - X: seq.Range(1.0, 100.0), - Y: seq.Range(1.0, 100.0), + X: SeqRange(1.0, 100.0), + Y: SeqRange(1.0, 100.0), } bbs := &BollingerBandsSeries{ diff --git a/box.go b/box.go index c59ab69..9611ff9 100644 --- a/box.go +++ b/box.go @@ -3,8 +3,6 @@ package chart import ( "fmt" "math" - - util "github.com/wcharczuk/go-chart/util" ) var ( @@ -91,12 +89,12 @@ func (b Box) GetBottom(defaults ...int) int { // Width returns the width func (b Box) Width() int { - return util.Math.AbsInt(b.Right - b.Left) + return AbsInt(b.Right - b.Left) } // Height returns the height func (b Box) Height() int { - return util.Math.AbsInt(b.Bottom - b.Top) + return AbsInt(b.Bottom - b.Top) } // Center returns the center of the box @@ -148,10 +146,10 @@ func (b Box) Equals(other Box) bool { // Grow grows a box based on another box. func (b Box) Grow(other Box) Box { return Box{ - Top: util.Math.MinInt(b.Top, other.Top), - Left: util.Math.MinInt(b.Left, other.Left), - Right: util.Math.MaxInt(b.Right, other.Right), - Bottom: util.Math.MaxInt(b.Bottom, other.Bottom), + Top: MinInt(b.Top, other.Top), + Left: MinInt(b.Left, other.Left), + Right: MaxInt(b.Right, other.Right), + Bottom: MaxInt(b.Bottom, other.Bottom), } } @@ -222,10 +220,10 @@ func (b Box) Fit(other Box) Box { func (b Box) Constrain(other Box) Box { newBox := b.Clone() - newBox.Top = util.Math.MaxInt(newBox.Top, other.Top) - newBox.Left = util.Math.MaxInt(newBox.Left, other.Left) - newBox.Right = util.Math.MinInt(newBox.Right, other.Right) - newBox.Bottom = util.Math.MinInt(newBox.Bottom, other.Bottom) + newBox.Top = MaxInt(newBox.Top, other.Top) + newBox.Left = MaxInt(newBox.Left, other.Left) + newBox.Right = MinInt(newBox.Right, other.Right) + newBox.Bottom = MinInt(newBox.Bottom, other.Bottom) return newBox } @@ -264,36 +262,36 @@ type BoxCorners struct { // Box return the BoxCorners as a regular box. func (bc BoxCorners) Box() Box { return Box{ - Top: util.Math.MinInt(bc.TopLeft.Y, bc.TopRight.Y), - Left: util.Math.MinInt(bc.TopLeft.X, bc.BottomLeft.X), - Right: util.Math.MaxInt(bc.TopRight.X, bc.BottomRight.X), - Bottom: util.Math.MaxInt(bc.BottomLeft.Y, bc.BottomRight.Y), + Top: MinInt(bc.TopLeft.Y, bc.TopRight.Y), + Left: MinInt(bc.TopLeft.X, bc.BottomLeft.X), + Right: MaxInt(bc.TopRight.X, bc.BottomRight.X), + Bottom: MaxInt(bc.BottomLeft.Y, bc.BottomRight.Y), } } // Width returns the width func (bc BoxCorners) Width() int { - minLeft := util.Math.MinInt(bc.TopLeft.X, bc.BottomLeft.X) - maxRight := util.Math.MaxInt(bc.TopRight.X, bc.BottomRight.X) + minLeft := MinInt(bc.TopLeft.X, bc.BottomLeft.X) + maxRight := MaxInt(bc.TopRight.X, bc.BottomRight.X) return maxRight - minLeft } // Height returns the height func (bc BoxCorners) Height() int { - minTop := util.Math.MinInt(bc.TopLeft.Y, bc.TopRight.Y) - maxBottom := util.Math.MaxInt(bc.BottomLeft.Y, bc.BottomRight.Y) + minTop := MinInt(bc.TopLeft.Y, bc.TopRight.Y) + maxBottom := MaxInt(bc.BottomLeft.Y, bc.BottomRight.Y) return maxBottom - minTop } // Center returns the center of the box func (bc BoxCorners) Center() (x, y int) { - left := util.Math.MeanInt(bc.TopLeft.X, bc.BottomLeft.X) - right := util.Math.MeanInt(bc.TopRight.X, bc.BottomRight.X) + left := MeanInt(bc.TopLeft.X, bc.BottomLeft.X) + right := MeanInt(bc.TopRight.X, bc.BottomRight.X) x = ((right - left) >> 1) + left - top := util.Math.MeanInt(bc.TopLeft.Y, bc.TopRight.Y) - bottom := util.Math.MeanInt(bc.BottomLeft.Y, bc.BottomRight.Y) + top := MeanInt(bc.TopLeft.Y, bc.TopRight.Y) + bottom := MeanInt(bc.BottomLeft.Y, bc.BottomRight.Y) y = ((bottom - top) >> 1) + top return @@ -303,12 +301,12 @@ func (bc BoxCorners) Center() (x, y int) { func (bc BoxCorners) Rotate(thetaDegrees float64) BoxCorners { cx, cy := bc.Center() - thetaRadians := util.Math.DegreesToRadians(thetaDegrees) + thetaRadians := DegreesToRadians(thetaDegrees) - tlx, tly := util.Math.RotateCoordinate(cx, cy, bc.TopLeft.X, bc.TopLeft.Y, thetaRadians) - trx, try := util.Math.RotateCoordinate(cx, cy, bc.TopRight.X, bc.TopRight.Y, thetaRadians) - brx, bry := util.Math.RotateCoordinate(cx, cy, bc.BottomRight.X, bc.BottomRight.Y, thetaRadians) - blx, bly := util.Math.RotateCoordinate(cx, cy, bc.BottomLeft.X, bc.BottomLeft.Y, thetaRadians) + tlx, tly := RotateCoordinate(cx, cy, bc.TopLeft.X, bc.TopLeft.Y, thetaRadians) + trx, try := RotateCoordinate(cx, cy, bc.TopRight.X, bc.TopRight.Y, thetaRadians) + brx, bry := RotateCoordinate(cx, cy, bc.BottomRight.X, bc.BottomRight.Y, thetaRadians) + blx, bly := RotateCoordinate(cx, cy, bc.BottomLeft.X, bc.BottomLeft.Y, thetaRadians) return BoxCorners{ TopLeft: Point{tlx, tly}, diff --git a/chart.go b/chart.go index 1354bc0..986318a 100644 --- a/chart.go +++ b/chart.go @@ -7,7 +7,6 @@ import ( "math" "github.com/golang/freetype/truetype" - util "github.com/wcharczuk/go-chart/util" ) // Chart is what we're drawing. @@ -266,8 +265,8 @@ func (c Chart) getRanges() (xrange, yrange, yrangeAlt Range) { // only round if we're showing the axis if c.YAxis.Style.Show { delta := yrange.GetDelta() - roundTo := util.Math.GetRoundToForDelta(delta) - rmin, rmax := util.Math.RoundDown(yrange.GetMin(), roundTo), util.Math.RoundUp(yrange.GetMax(), roundTo) + roundTo := GetRoundToForDelta(delta) + rmin, rmax := RoundDown(yrange.GetMin(), roundTo), RoundUp(yrange.GetMax(), roundTo) yrange.SetMin(rmin) yrange.SetMax(rmax) @@ -288,8 +287,8 @@ func (c Chart) getRanges() (xrange, yrange, yrangeAlt Range) { if c.YAxisSecondary.Style.Show { delta := yrangeAlt.GetDelta() - roundTo := util.Math.GetRoundToForDelta(delta) - rmin, rmax := util.Math.RoundDown(yrangeAlt.GetMin(), roundTo), util.Math.RoundUp(yrangeAlt.GetMax(), roundTo) + roundTo := GetRoundToForDelta(delta) + rmin, rmax := RoundDown(yrangeAlt.GetMin(), roundTo), RoundUp(yrangeAlt.GetMax(), roundTo) yrangeAlt.SetMin(rmin) yrangeAlt.SetMax(rmax) } diff --git a/chart_test.go b/chart_test.go index e57f8ae..1f60c38 100644 --- a/chart_test.go +++ b/chart_test.go @@ -8,11 +8,9 @@ import ( "testing" "time" - "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/drawing" - "github.com/wcharczuk/go-chart/seq" ) func TestChartGetDPI(t *testing.T) { @@ -388,8 +386,8 @@ func TestChartRegressionBadRangesByUser(t *testing.T) { }, Series: []Series{ ContinuousSeries{ - XValues: seq.Range(1.0, 10.0), - YValues: seq.Range(1.0, 10.0), + XValues: SeqRange(1.0, 10.0), + YValues: SeqRange(1.0, 10.0), }, }, } @@ -404,8 +402,8 @@ func TestChartValidatesSeries(t *testing.T) { c := Chart{ Series: []Series{ ContinuousSeries{ - XValues: seq.Range(1.0, 10.0), - YValues: seq.Range(1.0, 10.0), + XValues: SeqRange(1.0, 10.0), + YValues: SeqRange(1.0, 10.0), }, }, } @@ -415,7 +413,7 @@ func TestChartValidatesSeries(t *testing.T) { c = Chart{ Series: []Series{ ContinuousSeries{ - XValues: seq.Range(1.0, 10.0), + XValues: SeqRange(1.0, 10.0), }, }, } diff --git a/cmd/chart/main.go b/cmd/chart/main.go new file mode 100644 index 0000000..9ad23d3 --- /dev/null +++ b/cmd/chart/main.go @@ -0,0 +1,137 @@ +package main + +import ( + "flag" + "fmt" + "io" + "io/ioutil" + "os" + "time" + + chart "github.com/wcharczuk/go-chart" +) + +var ( + outputPath = flag.String("output", "", "The output file") + disableLinreg = flag.Bool("disable-linreg", false, "If we should omit linear regressions") + disableLastValues = flag.Bool("disable-last-values", false, "If we should omit last values") +) + +// NewLogger returns a new logger. +func NewLogger() *Logger { + return &Logger{ + TimeFormat: time.RFC3339Nano, + Stdout: os.Stdout, + Stderr: os.Stderr, + } +} + +// Logger is a basic logger. +type Logger struct { + TimeFormat string + Stdout io.Writer + Stderr io.Writer +} + +// Info writes an info message. +func (l *Logger) Info(arguments ...interface{}) { + l.Println(append([]interface{}{"[INFO]"}, arguments...)...) +} + +// Infof writes an info message. +func (l *Logger) Infof(format string, arguments ...interface{}) { + l.Println(append([]interface{}{"[INFO]"}, fmt.Sprintf(format, arguments...))...) +} + +// Debug writes an debug message. +func (l *Logger) Debug(arguments ...interface{}) { + l.Println(append([]interface{}{"[DEBUG]"}, arguments...)...) +} + +// Debugf writes an debug message. +func (l *Logger) Debugf(format string, arguments ...interface{}) { + l.Println(append([]interface{}{"[DEBUG]"}, fmt.Sprintf(format, arguments...))...) +} + +// Error writes an error message. +func (l *Logger) Error(arguments ...interface{}) { + l.Println(append([]interface{}{"[ERROR]"}, arguments...)...) +} + +// Errorf writes an error message. +func (l *Logger) Errorf(format string, arguments ...interface{}) { + l.Println(append([]interface{}{"[ERROR]"}, fmt.Sprintf(format, arguments...))...) +} + +// Err writes an error message. +func (l *Logger) Err(err error) { + if err != nil { + l.Println(append([]interface{}{"[ERROR]"}, err.Error())...) + } +} + +// FatalErr writes an error message and exits. +func (l *Logger) FatalErr(err error) { + if err != nil { + l.Println(append([]interface{}{"[FATAL]"}, err.Error())...) + os.Exit(1) + } +} + +// Println prints a new message. +func (l *Logger) Println(arguments ...interface{}) { + fmt.Fprintln(l.Stdout, append([]interface{}{time.Now().UTC().Format(l.TimeFormat)}, arguments...)...) +} + +// Errorln prints a new message. +func (l *Logger) Errorln(arguments ...interface{}) { + fmt.Fprintln(l.Stderr, append([]interface{}{time.Now().UTC().Format(l.TimeFormat)}, arguments...)...) +} + +func main() { + log := NewLogger() + + rawData, err := ioutil.ReadAll(os.Stdin) + if err != nil { + log.FatalErr(err) + } + + csvParts := chart.SplitCSV(string(rawData)) + + yvalues, err := chart.ParseFloats(csvParts...) + + mainSeries := chart.ContinuousSeries{ + Name: "A test series", + XValues: chart.SeqRange(0, float64(len(csvParts))), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. + YValues: yvalues, + } + + linRegSeries := &chart.LinearRegressionSeries{ + InnerSeries: mainSeries, + } + + graph := chart.Chart{ + Series: []chart.Series{ + mainSeries, + linRegSeries, + }, + } + + var output *os.File + if *outputPath != "" { + output, err = os.Create(*outputPath) + if err != nil { + log.FatalErr(err) + } + } else { + output, err = ioutil.TempFile("", "*.png") + if err != nil { + log.FatalErr(err) + } + } + + log.Info("rendering chart to", output.Name()) + if err := graph.Render(chart.PNG, output); err != nil { + log.FatalErr(err) + } +} diff --git a/concat_series_test.go b/concat_series_test.go index 3b661f7..2052bd5 100644 --- a/concat_series_test.go +++ b/concat_series_test.go @@ -4,25 +4,24 @@ import ( "testing" assert "github.com/blend/go-sdk/assert" - "github.com/wcharczuk/go-chart/seq" ) func TestConcatSeries(t *testing.T) { assert := assert.New(t) s1 := ContinuousSeries{ - XValues: seq.Range(1.0, 10.0), - YValues: seq.Range(1.0, 10.0), + XValues: SeqRange(1.0, 10.0), + YValues: SeqRange(1.0, 10.0), } s2 := ContinuousSeries{ - XValues: seq.Range(11, 20.0), - YValues: seq.Range(10.0, 1.0), + XValues: SeqRange(11, 20.0), + YValues: SeqRange(10.0, 1.0), } s3 := ContinuousSeries{ - XValues: seq.Range(21, 30.0), - YValues: seq.Range(1.0, 10.0), + XValues: SeqRange(21, 30.0), + YValues: SeqRange(1.0, 10.0), } cs := ConcatSeries([]Series{s1, s2, s3}) diff --git a/continuous_range_test.go b/continuous_range_test.go index 0543971..07079f9 100644 --- a/continuous_range_test.go +++ b/continuous_range_test.go @@ -4,14 +4,13 @@ import ( "testing" "github.com/blend/go-sdk/assert" - "github.com/wcharczuk/go-chart/util" ) func TestRangeTranslate(t *testing.T) { assert := assert.New(t) values := []float64{1.0, 2.0, 2.5, 2.7, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0} r := ContinuousRange{Domain: 1000} - r.Min, r.Max = util.Math.MinAndMax(values...) + r.Min, r.Max = MinMax(values...) // delta = ~7.0 // value = ~5.0 diff --git a/continuous_series_test.go b/continuous_series_test.go index f8b1ee6..2ae3928 100644 --- a/continuous_series_test.go +++ b/continuous_series_test.go @@ -5,7 +5,6 @@ import ( "testing" assert "github.com/blend/go-sdk/assert" - "github.com/wcharczuk/go-chart/seq" ) func TestContinuousSeries(t *testing.T) { @@ -13,8 +12,8 @@ func TestContinuousSeries(t *testing.T) { cs := ContinuousSeries{ Name: "Test Series", - XValues: seq.Range(1.0, 10.0), - YValues: seq.Range(1.0, 10.0), + XValues: SeqRange(1.0, 10.0), + YValues: SeqRange(1.0, 10.0), } assert.Equal("Test Series", cs.GetName()) @@ -54,20 +53,20 @@ func TestContinuousSeriesValidate(t *testing.T) { cs := ContinuousSeries{ Name: "Test Series", - XValues: seq.Range(1.0, 10.0), - YValues: seq.Range(1.0, 10.0), + XValues: SeqRange(1.0, 10.0), + YValues: SeqRange(1.0, 10.0), } assert.Nil(cs.Validate()) cs = ContinuousSeries{ Name: "Test Series", - XValues: seq.Range(1.0, 10.0), + XValues: SeqRange(1.0, 10.0), } assert.NotNil(cs.Validate()) cs = ContinuousSeries{ Name: "Test Series", - YValues: seq.Range(1.0, 10.0), + YValues: SeqRange(1.0, 10.0), } assert.NotNil(cs.Validate()) } diff --git a/draw.go b/draw.go index ef79dc6..9267142 100644 --- a/draw.go +++ b/draw.go @@ -2,8 +2,6 @@ package chart import ( "math" - - util "github.com/wcharczuk/go-chart/util" ) var ( @@ -40,8 +38,8 @@ func (d draw) LineSeries(r Renderer, canvasBox Box, xrange, yrange Range, style y = cb - yrange.Translate(vy) r.LineTo(x, y) } - r.LineTo(x, util.Math.MinInt(cb, cb-yv0)) - r.LineTo(x0, util.Math.MinInt(cb, cb-yv0)) + r.LineTo(x, MinInt(cb, cb-yv0)) + r.LineTo(x0, MinInt(cb, cb-yv0)) r.LineTo(x0, y0) r.Fill() } diff --git a/fileutil.go b/fileutil.go new file mode 100644 index 0000000..0b832e2 --- /dev/null +++ b/fileutil.go @@ -0,0 +1,51 @@ +package chart + +import ( + "bufio" + "io" + "os" + + "github.com/blend/go-sdk/exception" +) + +// ReadLines reads a file and calls the handler for each line. +func ReadLines(filePath string, handler func(string) error) error { + f, err := os.Open(filePath) + if err != nil { + return exception.New(err) + } + defer f.Close() + + scanner := bufio.NewScanner(f) + for scanner.Scan() { + line := scanner.Text() + err = handler(line) + if err != nil { + return exception.New(err) + } + } + return nil +} + +// ReadChunks reads a file in `chunkSize` pieces, dispatched to the handler. +func ReadChunks(filePath string, chunkSize int, handler func([]byte) error) error { + f, err := os.Open(filePath) + if err != nil { + return exception.New(err) + } + defer f.Close() + + chunk := make([]byte, chunkSize) + for { + readBytes, err := f.Read(chunk) + if err == io.EOF { + break + } + readData := chunk[:readBytes] + err = handler(readData) + if err != nil { + return exception.New(err) + } + } + return nil +} diff --git a/legend.go b/legend.go index 42c11a3..171c869 100644 --- a/legend.go +++ b/legend.go @@ -2,7 +2,6 @@ package chart import ( "github.com/wcharczuk/go-chart/drawing" - "github.com/wcharczuk/go-chart/util" ) // Legend returns a legend renderable function. @@ -69,7 +68,7 @@ func Legend(c *Chart, userDefaults ...Style) Renderable { } legendContent.Bottom += tb.Height() right := legendContent.Left + tb.Width() + lineTextGap + lineLengthMinimum - legendContent.Right = util.Math.MaxInt(legendContent.Right, right) + legendContent.Right = MaxInt(legendContent.Right, right) labelCount++ } } @@ -164,8 +163,8 @@ func LegendThin(c *Chart, userDefaults ...Style) Renderable { for x := 0; x < len(labels); x++ { if len(labels[x]) > 0 { textBox = r.MeasureText(labels[x]) - textHeight = util.Math.MaxInt(textBox.Height(), textHeight) - textWidth = util.Math.MaxInt(textBox.Width(), textWidth) + textHeight = MaxInt(textBox.Height(), textHeight) + textWidth = MaxInt(textBox.Width(), textWidth) } } @@ -281,7 +280,7 @@ func LegendLeft(c *Chart, userDefaults ...Style) Renderable { } legendContent.Bottom += tb.Height() right := legendContent.Left + tb.Width() + lineTextGap + lineLengthMinimum - legendContent.Right = util.Math.MaxInt(legendContent.Right, right) + legendContent.Right = MaxInt(legendContent.Right, right) labelCount++ } } diff --git a/linear_regression_series.go b/linear_regression_series.go index ae5253c..8ff8b1a 100644 --- a/linear_regression_series.go +++ b/linear_regression_series.go @@ -2,9 +2,6 @@ package chart import ( "fmt" - - "github.com/wcharczuk/go-chart/seq" - util "github.com/wcharczuk/go-chart/util" ) // Interface Assertions. @@ -62,7 +59,7 @@ func (lrs LinearRegressionSeries) GetYAxis() YAxisType { // Len returns the number of elements in the series. func (lrs LinearRegressionSeries) Len() int { - return util.Math.MinInt(lrs.GetLimit(), lrs.InnerSeries.Len()-lrs.GetOffset()) + return MinInt(lrs.GetLimit(), lrs.InnerSeries.Len()-lrs.GetOffset()) } // GetLimit returns the window size. @@ -77,7 +74,7 @@ func (lrs LinearRegressionSeries) GetLimit() int { func (lrs LinearRegressionSeries) GetEndIndex() int { windowEnd := lrs.GetOffset() + lrs.GetLimit() innerSeriesLastIndex := lrs.InnerSeries.Len() - 1 - return util.Math.MinInt(windowEnd, innerSeriesLastIndex) + return MinInt(windowEnd, innerSeriesLastIndex) } // GetOffset returns the data offset. @@ -97,7 +94,7 @@ func (lrs *LinearRegressionSeries) GetValues(index int) (x, y float64) { lrs.computeCoefficients() } offset := lrs.GetOffset() - effectiveIndex := util.Math.MinInt(index+offset, lrs.InnerSeries.Len()) + effectiveIndex := MinInt(index+offset, lrs.InnerSeries.Len()) x, y = lrs.InnerSeries.GetValues(effectiveIndex) y = (lrs.m * lrs.normalize(x)) + lrs.b return @@ -164,14 +161,14 @@ func (lrs *LinearRegressionSeries) computeCoefficients() { p := float64(endIndex - startIndex) - xvalues := seq.NewBufferWithCapacity(lrs.Len()) + xvalues := NewValueBufferWithCapacity(lrs.Len()) for index := startIndex; index < endIndex; index++ { x, _ := lrs.InnerSeries.GetValues(index) xvalues.Enqueue(x) } - lrs.avgx = seq.Seq{Provider: xvalues}.Average() - lrs.stddevx = seq.Seq{Provider: xvalues}.StdDev() + lrs.avgx = Seq{xvalues}.Average() + lrs.stddevx = Seq{xvalues}.StdDev() var sumx, sumy, sumxx, sumxy float64 for index := startIndex; index < endIndex; index++ { diff --git a/util/math.go b/mathutil.go similarity index 55% rename from util/math.go rename to mathutil.go index c064809..d1f07f9 100644 --- a/util/math.go +++ b/mathutil.go @@ -1,8 +1,6 @@ -package util +package chart -import ( - "math" -) +import "math" const ( _pi = math.Pi @@ -18,182 +16,86 @@ const ( _r2d = (180.0 / math.Pi) ) -var ( - // Math contains helper methods for common math operations. - Math = &mathUtil{} -) - -type mathUtil struct{} - -// Max returns the maximum value of a group of floats. -func (m mathUtil) Max(values ...float64) float64 { - if len(values) == 0 { - return 0 - } - max := values[0] - for _, v := range values { - if max < v { - max = v - } - } - return max -} - -// MinAndMax returns both the min and max in one pass. -func (m mathUtil) MinAndMax(values ...float64) (min float64, max float64) { +// MinMax returns the minimum and maximum of a given set of values. +func MinMax(values ...float64) (min, max float64) { if len(values) == 0 { return } - min = values[0] + max = values[0] - for _, v := range values[1:] { - if max < v { - max = v + min = values[0] + var value float64 + for index := 1; index < len(values); index++ { + value = values[index] + if value < min { + min = value } - if min > v { - min = v + if value > max { + max = value } } return } -// GetRoundToForDelta returns a `roundTo` value for a given delta. -func (m mathUtil) GetRoundToForDelta(delta float64) float64 { - startingDeltaBound := math.Pow(10.0, 10.0) - for cursor := startingDeltaBound; cursor > 0; cursor /= 10.0 { - if delta > cursor { - return cursor / 10.0 +// MinInt returns the minimum int. +func MinInt(values ...int) (min int) { + if len(values) == 0 { + return + } + + min = values[0] + var value int + for index := 1; index < len(values); index++ { + value = values[index] + if value < min { + min = value } } - - return 0.0 + return } -// RoundUp rounds up to a given roundTo value. -func (m mathUtil) RoundUp(value, roundTo float64) float64 { - if roundTo < 0.000000000000001 { - return value +// MaxInt returns the maximum int. +func MaxInt(values ...int) (max int) { + if len(values) == 0 { + return } - d1 := math.Ceil(value / roundTo) - return d1 * roundTo -} -// RoundDown rounds down to a given roundTo value. -func (m mathUtil) RoundDown(value, roundTo float64) float64 { - if roundTo < 0.000000000000001 { - return value - } - d1 := math.Floor(value / roundTo) - return d1 * roundTo -} - -// Normalize returns a set of numbers on the interval [0,1] for a given set of inputs. -// An example: 4,3,2,1 => 0.4, 0.3, 0.2, 0.1 -// Caveat; the total may be < 1.0; there are going to be issues with irrational numbers etc. -func (m mathUtil) Normalize(values ...float64) []float64 { - var total float64 - for _, v := range values { - total += v - } - output := make([]float64, len(values)) - for x, v := range values { - output[x] = m.RoundDown(v/total, 0.0001) - } - return output -} - -// MinInt returns the minimum of a set of integers. -func (m mathUtil) MinInt(values ...int) int { - min := math.MaxInt32 - for _, v := range values { - if v < min { - min = v + max = values[0] + var value int + for index := 1; index < len(values); index++ { + value = values[index] + if value > max { + max = value } } - return min + return } -// MaxInt returns the maximum of a set of integers. -func (m mathUtil) MaxInt(values ...int) int { - max := math.MinInt32 - for _, v := range values { - if v > max { - max = v - } - } - return max -} - -// AbsInt returns the absolute value of an integer. -func (m mathUtil) AbsInt(value int) int { +// AbsInt returns the absolute value of an int. +func AbsInt(value int) int { if value < 0 { return -value } return value } -// AbsInt64 returns the absolute value of a long. -func (m mathUtil) AbsInt64(value int64) int64 { - if value < 0 { - return -value - } - return value -} - -// Mean returns the mean of a set of values -func (m mathUtil) Mean(values ...float64) float64 { - return m.Sum(values...) / float64(len(values)) -} - -// MeanInt returns the mean of a set of integer values. -func (m mathUtil) MeanInt(values ...int) int { - return m.SumInt(values...) / len(values) -} - -// Sum sums a set of values. -func (m mathUtil) Sum(values ...float64) float64 { - var total float64 - for _, v := range values { - total += v - } - return total -} - -// SumInt sums a set of values. -func (m mathUtil) SumInt(values ...int) int { - var total int - for _, v := range values { - total += v - } - return total -} - -// PercentDifference computes the percentage difference between two values. -// The formula is (v2-v1)/v1. -func (m mathUtil) PercentDifference(v1, v2 float64) float64 { - if v1 == 0 { - return 0 - } - return (v2 - v1) / v1 -} - // DegreesToRadians returns degrees as radians. -func (m mathUtil) DegreesToRadians(degrees float64) float64 { +func DegreesToRadians(degrees float64) float64 { return degrees * _d2r } // RadiansToDegrees translates a radian value to a degree value. -func (m mathUtil) RadiansToDegrees(value float64) float64 { +func RadiansToDegrees(value float64) float64 { return math.Mod(value, _2pi) * _r2d } // PercentToRadians converts a normalized value (0,1) to radians. -func (m mathUtil) PercentToRadians(pct float64) float64 { - return m.DegreesToRadians(360.0 * pct) +func PercentToRadians(pct float64) float64 { + return DegreesToRadians(360.0 * pct) } // RadianAdd adds a delta to a base in radians. -func (m mathUtil) RadianAdd(base, delta float64) float64 { +func RadianAdd(base, delta float64) float64 { value := base + delta if value > _2pi { return math.Mod(value, _2pi) @@ -204,7 +106,7 @@ func (m mathUtil) RadianAdd(base, delta float64) float64 { } // DegreesAdd adds a delta to a base in radians. -func (m mathUtil) DegreesAdd(baseDegrees, deltaDegrees float64) float64 { +func DegreesAdd(baseDegrees, deltaDegrees float64) float64 { value := baseDegrees + deltaDegrees if value > _2pi { return math.Mod(value, 360.0) @@ -215,19 +117,20 @@ func (m mathUtil) DegreesAdd(baseDegrees, deltaDegrees float64) float64 { } // DegreesToCompass returns the degree value in compass / clock orientation. -func (m mathUtil) DegreesToCompass(deg float64) float64 { - return m.DegreesAdd(deg, -90.0) +func DegreesToCompass(deg float64) float64 { + return DegreesAdd(deg, -90.0) } // CirclePoint returns the absolute position of a circle diameter point given // by the radius and the theta. -func (m mathUtil) CirclePoint(cx, cy int, radius, thetaRadians float64) (x, y int) { +func CirclePoint(cx, cy int, radius, thetaRadians float64) (x, y int) { x = cx + int(radius*math.Sin(thetaRadians)) y = cy - int(radius*math.Cos(thetaRadians)) return } -func (m mathUtil) RotateCoordinate(cx, cy, x, y int, thetaRadians float64) (rx, ry int) { +// RotateCoordinate rotates a coordinate around a given center by a theta in radians. +func RotateCoordinate(cx, cy, x, y int, thetaRadians float64) (rx, ry int) { tempX, tempY := float64(x-cx), float64(y-cy) rotatedX := tempX*math.Cos(thetaRadians) - tempY*math.Sin(thetaRadians) rotatedY := tempX*math.Sin(thetaRadians) + tempY*math.Cos(thetaRadians) @@ -235,3 +138,115 @@ func (m mathUtil) RotateCoordinate(cx, cy, x, y int, thetaRadians float64) (rx, ry = int(rotatedY) + cy return } + +// RoundUp rounds up to a given roundTo value. +func RoundUp(value, roundTo float64) float64 { + if roundTo < 0.000000000000001 { + return value + } + d1 := math.Ceil(value / roundTo) + return d1 * roundTo +} + +// RoundDown rounds down to a given roundTo value. +func RoundDown(value, roundTo float64) float64 { + if roundTo < 0.000000000000001 { + return value + } + d1 := math.Floor(value / roundTo) + return d1 * roundTo +} + +// Normalize returns a set of numbers on the interval [0,1] for a given set of inputs. +// An example: 4,3,2,1 => 0.4, 0.3, 0.2, 0.1 +// Caveat; the total may be < 1.0; there are going to be issues with irrational numbers etc. +func Normalize(values ...float64) []float64 { + var total float64 + for _, v := range values { + total += v + } + output := make([]float64, len(values)) + for x, v := range values { + output[x] = RoundDown(v/total, 0.0001) + } + return output +} + +// Mean returns the mean of a set of values +func Mean(values ...float64) float64 { + return Sum(values...) / float64(len(values)) +} + +// MeanInt returns the mean of a set of integer values. +func MeanInt(values ...int) int { + return SumInt(values...) / len(values) +} + +// Sum sums a set of values. +func Sum(values ...float64) float64 { + var total float64 + for _, v := range values { + total += v + } + return total +} + +// SumInt sums a set of values. +func SumInt(values ...int) int { + var total int + for _, v := range values { + total += v + } + return total +} + +// PercentDifference computes the percentage difference between two values. +// The formula is (v2-v1)/v1. +func PercentDifference(v1, v2 float64) float64 { + if v1 == 0 { + return 0 + } + return (v2 - v1) / v1 +} + +// GetRoundToForDelta returns a `roundTo` value for a given delta. +func GetRoundToForDelta(delta float64) float64 { + startingDeltaBound := math.Pow(10.0, 10.0) + for cursor := startingDeltaBound; cursor > 0; cursor /= 10.0 { + if delta > cursor { + return cursor / 10.0 + } + } + + return 0.0 +} + +// RoundPlaces rounds an input to a given places. +func RoundPlaces(input float64, places int) (rounded float64) { + if math.IsNaN(input) { + return 0.0 + } + + sign := 1.0 + if input < 0 { + sign = -1 + input *= -1 + } + + precision := math.Pow(10, float64(places)) + digit := input * precision + _, decimal := math.Modf(digit) + + if decimal >= 0.5 { + rounded = math.Ceil(digit) + } else { + rounded = math.Floor(digit) + } + + return rounded / precision * sign +} + +func f64i(value float64) int { + r := RoundPlaces(value, 0) + return int(r) +} diff --git a/parse.go b/parse.go new file mode 100644 index 0000000..2d0f836 --- /dev/null +++ b/parse.go @@ -0,0 +1,36 @@ +package chart + +import ( + "strconv" + "time" + + "github.com/blend/go-sdk/exception" +) + +// ParseFloats parses a list of floats. +func ParseFloats(values ...string) ([]float64, error) { + var output []float64 + var parsedValue float64 + var err error + for _, value := range values { + if parsedValue, err = strconv.ParseFloat(value, 64); err != nil { + return nil, exception.New(err) + } + output = append(output, parsedValue) + } + return output, nil +} + +// ParseTimes parses a list of times with a given format. +func ParseTimes(layout string, values ...string) ([]time.Time, error) { + var output []time.Time + var parsedValue time.Time + var err error + for _, value := range values { + if parsedValue, err = time.Parse(layout, value); err != nil { + return nil, exception.New(err) + } + output = append(output, parsedValue) + } + return output, nil +} diff --git a/pie_chart.go b/pie_chart.go index cb8cd07..426ed50 100644 --- a/pie_chart.go +++ b/pie_chart.go @@ -4,16 +4,8 @@ import ( "errors" "fmt" "io" - "math" "github.com/golang/freetype/truetype" - "github.com/wcharczuk/go-chart/util" -) - -const ( - _pi = math.Pi - _pi2 = math.Pi / 2.0 - _pi4 = math.Pi / 4.0 ) // PieChart is a chart that draws sections of a circle based on percentages. @@ -131,7 +123,7 @@ func (pc PieChart) drawTitle(r Renderer) { func (pc PieChart) drawSlices(r Renderer, canvasBox Box, values []Value) { cx, cy := canvasBox.Center() - diameter := util.Math.MinInt(canvasBox.Width(), canvasBox.Height()) + diameter := MinInt(canvasBox.Width(), canvasBox.Height()) radius := float64(diameter >> 1) labelRadius := (radius * 2.0) / 3.0 @@ -148,8 +140,8 @@ func (pc PieChart) drawSlices(r Renderer, canvasBox Box, values []Value) { v.Style.InheritFrom(pc.stylePieChartValue(index)).WriteToRenderer(r) r.MoveTo(cx, cy) - rads = util.Math.PercentToRadians(total) - delta = util.Math.PercentToRadians(v.Value) + rads = PercentToRadians(total) + delta = PercentToRadians(v.Value) r.ArcTo(cx, cy, radius, radius, rads, delta) @@ -165,9 +157,9 @@ func (pc PieChart) drawSlices(r Renderer, canvasBox Box, values []Value) { for index, v := range values { v.Style.InheritFrom(pc.stylePieChartValue(index)).WriteToRenderer(r) if len(v.Label) > 0 { - delta2 = util.Math.PercentToRadians(total + (v.Value / 2.0)) - delta2 = util.Math.RadianAdd(delta2, _pi2) - lx, ly = util.Math.CirclePoint(cx, cy, labelRadius, delta2) + delta2 = PercentToRadians(total + (v.Value / 2.0)) + delta2 = RadianAdd(delta2, _pi2) + lx, ly = CirclePoint(cx, cy, labelRadius, delta2) tb := r.MeasureText(v.Label) lx = lx - (tb.Width() >> 1) @@ -199,7 +191,7 @@ func (pc PieChart) getDefaultCanvasBox() Box { } func (pc PieChart) getCircleAdjustedCanvasBox(canvasBox Box) Box { - circleDiameter := util.Math.MinInt(canvasBox.Width(), canvasBox.Height()) + circleDiameter := MinInt(canvasBox.Width(), canvasBox.Height()) square := Box{ Right: circleDiameter, @@ -245,7 +237,7 @@ func (pc PieChart) stylePieChartValue(index int) Style { } func (pc PieChart) getScaledFontSize() float64 { - effectiveDimension := util.Math.MinInt(pc.GetWidth(), pc.GetHeight()) + effectiveDimension := MinInt(pc.GetWidth(), pc.GetHeight()) if effectiveDimension >= 2048 { return 48.0 } else if effectiveDimension >= 1024 { @@ -284,7 +276,7 @@ func (pc PieChart) styleDefaultsTitle() Style { } func (pc PieChart) getTitleFontSize() float64 { - effectiveDimension := util.Math.MinInt(pc.GetWidth(), pc.GetHeight()) + effectiveDimension := MinInt(pc.GetWidth(), pc.GetHeight()) if effectiveDimension >= 2048 { return 48 } else if effectiveDimension >= 1024 { diff --git a/polynomial_regression_series.go b/polynomial_regression_series.go index bf39af0..ec12025 100644 --- a/polynomial_regression_series.go +++ b/polynomial_regression_series.go @@ -5,7 +5,6 @@ import ( "math" "github.com/wcharczuk/go-chart/matrix" - util "github.com/wcharczuk/go-chart/util" ) // Interface Assertions. @@ -47,7 +46,7 @@ func (prs PolynomialRegressionSeries) GetYAxis() YAxisType { // Len returns the number of elements in the series. func (prs PolynomialRegressionSeries) Len() int { - return util.Math.MinInt(prs.GetLimit(), prs.InnerSeries.Len()-prs.GetOffset()) + return MinInt(prs.GetLimit(), prs.InnerSeries.Len()-prs.GetOffset()) } // GetLimit returns the window size. @@ -62,7 +61,7 @@ func (prs PolynomialRegressionSeries) GetLimit() int { func (prs PolynomialRegressionSeries) GetEndIndex() int { windowEnd := prs.GetOffset() + prs.GetLimit() innerSeriesLastIndex := prs.InnerSeries.Len() - 1 - return util.Math.MinInt(windowEnd, innerSeriesLastIndex) + return MinInt(windowEnd, innerSeriesLastIndex) } // GetOffset returns the data offset. @@ -102,7 +101,7 @@ func (prs *PolynomialRegressionSeries) GetValues(index int) (x, y float64) { } offset := prs.GetOffset() - effectiveIndex := util.Math.MinInt(index+offset, prs.InnerSeries.Len()) + effectiveIndex := MinInt(index+offset, prs.InnerSeries.Len()) x, y = prs.InnerSeries.GetValues(effectiveIndex) y = prs.apply(x) return diff --git a/raster_renderer.go b/raster_renderer.go index 18b4fef..1368641 100644 --- a/raster_renderer.go +++ b/raster_renderer.go @@ -8,7 +8,6 @@ import ( "github.com/golang/freetype/truetype" "github.com/wcharczuk/go-chart/drawing" - "github.com/wcharczuk/go-chart/util" ) // PNG returns a new png/raster renderer. @@ -50,8 +49,7 @@ func (rr *rasterRenderer) SetDPI(dpi float64) { } // SetClassName implements the interface method. However, PNGs have no classes. -func (vr *rasterRenderer) SetClassName(_ string) { -} +func (rr *rasterRenderer) SetClassName(_ string) {} // SetStrokeColor implements the interface method. func (rr *rasterRenderer) SetStrokeColor(c drawing.Color) { @@ -196,7 +194,7 @@ func (rr *rasterRenderer) MeasureText(body string) Box { return textBox } - return textBox.Corners().Rotate(util.Math.RadiansToDegrees(*rr.rotateRadians)).Box() + return textBox.Corners().Rotate(RadiansToDegrees(*rr.rotateRadians)).Box() } // SetTextRotation sets a text rotation. diff --git a/seq/seq.go b/seq.go similarity index 50% rename from seq/seq.go rename to seq.go index dfc369a..7e493e0 100644 --- a/seq/seq.go +++ b/seq.go @@ -1,33 +1,25 @@ -package seq +package chart import ( "math" "sort" + "time" + + "github.com/blend/go-sdk/timeutil" ) -// New wraps a provider with a seq. -func New(provider Provider) Seq { - return Seq{Provider: provider} -} - -// Values returns a new seq composed of a given set of values. -func Values(values ...float64) Seq { - return Seq{Provider: Array(values)} -} - -// Provider is a provider for values for a seq. -type Provider interface { - Len() int - GetValue(int) float64 +// NewSeq wraps a provider with a seq. +func NewSeq(provider SeqProvider) Seq { + return Seq{SeqProvider: provider} } // Seq is a utility wrapper for seq providers. type Seq struct { - Provider + SeqProvider } -// Array enumerates the seq into a slice. -func (s Seq) Array() (output []float64) { +// Values enumerates the seq into a slice. +func (s Seq) Values() (output []float64) { if s.Len() == 0 { return } @@ -53,7 +45,7 @@ func (s Seq) Map(mapfn func(i int, v float64) float64) Seq { for i := 0; i < s.Len(); i++ { mapfn(i, s.GetValue(i)) } - return Seq{Array(output)} + return Seq{SeqArray(output)} } // FoldLeft collapses a seq from left to right. @@ -148,9 +140,9 @@ func (s Seq) Sort() Seq { if s.Len() == 0 { return s } - values := s.Array() + values := s.Values() sort.Float64s(values) - return Seq{Provider: Array(values)} + return Seq{SeqArray(values)} } // Median returns the median or middle value in the sorted seq. @@ -255,5 +247,160 @@ func (s Seq) Normalize() Seq { output[i] = (s.GetValue(i) - min) / delta } - return Seq{Provider: Array(output)} + return Seq{SeqProvider: SeqArray(output)} +} + +// SeqProvider is a provider for values for a seq. +type SeqProvider interface { + Len() int + GetValue(int) float64 +} + +// SeqArray is a wrapper for an array of floats that implements `ValuesProvider`. +type SeqArray []float64 + +// Len returns the value provider length. +func (a SeqArray) Len() int { + return len(a) +} + +// GetValue returns the value at a given index. +func (a SeqArray) GetValue(index int) float64 { + return a[index] +} + +// SeqDays generates a seq of timestamps by day, from -days to today. +func SeqDays(days int) []time.Time { + var values []time.Time + for day := days; day >= 0; day-- { + values = append(values, time.Now().AddDate(0, 0, -day)) + } + return values +} + +// SeqHours returns a sequence of times by the hour for a given number of hours +// after a given start. +func SeqHours(start time.Time, totalHours int) []time.Time { + times := make([]time.Time, totalHours) + + last := start + for i := 0; i < totalHours; i++ { + times[i] = last + last = last.Add(time.Hour) + } + + return times +} + +// SeqHoursFilled adds zero values for the data bounded by the start and end of the xdata array. +func SeqHoursFilled(xdata []time.Time, ydata []float64) ([]time.Time, []float64) { + start, end := TimeMinMax(xdata...) + totalHours := DiffHours(start, end) + + finalTimes := SeqHours(start, totalHours+1) + finalValues := make([]float64, totalHours+1) + + var hoursFromStart int + for i, xd := range xdata { + hoursFromStart = DiffHours(start, xd) + finalValues[hoursFromStart] = ydata[i] + } + + return finalTimes, finalValues +} + +// Assert types implement interfaces. +var ( + _ SeqProvider = (*SeqTimes)(nil) +) + +// SeqTimes are an array of times. +// It wraps the array with methods that implement `seq.Provider`. +type SeqTimes []time.Time + +// Array returns the times to an array. +func (t SeqTimes) Array() []time.Time { + return []time.Time(t) +} + +// Len returns the length of the array. +func (t SeqTimes) Len() int { + return len(t) +} + +// GetValue returns a value at an index as a time. +func (t SeqTimes) GetValue(index int) float64 { + return timeutil.ToFloat64(t[index]) +} + +// SeqRange returns the array values of a linear seq with a given start, end and optional step. +func SeqRange(start, end float64) []float64 { + return Seq{NewSeqLinear().WithStart(start).WithEnd(end).WithStep(1.0)}.Values() +} + +// SeqRangeWithStep returns the array values of a linear seq with a given start, end and optional step. +func SeqRangeWithStep(start, end, step float64) []float64 { + return Seq{NewSeqLinear().WithStart(start).WithEnd(end).WithStep(step)}.Values() +} + +// NewSeqLinear returns a new linear generator. +func NewSeqLinear() *SeqLinear { + return &SeqLinear{step: 1.0} +} + +// SeqLinear is a stepwise generator. +type SeqLinear struct { + start float64 + end float64 + step float64 +} + +// Start returns the start value. +func (lg SeqLinear) Start() float64 { + return lg.start +} + +// End returns the end value. +func (lg SeqLinear) End() float64 { + return lg.end +} + +// Step returns the step value. +func (lg SeqLinear) Step() float64 { + return lg.step +} + +// Len returns the number of elements in the seq. +func (lg SeqLinear) Len() int { + if lg.start < lg.end { + return int((lg.end-lg.start)/lg.step) + 1 + } + return int((lg.start-lg.end)/lg.step) + 1 +} + +// GetValue returns the value at a given index. +func (lg SeqLinear) GetValue(index int) float64 { + fi := float64(index) + if lg.start < lg.end { + return lg.start + (fi * lg.step) + } + return lg.start - (fi * lg.step) +} + +// WithStart sets the start and returns the linear generator. +func (lg *SeqLinear) WithStart(start float64) *SeqLinear { + lg.start = start + return lg +} + +// WithEnd sets the end and returns the linear generator. +func (lg *SeqLinear) WithEnd(end float64) *SeqLinear { + lg.end = end + return lg +} + +// WithStep sets the step and returns the linear generator. +func (lg *SeqLinear) WithStep(step float64) *SeqLinear { + lg.step = step + return lg } diff --git a/seq/array.go b/seq/array.go deleted file mode 100644 index 08479c2..0000000 --- a/seq/array.go +++ /dev/null @@ -1,19 +0,0 @@ -package seq - -// NewArray creates a new array. -func NewArray(values ...float64) Array { - return Array(values) -} - -// Array is a wrapper for an array of floats that implements `ValuesProvider`. -type Array []float64 - -// Len returns the value provider length. -func (a Array) Len() int { - return len(a) -} - -// GetValue returns the value at a given index. -func (a Array) GetValue(index int) float64 { - return a[index] -} diff --git a/seq/linear.go b/seq/linear.go deleted file mode 100644 index 699a5ac..0000000 --- a/seq/linear.go +++ /dev/null @@ -1,73 +0,0 @@ -package seq - -// Range returns the array values of a linear seq with a given start, end and optional step. -func Range(start, end float64) []float64 { - return Seq{NewLinear().WithStart(start).WithEnd(end).WithStep(1.0)}.Array() -} - -// RangeWithStep returns the array values of a linear seq with a given start, end and optional step. -func RangeWithStep(start, end, step float64) []float64 { - return Seq{NewLinear().WithStart(start).WithEnd(end).WithStep(step)}.Array() -} - -// NewLinear returns a new linear generator. -func NewLinear() *Linear { - return &Linear{step: 1.0} -} - -// Linear is a stepwise generator. -type Linear struct { - start float64 - end float64 - step float64 -} - -// Start returns the start value. -func (lg Linear) Start() float64 { - return lg.start -} - -// End returns the end value. -func (lg Linear) End() float64 { - return lg.end -} - -// Step returns the step value. -func (lg Linear) Step() float64 { - return lg.step -} - -// Len returns the number of elements in the seq. -func (lg Linear) Len() int { - if lg.start < lg.end { - return int((lg.end-lg.start)/lg.step) + 1 - } - return int((lg.start-lg.end)/lg.step) + 1 -} - -// GetValue returns the value at a given index. -func (lg Linear) GetValue(index int) float64 { - fi := float64(index) - if lg.start < lg.end { - return lg.start + (fi * lg.step) - } - return lg.start - (fi * lg.step) -} - -// WithStart sets the start and returns the linear generator. -func (lg *Linear) WithStart(start float64) *Linear { - lg.start = start - return lg -} - -// WithEnd sets the end and returns the linear generator. -func (lg *Linear) WithEnd(end float64) *Linear { - lg.end = end - return lg -} - -// WithStep sets the step and returns the linear generator. -func (lg *Linear) WithStep(step float64) *Linear { - lg.step = step - return lg -} diff --git a/seq/linear_test.go b/seq/linear_test.go deleted file mode 100644 index f90b179..0000000 --- a/seq/linear_test.go +++ /dev/null @@ -1,48 +0,0 @@ -package seq - -import ( - "testing" - - assert "github.com/blend/go-sdk/assert" -) - -func TestRange(t *testing.T) { - assert := assert.New(t) - - values := Range(1, 100) - assert.Len(values, 100) - assert.Equal(1, values[0]) - assert.Equal(100, values[99]) -} - -func TestRangeWithStep(t *testing.T) { - assert := assert.New(t) - - values := RangeWithStep(0, 100, 5) - assert.Equal(100, values[20]) - assert.Len(values, 21) -} - -func TestRangeReversed(t *testing.T) { - assert := assert.New(t) - - values := Range(10.0, 1.0) - assert.Equal(10, len(values)) - assert.Equal(10.0, values[0]) - assert.Equal(1.0, values[9]) -} - -func TestValuesRegression(t *testing.T) { - assert := assert.New(t) - - // note; this assumes a 1.0 step is implicitly set in the constructor. - linearProvider := NewLinear().WithStart(1.0).WithEnd(100.0) - assert.Equal(1, linearProvider.Start()) - assert.Equal(100, linearProvider.End()) - assert.Equal(100, linearProvider.Len()) - - values := Seq{Provider: linearProvider}.Array() - assert.Len(values, 100) - assert.Equal(1.0, values[0]) - assert.Equal(100, values[99]) -} diff --git a/seq/random.go b/seq/random.go deleted file mode 100644 index ea65084..0000000 --- a/seq/random.go +++ /dev/null @@ -1,88 +0,0 @@ -package seq - -import ( - "math" - "math/rand" - "time" -) - -// RandomValues returns an array of random values. -func RandomValues(count int) []float64 { - return Seq{NewRandom().WithLen(count)}.Array() -} - -// RandomValuesWithMax returns an array of random values with a given average. -func RandomValuesWithMax(count int, max float64) []float64 { - return Seq{NewRandom().WithMax(max).WithLen(count)}.Array() -} - -// NewRandom creates a new random seq. -func NewRandom() *Random { - return &Random{ - rnd: rand.New(rand.NewSource(time.Now().Unix())), - } -} - -// Random is a random number seq generator. -type Random struct { - rnd *rand.Rand - max *float64 - min *float64 - len *int -} - -// Len returns the number of elements that will be generated. -func (r *Random) Len() int { - if r.len != nil { - return *r.len - } - return math.MaxInt32 -} - -// GetValue returns the value. -func (r *Random) GetValue(_ int) float64 { - if r.min != nil && r.max != nil { - var delta float64 - - if *r.max > *r.min { - delta = *r.max - *r.min - } else { - delta = *r.min - *r.max - } - - return *r.min + (r.rnd.Float64() * delta) - } else if r.max != nil { - return r.rnd.Float64() * *r.max - } else if r.min != nil { - return *r.min + (r.rnd.Float64()) - } - return r.rnd.Float64() -} - -// WithLen sets a maximum len -func (r *Random) WithLen(length int) *Random { - r.len = &length - return r -} - -// Min returns the minimum value. -func (r Random) Min() *float64 { - return r.min -} - -// WithMin sets the scale and returns the Random. -func (r *Random) WithMin(min float64) *Random { - r.min = &min - return r -} - -// Max returns the maximum value. -func (r Random) Max() *float64 { - return r.max -} - -// WithMax sets the average and returns the Random. -func (r *Random) WithMax(max float64) *Random { - r.max = &max - return r -} diff --git a/seq/random_test.go b/seq/random_test.go deleted file mode 100644 index 8fd8602..0000000 --- a/seq/random_test.go +++ /dev/null @@ -1,20 +0,0 @@ -package seq - -import ( - "testing" - - assert "github.com/blend/go-sdk/assert" -) - -func TestRandomRegression(t *testing.T) { - assert := assert.New(t) - - randomProvider := NewRandom().WithLen(4096).WithMax(256) - assert.Equal(4096, randomProvider.Len()) - assert.Equal(256, *randomProvider.Max()) - - randomSequence := New(randomProvider) - randomValues := randomSequence.Array() - assert.Len(randomValues, 4096) - assert.InDelta(128, randomSequence.Average(), 10.0) -} diff --git a/seq/seq_test.go b/seq/seq_test.go deleted file mode 100644 index a1b8dd6..0000000 --- a/seq/seq_test.go +++ /dev/null @@ -1,95 +0,0 @@ -package seq - -import ( - "testing" - - assert "github.com/blend/go-sdk/assert" -) - -func TestSequenceEach(t *testing.T) { - assert := assert.New(t) - - values := Seq{NewArray(1, 2, 3, 4)} - values.Each(func(i int, v float64) { - assert.Equal(i, v-1) - }) -} - -func TestSequenceMap(t *testing.T) { - assert := assert.New(t) - - values := Seq{NewArray(1, 2, 3, 4)} - mapped := values.Map(func(i int, v float64) float64 { - assert.Equal(i, v-1) - return v * 2 - }) - assert.Equal(4, mapped.Len()) -} - -func TestSequenceFoldLeft(t *testing.T) { - assert := assert.New(t) - - values := Seq{NewArray(1, 2, 3, 4)} - ten := values.FoldLeft(func(_ int, vp, v float64) float64 { - return vp + v - }) - assert.Equal(10, ten) - - orderTest := Seq{NewArray(10, 3, 2, 1)} - four := orderTest.FoldLeft(func(_ int, vp, v float64) float64 { - return vp - v - }) - assert.Equal(4, four) -} - -func TestSequenceFoldRight(t *testing.T) { - assert := assert.New(t) - - values := Seq{NewArray(1, 2, 3, 4)} - ten := values.FoldRight(func(_ int, vp, v float64) float64 { - return vp + v - }) - assert.Equal(10, ten) - - orderTest := Seq{NewArray(10, 3, 2, 1)} - notFour := orderTest.FoldRight(func(_ int, vp, v float64) float64 { - return vp - v - }) - assert.Equal(-14, notFour) -} - -func TestSequenceSum(t *testing.T) { - assert := assert.New(t) - - values := Seq{NewArray(1, 2, 3, 4)} - assert.Equal(10, values.Sum()) -} - -func TestSequenceAverage(t *testing.T) { - assert := assert.New(t) - - values := Seq{NewArray(1, 2, 3, 4)} - assert.Equal(2.5, values.Average()) - - valuesOdd := Seq{NewArray(1, 2, 3, 4, 5)} - assert.Equal(3, valuesOdd.Average()) -} - -func TestSequenceVariance(t *testing.T) { - assert := assert.New(t) - - values := Seq{NewArray(1, 2, 3, 4, 5)} - assert.Equal(2, values.Variance()) -} - -func TestSequenceNormalize(t *testing.T) { - assert := assert.New(t) - - normalized := Values(1, 2, 3, 4, 5).Normalize().Array() - - assert.NotEmpty(normalized) - assert.Len(normalized, 5) - assert.Equal(0, normalized[0]) - assert.Equal(0.25, normalized[1]) - assert.Equal(1, normalized[4]) -} diff --git a/seq/time.go b/seq/time.go deleted file mode 100644 index 4d859a1..0000000 --- a/seq/time.go +++ /dev/null @@ -1,50 +0,0 @@ -package seq - -import ( - "time" - - "github.com/wcharczuk/go-chart/util" -) - -// Time is a utility singleton with helper functions for time seq generation. -var Time timeSequence - -type timeSequence struct{} - -// Days generates a seq of timestamps by day, from -days to today. -func (ts timeSequence) Days(days int) []time.Time { - var values []time.Time - for day := days; day >= 0; day-- { - values = append(values, time.Now().AddDate(0, 0, -day)) - } - return values -} - -func (ts timeSequence) Hours(start time.Time, totalHours int) []time.Time { - times := make([]time.Time, totalHours) - - last := start - for i := 0; i < totalHours; i++ { - times[i] = last - last = last.Add(time.Hour) - } - - return times -} - -// HoursFilled adds zero values for the data bounded by the start and end of the xdata array. -func (ts timeSequence) HoursFilled(xdata []time.Time, ydata []float64) ([]time.Time, []float64) { - start, end := util.Time.StartAndEnd(xdata...) - totalHours := util.Time.DiffHours(start, end) - - finalTimes := ts.Hours(start, totalHours+1) - finalValues := make([]float64, totalHours+1) - - var hoursFromStart int - for i, xd := range xdata { - hoursFromStart = util.Time.DiffHours(start, xd) - finalValues[hoursFromStart] = ydata[i] - } - - return finalTimes, finalValues -} diff --git a/seq/time_test.go b/seq/time_test.go deleted file mode 100644 index b37fb84..0000000 --- a/seq/time_test.go +++ /dev/null @@ -1,85 +0,0 @@ -package seq - -import ( - "testing" - "time" - - assert "github.com/blend/go-sdk/assert" - "github.com/wcharczuk/go-chart/util" -) - -func TestTimeHours(t *testing.T) { - assert := assert.New(t) - - today := time.Date(2016, 07, 01, 12, 0, 0, 0, time.UTC) - seq := Time.Hours(today, 24) - - end := util.Time.End(seq...) - assert.Len(seq, 24) - assert.Equal(2016, end.Year()) - assert.Equal(07, int(end.Month())) - assert.Equal(02, end.Day()) - assert.Equal(11, end.Hour()) -} - -func TestSequenceHoursFill(t *testing.T) { - assert := assert.New(t) - - xdata := []time.Time{ - time.Date(2016, 07, 01, 12, 0, 0, 0, time.UTC), - time.Date(2016, 07, 01, 13, 0, 0, 0, time.UTC), - time.Date(2016, 07, 01, 14, 0, 0, 0, time.UTC), - time.Date(2016, 07, 02, 4, 0, 0, 0, time.UTC), - time.Date(2016, 07, 02, 5, 0, 0, 0, time.UTC), - time.Date(2016, 07, 03, 12, 0, 0, 0, time.UTC), - time.Date(2016, 07, 03, 14, 0, 0, 0, time.UTC), - } - - ydata := []float64{ - 1.1, - 1.2, - 1.4, - 0.8, - 2.1, - 0.4, - 0.6, - } - - filledTimes, filledValues := Time.HoursFilled(xdata, ydata) - expected := util.Time.DiffHours(util.Time.Start(xdata...), util.Time.End(xdata...)) + 1 - assert.Len(filledTimes, expected) - assert.Equal(len(filledValues), len(filledTimes)) - - assert.NotZero(filledValues[0]) - assert.NotZero(filledValues[len(filledValues)-1]) - - assert.NotZero(filledValues[16]) -} - -func TestTimeStart(t *testing.T) { - assert := assert.New(t) - - times := []time.Time{ - time.Now().AddDate(0, 0, -4), - time.Now().AddDate(0, 0, -2), - time.Now().AddDate(0, 0, -1), - time.Now().AddDate(0, 0, -3), - time.Now().AddDate(0, 0, -5), - } - - assert.InTimeDelta(util.Time.Start(times...), times[4], time.Millisecond) -} - -func TestTimeEnd(t *testing.T) { - assert := assert.New(t) - - times := []time.Time{ - time.Now().AddDate(0, 0, -4), - time.Now().AddDate(0, 0, -2), - time.Now().AddDate(0, 0, -1), - time.Now().AddDate(0, 0, -3), - time.Now().AddDate(0, 0, -5), - } - - assert.InTimeDelta(util.Time.End(times...), times[2], time.Millisecond) -} diff --git a/seq/times.go b/seq/times.go deleted file mode 100644 index 8c65ced..0000000 --- a/seq/times.go +++ /dev/null @@ -1,31 +0,0 @@ -package seq - -import ( - "time" - - "github.com/wcharczuk/go-chart/util" -) - -// Assert types implement interfaces. -var ( - _ Provider = (*Times)(nil) -) - -// Times are an array of times. -// It wraps the array with methods that implement `seq.Provider`. -type Times []time.Time - -// Array returns the times to an array. -func (t Times) Array() []time.Time { - return []time.Time(t) -} - -// Len returns the length of the array. -func (t Times) Len() int { - return len(t) -} - -// GetValue returns a value at an index as a time. -func (t Times) GetValue(index int) float64 { - return util.Time.ToFloat64(t[index]) -} diff --git a/seq/util.go b/seq/util.go deleted file mode 100644 index 685a408..0000000 --- a/seq/util.go +++ /dev/null @@ -1,32 +0,0 @@ -package seq - -import "math" - -func round(input float64, places int) (rounded float64) { - if math.IsNaN(input) { - return 0.0 - } - - sign := 1.0 - if input < 0 { - sign = -1 - input *= -1 - } - - precision := math.Pow(10, float64(places)) - digit := input * precision - _, decimal := math.Modf(digit) - - if decimal >= 0.5 { - rounded = math.Ceil(digit) - } else { - rounded = math.Floor(digit) - } - - return rounded / precision * sign -} - -func f64i(value float64) int { - r := round(value, 0) - return int(r) -} diff --git a/sma_series.go b/sma_series.go index 7ed75e1..b952c0a 100644 --- a/sma_series.go +++ b/sma_series.go @@ -2,8 +2,6 @@ package chart import ( "fmt" - - util "github.com/wcharczuk/go-chart/util" ) const ( @@ -96,7 +94,7 @@ func (sma SMASeries) GetLastValues() (x, y float64) { func (sma SMASeries) getAverage(index int) float64 { period := sma.GetPeriod() - floor := util.Math.MaxInt(0, index-period) + floor := MaxInt(0, index-period) var accum float64 var count float64 for x := index; x >= floor; x-- { diff --git a/sma_series_test.go b/sma_series_test.go index e25901d..87c1971 100644 --- a/sma_series_test.go +++ b/sma_series_test.go @@ -5,7 +5,6 @@ import ( "github.com/blend/go-sdk/assert" "github.com/wcharczuk/go-chart/seq" - "github.com/wcharczuk/go-chart/util" ) type mockValuesProvider struct { @@ -14,14 +13,14 @@ type mockValuesProvider struct { } func (m mockValuesProvider) Len() int { - return util.Math.MinInt(len(m.X), len(m.Y)) + return MinInt(len(m.X), len(m.Y)) } func (m mockValuesProvider) GetValues(index int) (x, y float64) { if index < 0 { panic("negative index at GetValue()") } - if index >= util.Math.MinInt(len(m.X), len(m.Y)) { + if index >= MinInt(len(m.X), len(m.Y)) { panic("index is outside the length of m.X or m.Y") } x = m.X[index] diff --git a/stacked_bar_chart.go b/stacked_bar_chart.go index 0a5e723..40eed89 100644 --- a/stacked_bar_chart.go +++ b/stacked_bar_chart.go @@ -7,8 +7,6 @@ import ( "math" "github.com/golang/freetype/truetype" - "github.com/wcharczuk/go-chart/seq" - util "github.com/wcharczuk/go-chart/util" ) // StackedBar is a bar within a StackedBarChart. @@ -154,7 +152,7 @@ func (sbc StackedBarChart) drawBar(r Renderer, canvasBox Box, xoffset int, bar S Top: yoffset, Left: bxl, Right: bxr, - Bottom: util.Math.MinInt(yoffset+barHeight, canvasBox.Bottom-DefaultStrokeWidth), + Bottom: MinInt(yoffset+barHeight, canvasBox.Bottom-DefaultStrokeWidth), } Draw.Box(r, barBox, bv.Style.InheritFrom(sbc.styleDefaultsStackedBarValue(index))) yoffset += barHeight @@ -209,7 +207,7 @@ func (sbc StackedBarChart) drawYAxis(r Renderer, canvasBox Box) { r.LineTo(canvasBox.Right+DefaultHorizontalTickWidth, canvasBox.Bottom) r.Stroke() - ticks := seq.RangeWithStep(0.0, 1.0, 0.2) + ticks := SeqRangeWithStep(0.0, 1.0, 0.2) for _, t := range ticks { axisStyle.GetStrokeOptions().WriteToRenderer(r) ty := canvasBox.Bottom - int(t*float64(canvasBox.Height())) @@ -294,7 +292,7 @@ func (sbc StackedBarChart) getAdjustedCanvasBox(r Renderer, canvasBox Box) Box { lines := Text.WrapFit(r, bar.Name, barLabelBox.Width(), axisStyle) linesBox := Text.MeasureLines(r, lines, axisStyle) - xaxisHeight = util.Math.MaxInt(linesBox.Height()+(2*DefaultXAxisMargin), xaxisHeight) + xaxisHeight = MaxInt(linesBox.Height()+(2*DefaultXAxisMargin), xaxisHeight) } } return Box{ @@ -346,7 +344,7 @@ func (sbc StackedBarChart) styleDefaultsTitle() Style { } func (sbc StackedBarChart) getTitleFontSize() float64 { - effectiveDimension := util.Math.MinInt(sbc.GetWidth(), sbc.GetHeight()) + effectiveDimension := MinInt(sbc.GetWidth(), sbc.GetHeight()) if effectiveDimension >= 2048 { return 48 } else if effectiveDimension >= 1024 { diff --git a/stringutil.go b/stringutil.go new file mode 100644 index 0000000..858d447 --- /dev/null +++ b/stringutil.go @@ -0,0 +1,57 @@ +package chart + +import "strings" + +// SplitCSV splits a corpus by the `,`, dropping leading or trailing whitespace unless quoted. +func SplitCSV(text string) (output []string) { + if len(text) == 0 { + return + } + + var state int + var word []rune + var opened rune + for _, r := range text { + switch state { + case 0: // word + if isQuote(r) { + opened = r + state = 1 + } else if isCSVDelim(r) { + output = append(output, strings.TrimSpace(string(word))) + word = nil + } else { + word = append(word, r) + } + case 1: // we're in a quoted section + if matchesQuote(opened, r) { + state = 0 + continue + } + word = append(word, r) + } + } + + if len(word) > 0 { + output = append(output, strings.TrimSpace(string(word))) + } + return +} + +func isCSVDelim(r rune) bool { + return r == rune(',') +} + +func isQuote(r rune) bool { + return r == '"' || r == '\'' || r == '“' || r == '”' || r == '`' +} + +func matchesQuote(a, b rune) bool { + if a == '“' && b == '”' { + return true + } + if a == '”' && b == '“' { + return true + } + return a == b +} diff --git a/stringutil_test.go b/stringutil_test.go new file mode 100644 index 0000000..63ab412 --- /dev/null +++ b/stringutil_test.go @@ -0,0 +1,22 @@ +package chart + +import ( + "testing" + + "github.com/blend/go-sdk/assert" +) + +func TestSplitCSV(t *testing.T) { + assert := assert.New(t) + + assert.Empty(SplitCSV("")) + assert.Equal([]string{"foo"}, SplitCSV("foo")) + assert.Equal([]string{"foo", "bar"}, SplitCSV("foo,bar")) + assert.Equal([]string{"foo", "bar"}, SplitCSV("foo, bar")) + assert.Equal([]string{"foo", "bar"}, SplitCSV(" foo , bar ")) + assert.Equal([]string{"foo", "bar", "baz"}, SplitCSV("foo,bar,baz")) + assert.Equal([]string{"foo", "bar", "baz,buzz"}, SplitCSV("foo,bar,\"baz,buzz\"")) + assert.Equal([]string{"foo", "bar", "baz,'buzz'"}, SplitCSV("foo,bar,\"baz,'buzz'\"")) + assert.Equal([]string{"foo", "bar", "baz,'buzz"}, SplitCSV("foo,bar,\"baz,'buzz\"")) + assert.Equal([]string{"foo", "bar", "baz,\"buzz\""}, SplitCSV("foo,bar,'baz,\"buzz\"'")) +} diff --git a/style.go b/style.go index eafc552..04a73a5 100644 --- a/style.go +++ b/style.go @@ -6,7 +6,6 @@ import ( "github.com/golang/freetype/truetype" "github.com/wcharczuk/go-chart/drawing" - "github.com/wcharczuk/go-chart/util" ) const ( @@ -164,6 +163,7 @@ func (s Style) String() string { return "{" + strings.Join(output, ", ") + "}" } +// GetClassName returns the class name or a default. func (s Style) GetClassName(defaults ...string) string { if s.ClassName == "" { if len(defaults) > 0 { @@ -351,7 +351,7 @@ func (s Style) WriteToRenderer(r Renderer) { r.ClearTextRotation() if s.GetTextRotationDegrees() != 0 { - r.SetTextRotation(util.Math.DegreesToRadians(s.GetTextRotationDegrees())) + r.SetTextRotation(DegreesToRadians(s.GetTextRotationDegrees())) } } diff --git a/text.go b/text.go index a312c5b..37750ab 100644 --- a/text.go +++ b/text.go @@ -2,8 +2,6 @@ package chart import ( "strings" - - util "github.com/wcharczuk/go-chart/util" ) // TextHorizontalAlign is an enum for the horizontal alignment options. @@ -149,7 +147,7 @@ func (t text) MeasureLines(r Renderer, lines []string, style Style) Box { var output Box for index, line := range lines { lineBox := r.MeasureText(line) - output.Right = util.Math.MaxInt(lineBox.Right, output.Right) + output.Right = MaxInt(lineBox.Right, output.Right) output.Bottom += lineBox.Height() if index < len(lines)-1 { output.Bottom += +style.GetTextLineSpacing() diff --git a/tick.go b/tick.go index 72ff9c5..1732c60 100644 --- a/tick.go +++ b/tick.go @@ -4,8 +4,6 @@ import ( "fmt" "math" "strings" - - util "github.com/wcharczuk/go-chart/util" ) // TicksProvider is a type that provides ticks. @@ -85,15 +83,15 @@ func GenerateContinuousTicks(r Renderer, ra Range, isVertical bool, style Style, rangeDelta := math.Abs(max - min) tickStep := rangeDelta / float64(intermediateTickCount) - roundTo := util.Math.GetRoundToForDelta(rangeDelta) / 10 - intermediateTickCount = util.Math.MinInt(intermediateTickCount, DefaultTickCountSanityCheck) + roundTo := GetRoundToForDelta(rangeDelta) / 10 + intermediateTickCount = MinInt(intermediateTickCount, DefaultTickCountSanityCheck) for x := 1; x < intermediateTickCount; x++ { var tickValue float64 if ra.IsDescending() { - tickValue = max - util.Math.RoundUp(tickStep*float64(x), roundTo) + tickValue = max - RoundUp(tickStep*float64(x), roundTo) } else { - tickValue = min + util.Math.RoundUp(tickStep*float64(x), roundTo) + tickValue = min + RoundUp(tickStep*float64(x), roundTo) } ticks = append(ticks, Tick{ Value: tickValue, diff --git a/time_series.go b/time_series.go index 21d39ee..83ee905 100644 --- a/time_series.go +++ b/time_series.go @@ -3,8 +3,6 @@ package chart import ( "fmt" "time" - - util "github.com/wcharczuk/go-chart/util" ) // Interface Assertions. @@ -43,21 +41,21 @@ func (ts TimeSeries) Len() int { // GetValues gets x, y values at a given index. func (ts TimeSeries) GetValues(index int) (x, y float64) { - x = util.Time.ToFloat64(ts.XValues[index]) + x = TimeToFloat64(ts.XValues[index]) y = ts.YValues[index] return } // GetFirstValues gets the first values. func (ts TimeSeries) GetFirstValues() (x, y float64) { - x = util.Time.ToFloat64(ts.XValues[0]) + x = TimeToFloat64(ts.XValues[0]) y = ts.YValues[0] return } // GetLastValues gets the last values. func (ts TimeSeries) GetLastValues() (x, y float64) { - x = util.Time.ToFloat64(ts.XValues[len(ts.XValues)-1]) + x = TimeToFloat64(ts.XValues[len(ts.XValues)-1]) y = ts.YValues[len(ts.YValues)-1] return } diff --git a/timeutil.go b/timeutil.go new file mode 100644 index 0000000..4bf3485 --- /dev/null +++ b/timeutil.go @@ -0,0 +1,105 @@ +package chart + +import "time" + +// SecondsPerXYZ +const ( + SecondsPerHour = 60 * 60 + SecondsPerDay = 60 * 60 * 24 +) + +// TimeMillis returns a duration as a float millis. +func TimeMillis(d time.Duration) float64 { + return float64(d) / float64(time.Millisecond) +} + +// DiffHours returns the difference in hours between two times. +func DiffHours(t1, t2 time.Time) (hours int) { + t1n := t1.Unix() + t2n := t2.Unix() + var diff int64 + if t1n > t2n { + diff = t1n - t2n + } else { + diff = t2n - t1n + } + return int(diff / (SecondsPerHour)) +} + +// TimeMin returns the minimum and maximum times in a given range. +func TimeMin(times ...time.Time) (min time.Time) { + if len(times) == 0 { + return + } + min = times[0] + for index := 1; index < len(times); index++ { + if times[index].Before(min) { + min = times[index] + } + + } + return +} + +// TimeMax returns the minimum and maximum times in a given range. +func TimeMax(times ...time.Time) (max time.Time) { + if len(times) == 0 { + return + } + max = times[0] + + for index := 1; index < len(times); index++ { + if times[index].After(max) { + max = times[index] + } + } + return +} + +// TimeMinMax returns the minimum and maximum times in a given range. +func TimeMinMax(times ...time.Time) (min, max time.Time) { + if len(times) == 0 { + return + } + min = times[0] + max = times[0] + + for index := 1; index < len(times); index++ { + if times[index].Before(min) { + min = times[index] + } + if times[index].After(max) { + max = times[index] + } + } + return +} + +// TimeToFloat64 returns a float64 representation of a time. +func TimeToFloat64(t time.Time) float64 { + return float64(t.UnixNano()) +} + +// TimeDescending sorts a given list of times ascending, or min to max. +type TimeDescending []time.Time + +// Len implements sort.Sorter +func (d TimeDescending) Len() int { return len(d) } + +// Swap implements sort.Sorter +func (d TimeDescending) Swap(i, j int) { d[i], d[j] = d[j], d[i] } + +// Less implements sort.Sorter +func (d TimeDescending) Less(i, j int) bool { return d[i].After(d[j]) } + +// TimeAscending sorts a given list of times ascending, or min to max. +type TimeAscending []time.Time + +// Len implements sort.Sorter +func (a TimeAscending) Len() int { return len(a) } + +// Swap implements sort.Sorter +func (a TimeAscending) Swap(i, j int) { a[i], a[j] = a[j], a[i] } + +// Less implements sort.Sorter +func (a TimeAscending) Less(i, j int) bool { return a[i].Before(a[j]) } diff --git a/util/date.go b/util/date.go deleted file mode 100644 index 50c17dd..0000000 --- a/util/date.go +++ /dev/null @@ -1,186 +0,0 @@ -package util - -import ( - "time" -) - -const ( - // AllDaysMask is a bitmask of all the days of the week. - AllDaysMask = 1<friday. -func (d date) IsWeekDay(day time.Weekday) bool { - return !d.IsWeekendDay(day) -} - -// IsWeekendDay returns if the day is a monday->friday. -func (d date) IsWeekendDay(day time.Weekday) bool { - return day == time.Saturday || day == time.Sunday -} - -// Before returns if a timestamp is strictly before another date (ignoring hours, minutes etc.) -func (d date) Before(before, reference time.Time) bool { - tzAdjustedBefore := before.In(reference.Location()) - if tzAdjustedBefore.Year() < reference.Year() { - return true - } - if tzAdjustedBefore.Month() < reference.Month() { - return true - } - return tzAdjustedBefore.Year() == reference.Year() && tzAdjustedBefore.Month() == reference.Month() && tzAdjustedBefore.Day() < reference.Day() -} - -const ( - _secondsPerHour = 60 * 60 - _secondsPerDay = 60 * 60 * 24 -) - -// NextDay returns the timestamp advanced a day. -func (d date) NextDay(ts time.Time) time.Time { - return ts.AddDate(0, 0, 1) -} - -// NextHour returns the next timestamp on the hour. -func (d date) NextHour(ts time.Time) time.Time { - //advance a full hour ... - advanced := ts.Add(time.Hour) - minutes := time.Duration(advanced.Minute()) * time.Minute - final := advanced.Add(-minutes) - return time.Date(final.Year(), final.Month(), final.Day(), final.Hour(), 0, 0, 0, final.Location()) -} - -// NextDayOfWeek returns the next instance of a given weekday after a given timestamp. -func (d date) NextDayOfWeek(after time.Time, dayOfWeek time.Weekday) time.Time { - afterWeekday := after.Weekday() - if afterWeekday == dayOfWeek { - return after.AddDate(0, 0, 7) - } - - // 1 vs 5 ~ add 4 days - if afterWeekday < dayOfWeek { - dayDelta := int(dayOfWeek - afterWeekday) - return after.AddDate(0, 0, dayDelta) - } - - // 5 vs 1, add 7-(5-1) ~ 3 days - dayDelta := 7 - int(afterWeekday-dayOfWeek) - return after.AddDate(0, 0, dayDelta) -} diff --git a/util/date_test.go b/util/date_test.go deleted file mode 100644 index e4deee6..0000000 --- a/util/date_test.go +++ /dev/null @@ -1,148 +0,0 @@ -package util - -import ( - "testing" - "time" - - assert "github.com/blend/go-sdk/assert" -) - -func parse(v string) time.Time { - ts, _ := time.Parse("2006-01-02", v) - return ts -} - -func TestDateEastern(t *testing.T) { - assert := assert.New(t) - eastern, err := Date.Eastern() - assert.Nil(err) - assert.NotNil(eastern) -} - -func TestDateTime(t *testing.T) { - assert := assert.New(t) - - ts := Date.Time(5, 6, 7, 8, time.UTC) - assert.Equal(05, ts.Hour()) - assert.Equal(06, ts.Minute()) - assert.Equal(07, ts.Second()) - assert.Equal(8, ts.Nanosecond()) - assert.Equal(time.UTC, ts.Location()) -} - -func TestDateDate(t *testing.T) { - assert := assert.New(t) - - ts := Date.Date(2015, 5, 6, time.UTC) - assert.Equal(2015, ts.Year()) - assert.Equal(5, ts.Month()) - assert.Equal(6, ts.Day()) - assert.Equal(time.UTC, ts.Location()) -} - -func TestDateOnDate(t *testing.T) { - assert := assert.New(t) - - eastern := Date.MustEastern() - assert.NotNil(eastern) - - ts := Date.OnDate(Date.Time(5, 4, 3, 2, time.UTC), Date.Date(2016, 6, 7, eastern)) - assert.Equal(2016, ts.Year()) - assert.Equal(6, ts.Month()) - assert.Equal(7, ts.Day()) - assert.Equal(5, ts.Hour()) - assert.Equal(4, ts.Minute()) - assert.Equal(3, ts.Second()) - assert.Equal(2, ts.Nanosecond()) - assert.Equal(time.UTC, ts.Location()) -} - -func TestDateNoonOnDate(t *testing.T) { - assert := assert.New(t) - noon := Date.NoonOnDate(time.Date(2016, 04, 03, 02, 01, 0, 0, time.UTC)) - - assert.Equal(2016, noon.Year()) - assert.Equal(4, noon.Month()) - assert.Equal(3, noon.Day()) - assert.Equal(12, noon.Hour()) - assert.Equal(0, noon.Minute()) - assert.Equal(time.UTC, noon.Location()) -} - -func TestDateBefore(t *testing.T) { - assert := assert.New(t) - - assert.True(Date.Before(parse("2015-07-02"), parse("2016-07-01"))) - assert.True(Date.Before(parse("2016-06-01"), parse("2016-07-01"))) - assert.True(Date.Before(parse("2016-07-01"), parse("2016-07-02"))) - - assert.False(Date.Before(parse("2016-07-01"), parse("2016-07-01"))) - assert.False(Date.Before(parse("2016-07-03"), parse("2016-07-01"))) - assert.False(Date.Before(parse("2016-08-03"), parse("2016-07-01"))) - assert.False(Date.Before(parse("2017-08-03"), parse("2016-07-01"))) -} - -func TestDateBeforeHandlesTimezones(t *testing.T) { - assert := assert.New(t) - - tuesdayUTC := time.Date(2016, 8, 02, 22, 00, 0, 0, time.UTC) - mondayUTC := time.Date(2016, 8, 01, 1, 00, 0, 0, time.UTC) - sundayEST := time.Date(2016, 7, 31, 22, 00, 0, 0, Date.MustEastern()) - - assert.True(Date.Before(sundayEST, tuesdayUTC)) - assert.False(Date.Before(sundayEST, mondayUTC)) -} - -func TestDateNextHour(t *testing.T) { - assert := assert.New(t) - - start := time.Date(2015, 07, 01, 9, 30, 0, 0, Date.MustEastern()) - next := Date.NextHour(start) - assert.Equal(2015, next.Year()) - assert.Equal(07, next.Month()) - assert.Equal(01, next.Day()) - assert.Equal(10, next.Hour()) - assert.Equal(00, next.Minute()) - - next = Date.NextHour(next) - assert.Equal(11, next.Hour()) - - next = Date.NextHour(next) - assert.Equal(12, next.Hour()) - -} - -func TestDateNextDayOfWeek(t *testing.T) { - assert := assert.New(t) - - weds := Date.Date(2016, 8, 10, time.UTC) - fri := Date.Date(2016, 8, 12, time.UTC) - sun := Date.Date(2016, 8, 14, time.UTC) - mon := Date.Date(2016, 8, 15, time.UTC) - weds2 := Date.Date(2016, 8, 17, time.UTC) - - nextFri := Date.NextDayOfWeek(weds, time.Friday) - nextSunday := Date.NextDayOfWeek(weds, time.Sunday) - nextMonday := Date.NextDayOfWeek(weds, time.Monday) - nextWeds := Date.NextDayOfWeek(weds, time.Wednesday) - - assert.Equal(fri.Year(), nextFri.Year()) - assert.Equal(fri.Month(), nextFri.Month()) - assert.Equal(fri.Day(), nextFri.Day()) - - assert.Equal(sun.Year(), nextSunday.Year()) - assert.Equal(sun.Month(), nextSunday.Month()) - assert.Equal(sun.Day(), nextSunday.Day()) - - assert.Equal(mon.Year(), nextMonday.Year()) - assert.Equal(mon.Month(), nextMonday.Month()) - assert.Equal(mon.Day(), nextMonday.Day()) - - assert.Equal(weds2.Year(), nextWeds.Year()) - assert.Equal(weds2.Month(), nextWeds.Month()) - assert.Equal(weds2.Day(), nextWeds.Day()) - - assert.Equal(time.UTC, nextFri.Location()) - assert.Equal(time.UTC, nextSunday.Location()) - assert.Equal(time.UTC, nextMonday.Location()) -} diff --git a/util/file_util.go b/util/file_util.go deleted file mode 100644 index d6c561d..0000000 --- a/util/file_util.go +++ /dev/null @@ -1,57 +0,0 @@ -package util - -import ( - "bufio" - "io" - "os" -) - -var ( - // File contains file utility functions - File = fileUtil{} -) - -type fileUtil struct{} - -// ReadByLines reads a file and calls the handler for each line. -func (fu fileUtil) ReadByLines(filePath string, handler func(line string) error) error { - var f *os.File - var err error - if f, err = os.Open(filePath); err == nil { - defer f.Close() - var line string - scanner := bufio.NewScanner(f) - for scanner.Scan() { - line = scanner.Text() - err = handler(line) - if err != nil { - return err - } - } - } - return err - -} - -// ReadByChunks reads a file in `chunkSize` pieces, dispatched to the handler. -func (fu fileUtil) ReadByChunks(filePath string, chunkSize int, handler func(line []byte) error) error { - var f *os.File - var err error - if f, err = os.Open(filePath); err == nil { - defer f.Close() - - chunk := make([]byte, chunkSize) - for { - readBytes, err := f.Read(chunk) - if err == io.EOF { - break - } - readData := chunk[:readBytes] - err = handler(readData) - if err != nil { - return err - } - } - } - return err -} diff --git a/util/math_test.go b/util/math_test.go deleted file mode 100644 index 12a450a..0000000 --- a/util/math_test.go +++ /dev/null @@ -1,151 +0,0 @@ -package util - -import ( - "testing" - - "github.com/blend/go-sdk/assert" -) - -func TestMinAndMax(t *testing.T) { - assert := assert.New(t) - values := []float64{1.0, 2.0, 3.0, 4.0} - min, max := Math.MinAndMax(values...) - assert.Equal(1.0, min) - assert.Equal(4.0, max) -} - -func TestMinAndMaxReversed(t *testing.T) { - assert := assert.New(t) - values := []float64{4.0, 2.0, 3.0, 1.0} - min, max := Math.MinAndMax(values...) - assert.Equal(1.0, min) - assert.Equal(4.0, max) -} - -func TestMinAndMaxEmpty(t *testing.T) { - assert := assert.New(t) - values := []float64{} - min, max := Math.MinAndMax(values...) - assert.Equal(0.0, min) - assert.Equal(0.0, max) -} - -func TestGetRoundToForDelta(t *testing.T) { - assert := assert.New(t) - - assert.Equal(100.0, Math.GetRoundToForDelta(1001.00)) - assert.Equal(10.0, Math.GetRoundToForDelta(101.00)) - assert.Equal(1.0, Math.GetRoundToForDelta(11.00)) -} - -func TestRoundUp(t *testing.T) { - assert := assert.New(t) - assert.Equal(0.5, Math.RoundUp(0.49, 0.1)) - assert.Equal(1.0, Math.RoundUp(0.51, 1.0)) - assert.Equal(0.4999, Math.RoundUp(0.49988, 0.0001)) - assert.Equal(0.123, Math.RoundUp(0.123, 0)) -} - -func TestRoundDown(t *testing.T) { - assert := assert.New(t) - assert.Equal(0.5, Math.RoundDown(0.51, 0.1)) - assert.Equal(1.0, Math.RoundDown(1.01, 1.0)) - assert.Equal(0.5001, Math.RoundDown(0.50011, 0.0001)) - assert.Equal(0.123, Math.RoundDown(0.123, 0)) -} - -func TestPercentDifference(t *testing.T) { - assert := assert.New(t) - - assert.Equal(0.5, Math.PercentDifference(1.0, 1.5)) - assert.Equal(-0.5, Math.PercentDifference(2.0, 1.0)) -} - -func TestNormalize(t *testing.T) { - assert := assert.New(t) - - values := []float64{10, 9, 8, 7, 6} - normalized := Math.Normalize(values...) - assert.Len(normalized, 5) - assert.Equal(0.25, normalized[0]) - assert.Equal(0.1499, normalized[4]) -} - -var ( - _degreesToRadians = map[float64]float64{ - 0: 0, // !_2pi b/c no irrational nums in floats. - 45: _pi4, - 90: _pi2, - 135: _3pi4, - 180: _pi, - 225: _5pi4, - 270: _3pi2, - 315: _7pi4, - } - - _compassToRadians = map[float64]float64{ - 0: _pi2, - 45: _pi4, - 90: 0, // !_2pi b/c no irrational nums in floats. - 135: _7pi4, - 180: _3pi2, - 225: _5pi4, - 270: _pi, - 315: _3pi4, - } -) - -func TestDegreesToRadians(t *testing.T) { - assert := assert.New(t) - - for d, r := range _degreesToRadians { - assert.Equal(r, Math.DegreesToRadians(d)) - } -} - -func TestPercentToRadians(t *testing.T) { - assert := assert.New(t) - - for d, r := range _degreesToRadians { - assert.Equal(r, Math.PercentToRadians(d/360.0)) - } -} - -func TestRadiansToDegrees(t *testing.T) { - assert := assert.New(t) - - for d, r := range _degreesToRadians { - assert.Equal(d, Math.RadiansToDegrees(r)) - } -} - -func TestRadianAdd(t *testing.T) { - assert := assert.New(t) - - assert.Equal(_pi, Math.RadianAdd(_pi2, _pi2)) - assert.Equal(_3pi2, Math.RadianAdd(_pi2, _pi)) - assert.Equal(_pi, Math.RadianAdd(_pi, _2pi)) - assert.Equal(_pi, Math.RadianAdd(_pi, -_2pi)) -} - -func TestRotateCoordinate90(t *testing.T) { - assert := assert.New(t) - - cx, cy := 10, 10 - x, y := 5, 10 - - rx, ry := Math.RotateCoordinate(cx, cy, x, y, Math.DegreesToRadians(90)) - assert.Equal(10, rx) - assert.Equal(5, ry) -} - -func TestRotateCoordinate45(t *testing.T) { - assert := assert.New(t) - - cx, cy := 10, 10 - x, y := 5, 10 - - rx, ry := Math.RotateCoordinate(cx, cy, x, y, Math.DegreesToRadians(45)) - assert.Equal(7, rx) - assert.Equal(7, ry) -} diff --git a/util/time.go b/util/time.go deleted file mode 100644 index 7d68f91..0000000 --- a/util/time.go +++ /dev/null @@ -1,99 +0,0 @@ -package util - -import "time" - -var ( - // Time contains time utility functions. - Time = timeUtil{} -) - -type timeUtil struct{} - -// Millis returns the duration as milliseconds. -func (tu timeUtil) Millis(d time.Duration) float64 { - return float64(d) / float64(time.Millisecond) -} - -// TimeToFloat64 returns a float64 representation of a time. -func (tu timeUtil) ToFloat64(t time.Time) float64 { - return float64(t.UnixNano()) -} - -// Float64ToTime returns a time from a float64. -func (tu timeUtil) FromFloat64(tf float64) time.Time { - return time.Unix(0, int64(tf)) -} - -func (tu timeUtil) DiffDays(t1, t2 time.Time) (days int) { - t1n := t1.Unix() - t2n := t2.Unix() - var diff int64 - if t1n > t2n { - diff = t1n - t2n //yields seconds - } else { - diff = t2n - t1n //yields seconds - } - return int(diff / (_secondsPerDay)) -} - -func (tu timeUtil) DiffHours(t1, t2 time.Time) (hours int) { - t1n := t1.Unix() - t2n := t2.Unix() - var diff int64 - if t1n > t2n { - diff = t1n - t2n - } else { - diff = t2n - t1n - } - return int(diff / (_secondsPerHour)) -} - -// Start returns the earliest (min) time in a list of times. -func (tu timeUtil) Start(times ...time.Time) time.Time { - if len(times) == 0 { - return time.Time{} - } - - start := times[0] - for _, t := range times[1:] { - if t.Before(start) { - start = t - } - } - return start -} - -// Start returns the earliest (min) time in a list of times. -func (tu timeUtil) End(times ...time.Time) time.Time { - if len(times) == 0 { - return time.Time{} - } - - end := times[0] - for _, t := range times[1:] { - if t.After(end) { - end = t - } - } - return end -} - -// StartAndEnd returns the start and end of a given set of time in one pass. -func (tu timeUtil) StartAndEnd(values ...time.Time) (start time.Time, end time.Time) { - if len(values) == 0 { - return - } - - start = values[0] - end = values[0] - - for _, v := range values[1:] { - if end.Before(v) { - end = v - } - if start.After(v) { - start = v - } - } - return -} diff --git a/util/time_test.go b/util/time_test.go deleted file mode 100644 index beeec65..0000000 --- a/util/time_test.go +++ /dev/null @@ -1,64 +0,0 @@ -package util - -import ( - "testing" - "time" - - "github.com/blend/go-sdk/assert" -) - -func TestTimeDiffDays(t *testing.T) { - assert := assert.New(t) - - t1 := time.Date(2017, 02, 27, 12, 0, 0, 0, time.UTC) - t2 := time.Date(2017, 01, 10, 3, 0, 0, 0, time.UTC) - t3 := time.Date(2017, 02, 24, 16, 0, 0, 0, time.UTC) - - assert.Equal(48, Time.DiffDays(t2, t1)) - assert.Equal(2, Time.DiffDays(t3, t1)) // technically we should round down. -} - -func TestTimeDiffHours(t *testing.T) { - assert := assert.New(t) - - t1 := time.Date(2017, 02, 27, 12, 0, 0, 0, time.UTC) - t2 := time.Date(2017, 02, 24, 16, 0, 0, 0, time.UTC) - t3 := time.Date(2017, 02, 28, 12, 0, 0, 0, time.UTC) - - assert.Equal(68, Time.DiffHours(t2, t1)) - assert.Equal(24, Time.DiffHours(t1, t3)) -} - -func TestTimeStartAndEnd(t *testing.T) { - assert := assert.New(t) - values := []time.Time{ - time.Now().AddDate(0, 0, -1), - time.Now().AddDate(0, 0, -2), - time.Now().AddDate(0, 0, -3), - time.Now().AddDate(0, 0, -4), - } - min, max := Time.StartAndEnd(values...) - assert.Equal(values[3], min) - assert.Equal(values[0], max) -} - -func TestTimeStartAndEndReversed(t *testing.T) { - assert := assert.New(t) - values := []time.Time{ - time.Now().AddDate(0, 0, -4), - time.Now().AddDate(0, 0, -2), - time.Now().AddDate(0, 0, -3), - time.Now().AddDate(0, 0, -1), - } - min, max := Time.StartAndEnd(values...) - assert.Equal(values[0], min) - assert.Equal(values[3], max) -} - -func TestTimeStartAndEndEmpty(t *testing.T) { - assert := assert.New(t) - values := []time.Time{} - min, max := Time.StartAndEnd(values...) - assert.Equal(time.Time{}, min) - assert.Equal(time.Time{}, max) -} diff --git a/value.go b/value.go index 75eedbb..783e304 100644 --- a/value.go +++ b/value.go @@ -1,7 +1,5 @@ package chart -import util "github.com/wcharczuk/go-chart/util" - // Value is a chart value. type Value struct { Style Style @@ -23,7 +21,7 @@ func (vs Values) Values() []float64 { // ValuesNormalized returns normalized values. func (vs Values) ValuesNormalized() []float64 { - return util.Math.Normalize(vs.Values()...) + return Normalize(vs.Values()...) } // Normalize returns the values normalized. @@ -40,7 +38,7 @@ func (vs Values) Normalize() []Value { output = append(output, Value{ Style: v.Style, Label: v.Label, - Value: util.Math.RoundDown(v.Value/total, 0.0001), + Value: RoundDown(v.Value/total, 0.0001), }) } } diff --git a/seq/buffer.go b/value_buffer.go similarity index 79% rename from seq/buffer.go rename to value_buffer.go index be7c32e..8b0fc66 100644 --- a/seq/buffer.go +++ b/value_buffer.go @@ -1,10 +1,8 @@ -package seq +package chart import ( "fmt" "strings" - - util "github.com/wcharczuk/go-chart/util" ) const ( @@ -14,19 +12,15 @@ const ( bufferDefaultCapacity = 4 ) -var ( - emptyArray = make([]float64, 0) -) - -// NewBuffer creates a new value buffer with an optional set of values. -func NewBuffer(values ...float64) *Buffer { +// NewValueBuffer creates a new value buffer with an optional set of values. +func NewValueBuffer(values ...float64) *ValueBuffer { var tail int - array := make([]float64, util.Math.MaxInt(len(values), bufferDefaultCapacity)) + array := make([]float64, MaxInt(len(values), bufferDefaultCapacity)) if len(values) > 0 { copy(array, values) tail = len(values) } - return &Buffer{ + return &ValueBuffer{ array: array, head: 0, tail: tail, @@ -34,9 +28,9 @@ func NewBuffer(values ...float64) *Buffer { } } -// NewBufferWithCapacity creates a new ValueBuffer pre-allocated with the given capacity. -func NewBufferWithCapacity(capacity int) *Buffer { - return &Buffer{ +// NewValueBufferWithCapacity creates a new ValueBuffer pre-allocated with the given capacity. +func NewValueBufferWithCapacity(capacity int) *ValueBuffer { + return &ValueBuffer{ array: make([]float64, capacity), head: 0, tail: 0, @@ -44,11 +38,11 @@ func NewBufferWithCapacity(capacity int) *Buffer { } } -// Buffer is a fifo datastructure that is backed by a pre-allocated array. +// ValueBuffer is a fifo datastructure that is backed by a pre-allocated array. // Instead of allocating a whole new node object for each element, array elements are re-used (which saves GC churn). // Enqueue can be O(n), Dequeue is generally O(1). // Buffer implements `seq.Provider` -type Buffer struct { +type ValueBuffer struct { array []float64 head int tail int @@ -57,23 +51,23 @@ type Buffer struct { // Len returns the length of the Buffer (as it is currently populated). // Actual memory footprint may be different. -func (b *Buffer) Len() int { +func (b *ValueBuffer) Len() int { return b.size } // GetValue implements seq provider. -func (b *Buffer) GetValue(index int) float64 { +func (b *ValueBuffer) GetValue(index int) float64 { effectiveIndex := (b.head + index) % len(b.array) return b.array[effectiveIndex] } // Capacity returns the total size of the Buffer, including empty elements. -func (b *Buffer) Capacity() int { +func (b *ValueBuffer) Capacity() int { return len(b.array) } // SetCapacity sets the capacity of the Buffer. -func (b *Buffer) SetCapacity(capacity int) { +func (b *ValueBuffer) SetCapacity(capacity int) { newArray := make([]float64, capacity) if b.size > 0 { if b.head < b.tail { @@ -93,7 +87,7 @@ func (b *Buffer) SetCapacity(capacity int) { } // Clear removes all objects from the Buffer. -func (b *Buffer) Clear() { +func (b *ValueBuffer) Clear() { b.array = make([]float64, bufferDefaultCapacity) b.head = 0 b.tail = 0 @@ -101,7 +95,7 @@ func (b *Buffer) Clear() { } // Enqueue adds an element to the "back" of the Buffer. -func (b *Buffer) Enqueue(value float64) { +func (b *ValueBuffer) Enqueue(value float64) { if b.size == len(b.array) { newCapacity := int(len(b.array) * int(bufferGrowFactor/100)) if newCapacity < (len(b.array) + bufferMinimumGrow) { @@ -116,7 +110,7 @@ func (b *Buffer) Enqueue(value float64) { } // Dequeue removes the first element from the RingBuffer. -func (b *Buffer) Dequeue() float64 { +func (b *ValueBuffer) Dequeue() float64 { if b.size == 0 { return 0 } @@ -128,7 +122,7 @@ func (b *Buffer) Dequeue() float64 { } // Peek returns but does not remove the first element. -func (b *Buffer) Peek() float64 { +func (b *ValueBuffer) Peek() float64 { if b.size == 0 { return 0 } @@ -136,7 +130,7 @@ func (b *Buffer) Peek() float64 { } // PeekBack returns but does not remove the last element. -func (b *Buffer) PeekBack() float64 { +func (b *ValueBuffer) PeekBack() float64 { if b.size == 0 { return 0 } @@ -147,7 +141,7 @@ func (b *Buffer) PeekBack() float64 { } // TrimExcess resizes the capacity of the buffer to better fit the contents. -func (b *Buffer) TrimExcess() { +func (b *ValueBuffer) TrimExcess() { threshold := float64(len(b.array)) * 0.9 if b.size < int(threshold) { b.SetCapacity(b.size) @@ -155,7 +149,7 @@ func (b *Buffer) TrimExcess() { } // Array returns the ring buffer, in order, as an array. -func (b *Buffer) Array() Array { +func (b *ValueBuffer) Array() SeqArray { newArray := make([]float64, b.size) if b.size == 0 { @@ -169,11 +163,11 @@ func (b *Buffer) Array() Array { arrayCopy(b.array, 0, newArray, len(b.array)-b.head, b.tail) } - return Array(newArray) + return SeqArray(newArray) } // Each calls the consumer for each element in the buffer. -func (b *Buffer) Each(mapfn func(int, float64)) { +func (b *ValueBuffer) Each(mapfn func(int, float64)) { if b.size == 0 { return } @@ -197,7 +191,7 @@ func (b *Buffer) Each(mapfn func(int, float64)) { } // String returns a string representation for value buffers. -func (b *Buffer) String() string { +func (b *ValueBuffer) String() string { var values []string for _, elem := range b.Array() { values = append(values, fmt.Sprintf("%v", elem)) diff --git a/seq/buffer_test.go b/value_buffer_test.go similarity index 52% rename from seq/buffer_test.go rename to value_buffer_test.go index fb177d2..96be1bf 100644 --- a/seq/buffer_test.go +++ b/value_buffer_test.go @@ -1,4 +1,4 @@ -package seq +package chart import ( "testing" @@ -6,10 +6,10 @@ import ( "github.com/blend/go-sdk/assert" ) -func TestBuffer(t *testing.T) { +func TestRingBuffer(t *testing.T) { assert := assert.New(t) - buffer := NewBuffer() + buffer := NewRingBuffer() buffer.Enqueue(1) assert.Equal(1, buffer.Len()) @@ -96,14 +96,14 @@ func TestBuffer(t *testing.T) { value = buffer.Dequeue() assert.Equal(8, value) assert.Equal(0, buffer.Len()) - assert.Zero(buffer.Peek()) - assert.Zero(buffer.PeekBack()) + assert.Nil(buffer.Peek()) + assert.Nil(buffer.PeekBack()) } -func TestBufferClear(t *testing.T) { +func TestRingBufferClear(t *testing.T) { assert := assert.New(t) - buffer := NewBuffer() + buffer := NewRingBuffer() buffer.Enqueue(1) buffer.Enqueue(1) buffer.Enqueue(1) @@ -117,21 +117,21 @@ func TestBufferClear(t *testing.T) { buffer.Clear() assert.Equal(0, buffer.Len()) - assert.Zero(buffer.Peek()) - assert.Zero(buffer.PeekBack()) + assert.Nil(buffer.Peek()) + assert.Nil(buffer.PeekBack()) } -func TestBufferArray(t *testing.T) { +func TestRingBufferContents(t *testing.T) { assert := assert.New(t) - buffer := NewBuffer() + buffer := NewRingBuffer() buffer.Enqueue(1) buffer.Enqueue(2) buffer.Enqueue(3) buffer.Enqueue(4) buffer.Enqueue(5) - contents := buffer.Array() + contents := buffer.Contents() assert.Len(contents, 5) assert.Equal(1, contents[0]) assert.Equal(2, contents[1]) @@ -140,53 +140,145 @@ func TestBufferArray(t *testing.T) { assert.Equal(5, contents[4]) } -func TestBufferEach(t *testing.T) { +func TestRingBufferDrain(t *testing.T) { assert := assert.New(t) - buffer := NewBuffer() + buffer := NewRingBuffer() + buffer.Enqueue(1) + buffer.Enqueue(2) + buffer.Enqueue(3) + buffer.Enqueue(4) + buffer.Enqueue(5) + + contents := buffer.Drain() + assert.Len(contents, 5) + assert.Equal(1, contents[0]) + assert.Equal(2, contents[1]) + assert.Equal(3, contents[2]) + assert.Equal(4, contents[3]) + assert.Equal(5, contents[4]) + + assert.Equal(0, buffer.Len()) + assert.Nil(buffer.Peek()) + assert.Nil(buffer.PeekBack()) +} + +func TestRingBufferEach(t *testing.T) { + assert := assert.New(t) + + buffer := NewRingBuffer() for x := 1; x < 17; x++ { - buffer.Enqueue(float64(x)) + buffer.Enqueue(x) } called := 0 - buffer.Each(func(_ int, v float64) { - if v == float64(called+1) { - called++ + buffer.Each(func(v interface{}) { + if typed, isTyped := v.(int); isTyped { + if typed == (called + 1) { + called++ + } } }) assert.Equal(16, called) } -func TestNewBuffer(t *testing.T) { +func TestRingBufferEachUntil(t *testing.T) { assert := assert.New(t) - empty := NewBuffer() - assert.NotNil(empty) - assert.Zero(empty.Len()) - assert.Equal(bufferDefaultCapacity, empty.Capacity()) - assert.Zero(empty.Peek()) - assert.Zero(empty.PeekBack()) -} + buffer := NewRingBuffer() -func TestNewBufferWithValues(t *testing.T) { - assert := assert.New(t) - - values := NewBuffer(1, 2, 3, 4, 5) - assert.NotNil(values) - assert.Equal(5, values.Len()) - assert.Equal(1, values.Peek()) - assert.Equal(5, values.PeekBack()) -} - -func TestBufferGrowth(t *testing.T) { - assert := assert.New(t) - - values := NewBuffer(1, 2, 3, 4, 5) - for i := 0; i < 1<<10; i++ { - values.Enqueue(float64(i)) + for x := 1; x < 17; x++ { + buffer.Enqueue(x) } - assert.Equal(1<<10-1, values.PeekBack()) + called := 0 + buffer.EachUntil(func(v interface{}) bool { + if typed, isTyped := v.(int); isTyped { + if typed > 10 { + return false + } + if typed == (called + 1) { + called++ + } + } + return true + }) + + assert.Equal(10, called) +} + +func TestRingBufferReverseEachUntil(t *testing.T) { + assert := assert.New(t) + + buffer := NewRingBufferWithCapacity(32) + + for x := 1; x < 17; x++ { + buffer.Enqueue(x) + } + + var values []int + buffer.ReverseEachUntil(func(v interface{}) bool { + if typed, isTyped := v.(int); isTyped { + if typed < 10 { + return false + } + values = append(values, typed) + return true + } + panic("value is not an integer") + }) + + assert.Len(values, 7) + assert.Equal(16, values[0]) + assert.Equal(10, values[6]) +} + +func TestRingBufferReverseEachUntilUndersized(t *testing.T) { + assert := assert.New(t) + + buffer := NewRingBuffer() + + for x := 1; x < 17; x++ { + buffer.Enqueue(x) + } + + var values []int + buffer.ReverseEachUntil(func(v interface{}) bool { + if typed, isTyped := v.(int); isTyped { + if typed < 10 { + return false + } + values = append(values, typed) + return true + } + panic("value is not an integer") + }) + + assert.Len(values, 7) + assert.Equal(16, values[0]) + assert.Equal(10, values[6]) +} + +func TestRingBufferConsume(t *testing.T) { + assert := assert.New(t) + + buffer := NewRingBuffer() + + for x := 1; x < 17; x++ { + buffer.Enqueue(x) + } + + assert.Equal(16, buffer.Len()) + + var called int + buffer.Consume(func(v interface{}) { + if _, isTyped := v.(int); isTyped { + called++ + } + }) + + assert.Equal(16, called) + assert.Zero(buffer.Len()) } diff --git a/value_formatter_test.go b/value_formatter_test.go index a47e45d..623a399 100644 --- a/value_formatter_test.go +++ b/value_formatter_test.go @@ -5,14 +5,13 @@ import ( "time" "github.com/blend/go-sdk/assert" - "github.com/wcharczuk/go-chart/util" ) func TestTimeValueFormatterWithFormat(t *testing.T) { assert := assert.New(t) d := time.Now() - di := util.Time.ToFloat64(d) + di := TimeToFloat64(d) df := float64(di) s := formatTime(d, DefaultDateFormat) diff --git a/vector_renderer.go b/vector_renderer.go index 71c6a86..d70fcc5 100644 --- a/vector_renderer.go +++ b/vector_renderer.go @@ -11,7 +11,6 @@ import ( "github.com/golang/freetype/truetype" "github.com/wcharczuk/go-chart/drawing" - "github.com/wcharczuk/go-chart/util" ) // SVG returns a new png/raster renderer. @@ -30,7 +29,7 @@ func SVG(width, height int) (Renderer, error) { // SVGWithCSS returns a new png/raster renderer with attached custom CSS // The optional nonce argument sets a CSP nonce. -func SVGWithCSS(css string, nonce string) (func(width, height int)(Renderer, error)) { +func SVGWithCSS(css string, nonce string) func(width, height int) (Renderer, error) { return func(width, height int) (Renderer, error) { buffer := bytes.NewBuffer([]byte{}) canvas := newCanvas(buffer) @@ -114,8 +113,8 @@ func (vr *vectorRenderer) QuadCurveTo(cx, cy, x, y int) { } func (vr *vectorRenderer) ArcTo(cx, cy int, rx, ry, startAngle, delta float64) { - startAngle = util.Math.RadianAdd(startAngle, _pi2) - endAngle := util.Math.RadianAdd(startAngle, delta) + startAngle = RadianAdd(startAngle, _pi2) + endAngle := RadianAdd(startAngle, delta) startx := cx + int(rx*math.Sin(startAngle)) starty := cy - int(ry*math.Cos(startAngle)) @@ -129,7 +128,7 @@ func (vr *vectorRenderer) ArcTo(cx, cy int, rx, ry, startAngle, delta float64) { endx := cx + int(rx*math.Sin(endAngle)) endy := cy - int(ry*math.Cos(endAngle)) - dd := util.Math.RadiansToDegrees(delta) + dd := RadiansToDegrees(delta) largeArcFlag := 0 if delta > _pi { @@ -206,7 +205,7 @@ func (vr *vectorRenderer) MeasureText(body string) (box Box) { if vr.c.textTheta == nil { return } - box = box.Corners().Rotate(util.Math.RadiansToDegrees(*vr.c.textTheta)).Box() + box = box.Corners().Rotate(RadiansToDegrees(*vr.c.textTheta)).Box() } return } @@ -272,7 +271,7 @@ func (c *canvas) Text(x, y int, body string, style Style) { if c.textTheta == nil { c.w.Write([]byte(fmt.Sprintf(`%s`, x, y, c.styleAsSVG(style), body))) } else { - transform := fmt.Sprintf(` transform="rotate(%0.2f,%d,%d)"`, util.Math.RadiansToDegrees(*c.textTheta), x, y) + transform := fmt.Sprintf(` transform="rotate(%0.2f,%d,%d)"`, RadiansToDegrees(*c.textTheta), x, y) c.w.Write([]byte(fmt.Sprintf(`%s`, x, y, c.styleAsSVG(style), transform, body))) } } diff --git a/xaxis.go b/xaxis.go index d97616c..8b86316 100644 --- a/xaxis.go +++ b/xaxis.go @@ -2,8 +2,6 @@ package chart import ( "math" - - util "github.com/wcharczuk/go-chart/util" ) // XAxis represents the horizontal axis. @@ -105,9 +103,9 @@ func (xa XAxis) Measure(r Renderer, canvasBox Box, ra Range, defaults Style, tic break } - left = util.Math.MinInt(left, ltx) - right = util.Math.MaxInt(right, rtx) - bottom = util.Math.MaxInt(bottom, ty) + left = MinInt(left, ltx) + right = MaxInt(right, rtx) + bottom = MaxInt(bottom, ty) } if xa.NameStyle.Show && len(xa.Name) > 0 { @@ -159,7 +157,7 @@ func (xa XAxis) Render(r Renderer, canvasBox Box, ra Range, defaults Style, tick ty = canvasBox.Bottom + (2 * DefaultXAxisMargin) } Draw.Text(r, t.Label, tx, ty, tickWithAxisStyle) - maxTextHeight = util.Math.MaxInt(maxTextHeight, tb.Height()) + maxTextHeight = MaxInt(maxTextHeight, tb.Height()) break case TickPositionBetweenTicks: if index > 0 { @@ -175,7 +173,7 @@ func (xa XAxis) Render(r Renderer, canvasBox Box, ra Range, defaults Style, tick }, finalTickStyle) ftb := Text.MeasureLines(r, Text.WrapFit(r, t.Label, tx-ltx, finalTickStyle), finalTickStyle) - maxTextHeight = util.Math.MaxInt(maxTextHeight, ftb.Height()) + maxTextHeight = MaxInt(maxTextHeight, ftb.Height()) } break } diff --git a/yaxis.go b/yaxis.go index 3549888..3921545 100644 --- a/yaxis.go +++ b/yaxis.go @@ -2,8 +2,6 @@ package chart import ( "math" - - util "github.com/wcharczuk/go-chart/util" ) // YAxis is a veritcal rule of the range. @@ -105,18 +103,18 @@ func (ya YAxis) Measure(r Renderer, canvasBox Box, ra Range, defaults Style, tic finalTextX = tx - tb.Width() } - maxTextHeight = util.Math.MaxInt(tb.Height(), maxTextHeight) + maxTextHeight = MaxInt(tb.Height(), maxTextHeight) if ya.AxisType == YAxisPrimary { minx = canvasBox.Right - maxx = util.Math.MaxInt(maxx, tx+tb.Width()) + maxx = MaxInt(maxx, tx+tb.Width()) } else if ya.AxisType == YAxisSecondary { - minx = util.Math.MinInt(minx, finalTextX) - maxx = util.Math.MaxInt(maxx, tx) + minx = MinInt(minx, finalTextX) + maxx = MaxInt(maxx, tx) } - miny = util.Math.MinInt(miny, ly-tbh2) - maxy = util.Math.MaxInt(maxy, ly+tbh2) + miny = MinInt(miny, ly-tbh2) + maxy = MaxInt(maxy, ly+tbh2) } if ya.NameStyle.Show && len(ya.Name) > 0 { From 5f42a580a98589e4f0acf5658ce3f0e7bc59df3f Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Wed, 13 Feb 2019 18:55:13 -0800 Subject: [PATCH 37/73] mostly working --- _examples/custom_padding/main.go | 4 +- _examples/linear_regression/main.go | 2 +- _examples/min_max/main.go | 2 +- _examples/poly_regression/main.go | 2 +- _examples/request_timings/main.go | 145 +++++++++--------- _examples/scatter/main.go | 11 +- _examples/simple_moving_average/main.go | 7 +- _examples/stacked_bar/main.go | 2 +- _examples/stock_analysis/main.go | 2 +- _examples/text_rotation/main.go | 2 +- _examples/timeseries/main.go | 2 +- _examples/twoaxis/main.go | 5 +- _examples/twopoint/main.go | 2 +- annotation_series.go | 4 +- annotation_series_test.go | 2 - array.go | 24 +++ bar_chart.go | 14 +- bar_chart_test.go | 30 ++-- bollinger_band_series.go | 4 +- bollinger_band_series_test.go | 8 +- chart.go | 54 +++---- chart_test.go | 63 ++++---- cmd/chart/main.go | 132 ++++++----------- concat_series_test.go | 12 +- continuous_range.go | 3 + continuous_series.go | 8 +- continuous_series_test.go | 12 +- ema_series_test.go | 3 +- histogram_series_test.go | 5 +- legend.go | 6 +- linear_regression_series_test.go | 13 +- linear_sequence.go | 73 +++++++++ logger.go | 129 ++++++++++++++++ parse.go | 8 +- pie_chart.go | 2 +- random_sequence.go | 92 ++++++++++++ seq.go | 178 ++-------------------- seq_test.go | 136 +++++++++++++++++ sma_series_test.go | 13 +- stacked_bar_chart.go | 10 +- style.go | 27 ++-- times.go | 43 ++++++ timeutil.go | 45 ++++++ value_buffer.go | 4 +- value_buffer_test.go | 188 ++++++------------------ xaxis.go | 8 +- yaxis.go | 10 +- 47 files changed, 914 insertions(+), 637 deletions(-) create mode 100644 array.go create mode 100644 linear_sequence.go create mode 100644 logger.go create mode 100644 random_sequence.go create mode 100644 seq_test.go create mode 100644 times.go diff --git a/_examples/custom_padding/main.go b/_examples/custom_padding/main.go index 0de71d9..a705054 100644 --- a/_examples/custom_padding/main.go +++ b/_examples/custom_padding/main.go @@ -27,7 +27,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, Series: []chart.Series{ chart.ContinuousSeries{ - XValues: seq.Range(1.0, 100.0), + XValues: SeqRange(1.0, 100.0), YValues: seq.RandomValuesWithMax(100, 512), }, }, @@ -50,7 +50,7 @@ func drawChartDefault(res http.ResponseWriter, req *http.Request) { }, Series: []chart.Series{ chart.ContinuousSeries{ - XValues: seq.Range(1.0, 100.0), + XValues: SeqRange(1.0, 100.0), YValues: seq.RandomValuesWithMax(100, 512), }, }, diff --git a/_examples/linear_regression/main.go b/_examples/linear_regression/main.go index eb4cc60..9daf3a6 100644 --- a/_examples/linear_regression/main.go +++ b/_examples/linear_regression/main.go @@ -16,7 +16,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { mainSeries := chart.ContinuousSeries{ Name: "A test series", - XValues: seq.Range(1.0, 100.0), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. + XValues: SeqRange(1.0, 100.0), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. YValues: seq.RandomValuesWithMax(100, 100), //generates a []float64 randomly from 0 to 100 with 100 elements. } diff --git a/_examples/min_max/main.go b/_examples/min_max/main.go index a0cb4b1..cd112a0 100644 --- a/_examples/min_max/main.go +++ b/_examples/min_max/main.go @@ -10,7 +10,7 @@ import ( func drawChart(res http.ResponseWriter, req *http.Request) { mainSeries := chart.ContinuousSeries{ Name: "A test series", - XValues: seq.Range(1.0, 100.0), + XValues: SeqRange(1.0, 100.0), YValues: seq.New(seq.NewRandom().WithLen(100).WithMax(150).WithMin(50)).Array(), } diff --git a/_examples/poly_regression/main.go b/_examples/poly_regression/main.go index 27a39a3..81a7a27 100644 --- a/_examples/poly_regression/main.go +++ b/_examples/poly_regression/main.go @@ -16,7 +16,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { mainSeries := chart.ContinuousSeries{ Name: "A test series", - XValues: seq.Range(1.0, 100.0), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. + XValues: SeqRange(1.0, 100.0), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. YValues: seq.RandomValuesWithMax(100, 100), //generates a []float64 randomly from 0 to 100 with 100 elements. } diff --git a/_examples/request_timings/main.go b/_examples/request_timings/main.go index ccea8e4..b1a8929 100644 --- a/_examples/request_timings/main.go +++ b/_examples/request_timings/main.go @@ -4,7 +4,6 @@ import ( "fmt" "net/http" "strconv" - "strings" "time" chart "github.com/wcharczuk/go-chart" @@ -24,7 +23,7 @@ func readData() ([]time.Time, []float64) { var xvalues []time.Time var yvalues []float64 err := chart.ReadLines("requests.csv", func(line string) error { - parts := strings.Split(line, ",") + parts := chart.SplitCSV(line) year := parseInt(parts[0]) month := parseInt(parts[1]) day := parseInt(parts[2]) @@ -51,84 +50,84 @@ func releases() []chart.GridLine { } } -func drawChart(res http.ResponseWriter, req *http.Request) { - xvalues, yvalues := readData() - mainSeries := chart.TimeSeries{ - Name: "Prod Request Timings", - Style: chart.Style{ - Show: true, - StrokeColor: chart.ColorBlue, - FillColor: chart.ColorBlue.WithAlpha(100), - }, - XValues: xvalues, - YValues: yvalues, - } - - linreg := &chart.LinearRegressionSeries{ - Name: "Linear Regression", - Style: chart.Style{ - Show: true, - StrokeColor: chart.ColorAlternateBlue, - StrokeDashArray: []float64{5.0, 5.0}, - }, - InnerSeries: mainSeries, - } - - sma := &chart.SMASeries{ - Name: "SMA", - Style: chart.Style{ - Show: true, - StrokeColor: chart.ColorRed, - StrokeDashArray: []float64{5.0, 5.0}, - }, - InnerSeries: mainSeries, - } - - graph := chart.Chart{ - Width: 1280, - Height: 720, - Background: chart.Style{ - Padding: chart.Box{ - Top: 50, +func drawChart(log chart.Logger) http.HandlerFunc { + return func(res http.ResponseWriter, req *http.Request) { + xvalues, yvalues := readData() + mainSeries := chart.TimeSeries{ + Name: "Prod Request Timings", + Style: chart.Style{ + StrokeColor: chart.ColorBlue, + FillColor: chart.ColorBlue.WithAlpha(100), }, - }, - YAxis: chart.YAxis{ - Name: "Elapsed Millis", - NameStyle: chart.StyleShow(), - Style: chart.StyleShow(), - TickStyle: chart.Style{ - TextRotationDegrees: 45.0, + XValues: xvalues, + YValues: yvalues, + } + + linreg := &chart.LinearRegressionSeries{ + Name: "Linear Regression", + Style: chart.Style{ + StrokeColor: chart.ColorAlternateBlue, + StrokeDashArray: []float64{5.0, 5.0}, }, - ValueFormatter: func(v interface{}) string { - return fmt.Sprintf("%d ms", int(v.(float64))) + InnerSeries: mainSeries, + } + + sma := &chart.SMASeries{ + Name: "SMA", + Style: chart.Style{ + StrokeColor: chart.ColorRed, + StrokeDashArray: []float64{5.0, 5.0}, }, - }, - XAxis: chart.XAxis{ - Style: chart.StyleShow(), - ValueFormatter: chart.TimeHourValueFormatter, - GridMajorStyle: chart.Style{ - Show: true, - StrokeColor: chart.ColorAlternateGray, - StrokeWidth: 1.0, + InnerSeries: mainSeries, + } + + graph := chart.Chart{ + Log: log, + Width: 1280, + Height: 720, + Background: chart.Style{ + Padding: chart.Box{ + Top: 50, + }, }, - GridLines: releases(), - }, - Series: []chart.Series{ - mainSeries, - linreg, - chart.LastValueAnnotation(linreg), - sma, - chart.LastValueAnnotation(sma), - }, + YAxis: chart.YAxis{ + Name: "Elapsed Millis", + TickStyle: chart.Style{ + TextRotationDegrees: 45.0, + }, + ValueFormatter: func(v interface{}) string { + return fmt.Sprintf("%d ms", int(v.(float64))) + }, + }, + XAxis: chart.XAxis{ + ValueFormatter: chart.TimeHourValueFormatter, + GridMajorStyle: chart.Style{ + StrokeColor: chart.ColorAlternateGray, + StrokeWidth: 1.0, + }, + GridLines: releases(), + }, + Series: []chart.Series{ + mainSeries, + linreg, + chart.LastValueAnnotation(linreg), + sma, + chart.LastValueAnnotation(sma), + }, + } + + graph.Elements = []chart.Renderable{chart.LegendThin(&graph)} + + res.Header().Set("Content-Type", chart.ContentTypePNG) + if err := graph.Render(chart.PNG, res); err != nil { + log.Err(err) + } } - - graph.Elements = []chart.Renderable{chart.LegendThin(&graph)} - - res.Header().Set("Content-Type", chart.ContentTypePNG) - graph.Render(chart.PNG, res) } func main() { - http.HandleFunc("/", drawChart) + log := chart.NewLogger() + log.Infof("listening on :8080") + http.HandleFunc("/", drawChart(log)) http.ListenAndServe(":8080", nil) } diff --git a/_examples/scatter/main.go b/_examples/scatter/main.go index e20539a..99ba2e0 100644 --- a/_examples/scatter/main.go +++ b/_examples/scatter/main.go @@ -6,9 +6,8 @@ import ( _ "net/http/pprof" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" "github.com/wcharczuk/go-chart/drawing" - "github.com/wcharczuk/go-chart/seq" ) func drawChart(res http.ResponseWriter, req *http.Request) { @@ -26,8 +25,8 @@ func drawChart(res http.ResponseWriter, req *http.Request) { DotWidth: 5, DotColorProvider: viridisByY, }, - XValues: seq.Range(0, 127), - YValues: seq.New(seq.NewRandom().WithLen(128).WithMax(1024)).Array(), + XValues: chart.SeqRange(0, 127), + YValues: chart.NewSeq(chart.NewSeqRandom().WithLen(128).WithMax(1024)).Values(), }, }, } @@ -51,8 +50,8 @@ func unit(res http.ResponseWriter, req *http.Request) { }, Series: []chart.Series{ chart.ContinuousSeries{ - XValues: seq.RangeWithStep(0, 4, 1), - YValues: seq.RangeWithStep(0, 4, 1), + XValues: chart.SeqRangeWithStep(0, 4, 1), + YValues: chart.SeqRangeWithStep(0, 4, 1), }, }, } diff --git a/_examples/simple_moving_average/main.go b/_examples/simple_moving_average/main.go index 3020b0a..485dacb 100644 --- a/_examples/simple_moving_average/main.go +++ b/_examples/simple_moving_average/main.go @@ -3,16 +3,15 @@ package main import ( "net/http" - "github.com/wcharczuk/go-chart" - "github.com/wcharczuk/go-chart/seq" + chart "github.com/wcharczuk/go-chart" ) func drawChart(res http.ResponseWriter, req *http.Request) { mainSeries := chart.ContinuousSeries{ Name: "A test series", - XValues: seq.Range(1.0, 100.0), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. - YValues: seq.RandomValuesWithMax(100, 100), //generates a []float64 randomly from 0 to 100 with 100 elements. + XValues: chart.SeqRange(1.0, 100.0), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. + YValues: chart.SeqRandomValuesWithMax(100, 100), //generates a []float64 randomly from 0 to 100 with 100 elements. } // note we create a SimpleMovingAverage series by assignin the inner series. diff --git a/_examples/stacked_bar/main.go b/_examples/stacked_bar/main.go index 3a6f22e..3f5015d 100644 --- a/_examples/stacked_bar/main.go +++ b/_examples/stacked_bar/main.go @@ -5,7 +5,7 @@ import ( "log" "net/http" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" ) func drawChart(res http.ResponseWriter, req *http.Request) { diff --git a/_examples/stock_analysis/main.go b/_examples/stock_analysis/main.go index 397e70f..9e28889 100644 --- a/_examples/stock_analysis/main.go +++ b/_examples/stock_analysis/main.go @@ -4,7 +4,7 @@ import ( "net/http" "time" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" "github.com/wcharczuk/go-chart/drawing" ) diff --git a/_examples/text_rotation/main.go b/_examples/text_rotation/main.go index 76bb2b0..4fa60ef 100644 --- a/_examples/text_rotation/main.go +++ b/_examples/text_rotation/main.go @@ -3,7 +3,7 @@ package main import ( "net/http" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" "github.com/wcharczuk/go-chart/drawing" ) diff --git a/_examples/timeseries/main.go b/_examples/timeseries/main.go index b77f554..c2e05ff 100644 --- a/_examples/timeseries/main.go +++ b/_examples/timeseries/main.go @@ -4,7 +4,7 @@ import ( "net/http" "time" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" ) func drawChart(res http.ResponseWriter, req *http.Request) { diff --git a/_examples/twoaxis/main.go b/_examples/twoaxis/main.go index 471cf85..a3ba063 100644 --- a/_examples/twoaxis/main.go +++ b/_examples/twoaxis/main.go @@ -4,8 +4,7 @@ import ( "fmt" "net/http" - "github.com/wcharczuk/go-chart" - util "github.com/wcharczuk/go-chart/util" + chart "github.com/wcharczuk/go-chart" ) func drawChart(res http.ResponseWriter, req *http.Request) { @@ -22,7 +21,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { TickPosition: chart.TickPositionBetweenTicks, ValueFormatter: func(v interface{}) string { typed := v.(float64) - typedDate := util.Time.FromFloat64(typed) + typedDate := chart.TimeFromFloat64(typed) return fmt.Sprintf("%d-%d\n%d", typedDate.Month(), typedDate.Day(), typedDate.Year()) }, }, diff --git a/_examples/twopoint/main.go b/_examples/twopoint/main.go index fc49641..9030f76 100644 --- a/_examples/twopoint/main.go +++ b/_examples/twopoint/main.go @@ -5,7 +5,7 @@ import ( "log" "os" - "github.com/wcharczuk/go-chart" + chart "github.com/wcharczuk/go-chart" ) func main() { diff --git a/annotation_series.go b/annotation_series.go index a251622..96e78f9 100644 --- a/annotation_series.go +++ b/annotation_series.go @@ -53,7 +53,7 @@ func (as AnnotationSeries) Measure(r Renderer, canvasBox Box, xrange, yrange Ran Right: 0, Bottom: 0, } - if as.Style.IsZero() || as.Style.Show { + if !as.Style.Hidden { seriesStyle := as.Style.InheritFrom(as.annotationStyleDefaults(defaults)) for _, a := range as.Annotations { style := a.Style.InheritFrom(seriesStyle) @@ -71,7 +71,7 @@ func (as AnnotationSeries) Measure(r Renderer, canvasBox Box, xrange, yrange Ran // Render draws the series. func (as AnnotationSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { - if as.Style.IsZero() || as.Style.Show { + if !as.Style.Hidden { seriesStyle := as.Style.InheritFrom(as.annotationStyleDefaults(defaults)) for _, a := range as.Annotations { style := a.Style.InheritFrom(seriesStyle) diff --git a/annotation_series_test.go b/annotation_series_test.go index 64ab4db..f5cd2da 100644 --- a/annotation_series_test.go +++ b/annotation_series_test.go @@ -13,7 +13,6 @@ func TestAnnotationSeriesMeasure(t *testing.T) { assert := assert.New(t) as := AnnotationSeries{ - Style: StyleShow(), Annotations: []Value2{ {XValue: 1.0, YValue: 1.0, Label: "1.0"}, {XValue: 2.0, YValue: 2.0, Label: "2.0"}, @@ -63,7 +62,6 @@ func TestAnnotationSeriesRender(t *testing.T) { as := AnnotationSeries{ Style: Style{ - Show: true, FillColor: drawing.ColorWhite, StrokeColor: drawing.ColorBlack, }, diff --git a/array.go b/array.go new file mode 100644 index 0000000..71b3ee7 --- /dev/null +++ b/array.go @@ -0,0 +1,24 @@ +package chart + +var ( + _ Sequence = (*Array)(nil) +) + +// NewArray returns a new array from a given set of values. +// Array implements Sequence, which allows it to be used with the sequence helpers. +func NewArray(values ...float64) Array { + return Array(values) +} + +// Array is a wrapper for an array of floats that implements `ValuesProvider`. +type Array []float64 + +// Len returns the value provider length. +func (a Array) Len() int { + return len(a) +} + +// GetValue returns the value at a given index. +func (a Array) GetValue(index int) float64 { + return a[index] +} diff --git a/bar_chart.go b/bar_chart.go index e6b9936..d61f3db 100644 --- a/bar_chart.go +++ b/bar_chart.go @@ -224,7 +224,7 @@ func (bc BarChart) drawBars(r Renderer, canvasBox Box, yr Range) { } func (bc BarChart) drawXAxis(r Renderer, canvasBox Box) { - if bc.XAxis.Show { + if !bc.XAxis.Hidden { axisStyle := bc.XAxis.InheritFrom(bc.styleDefaultsAxes()) axisStyle.WriteToRenderer(r) @@ -263,7 +263,7 @@ func (bc BarChart) drawXAxis(r Renderer, canvasBox Box) { } func (bc BarChart) drawYAxis(r Renderer, canvasBox Box, yr Range, ticks []Tick) { - if bc.YAxis.Style.Show { + if !bc.YAxis.Style.Hidden { axisStyle := bc.YAxis.Style.InheritFrom(bc.styleDefaultsAxes()) axisStyle.WriteToRenderer(r) @@ -294,7 +294,7 @@ func (bc BarChart) drawYAxis(r Renderer, canvasBox Box, yr Range, ticks []Tick) } func (bc BarChart) drawTitle(r Renderer) { - if len(bc.Title) > 0 && bc.TitleStyle.Show { + if len(bc.Title) > 0 && !bc.TitleStyle.Hidden { r.SetFont(bc.TitleStyle.GetFont(bc.GetFont())) r.SetFontColor(bc.TitleStyle.GetFontColor(bc.GetColorPalette().TextColor())) titleFontSize := bc.TitleStyle.GetFontSize(bc.getTitleFontSize()) @@ -325,7 +325,7 @@ func (bc BarChart) styleDefaultsCanvas() Style { } func (bc BarChart) hasAxes() bool { - return bc.YAxis.Style.Show + return !bc.YAxis.Style.Hidden } func (bc BarChart) setRangeDomains(canvasBox Box, yr Range) Range { @@ -345,7 +345,7 @@ func (bc BarChart) getValueFormatters() ValueFormatter { } func (bc BarChart) getAxesTicks(r Renderer, yr Range, yf ValueFormatter) (yticks []Tick) { - if bc.YAxis.Style.Show { + if !bc.YAxis.Style.Hidden { yticks = bc.YAxis.GetTicks(r, yr, bc.styleDefaultsAxes(), yf) } return @@ -391,7 +391,7 @@ func (bc BarChart) getAdjustedCanvasBox(r Renderer, canvasBox Box, yrange Range, _, _, totalWidth := bc.calculateScaledTotalWidth(canvasBox) - if bc.XAxis.Show { + if !bc.XAxis.Hidden { xaxisHeight := DefaultVerticalTickHeight axisStyle := bc.XAxis.InheritFrom(bc.styleDefaultsAxes()) @@ -423,7 +423,7 @@ func (bc BarChart) getAdjustedCanvasBox(r Renderer, canvasBox Box, yrange Range, axesOuterBox = axesOuterBox.Grow(xbox) } - if bc.YAxis.Style.Show { + if !bc.YAxis.Style.Hidden { axesBounds := bc.YAxis.Measure(r, canvasBox, yrange, bc.styleDefaultsAxes(), yticks) axesOuterBox = axesOuterBox.Grow(axesBounds) } diff --git a/bar_chart_test.go b/bar_chart_test.go index 14dc231..8a25cae 100644 --- a/bar_chart_test.go +++ b/bar_chart_test.go @@ -12,13 +12,8 @@ func TestBarChartRender(t *testing.T) { assert := assert.New(t) bc := BarChart{ - Width: 1024, - Title: "Test Title", - TitleStyle: StyleShow(), - XAxis: StyleShow(), - YAxis: YAxis{ - Style: StyleShow(), - }, + Width: 1024, + Title: "Test Title", Bars: []Value{ {Value: 1.0, Label: "One"}, {Value: 2.0, Label: "Two"}, @@ -38,13 +33,8 @@ func TestBarChartRenderZero(t *testing.T) { assert := assert.New(t) bc := BarChart{ - Width: 1024, - Title: "Test Title", - TitleStyle: StyleShow(), - XAxis: StyleShow(), - YAxis: YAxis{ - Style: StyleShow(), - }, + Width: 1024, + Title: "Test Title", Bars: []Value{ {Value: 0.0, Label: "One"}, {Value: 0.0, Label: "Two"}, @@ -183,12 +173,11 @@ func TestBarChartHasAxes(t *testing.T) { assert := assert.New(t) bc := BarChart{} - assert.False(bc.hasAxes()) - bc.YAxis = YAxis{ - Style: StyleShow(), - } - assert.True(bc.hasAxes()) + bc.YAxis = YAxis{ + Style: Hidden(), + } + assert.False(bc.hasAxes()) } func TestBarChartGetDefaultCanvasBox(t *testing.T) { @@ -237,10 +226,11 @@ func TestBarChartGetAxesTicks(t *testing.T) { yr := bc.getRanges() yf := bc.getValueFormatters() + bc.YAxis.Style.Hidden = true ticks := bc.getAxesTicks(r, yr, yf) assert.Empty(ticks) - bc.YAxis.Style.Show = true + bc.YAxis.Style.Hidden = false ticks = bc.getAxesTicks(r, yr, yf) assert.Len(ticks, 2) } diff --git a/bollinger_band_series.go b/bollinger_band_series.go index 6451f13..728b232 100644 --- a/bollinger_band_series.go +++ b/bollinger_band_series.go @@ -79,8 +79,8 @@ func (bbs *BollingerBandsSeries) GetBoundedValues(index int) (x, y1, y2 float64) bbs.valueBuffer.Enqueue(py) x = px - ay := NewSeq(bbs.valueBuffer).Average() - std := NewSeq(bbs.valueBuffer).StdDev() + ay := Seq{bbs.valueBuffer}.Average() + std := Seq{bbs.valueBuffer}.StdDev() y1 = ay + (bbs.GetK() * std) y2 = ay - (bbs.GetK() * std) diff --git a/bollinger_band_series_test.go b/bollinger_band_series_test.go index 6afa71b..d679960 100644 --- a/bollinger_band_series_test.go +++ b/bollinger_band_series_test.go @@ -12,8 +12,8 @@ func TestBollingerBandSeries(t *testing.T) { assert := assert.New(t) s1 := mockValuesProvider{ - X: SeqRange(1.0, 100.0), - Y: SeqRandomValuesWithMax(100, 1024), + X: LinearRange(1.0, 100.0), + Y: RandomValuesWithMax(100, 1024), } bbs := &BollingerBandsSeries{ @@ -37,8 +37,8 @@ func TestBollingerBandLastValue(t *testing.T) { assert := assert.New(t) s1 := mockValuesProvider{ - X: SeqRange(1.0, 100.0), - Y: SeqRange(1.0, 100.0), + X: LinearRange(1.0, 100.0), + Y: LinearRange(1.0, 100.0), } bbs := &BollingerBandsSeries{ diff --git a/chart.go b/chart.go index 986318a..411a9c6 100644 --- a/chart.go +++ b/chart.go @@ -32,6 +32,8 @@ type Chart struct { Series []Series Elements []Renderable + + Log Logger } // GetDPI returns the dpi for the chart. @@ -74,8 +76,8 @@ func (c Chart) Render(rp RendererProvider, w io.Writer) error { if len(c.Series) == 0 { return errors.New("please provide at least one series") } - if visibleSeriesErr := c.checkHasVisibleSeries(); visibleSeriesErr != nil { - return visibleSeriesErr + if err := c.checkHasVisibleSeries(); err != nil { + return err } c.YAxisSecondary.AxisType = YAxisSecondary @@ -142,16 +144,14 @@ func (c Chart) Render(rp RendererProvider, w io.Writer) error { } func (c Chart) checkHasVisibleSeries() error { - hasVisibleSeries := false var style Style for _, s := range c.Series { style = s.GetStyle() - hasVisibleSeries = hasVisibleSeries || (style.IsZero() || style.Show) + if !style.Hidden { + return nil + } } - if !hasVisibleSeries { - return fmt.Errorf("must have (1) visible series; make sure if you set a style, you set .Show = true") - } - return nil + return fmt.Errorf("chart render; must have (1) visible series") } func (c Chart) validateSeries() error { @@ -175,7 +175,7 @@ func (c Chart) getRanges() (xrange, yrange, yrangeAlt Range) { // note: a possible future optimization is to not scan the series values if // all axis are represented by either custom ticks or custom ranges. for _, s := range c.Series { - if s.GetStyle().IsZero() || s.GetStyle().Show { + if !s.GetStyle().Hidden { seriesAxis := s.GetYAxis() if bvp, isBoundedValuesProvider := s.(BoundedValuesProvider); isBoundedValuesProvider { seriesLength := bvp.Len() @@ -262,8 +262,7 @@ func (c Chart) getRanges() (xrange, yrange, yrangeAlt Range) { yrange.SetMin(miny) yrange.SetMax(maxy) - // only round if we're showing the axis - if c.YAxis.Style.Show { + if !c.YAxis.Style.Hidden { delta := yrange.GetDelta() roundTo := GetRoundToForDelta(delta) rmin, rmax := RoundDown(yrange.GetMin(), roundTo), RoundUp(yrange.GetMax(), roundTo) @@ -285,7 +284,7 @@ func (c Chart) getRanges() (xrange, yrange, yrangeAlt Range) { yrangeAlt.SetMin(minya) yrangeAlt.SetMax(maxya) - if c.YAxisSecondary.Style.Show { + if !c.YAxisSecondary.Style.Hidden { delta := yrangeAlt.GetDelta() roundTo := GetRoundToForDelta(delta) rmin, rmax := RoundDown(yrangeAlt.GetMin(), roundTo), RoundUp(yrangeAlt.GetMax(), roundTo) @@ -298,6 +297,7 @@ func (c Chart) getRanges() (xrange, yrange, yrangeAlt Range) { } func (c Chart) checkRanges(xr, yr, yra Range) error { + Debugf(c.Log, "checking xrange: %v", xr) xDelta := xr.GetDelta() if math.IsInf(xDelta, 0) { return errors.New("infinite x-range delta") @@ -309,6 +309,7 @@ func (c Chart) checkRanges(xr, yr, yra Range) error { return errors.New("zero x-range delta; there needs to be at least (2) values") } + Debugf(c.Log, "checking yrange: %v", yr) yDelta := yr.GetDelta() if math.IsInf(yDelta, 0) { return errors.New("infinite y-range delta") @@ -318,6 +319,7 @@ func (c Chart) checkRanges(xr, yr, yra Range) error { } if c.hasSecondarySeries() { + Debugf(c.Log, "checking secondary yrange: %v", yra) yraDelta := yra.GetDelta() if math.IsInf(yraDelta, 0) { return errors.New("infinite secondary y-range delta") @@ -360,17 +362,17 @@ func (c Chart) getValueFormatters() (x, y, ya ValueFormatter) { } func (c Chart) hasAxes() bool { - return c.XAxis.Style.Show || c.YAxis.Style.Show || c.YAxisSecondary.Style.Show + return !c.XAxis.Style.Hidden || !c.YAxis.Style.Hidden || !c.YAxisSecondary.Style.Hidden } func (c Chart) getAxesTicks(r Renderer, xr, yr, yar Range, xf, yf, yfa ValueFormatter) (xticks, yticks, yticksAlt []Tick) { - if c.XAxis.Style.Show { + if !c.XAxis.Style.Hidden { xticks = c.XAxis.GetTicks(r, xr, c.styleDefaultsAxes(), xf) } - if c.YAxis.Style.Show { + if !c.YAxis.Style.Hidden { yticks = c.YAxis.GetTicks(r, yr, c.styleDefaultsAxes(), yf) } - if c.YAxisSecondary.Style.Show { + if !c.YAxisSecondary.Style.Hidden { yticksAlt = c.YAxisSecondary.GetTicks(r, yar, c.styleDefaultsAxes(), yfa) } return @@ -378,15 +380,15 @@ func (c Chart) getAxesTicks(r Renderer, xr, yr, yar Range, xf, yf, yfa ValueForm func (c Chart) getAxesAdjustedCanvasBox(r Renderer, canvasBox Box, xr, yr, yra Range, xticks, yticks, yticksAlt []Tick) Box { axesOuterBox := canvasBox.Clone() - if c.XAxis.Style.Show { + if !c.XAxis.Style.Hidden { axesBounds := c.XAxis.Measure(r, canvasBox, xr, c.styleDefaultsAxes(), xticks) axesOuterBox = axesOuterBox.Grow(axesBounds) } - if c.YAxis.Style.Show { + if !c.YAxis.Style.Hidden { axesBounds := c.YAxis.Measure(r, canvasBox, yr, c.styleDefaultsAxes(), yticks) axesOuterBox = axesOuterBox.Grow(axesBounds) } - if c.YAxisSecondary.Style.Show { + if !c.YAxisSecondary.Style.Hidden { axesBounds := c.YAxisSecondary.Measure(r, canvasBox, yra, c.styleDefaultsAxes(), yticksAlt) axesOuterBox = axesOuterBox.Grow(axesBounds) } @@ -404,7 +406,7 @@ func (c Chart) setRangeDomains(canvasBox Box, xr, yr, yra Range) (Range, Range, func (c Chart) hasAnnotationSeries() bool { for _, s := range c.Series { if as, isAnnotationSeries := s.(AnnotationSeries); isAnnotationSeries { - if as.Style.IsZero() || as.Style.Show { + if !as.GetStyle().Hidden { return true } } @@ -425,7 +427,7 @@ func (c Chart) getAnnotationAdjustedCanvasBox(r Renderer, canvasBox Box, xr, yr, annotationSeriesBox := canvasBox.Clone() for seriesIndex, s := range c.Series { if as, isAnnotationSeries := s.(AnnotationSeries); isAnnotationSeries { - if as.Style.IsZero() || as.Style.Show { + if !as.GetStyle().Hidden { style := c.styleDefaultsSeries(seriesIndex) var annotationBounds Box if as.YAxis == YAxisPrimary { @@ -462,19 +464,19 @@ func (c Chart) drawCanvas(r Renderer, canvasBox Box) { } func (c Chart) drawAxes(r Renderer, canvasBox Box, xrange, yrange, yrangeAlt Range, xticks, yticks, yticksAlt []Tick) { - if c.XAxis.Style.Show { + if !c.XAxis.Style.Hidden { c.XAxis.Render(r, canvasBox, xrange, c.styleDefaultsAxes(), xticks) } - if c.YAxis.Style.Show { + if !c.YAxis.Style.Hidden { c.YAxis.Render(r, canvasBox, yrange, c.styleDefaultsAxes(), yticks) } - if c.YAxisSecondary.Style.Show { + if !c.YAxisSecondary.Style.Hidden { c.YAxisSecondary.Render(r, canvasBox, yrangeAlt, c.styleDefaultsAxes(), yticksAlt) } } func (c Chart) drawSeries(r Renderer, canvasBox Box, xrange, yrange, yrangeAlt Range, s Series, seriesIndex int) { - if s.GetStyle().IsZero() || s.GetStyle().Show { + if !s.GetStyle().Hidden { if s.GetYAxis() == YAxisPrimary { s.Render(r, canvasBox, xrange, yrange, c.styleDefaultsSeries(seriesIndex)) } else if s.GetYAxis() == YAxisSecondary { @@ -484,7 +486,7 @@ func (c Chart) drawSeries(r Renderer, canvasBox Box, xrange, yrange, yrangeAlt R } func (c Chart) drawTitle(r Renderer) { - if len(c.Title) > 0 && c.TitleStyle.Show { + if len(c.Title) > 0 && !c.TitleStyle.Hidden { r.SetFont(c.TitleStyle.GetFont(c.GetFont())) r.SetFontColor(c.TitleStyle.GetFontColor(c.GetColorPalette().TextColor())) titleFontSize := c.TitleStyle.GetFontSize(DefaultTitleFontSize) diff --git a/chart_test.go b/chart_test.go index 1f60c38..8810374 100644 --- a/chart_test.go +++ b/chart_test.go @@ -274,25 +274,44 @@ func TestChartGetValueFormatters(t *testing.T) { func TestChartHasAxes(t *testing.T) { assert := assert.New(t) - assert.False(Chart{}.hasAxes()) + assert.True(Chart{}.hasAxes()) + assert.False(Chart{XAxis: XAxis{Style: Hidden()}, YAxis: YAxis{Style: Hidden()}, YAxisSecondary: YAxis{Style: Hidden()}}.hasAxes()) x := Chart{ XAxis: XAxis{ - Style: StyleShow(), + Style: Hidden(), + }, + YAxis: YAxis{ + Style: Shown(), + }, + YAxisSecondary: YAxis{ + Style: Hidden(), }, } assert.True(x.hasAxes()) y := Chart{ + XAxis: XAxis{ + Style: Shown(), + }, YAxis: YAxis{ - Style: StyleShow(), + Style: Hidden(), + }, + YAxisSecondary: YAxis{ + Style: Hidden(), }, } assert.True(y.hasAxes()) ya := Chart{ + XAxis: XAxis{ + Style: Hidden(), + }, + YAxis: YAxis{ + Style: Hidden(), + }, YAxisSecondary: YAxis{ - Style: StyleShow(), + Style: Shown(), }, } assert.True(ya.hasAxes()) @@ -306,15 +325,12 @@ func TestChartGetAxesTicks(t *testing.T) { c := Chart{ XAxis: XAxis{ - Style: StyleShow(), Range: &ContinuousRange{Min: 9.8, Max: 19.8}, }, YAxis: YAxis{ - Style: StyleShow(), Range: &ContinuousRange{Min: 9.9, Max: 19.9}, }, YAxisSecondary: YAxis{ - Style: StyleShow(), Range: &ContinuousRange{Min: 9.7, Max: 19.7}, }, } @@ -330,20 +346,15 @@ func TestChartSingleSeries(t *testing.T) { assert := assert.New(t) now := time.Now() c := Chart{ - Title: "Hello!", - TitleStyle: StyleShow(), - Width: 1024, - Height: 400, + Title: "Hello!", + Width: 1024, + Height: 400, YAxis: YAxis{ - Style: StyleShow(), Range: &ContinuousRange{ Min: 0.0, Max: 4.0, }, }, - XAxis: XAxis{ - Style: StyleShow(), - }, Series: []Series{ TimeSeries{ Name: "goog", @@ -386,8 +397,8 @@ func TestChartRegressionBadRangesByUser(t *testing.T) { }, Series: []Series{ ContinuousSeries{ - XValues: SeqRange(1.0, 10.0), - YValues: SeqRange(1.0, 10.0), + XValues: LinearRange(1.0, 10.0), + YValues: LinearRange(1.0, 10.0), }, }, } @@ -402,8 +413,8 @@ func TestChartValidatesSeries(t *testing.T) { c := Chart{ Series: []Series{ ContinuousSeries{ - XValues: SeqRange(1.0, 10.0), - YValues: SeqRange(1.0, 10.0), + XValues: LinearRange(1.0, 10.0), + YValues: LinearRange(1.0, 10.0), }, }, } @@ -413,7 +424,7 @@ func TestChartValidatesSeries(t *testing.T) { c = Chart{ Series: []Series{ ContinuousSeries{ - XValues: SeqRange(1.0, 10.0), + XValues: LinearRange(1.0, 10.0), }, }, } @@ -483,8 +494,8 @@ func TestChartE2ELine(t *testing.T) { }, Series: []Series{ ContinuousSeries{ - XValues: seq.RangeWithStep(0, 4, 1), - YValues: seq.RangeWithStep(0, 4, 1), + XValues: LinearRangeWithStep(0, 4, 1), + YValues: LinearRangeWithStep(0, 4, 1), }, }, } @@ -524,16 +535,18 @@ func TestChartE2ELineWithFill(t *testing.T) { Series: []Series{ ContinuousSeries{ Style: Style{ - Show: true, StrokeColor: drawing.ColorBlue, FillColor: drawing.ColorRed, }, - XValues: seq.RangeWithStep(0, 4, 1), - YValues: seq.RangeWithStep(0, 4, 1), + XValues: LinearRangeWithStep(0, 4, 1), + YValues: LinearRangeWithStep(0, 4, 1), }, }, } + assert.Equal(5, len(c.Series[0].(ContinuousSeries).XValues)) + assert.Equal(5, len(c.Series[0].(ContinuousSeries).YValues)) + var buffer = &bytes.Buffer{} err := c.Render(PNG, buffer) assert.Nil(err) diff --git a/cmd/chart/main.go b/cmd/chart/main.go index 9ad23d3..216062a 100644 --- a/cmd/chart/main.go +++ b/cmd/chart/main.go @@ -3,118 +3,78 @@ package main import ( "flag" "fmt" - "io" "io/ioutil" "os" - "time" + "strings" chart "github.com/wcharczuk/go-chart" ) var ( outputPath = flag.String("output", "", "The output file") + inputFormat = flag.String("format", "csv", "The input format, either 'csv' or 'tsv' (defaults to 'csv')") + inputPath = flag.String("f", "", "The input file") disableLinreg = flag.Bool("disable-linreg", false, "If we should omit linear regressions") disableLastValues = flag.Bool("disable-last-values", false, "If we should omit last values") ) -// NewLogger returns a new logger. -func NewLogger() *Logger { - return &Logger{ - TimeFormat: time.RFC3339Nano, - Stdout: os.Stdout, - Stderr: os.Stderr, - } -} +func main() { + flag.Parse() + log := chart.NewLogger() -// Logger is a basic logger. -type Logger struct { - TimeFormat string - Stdout io.Writer - Stderr io.Writer -} - -// Info writes an info message. -func (l *Logger) Info(arguments ...interface{}) { - l.Println(append([]interface{}{"[INFO]"}, arguments...)...) -} - -// Infof writes an info message. -func (l *Logger) Infof(format string, arguments ...interface{}) { - l.Println(append([]interface{}{"[INFO]"}, fmt.Sprintf(format, arguments...))...) -} - -// Debug writes an debug message. -func (l *Logger) Debug(arguments ...interface{}) { - l.Println(append([]interface{}{"[DEBUG]"}, arguments...)...) -} - -// Debugf writes an debug message. -func (l *Logger) Debugf(format string, arguments ...interface{}) { - l.Println(append([]interface{}{"[DEBUG]"}, fmt.Sprintf(format, arguments...))...) -} - -// Error writes an error message. -func (l *Logger) Error(arguments ...interface{}) { - l.Println(append([]interface{}{"[ERROR]"}, arguments...)...) -} - -// Errorf writes an error message. -func (l *Logger) Errorf(format string, arguments ...interface{}) { - l.Println(append([]interface{}{"[ERROR]"}, fmt.Sprintf(format, arguments...))...) -} - -// Err writes an error message. -func (l *Logger) Err(err error) { - if err != nil { - l.Println(append([]interface{}{"[ERROR]"}, err.Error())...) - } -} - -// FatalErr writes an error message and exits. -func (l *Logger) FatalErr(err error) { - if err != nil { - l.Println(append([]interface{}{"[FATAL]"}, err.Error())...) + var rawData []byte + var err error + if *inputPath != "" { + if *inputPath == "-" { + rawData, err = ioutil.ReadAll(os.Stdin) + if err != nil { + log.FatalErr(err) + } + } else { + rawData, err = ioutil.ReadFile(*inputPath) + if err != nil { + log.FatalErr(err) + } + } + } else if len(flag.Args()) > 0 { + rawData = []byte(flag.Args()[0]) + } else { + flag.Usage() os.Exit(1) } -} -// Println prints a new message. -func (l *Logger) Println(arguments ...interface{}) { - fmt.Fprintln(l.Stdout, append([]interface{}{time.Now().UTC().Format(l.TimeFormat)}, arguments...)...) -} + var parts []string + switch *inputFormat { + case "csv": + parts = chart.SplitCSV(string(rawData)) + case "tsv": + parts = strings.Split(string(rawData), "\t") + default: + log.FatalErr(fmt.Errorf("invalid format; must be 'csv' or 'tsv'")) + } -// Errorln prints a new message. -func (l *Logger) Errorln(arguments ...interface{}) { - fmt.Fprintln(l.Stderr, append([]interface{}{time.Now().UTC().Format(l.TimeFormat)}, arguments...)...) -} - -func main() { - log := NewLogger() - - rawData, err := ioutil.ReadAll(os.Stdin) + yvalues, err := chart.ParseFloats(parts...) if err != nil { log.FatalErr(err) } - csvParts := chart.SplitCSV(string(rawData)) - - yvalues, err := chart.ParseFloats(csvParts...) - + var series []chart.Series mainSeries := chart.ContinuousSeries{ - Name: "A test series", - XValues: chart.SeqRange(0, float64(len(csvParts))), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. + Name: "Values", + XValues: chart.LinearRange(1, float64(len(yvalues))), YValues: yvalues, } + series = append(series, mainSeries) - linRegSeries := &chart.LinearRegressionSeries{ - InnerSeries: mainSeries, + if !*disableLinreg { + linRegSeries := &chart.LinearRegressionSeries{ + InnerSeries: mainSeries, + } + series = append(series, linRegSeries) } graph := chart.Chart{ - Series: []chart.Series{ - mainSeries, - linRegSeries, - }, + Series: series, } var output *os.File @@ -130,8 +90,10 @@ func main() { } } - log.Info("rendering chart to", output.Name()) if err := graph.Render(chart.PNG, output); err != nil { log.FatalErr(err) } + + fmt.Fprintln(os.Stdout, output.Name()) + os.Exit(0) } diff --git a/concat_series_test.go b/concat_series_test.go index 2052bd5..fb6a55f 100644 --- a/concat_series_test.go +++ b/concat_series_test.go @@ -10,18 +10,18 @@ func TestConcatSeries(t *testing.T) { assert := assert.New(t) s1 := ContinuousSeries{ - XValues: SeqRange(1.0, 10.0), - YValues: SeqRange(1.0, 10.0), + XValues: LinearRange(1.0, 10.0), + YValues: LinearRange(1.0, 10.0), } s2 := ContinuousSeries{ - XValues: SeqRange(11, 20.0), - YValues: SeqRange(10.0, 1.0), + XValues: LinearRange(11, 20.0), + YValues: LinearRange(10.0, 1.0), } s3 := ContinuousSeries{ - XValues: SeqRange(21, 30.0), - YValues: SeqRange(1.0, 10.0), + XValues: LinearRange(21, 30.0), + YValues: LinearRange(1.0, 10.0), } cs := ConcatSeries([]Series{s1, s2, s3}) diff --git a/continuous_range.go b/continuous_range.go index 99fa939..517b727 100644 --- a/continuous_range.go +++ b/continuous_range.go @@ -62,6 +62,9 @@ func (r *ContinuousRange) SetDomain(domain int) { // String returns a simple string for the ContinuousRange. func (r ContinuousRange) String() string { + if r.GetDelta() == 0 { + return "ContinuousRange [empty]" + } return fmt.Sprintf("ContinuousRange [%.2f,%.2f] => %d", r.Min, r.Max, r.Domain) } diff --git a/continuous_series.go b/continuous_series.go index 7e5ed2a..73c7ab7 100644 --- a/continuous_series.go +++ b/continuous_series.go @@ -82,11 +82,15 @@ func (cs ContinuousSeries) Render(r Renderer, canvasBox Box, xrange, yrange Rang // Validate validates the series. func (cs ContinuousSeries) Validate() error { if len(cs.XValues) == 0 { - return fmt.Errorf("continuous series must have xvalues set") + return fmt.Errorf("continuous series; must have xvalues set") } if len(cs.YValues) == 0 { - return fmt.Errorf("continuous series must have yvalues set") + return fmt.Errorf("continuous series; must have yvalues set") + } + + if len(cs.XValues) != len(cs.YValues) { + return fmt.Errorf("continuous series; must have same length xvalues as yvalues") } return nil } diff --git a/continuous_series_test.go b/continuous_series_test.go index 2ae3928..17b6612 100644 --- a/continuous_series_test.go +++ b/continuous_series_test.go @@ -12,8 +12,8 @@ func TestContinuousSeries(t *testing.T) { cs := ContinuousSeries{ Name: "Test Series", - XValues: SeqRange(1.0, 10.0), - YValues: SeqRange(1.0, 10.0), + XValues: LinearRange(1.0, 10.0), + YValues: LinearRange(1.0, 10.0), } assert.Equal("Test Series", cs.GetName()) @@ -53,20 +53,20 @@ func TestContinuousSeriesValidate(t *testing.T) { cs := ContinuousSeries{ Name: "Test Series", - XValues: SeqRange(1.0, 10.0), - YValues: SeqRange(1.0, 10.0), + XValues: LinearRange(1.0, 10.0), + YValues: LinearRange(1.0, 10.0), } assert.Nil(cs.Validate()) cs = ContinuousSeries{ Name: "Test Series", - XValues: SeqRange(1.0, 10.0), + XValues: LinearRange(1.0, 10.0), } assert.NotNil(cs.Validate()) cs = ContinuousSeries{ Name: "Test Series", - YValues: SeqRange(1.0, 10.0), + YValues: LinearRange(1.0, 10.0), } assert.NotNil(cs.Validate()) } diff --git a/ema_series_test.go b/ema_series_test.go index 2e11336..90f0eae 100644 --- a/ema_series_test.go +++ b/ema_series_test.go @@ -4,11 +4,10 @@ import ( "testing" "github.com/blend/go-sdk/assert" - "github.com/wcharczuk/go-chart/seq" ) var ( - emaXValues = seq.Range(1.0, 50.0) + emaXValues = LinearRange(1.0, 50.0) emaYValues = []float64{ 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, diff --git a/histogram_series_test.go b/histogram_series_test.go index 1f47bad..bd4f2d0 100644 --- a/histogram_series_test.go +++ b/histogram_series_test.go @@ -4,7 +4,6 @@ import ( "testing" assert "github.com/blend/go-sdk/assert" - "github.com/wcharczuk/go-chart/seq" ) func TestHistogramSeries(t *testing.T) { @@ -12,8 +11,8 @@ func TestHistogramSeries(t *testing.T) { cs := ContinuousSeries{ Name: "Test Series", - XValues: seq.Range(1.0, 20.0), - YValues: seq.Range(10.0, -10.0), + XValues: LinearRange(1.0, 20.0), + YValues: LinearRange(10.0, -10.0), } hs := HistogramSeries{ diff --git a/legend.go b/legend.go index 171c869..9d16ced 100644 --- a/legend.go +++ b/legend.go @@ -35,7 +35,7 @@ func Legend(c *Chart, userDefaults ...Style) Renderable { var labels []string var lines []Style for index, s := range c.Series { - if s.GetStyle().IsZero() || s.GetStyle().Show { + if !s.GetStyle().Hidden { if _, isAnnotationSeries := s.(AnnotationSeries); !isAnnotationSeries { labels = append(labels, s.GetName()) lines = append(lines, s.GetStyle().InheritFrom(c.styleDefaultsSeries(index))) @@ -149,7 +149,7 @@ func LegendThin(c *Chart, userDefaults ...Style) Renderable { var labels []string var lines []Style for index, s := range c.Series { - if s.GetStyle().IsZero() || s.GetStyle().Show { + if !s.GetStyle().Hidden { if _, isAnnotationSeries := s.(AnnotationSeries); !isAnnotationSeries { labels = append(labels, s.GetName()) lines = append(lines, s.GetStyle().InheritFrom(c.styleDefaultsSeries(index))) @@ -247,7 +247,7 @@ func LegendLeft(c *Chart, userDefaults ...Style) Renderable { var labels []string var lines []Style for index, s := range c.Series { - if s.GetStyle().IsZero() || s.GetStyle().Show { + if !s.GetStyle().Hidden { if _, isAnnotationSeries := s.(AnnotationSeries); !isAnnotationSeries { labels = append(labels, s.GetName()) lines = append(lines, s.GetStyle().InheritFrom(c.styleDefaultsSeries(index))) diff --git a/linear_regression_series_test.go b/linear_regression_series_test.go index 335a636..0d04718 100644 --- a/linear_regression_series_test.go +++ b/linear_regression_series_test.go @@ -4,7 +4,6 @@ import ( "testing" assert "github.com/blend/go-sdk/assert" - "github.com/wcharczuk/go-chart/seq" ) func TestLinearRegressionSeries(t *testing.T) { @@ -12,8 +11,8 @@ func TestLinearRegressionSeries(t *testing.T) { mainSeries := ContinuousSeries{ Name: "A test series", - XValues: seq.Range(1.0, 100.0), - YValues: seq.Range(1.0, 100.0), + XValues: LinearRange(1.0, 100.0), + YValues: LinearRange(1.0, 100.0), } linRegSeries := &LinearRegressionSeries{ @@ -34,8 +33,8 @@ func TestLinearRegressionSeriesDesc(t *testing.T) { mainSeries := ContinuousSeries{ Name: "A test series", - XValues: seq.Range(100.0, 1.0), - YValues: seq.Range(100.0, 1.0), + XValues: LinearRange(100.0, 1.0), + YValues: LinearRange(100.0, 1.0), } linRegSeries := &LinearRegressionSeries{ @@ -56,8 +55,8 @@ func TestLinearRegressionSeriesWindowAndOffset(t *testing.T) { mainSeries := ContinuousSeries{ Name: "A test series", - XValues: seq.Range(100.0, 1.0), - YValues: seq.Range(100.0, 1.0), + XValues: LinearRange(100.0, 1.0), + YValues: LinearRange(100.0, 1.0), } linRegSeries := &LinearRegressionSeries{ diff --git a/linear_sequence.go b/linear_sequence.go new file mode 100644 index 0000000..dda761b --- /dev/null +++ b/linear_sequence.go @@ -0,0 +1,73 @@ +package chart + +// LinearRange returns an array of values representing the range from start to end, incremented by 1.0. +func LinearRange(start, end float64) []float64 { + return Seq{NewLinearSequence().WithStart(start).WithEnd(end).WithStep(1.0)}.Values() +} + +// LinearRangeWithStep returns the array values of a linear seq with a given start, end and optional step. +func LinearRangeWithStep(start, end, step float64) []float64 { + return Seq{NewLinearSequence().WithStart(start).WithEnd(end).WithStep(step)}.Values() +} + +// NewLinearSequence returns a new linear generator. +func NewLinearSequence() *LinearSeq { + return &LinearSeq{step: 1.0} +} + +// LinearSeq is a stepwise generator. +type LinearSeq struct { + start float64 + end float64 + step float64 +} + +// Start returns the start value. +func (lg LinearSeq) Start() float64 { + return lg.start +} + +// End returns the end value. +func (lg LinearSeq) End() float64 { + return lg.end +} + +// Step returns the step value. +func (lg LinearSeq) Step() float64 { + return lg.step +} + +// Len returns the number of elements in the seq. +func (lg LinearSeq) Len() int { + if lg.start < lg.end { + return int((lg.end-lg.start)/lg.step) + 1 + } + return int((lg.start-lg.end)/lg.step) + 1 +} + +// GetValue returns the value at a given index. +func (lg LinearSeq) GetValue(index int) float64 { + fi := float64(index) + if lg.start < lg.end { + return lg.start + (fi * lg.step) + } + return lg.start - (fi * lg.step) +} + +// WithStart sets the start and returns the linear generator. +func (lg *LinearSeq) WithStart(start float64) *LinearSeq { + lg.start = start + return lg +} + +// WithEnd sets the end and returns the linear generator. +func (lg *LinearSeq) WithEnd(end float64) *LinearSeq { + lg.end = end + return lg +} + +// WithStep sets the step and returns the linear generator. +func (lg *LinearSeq) WithStep(step float64) *LinearSeq { + lg.step = step + return lg +} diff --git a/logger.go b/logger.go new file mode 100644 index 0000000..a2fa397 --- /dev/null +++ b/logger.go @@ -0,0 +1,129 @@ +package chart + +import ( + "fmt" + "io" + "os" + "time" +) + +var ( + _ Logger = (*StdoutLogger)(nil) +) + +// NewLogger returns a new logger. +func NewLogger() Logger { + return &StdoutLogger{ + TimeFormat: time.RFC3339Nano, + Stdout: os.Stdout, + Stderr: os.Stderr, + } +} + +// Logger is a type that implements the logging interface. +type Logger interface { + Info(...interface{}) + Infof(string, ...interface{}) + Debug(...interface{}) + Debugf(string, ...interface{}) + Err(error) + FatalErr(error) + Error(...interface{}) + Errorf(string, ...interface{}) + Println(...interface{}) + Errorln(...interface{}) +} + +// Info logs an info message if the logger is set. +func Info(log Logger, arguments ...interface{}) { + if log == nil { + return + } + log.Info(arguments...) +} + +// Infof logs an info message if the logger is set. +func Infof(log Logger, format string, arguments ...interface{}) { + if log == nil { + return + } + log.Infof(format, arguments...) +} + +// Debug logs an debug message if the logger is set. +func Debug(log Logger, arguments ...interface{}) { + if log == nil { + return + } + log.Debug(arguments...) +} + +// Debugf logs an debug message if the logger is set. +func Debugf(log Logger, format string, arguments ...interface{}) { + if log == nil { + return + } + log.Debugf(format, arguments...) +} + +// StdoutLogger is a basic logger. +type StdoutLogger struct { + TimeFormat string + Stdout io.Writer + Stderr io.Writer +} + +// Info writes an info message. +func (l *StdoutLogger) Info(arguments ...interface{}) { + l.Println(append([]interface{}{"[INFO]"}, arguments...)...) +} + +// Infof writes an info message. +func (l *StdoutLogger) Infof(format string, arguments ...interface{}) { + l.Println(append([]interface{}{"[INFO]"}, fmt.Sprintf(format, arguments...))...) +} + +// Debug writes an debug message. +func (l *StdoutLogger) Debug(arguments ...interface{}) { + l.Println(append([]interface{}{"[DEBUG]"}, arguments...)...) +} + +// Debugf writes an debug message. +func (l *StdoutLogger) Debugf(format string, arguments ...interface{}) { + l.Println(append([]interface{}{"[DEBUG]"}, fmt.Sprintf(format, arguments...))...) +} + +// Error writes an error message. +func (l *StdoutLogger) Error(arguments ...interface{}) { + l.Println(append([]interface{}{"[ERROR]"}, arguments...)...) +} + +// Errorf writes an error message. +func (l *StdoutLogger) Errorf(format string, arguments ...interface{}) { + l.Println(append([]interface{}{"[ERROR]"}, fmt.Sprintf(format, arguments...))...) +} + +// Err writes an error message. +func (l *StdoutLogger) Err(err error) { + if err != nil { + l.Println(append([]interface{}{"[ERROR]"}, err.Error())...) + } +} + +// FatalErr writes an error message and exits. +func (l *StdoutLogger) FatalErr(err error) { + if err != nil { + l.Println(append([]interface{}{"[FATAL]"}, err.Error())...) + os.Exit(1) + } +} + +// Println prints a new message. +func (l *StdoutLogger) Println(arguments ...interface{}) { + fmt.Fprintln(l.Stdout, append([]interface{}{time.Now().UTC().Format(l.TimeFormat)}, arguments...)...) +} + +// Errorln prints a new message. +func (l *StdoutLogger) Errorln(arguments ...interface{}) { + fmt.Fprintln(l.Stderr, append([]interface{}{time.Now().UTC().Format(l.TimeFormat)}, arguments...)...) +} diff --git a/parse.go b/parse.go index 2d0f836..f38f6cc 100644 --- a/parse.go +++ b/parse.go @@ -2,6 +2,7 @@ package chart import ( "strconv" + "strings" "time" "github.com/blend/go-sdk/exception" @@ -12,8 +13,13 @@ func ParseFloats(values ...string) ([]float64, error) { var output []float64 var parsedValue float64 var err error + var cleaned string for _, value := range values { - if parsedValue, err = strconv.ParseFloat(value, 64); err != nil { + cleaned = strings.TrimSpace(strings.Replace(value, ",", "", -1)) + if cleaned == "" { + continue + } + if parsedValue, err = strconv.ParseFloat(cleaned, 64); err != nil { return nil, exception.New(err) } output = append(output, parsedValue) diff --git a/pie_chart.go b/pie_chart.go index 426ed50..49b551f 100644 --- a/pie_chart.go +++ b/pie_chart.go @@ -116,7 +116,7 @@ func (pc PieChart) drawCanvas(r Renderer, canvasBox Box) { } func (pc PieChart) drawTitle(r Renderer) { - if len(pc.Title) > 0 && pc.TitleStyle.Show { + if len(pc.Title) > 0 && !pc.TitleStyle.Hidden { Draw.TextWithin(r, pc.Title, pc.Box(), pc.styleDefaultsTitle()) } } diff --git a/random_sequence.go b/random_sequence.go new file mode 100644 index 0000000..45c9971 --- /dev/null +++ b/random_sequence.go @@ -0,0 +1,92 @@ +package chart + +import ( + "math" + "math/rand" + "time" +) + +var ( + _ Sequence = (*RandomSeq)(nil) +) + +// RandomValues returns an array of random values. +func RandomValues(count int) []float64 { + return Seq{NewRandomSequence().WithLen(count)}.Values() +} + +// RandomValuesWithMax returns an array of random values with a given average. +func RandomValuesWithMax(count int, max float64) []float64 { + return Seq{NewRandomSequence().WithMax(max).WithLen(count)}.Values() +} + +// NewRandomSequence creates a new random seq. +func NewRandomSequence() *RandomSeq { + return &RandomSeq{ + rnd: rand.New(rand.NewSource(time.Now().Unix())), + } +} + +// RandomSeq is a random number seq generator. +type RandomSeq struct { + rnd *rand.Rand + max *float64 + min *float64 + len *int +} + +// Len returns the number of elements that will be generated. +func (r *RandomSeq) Len() int { + if r.len != nil { + return *r.len + } + return math.MaxInt32 +} + +// GetValue returns the value. +func (r *RandomSeq) GetValue(_ int) float64 { + if r.min != nil && r.max != nil { + var delta float64 + + if *r.max > *r.min { + delta = *r.max - *r.min + } else { + delta = *r.min - *r.max + } + + return *r.min + (r.rnd.Float64() * delta) + } else if r.max != nil { + return r.rnd.Float64() * *r.max + } else if r.min != nil { + return *r.min + (r.rnd.Float64()) + } + return r.rnd.Float64() +} + +// WithLen sets a maximum len +func (r *RandomSeq) WithLen(length int) *RandomSeq { + r.len = &length + return r +} + +// Min returns the minimum value. +func (r RandomSeq) Min() *float64 { + return r.min +} + +// WithMin sets the scale and returns the Random. +func (r *RandomSeq) WithMin(min float64) *RandomSeq { + r.min = &min + return r +} + +// Max returns the maximum value. +func (r RandomSeq) Max() *float64 { + return r.max +} + +// WithMax sets the average and returns the Random. +func (r *RandomSeq) WithMax(max float64) *RandomSeq { + r.max = &max + return r +} diff --git a/seq.go b/seq.go index 7e493e0..aabdc99 100644 --- a/seq.go +++ b/seq.go @@ -3,19 +3,22 @@ package chart import ( "math" "sort" - "time" - - "github.com/blend/go-sdk/timeutil" ) -// NewSeq wraps a provider with a seq. -func NewSeq(provider SeqProvider) Seq { - return Seq{SeqProvider: provider} +// ValueSequence returns a sequence for a given values set. +func ValueSequence(values ...float64) Seq { + return Seq{NewArray(values...)} +} + +// Sequence is a provider for values for a seq. +type Sequence interface { + Len() int + GetValue(int) float64 } // Seq is a utility wrapper for seq providers. type Seq struct { - SeqProvider + Sequence } // Values enumerates the seq into a slice. @@ -45,7 +48,7 @@ func (s Seq) Map(mapfn func(i int, v float64) float64) Seq { for i := 0; i < s.Len(); i++ { mapfn(i, s.GetValue(i)) } - return Seq{SeqArray(output)} + return Seq{Array(output)} } // FoldLeft collapses a seq from left to right. @@ -142,7 +145,7 @@ func (s Seq) Sort() Seq { } values := s.Values() sort.Float64s(values) - return Seq{SeqArray(values)} + return Seq{Array(values)} } // Median returns the median or middle value in the sorted seq. @@ -247,160 +250,5 @@ func (s Seq) Normalize() Seq { output[i] = (s.GetValue(i) - min) / delta } - return Seq{SeqProvider: SeqArray(output)} -} - -// SeqProvider is a provider for values for a seq. -type SeqProvider interface { - Len() int - GetValue(int) float64 -} - -// SeqArray is a wrapper for an array of floats that implements `ValuesProvider`. -type SeqArray []float64 - -// Len returns the value provider length. -func (a SeqArray) Len() int { - return len(a) -} - -// GetValue returns the value at a given index. -func (a SeqArray) GetValue(index int) float64 { - return a[index] -} - -// SeqDays generates a seq of timestamps by day, from -days to today. -func SeqDays(days int) []time.Time { - var values []time.Time - for day := days; day >= 0; day-- { - values = append(values, time.Now().AddDate(0, 0, -day)) - } - return values -} - -// SeqHours returns a sequence of times by the hour for a given number of hours -// after a given start. -func SeqHours(start time.Time, totalHours int) []time.Time { - times := make([]time.Time, totalHours) - - last := start - for i := 0; i < totalHours; i++ { - times[i] = last - last = last.Add(time.Hour) - } - - return times -} - -// SeqHoursFilled adds zero values for the data bounded by the start and end of the xdata array. -func SeqHoursFilled(xdata []time.Time, ydata []float64) ([]time.Time, []float64) { - start, end := TimeMinMax(xdata...) - totalHours := DiffHours(start, end) - - finalTimes := SeqHours(start, totalHours+1) - finalValues := make([]float64, totalHours+1) - - var hoursFromStart int - for i, xd := range xdata { - hoursFromStart = DiffHours(start, xd) - finalValues[hoursFromStart] = ydata[i] - } - - return finalTimes, finalValues -} - -// Assert types implement interfaces. -var ( - _ SeqProvider = (*SeqTimes)(nil) -) - -// SeqTimes are an array of times. -// It wraps the array with methods that implement `seq.Provider`. -type SeqTimes []time.Time - -// Array returns the times to an array. -func (t SeqTimes) Array() []time.Time { - return []time.Time(t) -} - -// Len returns the length of the array. -func (t SeqTimes) Len() int { - return len(t) -} - -// GetValue returns a value at an index as a time. -func (t SeqTimes) GetValue(index int) float64 { - return timeutil.ToFloat64(t[index]) -} - -// SeqRange returns the array values of a linear seq with a given start, end and optional step. -func SeqRange(start, end float64) []float64 { - return Seq{NewSeqLinear().WithStart(start).WithEnd(end).WithStep(1.0)}.Values() -} - -// SeqRangeWithStep returns the array values of a linear seq with a given start, end and optional step. -func SeqRangeWithStep(start, end, step float64) []float64 { - return Seq{NewSeqLinear().WithStart(start).WithEnd(end).WithStep(step)}.Values() -} - -// NewSeqLinear returns a new linear generator. -func NewSeqLinear() *SeqLinear { - return &SeqLinear{step: 1.0} -} - -// SeqLinear is a stepwise generator. -type SeqLinear struct { - start float64 - end float64 - step float64 -} - -// Start returns the start value. -func (lg SeqLinear) Start() float64 { - return lg.start -} - -// End returns the end value. -func (lg SeqLinear) End() float64 { - return lg.end -} - -// Step returns the step value. -func (lg SeqLinear) Step() float64 { - return lg.step -} - -// Len returns the number of elements in the seq. -func (lg SeqLinear) Len() int { - if lg.start < lg.end { - return int((lg.end-lg.start)/lg.step) + 1 - } - return int((lg.start-lg.end)/lg.step) + 1 -} - -// GetValue returns the value at a given index. -func (lg SeqLinear) GetValue(index int) float64 { - fi := float64(index) - if lg.start < lg.end { - return lg.start + (fi * lg.step) - } - return lg.start - (fi * lg.step) -} - -// WithStart sets the start and returns the linear generator. -func (lg *SeqLinear) WithStart(start float64) *SeqLinear { - lg.start = start - return lg -} - -// WithEnd sets the end and returns the linear generator. -func (lg *SeqLinear) WithEnd(end float64) *SeqLinear { - lg.end = end - return lg -} - -// WithStep sets the step and returns the linear generator. -func (lg *SeqLinear) WithStep(step float64) *SeqLinear { - lg.step = step - return lg + return Seq{Array(output)} } diff --git a/seq_test.go b/seq_test.go new file mode 100644 index 0000000..bd0ce22 --- /dev/null +++ b/seq_test.go @@ -0,0 +1,136 @@ +package chart + +import ( + "testing" + + assert "github.com/blend/go-sdk/assert" +) + +func TestSeqEach(t *testing.T) { + assert := assert.New(t) + + values := Seq{NewArray(1, 2, 3, 4)} + values.Each(func(i int, v float64) { + assert.Equal(i, v-1) + }) +} + +func TestSeqMap(t *testing.T) { + assert := assert.New(t) + + values := Seq{NewArray(1, 2, 3, 4)} + mapped := values.Map(func(i int, v float64) float64 { + assert.Equal(i, v-1) + return v * 2 + }) + assert.Equal(4, mapped.Len()) +} + +func TestSeqFoldLeft(t *testing.T) { + assert := assert.New(t) + + values := Seq{NewArray(1, 2, 3, 4)} + ten := values.FoldLeft(func(_ int, vp, v float64) float64 { + return vp + v + }) + assert.Equal(10, ten) + + orderTest := Seq{NewArray(10, 3, 2, 1)} + four := orderTest.FoldLeft(func(_ int, vp, v float64) float64 { + return vp - v + }) + assert.Equal(4, four) +} + +func TestSeqFoldRight(t *testing.T) { + assert := assert.New(t) + + values := Seq{NewArray(1, 2, 3, 4)} + ten := values.FoldRight(func(_ int, vp, v float64) float64 { + return vp + v + }) + assert.Equal(10, ten) + + orderTest := Seq{NewArray(10, 3, 2, 1)} + notFour := orderTest.FoldRight(func(_ int, vp, v float64) float64 { + return vp - v + }) + assert.Equal(-14, notFour) +} + +func TestSeqSum(t *testing.T) { + assert := assert.New(t) + + values := Seq{NewArray(1, 2, 3, 4)} + assert.Equal(10, values.Sum()) +} + +func TestSeqAverage(t *testing.T) { + assert := assert.New(t) + + values := Seq{NewArray(1, 2, 3, 4)} + assert.Equal(2.5, values.Average()) + + valuesOdd := Seq{NewArray(1, 2, 3, 4, 5)} + assert.Equal(3, valuesOdd.Average()) +} + +func TestSequenceVariance(t *testing.T) { + assert := assert.New(t) + + values := Seq{NewArray(1, 2, 3, 4, 5)} + assert.Equal(2, values.Variance()) +} + +func TestSequenceNormalize(t *testing.T) { + assert := assert.New(t) + + normalized := ValueSequence(1, 2, 3, 4, 5).Normalize().Values() + + assert.NotEmpty(normalized) + assert.Len(normalized, 5) + assert.Equal(0, normalized[0]) + assert.Equal(0.25, normalized[1]) + assert.Equal(1, normalized[4]) +} + +func TestLinearRange(t *testing.T) { + assert := assert.New(t) + + values := LinearRange(1, 100) + assert.Len(values, 100) + assert.Equal(1, values[0]) + assert.Equal(100, values[99]) +} + +func TestLinearRangeWithStep(t *testing.T) { + assert := assert.New(t) + + values := LinearRangeWithStep(0, 100, 5) + assert.Equal(100, values[20]) + assert.Len(values, 21) +} + +func TestLinearRangeReversed(t *testing.T) { + assert := assert.New(t) + + values := LinearRange(10.0, 1.0) + assert.Equal(10, len(values)) + assert.Equal(10.0, values[0]) + assert.Equal(1.0, values[9]) +} + +func TestLinearSequenceRegression(t *testing.T) { + assert := assert.New(t) + + // note; this assumes a 1.0 step is implicitly set in the constructor. + linearProvider := NewLinearSequence().WithStart(1.0).WithEnd(100.0) + assert.Equal(1, linearProvider.Start()) + assert.Equal(100, linearProvider.End()) + assert.Equal(100, linearProvider.Len()) + + values := Seq{linearProvider}.Values() + assert.Len(values, 100) + assert.Equal(1.0, values[0]) + assert.Equal(100, values[99]) +} diff --git a/sma_series_test.go b/sma_series_test.go index 87c1971..27e0c68 100644 --- a/sma_series_test.go +++ b/sma_series_test.go @@ -4,7 +4,6 @@ import ( "testing" "github.com/blend/go-sdk/assert" - "github.com/wcharczuk/go-chart/seq" ) type mockValuesProvider struct { @@ -32,8 +31,8 @@ func TestSMASeriesGetValue(t *testing.T) { assert := assert.New(t) mockSeries := mockValuesProvider{ - seq.Range(1.0, 10.0), - seq.Range(10, 1.0), + LinearRange(1.0, 10.0), + LinearRange(10, 1.0), } assert.Equal(10, mockSeries.Len()) @@ -63,8 +62,8 @@ func TestSMASeriesGetLastValueWindowOverlap(t *testing.T) { assert := assert.New(t) mockSeries := mockValuesProvider{ - seq.Range(1.0, 10.0), - seq.Range(10, 1.0), + LinearRange(1.0, 10.0), + LinearRange(10, 1.0), } assert.Equal(10, mockSeries.Len()) @@ -89,8 +88,8 @@ func TestSMASeriesGetLastValue(t *testing.T) { assert := assert.New(t) mockSeries := mockValuesProvider{ - seq.Range(1.0, 100.0), - seq.Range(100, 1.0), + LinearRange(1.0, 100.0), + LinearRange(100, 1.0), } assert.Equal(100, mockSeries.Len()) diff --git a/stacked_bar_chart.go b/stacked_bar_chart.go index 40eed89..06db425 100644 --- a/stacked_bar_chart.go +++ b/stacked_bar_chart.go @@ -162,7 +162,7 @@ func (sbc StackedBarChart) drawBar(r Renderer, canvasBox Box, xoffset int, bar S } func (sbc StackedBarChart) drawXAxis(r Renderer, canvasBox Box) { - if sbc.XAxis.Show { + if !sbc.XAxis.Hidden { axisStyle := sbc.XAxis.InheritFrom(sbc.styleDefaultsAxes()) axisStyle.WriteToRenderer(r) @@ -196,7 +196,7 @@ func (sbc StackedBarChart) drawXAxis(r Renderer, canvasBox Box) { } func (sbc StackedBarChart) drawYAxis(r Renderer, canvasBox Box) { - if sbc.YAxis.Show { + if !sbc.YAxis.Hidden { axisStyle := sbc.YAxis.InheritFrom(sbc.styleDefaultsAxes()) axisStyle.WriteToRenderer(r) r.MoveTo(canvasBox.Right, canvasBox.Top) @@ -207,7 +207,7 @@ func (sbc StackedBarChart) drawYAxis(r Renderer, canvasBox Box) { r.LineTo(canvasBox.Right+DefaultHorizontalTickWidth, canvasBox.Bottom) r.Stroke() - ticks := SeqRangeWithStep(0.0, 1.0, 0.2) + ticks := LinearRangeWithStep(0.0, 1.0, 0.2) for _, t := range ticks { axisStyle.GetStrokeOptions().WriteToRenderer(r) ty := canvasBox.Bottom - int(t*float64(canvasBox.Height())) @@ -226,7 +226,7 @@ func (sbc StackedBarChart) drawYAxis(r Renderer, canvasBox Box) { } func (sbc StackedBarChart) drawTitle(r Renderer) { - if len(sbc.Title) > 0 && sbc.TitleStyle.Show { + if len(sbc.Title) > 0 && !sbc.TitleStyle.Hidden { r.SetFont(sbc.TitleStyle.GetFont(sbc.GetFont())) r.SetFontColor(sbc.TitleStyle.GetFontColor(sbc.GetColorPalette().TextColor())) titleFontSize := sbc.TitleStyle.GetFontSize(DefaultTitleFontSize) @@ -274,7 +274,7 @@ func (sbc StackedBarChart) getAdjustedCanvasBox(r Renderer, canvasBox Box) Box { totalWidth += bar.GetWidth() + sbc.GetBarSpacing() } - if sbc.XAxis.Show { + if !sbc.XAxis.Hidden { xaxisHeight := DefaultVerticalTickHeight axisStyle := sbc.XAxis.InheritFrom(sbc.styleDefaultsAxes()) diff --git a/style.go b/style.go index 04a73a5..fe1f35a 100644 --- a/style.go +++ b/style.go @@ -14,10 +14,18 @@ const ( Disabled = -1 ) -// StyleShow is a prebuilt style with the `Show` property set to true. -func StyleShow() Style { +// Hidden is a prebuilt style with the `Hidden` property set to true. +func Hidden() Style { return Style{ - Show: true, + Hidden: true, + } +} + +// Shown is a prebuilt style with the `Hidden` property set to false. +// You can also think of this as the default. +func Shown() Style { + return Style{ + Hidden: false, } } @@ -26,7 +34,7 @@ func StyleShow() Style { func StyleTextDefaults() Style { font, _ := GetDefaultFont() return Style{ - Show: true, + Hidden: false, Font: font, FontColor: DefaultTextColor, FontSize: DefaultTitleFontSize, @@ -35,7 +43,7 @@ func StyleTextDefaults() Style { // Style is a simple style set. type Style struct { - Show bool + Hidden bool Padding Box ClassName string @@ -65,7 +73,8 @@ type Style struct { // IsZero returns if the object is set or not. func (s Style) IsZero() bool { - return s.StrokeColor.IsZero() && + return !s.Hidden && + s.StrokeColor.IsZero() && s.StrokeWidth == 0 && s.DotColor.IsZero() && s.DotWidth == 0 && @@ -83,10 +92,10 @@ func (s Style) String() string { } var output []string - if s.Show { - output = []string{"\"show\": true"} + if s.Hidden { + output = []string{"\"hidden\": true"} } else { - output = []string{"\"show\": false"} + output = []string{"\"hidden\": false"} } if s.ClassName != "" { diff --git a/times.go b/times.go new file mode 100644 index 0000000..1a21f48 --- /dev/null +++ b/times.go @@ -0,0 +1,43 @@ +package chart + +import ( + "sort" + "time" + + "github.com/blend/go-sdk/timeutil" +) + +// Assert types implement interfaces. +var ( + _ Sequence = (*Times)(nil) + _ sort.Interface = (*Times)(nil) +) + +// Times are an array of times. +// It wraps the array with methods that implement `seq.Provider`. +type Times []time.Time + +// Array returns the times to an array. +func (t Times) Array() []time.Time { + return []time.Time(t) +} + +// Len returns the length of the array. +func (t Times) Len() int { + return len(t) +} + +// GetValue returns a value at an index as a time. +func (t Times) GetValue(index int) float64 { + return timeutil.ToFloat64(t[index]) +} + +// Swap implements sort.Interface. +func (t Times) Swap(i, j int) { + t[i], t[j] = t[j], t[i] +} + +// Less implements sort.Interface. +func (t Times) Less(i, j int) bool { + return t[i].Before(t[j]) +} diff --git a/timeutil.go b/timeutil.go index 4bf3485..aa6b9e4 100644 --- a/timeutil.go +++ b/timeutil.go @@ -80,6 +80,11 @@ func TimeToFloat64(t time.Time) float64 { return float64(t.UnixNano()) } +// TimeFromFloat64 returns a time from a float64. +func TimeFromFloat64(tf float64) time.Time { + return time.Unix(0, int64(tf)) +} + // TimeDescending sorts a given list of times ascending, or min to max. type TimeDescending []time.Time @@ -103,3 +108,43 @@ func (a TimeAscending) Swap(i, j int) { a[i], a[j] = a[j], a[i] } // Less implements sort.Sorter func (a TimeAscending) Less(i, j int) bool { return a[i].Before(a[j]) } + +// Days generates a seq of timestamps by day, from -days to today. +func Days(days int) []time.Time { + var values []time.Time + for day := days; day >= 0; day-- { + values = append(values, time.Now().AddDate(0, 0, -day)) + } + return values +} + +// Hours returns a sequence of times by the hour for a given number of hours +// after a given start. +func Hours(start time.Time, totalHours int) []time.Time { + times := make([]time.Time, totalHours) + + last := start + for i := 0; i < totalHours; i++ { + times[i] = last + last = last.Add(time.Hour) + } + + return times +} + +// HoursFilled adds zero values for the data bounded by the start and end of the xdata array. +func HoursFilled(xdata []time.Time, ydata []float64) ([]time.Time, []float64) { + start, end := TimeMinMax(xdata...) + totalHours := DiffHours(start, end) + + finalTimes := Hours(start, totalHours+1) + finalValues := make([]float64, totalHours+1) + + var hoursFromStart int + for i, xd := range xdata { + hoursFromStart = DiffHours(start, xd) + finalValues[hoursFromStart] = ydata[i] + } + + return finalTimes, finalValues +} diff --git a/value_buffer.go b/value_buffer.go index 8b0fc66..d544bd3 100644 --- a/value_buffer.go +++ b/value_buffer.go @@ -149,7 +149,7 @@ func (b *ValueBuffer) TrimExcess() { } // Array returns the ring buffer, in order, as an array. -func (b *ValueBuffer) Array() SeqArray { +func (b *ValueBuffer) Array() Array { newArray := make([]float64, b.size) if b.size == 0 { @@ -163,7 +163,7 @@ func (b *ValueBuffer) Array() SeqArray { arrayCopy(b.array, 0, newArray, len(b.array)-b.head, b.tail) } - return SeqArray(newArray) + return Array(newArray) } // Each calls the consumer for each element in the buffer. diff --git a/value_buffer_test.go b/value_buffer_test.go index 96be1bf..e701eb4 100644 --- a/value_buffer_test.go +++ b/value_buffer_test.go @@ -6,10 +6,10 @@ import ( "github.com/blend/go-sdk/assert" ) -func TestRingBuffer(t *testing.T) { +func TestBuffer(t *testing.T) { assert := assert.New(t) - buffer := NewRingBuffer() + buffer := NewValueBuffer() buffer.Enqueue(1) assert.Equal(1, buffer.Len()) @@ -96,14 +96,14 @@ func TestRingBuffer(t *testing.T) { value = buffer.Dequeue() assert.Equal(8, value) assert.Equal(0, buffer.Len()) - assert.Nil(buffer.Peek()) - assert.Nil(buffer.PeekBack()) + assert.Zero(buffer.Peek()) + assert.Zero(buffer.PeekBack()) } -func TestRingBufferClear(t *testing.T) { +func TestBufferClear(t *testing.T) { assert := assert.New(t) - buffer := NewRingBuffer() + buffer := NewValueBuffer() buffer.Enqueue(1) buffer.Enqueue(1) buffer.Enqueue(1) @@ -117,21 +117,21 @@ func TestRingBufferClear(t *testing.T) { buffer.Clear() assert.Equal(0, buffer.Len()) - assert.Nil(buffer.Peek()) - assert.Nil(buffer.PeekBack()) + assert.Zero(buffer.Peek()) + assert.Zero(buffer.PeekBack()) } -func TestRingBufferContents(t *testing.T) { +func TestBufferArray(t *testing.T) { assert := assert.New(t) - buffer := NewRingBuffer() + buffer := NewValueBuffer() buffer.Enqueue(1) buffer.Enqueue(2) buffer.Enqueue(3) buffer.Enqueue(4) buffer.Enqueue(5) - contents := buffer.Contents() + contents := buffer.Array() assert.Len(contents, 5) assert.Equal(1, contents[0]) assert.Equal(2, contents[1]) @@ -140,145 +140,53 @@ func TestRingBufferContents(t *testing.T) { assert.Equal(5, contents[4]) } -func TestRingBufferDrain(t *testing.T) { +func TestBufferEach(t *testing.T) { assert := assert.New(t) - buffer := NewRingBuffer() - buffer.Enqueue(1) - buffer.Enqueue(2) - buffer.Enqueue(3) - buffer.Enqueue(4) - buffer.Enqueue(5) - - contents := buffer.Drain() - assert.Len(contents, 5) - assert.Equal(1, contents[0]) - assert.Equal(2, contents[1]) - assert.Equal(3, contents[2]) - assert.Equal(4, contents[3]) - assert.Equal(5, contents[4]) - - assert.Equal(0, buffer.Len()) - assert.Nil(buffer.Peek()) - assert.Nil(buffer.PeekBack()) -} - -func TestRingBufferEach(t *testing.T) { - assert := assert.New(t) - - buffer := NewRingBuffer() + buffer := NewValueBuffer() for x := 1; x < 17; x++ { - buffer.Enqueue(x) + buffer.Enqueue(float64(x)) } called := 0 - buffer.Each(func(v interface{}) { - if typed, isTyped := v.(int); isTyped { - if typed == (called + 1) { - called++ - } - } - }) - - assert.Equal(16, called) -} - -func TestRingBufferEachUntil(t *testing.T) { - assert := assert.New(t) - - buffer := NewRingBuffer() - - for x := 1; x < 17; x++ { - buffer.Enqueue(x) - } - - called := 0 - buffer.EachUntil(func(v interface{}) bool { - if typed, isTyped := v.(int); isTyped { - if typed > 10 { - return false - } - if typed == (called + 1) { - called++ - } - } - return true - }) - - assert.Equal(10, called) -} - -func TestRingBufferReverseEachUntil(t *testing.T) { - assert := assert.New(t) - - buffer := NewRingBufferWithCapacity(32) - - for x := 1; x < 17; x++ { - buffer.Enqueue(x) - } - - var values []int - buffer.ReverseEachUntil(func(v interface{}) bool { - if typed, isTyped := v.(int); isTyped { - if typed < 10 { - return false - } - values = append(values, typed) - return true - } - panic("value is not an integer") - }) - - assert.Len(values, 7) - assert.Equal(16, values[0]) - assert.Equal(10, values[6]) -} - -func TestRingBufferReverseEachUntilUndersized(t *testing.T) { - assert := assert.New(t) - - buffer := NewRingBuffer() - - for x := 1; x < 17; x++ { - buffer.Enqueue(x) - } - - var values []int - buffer.ReverseEachUntil(func(v interface{}) bool { - if typed, isTyped := v.(int); isTyped { - if typed < 10 { - return false - } - values = append(values, typed) - return true - } - panic("value is not an integer") - }) - - assert.Len(values, 7) - assert.Equal(16, values[0]) - assert.Equal(10, values[6]) -} - -func TestRingBufferConsume(t *testing.T) { - assert := assert.New(t) - - buffer := NewRingBuffer() - - for x := 1; x < 17; x++ { - buffer.Enqueue(x) - } - - assert.Equal(16, buffer.Len()) - - var called int - buffer.Consume(func(v interface{}) { - if _, isTyped := v.(int); isTyped { + buffer.Each(func(_ int, v float64) { + if v == float64(called+1) { called++ } }) assert.Equal(16, called) - assert.Zero(buffer.Len()) +} + +func TestNewBuffer(t *testing.T) { + assert := assert.New(t) + + empty := NewValueBuffer() + assert.NotNil(empty) + assert.Zero(empty.Len()) + assert.Equal(bufferDefaultCapacity, empty.Capacity()) + assert.Zero(empty.Peek()) + assert.Zero(empty.PeekBack()) +} + +func TestNewBufferWithValues(t *testing.T) { + assert := assert.New(t) + + values := NewValueBuffer(1, 2, 3, 4, 5) + assert.NotNil(values) + assert.Equal(5, values.Len()) + assert.Equal(1, values.Peek()) + assert.Equal(5, values.PeekBack()) +} + +func TestBufferGrowth(t *testing.T) { + assert := assert.New(t) + + values := NewValueBuffer(1, 2, 3, 4, 5) + for i := 0; i < 1<<10; i++ { + values.Enqueue(float64(i)) + } + + assert.Equal(1<<10-1, values.PeekBack()) } diff --git a/xaxis.go b/xaxis.go index 8b86316..fbde599 100644 --- a/xaxis.go +++ b/xaxis.go @@ -108,7 +108,7 @@ func (xa XAxis) Measure(r Renderer, canvasBox Box, ra Range, defaults Style, tic bottom = MaxInt(bottom, ty) } - if xa.NameStyle.Show && len(xa.Name) > 0 { + if !xa.NameStyle.Hidden && len(xa.Name) > 0 { tb := Draw.MeasureText(r, xa.Name, xa.NameStyle.InheritFrom(defaults)) bottom += DefaultXAxisMargin + tb.Height() } @@ -180,16 +180,16 @@ func (xa XAxis) Render(r Renderer, canvasBox Box, ra Range, defaults Style, tick } nameStyle := xa.NameStyle.InheritFrom(defaults) - if xa.NameStyle.Show && len(xa.Name) > 0 { + if !xa.NameStyle.Hidden && len(xa.Name) > 0 { tb := Draw.MeasureText(r, xa.Name, nameStyle) tx := canvasBox.Right - (canvasBox.Width()>>1 + tb.Width()>>1) ty := canvasBox.Bottom + DefaultXAxisMargin + maxTextHeight + DefaultXAxisMargin + tb.Height() Draw.Text(r, xa.Name, tx, ty, nameStyle) } - if xa.GridMajorStyle.Show || xa.GridMinorStyle.Show { + if !xa.GridMajorStyle.Hidden || !xa.GridMinorStyle.Hidden { for _, gl := range xa.GetGridLines(ticks) { - if (gl.IsMinor && xa.GridMinorStyle.Show) || (!gl.IsMinor && xa.GridMajorStyle.Show) { + if (gl.IsMinor && !xa.GridMinorStyle.Hidden) || (!gl.IsMinor && !xa.GridMajorStyle.Hidden) { defaults := xa.GridMajorStyle if gl.IsMinor { defaults = xa.GridMinorStyle diff --git a/yaxis.go b/yaxis.go index 3921545..028fcc8 100644 --- a/yaxis.go +++ b/yaxis.go @@ -117,7 +117,7 @@ func (ya YAxis) Measure(r Renderer, canvasBox Box, ra Range, defaults Style, tic maxy = MaxInt(maxy, ly+tbh2) } - if ya.NameStyle.Show && len(ya.Name) > 0 { + if !ya.NameStyle.Hidden && len(ya.Name) > 0 { maxx += (DefaultYAxisMargin + maxTextHeight) } @@ -188,7 +188,7 @@ func (ya YAxis) Render(r Renderer, canvasBox Box, ra Range, defaults Style, tick } nameStyle := ya.NameStyle.InheritFrom(defaults.InheritFrom(Style{TextRotationDegrees: 90})) - if ya.NameStyle.Show && len(ya.Name) > 0 { + if !ya.NameStyle.Hidden && len(ya.Name) > 0 { nameStyle.GetTextOptions().WriteToRenderer(r) tb := Draw.MeasureText(r, ya.Name, nameStyle) @@ -209,13 +209,13 @@ func (ya YAxis) Render(r Renderer, canvasBox Box, ra Range, defaults Style, tick Draw.Text(r, ya.Name, tx, ty, nameStyle) } - if ya.Zero.Style.Show { + if !ya.Zero.Style.Hidden { ya.Zero.Render(r, canvasBox, ra, false, Style{}) } - if ya.GridMajorStyle.Show || ya.GridMinorStyle.Show { + if !ya.GridMajorStyle.Hidden || !ya.GridMinorStyle.Hidden { for _, gl := range ya.GetGridLines(ticks) { - if (gl.IsMinor && ya.GridMinorStyle.Show) || (!gl.IsMinor && ya.GridMajorStyle.Show) { + if (gl.IsMinor && !ya.GridMinorStyle.Hidden) || (!gl.IsMinor && !ya.GridMajorStyle.Hidden) { defaults := ya.GridMajorStyle if gl.IsMinor { defaults = ya.GridMinorStyle From fa93bd8abb2fc1e3028613954f31d1b1bea7f4bc Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Wed, 13 Feb 2019 19:13:29 -0800 Subject: [PATCH 38/73] updates --- cmd/chart/main.go | 69 ++++++++++++++++--- ...tion.go => last_value_annotation_series.go | 4 +- ...go => last_value_annotation_series_test.go | 4 +- seq.go | 21 ++++++ 4 files changed, 84 insertions(+), 14 deletions(-) rename last_value_annotation.go => last_value_annotation_series.go (81%) rename last_value_annotation_test.go => last_value_annotation_series_test.go (79%) diff --git a/cmd/chart/main.go b/cmd/chart/main.go index 216062a..8818663 100644 --- a/cmd/chart/main.go +++ b/cmd/chart/main.go @@ -11,11 +11,16 @@ import ( ) var ( - outputPath = flag.String("output", "", "The output file") - inputFormat = flag.String("format", "csv", "The input format, either 'csv' or 'tsv' (defaults to 'csv')") - inputPath = flag.String("f", "", "The input file") - disableLinreg = flag.Bool("disable-linreg", false, "If we should omit linear regressions") - disableLastValues = flag.Bool("disable-last-values", false, "If we should omit last values") + outputPath = flag.String("output", "", "The output file") + + inputFormat = flag.String("format", "csv", "The input format, either 'csv' or 'tsv' (defaults to 'csv')") + inputPath = flag.String("f", "", "The input file") + reverse = flag.Bool("reverse", false, "If we should reverse the inputs") + + hideLegend = flag.Bool("hide-legend", false, "If we should omit the chart legend") + hideSMA = flag.Bool("hide-sma", false, "If we should omit simple moving average") + hideLinreg = flag.Bool("hide-linreg", false, "If we should omit linear regressions") + hideLastValues = flag.Bool("hide-last-values", false, "If we should omit last values") ) func main() { @@ -58,6 +63,10 @@ func main() { log.FatalErr(err) } + if *reverse { + yvalues = chart.ValueSequence(yvalues...).Reverse().Values() + } + var series []chart.Series mainSeries := chart.ContinuousSeries{ Name: "Values", @@ -66,17 +75,57 @@ func main() { } series = append(series, mainSeries) - if !*disableLinreg { - linRegSeries := &chart.LinearRegressionSeries{ - InnerSeries: mainSeries, - } - series = append(series, linRegSeries) + smaSeries := &chart.SMASeries{ + Name: "SMA", + Style: chart.Style{ + Hidden: *hideSMA, + StrokeColor: chart.ColorRed, + StrokeDashArray: []float64{5.0, 5.0}, + }, + InnerSeries: mainSeries, } + series = append(series, smaSeries) + + linRegSeries := &chart.LinearRegressionSeries{ + Name: "Values - Lin. Reg.", + Style: chart.Style{ + Hidden: *hideLinreg, + }, + InnerSeries: mainSeries, + } + series = append(series, linRegSeries) + + mainLastValue := chart.LastValueAnnotationSeries(mainSeries) + mainLastValue.Style = chart.Style{ + Hidden: *hideLastValues, + } + series = append(series, mainLastValue) + + linregLastValue := chart.LastValueAnnotationSeries(linRegSeries) + linregLastValue.Style = chart.Style{ + Hidden: (*hideLastValues || *hideLinreg), + } + series = append(series, linregLastValue) + + smaLastValue := chart.LastValueAnnotationSeries(smaSeries) + smaLastValue.Style = chart.Style{ + Hidden: (*hideLastValues || *hideSMA), + } + series = append(series, smaLastValue) graph := chart.Chart{ + Background: chart.Style{ + Padding: chart.Box{ + Top: 50, + }, + }, Series: series, } + if !*hideLegend { + graph.Elements = []chart.Renderable{chart.LegendThin(&graph)} + } + var output *os.File if *outputPath != "" { output, err = os.Create(*outputPath) diff --git a/last_value_annotation.go b/last_value_annotation_series.go similarity index 81% rename from last_value_annotation.go rename to last_value_annotation_series.go index f3d4b46..550c367 100644 --- a/last_value_annotation.go +++ b/last_value_annotation_series.go @@ -2,8 +2,8 @@ package chart import "fmt" -// LastValueAnnotation returns an annotation series of just the last value of a value provider. -func LastValueAnnotation(innerSeries ValuesProvider, vfs ...ValueFormatter) AnnotationSeries { +// LastValueAnnotationSeries returns an annotation series of just the last value of a value provider. +func LastValueAnnotationSeries(innerSeries ValuesProvider, vfs ...ValueFormatter) AnnotationSeries { var vf ValueFormatter if len(vfs) > 0 { vf = vfs[0] diff --git a/last_value_annotation_test.go b/last_value_annotation_series_test.go similarity index 79% rename from last_value_annotation_test.go rename to last_value_annotation_series_test.go index 3d1931f..651105d 100644 --- a/last_value_annotation_test.go +++ b/last_value_annotation_series_test.go @@ -6,7 +6,7 @@ import ( "github.com/blend/go-sdk/assert" ) -func TestLastValueAnnotation(t *testing.T) { +func TestLastValueAnnotationSeries(t *testing.T) { assert := assert.New(t) series := ContinuousSeries{ @@ -14,7 +14,7 @@ func TestLastValueAnnotation(t *testing.T) { YValues: []float64{5.0, 3.0, 3.0, 2.0, 1.0}, } - lva := LastValueAnnotation(series) + lva := LastValueAnnotationSeries(series) assert.NotEmpty(lva.Annotations) lvaa := lva.Annotations[0] assert.Equal(5, lvaa.XValue) diff --git a/seq.go b/seq.go index aabdc99..76ac40d 100644 --- a/seq.go +++ b/seq.go @@ -148,6 +148,27 @@ func (s Seq) Sort() Seq { return Seq{Array(values)} } +// Reverse reverses the sequence +func (s Seq) Reverse() Seq { + if s.Len() == 0 { + return s + } + + values := s.Values() + valuesLen := len(values) + valuesLen1 := len(values) - 1 + valuesLen2 := valuesLen >> 1 + var i, j float64 + for index := 0; index < valuesLen2; index++ { + i = values[index] + j = values[valuesLen1-index] + values[index] = j + values[valuesLen1-index] = i + } + + return Seq{Array(values)} +} + // Median returns the median or middle value in the sorted seq. func (s Seq) Median() (median float64) { l := s.Len() From 781a45d7700066591c0990cdc5a4c9e8442472c4 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Sat, 16 Feb 2019 11:17:39 -0800 Subject: [PATCH 39/73] tests pass --- chart.go | 11 ++++++++++- chart_test.go | 15 +++++++++++---- e2efill.png | Bin 0 -> 22796 bytes xaxis.go | 7 +++++++ yaxis.go | 7 +++++++ 5 files changed, 35 insertions(+), 5 deletions(-) create mode 100755 e2efill.png diff --git a/chart.go b/chart.go index 411a9c6..5212a43 100644 --- a/chart.go +++ b/chart.go @@ -103,6 +103,8 @@ func (c Chart) Render(rp RendererProvider, w io.Writer) error { canvasBox := c.getDefaultCanvasBox() xf, yf, yfa := c.getValueFormatters() + Debugf(c.Log, "chart; canvas box: %v", canvasBox) + xr, yr, yra = c.setRangeDomains(canvasBox, xr, yr, yra) err = c.checkRanges(xr, yr, yra) @@ -116,6 +118,8 @@ func (c Chart) Render(rp RendererProvider, w io.Writer) error { canvasBox = c.getAxesAdjustedCanvasBox(r, canvasBox, xr, yr, yra, xt, yt, yta) xr, yr, yra = c.setRangeDomains(canvasBox, xr, yr, yra) + Debugf(c.Log, "chart; axes adjusted canvas box: %v", canvasBox) + // do a second pass in case things haven't settled yet. xt, yt, yta = c.getAxesTicks(r, xr, yr, yra, xf, yf, yfa) canvasBox = c.getAxesAdjustedCanvasBox(r, canvasBox, xr, yr, yra, xt, yt, yta) @@ -126,6 +130,8 @@ func (c Chart) Render(rp RendererProvider, w io.Writer) error { canvasBox = c.getAnnotationAdjustedCanvasBox(r, canvasBox, xr, yr, yra, xf, yf, yfa) xr, yr, yra = c.setRangeDomains(canvasBox, xr, yr, yra) xt, yt, yta = c.getAxesTicks(r, xr, yr, yra, xf, yf, yfa) + + Debugf(c.Log, "chart; annotation adjusted canvas box: %v", canvasBox) } c.drawCanvas(r, canvasBox) @@ -382,14 +388,17 @@ func (c Chart) getAxesAdjustedCanvasBox(r Renderer, canvasBox Box, xr, yr, yra R axesOuterBox := canvasBox.Clone() if !c.XAxis.Style.Hidden { axesBounds := c.XAxis.Measure(r, canvasBox, xr, c.styleDefaultsAxes(), xticks) + Debugf(c.Log, "chart; x-axis measured %v", axesBounds) axesOuterBox = axesOuterBox.Grow(axesBounds) } if !c.YAxis.Style.Hidden { axesBounds := c.YAxis.Measure(r, canvasBox, yr, c.styleDefaultsAxes(), yticks) + Debugf(c.Log, "chart; y-axis measured %v", axesBounds) axesOuterBox = axesOuterBox.Grow(axesBounds) } - if !c.YAxisSecondary.Style.Hidden { + if !c.YAxisSecondary.Style.Hidden && c.hasSecondarySeries() { axesBounds := c.YAxisSecondary.Measure(r, canvasBox, yra, c.styleDefaultsAxes(), yticksAlt) + Debugf(c.Log, "chart; y-axis secondary measured %v", axesBounds) axesOuterBox = axesOuterBox.Grow(axesBounds) } diff --git a/chart_test.go b/chart_test.go index 8810374..dbbb34f 100644 --- a/chart_test.go +++ b/chart_test.go @@ -484,8 +484,12 @@ func TestChartE2ELine(t *testing.T) { assert := assert.New(t) c := Chart{ - Height: 50, - Width: 50, + Height: 50, + Width: 50, + TitleStyle: Hidden(), + XAxis: HideXAxis(), + YAxis: HideYAxis(), + YAxisSecondary: HideYAxis(), Canvas: Style{ Padding: BoxZero, }, @@ -532,6 +536,10 @@ func TestChartE2ELineWithFill(t *testing.T) { Background: Style{ Padding: BoxZero, }, + TitleStyle: Hidden(), + XAxis: HideXAxis(), + YAxis: HideYAxis(), + YAxisSecondary: HideYAxis(), Series: []Series{ ContinuousSeries{ Style: Style{ @@ -542,6 +550,7 @@ func TestChartE2ELineWithFill(t *testing.T) { YValues: LinearRangeWithStep(0, 4, 1), }, }, + Log: NewLogger(), } assert.Equal(5, len(c.Series[0].(ContinuousSeries).XValues)) @@ -551,8 +560,6 @@ func TestChartE2ELineWithFill(t *testing.T) { err := c.Render(PNG, buffer) assert.Nil(err) - // do color tests ... - i, err := png.Decode(buffer) assert.Nil(err) diff --git a/e2efill.png b/e2efill.png new file mode 100755 index 0000000000000000000000000000000000000000..b4c121a231ca0a729257fe68080b36898e6c31c0 GIT binary patch literal 22796 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 K5iJK&fB6rhKgCr5 literal 0 HcmV?d00001 diff --git a/xaxis.go b/xaxis.go index fbde599..4fcb569 100644 --- a/xaxis.go +++ b/xaxis.go @@ -4,6 +4,13 @@ import ( "math" ) +// HideXAxis hides the x-axis. +func HideXAxis() XAxis { + return XAxis{ + Style: Hidden(), + } +} + // XAxis represents the horizontal axis. type XAxis struct { Name string diff --git a/yaxis.go b/yaxis.go index 028fcc8..841fc86 100644 --- a/yaxis.go +++ b/yaxis.go @@ -4,6 +4,13 @@ import ( "math" ) +// HideYAxis hides a y-axis. +func HideYAxis() YAxis { + return YAxis{ + Style: Hidden(), + } +} + // YAxis is a veritcal rule of the range. // There can be (2) y-axes; a primary and secondary. type YAxis struct { From 0576aba75e5ca822fe4ca8a1b71d8540b3d6dc1c Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Sat, 16 Feb 2019 11:17:53 -0800 Subject: [PATCH 40/73] removing debugging file --- e2efill.png | Bin 22796 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 e2efill.png diff --git a/e2efill.png b/e2efill.png deleted file mode 100755 index b4c121a231ca0a729257fe68080b36898e6c31c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22796 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 K5iJK&fB6rhKgCr5 From 59451fbeb4239c67ded1b9d6a5843d8240f9ded4 Mon Sep 17 00:00:00 2001 From: Justin Kromlinger Date: Tue, 19 Feb 2019 19:51:41 +0100 Subject: [PATCH 41/73] Add type classes on class output (#106) * Add type classes on class output Without this it is quite difficult to differentiate between fill and stroke elements, f.e. with basic charts with fillings or legends generally: `svg path:nth-last-of-type(2).legend` Text elements needed to be accessed with text.classname which isn't really best practise. This way they can be accessed easier: `svg .legend.fill` * Add type classes to examples * Fix import in custom_stylesheets example --- _examples/css_classes/main.go | 15 ++++++++------- _examples/custom_stylesheets/main.go | 14 +++++++------- vector_renderer.go | 19 ++++++++++++++++--- 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/_examples/css_classes/main.go b/_examples/css_classes/main.go index 5046b72..9718de5 100644 --- a/_examples/css_classes/main.go +++ b/_examples/css_classes/main.go @@ -17,7 +17,8 @@ func inlineSVGWithClasses(res http.ResponseWriter, req *http.Request) { "")) pie := chart.PieChart{ - // Note that setting ClassName will cause all other inline styles to be dropped! + // Notes: * Setting ClassName will cause all other inline styles to be dropped! + // * The following type classes may be added additionally: stroke, fill, text Background: chart.Style{ClassName: "background"}, Canvas: chart.Style{ ClassName: "canvas", @@ -42,12 +43,12 @@ func css(res http.ResponseWriter, req *http.Request) { res.Header().Set("Content-Type", "text/css") res.Write([]byte("svg .background { fill: white; }" + "svg .canvas { fill: white; }" + - "svg path.blue { fill: blue; stroke: lightblue; }" + - "svg path.green { fill: green; stroke: lightgreen; }" + - "svg path.gray { fill: gray; stroke: lightgray; }" + - "svg text.blue { fill: white; }" + - "svg text.green { fill: white; }" + - "svg text.gray { fill: white; }")) + "svg .blue.fill.stroke { fill: blue; stroke: lightblue; }" + + "svg .green.fill.stroke { fill: green; stroke: lightgreen; }" + + "svg .gray.fill.stroke { fill: gray; stroke: lightgray; }" + + "svg .blue.text { fill: white; }" + + "svg .green.text { fill: white; }" + + "svg .gray.text { fill: white; }")) } func main() { diff --git a/_examples/custom_stylesheets/main.go b/_examples/custom_stylesheets/main.go index 2432b2d..36f6106 100644 --- a/_examples/custom_stylesheets/main.go +++ b/_examples/custom_stylesheets/main.go @@ -2,19 +2,19 @@ package main import ( "fmt" - "github.com/hashworks/go-chart" + "github.com/wcharczuk/go-chart" "log" "net/http" ) const style = "svg .background { fill: white; }" + "svg .canvas { fill: white; }" + - "svg path.blue { fill: blue; stroke: lightblue; }" + - "svg path.green { fill: green; stroke: lightgreen; }" + - "svg path.gray { fill: gray; stroke: lightgray; }" + - "svg text.blue { fill: white; }" + - "svg text.green { fill: white; }" + - "svg text.gray { fill: white; }" + "svg .blue.fill.stroke { fill: blue; stroke: lightblue; }" + + "svg .green.fill.stroke { fill: green; stroke: lightgreen; }" + + "svg .gray.fill.stroke { fill: gray; stroke: lightgray; }" + + "svg .blue.text { fill: white; }" + + "svg .green.text { fill: white; }" + + "svg .gray.text { fill: white; }" func svgWithCustomInlineCSS(res http.ResponseWriter, _ *http.Request) { res.Header().Set("Content-Type", chart.ContentTypeSVG) diff --git a/vector_renderer.go b/vector_renderer.go index 71c6a86..0d7fc76 100644 --- a/vector_renderer.go +++ b/vector_renderer.go @@ -311,15 +311,28 @@ func (c *canvas) getFontFace(s Style) string { // styleAsSVG returns the style as a svg style or class string. func (c *canvas) styleAsSVG(s Style) string { - if s.ClassName != "" { - return fmt.Sprintf("class=\"%s\"", s.ClassName) - } sw := s.StrokeWidth sc := s.StrokeColor fc := s.FillColor fs := s.FontSize fnc := s.FontColor + if s.ClassName != "" { + var classes []string + classes = append(classes, s.ClassName) + if !sc.IsZero() { + classes = append(classes, "stroke") + } + if !fc.IsZero() { + classes = append(classes, "fill") + } + if fs != 0 || s.Font != nil { + classes = append(classes, "text") + } + + return fmt.Sprintf("class=\"%s\"", strings.Join(classes, " ")) + } + var pieces []string if sw != 0 { From 9852fce5a172598e72d16f4306f0f17a53d94eb4 Mon Sep 17 00:00:00 2001 From: Alessandro Date: Tue, 19 Feb 2019 19:52:03 +0100 Subject: [PATCH 42/73] adding donut type chart, like a pie chart with a blank circle on the center and little trick for label position (#111) (some way of improvement) --- _examples/donut_chart/main.go | 54 ++++++ _examples/donut_chart/output.png | Bin 0 -> 24439 bytes _examples/donut_chart/reg.svg | 25 +++ donut_chart.go | 321 +++++++++++++++++++++++++++++++ donut_chart_test.go | 69 +++++++ 5 files changed, 469 insertions(+) create mode 100644 _examples/donut_chart/main.go create mode 100644 _examples/donut_chart/output.png create mode 100644 _examples/donut_chart/reg.svg create mode 100644 donut_chart.go create mode 100644 donut_chart_test.go diff --git a/_examples/donut_chart/main.go b/_examples/donut_chart/main.go new file mode 100644 index 0000000..010dbec --- /dev/null +++ b/_examples/donut_chart/main.go @@ -0,0 +1,54 @@ +package main + +import ( + "fmt" + "log" + "net/http" + + "github.com/wcharczuk/go-chart" +) + +func drawChart(res http.ResponseWriter, req *http.Request) { + pie := chart.DonutChart{ + Width: 512, + Height: 512, + Values: []chart.Value{ + {Value: 5, Label: "Blue"}, + {Value: 5, Label: "Green"}, + {Value: 4, Label: "Gray"}, + {Value: 4, Label: "Orange"}, + {Value: 3, Label: "Deep Blue"}, + {Value: 3, Label: "test"}, + }, + } + + res.Header().Set("Content-Type", "image/png") + err := pie.Render(chart.PNG, res) + if err != nil { + fmt.Printf("Error rendering pie chart: %v\n", err) + } +} + +func drawChartRegression(res http.ResponseWriter, req *http.Request) { + pie := chart.DonutChart{ + Width: 512, + Height: 512, + Values: []chart.Value{ + {Value: 5, Label: "Blue"}, + {Value: 2, Label: "Two"}, + {Value: 1, Label: "One"}, + }, + } + + res.Header().Set("Content-Type", chart.ContentTypeSVG) + err := pie.Render(chart.SVG, res) + if err != nil { + fmt.Printf("Error rendering pie chart: %v\n", err) + } +} + +func main() { + http.HandleFunc("/", drawChart) + http.HandleFunc("/reg", drawChartRegression) + log.Fatal(http.ListenAndServe(":8080", nil)) +} diff --git a/_examples/donut_chart/output.png b/_examples/donut_chart/output.png new file mode 100644 index 0000000000000000000000000000000000000000..e682501a9a47b2e151c858a6f409e5c4a569f178 GIT binary patch literal 24439 zcmeFY^;cD2^e((SGbQTA3+d=tEli&1A>sjpU4pAf4>4K zWvd{_R6_Bkw3cty(W+0NCj4IVuSb0ni^^qjCi3$JYm#RRGWyni+8qUXd+-DJ=1cXC zg0(|cX;czvIcm(-PukMO^gOSX>>sZNj5n$*e_8w~+>Jr)%xWJRmlZgbb$PZyr!tk( zA${Yw9mo>Nq=*BiJ*!nC2frX(Oz>g$?EilLpL+oB02wlC@8}Q^H~dk5Mj|XMY*5vF7EcvBFfuYS zH#ZkI{=l4>HQPaz7D@LTG-v`ZZ7Qp_D{EuhsW^GpKad92D>hfPEMbH zS{)n9Q^v}(BsE=Hs4FCn{QPO}LozC=+p}@W7Ff3t=UScR;L&13uKz(|k?sOiWE#eCVby^CN(ug)FzNfx1Pfcl587l*;BF>IP{= z{m=JC(s@?q365O}+!rKR;Us1f$>=To1f1wt~ii*MLmI27FLdy|Eccr*^(TEW5h zzd8eUM>ENZhzh3n=cq*_;Yg7 zZF?v=3E2+1aq0 z{ii-Ym&q+gV5X%e$H~b_<1Q|*ppP#Z7TY{ZUNY>fZ|{!hb_XNcTUsv1vPJbd=7?3r zUc6mu#3tvgG-xV!fiZ`W{pTx&^1|G~Epv*Lq@*zOG?SVK_`GSE1Q||WVq#*B{{ia( zbD7rb&X-MB`}_Npu@U}z>+9<$C&6bnx&4%a&MVu)shS!ZC!`RFVlQuR7EFfc&yRaABTp9kWo->?^=*KZ~%B_YU=8~g8zO0 z{(YKqad9yVPG8r<{cYS@Qg(K%ImImD!|rn$)8`x^hZt4K|}7y71^E?p8d;y}I4gl_Sg-W(`Nm!=YN~|A`0SI}I9X6m%T3hDApCnATv# z&0LjXB+lchdvT#SOA4~bkNu99nrw6YiaW<684?seMn{iw8mg&c2P;R+D&C(WW=YF5ObWXoHq%m+B&O^=n?3p=Y|Ac7HJ^<4ReY5oP6hY0;?ch~un3n? z*V9vgvobR?n^Sn#+~>wEEiJ{-N&X5B;@#NTpop-xvNEG6)?yQVLz*q(RW3y@DO;nMRO)&s+};1PN?_=o0Zdn1LV8mvP>=dF*l;G)DQ`FE!d{3cMBZKGL(X z*=cp#dXpnorp4yy;Gk1wu>I$cWZ>1`n3x#-2AlrDLDM$(qWXIGi9Bh^yT2&#hDYHR z`%^^#?Ua?2l73oQ)cG#dnqQWiueN*1C*&YddRE$rj;fW!+Cw zm1uL{9$IX$6|IH{9))X`yb%W*a;42NeK z-26#&|08Vdur75e_&5m}+0E5e42`Jw{oOT4stzzk4l>x~s?XtE6+o{=07W3kvV=WM z{P&p;W=8>1EYxm*DKPM9Jv}{RqN4-0Vg*Z0C~^A4#KclKjoV=l!Rg97hlgLCS49r0 z3zTN!NW^Gejuz^`=ow;u?t?U;ODgF+%uk>0&Vcw*&CL-HXs)O@Of?N&ygx8>>0~C0 zj;9v>2M`oH{M+819lMJoQak>idPe+-lDfLnuYW{DL>Q{D&rw9O z-{h;QHTaJZpgu|ZDJCwyoO%E5-Mc~BfRXWWt`{#7m=xQLP7V$ndM$8TR!Xc>e_8=7 zoLgJK^Q4PG(o23*VpwM(=kMPxMX%THxestyn0gGXZ4N+01&hB@ffC)rbGaGY``g>I zziu*n-B#+WBqPj?I4|#W55>jA^589Q1dtBA4_|U-X6Ai(IE_T$RkE&$-(gh?Sb@%t zj(=xo@ie0HaJ-*ZJPsJ7MH>1V8dLWTOo}_(+htniapYRhNO;mm%(%@c=D-jW6BE}e zApZ;x50}L|WnVhw?>K8VTtZL`vL&SB_4@}QPM?LPrLmDwsclC`M?qmBF)=al8&AN6 zQF%F`1Azi1jn~;K|CE^pY3kD3#Sgpe*EYUpVbWu3wwcM2p|ot zg-P)Bc71();j8!z<>DVdes~?u35$waQp_za-3(B`SJ z&Zk#aR!G@(z$W-oRFp016X$<_SkwJRRdx658uoCzrp=bTsM>k418x+&b%v#4kzl)DRc`Om5<94tAj! zZ9J1=nbytuw5sIw?)VVltmxhhFy zh#M6(1g_?2u8=rm$7jUZg79-#CKJe9bsJjMR27#C3f;Q;NXo9vqUr4H?Cgt9{<;^K7Q7zw#H93Bak00+WR?Y$-o9**!(vB}b zKOam><3e&0=CB#|?p=Fe@{%meR!ZEst*xyr1oaSrfF~s(c^UNS4>dHC=bYN?vQ|Co zaCyA^D(Jmwy_I6BXk%KwNJiC&}$>ZezW0(nS5db6NDTMIlJ z1vMHY8ylN|Kni_S(oxb!BxwyDEI6OT(urV?7<`Vb?1$}lq?+^$S z6qMniAs$}dNL;GoNjs5~MItIHcCzTQ*rl?D+{C1$7dTXs!5!Q8tqKV&Q>FdNB2%S< z$_7)V%(3m6;}lI_6vy4@z9n8Y!TuC`j3RS#uGhXaGWu?bC3IC4*%~!Wbm|gMKVJDy|QgS-oFx&T>8`xNjli`=0A&Cu>*(kV{=5gc2(kvKj4~u)!GVE+a&mGuHXsG5 zC@UZBKc@ddfG)GDP)dcVjZ$Xc4)1a zPr^FHm#oYOVK*0;+nM7S^t3t+V-dPx#)KS~Yt8%OCGT5({`|VT3&iQWySoDw8D^ZA+ik zm;3!b#v!NVp4+gYeszC!^B4R?`kl!cDWI7hnsL!v85kHWIC)=E85L>ludh#R?-*U0 zb5npFvhPXs!3usbYde;8y;m4t{3d(pG{A}{Jvw?g=mN8$EAx4<(ucCP?=u<>4y??L zRVkfai!@RryQC?d5^-Bk96Gtw#03Xli=gW=a?*RDpak^XvmvJyI3v_ zMxPVE^!;{!1&L!q0Xqi=OLKD<`_CyN+FD!1E>}F78zjl|OZkR)VsM4MCpIP33Wq$~ z)q>j9RK(9eyB0@$EPns77>@)^q_5_Q6iR!@k&&^n@$1*Gy}Z0UJrT7s2R@LzXpS1y0zYukjIaRzud zvGr+w!K+uV$?%9p|2@G9VU~s<>=*mEP4*E(OobdtOvg3aJnI`Xo)L>Lp&W>eB; zSvDGWUPaN-u%^@Q^fV>28t0jUQ)B1L#*}^bL>%p(@5vUeXruSIkS5-gF$TAmUu~3s z)BkQFrq$upxb=np$w7fsH!2e3AHi3OYi$cB-BtO>Hq*py+^}@6;&3QfR#g~?#{N_U z5%d|=yAnkl83}5SR+~MHezV6uc3DzQYtyPzWqj(mdSDs*K*1gq{B8!nIU8C3rgiFl>kLbow1})~cZ)(18C-h>?ORd&% z%v~|OyqO$;#U$Sc6eP7UDpMfu&_g}O3SNcPSFK%l)Rn7E_*&f)PsuZK>9~R%KSpPw ze1}?5kf9a%1CsU**_(RFKd=zdg?gbn2>9D_JjN$33vt_2Hng#YL~ks zi{Xqi&WD(ke`Zl>z3Xp2)hWnYC;mG>%!mhIX8kAYi-TT|5 z_#I@%P{>hud<2`ZHzi>rztD9_^&TDSTd!x#Ouj2+jd!$@-|NIfK9Ov*+V3Tu>QjH5=)H)2#n z3^j)M3ni<3{Swatrj2QQ|N4BxoIv}I8S&5KEv)k09NkK80=-~PQY6gi!m#;~*Yh6A zb-bQ2LbmjsCBcCRr>co;J?@P*>BXk8+88fsWi$O>tPmuG*c?E`oHn5{j0< zbgkmxcr{Qz9qusG1S!3PYRToRSP)9HMe*h+wo*wV;chqcvla0IlN>u&x!XyMyf>$S`hn|_XeS?>r3KA19@UACc4l%`r4R^ zb5Jw~5kLa5Gwj;r65LuPz$YO&*8)vm1M}Lou&h{6TN%GEH}N_VFYF-jdIFsfEHZeV z&wczRuUBOEl^$~XTvjFppEuAnqyc`}>wJffXssfJkvgi8Be$a?nMDH#EB}IzB|cIN zAxs*U_z;KXE}EpJ*ht1;0fpP&^<^}Un+MSO_nJuQSaBzeA5{b#QaEWjd#r!AHI&KV zo9~`ZMTEEGp@Xlt!)>=8(bT=o$EfURrU7P$@s(*x^3Ht8uSS8|1KrBxs-AZHeNV!D zVn&sR{X;pf}j#KuAV}qPlDS_;V8aPn|ePIa_ZM+W=c5c3}KxubEltr30X9bk(3womQkfVk) z*-v#(>9XWkBSY-@1`lTB&bPcaRg&8e{4}d8fs}HgF~Hl}?JJ0zkJzOZ5CxW@w4U7V zT=&SrOdGtU(qW}V6Dc>g@)2^6KMpB*qhF+&E|PO7lxGUQv$8;1COuU7&aOh!_#QRR z69Z@R>s)RDW9*rugz99B?hkwSWXodyp?vZmum!BysKxs+)nFUc_>gS6jhU@qXJ5dMkz z8%<)_)S07ag5I5;&^aM$$aaE%kqDeO?HnsDM9%h5)t;~EdF8c??7?#{=?OgKo_~D% z%UHN0W+)f&{T9|W1ugIrqiG#6&F1rKHE+F0< zn%X-R7s5;Kz9=BRpm|3(fW)N)aL1tmCT)zihrWPa>LSu|uRV~$s-0=)fMBf=Jd&&$ zEBbSTgNkG(EFa6_#qNnf`8p3CS+}W9fvXT6q{3A9#rsukUHF`jISD2dJ!y11_NDxl zF&cC(Gkc@?n`L&Io5D;O*kt}pvZSW{efuM5FT5FElBH%HH0%G%!Nqos9^wd5o3rEb z2Elhutt8^FLQ|*Gem+B=YTyoL7wJ7M2brq^2CVlAM%~;wmdYA zErpjfV;k#S(u5|=!5l?VkS27OV#JH*Ue9PlQjF#B_`koKBsDD^vNf8p6c1I~zOdf6 zUNe>Zv``U1K^B#51?=IYEHsNS7#YM8VA5rTl{41)Rtb z<)YJJym?v$q&vgl)&i}Bdi&-)4{e)>kE$R2L6<_{Z@H~!5|Is9< ziembgos<`kj!7{?eoc_l^0J!ksKVr>pq24hU6jaxHG9ON@<-O>Os86S3CZ5!JRhx$ zu^gz>CM*G*ruq>4H))XvSg5uas-}^Rr5INo+fH#^WL~5Qd{n7;`)b&$jP+pRg_8S) z8%qisrVr%SwS+GJSseq)$!EhdU4S2_SLvDMwzIlrbu}HV>{f zMFffHkxdYTE4@2)t9|O^NE|p9$o27abbYlNvRgYll4`n>|0S0gyOGzYzkL?oAOUP9 z>-(0T1L>M#?JeBQUyje^{tLa+Bh8|iehUT~@TTF2yOkoj=7{E!GscF3yx_?p>JoPs zkvvK6uV;6Hmu@tv!mFKE;@dw4qaf$`xH|X9ChlimnR~dBVR*fO&NX)DB&!`X!Xm22l-Kruh!}Z$w!OjrSh#zcb;^=Y*JV zoe``qg3QeXl+i}z`T5diS{4-GG!M>olfLuH|B*gROPpj+4&gUhSy^#w97#X5*hnMH z*^*zgBoPYK(qZ9=W~`e2n~gDz%R0F0$ZVLNR@%AsZO;@}Jy`Z^!#FQ0G5`9)aKH`E zJ1QvmroCg4;wrytCDE`qITcy{cGVt1r97nf)e*t^;FgW(I=t&LeJUW(Tvb(t*tlGS zNqX+7b(+8cec2gsNk&FyK_TF|Hvu{*Kc=UN`)Y4)ZU7}}+U}`XI0n^EiFK9qAbQ>tE6Fg~1)jXQR!y3FvL3a2CMya&9%YFLXa#j274t}u!)v7EZ zw~B7nL$R_k|5Sn97y3p+!~4KN>o;^Yynv%je(kmS{X~2FP*ihCdCkYRzQ_cN-cS3JVJEPvc<< zOo`vWe?MMsfdQ5lm{0?_&7M${=Z0Z&Jsf$}_Koe5N!91)B@R>>5(^irCtd^2eC&h1yjU_x%*LO$kD;%f*Zrix6dN1s=jWH6o?cg1 z2e@4j2%uxIySw}QHy=NLEVZyZXt4G6_EJQ|(ux}}Bz!3;p%eGlDw!V5;6DU?P;Xb) z9`2F8zQWSd(%M>XVDQOG8|ZwHA;K;wI8b>@1S#g7?==c%^)KqT7$dnd9uFS!9nUjy zP1zg?2#_0I9QPo+j4*Xp9nNoI7tI7X1~A@xqttJC_`VchxyaSaw9v!ArYze^!o|ha zDEmCP<#itnIxU-L0yhytw%{X^B~#GsZL;zwx3Hl$V((_~>jIO&eL-s^li8trCP%<&tmbczeE_+kA4^BL z$zDTLt=T0S>fKxn=F*90S~X*)GhYy@`1YB9qjJL9++sXJiQ5v=ow@%s`i%yS!=dk2 zFowZHPC0+`9iD9O0}6Jp^YRruXNb~pu{C#aL#)g0BI-$YGd`2b&8Fs3N7xr6Hyt=O zM?Us4>!)Lq@9uwl{1OcxgxAGRtLD}^+MX&X7d>6_{37$}$87OC^dR{v&Wbm%LLJ>2 zK871&v7T$#wd$jHbKQeP)Dbjr;}7kRG9e^aO?~arr)&41K=%Mptjd-CXWO|;FKdRq zQTP_e8rEBuWTVHR+pNhwyVsD7?AA5Ikos0Fz5d|*F@L)we>-pZLAg$t9Ov>Yn7HJ6 zzM1)LADIkq)j<;9+s9J{HyC7bsi;-h>z{S8hteEN9U{cqlFrvlDbgCfzaX>TDzug>Ds+x`oh#`~bg zIj^yYwlP^_G=Bmp?Uz~L?bbLPJ@ZP>hwH3FoPUWiI~x$6x)90+@qt z%}USaZK>yda5!H!bb6PqTm?8UZyYsuf8>|{=HLBl;^s1&Yp_hrS3L7HERO(MfM?xh z-^S%tZ}y@h_kN7r#e0Ou4GZPo`xtllk65vAyM?=6+UbKJm+PZ>A8O8*9Z42nS@`Q1 zi?$oSq==v$7ottv7!H}Qk?)9b2e|_>v)N;9<4_o_v|^9bRQ0liHvP|uMHeG!+1t6D zJBQL%v%v@1#WCr3wb#_Sli883Z$p2*Kklr)x-#;xd2XzTQ`L<&N{BDHdFC>sO+RoB zP3+^kxZJIn)lS;eUh;TbeP6TbKl95LNOfkN{11{y8OozMsV_0_^RB_?Ot|MT9oj+c zZiXspDMx^Q!(4ar#CO@lH4Kg{ZPL30!DSv^v>Vo93@HPflboMc9V{B~~qeeoKX-=JI87EM2X=CC)OoUu~8_1wOs&~)Qv`xJxj?O7X=+Y_Ird){)% z&Pvv%AN`LVzwT~5e10QujP_a?KcohxI5O07a4(s{O!gti-^$resw8_$S;V-P(0D_A z%4%b)wkl$anuGe9Z@BETL}>9HuiODS-q1g)n{(L4xg>@%Zus2VKO2#k)R#e6UZl@n zh(L`Zh-E5CLCRaiSWjs1FV*|E)eSR~M}8X9r9W>L)so+pR-1eiMwY(n>sa5{qr-D+ zqVXqg-p{&2OuNVC3myvO!AtP*clq8sd0Szrk-x(!M4^YvU&MbHRM$0s@xoG`GmUI` z+kGTQkbm2r$2-$th;Vk6*Qh4pTY_qS#-d_wz0KCp%f&y!Z^ds|?GXDH(U+1b3TXkz z7=19lu4Cu_2Ge+YX!G)T1ZgXQzGn5fs4<)>1g;(j!*mpr4Bc|LA zjn^M;3W%A^JsNU+QCJ?ya}2iOm15@`H$?azl`Ika;ioa8R&{$t>EA_sQbldO4&s%q zT?_alKEt1vkdvO7VCyo?%qo&CaqS@Q<~O@OAr(BhRjzLoH^_Ywa{8q`!LCA1-vUEu zj3~}mhTzmEYZd-;$y@$MKONO}l=;H-RKN+7+rc8zDaxP5`$sa^Rgx;_U+g=$g<^I; zv=i{9Q9+Taxh@XPtM{L}l3E&bRNnAX#6Cd^2GX`kt*oazH!AC`5rkDmU&eTnNCI$o zKfau-aYe8cJntKFrH;lXjQvYUJ+8SQv(vKvH0Lyv*4wtlfjK{0zmr+cQa31BK<@kI zC^4_6BDd_<5I%#|jCjeG`)gALSD~yy@)1hX7eDUM5+_pc^GC&{4xV>dm1Qnia7|um zbG-1t7yjYG&2iNwqUvp%xc9;K&IYHw0-meh$*iv#Qz|9@cU{3DOt9X`-A{Oxf)Yx< zmRq|^jB0;W;qKw>@BcH9PSvMjS1~A)^D?CCyfIlYb;lQnG&U#!EBpSkWQI`nq)IZa z?EM^F{uzo%F4K|c9Xbj(AB2~6b#}L1QCcBowwE_ibY}bU{SI+1mUS|VWxRTdbvDlx z=velpE)McNbTPg-qPsnyqvZ^pqf1WB-jZ~Kp?Z;Gf>GvR*Fja4gkGdSM*in$krs!7 zLh}EfDg0ICiE%Q<@ohJ`3@@b*U93Zm=BM(!z?2~$kn*(39vV)u|3i_j(-f{8aXyak zcWB>A|98btDe^0oj>nigP?$!ynd-HMVBvwL9iock>EDNlzZ8Ph{oe!re&Z41BmG}h zyd8pE)LO;o&*Q<(zvyEL%4^@TeSd83emT2)Dt!opiHxMFq2(e7TTAx`1Kzed;*EHejfV=B>#a^yQ(aU(fCHeX$5!IY76D#-jHs#UXR4j;uGJc>U*nNf^$OzZpJ!fnHG z-h}zwp4znSq`jF4jG#gDuMWR&EYjSFoB#(}iIlHESd4eYieB(Ft#ry~^l#ytJo~Wr zgNnPZ1OO33nIox(p=pA{}v8x6I89TgBMA zKwg3!#k^TF#s67fT)uR}tEfxOj2CP|OCt$yc+c6sGj8-W4TM#SWc4Bo1n_q$|R~g_ZnNis(QV) zdXK{Xz~3hzZrLm{t;M{}#gyU&L$y0Giex%N?|}Yje(q~mbQ*$zO4G5#j}9};=aO&P z;I^W$#rm^Uvi?=WNO#n`zpuWZQngALQsCnt)UJ-d1^`{<~QehNjSuj5NWqEyqU)Dv~P?t9nFy2AI_=6HI3(2 zS0w2x8P@)&*lfuGvO$yLN0nO3Qc{F@tfn-MP&Wk2HV3>HI+5M@LCVpE+Q%I{p%r&& zrzN+PTlTFtUN{b*Dr1(do(omO0Hjm1Rz3^2VG-rt;_wQz`H3v)f`3Mi<6u1b;=Ttp zhEYZ{J-eKz8HepQJ|pBB`<$q@wJJaNl)Jc6&uW4uq(d92s=J7#?s7x z+kx~n@($Mk7JarQROO~9WgL!}CW0Ke(~zG(_xzn0otc}TKj@L8B1t7_?k24nJuJo=*?8p`(9!KWc|K4bupOD^bm4hn zfes$TA?3mse0k^+fJY;19F=YOjF$8dH^2#RKp9I&Llch%Pa_B93aY=|2kqQHqtelx zV8sB<^Y~w8pZWPgt(+r=M|1RNE4=;Dt>F7z@p*G0FuZZxYqo?q%ldOoA{r4vCD53&_zFjE(N!5M9Cxh&TS?k+Ac#$%5N zq%GpF-LX_Aw$+>3?DjpG;HLaU(Y_Xfw7)a4?cYvD`kvE z+__FN`0hIIJmdxRwP4O+^o<~D3K7}wKPQ`@x@CFvyLHT+;v;y-84Hd1Oo~a{o+v0J z{^9&F9hS#bLMR&2IqM9s#i6e}s#HZit{2wDhkgrOEL^~ddi2sjL6pj`XPEU+7?FGK zIAqP9Aa$7_OW=b|xjpXoc<55vI6Np(8d?BK_zav!cv8m5)67CRvc~U%5_>5^Rzo=H z!N0Lyf`5Yr`7-%EN&G5JDu#SjrO< zm%7JdqqM?IgmWMV{VD1MGyok%BDaUwaX(w2^TJv$_Ei@GE+X(mTEu!s|Cx;+xP78W z3KPmC7(0_Uen<08+DtUxPP0!DA{(@*6I(I*uR%jO66WE{QPVp!@Ls3y9!08RI-j!_ zPgsd&k>mDZaGJ}vp2pl(Et)ssCARs4IL5_;s1r9OSo27;2f9pTK_pKz87=};Xb)Eq z6EZ~ZgFMZ?DXZP$Lxq#?+fhY-pKQjoqq<_CLNsZ$G@lR{&A^&jLZLvZWeqdK2|@Rty3fP|BcOO9P4@IFegyYNvM(cfVRyEa8 zybEY;)YTIrBVSorF%6^JJo-ix(hro@oP*yU+@(x=yrqC4G$G8eSavqHxk~*cAa)k_ z^!AR6jWup|S`0x#;ke=yx8_@f#TY)WglhSzW0);YXWr9#J@M|3A}m$P%kD>(D$}ag zt1Bofl4D5V(64{VK}IJTd^eFVtD>R;RGrN;U(etDw0d|Tufn+qX^?&*b{X-tyyk_IdTMF}l$1kT zs}d&Vz`UCI=zfcYy$hnjogJI7Uit)u_cG@3j{q-3W{WKz(4!pj@U>J4Ld5qYub=Nv zQ$(m_@O^MVyujIVZ*!cl9vvETc>A`WyRx?SFA(!%Vq<5D`TYYTQ!-AYR)^Vgz>oq` z4N$gaRaGiXM1YWT23!dsNWZ$IO9b5jX`ce_a}JXZy?nL62gIdp~Nq2Y*SQCH!ox&_Fwqyk+iio13BK2{n z4(2CMHtr>_0HHQ8FaQ+o(cpayHg@*IE27zzTv4BD(5nD+Ab2u9zDDw<(+9y?91gUB z*|)I?O!@E@AzG9Z&*vBWLeHK(V`OCH=l8leTBL~R9~iKpu$e2)RIiu?Legvnrq{~K zU;bIHw7L~Ps4QQ?;WQF~zVh+|7st!DQxARNqL7lKW*OGIkU09~{LoNNO4rAKxmGM- z-=609BKOq-MSqrv*T<{1$b{zR+w2NIpgRX|eN0TKmBT?iGo0L$$gZMh3Aq(;A@$sv zUXs+3Br+K;Yk_X7Pw7TZ3_3M>rBB^L$yRG?E6~>F2zvn4C%-9>*aFfW2p6ZOr`@RO z1f29zC5dQgj(`951lqRUoB&P^j-$UDeKU)(fKi)~`qpSa4c@E({g4Qtt3TZS9!Lus zs!eR4$Kr@)v_qEH@j~#F_mJy<=eih&*xK9#H=qAtjQ6}o z1WLdFSqK7CxqEw7*Ay2Iuh^E8R>!Rs>Bcl@$zCa);K9>D{%(6DMv;@NG1&(7b{mh#pjSZn+saSd3 z=u(kn{RolEkYrZ)MYl&M{DnDANXo$EM#>3Ha`q+@yiWs&*011&f!{xq#Krt2A7g`g zAs@%xoDJgnQ*NuZ|HHszV2}BL7+MubHg5d)_8_kt8Wg-F~ z^L>20hHF0b1tjuc5uFO1l~8)n{tuI2W)B88b!`?z50JscE86ghJmZLtVag2*n4O)C;p5hgGJ%I zAp7C&Ar~l`+k<)`?ZjV`7vx0Z6{H1x@)FMG3@9j7*Qj{TPF=Ux2u}Gnn^Hc+egoAK z@&+10I}5(_sRsA|E(vDjJw$SHV>(G@neF;7eK8rAH%9i5e!y38rB3Cs#D5`=3Z?cD zibjD0NG_YhfrE7{$jk*co%u#s#8UQ8c3g#U^w0)ALm}yTjjubA1d%Ym2>t+RvxNfe zqdX|Y9J={p{aek}54qw+!tccl{~7It=j2GJAwi+(dFSelW&f0hfFT^Zl)sYyt)|rvL$e#n zsyhl^+xM(U>$}?@KtlF8av}nLL6*3m{usU`0c0Vz?~x_Wktf+|S}RK{!O`NPMsHH5 zz)sdUT>Oj(i-HH^vounO`2ysE504mI8GryOXxfw+nneOD%|dukxiSS1U@MTu9C3roJZVN~n`t?8Y!%YZ5BA6lLd9 zAotMXh5%$qdi~vF>uLOB+PHQCc_D3m_OMRf{oTPdLNgn*kivyt^`pFyvons+;SJ?% zA)ABmbz;@mIr@)>3}B&2#HrHVaysf7g35PQSrtMN* z4kv^B;Zt7l%GVfk$6|3Wq^O3O3SwH_v`LRG=)U!xBXTAWGoQyyL#VbjHaq_%Q zA&r~aM&`Hc-3jXyQv|{!_bj)=(k53`l0%Glz&@k~nlm|1Ua}KWL&oN){H{7uS*;X- z2F0LUQfKyOh;h0P{63XIT01JrYQ9P3A$Dx6%7(qRp6N^u@SHF0-lEW)o0$mxUb`Az z^g0a5>xnXw4|FjytH?(5Xq{sDgo=o=(N#XHBr|&PY!rPoqr-BSD*De^!~S#auWZvf z)Z7s}l*fyIw)weF*Br90#4g|Dx*t(BAVYn%X0YzcI|k6^N1?4A!?t~cg^$Y<@JoSc zc{r(?<9KdN((v_Iyw?Rjd0(uqi;<&~gt|UBb)i50-k~W=K@NqY+_ z(KCVJ!2GMlfdcKeZpYZw)ek1BY4^!)>m@%1gHT;*WyiJ3_`YH*{TJk6qAE@e0XR4z zQXs@QsRsvN;bqd0PhVqhYc$;zRerb7j*owMJJBSbS@&n~N0CNck9+b`n?T`d#R@|w z)=rSYEIlUlb@ycRh{MatIb6|eM+W(hY&2`iuRtqP@d0*S5;wbhelt{5UQEt|7bxnE zmD}G6bLo^aTWIlPcCP{wyOB+1qSt;q6_m%c#IPqAk*F-Dqu`{5>y{$InRY+%b=WoTCSGCkRyvQu8%(4jfrv zB_41UeGcnh(KvOuaCz<@oh=5pmECw?7wQyn$|&NrgDK$L*41*fbqyk%^8V06X$&0C zLc+ID6@g5yuGCz1r(f0EoiF!Vtx&TgB}k}n_TQQ6g^uajy093zQ17O0GYV?NG3T>R z21glVOyWA%K>D*{=mj72Ql=N8<6_A*7wsAJI2~b?MhP6vnI{^Ej~=_%P}#!zW2nT{ zOwm*!yJZ%t_lhO)jza^0JQLw3P(wp(_xqkLm#tF$3MCwHv!GS)6**V|+u49bM zXzF5$V4kzC9+gy_=-yh$8EO=%+ARDl%*~?wBJuZpTfe@$-rsQLw9g+9k|Vewy-$!} z+(&mZ0+}>aH2gstjUnT_0j!$(ml|{V{#8>B{dbdU6RtsjcKgVBt0&RlE#w$}p2sQd zdWP$6Vex?PfkJN=!j(HXyPsa)KQtkok6k?2{#7Vle9cO&YD_qTgR3D}ao(_k?(0q8 z#Rlw*T*UBU_3g`sHxF-36w8S4{9b(+v_TX7sID7|E{hT}Y7vf#WA<%s!sMhH+xEMc z$-ND|is@&QCH0(`((25i*-@D4gZXl;T;Z3ULPF(FPh1u?)rtiu)ycnk=Eo7?jZF}; zMxaAYls#Q2QcMIRA2SJf{h2DJ;%y8V7%e+60oYMKVDVssvnk=i0;oI;1_%1T@d!8BeGLr_DVy? zBHbXav@w8km-=t-C;eZ6w{+1-YX=vsVa{~RJ?3>1l!7unHiew1xI4d)6qq+ZLEQyB z0iq6;W}hAk9=l28oY;)B$F?_JKYjD_AK@$ zG0=P;g9lQxJU*3$D$@D^hcUOf_tko+&3LAQyY663W^puSb~xAd^k zCv`fu&n#Fm*1>u7zncw*!q=jgG}6X$TxeJRTsi#AJ@d;)ez89Rr!^8v8L;rz`Tfl9 zn)D0etlKqKJkqxZ2xij$M-)d*#t%67G{5ZKa0pNsihb zP^IM+TRHMWX2hSdx@-B1&wjLLMk8q8c<+XopL~O2f|EnS43{;2(?Y_&G&Va_Eg-;q zH=P_y>?X7^rtv?`8&Tl;U>$5AV`+~ zYM0tmf*6z+#aP(MNA`cGkj!sf`nFV~Onn}i*6Cg9?bHPH{|z{Rga3yMiQD2w&-Jv0 zv1pK!{X~VyxUhRs8?w5wP9g)BQbKCmSw9x7?2ext4p}ChNyO_;`GBtGjrvM;%lGEL zf-U(Pb|2Kh35ZegU-sy7@>>B!@8TdxhcT_8()S=8Do&>)Vz23bVJOEg;;y?j8jo7c z*(lwKVZ(`7vFW$g*OZ`MpIsCB*Gd;hV;(J-IERMhIvq+3%jpgz^&&MUj((4&X~FUm zZ}88r>i6GkE$deve$%#u)6funa|^6Yf@K-*DU`XiE`-Gz+P^mSw>

    !0)EGIPVf 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 Vm;>Wv5u85s_`y@<5=CV2e*vo_W7+@! literal 0 HcmV?d00001 diff --git a/_examples/donut_chart/reg.svg b/_examples/donut_chart/reg.svg new file mode 100644 index 0000000..f14c2af --- /dev/null +++ b/_examples/donut_chart/reg.svg @@ -0,0 +1,25 @@ +\nBlueTwoOne \ No newline at end of file diff --git a/donut_chart.go b/donut_chart.go new file mode 100644 index 0000000..3472c98 --- /dev/null +++ b/donut_chart.go @@ -0,0 +1,321 @@ +package chart + +import ( + "errors" + "fmt" + "io" + "github.com/golang/freetype/truetype" + "github.com/wcharczuk/go-chart/util" +) + +// DonutChart is a chart that draws sections of a circle based on percentages with an hole. +type DonutChart struct { + Title string + TitleStyle Style + + ColorPalette ColorPalette + + Width int + Height int + DPI float64 + + Background Style + Canvas Style + SliceStyle Style + + Font *truetype.Font + defaultFont *truetype.Font + + Values []Value + Elements []Renderable +} + +// GetDPI returns the dpi for the chart. +func (pc DonutChart) GetDPI(defaults ...float64) float64 { + if pc.DPI == 0 { + if len(defaults) > 0 { + return defaults[0] + } + return DefaultDPI + } + return pc.DPI +} + +// GetFont returns the text font. +func (pc DonutChart) GetFont() *truetype.Font { + if pc.Font == nil { + return pc.defaultFont + } + return pc.Font +} + +// GetWidth returns the chart width or the default value. +func (pc DonutChart) GetWidth() int { + if pc.Width == 0 { + return DefaultChartWidth + } + return pc.Width +} + +// GetHeight returns the chart height or the default value. +func (pc DonutChart) GetHeight() int { + if pc.Height == 0 { + return DefaultChartWidth + } + return pc.Height +} + + + +// Render renders the chart with the given renderer to the given io.Writer. +func (pc DonutChart) Render(rp RendererProvider, w io.Writer) error { + if len(pc.Values) == 0 { + return errors.New("please provide at least one value") + } + + r, err := rp(pc.GetWidth(), pc.GetHeight()) + if err != nil { + return err + } + + if pc.Font == nil { + defaultFont, err := GetDefaultFont() + if err != nil { + return err + } + pc.defaultFont = defaultFont + } + r.SetDPI(pc.GetDPI(DefaultDPI)) + + canvasBox := pc.getDefaultCanvasBox() + canvasBox = pc.getCircleAdjustedCanvasBox(canvasBox) + + pc.drawBackground(r) + pc.drawCanvas(r, canvasBox) + + + finalValues, err := pc.finalizeValues(pc.Values) + if err != nil { + return err + } + pc.drawSlices(r, canvasBox, finalValues) + pc.drawTitle(r) + for _, a := range pc.Elements { + a(r, canvasBox, pc.styleDefaultsElements()) + } + + return r.Save(w) +} + +func (pc DonutChart) drawBackground(r Renderer) { + Draw.Box(r, Box{ + Right: pc.GetWidth(), + Bottom: pc.GetHeight(), + }, pc.getBackgroundStyle()) +} + +func (pc DonutChart) drawCanvas(r Renderer, canvasBox Box) { + Draw.Box(r, canvasBox, pc.getCanvasStyle()) +} + +func (pc DonutChart) drawTitle(r Renderer) { + if len(pc.Title) > 0 && pc.TitleStyle.Show { + Draw.TextWithin(r, pc.Title, pc.Box(), pc.styleDefaultsTitle()) + } +} + +func (pc DonutChart) drawSlices(r Renderer, canvasBox Box, values []Value) { + cx, cy := canvasBox.Center() + diameter := util.Math.MinInt(canvasBox.Width(), canvasBox.Height()) + radius := float64(diameter >> 1) / 1.1 + labelRadius := (radius * 2.83) / 3.0 + + // draw the donut slices + var rads, delta, delta2, total float64 + var lx, ly int + + if len(values) == 1 { + pc.styleDonutChartValue(0).WriteToRenderer(r) + r.MoveTo(cx, cy) + r.Circle(radius, cx, cy) + } else { + for index, v := range values { + v.Style.InheritFrom(pc.styleDonutChartValue(index)).WriteToRenderer(r) + r.MoveTo(cx, cy) + rads = util.Math.PercentToRadians(total) + delta = util.Math.PercentToRadians(v.Value) + + r.ArcTo(cx, cy, (radius / 1.25), (radius / 1.25), rads, delta) + + r.LineTo(cx, cy) + r.Close() + r.FillStroke() + total = total + v.Value + } + } + + + //making the donut hole + v := Value{Value: 100, Label: "center"} + styletemp := pc.SliceStyle.InheritFrom(Style{ + StrokeColor: ColorWhite, StrokeWidth: 4.0, FillColor: ColorWhite, FontColor: ColorWhite, //Font: pc.GetFont(),//FontSize: pc.getScaledFontSize(), + }) + v.Style.InheritFrom(styletemp).WriteToRenderer(r) + r.MoveTo(cx, cy) + r.ArcTo(cx, cy, (radius / 3.5), (radius / 3.5), util.Math.DegreesToRadians(0), util.Math.DegreesToRadians(359)) + r.LineTo(cx, cy) + r.Close() + r.FillStroke() + + + // draw the labels + total = 0 + for index, v := range values { + v.Style.InheritFrom(pc.styleDonutChartValue(index)).WriteToRenderer(r) + if len(v.Label) > 0 { + delta2 = util.Math.PercentToRadians(total + (v.Value / 2.0)) + delta2 = util.Math.RadianAdd(delta2, _pi2) + lx, ly = util.Math.CirclePoint(cx, cy, labelRadius, delta2) + + tb := r.MeasureText(v.Label) + lx = lx - (tb.Width() >> 1) + ly = ly + (tb.Height() >> 1) + + r.Text(v.Label, lx, ly) + } + total = total + v.Value + } +} + + +func (pc DonutChart) finalizeValues(values []Value) ([]Value, error) { + finalValues := Values(values).Normalize() + if len(finalValues) == 0 { + return nil, fmt.Errorf("donut chart must contain at least (1) non-zero value") + } + return finalValues, nil +} + +func (pc DonutChart) getDefaultCanvasBox() Box { + return pc.Box() +} + +func (pc DonutChart) getCircleAdjustedCanvasBox(canvasBox Box) Box { + circleDiameter := util.Math.MinInt(canvasBox.Width(), canvasBox.Height()) + + square := Box{ + Right: circleDiameter, + Bottom: circleDiameter, + } + + return canvasBox.Fit(square) +} + +func (pc DonutChart) getBackgroundStyle() Style { + return pc.Background.InheritFrom(pc.styleDefaultsBackground()) +} + +func (pc DonutChart) getCanvasStyle() Style { + return pc.Canvas.InheritFrom(pc.styleDefaultsCanvas()) +} + +func (pc DonutChart) styleDefaultsCanvas() Style { + return Style{ + FillColor: pc.GetColorPalette().CanvasColor(), + StrokeColor: pc.GetColorPalette().CanvasStrokeColor(), + StrokeWidth: DefaultStrokeWidth, + } +} + +func (pc DonutChart) styleDefaultsDonutChartValue() Style { + return Style{ + StrokeColor: pc.GetColorPalette().TextColor(), + StrokeWidth: 4.0, + FillColor: pc.GetColorPalette().TextColor(), + } +} + +func (pc DonutChart) styleDonutChartValue(index int) Style { + return pc.SliceStyle.InheritFrom(Style{ + StrokeColor: ColorWhite, + StrokeWidth: 4.0, + FillColor: pc.GetColorPalette().GetSeriesColor(index), + FontSize: pc.getScaledFontSize(), + FontColor: pc.GetColorPalette().TextColor(), + Font: pc.GetFont(), + }) +} + +func (pc DonutChart) getScaledFontSize() float64 { + effectiveDimension := util.Math.MinInt(pc.GetWidth(), pc.GetHeight()) + if effectiveDimension >= 2048 { + return 48.0 + } else if effectiveDimension >= 1024 { + return 24.0 + } else if effectiveDimension > 512 { + return 18.0 + } else if effectiveDimension > 256 { + return 12.0 + } + return 10.0 +} + +func (pc DonutChart) styleDefaultsBackground() Style { + return Style{ + FillColor: pc.GetColorPalette().BackgroundColor(), + StrokeColor: pc.GetColorPalette().BackgroundStrokeColor(), + StrokeWidth: DefaultStrokeWidth, + } +} + +func (pc DonutChart) styleDefaultsElements() Style { + return Style{ + Font: pc.GetFont(), + } +} + +func (pc DonutChart) styleDefaultsTitle() Style { + return pc.TitleStyle.InheritFrom(Style{ + FontColor: pc.GetColorPalette().TextColor(), + Font: pc.GetFont(), + FontSize: pc.getTitleFontSize(), + TextHorizontalAlign: TextHorizontalAlignCenter, + TextVerticalAlign: TextVerticalAlignTop, + TextWrap: TextWrapWord, + }) +} + +func (pc DonutChart) getTitleFontSize() float64 { + effectiveDimension := util.Math.MinInt(pc.GetWidth(), pc.GetHeight()) + if effectiveDimension >= 2048 { + return 48 + } else if effectiveDimension >= 1024 { + return 24 + } else if effectiveDimension >= 512 { + return 18 + } else if effectiveDimension >= 256 { + return 12 + } + return 10 +} + +// GetColorPalette returns the color palette for the chart. +func (pc DonutChart) GetColorPalette() ColorPalette { + if pc.ColorPalette != nil { + return pc.ColorPalette + } + return AlternateColorPalette +} + +// Box returns the chart bounds as a box. +func (pc DonutChart) Box() Box { + dpr := pc.Background.Padding.GetRight(DefaultBackgroundPadding.Right) + dpb := pc.Background.Padding.GetBottom(DefaultBackgroundPadding.Bottom) + + return Box{ + Top: pc.Background.Padding.GetTop(DefaultBackgroundPadding.Top), + Left: pc.Background.Padding.GetLeft(DefaultBackgroundPadding.Left), + Right: pc.GetWidth() - dpr, + Bottom: pc.GetHeight() - dpb, + } +} diff --git a/donut_chart_test.go b/donut_chart_test.go new file mode 100644 index 0000000..f01b3b9 --- /dev/null +++ b/donut_chart_test.go @@ -0,0 +1,69 @@ +package chart + +import ( + "bytes" + "testing" + + assert "github.com/blend/go-sdk/assert" +) + +func TestDonutChart(t *testing.T) { + assert := assert.New(t) + + pie := DonutChart{ + Canvas: Style{ + FillColor: ColorLightGray, + }, + Values: []Value{ + {Value: 10, Label: "Blue"}, + {Value: 9, Label: "Green"}, + {Value: 8, Label: "Gray"}, + {Value: 7, Label: "Orange"}, + {Value: 6, Label: "HEANG"}, + {Value: 5, Label: "??"}, + {Value: 2, Label: "!!"}, + }, + } + + b := bytes.NewBuffer([]byte{}) + pie.Render(PNG, b) + assert.NotZero(b.Len()) +} + +func TestDonutChartDropsZeroValues(t *testing.T) { + assert := assert.New(t) + + pie := DonutChart{ + Canvas: Style{ + FillColor: ColorLightGray, + }, + Values: []Value{ + {Value: 5, Label: "Blue"}, + {Value: 5, Label: "Green"}, + {Value: 0, Label: "Gray"}, + }, + } + + b := bytes.NewBuffer([]byte{}) + err := pie.Render(PNG, b) + assert.Nil(err) +} + +func TestDonutChartAllZeroValues(t *testing.T) { + assert := assert.New(t) + + pie := DonutChart{ + Canvas: Style{ + FillColor: ColorLightGray, + }, + Values: []Value{ + {Value: 0, Label: "Blue"}, + {Value: 0, Label: "Green"}, + {Value: 0, Label: "Gray"}, + }, + } + + b := bytes.NewBuffer([]byte{}) + err := pie.Render(PNG, b) + assert.NotNil(err) +} From 07a9cdf5133ac1150a963fdbeff73ef02076db4b Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Wed, 24 Apr 2019 12:58:05 -0700 Subject: [PATCH 43/73] removing go-sdk stuff --- fileutil.go | 10 ++++------ parse.go | 6 ++---- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/fileutil.go b/fileutil.go index 0b832e2..f1a7768 100644 --- a/fileutil.go +++ b/fileutil.go @@ -4,15 +4,13 @@ import ( "bufio" "io" "os" - - "github.com/blend/go-sdk/exception" ) // ReadLines reads a file and calls the handler for each line. func ReadLines(filePath string, handler func(string) error) error { f, err := os.Open(filePath) if err != nil { - return exception.New(err) + return err } defer f.Close() @@ -21,7 +19,7 @@ func ReadLines(filePath string, handler func(string) error) error { line := scanner.Text() err = handler(line) if err != nil { - return exception.New(err) + return err } } return nil @@ -31,7 +29,7 @@ func ReadLines(filePath string, handler func(string) error) error { func ReadChunks(filePath string, chunkSize int, handler func([]byte) error) error { f, err := os.Open(filePath) if err != nil { - return exception.New(err) + return err } defer f.Close() @@ -44,7 +42,7 @@ func ReadChunks(filePath string, chunkSize int, handler func([]byte) error) erro readData := chunk[:readBytes] err = handler(readData) if err != nil { - return exception.New(err) + return err } } return nil diff --git a/parse.go b/parse.go index f38f6cc..5ecae0a 100644 --- a/parse.go +++ b/parse.go @@ -4,8 +4,6 @@ import ( "strconv" "strings" "time" - - "github.com/blend/go-sdk/exception" ) // ParseFloats parses a list of floats. @@ -20,7 +18,7 @@ func ParseFloats(values ...string) ([]float64, error) { continue } if parsedValue, err = strconv.ParseFloat(cleaned, 64); err != nil { - return nil, exception.New(err) + return nil, err } output = append(output, parsedValue) } @@ -34,7 +32,7 @@ func ParseTimes(layout string, values ...string) ([]time.Time, error) { var err error for _, value := range values { if parsedValue, err = time.Parse(layout, value); err != nil { - return nil, exception.New(err) + return nil, err } output = append(output, parsedValue) } From 762b314e86a94dad27f04b7531bc4c0c7ef7f331 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Wed, 24 Apr 2019 13:00:09 -0700 Subject: [PATCH 44/73] removing go-sdk completely --- PROFANITY_RULES.yml | 4 ++++ times.go | 9 ++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 PROFANITY_RULES.yml diff --git a/PROFANITY_RULES.yml b/PROFANITY_RULES.yml new file mode 100644 index 0000000..1e6c803 --- /dev/null +++ b/PROFANITY_RULES.yml @@ -0,0 +1,4 @@ +go-sdk: + excludeFiles: [ "*_test.go" ] + importsContain: [ github.com/blend/go-sdk/* ] + description: "please don't use go-sdk in this repo" \ No newline at end of file diff --git a/times.go b/times.go index 1a21f48..95e2acd 100644 --- a/times.go +++ b/times.go @@ -3,8 +3,6 @@ package chart import ( "sort" "time" - - "github.com/blend/go-sdk/timeutil" ) // Assert types implement interfaces. @@ -29,7 +27,7 @@ func (t Times) Len() int { // GetValue returns a value at an index as a time. func (t Times) GetValue(index int) float64 { - return timeutil.ToFloat64(t[index]) + return ToFloat64(t[index]) } // Swap implements sort.Interface. @@ -41,3 +39,8 @@ func (t Times) Swap(i, j int) { func (t Times) Less(i, j int) bool { return t[i].Before(t[j]) } + +// ToFloat64 returns a float64 representation of a time. +func ToFloat64(t time.Time) float64 { + return float64(t.UnixNano()) +} From fed210cc81711f887370d4142500bf4b6b00f60c Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Wed, 24 Apr 2019 13:00:46 -0700 Subject: [PATCH 45/73] tweaks --- Makefile | 2 +- PROFANITY | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-) delete mode 100644 PROFANITY diff --git a/Makefile b/Makefile index 84f7228..6b8f9da 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ test: .PHONY: profanity profanity: - @profanity -include="*.go,Makefile,README.md" + @profanity coverage: @coverage \ No newline at end of file diff --git a/PROFANITY b/PROFANITY deleted file mode 100644 index cdf3646..0000000 --- a/PROFANITY +++ /dev/null @@ -1,8 +0,0 @@ -- contains: "github.com/blend/go-sdk/" - message: "should not include go-sdk in this (outside tests)" - include: "*.go" - exclude: "*_test.go" -- contains: "github.com/blendlabs/go-" - message: "should not include blend go-* packages in this" - include: "*.go" - From 602ff901f7fca76d7cc8727dc70d49c2a3a688fc Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Mon, 9 Sep 2019 19:57:56 -0700 Subject: [PATCH 46/73] adds percent change series --- chart_test.go | 4 +- logger.go | 27 +++++++++-- percent_change_series.go | 89 +++++++++++++++++++++++++++++++++++ percent_change_series_test.go | 35 ++++++++++++++ 4 files changed, 150 insertions(+), 5 deletions(-) create mode 100644 percent_change_series.go create mode 100644 percent_change_series_test.go diff --git a/chart_test.go b/chart_test.go index dbbb34f..55db3e0 100644 --- a/chart_test.go +++ b/chart_test.go @@ -527,6 +527,8 @@ func TestChartE2ELine(t *testing.T) { func TestChartE2ELineWithFill(t *testing.T) { assert := assert.New(t) + logBuffer := new(bytes.Buffer) + c := Chart{ Height: 50, Width: 50, @@ -550,7 +552,7 @@ func TestChartE2ELineWithFill(t *testing.T) { YValues: LinearRangeWithStep(0, 4, 1), }, }, - Log: NewLogger(), + Log: NewLogger(OptLoggerStdout(logBuffer), OptLoggerStderr(logBuffer)), } assert.Equal(5, len(c.Series[0].(ContinuousSeries).XValues)) diff --git a/logger.go b/logger.go index a2fa397..28fc003 100644 --- a/logger.go +++ b/logger.go @@ -12,12 +12,16 @@ var ( ) // NewLogger returns a new logger. -func NewLogger() Logger { - return &StdoutLogger{ +func NewLogger(options ...LoggerOption) Logger { + stl := &StdoutLogger{ TimeFormat: time.RFC3339Nano, Stdout: os.Stdout, Stderr: os.Stderr, } + for _, option := range options { + option(stl) + } + return stl } // Logger is a type that implements the logging interface. @@ -30,8 +34,6 @@ type Logger interface { FatalErr(error) Error(...interface{}) Errorf(string, ...interface{}) - Println(...interface{}) - Errorln(...interface{}) } // Info logs an info message if the logger is set. @@ -66,6 +68,23 @@ func Debugf(log Logger, format string, arguments ...interface{}) { log.Debugf(format, arguments...) } +// LoggerOption mutates a stdout logger. +type LoggerOption = func(*StdoutLogger) + +//OptLoggerStdout sets the Stdout writer. +func OptLoggerStdout(wr io.Writer) LoggerOption { + return func(stl *StdoutLogger) { + stl.Stdout = wr + } +} + +// OptLoggerStderr sets the Stdout writer. +func OptLoggerStderr(wr io.Writer) LoggerOption { + return func(stl *StdoutLogger) { + stl.Stderr = wr + } +} + // StdoutLogger is a basic logger. type StdoutLogger struct { TimeFormat string diff --git a/percent_change_series.go b/percent_change_series.go new file mode 100644 index 0000000..3767893 --- /dev/null +++ b/percent_change_series.go @@ -0,0 +1,89 @@ +package chart + +// Interface Assertions. +var ( + _ Series = (*PercentChangeSeries)(nil) + _ FirstValuesProvider = (*PercentChangeSeries)(nil) + _ LastValuesProvider = (*PercentChangeSeries)(nil) + _ ValueFormatterProvider = (*PercentChangeSeries)(nil) +) + +// PercentChangeSeriesSource is a series that +// can be used with a PercentChangeSeries +type PercentChangeSeriesSource interface { + Series + FirstValuesProvider + LastValuesProvider + ValuesProvider + ValueFormatterProvider +} + +// PercentChangeSeries applies a +// percentage difference function to a given continuous series. +type PercentChangeSeries struct { + Name string + Style Style + YAxis YAxisType + InnerSeries PercentChangeSeriesSource +} + +// GetName returns the name of the time series. +func (pcs PercentChangeSeries) GetName() string { + return pcs.Name +} + +// GetStyle returns the line style. +func (pcs PercentChangeSeries) GetStyle() Style { + return pcs.Style +} + +// Len implements part of Series. +func (pcs PercentChangeSeries) Len() int { + return pcs.InnerSeries.Len() +} + +// GetFirstValues implements FirstValuesProvider. +func (pcs PercentChangeSeries) GetFirstValues() (x, y float64) { + return pcs.InnerSeries.GetFirstValues() +} + +// GetValues gets x, y values at a given index. +func (pcs PercentChangeSeries) GetValues(index int) (x, y float64) { + _, fy := pcs.InnerSeries.GetFirstValues() + x0, y0 := pcs.InnerSeries.GetValues(index) + x = x0 + y = PercentDifference(fy, y0) + return +} + +// GetValueFormatters returns value formatter defaults for the series. +func (pcs PercentChangeSeries) GetValueFormatters() (x, y ValueFormatter) { + x, _ = pcs.InnerSeries.GetValueFormatters() + y = PercentValueFormatter + return +} + +// GetYAxis returns which YAxis the series draws on. +func (pcs PercentChangeSeries) GetYAxis() YAxisType { + return pcs.YAxis +} + +// GetLastValues gets the last values. +func (pcs PercentChangeSeries) GetLastValues() (x, y float64) { + _, fy := pcs.InnerSeries.GetFirstValues() + x0, y0 := pcs.InnerSeries.GetLastValues() + x = x0 + y = PercentDifference(fy, y0) + return +} + +// Render renders the series. +func (pcs PercentChangeSeries) Render(r Renderer, canvasBox Box, xrange, yrange Range, defaults Style) { + style := pcs.Style.InheritFrom(defaults) + Draw.LineSeries(r, canvasBox, xrange, yrange, style, pcs) +} + +// Validate validates the series. +func (pcs PercentChangeSeries) Validate() error { + return pcs.InnerSeries.Validate() +} diff --git a/percent_change_series_test.go b/percent_change_series_test.go new file mode 100644 index 0000000..3114bb2 --- /dev/null +++ b/percent_change_series_test.go @@ -0,0 +1,35 @@ +package chart + +import ( + "testing" + + "github.com/blend/go-sdk/assert" +) + +func TestPercentageDifferenceSeries(t *testing.T) { + assert := assert.New(t) + + cs := ContinuousSeries{ + XValues: LinearRange(1.0, 10.0), + YValues: LinearRange(1.0, 10.0), + } + + pcs := PercentChangeSeries{ + Name: "Test Series", + InnerSeries: cs, + } + + assert.Equal("Test Series", pcs.GetName()) + assert.Equal(10, pcs.Len()) + x0, y0 := pcs.GetValues(0) + assert.Equal(1.0, x0) + assert.Equal(0, y0) + + xn, yn := pcs.GetValues(9) + assert.Equal(10.0, xn) + assert.Equal(9.0, yn) + + xn, yn = pcs.GetLastValues() + assert.Equal(10.0, xn) + assert.Equal(9.0, yn) +} From 6d57cf4533c1035566387629b389120eb02c94bf Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Mon, 9 Sep 2019 20:21:51 -0700 Subject: [PATCH 47/73] additions --- _examples/stock_analysis/main.go | 5 ---- bounded_last_values_annotation_series.go | 36 ++++++++++++++++++++++++ value_formatter.go | 7 +++++ 3 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 bounded_last_values_annotation_series.go diff --git a/_examples/stock_analysis/main.go b/_examples/stock_analysis/main.go index 9e28889..a8bd5a9 100644 --- a/_examples/stock_analysis/main.go +++ b/_examples/stock_analysis/main.go @@ -14,7 +14,6 @@ func drawChart(res http.ResponseWriter, req *http.Request) { priceSeries := chart.TimeSeries{ Name: "SPY", Style: chart.Style{ - Show: true, StrokeColor: chart.GetDefaultColor(0), }, XValues: xv, @@ -24,7 +23,6 @@ func drawChart(res http.ResponseWriter, req *http.Request) { smaSeries := chart.SMASeries{ Name: "SPY - SMA", Style: chart.Style{ - Show: true, StrokeColor: drawing.ColorRed, StrokeDashArray: []float64{5.0, 5.0}, }, @@ -34,7 +32,6 @@ func drawChart(res http.ResponseWriter, req *http.Request) { bbSeries := &chart.BollingerBandsSeries{ Name: "SPY - Bol. Bands", Style: chart.Style{ - Show: true, StrokeColor: drawing.ColorFromHex("efefef"), FillColor: drawing.ColorFromHex("efefef").WithAlpha(64), }, @@ -43,11 +40,9 @@ func drawChart(res http.ResponseWriter, req *http.Request) { graph := chart.Chart{ XAxis: chart.XAxis{ - Style: chart.StyleShow(), TickPosition: chart.TickPositionBetweenTicks, }, YAxis: chart.YAxis{ - Style: chart.StyleShow(), Range: &chart.ContinuousRange{ Max: 220.0, Min: 180.0, diff --git a/bounded_last_values_annotation_series.go b/bounded_last_values_annotation_series.go new file mode 100644 index 0000000..670ddf7 --- /dev/null +++ b/bounded_last_values_annotation_series.go @@ -0,0 +1,36 @@ +package chart + +import "fmt" + +// BoundedLastValuesAnnotationSeries returns a last value annotation series for a bounded values provider. +func BoundedLastValuesAnnotationSeries(innerSeries FullBoundedValuesProvider, vfs ...ValueFormatter) AnnotationSeries { + lvx, lvy1, lvy2 := innerSeries.GetBoundedLastValues() + + var vf ValueFormatter + if len(vfs) > 0 { + vf = vfs[0] + } else if typed, isTyped := innerSeries.(ValueFormatterProvider); isTyped { + _, vf = typed.GetValueFormatters() + } else { + vf = FloatValueFormatter + } + + label1 := vf(lvy1) + label2 := vf(lvy2) + + var seriesName string + var seriesStyle Style + if typed, isTyped := innerSeries.(Series); isTyped { + seriesName = fmt.Sprintf("%s - Last Values", typed.GetName()) + seriesStyle = typed.GetStyle() + } + + return AnnotationSeries{ + Name: seriesName, + Style: seriesStyle, + Annotations: []Value2{ + {XValue: lvx, YValue: lvy1, Label: label1}, + {XValue: lvx, YValue: lvy2, Label: label2}, + }, + } +} diff --git a/value_formatter.go b/value_formatter.go index 19e0370..468f3bd 100644 --- a/value_formatter.go +++ b/value_formatter.go @@ -96,3 +96,10 @@ func FloatValueFormatterWithFormat(v interface{}, floatFormat string) string { } return "" } + +// KValueFormatter is a formatter for K values. +func KValueFormatter(k float64, vf ValueFormatter) ValueFormatter { + return func(v interface{}) string { + return fmt.Sprintf("%0.0fσ %s", k, vf(v)) + } +} From 45fad0cfb8e64e6314abeeaf381102aad6d9279c Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Mon, 9 Sep 2019 21:02:48 -0700 Subject: [PATCH 48/73] switching to generators --- COVERAGE | 2 +- Makefile | 5 +- README.md | 12 +-- _examples/annotations/output.png | Bin 14316 -> 0 bytes _examples/axes/output.png | Bin 22311 -> 0 bytes _examples/axes_labels/output.png | Bin 24495 -> 0 bytes _examples/bar_chart/main.go | 57 ------------- _examples/basic/main.go | 43 ---------- _examples/basic/output.png | Bin 11698 -> 0 bytes _examples/benchmark_line_charts/main.go | 79 ------------------ _examples/benchmark_line_charts/output.png | Bin 69090 -> 0 bytes _examples/custom_formatters/output.png | Bin 27930 -> 0 bytes _examples/custom_padding/main.go | 67 --------------- _examples/custom_padding/output.png | Bin 67430 -> 0 bytes _examples/custom_ranges/output.png | Bin 11854 -> 0 bytes _examples/custom_styles/output.png | Bin 11949 -> 0 bytes _examples/custom_ticks/output.png | Bin 10854 -> 0 bytes _examples/descending/output.png | Bin 19754 -> 0 bytes _examples/donut_chart/main.go | 54 ------------ _examples/legend/output.png | Bin 24442 -> 0 bytes _examples/legend_left/output.png | Bin 44742 -> 0 bytes _examples/linear_regression/output.png | Bin 61885 -> 0 bytes _examples/min_max/output.png | Bin 173715 -> 0 bytes _examples/pie_chart/main.go | 55 ------------ _examples/poly_regression/output.png | Bin 55807 -> 0 bytes _examples/simple_moving_average/output.png | Bin 69904 -> 0 bytes _examples/stock_analysis/output.png | Bin 67897 -> 0 bytes _examples/twopoint/output.png | Bin 41022 -> 0 bytes {_examples => examples}/annotations/main.go | 17 ++-- examples/annotations/output.png | Bin 0 -> 26163 bytes .../axes_labels => examples/axes}/main.go | 27 ++---- examples/axes/output.png | Bin 0 -> 22406 bytes .../axes => examples/axes_labels}/main.go | 21 ++--- examples/axes_labels/output.png | Bin 0 -> 24546 bytes examples/bar_chart/main.go | 35 ++++++++ {_examples => examples}/bar_chart/output.png | Bin .../bar_chart_base_value/main.go | 42 ++-------- .../bar_chart_base_value/output.png | Bin examples/basic/main.go | 23 +++++ examples/basic/output.png | Bin 0 -> 24432 bytes examples/benchmark_line_charts/main.go | 52 ++++++++++++ examples/benchmark_line_charts/output.png | Bin 0 -> 321567 bytes {_examples => examples}/css_classes/main.go | 2 +- .../custom_formatters/main.go | 20 ++--- examples/custom_formatters/output.png | Bin 0 -> 29669 bytes examples/custom_padding/main.go | 34 ++++++++ examples/custom_padding/output.png | Bin 0 -> 66998 bytes {_examples => examples}/custom_ranges/main.go | 22 ++--- examples/custom_ranges/output.png | Bin 0 -> 20407 bytes {_examples => examples}/custom_styles/main.go | 21 ++--- examples/custom_styles/output.png | Bin 0 -> 23960 bytes .../custom_stylesheets/inlineOutput.svg | 0 .../custom_stylesheets/main.go | 0 {_examples => examples}/custom_ticks/main.go | 22 ++--- examples/custom_ticks/output.png | Bin 0 -> 17745 bytes {_examples => examples}/descending/main.go | 21 ++--- examples/descending/output.png | Bin 0 -> 19720 bytes examples/donut_chart/main.go | 28 +++++++ .../donut_chart/output.png | Bin {_examples => examples}/donut_chart/reg.svg | 0 {_examples => examples}/image_writer/main.go | 2 +- {_examples => examples}/legend/main.go | 22 ++--- examples/legend/output.png | Bin 0 -> 24548 bytes {_examples => examples}/legend_left/main.go | 26 ++---- examples/legend_left/output.png | Bin 0 -> 44943 bytes .../linear_regression/main.go | 21 ++--- examples/linear_regression/output.png | Bin 0 -> 72724 bytes {_examples => examples}/min_max/main.go | 39 ++++----- examples/min_max/output.png | Bin 0 -> 172334 bytes examples/pie_chart/main.go | 29 +++++++ {_examples => examples}/pie_chart/output.png | Bin {_examples => examples}/pie_chart/reg.svg | 0 .../poly_regression/main.go | 21 ++--- examples/poly_regression/output.png | Bin 0 -> 77622 bytes .../request_timings/main.go | 28 +++---- .../request_timings/output.png | Bin .../request_timings/requests.csv | 0 {_examples => examples}/rerender/main.go | 2 +- {_examples => examples}/scatter/main.go | 11 ++- {_examples => examples}/scatter/output.png | Bin .../simple_moving_average/main.go | 25 +++--- examples/simple_moving_average/output.png | Bin 0 -> 81566 bytes {_examples => examples}/stacked_bar/main.go | 26 ++---- .../stacked_bar/output.png | Bin .../stock_analysis/main.go | 18 ++-- examples/stock_analysis/output.png | Bin 0 -> 67905 bytes {_examples => examples}/text_rotation/main.go | 20 ++--- .../text_rotation/output.png | Bin {_examples => examples}/timeseries/main.go | 4 - {_examples => examples}/timeseries/output.png | Bin {_examples => examples}/twoaxis/main.go | 25 ++---- {_examples => examples}/twoaxis/output.png | Bin {_examples => examples}/twopoint/main.go | 13 +-- examples/twopoint/output.png | Bin 0 -> 41199 bytes 94 files changed, 402 insertions(+), 691 deletions(-) delete mode 100644 _examples/annotations/output.png delete mode 100644 _examples/axes/output.png delete mode 100644 _examples/axes_labels/output.png delete mode 100644 _examples/bar_chart/main.go delete mode 100644 _examples/basic/main.go delete mode 100644 _examples/basic/output.png delete mode 100644 _examples/benchmark_line_charts/main.go delete mode 100644 _examples/benchmark_line_charts/output.png delete mode 100644 _examples/custom_formatters/output.png delete mode 100644 _examples/custom_padding/main.go delete mode 100644 _examples/custom_padding/output.png delete mode 100644 _examples/custom_ranges/output.png delete mode 100644 _examples/custom_styles/output.png delete mode 100644 _examples/custom_ticks/output.png delete mode 100644 _examples/descending/output.png delete mode 100644 _examples/donut_chart/main.go delete mode 100644 _examples/legend/output.png delete mode 100644 _examples/legend_left/output.png delete mode 100644 _examples/linear_regression/output.png delete mode 100644 _examples/min_max/output.png delete mode 100644 _examples/pie_chart/main.go delete mode 100644 _examples/poly_regression/output.png delete mode 100644 _examples/simple_moving_average/output.png delete mode 100644 _examples/stock_analysis/output.png delete mode 100644 _examples/twopoint/output.png rename {_examples => examples}/annotations/main.go (83%) create mode 100644 examples/annotations/output.png rename {_examples/axes_labels => examples/axes}/main.go (60%) create mode 100644 examples/axes/output.png rename {_examples/axes => examples/axes_labels}/main.go (68%) create mode 100644 examples/axes_labels/output.png create mode 100644 examples/bar_chart/main.go rename {_examples => examples}/bar_chart/output.png (100%) rename {_examples => examples}/bar_chart_base_value/main.go (62%) rename {_examples => examples}/bar_chart_base_value/output.png (100%) create mode 100644 examples/basic/main.go create mode 100644 examples/basic/output.png create mode 100644 examples/benchmark_line_charts/main.go create mode 100644 examples/benchmark_line_charts/output.png rename {_examples => examples}/css_classes/main.go (97%) rename {_examples => examples}/custom_formatters/main.go (71%) create mode 100644 examples/custom_formatters/output.png create mode 100644 examples/custom_padding/main.go create mode 100644 examples/custom_padding/output.png rename {_examples => examples}/custom_ranges/main.go (66%) create mode 100644 examples/custom_ranges/output.png rename {_examples => examples}/custom_styles/main.go (65%) create mode 100644 examples/custom_styles/output.png rename {_examples => examples}/custom_stylesheets/inlineOutput.svg (100%) rename {_examples => examples}/custom_stylesheets/main.go (100%) rename {_examples => examples}/custom_ticks/main.go (74%) create mode 100644 examples/custom_ticks/output.png rename {_examples => examples}/descending/main.go (77%) create mode 100644 examples/descending/output.png create mode 100644 examples/donut_chart/main.go rename {_examples => examples}/donut_chart/output.png (100%) rename {_examples => examples}/donut_chart/reg.svg (100%) rename {_examples => examples}/image_writer/main.go (92%) rename {_examples => examples}/legend/main.go (72%) create mode 100644 examples/legend/output.png rename {_examples => examples}/legend_left/main.go (87%) create mode 100644 examples/legend_left/output.png rename {_examples => examples}/linear_regression/main.go (63%) create mode 100644 examples/linear_regression/output.png rename {_examples => examples}/min_max/main.go (51%) create mode 100644 examples/min_max/output.png create mode 100644 examples/pie_chart/main.go rename {_examples => examples}/pie_chart/output.png (100%) rename {_examples => examples}/pie_chart/reg.svg (100%) rename {_examples => examples}/poly_regression/main.go (55%) create mode 100644 examples/poly_regression/output.png rename {_examples => examples}/request_timings/main.go (89%) rename {_examples => examples}/request_timings/output.png (100%) rename {_examples => examples}/request_timings/requests.csv (100%) rename {_examples => examples}/rerender/main.go (95%) rename {_examples => examples}/scatter/main.go (74%) rename {_examples => examples}/scatter/output.png (100%) rename {_examples => examples}/simple_moving_average/main.go (51%) create mode 100644 examples/simple_moving_average/output.png rename {_examples => examples}/stacked_bar/main.go (63%) rename {_examples => examples}/stacked_bar/output.png (100%) rename {_examples => examples}/stock_analysis/main.go (96%) create mode 100644 examples/stock_analysis/output.png rename {_examples => examples}/text_rotation/main.go (77%) rename {_examples => examples}/text_rotation/output.png (100%) rename {_examples => examples}/timeseries/main.go (96%) rename {_examples => examples}/timeseries/output.png (100%) rename {_examples => examples}/twoaxis/main.go (64%) rename {_examples => examples}/twoaxis/output.png (100%) rename {_examples => examples}/twopoint/main.go (80%) create mode 100644 examples/twopoint/output.png diff --git a/COVERAGE b/COVERAGE index f309e21..7e492f8 100644 --- a/COVERAGE +++ b/COVERAGE @@ -1 +1 @@ -70.89 \ No newline at end of file +29.02 \ No newline at end of file diff --git a/Makefile b/Makefile index 6b8f9da..a393b6f 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,9 @@ new-install: @go get -v -u github.com/blend/go-sdk/cmd/coverage @go get -v -u github.com/blend/go-sdk/cmd/profanity +generate: + @go generate ./... + test: @go test ./... @@ -15,4 +18,4 @@ profanity: @profanity coverage: - @coverage \ No newline at end of file + @coverage diff --git a/README.md b/README.md index 0ba77f8..87f97ba 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,9 @@ go-chart ======== [![CircleCI](https://circleci.com/gh/wcharczuk/go-chart.svg?style=svg)](https://circleci.com/gh/wcharczuk/go-chart) [![Go Report Card](https://goreportcard.com/badge/github.com/wcharczuk/go-chart)](https://goreportcard.com/report/github.com/wcharczuk/go-chart) -Package `chart` is a very simple golang native charting library that supports timeseries and continuous -line charts. +Package `chart` is a very simple golang native charting library that supports timeseries and continuous line charts. -The v1.0 release has been tagged so things should be more or less stable, if something changes please log an issue. - -Master should now be on the v2.x codebase, which brings a couple new features and better handling of basics like axes labeling etc. Per usual, see `_examples` for more information. +Master should now be on the v3.x codebase, which overhauls the api significantly. Per usual, see `_examples` for more information. # Installation @@ -83,8 +80,7 @@ Here, we have a single series with x range values as float64s, rendered to a PNG # API Overview -Everything on the `chart.Chart` object has defaults that can be overriden. Whenever a developer sets a property on the chart object, it is to be assumed that value will be used instead of the default. One complication here -is any object's root `chart.Style` object (i.e named `Style`) and the `Show` property specifically, if any other property is set and the `Show` property is unset, it is assumed to be it's default value of `False`. +Everything on the `chart.Chart` object has defaults that can be overriden. Whenever a developer sets a property on the chart object, it is to be assumed that value will be used instead of the default. The best way to see the api in action is to look at the examples in the `./_examples/` directory. @@ -96,4 +92,4 @@ The goal with the API itself is to have the "zero value be useful", and to requi # Contributions -This library is super early but contributions are welcome. +Contributions are welcome though this library is in a holding pattern for the forseable future. diff --git a/_examples/annotations/output.png b/_examples/annotations/output.png deleted file mode 100644 index a2e80faaaae2216036c584320a603b382a4022e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14316 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 DKND<$ diff --git a/_examples/axes_labels/output.png b/_examples/axes_labels/output.png deleted file mode 100644 index 61c376cc29d3351fe48de2b38f254a906a3ec3d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24495 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 diff --git a/_examples/bar_chart/main.go b/_examples/bar_chart/main.go deleted file mode 100644 index 1694a29..0000000 --- a/_examples/bar_chart/main.go +++ /dev/null @@ -1,57 +0,0 @@ -package main - -import ( - "fmt" - "log" - "net/http" - "os" - - chart "github.com/wcharczuk/go-chart" -) - -func drawChart(res http.ResponseWriter, req *http.Request) { - sbc := chart.BarChart{ - Title: "Test Bar Chart", - TitleStyle: chart.StyleShow(), - Background: chart.Style{ - Padding: chart.Box{ - Top: 40, - }, - }, - Height: 512, - BarWidth: 60, - XAxis: chart.StyleShow(), - YAxis: chart.YAxis{ - Style: chart.StyleShow(), - }, - Bars: []chart.Value{ - {Value: 5.25, Label: "Blue"}, - {Value: 4.88, Label: "Green"}, - {Value: 4.74, Label: "Gray"}, - {Value: 3.22, Label: "Orange"}, - {Value: 3, Label: "Test"}, - {Value: 2.27, Label: "??"}, - {Value: 1, Label: "!!"}, - }, - } - - res.Header().Set("Content-Type", "image/png") - err := sbc.Render(chart.PNG, res) - if err != nil { - fmt.Printf("Error rendering chart: %v\n", err) - } -} - -func port() string { - if len(os.Getenv("PORT")) > 0 { - return os.Getenv("PORT") - } - return "8080" -} - -func main() { - listenPort := fmt.Sprintf(":%s", port()) - fmt.Printf("Listening on %s\n", listenPort) - http.HandleFunc("/", drawChart) - log.Fatal(http.ListenAndServe(listenPort, nil)) -} diff --git a/_examples/basic/main.go b/_examples/basic/main.go deleted file mode 100644 index 797dcb9..0000000 --- a/_examples/basic/main.go +++ /dev/null @@ -1,43 +0,0 @@ -package main - -import ( - "log" - "net/http" - - chart "github.com/wcharczuk/go-chart" -) - -func drawChart(res http.ResponseWriter, req *http.Request) { - graph := chart.Chart{ - Series: []chart.Series{ - chart.ContinuousSeries{ - XValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0}, - YValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0}, - }, - }, - } - - res.Header().Set("Content-Type", "image/png") - graph.Render(chart.PNG, res) -} - -func drawChartWide(res http.ResponseWriter, req *http.Request) { - graph := chart.Chart{ - Width: 1920, //this overrides the default. - Series: []chart.Series{ - chart.ContinuousSeries{ - XValues: []float64{1.0, 2.0, 3.0, 4.0}, - YValues: []float64{1.0, 2.0, 3.0, 4.0}, - }, - }, - } - - res.Header().Set("Content-Type", "image/png") - graph.Render(chart.PNG, res) -} - -func main() { - http.HandleFunc("/", drawChart) - http.HandleFunc("/wide", drawChartWide) - log.Fatal(http.ListenAndServe(":8080", nil)) -} diff --git a/_examples/basic/output.png b/_examples/basic/output.png deleted file mode 100644 index 2c781a7da831e3154e0b9d56c6b17668767df156..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11698 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 diff --git a/_examples/benchmark_line_charts/main.go b/_examples/benchmark_line_charts/main.go deleted file mode 100644 index c3790b3..0000000 --- a/_examples/benchmark_line_charts/main.go +++ /dev/null @@ -1,79 +0,0 @@ -// Usage: http://localhost:8080?series=100&values=1000 -package main - -import ( - "fmt" - "math/rand" - "net/http" - "strconv" - "time" - - chart "github.com/wcharczuk/go-chart" -) - -func random(min, max float64) float64 { - return rand.Float64()*(max-min) + min -} - -func drawLargeChart(res http.ResponseWriter, r *http.Request) { - numSeriesInt64, err := strconv.ParseInt(r.FormValue("series"), 10, 64) - if err != nil { - numSeriesInt64 = int64(1) - } - if numSeriesInt64 == 0 { - numSeriesInt64 = 1 - } - numSeries := int(numSeriesInt64) - - numValuesInt64, err := strconv.ParseInt(r.FormValue("values"), 10, 64) - if err != nil { - numValuesInt64 = int64(100) - } - if numValuesInt64 == 0 { - numValuesInt64 = int64(100) - } - numValues := int(numValuesInt64) - - series := make([]chart.Series, numSeries) - - for i := 0; i < numSeries; i++ { - xValues := make([]time.Time, numValues) - yValues := make([]float64, numValues) - - for j := 0; j < numValues; j++ { - xValues[j] = time.Now().AddDate(0, 0, (numValues-j)*-1) - yValues[j] = random(float64(-500), float64(500)) - } - - series[i] = chart.TimeSeries{ - Name: fmt.Sprintf("aaa.bbb.hostname-%v.ccc.ddd.eee.fff.ggg.hhh.iii.jjj.kkk.lll.mmm.nnn.value", i), - XValues: xValues, - YValues: yValues, - } - } - - graph := chart.Chart{ - XAxis: chart.XAxis{ - Name: "Time", - NameStyle: chart.StyleShow(), - Style: chart.StyleShow(), - }, - YAxis: chart.YAxis{ - Name: "Value", - NameStyle: chart.StyleShow(), - Style: chart.StyleShow(), - }, - Series: series, - } - - res.Header().Set("Content-Type", "image/png") - graph.Render(chart.PNG, res) -} - -func main() { - http.HandleFunc("/", drawLargeChart) - http.HandleFunc("/favico.ico", func(res http.ResponseWriter, req *http.Request) { - res.Write([]byte{}) - }) - http.ListenAndServe(":8080", nil) -} diff --git a/_examples/benchmark_line_charts/output.png b/_examples/benchmark_line_charts/output.png deleted file mode 100644 index 444c79087bcdf3f484eb9f1c38b69094c27940b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69090 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 z 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ℨnbKZr%}osiR9>Utwf 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 z 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 diff --git a/_examples/custom_styles/output.png b/_examples/custom_styles/output.png deleted file mode 100644 index 84066a49f9c6c0ff4c53a3b639f7ae432968ee8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11949 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 diff --git a/_examples/custom_ticks/output.png b/_examples/custom_ticks/output.png deleted file mode 100644 index aefa3c392d2c63938cf8aa0bfb4925c2b2b14850..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10854 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%0DeMJQDgNp?gK&4lEU4|an{R)#E}c7^teArPS- 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 R1D_Z}$jhim7vDAw`frsj`40d9 diff --git a/_examples/donut_chart/main.go b/_examples/donut_chart/main.go deleted file mode 100644 index 010dbec..0000000 --- a/_examples/donut_chart/main.go +++ /dev/null @@ -1,54 +0,0 @@ -package main - -import ( - "fmt" - "log" - "net/http" - - "github.com/wcharczuk/go-chart" -) - -func drawChart(res http.ResponseWriter, req *http.Request) { - pie := chart.DonutChart{ - Width: 512, - Height: 512, - Values: []chart.Value{ - {Value: 5, Label: "Blue"}, - {Value: 5, Label: "Green"}, - {Value: 4, Label: "Gray"}, - {Value: 4, Label: "Orange"}, - {Value: 3, Label: "Deep Blue"}, - {Value: 3, Label: "test"}, - }, - } - - res.Header().Set("Content-Type", "image/png") - err := pie.Render(chart.PNG, res) - if err != nil { - fmt.Printf("Error rendering pie chart: %v\n", err) - } -} - -func drawChartRegression(res http.ResponseWriter, req *http.Request) { - pie := chart.DonutChart{ - Width: 512, - Height: 512, - Values: []chart.Value{ - {Value: 5, Label: "Blue"}, - {Value: 2, Label: "Two"}, - {Value: 1, Label: "One"}, - }, - } - - res.Header().Set("Content-Type", chart.ContentTypeSVG) - err := pie.Render(chart.SVG, res) - if err != nil { - fmt.Printf("Error rendering pie chart: %v\n", err) - } -} - -func main() { - http.HandleFunc("/", drawChart) - http.HandleFunc("/reg", drawChartRegression) - log.Fatal(http.ListenAndServe(":8080", nil)) -} diff --git a/_examples/legend/output.png b/_examples/legend/output.png deleted file mode 100644 index d5fd6d862621f31842232ac64fda4fd3168f341f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24442 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 fTbWF#c%q@_C)5K%%zK^mk4q@=r~8>CyLq`Tpa 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 diff --git a/_examples/min_max/output.png b/_examples/min_max/output.png deleted file mode 100644 index e2e1b383b682c126f7b2c672bcb1fb015fb055a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173715 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�Wvlrg>j EFBE#5qyPW_ diff --git a/_examples/pie_chart/main.go b/_examples/pie_chart/main.go deleted file mode 100644 index 268239d..0000000 --- a/_examples/pie_chart/main.go +++ /dev/null @@ -1,55 +0,0 @@ -package main - -import ( - "fmt" - "log" - "net/http" - - chart "github.com/wcharczuk/go-chart" -) - -func drawChart(res http.ResponseWriter, req *http.Request) { - pie := chart.PieChart{ - Width: 512, - Height: 512, - Values: []chart.Value{ - {Value: 5, Label: "Blue"}, - {Value: 5, Label: "Green"}, - {Value: 4, Label: "Gray"}, - {Value: 4, Label: "Orange"}, - {Value: 3, Label: "Deep Blue"}, - {Value: 3, Label: "??"}, - {Value: 1, Label: "!!"}, - }, - } - - res.Header().Set("Content-Type", "image/png") - err := pie.Render(chart.PNG, res) - if err != nil { - fmt.Printf("Error rendering pie chart: %v\n", err) - } -} - -func drawChartRegression(res http.ResponseWriter, req *http.Request) { - pie := chart.PieChart{ - Width: 512, - Height: 512, - Values: []chart.Value{ - {Value: 5, Label: "Blue"}, - {Value: 2, Label: "Two"}, - {Value: 1, Label: "One"}, - }, - } - - res.Header().Set("Content-Type", chart.ContentTypeSVG) - err := pie.Render(chart.SVG, res) - if err != nil { - fmt.Printf("Error rendering pie chart: %v\n", err) - } -} - -func main() { - http.HandleFunc("/", drawChart) - http.HandleFunc("/reg", drawChartRegression) - log.Fatal(http.ListenAndServe(":8080", nil)) -} diff --git a/_examples/poly_regression/output.png b/_examples/poly_regression/output.png deleted file mode 100644 index ae9b8f66419ab0d0e83756a72210e6eab1f9c11e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55807 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 HapwO4j0I75 diff --git a/_examples/stock_analysis/output.png b/_examples/stock_analysis/output.png deleted file mode 100644 index bf67ba30b4f0dc4b7fcf389bf817fbcf0b55c28c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67897 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 jn{oVG~j`tlSZ?=lN#(?KkODK&);m+ zw{n>*DMtwA@CSPr`+n;`?Qxd=O}%!#RQ;=R&UUU@yJ0oU;eJ+eFG{!vmE9Kq#To|! zeU_2y)0B~~e)lMGh(=ff7sJKPZUl@9!&lY~o3}<8yO6 zVGoK1%?({ld9oTr^2fBaBK4#GeqHAs?B$c@1%u4}iqens?F(xJ?vxZ?%<6QcU$^$J zZq53>5WFbzFE>hi{}Rgyh#B<-oYn(p(s6(qNDxQ=kSO9lK_RPdC17pL?hN*`NjuD# z(~z5jhK03fE7MW@ev)&rLB0C{?-Dyles@%!uq(9IUY{3UpGm@YwJjoztPMy- zZFv>^7XB!+=s)Q?gmZ`vfbf6ry_PM^A>Se4Xi)Qv`oXTw+{qHv}1zoLTc2+oDzbcPf?AE{mcX{ON!IoYwy>Z z{`>$k9z&CKo7K4;bx8@gR$`KeRROHjEgeCq8vg#f_>7^RS<_?F9v=4nMRt%@t>`KU zc&W`~^V(FMsOT-kt6j?F#PrJe2d_d&slDy-A0@7*&f|*0>6$Kxe?3+OvR}9qRu2!= ziblSS*#3$}rUah9OThv#s}mhc;xniOxuXWJbM34&kOJ)Cc$2&df^G+x0rTI9eU_Kc zY6q<|clRkEQYkNF1YkzfRXe7Lw=!RT;*o-aRdiT)^{lb*CgO)0Uf8-22krd27=G z^w~6x&c2yRUH2fWN>xdrnlX5Gf09i|r#Yl>Z8}TyRnX^vSmIsci`BxbE=KW+dIlH5 z52V3g=pK12TuB}40ANv-Kr(Ry{o~FjM;l{GhfM925iye{!Yak@t0}Y}R)TES-E>#b z8f~tKzdH15vQZ>1A8FX4d#yu6?aAU261d&=iwn;X)9>AoUnwh|_33MpcbMbkso}eg z<;NX0%Q?(#ZerQ$atZdrM;mrknD?T|TRf6oW^aUrzkR$?dR*kONCUfW-%I-Z5&8|_ zjbqcd!1u#$da-7u7R!1uWk5=C1|!o5NFLL=+&VLRf= zCF+02UR6=CjDM&e5MGNTB05Pbs|LA=C?h}X-rMhy8e_K>tS1>kK0Yra4|1~0nk}oM z@>*bY%?6B7h8m$~lFlU0eW%>!F(T$l@D8%5MkOgnLM0UPMor5-)l9|zkOL;_z)Q@3 z^r{ZU3s-p!>;n_=@cnQcp%N5hyoIj z3#T`zPW=e$w4a*ydR{lDC;B+BoYP*n^|__#70OfuKF<^6+cgbk{P8qFkZlmlaED5? zI9er)r+5$x78z;(O`Q&vDmK&ROq2HUOhku0aJQ)%>4WL;<+ECJdr6K$#E(7q;@)!? zTt+O4H4{@kG(IVT)+}Zw63gM~>8fQDf`Ys+QD*Kxx@4Aci8wvA*t!rVd?rK?0)>FZ zaT!|Gm;wYB*iyUlI+pHZy9r-vWbEnz^|@n&g3E2y{bX;euVJH;$HT9M3v#RoJHiK3 z4-%u9M=9xT@t-{gxWFMgrA)1xO)6dqo-keOJpQI0+Lstw`L1tf29iB)wfiO2^vU7r zdm7&oHHA@CHOyZoiQiHkpWsr`f})>pZM`8$>7WC9fP;o(E_WX-Y&({c&F)CiN8wyc`)iR&~B59tReN)~qp*`!7Gmu=Rlna zN%)lSK0n+vIi|qbj%%d2u|Wo{lzE!|<26VhN%PN=v?_$sGG0aOekpZ26W|G5%#67& za8P^D(eyndPrd0jcKvLgue$dWIjg~UCR7doO9o`UlePs4q39N5Cm>e^(dW-j=d^Z{ ztiPObb48=SjlXN-%PkmmXpsu$bC^Idce@sx)=5G&_g&O?B}KnADh>pS@Sz1}W;Jtf zY&SJdRH09!Bt$Yj75h81Z66+ACfd@EX}vXv2!&9TZ8hI?|jZyogN

    qib}S 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

    FuLDfN`h$aspRoxteJj2xTP1ZEjE8Rs(J(&$ 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

    p8eZB&PFB_efywDx?;o-BK!{$3{b(c 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 diff --git a/_examples/annotations/main.go b/examples/annotations/main.go similarity index 83% rename from _examples/annotations/main.go rename to examples/annotations/main.go index 84220b1..87be119 100644 --- a/_examples/annotations/main.go +++ b/examples/annotations/main.go @@ -1,13 +1,14 @@ package main +//go:generate go run main.go + import ( - "net/http" + "os" "github.com/wcharczuk/go-chart" ) -func drawChart(res http.ResponseWriter, req *http.Request) { - +func main() { /* In this example we add an `Annotation` series, which is a special type of series that draws annotation labels at given X and Y values (as translated by their respective ranges). @@ -37,11 +38,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, } - res.Header().Set("Content-Type", "image/png") - graph.Render(chart.PNG, res) -} - -func main() { - http.HandleFunc("/", drawChart) - http.ListenAndServe(":8080", nil) + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) } diff --git a/examples/annotations/output.png b/examples/annotations/output.png new file mode 100644 index 0000000000000000000000000000000000000000..3127025108c238fc96959b532c91da9df933097f GIT binary patch literal 26163 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 K>ORmu8}>g-@<}29 literal 0 HcmV?d00001 diff --git a/_examples/axes_labels/main.go b/examples/axes/main.go similarity index 60% rename from _examples/axes_labels/main.go rename to examples/axes/main.go index 935aa3f..491ff8e 100644 --- a/_examples/axes_labels/main.go +++ b/examples/axes/main.go @@ -1,12 +1,14 @@ package main +//go:generate go run main.go + import ( - "net/http" + "os" chart "github.com/wcharczuk/go-chart" ) -func drawChart(res http.ResponseWriter, req *http.Request) { +func main() { /* The below will draw the same chart as the `basic` example, except with both the x and y axes turned on. @@ -14,20 +16,9 @@ func drawChart(res http.ResponseWriter, req *http.Request) { */ graph := chart.Chart{ - XAxis: chart.XAxis{ - Name: "The XAxis", - NameStyle: chart.StyleShow(), - Style: chart.StyleShow(), - }, - YAxis: chart.YAxis{ - Name: "The YAxis", - NameStyle: chart.StyleShow(), - Style: chart.StyleShow(), - }, Series: []chart.Series{ chart.ContinuousSeries{ Style: chart.Style{ - Show: true, StrokeColor: chart.GetDefaultColor(0).WithAlpha(64), FillColor: chart.GetDefaultColor(0).WithAlpha(64), }, @@ -37,11 +28,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, } - res.Header().Set("Content-Type", "image/png") - graph.Render(chart.PNG, res) -} - -func main() { - http.HandleFunc("/", drawChart) - http.ListenAndServe(":8080", nil) + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) } diff --git a/examples/axes/output.png b/examples/axes/output.png new file mode 100644 index 0000000000000000000000000000000000000000..9a16db0787773e4b84bb627441cd1234a7e7f7aa GIT binary patch literal 22406 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 literal 0 HcmV?d00001 diff --git a/_examples/axes/main.go b/examples/axes_labels/main.go similarity index 68% rename from _examples/axes/main.go rename to examples/axes_labels/main.go index daf7267..e714884 100644 --- a/_examples/axes/main.go +++ b/examples/axes_labels/main.go @@ -1,12 +1,14 @@ package main +//go:generate go run main.go + import ( - "net/http" + "os" chart "github.com/wcharczuk/go-chart" ) -func drawChart(res http.ResponseWriter, req *http.Request) { +func main() { /* The below will draw the same chart as the `basic` example, except with both the x and y axes turned on. @@ -15,15 +17,14 @@ func drawChart(res http.ResponseWriter, req *http.Request) { graph := chart.Chart{ XAxis: chart.XAxis{ - Style: chart.StyleShow(), //enables / displays the x-axis + Name: "The XAxis", }, YAxis: chart.YAxis{ - Style: chart.StyleShow(), //enables / displays the y-axis + Name: "The YAxis", }, Series: []chart.Series{ chart.ContinuousSeries{ Style: chart.Style{ - Show: true, StrokeColor: chart.GetDefaultColor(0).WithAlpha(64), FillColor: chart.GetDefaultColor(0).WithAlpha(64), }, @@ -33,11 +34,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, } - res.Header().Set("Content-Type", "image/png") - graph.Render(chart.PNG, res) -} - -func main() { - http.HandleFunc("/", drawChart) - http.ListenAndServe(":8080", nil) + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) } diff --git a/examples/axes_labels/output.png b/examples/axes_labels/output.png new file mode 100644 index 0000000000000000000000000000000000000000..5ca998a1b298025eb666eefb493109f260de20b8 GIT binary patch literal 24546 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 QMGSyQZX$ZqHU1M01GI{*Lx literal 0 HcmV?d00001 diff --git a/examples/bar_chart/main.go b/examples/bar_chart/main.go new file mode 100644 index 0000000..e89c463 --- /dev/null +++ b/examples/bar_chart/main.go @@ -0,0 +1,35 @@ +package main + +//go:generate go run main.go + +import ( + "os" + + "github.com/wcharczuk/go-chart" +) + +func main() { + graph := chart.BarChart{ + Title: "Test Bar Chart", + Background: chart.Style{ + Padding: chart.Box{ + Top: 40, + }, + }, + Height: 512, + BarWidth: 60, + Bars: []chart.Value{ + {Value: 5.25, Label: "Blue"}, + {Value: 4.88, Label: "Green"}, + {Value: 4.74, Label: "Gray"}, + {Value: 3.22, Label: "Orange"}, + {Value: 3, Label: "Test"}, + {Value: 2.27, Label: "??"}, + {Value: 1, Label: "!!"}, + }, + } + + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) +} diff --git a/_examples/bar_chart/output.png b/examples/bar_chart/output.png similarity index 100% rename from _examples/bar_chart/output.png rename to examples/bar_chart/output.png diff --git a/_examples/bar_chart_base_value/main.go b/examples/bar_chart_base_value/main.go similarity index 62% rename from _examples/bar_chart_base_value/main.go rename to examples/bar_chart_base_value/main.go index a0ce4c3..84ad9c4 100644 --- a/_examples/bar_chart_base_value/main.go +++ b/examples/bar_chart_base_value/main.go @@ -1,33 +1,29 @@ package main +//go:generate go run main.go + import ( - "fmt" - "log" - "net/http" "os" - chart "github.com/wcharczuk/go-chart" + "github.com/wcharczuk/go-chart" "github.com/wcharczuk/go-chart/drawing" ) -func drawChart(res http.ResponseWriter, req *http.Request) { +func main() { profitStyle := chart.Style{ - Show: true, FillColor: drawing.ColorFromHex("13c158"), StrokeColor: drawing.ColorFromHex("13c158"), StrokeWidth: 0, } lossStyle := chart.Style{ - Show: true, FillColor: drawing.ColorFromHex("c11313"), StrokeColor: drawing.ColorFromHex("c11313"), StrokeWidth: 0, } sbc := chart.BarChart{ - Title: "Bar Chart Using BaseValue", - TitleStyle: chart.StyleShow(), + Title: "Bar Chart Using BaseValue", Background: chart.Style{ Padding: chart.Box{ Top: 40, @@ -35,13 +31,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, Height: 512, BarWidth: 60, - XAxis: chart.Style{ - Show: true, - }, YAxis: chart.YAxis{ - Style: chart.Style{ - Show: true, - }, Ticks: []chart.Tick{ {Value: -4.0, Label: "-4"}, {Value: -2.0, Label: "-2"}, @@ -66,23 +56,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, } - res.Header().Set("Content-Type", "image/png") - err := sbc.Render(chart.PNG, res) - if err != nil { - fmt.Printf("Error rendering chart: %v\n", err) - } -} - -func port() string { - if len(os.Getenv("PORT")) > 0 { - return os.Getenv("PORT") - } - return "8080" -} - -func main() { - listenPort := fmt.Sprintf(":%s", port()) - fmt.Printf("Listening on %s\n", listenPort) - http.HandleFunc("/", drawChart) - log.Fatal(http.ListenAndServe(listenPort, nil)) + f, _ := os.Create("output.png") + defer f.Close() + sbc.Render(chart.PNG, f) } diff --git a/_examples/bar_chart_base_value/output.png b/examples/bar_chart_base_value/output.png similarity index 100% rename from _examples/bar_chart_base_value/output.png rename to examples/bar_chart_base_value/output.png diff --git a/examples/basic/main.go b/examples/basic/main.go new file mode 100644 index 0000000..20839cf --- /dev/null +++ b/examples/basic/main.go @@ -0,0 +1,23 @@ +package main + +//go:generate go run main.go + +import ( + "os" + + "github.com/wcharczuk/go-chart" +) + +func main() { + graph := chart.Chart{ + Series: []chart.Series{ + chart.ContinuousSeries{ + XValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0}, + YValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0}, + }, + }, + } + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) +} diff --git a/examples/basic/output.png b/examples/basic/output.png new file mode 100644 index 0000000000000000000000000000000000000000..fa0573accefca222ba0c5f6f8b04178e5240365f GIT binary patch literal 24432 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 literal 0 HcmV?d00001 diff --git a/examples/benchmark_line_charts/main.go b/examples/benchmark_line_charts/main.go new file mode 100644 index 0000000..975670c --- /dev/null +++ b/examples/benchmark_line_charts/main.go @@ -0,0 +1,52 @@ +package main + +//go:generate go run main.go + +import ( + "fmt" + "math/rand" + "os" + "time" + + "github.com/wcharczuk/go-chart" +) + +func random(min, max float64) float64 { + return rand.Float64()*(max-min) + min +} + +func main() { + numValues := 1024 + numSeries := 100 + series := make([]chart.Series, numSeries) + + for i := 0; i < numSeries; i++ { + xValues := make([]time.Time, numValues) + yValues := make([]float64, numValues) + + for j := 0; j < numValues; j++ { + xValues[j] = time.Now().AddDate(0, 0, (numValues-j)*-1) + yValues[j] = random(float64(-500), float64(500)) + } + + series[i] = chart.TimeSeries{ + Name: fmt.Sprintf("aaa.bbb.hostname-%v.ccc.ddd.eee.fff.ggg.hhh.iii.jjj.kkk.lll.mmm.nnn.value", i), + XValues: xValues, + YValues: yValues, + } + } + + graph := chart.Chart{ + XAxis: chart.XAxis{ + Name: "Time", + }, + YAxis: chart.YAxis{ + Name: "Value", + }, + Series: series, + } + + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) +} diff --git a/examples/benchmark_line_charts/output.png b/examples/benchmark_line_charts/output.png new file mode 100644 index 0000000000000000000000000000000000000000..588d6a288596ae2b8770089fa3ef4fa8227f709e GIT binary patch literal 321567 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

    }W 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 q)Sb{}l7D0weyIv!h>e7@m|M*`^-`z+6 literal 0 HcmV?d00001 diff --git a/examples/custom_padding/main.go b/examples/custom_padding/main.go new file mode 100644 index 0000000..1561497 --- /dev/null +++ b/examples/custom_padding/main.go @@ -0,0 +1,34 @@ +package main + +//go:generate go run main.go + +import ( + "os" + + "github.com/wcharczuk/go-chart" + "github.com/wcharczuk/go-chart/drawing" +) + +func main() { + graph := chart.Chart{ + Background: chart.Style{ + Padding: chart.Box{ + Top: 50, + Left: 25, + Right: 25, + Bottom: 10, + }, + FillColor: drawing.ColorFromHex("efefef"), + }, + Series: []chart.Series{ + chart.ContinuousSeries{ + XValues: chart.Seq{Sequence: chart.NewLinearSequence().WithStart(1.0).WithEnd(100.0)}.Values(), + YValues: chart.Seq{Sequence: chart.NewRandomSequence().WithLen(100).WithMin(100).WithMax(512)}.Values(), + }, + }, + } + + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) +} diff --git a/examples/custom_padding/output.png b/examples/custom_padding/output.png new file mode 100644 index 0000000000000000000000000000000000000000..63c17cc1324e58d6042acc049cb0cbf7e19e8959 GIT binary patch literal 66998 zcmeFY^flm@9%#0yFc$=@P6L;0T#@fwXW-2XCB8fk=mNdgm^S~000oGswh4J04(qjl7IsR zf3+}$3IG5KP*uFI=bf?H#IEs!jT zW1MVb9BxoN(jn<@IL7ntq5jB-OJ@BilfE7PhG}Il&yn-SzJS^IAS){<1YFh4t3m)h z9SHmP7y#Z9asKDf0s?{m=a`of{hvb=9E65wF zlxE&c@~fF%GrzyM%(?`fPipzklbK)bzu#+lap!OR^+`N`^NE#EYDszd^&vI&IWu@yq|D|_^+vAn5EvZ8K)%cqZzmsVZ5D=VPUTLI@O@oWj(9jSI zyz}2)iHvt&>17Jpu3MpZU<#b^Sz!vH4?Ov^lI2%cU+?Sa_%QI=3;eHP%h^be_^kiY zh~f37o!n%#U7zQesiC1EM~fD7qW8sKNBP(JD1QGx`23B#-^jG2-A42c|K!eBcF;RL ze-5tC%iMfcfmr7A%dLrx@|Kw&@i6-T@(ZBf+S!?a$>X=p`_gnanpozL(Q@-^;_F>v zxsz66^1pH(s|kH8=g}=E(VzjJP1fSRa$W6bY7Zb{knKLWsC_m$F*)hdd}`Y=d;Npf zg)syhflz+%psa2=t*or9)Z`1FY5nIfU&dzQVgDW6tAb);w{frnPrJ-zL9@49U+(y1 zb$l`RS$gL*T9U*0(CvC=W`<2I8SC}^kp3#0E@&{y_txy>q}tHo{!-U1d4e`xlUjmV z#Cr&jK?%moq{eY1kwy7MT}CVef)xqOQQU*rmkO8hqp*zL(l7Be#L3B-BW+1 zSzL{ww0JiEdlLO%8Y|Z(%k3zT_%i#C?Rf8vmYNjK9K9#Q!P;GCVDbQ;vdq!2E`peT zm1bb5IB@F4qI`VNuH#AnqNCR*|57X$HuhtoTOf90-Mt}nWU`@o11bsC);xp<=` zTNiMC3`Tp6(^y#BAJc}H)7}fQ=YMx7u`Dmoj&O3oXSKb(U6|#|O@fml?epU4Q>@wN zEERMASg%TV=EeyCl&SxN#k!TO^H$=(3frEvmh*-dd@QKs-<{3Pi}aRL+WRE*zNGzib@_0SFAqBzv@wvl7P^vQzGH9(%JA40JwGnSMb1 zN{0nUUNVy?ylqh{OS4cRC*k6D+yZ%=*-^lu%NHUK@Jtids#lXP|5h_X&M2YJXUaGq z4R_b2v*nBZ!ws&%JcbHasg{gwl5J5o)@(%UT zTrE0K`1gXS5C1ul?xmCkRYv(BT;eZFg9lcf}ki0k@NO|*)05Nze3{Rf> zR~P_CE>-+V3@&hKUO8^Kc@yRHUl-dqWrTdkYg+Zyt;QT&R zPZd1j+D1b^jKUWo{JiC#b)`VS(!Y!4V1Og27m$+mYd2%=xB=p9CGt~L|5VmXr$@_= zV>*!kW|ac4o2B3mmXPe~kjwYzU%6xJBdIklm>dWFo=Uv63{7LatcxGnl#zZH`i%(u zz%KTUi8(r>;DCG)+d6HQPyrM#VB!1VPV>&V2~1r`vPblRKTb}*=auJHt9g^~*0Iz- z+rs+C+`JqiDXCCQ2=P}jf)<-TLGWz-)7@;jAe}8Oa|Dk7c!xP$ivcj~7<=%TT27&8 zrg`_}0LXGHHgK`hXGS7(Vu>eYcJsXWftxG7@`%g63v{yvi`|FJ$t=>L1QY^nHOR65 zxu+TMk0I{CahQe;wuIkerFG)r75fH6e2CFl14~Xyf%l%F7L4HSfH^oC{Hc}Di_0V@!vhiOhft+-j)Vn#B?i3llprXQSHa->0E+UT zM-EyJ!#dI8UiHX{b_WJW+6*381Z~Y?;y-01up$X!C@l<0oW&FI6Xr7M%UX&EVgJUeAVxIkA8;VlCR)+@<4^%;sZB2826>86NxlH zuUHMB{@H8Fvi%i-L~_W+dwe8BJ9RkpV0P2QuIhQqEfo1jn1%gqs;&?2Lr;`58Lp{! ziGDt52I2*14ybSJ`Bv1yfV1*lc6tBM`ERc0`f77?;ap#4JLR!%c9^x?=Y+Sp0V}us z&6tX^lL8b~(XZb)I}I!Aa?<3rA~v~1zFZ3mkO081v|SmF+n0TR)lQ=*xFGXzkt7Sb zYWA~r1jMEgedc*==*YGBNSig<;l8e2<;K|C7L#F*Cns9v)zs zl!%k^KXK*G-@D#Do^;VtSHHK*lrS5~0e`}gwS0ZZGQiLznQ9eU!O*K~gYm~Daf1l7 zT3u?fA|vSl0X?5kW;mw9k?$g$*vo9}4$1}#c*~SCXlBIo2r6*+=0F z)UVYiC;bYDv-mWj}a^0|nyQS@Y%f%Ad$jBzDY|b>Dw^N#{7Y>PN z1RWKdH*ME%4ENP~?abI^`Pe!;^WGu4=_{mOZdy=bGaU}9@yqOeCxgLYfh|Ep1sY#w z1O0S$-^6A^C4qOU%w7DS_Dap~Tuh(a7#Q&z?ZYu8xL-@tJg9b&ykjGnh{x_UNl2N{ zK!|`a$=oxNHGQJ|u}~Nv>0s60d&)`=QP>>6**w*)L(HCR1i2SEvnG~Dbh@-QoPU|| z-I(or(N1B=7;<$vdwu!aF8gw7MfQu|-)*qYUF?R-b=$t{?N(&oJ6VV~2b);G;GM93l!(3gSZ(TCJ^HzsgA<*oLll4MSZuASL zOfqP7S9@|%ya4+PMzJAC1h#_;^oaa}Y7-P-^62^W31$&c%=oYzAF=p-@B$fQKl`1T z%K&qB^hjQJsai%;y%{L#F>ev`3hP>Wnxeu=@3WW)HZMP2?$FXI;Fx+0C~erbnjC@6 z?ISBe`^aTK9Ft!J4LWxOm}Jiz4Nza?+5Mabw+DzVq&6G zSzSSKvD3zAsoHzKt*xz^ztuOE2XyQWP<(yJLn(V+ozsh$(OSA=o{}9^8LKa=us~DVhEFm6geD0O zRkmBqkQ`2Y0=B^ir~c*_^OQ^C^F)~9^5(O-*TmbCU$iEc<=mImpFO*KbpWS)f+F$V zsu?5K8voy&CjX%ub%j+sp8ps9Vgovf7p(8A50W5oB>daH3X*e9f$}bHW@NQp27|P3wLZip~CF z<2Jmox)Hb4FpP|`+}Mg!Ru^zyC-7-STr8)%Y$xXUgo7i&HW+d7ip=|yl}mrWv|K(5 z3c7wxEbBd_A>Bh94T%W}nL;$P zWiwl<`kJ*xXfz6kUbs|xqJbjhJax0AO0iUC~`C&m^(iNrz+TO z{Q5+x#p-fuMEDb?O!~w#fhfH`?41#bu}_|{*<+dE&{Yr3&b^3%(thPP{{32ibadw+ zyEIDpsCtsE!jA*2v*f|CDR?<0Qhd~rscHr4sYinykK>>o^8*tfWxaSI#Upb_0udjdeY5;Sb*Y=dp?p&+f=^HuYYTF*U z%ON?L>x+XNZ55Ib1cQG?b+zu^=dSns;5gPlJgn#G=^02ZCNwxS^qS;xtuysYN^r(n zn53npWrE{yzFGycPHn%G#WcDyt9mcnUmpK-qLkm(8>)Zw)`jojYX68+Kqt}=3xAY!z zVmM|BxCdoRq0)uf8G4#UM1#g70_dh>NZUz^1=$?iGIE zUbH!5NLl?lw}0P4N4(tS;Se~!eaFiM!HmYVp#7g5;0I?01}ec(-Su80XfaxsMz`y$ z%U6sg<}LJ0!~OmJ)6|5(@EZ=TxR{u^$!A!S00mAQkaSh=X+xoUyPu_8y~GhW zML21Y9BTbW>HB>P_gR`qLJP*^jZfKi-&*eg<$?yh*yLWo48v<8B%1)aouQa8b#2Vu zth)n3^emi9Ie(s&yF7n(;i8r4xf&9&QvO9z0~_+QyqA@=+P_mPl#1Kbm>b@&+FgKo|Fmf*pgbq%kJRjG?_j>#o*bRDx2vn`uGaOT76UkH zjT9R$(Dr4?OioTlBXG|zufWJaS6730NaoPc5IAYNczKC8PfmNyHaQFxfJ6G>>c9uE zjE`5@L^rw6f*V$m7UqC_<3=l+MNZe`o2@X}kxf;16ts9f8|vcdxwq$l=Vk$|2$P4h zvIpOO2UNO~q8VlG8J9J9y;GKMLtN^i$6q=6u(*Hq|1k?l5@=LC8@U2gn6%9U%58Xs zSO7PR9-_-7-MCvJ-K5Xo#(jFGO*g(t?9`BQY~t#1;rHhXYQrv{0hI_pkq64YJud-m zA)evT7@5&7m0QS^G{yik7WY*TUtMKt|4tAKp)~i`3G6bDVtu2kgzN|N!v1MrklEgD z7k`WY!E#U12d`2Ua2^bmk20(~=#_G5*b-~sdI_OJ{gdUYWWtJjqZ`E%G}oTfU#yP& zq#ZTj|9F(%mGoEPtj30%6kWSMPlvjS%wUDQk^r(^eFqZcTE-L*XnCrvUz7mhty%A? zCqZG>s%4Uj4044TdXH~+66)YE;pKEZw{O~+{n7jV*~}w)tv$=IC;`1UdpbZ{?zdm| z#bTKYECl*K%zge4ZE>v+O98Y<9rEHJu0iEk$-csV?%A9XIdb4#q&!rQ0zJx4bhUl? z%H&*v=yKJ7)`kCY48>*+E!VAYKG-3wGJcYWHsU#N*yCkh2#=eDc z>pb|+YLpNF)8XEBL>%!60%0Y^SDf9GByIx@Tj&&`*2MYr2<5SzZ58UB=2DtvZ1e37 zpmpB}!16Du`-NC04Da0IH2gGj0(R*JTP`^7oe&nx?PH+Y6D7O|5+gd`Ydpha?d)q!t@E$`lj?q_r zMm#bB`PE#u9AUTPnB=@XF9CP<-auc^5$EK_k7W7YX0Kw^hbpA^d$P|BKLhtDtltm! z=o8$+t{11b@<`+00+8@U&O|>=y~}vAe4o3iSVg=+VGCCF`dVtnw*h0KShl)a$5`{J zg1CM{r{b2Y@|8{ByQT|Ys75ehE z)`GnKy1rm->5Zy8#LJNtSNp@Bl?!JtpNj>7A5i5V^6@)Wzv@fXOreM>s6WOAgfu83 z9z#P4A&uVh4lvAG_N3kG!CZ*%#0j%(Dj8Ikn3zzK*0Eon5gcX=q0A6GEfo7x?SW+ml+xuHc7xJ?Zr|_@B4TfE?(6Z4*2>eLC7ckv{&&L*bWzpOHOo^jMl_OQNgDe797jUhVBOvm zDdYnr*Dq?A&Ps*d?Ot+S>IRCFZJaz!j>j&tM^$YQGypnkC|kQ=ipKiG_`b=*C;_lX zQJ_iyL2AR)Nt9}i5R<;1V>ipaq!B-s8Tssc|X z3(lG!^lQi3Doc;KOZl~jMnqg2bePu>S9^d}TM5CqSXh-&8Ow%|K*Q$Xxxs@Jz+ZBf~E! zC=R8mhWG#sw)Vq+`*1V&4K+bRl_&_R(eo(6IoxQGyxX?2s@Ajnr}KoVfB${^`q2j&L$9I*sF6)V>$2vLM>WH>nOkDgeE6ai?G z^`gH)_aFmf$FJXCg$62$328y~dbyA|IU}XP3uV1fC$J&?c$PG#M|QvO%6sznE-S08+QWemzq;Ux9{}m#0Vukd-X9Z}(7D@1o06o0T28Y3C4!^E3)q(7Y)=5Y%wCKS&PtE8 z78l8ML@N7W0xm1<3AoF{aO$j(5q4sTp*eW{6HrGK(z|o zgYYwIl1Q#cs}I-0RcA~KWGzCS@(X|WKrKAdOhz$xB;GJJUL&1n${N{kh5dQ~bvfO< zCm`rDJE2Xmx;q@B^IZ|a_+6Vx&Qy?;(G1CgTU%27HVa^bTgMh4G)?<&2oZ7$za?X(6H=cV-Yr_ zB)dh=l#>oCo_X*&RWblh;h4ZA3E6MjXU6rlVDnD-leCBS+tL^$Aq=p1!V6&Sk=EMO z1w+xR;O|+VFzotQpMcv7l9~)b(KtHvN^48 zEEfT!32a+`28!?p0@G;jD*XBSUNvGt+vAgc167p!Ga*3*315I*+1aish`C*Z+8I6x z)$D&fMlby$>@$>05>8;<1asvUvpf2sNEJm%@~7V4{!udYX%UR^IGlxG%a>p^=yYxE zcqij?vjJG|qy25tB{A4@pm&X{Co62*V%mq4@PL5a`@g;-Q1Mut4G-?}sf$Q~A+ZdV zQqRRT+JXpNOhYs+J_7(n0vW52ya;lGV5kCLbu!i=qTl8{G|#nE8^=>zuuL6>u~d|~ z8+^6*BzZHa5;URu6`swr=!e5JT;>r|*sfxN>Co>~lOJ2zEd;TLmxj)NEd%na9pxQ& zW#cumi?F~n3XlV0WET(2H@;}qpI{$qV3Y*Gf{oWslK>bahp?V>VkdOs-Qh1%$gm(n zDGTTTpt)bVdRsZLBKM)_kDo5U-vrv->!WBMSqt6=;6vGeu$)<~$c@g`#R!bDA?J5J zm+)`h1}a4u4s}mh`J;Sdx*-;B1VtbLN_|y!mvDAUT=H4zNJ%y%s_wJ!1qc!I*8zV;{j5!X_EDfmsw)wHvVzT3rR+DQeu;2ADFO>*j z4W7Wy%6?3l`^LCc$0>$&3-i_*uYXl!mL%0{#AtfGmlFjR;bdlT1XpzizHXIJJCtJ1 zcm>)?0D>H1qZdH>Hb52dmJD>YrLMN1D(3ym**Fs)dO_G{6-fW%Ehn6zov-g7)R3T{ zn81>fmQpgxgFEVSQz7rYo|6hV%cbWhU=@`?^)*D~X5p$Ivn#LZT%rQ?D%*=m1F0 z9eynTPJB|vi}W+|F_FuK9cw$@?kM^Uy?QQ@-%}K_INXdJ!QgV9@B<~PC<2$ozC56n z)dC;n9^T%-1r|nZtv7m7(eX)c|8B^f4;`2YSL`{^W>|tQ%Me}Wm5++%;Zd_*w zbRRO0^5G?T0B0SMLddNo;N#!YpZLH>4RTA){iX{7o;jutD}tg8I@E=WqiX4OIseCo zo!JK(a#|p&#AOB?e#X+&kd$qAVS>R?mnkMeL%y%O2@^UWCj+UeSn9t;9c(Ng8A0BXW%(PY=_Hm-PRS5)EWXb=vb1iw4=zs1+ZuWuF|7YNmZ05^z0vBIE;Nr9s83HJ z{^9=QXWz;r{#V-2JP9&WvJEaI*f;pDgt}7g_Opr`0$2o#qH5u8o!Kql>ivS>9l~e7 ze)==EquCZ8cqa!--r=L$ zE5NEk7o^Xj6ODS`V8 zHAO$J@BfT`^pUbMZ!~)$B+<&r=^K{?PELKr2oZ*>l*~nKSp1>(&QCifTCgj*6unqU z$o}owkc)8Cj|Xq-wqqrz4Aq{*TgzX+M$C#Bo?_?BK4VBiU1d8?O}G9HITaO2r?7>5s{Jp7A>dW{-A zGR5o`WP<2wnTM-DO2JJuJg`1^Vex8fuzvZSGZ8A;1d`JF1Ojj~PPV!O8OcCqr2Ac+ zrLk%IJY4Od*`H_Uv+i@H)Qsjph&~)edw^QX@0?HyW>HYmL&5|NbcsLyn9oa-FU1~! zX*WKn#0QKKsIQA{w~*Du9>%1?nM->vcub2Q`ey^G)>`EJdRJ%IRIx~Ye1G}$rwS`+ zM;sk3HFe@FRdjnCz09X(cWL^atu2khqvbTWJ6)0hy(0-A1en@% zpV-M*dpuz(uakB)FjYh z2htd;>woE0j51{S3?_C%Sx!&vF7Fp*miu~Ne~&khcbPR(xRO4FqBeOBUVNSdr8S4Yc*>_d zhBQFjukZR5J39#99W~5e#@YM^X^@tSu9m5KPab&?%>@C_YvQ02SchAy#qNYt`Qkwxa> zn)EF8Or)zisRz>kndhd(^2U-zU>tB0n4vhm)zJ$jz4}KO>cu4Q&BXEF8nC(&J z-#b(mW|(RNnN`-~R%nb};!+`PHH9 zD-SibE)Ka<)%zsm?_lz)yMNlG`&=e#OPiW5L3-%;{L-ay@4=OvqpR!Fr;BM$Wozr} z6ZM`OAnNMp=eKpq3-(AqcggK?VJJ2vlT@wC8wsXP?b~EZgsP`xLOK@BW`Ae;YIsR9 z%_ig?D3KP8?~ls*J&67Myaa%wh?d!qgaY{8nor$yr)&9)r1-vd1-e zOd*sT#fIe%a6r`-f2w-(#eNq~PQ3pjOBBcE)>giQ@9F*$4pW#VD1!=Pi0%SThv@$$ z>J%aLfE0C>Rk<|3b1sZzU$@ah0f8(TD820&Ho6x{z>tUs2td-6I;sVk?X8h^nrxjk{8~Q~o}ULG^Q7h&DFfu!bTpnW zr-Srx;+1dL-7iHuyHoCc0q2vmaf-}?v3uVBzP^%ovQAU=3=LUs_`X<@`m^=oSx|cj zQpa*vCkw9_FGkES-_-+D|IxQG1a6KCu2JVvMm_kj=Hct_-&pf*^*R-674#d|jExfO zm`{hU2u9M1`!jZeFmh{qI)1!oc6=oQ1mhy1k5IPZkS<9eRJ@5ZgevWqWSymW;{4ts z0%884TW}g;q_+^AfAY3iFz8(fRkpk(ovCNSkMOds2vWux1d3f9^6mDkcN)RXNzu<( zqsRfa&yY?+AVu_9@P{_|GvJa;0xb69%r-W9`I;LwH!xF_)0>YoZiCo=XcN;>)3K0u zj~yKedf;7@z|#QQa!=qz-BcT~oIfaNGzD{~($40=Qp+BTa@^)@OVHA=r}hG*|@&0)OLIuDXX>jySQ+o`= zu)o`Rx|KWkCVW10TTY?ZNmRAJq3%C=U9x5UPX>}PQH3#t=*~S9$r%`HM&{;n zVq#%CVb%Bje0@peuP^$pL1`yw#5)AoAcg6>QTpX-qvdMjee)sP=@6fJ^F@D-g08Oa zS5E;Up;rtI&cB61`p3tO{QRVvn<^`BJwi2h)j5=vPS|ip7LrS;9fL3_!kXVdSl=-6-FP-ppPTu%?UDrNfVK=5oaFS}Jcp!f} z94#<7-l?6zLjrp^48ef@($n3r?FkH@Zby@Zz5Q>NkA;?(45VIuvq9lK&155BH16NJxD2 zo`|ItXAaqID=Y-5O4(S3XqS$@upQJtEamtEW}Xv!?#052Z{>W7XPCSII$)r{x<=t? zr*C$5uPCPynWGIKVJ3SUZtFKvv|L6Sew%E*Uyu74o?zBu^6(kLTIpL|7dZ&#TpTS2 zQy63^Hbtuvsgka$yuv^G__)h6u>DOZUXlzht%Gw=?)5eBhB4A`QiPEsX2bo$_gO<$rUXu6ym2JCk2_ zT&|B@#z5^a$nEE=y%!S`V-Atsi`2TvzCH-LQBhj9g@Ib@;FZ(9z~gFf(d)%GTF+;j zn?8K7-kPZS<9ee75TEg000l1a`$jE+0aqe}|F5iP8FMXD?3wW5-ust9&(^jbusx~U zwNJ{(Yqx&)^X;_lcNTK}B};TMi(@}Un_J&$3K^1_-y2gvjg1CgY-?HZ?C`G6tgHX>`XkQh$KTe5YyR*8$i0;Y!b)8zR`{Y>)5ltkk*j>nAwm7dZaQI8DMmNL1@Btg-g*y@I zYCX4fVoax_Q8K|G$e7d$DB^3w z^rfJ1^Aj-TQ;ft>00)Dnte}|I4Ufc(rp)=J20ZT#lr;{9pWKb$O=kY(RaI;1NAG&A zSXPYWvtv^4gYt-AQz^WKKCOi@h8q7FshAW*EA_@_KQ=wu@GA7&M$$tr9_eP+C~_~naO`_P@w6Njpu%Y_fQkhLvQ zUW33C62ZRVu%?o%X`)m%(LQ|qL9fQ2q!BJzcKxeAY_> zgIs_>m4t*I787(X)3e51w=rcH`QI5zD=M z#?v&sHj;i4Nh$o0C~VIA$Xfm^4^|{$;=C$)-=h;pVI(x*^_w_#o}rx8TeOEd(T*1k zX7-UmjH>p zVfiQDHJL49ap`ybyD^Jm_YoKnXs;j~5=2`?y67S>w{a5^voriBG^z8CeenXwcAcXn z-rvXr#%5(BC7t`|v|e~xnk#Mp`u@mYZJ0m8np*vhxu$Uhq+Jz#N%pJ#Hvf%RT^$uj zUW{ek-UY~+BxbQim4mqmg5depJ$(KFy?BbhW+xIR&|)@DBwtfXxpN_v z&dbi)Q2E|S2`0HUW=J1ydr+Lf=VC#0UU9TmruosP6zmmLQmdqXSYa-mEO_0Rn!~rB_t+i#BWZ9#zy~IAGxs1|imR;Ed>`#P#+; zUGx4x`A%TPa6N?yq(LOB^Nrl5ZFj(#T}A~PaHm5h%w`cGrQ3d6LB&LHjdE&0Fioc_ z1dfckD|zx`fZk2I%`jT|{g6D1A;}h@?9lySDicWn1Y+wFZ9US?|C0TbyS9(Lc%F-= z!a{os!@BInp2-P>&6hl$U>eY~>BibLAT9cWhk~+{!J7Ts&wGE@!J31nT(OJR?pv_> ze9*WhgPSnHDc`J;@ORu)-Fy!I9akQ;Idwd6Y{A@CEG`sdivovf2hjJ!EmNt6i}cNT z_dcp%KDC-pp(#9|(>Q{QOYg$p8visl>3mwpEQt2Lkzp5-DTTXv5CLMqT(RNOk&o3{ zDiNxI6pbPlHS7_7z3pSYt|doWO4KVQ&xotXQ0GZHWMF;3TOkkfCLvtN7j6+Ir087b z&Gk`?+X@fa+fJ9!Azx>eJtBKt<+a%%FPv7`5|@fQ zYp(?j%LnbDV1EQkYbZFykBDx3ei0BO--}kQzK1>Rh+w=Xt0}o|O(@?@GG>x22Xla6fNGE-7XlgDFY_86M3@Cd}1tcW}Y72gU#(yRM zV-(+_zc~2jOj2;;*;<@H7oN>z_{a+NP3`|Z?hQxRGktS z1;3MEdgNY>A@WZtAeoq=el%t0>BQxqx}=6H4V;mp!(8{M`h^eJkg|AStE}Z1ijhP_ z;(8Y>EV_~*uUD#H>L6zzoRXwEWbXGz3UMy5L)9^nC76TLuH3WCgw32z7L=_ua{9MV zWO1POnSXA>`rpfs!~Qx7%>d_=$Pktlk`4|AYQ-QVg$~QsQ^%$YB5chR(bSbP zPN^eN2G!jG?}8VsIZ43pENI@xtz=GaNK!l`dDQ{;Fq0<$B$Yl543XYjc5UUtPNGQ! zC?*L9z89%@O1Fo%$H-nbP((rKK-tV^BGPYUHK2%Sv5!)q>|%Anp|}6o$}{0?JgHx8 zr-v5TeFSF%9SOXG698kx-3cn6T6>w zR|tWUFXCHd*=v$;?0e@2I3MQb8#67;c&kOGq`Y{h1bu1(5s<=n=5D**-}-)+a-?X7 z%(h5rq?t6vj$1d0O#rg-+-?~km?mfJVY1>$e@F-7yMtsiDxij;Z=4%F=*>}2h6@gz z?im6?4V_|w*i_cT*vKML?zbQ@goT>wEnWrYXfW@p^CLs{v@#h23<{t$T1z};AMjK` zvK|lQ78(1_M28^>qy6Oa1R6GXpXAIt48ASPC3(JB9DCmaDi$ogR!3rlcq|gqIv@dn zY>HX2+esE#>1^O^nVql(@4NEs4X`cr5bf@Up0Bj&GVH{OP#96PN?Xtky90_GOUN>kVy2|as;C$b z02KO4Pks_hWB7!5fJt+*NcmCe@YLePgY6qBN0Fc>ahxh zhRsBcLTMe?41D&YA^8fSo3^KJ6Xn}9NR`9!C?htPD*!j)B+6F<=m{@(w#`VM==$@0 z?jET_c)Rx#(x}lskVB0lu-QfaZm)rJ2(0Q__b)04VF5d5d(cPbfAMbvA#^C-@`~^} z3JfC=MBrF%W~lqbp0$Tp{1!y-;|txL3N$|IuAKD9@z$GK>336DypoXEQ??v`l4yOpz z8+ufgRk9jtSpWiyc*3#0cYqkMNQuJ<7C`DMfzZM}X~>!ER@s7^;z=Xo@g$o_Y|62v zx2Ky%-xD&BqoOi=_NU+r1;|&oz2XBvnS?w}lVn2eiL?YgTlFiEkSHEx`b%GMrRs3hhuMmp-MiO!hnZE|8=Xqa>vrqub z1t`my`U_k(Bpe?F)zJwVJM+-|ZB2YSodi%vL)tr)q0zUHwwm$1rUNL@lk$wOtkvYD z{%RTdXI1Mut9fj9#tC3Q@coGhP%im-KJP%whE)94plC1+L8)TGRIB}UaJA=ywDsJWXaX#HmAI%7lnpbigk}=3+(ET3J;V14x{ju@m#v^s8^!gy-eo!8#_$3E-h` zYxTuIBPJJ~j$}i_93ocPf*o(V&1sGNbc8b+a2=m|*Nq!f9?`M(s&=k2k(UDvYK0@Y zET}%*l}*~Ui76m9dQS9KVG5#cMx&UD!Z#fE4ig@LoM`bdhilpud}rxU#O5quM)diG zfSUuE{7l2)>yF60b^*dV2vEMD`yF1)x&KBINDiD7OGiaY1C766bKv}}vnW&{f8wC0 z&L;BO9mHRLXUNi;&rgYfFpQQR))?7cw;+Wl3}5fSqR8gm_9J@(*5y4?au$VOLvS_v za${xZ&qC0X_LSt1!MqyoiekQSMCf1I?&+%=(ZU&E$9cUJtAUE?kn2Qz}D< z5(#Xo>^``jKlA-Zq7$<-SYj{c9fY9^3EA}}JQv?0^X#F$sk;EO_Ui}UO(Rr_T9o~tcVKAV11BvpC{A7vn+bo3W^s!ZWVt~42Gh3M9#&! z$tfQd7~ju%8Z97_!_aM}{vBmiCeyP1+pEA0VWC=@T18k8E!pvn4^aFt9@n*=<;^1d z{Pr{k)Q?99%yTk>2!48KCsf$@Em?&X&r_3{ zpz%L~3TG-c8X`!o^vhY=YA)=zcT}JwtX)hGc#J-QAoZAl1u3q!uKs=8gk>rVbuCCO!qUl|4l5 zk^m*M_~}tqv3C1v^|@~*HuDRqS&=m4QM}HP6E9QNv>WQ zHvSBy$5W`gpWqvzv#Bh`h>otWDRczkQH(Y-l*uHARy#W`a@>~pTBPeLWwr()7M8N? zeWQ~LA!hyE&pyE=-jLR$=M~Q4`Z4ELq8qj{kJ>p&32A6WWhk7fKP^S01*N_>;6c8dm2B5{$bbF^5F%PYtvlBxdp@!RYsh5I5X zA{$IxWjQI*J1rJCo^sT3TGB1A>ov+)Z(!d{JdxDWxg-OHS!>*y_tITw<^}9YJE`hX z>AlnJdt9I6L}J3dh`Z6V9&p0aG6`fL39*txi`C z{X!z}q-z+AGiR7>{1g&x(ldXuu}EszQ?R zWbD(A&uv7U9qSTtqR-ewL%K710ptN^(ABZ8%jpZdhXT-V*~*)SwR-~_Ynm=*CT@Fn zoTDudJ!s3HKE`WJd5%(fLrEs)Lq`cTVUD3SO^KN6DOK+wH#-WvucJ$p)78q`s7KH| z^U057fwcj<4C9lLKDKTNa8J!sU0%BESpZ%X5coEUCw(Zscxk;5IEdXLXPHG8|zefV(YdCdZ4ju~djE?(oD< zo^xPixM8c2LhG~-Nna+kknbMr#_p?X6aN^qpv1}dHC}>AOj4kFJ!qCkmmgZB8@?EE zOt+BVUX@aiJ!PC!M*b%n>+=JI00Ouh?%saZtt3@83Kly|x`p;3iK$#~S~h;K^mdAb z=iaOR`mOK=&?M;J$wXfDWzGozN_p!`(WHW=hE#gXqM`dzBv6T|naBM14atr8Xl$>l z_*6frW7h#z@X(N6*kGP=%&(^1exT|?#p(HbeX86}f;^?K8ZjzFdpYB{b z&8u?8l2zmePX|W4=(?dyvqw)RA9?pfRA;R8L{-#4dOa6QB z8BR;{VZo0iLSeyhw{*xH?mVcLlo`9e8~+r0KR#Bj_lHNk!jS{O zP8o!ORlBj zs|15iyNNzfyZZS`8OY9SY@6(!^T_Yh^%D^jvLeUxy(_uf&sD=|LnS*9*(Eq3qRvF- zHgEX+I@fmX$n6ceHGe{jeh`=IU9TU55guKM`Q|sjDSH@LA%MYpU4aAXG;=vY*Vjiv z0OC|e%$&d;{b*UoaAna?i9w9cz_JL^eTPK90#xKYO+Rwt1nobc!xPr%G~#`*A=)}R zGXS>aGwt39@FGUV#@iL~f$IQbLQDIHeqmyQ3DARLMD9pw8W_-i6xFn4ll4@iBG@N6 z`5#dzSVafG@%tZ9C`zPt(BN=&AmGuR`dqPe5Z531Y0ZQ6bRl=p5#0E3xy*qX9`iNrXJnkw9=i9{!iR-TIMnQ|unf~k+aU(>HkC^JCJ2cu|rxgfA`IM-3lLjwO`4yU9 zB5fDLd$Vs-)VFuoK3Y5^stwZbpvD~z%!^u#-@;Xln*IauIkFboT3HAH_<<5d&r=7t z0j?i%?^(Akb`uX7<|GaiSP*|mz$|xS@TmNO* zPIj1H%gGmD0$P{P;Al=g`2MeIFio{jy05tMdX@732FdZQ02Z#4j9OC;#`+b}D>97X zKYxkN8fUyC?lwSrQ~>(Fs4+?gs|_)OfWw`sT$qLn2H8eIp z`qtpZbLslXpHpXTTV%j~*|6g-2CtiGc4xVaV#vDx!d*rdhN`#elhe#6_b;vJit3?W zjlrVKXvZDgO&h0^s3Zq@P_}q``QX-s=xoE^89=sCU(UMr(xBhJI?|dQGXDj-Z_ZsT zESbICB#@LU4B#0aZy<;j$q2hG4R@rNSR4tQc(AmwoP&})|2)@@BZQfIAg@~}n`%bO z#0;t-r7G%g{~l@I$qRY|@%twvkfRK|At4=7iHNVFCK`E?$~wvAF5epN+BnP<*4O_T zI9VTP-Y;ao6R%kdmVVE?q?|YZsqJHq}~hq14NgkrrjPd(E^N# z{EI#vZSA=hKyU^UQ$YOz$XnHuZfyVr;qTXwA2>l77Izz}m4}#}1IM55gFKt6hI14Y zX036~%mj7|XAQK>0IvKYxJaJXt)n~T-9H)*dzRNbuL2s)ZQYX0^e?PIbr<01LO%g) zwaEI#)aw>$V_ty`dGDBw(|4Gm)9v=r)=lBLzRY$51M7v?G;#K#$> zZ^CW{D7t}ORsuUfE{&uSxDj-n74*gq|C}#0^}Fv1AhxUhJg-Z>Vrk2p>kV{ngxxNL z60cC*mK49X@v?f0J;u7)#>>UN)8SGZS6CH3Rt4(whwOB$GL~>MO6MTMVB=U=_yciW z&YRZ+RB^n*X9{ji=g$3`qYRdokxADn%ntlLc^2@v9+%x~IROZUM?gSLq;59!OuvID z_g!fN$+gw}@q1tr4}iqq?UvwQzF>A9{r{NrH_3kf`W3YLrVtf^?@qn|H0riCB{ZekZ|z{GFjss<-;f*^A*nz*k0n|K?gRSlH(ry+t*qPo>X z?e|}O6WgPpFpkWR-XzR?n&>&>VH%v?=-I~l@j3N$^YmZK0XR4SQ#0k#NParPn`(N- zEI$E)fyXlk&EtcETQ4^Q>{o^h4zqv%`o>B`P}=xQ_K(5KtB-1GYkh!R8t3A{-}An+ zA^rXR079a3^XB(Qn;*V?6Sv0yUkDP_T=vlWO=B=qhE16t!|~u6H6}Jh9Ku?UuMt;h&dlw2*gUle;vFm^T-utL{@{(Dq6h} z3r=yW%Jw57R5T_9Zi;OUpz!cX6?H42`0I!kJbWGgds!mV-Ie%5N= z)djTiHs@`4TAfWDo$xi&1g4_`=ANkuKN90_n_D`o-xJl~da(ODkMoSj%L){~9M1Uo zc1$XBo&PiwZ7vJ^_-z3+;yCwrO#z@Hovqq@V_8UGs)QOcwXx`;yrPVWecjK2$~k9dDI9OjvwF<6O7 zA&~M4qu7%Jg^fu9Hp}&ROKqDcZb-_#=;GdDd@S$oXP5h&W9Dmj;GA-)w22kZT8QYV zsGz@4C575??Uj-le@jrM)jdFgy*-G=*>V1Kv0{4<`*sq@yOc9pQt!}lEbz?&K3WW@ zq+Kk&NW6I^Uu5OVoOT5*7+2bST|BWblR0=UgS81+l@W3<@;+She z)?t7hnTIagjY;DunenBy#`S^rd;0JHAV2R^NMtq~7477o%`6VC^eSsArh10oyY}4M zK`4F$G$XTnJVHOXddqhUcypDoRw?}(m}V}&(&Dde^~Nu|zg@?^8FK4}5R-2tf;lqn zo|T~&KE4+GE<>t~SXvR5r=ea^qcw~bBNZ$NV`LXFke+W`x{p4@o(68Fz|$ zE-04Airdr6QbHu$|Hp$JY0;9yE6x`Wi?vpm5V7}D&239S?of6 z_NEn`xm)RT`I&!Azkl}iEI3;8S2x{ekBM~3(vOoR@U8Blx!Jjm=b$j%o8mkn{kiAw zSXF$~Vux?3pu#1FY$_{e8*ffvWF1=B1;Oe1Q4i;nB1_!Rt3?tXd6U{sCH zsh3)8Khe>fehLfsc@8}ax_Wfp;4@nwG39(NiX)x&a|(0phNt-+9^y7HS1*7Y|4?cN5g0q=z0SuUl1E)%b?;z52OW z{60oa7W%3a+(v-|x)02E{@@JA6#(5mh8DOo@ys49vdri0CcRgI0H5^Qm>-Vy%@03j?TPaoL|!?l8|9dM-i6l&H&s z5e}K(2{??X&XC4ZtD`Be>SxbI+`<)Pp>bOvqc&x&7}TU-#|DJsujzU|)5!h6c{dc{ zI>>bJ5uMq!x=IQF!ufmbwf{-uLf!9zv-FX)fM;F2En z2gOmm1sQ)JBJc3fbfm{1a`}+eil2DD7C{#H9wqdxz=;D(r&crkmGu7Ams7&tX-|7N z>8|5=tPwHl@VBIYqp^BvAE&9;2Kk|UE1sAHG8Anm^ukZmm&t92C}+~3h&i$3c}T8D zm&C_k9Z1S+G~m55O#d0Vfx*unzrpDMav(rSook5mZ)qm~Y(VYRPZTC*T z)yJRysMz+CIsTWnd%hajUPc*;j6PwR<*u<^je}kgFf|NfI5qj=t)#+-^;{QT3 zA8MyS6j3%#x#D-e3TtWOu}HT^q$10%I#0VLeu=WGuJxPl6UsE3|M~zOxtpHy_xXGa z`4+3pqMdbOZ7^*VNH>ZjloTp0NgH65Yw`4EB8_so5d^R?hh02Pg=eQl4DQsIS3{<4 z{)=Vlp_Kk1o}ZgEmY}%HKGYW^K(|l7#i_$TlW^1S`3~jCrw>7I-w;QO%zsj7{CzQ+ zSTUtvw>17rk{lxTqOpzeXrmToUJxh3Zdnah=mXwYfq9KooEsy79fb4j16X2DF zV~3268T2EhHek&a2TL~K@O?Fv;D75ZbuqYBG+pTZ}^%Mf*#|~*Ef1hCffr< zf5j4XnZmOO@r3E6HWD5#LoxJdCP5^-dO5(_mCj3g@kKi8ly)L2 zOz-YSD+91vYNG2?=?{#?{2$Fj(g@!AXrEJeD1@lv_O;)6H1~QznTLT4=Lv567WU1H z0)n+gK+%UUo7H4mg!O2qstWGC&JpIRWop?(6pugTBn4l*6mk1ik^TI19*gZ%%QtP} z!KRz`{Fq4EotU6JXIMoB(_kposRiuKdn_OFH%@&X(uR@CCYeywWCi+Be4DJW52s{IYr+e5+eC<<>2}!6#lsk zlxcNyJYm#Q%Tuk<<<7ltEb>?yj_v8v?3oF+{g*E!%W@@MP_O9)a6Fnfw2ZEfT>Djk z!gCVqb{9G@{^Q64>qL^^>Y2e^?Z4&&kw`?8bRy9hoSJ#+Dvm$Z?HT{11@8z?Wx(@y zEEj6GdhC~gN@m(cs67XJAO|f=Tm}kAgX#08p%01$edic2@X|kr1j-DTupu&>Ll-l4 zi*|#JX?IM9au({Vbk3t?`PuL^Iuj6EA~dN$$Wh{+SThXk+9UJL-%V0wq39!%VheRm z>PtU^l@2(y^}3#u^cc`p>S!GD-#Yi|LaeX+B2(Yp2XFOXAnNfcrC35a$c`5$dEO%b zt-t~=@(OLii-|1n9r?a_(UT{6U3hhO#@O3X6Nnb@{Phfr;Z=>o#+1D-rn+Ea~B*+Ic9NU1d`jH`$jcx`((MdJMil#4kQebf$=b zyTl)Q-ohQpUaO=)G*C8HTqj3+S`y28?2aXn{yO1-ITz^|m7Rn%e z!Gv~Px%*Qt)oiGJ)=qgyPL5MlGI~S+XMPx4I{SQ}IDtU=!y)&8hxt^g0rb-g;v#!4 z!k19~fGTas!BKH9*h^M{Bxamg9kmF;b`Qw<_La-bDYXaw>tO_4Gcr(AG1Z=dV|M6D zuGbSDoFoOBfl4FsLoK-JNQOzCJkah^or&DifwvOB;43iKNN{@)oeXnEmUy!0ukdG^ zRV?5)0x2D^KZVqg%q{4d|GB(tq_MPvHW?Qee_bR=!6fsT(0W4E%aC!muUb{x7TuJ| zK;--tE@IuMf^c3tofpp?rDu@eJe#?d{4GfB2GqX2vUe+EnT<9uQMG=BCuG$IN%Dad zdrg5Zl6{iY!12K@@eL8e%EmHCS_D#vr_nOrI3>wQB5ndAWfyE*n|>K&!na4va`dxY9oWF$Rw z`iJ6|o9ywCE#FetzNlUn5}s&za;<+fydj^uwMeG|oogLk=(fk>8D(nX;tYj`DG)%3 zn^n$<;#uSfsp0djzcV#_CvTt97A;`$+d>kxhq015^kXrZ6vx;c_x$&h;XXX3-!9Bz zaeJKPUunEaEC_zdS`2tVb!H-cbbbU<<~M%Raoi6j#PF*G{H+P_xkbm}z(f;`g~H)7 z>5C80Y!9JnC0KMq_zDYBV3#C_Wojkm&au*_PxG*D>V}CF(a6=-^s6}Px0QlKO5^7v z$Z>sNIVh4yCoXMv7CJ5;v@`7Y@Q~w}l<+gI&>eDI0+W;;O8zN|qt@f|>-IXH*nX2H znhD543evgyuKtt#G;~XT<=)7|J02CajigYTVk}+iw&3h9 z2VY2~{b?GMK4bVT(qvk*RABs?^!+HeA;$;I$YY{38?>%?_)6sz;;#sMI6!Xdco#Dy zhulE{B1w3OVw&3tX@8Jx*cof@;md_u%0P=6+!FeXu_MQ8sYhvs{`f#%^N+3nNcI(F z(lp;gUTZSZ4Xi~aZf^aTME~Z~b7qs5p(Ot&lbFa7rXCStxX22jp2Z@&wh8r1zj+8b zh*$@;hAq*vc7=@8Pk1J^2wPxe_xfjY#=H=Y=$AxNnr;SoDeHS*@oC_#CFI{3*ZcyZ>_#PrF*DKlJEkX z6R`Pu^0Yp2QEI!O=>vJu#VE!dNI8PHg4|({99R4UwMg8ylhtRWG6DG(!5r6KZ)D<# zop3KbAT5FNLF}_n7=9}1@<1BVCsEPNUlB(yRY-^f@c2T?$ndn(qT_6kW)fM$qYCN| zy#d$A|Gi{mLDG{lwUuxCP{~9uo%O(^xjo%T#;MrJ@kwMBwo;JcUFRh1(hJhNxj8Gy z8?Xeo-%G`POln*-LZ=138y0g9c>vbcDf2B`b^_I*99HE_t-I6L9qP-o54A0q>NfbvSEe>l!-;3j!Ev6NeGWM-EL+Vny#Z4@GwJNp_GXs^LGQ(3>2GXz*1%gD1Wsiz{};D54k_B79{-A! zUlw*Eyjvs|VXd)rsqG6RY%bk`kc2X?RLKRU%Ytst1eP_Ty(nJGCRV0%3a|+|CLqT(`)IL^h_#P z57BDa_L$@fr7lwniYu?GPld?|m%5}qqlesKMP@C!iGN=qM85R4W)f;u!yHubLt@l! zBx*FVd<>fHbb3>y``mB`r*w61?f$6*6bF{TY%O^pYd!~E+S9@BV2+oQ)@#*4C)oAD z_&Ug)`ZNcNlqZ%?K~xN~XXC~(4EFS)`8q36Y^EnyTqZ#DpomSNvMhV|0eE&}XF1`CyX6-EUQb4gjV zXZ!XjVoaCb8*B9)&9?U(e?IRlvk zp)DX4OdSsSjzH!9o*80BH4Jd!f{^F??SK!Lge{N8#x|%^_b)rJGhP~0&kYgV(}}(VS}l0$BE{h-|H~tbx@Q6>5gx+LNRM| zQhv*g43Qo~zaf^^tJ7hd9{0zA~}InDE9zt#wZm3tufsz z(69Lc(VVwAK)<8~w1wZi5da-ci3h*x7UF=y1sbxmw+DJDk7n^9{vT$(e?N`78DItE zl7DgrZ!-q#y~#Xx{@$aF_xBFl7|Cw_1*QR~ix;k?XJzT|B?Ez#=8c-EyrGWqJ)jeP z_4kA|@Ucna*_f{1{c_iJV`XLT;LFDfxSST_PlwSh)-y6gL7P8gKIDl{WOX&t!&8aJ z`g#p%@d1+;6BX=MmZa^hDbQI0S$!|}O$fA#Ae9N3uIt!YPE2I-**nM`y6?$zj+XJ~ zDM1ICuJyywJyy3;PGeN>MFSX?&|T@$E#Pbo>^C&EV-Vjr2Ggzj0nb^dV*;L z5;9W2?%{89;NQy0b@1=t!1D6)#pgZm$Ibti@J<6)q3}XsI+E|FCkM4olRH22fhSS^ z`G21-1#RzqzLXz)bkACAZnM3oIN0m(uO)n)j)$K+#|8qP|{%vL^71Z-oe} zLokao*wMH}Rk=o6R*gi6mSD+O&w`z9MF5u`W?br5fEIhK3oa97EM$bs3h;Tuf4*Z; zYbb;B@hS~WRNd&%c{y^hnHF6FBeE9Lm{+=n3)HPUtQ_F}`ivn;$CuuZ&s-E_b!MP@ ztHCMOP9}-f_yLCn;7hOp$mPCV@~blQ!KK<)%-r#1TAXf z2HMb4{|anfA2E(be1n+Cwa6{LL<6eB%RL=JE2ths>{r1f68~&6GwzD78tg&MkWV;0 zG&OZ~=*4YI5c*l5XI;?cHXif*XoLaxCG}*<3%=9shYveG?@cW_vc-Sy!LtW$Lw&wQ zWM1x{Q4g7$U&O`yA*p?1sw)Gf(FRm<{7qR;j3(iIv36m`p0WorW`RCHxZT1w`LL$^ z-z@AdP~^Bj*m39obg4?ZOcOy&tgMgbo-hKVF3=U^{k*dYnk{<|Av~~`fFRr_Sw|@D zoZN4KhFFWbkd>C5Ep=@p_eO-09veG57NEC>$XO+GI`brPr`2Z$8zmhND`}67V$z99 zT@J!v{h}f=M)wc24yDDftWYN^3r%o2=bs8EsA(9Q_}V1>05Udnn8nVni~nW7YL!AN z#$)U&I?*BqMjvS5!gQ{JzH(A{@PuUJmR$hFG92CSFC~1>5L<~FO#i`z%`BS`2^Q~G zD_z`zztD-^(`)GZ(ivp+@Sf8XNyvu8Lh>=JjCr1+L37zcMUq}d;;wZ*1Vh-yI%c?j z8~V`*>sk`BkFHp!Vz77pv%US(cpdA*cPFjIEku2hq%gROUK70Xj2wZOec&mk@b>YK z>3N_rh6S4o3?Wc!}C-0ZgPrd~uhQloZ$n{8I#aBCAv^g;Tv`(CnY(?DJr159cC) z*ii>ihxoV^wy>~}#KSp!&HwQ5u}(U&@@pKbTTnyCJpHUC$z#Y2w?kaw>p z(eiiCToaMm`{^yLuz|(jAW68|Jq2>LNvvl*uCG?q!UIztZg!)4dAb5=nu08T-n~^` z)vam)q5^${CW(p~W0#woH8JXvAR>*(i5XWf*umE)8<{|t?1!ICNCkFfX)=R}`_bCox?ZSX6yekKaBbm3woM`Gtx zFO%i5khdh4rE>e6M+XMpz`>Qa!AV-OxhQGRMb{P z&bu67DDzwWoKSE}ZSBDsy6kAYC8$qg{CKM6-_%{#56`=8fa?s^RG~YOwhjuCbe)Mk z@v*Rgv=1%;qzJfofL%)eRv19oj5!)w69SN9UZ=}M`E_pU+-&=*$%lOyB3jbbL{gq9 zEJPomhQ&FYyo|PFg|b+oG7)3%#{qSY2WkXOy^ML6Hq>byuwX_)2KljQN@YBO7#$B% zT3l0>U^(zO9#(OyI(ji|NFQg3udmz)%IBUt{t*tY_OrO*!Np40jf{Wv@og+VU;$?@ zJB6l}4u{tQQykR2O;a%gO5hC0TSXcR-tG zZM;lMegoV!2|B=qu)JIpDEzR;1jS{M|3e+gs1gJpuw=h$@sYm&=O+7hOS*H31-sjR zL!WaTh~tXt2PSSk2fO6wj;6cI$EhTv2e*`dY)aCre|q~k(NtB@rqMcG0%|(m6wNV& zxbay0*oVOzB)VFQ!}7~L($Cp%e1)QzxvEdCoS{8ds8Dp)v^xd$%JzvB7irrYNaeRl zcai8SPp$L;lB&ZpSl6<+##jm!{^zqR>#7c$zC18hEXlZmBBA<5ZTlN~a&jy02AYbCB*BOkF;(Z3=LUDNw1mVy zuoU!haVa$wIRpNFKYQ~Bsi0Z2P5*J=E9kfR;lO38W@Eea{COs(F1xCt$kSgwEsp@O z=-$IV31Be@rV<2GK#=+@5&)hSegNDGoQt|`JOJ7nAk{vK56I`gT?L4n;Y06+Mk(j7 zXNI5cRu!}tbhN;p%YLY|bx&9YouD51yrHLjwJl%Qa5C}>X*B6SjGq{}bqYFqHC~wu zMZGelSEA$i%lyi^L|kn1;$4K~VlqZac@v-k8#(VrqudPC)UEO_@~OXm7^b-vSW1_J zSA^F2aS|9hK|y-%Xui*dZN9uQv&%!^mfxMv?0OV)O`|adLus19wX*M5?mE~oZ0U&h0 z+$O+Y2k#pNOI*7aJZ|RmVfpGN3}q?=9)b5hQiw-=`0BxQ74Ss?mLC?DmUF-zWv2Q* zt^Xl#0D2D$KqAfu9X>ZQuLnWwnNdpf=GDVLR0>QE^rk2>ukC=BZV4YJAo;Ccp@wbO zUk|fb=a`3;Uy$RXFaMm9qZWO=!KZJ6G16xfkMmzZ4;PKq5PbB zfX78L)hB{3SDW8-}Nbv0_bqU&0EY)vXrw3;a+ZxGn%}(dAu2CgaKRjeup04iK4LR)Hb8=8+)MXx>nW_|VT$zxY2TH?Kar}K1^1tNOEo|nh6T=VE-x?mJ3mBKQmCY<;1 za3>RG_mmn+a` zCmZ*0Mc?ERt>HPQaL>8f)S{G$=|&m>+#=xl$huw)eXqo}xgA2aPs3=s+#zV<`==dx86{RIUJ0M|hd=y0+_EuLe{?6}7RL#ns0&u+ z?s)q>mNKe_;4A&kf4O=Uh+;j^vx*r@L~?NvfQHv6)V8kMYBAmi)%oSPLNrgumzFmD zRpI$mG(wKbKTbJkjZh!SeUpG1;0xwhB>Nwp20r)~{slwy1TJgG=4gnOufKMhy~=x6 z)=KnaCs9}6WM2%1uAIEckjfY$$Bp{yKh7q<&Z^r`hF^!H5h)bO@3is9sTJ>;-NIOg zl}pEo4&Qn05qK^TS`kWB*TmfJycf`T+2GkDVi8*3Ds#E?Yx`Kd0jPYF7bSmVe?dea z4hj8rOfWlOj!%USFOO3s5#{C0zU~(pe{M{>2+dYIc+znc&#FFtQS&_yE>G2IV1Oe= zF+|PVY6YbYqeWNF6_sv$6KKF9eqOzp$IRVYy%ZpFc}_Eete*(=n0is&9EbaW;zTh@GCM_Fx$bR**t z0T}T{y;+g304gr(N%W@}cTat*xxNm$C`U};1S&87|G%58o&<$ZrLhgTU z+HTUSgu7n1*C(~r{1%gf(nyK;fQs+Z``3uy`1@ytAS?Cud?F09p-J`~0$Q%HWLXGP z=Mqh9lu$*Po0_}(GQ-Rh{t6#e&>Vl+Htd&|AAheHF`p3zjTBIf9-KguNT=RjE*hFn z-lZp@-jWHQ6~O6`L#Os&jk2omZM(c&VixljBSZdor%iw$x0ge$iQ9zyoA38tDvCnByz_e;hN2d+N{wHz6RX zQn*M$%h#F7bBDr`$&23iUQ=G#GA#Cg3zs*4F|v*58Qa-eC8{D#@bPo|eBweaMcl!W z>`9N&Exl-t3EA#~-E36EoFFwPoVsFwaLAGKzcIE``G>Z}SV$Azkr9oA8B3$jT{R;< zGCU;dL=>-HCT`$pvG^2PLDcoyScl|l-RN{vC4QoqQM&C|C5JSjg^q)jf!CZs>jByk zq%hA!jY)JPB_X++P)6rqEtH z5VT4Ght&keJ<5aX8cgLdNef(_{KvrLV%x{@kEAI-usI01fa!^G13mKLza)ltGm>gh zt^E@gFV4u}X`{!Y%rsZWl&kNr)%!VYo_VSNdtRv2yC4WcAa$kdx8U+Z=!XUc+N^0x zJq<(|FaF+U!w@+_YGoV5>IsI?58KIoo{@$(OtZl5Vl#8|s4MR|?9t~=r<|ZrH@K1l z^-(zDzEPPsdrm(&E=}liw`w#U_+cjJl*l(!BIBV0G%R-AP=->2)X+%Vd1XdBEW${T zFLwFEdwBnATHCNT4aJ2nDTr=-Bt6e6<;i{luqyL4?lj(sBf9>8#|k1t?drDZ71y)4 z;tcqNF#H-1Y9*Y;986pT44fFN{ZD z4_TMT5r^UxZ=Fvj97v8>o3*uAmJdC4q^H+n$P8>X+Kxlgf8HgR1QyOBB=WH!R|ewnnP3(Aq;=ysx==D(BO?cDtu9 z1x!Yzyg{Onl-YW;>}?@4ALc#_E7IX#XZ?I|@jkKcE4E*{6$t7)1BI8enO(>>4cz!0 zDpxMsdNTKPu}6bT&{r~{BHZj1V-|{_1f|}BiY5H1PsMZ_O~p<^1x$ktO&1@02rzNc zLqc0^a@~pDgkJwqfqk_z#?jg1X2pUjpU#hA@oSIt^Oq$*U=%6nKjw7pl+L~^b8)3IRi29zd7<9Bw%G3%zc#u#Kg84AQq^z4+664YfFjMI`mVk_8Y!C8HCGn}vik zE#E0p$dQ+19QWLPebQ~(yD|KutjH&Mpm5;`&Fl`|eQ>f&9G{gbNQii&siZLu<)4Ky zk)+#v8_yE74>j5bp`UUA6VPFxN|iITK8zL$*@l$6UKiU!VJ_#JLwII_teTr&o2{xT z*>$r#QiB~OpzC-s0tjxvc}zox<6Co5(2s_FW*vHhrG3=r%H^6EQSqxOBC+1DdG2-y z?!V@?XK)~je}>qKyd#<@ID3n!K9DBEagEe(uRqKGk;+~U&sM?Zq-bxOU_}yL+D1rN zCM5hFJTZ6<1Ib_0Upna(47pkXC$y=0#_@xissw{WcSEx#OS+dAFIha%#M6DCr9MNn z2a$im;xH71tkp2@KN3-p<9W-@>TU;vllV@K%h$Gw-F&Jjj12}oCMt*kw3N@6OtVQs zl9D<6I~iMon_l|0wgcLA_JzW@InSQ?Td~nOS4C(f_sHD1QQq(1ty{o^07*~0D6^Pf zU~LuUdsn$``-bs1c9}j`w1poW!U7SJ3BCyj z7ZS_(ov$DEV_cBgL@==5T}a z$j}|VVL7bDMnW7uEQp#kh!XzZq>*-nlwcxU`9eI4sI1ZEg&By4hm(t>+6zmMA$rX= z+w7xGFcj%EtD_C?(tq->q!)BrjmpY+(`XRt*5TWHlKRL$=%32=D>+q7aVBg^I>DRp z3p_z{H+~u80+jH?BA`L0j89*zltSJ0{|+e0%Aqf>NB+{I+tZ09i_DJ#}jKWc~d2m&CAf39+}r$@NB&16PFl5Q{ccry36i0o-SG7AQ#zqK+O zHtU+96d8Mza$$oQekSVju@B9r51A_T^pLY1#YCdZ6z502!W4zYy`F-?io3U&wR7Ov z7w8}MX`~(RH1$GAZpjhy>HaR*->ob`{$stvySd!;K*X z&vBAolP5i;k7$r65JHnmcPh_iC<4Gty_Axyg)o_mS)u2~QcXm5_QK(!vcLa@deVgK z-|kFx-KeTq6C0eWY38yenkAH@eAWy}(#y4J7?(?O>V6XH3sSf#EXU8E577F0_J&hR z=C5Bt??dq@R4#vlHiZLW7wx_1!O$FA*L9M?az9n2sX%tE4D@mfX6qNaba4I#hgb4%JH{H1m-q*CW* zxK3GYVgbNSeyz5|4#(xvvB$%PW|aSyot}Qb|E-Qm|I5#B>iUdj30fo(4SBtKP*d@N zGOVQhz?rNs#+_ZnmmEZnrw^{eNTkIxy~Jr2q9>uC0`(M&w=-u?DoG8078PsJkwj$7 z^NOsRAJ>{=Y;e(wezPqESwwDC*^mW%gRW#eT3ew1K0o3F$rnQDeKt7>88&EKDnV>| z`$0hg@jFft#sn%e(Jmfktt2k2E;KvmvwWE_M-XiS$I)Qgte@*{L+p z{I_C6PNx^hFj{QdVqW5E?8A6y1MX zkj12ru+3O>@R2}$>0S5kA`{b$kN#;rA2sro8RX5dCg?oeQ66M0TRr+RGJTAT(HT}3 z?{W^fp%}r`t8}x%1zHbCVV)f(A~GzU`E#C1u>~&b$&#jthRq%XSq9 zjOz}aaLUIzaz?l3lM)ibQb?&dQID2yrEst@a|C@wtQ?p=y$!8D=8ZH93jBGmPbbHl zxdS_xp^Psm-+#pE8R~f2GBdH)GQ)Ek^E2sx5%$(mRdw;#?>gtek?s!Z6c7-Q5I7PN zf`lL;CDJX8pd64!5KsXDC8b2V^N1iwNlBL|t+WD4+{N>|@BQPx;~nomj`94V<2ie; zz4uz*`I&PLB~r}JL^a-~xtH_Mz*cg3NqEqf3{$Gr@sx80Pzav><y9k^sr#K#886 znXsTJYP%XC;;Kg zsDyaJ2O6o?i!8Txyym=L;nPLXh$=H*F)2JiztD0Kp;G^uP008LuE%~G)H)3w`mG72 z*3J8$f~2JauXEI+vH9#)+o%c@P3^y{{^iaiucZLl>r!-?7Z9q##n?Qa=B{9UXeEHj zyTm@lS_-uctx$=Z-C$}|-xN1Iql&^LKf6)?-nuaLpIn0!=>3S@AWAS?Va%J&qaF@V zzmHnDfrcNWv$DHW2W=k;Fjwub6M&i1IT4F&E0U+-T1wnBGKU^-dGI8V)+Wg9VUU#` z$_$aLpQ`cds^P`W4xX%0_z8c+No+1Am7IjBs31J|K_^~F_yBrTFxi0IRczV;5V-X$ zH8RoS8|}66swL2{7aQwZh$I9A`v?_VbOk{u!ALJJx@DmXyJ%`5Xmg)1WF)!3T*Ey9#2( z-J1Mta71;0s2;%%cWeu*$hEyYy&{#<_fVJ{?{p1xUlzSDb4-k9yl`Z}gP5MDh3Zb6 zG{J{pIsHwoB$3mBQ@wFF@7W>(j<^X>W{#b42I}33VFm{15Ob*Vyrg+mAD#{Ov-*l( z5cKTaD61$W!N*eiH?JmfvloCHK2QWE7=^NUF{?SS zO@nCaMG`|+DD;yp(e_g*dP43hj;EjN(eSr~x%5~+W2KsnMfV!(%V%9!U0mY1Nr7M9 zPK(pdMJzDjFYK}N(b5XrANjX1alCJ5lYbJBpp%MMVp%S$bm#ipd~3Igc%iHnHO;f7 z*N#)#iT^N~g$S!@u;9(UnHba9r1AWbIQ%IQsgDp?m%BeCcA~eqVL&KQc><)@BwDd) z$mL6#MtkaAB4)JzJ~FOT%B2l?cXSdPb)D|@SN=;8yRE;NWYxNPa$x={vsK?CIGiu> zRvK)WTCVaZK`o0e6yd*;*%<^WA{fyv{ zazU*pcsIUw4ZqQ3Noz=kjE-C`If^UjGr~g^!8sY1&=L39Dc5>n*xj@*Tn^3foZ5@Q zqg3Tb<}_v9>gE8=kGa|`RxO8f%+7hAg}J}d>&sEm$u)2I_SneQk>Z*2fAH_gS)$j` zF^LTLVPf^Ih&J^jHlPu7zDMm6Aj%rQLD-t-1V0HGVb!X;SBa1p`vs?ORz+!~>7<3< zf8C%)aBX;~F@h@m!J^v*P{{K+(VPbjEA-(v4;q4S1hlm$E)snfKlg z_mDus+0s&^Vq@_Yfm`%1FD{xse?lNFP#KNYD7iSp?wXUV&tasm?(1EYD*DFn@KPV` zUee#p1<-yK*b(WzD#WYE@J3TH{6NbK=usrkvT9^~-3T0jz0>y3=bNQAc5SU{Tm8%? zf4|v!di>0}ah8Hr61#pQW-PMeF$!ai*WsbBcrfDy%U&j6Bs~BvEiIWRKkZ?f z3Mr6=X&WnwX8|Yfk2k$C|8=V=DTUlVFxRU7S>FeZiZD>lIxW&)cZD9buJt-P}WG9Ubzo#GklQ-Hr5^SC|7(xGNWM zmZr>~(4&tiQWaMUCbg492~(X=3*DVvY^bgR=LZ^Q;{rn>u?yl;Jow$#0h-7%Rb2cV zLVsNckP&Za_gL7F2JjN}v7j?9%S8hA(E5PkNi#^a^*r*P5l-|&M3rDwMxKZ7zE2%y3EuTnf={3KNVifSBcXlV9xa9gOHT>wMJ z44}4kJyG*`5(_0n#*>kQ)`J!( zI6wOLXBNtbP-OfGMJ?r1Ck=|eIyn=EjI$q|I+n7YY0rsu{iOiI-wWALBPJT$<+RWX zDM{irPK-pz(JdaL7Z%h5R{nMjS4I^h*f|@m7T^WCOQbt$NCqI_)3FgPW9=oWO#>{x zI}o4-sNFybKc@dJxM5|5a8w{oA}E!;e6-ayTZzrWPx!U+r*qbv{Mwb9{EU@&%49ey z{3u;KmKbXS^F0l3;)hvQu+xFE)C(w$f-nr83mK9t3uq`!irW}m@GMi6Bhpo`wP4!j zQay2q$U|iLAY>oz7Zw*ot@H$+;#^i=U0v<&CID6sA2IH}tW=SzYkIx(Z{L z-|JtKbpn5MQ>yAgh~?SugM)dPkdwsS0yCH5%G|xZJw10}aThBS(-f?y!r^cb;OMp# zCJa6DEy4q<#?NjdfAM@FDPDX@{L=-qbE7Tny47h$Ci+UIwYE0ZUDpKn7*=;ef1<$; zbv<%uDw2mgW|NP|z&nEa&G!V-9E66igb{QJcYnWiiT99CHQy`xBQs(g@q`1)GrWEX z@r$?mPPDLaYW>hUE&i%_vDeQ@ugBBR%bFxnohe*fvk85?otZ8AR*xS`^@wK^Cww^_ z@+a}psJ?-@P3%dpIMs5Kh(f}WtTVDG7vMXfoSMVvoMXPb@N>vCU3*?2>~oiKRX73v z^pNl=bzzBAanzhdKN_2a^d3^BKRN7DJjGp5z@8pJ_Gfl>7GgqE=yNus?dcm)})uQ#Y5 zAl8)LcA@$;ePBcUmA^c2DCmmHY8$)#Yf_GivYn&)JNLzTa4opF`M&6fEPB68jnAd9 zUGqZ&J1wf9VV3R}fS6aJtQpsSkWdgj)*;AT>F*_S2Mj(QC-45;hoabI@bmoQe2j!($4550uuqvPN%JuL|)YJV5@eF0goK=Yd8N#TpwJoSRcnP#`;pjhusqibfX$bqacyDoyVGM2AR%9~^)n zo=KOAMo>tK(k&q-I$8fwb6=(?K_4IG_U@bXb&**6pKIULr9bFm1uOsVsx0mL5ayi} zOaZ84W^=ybhMUwf0Zi;X>pL?4eD#i`t6eIo2(@J)+A0}bFBt;@`^Vs~s8xIF6@W<> z*nh$CRoY`Pt?QDYbQQbv{j|Nn97;--bWh2k&`bCk+&h1Tf8F=`y`sh-to8~{TbQvo z#JGtpht>p~U(J$I; z^_Yo7b{*UyC;4u089)$DtP!w6dgxr4hN%_qjcdI7&(9@#sPYFN_ywPL&z!&Hj)G3> z+D?SQ0{kkZXJ($A#}xfO&YAExEUXb_r}`GKhzFMlIRdk=h_`+w=Bk!}yL*Q^275B} z_U-rfT{M>S;ZuFQpKzAsgS{MYG|+ovdSON59et)i54WwzMHg|fiv00wJjFBSRtJc| zYIp*53GnpTbOKP+c*S$5MOcI;AZ<)GM6aYFJ9Pc_pGok1?`WQxuGPx_9kMt5r|p{) z;ezx*qRKYCk+(dq5pP@M0=rA+AjOG7WG+4hR3TE9dz-NXn?N2T{D>w7ulJrBv##gq z7i%({=gZ($7FqH^)qCmMs`s|-R__rZry)7R=Tjau3Nud5(>p>!Ldt@cE}6!O#4JMi z;qMk~0gKH!gq>k=@$m{f9n`;m{eqE1E$6^YhRl_#SN*=oAFzMGMtuAB&8bFKQSsTS zpQoqi-f};{LN?7|9l5{fA{8i75A;~m2yRATOBaIEa$gfLSRPZxVEKsMSY6buj2o{% zLGF@*wXAMZe06FdDiKq4%}y`OLVTP>}Gf{FMvqgTXtL)O+R#N1ZDAHb;+uWi0(5WUfS*90f z(tq9R$a9qjcj$c+b!CK@KI@a^tJK5Yl(rcdZEtU%n3(wUYq};AR#d=G{>pqCb`qc z(2^1bW@6h@Y=BC9FH?_?{o9nAdEcMvfrd&Yen##i>gVBqoqG0IIXDO@^}3BRE|0|j zj^nufH0bD^D!!w`4SIHfi`ZOEzaptr<<$adt`p|lnI{D!KKSLX??3JRuEASU4>UXc zpK;&j2l9jA(`e5)Ynh@D6+D(&>nLr!zC@pqM5`6L<%LMbBwr$kuj}yFvvV-IANWVJ zhc>v1VtbrAlaQm=ZzSzgCp@zB)FWZ=4$w+Lo$Z_jVmXB^UNkqZ0SPcD$> zu$7ur+4Uw1p9iHGwf+5ifi1`b{^xnu7zwC{4RsgL=*^Y`i(lWa&IfrF87L{r`2L*u zzj8N708@P+JTgM9bB!{#^Hzqmn2b#H;{nPKdRTr*@Mw+TWlJv40(+M|5ygE9294R} zFWlm^w8gt7tTx$77545kd{NAx3t{M=lTbWO^rd_+H9XE-LP6T-nPMxgP30bLX$i1nA&o=R_W}zr3Rwus&K;Q6Xk% z$QJM;@n6a|?9yZb+Yn;<2WunuVU(mlT+BXxe!<_F=P{cY-}CJ?+^z8P@gYDG_pH|! zdB}+cFN9p6qodpWpSGxM%O;5T!j`V1?T_SbFrcdr3NVI7=Boc~39suoqZ&JY`Cdl; z2~2oWf#{?OCJgo9QJhuR*IkXyFCWB@3Pq|IW0ShuDTp0B0yd=Y>htdYCjMu=8eApt zpfzWd2D8gF3pdRYP6Se<*e+%)O$EU;;E!W()F{YNBK$|oL)du%9K_;nLVx_4!EcbX-_VYNO;|CP>{;5>HiD-nei09R# z2W6R9e!AE+_h*QIe}0Xe{yXn(t#MAtU!5h=6GCUwEx;tOD+qe!jUv zU~roEHOG~woPCX+D!CC^S3CEV@wArtoY5o*_J^)HAcr#B>1?wgws&UI;X41i#|-=0 zM=UMvizxZ;q}c_!2$tmC@beXV^TVd(N>zGDnh_C0&{}b6NF>-F`diH2oC^y~VC2^u8yS}Yaw)8D-&Bj4B=egea`NROm>Wte zI(Ka%N8srh8b;y-N>FK|=+Q-g;qeD@tu_XQ-DFSp z(uV7`>ix<&Lf-6XysTA*$J;`y5bTO;1OCIudDUJXlWPbruBeBq?IoAg;DZ=TFtMQ} zt3GHyIdXd`_ig#DERksghF@CH%vtJQExHh->d2??fF%6Z6+tW|Tq()F{{}`-sqq!N z{JCr}_9dkxE_0swUl&)v?uz|I;~1p6tgzsThFLc9J@qQh0UG<2AZmOfoLB-{UuoE% z8~GdZI)EI`IrNJ$r_Kp5sP#7p^~rcfD+;#(uj?qy7n6DpHDKvs5kK+}iv)LSZr&!= zc0xJTAaJr{gg`}g#()-hOsVnYoR;MFOsicaj&Do8bm=wT&2L{>lNu@&r7IZ_zJJD} zelMC`!$6|a@Ks`s78%v^$2TdKZ8$L5v5&3=&e7`qYIfP5F!;JNuFeFsZ(-h^gmNPu zp$1s+Bz6rK5SY% zbmk_-@}eA?<#tIi?ez$UF*Mc~ucW=sG2msZ-EHP{##L!slm`?^(n^x9#Bb+mUSn|$ zI=_SM0h7i!QtTzjf(&HEhxxk{GhHMF*-|81Z9?zh?0{C==zbKEAbpQkX=*t>!YqQ+ z$Y%mfT+FGa!>n*44?~GPgM^>+Wd-u-)+4rMF2MGBAMT^c$qSCDsb&A@)QS~1R+F&b zRj3`>?;^F1%;U8PYXQkPA_w^zdN9QmlaEdzDh^S`+H35A^S+Z2XRefY{^d zPlwtUhR;pf%J`ydVi_iGsP**SH*$lsi5=!E`^^~|G0A^vQqee06t?sSjY0zw)U~B> z(v)=5K!SS}Z(Y%El#e@oHTr)T|Ldj5#vi zxSNp|(e=p}*#`ckaBJx+Qeom#6LqR|10ZHPrSRrsSHct}JMSJ#~QNyZlR9+#=w2^%X=PkFCse?<}x%$#WuxqrHp@5n!>? zGFCqUws$PP<9E~%4lW5W(rQX7kLKScqIfctlWj%@Z)oT&8s{l8;;;5+)XbE8(2MFr zb8syU#U4ndJKZo9a>c|-N@^tSt-$*lTU%K6eTUNS(}g6S|Me@ikJ$u2^1I1^Sh#a3 zCz1S4T+4#hG?(|y_Z?bi*s=WZ>Q2L!L7i*`c2_jLy#hCM8{2KKct-@I-GFc~h%@12 z6{Yz(b!&q$8Bp&D-O?r0IGiaZ$)*BMz*qo77>QO0``G@?H#<_UIXxJO6-_2<~*Na(9<9csrGaSt#;|5gAqP}*Qh+TuL8OyUCTyQgeT@o%h`vg5=pteidV5c?McMelkwX{3XVPBOs{SvRXg%7{CQ?`a>2 zsIc$cYPvS0J+=R=2E~EjO|koX(SNDgrMiD~C{gW3AB{k>o2a^aXbG}}FCG6l3s7FD zSi8;xJZ9iq1sJ_{%0)1EIROGqqB!J>%a_7rx?=Ct-V8ry51Kn)JVv^KjKKTHXe*yU z8|_GMhJSIo@*Ee>2esSoUh$7gn4d)2Px5y37;n@#3l5n4e5*avRBElm>gwU63!V;y=$Vb7le6m+o@o`CF`p-BED z9I#!Z#ZKl7Z){@ZFEhUu=}CRS^$m?7M&(-v+fgkZ>t}nNyTm0Qc#_JO&kL>v^q>6pA;ulaHtw@#ry0*AR>Yk zFzO(x9@bYA+E>X@ER2_hM>C87E+r+KpERQXW4%$IQ=2z%szTJwwQ z8f*{yFD*(+K=z&#=dI_c6D4w@h6m;v1W$*<-ZS@&A{`$+X~!lC5Ph>u>G(v9xoMvg ze z?2b4B+y>1l+S=4!n@1( z^=+?fOg6&@r+R}WM*e-_R?(ozU;UcQM0ZFV^g}eAJDISudZEEJuuFMNq;-vvgc%fT zFn`WZonatjLcE>@sq*lX?ezlDmmIYiNqGGds&MpceU}){MFw=`JDne>T_Whoq50fSi|AlT@BzZ+LY} z5~q~;xC4oFE%N2R<4q7cFL_F*TkM-qx`AyWcEL+gUbNbOPG`%p#o|!}p=SlM)f?7O z?+SbQ?p6EfMAp@L;jz`taMtK3F49N&Dtb5$zQM^P@x(IA342$=hQ^PaS0)bCVz0dx zV{z<2Q+$$d#Cw8X==Kk2(lGjUY~=EXL>J(45x5?ZA0;rLjvlPvAL)B6k$ISZ2XK-2 z$UKevBGmnhkaGStZ*Kb^pPhm;W6tB;+OBVz)l~ZYe1s#qZ7}#ZHFwP)2t3jFMs>QEjWd(dlfq_4&EFR?JGAQ4H(x%9^r( z15EmEbfi=K=)t)d5kcBKQ9weO?Z$|3>bmkkNyb8ajLcmdxoJmf$6JPK2%zb~$ntxdf6-Jny4=pJ7YNNJl2tA8-}YL_>i zIQ|AEo(@BhQX1Fxx~xrmq3&kAK8{O-5Hi*Gn$>210B>HVr4;i(#sP@+NmEwQcEM~T zylY>|5d^O;IH+f3EN)_A%lEJ%ze4WdRbh)hz_41k~i=y9`6oGXk)xG z$Fe6W(4$}wX^*C_3ZhAq;eOmReqoc zV}|Mx9@jpKH9MWns!IsUd_*s-$9)d&(#P*s1`^DJ-$!cdxfiQq2&BNZC5KTaV9AdO zV?*_u{$(5o0#;15rO|B?Zel+TzKN%ZX1r^=Eh}r1{rdWwDBA3Dzf?^AleC-%kQ&4a2RbxcqF2*DTuHJ-HFsVnOhzI=@S+N@eIb8?c!-C@D#3} zZYIFI$>a4if)1a;lw5a%6f^gya%O~gstDnDfLq~C`*}j{quRB+ZXmGFq*RN5X6|SP zANu^I-$>n0S>pcK93CGts`y(|n?*%LJ9FMPwftwk9bZs>xp#Eaoi$oDz1s_i@9-!^LOgaPPKk&@ujO>} zcl4S6NCN_zs#z4OS)W8dai5d|Zk}NK1}0q7pBO(WdO}N&P`ZAtMlvu)>aNAJ1ng}KDb`L&;}&*9j*FBSBf;HRMIoz0MF*5e8U}@X zAWY^3_#^Ha&NG3ZAvU}A_g*gQZklxvD25nno;_Q%357T=UP1Jp#4aU zFN##AGmb^t5I)*gY`E5EX3AbqiO3bZquWVE*q3()O({wPs^dS}IfI#UERq(H?g`+U zO8xNu3p0qr?^v$!>(3uOz5j<4@X)tiW<8p`gb(wN%o*_!sk5OeC*}}6St( z@nfJu%ys|eFJ~AeAU1vRzEgH<%>eH68^VbiH+E^4w61Tu?y1&& z6N_l{NYVA|9f$(HWW1U3wsJ4kJo;#P!}zhkHcC>!<`oN3nk-Qr<;bd`=ePWnFT+=X z7ERV2lvRlBbt^+pW?ko3yShV5@0IZ972Be?WdJ!I6q@U-dj z0L|KP)^^qyIHbahAdD6JzHJ=P%S6ZZ(q{A_HR+M!wdv9K&eoS-8DmILx2C*p;PLDN zyyhQg#pGB;-`lRxGAG4Drp;21>L-I1OC_{s1by9h(5Dn7BzEYj%9c~6W00^^pl@_& z9drlk)}a*t9dQls7}O>k+M@&`{ZUr6h?*90zm85#bICx%@P>B>)cpsPqV^&9ZxISe5qz)bGer7X(}gT7{yKa#MS zV@tj-_FJg~3?LZ;i;lO;Oi3y5$G)55mz9tA!eyJfPhvQk1^k9O*cf?c4-(x;J6zKSNm!dDpM`aga)C4c=yIp-W~J7B7cfGj8h{7KSN6L96(U!uQm z<=fr^h$vN>x%~LAEI>6EUQ1zohhygz+O~$zJL4>`G4?kzS}K~7D7D@cB9ArE<-lXx+YDg?nZ z(!%>YDKS%1So8?Mkzy)79Wq)pa0K{Q>sLBC+G%>@n+YM4@W$1esU5P5Jr6!bNa6_) zM+JS^peo{bBm;K|z;c<#v;Ia0pPv)2((d&uO+!SPf?x5Fhe&s%0Ly`c%9^{D8zK(@ zkA%#?f)2wZQfG?XhGHk|N7258*wx3=audbETD`l+Y?oHA0uLE2NDSz4KW&oxu1kYS z4c}TjtYjBeQ-0A}ZIg@$3+VjDm$t=aJTg?TpW<vt;Omr| zovW_6po=BFqQ`Kk$j`*f9qYb?_jS9+Q8XOSqY~^xpkrlfj4gQi*?`@z&a{V~`M%!- z$Iv)U*f{wvIUx*2ppn}ruVGu>xl6FqXPsMBBQqZ@F!W927Y#ZA79U)$%m69Y_M)h= zLNo$G>D|uZ@N7|k8?}(QnS2L@OYsR1xi@(}SakVJ?OTNyv;p_(5bsx+L1fd@x0Jf2 zLQUD=wXDy1$;8#OYbm`gPy|`d)VX!*qC!yposX{zDuvi&Jo5}H>ysh4^{%R_s;`Xh z$uhG8At3S9D6rc|4_wROf!;dPQn~rkb6-K>CET^QWHwaMsob4u!}FhwQ5LAYexy8%nL}v$gRW;!4Mj|8M;D+=tJj0o-^auFu$_q!3!tB&oR^S zd?a6-eMjD3tVR&*h-Jpag6E%qY|b`82CdeidS@5H zTt!_M16^!vRFd*wHO1V+jrTBYh2-)y8GJ}~uqoH3ZA|3w-Y!{JACm@pr{gfV zMK{Hn7o|ma_9={eDh}#UYxs=0AOGm%v1C)h6Urd`jv`!9SSn!xcaow)hgyWI z1P~dJX255^u=MIy=&0w2OqXYOCBo|NhCs~j!V_}Am|a!^JsK$JQSR$pAY(b~cYo{! zt@c~fb(hooH>c~!PmW=9j5NIREeCVw$xm(2ULUX+&6l5_Poi^|pQiQfWXpZBa%o5n zf?jHhe`8^D3e1bRakk&G^{A|+#KiBWTPWD|8oj8kUsdJ2YJvB&Q-~;+OCs0I=r|kZ zz$iQlSmBC!-c+3jcy$QT zaxQ{`wm-~RfQ(KK#Z8>lsv?>Xnn&9%Uq$_PlW*y{j>2X7;hErNPXmeds%(|Fr5Bkb znH<(1_*Vx#P>hAnd2fWc9`>5FZXG;d?EjfuB$plgY(8g1>mac8k!|-v@)a71ep`m8 z_iVuTW*9~(0dC0v?IHxOtmB<{0`0=?#|o4rew6tBqb2ClH(b>=%b%=J4yKGH1$W_b zC?7%Kin0=Y?L1>!zBL|!?4ZK){Xf86l|nEKt8Kpi0oUK7|2M(tFT93+zrPxx0Mv}3 z0(zOC9i~6s`Z#hCHp9_$e*1P0z+LKW`90J_At%(n&cETCm%oMMRXg;={qc}mPgS^o zL)XnMf)tyBq%Gt=y^>r|r}o594OeaS^4i-Os;%kNnX?-^5$_#;@x>|4q~{0CSHG9s6x^>THfE)4uac7%TMAMAwFSo?TSM zU)Rv^?!STL7x8$Xknzld9t$-3CM@z1O}T9{_nO1R)&6XnW**L8D3Np$Vf>stA(n9M z@Xpcm6ki9$2bt&I09uopQ8U`&Y>|lVOFKpQ4ZT;!NL|Um`|o=($TTNaZfbfO0q)%>h{G}kMQpKkZ{6;y5 z&ceOGEBW?_`S!nO!mGiHMM5Os@z&!ACVZnD&>Bne^ah8VHOK`@HGLnOGJ1H}m*&rWpiFCSCqO zoJ;P}-|FvsvDV*fOk%F@>ug-qo&+R5x1B+ck0d97g-1UtWlC~*UVG0o^Y4o02C~m{ z*sgq8!pQq&x2NJg^|)tQ!ujs+*1*VH56h`LXn+!scL3c_a6x(JsaE2{wWo(|Eav6M zM%`!k*v{?_`+-qAQk)oY>b-KHKXs+Cu$@j8WdD-rM!~ z>&Vxb()6Xu*&3GxVnfTTJ}x+DPx{>*$_!!#CW!ZzywKZJ#kzXfKCU^whCY7KST*Ww-d`c+b1KJM{7PfsdP z91#L z<*TfE@bKbRm z3J{GlAX{w%2Nle-0z3Varm07YOdO1H=kBjB%fB3Bwf2aS>8bxeWGkDEDAWT+)Nr}$ z0uVzm(fX*VxY+UxW=HM4-V$o1GH&Xv-0A!|QGo*3i>?1|7Bjiqu5k(2@}r7`fL7mW@a1YeV{i1f?DLP*Ze6?Jo?il zVFhZyc+=ePAJ28>U>O*s3ImUKx*(%fIVl9JJUq79&UV;t7mY@cGN1moJTpwnJEvI- z)6RyTJ@($~ze-L<1}gw1UunVJ+yP8@^M^@^28Jy#Cy1%v*zX`;JN=FSVzjZ4?_x*v z=g%7ZUhz=t2NhV6yJ~Zw5FsnW9;$+#dmm#M{sL*kv-9musU`sp-km~05kA*(7pJB@ z%P;(b81Ir-IoDRTqs#LU<FE4^7Gyygcg`6W0H_yCi&xa*9XIz24SVijHKYD@V zz^q>Iv1en1Y~hVZ-*0N@wfa3L5AM`qXT(*a*^Tbj@$~<3*VSL9hWx9DWi^-RS z7g~Cb8~iR0P}VyDD~9r&V^S~f;s|do^&6d^@f*GvYy{d@MPQ#|hiyzVUvb7BED|Bo zsD{&&F^u2~nw|Jra>BF)hmv>$&qEzSag&4^XYMJcDZWr9*xL0a-Mh^VX{>`7$ z`RC<;Fnsa6(bp3uRziyZ(Rr}oVB2{d98AT7+*}#V1+9bOXm2k+Dr#zC1|F~^P&tz9 zWHR$)a$zBhTLU^PzI=K7rwV2(EwFC+cg_0Ew>XY0{#u5uZ-3Wxg8xFStIV`!y%x5` ztrx#zu#iIcPXXyqY)lj`m9xV_itUgVpus0_1Db|)G+C$d>XxR%)&+JkJ)I{Ok1oT- z8eIOFZx>Qt1&G3TV!=>4AlP0x3z`}PFlF}bck8j)f^73dNq;p&j4CdFZuJuN*WR(t z0=l5}NK_(uK#VFQZhNxO?rOHVtJpm+%byE(mk!*d|AkrjV>y2^s2^{kWPSxV*fiTf zgTTFbm9MB-3SnljDWdg|oh$1x<~&DS-OV>I$GReam}zR=KDH1sF|*?2ztz^9fMELW z4b!ZlJ$%1fm6zDQ?)8y4+)z~_X4`_>mK0TUhZMv4Q+lI2CLK-fVU&yF*%3^Wt1%FC ze5?SlFrn6Sywp4`$L~_uw~DxT`-6k55Z&q(u48ySK-~XOip*ZvOh}Z#Hz7B3DJA;- zzH%*s!Y;;BqW!x1`)7E6=J303;R$(Vs=mFiR8-7wlQB_T@+qio%oL5R?*lim7Ig}e z;HD#Z$rGVmWziAZsat2G8{fz>k^UW*b)k^23zz(Lr_NKd|H<$pGMqkLDy@<9K24S? zYx!3dl4YB~!@u|F7zDN+)Q(aira5V;W7KWcs(Qt>2+i}cjySxVkq8f#B7GN-yn)@5 zT3#@-GASYs%_=*k?0c->YuKvxHJJJ;sD_rN2>=wB0lgSopL$mZ{;kY!lIi+w7BQ&3 zQG5rVzz%WZl2WYZ>lbyJ;l9j#*RK?}Is*z_cI+u%92%RdX@9|ssvP17w^4(F0>)Ox zIdsm&CH0FMY4GUn_4~0q6E=zfZVjB@m;7VFc9LS(evk&kZRcysgaS^hVxe-Fd3-bU z*;to0x*8^AX)v}EL@!-@((LPY&m9cFKurS52sHaRw|NV>!7!@#Hgo1^E6PJU*I<{Q*sT1`xsHN;nv6Q6#F z52*^k&A>wp=K^mIcon?)n^5Tu{@5<)L@nVD#bQ&!@f*egyY4HwBXVKCqy!2CGqx&I zzpCVS5T@!ek+S(vMT0EIY$(0P3r2^g$kTMQ6GHRH{V+yyM5Ku%nivSZpfWL#0&*v#T&kz?^kSaFH(<0-Q z%)Vk#-c)*9v$JE|yEt9!iv)aaN*79kYn}jdJ#>h79Ca!x31~C-`Ac+tsIt6_N)-@zps_8YV~}~ltgzmP z?+Ful$ATrwwHUOAF;UIF2+le1qvt&ZU>QVX|FmY26U$by+b40R2)9tJ|FwjA81<|z z6DdYd2jLX|eCmS4P5}mz9O9hT=*mOYvtPUfCHYvGQZiiLNm}m$s?p%B%R|9%^I5k< z{N-73+2=I&a1<{HDvQyoku8sJ{%yGZHadWj5Qsc@55_DLDTxeW)YjAF&lNt}#|QUc z>PxBz&gVz)V{2XytGn$`t$#wQKe0fIrtNtglLM&b(7lVHvtK@S36;v~7ere8r;wu8 zYjdPbxwd$PZgMU_pbeD_NgF3R8&u3`Ub zk9U|_ORMvvMa5($uqA|*aIs90KD^Ul{N2m7t^(moMg%j&Lqyj4CvC?Y%}hRXx3ml< z#9~{T*55E24}-xe?3*RRJu0Ar#~wCKB0+2J{aV4CeG2TqJ@G;~iJae(1_Z&bY^l9E zeRNfIU$av$gOTC~XB0)8gj0C%!+^PsyGU=ObZZjT; zJ>W2}lGX4v_k9vO{^_7i&*deJo9HO*SItj}CS){O!p@7-dp>#1?l6AY_L$>*XwD?O zm$P=4H{gPtOb*fpAsj2e6T&{8C|Z2>OZ4`OyN2{=hX|!W=RqBd<}0&A%n2(h|DAJe zzRY+cDwU~&i407vjw)I9(N-FGW=4dD3Q!4HKmyezJ2H>{{MxgF&d>u=EL5J;+ngPF z+|b+)(E;m@AplaGdZ?^|cL7XDY&l#qH6t(Ypcc^lBn&54q3QSiI2Uq4CN=1fLBMBZ z_q4k`vD7NBnRxYFQT(Jvb>ys*}kQI7DBp70s^>1R<|tT3I52ox}Y#Y5qD+Y;k6(Z3P>C6ZWGaY%v}t5 z^Y!Z#6sJ!76)*-u;NtfztW zQ5q3UeYHR@6kXtNx80y>3w)>5db<-9M@1^}7gkj`P<>2@n@qjOIpzSa`Of8KftRK< z>@0MW=i0RcZG9eM;RTZJao%^Oiu|N6%1ueutwCet}ZIbkYcin(f+KKba*$e zm5I9pCQ@93XN0>6_1*{f`pdtX2vRX9iWe6OFJ?AYe;=aXO@C;;nfsb@zt@3{2~=Na zyh?b@ls%G;?QTgCOx9FQ@al}W4?uYSG`oMky1 zlJq%aONjr-zDZDVEys&hT!ghbsijOm(O9F3r~x=gB21IEM;q&7J>T@_z|w*+qze7P zDn5FlzRo5l&F+RQFKkeOR1}5XXMK9p@{a9cD%yPP&Qa@}WP-H#9f5H}kqk~XxNMLA z`bUrZ(la51A*odJEH^ZObJ?+v6M2MYU$I^NCj%sU?I{q>$`UXbXPb+an%EHkAvUSi zQl7XFq8o!9k+A@0mE!FLV;;wkq^PS&3vpH`Co*_WDzmKMSnGH8jtDwC3R3)VZ0Q;k z7z9c;%jpn-60z&GJyhacBs9=8GHU7ebf<|+*;&ex89UsP&K)nj*7LFWk9up#3%Xbz zg?Xd@G!VJNJFn;q2%fQ`qT2#Q{3gK#zDwq);6D*bm#;n}kY<*5gisGVl6Ma9zvs3h z85CmE#4~Zl>^;tSa1S^I7IG)TZ&e%LlqX_1w?PrVYAb{_v=%}8TPmyXI;`dxzj*z} zFS4<_=j$GSwq;G@007jvt82a`LUo@^|_v;=G`;<;3 zKv$5eMF!_JxM_#hV}Fh7eHwE|o+G;0VKELyT0S4^E`cqdx)+=a%ZJ=3MB`(+ciz4C z;&^q9Fr|6>rKtuTDh7w&wc?INa_2#{8CF8#pa8RpXIhAUg$HdH6mPyQvzOxpFxrtW zni*yM=r_GudY|!_@aXD^6X?~uzEtY*E!&n!0$~q?=Iw7c#~ZAbcQY+Swiju>JrH->POHh>cbg4}>hm@rLFU2EVdUr1v}JXlIB%_M z3WhLcTi7791g#vtd`hz~Lg)X&*$ErL0jKdpml9R7kcRFpY(LRij2!-L%>G*>RFXp|Q>k?uwI z7`?F3+IKMEOh~lu{SA|mX0pY`dVCBGuWw*niG+t5~w_ylQc zS4V`0J(Tye5$t`)bb-(2?{^gG95juK#U`+Vu@|#0ap9A2uu`w|5`Baxxuo>)(G^tM zzb6cv@vRyjYvjpi_h-Oh$Ji?B4j+V~;a`>~xrft@UHRd^k*zQXr0Z^nn6v*QlB%fH{=_@j~njEyGU01Lkc6 znNVUek{M&4L@x2c{}ICJJPYd_N1gO2s-E=CygxMkC)Y`Qs9gc_nb-KgBVE-KN!iHa z;JNh`ZjxJB7EMFYZ=?qdP2yh1GGmd~?%ciLM2)E6Z;<;#vpMPgQ$#_vfh$RmqkV0C zZgtM5#wB~w=|5Gg6p{KzXj_Gxif=H({*&_x300DA_B@HR(ubj$o*eLUp^29*_jk20 z6=K(x=X;CH^{T7}#V9SM|EIFI4y$VI+DGSFbf|Qr2uewdfONN%bhiisQU)O)UD6Fw z(jYA%D2N~_jY@-bD5-+P8SMSN@A>_{>pFj&b?s|!HY`|kK65-{-1j}kGe&}}MNh)4 zlVnaVb_+^qV+8{%`&Eczo|_%sjp?>I%ykb2o5wxhaEsUlK9|=HU4Y`D4=DCFSdf)7 zxQD&UDtYJo#u7%_X#j%-YAIj_;h%6X8r9U!MkgNUKB(3;mbxdzO$9~IZ-+bzBMqc& zHE#L$qgTEddiw%)<_+Q5#tiB*w6NoUBZ6p*>TDw<31-jU~N~byO zR*S`ii|1!Yg ziM>s%mo=*@w1UV>zELIqfBG^Ae-S`vOdKsuXM9XIY-d$N-%v>s1w%B(!wBGK(MUlr zf4Z+22UCEwKmS}x;{Wm-dzCvkX`@7rQPn6=ccgxYuL`|bQQV!AlA2AaKO1dwI_$)y*1h1@!^wphyco-GKg z$fVpa#l_;ob9vp&fy+VfT)pRRB@pZsdiU9d>5!&8-;}Zi-@@x?=D^(Htp$>}?X#-K z%;tBDz0R`Au05y@e{MlqqD|z2x9ZWx-azJ9Vbn6QZq_mWW>n9}th`xIMaL<&-$=N{RW*ezLIFOl-&$dG3ZTSq_?RBJTZIiXJ#~OY4i+ zZ7-yL#B}Xw;OEvL#n(uN6tf7?oh_Q=Qmxz7g0vj0*J!*=@QbV?r9W(6t(W`ym;1%* z=kJN4C@@-Wd7Z>a*ToCM<}`oX1WR2{-1*3zc&7e))%i|2rQ%hB7(QEHCef|?I{ldq zmA^b`G(-*Gi-;h;1*md|0D3>CgEq|Lo!Gvu!xwAfgE&(6RN-Ig|26|+Q+EQxq}(1FdG z{Z12@2(BF6HUY*$y3g0I<7Z-%0Ez)uU)|b-JIhgtDS5R0 zqU1_54-y!xqy{Z2RZ-6VcW!jD#E(+CF8VS4bA$Y@ci&>V`u&PQ z320x(@cY9sr)KrfBf!@W!8LC!tFk&C^YvdMLVbD37N&~ zygWs(;yj0%k&PJ&%XJ|G&C4!wVtwdZXy<->>`hBco49m*bmU3cp2TUi{PSnD;ndU= z521+LvZ}7`_|d@z1{xg~7sq7^qejL#%x2%`^DOKgLXtW~$Yo)7sdr># z*F{Cbb`nz3%*@RAxVZ3$h{sSU;QeR&w%fA%`Mu?+Kcc~TfKPDS4kx=*<$cmVrNJ`` zoNSi44nH|9RrdBK>i`dOIg>uM;gZL7bb$uhUFd6iWGFuzavnW8jg&zrPjSenVMoq8qgNzY*WPJdpKs zeZ9$Uh><HyVw9L{i@r6%&IY69ya>(>KTKreUZ)2vkReJZ%?~ed+eQ&|tW`U)tn_yw3=hBIF~8Tm2036u(9l+%vZf}(eEKb9ad9z2!uQ$7P+~AMci~J`W~d#wBvDXSM%Z52+A5jocAM^E zswy;n>Ewx&&wKjxsf$oX;tf59#* z`nT7yXD-&xDr3qzdz27uer`Tc6)MWYRv^pW-&zev2oM(y^W8@@`4`QAMZ_Q zG`RkHL{w?XX~yuw@buIBM~Go7R?*)%E=f^;-eJwhG}wbICVnxAMl-mV*v&gxEs;}K z)cQeUp3~fxVsA0g1g+p|($?!Sg3#6B8{D@Ui|Md@e}k|1)E&P2N=j9Oyt1pS>(#4Q zaQvP5+O;yH`q%mS*98SB&+dD9{awlOePQtx{;ihdK112HC?OlCNb~NlkJ^_jd$iM| z)OLSA#Y}Sztv`0eKQQK4v(Axy{S~zuP7pJE5qYBPPAf;Fv6kha87P6*lZtt37%p_s za5NrU)7JrNQTxc7W3m)2K5Xc7@EbJK+vOiHGObMCtD(9*L5Mt8sc2qwPjf>{!v3G= z$do<6#Kz{*ls=1y@3vM~SKt3RIHb9lUXJ%#? zV~gtQ$bA-F8zJ-1!PD2a=x9XdWy*HSJ*))>xxQ z9a;)Y?HYtgUujc6LaV$LL5~#E@5o6Cb7Bp$)F3&Z4wM3@ICNUQtE{wQ4xC=dAw*ro zvt16RZ9gI>6Qzp_bQ&b&O}bFZRGGG!*hF0^g^vb?N^X*nkihsCj^rD*4!3UcrS?rv z)8}6}fdNB5X5YVu&OxUS*>Q^3BDv#k82jP+atrHg zxl>|LgfH#COCf8Ycz!(h6bG{uStfXgVU9m$)r6Bazbz6e%w2mgZu&@b&q1~wXISUi zD_nGNGNq=w;bRgF`By`VTf9z^|UGynmumv>b=mjt;0!35$$$fBg80xVKPzx2mF|exDz*kNfwm6VtmRE@E; zxR}kvMy3qz*wK+Qq&-#4>&@G@B8kdTQBh)#e@wkLd3$_(oST=oBaNaJcpwC|Hm4_l zO^l6oD@;LJxYpkDgUPMuvHZkmaqa#`_f)lR;B@|sNtb4zRK_R?J>Arz8I<^JPt^5* zqsxcOF;Y|WBTD5ddaaa;LiUVnDngRUwZqrsDSjVz+5)G#U5*XHK-RpMcApr@xVRck0!Coxw-%7RVwDoX00dDI3lFf zpUCe^+Mr|0ROY+f@tKplvt-CCF9-1X3sBo|_DB^c#R!MfWw)G3lK97dzlds`i&3JA zS6hx)EYJ`iZqAP7Jws8v*DG;COJ3z^m5urMet7$EZbsKadcO{(HjT{_>q2*ZUmGyD z<3X|#lb9n}0BTSM`>RHyH(P~?vIaeo&1MRj2{y6`o$m3hJ~8ZJYRMgT&G@>cP+q+p znNe7Rji_gratOl|IefekZR3rl{7a8i$Z1<;dm8fsUrH-|8TMo3&USrCW&BUH#!s$z zh+=%k+4Dka`ThWURIeAYqGCR3f3tS-4jU0eb!?}25k0IRT4>X_gu(NF~a%$#pl~DN~%+v%RqOR`@}R>oXU@{^5ir)IGNi9&Plv;tP*c2 zMc_|>1*D8lK74;5Mfp_`;pp(E%ZA^U1KeT%YWF99WD7*K(1Pr7kN{OG00^6ps0VV zQxO$NcR`abr!(u91tkNrit&|~_0HBXMUK*|=$j(X&t4La3e{1fkX39SZ^PT&=>`om zBmJ1R14;aR?`7oIJ$poJPnXy=kd25}x%zT(HrKfZ{I{&DdE1(O0Bp=2xunG+L|!Z>&{D!h3^hjoIinB3xn z9Z_H>A42Aa+i!tLD`j0kWBZBw1uOwsnM03yJcnzz5i~4;WB5|i9*334-bZ)j2EeITi!3n`~zEquh-4{1%PvWiO&3>QYs5qAQCjS72&2#%XD6A(U>mm5Fm_Ey26 zLV~55PZFD`m=aO-R$5v=>z8#rikxpt67e7@d_{4BW|+Llbl}$KuBS)2Bof*v3?v@Q zwKqjrx+?PGWv1ZPl$sxjZ71)Vd%XUJr1dcGbV)@LJ?<1zUlzI)98Zq*2!X56v_{3f z39}w|=RuleLPgws)ovaMHXta!Zdi_Dra#fn&MHV#AJIL-VQ)&pcA80>M)D6C;lG@# z(`F8(Rv+A9E2r!T6ghY!i6H#2;oJ_j@WU{5wwe^OOFQDRUD6euh2@w44bNm$_|p=50tHu(>2 z{Gj1%dsk!>g&?F@ok9o?i8aacPwC%}a{z52NbU1#XpW!#5_TdiM+mCbA$fv#UhUuY zhtI^NLJ)+9k1w@KEBHW8TGaF!`Zw7@S}(8{O?ssb(+@|C}6(5$wOG<|DXhZ&yN7^7D0}KuAP#n)c+##3fddk(^YaN zKp~Ph&Ch>?w3=y{AIwUQ)+%}#p%Ekv4C9{{20Tvg3lG>39v$;6(tp3z{wlVJrvo`+ zMEhq~RcYo|6&J6~w}-6b)YsR~Ho7S=4lP||NmK?3G&wW#`ZNy+;=!y9kvY!4e-c65 zuf}%^(W!ZQdOmveNLzap=#YjNR5D6Se>m9qa-Afsv~&Yn0McK+{G#CC9L{ug5#eG2 z?SQU{&sH)Yk8*oK_0P?FpZWRuc~bkJJa?>AZ^VwDu>G}hBhXAOO--qMEg5O)+}zxZ zj10m*D}GNe{?CUu=|c}LcXxiEU8}1aPVZru82s{=GK2VpgvHg>l!S!92?Bh4F5`yn z<#cE0cLY;O`EK8CEG|}BO7j*!YxT!Kp-|o3-O$+VFBC^#7JcIPEFmSu&dLh@!agwe zd+@TgrTI1RpEZOVCZ?cBN=a#Onifv{)!Zy9C|D1G4FWuLPK*EaJuxvc=MjET^^+Y- zJ-si7dn>(5yYR06e=L%BGYbQ1$o_q;GBPrL=*JMweX>|Jp^vs8j&l)$_!mj%B z{6p*uG}aat{uU|8$&{IDdRZUcgy{HEH@CK;EU2R7_jY%sKQY{tJgolxbCxoq1N+#` zlLg!S?DV8%*9-R2`Aaegp38L>mhV@RISg_K3^+MC9UUE2nMr+WtE$>~%1TP`PiFi3 zFVx*-CBqKTG%+c6_56ou$*G;K?tl0oeT<)!lvFf5F=5C`w);esl9E#9xLlu`3QlkIs<=heDSHEOmf%*XD?lLkMM_o&~udlKXurya2yftu!@> zgDsd8UVP-?5E4r1UCQl~00GCfk*@AWyKN0Gp-f?YT^+E`94ifxCK_SMlc~#SkAGGh z{*^6)iGx#^pYOBNK?$w-SkyAitMq|5*^!(Nfp(mHb0=M3t1tDYHv8D@?3MmyFk2F8 z>a`y~#J&GKWR6dbiK#Sidk*xx(fBeMS)fHqKtMo6g|odqd!`yUC+CuDW6`u<>wk6$ z;vVAiy|dh)2DtwwG)Kh4$De>fd-lJ#xBozsPR`_BkY(l<7Dy;5L-^2R^iY(%KdR$9m?Ds}-92jd9bb&&rGc=5SESK{y%rO9mhb1 zPfZvszNJ;HeLYw2%+QLOC=I{@6pyhmZ!h=HD-o`#0Gl~urp z8IQr?;o*si@Z@G@HI`rt^(=9)3!T>m;N>ohdA>Tnrol=U7478UumKkVn@mTWI7gQ& znUaFyO>Hf!uTLmUB#nzBnZES$O~}Zcmd7gaV=$N|kKMy#P$`6jgfyV7od^3_=kTyr zqp_2XP5u;DtYUb0c%ZZeI577NHM=Z(XJ>9UHqB>buoKtZg^%vTC{HCNCAj3eOj9i_ zEhD3dtQ)b48aC97KMI|SL*dQ|+qG%r7&Tp7s(QXoe*GF+y-a*GW<{l|scGTpSbi+I zK9W8$F|oV5yXxN5b5kZmJ4zTv(k!`xgBsZRnTeYzJoEA>I^V;?LrzW(4mhy8#9&Sj zS65f3rO~jkupA^8$TAj}mX7>c7j(_i`togfcz3azG|`BY2zPUHbNjAmsf-v@VmCJ% zpHv_9spD>G(A;C1z#afc4^yMpf1Cy3FdWX+;%I-$?@;D20MCf+R_xl^jsiwAWK4BRkg3D zCr&wEmH8$!v+Zb+CQZe|#je=0vNDKKzh`}Y!TV#b$xbyty?OmQR^sHtM~|MtWKn4u znb-+9W}|S}1+AJ9%7F8M;lO+q^R_I!nS<-5m({S=#XoxTq~T}{!Zrmi=ATd7+uIP| zN!=ytl;nPn!bLw6%IN9of%91<+FyKsZGNk^>D7KcUSalrq)?so_t=;5@nZ%J6uj*RghI2E4n){zYhb#*VfkFpB`=a zp)jBwVOTw_ap8;lLUF765TYJDcwk|XW6X7rFSW+D-}CqMW4yR<3;p}|*Pw9zrI=T+ zMM`}9NZKt2X=&-fXncHp*xNwE&yTFM;ass3owoB)&if1+e90vR@a2)w(Vrw}-pi0v zP+S&zI0r?`t9NK9DOcv_b5@Q68!qNM3gkL&Cn)FtFBqfy)ZL@B$#qE?UUD!TTloSW zURZcI--9UA@8)yT=Ac{l4-C{-RRKyFd~`0NgU&ks+GOMB&oelw#KO$1mM#z_%Lt8Z zSEm}?2q?M03~k|$LCaNH*}$XfTq(#Yd>$>nyAus!ijlH%xaW&8P~8A)baZw$H8yTd zHSVnr<-sCU!-5)?yqSEmJtrle_5SfsQ`ieI85TiN@)`7LkwytX)u zl!eRe9mv;W*RR{ah8E-CD7>=*--WVma(a5Gmp$8>gofB#_27Qi3$sArht2l;_ir=! zC`e_5jfBaEh!!xi>1_zpf_n{xQ`EeJ#NN z&rKa%K(qJZ?&i0e5JGC{K@7i!9LbiJ=H_Dn)pcD#DqTB0<`~+v)943ck*mP zrbDm7^aP6EgD=t_&7PeKvau;mBSfsYmo8-qIMUclF_B39zMHO1*nWNj6rOU`w@s+u zK0G`u&H(#qg(ozB1t5mR=^rcpUnJLbKu3l30XIa-teV1SgFj=ozjjCOwejIvVV3S| z-PSRA?58x32{eP{M|?vauP1me1y`Nb~>r>&W~WNs4&5=z0k57JOTQ zTIK|7Rk)Pgnouufo4UE@IX_7a9GkLe4_*_W#`VD$3x^Q*>53db0SNVOZf@z~K23#% zE3ouWMNJJ1Qajy3F3<*N^;%YizRj9=Rgj;5@@vw$RJVKr5@oNH;xKf(vT z(qi*OaN|5z2Xnw^%8lw_rn&_fpND+Pa+BfyZK<;=*N#A5VeRRIzY_5s#qeQ z>3Ok`gTet$krb+D>ADaxO8@K0i($GubUvpcAz4^l;*O4u&GqEoOkS&C zz$8ze2t{-(JQSL4%4~`Bzu*Txhnt(59;eH?8qDs>l`H!$T`^awf^)n+%|C?fXpCTD zNJt1|oLqj~2O11PV4bH2oZ?TIZE-{Iwd@rbkuA*_i$1$P|L83lA+iG*m;d#3gbt z$KKw4(e?IaR&pYuL3ltK8rlD%1s8!_tL?>yLIKzpq_J!MW#?y66WUk*Up8(+@&KPo zgn%e(z}eBU!z|Zsy8fJOU%7;FJ-!?4dTeY=KE{3FBOV-6!6Ri}6)LE#+=dtids$(F zy5%~#<2I+ZhOu!o6h<5jUXN9*g(w7XjHDOQZER_3N>k2XQ1bw9k9q%1U7gQTqMp<2 zyXn!)h-w?`!P^P_!IO9x&nj zhahipv!w*sRH31v5F+30bkeR2WSLc2V$n2*-Zj$DIA^8#D#?%_vxzp9efI1WwinBt zv_R&mbMwKAE74pDC%+MV>B>7m=U@mk5NIGZ^o7{K$jl5J*fZE<)(Fw7JrDpS&W_!* zwG&*+Ztp6J1DaXrh#2!Be;7Gl_(b%j;%12Z8d2cy$`{*ZoczS3)Bvi)iN+J zFg1M!F$sV_z@??$c6*1#8ScMs*1ax|z2gO8j?3-C=)68{P-3lS-{f&NxV z6V5Kl-TIDOp7pdzK&>dq$jXcxwLbj>qo1s{iGbjC`PJ7OTA)%5{BZZr=Dim+H8(w-8{fVyrMs)6BUd;ATFu7t zvaX3qi*zlf(kteNi|eLjDjpdefjc_wY9JZ0nh}0ad}xSl~3-l z3@*&H#dGY-m&XtoV7HusmIk~$T7U>wYh!a$6gE5b$_LL0xb#Max?AHE#F1+KGIjAo z*%R55D{28i0QR6+MDM`B6*13R2vqcSXgm!u~eoF^gVztz%kJTM2x;4`C{tT z|K-b59Evco*J_!zM$e=07!Z*R*{X34Hn_q{wnd0?c%qBpy+Uli2Q|fcnACY zvb~e6GehU-4}dimk6?P@TK!_176wHF>TTe(ZyD3*pb&kybPl-36>!`jz2#^XcM-N;=~7!^ zk>Aj0Itz3fScqYd8i*cZ_Q(GCRRn=NI8gmRX+*m=vSK}uz<2(+x@za-H2!sjuoo~- zsw(sD`naNsN-v!7)ObSSw0#h+jhU$i?&1`18L&<$gxNX|L5GFls(?O2YW);&11LvO zZvoI3zSvk_Z*FOkVb zz{+2v4zQ1sWOW>m*7*lz~A4gWjP=h=tWNg>?)Jx>xq#R(@|yh8R-<;fKPmR6wkG zLvNgCFVoUSy!m?uP4`)|9Qwpz{F5M zw>Tt(AJygMG10Jpdmxais{6Z4&f3-%Jn=xf;3em)(k1cnq*3y)Q)N!*x8~>KgtzXT z&j*8R%*)M%OA8_C$bLWZ9}B|HX)ivSyqi@;Modh+106pcry6#EX21htRJ4c32V+3s z;WU5@c*|kDFH1t==1tP;&qqkV?-#3iycG8_ged-)!Xt7dhlkLp$(^ld15T7L19&vh z*PnA)XBH;OCh`^fiUoYMbS4Q4wx_ z-G_5ov_T4`90q}mF!4x+c4=t|O4{HsI(xUB3$!}`zX#PguzuopgAC2nf3$|Esz6dt zm?UW7iHS(xqHhWM!E_-a%5* z?+85rH;0LC1G|Xb1j(wFST*BwT3Q+iiKD=oxVY2~Y1I`KfmhZTb18fRGlzzV8S0|1NSp%UJI6N)OWcMGL=UDKsu~-gf|>UW75x_kg~@(c+1n{{ zTGaJ_JFw8TvK@fd1qR1_5@uMC;iK>0(M?680>yW8pUVV%R5+`k+Y5wL#-`C~)> z7T;lC|5B8Jo>+nko%Jw3BJih>q*3U^c#d1F%IpS}UR~dir7sGnMF$C7G-4&6{@~8@l@XRB*ZXo;~ML3z1%>5(O0+ z3QZ=oZm_Y%_Aafz*Gy+0eepW@BF_iH7~IH3v^$Vk&_)-fN$Kd0!ApMZ?0i9Ydlwk^ zLy#TEs5M0G9z59GUmF?76j8|07?r6eJhxn>YjMiE%*O1V-Q?ut{Ta7wv{A0VXat=y zcJgzdvOw{Rl9Cit2fPu4e$8KfAV&gd1=>F|GO`E5FIv@~f)JOMo~{`I8}9$EmC<|Y zK@CZz3=lzAmX-hm$SEk~*>D;cCMJ^O8%#F3u^4W_lrYKSB>*jIfuG06$6@@<_LFAd zyYpAwLG>cU#l`(cPagrj3Gn^kpP)_+n>yejAQDYCy4_P$RFszwmSvQ3ah5GQ*x4zr zs5k=;34}LDdLGP^ABrTQ-YQk~4eU60q(Bu#b^UCy!A0sMm2A!PpQDbUg;_u(L*nP9 zLDYoU%DCladyrIX@jPHp?_b_K1nj$-2760(YS@=u@{Eg{J32Blga1BB2?meTl+bY{ zG!!{HJk0qx+4=J>WHEYAM&}R&%SK67N*jm_1e@xrDi>E*VPNd>-Lh;1@F+)yhu^`d zDwu2rx+wT9?Inf7XV^G6EZ44m{PYRP&IyD;=^P@lPT47SdMy^!lo;4}q@*`(dJ;e+ zgeqCGonj91az}`&98kh{drVNu2Uy9Dna{x(XbYzBAGpceLPD5WSZm+X2PegD-MR%@ zY+jxfoWJghkHRgc@yNa6A)I0VmRYJ^d-B}FjkdRchxiD<2@vQhpb9oJ{2om8Ky8YM zTTrqX8A%9&G6coZ$55A>_dUUM?QWCDx#R(IA$xrjr3hJ^`{C{qB&{x8x>OreF>w5` ziylA6aof7)8*Fmm5tA@S2E<&Md@W7O=!Jy^5C&!C<(uBVb-24U_rI&Ea%$KX7+#TV z!wrL6EDUQcihT?g3{sXaG(dogQb2nnVk(sCvG9P(08;E_Hb#e)zJ8Ud|B$&us!&d&VKllRBF zz5VHeC&$OSW%~XUula7?1RMZWs57SaHzJQnDP4#xOy@aL4=ruzp6KCrh*z`WTB_ z2PU^Y*9MRG-oQ%`aiA}RX_I>~L=s7cuPt7JG&$Q6pe0z2ml^bE)rnA^_J z%JKy{0XW9rqoY$$4y7IRdW3YuKuMW=uJPP< z>+I~bT^r8t!U@O*r&|JVH#av2*b93Pv_led@*r2cqNxF3>wp^-6clcV%n-4R_4aPS z2f;=Jn~n+(cXf9ktr4`KdIYozln6*`pHm6~v2$UY^rUEHp6q?sC5hv?)z#3Ia+cL3 zdoQo`n@OPHHMF#xtdEs~>V2LFfO|}PLVOKc_f^53=h%&CRx&;+!ULwdI@${!#S^RK#a+G9*Jo=WdwCPPLny6oTE-)@ zV2=tH6P-xL+hY&uNe$Lf-TidjI;d5X&s#gJ`?U}SdOrt6yyCS3-l5UU+VuNL+Vtva zN8DPJ#ivxHSBDw2>ZAtsD$Z;Y^Vgrz6OHcZye>X_SaNm?PwuyV$rcqRF$P(t+82qU z+WJ?&AVqM4_E*ySDp}@d^~l*AcQb>m*dBLVw&0E@|4lg}EigIbziItJqyIAjY5t#F wWUC71|Czh|?=Sz~`O5!~x9^-m;lV?mF+sYwg@i+pVz|R?Ru)7(IOb>tCNQl@+BbSNq+N`tDfpulHyJYX>4o}Ql9bbC@~XD92z$$%ff#%rEE zdv;T}V~6h*C4A%Kf;~UY&c@PMrTgmQNX1lh6u0d#KL($X;NvluQ{u8XY*{j-TVjh3 z5Z!&y{GO{Pp~7aMpe2THYHBJVAV74jU4q-JSs9C4uBRt1*!ebn{rYQlm0HAWbGXdW zR6BRYNn~$jLJL_L@g9V&DY%uPs;X)kerE|gR{U^CjSYZ-dqG;ItIrsf-6F+PZ#4CI`Zw?x3RH$X>FgL9>ICw*JiqOF;=+R z(@L3br^IPQy!vOH6r*mW!FQBIwo*$`VxJr4CqgvzU=>oG0V9Ab;)tm zhrL~x)rN z(X$H+3(;%zG&Ekjo6ECWWpPTVQ;ox4PQ&H=ZW)M+e|~#e%J#=g!MI$Hl*q`wJQ0-z zHT+D87e~V0+HuWRm~!_%Y{4IY{PE(&i?uZ;+&FHoPyh5|)}WU!AF&^2=HP&Z&~X|0 zlPAMUkDR3W+R$+H=uwq~QH*uptk#1Q$aUHor=7~Hy?5dTon^ho&W z_$F1b_zPjr_2zitTcV<48q;kte0E*w3UcqREw8N1cBBN5CrgFU5eNjiNDlmDj2!_# zM$}gcH>mQ^z#jZ<>#T=Q(rk9habCH46^rZDt@6NahY&Z(FnF-MBV=^V4Gk3HMV4J= z%irrfstA}q18%C|rby0>jSVeVg8NjQ>tKl;)}kYMcXwAZh*JC7yV=NgmO$0M2U%=> zcE*~gVfFU)=t!%w%uMN#>8`qQdv)z@-72Mp1=im-9UVJ+)(gk(ZI!)Zokci`Jg#3c zIr0m2f?@9$mH6JTe|6G!@;!@9WZ2svF$ognGk(wiXMB-L%E4h}`A7X($*if4v-1>TCH|j3{gqsqn#X z4`Qr|+kMzs+&0*t=F%#z&oF`ikr82c3keDBNj30+prD{<>=|`}_M#OZf{2Xz1yESAI6YHPmMc9j979e*BnkTwiR} zWA*dvTX%Q&fRnVR#BD~(ak&+X(Spua6)p?$Zr_hqjN}$qyxhB-n@)-Ch+>>zL~N`V zej6tda1vuPaO1{}0@;L$rE0KbB1E;emX?t!&k{x%{c4>bNzg8u6|5R44c2(x5r05fBwv* z5Y6Mh@)NE}$^e@@MM&G)v(ij+O*Cd(-#0QgHWnhJN&g=Y^00(*^3V6LGcqy?E!UpT z&(Dvj$kD-ME5z_FRc*wRU*h1fU7sI-zZR%(fAW_vU&_eHtWLFUtgKK$Ci)UgJ?2ZqzkmN8 zwm+}By81Meyt41-nXU{`{92bUVKsp_X5lHB2ni{v!(VskddIH2-mRvTqh0vLDE~MO zzda;T!8k>dM@6qjY$F*hTVn;Z@(kenO7MjJWsXypUFl`K#DNM|J6YMr8ZyygaD>v* zQbBzkt(}INlGI#_T+_XvlBjK~*;H3oS8#0(r{OyB2x9kLurcPqYfYH7EVkdiK=n8; zZ;5?~O=~@r5pR`HZbYpN$NE1kSp0v9YsX<+>Oz>`8Mn;93);{*OVN)zgHY-*H(A4BHaiJU0M|8PPYb zpC7-VTBbBs?Ty|1eyp!1H8nNT(8nDPS^UL;BPZt}hYS{3l7X*)M`It{0=?(S8@{9nD=9a-|xYElBY7N?lu z`SYz*cL1Ow5wOq32sW_R1t-A-_sJ+aVUJQ#-aqZE9-h&DzCT}z-n+Z037syYt*t%g zwc662B%#0*Hm402TNo}|?aoq5NlD?e>9^lnG2P&7yozjsm~f#^4rUnVx;32=0%?>< z{=KqXLTznrXlQ6Xy>I18;k=8dxcHNVgfVb0exKbjLb|62&|7DJ&L>K>T;6+?gg7saP1hwlc!Iss;UYL3rDaVzw`gW1fT6J z#f%spOVx=la8n3c<#e{grCfY`C9(-BDR&{dU_m_AuKIcq}+y+eB&h*FZ1 zliOJzvitGl2RxyE8Q$VT#R!K?XwCTMd|{hTv5h+szoE6b+HV{JVcfFj`3b}-JJXr~ zCzm_Td?%zi2PStrm(B*7xtiTX7NoOEjW*5b%IYIF3eifc1O^7~;_-GrrnnCw3Eo27 z2eW-n9AMNC`u`HBz*Ae1e*`fDi$Snq#7-9UbxnPKd^sU1iv9NO8yEp3S&gk+gS@5A zw4j*C%gBdO!QUXUptbTu+el0_hUuZpbD% zvL)^9?F&OC74G_fVttniypr#B7u*(ro{&-P3%H%Gi|3DEzUrOD3b+O#fw<~h?z+U` z{~|DO`+E?l9<76;qd62XCSS=nI2HC*BJ^;gF(N}TP6uP9k!Mh4HM_b{GG;qaFacSW zxC3~lg6fKl)lhNH+;{-J&$K;1tLvu5wf%?T%R&zU4AI_lxyH==p3iPHT_Fa{%WmN6 z#fyo6ZjYVg*aeRuB_+*vVrF5Hk(YlJ5@I(}j@gNv+)K~@n))NK)+Iw~s;aSyQxI(E zsi?~De|m!5o!~U|T7G8W+cmQF^XE@U&VW+uYHMvqE4NZYM7DRvh;$b&%*_63;TtnC zHC2cgDpUL``={g@RL$D+f6$y8BN8@lTK5V;qGDlTxvChO*~xzM=FJ;79Kg*0w)sMl zx3aoQ+-mbJuby)f?90(TclvY}Y`&mA)Ee;P=V6A?K@a2dnk{%_L%Y)zsB!Oze)|rH zY<_$C^a$A~gwu$M5$8UA0PBw*KNf!h+wbA&NiXE~D=C0Z6(h~QoCbhvDoq+rp?k``wj7)V+dBZR(eU3d z8G1$z$i}+&!!i!%4N>IMrAwopOTu9dsUmm?x^Ed9ZqjBdIzcSJ3Cspg>imuc(Ha?6 zWu>M4eSIYkL0vN+3TTx9lqMt?dY=gSy{UKA(zc0ZVtrcd9dr5Hd(jj%_Dlx~*kjuD+O<*aT%pmpg#kMs{|cqU-06N9Z~@ILOM%$}@%i4bffT zaJ37~G;FoY98AHj*h*5<(h$FQXgbDOdEK<}3~mnUfW<)!8w-migqDpChV@Zaq5*`w`fn? zci`|ePNQT><-kX<`Rd)3Cct|Xm+xj;J^)tWWWZ$+5ucgPw9(Pg5K)3##It>v-w_Zu z|Ml%+x+!;u4Hga@Ql^T768h`DN&+;S@Zkw@H6!E39#By*nh2Dy$gJ{ z!*GRRGF0pV=bxP&+xlXs=&geSI0Lbe5!a~k^ z*<5Z#Wo2dep-)g2SdCTVlOzI$>8XD^F|(wKSzCOS(~K(aft6LZ$4RjW+oj6Y)(_f+ zv5Fbw-yuh&rKMRVJU(!Ql9DoB#9N2tLE!*|HTVaujl9+~7hyRcQ=A0#ZEWVVHP8SL z6qvev@qNBqJ3AY5eM%&60q=*0r`j%cL9&6TuUh^>4IF{2y!;vQz#X@`1Q}RpKuiKB5J12Or4dLD#^`UJF>%0=`TKXJb#BYzChas;W3qIYJ;zJ5y+Imh-f4sU zuj`>Xw~f^Z{n_sid8OlCIb2QZI+m7SfA8|1n<=N93UJ`4F)*0Ri1dE@pzGL!m*Fjk z2W-MKaL2i*(@u_uhLk9J%ZiJ4<@^RlVgiycy5~C!XNtK^F@!e5)Pc?w+J(!Eg(|$% zskdo&3H^MvHsLk+=w(@*y*m^!m-J^*Zku9>yKDkAbhA^YTv-#RgYGxirKykXnRJWBTYVW>PHakE zZkKT6gUCuJvlMmB#U}jVvwQLm0roPT78u`Sdz;5|Adoz=P`2mR_SuPQ;llQgB%5cs zb&O=(JEGL|gAL39H>b{)(}{t7pv1z$^yfeHn_|6~+Un#hxZ0cac!TSWLg}YZS@1SK z6tBX$5>oLVclSPPTyU#yOTO>!&V;W0pln3JL|Nznvnb^`6W*`1Cql7z@(s!M9_&{v zy6hxwdbsecu07$s8Wrti4qbN7)j>O}w)=&*E7+Wb{gCVV9agc>>b|u->xC~kTh1#g zlebuD$t(Tz)^<#=LxsJJQD^lL3gm;obOp{nVrj}`GQN@s!X);)OBmI z_X8IX?WoT4-Pk*-S*F7FD5upVopU!9(#1G2y-TN9l%}cRQF0_Io#hAZJoXlt`L-n~ z^NPo$X?36Hxjbc3Z|WFbU%m0FVp+G7^6??0$wj`pYiwd-qTmhCt1VXG^!fAs z#Se8cS6EmYY)dKx{hvPvYNxSWgu_{)OLLq?(OciqK2u`?Ub z@5vW@O0X2dnT>yb1|?)H@54bLqIA^~0A*P~424LkpKtVR@P_f1S5Kbo*9zb={sM63 zO))tm*puR@@4CTh z9&z`XTg(Ztg!++*Rq2h3g|`DqAGG>h)~)s`GsyFuj53e+T4{*hw(0+49LhZ3ouM&0 z?==-IV}y184h;cddOV=S{qmZY`qZiK1n0f=wrISR5Quz0oKVgwkSzCLxc0WdBe%CG zp1~}on?Y|SX>jAiWvSOd4wcfizUNBu2mmsXL%VCkGm~p_Eed(lErB`g{Az-2D~oal$*^xssJufJssx@4t1K-XW7N*+opr_Qi|ou7 zLWT@$;ISL6+}-tJsD<=a3Y)a3Yu!ALf0_ceobdDDFttS6G;{;rU3t$er%4O(Y z2ny;f^k%7LOixcEj1y<&uO~6azgLj1njzh)&NoP$(902zDfHr_OA$)aO{`VrS?~YyaRu(sq>J_A>yLPB;}^pgOj3+qgMk*UC*ALfhMwD@LFI3kCpF z>g$YnoZl40u<*DvQ%=K-mr8Cxl)G?QktXR#zP2MN0c^AJ8a0hH2 zNDzr0N7Sj)r^7-+C)*On@?OocKzGJ&sx=P&jxdiUqaM}(t-+4B>O~1EdU`@O{nt10 z_ShN=a!HpfEO@ZqR@43~oN)up5fM8MSQiHH2L`>+%ypIV-^I47f_HLqvVr?V1f6U>FmRY>nNMpr|CA{)rxX+n&uM4B zr8PIjDR^Pxy5_XiN4pR2fcG$1>fK3AOiX;I;BWPL4_G_@TL_gCmTPj()r?WL6AoKf zakbSXioY1j{GEI-`Tr0?Lna?19;Uo#l`A1ExM5RA87n#&emB4!9bkofxgImf-EVXM z8Ami9vit4H;uXoG9a>X!kvZ*{Eg28zDTTt@RKp!(HsM3h3DrM1>qHj4klbM})o{&;X~ZkD_nCYJOS@bS zuHp_Pufx&74s+yov|;N>GRVi;^#*7Hb-rs=S1j2FDo&VB%Z7O#)RuRsCu!)5F`{Rd zg3q8@Y9eA)`xLyL;}$VOQcmwn>KJujt@y3`bS<68e{b?sw9CzJ5NS(560%cc3f>M(#snxxd(V zCFz)@oSB!%C+j|dY|5|LSK=8SPPuc7gozKGndEkbw{K8SEV6sk&Cr?fN~9Tj(l!cGmt!MAZ@lxXEsR( z5Q*j1>vf7ykIdf0lRm!l)JD9G<392~_EB9xKHRNfo3F;c*5pIn(sFn%+}+k>q}t@| z9)9JcO?Yw*Bj@7$0R^(X4`z0=gmU);ulovUq1z{~jRn^;D@{{ca5Zur77$DCKN5We zc^qa};WibQckima;%uL@->l$atsPP=KC0B#Tdnrt6J^TqrLX9GDbjE2NUCg4zElw! z?gLvgbz?p>vehQMvC+HCu!1~DW|5pjMt$dF+%x#tM_NUS?+))gp4-;R$2)nNC8bCV zkm?7?(3!3K@`@CNshl)^#*w%W+4M!`fx6Z}{q-jE6}{#n>H}5Xg++Q(R+yu>UT#bJ zc1C20EfFIut>)!$fMZX(G_%9m+aj9pZsnIkDp<65vwJ1b8#RICT^=$mN7~trGIO@# zZ@XL>Jc7--!s=+HqOtDyPi6<$oc8UKB9~K8Oww0bnnthUnlz^ecNwe7SJMYBo>-i= z<855{eC4Ig4r=xVd``^Rf%UuUJN*&&LZi32!sxFQ#&5bEe8aEY@AbQ0c$;)Rt^bJf z9wKp5G)v;1nUuhAm<%dBHn7SWyP_K3ezV;sTsOdN?tKwi;seAEEy#HTlHYAcEG^!O zO;+2wP~Q2I?lwdfF7Xu{oX0l-WJ6{@{i9W*c=phU^S@a&cyQE-l{e>ogJf*aF}bTO z9I)7fBi&zVLwWS9`&@bVixIP=$0ossBj35VA7nNR?^zkXC14Xk#^~ z_JFWi3XN-I+vSm`&4*c7{RLo89w##c0rP8lnJcCR<5c0cY-DR|3!!^$TX)!k-+Q|V zh_ddiu${guaK)m`+N9W~KZp*Qngf^gtH|F;YYS^x>$E|>nE=NPQ*cx0xfJdSENl5E8qx?I_Pc;V|l>J?E}>Q z8`+f%rS!+p0yI}_q0-jO(a}&>=Yg^h;i!5Je1!4~s(KMfs&C%B=`-+TXJ8orbcB9w zorCk+>K<_MqSitp@gnm- zgT5{xglFUu&yTyWw(ybBiwtKd(PL^>CYo>_-e}Dn8(!Vt%>y2-G{v{ES++&QrZSyp zyyjcBLU-N8OT>ayUUPljccV_kkEzz=26P8x@Pb#am;wRc(a{kB#jXFfrd$!wQUD9^ z3x@*^yl@bjX>So21B@`hLNKvSgOA$NwYZ}AD`o$aqlVn z-7?8HTE-z~P(B>(r%#>IBLfCfrK$}&av-z_d;7Mdz_f`Bh_rX28HtJCfMsk2`NaCV zL50ghY3Uc+;~$Y4ALuT!^Vjdg9i3?rMAZKC%s@oyTFl8F!T(fdBo7{Gx5-L45DOhs zum*asU!S0PqE{8NE%0$`bqdJ#Du7;)z}YTd{05zg=ElZoZu8a!eXR^;S^b2R^eElQ z^Wa8z{?`aJQs9X3Ate6}KYnJ(xjidjX1un;n|0?5i-7n{7fJ9XYypbf`a*5zG}Ac& z3}E1^SL%I-LCB$`&;AR@6REp*%N+%f?t`16OManIBz`4I=p6UL7coxUHTJ$T9i*s{ zA3S0|B?zt0Av>%vG$errAZ2)UH--E&bm14nA|v@+7l$`DH(AuuGwIJ|dIP28ftyWp zQPw>p+0fMF2+W2-99WzMxl0Cr!pxur*6Wy}ZkB4XkQU^c`tMJg50|CfUWsI0-)A8Q z6fn5ZsL#&A{QNv1k`vUtYk=&ayDRPY10Rza_Mgy&D%Rp0hYW0BqRgTe z(q{~1bax+da;%+kn#Eyv59#Q90a~*9c|CZfAJxAXZdsWtQri2?PLOa@r`|V&#E@C2 z`wka@CML|`Zs6QhApR%n{X?)uwNS$87JZ#m?mmTG8SxHKb7B>h(25?u{M9J*)?Ml9 z(K9;$WEc?tS^CGa3}rtBF!>|xm4B_W^7z%|=uZ8x<7!y=%*dJT4H^|#8;@2lw^LZ> z!;G#*yM?I;e&geOwArS-vY$lYmVOT4vKDltHi0@5=pDQA)^^N$6G*(Hol|cYZ<{?m zbM|wrH%jawq{8+yS%vHR7@vt2K6a+9q>2OVcY(1GkT{1@)WN-t(&DcFu%` z)AMttToI8wv-0uN%DiI-QF}1Qts5sKmA11j+PB@eO0#ge(Hc(?x8Goz{>ulrM-4o@ zm;{S+;Lqmll69O%l5Mpmmxj&P(;V)Ptm#qTSl}j^^pM#Nt?&h&yDZvi5BuTo?X{3> z5?f;fOMi87maO+2C=Of*6h!!d4BT#6?-D==gJ5Az6v`F|0YAeex*QF6rTAk}E^2jz z7-8KV#r(s%uN;Cd!nulZi@`@?)W>|eGx|GZgzxr!CB&fo%tByc6@hYRwQ_uUM|^mz zW(hGrj1I6fMWtX+DA!Z4$2pk=#K|ZgT^$1Fj@|2mgUwXry$#HV@`+5SZ?ECL_D8a- ziDs(hE%mxu)zW>;Kx@PV&ts3G+Ar;g8!TmrPh|mMX){wF@pV)_f)!mqF=G;5vs;P* z4tXC+tWedIsNgIcQp3_MS&p5@USI%RghCAiBoyn?@FundMXkSM7@g%RuNwLTZi;e- zo3=ADi|e(rvfol~a@kunW!UaLy+1jFfzTr;zcD}9I*Pr}+32}26v{oH?xR+ zg?-P)m^`O_?RiF=MGjZo0dunOTNfrS(t}~4sA%BM-UR~w3=84srIymfvZr8@d?U@8+DqZ4=o`hJCq* z$C_-yuQ8QbAKOZ@eGJfv)gMa(k1qz<960zE&_p~V2eAc|r=Ot;1SkP97?LU^*m)Z7M}#@Ck!Z50vX?&_jpwC|6{w+13;a2D*Ibsaiz zfRGS`*QA z;n#;iUFU%Oz>`>xTZg# z;@aEjECHAK_vA(({()wW_zUQ=5%VDMPBcXV4KOzw78mCYqyaRcztqe0dm`+)Z6cNp)q_s!F%#{P6NU)`5a#vdbv*4lmFWRA-xZUl!Jm`e- z!)dXu`m)~g*>y8A`u^?H)8M-)=tt0iX=rEwkxMY&==2~4y@L=B3UZ2%(sXx#VudP< z8QG?9icTN|fOZ_B(bOODlmqtPZMp6oNF{Ij5_TIG0EfvbDk8!_VBtZ3laib~T*(a2 z%LBGm*gnalHIEgTh`+zL=K=+L+5jy$Mo};fKnLD%jMnA>$0-Gk076!a5u>u=QGm zUjL(~{mGHuOuWzb3_>?SpKh;};U@i9K}NPj!yp3+Prie0Ss0&TeUXs5LjctEKS8Vm zfo}UZXbWr)JGMOw2*3hO0Zqt~c{O$QH2@ptW@bLn;Cnb&q(Ti$4Lr={OP3~FgpkM z!he$^dCZOT1BIYk6##idp{YOl?c29OKw{IEI|5DP^YC-}bm4=V!_G_)kPK*V8Z5)kaJn8bj*S4;vt`%QE-tN* zM_QJYcK69iJYU{qcyY)Zy@~1p=BQwYOwJ&ueW>=#v3u;d;uNb!bHtMq6E6Zsmn)i} z1n?kh$4;{hlXvd3!zv->&qRw-RvP|5ct&2Lf(KJI?1o^Ebpg%*qBb1HJOwII@}#8R zZi5d~iwj3hyn4Q3Nq=s*(hsf%wVY2-6&b(rs(fDzv3`;HAZmC^uW-FhbN+MI=pY|8 zaQsL%hRQTZ#g?KL5)$fLs}v;vG$@AHhTcp~>4=UPxc62MT#N}``IBsnMKY7$T?!yQ zSj1D!BI6ZG;#knQws$Q*W%jtjX2{)d{wrJ9D*}5gupbp2Fl>~eGaZR1tmgeZ?wOeo zSqH4k3bUNw0JCHOf}tP_AKHgfcwN4gt}_wYGQPDnCmz$KS4&?y)9qh@da8o!&gNVJ$?defutZ(eM+dGo}ZWgQ?R7=+&~!+%1TDEo}ds9_bGlalPqY-1y?{E`_f z+)il?!cSoTjQxMkDddB3B}yLjGn@ZsbP2V)6oA5&hq86hHwkhI$u{`SAX zOE|n&PpJG8zSt-n2FyfV^{d{E)dLVWH(doZcqJt_W0HsXk z5EN&XWVpW5hTVfW29#ksi%q~J0tZLSSFj9*n!x?+$n*^*3N>+ zysnl%(##^EnV{RqJ3jNTJuo;tR0%n%@$5fTrr>vlX?3VXl1Bn^!V)D$OiJbdssELa z*cZz6-7Qg+$+=r>E&~9w9l5$}kFTk=bvneMdziX)+fo6Vq1-ef-hy20&Ye5#NF%7L zs|#2W?J_RV;sWOZ{{s3k=ko8gXHoNtk3_mK9X?x>vBj!sHtxA5yp4OA#6jxmPfis8 zTd2eiewx?#oefCG?jW~=Y>ITi*(;zsY}53P9l*k$lMOvzK%D~ZgoS~^db2{%51gdt zodiT*b(pmaH%wmab?qal z0nLE~V-~?a*ZfPT;ys74PM44PHH({fwggz|e=UmHU)8OHl}i;$vPQzw$>m-yOT;Q$ zYGIh+)Som-2f3DvoSY}fDgkr#7n&<=Butc{?mIGDy)@iftgc}Zj7UggQ&^-h;cB40 z%xGu_H4UtZS5i_ERA;Q;j4AK?_TLEurCs-OdJmV+<*~A}#{nS%(so2D z3O#s1;S#$2V$}*+{XiqUwRL#T-Y%6#2W90~38P(hrZWBaKP8dc1+~i?m|VF%i-x@H z0j!iKZdRi&W6TW2tg+_1dqW{-XH_p2iNH>lI@)Bj$u?cYekP%Z&1>fuQFO%V|h zPEKST!s^F+F5}_K+J}cxc5$om%n4HEN1z>`PU47!OFs|$-(uvfbP?#!of6+gze0E5 zQHg(bPWYxjKzW2pjM@(FDd?K%o};$sJ#pF@{^ZA$dK>Kv843QC9coRmmj79E2!APy ze$O@icSa_He}Lpv$aCFh!MmWKfUx09)KUp&T>t_Ejswm#2bo*g-g{PT2Vf*nZ7cv# zV-D;DRurr>7nm`PZD1eSwF^w3)8$f81^5*7XFm^+30?GuF)1VhRJuEYQp3${Q-VyG z$N0-}5c4CzTHOm4CWbPq2K1&o_HJ4?Srm8LIj3%K-EYEs(Pd=3&Twj5fPwt z5rF{#r38_^RSPZq4|d`I)VPI|yDaF)$_CaMsnEO3bk>;_;@gP3N)sY5W&lMVbSzcr zA+V4#tS^n_5k||Mtwlve8ScR3l()Bcj|<-jfy&R{-+#!510K}=$SsGT(i2u?jWqb~ zZgmEKEEc_X zUPJjp-S+T|R3pzi^Kj={z~GwHJ?$>~hh6kZa)sxu3eTrzYahpGA6MVj9g6w>@cdT};C{rG8 zOFZ1Z{Nck)NbyWad)oi*l6A^4br&@hd@~nc{Q+@NFpfi5Sl`;<>htv0z)lC7uu6jIQBc%w-NI}39*Za5TIai+gT_aIp(!ZApMFHH zsT3pRUce}0=#A5O@L+s%`3JrGPYTSRN@rE958ePqcQ~szjeujU2_W;G&#&(mfl^7k z(rp=<%7&f`7#PM8hUz*O^LepdLsSEJVU*tyDBe3eRkh!td1i5ZEnO_Etg3wY56S84 zgL`Ta)QR6iV~PJZ;M84wO!@C*tw0M-3Pd`HuCyi+3!q;9Q6I7~-BB|%BvEl3KdTIh z93-*ucUyP)L7*jo*2h(8QGd;Qtx2Myqk~k4Fuw!hv~ns(M`UUc(b5aDujP*2o}8Ra zPfb;~T-(^N8>_CGOG;)IC2Sf)SAfdn&EoEZ^t7}%XwgHONJ>h|{gRr>STVBbaUKNy z_9<2Nj`ymY^3O_D9)ij zpFx+qIDSrlqE#7A=xu1ID&DRMJ_>@5Bp9okb+J2fM_RbW#A-S}d>YbL5IieJGV**iR4nKep3;2pFN*?f< zWoc5mfKDV33sB0J!=bTheo!VB#Q(1Y9sSHthk>U-=pxo&5WE0^LN2Zc3VjeVA`xBR zbtJ8rhuoEL9TeT5mO#mTPg(ifEFyS3bd0il=i&xb@MbMk zxc=8)zkWSu;PwC%5Iz3^^xX}q`tD4Xo!uD2&CdQ19vE1&e9)X$R|Bl_gvnFtM{gkC zz~cKst^s2}0FCsIq_|B=y832axrjoeVBZLXXH>O~(4ScpH!0Xrozb`F`KKfoe zmEc=F{+!kSJ)oafAgL5$)?pSxb4ybp?M34O&hj0JoEiMgcy`wM?cO!Q+HR1+jNcbZ(s4DHpKX)mK3WGi$hA5aDL4cj3IS16EnwlE&X>CEGsG_7wcOVg&_k%sFyWJ&uLJzucvLz-Dc-2O>JXkG63!d*6krj?s zc_I`Vlpkyy9GcX^tI2(qnRC54Aow-(#XDPB&C(No1%QzG?Afy{fh*9AgRg^%_a1%- z1Bd`z948_j)4~f1FUU>surttAg~=e`v@+1HXgJiUb5)8G-teCYbcNCD?(S|F*S3N& zKbH!9d@mp?(4G;01&AUCCLkaX%rA{g_=*f5?fimNLFd^4(J^{70p@pSMk+R7OQEBN zNQXds3r>BrUHPo!794$!DOkG-zT#%YrFi#0zeATBZAEXQu%twWoyH16j3SR|(JaGH zcccKBx8%E9@7ul8-2P=SqzfwXXjB=pYEH61bu-h&(%)kdvpFVAkjdO(Y0SIr< zT`jThgRuMvMwtLGiNAmbD$J5X5-G9jnSFURUfGjZ&tt16$;{k5LDbg=NYCZvWk`Hb z?CHtKG{Ee)KJ7bB!`!|(VQ%fZIMI7ILqWdI%*$K6BIUn_w1t3;2AUihBs^mZku3Oz zG;rX>5iqxQ3$Rd?c{^k#*HL$KI5R-=C%B3QgF&)o3+V_f38F<%aIiOwTtWt1`w=3V zz52g2=(c#||qKIo(?7R#-HFkTqMcz%C*b>5|7&;Sd$8mMa+Mys5j zwg{^0%uq@Iz(9oQERFJ!zcLxLD4|VT4PzNVvV-KC>V}E5nc3ucO+e3uc&KIx{rSd# zG!SmOFZ_BNStm}U5>8luNy6FoskyLpwqO|6{gXZM{q~t(a)g8RwN!V%484wOt&)x)Fk;hXkfcVGr=>; z2#J8mv;VXj3KWxKEG(y9C;o?%AQ`RT&uA`sYHBurW%Mj0J z&=Mz3oEQPs0gM=DhzNm5R57ChiiYk0sn;|ErH_6fvxZSed$EE#Jur|ABf_{PB4H`Q z{1xn|0!cnp;V>Bit&Hq6`O7C&oni0@2AY)KU%wrmtAWDkx|OfC<=sPXKWH&|?7Ef=2m?3pY|B zH}p)gdCs4OJW=B1IO|ldB#MV-d|K`lDT5v{$ld1+h(%A3kianT0(3S+x2G@n#nS(_ z3^4P|sro`vZ_cyU3uNW@qPuIW#;gtgG$a*6Tr@&956jRiu$ zNJGRWVYtD~4W~CgH#bz~XpS?y5>P`yPY-CN6B4nO_f?+8i~7zr(ATB}IW3@?@869u zBix)GanE(Sc2+?`LIdw55Y&1IxgCaN#|c)dOYOp|&DDFqSsNo;?KLOB*1)cp#g$%{qx`p}u z;V=Ll7WRWRx@XvNqVX)l9hgTz>*w_yIe0KNJ-v6%&u$Dt3WOM#HM8NN>bXOJX$kjV z-##5UeB5F_34aN&02FmtB7O-y98UvGJw$yNo)CZ$5lA4rps!USzO~SUfDIwwgrF9# z7_I|L81-|S^G zXaZd4sJZwHWSBsVr1`%G#GnO`3nS-i(;YxuS%ja%YXu-O3JA#H^T-SX5niNF z1=1sD_8lZ=Lfx2q9lcxqkfc6@o}SC77V^}Z2Y!KlaJe7xCzwUJ8%%W*lrMl3t}-%a zUcnK~m-LLO(B&dNRxGc=bhx?qQ%FroD2IS^m#^6TvxvEGdG`v z`x`u4=0vSFZO??NJ_Bv-+vKVF`Hzf^B`&=cf;`xcwxu{)k^<8^u)BpxNenk{p8b-1 zFZ#7=cFyKOm}Y~sGQFW~4AW*xLgS>*u1nNUIOHtm6eR@Sw-ltx^6S~Gy=E=K0eM+ncyVo>FKGHvkv)v2i{B4)Y!;TZBly5eWeOs;=#nFiJt4X ztbac;G6Irp1TW88SZ zx3`OQ7S`5^=1g`W;DU)(oo=(~69*Zux>Y&(B|5PfvL(C@fr6TDl3{x1W=fBJl1O@g(Ie^-Cn70Ii_87aJQ3 zjikXr9mnDF{qK*z4h|j}8mb7`hcZh~2`63skd>7Mr8bOLu~ZVZ4Gm$ues*TY(%SlT zP@Q00t8?#|24hSM9Su#mG^4PvFb0E>O*{4dv|N{pEaq&&#|3Vvef`B5uH`s!T$kAJ zHSaI~qR9FrZN?&XzvhqCOSxa8l>>{;CitNhT%}p>vypL81z±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 literal 0 HcmV?d00001 diff --git a/_examples/descending/main.go b/examples/descending/main.go similarity index 77% rename from _examples/descending/main.go rename to examples/descending/main.go index 683c3dd..c066808 100644 --- a/_examples/descending/main.go +++ b/examples/descending/main.go @@ -1,12 +1,14 @@ package main +//go:generate go run main.go + import ( - "net/http" + "os" "github.com/wcharczuk/go-chart" ) -func drawChart(res http.ResponseWriter, req *http.Request) { +func main() { /* The below will draw the same chart as the `basic` example, except with both the x and y axes turned on. @@ -19,14 +21,12 @@ func drawChart(res http.ResponseWriter, req *http.Request) { graph := chart.Chart{ Height: 500, Width: 500, - XAxis: chart.XAxis{ - Style: chart.StyleShow(), + XAxis: chart.XAxis{ /*Range: &chart.ContinuousRange{ Descending: true, },*/ }, YAxis: chart.YAxis{ - Style: chart.StyleShow(), Range: &chart.ContinuousRange{ Descending: true, }, @@ -34,7 +34,6 @@ func drawChart(res http.ResponseWriter, req *http.Request) { Series: []chart.Series{ chart.ContinuousSeries{ Style: chart.Style{ - Show: true, StrokeColor: chart.GetDefaultColor(0).WithAlpha(64), FillColor: chart.GetDefaultColor(0).WithAlpha(64), }, @@ -44,11 +43,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, } - res.Header().Set("Content-Type", "image/png") - graph.Render(chart.PNG, res) -} - -func main() { - http.HandleFunc("/", drawChart) - http.ListenAndServe(":8080", nil) + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) } diff --git a/examples/descending/output.png b/examples/descending/output.png new file mode 100644 index 0000000000000000000000000000000000000000..2f30474bfc4c6e9618936f8c8cd5aa9fa35778d6 GIT binary patch literal 19720 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 literal 0 HcmV?d00001 diff --git a/examples/donut_chart/main.go b/examples/donut_chart/main.go new file mode 100644 index 0000000..98f3de5 --- /dev/null +++ b/examples/donut_chart/main.go @@ -0,0 +1,28 @@ +package main + +//go:generate go run main.go + +import ( + "os" + + "github.com/wcharczuk/go-chart" +) + +func main() { + pie := chart.DonutChart{ + Width: 512, + Height: 512, + Values: []chart.Value{ + {Value: 5, Label: "Blue"}, + {Value: 5, Label: "Green"}, + {Value: 4, Label: "Gray"}, + {Value: 4, Label: "Orange"}, + {Value: 3, Label: "Deep Blue"}, + {Value: 3, Label: "test"}, + }, + } + + f, _ := os.Create("output.png") + defer f.Close() + pie.Render(chart.PNG, f) +} diff --git a/_examples/donut_chart/output.png b/examples/donut_chart/output.png similarity index 100% rename from _examples/donut_chart/output.png rename to examples/donut_chart/output.png diff --git a/_examples/donut_chart/reg.svg b/examples/donut_chart/reg.svg similarity index 100% rename from _examples/donut_chart/reg.svg rename to examples/donut_chart/reg.svg diff --git a/_examples/image_writer/main.go b/examples/image_writer/main.go similarity index 92% rename from _examples/image_writer/main.go rename to examples/image_writer/main.go index 9bf92ce..13bf013 100644 --- a/_examples/image_writer/main.go +++ b/examples/image_writer/main.go @@ -4,7 +4,7 @@ import ( "fmt" "log" - chart "github.com/wcharczuk/go-chart" + "github.com/wcharczuk/go-chart" ) func main() { diff --git a/_examples/legend/main.go b/examples/legend/main.go similarity index 72% rename from _examples/legend/main.go rename to examples/legend/main.go index ecb243b..fcdaaa5 100644 --- a/_examples/legend/main.go +++ b/examples/legend/main.go @@ -1,12 +1,14 @@ package main +//go:generate go run main.go + import ( - "net/http" + "os" chart "github.com/wcharczuk/go-chart" ) -func drawChart(res http.ResponseWriter, req *http.Request) { +func main() { /* In this example we add a `Renderable` or a custom component to the `Elements` array. @@ -15,12 +17,6 @@ func drawChart(res http.ResponseWriter, req *http.Request) { */ graph := chart.Chart{ - XAxis: chart.XAxis{ - Style: chart.StyleShow(), - }, - YAxis: chart.YAxis{ - Style: chart.StyleShow(), - }, Background: chart.Style{ Padding: chart.Box{ Top: 20, @@ -41,11 +37,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { chart.Legend(&graph), } - res.Header().Set("Content-Type", "image/png") - graph.Render(chart.PNG, res) -} - -func main() { - http.HandleFunc("/", drawChart) - http.ListenAndServe(":8080", nil) + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) } diff --git a/examples/legend/output.png b/examples/legend/output.png new file mode 100644 index 0000000000000000000000000000000000000000..82ebfa8f7d4fccd419d75db531352999f55d8a1e GIT binary patch literal 24548 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 literal 0 HcmV?d00001 diff --git a/_examples/legend_left/main.go b/examples/legend_left/main.go similarity index 87% rename from _examples/legend_left/main.go rename to examples/legend_left/main.go index e7f0caf..33c71db 100644 --- a/_examples/legend_left/main.go +++ b/examples/legend_left/main.go @@ -1,12 +1,14 @@ package main -import ( - "net/http" +//go:generate go run main.go - chart "github.com/wcharczuk/go-chart" +import ( + "os" + + "github.com/wcharczuk/go-chart" ) -func drawChart(res http.ResponseWriter, req *http.Request) { +func main() { /* In this example we add a `Renderable` or a custom component to the `Elements` array. @@ -15,12 +17,6 @@ func drawChart(res http.ResponseWriter, req *http.Request) { */ graph := chart.Chart{ - XAxis: chart.XAxis{ - Style: chart.StyleShow(), - }, - YAxis: chart.YAxis{ - Style: chart.StyleShow(), - }, Background: chart.Style{ Padding: chart.Box{ Top: 20, @@ -101,11 +97,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { chart.LegendLeft(&graph), } - res.Header().Set("Content-Type", "image/png") - graph.Render(chart.PNG, res) -} - -func main() { - http.HandleFunc("/", drawChart) - http.ListenAndServe(":8080", nil) + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) } diff --git a/examples/legend_left/output.png b/examples/legend_left/output.png new file mode 100644 index 0000000000000000000000000000000000000000..94ff2b521b9f439e43af6f3cf57a25cdac5ff0dc GIT binary patch literal 44943 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 literal 0 HcmV?d00001 diff --git a/_examples/linear_regression/main.go b/examples/linear_regression/main.go similarity index 63% rename from _examples/linear_regression/main.go rename to examples/linear_regression/main.go index 9daf3a6..fbea690 100644 --- a/_examples/linear_regression/main.go +++ b/examples/linear_regression/main.go @@ -1,13 +1,14 @@ package main +//go:generate go run main.go + import ( - "net/http" + "os" chart "github.com/wcharczuk/go-chart" - "github.com/wcharczuk/go-chart/seq" ) -func drawChart(res http.ResponseWriter, req *http.Request) { +func main() { /* In this example we add a new type of series, a `SimpleMovingAverageSeries` that takes another series as a required argument. @@ -16,8 +17,8 @@ func drawChart(res http.ResponseWriter, req *http.Request) { mainSeries := chart.ContinuousSeries{ Name: "A test series", - XValues: SeqRange(1.0, 100.0), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. - YValues: seq.RandomValuesWithMax(100, 100), //generates a []float64 randomly from 0 to 100 with 100 elements. + XValues: chart.Seq{Sequence: chart.NewLinearSequence().WithStart(1.0).WithEnd(100.0)}.Values(), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. + YValues: chart.Seq{Sequence: chart.NewRandomSequence().WithLen(100).WithMin(0).WithMax(100)}.Values(), //generates a []float64 randomly from 0 to 100 with 100 elements. } // note we create a LinearRegressionSeries series by assignin the inner series. @@ -33,11 +34,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, } - res.Header().Set("Content-Type", "image/png") - graph.Render(chart.PNG, res) -} - -func main() { - http.HandleFunc("/", drawChart) - http.ListenAndServe(":8080", nil) + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) } diff --git a/examples/linear_regression/output.png b/examples/linear_regression/output.png new file mode 100644 index 0000000000000000000000000000000000000000..a0ff7b6dd307e336a191ec9b01f0180be4cd404d GIT binary patch literal 72724 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 EKXY=YtpET3 literal 0 HcmV?d00001 diff --git a/_examples/min_max/main.go b/examples/min_max/main.go similarity index 51% rename from _examples/min_max/main.go rename to examples/min_max/main.go index cd112a0..359be16 100644 --- a/_examples/min_max/main.go +++ b/examples/min_max/main.go @@ -1,22 +1,22 @@ package main -import ( - "net/http" +//go:generate go run main.go - chart "github.com/wcharczuk/go-chart" - "github.com/wcharczuk/go-chart/seq" +import ( + "os" + + "github.com/wcharczuk/go-chart" ) -func drawChart(res http.ResponseWriter, req *http.Request) { +func main() { mainSeries := chart.ContinuousSeries{ Name: "A test series", - XValues: SeqRange(1.0, 100.0), - YValues: seq.New(seq.NewRandom().WithLen(100).WithMax(150).WithMin(50)).Array(), + XValues: chart.Seq{Sequence: chart.NewLinearSequence().WithStart(1.0).WithEnd(100.0)}.Values(), + YValues: chart.Seq{Sequence: chart.NewRandomSequence().WithLen(100).WithMin(50).WithMax(150)}.Values(), } minSeries := &chart.MinSeries{ Style: chart.Style{ - Show: true, StrokeColor: chart.ColorAlternateGray, StrokeDashArray: []float64{5.0, 5.0}, }, @@ -25,7 +25,6 @@ func drawChart(res http.ResponseWriter, req *http.Request) { maxSeries := &chart.MaxSeries{ Style: chart.Style{ - Show: true, StrokeColor: chart.ColorAlternateGray, StrokeDashArray: []float64{5.0, 5.0}, }, @@ -36,35 +35,27 @@ func drawChart(res http.ResponseWriter, req *http.Request) { Width: 1920, Height: 1080, YAxis: chart.YAxis{ - Name: "Random Values", - NameStyle: chart.StyleShow(), - Style: chart.StyleShow(), + Name: "Random Values", Range: &chart.ContinuousRange{ Min: 25, Max: 175, }, }, XAxis: chart.XAxis{ - Name: "Random Other Values", - NameStyle: chart.StyleShow(), - Style: chart.StyleShow(), + Name: "Random Other Values", }, Series: []chart.Series{ mainSeries, minSeries, maxSeries, - chart.LastValueAnnotation(minSeries), - chart.LastValueAnnotation(maxSeries), + chart.LastValueAnnotationSeries(minSeries), + chart.LastValueAnnotationSeries(maxSeries), }, } graph.Elements = []chart.Renderable{chart.Legend(&graph)} - res.Header().Set("Content-Type", "image/png") - graph.Render(chart.PNG, res) -} - -func main() { - http.HandleFunc("/", drawChart) - http.ListenAndServe(":8080", nil) + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) } diff --git a/examples/min_max/output.png b/examples/min_max/output.png new file mode 100644 index 0000000000000000000000000000000000000000..738b2fd56ac8a66de5b44d52aff01937dd135ffa GIT binary patch literal 172334 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�v)ZkFFDCQdNcya7AEc(u;qd41cPE38E=OtS^l4@Ir6RlR?S&> zh_`VeKh$p|*(8T}&DuuH`FVj!-p`9KgO7{@o_GH8th*@nP|qc`C37B*m1nJ?j-D9j z%Al}D1~tr{GzfM-w5~bf>ePkZcljpc#&fVwN-8S0PpU?Rz%8m}>6E+dTKP$gUjgMm z3hXcT3s?9vwPEM#pL&onNxX5`>NNn3!bn%wesR4gKI`b`?Nn5hdA?(NsFPWcZLI2% zHeTMeekn0?M5V?L5$rzSAy-V+tq9boaqtnV+NWoeGVXEYc0XS<(A_s7;(CLx*nG@~ zvez0=V`V{0NXj>SCaZZTqC1M=H>aa<+o*%De%DpB%xSjWwvKWYeOU`ZLi4>qOxLqA z{QNJ&(nz~>>%-^N2kzBb*!gQEl%FhOMc1^Cy4${^w3ka~gpX5Aw3XDijg3DD)RRxz~D;{V7dVBBL$QL;xD=)M_IUwypzUD2&j zve;6sQ07J~2FBf1sBe37N+l-Q$hN&%3kB%owi{vVF^3m!Zu79@)G`yF)5@wksB1khXbs}=+BwGePbNDOZjsC za`?g}*d-07>uOE?N>;7qQkaFBnfA92udF_0xS?q<-|s=DGn`|R?|XSUa=&w-4Qpxm zdAr)>?Y(XCp}3^sQ{0Ra9?6a6&ran%#m%eiv)ZI#Tce+`O%k>EBJt@<8NOaS-1`ZFY zWpAQ36W;@t#@y9N4kiwef+yRkck3wK-ruRTE{HP|f7MvZ*PNDa-ZbFsR_p5SJUweD zE3P~0gK&Dg=b>gJM#EvpkSN=G6k@0n-H$c+sNm#Y0bZL3H`A|8Ez(Vs%j?L%AL*mZ zDzJ&h8mu6QqdJOs;F#lg^^}?gT;PjXuzkQAhl5HJH(pkUi3=*rLUaJqvn-_W@)`wC z%#=*YEVj}QVVUvtpKwh;gk$VF=%HA*De=dfqtT^qE37BVSpS8|=vN;iVy>j?gc2D#>*hsaa3uu2LrI_SZuhX

    DU;UI{mq6fU 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
    F-grd0U%~ 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
    ayfz!sk#m?m4Y(b;6HRKI!W`dnzqhon1umd_ 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%0DqH@eI5T4C7ULVx2f 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�mAk=`08 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 Zym9Pm%eE3v8>f44iTCn_XS_o9{0FsUD!>2$ literal 0 HcmV?d00001 diff --git a/examples/pie_chart/main.go b/examples/pie_chart/main.go new file mode 100644 index 0000000..2268776 --- /dev/null +++ b/examples/pie_chart/main.go @@ -0,0 +1,29 @@ +package main + +//go:generate go run main.go + +import ( + "os" + + "github.com/wcharczuk/go-chart" +) + +func main() { + pie := chart.PieChart{ + Width: 512, + Height: 512, + Values: []chart.Value{ + {Value: 5, Label: "Blue"}, + {Value: 5, Label: "Green"}, + {Value: 4, Label: "Gray"}, + {Value: 4, Label: "Orange"}, + {Value: 3, Label: "Deep Blue"}, + {Value: 3, Label: "??"}, + {Value: 1, Label: "!!"}, + }, + } + + f, _ := os.Create("output.png") + defer f.Close() + pie.Render(chart.PNG, f) +} diff --git a/_examples/pie_chart/output.png b/examples/pie_chart/output.png similarity index 100% rename from _examples/pie_chart/output.png rename to examples/pie_chart/output.png diff --git a/_examples/pie_chart/reg.svg b/examples/pie_chart/reg.svg similarity index 100% rename from _examples/pie_chart/reg.svg rename to examples/pie_chart/reg.svg diff --git a/_examples/poly_regression/main.go b/examples/poly_regression/main.go similarity index 55% rename from _examples/poly_regression/main.go rename to examples/poly_regression/main.go index 81a7a27..e41b0f2 100644 --- a/_examples/poly_regression/main.go +++ b/examples/poly_regression/main.go @@ -1,13 +1,14 @@ package main +//go:generate go run main.go + import ( - "net/http" + "os" chart "github.com/wcharczuk/go-chart" - "github.com/wcharczuk/go-chart/seq" ) -func drawChart(res http.ResponseWriter, req *http.Request) { +func main() { /* In this example we add a new type of series, a `PolynomialRegressionSeries` that takes another series as a required argument. @@ -16,8 +17,8 @@ func drawChart(res http.ResponseWriter, req *http.Request) { mainSeries := chart.ContinuousSeries{ Name: "A test series", - XValues: SeqRange(1.0, 100.0), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. - YValues: seq.RandomValuesWithMax(100, 100), //generates a []float64 randomly from 0 to 100 with 100 elements. + XValues: chart.Seq{Sequence: chart.NewLinearSequence().WithStart(1.0).WithEnd(100.0)}.Values(), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. + YValues: chart.Seq{Sequence: chart.NewRandomSequence().WithLen(100).WithMin(0).WithMax(100)}.Values(), //generates a []float64 randomly from 0 to 100 with 100 elements. } polyRegSeries := &chart.PolynomialRegressionSeries{ @@ -32,11 +33,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, } - res.Header().Set("Content-Type", "image/png") - graph.Render(chart.PNG, res) -} - -func main() { - http.HandleFunc("/", drawChart) - http.ListenAndServe(":8080", nil) + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) } diff --git a/examples/poly_regression/output.png b/examples/poly_regression/output.png new file mode 100644 index 0000000000000000000000000000000000000000..84c56f90788b93134e4b43c561daa937a4bd2b99 GIT binary patch literal 77622 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

    pw2V|jKE1kW39yw_M6I`5}B+{;3yOeVt z+N~~{`K|YYt4YZqxd3CA_Ry-kySaJ8*@K1$jZj@(eaXE4MPJ1lAB60p{^!@Q=og+a zu?z2yjk>tDNrb_I?8zv)gGp$1hocIP-Bwo(Q}d!1{09g}hCA?An_iR~uU)+uuGj&P z5Bhl>9fm~%PvvQOkc%uv`!60?(tCAvcLegx7KWSjuy%O0{m?p4bfEzOw9d*Cq2p10 zGgZ8a;{@rj( z`5sii#HtanfB55WJg~2~w_D<&XsGhhca~u3fhRZ_L5DulYF*rjzwhjv|lrj7x<1%Di!m%+`e@ z7;dfrirziN%Rkr*`1k!8dIMH4!fEwC$07mGKC^n3%c!a{nC5kpe+$Y;&(AzViU?7|RB>FBzFF2^Tj(eEzPIz?9 zD`W-?B654}mxtrpE(Q#$Zj4CZ$srE?q6Y(lFv^kb77EtW;XbQ;wLSC_cbUIuQJj>( zl&t6xL`g&FeH9fTu=Y1%+wxvr(L@p|x5t~Z#kXWAZy2HN`}m>BCZS6?cWsSo?l4W{ z^aNZ&g`l!B{mibJnVAzF=BwT*NvyFb&Z%31OEMy6j+2S$GsD315}hd8r2UdsCX`RojzeQgozMjOqAZ zU}YpPAA}^TGz}WT!l}#zX0f7`@%JEk5t^ygc4-2gSOoUY2417hxatMkgO{y&czI3X zZqH|HA#YYbu^ILWmIm|9*2J5#)<`?(^Hn<$o&oksRnC5g=m?CPT!P%4-=k*LM1 zoTZOL4sNh5*EFi_;W&(gg!sOH8Gf9l^m1nqLk_M_9;;xviKt89(=jP2X=x&Z_sEeW z%Grk5k5{Y{B!jtG(Ug-BnTeF9i+ILVDE_hw%Z$<8XM(J|Ew9Z7L<6xItN{}CsS>@$&0#f&3~8|bSjjD}F82cG#R~`# zt!3HUO(kYExUt+H`ku>+G|3b5)__AWnPRY?Be3xBP>j#BCB?vZT@WYOD)6)W_u4ve z;3<&YHP{d(0++PQX{GMrd8Yjr?s$daytL<&CUXfXwx8k?p2p7;xXtM%0s{Gd#N5EGgcd&GvUV6}+2M`B>;>So3d#HTPv70(N z{a2ZUUWSFe$5BDp#&&sjc=fhu;cEy8AU9A?SEk-=WZEHW!q{XyCgqlVl>6k#=OB(B zR5Rz4U3(~dk(`D^e>n8+79&sItLB?OK$bGm5(V3e?``<807Vv^l=P6|N;f}sEkSM> zE+$%9fMyoHbZHqa>1{{TD^#t-grF%=%uOt=#=mlZ-RG) z1dhzm6tnQ0Iz*Tuy@OnqX*4*E-QYO%I~i3q5A85xOD7sX&uAGc>2OztSc z?!l#lCXQk}D2PBz1tNi^vb8P@#Btc~jw6hWWa*G|bno8K8NPb2WC;ggg?vwD=|` z?H<-G$oMZ$gMh$K;IjDmcw}vk0LnwJ)mlg`e3!5>8$ z0lop;Hm=)|weDP_X4#>hMK>;)5LC_3&=7)P;o;%%OyD9nUFo^+(i#{sKDP6-w1W7wdXw7W*M8$sr?1~(6<(!UuTsZTxOO=A zhS0kF9T7)p({&%Or^{an1;npzopB{HJ^qdr572D*Z|t|0wv4)&M50nlh4e{2OEofR Qe@2oNlfIU6MZ@*~0Iztk6aWAK literal 0 HcmV?d00001 diff --git a/_examples/request_timings/main.go b/examples/request_timings/main.go similarity index 89% rename from _examples/request_timings/main.go rename to examples/request_timings/main.go index b1a8929..6c6df03 100644 --- a/_examples/request_timings/main.go +++ b/examples/request_timings/main.go @@ -1,14 +1,22 @@ package main +//go:generate go run main.go + import ( "fmt" "net/http" + "os" "strconv" "time" - chart "github.com/wcharczuk/go-chart" + "github.com/wcharczuk/go-chart" ) +func main() { + log := chart.NewLogger() + drawChart(log) +} + func parseInt(str string) int { v, _ := strconv.Atoi(str) return v @@ -110,24 +118,16 @@ func drawChart(log chart.Logger) http.HandlerFunc { Series: []chart.Series{ mainSeries, linreg, - chart.LastValueAnnotation(linreg), + chart.LastValueAnnotationSeries(linreg), sma, - chart.LastValueAnnotation(sma), + chart.LastValueAnnotationSeries(sma), }, } graph.Elements = []chart.Renderable{chart.LegendThin(&graph)} - res.Header().Set("Content-Type", chart.ContentTypePNG) - if err := graph.Render(chart.PNG, res); err != nil { - log.Err(err) - } + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) } } - -func main() { - log := chart.NewLogger() - log.Infof("listening on :8080") - http.HandleFunc("/", drawChart(log)) - http.ListenAndServe(":8080", nil) -} diff --git a/_examples/request_timings/output.png b/examples/request_timings/output.png similarity index 100% rename from _examples/request_timings/output.png rename to examples/request_timings/output.png diff --git a/_examples/request_timings/requests.csv b/examples/request_timings/requests.csv similarity index 100% rename from _examples/request_timings/requests.csv rename to examples/request_timings/requests.csv diff --git a/_examples/rerender/main.go b/examples/rerender/main.go similarity index 95% rename from _examples/rerender/main.go rename to examples/rerender/main.go index e014e8f..ca4da0c 100644 --- a/_examples/rerender/main.go +++ b/examples/rerender/main.go @@ -6,7 +6,7 @@ import ( "sync" "time" - chart "github.com/wcharczuk/go-chart" + "github.com/wcharczuk/go-chart" ) var lock sync.Mutex diff --git a/_examples/scatter/main.go b/examples/scatter/main.go similarity index 74% rename from _examples/scatter/main.go rename to examples/scatter/main.go index 99ba2e0..5ef7675 100644 --- a/_examples/scatter/main.go +++ b/examples/scatter/main.go @@ -6,7 +6,7 @@ import ( _ "net/http/pprof" - chart "github.com/wcharczuk/go-chart" + "github.com/wcharczuk/go-chart" "github.com/wcharczuk/go-chart/drawing" ) @@ -20,13 +20,12 @@ func drawChart(res http.ResponseWriter, req *http.Request) { Series: []chart.Series{ chart.ContinuousSeries{ Style: chart.Style{ - Show: true, StrokeWidth: chart.Disabled, DotWidth: 5, DotColorProvider: viridisByY, }, - XValues: chart.SeqRange(0, 127), - YValues: chart.NewSeq(chart.NewSeqRandom().WithLen(128).WithMax(1024)).Values(), + XValues: chart.Seq{Sequence: chart.NewLinearSequence().WithStart(0).WithEnd(127)}.Values(), + YValues: chart.Seq{Sequence: chart.NewRandomSequence().WithLen(128).WithMin(0).WithMax(1024)}.Values(), }, }, } @@ -50,8 +49,8 @@ func unit(res http.ResponseWriter, req *http.Request) { }, Series: []chart.Series{ chart.ContinuousSeries{ - XValues: chart.SeqRangeWithStep(0, 4, 1), - YValues: chart.SeqRangeWithStep(0, 4, 1), + XValues: chart.Seq{Sequence: chart.NewLinearSequence().WithStart(0).WithEnd(4)}.Values(), + YValues: chart.Seq{Sequence: chart.NewLinearSequence().WithStart(0).WithEnd(4)}.Values(), }, }, } diff --git a/_examples/scatter/output.png b/examples/scatter/output.png similarity index 100% rename from _examples/scatter/output.png rename to examples/scatter/output.png diff --git a/_examples/simple_moving_average/main.go b/examples/simple_moving_average/main.go similarity index 51% rename from _examples/simple_moving_average/main.go rename to examples/simple_moving_average/main.go index 485dacb..35c90c7 100644 --- a/_examples/simple_moving_average/main.go +++ b/examples/simple_moving_average/main.go @@ -1,17 +1,18 @@ package main -import ( - "net/http" +//go:generate go run main.go - chart "github.com/wcharczuk/go-chart" +import ( + "os" + + "github.com/wcharczuk/go-chart" ) -func drawChart(res http.ResponseWriter, req *http.Request) { - +func main() { mainSeries := chart.ContinuousSeries{ Name: "A test series", - XValues: chart.SeqRange(1.0, 100.0), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. - YValues: chart.SeqRandomValuesWithMax(100, 100), //generates a []float64 randomly from 0 to 100 with 100 elements. + XValues: chart.Seq{Sequence: chart.NewLinearSequence().WithStart(1.0).WithEnd(100.0)}.Values(), //generates a []float64 from 1.0 to 100.0 in 1.0 step increments, or 100 elements. + YValues: chart.Seq{Sequence: chart.NewRandomSequence().WithLen(100).WithMin(0).WithMax(100)}.Values(), //generates a []float64 randomly from 0 to 100 with 100 elements. } // note we create a SimpleMovingAverage series by assignin the inner series. @@ -27,11 +28,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, } - res.Header().Set("Content-Type", "image/png") - graph.Render(chart.PNG, res) -} - -func main() { - http.HandleFunc("/", drawChart) - http.ListenAndServe(":8080", nil) + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) } diff --git a/examples/simple_moving_average/output.png b/examples/simple_moving_average/output.png new file mode 100644 index 0000000000000000000000000000000000000000..1c00f38141510e92bf5aa4f31e5da7a7b738b25d GIT binary patch literal 81566 zcmZ_0byU>R7B+llVCZfH>28(IK|m=9K|n!Ckq%L597Rx&Mj8Ypq(kW(TBJh+L_#S6 zrAz8Nc<*=Lf8KX3*C@lR`R#MgK6^j=dGP-M};Xe^k1W5Q- zGkcI202rX5s%+?$x^_b7XSmyV7WuUQvLjDyH`fb_7z!)B&{u1>&^uOl9qvv}sx^+T znwy@C9W_^(7uyv-7Objlbh{f`{jRE`PX9z8$IiJ_@ST(en#TQE88-#;h0~R!lhkeB z-b1do`QC{ozy8aI@~r+l?6ER3ybl&rx4lJ6zoslolUax{kl+QjScoN-BkXq(|ND_) z8;bz{egS`fCHVjKgEgt|{vT&Y$JbpypMR~duU9&l4bY?kc!dI5{~9z|XG8r}NR*lT%U<00#$0>ieUS{xmrRSXfw)nsRHS zH8x`(kGD*W6Etqx`YbqPC(cavbk%gG?)2~KT;y2M?d>U#f!&>*1HUF>ks6DM5BFWF zP0M6T!2h0RyFI8veo@|QW54N@;dRGbuOEa5f6dSSeod3}oc3LBTpcS;k@wzO z`BE6$oo(?AzFTs)es8Ns)V$i|d(wlqwLZHmZ{M;2G#AzFN{25+w?EzsI9$llN+>a{ zb~)Pn9aP`>e|F1S;Cck};c`}F(_Uq1AN;PNcWT7+B2LcE_ZjfO#+a$=Eki@U-;U;m zrKQaqt;G2F`0yzL<9fk0*T&s3sisZR(y#T--y{KcaF7Db&YYdh zC>^bROmS^W;?jt}&+4_wT2rrENS;&h@x))?z_{M~mE< zDlpz&9;Z0>#T=qWr-b#0??$XB=z`}GZFw1&&&;{Rpw3zhZp7%oBoSWC~%9m($Rrg35H3T4dPT_yI#`E`6%6|@h)r=SLucC?99jNx=eh?DJdZX8|SNu<<$*lJ zKYZ|_%@UxWK5e#W3nHf9+W_Fn@5v6a-s8jVxmAD}P&^_56yew8`#kw{@=YttZynk`%<|LrkZD| zsucb%XO%YYO+G#O`t;DRsr2ayd_Xvp)ag90QpmNe+Mv^mo>S$PZNW3Ad(|{*eaRBU zK+JJWsClN@sw1@d5GyJq7~kt$`^hI!Tc{%T4~Rp%`@)JRry#wLW*JYi@ir9fG zaBuY0f)bEGde=6RMJoKCjXWlsIy2$KSJ_$P`0n63(Mp5!+jvW?p=)82VXuxJ-x#i} z*Ca!(wc%J}XNLYog9yjm_%Gi7eh#ax>&a!k`)r)%-!-;=_EKusT&A$$v#yUlvKm;5 zF=&UxesW_;USnxTV5B#cO&SCx&o5iNdW>mf?OA+B9Kbk%*>O3R|DI)t_*a_Tdd_h| zL*@fEW^L(8wg~8Mq4G`M7VaO=N|c;4{Da{l$*B!=E~31PuTAY_cQC937iG6=VO6Z3H;CJ~766DSEU@rMqwmciVht zSXJov=>PVMKRCridB2mPGoO+5MK(kK4N8R6GiUTAxRUZ8X-!P<#CGz$mjdW1J)Qcf z{{{0blCHA>wdZB&vcYL+V)gsdqBn3GxvCHy(EMwjFT4+9mzzZi2=DO{qN87^_+$R# zkDswDo&fDE6LcLx6Z6UK9zErb-oFLDVIX&1X?|$r9cOOS*DLo-_5%Ut+_wVt@kHDX z0fnbQn+J=}I{Hpy3(VdrEu^6@dXKdI%Yb}sugwrnh*q79AS@B#KhtwmgHhy--}Yla zc8r|;cjr@`0Ghf6$)?89=TlC~2ZMv~y-7;vyli^yEzL&6e;kw_$9D<=BoJl@3QOo% z|Mre>=!uwncLMUV>&9@l%1gvg0O0Ao>9z-M@EEPe@!qsbW-!G53NLqmP=XcP<4v~e zX?&=4e+v2HJhAi=(r2(iUt^D(o1&p?7e+IT!(T z87<}aBFqkaVrK>x+Vcy#?-c17+u)PLRb!p7!c4$|QVd?SH)6GPY)DMOjUIgx5@A*KhuJL3)Rlz?X0?}eaD~1npm+djTn@XnW&4P;i)i;ctJ0U;fE*p zT|q^ft&5F4*$RgRMd{X?#9=YHf&;Hg^5MjcuTk~h*~&Zj>a*ALURT4)=PyseoBu{N zxln`?0hC2Ua6p($!-2caueFTVxCruzbPJUaPr@0($lhsiQ;OYa4`q2eJw445+4WvG zU58@geJ>V^e(>P^tOCsaFrCuLwA$^&>MAD5c;tSSbGXCUCdLXgL52OuaX|C3jyud{ z(&VAIo@vIrU(<%ha5g23M~!B?SbQFeprHXJAdG{a4b?~kLu?{gJ3H*zUpdf<`4b@q z;~#^Lc+Mbl-ZM5N>{MA_#jSjP{}d zowycf`d3z}*a7)%ZBNgAYF+uwwT}ZaT!-z{x&Y9Lm>pQL zG#_+`0RoNdu()=A~ia5q||kGwi=PUNln36OS1n-NG#QbSuJ#Ks*S@! zo`fNgdHl@dSAH!3<}nOE_1DfAs}RB*K>ByZh~ml4$ll)GpFe+~5f-g42w{aW@U-n2 z4*s;?c3+QZv)N#q3Pt-l%%BxC!al94uEqhj18+%zowGBy#>3BV_yI`h`7%7raRFG6 z0(ioB)J~^vTfZv*RHa-vb9UbUarVb=&X;;caO1JFe2BR5?=BH^OsXAXD=HAW9~)2e z89p>il}`Zk691V-HE{l3_ZR}w+NbxPp6ouC5;AW(UMVbX`VlHf@O;BdURUX)VwM!X zimU0LqpSN7bIU_n@` z)17cy{O5xK&Nj=+_!9!T7Z-Fz+QOH>tC)`(9U^E3>QC!ujAMZ0hZdE!*bvuyGlUyu z$16;Fz~5h4*CPXV3(ZeDrJ9r}+Si|+`9{c5>M$z>97CjCJNultps+9}Kt-O#yvhk) zQ9+}k4Eqao__*ttdC0sn^B3@rZ}1a6$E%)&e@!d-Lb=S_sQ)vSOQVPXv*7 zw@IkhM{JM*A1Bx4wKC$Umur#dF+0ldj8*-HMUf+T$KS7pBrhH;ix|RH!bPj0&~+#~ zSi}U~K4XT6Pgh}g^l&Mi{C?AyFR%_MJ%xpl=Su$jR;lwVnQypaezt24P2`EK-5oRa z{5`n~%e@<^(v(f(!^0oEw-=v1dlni>1kmt)?fe=cuI`8wCF%736vmTewy+Ws{tKU- zV+;S;{q@oNqm*X2p8{PGt+AL(wrtC1j6)#o*U`PhfhXx(DJMp(YWXdZ2qP*)PZj7M znVA{*;3UTI;*8{F+lJb~fQiuFkJqC8NmrI&@j&-I^=D1}pSo2DN)Nu221vM0H%zU< zA`ln&?M*yz(}baL34(ZHsV)c#JH1IX1Y;qjd7F9ZgiTddq>c1h7ATwIxDG=$%x0t5 zL-WJZ*%EmM)NOx)oZtc?j8-#&*KoGR`?o$TGiRs!u#&bAJAk+IMzXkl%X8Gmd(p<7 zo8lK5VadELHBsaK6Bah>wM%c&Y-JA@K0iI(PKU;Xsd6w$I$>OEU?ugSFL`1A$hgSF zefNuT^JXU#bJxO4e3^}}s6clHemp%~WlbAyh&NuD1v6c~Oaz<@Zv~@pmG=8iHzf19 zAQ;j!7(c_oe|C|vjTU$fkRPSFy?3MWLuK$$mT?FgmmIf{2W%YtjMPn&-Gw1ealK*N z0{49&vUfgY58f1>)g0wWeZNm>+?$!kH3kezYaV3fZB}+T~Z~cfIuW8yX*`f z%;sWV^8BS<8)wFwnvBldn3HSX#74_)t@Gc+HM@1|+_t*!E-}oNoXNT7{<~jV_su=O zKmKawK}xfG`rGws?BB|duqLP(Sc>%-FljIpW4O+_0catvQk|~{n;)^g8y9&AI69UG zgp)Kl6qwm8ne<3*;+`tWbZ!ZijYYKQjC}4~OOGV0q{VP70-L9SUj_^afbG; zu;PQUs84R297NZ0ltU3}?Y-8?Ex1f?`XAmp%zq{wK*FG_OdQ2nNGhc!R&?bLZ7m># z&~1=C@hon@WDMc@>(kpXnk$#_v4N%-u{?_3XU{h3j?43K7J;2y zqV)TT>(Ok<59c*UtMV@38oeMGzvBih5clYRy(wb3Y35L9lBmyjA$CrLjb>i8gu;U- zaCm`(6@SSqtr z94Ve#IJLF(kFVA|LBtxZ-O)Lh`Xh`diyh^a3i<(OhSGa^9U``VB zME%K#%lRUS01>VTnq4%h*DcRfDUFJ2`$V5tM<8WlUy4_;sS=q zCW6^FY)SMW^*{%2YMg+;T5Rh?sSSahP1N!u$*K9S@as0U0w)5SD2Jo2Z;j*diaL*b z7GRyE!QY>~YawqN8|@1tJ1)-#{fMdz|NRLM)F3Tnk?u`+%qc@p6I#b5BmzDH}tqJjWu}{U)(eU77Bs7MdSZKrpPYHbB7&Ufex8(k2BrNz^A7i6@z?FQ|zBp&G-lLP)SaLo(bnjWBxj z2@z#mn+(3NRv*R1C@38wz*|)CrDT)j?Rpv`A!|MSDIbe*BtbpMWJ|W8ZGJpBG8NK> zaR(NX3M$&;50p`C8y~;lSNhm1pwVIZs8X<{Ytu-sZ0)zmDi0tO9b=i+Q0r?k?sm_&4=Ri0uL{wKc^L5@%bTn7b_=3#3m!S{Fic;*FaO39MWCD+}v&@$v*L##$ zqn|H*gW(ff?XUXtO=67xermxDAYuq%Ya^YL00hQNZ;1%H!KfrX~MOR%=>P^R`g4S~; z8wc$p z53(=iJx5;`D*lW^18Y$S8OndB+gq>KbGTl9qbakDglgxe^o=|miT-v=rI30IiR$b_ z9Odt>VrGa9S!EnC9|{JT4;UhniLi;oAp3UNiQYq(M&2_uc_J*@iXYY1$P5cWeN+WP zq8SNfaO^;*T|pAu!$DP~Jn!@CQrR~#Y>|JmFRmQITUWebNz5EggDqJ%Tf>*cN;gwE3+aVGA@ z17tDhlAj6wrSi=WXYZVTG!S8!sok?iN>p#LYf@m?9Xposa1@kp&ZRgpA3TbVP-X?6v~Y_itL>aY5}V z>nnTNS;*b7uL?L(gAIXK7^YGx@vO_d(WJoY;F1Nyzr%ONw?tvJs7dghrp-UsbEO^J z*^BgbCd@XtQkP&+o0d~0C@>#P6EpRk{(y?i|%W;5L;V>mU zL4MY3X8}@`MAu}DbU^6Zv8xhbbqxY-tyl@$s@ z=%X%useMbr)78(5>gwQY36RWaco(tUK?{CT)J)BzzahmxEE7%!Ft~BF5#7md5U~=n zyYw5))txjIZ9eW3k!+$Vj}(0o+3oCKPBTE?H4L+Nx^^$VCxS7kiU_zsxMUJtad^-@ z%^)WL#CizDs~w6;%ccnkbPzovj<9%nVj-3AlS_WTJR;_;QC+)=DGmb zOX#5|(`>tj&ZTVd*k8jZPprKj1B?uTp|J5mVne$iD8~P>-7$PdAy3@PCr*m=u?`VIXekO|x#D@93b!liZ;-Z)bO$?#D$hXJ{f6j=?;QxoIKpuho^(ubwYihj}*1dzJdI*BTJ8_hLq8`HQS5CrPzb%cH*T#1re}Rk%33%1@Gg5v_ z-OgBNCn9U{md%xA95Mh2xfFR+UUJPY24HGPZGrCtiKf6zSPntlrlXtXT09et-5Y5>q zC6mK2_WUczphcKN8B26=Gm!NdfQ`6PKh)`?!>xt$s?NY*V^qIx3}Osk32nb07vvED6!i1CGSERQ}k}#BgjE~t9BKgYEVUDXmI$Rmz{;a zm+B|DDbYa2P)n)j;`8RB0FWUCRYXJ2{tj{NH8V4-a`e@5KP+1IiMVKp;Df9#PxIo2 zt?zN6LC;MdJiw1ffvbP(T9Um)Rud94n)H>-&rQtzPH`9KZ=cI_eo_CtsF7nER>UL?&P_U&=GfO&R#v)gQxSp;6S=kO`h9QLFj~HSZ(hB5 z*;##I^a-8Zvqe*O@4LA12)nC|ml&Z>seVQg*mqts#~Dm7+r8dhtsd@^Y!MVmSjIeF z!y8Wu7`AnGEn-LyKj@lX@$Vdk+_(!zpPNpFjlRa}vv$TV-^Zt z4`!PDp^MQTFXi4yK|VvPsI)ciPao}!=yq9^x84w`U;98T+92keH?%BR+HjSk{nz{S zw_x9wA(*jV=wnR@(MdE`G{~Lr|TZCLPgx;tO086IRV`Ux(X5j#|It*3iPKQ18)^nR8;n7o<4;f6Z+S_v-x;I)bhRFg9p4fMrw1<{>xvHYGos_@A1_YLD??n zbweBr2Nag<0_Gs(vijg_rl879c!7*zLU*8G7}f{nqo0_;x1NQLI~al#Ru4kxfqojV zXKaXDPojC@qG!hN6E6dA?VwSD&U^X^j)Y`z}1O^7CNIFw}-&>WJkdS~ZY zlIc{0(boKuvrjO17Hs{7w02-`KbaRvcJ#?6SWx?G5?=s8e&WFv&G4xz zL}MdFU>(L2o)(}-%2bmDMOdA=8R^6%rM-3|??_*W(}(6)3qKCHu9@2x_+!IvSK^*y&k|CJD^p#!zT&Fn_b)QaI&>%5ct63Vp!nVWsE(fAKvc^>AWkR8dTk+=UH(sa53Td{WHniTEx-Ld9gb3w4FVdv@T z($hc9X91z_nzqx{0e~_6KUCdjHI&_9TgSY#%XEWx(2+2dY+1+Ys;XDYrFazMzu@u? zni1={Fo+F*?~YO+^hThuH)f&kwsKzsG68ItMbHw66@ur_eFHvUnZNSop}wFHK0(02 zBgJt%8VT3+5K;S0`YS<(tYT^65XBNt;~6&MW!U&y+>!gS%|t5zYKT8kSeS?W-Cq@H zzo_7|Q~C9tX^opDj0>l$S8RK|*2=s1LhII>jvO2uSiI+>3kskL@aKDdwbR69F)`3Z z;CJ+GW*TOKG|y>`nECIXGo-6PBw@7$pVi65mwRTndq1nN25RIX*s48~CXnrix87Sj_WZhW)caBGa=18g z6{}`{aRM_U9tR(EWKI7&O_PhacaxJZ=tt`0u_j)5pd-(+f2i}uzXTG#jwQ8tp+15F z0`Z$9q@>D~=!gmV=gz1%+9(VR?TPGV#fUOHVv0vdwUteJEf2+gH&JCtPzD)qLxBB; zx${^oB5J=-JjSjrAb7F1qsNR2HU#t*J zgCpt5MR#M5aY4D{?P(3I2dKCOG!1Yz^o>98uigBK?1I8?C5o?Jtg_{^p$97C6&;&5 zk?{s>Qh5HQxwqPvA|*qcGkJ6tX%oQSPf^qy&3IL)4^RF@-!~R6Q%q~gi8>Bu zKJQjmWg7-{KMK=mkn%*uQGa-`fC0b7vsV3-CWx9(33s;rKGW7jwGq!91cA?Qm%9Z_ zL-G;b=g0~Phy?&)Cz75`m=<%>8S`sdH(kEJcrlH8EzstI-tB_ZlY7bH+n2>(K-lmw z_{Nhbicl%Oc>&}9Ne~<&FmY{|pbH=i2Q$sETEl0iaOZW5G!P?V{KuIEmgd_zyqT1n z=al$`F(45W<`)u(B8Yb()*FBD60p4`2J+(3;^ki=T@jbRq0|jf*k6i?H`|9D60*JM zOg2?xFIeeh3!|6$;sBe3(>TrEx37d1ZX{w{%j|b)h606BIP$<~yg}oo&i2qvzO62h zm56Kh*z@Rip)BcfP}Nnq5&fu35A^LklE_2fS}QIjnIi^sarUN~3RnIpbh5|_mZJ9V!*L(36Xm~TG58mAN^mL~zOJNom z0wDAf8JWqL`r+y6K~c!`F{(Ui;(7oX(1^vVAx0kYKkredyoaafP_4LoA9B|;k+!5z z>orj;kxHgVeB1FA%|W1xaagp)kTaOSQTJsnlo{JimzGF7f$I%&)@lL$#%$vmQfq(a#ED~tYqeqDa1K}bn|0BrRRLL@*)(|osULO@&?opzFR z@n!5x+U=6ZY4dCqkk3oFEgHgqHt~m_e64zqAyoAqLjDKxMHMnbMa1}X?ROZzJx5S9v*m3mqC=kO?=vW+?3M^ z=~*jCeC#S5VU2(*@eNh2uXoQT7*vFF$rAtD9fe`c__;~~>elbW!pzo*{ z*QunTf7+K!spPIvfb5DJ-yz|~ze;XOokIn}YO==1@G9JXr|4RL`Xce_bFx7Z(&8?d zWqQmdPRKV5ax8px|IVTpr}zVkT|)X>-Dxowzw>+XR&FqaULRe&iJ8;MK+yuy3z#Np zt>_o_BH=eVeqmDh8uh^tjp-r}li=Npbm0a=222Sl6`0}Ry|@@3=Y0$C*jnRW*Q;=Uz6Gm zP>dMuqjb7*Lojm`;9!QQ3b-fJ zV7Zxqoqfo7!W*vAd%&(Gf{BvKZzhqs=e^rb5VX}a>-}m=82t`%C(L*x@7<5=U@uu@(rHJ4uddUOjrm-{Pz4eC zRG4q=eVDUvEJt*wFdFTM!e+8l6oG@gs=X^y&&KlQOmLk@hiF!N>IDQ&=G~8Eo_!`k zU^ZkexTK0&UWi5IXi#k3-q@kqRUWo<<(Q4-%x}T1FYA`uBGxj(XTIU^5m9;kaQq2h zZFYxi+p0cwDD0H^hz)}b>~Cat2cEcZ^`-%Px(5Ao8{#N;s;5U$DKaCU=n>k}^>$~G zNgT6N6ky!V(Uj6HCo+ud_Ivxw3l=h1gpRf&XM}+%=70$E_5RJRt9X5ZSUcFwM;EmX zf=s6Og)}XX>cI{^G?UnSFJtX%#)j-V+YN`I`bl}U2X?s!e?BNDh%x)Iia79unRMpyCJ3V`G- z+|*KpSTRZ+LMUKi#^~SsOwfWKH$+E`c?Btc6Twzo4CeRa@?N;MLCxydJcNgP;>eXa z79^N^iFmKKCM!S(MsH{0&Y)yza;$z6GV!H;hjkg9UnD%1*hOl9g_X<#a%j{ViFBK?hyYB`r8iNScBy0V} z3c^3FtVw)GMN6CuTgl=C+SgGQHgqPx9w7*+(n6(2QFf|07VdJSqkkPIUo_)g+)ES; z0-)f-!?Ox|Kw&%#Ug$djqT$ZR%34Se9ZRu87gy#gmxv2`iy}QaYh$I zdd8F6_Ny;t-;&NpHs`T)?)x4|ku%O^gcWS7jBeDMG(82rJbRrVqn~W{Jr;;&#x;uJ zn2r9d9s7$GQ@z*T@30qg@63-lil1Zl#T5a-7gk%O7PV~Ho-d59CBo!PJZdSpNt#3-a~pgZ)i0Gy>pHBY|ztM`rbp9EUQ6cQEZpP{5EgyZw!GrcdjPo>hN5i9Nin zySR}VcAfPXZL`VZ?K{_hUU!n(^VDRo#P+>3E@r%oU`X2)GCt`D&XFAPnafrk&auZy z?yUqvJdsGRk9Ql+x_b8lPo=LokYV__dHmsR8bLT#UVT_V;FXQEa3+qjxRsALg|s1+ zxkcCh_5{xluz6M$p4eP&V?4#OXn$C+nz0U`!Ay`Ay}SC#>JCO4oNf)}ou<#(hQzGO z2Z!^~WID4nbs(^rxOD)-5t4m-*C^mw;RefeHJK#}1eD*3ud>K4K0Q(6_=PkKr3KRl zh)~SkBg$+io2Z*0MIN8cSeL9O#3uO4oWQ6tVipH16=QNfm4sE=JpIQMMf7NV%SC25 z6EQp`wW2Jer7;4%`C1NFVR!>#jLP&;c4y>DB;)r3h@6To7Ie3o*>6Z{W_adwdXeisvT3I zhNfI0GSX3*8t+8Z*<%)#O(>SHg%d~3IJ;HVi>-D?BK5u@Y4-GUcUv_=vbDZK5vs7z zE+#xBZrk^x!k#E^$osQCGe4L;dH>8=8m#=59c!8ZY|9M`r6kY0F%E9;NZ5R5JYwU? zkt1`}P>&g7OH8!ZrQC2ojTSm%p^>%7AJX5Y-C_5@f#jvMqP~Ea!Yunvaq49uugr|I z2kn=>KQYJr7-HA@P=+k~Jy-^SzP`>-;tV>Q=li0y6AFXF)<<*{aaFPM-MzdjW4MLU zj}QX-OnP3|xj`QJP?{|*V%jM(os$|QRvs{Dm$ADxEd(=4nO+RU>h&&ujJFFN5qL2R zJ6)gPIT;`Z*J{F{krZ0AHDIC$#g_~z{7mUqoFM8vL%1tyUUu)ks#d4IWzW4Sgge}* z>E-X~bTg+gN7IB_s_(en<`E6IFe#wQ!U2Iwlu$jZ*kUWgbg7e~<@*kat}a9w7uPIE z(;$5NhJlTA>G)u29N zHe3&yXt6M|rEH-eGDgSK=l97tcc#3mKg$zQb@0VYH7k`eOBQ9DDp&YV4vT8<`xA*!V|3 z3X>R;QqhNyjo*k{nzNL11NiDG~d;<3y#{q)_qexJ6k=y#-!Q!g%-b7;UN{-{mH47<`v+LVb=2q0yazruivlivCi5 zX$J9A!-81MeML>iW0B{U%AcpUVSC5Xk6sPV@3$?RH|zYok`l9OV?MhrS;Lkn^m^up z99}7xfp%q!ADf9ONRqCJ)q7^*hxsj?6phVa!%Ua^IlF&Va^PS*5=R1HC)y=vy2K_T zfI#P@%Nq%(fpfDXXb{^mI!xmj2cxOOyQ)+6sDT&)aLpJH1XLNOr#-|ry5B-zB6$S- zZN6qi>(T_#u~FlI{L8NtOJm@{ z=6c>+B4`l~7qh?D#lOA3`F;8dm3@lsOYRYlTecN4F$*R)5fo{eZzE+mW{)9PS(Yx| zfl}8+WwhHq`vv7*VW3WG42oP4!-+1O=k4kr{V;G})d@MR>$?Gs>x>MECo--Om}DR* z$U(&(AxTc{SH(zw$7|@F_c^kJCfD_;o^v2XbzP7ESFt**Z@GPVss=d64>WEugBXCz z7FJO4%Jv9S;fw8(xpA#F0$hJre4p?r&5SZ!wx_|odtD(z#ufC7D^?X-Cjhv4aNy<0 zBb6OOed3`73ZZf%i<^vU{J0<}y8KX(#ha!JEX_W~Ub}$khSYPhUl*lf#ztp?}24SyFh$tN^@Y*uJWR^s&RsL8xww)zEY>R8wk`be<2HZ(8 zb#G6pFMyACFxldOn=yRpHHJy0qy%w=m$p@n*>c9M|+#rTgzq(3|^3pAr3UxQ;rS&Y?>` zFM|AN%?M$UOgtr^HkXDDFXAWXVaQ*1_y05xFiDq`v%|lvbHvz3EP(vKi#!WwIP8S8 zJ$SUK5d_oyP^dDHBZ zBbKEDmSVRgGiseKX#gp;Wu|x8gh@o0h`(?9x=R7NFo%;ex616+Gh?YxNvcKZsGY8) zsIM_}Y-uxdF%AgLk9P#Yt$+g2PB%aE3Ihzh$JQ^2FeQMkZ$-U`RnhO@d{8f5*c1wn zdw*9;UtVQD_#yGtEcUDl4lFHv7A&PXAw8cvE3TftV_>iiwT4#X|N9`I8^VYPfu6g5 zUy3thn&C>b@|U`d{NY{OdYhVD9C#m?>|kcR-#{6q8MKOi?q8_Tv{+wxd7W_c`!K?j z->=bQSx_^X73%*}P18FSo2^8cXSZId^3-#b?&PP1nI8X9_5XtkGXx|i#F}*=zifAn z(JJ}cF^6UEtY_xkw>*sfoZpd#nmQRm_zW(FGI^KgCub6>6oFU{Do;t|CPJ*m!Dxm} z>}4)C=as##y*_TqtG9J75t&gcqHrp&AIwFRPefExaseC z!2zBZrK}1*G++Z#`)-T9NgHv&!FWS6uo0ZaYZlQWSZGu%3p-?88#X(QVJG8e7poF% zXg{aN$0@qMazxK@@Ywpp7PeP-yN%xF`9PMB6`0q zj~_qSF~8$S`{AKU-1p)BtLdb9hX^dxm&^;?iG6It6oOTQx9bTl>^?a*;eUGWxPm2Eo;pHC#MILdK zzZ%w$co4!B=^;XhoEoYILEa~ zqV(1v*JR=-Ht;Ec_eLU4hB@w4+o2jrjfRfta z;NXAf?Nado9)Rjp9n=Y6(|?pUkDAmBl;+?cm*$fv&1da(d6kuMT;2Qzxd51n7;9<0 z_C{cOu~%s}I(tzFOz|Dek0MRVjep7xiO}Nb(hIBFB)}$2$gA?*LwSTFYz=RD&v1f%njy~#Lie#z(-+M8)oJqR*4O%bynqj-Q@w+f&reh{Y2~~(HzGoCT@FS z)!}>{SgyH!L%Q5>k16(yh-hZhN>ALqN0}lcGluRlGW>n*J~@|Bqtamh{ce$;Nbw)I z4#ANUUFQ06RNh4y#wuBEo-gu=1yEq6E+;L>g-I_~5PT!!u^l6%747`|Fjx@S+5^K- z%t`0{dNn~HaO3gTb(fcZpKf?j*&B&~vQfOz$KOgq)0u9+78#ur4~~MUc|>_7Glc7J zQuPU8u3L%U_)A#I_mmJk7BSS+#K|Z`&KBuIoxMi=`E0RrQCb1hLJq;5>I;+z$Be?l z*OrNJ7^4VID#Od&423>fSy{!yd1`=tdffH&{QV#pDPXTWY(y`CZSXfzBnc&-Zguk> z{r&6GxNFq18gw^_hWjD8^1GO@?Ms8cM?VvE1XVVVwx2yjx6C*QGU)~5sA!P(F%1$v zT9G!E@ADszbCOH6Th(@wdo%Sl<@9Fw(FkXLNlWhuy;1(LGv&nHuf~buBsHS_c#ScR zd^f^dzek6?n~zxc@Nr`GK4u*tSQ7$?8Hg6FyJj$=?f1&Tom=8?WJ<`d|5n`Y5 z-caxM_K7T0JB6=36jQQvdaljEbWtNcmFgoxxCn^f8on5;) zPX5-O3)_;6QZA`bhIev$QG5mk#{ei>RY8Tyx|1Y^OIP+6*FhB=w{eBt7fezv$1BFo z$=~*7TLR&v4I>8K|VSNAhQE?_5%wX&kZ35szR78&o}anw7k{CTVB?=v?Y zJth23fyCp<>#veF;Dhk}m6 zV>Ra)e_>}O2fvLE?*0Yz3Lzv*9E6O%eSf1MyxxkX5SI{mL~85ML(3wWE0d8DqG*nU z`#TVsbK&ZvOw*w9E-Y``r>L(&lx4D{XsmSxfr;5}-U06wv%S5P*iYLA{RWOPI( z@oDnj4^OMQZ63ls3J(vbWC^yEj(Dxg0XsX)YAAH@K22A?8|v@xze>zzc%F|MH{N{s z>d9pPfWKDslB=pIyn9_h#pNhrqgQqy)n|R@j_%w6`we3L!&BCABr&47*}aU}(rYl_ zUs-XeF-ezlorb+h$E)UNK6`5ua0WsM%pPwK-~%T(*nIML7pCt44c@e!Pn?nS0Ry*; z?|zw?Ave!2DcL(ZfulGze^&};ynd2K{9NoyF|KihJGPyBPxH{+SG|7iq(})TP-jvKJP%QnUo@=B5GHlc4rM+ab z3cM?V4({T1J#e^T0RiD!2nVNVlp*l5^@{2_np(2XBh6Dqp*8l{YQACP*;U9ih*0!w zg|PQ8d((#E%bYk{JR}8l3K}4%rr=gjoWyGoS5@a8{Qmv>e5ib>Hwi~U!BTGU>`>|K0UT;mIy)RF zEGRH4F`F12#RcPyzWWd>!vE&LCg6R~g3m?^eo9J8f~Yx5_%-;d_;_WswK_8&a7~2J zJ~9~Joy&aj8DY|~R=5$NO*ygQuBWx6AUj`gUO_eX!|$CPbAB$$ZYkPOzOS#CUSqZ3 z`Y9vb28F=(o9`>ZF3IsslHn~}rX@W{f}0&(;g6N)?aO}O?S9?N_3pSEujE=N=63UI zf}_5JH@C?sR<7A!u*VU&jnK10P)#`>#Iw6^OK0i1AwEpvjgG_VVfLGDE+j)2{bBzU zhjl+`=7U#B_X>}DZrCA0Un%Id22`YZ9S@S9R5uL|A|j(T2!d#V%A&xEG)W_@Um`&a z*T8}X7uCJ>Jk<8Sw^g}GQ^(TduXjEBB)-yw`dG%XbveEDlK-=P$mLnQYw`uGW)mm- zt*=XI@9|cPme&UoUPG(!>nzv==qscviuXwyh(|CRUsIzh3iEG|=JQzOytvIGyRqSW zGD*INtDsVJl{l(S{=O$ymK{QT_^;Xj$JSX!McKXK{+SuNyCjD0?jE{3m6Qg9R2qgx zq)VD1q@@HYB@~cQx|K#iq`NuK`#;~#I&01118Y9a>}T&icU;%+HiRIWT3u#nsR7LH zbEUz@cH~H8uDX*%NfnWYuIZdw!nd=o;<}1=zmrqk{($kTeI&)&2Im)ffnR z9SpSyY)~Qs*eWJVu~?zCzJ7558te0Y#pJ)dI$WN4{V$}OBMv#;0#xDvpWl~3#uhWM z1f7NY3)cT4V`@?_QPuI!$dS*WIcQ`>yKik+j(Pd6E*B#W-da^|eX-N)LZJ^tzVXwH z=;p~>e*_vTlil6$is;bc!b-9rsp9+2-z4E;$=G^^JsG+2%DEj-MW3h`0x&i7(xw3pc*q0q&w{ej`6ZeR3LP zYAy^V%?=Ud2a;#vsQmC6QaE|pen5?EAXt9!xv=ESF@R$pi9_-Bv+hD9FxW4K0*fO! zMqJ>2t8Rv<@IWc(ptcV<$aU4#xUbG=K6*;t@py3gxpiqS-YOv0U#qGIjV`ePjs>K$ zn{qkp9vAIHphBUsYX>@hsGhEJ2D60P7HBNhVHw$CRYHiTw zVI4n>`1^&7hwB7qQ<=c&$m#;w8WR$DVec9{r1~|)&;)|$+!v%)QDXQ1fek1-10@m| z)|Bd5_7@Hb7;x5gC`&bjYLU-w;>w^N(!8nZKr9oh;_N9BZFv)DU;=D7S8PQD9E~$L zE1}yXe|kW;?1;=qFs8 z>Tw$F#t53iP@L<<9N+^+Kit_;3SFeOy8Cb>lpZSXBy+kzL@OBb_vm!51kg;&|?G<`(IIDj@W!~#_DPr>UwAv<%)C5?@C>W*kr zE2zh|iFH70Yy%&3MBdl?pKKw64t~+8SL$_zJ|%^mo8P=Tg&z3w>L29l;dg zYw}kgD8M}kHkuB)JRE+KHy2-A(@JV|Q+NHF3(%i;`K)J(R%6IH-~oyg6OAq;@QNSwEn2Pdt~g35!`H4FhOlBO zcMZ|tctK2Bgi&c5m~U|M-L``Sj9-B0&pp6~O-N24{Zu2280TWqjR^!%Ywfo99aA#-UB zQ$EO3I93f!HQVPh5sH$^jZGI~RIAEU*#BabgaDx$sjAI58wI3gU{_WLac$L)W$noG zK&Ir_Lkp1dp@k4-{r2wVVuqW)6|3jha&jDteNI(>Etz_|23z&dY=o%D;_{@7FW*5u zX9Rc*;tUj}IRPS5pr#Qreboe-uoSbW!r7wEJX6#w*Q<%S)4bfKRMLWltPpX}Z0IW7 z-^W&s0o}RG&uxERg;dFBMWqG*BIGm%a41=!Al4z$YrAFwie>k8VoZA%OjYKb+0tNZq%Tt5IIhrN@|Q_S`7zdbP~1nzs~;?Apf!byxL!H04yzWxx*4I=J#MB~M@h39(g5I=+8;Pn zt`cUy0>ycni~fPr_?}ad82HFI93UOibWy4tEKkmPk=(3s{n4H?`=a7V!El{&q|m#W zeKL}|!bvF0Hm(wA9XJ6+3Pa{ z8o6!Xd&)W~5=EL$R+tlG!$Sy=3HL$N$GkRod=o;%^-BTL6cA_1{Hv{(ipe+ugQJN< zyhLvmxL6|s`X*&l6ZkHOCi^>D)VFB^)@vG|$fx+o07^Ld^7?i1zbfaB_d)XH*|Ouz z%jl(>EQi%-QG{R}rxL#k6f9X^WW^698Df+QAqhKD%M&jK2(5%BFhtBChcso}$%>v~ zxe-9O3Q1-0gYwe4`tirizkextn~V0Nj3^+1ELs%mVS1ijzXXJPe#Z|hj=2I;9qJ_` za+>qVM2RpaTp+F%$Pyq^CuM;&)si??g~u6R4Thn8lVB9gcfT4UG;Ps^q1=h6C?J%z z16O=-V=3EgyM(Y$5m6h?C6wY?L%@_)>r_b(hR7i3P3)cAEedOjKPZ>^$R5z*JBSXr zrJB1vLAEnzOW{KhuC4&MBUJX@HiI6$vKn+E02R)EOm$2w%pu*ph|gC!Z~##O%S?F&w>sM3S9SF1jwXcY^Sj$h z5}EnVns@ko4J#BKz6lu;_&D-$FWC}V&W5ulok1>FvyW8*)_8SbD5dfD5lk--1~vqB z2Z{Njk9#EJRw(O&Rh1q6X@CuDy`3$9N)!kA@Q>w!njlrK|p>&%DAli@Pn!vdCvM@?((FU+!Y$rn`MRd2KpYXo!qKXVa6=3QASeIH#9&e@r%5>QoLr8`vq=8|B;hZL|DCHbo7X)qEo8{<~;y2=ZNuzu&5ujbmNiRJ& zv6Rs78~!j~oADEX8k!CfF^LP!HwJ5)ze|#o`@mSs^7`GE(9oubJ;zmC>)M;5x1(L1 zGo&|*1^0m?wZoxXgxn+dPP3uzI<$VzZw>j2ejcb}(6L&5INW@q0&X9^n6p9xtK0WT z*YC*#dFsiNEQk8a#$R#gh)AgM?;k~Pux|B?X35@1Ts7fkgu9oF`i0gd8RstdgWe3LK~c^geo(qHAG(!Z-k z{GXlQ!5r1@I%Sva0^l(8$Cg0`=7hk*eOS3|V3Vw(V{JfA^=2i5A5xqVLV*uMI10VGF`cE>($fea9Fz4FkHJV+;_<9y>c(~nQa`xwPaqT zEdEyz(0;ra?Z~3QvvaHCT&A~f!->6fCO;fTW>iB$F#e|-ayV2zKCEj({wpTf;pjVj z0PEOD{e$JoroDRS<02^h1&r&7o6=rPwG3vr&?EhC+<;dCB!SUPt+0n2+39z#r|%!A zzy;lm0o0eiy|9MV?>yp&Dge7g2IMR4s4r}c>Vi*TwmR}(ZmSH5r}F*!!-I&Z9C}!m zZ!qJ!}Bx}gV7dB9|& z?0|7wKCx?aAuh`K^=*KCP|JCj$?ghv6EQOAAWV}89k3u|;|`kA(4--ZWmI$sW44}4 zGR3TE?f&^aIq0JoI%4gB{Dp+FJeGC?)HWZ#B3Gmp3a139Y#{o}4-pID`kh3eoi+K@ zud>Jaf9Gf+gii-Kq&RJ}$_DwfS`@j!kME1WAPayJwvFH!Q+#NejS1Hp54%37iA66z z_@S}%0+ZC0f{b#Ia#!p1)84w&l)0p1d!$-^`)2*H4sl1o1bY%+PYDRdcx|OWVVv~~ zx^Z=6!wLha**oOK&b>~*Q8NEpqG<_KEcN&I=vly)=V1R*@A$CjcN4w+eR(%PC16t&SPiHcUxSN!}vB({9s6A~aWSkuQS>RVF%%%u^6vcH zHD0A)t5WvsayVHf#X=1d4j^iDpR9te^;$wg)=hD$c_M!IVdMx{s$toC{IgT%W^EG; z1le-49z$FRI_x-2MQr*!;MtovNgIoo`!;8t=hnq{mJd_!d-y|JE~-LzHEl#MBGck= z^|gY^d5-cMy?(dI>(F(EUSP(scbRqgE*|# zoy%2|KPTVYJ`1^ib=}AIPUOG0p2ZJjTMkvZ`YbUmYZLN{ZrL|j+p^* z?W_v=#(>nduvNql>IAov0Hydgv{A)VKJh0{kd_!Ck2ronl3!1g6~b&^;p&f76U8w@ zrM74)A<5*BS@gg5O7RUkm%6SHCfi}w@Vdt@*VF`CIlDdbZa;R5*ovwBGojX_d_}(# zP5@RZvGO&bL`a0>f-WtL3$Pahl8N>Cvo?YskUdhi{;o1o#2#V*7S6+ficV)jp#4?d zp`+3Cpb~Gz-}m&|RLNqdquOsk!92#X?Zcy%i`y>o9rrdVKepX-kj|B1#oEmXJZ;>q zI=*^XlUDi3m{BbNAJu@4Y+p`yEU-cj4b`kFMKocy14Ok!VnJd)<5NOsuJRF2kRWD4 z-RfmJMe7xnFqXCk4BqaO%+;KN=3#_&Cql-}q5vuqSKtCLQ2Km7FH{G{+-z@FZRAA zeIdKkpX9q<4-#izyY@PwM+x9>7ULzF%pAm9SB-$C1Z@Cb0ic@TQ#(+yL#iT(I(Iwp zW_QgmzA~9ZOtTL!I@w9`-7d{E7dG30n%cEhq`|7%YP=RCdiXyJP;xuKIi2=RP6W*R zc)f6_SXMr1QI2_l3TqyPvD1nq>`(kqvQ2ON!EzUs3o?O$ED)?|z+GUur|D#FA55}g zFWU81-MPti5A3)NV$r(VVz@j_b2lpZDgPTA*jfT;G)yo5jT zmmCQh5arb0U}tQru!a#3=tp<)F#~oe;9%O`Mh?ugCmZW^#s7}wPlZdWP*dnfhGUv` z>kvF923Q)ynDSt@(fHf-#K}cMNP1p9q9$*EKkit7HFUPgi1 z#V^`U>;8v)!3*Q~u@#VTXgsEwA}p?^+&$6_%A0?*NqeV`&hf$fq`g>a*vAyLG_m+$ z665Hl8eiXIi-zo|exNZCdX?AlQQm0#0yE9rfY1M^NR8?FTH)D4OX?}*%UT!mRM{=^ z1uh^?$`&I0n-pA&bKB)dzO**wUTOcCZ&EA%4XgHf^^5i0+0TxJvlX&=DzbL@@p`2& znUlgPA;LMz-Kr)4%f}Xh2<V0Tp$Ofi6sscbi!?Li17>&gjmKIHZn9`p!DHK#vp{8V+r>iHh>k7((j1 z@K7ErF!w5_5Oh>U-EXQoV4#wmQb(*6SG~akHwq7)vPxwdbX2CR(8}i5AkxdYxmNxRLrHsU;{0)DZ?HqDPy%5#ZtY~ z{2)qwJA+9My{z-8hIcd%m+Re+eWUqP=ik0#o8V!0WO?V%Y941KNg^N9xtZ+7b!d9W zyDa2dxx}u{;uhnr$Cd)xdj^tJFJP~ny0|Xcjo9&FfJFcFVN-Pp*+u|rz=WD}l z_zf=2H!h$NS0`(n(hqBhheDK-Kr}_Y+HE{q7xfe^#Kmx<@eG5Fn4B9(V4T&GE{@*C zEf$SJ`Sem{rZV}7Z4L$0k{PX8e8k-K+@7uTho$BR!Wb{f!`oY1nx9-tT zJEj+uSWsX-{q}dj=$4w15@+oXl(ezPV05t8`5q|k?7&co1`xl=vSwF; zLql(iD;+`08xwK;vWmwy<~WvRdv)}cx2Gv}bO9U3-MdL?G3`QkR@$LvPVjGnS4Rlh zhlhk(52J`@7MQT^H~061X>_C7mUnwo=)TdTM!zYamlDfvev8o7L3j&%lb-y0b$S;W zXtkIiPV0aDJAzwW`!Lqq6{KcC(i zQKES_mMS->7EPm9T)Kzbebo~wSr+b9|4={vQ`2Y?T56JDkJVP39VVsN7w&EUzK0yp ziRkv4R}+B%+zd@IpVL>p$D-@dl|+Dft$qr+LxFg_tBUh=H@$a^--vd?PuUk!ze(*O zUC_I6hy^SjO+ENcj6($w; zjl76R`pp)I!3!Fdy#Rp!zt~M6*VPXlQOmikMf$%IEL&zCOM&7{+-Dp5V$kv_O*4ls zLJRa}^-Co+1dbZ~9lm#ch5oWsGOiFdHcVjUwVh&P7JBkPX_@>Gkf+5kg4b<};+~w% zpq|UzmB{-0%V<7OLgH{?2_Z{YOtM`|k-p=BF>l=pVfb_7@oZWc=t*U;NO^yh}KsVF%J(l33(I2Lf9X zK0%s|aFdDYw&Jkm$KyLeQk;8Clr{{twt@B~9i10Z54E)dR1=!egp%A^=zbafm>>^HpL`U8^xLb+=9J*+E zklmK{kWg3KGTSpk;E=f1$?Vlft+{(*E$`L9g@=p%9OmcCJ=*7?vwD_6C-N1Cu2s6> z+RQq>k(?myPJO_l1}(^c+VPc7-`5dL>ukSCyo=u7|ERm^f1JK54O}jfP7@_&6LS?{ z6wjzp$Mc48l_=-u_|)G|Zcm!&j``xLgmBo2p<-3KcU~Y8wk6DJfLN!~!1dk1_1<68 zW6c#u<0;4D!Yg7w-Wst=ispd2YGkg5fwKGWET?jXkoj`gL_8@7)4^+01qAUF=7u;9 zG>6%e64w(@!XMk%X3T|B)$4#4_~vn(0}M#`9<)0r2y{zs<*lFLsJVI3wty)1Nj>>s zuyrr=s{j=8fx4T)&@cbbOoRVWAQl!DDVV_Lr)|IKo++dq5L#fwFXY>4vh50Y@^MO` z!M|sx1^psqeQJm23ZUi|jZ6J+b<_$8lb4o_ZE8bEyWYCg`dpm(ZOw}Q#MC+LD=30- z-Jl%ekv<&ARVj_&Y?HW0+#{7m;ahaKb#<6d^!7}clfjt6cfq@3XjR2aCi8no=wEvG zjl?ck-O&+xs+Rb17#m!IT=YxRX^AZJZD#>h7N0}DxDb0R>0rodN?N16fhO=F`V#Zk z{G5ZcXF5}A*;ltX>L4x$f}OHT!9ETNSXo^TE+ifZL(5Y7Z0dJchq|c0^`pqIbp(Xi zKG0ru#UgZ2Y6Fk`hVL5M;z6atIL<j;=4bznMEDO8oV$Emw*3jj6@y#^Q1nR& zB7{Mn0JynR|3^Z7_KaI2)u>Dx0)PV{GBY!0W@d6BUvnudpQ1YQQC)%LhrojBg8}m8eSF{m&DB(GW#&oakO|KzNG7R zi@Nl*9nAJm(A)WC?)cf~6dh1)V+i3E=m@L*oi}HuXErmLk?_C}XhzQ%iMG5L zzt@i2rhD1oLhP>8ZILMb{ndKegHjKRdA4{sq@N-v4V4;lPM_9I{!OHprMY{3$&1*1W}2g0 zY-Gpo7PM$M*K2|xq||zc-z)Hz8w&%uCrt3uXpiSLDK>z~>|1NA2SjpwclV~Vd4Ba$ z?>rAJ{lvZoZsl43Rl0dO%B=gB`Md@4+EKO9zQGqu@9HVCaUF2{zCHV9USe>&(evTw zt)7X8d6hEe9}i-pxeRrPDYX7?tNpnE^MN-L4`V^Hn~3Qu(lWc)$!2+!k27FpRlkgMU~e*kirJ6`YQWM;Cx8-4&W#J^s4 zfU`1QEOz)NeR57$cX|2rQq@*)eMF(HYSDRhF09W1=uL(sJWeS44M@zldZ>^*>x=T8 zy_CP-;WT+Br`5%8mNT%v7nMB}K~7miFVWnvlVySYAvPk`U0lUrSRW9ML7thwN-1)l zYjlyJu14&ls|(SDj;#>fJzk|Q(BtRE@FIZ1qFh`(j{1Sm5X+wTxE8#ZZ^-kPl$F%j zgL*e%@Ej~X+G@bcFYXyR(GMi#U-(}s*Jjv=Uds1%B^FA?~uFuzUI@_+DPr zLHSwkSk}s6)Rb2|*dVNttB??fC0buE3}9)GO`3A{F_9oasjV)d(y7IUmn8KaGnSCs z6bG8ZYm!SaHgOc1{|r)=NAk6XfM^mn~k#UB=>Jo0MX*`SK{0&RlyK!!sKB_XUy@Z_s3q*HapMM^mOfK{k1< z9HKdRk7uxXB3=E}r*B-7|LkN-1YMzK{M5H&enbsjUFJ*)$Ki!`c`r^?%nRTA%b!L( z{RXyzz#9RVYj-_~x*@ZZ`=?4&&_pLdnH0Jv0@3!#^(X+|0`E7UMWC=_ z2;A$&G&niNq8EY9JSWS?iQtKxm6RkMC>8_+wSj@hxY=l7^tC-A(6>p9w#9i#ZhvS4 z(4Ptdo^lvOcUCPK#90V(xb9Z``Xz{QZ}9nRcpM5IKXnFx_B#j_^C}siQwJ215%3ic z<%Rg5`>QQb%w9L`#<~Xu8QapYcVpoLpsbV_P118sd6L~r0zBcx>_`g>jPzcUt18OS zsu-`ZQnvk5w9%eAwIWW5}F6Hr6qi?2^H&)`92oMpf&X|mPD zqS0TgLyw;+^z_Fk?&~z-$BYH3-)A@lTC}bWCwj9*|Ameg48QVVVv8N8!MaID#Xd<~ zh)N)Hm)dVl1W7X@9_cI(NgQ%D;P95)%)8M?Y)~pWs1T=@?RU9Y|%gJB>91vt5;PDDV>W($HgB_lp zhR20>-AgCJTyN^GXb(M8DxN+rM%SRhlK08Wg-i+oALP+?<5~Ge3FtL0dC@vSsi>K? z|9ddY1BIjd9CK`$x*&-gRHdfv$x>5OgLy^X;>%FbX7PxI22_)Z2VHs?UO9u~wEX@3 zK~%Vp1TFY?cjCR)X)Q_^K*;<(3_2SvU-Z9=A}B$MVC|Ts2ABz;8w%3bQwOWp9*^rZ z>o>u(y5*K>jS@MbpB+Ps4YG=4j92rgq{IFR$5(34rTcKQ%5dm61asWb%M2epk zQb%8GzFXETkg2kp$6run?*FJFN5dyyn_5yY2c-@@DS+MliLchelq59U#AQdlY-jNA z%0HKUYS_{+`9eaS5x%5(h`>XTHTM;`zMX@j$)NpS5JEl0g%hh{IRi+khB&nkvN0_28)Sh18nWMfui-#{k*w882+HX7wdMdz%C@X68wnIl*BL>82L zg9*Uz^`i>oQ=GJ$i-Yoe*%u2<;E*9hr7tRIdAjAQlf?pN>fL*`R$Yo`XrjbFBkpJ0(eq4ofiMZlc!3p|w#5`+G~NNS{53Pe^O27D`^J{)JW z{F4c_VE`^?=LyOhxT7hvhB4JXr8;)kWGDy%E2U^P)X4vS2{17bt!tkQDJ0SGu*g&% zGo4{6Yh5cVKakB`a4JFpq8hw^r3;J_5CAVevN|y`q8^f%4_$RG=YB zsgVFCr2q-^1JLaRY(GJoyNg6sh|aVa!Bm7FjU+}JoYEpqpYweB5x#H_&}MA z`0-c$+IW*I-#xMHc}a(OjGmv`sXd?vjaBw8d{2CQkQX^k$AW9Wdh5khmi^9Lq+~Pg z!BGzKhXV=SK&nruTQARdi-b*niCDYdf5P^xoH;`dPbt8MXlF%XbEEBZCmA7eidxOs z8jV#S1B_^Kf;7#ISv{2~Nh9F(B{Wu-`alS!PX%yrx&OV0>ZO_k}quJ zLEM135Ncx<@+XiOtEw+g33sf^9KC{02q>=iV1jfKQ`y!lzJ_3H0mw{@Icx-c7Hdj= z&wMKT*ZDkEse_ZXPA?Jho^g@Ae z(2(DV>P>YIW=6m-9;y50O=&0zUlLsp|8jZPvFyLvQCiHGGw0+XWVP$GyIF#B-4l<_ z?+-pv+syu6GV@(V1aFlNEMH}k5-eeKuM&A_1wci<+8j+oSx7|=aVAc+n@{yE`e{E& z$`cXJ!v-kP+T}hhhb>NE;VDuPPp+qir%-)dU2Ik_D$sgh!G3R?{uoyg^m9K!!UvIJ zlv!waTZl0JSd_Z=TS*B{%(swOZ{d~g_jP9p-H|7IOq`x?(6X=*SZd)C$-*+(z;lTy z3H#)*i&bDyAr0q=5nDEZ_XE;cI^ErB&%DwHdqfw5M>5Uv%C`zPRt$oAg1kR0$ThsW zcO3f7EO}Byd6SJugpj?O_ONSsrFo4`Ec3VcS9$DvwIR50xJ@Q}J1%{&#pH`k>EBA# zsF`7ZEU5WA6txiyYsB~`Te`<{WtSo_gVAy!)KC; zcOMA>rFg?>D)p^u-WRs&TqvX)r1;ViN6Gjq!X%%SL>-2JP^}S~CMMgbdF@ z&3|FkJu^VWVWS<{qOah9^`r`*?+{#^-#L(*@L0UJyL-=rnFX-$fMv!NF~|?|Orwup zjjE}&@4#b$E9}QLiW~*pmlilAS|p#U>RsS+7u1L8%GVdRyCwAg)|DcJL)~oT>QiC|senB$(ZMr5 zYj1T47y=~R=J?njq*CtB;E$wXSLJ-8gJMMDDZSjS{L)aK$%Ix#*YifUNqDd4#0!T-gBf_2)xOUd_6&Z{x+{f~=B)lLFqUenv zNBF&MQ;5p1g)wQ{UDJgzzx)oka7*v`V6~q89QK0=!MZsOi8(NEE=^cnSt$JUEH2Ql2Geg~- z_KE@UMN}E8f)(^i?RvsRC%Zyi2dV(TLBem+5ab)Lm%V4d6y}w_D18Kizxwr zXt2^cgIwgvchC~Wx>>*8%$NJ+=IWj>CVw8x#tujJb zstAEtyb1+u2eeH5-=o;zTsqwv;A;eh2RUkciE1grcYC5d%8-z6y4!A+P z1^r2K0A#QUQ4CTRB0~i|-rvNhRp@+uD_Iltx4v;Uy<+!bx4dgOOVZj1o^V|zQnAMM zYx*N^k_r0rcX`3*@}Ke*Sd1U}XbaR?K3z=t=se`}6U(^1no{1DV}jf2C@>q7eIN7C zcf2YC*8noXshkeMFH9);^Uj%CjsC>sxeq-F7_2-6nBd=%|8+cT#P=|?VVt4u-FUV! zJvL;}!p~A#n2g;CCow|b7S}tPO_aCMX>Z`PNo7rFO31M~JB^5b`fRu3V_acC@%~$* zdzwRLC|8KGz6D&V`^6k|YDg-cI0+-nh??>o`_nOdPgc~QY(QPbRlYv3#}P3v=VxL+ zX(J8%!cwFKTu8;+T_PWZvK{J}5x*XNd*t~HL)+pq*$yjl#g1oJo2a%erYIIo>DOBV zqA3b^;^1V4f0gu%8M-3Ycg~KJ7}!k}oDFaaL`As30EzIRzY>>rcNCIb`Oj#Cb$>}q zZ6_f$c(Em>s-=H>PMIAk?@`u0332I_HF^~xr;}S?V}#-9m5vDpH1Y*L)RIGUDG4G| zF3f|UV-&FtO0~*+?`z40A^O&!!6(t3tm3q*a*{2}EFcZm!g9LqOBO?knX=-dMkI!& zZ3EYXLoJh~SlN4@Lyp(N0;}XL3uNBpG#Cu)ClPiTSooEEs-LrIS-Ag~;aK-NrCip9 zN=)IG8VNT$rUT%^+fjgUKtOKrB_JMH=Fhb{v6Rz`rv#dmTLl2~1SJnBkvK1ck=8SU zRbDV3d6C}gNHT?yhY1Y`h8CY;8Wa=D<-XK^`Wks|Y)*n;S)0Mjsyr-8ecIdP%$*?= zB@B=e&qjZil~@@8JpLI^ayMwDI^GP+!aj!iyka8!PK2WjtP$1EkJu!oqOTS`fOG(r zoC2h~_JsO)CBg z?BOPeQSue0VZzmqp4zv^e}+EqWha5R-bW^v;NKpiNhNb%dVZL{zW_+M2u0GbdH;lA zcz4Ia)vJsPxyIjX;r}&^C?enLQb=ZTz(6KKPyxSJ*?|VG-*0)At+@2^EB2JW6lXrA zF!N5})yr&>@Vq^Fvo0n{z~AyRwDJ5TyPx=CCz{1Jo|_&HBa#z5z-3x8AAOWkL(gR4AuC*nF(?%c98Zvm4ZLX;g*oAD4eaKR=VDyD`YC-iu~ugt3$=j)GHfbgyU?|F zKx+_VGQ@~kkT-^zsQoGM0@>3eeacS!R9aqfI_kP5&0YwDE{Zy?Bx9-icsg&1oEMFy z7Y#9WG!{EAK@rl{ArtI7lP5?%taX<;o96yi;-17+CqMKe&uX@{PG(Gh-<^Zd{E^~_ z$QwB$ryuEJcQK6H#O_g&wxXCHHj%tY%x@=QiYn)43rim=amd4BmwDL*UZKZsT=vUt z1pIIgnLQsa%JX04S0$_+BpSqD`1+_R>PE(S+2zvJ;I74Y2Se74HicJI<$%-&1M#XT zw0jMQt^WzQA)+yTHD`t_^sq&WpAg1CfRJ{DY^iE*jKKGvncs<&B4jLg;B4_+Z~Ex8 zpQ>A(r?(z-YCjwk;I1sW=*au6pju8VS`>>1>jM|&FnDg?VP_=+6jBi47N>6QL2K{x zTG#iJSZ0Ll_~Eg*Jum7hvFoXUMC|T*-JRKxh97jgC-8XecMPK#5_xDZa7Ji;6QLoa zv`bVGw%dANON;AD+izPn6F=pwVDJW%at)NrmHVpHy@5Ku^I2m96sk6UjPN^a;&(ay zq<6QLtn``=H99aw(aIS#;cbJZKF`e-2Ell$vUU+8w;!3=QtCcD%by-ym|;A35Yi`h zxg7HJQ2oiSWSsA=yDhF@F?OAegpco-Uty(1w zYs=Z3?G+6VC?Mj}NBCL~msq`n!cj)ABrreaUhB9gq#TKNS<3k3@>t7AHDhQc(u506*(@>qtawCI+I zP;j2fZbFHHX)ldqeBZwqUz%qdzj;>iHTx9%I|76W)2BQWr!+56oHF;t<)TW5;brH-jEThk zTm4eW(2QEW4rkLnN~NL9pu!{d%qc9dbdRePfTVr=w(wsQ`pURGFNwgP57>9^I@=5> z*zwb+9L7!;1`gHwW4V0^HxH+o^rz`|98&t(vlc0w5R}|tVQo%F*P}^Gl=>HIZC(T` zWLR;yrOWZ>n|o5!b}5C4%yTNaZywWZTdQC8*GjB~=Nr#P52J^l`{n#o9G=;T9A+{P z$D-Cxc56`AtfVzYJ~4=3b;B~}fOQY9lcW-xCnphSVWq_68$rACVh$v?sMD(zHB4t< z$^*C#0F$ZK7wxL*(O_Bs?tg>gbQdNsJ?Z`1R&Rb)ncBSXJbgUb92NI`2@@JK99r}( zvN6d)k7rervF`)5Knl(HPhh}e+6*^tv%qj+;ok8xqzye*Z9JS7wvq+_X`+hJ1m76z z8R!&};Uw+NUS~?t)sbosJc(6JR_h-KXV*rA627Dwpasibl{uPDt~9bPJN?+j?pBWB*C3pIK4v#$mim$?X#Z#I0NVZ5y>mkFwdgW9 z-T(<`C@UCWEO%A~J=QD|>d;SF)XOGKAxtKI2+1DYd$526E%I4o-R?W&j{alt7-%k~mw#^ca zS{FqJUsK$F`6&*9d1O%@$-EZML87zSWNCc-r9J>qb3-;hR?e zDy{sdSYl&j-m~W*OR82XvjdSBtD8$II1$yHe!8V=mobEV7LCY;e7AzG5RQjvbFk5` zAlKSY_+LQ0E*1TMSMPp1nI3)lA#gQEc|T@dAOoEfLgWUM=?eJ>&5*OFVZL=RH>O;R zgsiMuDK-Jkt=?z^*4*!1h}8VFel~WmelzikXKIveOOSJ;N?{a@=Luc^Hr1h8+40d` z+h^vf!{{L2MWyV#cWWYX1ab(C2396gnkQ z9K*zX+cQt(wRe)Y_>a%}>7r+cvrZ$+Q&gjU7!$W*#($Y4Ig8*=bP}c755}w3;14X9 zOQ9pJ#tlW79?v@l@j>z@*{N>xG^IN}-hVoXB@ve%xa!TVKP`|0=9t&mV@yoeF<$}X zEc$z@;^g99TIj<~Q$ZnK1r`@#^>vJ(Lj0P5Ah7@LJDZg)HlT>k*x-KZrctfr_*F!Y zs&4+T+*!__?`_Ei!#uHBx{Uj4wl!#g5R9l0ywn(i6Y=|cVYJCqfEQLP9r*9=lEWbX zPsir(NB@2krG2LrLwVYde2>O8hH4wP*dARgR%6V5za>$YJr2u3JT54n`%0xx{-x|Nu%Grzb`^V&Q*2?mw zyUDA75ceI!J6l01B^MA%?tvu(u|0-L&k|upCkHWYvpcaMGc}j+fIYWLM|yOBVMoK| z)F>k#m`hX}oQbIuO=H+fZU7Gvlmij2ENm8o9X=>^f9`P)QDjuPapZiR|0=07J=cMS z)R`=Sw&XN&Wd&fDT1X4C!eh22cydtlq=Rv9$w4E$TNoQtt# zYG19+(V%L{@I;u`GbU-u>A**OXt0UNJu|MfFH+7?8lu9L6u>7Bg$f>bu-#uOk_9p$FSY;0G z)?lnRmZCulXhs2b!d+)x6TOT>K~(HZ=lVsBmaeHwIj=r`I*>6M2Q!8KY_mDVm&q4G zf`E=e6ctz);{I(TdH?%>(_ijLDzk-XvR1|{l!6rC!o2JYPUUfK4`!TTSzarnhTbo| zdj9rA{n8(Cka~>afqocHCD#NOEAIP@{siLj0T*W@@5&WP!mJvLrm`vqdAvyb1eq0$ zyvRGjld3E15n?BT(BovKt3Nq)8?=5IIwWzO+_I}S>!};F9v7=^SRVfY4QCdMC&U72 zPKBJwfRGowY%XE6t-uDBudqX~fmTN)g`72)_hu`UcAt(8RKk8;GY~BFrKi1AvSd`` z`8-3cJ#{$T#)l}~KaAaC!tJ6ZH6p>-9SzyUoV78_;FqPWaQ7s$flJ&zT5Xg+iuQP) z{`b0wdCH2-q!vf@kNmi8CWM@|^At_d82>mUnt{G{zFuyR{`DIcMm*r=n;a9Sx&(hV zxu8J%vW1u9)ib@BkfY~|;!*GUU;5B9@pI36{5a@!S;a=?0I|->h_~B*Rw!zL*>?CU z`po~~>aD_}{J*I0d&r@Olm_W;BqWAVy1Nlcky1JbkPrmv7LYCh>5!1_MnJle?vD5V z{hyQfd9G_th9l;l`Nm%Rv(`q#K#(4wQ(D1O34p6?V>SqosId7CrH3o-wRSRTKp>`e z6UR*wnc$vZc(@%KzS#$`fR?E&z?1_QXmt_rI}YM@<8n!-0kz@xhseEr2Z_K!%Qh>h zYFKhwzxH&#g_rW75nF33j7(we!UgBORCD8gJnd-~O1*z5gtLo0V`hVk!G6*b%oyAD z21#XX!AhG$gwe3tu!G(g+sSQ}*$awuvm4yU`f*>}61q`XJ{OUl%MzB-9E7h%ZKMaw z@AUuWwrGu=gDO*^AxJ;Ct+pDK>IQ6HpMfgPT@SgQx}pZn@{2DiFWOf{fQwkx;p-}R zXF|ypbBf+lK7}uX&ExlsZBu2+w#r8%J{)<3I6CDbO*fJTsuw+sszSybXs87O>l!D6 zvM>OQoda}Tp|DWRzj%kI>%FCZe*Ee4Cpe1gsoLdy+52>Mh9X;*!$Xk*;>~?pX4Usl zf7$Zz%4Q^1qjno$Z2~O&b18E0^+)p=d%Ow_ULdTR76!Jgq=A=^6+y}8-7z5bU=|VR z4ai>yg`;emyBo!P7q%psLhVwE4t@V%mMn_nxF?Akj~Tg@cCcjr(h8vS1w5HeI4_G~ zuK-?YN|}ZM%+T!WsN6a$iKe_adn$=Xf5I}rtIg%D>NYhscj&&_Je_okQjmF8;bQ%? z+xyxBy-OiJK7j59xOR!md*eJufKxJ?dL!F31)OpO%B754kdtpKQ87LwRJ;91hbeXdrT&c)k_U}fx9sNA=eEbd{2TPwCOpTm5JfzS+b9vv< zsf>az-lzRrfwNv3rTSqtN{^NTxTk9WM%-&~e4dSdxZ`VLkb#|E=To3(C4mc{@k3}K zEf2H{hdfNSMw(Yio<)x|NiV+JBKQHbmyam;3iMg196>M(HDtLic~MlA2QDOOQoyM1 zq1<5`b1z!VU;=EeDMk!SEaiwteNy6IF4zl5rAuDc$VQB#!*NySNSGZXvs4=+nkITv zW$THzmHhsg+2AyGT0MuJRbBoD;7O3pZ<08pdW%1Q_x#h(uolFeNG!c_nGFyqAxCa} z?Z}0`R{N+0_TE(G#O>C)&=Kf0m{Uu15NIAIzp1URAq;FCiiv#g=MI+nJg}sk>8d0x zNngM!SvbQ=p1uE~9Bw~6u8{Og;$W#iu~c6+FohI=cZOvxJ}tcWua6YF_?~uAzlXL| zNb}bqsiWqE9Y->O_`ZSb%`NAxl9VJVT1@Kr~kZP zbs_V{Q^MhNAT}f^^Ay7^@B`FY0Q2lCi)n}x!@Vq4^Ic+K%nShoryDsML z=igC(mv8q>>)%u8>}VsL)yU*LxDAeT_pSwZ9ch{SG4Ofgq+Xp}M+1^*D`jnmID2Y) z`*%I>ynVkt!e!Sj9^*cyAE{_CG{~E5X|?XU5VQODdDhg^#qR~02Y$Y1_@gP@W)u0+ zQ|stcR4?Th44|@HS@?BAoBtoP`sWU}oEQ&%dQ*HgBRAYifV40{mkaeoH-mRR>rfs1 z2S1eMhG3G80r6=787JRg$t(LeWhE1HK6NqC)F-WJQqq)Ml)1PX#fP~IA=l|A+c7lF z0}rThjCPXiqWu;rR!IF0QrIE|W`MlbJ>QWLEmANBab%lcwEL}2Rd9dTE!%W{ z9?Mu}S>ZWp6tcizRE1s-kMH%|!|29<4#gx5WzGQi<;;(|CvU5{Qj-n4$qPMYWfp8^ z6yt`Y%-ydM4{lU-YE-@+%;j0p^{!ORbMd}rOQcuGR9Z4vkLn)HY_HGN5+xO0tWa#P z_9q?@peZGU+`mHTC#baJ9PNWe5Z(*yi@zs!z6$wFKtA zWr!ik4sTpdxt{)bdlBl;Y+P9IFO0H3HA`WpHYJU=xc;q-vV!)v{8F)lzY#(nR>Ox- zre16+7g3jyfEt~F~dm=hHSjlce>}C2=nZ|7fzNBit zO_O~p_p#Z8Kj8OHnHrK``NLobEa%CQU#_ow6fb=galMsTN~cu*;eDRERSUdSkn!rR zd$~gt%L&)>2yF)_OM{kQz5UA9_obiv3?MR#6GpMKP)X-jnZXm^;#Vs%u4Q~%z`*8Z z&59Xk0#}~N`tsPO+#CSaxEzURIH=R?9ZRS7w zyx*hA=<#U6DRVQOPH&Ae_eTAVx6Qj&H9O5|B#@x_MLctnw&Yh`&78I@vcl?B-$_J5 zBTC{7HYpb(Lxe86WnKA8bfYnT60YsK%q7XRs|Vw$0m<15@26Bs3Px2;%H!SqLx`|E z2mn2ZMdMs?$CF&K2aZ-Cf$Jw(r~RXR`N=c!dDWez_HkZ<6inDo+Hu&`!cf}9h1B-j zp3<3oRju4F44O3rJF*U0f6dp6A~u_=ts|*w#&U>B5u!GgJX)y*@%yYN*!}seTOTg& zWMGy*H=7Gp-um=Sde{t;Y5n{)<>Upb7X=LWX2}3FGmA8{;`XKniw6=uGEH54bFS$X z29izu`91Id<7=Nis_>YIE@N@F)l9Ww+ zDsn+-)?qUq<0?3)N0sN23c5xeRb^p=)2Yx9u)#GjfcL$;EUgSDpJj81Q!elP=x?@o ziJc@2?z%yB=hb~bhh%oQPfYq@*w3l;u>Q;5w$=3?LJ0}j*e~D zMj+n7rBJdAYcJn)hWlLTbrD5n3nI6wN!IY0Qy886i7qq9C}$($i4uid0`CvAHA13} zzAt(XNo4`fmVp07Mmg@R(-aB8VDaiq+1&atJE)Y9(>MP!+eU5=7XJ(|3n9W8AHfZk zJL?9#T@cp#-LikwGJ5@_63fU&wN3SCdq6Mui+E9q#P>+F=i|zp4V+WEb=i+|KWBRmQy-1$!WxLD=!p5WUzS$T^e?Kew=en@^4H7Y-cHfYAf#=r-y4FR{8VrJjpGQR6c*C!y$ zA)Erl@D%eZk>Woa1}aI>yAS+$t^84LGtJh>TjO^h(1#*;q*2+Brb7mH zKcy%obq^w!LJ7w``iw4+mD|S7rFZV75^4nmeusjjAW&3Y1LU6jQG|yF`;@~ zOXatTrW6TU|JjC{KCG*yMfj-5L%Prw&^Fke64ix|jG*n)X=i|YDlmnw*dH_>P2;@@ z!1|7|D+RMmXuA8Ef%=e0b(hHD{ky6=vR74P=n@`=Vh6)$F`v`aKKXO@dFF@Gx7RQ8 zW(Q&{!lnO8i!gr@dd2yJ$Bvnxi0AJv25Vl?F&Z6wGcR$e4rzZdb(_JXupa;oGWtB98<$|=CH4Y0qY?$Xkx_SzE3Tpcnj-*ErT!i@Pa-MI0c*D0qM z<`a?dO)b0nKd?2VXZZBYv5*sGyw*2{1_O$GoattR_o@fRxWm?Kf%fJ3PE(DYn^Z4& zQXqT?qhZl2P}P_3q(LO^THMI^S={a(nLMD1-9DJ~qx#E??6YqgDBl93MtPp$av6P? z()<070W_A}fV`vsqZj|tIcPIka-CGEU-&Qx&TSNbH&qlxA;j0>a{uA}0y=zp!NOrl_rlT*; zFA7?uP_!L=PH$CAvGkD-=@E*`aCdhrNVPf!{3q<$O2!-~D0E^eWTq$I>d56pn8?8in&F;z7SWdetvVi;+tPOfhuD}7yjArlOzxTa6sJ}b^cLsv~YN>oy;B?16dD#fdGo2LDpL&P;M8UG4#X{|OymKif1=P9 z9g9y?HEX09*H&<0-viH#U@9i!Z3(-tc;l#U4~cURu~?ac5)7V0Mn9Lesto;3mHGo~ zZFIK>HJkcg-mgjASp7x*l^d``*glL6R5(v=_VSAq0Sfz>FwbA4)yQF#82Wa1%k2}% zt@3S8AFQbFa79J|Sq%XTL>*Zz>lfSZ=PQ-c!Zu!v&$-OEjSzobq56#9ZwEnOf*uV> ztA`vTouT5B{TXVbI!$_*d7KCLp^Om*a#2*>^_7go*nvi)3^@g4oFxfw?RQPXZoh)H zXOuD(NU+lUO@=&L20fl*<#eBhW`z}VAFz%Bl7wKy69Gob2m2oS;K3x<7zUn@M%eGT z4XE-WtNy|>0tCBgi6Z&ERUJI3^%bBz>jx}WDsdRukcXC%c1?y$`Q9@*Ec-`fI4o7b z-Dg3=5STj*Iyb0=oe{p>dl$Gg5@Ouk6+Tyo(4a4*ycYi^^3n0Af9+S1Om7o1tNwbp zoCm+(bjbk!>pc)~#tV@KS91Trz<GoX(HWXB&L?&K(+u_4n69}Wq~Lu>%(XkCHX z7sic+Ls4D>bnUpKL?%g1vQ%^9+`~HFhu;yu^a^&+-n-tX>fBGwM$}7GKE3{cR4dhs zayBr$Q~o)Bl3K`^%4s~nl`*l@&gxfS)zpu7pLoETWKqK7BM|(W(O0VXe6(DL&&|s* zfP?H5%2*<{s=~dBhWU@{*IIanXUPFEqHcLj^I+RJMD{6f0Ou>l%2t@DB$;|S8$6TN z^A|J)L$ZjbPV^$0V)&^T^Y2{!#s;!;t4*;WNC=YwZ}_r}ojMuJ+vcHD7?wczO7PV@ zy}29uZxulP6V~J_Paw>Ja2^xUG$#Xf4@x0F6uvshv0(l5pCN@^t?{)pWlcxX&N>cvM2F zg7k7s22Z1cg(#vwo*9pnC)-Y?sC2&7uURpF7sT_sC_qmH1vc7$-z;c#*c?ornV#0D zcuV>RoTH2)WyxpY@Bg^e;*)t8*@XonWidal(fC*NuGQu5 z5(Z1mD?Jd*iJ5zuA7f3W(4J7wblxWTJ>YF$^_UgGC1)#p&##i^9=as^A3G$L)>}#R z(6M#Qp~C|c4W%$#ma=jFgzy0OVq9KW5R6oSq!2ZHzMoW^-~&|n6aAf{IE_k2jrA50-7LaJ`7N_8R_=jf&g$<6iag2v2Ft6n5?-@H z$;v-<=`}AcohaRI-j+Rq%Z>RR)>-PoP-@KU7{H6EE=WiuM6kr-#_sKb&aRRVJ0Ih* zV$Z7i8(@Q=i>AXx)^<}+n#;=GC43wbo}xHjd=eSMw9R#Oo#x7x@w+c55BtGcMyIgp&DDk)m~?jU;X z`Ny^>Da6S~Ha#PUdDMv~nV>XeYe*_aOh&uF!^-I7VF2U5P(un_cG3{s98{L~XxT0G zz&A74ckm{O;F7d(L(i?|;PsB;azsPee@<|YwA6)ITtZgR&0woDpkw}6yPTH#6Qwoq zo*GvI$RPTesYdxsR+@Xt>CIdZ;mQ_hB&r?322_T+=F_6;dl{X$dA?%++Jtm}L!zmO zkez?^Bp1cz+1g29$z#F#ft27s+j~N7^KUSTw!W#SAe>!Bsv$FNb`K&?`wKHaBn3lf z*CJF#Iu}QVE8wL^tO1sFE(zGN$}@OW-w*kUKj;KSsE7ucAoWq!{HQueOV;mNr-yxP z|Czju^y<&nIT^EWqE^Y0P^Q1D{>_Alo0-E0>T;|JcDqyLcoY~$BDNbAQ!Ph1NwwyT zan57z(EQk`7lh8rfWp=H{qh~@>h&OsDo4iXwh`#u=Rq0|VDv(OlPd-+tLm4$*$qbv zYihK=tNVf%qQNB2`N}uJ%SX#~4irJOa!}u3wL(6pufshv1}Hpv0Y(f+GWNK4OOMh zs2l?hj`i58ADZ5YKsxfSj>KA}XN)+r_5qCfGqn{_4F(vXb)bUT5f=jX9>1!~osKYw z`HLwK-o00Fzw#KJTds{>H=I)|-*+v3Zt{*NJU8dHQ4gU7bJys4T>UfB!Y^FpimZm) zpNf&XOwejX8kRqfi1VaprV14^@+K=Lhv30uOrzA@U*$nsA_Q74 zy+&Hck0*0(osOn(yr+ceI)uw+&F-8J3PEh)$gRO|yEx(a;#18_0gpLHx8)93s5?e> z$i?zfK1~MK_?hrc%3FX4teWrGKlZ!l`ej!8EOvu;cE_tSg(L=SZTDX$Le2?IFTWB( z(c{6E$p?|mACa#*)-W$eHA4>wTiDDl4lryyC86O7n;-TrLC{7isq$u;&5ASb7(85G z>pigg-k24&F#EXTNEiT z-TlG8fB(Qq34=pJvM>gIetvH5qpy;Wa2SK6WWaK(--~pW3a48yZ5^G9opJix9T4u7 z@%sF8o7ov9)v(t6SDkse-FpxPIoC_`c(I!H84%G7NCU#v*hRV0$aMoehU=@w6P3IuT`mA!X1+v3Uz54y2RL-zW6 zRo{;!!4H&O@JMf>F^zVbp@z3%+rA$@a%RadN*^?G9meT}2RqskJb<#)vPSI|e5AUV zz~mf_W2O+?WqLnaS2TN8Z0}2{Dbx)KsHbixvJKYOavMdb2kU-pCut8Z*7PfpmD@s| zvG+0SR$358s!4k=6nRp$@W-5Cs%7wA!bSm`%>D%1<8LsvpLmJJxLo&X1s-K&k>HX* zyQMh|Bw2D}SomX?Q5}~Xc_E>BASuHE=sL!+yGlYOU#faE)<0cycAGKiiA7GJ5^o6j zxp@a}`JkqHEBXK-qq`X~vez`ZwpM8F+`kPmL%;m;dWU_0gWdFJ+hJr6a)5_#;IiE$ z*evV}FP1B9{>s$x01KkI(m8a`$~35MO&9Ys7~pK2koC7Ah=-^ve%{p9M|Y|*{Cj=) zH!48HkOBC4?e5cemg(?clWF$rtCZxx$02RD>CI#_)e%TMs(;q#_J_vzFXpw>#06b< z#*Ca=h^1mSHY_z~B-ai=lisG9#^;V%}Yf})HD^SCjBxaUb8Cz?_3ba0r`Uy? zjFD=+w6&PIL2(Fz9!wbxN4-LNnq4wN)NE6Pq?e2IR(!@7YiZwi{qeK%dea$L(mlWz zOUs+vd&4C79t}~C2@4=ouS0($fCL=!tges)QQ96>WN5VIYLV3sBVPOQJ$}mjhyHC> z``^>D%KPYq+}9rm5K+o#iVqha+CM-Q<9}obngb4;2Ry86Wv{)AgIpWOaz@B3*)oEG zOBjy_arW8ohb7IcTs>0Ky3c+tWssvrE+e7Bg?!oX;$GeQISQ5vQ56h}JlsG3t2jXM zo#}G{*UnDGz9)-~X+g~mov?2#p@g@xVBPs8&Nn?3cN;t{6M`0_Bw{Di2O<71da0Ft z!m?^h?ms zxEkp@^tm~)?g=FMzR-e)seWivV1RWzH0DVH%(URFU*P+&(MQH_EpQ9h~B1SZN-pTiUV~!EVVn*AaqMsGM5mcjx}Km*0Ab6h-Rx{9mqa zDY#R3_fmPhUv8!9J%QfP62PL`E#hZ{gMPt_Y=6Fww~L9cjP{;y%H^|tJ2$l1dG$sP zt>|<@_|&Xrg2)()UpQ#$WpKZ1%a;>GxaqF@GSZYZ8j&Vadr3_@GFVPI-&ie8h8>{h z8NG`c>=+pVKsPwWl)%^0abi>{Y#>>mzx`y}THU3fLq8M}zBhS)WD(#H>(yQMcQmww zYcAn2CV#T(2iaE+c}kC{CJI5$XK(rorLDZG@}3Xer`P&r@tA%Tw(-|#*VV5&R&!#l zSDPjni)z2-1@LnXR>HYy0FS(7uYE$=j$%xo> zuRjV=)JZy!Q=RFPM#%GM3*%iKcjDoZ@ohYSs>RJ_GMEwYj6)xOd6FgSwhR8LelCs9 z@`rA-<6;w76@hbW#vJRpjT>U7ZWH<~!NYxUaL}m1`FrQ8euMLynjo0v|NO;CPhgwf zpbj(;QjrY%-RMc^T@CNzdhj@GorbmIJiIUx3fl7`$z!j}Sb5Q=d4%~-hqOXITM)*I zyo=$oDYS<9Nt5CbXN`+yL?j$%3#B+j# zfH?{BdoT(?3@gf*3<2v6K5oDVzstTo!o}V88g_Rj3BrO$j)PXWsJquX9060#7nGB> zBoI0hVc+k{G8;%NDUcPAnR-W0&(kN<9_t=P%Tvs_{B+R7p@jc1Cbq*Vi2h!D+GLIl zA+uDKH6~eJ;u&*BRxMo$H~Jk(E;F_#(2{Fbn0P+U%A4P^erD1en*+!H%cqRpUhPJ) zozlZ_>?Uh1guDfr(EJA?CH(e(+6G(bi*!f<^3JZ4PmInQGu9*_i_m?)`HEoeo8$pa zDO|a&RpZo7(6xN9+?I8_ys)qU<{|OI;l;n&F;&5pwL4WjrS4Ry`VF)%UxDd9CEA?+ zVj(CCjvifmtB5|JYehk7;0e^x>d?1RUI%Q84OrwY(AH*P=tNImu6bvol2L9U6jB_< z(#E?H3Q-0NoEeCDL1cKi9UA+Al;I83AHfAzH6jfj;XX^3crUlYhC-ypMB`Y%+y^bw zAw|HV>!ZMN>>BX|5|Nw)uwVu6mzzi;j1JTwF%R%ol1pkk(LX4hF)%Ap zy-okep|JWyA^uh+Tz&NkYP*@Db&rC;sClKSNghdn8W98k@&fNQYy*^vvX&;$&-E}x z$lUqO{Ymo={W)x;0<3!d86!-~H_jPQin|j0^A|PEO=7P4k_kY6{Fy6}&IM0dcFWJB}MC zC#S)nTf$W%RplL-rk_2t&$;biJ+i@JV0>hmH0X!vE!i9I$V+-Ja+o2J{mSFeAYic} zg4kZG(6sPhOSji~Q)bq)r2VWc+4T}7%%`i5CYQ+>qeOyOJVYA(fn_{hfJ1D8W)c0X zz|69TwTq4PqP7V>V06mCm+NP^S-m)_J|`TX_GJ(#iGYlo*Hs*9JR#THpSWWd5#X)a z$hxG9H$RAXj&KAJXh?Tl-Kh|pVNsb>xJ>X2-C*;Rk`2lcpuoSLee`+e^^V5ehl~yn zPpYgk5~WDBeP~*-{Zz6ah_Ph)pv&W30;lWx# z%N_f!W$s9$dZAf=_1wG)wWx$Qr6jlqfIp*UPC40mZr*oa1^?J`jjs2c)}2g!Clv2T z8PX^EaLF!*4P+VoSN5zYTAcv(f@Foi*3(3?>!1DFi9%sFyZ9tuUZGByYn{tf-H=?e z!26cs)5Y5u!h6_8e0YX}=dZ2mv75LO?VwLW5U}a%$k(KpW=c}w;6S<2N6UW{O3@nxA&^ECz;N;d9AfP89=|VY2p_TV9waQ_a@UP2wc~io1 zTl!l*Z0L`SHnK|in01_J{wLpeF*$G}lV06<|NKXCPOQuLy-ynP zxH3*sf?F0yq>qz1mq!JoP$lUWG$>C14YY(PW>k)+cno;Ru-X!yQk=)6GGwvWtDIo%0@8Fb%n|(q=`dY{xf9wml?h zn7jVUu{>qvFY~Y?3fdyp(6fz~C_|-|o0scs(Xm-aR_a(p1YH-a20DykkfyBkC-67_ zR!|&ob13~>Cby2FK0RUTIcml&i@GIMpTD*HVsguiH7DcU}6o=jc&J z*Fy~V+ny)%Z$D^uMC`p~Uou>(e85;2NHw)5 zPIjhtuzuvm{Z$tF9o>@kjzFJY-Cu6@(oa4Y&)&H+)#f=B-97Fj4d{6IuQlumq9zgh`gNIpYXKyw1prdbQIhZLqnFzyP%d?Imyp@S!s*cBA%tQA%Z& z-`$4f?R^(M4N8Gv{g!u|i8Y@NloOhES58xcf)NYwye%zR;Ajw`; z3bHD<_VqZ3qS0y9P3WS#ya-u`$H`(H3ZV+&JtI~(LXeUIRrhVec65FIQ+(P%-`%Aj zD#3<&RHy^!K|HdvLv9_oEv;&J*6|z2M)l7BNQhMO4ts;VyGbD%u_NSQI<-$dvJ~Zl zTBQVWM*>Vx!wUpSMB5gYIH@dxN(oqC$bi#qZlVst!oSIu2mg;U%+qgz;nu`JZ5o{- zj36$Ay6xNE7nB((FGe;Wey<5nhu@$S`0-s^h8?9#g`+%DkACyqhS+^?`&U8RrSJP* zt4JK%ZA6q9S}Mkw9|p50k_&gxCYmVKfvbiuz#M9qAOyCCMB*Ubh3B{+3Hqli_QNtv z1aE8tK6}m4tCRgPK9ma*N?HC_IP`h!f=SjV7)r-J@t+ZeVG>cSV;_~0M)c_MS*xF* z6BB^dyqbW<52#jcIPqKi|7{2W5mm43Ra?y#8H=ZE{d87A%YiSM>a^jX949VAK1hJ6 zN}d>iu(7`}eSDsh>pud&00xhoy3y>aWJ!nnx0)SR>ZFK*`H1HgT=IG-F8BJicry5Z z#oD-bJZrWlFYK;9h~{WUNKtm<<2hS!xVK0jpGtmq{Z_L;vXew72ivIKponDCRaV_m zy9qLo9-%sHb0fZIHV3I6iI)q|RzID$=H|EoZ?<&XZ+L;ZS7S(di9)DqI+x~c9JVvY z*v#gJF4%Eqx`QjS2lps_^Z3H`z|R2$QX1r?Ujq^HZpP{&QeHxigz9YpiiN-EYWDj& zuiR!a9I3Qoy|r6sqj#P=F?3Kq<7q2T>u2!6=?%%=){l!T%669egbrv621$G>l9r&N zM&p_?@WB=SbFObZFwE4NwRk+#Jo8QE9k&i z*!|Udx_veFgb|uxa?c<#POiYB`44=$D9ADVe4?JmuH#{P&rx}Y{S{9KR2lRv+9AQB z_b@oK?YT52nSiUAvh;+pCq>a@G?M#fFdO3>QzY?8L4XnXvxSoVmCol=lYImCEGYfr zpJvJ-O7X{8HG>#r+#2{R4TUlrV&)z_bB|X{rkUyc z>H0a7BdSxJk=nYQ?z#6rit;7_qj$IMt=rU#F*{S=*f|{Q=HG$3E@8So`esRvkG@3J z(L=A^gUhbC@mEiOsPGbG8}02l`-b5oUKTRbPhmS>@bSKzFSq|0D7}G?!!}eDmr;zK z7!o)iO^2pjf|Xy;b9qEnn)o(g=K494iSsuE^7Af=ysrlWa?b2=AcG5bb?dK z9;^;oO9hTek!?}Yz-s(U?`Y$zhz2Q?3)|SF((O}I>YRZrV-U{$m&3Ka6|xs2N?LOd zwJYcwEtewZW>m>AsFwJ|<8QFSmko9dUlBWr99x^Y*HXIGi{%hrk?8z#n>8A#K@VgC zjCBx6j}y+@p(RRYB0|SMs+ip~4}G>0zm>)s7;3wHy?zI=(IQrJp{+AlNi()9rk8Yq3gP=e6UM&q0 z#tfutuKR^rn^it65eOZ&38WP2jLmKZ2D>8nq0_sUk_WqF0_uv{nE+QOX@1#XELX+- zEOMHz-}b=-!8`c&SE1+Flvu|8bB7Mg5#_wU#b*(7c%@-qrw zb)-lPH_;6vYrtlq|G)zAAF6jZK(dZ{j)e@C&k^u{_0Nw?Ceev<-?BjQ^J-P*h<7Dl#TbzoSLJw~Xh(#-hY)dF#(n zj?KfXbB)-8tG=~CZv*6sMNp(f+us6tD9AX2^nXU)MG>8Ws$4JO| z-OkP4g3&(GfuIeEy8KWYWSn>pWgTcV2|s%L*|${4yY%|TpThp0MT=_{=B2;zT=}52 z@!cYs!D8z^vya=bu<82zhlQKd=+JqI;;N?L(J$F2AG=|$pxFAWF8g1pR8a3P;yZE1 zyOwQ<%A@CJf#5;8EN0_wIWiDOo{HYMn$CZsiqfL}&CQp!L6mYrv8+?%W(bq@hNCj5Fb>dS$ z3PRgDAATD&TxRf;JmbsY@#tg?K3dd&1Jif!X^qkjAmOn^@;t@qSXu6)-D84>jMV1N zcar@Rxtf@PI+abq%9q#9H=CE`JLH7E+K5>)fRSWTpE6p;+Gz$C6CSCXh4>O122*F} z0Z0dIgaa|e4D(zuC3wRuMiinbKXMFwZDiE?mbi%BP*3;qSKTOxEI2W#<;*by$UOCj z_8xup9GgkU&*BBneWySSD-kjec6i+_hbMA4G2=lAw@o?w>`IfRNzppvJ&jyd*(D*xznrPVeq^0cY|Iaao znutevoB&ErGdd#$lPcH{AN?1wf9|wNJ1-Of(mN4@8kcS>K$Zu23%%g$oJ!`4*OO;9 zqpGP{6


    $Vd&;@GimRqT+UBshBq3tydSzhr|A&-tMTdrz#R!Q5<#u%>X(`OrqRy z!9pp`Dg2@doK&19dvyF4H5&aw5%~g%e|~)t1yNQI!>i(x4A4CvyZlO$hf0ueV%$NU z<-!^!itNmr_mP8#0M+N%#TP)MeQoypd9{aU>uxh4yhrnw4q`0{lD+lj6PC^@6eO6- zU-yeLUV3n5QJ_@*__mq!<_!QtF-Q<-y=%OgypREDOuNf|@=tyf*LTmNk=txW6YDaH z-}XB_V~8%r{R`Sb{L@b=#fC;R?V#77r+{-LcNM>lGO56hzOqC^?C8^l@tl$+-J-a}aKz>lv5@xtNqhpL&zXSyB@GOY1G8GzLsg|PZ)vK!i5hS(xnF5Gz>x+U!P z{-zi2AQsoJ^=n+HB=BcY2CzvLZOUMkzB3{dUHJN|zo$%~1nGb!(jANkW4^mGO&e<>H^n;{yLqF?8gl@bhfa z)?fezoB=o)1q71Q_A?`&LtwdbglpGt%SdQFG1|MikjXQfdp?C#ZdwFr;?Blk$ zb;IpzhgF!Ber9S38iKEW$`@^tHjwI3AgOx3xvJ@N>_2_FPZ|lxi1}Xl9Kr&}_yWR-VQg>$ zgr^V$nha?XHbewHA3>Ah9Vfbi8(tZJhrCQXuMZv<5@HnMgY?r&(!H_pBMu~rQfWf| zoJ|24PC6j78H)5{SL~&+h3*|oJ6&=3e)!p(w8us`p!7|Lvy;-a&Pg^Xn_ZJh(%>!x zt8GQ)_nOPUZe+q?_QJg|(~9p$YEV6!f)L7B&>7M0l(`m?bkwKELeKO6Qm^>ANXn$& z4?hTav=Sv6o3uGM?;RaW65rWJ4zXvJJe;=R)(0fL5Z8Klj2deWwF}9JC#jJDR$(J& zlhW*R^Po-T59${bBP`fAFhP#F4230%mui~uJYA}U(aEBQ&mvWgi1;pZS%#<|n(Xf~faTL>L;TBHnW z--YIOPssg^gdzO>$YhRC1okJdE@H$bwS0h+Si8qkP&jhiaQbyRxeR4{d2 zX2&tPq`W)pWsOv@0P-_om*S=Gn~}ilv26r6H|(jigGf~>`xUW4@9Vbg)&tOTQ805~ zkALOq{PgQq;ZC0SQ;y2RB_NMGpGP7vOn~vH7`N>{jXd z3uGAHTY#Z~0g`)R+{Np?7y9y7~i=Uz`3St^}-LzJZU^*qW+-JBC8B*vB z5>cJv_rEtb6odps z@*P2hwBCU~zeKlhCUfITgi)|)$s+2$(j+ksp6<)m@yDpf*`O~dpTkUiCcw+ z!MK;4kL{_pW{^I8=QV6&shkR}F@HN(!L)cyv&Y^2*mU+X&q>I{deOhj=tOGQgrhkp z$?B56K%St^TC6JD|BM+2J?a+t+7W<~pjm^rbYpwy%SzXHzW?!NI}=ApG51Bax3t6b zlS~P5@y7ecBBKmneRijG656CztE56SynGYYaCH8alul|;v-4oJPAyN>tN+~lh=DUU z+jgc#byqL?^@n`w&^l~fUGb-TEC7#(3}c?Ql2mTM`nTjpU z($$8;gAwQ0DohISwrg6gMmPr#LH~Os(Xo#12=+jvo?a$F>x)l(7XksImY1rmQ{R$l zQ9wZOIfM@76UHbshuqAWbMMsm-+)a9<#b(r)?4rmBQDcmng3X)4-_uc9ouCyK0TZxbF&*7p*7>cV^fdty~Zc2}SN zcF)yGV6*MJQl%eZ3zucmY8m4un^~U=z=$t*?$iLS&1ROM z%nt?;6^>(>?jeJY;2pz=&$_C?Sc5isGX(<(qD74;6Jq>YCam6UF#(T>x0GtY`UfL^ z%Wb9X;`&p{G{cyFxEr6F><{akXuH79RUF<60{)xi`XCN{u@p!!51^ue#Fk}Gey6-B zv}`rBQS%i3`xbh?DlU|N`Y@Q#DEDD&kIcB#3nAYz{~K1x!k4WBF>0EkwG2!3{`aSi zthVWmU{9_{E5MRUMVUGy@nE=fPq@e)l95$l@z)4*@4Ct(**UWEMOl)U1h% zua$`5#JDS&{VK!M$XxnzY6aJwE_|S%4>=omxS~%*np4i6@}v)FANb^z&JaTe%|5p0 z53cCQBd8f68;abF8=RoR4}3q1rD?{XvsVEKGg>RAo*$$H&e}7@l=IZ>LB;(FJ~q!xdR* z>zfC=i1ot;h-e){sr&Xa=<-@yY5=Z!q{?4yU@mD|tM$TB9N zjO60rpg2<1ZG*S-a zCwtNX2`x>&Hq|Swp5~*elSay)c@j97SZse2CJ>k}i4c@fNyg?3?FxXk1fN?UO_It{F?mStrUDNoZLJMwCGP10F!Cp?uZV_(|FjFNqbLU4Zy& zt*<081cZcBBZ9Ih-ePxR$ZB?AbhE-qFE-ztYWztUE2Qtk1Uk~-wvae2z>wfs^sbQS z_cVlxGK8Q9u>}qrvR6-h6a2|EQMtjt6A6B&F(I#rZ-NO75au8PEI(E+}(*%Fv{C7(8AxCouq^zVOG!-ePj&ZpI&0e{eMHmpKhu5=( zYcT~Ryn3f-%e<)`Oa6&;<(>stNeoqnXyyzltz#nXX_%%(-d1^qc0y@^_C5mUQ&RQ3 z!S5E}xI!@%2;4AY|22F&3gQH-sf69F3KC8P!rbu1+Q93aJ2$Id!1|6_x= zNdAC%g@$MmCtO3RSI0K7FV6OY5+r zVXG;g-N%dJEM?Z9p4ELvsW(8dTfEADzY1$1*M+kAFJwCegH#V|Ec@4VPYM+TrI_<0 zs~;oa;z2iO z%G#R z-^asVmwEppn9@=0n~3z=au&>RCiCw?qVv?iyh{5VCbDinL|v58K^^$;9Q{YXo6(&MG!|48RasA~bM@s1GvIX)OGE9|4wTN;HC8CI$a*vuAz4BUG z|J*8mxYtXzmZlgB>cSDXKkfQd-1P}FdA5pf$a>uK6+dq~8aOsGxmqEifZ-qG2&n*M z&k;fp>bau<5KW694@$(l343FyXRN;TnR9_6%Lqzo13@PoKES}Q2>Lh<9iWN;HG86d zUr)ZMQV!DBgaf>S95?c}O|Z*x+1hyfPv6vSoq4=!3}|?viGV;MrKqbqX@sZ&-eTL{r*3HJm-1u=Xvh? zx~}`ag1)JW8V>rQ;EAT`H$6Vu>8sp2PG=72a4kEeR1%hZ#tQc5Fnt8m$Ln=;FidL3D=WRxz9wHkI9j2mU+F}~VM>GCh$Z># zY_7O=sf~zW>eHj4Ug~7h9U!hX_uFT6LZ^E+Aohq-E23mbSQJuCG_MR$Bf~vC7lG1U zb*Answ85J*T1fgMGTqtVr+qU9!GCTJMQy(N)Nwt1D~S3Y)kt@~5Y0t2s027RBHjs9k{*yG&gRNHv=g3PqCP_hSS^X( zcrH}fUu&F`^EDl;0bix5njcwR?Zv<|u;i}rLd_NN+Ih|zzQre&Gi%~|)h`M8b#u z1Jk3YO#XGP+V2U%*qmXzbh_+PN=gCqf?`JE4eFC5ykA50z9o_uV2zi_&FVpU-O_xQ!>mUVrL zJf0_sXf%n)gL?FTMD`wsyN;j(afR7xKRq$6z6*iFz9CXFQc!ZI^$<~k{#ak%_HRX`!WK>Ui$7&GcEKtTW7TD$ zcfdy1EJ+r8^tn-J*w}vZ(CdZk-{=k+c;fStbj+wsux<+8{5sT;BXq^|B#dM1^+;8~ z{3SjD18~5AZyq`dRLsrk))Gci_ooZ1j>yzS3$!|1ne%otpYA^bxC*Uzq9yT3UyI{S z*>*A7lGNEXKa5=#HLGCnqGE267$z>6pWG33?}?>mUt}UKqR2bn?~h@Wz4==u@gzB4 z5x@T&zPiTHAKP7J&x?EC3F}E`O^(dY8x9NQwkXIQWBx9kFW#Tljx%3-x!<#~Whe3t zr5CB0uit)pyrmk$_!DVfY1@bSRuG(ggc%mezA=rEMebYDfZ^ zr{KN2KIWG96R~5H&Kl+`Ye0d~iHT~@m43uzDWz`p^a|) zyLi6R>)!12_t9D^WEyZyI%87q*1d$b<^J{4kfLw$N?JD|6!5i>mLC3Y2r7QV=*REy z)WDz4!zYH1)xluw8)}>`f-2^&X#4ylNwR+zkQNI&h!pFsmM5aiNkZRsp=E4q@m9V> zP9;;WL=n&W95w9*>EBeN)l=|d?f5y)RR8d-(=Ga$7BP=6eA;mW0xyqnU00cS@Ylj5 z$!nUM1CSmML{NA^!gY4C*gy!`xWmK4va+(_;otvgwIEjywGw=PTRx zVDtTMPm_7sPe(*Lnq@b=6}S}uK+y$$^9J|9G?D1@Lf+C@W_8X9ZPKv}1o3&JE9ZIg zTf}1@UcEAPusQm^GZr(-BouL=AvLZOx4YI;5v-j!U9#-OYR-k0YJQ0Rp?K<^h8#nn-{+Iw8I|`p=vS%zyWvX~IfpJ_pa>6>_I?CvvG@_Zc~*ZpsWG^?)iUqFTO{m^>e(fzmPZJN8{Ry*w|RHVaX+( z;6sD%`5?res2p+8p*JztGc_&V^>k}L_V)2PKwNbeE6@)49>TeuT-ZL42XvvpOA#0=0UFpZ@DDy9YDKY)SU0V3MyHaTjL)wRF?c-m|EV$$j@&z;BzCaw#gCSxaYP0*pfHk9oOCq3LKM+6TIPCE@FXPI{&xrYt1&1-Y3cX5fGs2}W)YvwqFwjcr91v#^LY#ka0f{4%>INf z+c8~;cZZ>Pt(0zn$Ck-JY{Ss%Iwj4waSJ4orZzGFG(PVkwl z_<9<0R7Lbbt@hXLLeyw57qN}GPfQl)^qtb}v8NWIA{>`i<-pq@u_{s^uu4gBOPRM* z02frBEAhrd7MJdqF^4i-oG=99DW*;GXB@lpMRcn=n5B{7#XG&kvI||Qe4vC1Ro#qM zs}>jdrBB70uAu765og$2Mg@k52+e*piCtTbJ?d{JD$2@kdVf&JO5jj^ORj*}URqY) z9Xe<`X#Kg=b3LLXE@+n{cIm~#9rbb(59J}m2nbQs{vEJ9(QmQaS?)8dccpr)gfz8O zL`iP7{K}(wx4nlc3~c=LQJ3ne4itZZSp4B??&f2^-N9i??f!keWx>eS)eQ&Iko5Pd zA6O&J#U3!yBSTG@-~22Ox_BQ=c&iyLGuwRo+}cZaF{V2KnE0=#4$C|a3=XlMS%-vM ziS9`vt_Zp@&Ph5Z+qGseEgi5}q-0`B?Z)+?oYvK{q)@pif(wee+p8JfdyfYGj$BEf zsgMG-?q6y)d|1#xCB#V)b*z4kjPh|AW9rp&!ZUOPq;X=-`;*J*;fMBxi^wYktsM{n z|9}7_p7-&>4al1^Gjlun3gV`CqHk&{<@3Y*XUcT7JrSU0ksLkPi&oCa$WZpcvYOlA zNHO379sG#3)8p5f8K{D@?>z5R(B!Qkdhs4OV>0!+M_C)sNo}8e=SY0qWRk;&yX&c) zyJMHCjuq4da5sD!R2~Yl>H%+FV8=$u2E@?%OjR_uUXtP_h)WEh4$o4>ud=eU37Ih_ z5Y7?m*LPBu9wp{){cKGGcdlZEwS6=?t`F!yRd&VI4ma@M=XxK!He+tCCJ+(+?lKtz z&w1j9?@jFy*TBQ#!WW01=1=w!m#mgQtIv_oo+0jdw#UQg^Mel|M5JXcJN?MEl%4z7 z;wJ|1h+m-3e4r2K_{+dL#M#cE|K+FdbH?yDnpWGC-JBVaQMlz)g z4mW&5JCunGE}U!nDE8*Bm(sm~Wi$BRz_ykqmXhyP)OTH=wK1^87CW52P+Q6>t6H=# z^T}UaK0~tee0FK?1gZ9qd+LMf*xbw+5p-`U2i4qNGzg?EJbM?zDH&hSU{zSe*Bx8F zUOqqg9Dd*^+MslW?;-Ph^c&(B0TRiP+wjBtUQSB>%}7qtP{lkpR>Fza6a1xV{T$`K zSd`Q16BqE;^0Qb_@ZWu@6@~T^mY=B%6x<4dB;Sr`7Xw~QNCE1Ir8lG(|882I9wN58 z4D|GYD}0uwh**FA)7hu*KYSnpb9Ate{I5Z=_MPN%7Aa3##PTm&w|DEH^LudWz=Nfy z5(NsS11tWBUDiKmSft7J-)scrj3FHYuaKN12BM;@1B=FpvCdPEgh$%;=vBEHG6pATKUb1o}!TS$HV61*`7EBFN?h?0~h`51Uhg` z^pL&rB@qB=g0yix7J{h`Q+r3p6(GI}X(LyOW_WU7UTOWff1=x3g#H&u!B!}~*0^x) z?O7s9CW{Scs%j=T_9(kYxcDzVGPiEZ`<_jZ%*}e~cEfTN`rVUll?1Rk(lLgOJq@V~+7svim>Lx9!_)-A`C8{)6N7V&W zas$GxQ`{{ck8qv4KXm$YrAAbliMuHj6ivz3G6GWEwmvW2efo3o_wi55_W5K+ZY~|w zkF`hsTc1ZgreCc_MKCk8&g}0DZ)*$Hr~8#UV2Zo<8TY__d!a2o)^%3bU%}X^pu;edT9w2y zbO_`9+Se*`5GCs`w$$r(`wod$oxs#WC-8w`j^Nj1{#hH|2y~m+fygp ztNUu;k!Dx{`K?qGY(<^B;AIpr*7;ph6}&k%Oj+|IF!Wv=Oy35HR132Si!1kpR3XNb_9d2nO;-s6HhE@+(n6_J#LiI7XY315sh zQo>`G=?#Pr%+8O+KJtuX5Xw79Ge5CbyhawY1kw0Nt3o=j70|yxy`TDw26%B@?;6nuVa5}52+OR+1CUu{nwn=PK3sqt5=gc4E6Wi6rv@92vTTeB^;zCsZ z2WKY41c!7t@}-m89V0$@bc5@YpJ{2ya2eib?Z~&g(d6s`et+ zenaqFV%oLa9uzl@>`Ej#oAB-vD$fx|dAD3dnuzop>4ifhx?!}_hql#UGwhMq*pnyb#pTC!y-So}ILNaxwBynRV=G!6R21P%y-m+=Nac7&WBwY+!IENkfmB z2(-nt=e2LQ?e9JR5gO)JMo}80^yiY@Zr4gIitvQ#4A6tz!9orT?|CxQs@GuoG5N=D zj@|!I%8w1<62t(>+L3Ceq>l6qhVdC1C*1ui0^lgu2h>we7u0q)?WrbE00`?}#o*jj zou5R^JQOb&Kh2#+P1bkUnn4v?{x2&(7oC45rhg`ktcml6(NhL&DOCVFnN}Prw$IT& zNLTksmg~CO&9Zk=D6$-Ra&cAt4(xd5BZsJJ|HG#hGuKwawqiV0Zt^}dR&kh_$Va+l zYD#~acf^pvKLW?6^vL_H$#Cr$lWjDPvyZ-+^g6hgi9pErX+RCB-N1Y8ULUQyA?PtW zKyw8W51%X0uL*n zQhgZxEeEb#53}m{x*t5x0J$6Z zYjxClU%TrpvC)->g4dz=JMBXm@ZL@6?PO~Hcq1nx;MWD>X0WF!v^~a@O{=u=vP%HB zx-$cTq3p>bxcXI^t7-#*!0#ny29J^~uaSkTfM|Lk_}l zumYAZwHjjIvT(X@?n7{m*Ik_Doq7e&@6$n@q{g5q0@^eIMN6M~N*Sur_$KCBJv^?NZH^< zUFMZyZxadwcv8E=-_o5-x(A+l1<0#EQyw*U=mr-FMyNws$y|`bIrvN7NxrVz^qNb5JFYE=lX` z_vpb?P*;>8vBw8}EuoO*EEHagcr+U{a9bP)R4HEa7S*DIgPt2woO}BNgy%&-YpGXX z#D}F-LSzCsH5=SmeX7#`t;1|04236?isSMq*$8cc3+WGSRkBdJ;u2FKqO z@cr1d+1+q#uFkgK;he6loiQ6Zo#T~+K9Ud~1XMjLX>tY)S{)jScq&$&Z)fnddtIs~ zbn1OIr0FamAhcsJ14fF%(pC~fG=ANPBe7Qj-2sykt|Mp$wa|zs#b|{vL=%}OphbH` zsjJq6ino04t3+*G2Jm{Tp_}8W^KvX%VsAA2Z+{md`0sa`({YdAZZrA4?#lNJ{w%Im zDI4KFG;TJR*0bduQ||sKq9LnR3Y`gMlPIgK#AN0P)D8=Qww!e?;; zE6!1h(Oy!_R!S%4t$Af1w7w#*@xCXn3}9W4a~hDd z#aqz4a#9)bsnh^WYIVG&BbYbF^lL#?>|}$PL*LiMOQE@w%ZX?n zJOS%6GXC_id+4tw9xv&9o^TZkU0*_zi_P_`H7XdGZ-@x*gqP3WE;826G-A(O&=|X6 zPuLug1*ekYv*!RdS^m|PH#|cQl@3oz646{*kmylVP)#5GHE}u3borU;r98z8a35A! zIhmhviT5(5P5(UYmpLT3VG*xx0pF#(@=v4bHLrlK39#mmO6_B_EdZul!BlkV_n>>5 zR2C2Zp}I#GRer&nd1AC0hzA$?LC(twUtpx)Judn*&H1m-t8F67MsdfFW4+7xM+T zUP#pUP#p>sHogK{7mR9}FNav`#hfr?IfA7QQ{=uE=hruMe ze;oJ?00LQ@rL=sM8$jnlt7|N{pU;Niv9cduh;QHeMeR7mDVk3uYlj9y#4)mHGPl(j zaf*`5gAC2Z@Kx4QUICocRTNpGNSx+&`|W^7qcaKO(&*Qh2PZLTTx05nHt#h-CEE6M zrWr%yYiQw6Zq&K~*iD10FQ7mK>qJsmHC|NyM#WRe#YV~a9k~8Z5x4$kj5w4(+zZfN z2cvucFK;go3FA?Fq)xz~;m2$sJv!-4A*&qY{0V5atjr-CQs7Re zo_YvNACy>UJj^21b%LtYpzVJ95GxPR8O;#IkR;GJUqN$=OkH@-BgyaT@EK%7S5U|W zMOn&2(LAq}fdJc|d5K_zhrc-l9^2mkGED#-tUjIc_%}qOr)>AUq3q}C{jyx9% z`Gag*#|&8pOUOR@`Vb@2%Ogb>CBn||HvV$N?I)MIS*Rebd<7i zA6fg~f^x2P49IC~slFW4Cm9#Q!DDEc1DszVG`cW7h_t~Wo)C;X&~rD4_m@Keu$9>6 zZ9yL4NDR1bBRJ>uRGi|Qd$SP<*rUxUbD;jW&dl)8)2SW*kH|~pfVwfQr<9sFZdd6b zYS{xL6DF5j<0>}XVyV$Molw*W(Po^W( zgSEAq`*3G$c#?CV4*WWkEW9Au=|mF1g!|}UQ-Ma#Hm1Ci{m?L_>Gnw3GjbyNtG^WS z&`5montsx?ZQh4Th-O8c21%OWN)T@wa`pagdK7_8i7v)I*eXf!#+4Vs(8SK`mUM0~ zMobx?G1b$L?CCfSk4{*}cs9#IP9@ueGab@s0$;ze-BG{~52^@Mhjwj+V)PB5_=o{Z z@>%CPwg_KBp{5ITN6ym){&6t5XPs}v2S3a!P(JZ`LUHudICFoTY55DE^^;3VMxZ24 zJ~@9}6)iiN5Suhdn&Fl(ZXWdS*r&q@p&hzZht}Pf8D2$+wL4O=_KCeN;RkeP@cqBB z)7NiYxieYQ_9*nfwZ@2&i-($zkPZJv4{TxY2Oq&eEOutA~2J0Jex`n{bt$ySq zmLS=g{t}fp7hZS`t@eZCIyLJ0z5chZsNwC#Ymd`Bgy*HIr>gT=KH$I$APnrz9sf9E4{zT z`&K?DKD!Iu`D;@bRP9!C{f77WK!I5vitV;06hGfVL8nI^o+|wBRe_%K;uN6V|3{=6r&FaCW+RPH#kkP7qaA2ms*$)>bU+`GFs%a z?vjM8gpM06a4o1M@_Ey|12V`v!vZqT5X?HAEk&}{kc8^J$ZbG~g;d5;Eb-q=u>9hjrX-s#4{Q+ ziQY!w#>8g=VxZ_b>}6#y9=1C%TKD68C)dL2LOco=K*_x$$y3Qyd4>E9+p5;~iP;;{ z60?6d;g`q1>SaGYE)zVrJ(jC_ur)7qWKwMSsy^+gQU(Ii3X(`ld z@y?KXag>nbmwej>tx+piu-)twa$9#kk*1zd!!sW3UnCkgVndawYpm z>0wc!DXiqqSaZ1NOQ~}$Le5luC&_ovpcP#t^ZtP3ZeV_-18T0t@7J#ph2Vt_2$9Yu za0KsHzqIgMN!~8^-kNI-IzB|E0S`Zy*eYxOktmNPSbZ6!9Ay8MHT&yQK;M@^s8pHttZhmp)EngZ5eTa4vQc`a&{mMc}SnBuO~ zvrDNR*jO2zeoGPA7h6(@-0Mwg6HCef6)H-MB}Iz!7=d z=Ifn#jc8|WUBH=|7&Sza*sa3&9dtQ{LDcnTj6@}ls2e7t-`Opoid|cso(l3?$V7&W zYsvEHB4OkjT#Y#h@|P8ym@YPf+@-7?h#q?7osy0b4|>f06MDF_)cfykwEtZZqEjio zT^qG_G*^z0FZBr7KG)!3Bgtay|NDKZnS{#>GA>!7)Uy2~im%M~*N{ZqMFncG{`ISA zqvs03w7f4dt#)60TkG`U$4sr}p}QBlqXRZWs@}mt14n(c4Ow4l^}}GYRgw3o$#WmZ z&Jv1+E`HZQ=1#!G)7-#Hu)!!fI9%pjs9i|3`~&%BvG&3b8?i)UNH!pp7#2EHu#2h+ zgK4|0EZ9H`N8v;>%zps5>%oJy7pV9k>Y0?N?>;gywE(HW95F}^gXuCg{v$ILZJe=x z!3IyEdlCU64UfL|Tl>2`k6A9;tS(^bfLJiyDOycAQB;q-L&s4y0SB(21EGkAnu{%6Q-N4DK@f(zgR1Lb-= zD9#JAAd|4ZbVX;~TuTu!%cJQbfNgNUD&friC+UUbd3A$+6>_G+O^oc(jNIUo`rKy0 z=v9?$w3Y9pFI(#sbc-QSoP#h~G${$%cqCAD{`QFHu-=?exIl{-nT;4Uv;^ z6gET2Wx78FB`o~CZ7biDP24-5%hd0XuNHJMz3{e0SZLPvPYHP6hPrA2dNXsE&HT%Q z1$=-SXvp0!%uFVG!9%@(YjIEVE3Sx-HBrL=urThi+@O?>Q(|w(Xuw5kQ@WPa492KI@HLpGJ@R-xaZvDQ(ai)ZY9k6d$9b{yO31@| zCpB!bctrl_8zMV6=hm|K-YogY=|THxAVRa9?pdC$;D%c>CEVta0eCMFwSv)WV-J>t zrHiM&Gc}F?E-2tCoZz{3Oo|GT3)ok?=&BDb9IGIZK-COHNdb3$FD_ZOJBx|Ycp2`% zr?Rd-Y5O?T0Q(TapoLqax|f85&)hYR&w?8@xmzX^X1t&wD!+Y3#!jYFXxv= zu*%)vy3s{KtG%;sm*;zf?$%s_K1<%oNT zkj{5nd_@j5zs=NcwjRvM9DS?)Cm%y%;|UvZBv+geb&GUF6UxDQ&3zK?yt>K0U(&;u zQHtad6^oNh$@A3-ml-GOy$Z^No}FC0{D=p4jSq+l;64_B>{w`MCw#sJDG_dRjb7%F zWrHuNyo~XW2~LhHyC`jHo~c^+8t-rYPP;S+;Z9&y8i(gLKaK#}*MF12UZ zca5%nzTjiS^{Bn9S1Q+6gp$<>UkG$`@30l90U7D$8CGqNE1{ILPPAjsVL`(!wJYU^ zG?7D-Q&Yv?4zDvaGyiBhd}it{I=;P0Q2;G6mS|HLOBHjld{+B}Z;KD3`4 zZXyKq!E)cTde_g)n8%2S?&#I~y1HM(GCGIu1`6(rl50LPGmK6K9oUM^*cx!Af*{qz z9){Pl^p9<7oBgPL7w$Ls?o+qd%MIQ?J$<#UC(4Bk)^X7)(jsP_m`J72IxWDv&0$TDU7DPgz?z-1C;cDi37&+7KnQ2 zV!p6HF@Q0S^lR%BEbCQpR53(5T4Y|2X8?Vbx zkkM-I$-m7u8mzECmvC!ChJ$k?kb#8^r!sPquzwf&3G$gw5W&S=#=CDq(EvtNdw(9b zU3uaA1sR1Jv=Bn-`{JdPSHW)aU>z``pAgXUZFxOD_={k}-x!AL#cg2;c=P$;^rp6l zHGEf{N=T2V!)Z7)Z3Xi^x|I~o+W_8Af;!?_6sp5rdiBw*cSs$qaCG4w)Zq@l&)4Up z<<7ZDY)}*g{ii;7us(VwsKf95k&CLFOc2dY3NJLAalpR06bvo?RHu3S}Z$$n0<5T@s zrq{43qA-(M%OtvTDto*;QQmgAv9mHTqHy{bkrC)*NgEv+BDfu=MCEvG7`er_bo{E{ zC^<9ptR~hLtMzvb%75-*t_4qkTZf&F>>Xh19j z_6pj!!%J4zbbjrv>-;;6iCdx!tJUk{853=Dk|&}1nVZh4zYnyzYg^ij==`*6~DBLs=VMIePZ>e&O zPU4lg!u#^b!J<7DN1c7nhQyrRi{60>fk@v$rZAN2zWDe&BC2>jn_X9TZHZblh2ONs zA;Dqe7zqpSHpU;BngLeNn~*WOdpfV>Z*vx3NRXvN?V5a{a% zJ%QJo1FFrDq_{I*Rc-ue)9egj;t$2$o?@zZgRWl`?w8AduWys&=a^5GRmNTDdA#4q z!cUs$crl~QjzNPCE_-oFd4Y~#V^N%Ob|#$0ybjIHI50NnV8vYinY|&y@4G&tzKuc< z_zBL1VZHa-iXS~D7Bq9C<>ln_DAcy>pO%5;B=V1#an(af7V57XmdbW}arTrB7tU2l zlQ1UwFAt`WUYXfedK9Ya291s;WaQYpM?|%;#CWmLOv=!PizzX>-yM85#0K~cT(KEm zSG*LV(G{ZD!fma4Ch7wWo)0JGe`?IfUpBeJ4MIO>o}&aQ2d70fVCAlxdItH&wh6`G zBpVcu#w@^kCZ5C$zVsyXw|2(>awRc&;E`IQvIUX6pRYzxToiR&l?vpp53aBAgb)-c zO0qeMojhL_32B}|hHwz4T|z!C`)AV>(h&7bm0O9f?DF+D=HhkdY)^e$q^nRcAD3yq z_D!!y)o?1@t@2#9vsEa(Iz_x32}tI_HBMiU`-n<<$JOSTlm0^IK(or4#eK5kKr!0%=FS;Y_LAr&2xTM|b?W?Wtt8JYMl{sTSKIhho0oJs)?2`nB)YJJ$MP37C3ptMOqJWmHfp*_nSG%L9 z$)MKmW~&q1<-qhoV5C}r?$tm8fbikX5mA8A4F0Q*p8ED_CfgJVY}2dp#BEO|*yUS%RG{S=wx|F!hW7klIB_b5&q)bJS6utxRzO~cdB zH2*uzbSb2)t>1bR2Qg9Jy??`TyFm$fBj@MmW^VEZPJZ4;ORbIUww ztI;?b);e}#7}pUkNQ1ks>RA;uQkICkj9JW*<_+PcT4a20ng6u2nQnM`}$>4-%+FQ z#Z{lGwgFra%~h9ahIAMLmz5+U=k6-m^wxnrO4f?!GD&_#x`XdU2o;NW3@9`T5%@Kw zf9o^1djE|=Ku;k5Cn4QZuZPyNejrF4!ws@CSa2z=)L#fnM>tZ88S(wm>I zcUjU=c`?UqU<~F?wDq(2iQ`>o3MY%i>#0;EXQQ>mRQIEMng90d;<`NEMgUiJ=&6~;bD)2xd3AP$<6pHUyX^Hu z>|sLk)~&~JKbV^+yAawYm=3O1Z7@^PiZeD)&U|BoGOmIMHQW7Z@J}8vMmIm2Al**V zu616=>Ii9`yb7&3V;G4MSV)S*@Za*B5k<=wQT(WnceDZQxhw(6q{dvNgRG^a<&f|- zSt|3QJ%`4H9yC8@#AhH%?7u`~q|TB}md2K@-|niBR7h_p(lY(dj-zn$&@>?yWdkt+ zxZCGTC7g<18H$+#_wwF?j6@D7{?sMsr;we|Yd&58GwSN5h zZu?D#FM5)AmVRK2PFO7%!Y?uE?zMRHRIvlv{MS$J1eOnKK2R}b!y90|sMx9bsfmBZ z5lP;^n#axu-Vw({@u2Zok~F%1E35>Pb1uUF)+j%N^tME!h0Bp}QSs;w->a-alP%F< zhfII}8I1)%URzyR(Qrvs#=t&lSwr*V?o1Br5HlK-VJl8z?fbTslhm)$%l9kOrrl7l zTe7u2bkIz6F{i78rL>oC!=C04p~*V4)dqJ}=}=Tx1Ts0wsuIAB<+Uj{!Vw5t)q-w1 z7WxPd13O4!h7qJY>PaLJ$p!8~_17aI!A^fQ;!swk2a|#t&oKn54yzUb7aAtHdO55% zo$6jg3_0T(9ro$$G_q4dPy3UxU0=zb;m~2k-3-_#q}Xmp*99X=BjCTsUoC!c#z(xT z@WU4g@G+)G-Hr}OJx7r+=>lhQ=zxArIuSO~>WDIc@89r8-uybYx@{$(ToAV}jyA~B z<8Zkdsfd@lv%X5VDhpJQL0m|O2VRa7^@f@ljr&A|Wdt$&({_6+-GbqRU@C8B%XyOt zk+Hmtyy5~`OR`O5UU*vki=T!%^X3c7XEJDbpHnwxDxpM=&5nqsEPmm_b6e>9=$K}_ z3cBN_?QJ;6*>xB^HvGMgkEx#d`7&1DIQJ|s*8=ZLL?V)k^tt8RT)URTq=YP@l1Ab&*1KS`yo#|9;qC3-!jGwBzw4OqLYu5LIc0#; z)P4K@j;8%`FtpH*+!nuwx#_+nI>%Q_k6&p>v{pOGGDmI z3!2T&onIcmJ)s>|JoUrk6+*^fL)H$Nxf2fn!S^=_1<1;MA1GKmyw&RRAK6Yh~-xy&qC!D-e@-*I`VMJ8kEP1=t;LUiZc6VVT|HMto@f~p=b zv8+9brxR9saVZVHDhpU>n49&VQGTD+M1t+d}r+zDddhCbziBtKC($gb*hr*9QI8fNTI~*REwuU;>aFCe zCk~3Yw0*Q>Zl9EuWMlb+VwhWc_Js!b`EEwJv*QfdcPAIcFtCOJ!$1fUd5%(I$y1bn z98fof>k6z5s28R%8w`3+pm4PS4XQYCfo}|02cq94QmzZt##=?4Ja~VRt0dw-qG-`@ ze7gfR>fX8m z*IZ8i0jkq0TZ}ud+t>7E3+Yomhg$_zwHD7!`|wJ=nl!a8a^d(8p8<#cG?##`M}%hy zZTRGdL%HF;B_TU88xy<3k{k%m6Y%!8m zCNo>!!~o74)XIp$N-}jx!|*rBl@M!0rX<@W_zym6yEc6^oP8(1y-TuKZqx)&Nc(c^+*d`C<-4)5${%kRugWt z4p5;&V|!RS;@vVg5fNjJ>YIx^+?>917het}*ha+c;Y_w)lgNt_9hGQY?2mo+^Xub0 zkS9*>@sZ+`l8MVy+~8ZTz4xhq;+*OVYis-Ss-s~K|BEYL z_QQ4k*q*0?jp0vta9W8(nez$J=Y>%a`T-5-3A3^2*6v_B^b{WUki|Yf7a6GsJi_a< z1teS1+3m3id~)$D6duJ$;*1DB8hLP%FI#R6 zJNTCH8Es?_c-CV7?x$+p`Sh9N$b``g;QtylQQ>sA^(f$*iyRbJB-?ND)s~>#8#s)N zGMisU-pQoH``!7gifJA5+t!KB9a?^awq~rjdm8tbaWwCT8 z7Fq+cF9nJ3qeGC|_KUEfdvXqV#6*xPCF6MjS&2gw0=VnOcncBM4{i=b!g$pF`96LQ z@5~sTix#>VxJUg7>s3FiSX(x^>f_Y9L(9i69loOorUMY=Wu9^;wX1x~U|Df2S=E6g zB>M{aDz>$?74d##l0bU;wh*@II3z)Bc_~i8)yZj~0qGk>x=bC!U+v<;=5JC<-qP9P z)<@1<`n~pQu~+5*Va(5-mr#aARkWWNun^r-rA-r(BcsG?p^Py^!^lLFe2U&s2Ev=v z(W$qeEWtV@%HZ~mZ~P8uEaQ@Au$A(sAHgc(Q2nEHz5JQ2JKdb44*k7!*icM{BK~vb z-vJ13y8lc^{vS$aWMZ*5rh4&7z0ZRONFU}m1Y&GlNii!!AY-J{RsG_HC(3MyktKq< z9oj1#P5=G#%QE2m)t}|Y<#*)V=2|YEY$LPihArA2`ib&9`|hy)DSg?YP~r9xCmT>= zBl;AXtc71SgU9#mzCfd0qap;Plk7cG?HYj`o)g0<>7XvRj#b${JWg^Tug<{0lO%Y8)KfyNKkY5?u4V_==TR8d z-vv?y1PPZx{!yYD=eXPHLKw|8*I8c#^hR1Nos5i(5Xd-Qejo8s4Mcds;O(%BEeI$+ zQK%EVQCw(U$p{FAh4zSX=R|?F8Pd&#xW*uMjC_0?jDNkmr80K@_x+dPm0u8&uB-tb z?r#_Vr(%2*BS|vJh9=C)G|;#xQs@?-D(VG1ylXGKp7?mywi(tppEqJSZ+GW5f1;n& zkYViXt2q;(Y|3GSyNtmFdS$zu(rBT+pW1tO?GVttLBbhuzFdC7Z0wz3RYPl|o%&OI zga;$q&cyG}Z2fn$Ijz6G;zE$bZ`V9FEQ;|FrHZt6PRpe75GsP3 z0a}0yCW%xZr@zDYRj}jg(~%;I)Z!y-#gas5LBbDy$0ABcqh8TnF*#hXg@I3Xr9mNqsGc%CUDX>QT2n0Ns-`)!cgCy032kLoFSusxGy}c$h)?lgJG=G*^F;d`0riF8HQ0`{wk27e`LHyQyltDX#9GYP_?IY zksz}8rDIkm^2dTe=D~wen6EC}y*o2A6CWSHyu7>?qS0Djz4kh#d-~6d^Lyex7cp{AZXk8eg}X0n8QR*Cp}@+EutKq8z00oSFe<8N^t5IC^kf%1XngoRP14X?hn@0?wRNmd zabtw$&(y7o{fnkl1l$%bcHyrzaPAC1pH5C|97=`*u%mMEM~1I*MG1B0oEodex`0eb z8izG-%RuHAOe(411meqZww~8Qg8$|0O8GvVr2BKpc>A4dWb#I?O}W{4AwlFwHj34U z#EMtJ486`4iKDB7jQyrclI*lur7&nux#?U}Tg&3T)(FRE0t1KV(cU_nVkCmtj@9kM z;m5(BPaNYLY=_xob zB?D$7$$ra2S%Vh6hJ${nx0PmQPOi7HKoRY4Gnq7rgYbp+S!x2Tg^f*>Q=>t`oi1QxRy zX>tXUG>z4<4Fs3M+woq$p|mu2`yz#p8Cm6w5@uZCl95+Dw_>km0tr7k}hB!Cg zL_>vVvu9o#-N{g3evvfw{6f(U13beWa(t7PIqT7`*i9^bRAo3Pp!~#9Z@8(_4duSK zSRH=jZn3w@vrEooyz12aLlm6y8mLzs^KA7yFhMxbM#m#ah*bVWUi|Jee)gF1OW zSLTJS(RT+=oY6l*50gykv{bIqv#{qrUJvGf@jkv43O zEMZ12z9c%NW^M2)n`G}?Ypd1LF1q?E(e;umj;R9h3n@VetgMwH4#5?ZJ{HGDoz|^NgaRMA(St|UzIrnBachI9SbC%xwSj+`#KuZ# z+~Kz49OqoHI*G8%#TJFWu}|ztIM!%u>2sCdOCC2HaWMwKG?j}iNyn$?%rw=8+2fjl zFXECBB%vQhBBR!$d6H4_Yt?5SFgzDSagO2@yVdoS$qAEGUH*RQ4Z61(4Jq$?)|SX( zR9PNh^|Zy&-x`?&Qtp_G(nLX%(I1Ej?hw(lYu;M6S0l&AAZ$S>jLiV69q}{)I{9qqU^tS3*izz>Yu{Uhl6RbH z_GidWc$^HIN@p6urs?zKGhESK`3Un+-?Ldg?hSjr%XF;9noW*M=g+{Bi%8>APlezk z0Lb8O|9*XP{J>nty(9%CQuh1%I0|va`KYA7gfC;lN?hFh0)?4>cuJ;=5V_!KHW0p^ z*Fzv)y^MNt*G21o^HMt{Q_1BicFkDSV~U4~Y{yxSA9%J;Ue1vTaQ#@2o#DZs^S(sx za`7B)>mcfnoA^R9)$}(N924>%8NNmUHrl_&iv%v@V3cEjQVV_h@9W@;7Hiq)Qv8Q7 z2#3EAqq1P#*gL|%-NNU1ZGC)fLVX8hMH|()e;!Db;D?s1(dK?NW!|P`-6BUq^Es5X zCDwt~vv{m!YN4B~*3VsqtKeg#Y<))1q`D%pW?~r;_RT5RG$p#I@G*jKu1Z!p_M%<4 z9(;N(d&8X=-T0x~n-Pb7V_6{H+eIXN6py4CU2A5WbF%CQ%{A-_0JI>{?8L4qsz#!P z`I-Zyz-sf~EwvcuL{N$J$owqEH9;{5>1U~vX~ zC{Ix);>a*+MHi*e2V0%lHphGHZ}1bCfA`%b!x3{ftBo%|lf%uPSN zm5WZoi>Bf-IlG3TW;H|o!mQ>F&%9^7*hHeqgb%6KWltEYFu|X%4%e_>srOJsMl)sG z(REKj(yAG=hx0 znQ~93{e%oL-kWjL?q+Y8w(vff3s{Z&F|0p2kIO*+}$3t*WuvHL?+Ntqvh=Qzg@{fm2HeSE_QCumS(&met|*@{)Wl| zXY7O#d)gPyRMwnw*QVb5h1b5P5D9B5 z{W0LYAO;o>ri8MI?d2t zX>x$KEMar%cN8*CkWqhUb)(~RLu$a{5J7_0fMFj&T5ttx|iW|s=&|wmb(i~>Xp^ERa4*rn zw!9EqI~=FGEG!W}IDZld5{TfqDGUjbRsXcvlpfGgD{(#b6ZrW4i4b~>mQ^%H=*^T0 zDOv$uQ!~=b$@#|6$qlmo2dpG++&(&-olV_Wu&fJJ))(k51^otp?ZI1RduSAW@ON*} ziDQSl1ci7akvV9F)>&8Y-}F2a6f$PS&Nr7- zFbNaR+FcIBse04(jyf09>vm+YuNRGrhORrVY|M3+>?^vllEbFqn#hDk&2zdEK8~sE zQzhCt9P(cUpF9!IDI*-nd(<$EqHvq=I8^Dli1m2EAKX<}qLI_$cgudty5*W!D8gn< z6xKb8|4=%9Na}?g8ul$nc9wRGLMG@at4Zl&5Cas-8j^>dBov7dgEOt@VKMyBX%7T* zla07~n8g<75*zvjP^&J|#`sQerdggc^^Bb2`d>$c@Y^rBrbXf+e%F5ZX$xFO!BoN|fuHx5 zCZ1~9Nm`KPmq5=h)W^0?$(>lTNGJ(FiH4yuMPG#kX-*BrC$0Dua;4njWf4hAhdhQ< z2LWc<)GZohlnYxdlKLZln{_J&$8Jtl{oSQw>E=}B*yfWIbt39>fx%SG>|ruy=a}=} zUj70uTpbz)v?WQdB5)%>iwKTCmB8GuMHWKhl|@U9;60;{cAI0Vl>7Mw>OfaunGO9D zYyir2V%cE2OnxAVu;WJpRGh6W9zN>m?H}`}i}q*uZB>lxl$*SgIF}V+H7WM3Ws*X| zuk7RIQD)}>IpWo2%p)uGlHv#{1tnoM*;O1W0&w9zo)YT!(F7_9)QD@` zQ99RBmO^?F!HG+>*iZ$8>ol~ce;hS-c#9$|B`$Ji-AN-|;aB-43UkuJ>tc*p1f2&+b=17M~}5JP*y`LMy$aqsN2hF?PcrxZ-d3 z|N6xb?V~40`v{WoDBXLbV|#Hx>C(&a@bC)`b?d(j9TfbYZ1BO_67Z!n-k0JUQIds+ z9Au5+H1KzQVXuYaE(IX%Vv_XS+8!{LHf;)8d{_Ifw)XI6ru=H@=S_Ki(L1p{nCJxD$s$%fOQdq1X>LCa zjT_Bg_w@9dN4Ubd`T2u2LPH_eKEZ{SW?|fzkLg`_?|rC;Urc`?zNudK|9rdikdZ^8 zsisCO{!sMK_e&ybi=SiuF2ASOLlzbmT!x}5@QXh?ooaSGoqEp5@v!}We!DCXO*O;H zq4wsFqv-I+$Rx|i@bH%_EH8U{dMMZwLs!PO4pozcaxyb<#+YN;0vjiw#rD}28-Skw zep6KAJ#KF9T=mo%zf<46w&TOy#Q6BI<&#SlmR(Yg6UdR@p0uOR+|p2mI39w8kg+^A zxF;s3gO63~f3KFSFwo^asCAXx?$bU!Y&eCaboEz%e`8uY_WW{4Q{&y!H91{Qk9SKS z)b5-fH=ODj8X9VA<2sy0c!7X$wB}ii2Yc$g#^i*SU z(}t7n(%J7xn{nw!x3-AhPQ1t^qWaHs<6W2#jW(sP97%o3rf_b)H>}0XanAD0?aCr~ zqW>q@h#Kq zsp4+Yj5mdv>rJ>oHhH+X?s~QWstW@$wb|KUrq{E_?YA?()`vhcF6J`#VkzPZWf*)u zjrq2cQd=km+XRz-!f3g0tcq*)v5Q<{kMN4_~->re^;8_d?U90E>_@ ziQ%1f=b{L^<+?O@S66q&MXcgk%8OsW?jbUF@4j3b=S~%;_1S{z09Z4LuEXP#tr6`4 z9WO7h)~NZQ=1C@TSDkzJ9y7+AYhxgK4lUn8>a$~GV;dVzIUyl(nU11HMn<;XPZi&G z%ZHHWuxLDeT0SRn2*jRml9P*yiXK&PEKAJv$7}+-B?uHD9*Uu1c7D*cJ|f#VP&69s zrSZXfuSki@)ftZyXb_(g4?7lx9@+lE!Po1O76zZPv+>4o*4>`K;DCLl__R^Qrs&0m zhC8lltAIOmXr#SL6W~tVBPo^|?~l>mq!e(P!1x1yW?>=sotRBvaRpPW;Neldb@N*3 zYQn=CkLZ+dTdMKWjsUgjL2aRvPOaN2FlN>S@6#)`;(dR=1QRL0N{vrT{f-yYfHiTY zW-*&=ab?AKsl4sF-SDg1Io38dbOH}0{7$_0207BbosJK-Un*y3WlgnSaQGlrSn~1X zv;IO|cw8F?2R~4c9OG!{9G5vE`#k?}!;MWpPv%S5| z*cP9VFy_7a<8(j$H0cBb{GVXvuTBraFv*zTsSkqr|4dUoc5i*kWXVZgbG$RMyF79h z;pF0~Uj8)lrCfX7d%MUOKuMZY_vMcRO`ep8Pf^Hq09OH=Y$k{VFz;l^Qo45ID^Kq# zG&dL0J#;tiOu4BceeBX|4!VrxzlHIOHHp>Defz4(VDXhI+!LA|`Oz}d=5QJw^>nFo zFo*5A1;n>xfj4VvYMA|wp1Oa9^1x$2aRwfG*|nN$q)Qz`H#rQ3-Aq#Tlt?Rrftbt? z=J)%eldA*5T@n?Kz9mp`s2|O1_{CmHDoPQ*=e_j;mfaGp2H-#k9U8tUhoR42y9e8g zK;tM1HJ{p*nmY&NX|sv^4{AI%A16E-wciEQ80rrX#bY*M$O4RyK`RsV-fu5eblqmz zYa$l#-kS^wA!Vw8frEy_(bfAdDcHVt_^sE$1Gq9Rf4un!Wh5+_C}?rukcjj_cZ`MK zzMc3?d~`*1^*%VqeK;}RAYpsoJ4WhYu7%DxWnEvq%Pq&|XGa`I!+MlM_V_YP!cj`! zdkOmne)<&p>FKXo_rb^j$GU4>+kTt$$@=NZ_-XRfX|R7Qb(`w1#&eX}H@*vZ*$$Rn zq>Z>s{cLyCEh3J{P8|MpS-fkvIfQH+Dn@NFEN2lNJw5Et#wQzzclp;Z?WC;UZVPh{ z3$Y#kFb{%S@b2AMnQ5RxTeW3ZT0D;)v|~3f9>NL(@9dW?@qDB4l3IIiz89}L&j*{r zMyfYqL|^$z9C-d-h#8nY=Q91^!o1&Zuj1+*f!$vj`|RaFj;=KH%)h-l z8RG{&-g(v+X!u|ijDe>Pd{**EvCE{)c@jo15t6ffUs*jL+&4-^p*F>>ivfXll5ej2hh3EpiGVm44H?}M#*1-;W5k`Kylbd zC;=pfYY8w}5MewD(6G_Y-E`jrE^lQ+!x3OT6@{uBY^HdOFlAVFdgq1fwrJ_(p0iED z_MoHK&EupFxN-k!3IvLtu#e)ab!=&$);I`!Id)e@y&#sld?&&Cc+uFB{>pT@Yud)` zw*A`iV|%a@SjyrGOR|(CKA&Q{+1jtytUz~QbzlrI!2Jl^(pUE-o6^q^L+$pL`ab*n zJ*jfcv&db1XL@O6Mg5eyX%=gUDEtz!o*v$|zeun7+c9VsW0azu)W0<#1O%k#j=(6$ z0MxSn{z!I%MQt9rCa_LE(&?5neXIIQgwiz_EQJd|k$AXf+6ZI>CRaZ>jGsVZ`GM=u zBTy>igYiP+|E&S;ze@GXvkD64{m(K(*r=$dr`PIS$k-2`qZN4g`{&O!V8a9+%uVnD zMep8TL#yJffi1?;M1o!7#>YSqy$RgR&8L2|scsO`fzQTl!rMqoJO5SPTXg)>PO*2c zVr33?Vji9hNH@7g{T~ehTc_4h4@SVp*}0-Wg!_=$)y3sISRyF=uEhY~bxBdtNY&G~ zUpMOj)Q1^Kfb)Z@KB32#EQCC|73hvZNGhj9J<^OnSalE7?_AqE1!=X0Z390PyFLgs z(H-v|7mId6RDzA-r_OGDq0)e1t;UwKU7L(;eD^=hLDHam;ICinx(r*5d)iQ6Uk^%} zllbuclqR@c?6B7ML}TDu%&9a`$@kq#s2?Rf6ZEtRg-db?Pmm-MgCTbeS&ZZ)Va;zx z0;lJGEs-Wswp_@-FUq1faBb8zdP*n2$*O1YGWl{AX#h{+Gd&ahyKAUW3Ry}sWde3@ z-TLkAQXZAId>3)Ugmp7ac|yyH7i$CQnGyfcxrmOxv43muBPTq zi`i&{AB$J9>J>wHY?!(+si>_@ZZT^dk-O3bex5c$S4Ss%%28sOe0}cj*?`%I>j?OU zEv%};Y#R4@dCpo!ND=}wYH`Pwml^__L81D zUf0r+Ep5bQ%CNHMX6037Wo6aX4A+T?iQ`*!g)W!An%&ykg3nbtjFTpVjGL9~YgV@f zhNcP4v8sa${@j!*5a;dup4`oDMK~`3I~3xti|0q==AE z;Xf`2*LG)TN2@@GX7Rd)x;iZ#otKA)fxbRs${i1pQv@qPl%ly%(yBWBs(~N4UT>*W zuzB864Vjt#if=(emF?4CzNEmD1wR1mb6-;vGrO6YLXgJK&kqSB5U_^)7#n-Y#>RFg z5GVQa<;xJ3cXV{Phm;ys3keF6AH27*w&tV`uc#2F&{0!W&3gM*_WbejF%*?81nFTi zSF3!m(>UXze8DkpF+#Ds+0>};(46G|cp)>cwd!qOL?d0<@ar0|cI ze7K^Im9{(?)``u1=+!BUiHIOR-&M}4w#qFr2c~CjF-_8|u&4+Gm?q{K@OJO)++)O3 z{dq`eWo6~Qw>Amcl}S*u%`{~IYhYmDoMhsrrjvUiLt=YhZCso-SUd*@fy8fiHa5cW z@7lHhL)rpZ!B-aM=MMs^;i`O4yvca}JV>qV;uF||>FH@`D=I4(9w*#Z%b{VXDSTpY z|5%V-Q2cp^1#B?SLy8!hqX^0662nSxw_~Ae$y0WZ>!V|0Hut@^o}&rH;Asc~NJvOB zW^}l>!9&s0)4$ejIt_ufJUKZ5djy$|l;4R2?5&Uxr8lZ2gvEDmZf>xrM@USJ$U(RY z)uBVv4Ki^5evR#rP~CnaL4b~~Zd6oMCWWJki3zwSt7U)nJSrv8>(?P;eFmX8T$qoK zkAZ<9JdTIe_S&^;=SWB_9zDXx$8SW-WqI7YcMozaMMcFX?_6j(V1}T!vf;P{xUm;- z2TBa-$jLPg3_2zq8JU>E-VP59G0@Xjd2U;C#}iF^dPt0cPk$;ru~p&?)y z)&)CdYs>q3-D}c7Q!^tchlYY8b5GmYm?eM}u3}=6QC!R`B0_zMhC)I~QIVap1AL~q zxH#-d!{LhfR^Iyh`h?!x%8C^Djo;tz#A5ALsqc0XQ2T!T@S)CqU5-DECjbv?tg7@N z;~-;^QiX;QQc_w1JnOWCpX6^66D_T+Yh32Fwx?sEBS}M}3$j&e$ybbN)~%O?w(9{- zke6=;YVGSHA};RkdobYdB%WX9F0>uprp*)q2a7P0wsm!N4Ghp3N-au&l3;!I^6<5C z{Ych!@GSy+o`;Gj>TethHGfP@ur5RjzNF)B)t@L2@GH-wiD*I>M|)4NCy$PgpQfK4DcM)Hw<~9ARzd0#8X9_ZaL$kA;wdtgL@Y37^=FRXG z8hU#DhYx)LYfDKsx_FT0#wTs{Ciw^-WHn%gbY zJw9Ig_ANjpNsw*R(9vnAsZns`L`FtJ`U1q@HFb5~fZG8-NrT%e^AX-L(%9H2a()@M zDV)Wi;}t}``T3ku=?%b&4r`W`b%|y@1uG93a8N@0t5>h$h&ue-Y_CnqN_Z=_u2 z(RQg{%U|ugcIy@kOfh+4w0_V40|qoG2(Nm>VD=`2>Y&r$DPZ#dc~H=Y4$__-P{`fcN&ih=N>8O)UYa3D9SV_T_& zPz)C?G`kUKXlQW97v^(GEPog40w`~1cb6D1AUiu762)c=(h_6mF6wiz)z_z^uHM-i zbpf!SFEdWx06rk@g1v_Kj2EWeob4Lu>A7EKf)l_>Ov_tVUjD?!hHb7I+)`l0C4vnA zJpv?=b(Gef^NB=% zNg+92&$e{iCn3x?)gT*ob*Rw^ng(7SN! zCUboAsIt6k*RNl{dey_NiF+-fWA$@g9qUCl_R#0QT{WdPh+g>J=8n%|DYInq^z^j1 zw|{Yi$VrfmAZrV!cYX_!d-0n$0h|{T7ne7tOwzea@Vu$2N|ZUqZENoCPif|jjSbL9 z%s%q);lsI6Uoi0)3~+7b<>um{aKz@Qf`d2RC8|dO*6}@BSK>^6^Tu;$iJ=N5D-jYL z3?P$*mDOHi!x6sPElFYF>B&h`6BAZk0Xjh#|%Qx*M9jX04 zR5>Aj`!k8KniwcWfN^e=On;Up=yQ%qfH<`iqF;#U^3r{|d3l4JmJZSQPh#7q36lri z;kc3Xx4tpVcixQYx@$t@rFt)T@N!(onkP54tR}(o;vxiYMCZ;aOoKfk95x592=Z8rdXlS9Ax7k+ai7QCKO@ppFANPBbqM(BvUpIC^j3aO+GjFaMZvGDVwdXvC;q(XPA1%){B1mJoD)o^jia zkDq^KejZMUAag9q&sSDghYsqlA3q*|!W0K1oA+a5WA7E~-__E}g80BJcCog(t1G5? zatTKNp_KFO$B$z;abP0Bv;cGo;ET6l+aL~vJ2g*Y2F}M8H07r)k5sz3xrKy;jQik+ zYD35a_M;TgToo1n7XwiBfYkf-YxVXH;T4wzt7H8a;RbnX)+qQ~kWW*k}PlE)Ne6LcD;51#3}D zWo3dSiQ}UqA|fJ6O3HwMfZMlk=j(8P&-=3RrMI(q^Js@=Vii^Z+>)Q4p9>R`gV_KJ z(+RF!O>KL9y`ZEdH7zZe;Trqq(INC8Zp_@NW?a)xlai7WId2Df5v0wZoo2%Ic}abbUhVktqrbOzb7$ulxcc5+ao;0Rc7Zn1244ZJR5pMK0BH8p z$B#a1jb|B2&n}a&8$*2EK01o!sqx!uW`VcMe1yMyo4=0-Up7-pS~^`Wv;A|(!k5eW z(SK%V1(7gw?qOMNjOyK1Fd_itYT&|l$8a2_( zN7@Fkl(sB?AwqYTV1DJj)va_(Vi(M^p04gQSJ&aeK^djEH`o{{3!@#Cm^c8)M{Hc2 zyqp{q{;WjKvvbcaEQrBw<*Fq^4PZ?l;@Y8+k=fbV#ko0*X9S+^S{dd6;T{l`0UQHs zYsDW5&SI?Q84m>1o~5d)s`kIDo~}vFBi}@4Q~5OOG~Dq zfu<&!wO#sjUt{Z+nuf;V{=TW(w~mhT4qMof`9euRn~6?dABn) z!I;Hi3ka`XeWR#lZGNdn?F z1KxX z@4h|-ZT(P4f`_1>pb%6JR88yc?Nw1xIdkTWxa$(;A?lm9p`jOqk${>@K3jNIUw;Co z3*sLxY9b1W<)tN1Ks7k+qDT+a9DLa%aZPIKD8x~)cTkvtz}3v$eDZMSFjj(DgZ?wr z+rUs!(9xY`=ow1{t4ki(n4whwi4wR<2)zJ!3XT+U%4B|#oNQxj3t1jf@~t&SW@dHJ zysfRs@bIRDBC15la`W@yCIkcoGM2w$ziX#f-O3$0Hui9!6ZE1ORbw<3j&8&(6Q?pQ423OJC+zg>yHykszc9d#0u2T$fMJvQ>U%x^o zTLcBO?(VA>;mmIkkW{cCX=!P+w6xs%vIlPi0#KQnSeiXZ**Z$BB^EW`QgUXH92( zYF)5aLbt&@eDCs{@-avLNpD*O`>lx|=aKVP8UAPf^QF=6+L#k%*?)h>{$*{P0P-N* ub0RC*xt#@)J0sjkU9XKTb literal 0 HcmV?d00001 diff --git a/_examples/stacked_bar/main.go b/examples/stacked_bar/main.go similarity index 63% rename from _examples/stacked_bar/main.go rename to examples/stacked_bar/main.go index 3f5015d..4fc1465 100644 --- a/_examples/stacked_bar/main.go +++ b/examples/stacked_bar/main.go @@ -1,25 +1,20 @@ package main import ( - "fmt" - "log" - "net/http" + "os" - chart "github.com/wcharczuk/go-chart" + "github.com/wcharczuk/go-chart" ) -func drawChart(res http.ResponseWriter, req *http.Request) { +func main() { sbc := chart.StackedBarChart{ - Title: "Test Stacked Bar Chart", - TitleStyle: chart.StyleShow(), + Title: "Test Stacked Bar Chart", Background: chart.Style{ Padding: chart.Box{ Top: 40, }, }, Height: 512, - XAxis: chart.StyleShow(), - YAxis: chart.StyleShow(), Bars: []chart.StackedBar{ { Name: "This is a very long string to test word break wrapping.", @@ -52,14 +47,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, } - res.Header().Set("Content-Type", "image/png") - err := sbc.Render(chart.PNG, res) - if err != nil { - fmt.Printf("Error rendering chart: %v\n", err) - } -} - -func main() { - http.HandleFunc("/", drawChart) - log.Fatal(http.ListenAndServe(":8080", nil)) + f, _ := os.Create("output.png") + defer f.Close() + sbc.Render(chart.PNG, f) } diff --git a/_examples/stacked_bar/output.png b/examples/stacked_bar/output.png similarity index 100% rename from _examples/stacked_bar/output.png rename to examples/stacked_bar/output.png diff --git a/_examples/stock_analysis/main.go b/examples/stock_analysis/main.go similarity index 96% rename from _examples/stock_analysis/main.go rename to examples/stock_analysis/main.go index a8bd5a9..a99804d 100644 --- a/_examples/stock_analysis/main.go +++ b/examples/stock_analysis/main.go @@ -1,14 +1,16 @@ package main +//go:generate go run main.go + import ( - "net/http" + "os" "time" - chart "github.com/wcharczuk/go-chart" + "github.com/wcharczuk/go-chart" "github.com/wcharczuk/go-chart/drawing" ) -func drawChart(res http.ResponseWriter, req *http.Request) { +func main() { xv, yv := xvalues(), yvalues() priceSeries := chart.TimeSeries{ @@ -55,8 +57,9 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, } - res.Header().Set("Content-Type", "image/png") - graph.Render(chart.PNG, res) + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) } func xvalues() []time.Time { @@ -73,8 +76,3 @@ func xvalues() []time.Time { func yvalues() []float64 { return []float64{212.47, 212.59, 211.76, 211.37, 210.18, 208.00, 206.79, 209.33, 210.77, 210.82, 210.50, 209.79, 209.38, 210.07, 208.35, 207.95, 210.57, 208.66, 208.92, 208.66, 209.42, 210.59, 209.98, 208.32, 203.97, 197.83, 189.50, 187.27, 194.46, 199.27, 199.28, 197.67, 191.77, 195.41, 195.55, 192.59, 197.43, 194.79, 195.85, 196.74, 196.01, 198.45, 200.18, 199.73, 195.45, 196.46, 193.90, 193.60, 192.90, 192.87, 188.01, 188.12, 191.63, 192.13, 195.00, 198.47, 197.79, 199.41, 201.21, 201.33, 201.52, 200.25, 199.29, 202.35, 203.27, 203.37, 203.11, 201.85, 205.26, 207.51, 207.00, 206.60, 208.95, 208.83, 207.93, 210.39, 211.00, 210.36, 210.15, 210.04, 208.08, 208.56, 207.74, 204.84, 202.54, 205.62, 205.47, 208.73, 208.55, 209.31, 209.07, 209.35, 209.32, 209.56, 208.69, 210.68, 208.53, 205.61, 209.62, 208.35, 206.95, 205.34, 205.87, 201.88, 202.90, 205.03, 208.03, 204.86, 200.02, 201.67, 203.50, 206.02, 205.68, 205.21, 207.40, 205.93, 203.87, 201.02, 201.36, 198.82, 194.05, 191.92, 192.11, 193.66, 188.83, 191.93, 187.81, 188.06, 185.65, 186.69, 190.52, 187.64, 190.20, 188.13, 189.11, 193.72, 193.65, 190.16, 191.30, 191.60, 187.95, 185.42, 185.43, 185.27, 182.86, 186.63, 189.78, 192.88, 192.09, 192.00, 194.78, 192.32, 193.20, 195.54, 195.09, 193.56, 198.11, 199.00, 199.78, 200.43, 200.59, 198.40, 199.38, 199.54, 202.76, 202.50, 202.17, 203.34, 204.63, 204.38, 204.67, 204.56, 203.21, 203.12, 203.24, 205.12, 206.02, 205.52, 206.92, 206.25, 204.19, 206.42, 203.95, 204.50, 204.02, 205.92, 208.00, 208.01, 207.78, 209.24, 209.90, 210.10, 208.97, 208.97, 208.61, 208.92, 209.35, 207.45, 206.33, 207.97, 206.16, 205.01, 204.97, 205.72, 205.89, 208.45, 206.50, 206.56, 204.76, 206.78, 204.85, 204.91, 204.20, 205.49, 205.21, 207.87, 209.28, 209.34, 210.24, 209.84, 210.27, 210.91, 210.28, 211.35, 211.68, 212.37, 212.08, 210.07, 208.45, 208.04, 207.75, 208.37, 206.52, 207.85, 208.44, 208.10, 210.81, 203.24, 199.60, 203.20, 206.66, 209.48, 209.92, 208.41, 209.66, 209.53, 212.65, 213.40, 214.95, 214.92, 216.12, 215.83} } - -func main() { - http.HandleFunc("/", drawChart) - http.ListenAndServe(":8080", nil) -} diff --git a/examples/stock_analysis/output.png b/examples/stock_analysis/output.png new file mode 100644 index 0000000000000000000000000000000000000000..dc804c8254bdbd9f4260e020247f5a7e455e9d3a GIT binary patch literal 67905 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

    VR#X`viC6K7V`DCHj%jpvgO1yXD;R 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

    SmB}RBVJys8s)-b?&<9}!LFRVM zrh=RrHP5h!TRr3JPrBk&QBNl{ChiILl|S}DHi78~ze9K3CMF2wjF{<-asyMja~XAOf$?KOc6@fdX@T3n47MAzI z2)jLYwKRhvpjx=?Kl0YSxvacijep=Zy04*$@xqBjLKa33jydnUt=@r3pQA*Lmvk)D zVEB_a>S%`JI*!;x#@uX@rc+>Nb5NWvCu+1YK<{&&?a!NCd#tJ-UR#d8SWDIswYZPe zB<(bo*Tk&u073?2^)#2Yga`^~`yz$A&WZq8NI7Bbl03-Gfeu#>-VXS%Y+waFqQJvz z2UVkcww+b6@qi5jNDxr-kBXyr<^MD;si}XunJKpI&VYP#%lWzo*_nLh`bBW>n9+UY_ z=}P_TQ+y56%u==roYNA0Co-Iu+bH+X> z^54%o5Knf2*uIFIplc;NR)%i*4>Kz}-~N^uEDe3;BS;FggDyxikjIxWYc!gm0a5yL z#MX;PT%lMHP|*7AR)Kk6YmUm!7B8u80S^HYGv97?p7=dgIWeVi13yclDJ^w*5rH6q zqZYZ50XY9}uy}<+{Ku;AvUL?513(m+zJdjzzqiM!6d&+@nF3RT>|hAu4cj>Px|0a- zh$-;yjNW97=ZaaplnJ=s?1>H`rbNn z)=lTnnLd3Vw588`9~*vfdk$|G05HA|o1w@3Pr+lfM=PM^!0Z#fpbJ;nhySKDDI7G5Ux42bQ>a~(Y zY{MbI-MWViksYlZwgK1W)ev0aon+ILe;9NcRL1V4DdtyX!paqM{dFna5OooC^6@nl zWcqFp+3NP&syYjsQ_$9|^EX9)HX3Wok{ISV?DGicMqDQ_=PzsDlJb6*+C4fvg( zp`xDx7o^PepSZHb=*!UF0;YOVm(=N!s-X!@8KGHK(CziIr~7C1&p5CbOd`njV4Ab= zpN#H3TS;n2Lz)~6I9HV)kqDAyO7C+HF?zRsx*x~)m4uP!S`o`Cu%{tJaS0hkS#oQA6b8T(x(J1>O>5tc?gow0KV7-UX4jy1#*0Z1FBAXk$DxWCWygD3p{TA z=9Fsmpv;|PYbNE{JoF3~N|0-NO_Z?S;rhft{Ln(aQP*u;jN}lcXJB8yy^xSn^T-|5Pzn&wiY!iD(h)zH2&#v zVyuFa!Uq($a+8mjk5TVxnzg=@AN=99yYagEJ%m>u( zSL3Gz_Wf$KJwchhxPD1 zJN-_2db2CKzWJP}N?D=3Pa&*;tXKS1E-d@wR<$&dT-Ej32YjdG$zCi<{b8;SQZD(& zp{z7$%7}7{-K-hu-*uf1g`(XUBUB}S!QaUphj zO;s6&jEIP*Pd`&aN7$?=POpEu9d3Yw%_idrQc!9pk6!v#!D`)h@GlSGd z*&ERpJe7U5W!Jxj@@?>;zTD@ha_1Y25C(?L3b$jS3i()R*6-jiS?Khdq&ldJ5lY45 zaRBd?pZgcejfE7-gHr|{!GsZckUl59I1nX zAZV75v;>!E2tuC9Qadw)ooxJagTyiaq8n`${j?YfD_w>xCTUoaY z&&RzzSQVgz$bF`*DSPUZqM#eCR`&t(j~#|3E_XNb84B*m8ayDvo7wF$kl`bi^L;No zM>@HU6G#cedIagxx_JzkGkMVOeC+pi9jZI6Y;gW;ye=&px8KMJ&Mi-sO`6hz3UfwK zfb#k1hs~3Q^@PNdUwlA&ohCpobujYsMYn_1Uk@YdQp}w>+_Sw8u8X$PWN;iJjL=FS zEvMZDoxM#OzdMZzkS(f%D18V)W)%6XnPMh0c;0~kiersvBFzrit&|=yO}IwB8O@!$C-tl@^a4guhXCllV3s!f?vte{NHo;%T3}AoQ{= zFFFUWMH)qhNWRp!zl`{{v46trMU;qlWz>iaurhxvNzz97pa;vi!V1c+M;Z~3DtzfK z9r$$f7Zcv0t)5K`%Yq#Mk8q|Q)t40F2NY&w2sIXise6bJ5FrZEN*-2&;Tb9S@0W}) zT+F$gr=bIQ?pitF4cMR@2UL%XEHB$W&J-tc5*G0jE6Tk|hs+x9A(C9~#w%X_)JxR% zKreIXA(Unkc2aE#*GA3$5)TqOwX9Hy7#94~L1lA>7+LH#4rQ~YHSAIa@~fP2MGC4F z2VAuuMbo`7#1TdY5tVbQB;QG)0K-R9nqX9>Ot|9NlxaCN_oP5#^Zpkv)ihn)QDDZCbvpoEUy_ z9@dni822|JBFJU+DafWiX$b@k0*AGgeKvm$WTeiKg9Vael=A5TSPDTAvyV96f;0z@ z2G9UQf#>~GYAPi+Cnte=?056W_fN6MTImy+T?obfysm)i56L&QH2OCj-F1YCq1Rzx z+1+X$I1kJPa-{r{D2z!JO0KbixR3%*izHI#J6^e} zTVqHyr6b~3VrOgc=Jg)qiTB}J`Z6D9{yQa*NZgIlqSUZ+ejZ*Q?!0`J3#F@@jEn^NARyslW4g*dO>b#x`H&jm zwu>?mIp6EIiWXsWPUk=+0^&ClK7FD+DE7NPBO@h6%jgReL+=Pt0K4R8B)4py@CS-N$6UviETT~WY;0{)w)D$1|_Q+iI*Gm#X zMciDxI=s7H<|CcoxE8u?!Bx=w4^eT)cM7z4u<0%IiOPPgIHk-_{GPL(Q=b3?56K{p z$N_6cq!I^V{aG~odk<mn|c)Aow1ggZ{ zLF6Enkb~FO*8)JC>)u=e>SqC@HUX~jF%~{XI{@iHYF&MW_2AuMYychwJqO1&h|t3I zI_wu-xY?-~1eTR23AfkhS;Ee=6Qm$@s~?b@8ku4WqbGm`$nwA11m*LHSL3%zsuxO- zuZmUe=6EL~4at(;=+n{CG$W7fh<$D~3$dn*5|Rjh9&zX7c!}}2o8Gqn>!PT$+5!et z$#scD%%|gvk@pr45j@Qy{MKDkN&i_yipK%aG@>HG{p`!zMBD5VTHZE!deny_aB*Hq*RX=k0QO=2t5L+a`FPvexyFP3og#v@*J1O36jzqls{v~L!CUyoxWo)TXk zXCWJ%7oY0*7)dXM#J>C2EYqd|--F;`dG6V|> z8QOH4-u1xx44QX0-R@lLfYJzj3SNFkgUk14u&HO!E{k}rfpZreE4bC{zy1y}WMLsw z%0K=Fh*10vJIQZNLx}DU+6lqyZoa$PZt&cfa+1rI0sVXDy3_ngbCpKz{z+aUPcEtg8~BKT%A8Lr%AtZ2gu5ZMawuEEHfc zvmnpQI2#(Z-BZ@bS9JR3~leY9v4EeqhPPW>VkU zKWi1Xsd;6buMd+LaQ*S57tQN^Jk6Dc-&*&80s=5jM__2*-R=jN{`9T_O~u_YKbK>~ zv4U7RI2f_oym$r29E2L?_JHu_=BCf%qa7NY*)X;6>9r+>Ol`?j99hd9kn(-~M2375 z65VdOx|X1lto(L4JR1dptE*P7gK&XCcLDv83Yf@g=DJA|vOlN=_b-Y<7#}N5)F*LO z+;eWg_eDy+Z+#cgsRYRb4GZ^casub`t~G7GzT-yqlEZlXM}+y=LUy-duz8pE7g6nR}fP z_`fMr(wfWdkpGk_wO?Bqr}Q2Y5gn!&PLzi&eJ_p%YqZk_b#Ypl7xH$DF}9`Plig7! z%XSEX>^+1k>I0rsxhV&UzqI3(*%GS0q7sw-MMil}hk6`}E#y@2u4?3@IztCLN};cdDW5crFU zPg(hT^un3U(%b7?J1NY|jYr`r#G8eCk)M>3m34Zr^dM=cf&j@a_RtkX@t{ziY zN7@iV@_=)3IijB3nRJPcbQDqwST$ z%2kRTFV;KXo12lIMCQgy_5S*WJ%MZ;o0wQ?2Mya4U}ZM=rVCQOyvhC&(ujpDcw8L( z^}oGBr~6I`@y1){qiP}ACLpg4<~L99@isx#bwh=z)cAJ)>ze@Z36+gAad>2cKSZQr zRvlmR#DoZ*4aopQ*Vyska}8;H=^G-2-Vv_ zd{7sC@0p2uES-khN22RzMc1YZUsB6$NArIrvcysf_AVd(P7~}SPyWZ;f`{E5OSg|S zrW13snXa@gP|s`|Mul2{`fTF+3vnPCh={;3W{>;uVf>3qN@pZ_ss4|bKn3~X!w0Z^ zz?UkugF576!i(JHkd_k0vl13mi_i(4S=~otr-$U8$4k#OWU*hrX4$$RFre3MEy-gK zydsB~AiEK!GSAYoS78)J+omCLa4b7}zYom6#-8gE#$Vl?a){t!$$?7Ug*8ofbgcIb zrvu_ARg*cNBtPplF)IGIN#?f%n*gVp>(61dhP5uA19Ap(6e24PxxR0oY8n{SS@tD^ z3lD-{o$X$qjA}T~)t>@ol9P>%7YI@XkzK(HLf~`O8jLxZF6<1%N`q3@4m}h>TU_t4 zafoca%O@UMQE_t;i(nCD=xr^^ze;42!Hc7TiD>mNQ=r`4dvbuPBd$P$|NHazUMiUK z^j-&0cfbHN&3tt9?DvaQk(g1tD!UXla8Ckp>y&A-XplAR#oL#rhbAJ1u=k>M{5@Gy*L2hr_20R z@%_d(K=9IP83uy1!B_qUXkr*HfG@iRS>egDsHx-G-ZD71HjoyAjg1}hkO;2wKgt=mV zH)G#ior0M^@z?K_0So4v0F5lE6|22W6(-MtBU3T2P zpsggA8Q54S*@6`w#iV&b+NXBaiy`p(nriHBm>5EF@10uCtVE3qMT6EhG_8>Sex+=E zd}v67$W(vEXjTjnyzB4c+MveW3AY$*NPz2;hOxq9>b|nCQzMMJ#U?31;J0On%}|Ck zUDsefWFvcMa3YkXm5*j~FyvsEL7NBk(YfjC%wfB*bg!m{=ukG^`(y|~wB@u{NrTX4 zfy&Z_4z08LOH50b1wS81D=U8rcRcwkpbGUESbwGqu%M1vQQt>-hp;i2FAD~D&kq~= zi49$k>(Olf9=fkK`qGmh$Ptwv!8QuPO^*}EjK!*!5*L#^vLvP`&G_Ao`a%$70w`0) zKbG40b3Si$Jruc&+}|*ok%+h675`4q6Dwua?<|gq(0o4AVsq<{eET&DX->{Lba$Zy zgm~UB;$j||UD9<7IxSK98dBb$#O_Nt9<;u@URY5dJi|s5741P;r8>c#BK(L~HO?BO z$8(;uWO~`80(yH1Zz+N8AQ)RliEOGZ9j0_^e6IXwWd3EsRLfODFAVE@8o7S$5G(xk zu)^c!7uR>u3WTM07t3k+WflG+-%p$wF|!*|`(~=58;;fex3oRRixyoKbuL|(^M!3>)se7>pYkEt3jiq z1GHEGK27hZSYBJRGDu#IMTQsn`N;jzGieo`r_gvCD&Gq1G;wGjAvbM({>AD(MAs-L z{1;L7V$s{CI-OVL`xr4?jv@k#3%8d%K6my7=P?1}#q=rCLxu8=DB!KO_MP7@P;2YI z-*3)}dO#v^_mf0W>QKOQw~8$dHBStN@Y|OJT@dokgew1)5%^vOg{+`^K-26L**p@K zIHJg#m4WEtsYmU@!_BM_ZY9o-DC9MhET=Zz>W#mPus~u$Ff*obzilqx?QiwQT%=th z!*~E7LtrBa+R|V(RoFxtEM|;Z7Ff?*#v6xv$KQ4Am44GbkNVhiw{0r`U zkf+k+^wV?apZ?9rZqwTsJWBa)YP#7!xt`ns{++SXLiX1&#kciUbwdLKSC^>IX>lYO zzOM8N$7arT7n+9*ifj06b9uC)DDIE9f*F=ULAVL3P+pa=;(%$r;>PdF{lL;cIEAliRs>bmp~B-mJQJf)7;Ui$ zvE=mnkGUK+2wLh>(Xc1ho|-6mKMn+DALO+4!BXuhe<=^fR*A(ZP8^1k5y3_s~{ zmUdv>?czyI4JbV9a9Ho4Hk%X6IiGlwCJwoUFg>xVcrfiBxU!P^M={|32}&PGX>G_w zhSXZlF+*N$ASg|=-kANSw+uKTm2pV9cM5&^w@=KY;d?939&IV*D|PMeG4o?#bLQG8 zE3dqzoffVcdd*JDW+x#Te7HY2xSiR(a1>ilr8F~L&)f~KXsKtCyGBFq+MlOj-ctF` zJ#V)N2$nO=z21<l91m_uv+RRvnS&$-CXeo~*7Z%gs2@ETjJ z4JHA}OX1o^eYbb#zcSOg-nN7g#dhZ|Z0;!*L6>M9=NzAj{p*pC0ZPz5W;UPwn&* zbI_nOX{7mrH?FCF9k*U^eU=Ql2Y-4sHq`se+|(;jGihaDAc7Sh+YMrFn@(MpjH|)} z=|e=lo;8c(U>-_Ch`d%b8BB9*a?a{y86Il{^^(vWX-KqY`zxyBo z7Q_+wdjm}Kegq>6l<*YK*m$N=@zY_=CrIGxKxyGE4=cX{*VKbFNaiuZhOw;b`quhP zz%5dLx!}k3bUR^U#h~IhqZ^mzYnrBgsgVkn+YzUwwQmw8Hmi3h6}s_qUp)TGJT4{) z@6Z2k{A=frtp6GR%L;nAkIUW57Y)@35#TlC#@33yskH1nn6ln}Evuj@5)=IWI(zv@ z)ghRiF)4qT>VaUyRQ-o2$`2iN52RqvNEMP-TN6 z=A9n0m+chY1|y^p)Yc-GPtaxvlUIital-kN$Cw^9C5l4g_8(Lh3TZAZPI>M$&u>E4 z3QGx%1o!>R@BQiBZ%n}x>h@v;EBYsaudAWhf7#hTqGBG*d19I_o-FTgf2b*CTQNdX zu~i*ornjXBC$t8G^5#zzx0rW#c|PYu`+PIiRoCQ`k|6M}-?`RjfBf#0N5VXao4kXf zxCrMn^4~CC|V?5Wh3NN**b{ zUbnKMEz7s<@9z&GO8k{1ul%XAg`kJrNnbZ?=I&5fMPy*zL;Ls9>Pisq`|-3BvS|gZ zKo@yP=Jn##=ir(KBwR%8!LG(Rg~9UE_@9F`lNDn)%+_t4UsyWO)?G$l%wUpK!pGWm}Z?ZV>M=i#Cgw8}XGYX2rVPaqMT%Wg1E8_rB3x?Pf|G1$TiZ(iU*WAdzT|0Wq= z;2AaiDoe2HG%e-~*3;Mi#PV?`b}|wM(ZEnCX+l;Z`J*0@0e!8C7Vp($SSxR=BKhL3 zRkf7iYJV9T#J=$RXZ@6*W89}#3(x$HFLKq%NIICyNxy^o`NkW*>tQ9Y>B^pc<`hVV z^S;%hjPI~Qp0nv#frbjC)!XutYAAm0x8Oyk!_>2v1{3?|RCpLd*`vaF`$SL#Q$xZOCI{}TP;!MszDPp2htv{HD$r?boYW^eA1~QW4W%e4GVmXuDfSb zF(ED-KS&!oOzVR;KB;tTHI|IN%g`QX-yX)|t^0bh;{HaT(^{IZh@&_}!-N%7RFptk zXhhob$>I^k2(nmq^icdYdYHB3xOq?cUx=+7S&LrF}9N_dbm zWr@ueyo3-UyQ-tbf<v4~D~lxR2-no!2r_%*dZ{Et`WI+HWn>}SG^|{?TNiV7s z2|X*(L-*PzyC10TG~y30|B#znEchl;;7!|?{vDvYeT?yFC^PUebuiOzM$N~8a`K~Bg=FzI{%=RLSy9?gaOi%Tnh~;N$(bZnOcT)S%vMb%R17lvU2V9liD71cc?}Fg{Z=YVDV@uQSV2Uu(rCmUynlm| zjWKb8Tk@C3qqedPr90r`tYZhik`tY^c&<-hdA$a`qSPe3u z<1lx94sMg;3vbPqytF8Yy`zUgdGF_bi`|O!i~hF_UGTdh(|g2*HM@@5I3J>idE+lF zDcNPeaU|XCDlynC+ImrBNG#GtGc5mQ;@g>xB&;lb>N4?Y4_Qd>#k9!`slH;YaAkbb z8myuTxCy2^6vz$MPU$Bvgi3JhR3TrVzN~_BUtjFs)RpV|8e6z`|EyN;aiOLA)AOb} z?0?_NlO9;htFCO`SKxfuiO)_yDNPM6l>=3+qLieV=7_xn{p5VHyYqV#;ydcCnxRHAkA???ngHM;*>j{#F*LFBp5LQ){})sXsk zY^cIlG*u#XLsE58Kut%-C?b*u6;h`wL(PuO$vCiT`Q`y7d66eZNiYu6Kq>d@-#7}p zp3?tp5t|pTVT^DvP9(f`?-eL?((>^f(N)aI#$Z)O_t|#*>DIQ~U9h**ngpc{6tg}x zs%tFg1TiaVBWV%hmlmb_N9M`Yj7FotfB$cd#SK`);`FxjzVqXts%*)uf9Rl6gu!~f zAFw=CA?~(t?@?Ddr_ncEEO`(`g3b(GVXZ)w4^UPT!yg8!w|o>T!o!Dc-S2^6`KQV+ z7}M}#o&H(|=OC;Nm&9on22_z;87v}Y^oDT9BX_xnL)xH+j8s7mt4n`W;7J0gf9qQX zoC0@BA4pB`m5S{iot@?ED~Dr&;~W{+*_OnGOt4r}jsA4>f@h=7)KXc2{ZOZM20J#T z4NBba7q%)X2`b#1EzwFKz-P)KR51h$$5vDYx_D9O^MZTd;Ta5T4H~ObN7-|d8pkbp z1Iz$Fa}Y#wN|_ISq9S-h2VcbDyk-9W+z=LGo}oTh`m4OeMa$wGArmT1er3t-dlkHY z15=DqxZQ2Lo6zZ_=Kdx!jRvn|vdQ*%!`HXl@shsY$z~`YvkU_U4UtDVoZOqh6Deu6 zzR5(OibE{w5^J_qieP4+&L?jJ%NnF(x9&N<_3Tpo_%Q;29eG$>G!u3Gh$%wp74G`? z*ei?qFs{Y+V_(XbTe<=J>E59a=mp@?jSjBgjJ8urZZU!$$}aEEf7GhngeBd=vircA z3&2uBaeX7B2G?ap>yFo|j*hzkr~AUXTVo>Wve*JDns}Yabn5{&+H;Pxb%SX1~K$~)a0%-km2c;qCqqpk9qU$~8y48{3IM<*j3k7^dKB}9UnVB`E z`@j_*0`W#i(==_fS{U3{xF?5%^?0P^`(3W45K3Jv0&6C~438HNL8-^@Ea`s^Zb1F) zJxnpyGB9`&ODE}lvX<`r3Dh0@D|7>ZF^@qxQ&;Et?u=)@;N&cTj#?QU0BMv4{A7Tz z-~(Q&x5sOMhEe#0P6GLX=l?QbFFc;f*pXp`pe{Ur(M;)3XLAd_x ztohE?c((hBCJR+t*!CyC2quCEgC{5D)Rpb?G34e9sWH!t{fZNFwVqjOb8{vkKFsc5$(W?CS~4g9p=_4n0%-siQG*AU zv|Z9(tG2*fN^gJI5cWbfX6iedA*QJu(Zi)dAQVBG`*#H1M2Tq*Ved=s(1e3&cKAYHD1i95fUFQ zbre;Smr#wfjCS;kcmp-tY$d_v)8<$}=AKpZeY{^GXwX)p7Gox=Ls7EW>&z|YDh-Sq z_h}SS2(IA0cA%8OK6q?SxcBG`DJpWa$@sMa|0Um7r-cZ{GVw%;(mDid>nXK+9kt5dYbeDeG1_hu8H zW3`0znI8=V1x0o@o)Vi8CqsvbQiia^O2=w# z>}pshMHd>H9@TLOT$MdBOW3Z-q6M&sRvuG|G$j}m;)B#)<&usOasIbs&Q0`l4K=4h ziabr%v$Ir#<)JkDPUg+U_R=DPw^En$o=6R&&}H=dx+CvZ7%EGwqd6LJ^_f7K0O8p$ z!D?jW0^gNsHJ--D?9rb!*_KIY^i{}B7_JRZGXQ4SeOG4&S( zL@8huGico!=IH!R?)8;3Dn`9;bWl_4KOU40xZbVVUuX_kAILm`)9j_Bq>S&FI z_JO~M*SlDzL;eBAdMc+{bD$Pz4F=O6>$BOUOM3s>`86nhjf{+ZJoxU5+8pU>h%hQa z=-HJH@j8R>F6uKX&3v)Jj(W?eCyGo^NUvZy$<+fr{}h+wfTDV~Tz-T(Sfxq(QH3b* zMBqp0>9H9UCf7;oPNYMNqxDLCY5n{^)b0j0E$_Fd`8B<{qKv-zs^s+bR+~QCux4V9 zK;~vl&s42*BTE-4K!NwQmJfozF?Juq*$B^=7Zxseyp*%lN zv_PNQpE|Il6_u2L%nMolZ*7IRDeGs zxvk6RRxZyY_;oF&XJj>MoV7)|?*n1j#frskRyORiU<8u7Z56gQR%e+rY<$#JX<=u* zfCa(10o@q$W?cF=pn3)*&u7mUfJnMzC*8T}ElAwBKHsOi+1rsZI((AI434_ZCO=*( zY#1pgoQyr!0AAP{R8X!JNMs1g%uXjwO?7ociHeGgIoQ}_u|%n3K;>Cm+rcwO{kbtU z3x2b!Fc}gAn*RWEAfPlzZ`e&s*z4=&RaGN!v<1|01l%(GbmZ3GUP#Vzn@UZUY z-gKG71d%Ic2yxVbg0gCPVr8w<-i$Yr6F^1V=^^AoTeD+Fzb_vF_4)6c=Z z43iK2XvnWB!Yr^g1nW{9{bOTTr5*yv9dz8~%#2|kW5>!w<$?X;CrLNL)h`F|j%H!s`Y&7Cw@`VFyWgP=blaGvmKvdXLC zl%5aJ8&}&p$oYNyC=?q~{+b|h*A2Axs35ZM!Re37_ilX@Gr~%zw)Nyx#|y}EGP12O zIz|8D;mIxnne}(jTZ<(f<-mtG-_OR_uy|L|zvZl7&%E=j@gb56Ku)`NVnu##$K9Td zlX|q2Nw1jrPWaHrQ z+5dU&^{II&f@7oX?t`95DlmXI``^l?qe_6&2gtZNB+-yCuQI$R7mR^#Snu|gH3G1> zKG2W9!(dRuAvL`(%MuD@ znre=2|9BkVt>?EN$(aZ?=+D4CUr+lj8&nfC307DWUL)^Jw-k|S`G*pOtC*08T8VMp z$o~0)$BZM;1hmRzZhvoZ0=WsuyYpr`P`??oe0LBg?M9en2O1NBG%4ygCRT;ba1IDR zk^&uBK-A;|;uZ2$Q;9Fr{(I|k9CVZ@9p#){`!oS0P%r1Bu(Yw9_X2{`*dn9EP+{x4 zw)VthA~_P3=twEGY(}dp{?TFxFhqIkgVcAqMafrJcO-kdC;Lk*8nd;s3 z&;9Bje;?mSz4iS@RXVpXeDr(6ga-ec`Q$f7u$E%-5TlMEVcErL0=6T`Tt;mKQg;{2 z@r=nV5&K^ z*H8`<3{wt4+y@iciYiBSDP$uNcM5%AV)1A5eGRt=bK$_Z)3H*9u)ST}qM=6GAu6y4wy12gBe#nfX81>SWs^@fz%wdksp!Id4_whET+hOdo)nx{tdCb67`S5|oE}O!VgZ zgfk5GP`28pqAaHJSBdXoiR61O@88Dnbm-5g5Z*ivbhC0)OQ~nEN?j}#Fpa2AI9@#e`+CRz*W3* zqyX_IWUmd18ItN4TmiXDIduf1Mmx zprJ1j>e#THRP5%V6jda$L;k15F{TAv6w76w zqyR;V1NJM=<9D_B7vqTF8AH8(-t7K)14FcJ1WLZ*P#g?T-N#&0#*M_RroGwX@$sL; zD#SO2?cGLfnOyRj+;QlOSTWJF$BW+;&jd~?4`cl%R!)|4)ptKCi5Evxn^v^Qf3rxl zh2LR9akQ!8H@%9V`w@@j5Xy2Sh&8u|H(z=V7}~QYyLGTnmL;1S{1fW9M9q0<^JL42 zH$2^Yr~T%ut{b<{F46AaRyH5jki6NnF9Ab$xhL&>b9iyoyPBrR^Ce2$84dJA^3aA1 zm1ZL4_wRs{(fqrBB3<5kxA&qx=jv=90SG#R$_#nq*kh>HSsEuOSIn&a-Y5y@C9oG) za-}Bs(U+(lDr=VgAV}IUGcfPH8s=^3jZw1_0zL%6FR46t(*@^LGXkv#=**gGXOEgk zah^K#tRFv!=Bk2oVNCdyk5=c=$2@VIQuFA$59Y@1yw7Gzw24HeQu=<1Jt)VkO}KL( zTangDJ^B5z-Di@#p6Te2c3;$w?}yq`IWrJDtxWh4+F&a~B{IS4DJD{3&;fiAuS;fQ z)Wg2=d|OSQVU>gqSK}z5Qw)OB?XLZ=&qK*O*)4B-ttQoSzh&N%N2ALjWGH`2FG%Hg zT#Ulj{O1fMqaTD03q;4De`6qt!mE_@g)g*?b8aNo8!2k|F>p{{NboXf>$QG3Zk|Z;%D~)~H%417grooJ@ z1G6*vQ#zXChngjmz=Rz{WZ<0)ahB!m54J5vW}0pDDTf(bYNL^;_%tu2cUMg5*fJ4V;8`rL-}A5;@Yr%;+FoBAKd`-HfQE0~y?$QPCgb=0;U&CP56?D)N7r`mcXy#M|*XE^0P&q z3wMP{ONUeRBF+8}8OKIetdC37$&@kUdek4-pBKe>0=(I+RK;&^i&W@AW(Hoh4SuDjd)xqnpWPwWAup;zQf%3?Ar28(R2UMuRYZ)r+)Dh~$2$`|Tyl{`|kal)gA*{^}O+Y>Ziw zM~eZJ&pmy9V;#{OV-$o1KVzx`sI{3K@59VG!?v@8bdKtdouSh)DZ1j9j3ZNwajqQxsw^ zcXj{t9I)Uhi}61m##18(K0MnI?{*bRkKS|7pvc$f1WEa%o%3}WDs8;Fo77HVQVtQw z5&`IO@YpKQ6|)F+5@R~bYsJk1JAVG>rcXFEN$$q8?}yrqWzk_@wiiUJcj{@wD8~o= z55DZpqo_e6S5PYn^CC8hmMf4bfN%7$Gz9NAd!Ng~IEY2PEOmMKyPUJ@4_BfCHtZ?G z-aGv4fHjc;3%+0FQACs=hpA#$4Lp#E!%sJC0LU2H^!ij_3$ZXmfd##q1$HC`dXz@* zhC&;7O^7H_PS#HcI?1P4PRJOSgHD<_xNe`c)H8+v9#!srzg6&mzg&LzAk9|J2#|~uhpaZ z$l`$*y`ZJ~c`M5;S$xe4Ke4Ln__C61E_Z|VueBC-8rOPW}eR`}6#_$*Xdw|Y>+!Vc^;pY_dtyu^#*RG-+d zaM&zN?wNVebHo{TEPc}NJw+R0Sc|v#tk8*cBDs_SSv)=HZwSoIludfqAK69r2Mg)M z=I`#;&q^Q+Ls&us=w2$Yqdd}(2R;*%Et@WyR~pw)beYJP7fZfE8p|Mws2CRt?-3|} zco*w|=QpV$arncegUg z^b^%MC_+yWL=YqDk%z9;9K*K)#d_(4u0#feZohP-_EobPjRDu~7nqN#KQZ!SAk5PA z9r~e(>P<@N_HHCDA|I3sFb*l>HT|6HL#2=2B#kwmCEW0MTQUOVlg8k=RMAd)sTO`7 zchtPIpy(6LiqL^Rl9bnCq^6Guq_?DuOYR`EYfDa3rSTDIaYZ?O0FssnXRQL%@V&PiVr*XkraHUPyEAL@Ap+ zic+n3HGgFxY7#zY*dWzOPmJPHk3(bJgtT61df!g)8!DDnrg z$Aj@jSND>zF8z zHl8G}j3kOqkxydrVA_w~w4B6{gwawp!$Y~NLp0W$3C^9^Z~C)_hcHPdHXd4d4dfSDUXbT1Hgqjr(GE8Y6!CErOD9K?w;JYb zdKCkY;Z!)-c+N2G_l`G-_!fRv|9N4xID)X@QL%Xpx3-V?%X1)tWf4Y|>&WuuH-3tb z4=pPe|6JF#eAi7B!H>|-p?8UsT%Wpag!kwKV<;012?RaLXNu_kPpqY3g#x|-rqAT%EE^kxfP zAo>}+7tZkB^IZx(CU(y`a}Gbzl}C4mJ1^SyU^m&QO5@EWE7e&Sds-)mt$OodzMI`< zKvgRKyiNK0(@2qNVB7wtHHD#Ca*YxbgVwQekv!^isxv!^hGQrvSV8MS;?r&j52{#L z45v>;vAlZ3m8?W~p5AoZi;rwNxY%Z)b5nOnw@nr+5E1mo1owwe60ur#lzj*L_8Nx# z*jy=U3Qzjn-g~K==Cn0A--MPbe1eq?{Uhq1iC2cMclX!U`e&Ryttz__@!C-@gw*>k zKOX9#y~X(-vCV!ZxFxkVo=-S)6dE!WV`<;Ta1fMF6SizHq_vaeqPDm2H6wqRtYFJ( zy_&gL!1P?oa$ZQR2^RqVd~=$1d$Y#(dXes!6v&mAMvv1um?~)>M9U?S2n5qOQJ~H& zaC^M{tXLlry*YFV`7_~u+?y)w)pgG1_Hx61XI9D*^WclAH-n5T^YLtWVRg!=wvGt+ z5^LZiowEFW{ib$8W>vSpVz!n$hACm>acx@PE~{>3ai^!Az#?EntUMM8LXpR+t>wjS zP3wjCRqXI%ldYb9vve-u|8V5hHM2~CvScg~51+n2B51jFr#_u8sKTx(|NN1LRI@mJ zmvI))yWs5?t0}U#iO;^d42Iwhc~1{920idUG!JyiPp=x5EG0*Pa|Y9L$>4_4ZXp@- zyH2ojpQS)i^7xZpC-;`H(xMD`jeMdt#iEq1kjp1nNBI3$=S^<#C^wbn?l`PT8OWJo z@|RXUn7cXODPIBTxo{?sUUx|u9! z>53^Qa+v16SG1VIn#LwDMBrO@S@}ZNBlz!{C=o%X9$JEMC zbV?u&6+MIi$jJCviGrE!x!#Ct*20%Yr$jj++!Vc!Q`mM;X1F3*9R8u8l>KIAe|Vi? z{E2a=P`PAecoAP?6zDqp=1vxpc1KKmoyX!QtWC$(YiGF~47HS_xZQ)#go4kGx{QrX zx7jd&C-R?C(z2_#sLK?6B7X##y}kW-wOdXvb-k-l9#?l5@nsT5DVn1aP#!5Y=#fcf z?1_D-`*1MN`BslbH|`QPODiXmnxFSp`P;UIoBs(r`LDy*6M6o_pw6aIE z`TzbLDK+dEXKic~7A=3@_&tWc%W>kZjy9Wj@81@hTT6ThlJ{^N;PIoG5K{GYiG9Gr zNg2H*(#0k{20%Oj=Sowx6u|{>smFH7XO28C)D?T=N3GCr~YuGZ}^uw6L z1v3^FlWsp3bF@R@)6`i>Dt))jGLuh~w&S;nqP#zgjA)w1rAVJtO?7ewl^j~s2M!)4O zkeQX3)JyCnnic0XLXBszP=$_Q5hxhga?d6vy2!2?7t&oE#lTlb?2S_zu#h)n%mW`B z-<8(h==y^pPF0R&MxLyEs>T%PZEu^RPTE~dh(|ZrG(aeF6}@kBEjJ2B9JFSXWn9af%!!x|>C%^Zqj^m? z5~bY`?~(4nI`$f2vSsXvMT!{Lv_D@cat*5v`Fy?y)>-^1o!tw@yh|-vR8Oq85FR+B)Bw-fBjbHJjb(ZwtQ^ z;lFBi=}Ij@?5uIqjL>B(W@y!MVRkHW@D+U=apI~*r+~&?T21?L=G{{!kxn{6?C2Xt zJOd#+m{~=-jAlz>I(K(D7udafZ&>V+W#-nG4S5cw=nC`|qE2`23YsBTul@M__wN%k zc|`p>6m?4QyQEWvY}L~^r+k;v0WLq7^5-*V3;Z)?ySt+<Vsh73mT_TGGeOowBjIW>va+o92gkr=H|A%vK^`t zAyj+Wj?onzbtnypg>rIvv1nMVsFF=;PNw`)hUGo0hlr*zP%%!ikL?+`9`UZuHouLC=i6tE+83y?Z*|B`zu|457*drGPQ;mAv} zy)$a1&EMLU!h7|r*B1L&0(sNv0H{Kqb#Q`u4&Js5_wP4GjND&LI=_GW*0sh6KkI$t zncx2E5E%2qq5bml-pVd$S{bAR#MdVXd8;!4Z3i#a#y{f@Th((UIy%SuYf2+gtkYbN z+$b_MuevEd&f1CHvLcb~2`0!`x)I$ItA^0a;w=<1?);FN*$H^r%LfVFV|FO{X=37A zaYtK=hcOTC#0+qh^AbP?AuB_+FunRJ<<__BMW65ErK;oNmpvvxnYYRXFR+}CPFW}g z(E`7pAr!Igc<(Ee9t>o~Ss5Tx?GX>cC#_R>xVP2w&e}d_G z^hnUp1J9XffxrDp?EC})66>iL!^m)66#N!6z-1pldUVCJ3$NRrogBeRui5)?*VKPQ zBd)`oJD|AjMZzdY1b|I zO5<3wypYPCv>5(}fKi+IbM4qrjse|t-7SqUsVgJ%G2WP{Kbs4^lB5d@7wgiE0!0{Q z7;&V#-X=9ZQmgxA7jljKB#t-xO5E2FFY+Q1*6v*>$_M0@Q`# z(K#KE2nhM^Sg8$UfbcS>U);KzGPEz0fPzdObi<4y_LTB(i;Cw2TCkbffwmA? z%o1%b-%-ci0~}cW#QQfFqaR0~@lX+-2Hc}$ACe@$64^E)CiW&d#!rib6OkogjxD1J zBS=TEuRZ2S#MRvDuT^qvApW|%-lq8F_P!bjSIWW6lMy`HY`M*mRe! z^6BZ7SlB!K9xODUmRKAfX4-D_vX)bF=JX%ux!3Nvc7<^te<=0~+ zXzVp+{n5S;w9xfFzkj_sndiK&S2`%X0sOqY*1vitzSbZ%6CN+f&tHV<;5lgH=`LTU z=6;}QU=T^x-P_9qp1Hu4P|%vFu#IV*rIGYSGlNkpM25?O6bgQ*+uqlT@WLRp6n%Y@5q#et zGCC_ppAF=2o4(z(<0W7^5W-nZ)I9c>l1($~C$Zv2gI2-YJ@j!8)mx%V1W8NJ z674q(^pg%pXPx82CxpC*C%e5N8p&v$0eC#exeUU*f*$Z>)4LIxkT^{e72nJ4ro{<+ zA9E)Tz&3$in~IC_a68MDK`NfZ%jaKY1aXOZg&p6=iRtv*bjQ(890TW04c zAw4D`rg$C2A!8EUbbivlcuTEBf|Su=5}Vo1$fc}3&sm!F(gTgtIZo`~MoP9TH5`>! z3xja78pM~Ol9e2<{yaq$6Pp4P`NfHSo6(kr!*NgJskDg&sewh*nK>Tw)9+mT0d7sy zo|v-dbq3s2!C=Bt$ms3$Yx&JJKH;?ElUafK7w=7VLSu`$RPu3tqF;?!c?YjCOywrd zpicyU8%&NW6{lv!e>b`~%-hH?nplbVy@i71n=~8J43nk)9UiR=A?^?xBEiO;gm>Zl zgB_3OW~HlJ?@~P0MHou3{;t{_@L1+}pMQIBb)y(wl3EmjY*CsPv($mYoPNE9T4R(V z^!hRByD>)7TS!q`ardQ`Nd7)9EUF;aUE=A@*WJ0x@6k z!ub6HAZUeA)51T_w3d<;1z9dr5!5ICRR{YerF{cG$1yT_9tSsk^lG2Ee^*V>Bs^ss zYAB6few*pZ0UT~Qq`@CMj?a0^yiaU?6jt2(j3CTG{1|r<r3?su&a5+lZkm7Ie<#~cAr_?X-Ax@X&kPy~ohT15hYZP% zG=$wCTdUAmysz&XHkAE{J7XHU`D?yX+D+!|wl4i(Nt`YfpIW|KZ7SDi_;X^Q`eH&<{i}GiO$e$OkwgkDNCNWPO|e53?d?+YU6@tc^K(*E^ZyC@ zR_@Wd-;fV1zW^cI|Xq= z_IW7?ch8RtoaNld0n&72?8@*);rlXcUah7^<0;S84ka6W06E69*( zmNwN|coxNi(;M+HMAb0nj!3E1y~n0wzs}m0x$mBT+g9R55bWk^&QGg12?BP?xZfRP zGh062#5-nHI;A3!>sW&cC0w2{OIH^%8)CA$5sIaUA_s&p^S%Bf^bR{xoI2Pti z7|H;>3KFd)D9Er`Y8q47lsR5r9f*v@B;%|lAnTp*l$B=siuLCz8_n7q8@-s1+y;}c z0M2BRlv+xlBPoox~ZPCi;0bx z@!yGm^~E`YyT{3M0%5-1r-t$|xdBAQFr=*$QU64UoBT(N%bd1r!|&+&h|?Up42awV zj%x}i@fmVZwW|ej&1N4SaL2P17SWvtC~Hxw4G0$f;X)!JgWr5;OrH*ZgqQif@WWNrM z1Et@a{NkGG@crZG-4e;Ok;dA#z+F3s z{6*e2a$657G%o6+ZB3PEJ@lM-n76=SO5hxVxHt%45y#5|@}k3BG^&k~YZ zru)TrNz=@n{Y5pK1x1Q_7ebQS*E`BRYy7FZk8wk3TKSs(pA!FF7r(rP;l11V{ldho zL>P#EmIE)TE#KrV7z+|vu0(6F2Oo3%-qlrRQ1XP?EGp#FZAdJl&g7Ef`Z&xVip_@0 z(#ZyXrOPaAXBGwl^yG${6DIfc2E%>UKi%IN62O~u1`LBcsf>d?l8rrzu~WNnWbcQo zkehOK}8oW^$j>zW~O z%xFY*4!6!bc96EQv!{ZE@}q=LjL^os^oK$38tGBTA1cY4^xNGR6N4QO>^3HSUNSAw zNS@kI;G*Ss>zEX%s2n{?GF1dwj{nuWK`@VSy)Mf8UEfAIt$o~07|N*YJQ)d%gqD!;0j&}lwvJk{gAJS7fOxbd@kL_Hz#-926A(JNTixnkZF}tezf0}cPu1UFIAY<%385IQtV8G6$qEw0|D%2K*u3}fS zMUi#KitNW5Icq-N?lN(S8WFZOB>zxUB-PvMbsb@@vl?*!vnSWFsSKRkDB7^cC~c%R zH}pp+TY{@2?hCc|w6yP75RNY_GXrAG*venKN2qZz$}LTV==*h%DG`=~ z$qk-|&0|A2ME^#M&VX-&lwCX;u_59difAySux$NG0f_S65fHaugL_ zOoJ_#Scluf!b04%gvWAh&%%YEhhR)XL_>D+==je@z2E)?|M$!QTVjMX&+H!k@@2=) z#dMXJL02%30;F^Llfy3Tg~p2id^x~y2W)l8?oqZa?f#Zx@>jNyZP*SBy!(@)z_jOE zJe!%?z$of_!$m}v3M|CR%fXx_0YDCL!I-j6GFFU{O#coEHTdlqR1GM=OcLbYCbb?{S^vLBGC40824g zPEKyL2389R$Vl#A#MjLQwio^rS^VF}rw@~{I?KQEt4cL*!uD|}C`aa#ao`8qa8t^* zO6T(62F(p^ktgD~B1h#M*!bvK_+5AU2Rds^XS{rQ<^PYo*=G1I0+;!omX;gP-0`kR zr@nrTZvIA-bQ8Fb`nKtw@ECo3E58Wkmur?X)&Qac>l2t2DjoxmVSQU;_irNROEw)j zR3Omt$04!g?s;Sb&JoDHW;6b0*))IL;xDA;Lx)96`W6lXqE;xp8VpvK9MY#MOOX#iK07=78+4^u@Ppch?%#v7A+_a1>Cm6(_qxRHn) zPQqO)QnqE>^jECsV99N0IExbcP80YeQ!a!|KAe=vOPn6ur|9|3&|WNHV`8YUPwOi| zL{$M!SNLj0Ig_@O3UO>*OS``HCjaUnJLgE6?rp8y*0sTUoJs%nPL7a&t_bmLS0l;y zaj*=|LuN=Pz1b#I@ zpE+fYx+;35FYizM{p%Ns?(%XUEQQceD*!yu)9hTxY5XI+ZGEoH|C^+&5l$dG%%7rK zRP@6w*mjx_VGc?DW&^73o=4ZRe~73JSUbdpVI5($_`QC$Kq!Ol1tc@^>+&f6_HBAx z#AD)rAxyxLK8J26*RNdzFE#UuF%!R)yv4;uuy*2Wuff72F{*i#*Khar+czhB``Y#L z9yHevEO`_r)1m^bnz5N3K5!G>utiXBA+!Odl~Q3k;bD|OE5F31000ZAwDhTUQcd6A zk1h3NOCwMKMndUs`gxqZJIgW&_}vD^UhH=h`&=`Rc9-7kS1bZLX;ka+(9P}leW3P` z6_u3e=>mNpX_bA~12I+A74E{qFz?@i^=eu9Jn~Fj) zVec+O81}x5Y%boU>tbR_K@Y2bKD27&?g1(;Xe+9& zqeK}Bg7I$#LL0lPNiRbkolB?XwY9a?)uUE|YRUYMy+||B(u?*Nm#L37p~efb6{D43 z_ubIKqc;6=A;zMj{OpgYemkPc_xQS)PCIj-qqaa$6g^%HDI_^7e#@(?_jQXO{B9xS z+uNExhdzUXDXK}vUi#|lB$E`G;C^`R{m9*z^{M*f|6$AmI9BgE+tLA)*}rS=&*5KS z5c>nHz#0l|YS6}29xL~>C=b@h0840(X1IK`nR50P2Mo(N;c!#$BN-$je`gi9j_Ns_ zj%qV66=RRTB35ofr!9RwCr7*BGF0KQ@&ndl#pllfpdh(%U%YejJ%iU$NJ(tYZ?qt?u-0~j4_~_scsv%#opocUouuNLl_x-n?e5fQeWkSV%466APXadaZ6o zx~j;N*9g}7$>NoJy04HYL}rLAb?k};)Tt5W%s}>+(l?#%PQnhWGlX%}qE(Rk@;3#d zqmzZlk7N>d?iKLB?Xh{dQZU1Jp>yH8b#C}96|wzJDD=LI>xEu32xNQk-K%DFvJ&@= z!DK!nlFU9)g0Aw_y~yk@>P0{>aKwPT3R!+4(SQ|ONq}lL%M^JY?GL44q~{z?4xnEG zA`*^uKQ_vohVH@Ep6wtt>YRKce#P8vgzYZ7Jj1E za_-iTDR(oAu64KpN$3(cEQ4AapEP*9uGg1DHrh|$w zY4T!Cd!ukhJ%py|E!d>#J3fhMn1RubxPGF7ma4EV44NSQzi;nR;UY~|{84b0FTn)R zK+-MrAuhWC@*?H<2Z@&y1UAI*5u^|(R&ZnGzk0FqJ!Lei@;2WdVL>_yHSBLgp!x(# zY(FkcsP4%rYQXe}6EYc6_zBr0>=@C1Kc|5u9*E8f5ZKQkPc8-v9X4jCl3<979=zz1 zm8_oPF3R#Vh!5{h7W~eKuXu3y`~vof9+e1bGFkRRI;ZHnA(NiP&7|;gt!RHBq_(^- zsENiBc;6vGa%8F;6!SHhNYe_OTwqNk;2dL6$g?Q}r;&ddn1%!Y^}N>!7yk*Wf35T_ zQ^UtPe!z!cWlY~w-Zuz`Mp^U$1j&33nW2tO#n{A{7(`U&Dpb&fr}{QZVIF@E^FuU;KMY_#0{fAN~8#*PR3w8lS zg>oIWe5Xytq+16A+Imd>j?Pd)hTkeQZ-u^XUUjG4*WZ8MsQk&wcMOfcK0_|HzrWA% zawYpYZ|(Wn@xy{7Xtt-LtxYfG6T5T-=GTZ&!PGZ{+)`A`w%_r)CjD{dyM7(`uW=!V-Q6mQ z)_5fJ&&bHJvx7QddW35@aIWJr+^WZEXzvOhfyi5wePk%CZ9}?O%U`K6M0=RkgLLOTKh_ zF=Sw0I0jaYH`R}2e$0u!{V)6U!Egu$$FcWy-63EOCKK{?In&C{t-M*zR@}EyC36YuoU-c_` zyZ@c9W_g|W_0m{n5*t)Xcix{ovz%clL-c%Z;! zhz*S@XH#r5pg7SC`TSJSv6CE`Vl=&S`2PFPJKYmC?oeeEvmfMwI_i?l`4PNgC*WI1 zzyhir1^k7jB~m(JyOke#*<71r6&hI}@0F`UjG_fyf_I19CGEUvBf15sx@Tbp~FM|Ug}I8~Si z?(0ApTCdwb3V^rTxk_?fyxnIYUk$oP-paojDYV3?3f+S3;Kv}BZLmGGP5VNca_0J^ z0peq&dU$~wxy&p`jklu6j^9`ep9-lLd{+kZ!k|+q!QOsN4KL7KRpTiSkJeyc-!>@T zO7trfwO#=>0IR43nkZ%#(2Kj8!GRr8RyPpZn)=K>oyl{qUCB4D^TKHa&*ss!_l=B4 z(IDvEi@bClj=}Ek?oiPOYsgJGH6s@+X}Km;Caa)qKTX2b%@(E8bX$tS<~>asGy*rh{&aep`SnfSAMYbCjFe42-p}G`PM+yeBy_LiILP(Qe5oe z;lX|FT1zDaCF)C;B5tz^rqI*U)&w4V`TP5S+hmP<*0W&p+2^8y7D;%B({zoyt(qF~ z9}QdECFspb+ZubZDQ4cbHv{6WuD15asw&euFSWIPl8dbXV|4cPP+WK_Dk^&M;zdcX z^(ICY3;ifN8l-8~wc2PCN{1E}7SK96&oidBJXAU?9N+TUZPu)T6~UC^>S}c3B-}Lt z67jgGY&-bv*4EZ8F7LrD73^*+%FF5L>2dcHx~$Ns$ZsDQi}v;~#T*84S46kftYQq@ zR>>o7BdE^KPWYVFYlY@Et`;=6n91NsM}6VxuU~D?Q#EkeTSjHO!0-I+`}ZBGT7`qK zHOU1=IG%hDYi(^6u|0!EqS9Ns=?4N)JgDyVOs-n9W=z}=H+Zih45GE&W98OZSXkE* zRw2xsot?om`@mWQU?Mvw$DA5C`OJ5Ge5xB8&w+_lAZ_5`u?Oja^XXj&hj)vNOws|* znD5xwC z1R%LsP^Z4rE{cwh&dkhgYHHGuJ_56yr}E~4wyjMkeh|RPun7nW2`^kwxpSwfve9oJ zn&dc*mFHDd2=Vce%EgY48+_Xgke;5NmSJNHRm^Go^5t#gK9s5lRy-WHfHozP!5IRR z3!j6Bi;Ihg7akV&!%o;3ulRbH79}w$DUdk=m6SSwUUm^1)RRI*Mc!Yk!vHgT!rYU@ z$H&FBytz4Ct7NP%uhDudQ~-Sv>%2Sz9(yRJE-6O10}$Uv-eygX1SzeJclE(QfyVRO z*#MVd%lSxUsN?~tAWvomVJkg7o&WQDqZ$i3+g2=@FahZHjyI>dhJTypGFOUv0VfBC zMHhYkm>k*IVLGw5mzUSuixd4ZEji87-AE0V*mpX6XBh^b_)32bNJmW220;bcTEuTD&3)|Z!))6$G|bQaduB)?#+Ma~Wn z>lSLO6buwyGtz~Jgl7PulUJvB6R$txUE zS_|xu2z3{Xg^Ou)FmL_=>Q3emNT(9$s8umwNaEniRQAeFg@}jMrh( zeN)q|l@(e_%3RO4OTBMMVYYmC*o1@z`uhb$MTftAQ>)Mq46Fy${L7aVNKNx*v%~;@$tXZhdMy^as%<<(}*z45P+>a0~>T zNA`aIuJPM1GIx%`3LU{iw;WV?p>FO>au{NN8}NEzuE{>R7D|~I!w&T znKRs~eR+osLAAHHgL?~XA3XZy*xz##RIJZ0&+HCiV`7MM)68}p&6>)ppPmTn2p!GSrN*+M`VdKK_G`YL~~lco>%ENN6e4B zH!aA`6&Dxh25mon7jW-ZR#t$Q#UBL;2qA)M)T*tk!@+#KC~yAU(ybK^6~NwEhhyGQ zID5+j1}yg0d#vDnu(7cLZyTgu=#U=wVn{$Y+Xq@)zql;6>{0va(|$O0yG<*m9>Nbc z`LI{Fw6y4!7~p7-J5CZsjcOd4z?!k#__D{B!^QA`Au68I9WlV7@|kfnJT5CmjG zGc#sUwGJMefp_OD&65v@-gQBy3vV(6`}P4c-q&ms{30)pC2=I!7k$B z?EL-vcQ0@65q4UIey}<5@b+F>Tx^-9Z*Fd$nwrwr*N5#5ys$U6w$Om@3zl}f2NT;6 zW+8ent$c^!3M}!-YngxPbejDy0JK_{pzd zU#6m}^x80}79>^YWjQ|xs|Nga^nvK>^!RuSm78G}>h-nTdwcV{NAR&EtmF|hn;%z) zx~tvhW(fWLk3W3i7kxcBG_)`~D?m@dflV6knPp4l@8{R@j?DEa^bT99lyCX4iW*fj zSJA;8zpZn@4tK=3dwU~d_6 zw+i1~8`bE1s|1yV)KmjKy#qiWEcA{x*4NcDqvnAOd%3wi=A&m|fcF86uOL&5aEvm4b(@9qf`h$1 z#LP0uU((6^qC$x&$jRx!G`j7HnDYdjls_1_u#rb7=9oK(nKu_g-onxjn2Cys53#$y0d@>bK2=Ui@L`o+^L|z@kIo*Pjm6 z73Ae9=ly^&p!p5iCRb!?Q)EAXg^6)!SQsQ~kQ~?6)a)M|RDJpc6*s+9KhOU0@otMU z^y~J1ix3+V4-e1yfGCA2?auJi3;}v_^7!=h$sa#{t*jK@D`b@NL0xjI5N{Whf}Lk# zVgk6n%{uH13=AeFCLf;V`UydbL+uy#`%46cv9a;2_vO!0lOrPs!)t>!STgaj*Ciw+ zRe^2Ie%)VTc3WFp_nHYft0*Zck@{Wd=jUf;o`Ij-c8tc*jUrGdf~=307ZujSV@7`s zrgxVJ*8DdQWoJi6DX;Yh_wJD!4e(K3fOsq8w`a$C*^-9+@*64NdwKWTIyx*3rK21j zgSh!Ie2#Xk@7;^P&8lDJ%s?f<$jBHJ6qJ>f1%*)9NMMV<%Egs=uW&TL;5r5dMqyzg z@au_ibIQtoL*IhwfZZ216|u2oh%6u*Mn)45l9k!WiIRXJ_v+QF+`PR0l|8^~K2=pg z!A+;4E+(cI@{_c*G?)!QC0?nphcxqNkY2G2s;^BJbsC4=iIhni_O-RuRXCL~kdb8u zd%L)}6l%jP`1$!U-t>cm85sk^id&t%4#nz z5+5HP0xur2sN%-PMhF-=Ik(o{)Rc0YGjmfB`UgUea&mG4<2#qTBOJsAt!RMDs0v09 zEujSP@E_dl?6{;ZMQUkld;HydXliO|XlPihZ)L@nq8jx3mjaBEn%avyYz7rJ#Of*m zGheo$bO#jOs87lo8UO~IKyclcc_SZMCQ;ks1DPPi+?14*h=>TVVuhFwXS13`dn(q; zm*Zc+8w>}uCm|uzSzP!Tt)r|D!1aD=iezg^Jm^Hc(yjRk4tyLW`aeH8=qW1`#B@B5 zj@ErM`|znMhfvB_i0S9hU5E05HGB(Xr$dg5zkan?l);oFt8%gMw6wIcva*1HK5Y<0U&;w literal 0 HcmV?d00001 diff --git a/_examples/text_rotation/main.go b/examples/text_rotation/main.go similarity index 77% rename from _examples/text_rotation/main.go rename to examples/text_rotation/main.go index 4fa60ef..f90ce49 100644 --- a/_examples/text_rotation/main.go +++ b/examples/text_rotation/main.go @@ -1,13 +1,15 @@ package main -import ( - "net/http" +//go:generate go run main.go - chart "github.com/wcharczuk/go-chart" +import ( + "os" + + "github.com/wcharczuk/go-chart" "github.com/wcharczuk/go-chart/drawing" ) -func drawChart(res http.ResponseWriter, req *http.Request) { +func main() { f, _ := chart.GetDefaultFont() r, _ := chart.PNG(1024, 1024) @@ -43,11 +45,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { StrokeWidth: 2, }) - res.Header().Set("Content-Type", "image/png") - r.Save(res) -} - -func main() { - http.HandleFunc("/", drawChart) - http.ListenAndServe(":8080", nil) + file, _ := os.Create("output.png") + defer file.Close() + r.Save(file) } diff --git a/_examples/text_rotation/output.png b/examples/text_rotation/output.png similarity index 100% rename from _examples/text_rotation/output.png rename to examples/text_rotation/output.png diff --git a/_examples/timeseries/main.go b/examples/timeseries/main.go similarity index 96% rename from _examples/timeseries/main.go rename to examples/timeseries/main.go index c2e05ff..3cffd22 100644 --- a/_examples/timeseries/main.go +++ b/examples/timeseries/main.go @@ -13,9 +13,6 @@ func drawChart(res http.ResponseWriter, req *http.Request) { Note: chart.TimeSeries implements `ValueFormatterProvider` and as a result gives the XAxis the appropriate formatter to use for the ticks. */ graph := chart.Chart{ - XAxis: chart.XAxis{ - Style: chart.StyleShow(), - }, Series: []chart.Series{ chart.TimeSeries{ XValues: []time.Time{ @@ -46,7 +43,6 @@ func drawCustomChart(res http.ResponseWriter, req *http.Request) { */ graph := chart.Chart{ XAxis: chart.XAxis{ - Style: chart.StyleShow(), ValueFormatter: chart.TimeHourValueFormatter, }, Series: []chart.Series{ diff --git a/_examples/timeseries/output.png b/examples/timeseries/output.png similarity index 100% rename from _examples/timeseries/output.png rename to examples/timeseries/output.png diff --git a/_examples/twoaxis/main.go b/examples/twoaxis/main.go similarity index 64% rename from _examples/twoaxis/main.go rename to examples/twoaxis/main.go index a3ba063..87eeea6 100644 --- a/_examples/twoaxis/main.go +++ b/examples/twoaxis/main.go @@ -1,13 +1,15 @@ package main +//go:generate go run main.go + import ( "fmt" - "net/http" + "os" - chart "github.com/wcharczuk/go-chart" + "github.com/wcharczuk/go-chart" ) -func drawChart(res http.ResponseWriter, req *http.Request) { +func main() { /* In this example we add a second series, and assign it to the secondary y axis, giving that series it's own range. @@ -17,7 +19,6 @@ func drawChart(res http.ResponseWriter, req *http.Request) { graph := chart.Chart{ XAxis: chart.XAxis{ - Style: chart.StyleShow(), //enables / displays the x-axis TickPosition: chart.TickPositionBetweenTicks, ValueFormatter: func(v interface{}) string { typed := v.(float64) @@ -25,12 +26,6 @@ func drawChart(res http.ResponseWriter, req *http.Request) { return fmt.Sprintf("%d-%d\n%d", typedDate.Month(), typedDate.Day(), typedDate.Year()) }, }, - YAxis: chart.YAxis{ - Style: chart.StyleShow(), //enables / displays the y-axis - }, - YAxisSecondary: chart.YAxis{ - Style: chart.StyleShow(), //enables / displays the secondary y-axis - }, Series: []chart.Series{ chart.ContinuousSeries{ XValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0}, @@ -44,11 +39,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { }, } - res.Header().Set("Content-Type", "image/png") - graph.Render(chart.PNG, res) -} - -func main() { - http.HandleFunc("/", drawChart) - http.ListenAndServe(":8080", nil) + f, _ := os.Create("output.png") + defer f.Close() + graph.Render(chart.PNG, f) } diff --git a/_examples/twoaxis/output.png b/examples/twoaxis/output.png similarity index 100% rename from _examples/twoaxis/output.png rename to examples/twoaxis/output.png diff --git a/_examples/twopoint/main.go b/examples/twopoint/main.go similarity index 80% rename from _examples/twopoint/main.go rename to examples/twopoint/main.go index 9030f76..e66a709 100644 --- a/_examples/twopoint/main.go +++ b/examples/twopoint/main.go @@ -1,28 +1,27 @@ package main +//go:generate go run main.go + import ( "bytes" "log" "os" - chart "github.com/wcharczuk/go-chart" + "github.com/wcharczuk/go-chart" ) func main() { - var b float64 b = 1000 ts1 := chart.ContinuousSeries{ //TimeSeries{ Name: "Time Series", - Style: chart.StyleShow(), XValues: []float64{10 * b, 20 * b, 30 * b, 40 * b, 50 * b, 60 * b, 70 * b, 80 * b}, YValues: []float64{1.0, 2.0, 30.0, 4.0, 50.0, 6.0, 7.0, 88.0}, } ts2 := chart.ContinuousSeries{ //TimeSeries{ Style: chart.Style{ - Show: true, StrokeColor: chart.GetDefaultColor(1), }, @@ -34,15 +33,11 @@ func main() { XAxis: chart.XAxis{ Name: "The XAxis", - NameStyle: chart.StyleShow(), - Style: chart.StyleShow(), ValueFormatter: chart.TimeMinuteValueFormatter, //TimeHourValueFormatter, }, YAxis: chart.YAxis{ - Name: "The YAxis", - NameStyle: chart.StyleShow(), - Style: chart.StyleShow(), + Name: "The YAxis", }, Series: []chart.Series{ diff --git a/examples/twopoint/output.png b/examples/twopoint/output.png new file mode 100644 index 0000000000000000000000000000000000000000..10059e777eb708f67a303a484aebef27829fe688 GIT binary patch literal 41199 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 literal 0 HcmV?d00001 From 60baf1792718807a47d9b071ffec14862375860c Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Mon, 9 Sep 2019 21:04:05 -0700 Subject: [PATCH 49/73] updates --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 87f97ba..a0cdbc0 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ go-chart Package `chart` is a very simple golang native charting library that supports timeseries and continuous line charts. -Master should now be on the v3.x codebase, which overhauls the api significantly. Per usual, see `_examples` for more information. +Master should now be on the v3.x codebase, which overhauls the api significantly. Per usual, see `examples` for more information. # Installation @@ -36,17 +36,17 @@ Pie Chart: ![](https://raw.githubusercontent.com/wcharczuk/go-chart/master/_images/pie_chart.png) -The code for this chart can be found in `_examples/pie_chart/main.go`. +The code for this chart can be found in `examples/pie_chart/main.go`. Stacked Bar: ![](https://raw.githubusercontent.com/wcharczuk/go-chart/master/_images/stacked_bar.png) -The code for this chart can be found in `_examples/stacked_bar/main.go`. +The code for this chart can be found in `examples/stacked_bar/main.go`. # Code Examples -Actual chart configurations and examples can be found in the `./_examples/` directory. They are web servers, so start them with `go run main.go` then access `http://localhost:8080` to see the output. +Actual chart configurations and examples can be found in the `./examples/` directory. They are simple CLI programs that write to `output.png` (they are also updated with `go generate`. # Usage From 3a7bc55431138d52d74bf4a1388374c01e09445d Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Mon, 9 Sep 2019 21:05:48 -0700 Subject: [PATCH 50/73] updates --- cmd/chart/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/chart/main.go b/cmd/chart/main.go index 8818663..623aeeb 100644 --- a/cmd/chart/main.go +++ b/cmd/chart/main.go @@ -7,7 +7,7 @@ import ( "os" "strings" - chart "github.com/wcharczuk/go-chart" + "github.com/wcharczuk/go-chart" ) var ( From 962b9abdec2bd6557efa7de5113284e720d6dbc9 Mon Sep 17 00:00:00 2001 From: Jamie Isaacs Date: Fri, 6 Dec 2019 11:22:51 -0800 Subject: [PATCH 51/73] Add stacked bar chart value labels (#60) and a horizontal stacked bar chart (#39) (#114) * Add stacked bar chart value labels (#60) * Add horizontal render option to stacked bar chart (#39) * Pulling 100% inside the canvasBox to remain visible. * Use correct margins for YAxis.TextHorizontalAlign: chart.TextHorizontalAlignRight * Fixed Show to Hidden due to 5f42a580a98589e4f0acf5658ce3f0e7bc59df3f --- _examples/horizontal_stacked_bar/main.go | 222 ++++++++++++++++++ _examples/horizontal_stacked_bar/output.png | Bin 0 -> 34357 bytes _examples/stacked_bar_labels/main.go | 221 ++++++++++++++++++ _examples/stacked_bar_labels/output.png | Bin 0 -> 25482 bytes draw.go | 6 +- stacked_bar_chart.go | 245 +++++++++++++++++++- text.go | 2 +- 7 files changed, 688 insertions(+), 8 deletions(-) create mode 100644 _examples/horizontal_stacked_bar/main.go create mode 100644 _examples/horizontal_stacked_bar/output.png create mode 100644 _examples/stacked_bar_labels/main.go create mode 100644 _examples/stacked_bar_labels/output.png diff --git a/_examples/horizontal_stacked_bar/main.go b/_examples/horizontal_stacked_bar/main.go new file mode 100644 index 0000000..4447c03 --- /dev/null +++ b/_examples/horizontal_stacked_bar/main.go @@ -0,0 +1,222 @@ +package main + +import ( + "os" + + "github.com/wcharczuk/go-chart" + "github.com/wcharczuk/go-chart/drawing" +) + +func main() { + chart.DefaultBackgroundColor = chart.ColorTransparent + chart.DefaultCanvasColor = chart.ColorTransparent + + barWidth := 80 + + var ( + colorWhite = drawing.Color{R: 241, G: 241, B: 241, A: 255} + colorMariner = drawing.Color{R: 60, G: 100, B: 148, A: 255} + colorLightSteelBlue = drawing.Color{R: 182, G: 195, B: 220, A: 255} + colorPoloBlue = drawing.Color{R: 126, G: 155, B: 200, A: 255} + colorSteelBlue = drawing.Color{R: 73, G: 120, B: 177, A: 255} + ) + + stackedBarChart := chart.StackedBarChart{ + Title: "Quarterly Sales", + TitleStyle: chart.StyleShow(), + Background: chart.Style{ + Padding: chart.Box{ + Top: 75, + }, + }, + Width: 800, + Height: 600, + XAxis: chart.StyleShow(), + YAxis: chart.StyleShow(), + BarSpacing: 40, + IsHorizontal: true, + Bars: []chart.StackedBar{ + { + Name: "Q1", + Width: barWidth, + Values: []chart.Value{ + { + Label: "32K", + Value: 32, + Style: chart.Style{ + StrokeWidth: .01, + FillColor: colorMariner, + FontColor: colorWhite, + }, + }, + { + Label: "46K", + Value: 46, + Style: chart.Style{ + StrokeWidth: .01, + FillColor: colorLightSteelBlue, + FontColor: colorWhite, + }, + }, + { + Label: "48K", + Value: 48, + Style: chart.Style{ + StrokeWidth: .01, + FillColor: colorPoloBlue, + FontColor: colorWhite, + }, + }, + { + Label: "42K", + Value: 42, + Style: chart.Style{ + StrokeWidth: .01, + FillColor: colorSteelBlue, + FontColor: colorWhite, + }, + }, + }, + }, + { + Name: "Q2", + Width: barWidth, + Values: []chart.Value{ + { + Label: "45K", + Value: 45, + Style: chart.Style{ + StrokeWidth: .01, + FillColor: colorMariner, + FontColor: colorWhite, + }, + }, + { + Label: "60K", + Value: 60, + Style: chart.Style{ + StrokeWidth: .01, + FillColor: colorLightSteelBlue, + FontColor: colorWhite, + }, + }, + { + Label: "62K", + Value: 62, + Style: chart.Style{ + StrokeWidth: .01, + FillColor: colorPoloBlue, + FontColor: colorWhite, + }, + }, + { + Label: "53K", + Value: 53, + Style: chart.Style{ + StrokeWidth: .01, + FillColor: colorSteelBlue, + FontColor: colorWhite, + }, + }, + }, + }, + { + Name: "Q3", + Width: barWidth, + Values: []chart.Value{ + { + Label: "54K", + Value: 54, + Style: chart.Style{ + StrokeWidth: .01, + FillColor: colorMariner, + FontColor: colorWhite, + }, + }, + { + Label: "58K", + Value: 58, + Style: chart.Style{ + StrokeWidth: .01, + FillColor: colorLightSteelBlue, + FontColor: colorWhite, + }, + }, + { + Label: "55K", + Value: 55, + Style: chart.Style{ + StrokeWidth: .01, + FillColor: colorPoloBlue, + FontColor: colorWhite, + }, + }, + { + Label: "47K", + Value: 47, + Style: chart.Style{ + StrokeWidth: .01, + FillColor: colorSteelBlue, + FontColor: colorWhite, + }, + }, + }, + }, + { + Name: "Q4", + Width: barWidth, + Values: []chart.Value{ + { + Label: "46K", + Value: 46, + Style: chart.Style{ + StrokeWidth: .01, + FillColor: colorMariner, + FontColor: colorWhite, + }, + }, + { + Label: "70K", + Value: 70, + Style: chart.Style{ + StrokeWidth: .01, + FillColor: colorLightSteelBlue, + FontColor: colorWhite, + }, + }, + { + Label: "74K", + Value: 74, + Style: chart.Style{ + StrokeWidth: .01, + FillColor: colorPoloBlue, + FontColor: colorWhite, + }, + }, + { + Label: "60K", + Value: 60, + Style: chart.Style{ + StrokeWidth: .01, + FillColor: colorSteelBlue, + FontColor: colorWhite, + }, + }, + }, + }, + }, + } + + pngFile, err := os.Create("output.png") + if err != nil { + panic(err) + } + + if err := stackedBarChart.Render(chart.PNG, pngFile); err != nil { + panic(err) + } + + if err := pngFile.Close(); err != nil { + panic(err) + } +} diff --git a/_examples/horizontal_stacked_bar/output.png b/_examples/horizontal_stacked_bar/output.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ad1232e9d195d834324257a3ad8d8cc0117be7 GIT binary patch literal 34357 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

    gF*w=0>e)X0fyA!GHt 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%0AO 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