From b6113fade66fc4bfc8d8560c939447346d984f9c Mon Sep 17 00:00:00 2001 From: Sebastien Binet Date: Fri, 1 Sep 2023 12:11:07 +0200 Subject: [PATCH] hplot: add timeseries examples with epok Signed-off-by: Sebastien Binet --- go.mod | 2 + go.sum | 4 + hplot/testdata/timeseries_daily_golden.png | Bin 0 -> 26116 bytes hplot/testdata/timeseries_monthly_golden.png | Bin 0 -> 29515 bytes hplot/testdata/timeseries_yearly_golden.png | Bin 0 -> 19607 bytes hplot/ticks_example_test.go | 199 +++++++++++++++++++ hplot/ticks_test.go | 12 ++ 7 files changed, 217 insertions(+) create mode 100644 hplot/testdata/timeseries_daily_golden.png create mode 100644 hplot/testdata/timeseries_monthly_golden.png create mode 100644 hplot/testdata/timeseries_yearly_golden.png diff --git a/go.mod b/go.mod index 88bb85ec9..78ca04c1b 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.20 require ( gioui.org v0.2.0 + git.sr.ht/~sbinet/epok v0.1.0 git.sr.ht/~sbinet/go-arrow v0.2.0 github.com/astrogo/fitsio v0.3.0 github.com/campoy/embedmd v1.0.0 @@ -59,6 +60,7 @@ require ( github.com/posener/complete v1.2.3 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rivo/uniseg v0.4.4 // indirect + github.com/teambition/rrule-go v1.8.2 // indirect golang.org/x/exp/shiny v0.0.0-20230801115018-d63ba01acd4b // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect diff --git a/go.sum b/go.sum index 9bacc26f2..71f06ac3d 100644 --- a/go.sum +++ b/go.sum @@ -9,6 +9,8 @@ gioui.org/shader v1.0.6/go.mod h1:mWdiME581d/kV7/iEhLmUgUK5iZ09XR5XpduXzbePVM= gioui.org/x v0.2.0 h1:/MbdjKH19F16auv19UiQxli2n6BYPw7eyh9XBOTgmEw= gioui.org/x v0.2.0/go.mod h1:rCGN2nZ8ZHqrtseJoQxCMZpt2xrZUrdZ2WuMRLBJmYs= git.sr.ht/~sbinet/cmpimg v0.1.0 h1:E0zPRk2muWuCqSKSVZIWsgtU9pjsw3eKHi8VmQeScxo= +git.sr.ht/~sbinet/epok v0.1.0 h1:gtcT69TjnNZl5NansTvzqWtIJ5W4ysMSyiZIjYDzORE= +git.sr.ht/~sbinet/epok v0.1.0/go.mod h1:fPYSc65tPhuTrm4kYvAZDx/vGaMsbIGg7owyUn+DD48= git.sr.ht/~sbinet/gg v0.5.0 h1:6V43j30HM623V329xA9Ntq+WJrMjDxRjuAB1LFWF5m8= git.sr.ht/~sbinet/gg v0.5.0/go.mod h1:G2C0eRESqlKhS7ErsNey6HHrqU1PwsnCQlekFi9Q2Oo= git.sr.ht/~sbinet/go-arrow v0.2.0 h1:QIiVPcEtMb2lzOWDgBrIz9Sa+7Xvs2EJ/Icxe6IcUSI= @@ -114,6 +116,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/teambition/rrule-go v1.8.2 h1:lIjpjvWTj9fFUZCmuoVDrKVOtdiyzbzc93qTmRVe/J8= +github.com/teambition/rrule-go v1.8.2/go.mod h1:Ieq5AbrKGciP1V//Wq8ktsTXwSwJHDD5mD/wLBGl3p4= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2 h1:zzrxE1FKn5ryBNl9eKOeqQ58Y/Qpo3Q9QNxKHX5uzzQ= diff --git a/hplot/testdata/timeseries_daily_golden.png b/hplot/testdata/timeseries_daily_golden.png new file mode 100644 index 0000000000000000000000000000000000000000..00cd8ac13c783d327f555519350a8fde13735d03 GIT binary patch literal 26116 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 literal 0 HcmV?d00001 diff --git a/hplot/testdata/timeseries_monthly_golden.png b/hplot/testdata/timeseries_monthly_golden.png new file mode 100644 index 0000000000000000000000000000000000000000..d8674b2a904f2d2441f25714905c3056928c9d12 GIT binary patch literal 29515 zcmZU*Wmr|;^FF-ACJee!q@|RSMmnUCMwF87lvY7PKw7$6K)OLeTDqj9K|;FoKgZAa z`n`A_U+CpI`|Q2e+B36e?)#qQuOKIZg-(o)APAO}q^J^tpzR{ar8hUw;FF^@Eqes9 z!9A)v1tsynt=GImW zAK?NsMjb~-M(wu9#-YC)GP| z&7N>JF71q$TZ|X#HW0A9P*Kl76pS>VFkbyu_2tW#KYxrJ-z;=Q!UY(&Z@+$xg^6i8 zl-q3L5V`cHFU|dA-~D*kB#4-U;kfMd^mMGkO3-E7fRdQgT;0H6es6U|reL_<-IatS z4t42E<+?X}9qsMhc8kx%hA|MsZ*$cMa__-|wBxb>vpu9K6Ki}+$n$;gb?xjGpb7zE-o`C<~KW@I!AtinyQx3}Ba+7h!He+ml1s-ffNc3J99kWb_*Dl0oX zUM-AcH)$*{)T$_WQTIkEXSX*+q{OHz;N!ss>Ey@t+vHcSU2FOAWAKYciCWNXoFA`tL_Rz^IvO1vg+WqMT3Gyzh=^#oI6qmRtby^( zwFI%Tvqum_g@zW{E=cR@PWfVybdbQk|4vW$*0~;Nlo+`xD1s7^)VEtZrUG!@vlHM{!zC9CpQViSEMc!3#>_bLk%%;<$hR zduOLvYcScG@^CHQojZ332%@8-oz72>!~*e)0)xr<$I_+3+uGWy9adj7cuY=CCXn%j zCnWq`UaoRj9bOsAlga2e8OYpQ8!a(-6dD@pwDFsa^(DefLO^ifd2!&$X7sbtdgg6a z)lodR9Ss<~(a+BxZd1g5{`@nRV>K(uLvMu7dfMy5hwCTR2kVn&6O~(n7pF~&k)tKA z3$?3k$4X7y1Oy*FDuNr=IR4d>*iX;O3T&QTTQhfjaP{idch|52{QVzsa=!Tb^66B) zJDwTaqer6^R#O`d7tB`v!NG}7Y*HnuC{t-l3dC7vrqzO(v_$R2U2ix{?H^Iy$83a35n1 zq)Xw5h%})bxv#L{+|ymWMQEG&i6 zkqm(ZERIf2w5iF-$>1y)K8^7e)%MF_pFcZq{N^wBRn6CoB*oc*I1AnjF{iy}XM1a_ z%6SW-Z+&1OMo8<)*}>GtR720c-6<@^@$qqU`R4XQCzxbs2zybr<6j2Pk^t0*{Qdn! zcMrGbe*OCOyUw*UX}gPSiqGTpvyQYVzw7>BU*D@N9UYyyxjC8j>%OnzLQ3IQVM9WqgEWSWBKQ<&JBqk=Nuy7+oCfbjVo}QkI%cXY{+QQ=Wq8^sVgj9WTj@&lcZ)uZ&x`o@wRLm^_|3B@mYF_3qJ;VFYf!gW z{48j>HA-LpwxQty-k1NM<$W7W$z3{7({lD+tzWo>!R90FFbEakpAPacdLzGc( zEGa2zsc0S|1NUE_YPf*-01vx3*=R^iOe7*AYA#RC%Zp1&(jBh*USBYqv%SVX{-Rzy zgq#c?e}DS>yR(x6E{n0!r|+(9i|G}qCk7y1b~m_?6<>a}Kd}A0xsZ~VXNi$SM@Rql zKo(*%Y=7LY`(NI@YibXty^7}j?wyFJ==*8GHI8d#WrDjlGiz&K($eg}wvGZ9=jSCe zlwdxvufpbw9h#Ol2T?AVj2EARf<jJO4 z*hAnem#PPpn@9^naT3ueIFaNW=yyeWd@BC?&k~}2q$!S#UT)XQn zw9A+O{{1^SF_Ej1GdnlO_VOFDZ^|5?t*z|{nH1P92?>cn(iCJ5HV|YhLbN`8iDov%%uj@>H2PIiq@(9Azx&_c4QDuo|;jfF{4<>cf*%0%&k>A?dLM*I?j+l=LO)YQ#w zZQ0Kxvge)& z;S`~JbPhNAPWapoAx!&1{soC%WUbA{@47Vcpf_8yK4oPNM0wY|(7ml;ADacY!Xn}1 zd$Vf{msS>J;KFd~>+4}#3vi0-=Bm^kGFITLnXK-Ct8QznJ+z@$=_T>02gf$gPy6Ye+<=4+eqh@RuC(3XD3>3lBND z;13@@%-&0U`}VEfQa6W5|9o2OIggH4R34X`> zf6Xi`$cTvAU*M6$kCJC2M0&c8c9upBnqG8;*IB=|wzdY>85P&ppIhvTyMFz;=aCue z_Pyg~zWrg;^YfyanS&*?Vq)#l5lddP+1c5sv^_~6!4K>lj|I=v#Ds`~LN~Y&iVB4I zZ^hJ~R*K~#yNJ z)Yj2ys5O_3iir3zw*|&j$t)_Ho{@ovi#ttRwm=P@LWMm;6S44+hi9y%MSN>zA_n?aN3_p zQl!2%KOX_9xy3lAi+%_>KO++pi%xZ^abGGVRa|Dn<`89c4~5|+Atwg|zlv1y@Vn|( zvm(ia=~zE@AZGUyr93{+UHP^3;Ne_L41Anio30cqm^4VBl(FAf!be`b@`=3#I;Adbb#JIc zd*itWt2sC9$N+c1K1HEoDbeHun~mviQZ?OtCg%!Kc>K^W5HQ$L;B+7a1{}7Ju6A_V*ue zGwBOGf-hCdn%*BPw0#;MX);8PK=`nly0|`mBiqscZ|4ktI zu_V=C1xuZa$Vg$hztq+GJO75J;%hVaXXSadTg=)T!@dtBg7D17t~iPDih&rm!Q`ht z4fy|E_@yh(WLH4MDsmnI2?DbEEed6(gDIDNeER0w z?Kga$Ms_`v)Vi<#EJlea%j-fycP8UifF@Fw%3xBDa<;?%SsxSIhtjqWpNzg?lzZZ zuE973sObHJNka`|r(e$Q;RwT6YMJckd6Y|hIq3g>kJZeIOU!`5E)m>Y@>->$fN{WlTwFHRT4yx+X(cRk zFC+F%om#q1c8L%rb4Cu!XH6eE^<)!xwAEDQ{@KQ0=Ul7(pF0an$_ML%5J9QP1 zPqlSmQ7e7#%q^;z%NqareRklQIWd1V>u4=?0%z0C#T$NoQ>SI&&gh1Vx2`K!QL88< z`y;8|EIcOXS85loIg!oi-;gnB*Y9-!|2;9cxR{PT!gAu1yN|EZkn_L^^{~mJzFcgC z`M(LM_^U`CY;>mn+*>U!ln60k3JxAjy?VBdQD&?da+H!Vyb!pNIKB2vr`lTM5y8Ko zL}&`5`Mk%?jM=pA=%!It-rl7W6x1yBi{+w~k?|?JO_AQ0w*2dn#)`>!RJkR!w^!3F z_rLdb-e?bZx*kVKNhg?;s}{ZR`6iA*h-|DvB!l5-y!X@Q$lTL^<9hNbN<1aS$7FF) zR$4Z)nLu8CWzgTKJKdE-^unQG~>f9s~8_@ds8%YJc~siTV;1H<%pyf0>G29dmc5E-6w(ZA<)$g1K`)@nR? zv)F?5X2;jwA;)IUDed*(hPa&c4b+>N-jT}K-F!9kJyVY$F-9OEmLr^+q>GmzPXAwI zx@hl-c6VRW{M6<4?Uv1sdrh3|6YE!5AwB&Jq#Hv0KUx4=E5}f4JAkR!}flOs%1A zt^K$*r1*VYX(_wEC}q;~c({MI`towAlT~Qc`}bGLKOCqMEiX%v@$~L47pp&L*!-EN zM(h#FXPCt}W7HggCnY7dJvu*c@Gtt5f!mPD$|u&IU<*h#P(|Wv{jHE{Up<%LGd$wI zX_(A-VFEB(-mLk>`B_ySY>a~vZl^VOcGhCnwvOzu{Uv1r*Vfva#r7A*$}){p>RxO= zY^ELCx5{I0ph_{{ynw-(Qu4-8J_xjL=W~~ii76I)o`=8q+50jEZG1egd_X^CMbP{b ztqlK{t+^aSnS$Rp-0q_sT7loi#b=T=K=gvloXSZ zEl2Bi)OlpPq264wC^k;u5}~6XW+-FX*DWaf8~ruQ{CbwE^%Mk97kmp^Tbt!x9A%T1 zd2n=xh?aI`s)4oj3GdvR*`W&R0)?4h_a8Tlx7WHn&`K}7C=fJid@oN%Fk%BPl`%NhUR?(Kh2yGq1t*asiLPV(Vjge44POHq5 zgB(W-VuAQv)w9i&qodtZmo2&n6qIxGRDmoBJbg}6c;ZA8!q^e$5FNd$JKH`re=-|E zzfHiTC9YQR>D}d;Pp|$A<-y<=WWpq&&?=7##NaR$bw9yhBy@Gf483HCitowmQOp?x zEWf*2n(GLkm?@v=Y~Oz@e4qYS=5Wo0;MWh9G(2Zty>HECZt(^?f@ zs96N{OW1Tu%?Mna6Fs0#mB}7?_x936`) zClA9izJ@XjJjWBxvm;uvCqf)%{f$2CZcpUipndy{`sN4gZjT^roE#>?ii)M4g8VMR zI5hW05mX-G6>vAur0H6&TF9H-d&Is z{;#j>cj>r!?R0Rwl!Q@}bnHnQxHyND15zK^&qDgGv*M8m#aq<6lWy-UcaapA(|8O0 zcKl0xwnsq5FI`YjYDIqVS=BcU01me2S zuflL|K4uH#7D^NjV9!4Lpp3$PSx7!P~dmxUQ%!;w7ZOa zBTD(?i?elHRhN)n_S@tNQ}q#1;;r4!i_Gl&(JmXx zc6ZNjgz##kx!pv)vs>n4qTw`(ah$lM&s0@K(?tLstVgB;XTIVhLKz+1nNQytPdtg` zkCRI>3dcesXaV*_R1#~PAnWXCPnmvcIvKlaiVWhSG9QNaSPs~uxOw^$cqKUzJXBmy zZZtGfnyTMDJJ=n!vY)+T>3UP42=!Kz^?W`kH+V!O$wxCQc1CHdT~5B#3v*KNj$%qv z&Cm95ueQ71el0mH8LIE(Q|&5YUZ*fg(aGuzhh;9eCkcE~fdm8d?b-y_lBG~Fy`$Y1 z3$pY_AI;yi1`qfyZD`~-I0nUXE>yE3SnryEb6a>ymrmiy_>9vEtL^ulB5q8$`!>q= zB0jW+(DT-)$9;dN5S)9d*BBKybVV668!j@vOv*7$@N|u=dSqphSS*;)G@DM1xPEI` zKGW4J3I+aMW*bk%@VShICaY~!NxiP2JdZB!Ga-~P+B)r>f$I|~J{a@@iMPnpSF$+! z26GH7WW~kVUm^+oGJNr+m%d#(oxX&)g{_%uyd5nMV%DML z?c2gi{t|F%U+-~N4JabeJyfX}1k9x-1Au^W09>e1ZBOrnhlW_sZRy7fB$y7TGwaX^ zBn}ru@>`CJlktFu(v?vPCZnqNl9H34rRfD3_5!1eUY}_Pph-YG!8B|;~wD8iTtj_L_{}z8mFhHFJHd}xVE#a zYimo(;^N}U>Z+X@Eh5z1(UXNkYutK^$0clcFGp8Uv*@j6>2x(CLRUjMBQ7s5FCp=P zpGHg+fCSNq&z~hl&3O^8yr;EX1o-#|925(Ogpd3Ya|`-|cdN{*K+D%{af zZ$s+}CL7GY`D(U-TQHlPFW2X zGz8HP)gU9DeyUNwwHGNyN* z2J3kFJzqR=J+PGSEYynObHi>n8x6x}O7%Ev`}uK>_)_vL?rkm@`DcDtM{#lA;NWh6 zm($YH>gwv`fqw;j8a;pR{Op7>R8k=C2^ONj31Ef{r`2;=cb@!{GR~}V{HkPDBs+(4 zX0g!+0|+hkQe#En`)X@z{n{EEQvsw4rt$wcY{h#_i(l0EbrYV@SwrEg(ek8P%tkm)luCMydMO97QLAVKH?3`uIGb zFuUaS#?^47IJaC8&t$lUMqmHU$#oLM_${Rxot&g(HV`XC9HgYAqLiWPj0F>oP$jkc z;|ylkEl+5U6MDaR6<#l3F(pSsL#lQSiOi6!%u&wjhT8|^+f0A+2ACQ^lINDM5X4Yf zL1-XrfNM%Y2szvT8a-T+RqB|(wz{Riy)#$MgJkoG-I4)r*>tqn5I~>5;}x$7jgGb# zfFeHxK!2n_rxWD|6bHu~d#e(6@9rK<&2LHv9e0lG#p^*{1 ze$%;n02zN!VIS|Q9iKT7bBBRFk_uk;>Svja2HxiLXSzt~sr(;vLoicY46qNs_g9FY zd=eHhIdLTB`wX#K$OQK$7Z5_afE58$6qv74W;!%KKi|QGiA;;UeP`I-^7EtR#62#q zg1k$Jp%T>uaI0(JIbiipj*g2vN866gCJ18r2$M-&2r9GWr?52>5nAiqLFi&AXMiq& z1ns7N%g31la>VPllvIirQf=+cX#r+ZSpZO~QmFO7*H0Vm>=ojAXzimc}Bs)*(UY@+fIVf(ReY0$)qr3bESS>s8xS5{+E?T&u~Hz{;3| zQ{3K*7r6Mo2A2^ErSzpma5G51A-;yu zTDBw!z^T79-4yViL|-rldad1%PJYP&4;cLj9eFY2kZW6%(RY{|;y zGkm9J1Zk7ZfMf=@sAln}9)>etaoIvP9il)~Y>fjT>u(M=9-d=ZENZpcog?ZRJJ^_X zl&~$vL_gf>o2(f;A(>h$z2>WU@S7=-{U+DJHLs8`pE%&a@Ad(u17>v6O5quyeUo78 zvR8oP0(!p2gFud3x7dyEkO|6_m%B*|$PZ-p#jqI|OFoe3mlw3rp+T|{jY?D`=VdeO zi1?nN(-hzOaDf@J66%zyQM;d@u@Tug)?QH|^Ob4@E-K54w<7V_XXR%R? z^v^h9UsBd@i1U=fp`Inm>u}&M0G~Xk%EL-V%R?Zw-Yjiy!tapuUR6#|7Tv5&8W9G z#lWb=K?6yyM{f!$D6oW>{Zhh_G>I8uJRMgaURye>Daohjt1rf_gz80<3M7f0)%2sxlMMQyom;`46 z6#v65vW^-LWLgp`?K&A%)qn@yB_$>!%$gN)A>2D(024VsZEg=*eOG~s# zc!A9zD&V)C{sy$Bz*m2up>g`)DR?9slQm1gImnrrnQ@u)Q&Cc)&0G_bHJ_5hp=m3| zynA%mTkn2bPj-IE;WnA{$^OhW1>_qzf6F;ja}>}_K)Jnyg#~JndB70|2d4{H95Xg1 zhMJ1X&87@VzG69*dG~=N15-S|`|-z}D@o}Inz71Q#oSBeHj z<>d($dbYMi=jTUWYin!p^J0(1ZyyW|3?L)=v$A5V;}`ofbya%r=p?B%*enZee(4S!PW_ghn9Mh1g(Dak%t_B3; zp|NSX1#47Iols0Hw4Af5TB*dyV5+X>thgcI%Va*uP=U@1mW0sI``G?pFszubE{HHh zj{W*I9c{x6JYR3?{a?0?b6fw>7abPw0@y%HARr(Rz$7j%4(4@maB%UBCW=W5MRS9) zCYnVTWHzyW!v#9y;Bugc zBEzQN+Ck3G_oqQVao>P5da;{{)KR&RJYToRW)DHo1K!6KPBE;~tPJOy85pEHFAD-S zs-rW>_PU!CbW98krcJ(B%>{2Tk&fwh9F5>tm%9>pfk`kjDkhy##`Sj^iW#tn#wi3{Hd<3-+P|BC%{(wdz z=P#P~bd!z%qR>7&hmiZNn9PELB3L=Z_QTG#uV#S*kx^1lHzSa-OIbmT}@w)gZ{ zjhFw0B_bmw1uo{ng9is|qdSmc=vLe3K+-*dcN0mXXWP-4Lfwr(f`?~*k*4#}`FU~c z@t#d6Kcc`TCNRWl^*jF4r%h1B@m%P5JmlwhpZ(!K<$f>;=*yGbJ4nYpmJncoqm2^z z?)#=_mKks_exUdtOsK7P6Hy3-rGvGH{r3XZVC47m*H+m4=#gp%W^&DNlLof>Wx{-gnnGj*S2&J9R5AN?GhO z`Ef%d)?_R~z*!b>IXV@p3D{DE86wYj@tvqIWhbneL%~eW&k)c5CITwLM1G($qm3-5 zqVf&RpCu;F&wPcJQ7x_6Az85vg3XTc+n)@auv}5 zDr?H7S013y(zbB&kdx1QXkaJ?3s~n0C=TK^#;_3V!t$aP)MPD?Vvg3ltuP-A3v5IN zTN8LoXTR!1dvYpr703XdfiyRD-4;Cks@IGTz^oN0%uq!rBO@b29Vf!^$b#6#Rhf&5 z1o4tqH2B#C`zx5lSMZu&ztkblhlSbhuW6(xJc0de9VTW0S?ANIyGu#hBbSimM*+JN zSFT^b*d34u8q?r)S63IW!%8V^k5DYzsE~V^hD$FmCFOW}n)bh61vr6SJk%PNVRms* z)jSBcPa{J^7!>~mpb8)N*HR=xfT}B41zLm(N{6cIYH|TLb%sa=PI7MBAHRQ-!)0H7 z=p8p)q;1qcKzRYok4o%~rFbxDmHl!*s6$X(?wZbbtI28ykdOfBZVOACt63M@-)}t3 z`0v)NVvRxh`F}y9_PQ&!4E9}sti6R4KzhogRgOu{_qhiBl8US*vCn%06QYZAtxl5x z`=4D^1=kUwCR{p(LJsvIjARa=K((CsJy|7+n!_&{y7WI;h z`k2d}Gvb5N5po@P<$5C4$aGyIe_D!&6rI76HpV)J_^sJ$8UzX2DOg$rsgsF`3FvI8 zQ$d7?0t?JfKn?_Ofl{Btm8(|`U%&2rjhA&vrA6>U;px-Rs5~|L``%yjxgXv{gm!TE zC*pY=I$B$oCaUbVuR^_b{T8V@NaG+Q17+}wJ_nHFg`(LLcuVVjmbbWqc%du*vSR~n z9^@~D8YSZO-$2|kHI?L7pj}lAi;2>;7?Xj1NiE*6^$f}WY*n9PG7w<@yVP8YlT$nD z3X<$n>QBeXxerNrIE`$7UmtyyFDSD_MXwN)UCJh=r8SzP361iYF;CzDNVS#v5@JkF zez(qL$JdXKk8eI7@@D*VF1lg}VDd==yntBe90s5qf$-P*iP_pPZBTQNPr|zPK8A) z59D7Ed6xqjs6jR+r#{2h55W{tCfC!$EpTwygF(sJWiue?C13LDvcvi_4x0xcmMOs7 z5Gp*!mw;fA`~C``Kex!|QNyJpvP6Gn1m-{Wq9F>G+c@Smu}#Z$g~Exr#`c0g@h%JliiNy=ve9R z*hPMy9zTa|mU5QCfKE;S`jhE%`-%l@;*QrL;R&~4@T6Q`_ zK&L-?PtuDEG;Y226QRRp<>E4GUENsja31@6KqLoVM!dFR45rL%;c`h)hOx?7fVWLd zLQK^70-^;brhk{9*xQxmg-&=zG;_P~vl>TsCm@Rlv%fnS0-N*wj-}9$WCl>~bsn;^ zabYDTv)H~Vy}fYx!Mfs5?qEL2-%$~rny}EjP5_GwEdb0P85Sn2>n_G+)sb0NYP_Oy zJQp&d&Es0W$+&*#Z0i7n)GQ0At%U-0^)1Bm{`(VN(lL)SSVzB-aRB6UV_);|n;K)L zYCdR_42xQteE<|gytF#7EpJf>#K*+YCv~;8O_!1?sCs)h6KhgmEzsQ<&nJnAvs1xF zS)k!fF36yt=co`R_0xe_~mt} z)JQfo>ii6~4HjBv}=;%%o3xE#Gt+=SrQQ@6O*G83If1|L$NZl(F_(_TBZkyD@kBQV6S^Ln$fS zhND)CVJiLrx2tqmHQ>d_%4I&!d-8Ai*o|1(zCedKeoU9w#nrt-)+LJ?;1|I0Bh;kP zb!sJ}nfrV&>^I0w%m#GM#4WkG0>2Cfy zU+NhTcYt&oq*A)Iw1B!Cgort~Fx0(d0y| zPtaqss}(3nqmTYl_|Ii}2XmSn++m?XW1Wmig^hlj1uiL6dc!k1+K$$hDpo8sH~#~5 z1#*My9*lFcK_1AcXl81OAM;BCU2#6%i(?!e9l&iFDjF>-ji$Z3EWrVjtG(VBWYpP{ zRqsyE`qjEz41>qc_hV4A9x&^e?Dy|e;fAH9F?M{>5V06n0=h~K%xm+~4X#*=y%nc+ zU%vv~hCY{J_A|Vc6e{e{ygbI_fRW8jt{d%TkWAF0p{c*tI`0hiW)$!T6(c zRshGZ-vSz*KLbFJ;N8*@kd_O>uJ;0(9dv$>I31Z=TeD^@WLJH}M8BC*^4etjDt}UH z;F`{!TK;S9dSjj`Bqxl3} zhFhpoks`yf|7Wb&@87$jX>KhoD!X6r!5~(ID-|s${-(oid)aSrF)Z)!0&t29k~Ic( zd~)iK7myt(Obdqqk!*j1t0VYtI=8##J|TtfFDW*69)~|d&vUJHNZ~%)Pb(G0;R&aw zY!0j9%*@&ZAg@cFxMLY{g9mlPdeTN&L%>-nJkxP#{d%%I&WvY-9sjWW`?7pJZ247Y>Z|M}f1X4J^TyM{g{aw~81va8kf5(!c8Gy|3 z^>{xV``l(R4tUbav$$0>_IDp7w($A+pW<*?2Eg1D%x-W+roP}O7Oa=-Z1gd(?AG8% zU5hc38O9e=noIFFWaEjS_{U_=iwt_@%7PoPX#B5!%2I0-y(Q=PV}>&ry$bIP83a8m zgUA~mi*fOA8XHJ!009@O%)!(u|0E>z?z-LoePXRdpZ`KOO(Hyzd<1rHp!46yp*yV+ zHvi~-e-o9>BgsTC`U%+DYPd#6|GSmZw^1d$)owBfcf!Jz1u#V+{d*HCpV?m1@twBN zpOhz_Gim;@(*a}m%7n)v*f)<(lmU4Ux=(D(AENipMjJv$vhB;CvR8jqN6K2uQFFA$vMf?3PjJ?{GLQ+x&uO-NM`&WjF zTUUlgpKFFq%Ej_&l&h;n1BOn-R#`v{zf!(8;TD!orIF0-`C=arPi%2<{;#avBGeJ{ zvr1z)*KValq~M7)H*fovyo~|&+N*wpYa=pTgn$K~+@abtX?HiO{F1VyA4BRYc{s5blFa~#+0>YrKVL5A|5PyU@<`#$N{-K$`gDyKlDV(uhHnYZuoVw^GNgmTD_W;(T*k$mz(0cxQ1s?j|>44A(Ww9W?kaO{ph1! z)6SO6qUPS8U!nLcnYYMTnF-CY^i6U>BIaVNuaW0hyYs$ zv&U8}vlbCOK89^fn*enWY3ZR`P?$nu_@CnQ|8fjG63gP^VoFNNA9^-E^{ChErG3>G zMPzV4dEy4mqUGh~fJf(662O#@PkGrT8O)$7hGs5kF@!Fp_wV1^13nDkbxTVN-mWcN zgnS8DsTytYMD>(_;M*_Turo?dP7X-cyyTJp-NhP*j7&#sh6eRTUtb^IF3PbGTRc3= z{{H@tA3x5Q0Kf{y2taUF$P9P=)aF^vqrKNMRav_i!xH{`#=y5vU~a@cj#$p@Hm?f#Mi#-o4WcTp^3v2E=!h!#1MTY0ACAsEfEDkFFVdVXmM(1stn{gceGCSV{O#C3J3%jgJFK9ShH%2S@;Vr=SyNw)#^DFEohw`%8h1 zpzfhEE3y2;A4hZ$`f*V|1a_F4ho>CSB-EgN1Y&QIJ^_e(6k1t(T&p7^pBKGMf5Xqk zN8Zy7nnwl!DQF6aC{eMqvx5S4;Y&WDva+&_j0`mk;QqO=K<$ABfC*}-tJAsUJkL`d z>g!Y7rqlrPDKj&ZK`}S?lO+e34 ztvGX7fhrsOP`v`>?S<0T{Hr(MAEEqzDpW5`#RBUl)@PtuX@4bD1+A|~M@f~T(6Nd| zAsG=FNsa9v!0{L}JTh|6UkmynQO@AiucB17CZD39ekmg-9WW-Ph8h8PPiZRbwI03y zIFJAi>3;x}{KVVCd~`ZlYG6zvss&3*N(5~%041ds(8NJoY!(b+yqer z78w~C;1vXn>ficKru)GXW7$pgV4=*-C(6v!j<^PDU3LJcPk`G^PErVZFzQ}>^S%s= z8gL@bh<}@mXAl@0NN{z4pWPc*wBvK${MOX;ZZZipG!Vm##^KgrlFMsr6Uk5CL62m| zh#=TBV0tjT1tyr&1M!bvi;Ht1vI43HT`-l-6dkh=vVgjWAj`?YvA4e;3_^ zN6+f2Dlt*fwh=*()5?T|Nr)EnOwigk<#Cb^-Hp%^2yhMXaaC}a1qcFwndK;^`FeXl zO%ibbH4WkcTKPnC6BCgBjlX1_0p=9dy9y@!HH@8L`SMJ~}z6Fdbrm&O!hMVX1eP zdT3Jt7d9U)UVtm1!xxNWXJXr*@pU=#r6ppXy>HlvSjp531x=|kTz_+G%tPKe;S z^Y*+H>{rlE3$%JmFd4L9&iwYebQ!2l=to6Sk+|r9t;veQUtnP-z!$r@odVEWf3!%l z&r${FI-Ku~=mG*4aDpN=pzRNYA5xN%&=C2(E%X7myU0XmXD7^K6?!?rSyfb2BqiIR zqu<{chW7pYcOVnxpFJ~&BNv2(kQxsmp>NM;NutuPb&yLV;0%>272iM>E71h<*kA1v$C>wj!wZU zii12a&MNZq9yYN8V4aeZVxH`=zeZHE3%&tS9m3Yy+RqralfBi}X04fz>WuL6xm>lO z9Ue^BbEk_7vuPIyIyh$`vQXc^zdO+dG2OqW##({ItM*Yws;C{n3(b?VoyUZ;5RKyC% z3Xo`EHi5JcddVUzegd?%a|Fj*gl_aeNrM`QzNKZi$89!DJ5UNh-y!hy%)f(_ZeU>4 zSkIvGCL|_y@B4l5^#!eaNx-(|Nr`Go0*_L9F8wI>HsMq7)Jov z7_m?59MJEd>LTJ*82CNUYu!AdWml~}xTFN2aoQ$UIQL}x3#0JnFv>yP0A!q)a zos$#V@5fH|UqfIvHO+Nffa5HnX&huX&yTef@!>ENn5cdhw6a6gTA!WWK0Vq24tsTF zrTFjm)Cj~RI7eW62`G9ka->6AqcLa#;vB4ck^Qm~$XuY^p?OuX_$c~s9|Ju%_vnuw zq5@_RXesWem{4K2LpaVWEEKev{qgv33>>VGqr#x8p`|t6+pD1Olok*851c^)#+Lak zrg6PTZz^hITnxl{uyqCSUR-`?cFXaJp8}mh&8pzp2^%D%bhxvvwJMaM#;}&46CsBK zH|}Pnr@PGt>y0l=^{-voHwE5ENXRQZ96*agk0AT(furc$ehvncnb0FiN9TU+R%o^m>}hW)a62Mzv@dyudQa)mz-1T;0r zpv!*LXJHWvS++--{a@#Dw+!^7u4 zA~~SXR1O-MlR%3JbR@8KnH%!ZqzdN~to4LJEQJFwAmsqszo|Upbkl7rSnr_xw81N( z_vdZ-D$wbHY!IG6!RP$xZ!ptp7Tx~qN3f^w92`v5I9Wl>#jtcxhV2svSq!+19eic3 zWK@&TthWV<)nB8iV|5B&=txLp4Wg=*IUs$ux0+dAoC>Lc+Tz<1)VPSn(sqtjCcXWhQ1#)Ta zYWtg$FDzfaRM64E8i9I&gM%ZC@d1D&RM>r&jiI0+CM6vl8KKB6ycq2p8d{i{d1Y=6 zr%xEdA4yU!OHxxx=S>5UNS0RuH<_479$N)*yrIF9alGW8A1O;n&{9)ht&_RCo^+A5 zgieywGy{*9etiDRyIHRb^5gZ1DoCz`lR7a-a%*a8U|eA-;OHRXKgOwbJ5tinaACx7 zh4USr@bdP+nJqwXJ|Vq@?c+)x(rRXG{Ap0;=9RawBY)+8+G&+tf4(FMyEbflzzV_v z0QZ`|eM>Gc$LGItuKRH$sdL`9X$BG{YHI55rMK?gxdB;9Kv0lRG@Os%ji*)w&(JSY zrwPB=IRaW9Pl?4oX-P>x$OvJ3rK~+_nwq)*3GMr?C8(T~RaJqki%_}z?z<3{2Ur~F z7>nFqlj7rxXDI3G>AmOjWF`Cv$xGAv88{s`cNL^Z(z#E6B*OVP`Yyi?!Ra7YcwC%0 z&1m6zdS1YWq;Ayq^XL4QGwj7-rY~6u;q(pb+u#^6L~KT%+UHY_kCW(OD?L9yhpYfc z&VZE=VyMse2Lb}W$HvB>$~L!wv=wT%nHL=|Sw$T~g6N}Ibm8;|(iyK?y)tmf$c*18 z=n{g0f@tO9>B^tr2k!0c;FK?cBCl7fpD?|$(isjWfT95^E8|&I2D`8TmDsD|!=)ro zkL|5vySv?}^G*&nrmPGNeKJ9wifU5^bAWR-VBdp-5Ww4>(I{(a@iH-40Gxp4o&5Fd zC-F3T28Q+Db>l!RLtPEgtD>T!FgrVWU>WkcKkh%(ldG%8e*AbZosnvW3Ao!xq3*`U z#%or>g@pwinrF_tfBInDaK^(GwC|9Tyi5a00d~x@L{5t_!1cx^Cf4A52sqj$H&^rd z^GHxfO+0AD1p|iBfGSEsQPCThj~ummFYQ2MKO{%c6b`C@&mh%lCeVeY=H=!6nw9$h znmY4vD)*@UHy|WQk|gaTO-Pz$o|0xsrAg8xNz$ND*odg4QYk`6Ng_Folqo97P>51W zMf0G{c|ZHS@9(;Pf1T@OdiL|I?^^e|*S+rNoLZn+TtyQ%$7$21AI;75ON*B-_4(Vm z$J0~q*7ofwIgaT?>#jyd4*6V}@1T>MoD585{ECp6bR3?T_zr}Frj@P!&>RO!V@G>? z@}*1LbfXYSVw^xou2^yA`t@lsPmq7{+2)R_sHyS1v0`eJs67ET+`lg|%!nk!v$}oj z7U;XGvhsXV($bYH`NR`ZnZAF&feNYX7Fzh0$iIHQg^YOV(j`L!1B3*9BqRs~j5bW; ztoPqupJ%>sVK`tPIj+H^z&vdbDD5?uLI7Zep{b>H$NgOhoe9!UfS4GpTRFZ=J9q9h zr0T6&6^${HpUIK%@J-In4~vUc9(@Xxkr<(=`6xeMY~J(R9#>ADTnZ0Uo;ZgGuc@gC zcl4K5NJZ8I(=lKaK@k!XLbA?y?$UZ2>z$;ECbv1!4*zTa*AR+wDN7KQrKKiG z6=f0Qf{O#roj)(}M@30#jJEcB_nSNPx_X-}Jfz&-(SbjeT9lfmrapR=8>#p%T)DzO zT|IF^F+o8=K{7~t@#4jS1IO^>NhRFU9eTr}3&WNXxEh+8fr|*6HND2kNzTTgthTmk zhu%TC*EPA3KX%`tm$&$)HD-+OYB9sSi4sj;zbeXZ56N**7&NFp)yvH-EhXh(UVUlP zj@=jZbabq3ZPlYF)k7_RaOQz(G7^Xk8q!@BNLH!2%M?{tE6x9%yL(=ob@AiJYtqxQ zv+Z|}Dup^tPS!AxA;ZUd%>4GA8*LS?HX}q~tWAQqywOR+X*LP}_YW~*O%0ZOAx7NW z$mih9hGS|o9ws^Jj-EzO<+s%i?ri3gKtU05o)1X0<>ZbqukBpo>DkUB9~t;}=uKiy zTtY%sZ-$d<>2F~Z%V!HJXYZ9ZYe+TqD_CRdoUF^FO47lBpmAT4>W1wl)>nM>{ z2cPib1kzX|oKWjfwVVcC;rx&~$*)K@$UPmcdc%#pl@t`nV!z*p8J~NTpVr4<@?-@I zAIp*S98i9PWOGX#(=qz^5&rD`hY#50KzD5CXLHNnxJ=d8()!FN9losl!-93|)LT11 zzQ$LRk#>^!@I34A>F$V06D$WqV9f#+Qa{o8R8Rh!DJPVp?&LHk+^VxE85+zisUqX* zRr!Gff9&?&wQH(SV4yl)S66A5*13?W@eSX(KXJU1iz9T?tAc9mMD#wE6-^Th_6S?WW0OXb(r_A~%m-Sg>Z=af&DAHQp z?fy%V*ogk{NXfd1Fr=iaz|0Spnjlgli+q0Jer3?M?!S9+P=d{lic;CQ@dIsx70vSG zDN_=y$K37w8Jci4Z+ui_RMf%wuDUAoZEc^@R3iLdxMD@$1ESIg#=&z$O6tJDgV0?H z7vqwWX0BRAp6Ou^PbG9{5Mj74wS6*vmg(K}``u&mHu`2NvFU$D1E{wg=zvha|HQ45 z!u)~)!+o8)v~_qN+%WSq(ZO2=6fyou)bzC*H};9}Zh7e;SGitcfh(DTlD+rGn;Db0 zK{p`GZEV>8cmqyiKKw6%CH5@i+O=!McYGVlW4c#0n~Y1BKEadKx0C628>qftKy>rq zDA79pDkF+xjE9e!=9AS^e!5Btm)z!^o$%l>H4?BYUgb7>nLth;DH2DOl+2e7JbL=H zUcWTjrVT4x+431@*^!>-BN|#%EYWTJZ@=#ZZJ0{+K{I zY}`0lMFr@7FvmfI(VVP<9~l1?aEnVeOxpLQuV zAgT@v32{etFm>t%9i`VD^z(E}p$86Nv!ZoT6N9qp#;pX2MJy?1XHZdM%sbH9vL!#o;G|G|22#*6~- zzKYyU45x5Ibl$vq_3d4Uava=lzJQ24wK)F!?mL{w;Km+i33RGjikpk?|LEwUt5S0B zUJqw;Y}jVZn8D`(%hmsN&NFdvcui6mA|oLibY}YY^B7>=y=!c-9GajCI&81Ex1jMm zTqrJ%X?8B~Iy_^tAuVUri4(ifE)s9jRSz7~1y)M2@$n<%-CcJ03yPr7Va#r$7&&!H zX>wL-sy3V}68P_ZTG1qmf+uqB=+Q|K4AoUIV>hqiV(9ve=kQ#7n3pfRpmLr)dv@Wp-uDUjI}eVU#z`ScFihf{ z0Ozh;=|8B_Y{cNVKX%)dz>oU&*i4uH^XJdpoNS3ceHb&`w`z4$ksYk0q%?FWWUq*l zij5UCi@5cPkr=a9*3>N5K3Q8+BmF1eF}+cvihJT3#+Agn|TFW1rq+@Cr+R&o{?w+ zhUqh*;K4dk#5&J%VBu$OWOH88g9m_pbxf~@E&E!N`H5Uj!R02v zbueO~vT7-QYHq4vK~C=ZH&nxE5$wWB9-6et)zyB{qF?m2EGp%$&L`Irb%D1Vm2Qqx zsK>T!vhp|`9l6Cb$Br8}Qckk*a&$z*Gk%_P3^V}%cj5a5bjf)BnGWgh?jODW+=R*J zvK|%{S*@}cTePTxeZx#PU06H4dbK<+ulKy5q8c6p_Jzn#L9l|q$>-1ii)J`%!u#*W zC(LG6AmDFrZ7rtZ#^evoHR!Ne>n_oSy{i)$^(G}%)zpL>#&0eZW8Ki6hg_GWuG~W} zPfpxh#`&E`%OB!?fyu0% zvzZlJvcaLDOf`WTR2A9NXV09`hvj5++!%GCC-j)>tL#;)SI3+>B^jg@Fi(Si@A74O zLYYXgJ~4Iws-pbI&$*H@zC8lAu-Zm7@U2TF`}}Tc30ptZEWrh+0GkctSK)Mxk%CG4 zn}X1#+4Wea;zlO4s27yjX)Uq0R}C$A*yZzj;qmV;buO%v*>h(95b40H6fF!WW3$q) zTv_mW*iU-qkkHW8S)LK6PBnh}MmIagaRI%+(|3g_h6~f|J~I)agJyn8l7@{9F#0rD z|LWb^Q{=+#x>I=>?#IXk#4}h%OL2v*t=MYp7-9Rg1%e*_IphsEFsTL4Eqq;iq%8mN z{=KkxrlqCC%7X(ij+{G}UHZDuU%nhNvK0>8A;JQ0DxW@;oRfC0*sFJYc}-0_*#K!6lzoNwnxOjcp312Vt5Z{JSGMmC8m`11L)*jmQd!-vN(BFCH(G_yuWDQH@( zIJ_99zx53bV#!DL@87@n%T0a%oKw2n)Qa>J2MzMmVmLPO*0#7icUC3@{~B6)k^s)$ z_Etj03)(rh%qe%$?+FFO=&F?~OFzs8x$%eyx!nf#JkeRRq>5|N5!BVmF6_RPoD8rL zOQX?l;|I7wBKUD_e&adNXrY4+QU1B%jY`i z;LXVox8?OWhCR@T@I>xSf^PZ!8-aaA69chkpSK&R7!;P346#9GXHK7HShL;T-9Zkp zE?hK&8U?^#k>-$d;c3)z8XtJ!Qm-k#vlCB5L_`~U;g$CXwuGH;XrUb*9zHV-F(F=l zci-NP8%LjfM34TOea1C+|B&zm<}NN;k#jM%?QSu2$seGgfSGVfZmwCq1s4aBpnahB zFw&WKdh&q>>uR1qr>Rd}mT|wZFet}C@`=_$+LWJ=AwVL01;21kaK+)NaT?POzpSY_ zee|f!qDAIO6|cG~4z6V8$^v%LhhIFqvjI|L?)_jQi4C*eVxp-SokgEMed@=SU0BDXr;2*FH#d=S#Cw^}pI^er1Gctr z37VEye_C1|J$Qg)I^nsVfBkOpyLRi{Rjl~H^tF0tf8RSP4LpL%g&FL<2_5*IZ*p>C zl`uGtEMM^9SAPTuj*eHcI$z`5Voeg;{_*KphR`?S;j~v{-)wDN%8>z_g4(ygdpM{_ zvDzYC~r<0J7h*{aktGcYb z{50P~+m_{65CX4l3%&nYj*2ej_y_L++p z?awddgF^pFMrbWORh& z8xH!Ktt1zV!;*)bxTj~%;Nu#FrUy4yYil{hP&VUip*`K*Co*QAFrf_`2ZwciOYM7x z7Hsj!5mK&1n~P$->Pw>aX*a2&r$EPh_E1!B^7-hH*%x7P+QrGK zbyw!PiO(NB(lj={8yB~RRse=eN0p3;B|8`y-W#{rq@-yYNiPK|c<;`cJsWJq>6N-F z@|FmIt%_XH#d*_00L7D+qh;89V(RJ(`V1hvOMD@{7g*Z zteqw+-@)vXuv1i2B>CQV(BYIfxZgx7;C5ED1bl=cd;+{9gTmN@nnLa?v<%;Q)@ZM? zoSg4|+pK+EdSQi=CQYiSs`~I_H=sbU-SA=S&qw12h!ObPckIC0^#atIY|!?dJ0IiL zjzA&PIRcI!j$`%e;SsYDlw25q0X75Tk?x@vV9P&!T47`JlMg_Lv0DzxmET|1GnyDq znB8#3DsWPwRofW0PL=UHR!i5O@$kbvNI!0BpE>$A2?xg-#aGzyUoEmE{O<9XnDIYN ztpB60WX6|A3>|A@bc7JV{gqCI8GuZS2lSQ3CtCHj0{mf@5`hI;x`{ly_LIR!-3&@&+}ZbG?#MCk7dhOd-H#3Zw>CaD`ge)0s4 z(R1_WO9=~`Udal(51kJf!_mT~nwcOy0<7N!ZwGJhI~WLH_ey3a=+8V>9D6D}JT5*S z5=Pm_$A?`=7*8=%J$-#(O>}fL%ZHo~LQKOZgoIIHUb@tt|l&$7@+`T z;Tg?<%|%;Mrod{^qJa^!5g|#4KOZn|%E-#-p~}igeMCAAb8`|*;IrF3W_|T;C>k&^ zlEKteuRkt~i|O*hg^n*H3mnUwCNs67-y3)!AGFYK@uzOh{Ps=DmJNxV`}gCeE3gFf z1ag1>c5Dr|IeO~{0>WwgI$NQ0#x6Q9;+<@71q`S?#NncFUZ=8xL*ymJZp<7O=WW+} zWLpz;3^QeF6i+4V&K-#L8PdGr0vm761c@An%FOuq-lj*`LPu~gZsiRfUENbA0)njn z;!nngj$I0}SG1O2ll)AakF}Y7G=|pdQE91;fx!#7-n=|>y9Y|GE&i|N=DBLGyy38Z zy|}UWmMxcs!d$l9IyyQ6Z-JZ644ws6YHoY(#n{5wH5fF`sXLW?l!Y{xmos0krqnHJ1;nrn0U?V=)WcD>Z!e&2+%*+ut zB3P_o*;iJkNA+h~STGkgb>#4p)T%R5Qe-B7&%d>u!4Ns8v%jR65Sk%RT|P5O-Glrw zt?|8@Q^I(DNc!a9d?(CmA1F?YeT=vWp1`Vj0fbCz0;S znBAl=|2}|dLJ6Fkn;ZKtsDwNrd(6=21fOl;!T~bcJooz(t=E71^og5z+q-RIr!$0z zU~39&T}(`WpBiYVfSVnVAJor&nUIEuXD5n&gW{}x(q*#*PiQ?!*Y&q<+)z62;n;PJ zWJ^~!IfIb6XzOfaBQF$Ckz?E1?f;7%mSct5F}}s$_>A9P+>B356!#Zv%JDIof zD$hU9QLv788lXg#6pE-W}DWLGwFwx6B3P#3oFhY_W9njg{0JmFC`9O~bH=nKCbgJNHwhrbDGM z7-b*UY#?oCzw%CC9XNHS99S}lqB2A@HwL|mnKJpIxfDA9x5%t*gsn#B-l10N@&o1N zO&V9&g(!ZGiHdSrv&L@}p66IQm}Cmd_t9~Z9d@V%*Suohn6zw0tM-j+S>Dv>eKA*1hP53i8Bv^_K90A9Viq8t9zWUXc7&g z^K)`cVddctWaEYyO*q>@2^w@lB%f4JfkgC zlT^Dn^zDyUv`|(qn>Xh<=;)ja)2+Mi2f>$?qE@+p8Y8>S(w7knZ$?o`PONCsIe`{A zZiscqqA?2A#(_OoSX#b^7BOG%zu;>he;DHuXFp7o)Il6ND4!*m{`6#7KmHT5^*4 zmHTrXN@9#fQw5t zDmc@eHhaN>{xx&e!pCT8BKHxD9^Hb9jZyckmv%=No12-Tc~S3DBy?0{`;5B)(oab- zaQABRnv%xJdDA!a_o7+$cM)UCwaIUGv#T-f%XkySb+FW4<6l4atRHWP?`P}PdvY4Q zyV{lzzWopD!ncr!bjS+LcPQLRO6v2nFYGeyjHj1Z!6@N4f%L1|ArO0e49+G9<%WOW zYwVgJ_|t(Vki-*wS$2$uhR|e`hT*se%8qk3-8HotTYbjh+~eS%+5Ig1KOY!Z^v=ED zM7d}0<6P0KrV+BU{v1F4*VT&%s?=(HpWo7TV?apt*PiE1&Y)kz@I5xt$v`jtrJc=2 zbMrGHnW|3>LcE&vm4lt9&T0QAf7jILX;vC^NYiw5bo4wgR!g|wq_mi(_X`N`+FR(< zIke70PUT$0P_=Lh_2F!Sb3}IimwbI-kb&Iyw60^Uw$>vYx+=3Nio4DP$zo|V|s6Av{oD5i^960HHzNQqn zr0ccBzFhlcXyepWqyH`ki2?V#e`M7hWw9V9ck}qNQn^%8KIA7*ifRSyrCs-H#v8w{ z=7yZvGFsO{*2$$Fdh`ww;edidiEoYrY$|jGjXWJ)*|WRXjlWI`vW#DBYwK%!LVYvJ z)9-EGv|r&ur~RN;{vt9{wM{hf(<26 zLlhM&X+2RJIgt(z=Rz$F9WsP5TngP>j!+z~)VG*1q;UHJl1F7(*&Z~wu$z>`vSUb- zmOvDJ#MrO6*mmjCpf6qIPvp?L>%eYyyfKOIL~e@a@3li2lL4mqEL%{87027F$jRw= z|7o?WyW|JHph-5BYoNEGrxig^Qi`2jHL~1)^1v4()YNX>zD+kjdGcfdL%MqEn;?&& z0y9IdX`!7Rm8gCZUCCa~TP4;Rxi?6v zTs_iILhq06c#($(uRXd>{$@3z{#pTcBLaUrkCNhIb@>B?KN1Dl!59XY-=Dv&5Ktpj z4QI!f(V3A0LqnkfRyeGE&uG%&!})607q4EyLku4_>}74OS5x^&;#t?;lQDI(b#k?< zH(U@Nl|=s3Gt5QP**~cN_hHa4`+iUv0j(n(yLLD@+^eo`g~#Ag@$Mx43@6V_t^qLQ zlz-^|B*}DSZZ?BLea+xfTSn|0pZ;iALOz=i_YxZ@U0K~mD_ z<{pwm-atHGx-=)g%;AktPy`iL8ov!*g;_F`NO7@@?B1Se{$Xp-O;uH0zjvbo4MLRxpcgKSv^m-le_lYJipc@@31SAzO-S{$6y*cn+Du4>R=DwYS=_ z;~Lth$hr2J&V!Uw?^jkT_KTq<0p>9LtDY}QTK3lc0N6At7`SY%uduPWxvKAebGiVb6_mgCcwLwL?3p_ZyzfZ z@G2UB>;xU1R$i#q>TPr|6E1n?f`tdZ+y{!%cOpz8SMp97|9mD1tsNbCnbocb1x0kv zEJef;Ys$)c=N44mUD_L{S*BzL3{6hv9Vz|73K@$GGTgcoQ9h{r-cBM9F@%&@E^>`h zS#bXXmJk^J^uILC4ffY|g1IfG(>6&vp-l_NL~CRX7Slaf4U!Y{~hil{#OxXHDs~X=>Mk(I=--= eo7JN3Zppm<74~bDtl2B-F>A(ri&QfQ;r{@x*1v=R literal 0 HcmV?d00001 diff --git a/hplot/testdata/timeseries_yearly_golden.png b/hplot/testdata/timeseries_yearly_golden.png new file mode 100644 index 0000000000000000000000000000000000000000..b2878745e6c84efb59966d64dc77a20167e8f01b GIT binary patch literal 19607 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 1 { + format = vs[1] + } + t, err := time.Parse(format, vs[0]) + if err != nil { + panic(err) + } + return t +} diff --git a/hplot/ticks_test.go b/hplot/ticks_test.go index afedfac7e..8aa595b61 100644 --- a/hplot/ticks_test.go +++ b/hplot/ticks_test.go @@ -13,3 +13,15 @@ import ( func TestTicks(t *testing.T) { checkPlot(cmpimg.CheckPlot)(ExampleTicks, t, "ticks.png") } + +func TestTicksTimeYearly(t *testing.T) { + checkPlot(cmpimg.CheckPlot)(ExampleTicks_yearly, t, "timeseries_yearly.png") +} + +func TestTicksTimeMonthly(t *testing.T) { + checkPlot(cmpimg.CheckPlot)(ExampleTicks_monthly, t, "timeseries_monthly.png") +} + +func TestTicksTimeDaily(t *testing.T) { + checkPlot(cmpimg.CheckPlot)(ExampleTicks_daily, t, "timeseries_daily.png") +}