From b16c2799e0fa39f3a0d3296ca3ec3de43be79924 Mon Sep 17 00:00:00 2001 From: "Felix W. Dekker" Date: Wed, 6 May 2020 19:31:25 +0200 Subject: [PATCH] Migrate to default template --- .gitattributes | 1 + Gruntfile.js | 88 +++++++++++++++++++++++++++++++++ README.md | 23 +++++++++ package-lock.json | Bin 203640 -> 331605 bytes package.json | 20 ++++++-- src/main/_data/site.json | 2 +- src/main/_includes/default.njk | 54 ++++++++++---------- src/main/_includes/post.njk | 9 ++++ src/main/js/index.js | 17 +++++++ 9 files changed, 181 insertions(+), 33 deletions(-) create mode 100644 .gitattributes create mode 100644 Gruntfile.js create mode 100644 README.md create mode 100644 src/main/js/index.js diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1a6bd45 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +package-lock.json binary diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..8b7e202 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,88 @@ +const path = require("path"); + +module.exports = grunt => { + grunt.initConfig({ + pkg: grunt.file.readJSON("package.json"), + clean: { + default: ["dist/"], + }, + exec: { + eleventy: "npx @11ty/eleventy", + }, + replace: { + dev: { + src: ["./dist/*.html", "./dist/*.js"], + replacements: [ + { + from: "%%VERSION_NUMBER%%", + to: "<%= pkg.version %>+" + new Date().toISOString().slice(0, 19).replace(/[-:T]/g, "") + } + ], + overwrite: true + }, + deploy: { + src: ["./dist/*.html", "./dist/*.js"], + replacements: [ + { + from: "%%VERSION_NUMBER%%", + to: "<%= pkg.version %>" + } + ], + overwrite: true + }, + }, + webpack: { + options: { + entry: "./src/main/js/index.js", + module: { + rules: [ + { + test: /\.js$/, + exclude: /node_modules/, + }, + ], + }, + resolve: { + extensions: [".js"], + }, + output: { + filename: "bundle.js", + path: path.resolve(__dirname, "dist/"), + }, + }, + dev: { + mode: "development", + devtool: "inline-source-map", + }, + deploy: { + mode: "production", + }, + }, + }); + + grunt.loadNpmTasks("grunt-contrib-clean"); + grunt.loadNpmTasks("grunt-exec"); + grunt.loadNpmTasks("grunt-text-replace"); + grunt.loadNpmTasks("grunt-webpack"); + + grunt.registerTask("dev", [ + // Pre + "clean", + // Generate site + "exec:eleventy", + // Compile JS + "webpack:dev", + "replace:dev", + ]); + grunt.registerTask("deploy", [ + // Pre + "clean", + // Generate site + "exec:eleventy", + // Compile JS + "webpack:deploy", + "replace:deploy", + ]); + + grunt.registerTask("default", ["dev"]); +}; diff --git a/README.md b/README.md new file mode 100644 index 0000000..b404219 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# Blog +My personal blog. + +## Development +### Requirements +* [npm](https://www.npmjs.com/) + +### Setting up +```shell script +# Install dependencies (only needed once) +$> npm ci +``` + +### Building +```shell script +# Build the blog in `dist/` for development +$> npm run dev +# Build the blog in `dist/` for deployment +$> npm run deploy +``` + +You may need to change the `pathprefix` option of Eleventy when using WebStorm so that the root of the blog is changed +to `blog/dist/` instead of `blog/`. diff --git a/package-lock.json b/package-lock.json index 1a7325246beb36289796016b9d114b8ece5099a6..3d9c29f63f745affdcdce104d48e0fccf9962d86 100644 GIT binary patch delta 69886 zcmd4437jNnSwH@%o}E2rcV=hrD|_bL?VYXayL+=qw(tACn;EB9=jS5DaOP#)ZB zQm&KxlrL;8BHu4!%a2#ydfSf0tEXpIUIEXVUHpeL4GekbR)(S6t)E%s&rbAPeD6Z& zb$zz{EW-@=VN0muQqS$h4Kub7@h;!IU%%ObeWyeix?@1ke0Vk!- zg5jJ)dHnCrFm7uvZ;9y3Hol(r=7m0-Ok(LTNxz*C`t*Ll}nr(Qo;ZKd^VM%18M0wpf6d{u5y z3l*O0Q2oxS^CwQJ1H`8GpIN_ukCfPj@}NUi_$oEg{p6bN(66%~kfKD1OTAF?E4tg( zcB{2`veV@13j*KdItvY|kK&B(w$UO6);#m|otNGKOS|E{xxl+8Q9ZN&)QkLgWTF-5mv zd0(_3NX~T0*AH15#y}}m@ish6my7x0&M-$MEU9uhH6-()n8_M*o9T8k5bmWr!G^ye zTi9&AmCZ7?LA}}$&DI`PZc(l!z6c33FOwHh@s_R;lt;7q&3 zx6CHK-Dq0}u0-EfjG9=7t82?ga}F=nrL9b~X$^AWxLoQtdiu7b5ofw>3xy|yaJm_( z4XBPlx;QvJ<(RwX>J3~3;r?%Lhf2i@H4$C4>rRb`&c6O^mO7FwwXz#4ZOgOrrrgD9 z$i;XZIoaIp(AgqokCa3?FUNuzzSzd2UZb&DkLZnE+E`5*<8he|mPAw3>+9CMWIN2~ z+JfW@JN;6s>Pow4G1x7wKP&B2pIS58(XkWZEUi9wht~94qNkd~Dlfczd^Gb7PCWEk znKE3A=bDWtQhcxBFG~$~*^=mo>=C{qR11!9i;!LBg5;!IRyu%J^WheQvqQ-l>o$7j zW;P;`&34A(FZnZ$c9Y8l-BsF}h{#b(U23f&y_?q`^(vl)4Ck;DqX}I6FLYPg@VcyT zd0NqsJ8y6L-GsdpWsDS8VGLvg>(SRsMBa`bcj>efrS00<-2h%W$t2fq>e6^8S?{BdF3tJw z_2)d7`AP5G{8NrCh)2h})=u zo2sU(Vz7!gqVcMc2adxPWMwwE#VQ(1Z zbVx{3oV8ozdZr+swB>tV+1ZHLy)~MZ45d8XZWzfrdZDS?yR4pUynm|X+<sP0^Ny^#3rcaZiD4WH+a>j32zXPo3QrGb+W~-HgJtP;ic)dGd zhrvL_;i>mC!)!Jaq5An=$1b}w`Gkq@3?z%g+T@9dh0GI1f7y_ti$dS1CqlAhXqZdB zHr*m^GV9}-nbpT&_F}&ySH^EvUi$Te$_aA+T6xo=$_Ar-WeRIg$LK!HVDw>m0^V3| z7`5bjIRj5i4w_`G-NZn0*j#wpYAGf=U7RGjHkY+|>|~k`_zHIapy96*?r3cgjs*iQ z*_opUrcP^EwIrj_V2rf&gk`GM&hehn1X?^-S9igD&UntKJhgD^?$wH++^J2Bf9*c1 zcVYDEpXIUpOXXxM-{A#UCPB!yN6c&@bD=PFDzc<)!k(CzRD7cwi)WAfO zbqbHx^c5)@a?;*vy4Q#gBF;47<=&b7O* zEhR6E`M=s_t&Xg9S*1#=z1AKB=miS*>m~oX8(pW6^9kLtu>yMAnptXZ1lBU%YWO(b zX{M6!ns~FhIE=>w-Ii1~>%ES4x=mLc$(kcZ8sc%>74Qwr@u0&{@OTa8DD8`xTbU>| z9FoC&HPH@mQiiYk{jr3;nMxOHeun-r8qSaBwf{{Xx>hM)VtNx>xYlqRF_no9hu5r? zdTy6)YZlJB>&*)jYRbB+4J0sLZTPsn+DV44vsNe9VD<56IT#_DJQKIE6iG9~q{n7x z@>GkfCA_p%G*fY(+-A*1w<+gJvc|7io32NDnPSe{>9bPIU(~mo9dojn!K1-qCZ0)9>rY?xB5fUO zm}u9BbjL9>di-wPo%_a(TpdQJYM%?BdZJzb3)5%hK-*O`BwV=1-p^Vkywh;ix^ zxsmaz`EL&sdp7cjDlWtKR(V+$BgQQ&o>=q+oo*U^<5zWa%9~9o<(OsHJ8e6Z6Mw!5 z{rhKhs$2Io+VMCxi@vab>Y#GPx(DeFOdZ|8`Kr8N`tq_phTeAt+q(Eg^FB+Fe*;#`B}OPD+-MZ)^i3UN{ZN-EThlq z8$+74fb&MQQ#IUBbkun_+mgcOpf%0f%pHmv_`5#FP!Qu%Sqeu${T932z-)Av^rT%X zlo@+CFBI{zrevo=7xp2m(H9^I-mD3)C4h-8-nm#g-D0=;6u_Mj78Z1YaBxj;)=>)1xQ zMV-2G{2d1s;>ExLb;jV8%8uaa((-ztjC?I#c?y2)Y}~bo(h{yO}lqk zH5$_DW+n5IxNR%y{BU<%asUejaAcKQ>c>545BU8!T3{l z^UzQb$W`M~zGnU63ZY&9q;3a#$N$l7Ui`YPk4;dT;=J!7`r&iBd(oL8knrEUOLthA z|JYuQsPV7raE+cX{1mnkJ)?j8w(h2PU%_@Fy{L1b`(D)@MxB4qjn2Vu{DW?z?)u(HT@r()gsdgH(BX>>dx|UM+|hUz?{qvYIMrOV%(WfeIME?3eY+*^Nj8(U ztj{3@6Ru#UT5dLjxr&P?Oo66}j`o{%S4XN=TZPoJNZ0t0aOaK{7NflP!uK{f>x;jB z*QV8>DCOz9pWUFd@(%Yjy6gMc4C;OXn^W0T?7MrF>v!puAKde6tKwN|PvuAc+mwqh z+R;lpb(?olWTm05gea1O1@%HbMrU!slJ0t(dC_MGd&_b)!`Ff--Y3`lUi*4M8+C5# zv!@qoO|FVAyia#4N*HzLwRap<+ZNzos=xfEl_vDuYw$i(&l~2`4ZV+%9YVJ?i1*rg zp6a_AR_~90pVVqrz`ux||JkLt?N(bJ>WqCG4;&5VI~rJL)l|TnSs;&JzJ+ zxGWYt;EWGeDij^{87z9cEz)iAqQMxCB~pQewVt61(HPUgtEQ41_m`cN)!Oi}q`T&I z2aV=zO|Y)oVQnw?ow@@G5uR7>e|28lhkIO`l_Snw=wEjN(ZWE`!o04CKDc{oB^0Rc z%uCK^e#{mte_NkXo^^dmOAkhuz(c7@w6=L^v#$>F-eU>&+ zYD*5;)r`l&#RzM4xm#}D<&Ik7j!=!trdwPx;>z@k)l66~&k)?)2hCR{aUi!E=t zIJC6AO>oPVQjQ9fUS4BO1WlK@bF}nW9XqC6dSr+4QT8ypDr3`gWUDE4nw14L&M9`# zcV55_qUXPl88@l@mB-(I+Y}5`!8)#8+5><{w7=T$pQ3g9mBjv|*l#hZ4n!RJE+6L>O{#k(6BIm=H;Rw~0NWA5CW|>luqm3rKZp%=aSi6^C z);`yH-`z08?aHe&=QPHzM0{V^fV36Dzmcj1w^Tm)AFK33t#NPge{cM_Y30J_wktbA zKUn>}BjHz99XHhf6t@4Jww>sMpTc%)LiZm&h24f85q0~~*+0Q*o7ABFXg~h+e$a}( z^d}e)_)%<=Dzmqv=}$x3gGVvTH5Lpc49Rxv^=jnt$ctl{YE^EECIFnUPdOghtjxt< z7~e3X6Z^5v%2eW4)VnCOADdCSXOAk!QvZAP1U9FyZ8YiAHQ;JL0QQ=A?SkUSG&bn> zfsbXD<(_5nFS2pn1Tmn;Z`Z}q%g^XGUlV>`_l`B1%3TQbm?TORuw4p%?``PDQOu2Q z{DJN>6Hfqz=B{hd?dK=IyXd^{A2(F~o~>~8a2&@&1!q#GN?nj%9lD!iHG$k%3bSd_Gk*VO<(2jxbnyu+phU#8st%?o z;)bf!J#XBQc(-0!wl*xvXI`FBc93VM>c9aXtsTQGnpL)^+=K>gvf76Q3)p0u1<@Tu zjPU^*>a!%o*X#YLNU#leLy9|+{$69i)nwVMj|MW%ytOi{L8Mz|-7cFL7P7Rb>L_NL zo;d?`j)lbIx=H^z(wmxE3L zR-w!$*-EOjY6nL`29_AjzaNh3iG5S{ovX!+MR9%~B=Gi4OfZ}A;3;p}W-l2jzRHk> zWN9$)GFGclX{IU(Yg*(Pk|2YojvsIKg4JR~ba|}Clq8o^wr;!HG35sZyI`jK6xkWF zskG4Otk2iAMg2zgDn;b!HoS_N~~K#huJQt_(s6u(QgA zFKt^q%RaeD`8>OQ@kQzQDl&Lspu1c7#MfpP7vzLa+5U^)Tyy%-)h~e*iM^d2asBJe zj>S8_G%;!AZ?A4ue&#QR8Xr{e{@}0nO}sxL&n(*hW-s7dPH3%^c4AgFjI9SoZ*vC)lH@XWgc?AZn8(UE4VylEW>m>XbM=2?jlFKYh_Dg{XNxW!_Fm)N`K^ey&om# zv4h)BffJ+wP$}SHO8e#G+bbdv2({24r3PBa=#K57y22Y(NR-s!!8p~-Z0(!M8y}g~ zG^tBJtD9E%&&??N4(vsje;(VfTxYgyRj02$dgPP?GyK+xbs4>LL?7d|8nvw$G!7TCLcHSYo>;;H#9R9Ytz*Tnwpfy z$Fl<9xS}o2<8zyF0`FEWQJxWGXT_A#M~dZM#_4cciWP^@c4Ui*cC8i`^2T^s?iDN> zlYwPsdA}(Ivme_GV*$pl&2Cva9&hR9`z_}TTGaOzbyK&fn<`4Aa?*Mf&Hn)~t;-*P zM@+0D++00VQ9>s#VtP3ILCP)ayXApX7!LGZDHF?6oU@wDOpSM*! zZmO8&T_vLA9+`?4tu|QWHz#7%{nFt67Ev zaU8w$HQo7>6Dz3RSiQw+3&Q_?ekOBoZBsSWN-R@(h6x+-)@-Z@wp^f?t65{rdOTQt$L_M+YypT_bgR13Lx2Cqq(qVQ+j8P zZv+cfvIa;VOUP~Nd3u3C&1f#m@s((j#$e~hc7;ZmCbVltw@0}&wRLNc)1u!Rb2+rH z)~weD3xZs&LhNJI70&0Qx&7$Lhjg>3`W|c^U6OT&U{25Jv3>JR4zR}ye2*K!U`Lu9 zdP0xwRN45BQ*2X`)PDq_iLTs>9YcR9>u%Y_@?8xIUy((T;ySH?D*h4vG`3|cI9qG2 zX1(!F`-#~mE0Q&B5Jup-*!2DxNfMh{gH@9Sb28U#%K$8HwkVEd73cHErcVtFb`C{< z1`DAl_1F&dZ#OWNiSJ!DZRWw_PN1jHV*A0MG<;V_sAf$rEX16tq|+4ab@g<{NywdS zE>{*C`cO+04ZbcxS*(8l(CLd8Vzw%S`?^iileb3#Y}jJ-v?>8}K4Ijn^`N~QGk^x? z^3{1qPkCYX@LFyEa|qv zKqud>yBp1K*Byu0z&W(->)2^k_1UY=XS+IUpe*%|^3Wk`PIRR4(x4#Y1=-Oybc!uO ziUcLn3_t$sUG@ug~Yhqn>U>kT%h+;RAcm{@nS05-OCGsecC5h_J$9zS5> z^p-4*zivL@3PUiT8T8FVQ{YzPL5Tivc51Z3uESHiG1Kx2XGwF`pCt2%fW^Va3)v#) z^c$%jS4pPLO|#Ez%0P^WcSiM+G3RlzX-7;7+x>zk8WG)r1S9z}wuUKe&BXa^j57*l zTZ%9A&B`mC*ZC$F_q{m3Y#&({y)QX+8;K9!r?JE1phM!tGw2ha#zx+YN2HCs7qb<> zrnf5KXHlbQ;Fma|-23Wo1-^aLM7yeGukLvDgNHSi6AgA{5jPF$DaIG*f&o1UW(Fxa z!N`^MSdMylEy~MZm__@a#tv;^NnwF6(<}aA^n5{g4kBP4^zlz)`_UIaHVQ2rskw-} zfnyu8K40P81Id<HCtct_9@YAbIS3#!^$U*?^e=t`&2P!T8wQoPFljMt4sON%v%?qK7QeK z?I)hzq}+VcHqvOm^U7D3N3;0PU%9xvoo0x`ZC||itG_U5_p8qx$J=I0eY`w~NH~TVD6_g~m?h;T_J!kL)AX-b0Ugu&v6D?`>PW{!i@cn_CYo zM!!{G-FDwaMd;2d&mO!BT|BMZqw8{FcK@0lm>!g5?h@4Xk>uDp0EIbCT0 zcSgHj(VbHI^YcKbr{~ocHDN@%1t~5H35i~6^qCG3<@S&qwAfH5$HnRZF;B-OyC*?* zg)#uJL>%;hh#fcj7fNHbfzS5!D_jCa{tP>kKVrl zyWU>mA=QbJDq>T^d7gaqsq;rC+BAY$=>q6Z#h^P4%BIEI_BcyEy`$+L7K*&ZPSD`F zFq+Im^Ljj2B~<0+*H&22yKluR$}i8|Gy(w3e-r=!mw$9dncE3rh)2Q8bZO^G;KQnX zf9DD143i*88lNi)V)6e9qHu@w`>+hceQJ zFMd!5(V0u1+=6}w!#0W%Bj`jtR@CiQXN@8j?1DxrJ|3IDfQ+w4nA6Hvc=nqAzR@JD-(lvxstRs)S(H3yk8=*ekEOmm6 zsaWZ9xS1)37~CM2C%l|wjga21(DfT?L?c6y_Exhc^74Rpu(^uSpRZQDC3`%= z``NV9(-PgQ9fI2@47wGM*n#dL^d<=+^sYVo_nqnt1gffG1vCytfGurRZE3_$V_#pE zpJ@KWI{exPHeA%R{9V2`NbsTt+6{pHodXaumihRsZ75MQ%x2UBL{sgJm^ZPzaE zz+Rku>NQYN{p*6m&?DQiEy{83;I(`Az++bh6?eiiOFTfXmRuGH|A_7sB6dujM>qCj zn{J-C1#Z95woLYi#${J_DasV%c!cp8Y{{-W(T)=Je$PJ04x4pnycAF8(}B9f;0suJ zF>UKsytJj7D`lG1n6U8ty$}1%og5gcTt`|pCFRD;cbyW-mnM{@BVxiZmvfQv; zc6uOVCY>+#i!MBAA4=717P4w{sb0bFiRRg|cj)8{Of@BTf`$wp&iLXHb72F|gC?W5 zkDyT65l}s3hfdU_g`U`i(81^&FOVIcUGf8}{wBNPZ0wr>yLDvv5+moIYMAa2CrnP| z@|zFLoDyYj0ZdGQI4(mneqx(#gy%xA&R^VM50t~v8MNigfJuAX0qp->bx2V6Aogb) zd~NI#r7G3NibuS8NM}E?8HdP(-3d>jmJI+-f=@UiLZHYSV+kM03Z$9Rw0!C)w-0G<=uF z8!e-3j{Ac&DNrC9mcs3tHMk~hGFJVzvsDX(PqcHOw7pVtP_(>+MI!(}czqqEWkm2s9|q8P8;+A-|*5Y?kzVy7t&!zCXrC~SL{A4hdkLIh@P8cju8|11rYIL$>O;e55pwUeh z#Y&MOvq2%UdYU^|)acRKR)d5)PL0PljtY*azYUba(OfmWE*b}pboX0EzM?g=zd`A4 zo2iJrBrQk++0$Ypm=!&1(cKA$X56g$R3@$#tSXDkQkfhCwbLD2jV^lz^`V`x2vOkc zLGWE7mV&3+&!zH^^3wOa3Z({JG*{Y@Vgzac_}i(PopmKxaJUNj z)e8L_2T(vTlSX0ArBI-d(QQ_){`RIR)$;&5s$AT%eadpqf}A($4$L*6N(MmGRb37O zRBCKwXRpz$G_=)&*cliw0E4;+U)rXkEl;7=dqE(8^GNx@v3d0I_k!m@^*nv;y}F|E z?l(-@pqiGysUi*pL_n-?lLMD*SFt`6@4*yj~7Bk2`2bLybT0 ztu|}5CIqB`hrtSK%W6TdT*eMTjAmZ>eRkgtq0CfkM(vJC!CZR~?AVqaWdL$6K!Urv zGTN&q1BfcPd}h=DZp;=kcy#CXj79KZLFO8;nJvf|RRcRJR$IT$O_fT=zSNbkED*?P z)XW7oXc{K;?LI>}EG+9aa@DHjvzjb9J-?n3p~+QrWlpzwW&-VsorReK+G*0D;L0~Q~=(|yLGqYTt5^k8Cp@sgqvJKR8F%=X}}w8 zxV&zlL7TdA<)uxVq)xSo41L|P*;6dV_ePrvP(ro53MyU#XPfW=a4kQ%OU1$6ff8Q0 zcx~4RBm2Z>unFfFxqVjEuf$5WE=7rYi`cGIgN~kwOq6YSe&EHq zA}7fSs!Mu}LrYP18)X~rA3~rZERn>Jw@Y4oJxP%%6+CrL_Z58_a5NS;$0F?=KhXUx0H(}S7jSS`Zz4OW!?%RAVbQJr8NjpRH z`2FPAx;YFz+STpV(f~f$g^;kifj{hmiwuH7=zLE%>9crOPX|zB6~Y+&DS$A3z6aWw zcKO7cbX(BB_W+3Z#CNf+=xiVQ&Hn{L%8{4Ks}Gu02*1j8QTb@eC_lt zDiU%MP(7^yA<#ny;aPxo-#NlXs1!Z|NQ|>Zm?RN23pJnEHRcjklNs;UBBC$Or`T4J zHpO!mqG_v1j3624Qa)^8oI*68&p7!odxvjC$N($?(*PLgBronCaB$pD`l4k)v(7(9jCF< zuD1sL&ahif=!>*BO1HA&y54ftBts`|!#2Wv&aPtNn#@} zEOKHCnKoI+V=aBn35aMtdKsc4z%dSunn!BS@@EydsR3^Z+t4m| zjlJj~Z80$6hQ|<=s)bP9l22MY4pWMw+NpjPlJuEEuG1DD3?HvGoX~G5!b{gbJqYM_2di_Gip}8^JTfQaPAx;jwfo!US=Br$gm% zN4_0#*oS>cm9;v;Wx`1-2(u9x9nNU0MXP$enCwmkXD=y z|5MNT4{_|zH`u^wisk7hdf{EVn*rvGx$ZooH7tl!T}!8$xLUAj&Irccb460#U=lK! ziav;74pQA-qiu;<+KEQRnuyXKE5xDdzE;pu9C+$2J<;vAExABB8uzs$bz7sBAF{GN zV<{Pue67J|f{oyh0T*x8h9E6y+UyAxNP-9)JAF_cH?)qF+HoJa(r_bcG8WDZq6R2k z)Z}`FQkml&zCqSc`5Jax*liD_lCGq`*{TLgWv`qXgK9#i^2}}X%KV!g=ocJ-x>A1O0~20wq=L2=?|aKGOu6#@KVA#TGTg7b zZSe=6Jus<~YTr=opL^dZg8hw8?onC~sTqyvx&iy%n6ugx;*ZWK!b{t)LFA%?X^`%3 zd~)X6aTwDwzcnlOzU8EH#km>%^m*)~TU86NLRA+K_ZHnPXr~oGWGa=O8n=rSIK#WD z`b4d1LNDCBgz$6N1>?}G7b7;jj(djDKs4hs4@)g~oyt{1wt;Bv54}PtRqXkSqQB{I z#;Tmf!-cY`x-})Zm;qxY3Plf>4|XkvTrJqB#r*R65_3cXfN8&DHyBPVFAf%JBd?SS z^@9o~Kc2iUwG*H?OK#n%@2TeTUGrM( zPTL_Qe-FSts$fFTd=E0tCUyL4_?;NGvg6lc7qB~5F424e7GcL@5ZwB`yRh$Uz+ln! zyCCK5%r_t$`K6bSp&NH&zq3Kl?G(hZq3)*yj{HX-g)|QpF|GQCk51gsC}^c0HTDn# zGEeTrL_-`;iv58UG=K|aF1@}Mj5`a7o+;s|0B)gOi?+HY zZ=uAr+aZQ-w+q4UFkzvFsS=&nw-R}}XR>4qxXIhdCVa(m-QrD|L&dtMXC??6z6L)q zvoaB-^+m1h8ccO*ZZK5LtUUDLJtLtrZXRvJc>b^n$sd55-sIr8a1F$py&nT(12S)xEx;89HdGzNFX+ivSS1;S6kw7e7jRFABM`cW$n+|YB(%QdZwY#E=b;Fq}c1{!VxJfM(fMYNp*c; z#U|2MM!~hYK6d{2s&+N9wz@$@%${TLn$gdjGkl#3;Nh-2n1(#?tQ6qvmPW?GWto28 z>2P`TeIKWf(+=KVibYu5Of;&kdO9+Y<4sl)GvP=!>gB~G)faFwk=&pjipId#MibEU zKg2epd%mKZQyuE+ah#_5RE30kfyG(vlR9v<1wB`S@sibYzcR?@%+@vl<-2LYLS(`n z!qRb>J7H6x!uo9BnyWdh4UX^IO%j#ylzSW$W{sPr0u*);`G7O%Yljkes)sveZ@FMK z{FwSrmiZNzz2;!DDz8jKQHPf{Z5{;yRln;tQ0hikT0YSZPGA?*_?|#^pmxC1*zqlD z4FD3Hu#bEnJHB1@6qBt5s^9F4u&exEV4J5XzNQH-RkzVmeJJF299?=3w&}6I)!AVo zw7PxjA8@`dVKrQk6+xSgfm*cQa5TeFeOnZ`?kwonGZeb9$RbY1+M) zL)fTpN{w#IZi}PhvAG9%t1QL}VZ!H$hk~tZP4vVXjr1xtvstAgTDybvJN?-vBk? zkeXS14Kj=Ot$FkRm*nF)Y;JX_9Q647)G^?pkjFhcWxsj#O*QL%P0NC5IbqbE^^z8Q z(i0(NPpl?D*$Rs#>7Ye_Ak*j>OVMha8Cd)+gWJ=|Q6WzvC;H8ye%}zY(>-II$&W35K&mN#oBiCL1%O@cSDxRq0@5;Th41@& z4=a&7W|ga_w1^PS&bg9BYgk1k%nv41VtPJ^!sM_va}RW8fhm2yK(4N~skH?Qc9-t(UWL+7;} zn<#jM-u`i@g7L^_M$2YZDfecH2)#ZRR>957miP+G^m50yasQb>OE3%d0C>| z;evR;UNZ`0*B_19L8W6`>2SQ32^-V75bLVBs9caXF|i&Y^?LQ;Ak`+SmP{xY@9|Y1 z+vy4kDxZkqQFo;#=Y52CxKb8Rqs`x}>;W|JoR%q%-e1Cge}W~e>Eg$fd%v{}@o&Ih zT4pLE_!hu$7(S&^LTSSE|R z(U(l%4t#a-4&~}orE7lhGjy@w5^F|-%IrHT+~-{*UNFprfVjHIlhI5LJ=F6 ziZ+cztvz&_V=2kutWoW#pGs8|O;az}C^CJTa*_FlQSA3ffwN>}Q?MOh<&UsW^PKud zaL{dKNrqa03r*Z_X6o8!>>=!&(tGQ{73)o99O#FiRl%xI%HZtVCgMTLlfONUuKYQ6 zGlY3=SCxP*>cnJWK{5DGqPJefE*x2EkOrIzpP0A;odA@16~7s?M8iV0p6{4y&X~8* zXtBW9l0wwoFK#F*)fAkq$nYBGQ$KA%pJzsyEfB$&R_eFSJq`1ws#?{mS?%L! zDIkzNu31$odfJJIzwco@4Nu8Mmt18%?=k3ULUfwFgit722uf%8sWY$R%f9B**6LV9<%Ahc^;Mqf4xxIMNkvo-Bv$E41p5D8Fcdb&;M7q`JldGN!! zeQME|&0Eh^sTwJ_I_PXhcU)^iZ~Gy(L-}|Pj?D))q0>e<9Gf6v2%RWl`)6BZy$g+{uS2nxku$QB@rxM`W_RaUdT){>>h z2nVM*3g3Nc>cZ_4jZ2!aHp=CmOO0vA`{!8TEdx62NvNb#IZrHewt zYvqe&p<~gTWWpNCGp(|eU}9ZUDa<4st|2b!4bi-tjPmKE(Vnnd^oC-^W?Saq+V*Ji z#4)B-O|3<{O4zN}{_KA2<_TYj%EPYhxrD9CwAh#>p_j`W#{V{}k#l|o_Cc5H*j@A5 zwYFEIPb1J}pNbPW<6j0*OZ9T^YjnN6Zq1676T`y86CV|QyQ z?NF0qJNlPTKxqEie}W0Ivw+S9xDbl`0c1(3_3PgD2iUsx>)>&Fm8Z@IW4Bh`ce zW6LKU{#?6O91QyQcp8sbtzo{e7egsHUXkz`?yyOaSpliS8U5B}$eH{RjcrsnNE`nv zAI5IhOmSof8)YAidjvQct^( zdQ>*ih*v#*$roZ;jJ=f0@dIPI6NTSaiiqn{>H6aQb>0JQxR9xE66%9#W8OEv8UqQg zM>Ru2H_#nG&nuv>-~-@lD*mTEfEt6K?xBwkR^fkCTOB<=r-K005FnCQoSV=ueIH%` zI@os99fEWJb?~3t)$~U@5_am&sJU%>HLeLYD-SDYom!&5l6S6UoND~Yr~H=lke1wg z&rr8bvE*+8ZLv^F;kUt{c@8?l-OD_PP?PwvZ-fx=SuL~UL4fBnIJOj?&U-- z4G#u&APgw!!4Ax?fcR85-U9|iCUl3u>$_uz2CIBPb03?Ocemkb9fkqhvH08L2GP+qup zbpO(g7F8!JgM}8aCBr{}oL|Nc9$0-(4b*GT*OCv=U$MHmEfd3>r=^7f$&R`J6xM{W zow}QqhrW6k{pH87v$_XN%9Af0T+yGudav&A&QmLi2oFH+J9_Gam}|At4-xezUxEWE zo}E<>*U}kVuqijZ2eg8Q!Iaz;39c0?(=ldHjQPS6l*SGZ9R+?(0fNSXdDydWdBxR1F5PT`6<|J+ zYf33jl>A(^<4;RwK9zHptpxyyw(IMSaor78<8jk_*5Ah4X1JxF{LohUfI8mGhqow? zf6j+IhjjbEEprg*D{#0#t(jH(!VuLz;JzBKW1lHiyS=73%o>OJj1Q;CJ})rjfX3Gr zaMU8e+sb88i#Y>yuXmUFHYC3V5QdlL528oUk8Cvbg}1=FpEK?oZIs8GHM+%gpE6QV zh%Y5UZKW#J48cOIT?94Vp1Q1CKqs!~Tx)H?op{pmLyzBifthRK2dcql^V3&_8muFN$L}SuCrCzAisa*ZJ8Fb@M z)U@pGc62wZDw{tyqultJEz36QPE=<>#TqxO#Hw99^1f}#^N>XMA1}b7UH!SOO5zjy z(Zv8Tarn>qtz+^;k6Uz*iE7-0etR?I_l}#JlN1bkD1d?0%H{TWz|$<1n2ONp=L%3h z(bErg*_bVw3&p(l2tEi_5@mD1Wy`b%K97O%bm@Rtwi@NeAT4DL=3c1ph^L}lMsB2{ zNi)$3;82`<6{KPV0zax;{l)2N5kz%I|UA~{3@l`EW@D%RI#RN5+BlCIQ{yYn!Y(Y!V_PCiW7f2^7_>+C66hd zVyyKjX_4zCUW#~}LA)xeujV4~D`(MI$eqZsy_zGQ?U=h}h{6lu za6ZrH!VXWVVj$U&0Hx5^*o+Bz#Lw?Hq8IMP4$iHx%KOKxQh`2-#lH(s9$>S>Sy6t; zKR2b`T|O+sS_^(v$6)Zd2l{FDo({0xr-swiM5oNoyt+%z0S7G3y~i zY#|*lv`8rsuEkuEo##zag3MTmn#Y^3g`xcRnram4Sy2F6rvs(K**mRSLo=gARU>7i z$i^SuV?VIcwoG7Zhh?}?rS5ErRH0^K<#aJ^i460EyJGGK!i331`{G50h_>BHJX$hA zZTz9p55Kjg4?072b2i+p^o6*-P>shz)jl2zSs7tq>;?5QI8&Ddvg$5aB7{jfsN#=L zpx2t%`6WV_yr~9IN26ZVsyPlSfu0m;^H9V^kZl>cNLx}o$9d(xKj-6yol3TyX$uyy z;PV$F=D3{j@wJ}YT&&b>oTFCkb;DMlB@Zw!3f!tf!{HVsV-0F6P5d^({OHvy!Wlgk z1Q_;GW%fI6UVD3auq)qCNmeUcn_*3QOS0=J)>4L62S6iqlWfN5YPIhNx~K#Q5%5ys za5KsI2z|d(&yd5Wn9lfRt36d|BnAyb+{M)mWmlGtumyYD5fk{;xxCg*YVJ0geO!0+ zrq!wgs1+le-$;K@m5bR^4IZi+YN?425Xw_~4=B;Z_AL)U(A);+8FbfOYiGBBp1lY) zc(t^2P-M@&?!E>kTxSimccbU_OzD;R3)8es4h-UWNZ&Me3Vyq2ESF-f9AhN9t)MUD z2zrZyK-3NO3i3r!wuic=UZx!`4ZArLQOrBUyq9hhRKirLwUP#?fKCS~N6xn~M96~p zuj{tz9x!S@p8%zZrs1f}U=KWY8e9!(1$`(fLMZc}_l#=v|IF8+MXmaf%MhiYl_{mF znTEYM2=z?qXt~JZvOd=KN>U9PE%iVw1iNs(({=+`J5e(i2_L!*xm4z7mU@K#7@wPeDg;1=WiaVUCPJjZ$jm}L58bkxCI9k z)^ju~$u5;MWrG9Slnh2ILZ<7^uA>YoYS9?%&}l$!dKB)^UgdYcYdC6H=u{#8?Dm($ zW+=}BPz`=wC}6j>a&nhg?;%egH>pWVLM z3q%rr5^J5BQ0hGXFLiGoCrMSM4gWH#s;j%JySjR*UVvWNJG(l!$jnHTCHH;ba}>xW za?gz1H$}k>QIW<_t|CZ-$fyW{t)w!_qP!|@bUPyIj023@D2U+bs0jL|_uja1@44qZ=Xs{_+Kjy&yRr9te1?M;7zbd5+4$VC_Zz?4t6yzg zhG*h}rq|WVHEjvRtyDSyXPJ$za;nX-vS3#s(^(^(fJISfN}0GcrquQ1{t6w`=OMSS zC2v@1TGK5RI*N{5r4!RCQ;1GSj35i~8ibxSUU!APmW=Q%;jy%1gf&){&CE9FULjBY7y@?1(>PPAhY1MTanP4zYL40s*g zB>WcWLRBE4_QqdAO3|Iq5+(J6qh|`ky9!qpNRlKNC+Cql&L594cBW{ibAe7>tuMwp z?yx?sD0HfRc~@*?i;O=JH<~j#dpoPGs90K=V69DYE31q791%r}E8Cq8c_Gi1>~*hP z<^#cFmua|y5?9LR@%%8UM=S!mX`I^jKz*Y7oJZ4}`!_U1Q!5^YK179PsWn((81%cg z=+8sXLw}|_hJbhrR&P=FfIJ2Bw_nx;kjcvzi8l6cd6Q^n<=4@}Zx-!ex#Ensh`v0* z0W18(@7^N%(raA+lf@!V+gm`~W{QC+;|P*gKs@1#dm>|mD8jF$W~X3Z0Ny#Y|7uZb z*c3n&N&7#!T6F$OJ^5!|+|(DpO%xn;`4RL7ma18geae{D7=sfr4(&ikB;H0!@bDX) zWeFAyQ|ad+ait=uWu1ncQLT*@3~h1I(JpFxz(QPZn60c*W>WalrnIrz^(xYARL)vK zM!l_9HA_}+$gTBzob|BHVe==$cE7*Xb7-ug$xAU!;xIsqN*GW{90n&86SUVfEGyvt z-Z`cF{|P6mevtXS0UiFZ5FiCWFP}COt&)ut*=lsg^iVZC2!OQ zw7sC&V`g0Pye-#GtXc?h@-#CAX(7a*1}ml_)+{b3iYz~UNEw0MB+0BVG~(`fy#+J~r6LOnYB1AX__t~as-D(+<0Tyc{mj%K$(ZykE3vK}B1t4iIM1DtF z_JOj1EuOHX;t7*4QV`3$4#r^i$Jdm@5&XK#-GQg}WeUl)YBMoQW>C#7tH5M<(S#)B zj!1K870L|PdsUHuvt<3HQrM_W!~pZ*;+k|us)gL?n5I^5SJY;oowG;$GMyt>Xn9&W zcePGO11?!A@3mHIk*=no%orPx>DOgcw!9Cri=3K9*^qp#R}YwoX90m&ueVbIApUq= zv}+3X0EDg_o%{uuNuS>VVY`m#!fj-0K#(V z?kHckz~92};a`ky;J?nFg?YR-XB&;mX+%C3ojq18Bmu52LN|U{v~*OP&>1qEwC!=I zm{?gMiAXGYiNx!%Or+}SKX#qy#u3ss;If!T?e~c;UMG+X6Q&N4>_hj9m|e@li7+UZ zKjE1K=8~8GdSQ@mrPWrsBN~!e;$gPt=M<3=WWraJY>ZLl#1g%s*o@>PR$!WwxMg)V zuXAMsjdBN68Di;{J6O%Di?MvwQeXqEO2%(86vMH=nBQOu!l+2(1lR<|z@l$UDP|Li ztm67Wgq45h@+C{pl?-ZiHLJUY>d_f1THf=F$Jt2MwW z4`5@AOGMaPb>>JZwuna$hyJOAsxGBV3b(ip`vZTXYOr=av`-b+wzX`u7^-T-;b54p zsB)G#V+{Dxnl77@1!+dFbe7V#Qb?oCIigXW-Q%oEfSV%ht9VQLal>j|g`kSiZEpaV zBgD(5my+;iL#i&o%z4qy^@AugW|cX}&#N!mGZJ_v^&W zk^yyGE{i0(&R}qD>IU3-Ggz>!jNboa@X}&D-y_$Hj_kqN9|XdO?}5(`j(H5(gSeL@ zpOaZ#)|B3uZP+u}oPrCaD;2-arm$)!Vv_j%%(^MS1+Fv@U3b0c)H;C_SeU||$pTyT z2vIPp0E`WRHkeQ(7OeVWUL5IZXmLuNt67v)UpH;z%I;J;&}$mvxwKIg^MunKsY@!B zXag~Qq8ad1<&~PLsFVZVx8O}_AYCwMw`OIAw9YHfI(wS6r(H6NAAHQ)d>i6Jhzz}LaeI^Nt_7`{{m{@5%&?s!`gVf^DHEmb4{wC4aCz#ayZ+^ZN z!x^!(<&fO8KK$iAP?}ym&TPOx_{K%RD??hGg?~DB0eb8sBk*a=M)w*u;cbxx;kyf{ z$ctWwK66lXCVKNNq7?;3oHhlGJdc|0yKWWTwVM7_AgjFk4uG*8y-oDPVMU3oY5(wX z(Pe8Q;t_mf9lCF7Y9spW?UOekaMdKH!C6Q=01RA?KXr}}bltIB(7^Wp;4>O({UuXf zXQLXC=-kz+OQ*}(i`Gz~+i+P*w8q(R7Ngy=tk>zaZ1!-;Z=NX3iL7r1LTo$&A9*uu=`fCF@hWOGs}vxA>(Pm; zAfN;7L4Ut$bC%UG7kDb{+7|8KMBWP@K*3CV-=bHk3K2dKk~)^X)53gc;GK{ zeOmOlv8kaSzZ+;1hmGoA_Zg945u(8^?LO1hN&IsqbEd`2`%ma`2;-vvH8A#_O2Lo5Avjq{pQMi__?qWr7#b$1b861;N*ko?cN7o^(p!Mt<=JGl5#Q z8?&b)N+SqPXIs@|NEJ5Ax=|p`V4G1x&ydX~wc22<%6K?N>C$<1Hjg-F2nN*3YRs!) ztOZbdsiq3XPN7+F2i1YPybURv+orbTHsem*F2MiC^pN3EiHI8V>y|SI#?Inrx5k%P zfu-t5u#-sWEy|QW8dL@tN79(hHnVDrjbSX2W>`_JTNP1h&mA+_(=nqZSqbMXL5Z!? zE2!ie9Z19^Bqe9g;%($KZKp@f&`O_&Rg9BQ&*0lDG4L?DnS5NXk#Yr?8@K!Eus82v z%f3#|Th{|t%9YM{!1-sQJ=#>XS4v4_Hfx@-M0?eAqRFTdY@q4NL<~Jop&Twq%hIOS zSM0Lw7)RH|VxwQ7at}L>Y<6*sdMp2{JGYSO=(z_0SV)E;pelFpTRuXRh+0`As2)4P_}I+?rSnH_9;qAHC7bxa-@J$$GrJspCMeclok3l+b-4igdHECa zoJnE%539CNF{_(#fugz7skQ64}-XnRplpGP?}*A#{HN+8m?5 zwyXwSW3j9u?0YBw@=vxCi1+kS;L<0|9GfBaILqah*+6;i{kxF#EC9-yrm3xhmNUNH z6xV6r@?Nr!Lzwg6xMDjvT@4M4wUU#yfs%J131tt=XcUi+jyoc^vdi9q5|p zMXO~YK>P|*AEAeT3Xoa=5F!8&l7t=*l}1;T;9&{am1&Z(AbTrd#qQfpR%W8RaB3`4 zvvu z``MA8tzN1z8ecMEhR$r6qH>uj>8s`HQP`q7oPlshS#Ud&Vq2iosOa2gRmbU&wt9)A z%5U_Vrz)(tEt)2 zO3=D3dt;q+GOK2r!DddKt#DdTOY1;4K1MALpU5Ub=aTruAUL&s*QP@wR3zj*Sf0=Z z?yvr_uZ^w$k3J^qBhM88LOl2%W2r_bZhs<0q4S>;N`wf<~ zdys=Oht^#KDN7_;yquP^0kUSX-b;l4FbHl4@xWe2C9W1VbQfeZBY-|Ox>#AMZS=@| ztAmQd4&lIWMSqzz9m2VFh<;(R-Gnb#KVZB=1d~iG=SN?m7-&NZGX#zC;gP;Qy%=~3 zUNjz-q)oPJu#rpnl0HCk=;=(@E!Nr6vY>O#Oawff`Iprj(f;3w?wintO+~JW(^oJV zU+zQNse`DqU3Ageqoo`M`ivKVTM1;)p1D90mL_OzFx^lWS->^v%~E3~+f$a@A>YI_ z1m*72$tlUWCe{K-9D;jq!!Xkp;M4U=8c1I_o zPcW%+POV8htk$4b8S2KkZr<>NZZK!J`Af0C&C5Me{mTzX0*1IHR> z2dKb5K;l39W{M6pb&Ry2GbJRAbV|iQ9D_A$0!p*FZuaDDHHS7>@hLqqYb~oQTjRcf z*O#xRZ2r2{UT}Lk69edmKXv;k?f@s9{_j$MZ6KWsOx!he za2IT*aGKQKVHwbJV~)46W5E)`QtX{vGm@3&LdL2(D1F5eX}DE`YMf} zHy+_=z}?w8I&ClDaXXB1U9;qd2{;`Bp5?60X43g2aaqY^D7iaIt+_Ou^-0Iy^f0(B zC3DoSO(3ch&wwHoz~6)w>I3Qp^y6a`b1v4~8J;3b)T$Dq^u6pRp9$D{9aY)Mc~l;Q z!=p2mGHP+hXJ<{ZmMOtGYrrH?a^*GpVk@Fl*a2VdR3;*(h%uZ`^yp+yrUmwfeAuSx zNeniBPo1sRrR|k{JE`=#$`WL&u|ott`t6Go9i=O3L16K2U6u|aJuZj{k$8<9dami$ zr7|^z$8Sx@Q~FjCaAj4KSvqk8_0^X|PYlPk#r7TR>yyd zzBjxUbINY*TmK}wd9|kn4>Q6z`+pZTKSM~fNn{Q^c1(29qCldJJBhGqV~{66L%io+ z5CpWjM;z|BzzG|0XUYLv5(2c+PAlbME4hltpN0sG(ONOX<96g53Qy7Iuo}#YCS!z$ z9kVtQg#?Ib$;FDA(Gjf}vzBZxRTw(c$-~_+3UrK`}5io8{E#&~(_aum+oqX?RY%H!&L1D#jVK=#J$o?cWL7p*3+Dq;4~W)rtS;v-A1-wVrkt)IbaVRf=s z!34nD(GRW_EzXZGv3NJKf1RN4MG{$Hr?`dx=99YwajQ4qy_0`;ndGd_3T(5#{k7=A z*+VrJd-H{@40!lUOJ%kVY)>HU`_d^`Qn1tO*}sVXIJO7uKlid|+saGZKl2sQS=1~x z(t&AoRkqpQQ4&(zA0wQkV5MARJ5rFzlxat{6$@3vZHp(NFLuj~juCi<4C$iA;BW+* zwpLY8;g0`eMq->QGY*izRw5w%J3gp3GYt0lWQZc8? z3^0Dz;^^;Uk>kH9MIwK}d7Ju|{!J95_|C0cVJkJy-*ziWIpUwa^&I562QV;ae{39o z@}XnY%VS0i6wLJR6j38`Oy~)UQqPcgNg%R?P>*2TEWcpnQ3>zbz_b0u8Zc73KTO~jII zSwd5kM-<+OvZW7aOk#UH7LS$~wZATr)GXz2t=p^^Y8gihw1U^}VLT10wvT8l5$j(D z$_26)s9g($UKh+-QmO!^%4_}vR@o?jB_V9uc6$0cne~L+X>`Mt)ZXofz+(ywPHYiN z%$4hyFrIu@NG8P+q_a4!6mEu`83+jgIqozIvaIBy^$k#`Yi6>LaE;@&#D2MIhI(Oq z>b!a#HR?ElwC~TK7CHmcpLY)3YmSZJP5NdZ=3*S3c(uPO%NH5vsPS;(!fJt3fh`QP z?Vr2)6y6e?RwfL*R<5m$Xg~+gVUIIuT`Fy?_pHHA+oGJjE}o{Qv#?tGhmd0(SUWd+ z`LTk=4mx!!&@23?Nu7O~sLqC=s1A}EfJ_~4-~UfFb$%5G6GCdYpoRBCqUPP3sCSG% zGsEW5XU6~K=yvqZdFu1RBYt5k%(ljPY74eg@#}|P-A27S>QNh|X4%x=w}aX;vUb`R zsZ-S0?T~CY^*3aCoSG+8Echp9m-ReWM3oi?3Lo$Q2Ok9qrJ$^wrIi5COenb`Fj=w@ zMy@M(+-kqS<5T+mQCrRvs0C6cP-bsyi;Ujx)GA#XPd*SWSaLq#t_>wSNw3TjNjb6| zd9~BA^&GAtOaWJCz6?2Lz;K%ofGwDYo3P=FYn0~v@pA$b_i1I|odX_4JfeeHNiS(& zESf^x5YuQK!En2%3mQ08z;0sV>Z;DK_Z!XWd>~|vvekNy^V{Rvh*;-RyD~Ya8PFDf zYb2)dbTaxTWA`f(YFX5-99EZ@YjeVyLBGcD= z5c%2pL)_rFhAVK-Iw1N1f7Qm7HlRmehM*_bcbTtoNwz*9OqKEXal1EHfUgwPt_h0% za{knXJ20?%3&>K{x&o$SiLC?t8F~O4vpe}i-`NQ&i_`qVzf5C#>NY$={^ayQJlSo; z7$s71IeMf7_r%ij=&pyTJ=+d7awULTkI1?3zx&C)?TtovqzHdiiW6z)nl+NsdO1+c z;Lh262rq}^mzPWC54B1o-$dZ1w87*{n!U%HQ?MC%0ZLH@?u zb`s%>Ge^k?@r*FaO-R`FT=7EQk>+Hwc1#^`I8sbLq&8bjfrM$I-;Ktj42uPk^^624 ze|`$EEyjCc+QnuKLi?%ogc|p^9iT=-*%uw8o?aVKAvp)wh#bd(Y3lN`sfhq>xa!FX zw?c4k13GjrHN@no`t#>epB`OS`#_4<9W5BbtMRvI(az_n#Sf_GMH*hK(jbW#lJ>8A z4xoWJxPS7w$?$>OE~G}3kFg#q+CK{t);O9AKfG>snH`At$|1w-?bJp1w`b2-rVPS) za00W$@@0+sa{S(17Mn9Yzf`ADWfE~yBj<{^?5tNNsZV}f!~rq|<_LddXCE*P%uWLx zZ<4P*y?<69t|=3Hhp4uW*HVaP;m9Vb9^QGc)C?qZL{CGs8xw>br9H)RGS9T_vb48o z$ZF`iI+KuVErB%!HOS;Udh`7oFoPC$>BSM}6+!kjY%g&?p;L#c6{irc;z81fe-Kko zuK0frABE8S?~hQwSt$bC)vqUv3;z4ZcMz5a{*~j~P~{xzLjKa*58^e4zv}i;h{y4D zqG^8D9cSR$Y+RXaiDCoc!>+h_5P5;fCMHG2a*!ZldC}sagm|Nu&vpgkB##=> zV-mSo#c0gerHw{Ums8jbuByYnCaVX&!Au2wKuhS94OCb$TJb)by6_BKQ~~NE0DX`~ ztQ-!vvQb4?+AjJ$b|&WZC0tdFx=1^f98fs0T4k{$>!}k3SD~XX#2Jgt3N4JYyp=Lj#qLn*TB?F z0tKl=!Z0OM*l+7F#g4w$PHDBefXyLycEdWET+CXdYNx>=_g5VyZGp81HPw!<6>j>w zfqY3}3YIE5qqAvBCkt9@)ff+%K{FzsMrYNd_8Hy?=nF!!d0At8sm|(4;{Y* zK+K+}VEMrn-Gp00YKdEPyGC?0=%dRXZ784(!klSPC?)2CqG?M@)RAbyo9uE~zdhB` zcB~L#%w$bPnpMlPAII>yrldi*4-tkd0;Ceq_7)pn>Q>6%^HkPK2T zT!E6lDpRWz7S=8o8{45kOANsm)*(|E%2|0kov3o{kSC(Ix}`n35swZZB(BG{H8!bR zH%&#)KfRpPZ}pCLNTKJE1EHU_sbHGcBA_RN>a?NIt#$GWMJ5pJO0+t+G8Rmjxpv2; z=PJ6Y#LXFKdBQ^nOU{~&^K=Vzu$q>Znu<~*tjk*TF#`inV}z+iIgK^l_`j%7o5?u zES0oXO{$bqUkR!hO`@u9OA<;gMBjYwkiX(JcxthFwaV6mwp>nAZ8ln5Kv`^<*_12d zbjw+pDjE!1Gg-67-ie2Df#HJ|mMnZbNUOmv!ub_5dnpcHQ49zfiu(;@Bv-L>9|KS9 z>1uwbabTl|RghD3ft>pB%6bME)M@ky%sz3|)7vrcTZ+H+mRbJWAIG}eTlg10z7@X! zOT6k%F~L*3`OeYR;D>h}AWJIw;ky;o7bh%@0RfMCkx+MkFM8H-<|Yi;esb#|vQ&1cFS6oc3n}|Nc zU*bP}*CK%s&HN()+w!h|9O)PWAsRr32&3vcK}HkvV;sVIwA+Pa+&H4I3BedC`ukrg zG1zFiqS9Hf#VYEOIio1~y})rp%gb?jKrEBAEC#(dUee84@iJTv~Yy7@Q-~`0N_o1Y9h$?`b()v+IJ{= z8MQ(y%wKxfI`j`(N-_oMDgrnH%OByTd5b`ci@TeA;kr z({lUT#biO1Rx2A(hdAex=Bw?xyXNjVV_kE!8f+S}HffR80tJdJ7m=6(bxl&Ibs7t@ zOxSPi$O`^Mx40^06BD-pYHbLA8m8sKjbdJ)>J(f#n&lS%&BTqx{l(5Et&WsY{3iLU7n##3Pb zRx5?E&$<=oXdf)~(fR+s?35CMKCr|?j!zL-Ux+>{j{2OvY{3ss;E>PiBEeH#GA6mC zgUMwA4yKjLa>hy%s8&5%J3BE)4qf1wxWL@xr0$(GgMQ69af=0hwh^gbUi*U)p`3$b z=SWLNFK$3soye*8LX|kf*<=2mG7$igC4Dgo8*O*F+cowoMJ3m(_c<3MHh(ex z%l3ZmO6u3cmMHn(KfA5}_5^kPu!t6V;&=dT@=Nm6Z2!s>r5-s87@gVvmsu)5Qbzg? zzHxTHkfAOX@u72u0T9wJk7lWJ*0_8D{WKxm&* zJJuCf6n;}(=IJ(4l6*9Y)rnfP#*&Nbt0|4I2-F*)R6!aNGtpj4mG>!i#eyQ>D|sBU zbVH>HbUae4GiJ7l!yZ#mt}|uZ!#x&xO;(9xVy{0=^xKT8?-HFWR1pL{4~ak?-b!7x zLkJ2k*Ask1up?9w9ZwGUH>?V^rPU1DY#qPdUen9eiI_&;l*Xc2qt@)HdxBk!9r&S3 zEltWEk#lObFIcLo(~3ym+DWv#=61A~=y_!hxxLQRt+n{dwv<$L>rg$EyrMvajdjun z8?Ko{gb0_Yy^>G&FHpJBUWLU$BqzinwWi1E@)cYPr^O>nhHXiWJ6sb7BpriCn$Jd} zdPmxp)HNeYI-5;fb>+CXqzwXJT@r|4oywpytn2C$wx~+u^;fbbMZRIMTOkqsbPB-J zJ9jT;=fnNWZ+q)*v=9eu0`c@?&WnWycA#f6)Zuv{j6pgXKBDhEK*YfDjN3`zHQxBC?HJ`;{1ib;@b`V{05R5|n`l(ckU$GM_G3uflHLTH zyJvm@oPZLaFa+)BdDzmC|y&9?dH727x z7SAQ=hRbA-yX0N~Yr37LMAL4ky(NQ1FSWTKI?55h!T2~>gvVh5bNvP-BMRt_50lgJ2dJw_c30_#&U;bX+kY%-h-=DcDJEB3WJ zjI-;Ld(_o(L#FJOgT+Ki5eQ1s`9!8io9nH#A2v&DsiD_5Li%cgjwOvi9p-TbvYLc0 z;257~=2rTqj=qN{8OYY3;koY;GauKwZ!f?GY0QQ~=^}L@`ne29g1=FOAe=!iy0D-L zm#lV^s#IucrG9V{%I)QnMqJG^Q0cs^SIuPwJQf}htQSZ7a0&_3T{J> ze-7Xim~;LQp99U4`tDsLDxNTdwbb1Tx}Efzd6%Ro3C-&j5o(VA z+|t?of2vdahRve;e`-)Si~bMs4O4*eLpOd6E1UlP^{@%WfIm`sg8Vy3!OP!MnyU4* zEN$r|()COxrwFSpnw~*l)2!)v7naB|A^-xQfw=Juxcr3^IAjY$VQG=S)VUKqzyN{u zlTO&@s4w8paOu(2e}$0en_M7lIl4XA@U~It5*Dx8j-Gf$w5Jd6#RU^LLJz+ajFvm! z0WS*w!`oM269~#D=?mj?>#)+#IYaJ4c(4^V-T*=Z(mTta(Xr2qaMD>Y8!)*mwuUQY zYp48abyaEtk8<9dNUaIPB3*xeehapqP_rVzm5ntkOY{UucKZ!g~=tx$S*Ou@a#5BIzhUC zNW*}?cX7Bb&_PFJqQIl76Kr0hme?u2gQM6Rb5F$(%Oo`plK=f z?Q|ikP_)wNwp?5(81hk>ficHj>UyQ#Y3cnPCROlM-7&o})=hVkC7W3ev?6Quv+&xT zj)X`5J~ef?|DzjWn4=!p2Yq=n_{28uCqPU7(*4n~fr9)Wo#|L}?P(Payu6ZS9nftbycXYmA;-U0(Ley>?40Cg-{t zd(a$|0y$=WxLY8>8ucwB^I{*QatKJi1r;a~ z*}Yx0wM)0-K}SR;t|l@HXBC8jS{W|5)(Su#=i?s-WBu5tSAnl*>e={FJi8via?|{? z24<0zV3)V>VF@^y2a$ZQ(^ygJ)X8)MXf!?Ud_frn{7WqnZi>SNN66bQFgD0~WXg75 zG8c>My2h}|*-YeEZ7#t1)#6mURm+>R7AEhD^c2nz_!Xkn;iw}^198$|fvv%=k6+v+ z%;{U|SvCg&`6qHE=H$52#I4?f0TONS<7`J*Ns#{_#W9%$O{f>QEJdO^zv@E zlH@|2ZU>MdZb@}bvyD8om&FjXx%F;pQtI)Bp{6oH)to1J{h7lOf~pxgT2c^?dLb0F z(HfJU3Ci4^cFfVSCIW$)q2(y2C8~fS(}^YROuOS_dUcrsbdJ=Wgjppmr*y@vt7gi{ zF{sAJu?EiOR<|2jzoSaajrp}r57LIjXQ)XsQ%HOdSYu;I@i#t9ZRG1m_M$89rGCA# zLZ?4Vz3;T?=l>IZW(0Sf>-!&oNqu-bA|s4IM)*tu4dmbY7m&NnZtVZ8Pr1k5;i0f_ zAB2T(7(Ip87rexJktYK5B%mpbKvP(cUi>HOTdS8Lxa?h{-#wvy_r? zdg@Qq4*r>+Y~a7uKZk!9EQR-f4WyDbesK>z;GcM81Aplk7s=YnU-qWMK(`CjX`3%V z9wUf#z4g0z2mRSa{`kY(9Hs*T+oVxzvcjr+Wq$+uvJ7WwY}$F^*fn#bO~mef{^(bg z=p+pzT&xhCjoqD4J28*HwofD4c%tz3n20~HaPFW4vbjI8n}6uM1%BZw4Z2nXehdEE zkB@XFp>#j-#&>TO@oO*O{3HF1xP80uFQFHHMqLJ7wUOWQPY;j$3Vw1Y{_szCP$!N* zGA5C@T<2>^oi2OF%!$8!d;4gc1V(x0ySLo*3F@4F?5ot`xJ}9bslT1S?ZJ5=_$=J` zEYvtcosZ2&bjf2>b~pn2k3B}oDdH+%9@>tg1#lG{_|7!?>$f2F1(q`aZa#W0^1Un) zqYr+2WJ99nrC$YS(XH?jefBMT&_iz)dH?4h+vJVZmO60lCvk!Us2Bql7H^TG2Uiv1 zX>ZkK;3zm6td_m%Ovu?WyE^rpgDx7Iwl)j6IVM=PtJB(YDPcAmEsU??;F?W)f;E<; z#caYGGFfXbe^Vzms~e%3wiv3%GR8naSuW<&V(ZXpD9n@JhX()cm8}3+Mu$&QH&0lT z(aYb5*zy(kQ5*X&oTNr|y!L;e`sGZ$S*dXR?ennjou7udod#9G{yieJ3FqFD3rMEj zazjT7!Q+KPect==>l9xMgt>A_-E-@$ww})HP3gpqY~2&DNej`Y-r9?{Ix)!Vh%@SL zPU1}ETk1frB2RWh2}fSZNs}gzi#CP|%|JV$FdGcrU`K8+mwDM!+gBWib3%58;6}h8 zEdKZ_^PVNWw zlx*c&{XacLy=8ne*?-TE$9|W1uYhFaLiF-aCWf0S09hSZ!tAF)2c6XGHrMMloO6f& zEvZO;tRkFYWzwuG8IakVHQHk^wT(G8;@3O%wz@`G1{f~^qWy>ycD*lNCt}VWKPzChPb)(MzeKPc zQDsYoqNNTb{&G{Z6EzeYRVHoI%FKph$L`hl7`Mdgq~i@=RcB$`ZeK~~%A{LiWyUO% zngf!mSJRa0d)8J>9#MJ<4OO{O9pA%Z3lGbbV15pqUUTs}p+5ZI%;)f*+dnyCSNCmPyRG4^^kbu3j)I_PFF=v9Xcse+X@__?0Bl+gu^k~pn)h!qU5twplI z;S5Pe@QwtCF@Yl&2omFsW*v-Zpk5zmMIfn8wb|V~_s}erXrjyhBsw(HX|P~wf8{~Z z(Loz=%ZHGZGnZRPx?`n@LhnGft^noM=5lq;RP{<*33D=*@p_`NWXdDAs#Td{JfxNQ z;?1a!Hq(u)%akbusx^(Y8wmhaV>F_Y+KS@3wdiqKEGe_U%}Hh2R>B_ihlcwGvI2bS zY3kX*>!(Fuc!mn{SABZ}FaA1q8Vd}7{Ec6yNoew!udjq(RQ&6|aRIt-FW_t|-;iN% zJ-XpHpfC6EHwb+~fBM-m&&l$xWGhl;Ks4sl-++_>C8P`h;oRMWyVGb~i{aZp2YYJj zn_C4M+>_VC0uFEYVZQv$BmBvK-N8Tb&5@uEzvc1$Bme~8nv~tM0s1^wSz@^~ihq=f z?HC*h-M@T>Y&n`zk0cb!l~nCWv?MDtQh(W&=>e@vZOxn++>y&a4)F>SA0b&y_#wm3 z3Neh~U6w-{BqiHmDds9wMXRE21#5;_A!?7(A%88)+1Eru2|K;x|292M#CW~OMUd42 zk+N;i!yc8e1(R;Vb`E;a^OTyn`~UU%iAhJ``#VIUW%?goLZ0v~KbjO7m}-Fa@~j=u zWsh9EfJJkdMJS0Uig>TR{0Sx*+3@8o&|$kI5sj7dOvh0ZTY`GG!D2SaVx}I1htu)8 zBbYJfoVqBT&NPaR6og^vu&q(_Cp>XOz)^_?lIBp`DX%)prhrv%OoA1pn2^?u9{>fB zk%Jo1!5R9f>L{TkUxef!@CD)ekq=Ac3?U?MJ6qLeA({zQyv1%QQFbNbiBJrLUsWEL zN}=slL9e}Sb1;oWR#Nf>G!CPZ6W5xdR8wnqs0}JpC0`VK#ZpyJY1IUajGRkpvttv7 zb{bUR zr==#N$7qRFlTMvPY%l>k`TImekfm~SJPB)*kVqu@EL%XGaE=T;TFVc^uh$Q z^NxAM1gPyBSDeQvZWkRmV=Ye~F*4v6uZ0a1*mY>GB|2lB&}P1R%ihI9gFX{XQNi8I zZ~Y&;cN_xuFIF>1$7?0>E3%_%qB!zD`B2aoelgKBL)ZV3`r2ToBa&n76)i8U$vKdr zLa`U&;j_P{G9z0nVTS~oTQ~g%z|fbSEjoLJAwUSaWhiF*fHVL<;{kub!7QK;B&C{< zOEH~lMJu*i{En_!@0HgXzsHi(8;q>i=4UIieAN+UjX{0UZ8FQf^{kjS1yyEEh^U6pWy4U+9(o$%G!-E(B^Bf}a*jDD?b+zKLbR@bN2o4hS@kOX*{H=XKc!-G0_XA%9)Xq zUttq)&mv_;_r3}?y=^Zrzk&h5pkKcMTtaU-2&T!vWAmmz9zdV^GZh}ZS~ONbLZEdl=z5+TVJ+gfy7%Mw)mbBDL=S!R806589t9A2TpiX|Oj?zf zZTJHUu(W)zvScT^CubUvPMg5u83)j#7gHB)A;;d09fb%%|%)R>69tI#s2cbr&6xk|L?qs{-n}m~HwEhF~xx z)&g~gGF)mD#%YM>Ml$LL*)P-lQh_-*azfboj2A3{9^~H-OSllL^6KTeK&7P&NlMjt zDp*iAycKPHVj9m(qgw$4$=0i2Z99HF#ECH*`|*`}jBfb_3%6LA2>Z7f%7Z)k@TSFS3ZHzPI-4 zyLTgKUo7j%VMyP(fHu13a*g;jnK|f^)5;+6WWWZO5vMApOj#V!m08gJjBw(*xfoV< zyv7D?tQGu*1)Yq~TgM zND>^$yrcP>Uk~mP+hz}4j8=8c?2u1#A zFy|@te95B1WN1XI+O`|W?+V&-#-Q+H10&aqjeY*2Dc}j_xP)w2AwX)a$#Us zvRE^0xEf|U>R{E-Gd3(nucMdG$&*c6)N9fQRrV5R%N5*FZLC-eSS)NJ-;s~mkM!b* z91F2VU?l>TPu%C5rl$aVFgDOGoSAxH!azfRoSFK;aDGHr&Q5LW|L3}?H;j&B?7Iay zxo!Px*H3+I?8J!vHE7_?frvO{6uo$8J-=GCdKX{Wx*h-e2E<$gv-Tq|fk69$nn;=> zZf+{O3M@wg!&|O`fcpOexDIXFH1+$jmQx@NF8UYh01%hnehKxu?M?7?<#7~F_y9IP z7~xnP+aA@JYNcEa2zX@?xi^!qb*14H9Ti6dsah(QW&KRR)NU0Lj&NFHR@z-QgFdUO z*d0oDEZH!IX|Yrnk1KO2yFBJ?8Xdm2r&k_dzt<0#Lr}Z|)+bKG*}i$|{z=c}_`=lw zDQsWd|4Ztk%|K&9YF!kVJbyr)4&g(!w4iWuFrd)8DeBIA6e z7RO%?wE%{eZ6ml{Je06p7go|6BSBdf85byCcP8VG*I0*M?qto`APD7Zx`{x-kx8xax?)3bouJK*sy~7V)g8|gdcehHy>?PFqTCMa z&&ozW7%zc1wmzeXbqYN%%>c$Z!Q>+9PDPuJ+A^%i(g{1gdR^G4uekkHTQHJ|%2nm0 zRwWAtLQ)`#dxJ?q)ibFf%?GE}SNkH$a41O$SZx zTGZ{1+q>zwRh?C*s?DI)o#`5#oY(2ls@)!?sl#UMS~*CxM*>-GOcMyo3(aIYYp|$m zX{V(w<2=z`E@Te-%CX5Fe3oxXb>~+QC7SNu{;I5Fu&Xy9zF03x`dIQg+Sd<&`W5lb@X4zr|+z0|f z6yAK0uJa~^o$IM%&(l9T>uO!3+xwhh))vQFr?ip+PA=#v+;70#l-9cvx_!+ zsD0a5*qLCZHrPoBP8*sR>Bt>-6D<`|wPpF30kRJN+~zSQ1^%FOAF#d?6$SzbspmEn=sEvAxunqQXNQb4m4nv%c^!tm8 zQZ#qFXdaFUVVGyXVTEHSQD_PDgZ80d0FtKMkF zB{kMV@|051R{C6$B&Slkvt_y-1ab6)tmY4D-3C>}rOAPO->M8KOjd2}Loj<`BL%5V z*8>ljb0fsXp$6!>jZ}tzadE?_{{+Bim!O3?P@ZzP&m^zg#z7;Kkj$dQ+Em|}25ndX zH0@tGgQJKeM`Zi4Oj44H6w}R8QQc{2P3>sVQ?E6=TCIkq4Q^J+WXeFxoXynSl9*GH zf!KtOYuD;gwwdU<=u*|3jixFQr^(gzs@PKA=GQpYZe0pYxsm+`@ffWq68G0k?_5aM zxH`yHRpRY3esU^w?CaF-(?%_SO=T~3C=S(G_!l>w#h=_UvoT&=elvmZ`FZNB&4)$> z8c7j<-}`1}u!vrRzva5KwjLTCu=tkzeLHsZU*5lsf}3MB>B8#u8ohL_XfIBmTt9nA zrZ@^fFjU#OtfojEBwwxv?OVY zUDb45+c8$cZmB1&saF{ZtD(c4j=SQqcQhuS3=)#`4R^@ka(l&0xlyc|IyqlbTvJw0 z8>|?*@^2frf`?keKl=}tppy}B&L~lQ8^C+M_zlrc(7RXg+F#0p4mslw=wxbXxgGYa z6v2F>XmlGDsbb2jt;B7SSix3*I zQtp&5=aa#kWjnn$R-BChYuO1LHd z0)d7}mWja`##AkKwJCr(#EVH&*yIhHLpijWct8-K}iDs;Aly#B?Z;-CA zeqQ$5QB{MXXBQoP4gzDpJ28t6{{~Xv&VI*U{ww>p&K!a~Xa)4v9@t%hol=`Y_tK(+ zScB&)`_IS!r0eIP-;{i{zZXs)LDxM`9Uuh<5zd6)eX(X{fNQc4w-#}#@V zWVWg#+92byg94j!kp{H87Y$N_{+7V(T5^rm6PPKjHll(u2= zCiRS7-;Fk8>1ep)uWEC4dD3rC^$a@3rASulMxD0h>r^y7w>hISOZ*m#EvgMLj3nNZ zSepj3)&W*}!n}Ii!dtYBD{{3Z>`lSb5d_`vd(*y{H!aAAaRmO03umFkC9u>(vf7yy zjV_ealrF4d$i%nUFf=o8D$8#4$aCNkEX4t$ zzHpWN>~RYO-*A;t0xSn)-ZV+ntwJ}@=q4qwE47vxE}SeTb#kRWYL(BC%GwNdpe=GWI>BZ(U{8g>J{6w8Gbl|(NToQ!N$qb}0;5GEa-vyzpLs{@N;rGwb zHF*>|r$iC81iWs2&>?9{-7$+#TCCVvbFITQl9q6?>N2LvfX*?sBcXKGsPk%Q*2*bp zZQ5Jmq&0IPM<=^hK&eEfs;u0!y52B&=SFhC&`U2+7oZov2iZ&j@7yRLY8ynkr1Q6(I4mS*i|Zt?6y^^8LY@N#{DkWPJR32^irCFoc9s z{?T86#rS*O-mz;}>b`sx9vShro-5n@A-yGJb{SM1MWf`5+hJO1M;zIFs!-xeU3pk+ z=Hks96ZK@GnTRdMwzC;UI;B^%2*@{VDj z(<5ThBFxR8lCurjAsz&u=i1p^QeZxk@mt;suOXmaVa4G^doIK*J$!l34j}1~?UgMx zQobN)Y{zOjTey^Vf#@1%fo$whv$fh;MeL)KbJNq<^yA~Z&f||?XP6+LEP9WefAI%1 z!GMD9n(a=-h8EI@kh<=o&!QO3B0h5sq(>y19iirWRM~09RPuO#|L-tZ~LaOQno#q z4^ZOuN`kpuEiY+h6`V&b3%AAEFqZCLk|!3m1Y-sNF0TQh7~l0LK#*)Xiw_LH_1+lhhsMK%pdhll?; z=f8aa_f^V~6yIybOGQu&p(}VYmS+_@>yL%HqXA>Y(n^GbsmE; z;D?$7&nXNE*cCpzXqth9mk9bPoX}+Q9{WD9jGh>;7Ep4W8Q({)Co*|bBpDV?YA$R* za3q&o!;Eeig_POh)tsLaq;@`;E2~`zqYFyIz$h%x9Ax$8kZmcc;3$Hqs8*nYgKS$Y zG-(dxiM9nyU|aU{zXfuLe+)v?>yEwCs|F+&bNc~B_qel)H{<{}de$}v02@HMefGPz zJx@xtr4hNP7aI)E;%%JhvvHKDrsqLWn@Ui0U|2F3D#Z#Bypk#osC1&QmKv;D)Dm)3 zt9AsE@iM+%&BS?`SNWc(8Uana$Dp6vF2d)YJbUh(!yW7GbH~?Z_*_xOm%e#=j5$aD z0QdLK8!qHr)<^?S`TJ^?_oGO_2c;5UFwm@(7Ic#9_zI99JKC>m%fFpAX)Nummw+ro9{wx@AFgki#MU5`@Qc!H8u$wx|C0kZ9?FLK#iw|2G=!;12vwOORan} zAazF-f2HX4F{B`h3hJwCod%ZarkJGER2LDgXvBuz7~Typm2y>f0Szn?^JEsSD*0rj zzJ0rKO#AR9%$Y6wlTU%E`TV5=8?%+^u_o{K`E33_6o_C@lMTA{I|w*wim9>>H`#aj>IsEpE5vs0oqwCI!Nwz4GF z#X8T&f?0yV`CJH(d5wHEyWKe50LFf0cL2J z+jiyfA|1DXu9WO^}Eaaoro1eb}1Rgkg9404zlwAW3KC|Utt`ocM$`-JoY?P%m zu2g!M5l(PTV1WrpI;ZgZQkwU-=XD_y@S46n5a{O9B5eTjisVF( zj<&;5LlzTEC9k!htz&Uq6IqA6em1>p+(QF;ZBEO^Bi6M{=>LS~O@hN{c_PQwngq~& zlPBgJ4-(df>q$DbO_yUUGKdw`tcmebG?|a#jXqj1+wDkG5@cVH;EWdCWi>3T8Us4r zkvp7RN#tVn3WoU*NvlT&1G&_VnWB??)$pb*I)3N$OqpNBbs2E=rg><23O+Hu>Wn z-n?fM{?WeprstSFtwLYzrmN0;-N8u0tP$45znqj?y*{3lv;t{_2E$CtETq{?JunoJ zXv`-U=5ZM~4=*$|RBiYMex{j$N+4I9N2CDnT>z;+Q6KpwI#)=Q@I<&I$fK9 zW?i}i`}l#$ooGs}e_e5SJnXL%&`08Yvi)bm z%Io{=>4Q5yptZh$HIC|^L$AqariYw$@scpN?kl7=K8iu*?1x7urX)_4v1&+(DRMca zG$r^opQc=Tst`VvmK1c{^xbie&+-K zyZ(XBzHcS3uF1*2e)Y~napVY}u}|LsZQU=f0(;_%H$0!Sk9-I$Jr`~O0mUzGfPAMT zENFeA?poW8fobrNyElW|=(QRvC*g^nw9YKgS=~P!vZhv_wU6I|e1Lchj=%QmUKfDz z-YrPQFTDra;jcX47JA29G2-54`D4%4Aw6Qxyaq%1(c_apIdy9H(M>;_8a2n)&$_>z J-F_dA$e(`1V|790RjX_C=o~qJ)(pXLJ&xRBow7dRS|+CY&x+b zp#@&#NDm-L6Czz|P|=GDyrMLv{Cj3jihA$;ysqze{r~zt*OJURXUd*Ed-i^IdC#o$ zeX!N7a0wC9y!~y5NB|L5*HBvkvvU!f+DNo^^${PtdWihNflz#j#R?C%#*oy9R29A5 z`oXpJq!z>;7fJ3rJ1>l3nm@K zNm5slIN10ZcYqfv(?GH6u{qPR$9krc@vIiyI>z0_geSgGRFliG4r0v{Kk!;Y{KeDn zy>Z1zIYqGW>ENsBc=oBet1N${_R4uy9ai}fNVMFe+)bB{=MuvcMmko6Ibgs0IZ%N-dt6=Wcs)wT9w9#I7Jt zBI{ZgkaOAEd=(*I*A=%{xI^AX(h9Ods4KL&h%B|9r(BdAh=unra$mULkeVB<89`01 zw0VZQ!Lcknx%|Pt!dk-N=|=LkmV<6*kk?;a(9?j`(c%Tgp}Y~S*hF?p(SZETH=S#VkVhhr%MN+$W($S!L+(9?2I!JNoNO&`~yCU6Pv$lqV^BP8;LU%Y#}|wr^Lg# z!Ki_`8R-MFGho3S9xCi7xEMY)T0~Hf8fBj{M@2MH$YLWQ>tB4PAaTEEwz zlnx2wBbts)OK8@q-_X&6GR6#w>o#$4c(3^J-BMm`K5$H0PSoi5-ksud;@VBfj_la1 zeR5QvrU^~^C3KAL)AyO-QMu7W`wkqOklSZsMq;n1QGJ?s&d3(i2KeBW3=t(P2u@EV zHEh97-&1^(^(XFUr6x4WcG<16ywu_11s4Zftj8dE)q`#4JiW-~O2de4ns+r~`#ic1 z5uZoQ zA+jN^C-1_)K@j;V4S=H8SSL}`&q1{8xm>+1xq}zjdQ-l1hU155T~Tz@2bTRr!bRdq zE6h7gtBJgM{-U^tgYe4ZBE8=>IS$*-;`x;A*sfwrc&?IOYHoikWL0G`(B%lNqb8bv zgjN;RG6KYg=Qpaq^@e_if2)Xk>GC-g1|OhRp=dUV5&0P|B74|d`1U6L9|Sus78lWF z_%Di?IWOK43y_R$nU^3nkXgm?tR#7A5M97(${Pf8-{F2rp5HHE?X~DXEYiFPr>S8vD#XU>qeny0f{#9UHL+#D~!~4h;9M4x*L<*kSJn{opO?>p?#;@ z)ZZ2}E~qI)*O^gb_BY-(V-{CEY~RgxCN{TMhsmcZHv8OQqITer;|Z20sKD}b7`Kg? z7markMd{1=pHiud!2SdEgxCSByRhdwgS9htv_1RQ4LLSccojN`BxVth@?C7x7H#Cv zIgPlAaj$qtH694od^Ad*y@GlJw=dkLSJldBV*zy&^^W~c&4{VT8tRUFkLixK$Yu2i z#AcA%;=~0P+q&gR6s{CdC+L3|6(Z_xE)pMjsUzw%9+l9-2dHf1N<|OC@olNWVwSpE z2gfoChxvByD*8V()pE#D)Y1+Ii8f#`HG=z!KCvEP{gMa5tz6a?T5?pw>iAyg#N5EB zG*nNYRwi2S#lAv0BrL>Ju3ClE(S7??DeWt5m4UXZGJ&jgk_$HmlS*2@TK#A{Xg7r5 zuF+=0%pn!*4%ok9H8s`9(wZ=}I(LPvG-B27a8hMvoMA(K?gG2hNDciVDVV#%?KI*p zZH+T3R&U62C62;tS!mfvWjg)!V{9a^ty?7lyq9i8eom(AR{kO05Txx~bdm%^u>*Ay zMU%YC8lrFo#}{Fe2p{9Q%3N8mFv-ORl42hy;l#xV3gX+z-$;t$hqGZ%ClSOz>4_$= zs{{3dIWy6+se?^@N@C&4Owv>zR_$4(hqdb`Q2rRtDnb&t`Z{`g#2PCeLcR2k3 z>ajA}I^l)5;>3Yc?gzg|D?_(#%w5BwM=O5-FAJ?LBJ)=)`U0(X@fqH@TrsTvlC;oA zfA33TTGWJgG+03(FfOqD$}->*jbGq=~s0k1$UH zGXD;=k!D0n2U>v<$Y6cRkYp#g-2r#8Y9on&DT@)mtn5q66+&AGxx)RxrJn>alA}@m zP+u#s+NKAu0uM))b#~+J;kBzg0>TH=ctrAydXA&ODxG&LX3b3EA1OL*NyZzJ&CS%Ub|4y98EEj9<`T|=BYcQGwhHhVaS zF3Xs^h~I|-x7!rBU*Dn8n(Pkm{%*B8`q-Xk;EvC~OHHvzy;BNEQU1bp7p3YZ^+uS? z4HxHs{K5n)VY z#}C5rGAaFbIgFJd^4jv$f;3s7KO?tR*JVmX{9!;%bL8W?Oxpu!U5`}|HDt3Rd{~c} zyHd>P-;(*E&Gv^WEzQx}TCzyZ#YZhGjvf%h5K%~Wl-^xu=o*iU+sCoKVDEtUIe#Pa zX;-{Nu2Me#5nplqZ?CwXWc@Pc2=*?eJCG8noAaxn zKL9^Cg3(>UYkzn((%hPRGMWZ8V_Y&buTG-{hy*2QNm^in@VN_cqpH`Q1*N^bRxnpc zTKWeJ=2owi5n7WLa21D@=w;rt7iE}%_x64of(De6(_RHBb zddfM=^^^-^DH_M#D7tr-m+B-Oq)!9YhT|ePOC`9lSyR^+B5kaLp5awn=>|sKMoup~ zV>%okoxxL=7xc~N*5xA-WUV+5hEJQDiTnW}H=wf^Ht^AWK z>OwVni>qvdsbd3>B~gC7k`#D^IGdOTQ1*KG9{jk;$ItzE*=1FHEQcG;u-qRlhT1Z^ zryNS^a}%nx2|)9C)4$@Qc>10Tgasg)QUkC@9m$5j4Vp-jkOpT!cv2m*oJ^ID+YN(O z)%d&0#Fm7Y!l_R)NHd9FT;MV#j>gjJJc9nw&`QDj??+Kcst>qV{XMkJYlx)2QOhJ% zVJpr1G7N}D%>|~^rx*$O`#@i*XgfklC&bV)Y*VhgSCz1Lw7j7q@`S_R;-*Rh35UWq zh`b{HfdFJyGRlO~Ih&HXR_`h*7mz#XDa@wQNE-25T+8{QYH_C?YC zy0;WvsltN$nA2gnsy4jR2iH>ieyST%viv5mu59%EM>x6a-}*61v%(+f47fqjEu_`D z-!#U{sl_xxm#L+K5keAv?^M79X2CE9#+Lw5xCQ2Ni-!jKU2F5(+Knk*ZjoN7H!Q2e zXQEuiC@%)uI9a@e9iOH1=w4xNz`1>(1p%TDo0@Ix;Zp6q z{%}Rj*5wGRBl#5pU5_vyc=VhWqrQ;bpSRX$^KSoAkJ+B@ZhP>KukuYr@p5Moo8e;X z^B#sMB0k!u9AE3!%eL-^Y7ynl+cq9$Tqc};NJ9`cCCz5Km zJLg)->8zsog0pS(7qg|i8-_;CTZFHy0Sya?C(Kz&>fI*nP3gR{faJf3yxF4d&8Xts z$8VqlDtd!7SkwrQzuP(ly%5hmZIM59A~HrX6pDS&MV*+#Tx|{SVvIO3?tGGao% zQ9Uw7HSHcTCa&?w#GLF-xxL1;Z#yg@XHerY%_DQV4GQlO-=keld}Q~2neCcK_8T&E zVD{ML^j58^%f)X(cTYU2Vh7Y$Us=db{n+w(RtZK-K@TPM1sVe_oyjD%(Wz&t&!Tyx zvJvD$ChDM?ikRdH(pCm)T;O;Wb`@EU`T~P(#%^~KNEWrER>RYiST(asaY|)lju-hv z1qwz2Ha$gHgsED~KxLQR#8g~jcSTpUbPm(d2JRt$z%}In<+lK$RFyly{yk=-8!qob zUMsy>?hcq>rlQ7w)QM}XiyGe_x^zZ;qLgY*XY=A3KlzYmM6>WhCi5@~{fR4ivl8l~ zK(Yo(LP#vov z?L<347DuH$vISYFZZ=$ANqmgNmSo4j4xHhE+=uJ!$tF3I@kt!eN ziJ=;Mx{_V6peF`34}m8*e1=%dJ(=88hu^>h@m9MY5m#-RG}-u%=BMjGgjpo1AC z3J2DJ;Jzj`;M9+Nujqn>?=vLqJgowe$!H>CUmz>>hst}1E4(}qsgU%;jx6GA6pTdq zQ#uj`)aUgz*imtsmYHNYG7LkYe=-bKih}-P8m8P#D$nHuZqe@c{MrbvzT?sa$+%d6 z#Zm!^mW;rwdE8>b{749G4f!MSf?@c}88F;~>bWuN1igo$=yyi-tF%{o2C<5g`3OBi zcsLx)z@WtA3{p)*9J6=iV^qbOL;Vfk@q`d498W`yt`kTLVxXC*N?^fc5&$<} zB3BJ;xtq@uULp51S65Cag|Ogt>@#~VxvIoM-bLesH^^`*V}2v0^7MwnJaXGWbvdqF zNf@XkxYm%60x0@usEn+|T5jt?gQMuWU%ExR8t0Z0M`ikC_}tkDT~4xfco;A|+!jy= zVN7u+3T0WqR;i!IX|%F&q9tkh@9%-pe=BZWQT~=enu&y0RT`)dyts{gEX~$E^{rIX z0VbMiiw${>;#LQDqj(1yS-v9`C^l{!m-$6$1{5c{7L#;SsVQY51LzQY8rAE7Q^ck& z*@5L46~$W;0u2R=hKpy&I5mC}L2I+(EIB888Bfm>GgA?Jfn zp@-Tvj=321zbBD;XD_a#&l|7b#j{dN?Ybwmh1}krU-5!@KOhD0OATs3wMH~R9ObUY z4>c*%J*I}BDrz1^e^$pF4YTUd2WqI}HB1s5s7vqTq1S*1^=OE?dPzkX?~-l`#BRs@ z+$TjmKy>P?Kw+@R?i?)h2hm2uaO$N9x5BNJ7|5H7;9m{@_wg+`7S`3LyCkKRVOayZ zO}0W{O9VZrsLE@CDNTJ7~s)AVu! zm)}OxhST~RS7Rvubf`p+hsTI6fw9*=iWmH4{MsyC_X2t+k}XI zW0QL%_G;I+XYZjY;S-XZr3_D-*m(5tb`zUsG!M^cGI4mfftjNRXLjh_xygv`2~k-i z(wjE!ncHz_a*w$7$uRm^qB3!SK0dk{6$7Q-aG^b2Um6=dA{p3JJm>5#uKS=ZUq!f) z)QP6atX&8s4QCwe3AB|cSnLYthoegE-<2+fYF#lO>YhwL2d|#=Fysv;b&a52v@Pya zetEq&MO8eO1{%}*nFmwN_$-C?R5D;-%B_VKB#8iEYClxcF)z@4Y6wIOpchp#W!5)- zMxRv4b~zPn97w;FME!2Kv3>}}Tmq`5>hL6%1Q>xsX@RLjGNv&vs56Wnm5M}MZtY|= z&Y*3~kB5fSV|wP-voJM#;zhbu)7&+aq7ssj*uXC+<9}Qfin1uG*c9eu7-Olc>H-h5 zX2()1T!$7_VN8_MqWRJd5HfsPbpcq+Vj?wm_K;6d!M^syo?d z(H&6fRTR1lvuOx1u!(fY#2#e7Mh$g2+*h-3?S>}Z#(aQEfKOVDwsY}q*K%>Q6iuqRQL(KaG?efYu@Dh!@fT1~z5+gdpTsmF_FUXpYQQ~Lc#EFMr zB#Js%aS;((sB0+5Nbzcn6l)$B&EAqclyDW!E3LwW{|e~8JLB_mV@O4vqVVFRiQ@#BavwGUB$q_UY9bE_qejjXTT z=mGASv2q;cqhm#XHVgNEG3Ay=A|Y}phTZ;B83+7#Wos5aMNsfx=Vm4^#`=mso6A66 zyTRO4Rg4h`PnXJ!uuMu^PsL2i=~45{Xxv}Oc>KSgX!zfVe#MN;UySJge;=#I5ZV8{ z$lpafMlWS$!k>)kZCpcDIL1J2oQIJ9E{_wTr{W-KGA5$_WGqg)h0hhzhuVbvl1(cu zSXc!%Y@#3NH*eYy<|*^C#GpUHw9{y48Wzz#swH+jas|(Qbic3R{v@q%WBu zWdAX`MN^P{ivDaMEw$BpM#&i(M2(P(^mz)4uOJ-2PXWg6tECXZa*Z}KKKmN&ro>8y z*EbZS3bGHRe@AcX-ZQ?Z9vV=@p2673b_YLUf79D|`U9P;;a90cl?Aa?F~FPZR0m#O z&FYBaX?|kEC+W&mBVfn8S(c1u*y#^)V)WDR(tjAE@6lQqxTqyoc)LN#eY!mlk|o3vozlL^%1Q@b?>zwV{ypyPw5@`7y$L1*dsZ@ zNOfj26#%nBh%4Iyb}!~Hs;u;qHGWm3lMw@@rG37_rK?6%t-316B0lcgNR??7ID5gU zOK8Wez1-la2fGIjmDo|W@K$do3-}OfejDvAdd>?nM)|N!=1C`6(T{4~p16n)H-vy^ z6hW`fj}29*M}5ojXD7;^#s{zy2Ew%?M1~Y6{FBHTs8OE#5gYcd$_`7wsxc?HH^Slr z{OSlr)!6Y09}tYzgEL#FA8qBLS7QPqn;oynQbj=S>W~d=$MAJLn2Y&d?Bv^CM0hsqfWWjgN;@p4tT96 zYhncVW%cxx!CFoSSaF)UuAbKqeOGy^#ml*IB!wYz|8WrRqE&zPi9*yyi|5&TeWPTk z)4<{|tBRXgVM!`$X%r1)fyBTu!CG=Neeh_y3}Fr6@!$xW9)S1B;}}yII<3N#Q5I8_l+xz zFmOZ?21ey>?6X--{mH<|5bZZw!TgPIU=F$osf#gHvi?1EJc<^xK(X1sZm%YZ6QkpL zbsje)H*;Xr=&lKABgSWBP0WbMNa&o=Br-8-aL3+_#&zqL6*Vk3B`G?kTV&7h;Thdt z>=M~MEvxU?@c6OaoA*tK&d7?7%gpH1EOJ7RUI|H!;aXd)@5x_+spyj_sE58^!s1cQ zJwqp8t?Tk2QGCD+R(((6#ExC2qj7JSSrD1B$tv>udqDOI_M<+&l`B~_Mu=%$YQvt17*XnB`WxX`)Z-+Spl?c>LZLH z?r4wKM3wQVnLo2*NuWw&O+C!pLDF})TKyj}%b}v%gMX|Tc~>R?ZJe1RM_q3g zQ00!U4R?lrK}9(}#K7w~O!nb6R1pQ%Ps$3Y6*)9QFMBnow2VpZuSqTjhB5E@9K4l_ z0X5~nUdhE!jEp1a-@O==bcRFw%&L{IW!g>FH-zj*5mq!lx4&W*P%-JmYj}LlpJ2UO zS)e=RCGKYAt(EFnMrJVhh;U;#vltK8u^Q@H1Q=a5Fjw6aH#&I0j<%Sc*|-r?&v<_V zVD~0=R<~|+!0>x|GyIB4=ond9;s|ZGumR9$D@OCTQ`E%v5KM~R-NL>E`$y~rc)X46 zmR|$K`X%o0a63Dys8C537lIQN#-OZu9>xQn@_<^5$enBu>LVHKEe~-v-@|Tc0{Rr8 z-ISLaUf#=2D|3$d$Y|sEfwC*!>JTe{Yn8aa@%j+tK{8d^%k8$kcvh6)kW%u{*bwo z_SH)+K8+?+Eq?t=O{#ddr86{4BUO!nuUVuS(*ARWiUt-cjx)7uSsn@gZIy}wlKHpU z2~EUGJ3FLW#=;*N26#ixStX66Ps3UkW>&F0xx004r^iXtmYun!4jC7 zaOoa{(KN$T*z}Vx;b$_O{WBF z#s+7;L}8l$s+1ee%zZh*R`1gB7&r7VQha!Qy)_ITrWsx8a!f&}^J(D6os7JCyt1m} zhPu@;8>aFbQz8%#%K8<+`jyInkIi8~CaGb3T%V`lTz_AN=ii5;rKyFosu$tXO6PyD z;3YiFRzcg2tK$`N#G9$;P!+aCH&Gp^N9#V4 zXcD*&BTB!osfD6Sycy)T;Lb2*2o_+a+A&s`+=MUI$B7?Yj2cnAss>HtoAT@Mv?>0C zs;~v$t-2U1TAHG)|@!})t0rFhwz%y0&f3+)q(aaXdh$a(Ujou z0Eq0$Eu!B0t}yeAtPJ0cDf)*=9AUc*xMK1%6@F+&U5#BmxEU-))$Iu$y}0yD{=;-f z6m03k&p_L$$oA`Le4lQe9f~c4Vs+q)bUsS`&`mr(SshxvjfHk9cQR)buPkB`RPH25 zq$ikFKIK1kE2%=`pAFJ4e$pMLWFVPX^`UqJDZ#3?)E8a~HcKmw;L_U0 zN5Q3)iDkcPf~<4s!w)}W6@xA}f@RO4Hc=|A%?N(pKzjF@>ad)QBQ4CLH2JGLuw_;t z#mLO!lT3%|!dSjbZ~a&N4$*@FY$0%}Vf$CHECjUsa#3M|*84^>sIgw{DAV?j;-O^Z`)qLF>ryhk2k{t zG3$5+Twc$Q!rl$IyR~kZE-rjYUfmba1iBC9E#T&3K1hF^{DkjO?#|`b&M^5YZzC0? zxYXK7*kg17mvC!^XmmSoEqb;xrD;kl{YxI{GgKBuzjlIVlbG+qj+Rb((s!9-P j7Upmr94snH2@jnty1F38!?MN4#cKXHNwp@qOmg`@`14U8 diff --git a/package.json b/package.json index 01957ad..56b68e6 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,23 @@ }, "private": true, "scripts": { - "build": "npx @11ty/eleventy", - "build:server": "npx @11ty/eleventy --serve" + "clean": "grunt clean", + "dev": "grunt dev", + "dev:server": "grunt dev:server", + "deploy": "grunt deploy" }, "dependencies": { - "@fwdekker/template": "^0.0.13", - "@11ty/eleventy": "^0.10.0" + "@fwdekker/template": "^0.0.13" + }, + "devDependencies": { + "@11ty/eleventy": "^0.10.0", + "grunt": "^1.1.0", + "grunt-cli": "^1.3.2", + "grunt-contrib-clean": "^2.0.0", + "grunt-exec": "^3.0.0", + "grunt-text-replace": "^0.4.0", + "grunt-webpack": "^3.1.3", + "webpack": "^4.42.1", + "webpack-cli": "^3.3.11" } } diff --git a/src/main/_data/site.json b/src/main/_data/site.json index cd5dfcc..43abd4a 100644 --- a/src/main/_data/site.json +++ b/src/main/_data/site.json @@ -1,5 +1,5 @@ { - "url": "https://fwdekker.com/blog/", + "baseurl": "/blog/", "title": "FWDekker's blog", "description": "Felix W. Dekker's blog", "author": "Felix W. Dekker", diff --git a/src/main/_includes/default.njk b/src/main/_includes/default.njk index 5a391f6..4763413 100644 --- a/src/main/_includes/default.njk +++ b/src/main/_includes/default.njk @@ -10,46 +10,44 @@ {% if page.title %}{{ page.title }}{% else %}Blog{% endif %} | FWDekker - + - - - -
- -
+ +
+ +
+ + + +
- {% if title %} -

{{ site.title }}

- {% else %} -

{{ site.title }}

- {% endif %} - - {% if title %} -

{{ title }}

  - {% if date %}{{ date | isoDate }}{% endif %} - {% endif %} + {{ content | safe }}
-
- - -
- {{ content | safe }} -
+ +
+ + + + diff --git a/src/main/_includes/post.njk b/src/main/_includes/post.njk index 81b66bf..e92e7be 100644 --- a/src/main/_includes/post.njk +++ b/src/main/_includes/post.njk @@ -4,6 +4,15 @@ layout: default
+ ← home
+ +

{{ title }}

  + {% if date %}{{ date | isoDate }}{% endif %} + {{ content | safe }} + +
+ + ← home
diff --git a/src/main/js/index.js b/src/main/js/index.js new file mode 100644 index 0000000..e607946 --- /dev/null +++ b/src/main/js/index.js @@ -0,0 +1,17 @@ +import {$, doAfterLoad, footer, header, nav} from "@fwdekker/template"; + + +doAfterLoad(() => { + $("#nav").appendChild(nav()); + $("#header").appendChild(header({title: ""})); + $("#footer").appendChild(footer({ + author: "Felix W. Dekker", + authorURL: "https://fwdekker.com/", + license: "MIT License", + licenseURL: "https://git.fwdekker.com/FWDekker/blog/src/branch/master/LICENSE", + vcs: "git", + vcsURL: "https://git.fwdekker.com/FWDekker/blog/", + version: "v%%VERSION_NUMBER%%" + })); + $("main").style.display = null; +});