From 51a6547b663eb942884b693c605bd5b266ff327a Mon Sep 17 00:00:00 2001
From: Artyom Keydunov
-[Website](https://cube.dev?ref=github-readme) • [Getting Started](https://cube.dev/docs/getting-started?ref=github-readme) • [Docs](https://cube.dev/docs?ref=github-readme) • [Examples](https://cube.dev/docs/examples?ref=github-readme) • [Blog](https://cube.dev/blog?ref=github-readme) • [Slack](https://slack.cube.dev?ref=github-readme) • [X](https://twitter.com/the_cube_dev)
+[Website](https://cube.dev?ref=github-readme) • [Docs](https://cube.dev/docs?ref=github-readme) • [Examples](https://cube.dev/docs/examples?ref=github-readme) • [Blog](https://cube.dev/blog?ref=github-readme) • [Slack](https://slack.cube.dev?ref=github-readme) • [X](https://twitter.com/the_cube_dev)
[](https://badge.fury.io/js/%40cubejs-backend%2Fserver)
[](https://github.com/cube-js/cube/actions?query=workflow%3ABuild+branch%3Amaster)
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fcube-js%2Fcube.js?ref=badge_shield)
-__Cube Core is an open-source semantic layer and LookML alternative.__ It can be used by data professionals to access data from modern data stores, organize it into consistent definitions, and deliver it to every application. Cube Core is headless and comes with multiple APIs for embedded analytics and BI: REST, GraphQL and SQL. If you are looking for a fully integrated platform, similar to Looker, check out our commercial product - [Cube](https://cube.dev).
+__Cube Core is an open-source semantic layer.__ Cube Core can be used to build embedded analytics in your applications or create your own business intelligence tool. Cube Core is headless and comes with multiple APIs for embedded analytics and BI: REST, GraphQL, and SQL.
+
+If you are looking for a fully integrated platform, check out [Cube](https://cube.dev), a modern AI-first business intelligence platform. We use Cube Core to power it.
Learn more about connecting Cube to data sources and analytics & visualization tools.
-
-For a step-by-step guide on Cube Cloud, [see the docs](https://cube.dev/docs/getting-started/cloud/overview?ref=github-readme).
-
-### Docker
-
-Alternatively, you can get started with Cube locally or self-host it with [Docker](https://www.docker.com/).
+You can get started with Cube locally or self-host it with [Docker](https://www.docker.com/).
Once Docker is installed, in a new folder for your project, run the following command:
@@ -68,7 +50,13 @@ docker run -p 4000:4000 \
Then, open http://localhost:4000 in your browser to continue setup.
-For a step-by-step guide on Docker, [see the docs](https://cube.dev/docs/getting-started-docker?ref=github-readme).
+For a step-by-step guide, [see the docs](https://cube.dev/docs/getting-started-docker?ref=github-readme).
+
+### Cube — Complete Modern BI Tool from Cube Core Creators
+
+[Cube](https://cube.dev?ref=github-readme) is a complete modern AI-first business intelligence platform built on Cube Core. It provides a fully integrated solution with a user-friendly interface, advanced analytics capabilities, and managed infrastructure. [Cube Cloud](https://cube.dev/cloud?ref=github-readme) offers the fastest way to get started with instant and free access for development projects and proofs of concept.
+
+
## Resources
@@ -79,16 +67,16 @@ For a step-by-step guide on Docker, [see the docs](https://cube.dev/docs/getting
## Contributing
-There are many ways you can contribute to Cube! Here are a few possibilities:
+There are many ways you can contribute to Cube Core! Here are a few possibilities:
* Star this repo and follow us on [X](https://twitter.com/the_cube_dev).
* Add Cube to your stack on [Stackshare](https://stackshare.io/cube-js).
-* Upvote issues with 👍 reaction so we know what's the demand for particular issue to prioritize it within road map.
+* Upvote issues with 👍 reaction so we know what the demand is for particular issues to prioritize them within the roadmap.
* Create issues every time you feel something is missing or goes wrong.
-* Ask questions on [Stack Overflow with cube.js tag](https://stackoverflow.com/questions/tagged/cube.js) if others can have these questions as well.
+* Ask questions on [Stack Overflow with cube.js tag](https://stackoverflow.com/questions/tagged/cube.js) if others might have these questions as well.
* Provide pull requests for all open issues and especially for those with [help wanted](https://github.com/cube-js/cube/issues?q=is%3Aissue+is%3Aopen+label%3A"help+wanted") and [good first issue](https://github.com/cube-js/cube/issues?q=is%3Aissue+is%3Aopen+label%3A"good+first+issue") labels.
-All sort of contributions are **welcome and extremely helpful** 🙌 Please refer to [the contribution guide](https://github.com/cube-js/cube/blob/master/CONTRIBUTING.md) for more information.
+All sorts of contributions are **welcome and extremely helpful** 🙌 Please refer to [the contribution guide](https://github.com/cube-js/cube/blob/master/CONTRIBUTING.md) for more information.
## License
diff --git a/docs/content/cube-core-logo.png b/docs/content/cube-core-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..2132bf291a84150897f1138394a4197ba9238bcf
GIT binary patch
literal 22477
zcmZVlby!s0_dgB;ioqb#or=;Rf*{f$9a2&p2Wd`hgL+Pr=IM<7x!)XPw_AU*y!j`76ue<~nzra{LlXRzHhibE6 z+z9Y%=OZVN{rmv`>1HueE=dHDi?`{sB*^FZ~Akjp^!Tt>(~RFoR}YjRdkom zk3ZZ4OPb3;vKHLA%}=)P1=8#hyjUtz))wGN;=2*b{_w)?5T%Pv!KV3s*>&RB;R^Y# zzEw5C7JOwueie@!h#>Ra48Cs*hW+AZRsuCQgo{dFb8C>jySsSzBcqWp%u{Qoy6B!p zL7Hs2L<0*tq__Hv#0HPP&xSLkvBGVg+yL|~>?s;tn+8=E1MBt<^tjMWaPxM<*A3jJ z=&oE`>N@nZ)p<*x#tn?Cy7I$v`sRL-Q>qb0h0T-Axg%?(0(=R=!b2xdB1fJ{Y61a! zFRR(8RVmTogU?mn%vxt~8<)}P*Z|IH4$o`Mlh?H7E er13=PGjv%%v-5bY8r2)^*k {aflF)s(>N_%YS!_Gp(xw!d7fZPZ z(3?- L682Ug#h)ARY)?9TTUcFo$=1tJp*WQZ~oTx>uu zmSl``mCz=SWLiYek7ICHx7OF3w=(?Y=89~x+%MTqgT`ZzRPT#EdRht{i5T&?QP!BX ze*xsF9w#4+O1rqz&$~GME3K~4zoD5dnb;-cjfBQeDhY+#iEOgn#(t@T=s8`V!9=Vd z( 2?H+s$;cm)r8aY(GI!F36n@Zd0y(y?sPpD+o_y}4Zd3khL41Kd< zO(~gc;P;$uXPWN6cz#eJ?yFB&{yJ0g5Srz^io)TShH~kJaPD0a*}(8WPldc34E3RP zV{+O7ffjqobnK||SgX_LgWBmOU(C`vs%8qZ%tq^{oY%DXCEVSpDLi}-nh=(TIs1ik z#8*5LGu+8+iDxuBH5*vrvl<1sIiqI~Ch6LC_^#ItkeDP+Roc$+SWUl3n!_5JAi+LQ zVfz#`SH1Bo+{&p`pRA?%OHS|0+KU*d`uVV>M2%4EOKO*dtO(~PLE5{EeF-_gT$xp9 zTyxTOr=7$89L|aOM7q)^Hpmuq+@@)_*40K1|69WLM!ZIGm5SdF0}}U4!QtU1B-3|T z9w}ej+K7Bj2WdZWEfw AIfBo)otb+_Pk}2xL4f$i~cqtM6I13sGK7bNU zC}?U~efKIS+jmN6Z53wI#Rg>;!EKsSm3a!URdeDj5>}u@xI}F$CfH!-vg!amu8l4g zVyRzhPgbgw1(oj( xc zeR`R>+?c2EL}3gr5e7%1xn;yTNZlxADmOb^CUaO%*e(voq(~uQ02{Y;Zt5?8{!T(B zrroHCozYyq1oHGGctwkBs1&FZL&UJh;)_2-)Vi zSV^ausEt_uH~evl`6xj#^LF9#j8H12$?!%6Io2)i5S1k46e>3by*T7%++bA&N&-Xj zFHyp6j5mE(jind;E`B$uZrjK|X^ycJ_1=vy5bz(oeiUatP8s#NjiAXXkejOlGvnj9 z&A`8^HjhK$yE6B6z0Cid*}p!U=CNv!>LPwMAnJGD
6X0 zA|j`1jFxms!9E|fFi|*yET0hOItIB1-8I}e6n^FQyoi!I6jq$m7-p`bqOw<5v>ni$ zXSV0xxk!3z1x ^Hl=87Q7WBwbvA+skihzvp|6c}m)faH#k$9-MkaE$ r9w|okNc3 z)*LDThbO!kJ)%#dS%_>O5T}nrW%}`BVnB+f6b?(LyiNN)AD%q~3VOhGw8DIhJb$+M z41UA!q$uXO3&)#kN@wBBp2!#OhA~nxh}SA%F)|(Z9j%kFWd4v3;-`(-NouDuWk+N5 zE{Lw`d|q8!PNzcQZIHD5?yJ!(={ XH=B9hjOLKaSpnYk&Ifp#`lV@M>WH9 zi&r5Af}{91>-b5fS9zm}(i*a_N*#Nvy7G*Ch+~IWFgSTqD3CY5|I)AL>TtgKNvh?B zLEly~iJ42{@S25XS!7t+v!^e?vp)Z2X%soqI*8MyGUvk~h7a$9(a!vtl73e7yGceu z+>XP8@=Mkt0oNXFC-d)Y5d-HaImoD9bSo>x;fW5*bAnwmEO`lXmI*~uY#bjJ6`0Iq z(TBG_%Va}f?4wOG3W;298}R434~P}}T$+oEXRI};I V#9{nG+S@y6Nc7tdO$Er)r5G#}|jMSiI@bS|nTd_0ViN z6gk>|XG%y=SS2(z16_!|xWrcym|XIMDUc22+vjUlC#0lAhP7JQP7faIF8uM;@>*=G zSoXtkPA*00=?WiJ>fz?E9_`q@%HwqKp~rlSUwpoQ*3?z3S#5KCoO@m5R@`$4!ces- z`BOI3xUjQM1R{*!W-43^kb(C){ep%U#g`++Y<+P9+;9!Czrq;B8@M>5Sl2#&R&%*g zz0aP!@d{O@YasaQ`^e;#U~@2zWA>tnUoa$8@pKV6AyN`InnK0)PPM%GFICHE{xa9c zdk7HvITu9U-E+$Wo_1Fvhg$f_`nqC|Heckg4s>XvuIrQEku0&S%JrJAUo2Szi8LXB zkv_X(-3w|PZhqIoL9PKjyC^n}5hd1YB6IV8wD3hKIS~v#LvNeko1di_Lx9mMv#I(h zfx~fBP$i_!Lyc>=IAbZ1sk>_(0CQRWF1xO*(o)Bp7f~Fzarokun=EQN *Va2MsN4E9Ulepwk1zEy*wSsi6Iv~{Y>Mj;XE{86zkS@-q+N2jWW8_=vKWn z@O3&VHA`9FXx(eLmRQ2HmT~oPFWwB?8P~i@s9o7Ew=>1d|zY&z!gi4L3bn9|My~ zYHr1i<`UbXWcaan(XB@k!jQRK0vf7MJdO6) 5yt3?I@V5W1J|4?9cv;kfc__!? z0j?pYnU;ou!8Fc^>R8Dg2f^sLC&E5GN>;DpuQ9)~?Xo!2u;!lJ1zLf(e-=SI9hgQY)x@ zoZ`}!WWVVv+j+q`oK(``z&U_x7y)iP2K;Z5n-QCWd`@Laj>!DVFTP(u!7fR#RR`Vt zCS|WjhIOZ0K09typQr%tg)q$O3igyVex286WocFDIN;bwhh6BglnnFH` z$NBg)?7b86H-719(V=U1bcBE83Ng&V?IfkR`oq&Yj@$>si0eG!c{6fbqu|{%>)*ru zS_Nu4n)!JUkAA2v2cTW5*z!z&3jv8?HA?B(;f~F__w|}sE_3tAwBw5$hM0mzD#6X^ za~i2gIW`4?E1&|TdbZ<;P!ra;u}v~~qL*C-x;Y!>>Gg9Kk7eI_&K7CuZafgY=96?I z%!bEh<#@3qKH$US-KIu2z!drtKY)E}t6eN7pt<$b`|**!1RVnd&DO>XPkysJUo+wN zH8qJ{{FNrK 9h&`(a0!qw~yYJqxVb|7o;hb*2ie~d><-nF)Gy+2~)TDb+DPJ zswT1=`&fk|;+I^^pxZ>MKV@=8VjdPVy8IMjk63xnpA_0Hjv$ryx}5Mp9~~{+8JATb zW6jGcXWLGWSr=9dyr3^#+kIJ3r&@!;$Q+hcK{MaDS;2irq&c>>F!Ra$E^aDKH8r(t zwU3V75hbg&Z}$k6Jqrp70wVnf&5Z>MaF@LN4h4}XB^?~`-N4l@QH3Ec$`|Q~+$!<= zAXSLF)R`uZ3~i Ox2G;|Mx3d`ndQF=2?}u zLAVl{If14yT*R3acowFToBakqSEgQ}iNnp#wkYFiY9N*Uo9Rfc3-Zeq4lWlLf#gTd zT$Nv6Mul!ZSLk #%YpN-3x!k41fuRK;GW`WO6W zsqt)Rc+_PUalujNq~BwHB@*P#R3AB^@2+Yc344lENi?8
B<7|C0tLygGq_Bc z =O*as*7(q{IcKU1C7Id0XSiLpR&1F^ixs|nDhJ_YWTB<~_wS}g zu#{q6;cOb8*q5Ti+?ic6h*3duirg*)DXeXCz6_MBRHJRx_m-Cj;_FgU=ECNfwrU*? zj;KB-m=vmuG>-M;m!{lnuk2#ssDXa5xboVDb9lXc!xmjOV#b-j;!sJ`6UedCeSMXm z1az-_z?G0yuZC$83J33H?LLkO%h%OwoptU(IqQ2*^fpmHWx%9*U}ZU(nb`HO&tM-z z!VoO)BI{n=C+G!n*|@ot4cHlT4=by*HKw6uv$`cu#fCGFa~$j})=Rm+dP8X7T{9_6 zY_AcF(AAOXJj<6H`%GbDP4Q`ATR7Z(P4P2B`~2PIvU+~^e+Y=)=P+xeb#{8H_gb&% zbzDb5)zBha_F2vzbP9uV4!&Dd2`EeVODhp+I9@YQn((u`@ M9QLk`DYKH|#-8|g79X^5OaA{~zM z)9SVxR=Id&!1-WDG#Kf%@0LVrkV=ExfBuR70P`+`nr7-r2=m{|f*PSr!v+V#r7!G# zsE@CXYLo{DWuCuc5Ex*2F!7CUQj_$ok>=UC3uPAFu_zPbf{?@87?7L0W7}5$TfFAm zi ~d@U0)cCb?rrBj!6%Ai|@*v7=m;-@B+nM_by( z)p72K_blKikHT#tB~u8*NlR7$rJ&^4s&MT9(m+oSy=QtptteUW$70Sv1?Mwld_)C` zf$hffZBjrd*r(@6$qnZQTR!xko@(B| {PHpZ>Eqwf53CG% =AUB5}O*P2g7H5Md5 z> M zSiY~F0+p* =KZelW~RMFH|f04Q~aBfZ^L45%E>dU0=lpEilGp!FFvMl_H8tU#7;c3<) z?PHAk#vp0&r*2_!aZy5X4%W28pH*?TKN3HIpykO|#~QTnIq}vnh3-9d49vSHs$)>q zwSCX>qwK+_FD_SzTJ>h$rye&3!^4?VkNAyj&$68_*>(h&xc^@7I~qbIuN`RNf5)OO zBMf|w9YLwNxJy00C~ @$5m1!`}
?@1pYR zDB1Lxo ^y@jEX`0GqHc=B@lcr@1BHa@P3r-N-AONXo5BQ#6TSay*$pwd5W z`bFGBvgIL_qDzaRFFBRc7B9Cx=M6jNzEuyqP)w5^f8DYo>?r1QMrA4DNX@`HeoE`M zdp`HNULc)Bk`$7rwQIn^vV44TaDI$|t)Sif&8$T_I|Y}u!mN5-L;_Sj6`#%hkgI77 z-!j?clzoF&6VOE1fK?3s9Dfoc$#^knMHJb@l}Ep)K|V51*Fy-FSYx?SMctS2^4&UQ z
shQ0ESVlaDq*df=OGDJM(nL;IZ(JZ+bxNTTl9cCTM%W7*9-egQA&^p} z@U43lX>4IJyxOQcs4Cc?>nA0`s%V)8(CK?HpJ6ZwaMg3%8t7KpvSNs}N?tP4ld;KK z@aq45_eW~1!+>BD?|V~ z>N86Z>pl>AZ2n?3X+V3_bJFKIvDs3WzA|*& P!Xq~^>xHouaVyB $g_cX#Bl`o$!V`r&x9+xgL)??bFW1nyw-Y6c+VtRG$6g9Znxl5bYr?+q;v znPAH4shk+9hG-ofBljrpkw3+X?aa}3bBzz`s>p=URRL{FH6*G>M&s`1~5WV zOxWhln> Qo>^0nYP~XCwFD>^#N6ZzQ8W#p;IeV=(aze4-*U}rVuR-(qk?K z+KR%tB2bD-O6+Jt@;ZtGL>aT70?n!LxN3Ot1wHvzqZwRR7 `o8db7_qU>Ct(8hUQuS6CbRpOn2vQyW%dgB$?RIh4 zfs+nfTE?^6ED?T2@;bGuwRp{~dW{m)7L&M0i1aQHO-xlzx3U`!BAZVCWaevp5D+3i zt0420eqwMP>g{kzZH{oMnwzU>rSTTAWWR`Od-cIhqWNQZW=cwN$o=wr$bAI7@!!Hb z67Fl{d(e6xfI?-z_7mK7zb8ts!QQ7mG&V)!gj=F@km%D>WsTKmywd!j0->mY+Od(% zA5~wC;E>n;bw`JBBgx>9!n!NyZ8G5NLS?@N%1{WNg+J@J??IbgPuq3Rq+%YjHJ; 1m nU5b)qlMlvdIvrp}Os z*&O@x+ta3GCND+vefE85ND?%bBa+V4RHBXGJrA8<`GaGJKDK45G&}jPeU`1<5yS%r zdb-=2+i%E^u6D0o%5<@0dEd)pc3Ynal&K>%dz$4N#R&Z(hgrjSW!&nQZe}K Te}&*x<7AVDsrFDH{u#b z^38ZVM7wA(X`!hw9?XrLx|2IQ3-^DOh{z5hZ4Vbs<*tyYr*Y}biSw7E0|u_n2W0@x zCPM=YNK6l*h-WwT*W!2w9Fdl%NVlu%T`xIg-KModY#Jw>i|`-#Y=)|~B}yL?TN3*C zIPLua4p!N~AEKYgM(8?;gH(%(2x~$t*DqPUd~K1&=8C;YAcJmEhizF>e`-R;lOL5P z$<-J9mGhQf!#r6b9{EXpMCtChw`=Z4#FkG>4mqszFf2>;71X{MotS}MIDN^)JJI;G zyHgs`LZ+aO2Ehx Of=GjRfPX5TAvKz3_S5bR*1+iz;EXRvsTwcztPc$$Jtw zu$=CRfI;JNm8$E{eM|>GyAvu7TgF;gPH@FP8zOTPE%!LQXzlE9rs)C-7UE6&k}0Rh zT%>Lw#Y3nZki&Cz@iivxx1!N*G|!&{?TfIqqoXi!Kwa)OK72zXqqMQ{H+641POEk9 zy$)iGhn|N4C-zT8c8@~fi!)j{KSTO!n8hhvV#wa$Ed0-36X%!E7@npJdL|8as+W*B zfx}4Xw6m*G+qGdz6LXKczLg^F$ls2{#{(DKH&Bk#8-8<)|02JbuN4bP(n)A!v*$&{ zm^lt3k;4u 8FP^W>rFOFS=5IH!M~*f@EMt)V6!M9|jx5KywYY zeOoApK5`|PZU6f9eQ0&{o#x%64o{i~n=i4W<87v@HyfHm-D4+ty-e57aeJd**-itT zam4dSdH}>Fu6YIU-G0!dtXO^+DMavKb3n!z`UBNc=g(aQ(v1Y%Zp~SM^Ub4~ksG=5 zak~FmWG+tDdDk6Lf#+D!(P(sCINQKqDxDauhOZx#Pe9R3(~win^>|##10hI)Vt#10 z9@&1L?-vrBgdSS6w~JnlPuK>I)~p?k&bOVnwzyn3Ok}u?YGlQLo(6-P%+kosM$f_V zj3LAB4(IMTc h~BK+ z!EN~j$n#)UWsV#6b8{)s@MYzp>&h?G< rR0^v!W#~?3^E!7ZEG#+oyy@~P4l^*? z(0yxXKf8dE`F>fO_*wUFFwV_%Ie2^bSyID8oX a(hT*tE z=FUx2t2LT&4^ls!H8&TQY{!OXvz3ZxdzX8tD>uPK$~J~GMY-f6#kiM6+$(NzTD{^b z>9HTWGh;3cPsMPTx^AIY!?X>z2;{5Dq;uS*)8>tzWR#5?*b+}Rv~5)Dwko2v%lg-1 zA8-ryaj2qehldu}{TZ83!rys6d8F&=J@ng?%=y~U)m3_Cq0Dy78`I$s*?hUmdp0j9 z_FT^J^hfh9UUNk2_5AkB(+t!a&_dO#q!i`^u+_V_AaZBctc*8Ugg*$M!z7kAiM;po z3N5*^Hb0)t#jpJ8@2AvU W8_#P Hh|r_NE6>j_J{Djr$GAdAIGmhgM&JXo&Ve zes*;YPnO#&djKFjIS8*bDoZ0HBm3s&ewcmZAjCB8@i>RbKgVj-TTmz3Kcufs40msD zP*dd{txA)O5Q1@VZ3%delR^5H!9lm3!Ok9rc{Tv=*2|ogbcX%eF`u~b8`iQ^6EvX1 zq1!65oZOY7AHa6M_QMQR&{A-=Pe(%0#a(>fD}N*bM59E(+YA@1-%)k%9o5;U^>Z|^ zZv1D}zE`FZ0iS9EREt^Vf44PoD7kydNj5MAaE08%!K&nU_#!KR;F*#&vhzDLQ}`TL zVnXqm^THSJnjU6gc;QZ=5NyO3z`X(>j<$c`eQ=;CbPJ>ivD6Lk<^$jb0EU{Y7vEM% zxfF}}NmCdsI{WRL=Tbr%!N`axajIV{AglXERO8bJ*B>5EGf1>1DAJKasv5g#5q?+u z6Du@l@S)1vYK<2?HF0U^2+c&(CN0+Gf!Eyx&~D{xQ{~7oSoea#kD9m~`nTs7_fs?l zhnCL+X!k!gRn LiPx(q|>PU cMFn z >I=p?61ce|y*I>Jy33&k{CL!^f$)VW$@Zl)pM#Qp-MF+Cq)7aMGCVNoFU zMVyn4E(t$`<*b$QB||NIB4R>JOn5|9IeeFl6fY1w0=NPIOn0BIsgl@9q!Z r-?lBxPmc{+<2^31=t`7h-$|8HNlSuV<# z5Ye&OKvXNn>Mt-ylaIS(zkFeN0Hx4OGn+H^8j #}b)WYZcNYt#9{Dsd%XiR3aTAEMCk0HcyaMJ6u1++KwkTMmNQewwv0^*i ztNHzmvht#`&*8tn;!wr@fyOPqIKfqX_wyS|x%?|u-N}Cwo7E7-d;(zHXM1CVHH-nk zpw^)t;{u~15kO-j?f%{^2>z93Qtq=q6^3Wu@O@Dpx6rVU*#Fi(01z;4Vamsqckdkc z=zy7~GSijjTI~J2M{;UeWIU|VOuS-(efN(jTNz)AfiBBKnpG-`nws EPc> zvK|}|8;#HPbt{dj&D!7L+PDS+?2HLTwYQLd2@qb>dNPZ_)%Q5x^8Ng^>i?A>z^=L; zNS!H7ott#amIrraVjRpZR+=l%@1^#PXjFsrZGFH}(qHiVC>i|pv-BK23N
`*YU4e HPeksTn|uv&CF&+OW*q zd(cC#QoF>t2{}4nXUj%kcb^1>+xUooWYw;i^V _yMbH8i`4pYLo*p+%XNX0g{b zejdzo{uKUe;^G2na5oF5A~W;nrCVy%(bSv}#toGGXWj<@*IlYJxwz_VAC^}tU2{|4 zRuD3yPcuG!cXMnxPAu#wZ&7gWo&S*(m{eErq-(r01_?SoMhKXdWkuZ0rzm{Sp8GBG zvHDv=C;VRO3OYEO>w2zGJ?Hgb0)yz~p`l0uHqguOtxh`+g|20!jG+m>`(Zl0WA@l* za4V#+r4Eb1@q$eZ(XnOTZWowKeyyt4B)lOlWjTK3kGyjL=^M3$WAxwYD|wwqu`hV{ zwe&>Rcl2$8XX774?O8n3`Mu2ank8aL<-n~bx7EpjoaeQkIx|r0VjUj4a=d?&OpCZ1 z-4=F_K8kQF(%MZv`W4wfuE$75E$VV-o`NS-a_$QN#d0|vEKT1tkTh2=R@oz{Ktz$s zMnBN8^HCOg<8zMBl8v+4@QKtu#Fkf6&C=WNd9#coBd?gL3uP|IzXOdIox30waRvu4 z9}hxVHwPRO>jKIVc1|+VMid0dN_iA&1WE2r#+KK_^aW!e`JR2Qp7f(ARQyDZQj*wv zU65TzeyPuZUEVP5S#7ccrd}REbt1&zZcpj%-%S~x+vFojDM#dFS1#OjcD(`yw}yh- zRIVMc&%~rQj`GyMwr_cGQm=1W`S?hotbeWvuJV!^Fp{`!Z;jdQ7a`=-t{~#nOLA6v zcrI)J-1Z{>x9jEhHe57$_ySOv$02h1gPfju%02;|+cWJgcQ}B2pWJyV!F;T_%ScBQ z4DXTvFqoQ};w*B4xWFNKTFxB(rRG@Zt%-6r;K};oTiXlH{2+vh!=H9@*^-aDi`nku zh?e>yP lqhtgv#}$5bvZOlAt-mfD`6cp&XqlSmPAl3AVR`!T z0o`EhD&-cQ4{`Yt=ZXi~O7^ba8eim>as*CxCH(ViIn2#PH$zNr+7qt74q}&F2T)L# z7j3|Y#tR zy-sl^YuvyMXgvBb3ZRAcw&HQ`0O~Sw82I=VJPh)7EtI3)3X1r9*;Wzguq*Je?r@aS zXhcpdl8ef;;hVTQTk{H+&GBjR&47uGX+o0!_Rh{+%SsH;+A||AbCzKkal-E>Ah*8! zU`IdIZlAcE2}w$y38@J|fb%9e)bZu0_uBczR^=0y%RK>Nv`;&@g 4Qg*ycU?Zt2*=A9Xcy(%}}LNc5tp%I8|`+A-$ZyJF;7bP%X|H*pIm zYs6|{|4iAqwb^^}O`oqP$tfO6;tXtWS7$|KSZM(idA(Dyhn8|r&qQINrtrh}%gF~< zw2e|Hc7%GJyAWgiU~y`n_j|pvLHSNFsXYCV5sR8d5y(5kC+v71W~XQoPvsZ@h0d*Q z|EEj0{tl4bvT-&EU&FTVi@h`H^OrMd9BZ_HFd T(nG^w9Gl$o@C7q5u64?%Wc$n|NssbArM%bsq$)bVi81}=-i9rr!Jg2}Z8Nd? zqv{SR-)iJ*c+%56j-+V=#jU^q5pt*wU(}Cnh3(jRSJdQ06DQ+TTU2MPztz*L;yeBZ zqkH+j@49lWBH#Gv;wio}nC#itH&ZrTr}(F!g%*5#%_{^GdVB5Anm1>i6R5nak&td} z% &MtLz75kLQ=xI_eBPI@PKjA!7E!eM6IWu;t#x0UT zN!WiKy`A&eq@W7l{Hs4Xw$guo3_WfBTKbIo=kKNsffUv6TqHq 7?-o`l ExcM^O|VZAA14I;av{j@c2+A>(Te?+pZ zF)jFs-@FVM=61*yQ4S`1#kgn~qI>U(Z)@K09abMs;n2a0wq7^mBw!ZPa}$`vTORu2 zdiZC!W#?tq;{v+p^Y&>UnYz6i`n>f&?o;(-FRG%KI5}0f!w9m7@L{6>K)BX`bX|&d ztDvn&rA+h3i!ShP0g>L8P))%1boxI3^EJO>x6_Qa@K^9 ?lFi$Al(Bt=L$Mk5|x|q0izS!`!$oj zd`1o+IC4Yk5Gw9{x`5oX&`qVgM {C~GeV;GFAr9B~@e&WsgR4YT?Hh$f zzV!>Q7@1DJC050a2hKR-qW-BSGv(C7F6$1oEoyrOdO?VxvZbN4 crH7idcE#=9sxs`U(MHZ-vdVFP9TuE o0vJIWdWUA`$|A_kI zmAJ&&8ZB^O=H?p%? cL^N#aFO5cQyu6+5qC@ z+n1&C=S}HjyQ>p&HJ=nz7XLgm4E2DF$_bVX7f)>C*=cbc>^=6OEg8v&+6KIRu-6tz zQ0;cejX0C>hCN{@4B!_l6bq_weacpI7zUtkX Y^+deK zl+eWk>1EHewcNt0QSR`Rv@|N!3wal90U8S82(ag`s}<0=c948fg8W63ecoYlQFPO@ zkUitYjN;X$1EKKUyrjwchFlNGNhxHvfYOEh+xm|>=%0NxfgdY5YHwUN1Fi4gp(r4e zn~z~*U$W{Sr_J53Spd+wi7jU`z(6t2jr)#4 S9vR~7ydR5 zYx~s=?^^SKOOGPZS=V-Q6>>t4-00@NOg&$DQNmyHruLhQEnWPsY4{@(7asEdnDx<6 z(}A(&T(P}#uS7F}N1lrXE0U6$9YUdgU;gm-{OlHre~U;dj`R{+iO4}o_ H?(-!As f9zLqT6CP4TVq|D8r| z-cDcmNRN0=#NVaTdaSFZc2>|W-xcA1|BbLx)S1Zhd=jGu!Z{}O1`9%5O3bU--xo!? zlXE#dhqcyU=E7^eBn$iuO@DaRva+)M;1LiAhVZ{gM;Wixa>(VGE(867o?kT^+ZNE^ z+Uy7!gkrE1hwN0TkzX2QdM6rd1KxYJtd40~q*zB)myIORc=ZI~syy6mYDs2;Ll;fy z=;+oUqCI1mn`IG9kskkF7iS&_RrmjK%cCqI!ibb4Qkd+?k~InwLPmxdA~a7JBkM>_ z!k{7R*s?^n?As726efFP8!ECJ*&k*39i`{{{e9=pJNMpm&gY(U?mg%8e!tYGOz1Bi zjG=8P |{NPL%_`QjlHb--kW(UbvODLc1@W+dYx21_w6~*_`4#WQv_K_=Q2n* zlX&}tBgGh~eg Zql>^siX{si z%>|xFT4K);#s@{GKeC`xb?qqe#;r3yE_)14scJ)uDlsSxQ#hj&GLR6uH+#L_Gm*#J zT-2Xn7^3}gk*6_0fj13&p}*y=%6l_rF<32JQdw4-B(0kA$j0MJfBpN8LX(i&x#8!p zr-JzuZpw|4c~!~pqXjudrMgBb2;MAi6hUh+aDPiVJ|s-vrfpYcq8eE(^EotDRhzAQ z%Ei~$SEKdFM*PDE&`DRVd5ff1uND=BGS?E>iu6DGEyYeY8SEASrK} <)#329N#K2w}bxCsTacKAq zr7Zv}o|y(ryNk{ti%e;LRj_Gq?BcSEImqRcN?uE(zPyAK=+u@wGyfxo;9jdPeY0xQ z^la6|8|D#n!W)D25(^Ot1s%{};DC;#d3Ij9stK_H3HF?#VPRmICs(kslJdFNWty7r zXm&&-@NO88m57qDt4@dnotVz)F+$)rmlUii?a|{NlX#qyhz)*P?l5*Sv*AR*ZdoZa zd(A*xRTIsB1yXL+cmBmicwwBF;7&^5HXKq3KZlZM1rplV(^^IiN5}Isi4h(JvFxpu zbxW2YrL_@X^@*+K&Q#3p$@dP-vqWw^rk7X!j#mV3$7w1_KQ$M6(seD*cwp_^1bO_l zbvaAb_XCFIT$E~-@tykA!&CY21lzxE4xHA5oOJfvk;YNY+nZ#XMD8)Q6#`LP#ML%g zkF4_tJElSMrI0(f4uT2Sf>a_9@wfAS$^xq<`>y} Q!$LBAyU0+*M;9B;ToK;epaYx&u#J?R8~#~!hLr@wu;XEMWAPO0639%i zR;u()#jyU<$K74hUKhMv-1>M=uColi!xw+n_?d`+2Yf`oC3u_G${Vb#&d5my-bmk( zKEd@5U*9*&AAat{3sEelUnXA-x3;F)c&TzMN4Q^P_6_wZPU!`b69v5+Y_%Y#aTZ?7 zJVdeeLmX&Wsq^2A9S>gB4d2Z>&XyzBdP>R~?fr^v`F`KXNXL0x?8KeX8Sq%@8Oka8 zacOdj$KHNs6;*jvZQq`reusyBtB1kGnK lzl@_)`qlI^v>&=A zkaKS?q~sBvw$jXirHAx=zUuWE>;~tCr?P-7*jzfDdNP2=dz*Rt#c0CL4qk%5M8toP z^zRHvBFg!}SH;=`)S_^za2pA5|Io4P$L`n&g&kPPMk2g7vftQf2=p!`IOkUqvvR}x zZzaQYjk}fEmaGOMJkbs75mAK9@R6>))n_jR;tkiY(z6Jwm8o~uNLVc|FpFN`@q#MK zd17*YhBlcnly`OaSD?x!4mBfoSK;=j^1OK1hnk;x6|}cC2l}4O`hKjuJ*x|U1;m|J| z5E{#gcBnjilj@qE-5DwvqUc^wQ|MCT?SqZ;?~Q@h<~rhC;axTO_RvX_)1zLYT^pm> z#DO3!Qy7qTIwr$x%Hhd{oi4+ypj{d7-;WtV*k&AbsOZ78Akz^<$!E_jElqcCuhOCV zPppv&Rn1v^$^5T|a_q{Idj<3DG2gyyCMVp_>mU_5p3?POd=s_eX+p#5H)cf+!$%}x zb%1Fhea{A9n0{>u|IKQt|0 OL4FO*}os&D^S zA6>=P1syif^E5!IB@Mpc#3vSC=!l!5o{lzZ`JP7SEO)^^91SBG Nlh6S{Fe5)?xE!|SXl%+<&}o!}ArYl$ zdR>xkXWMh~+DC!NZ;DdGRCyl_%4GCM-h<15BRl@`jCu`_jFr3}mnSVUAfJcp+>@sM zzOtEkquhEx&0}?mRk>DU<+pKFa(Ai(BK}S4z)jm#zMp539!NjLIj?G^su&8)q!A)( z^!cC%nNuR=M#Qi-@|6XdBoF$vk4Z*afioV{J?w@f_2*PcUd_YkCsBdDLieBFS0`T< z>#;bIqf|ogS+c?<0Se{6)4jJ7e@W%0kVnIa6kXES12K%W?1pf}$m;4k>L_1J;ZQi) zs;oYjn#2^yQEn_7U8U>1x8E+(|F-9HSy?uFOicSVhPjo@hqQRX?4U69$^tXnF(GXc zOcel~-Q!rv{?5BOSeS+$(&dVhkvvNyF8GZ3FDv|wSqWjxfe8&s>+1k?f*_TGZs0+~ zhBT(Qe*! p{6up`nqgqNz{Ji8Rev5*V zuqIR`?|nwG4J5`MN98AZH3o}CNGu4Pz|IB bOFH1o3;;8;lCfh#+oLC5&xM|li z|Bj7R!hp%8W3yvOIJs$SSa!<>1|u1<%5mVp)b`CAZ|8O= tpn3=+0GS(e#C@kKleL18bRfHooyc+mC;U_)3--vKTOb zCzn1DMyPnEw>0qWbx76ZEt$fYE)yk9Up$lNiU-gsk7&uSHlZY;E2kE^9Nm^qIW-e3 z@8W0YC53JkJ+ob_&P<`jdpj-$v^~}~l^^d7kn+Cmi9(RvHbQAM15Td$;%jzFX&}ey z2TKcd?Fvw=a=b5Bq?mJWWtFk;V{ch*A$SJe(8HP~{HIzAq!#SC69V9YA9P!33rKW) zxwIb>@AXfS(M3fSnYuqmowADs+o#32Q(Pt5Fz%ujBQkl@XuRTOD3xP#Gy4ezHAF_7 z{UF?_xo$i_Zg57OWrSPq&iYceS9J)aX`~G+NoLub;8|1Wc$|Q*n_$K26r?afoBG4< zie!5b8UTE1UNH<(``~y8(v8JfG0Z_GOtjh %n8K=^7l$6xAO^!|hL=rqAi9lR1c_Ue;`--zd@ z#nkcR8yx;sJ90?3Yi4H74i!Y#(w)u<{`4I75!+6ox!Kvg@7A}kU+WawPD$xGp?0u) zYj(@inCOXUjPT*z9=!YX^-PQC#-V2;{N^di#B)M(GjNp;o^+zF&r623N5&@)#6wjr zR+NpbTtNSlUy>9OO{Ir(O9hiLwF$)uXVNy%*b0{)P#e6pDocb8TQtt*-n{YccKfm2 zW-%o~%VL9>CEi|UMZD|c3rPhZ3kWRT=XIE~*W&4B62RyQo4tf!kQ0j{r>f=mF=sE? zUI4?~_+w9%2pN^XnDKtnoM?0c;fVM&>^EagqZW{@T0m4SSA#|5w0>c-fH*^o%fU|R zvMQtL3uO;dOKaLiVQ>)qG&F*x=UaUJ{vNx7pHFXOyY{~OH|b2HOV(s>+%|Gvr_IX` zfB19wz3laYh&vCwfhVVH+ar^XMW)59K;b|C^Enh13!cJ4SQ7ElmsQGd{4OR4|K80` z>C-UDabUarW)QDz%lsTrBqki&2l+V|O|p@~wh#q)3B5fs$?vO#i5?~c5o_zCGPm&5 zYpRTV8OpV^%>iKP8p!>92Hnv(U@F9KAv!Wm*nZ8;r+;Cxz`s6E+nb6+Qt7=iQ&O@K z;xJWnuKl};d)(Y_LT&4|hq1Bn#Pn~3op6JP?LY)qr!jwwiRMO^%|5lxBk%mL89dGo z*`df ?UbtkP=x@ID&^=fux71b6bz#Z{}6rhrw>kM4yytYqP zG&V-hf7ISV q6nFJD=hC5>o?{5)d{K;e>mR7220Lz#JVs2i zibMh1NPTSEbk=?lFN6S9_Y y`!TtI^cC zCsxketDCym{$-}xc1jw+-+Grv0-y&{-|$~A`Q#@4r-saoIBF2n(}w*29RbV-aX>Jk z`nIEE1cvP3SbD#`!GZQd)P@J|ci+PRT6Odb6iazVjpDN3f3iXMOa{maiY;=60@sHW z)OY&+z#9+CgR}dG{eHrb4tfksHvc|TJZP(3VXNG)K@hm7EZQG9PmcnG?C zlP{(