From 8044ef7a83629112d683347b1080f8107692cc72 Mon Sep 17 00:00:00 2001 From: JaysonCleve Date: Thu, 5 Nov 2026 20:25:09 +0100 Subject: [PATCH] playful redesign with tiny factory mini puzzle --- Dockerfile | 2 +- fonts/lilita-one.woff2 | Bin 0 -> 10672 bytes fonts/nunito.woff2 | Bin 0 -> 39128 bytes index.html | 1575 ++++++++++++++++------------------------ 4 files changed, 623 insertions(+), 954 deletions(-) create mode 100644 fonts/lilita-one.woff2 create mode 100644 fonts/nunito.woff2 diff --git a/Dockerfile b/Dockerfile index 2532de3..495f309 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ FROM nginx:alpine COPY index.html /usr/share/nginx/html/index.html +COPY fonts /usr/share/nginx/html/fonts EXPOSE 80 - diff --git a/fonts/lilita-one.woff2 b/fonts/lilita-one.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..0fcd1f98812fa3b546543d4af95d4d8d2ebcd9a3 GIT binary patch literal 10672 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 W3uWHmg(q2nvC>c!7^N3xrAlFoLTn z0X7081Bnm>AO(m32aFpG2V28BaX_ZSf{VM?n^pDraLoUR6{=f0IqJ7-a~pCS`@BLMD2pzzdQ?LvKnBML9IIBs%R~=8EQ2jaugU zaoyW^@%0L2=%_Ia9X7l!SDR>VTyn&g@5l5!V7e#HuPlAVjw57FC3wue?=*TQF-MqJ z5J`x|Bu>aojyqnv2--TKNyM6&rq?L5pX>3WdHFnU9T1Prp-LoetT@m2=lQw)x%a)d zx4ms|!8XPQV?~ebiGUbIl-XF=d}NeG*@#)p3c@duMxp&1{ZYou9~+*Z&i_+blbf5Q zCXrf98&PW`O)6<>sS3rq6=(}=UJ6B}_?RGL_y*gX!5DA*|6wvW_@aC3O?7Wbk#J8W z7}b~^%ZdIWs^9N^z)vGex16mw=`WgmoHxW#DF^#K)|4GW+HO-M6@t7#5_g`l~5hr-@bp} zzAelx^ze*k@-rrKMTXdrAuB_E)LGvXkR=)8goi#bwbuew1Vx+ihw{4S>bnY%2X{A_ zfLVgi{lccDf$|EsaE!P!F>50JH)-YS8f){@ch!Fpk*F-NSvBGX(087Hxq_y1@5lG@ z7xL_EkJw^4<-m#m%c;%8N#T!Flr%*GK^g~WncRzYTzQuTB{r`EWS}4_^6Tlk!{@Y5 z8A5}Z&$LCRTf4`iN_1N0VG0=%$Cg2ePs{`FX`fNvJ{&hTK(yF^C`|)Y_zjBI2PCQ*P^bnax?0e1YY0Mtvb<$!>4};E4=05D0FkZ_ z$nvz(4kmL#OtLn`aNK;_+jWn7xvrJ_`8LUl0->y`S9vL1XnKW@BmwP7)!r76gbNNK zbavB;&ULJ6aP}=8xLlC=#N(YV#K^b6>Hvtc!jJlQ&an)+a?y77FWtHqh#`}i!vEX# z^5o@ZU)0w|2qBnnfpA?vDK(i6;%}xu|(9_)-nUZ<4j>z zq=1z|@bTN*OtzXm*Wz{|FJ^`3|1q@;?9Ju9)N71Pl_h)x6{+u_0;X$bFW6B3Y@Y%t zq+YVrSYg`Ux#{;MKlx!1LI|-IYaz>u%Q-Xm6#zm=06+?$4!~_(n3foVePxLhBqDko z*o=FD5ny^ljDap?%^*W(u{mrWU%(gfE-_1Vi5_{3JWkD0C#aLO zMccH)7FWRk>-0;=N#v3zv$ta-GK%yebw~-$ry>cLmW6~6|NPYbgy=_HLtH_eLA;LGh1h_2 z=~DU(q7RWkMDltbgbATQ@DWr5flJ9kK-t1vfBai-+j!D-_wsX(-Lq<8>-=PEVGPa1 zH9NH7;T_ob&aP$W9J9x*Qd)0(+uQ`-y_SMkt(yP&p|lkM5P#2WKzuhZ>^9wZTjvVR zj?JFgGNrR}7R>9J&ZT9}ut^w-0P}A>&(Vx*7y|I`ebpDe+18%xvDS8N7j*0c>`SagF@cq5?zc07{7FovgEFPFDHhJ&gdJ`gW z{2w6BnWdfn8M_{`v#3*eOaDip5Fx# zpHnt`oL~=`co$+T4O6L<5Xm!nt*IIs z3qcMy`d4d$kk&&ywP)>bCI^A*?iFou;j|rW;X=bkVYS4G?y16*JSB(6OalV%{C954 z%lCw>=Y_y$Z~I@%7Y?gKDe~E8Kv3#*csH+C0Df}-z_U9L_fY?9p71>dJP9^AMc7z7 zlN>dmG8ksHtxeZ?OshoXgeoifE{)4h0e>yF^vp^}FOkO|yUUox@DsJ4{QJOs8)Vtz2bl0gK8pos_`ssY^W2{yJtdtTBF_82CR-IuWBaZD zc);CxXL*$iXn1~oil7g`-%l5tF|l2oiJx#nG((dUUw6CC$dV?FF^#b>1igieN;J8OV^T-CV*2001}0OY`!S;&B2K%6#cDG z2IInu|A2w#eE}2T|C#Ui5G}xTp_fI&d@()KUGz$&s~qX0219PQKgU1yWRa4@buZ-1 zhi|&+)NV!jt+P)d%%rr8DNUAmdeO@@6}MVAB%^%PG$R|$yUXTNKbN3ut~=9CdxoSh zt#ib~0qy^QQJE-j2K_q%8A) zCjVYu%M0!~VC)U>zi&>>DgFXoZ)B-HTm_GWZ%v)|FA0wFA1-otz~1^-=NYr++%;JU=|7S-j!h*b#E<-DR(qqzdi8 zeZ0Rlw3!aqpv-tuc(xXeVaXr;$Smd5bw_>Gg~pkP2CVEMC}VQ3P1t0HCiL!eP>!?s z>>YK1Iwu?|u6=M&9@CQydxuOiB)FUC$2Ah?ob+@)a)`4W&`)NMmf!Co;@JJ`+j!X4 zpEc(i^(*kkNo&84r8Js&WxjkbW54+hp79m6n0aD511W3H{IbzXYkJ+)w2--{N3uA+Qa|p$Pq#gT9kLKsLiTd^H z@7Nfej6`$83}KIhj#tvEmM|dKHWAHA$L@q&VNb zeZh^(eUdTds$3iEjypIYPHd_xVK$5<}ui8DvaWTA!&>^mwH$Z-7YV$ zwYW!9!-hk3(jRX4*BiNHY zH3_S?BPkPSl67jHg$-mzPrR}QOx7=p5hhFBw^UBn1if|o2K14$Fx4-iygj@%GEonO zy$i(z3V99sdW<3DI?I)+bpv@LeV!vFY_8&>wr!VT*|80c4X^Eau6id+w>mJJxNpSup`>P>Q1+&$SE{}CaQ$ZEOi62}0nat;w6*y%+!kKsM{q#vwl(pU=Q(Gh59z_Jo#7*MXU8L~Zyafu%gHMb0aUVL~Q0nCU9TjOa`s;sN=qPinK3SbM$4Yid{#Wd)_JVX^pdp`e2)C*3%Bb z9SMR#`*|0GvN&FTIcJhzrhE{p>9pu$yZ4t+4L0J&!Z|sBl?k$Yc`9ei{Np*#UXKd# z)*R_~sUx6=tQ{OTz>6!cbfk2u4Q=ibUb`?q1gX^J;)ez=S5Tv#&fQv$_j2qKuwLQK zg&mA1$#td(j&M9_WYxPdWwq%T%fUzSM7j_lXy+h1UmpD*vBe;cG@uxu3AVvS>lryW5w> zqkx&>-Y@SYc&r+9L_rf_(D+9k3g<8_59P~ajk($2zdqkt${dtWhC%*r$JpK9W zp2xF4@UsJV>*uNqMq-ID8ZQ|!=dovBk2Xg?J$7VVC-x!i9d=#^d`pIJS?(ufw)-4c z;0@lKyK}bcFc(W_?J<7A6@morGFo-Jnp~mm!TB0qwwt9V>@aT8E0;>(`6+4nnflUi zhrJ8703o-bNmlM?qv&U0S9>0ZY{ZUuho9Sqsn8g<>3c_F4$R}7JztY`i?~NbVPPa#P zd*VCw-g@f-4BZQ`5tw~1YDy(H(5g)%6I`c~F_UC!(YQ?Gslp@?G9-p?K#dA)R->G3 zIK-3`d^ChqicUf3r67frl4iRCfk5-D-=P>r90kr7wRRG7$yKgnh;RWCro%TK;Cz3) z-?R(~!IDGB{v0G|VlhWvHCOQ$Az&ekz5*}ck2ky+1|Vl7*JhhK=1D>-P?wW(=fRr~ zp$P-bmr)6kky23xDtU%-B<;-QgHSL&LC=c`q5ZhU0#ov&IkauLvhUCorsyf`M2f-{ zy*c)Bjf#O}ZH*{H@nK?9DFG!0pk}^=%$ce!t`|N!%n6y|kQV|vK(;0^P{RTD$e3~9 z2M!~{3MID|d;(GUmY5r`9FRPZ3pg5HJ~?L+E&^jY7eRuBiy$)LuMHyw01zSLLI*Ao z#WIwZ_;_&UqZmf~5O#BYFM+Ys_9sea0zlKT1ZQrAEAm%H`Du-CIK1*iyxOyOwK|1? zbxtYg_`DDelN14!feq9D#wJ%VDzx!buH%AT zM(@Efx`8+GmWBD<3pg0bKcA;F^khN66sxd-T@g%;avOLPZ$&^o1|f#=D8YQp$9&Ak ze9Xsu%*TAp$9&9({7N!;&P$eb5%`Xt$Dy300a*qzNX2NeR4k@q^o9V8+Q{yv#}OKN z!c_BDe>Mb&+g3;@=)I?wmx}xAai9t02)50OkB%k|^a-0hr2C;W+BdVy7%CQUPGfZe zl$Sd^qj42X|91w@0|r-^1VQTx#|o%iFxND3%~lP7IT{lw0Mf`s9yl~5utdZR!UXZ& zDPCX3u`8XB8Ejuql!-0hXIpYJ%*uttJ<^2e)nwKdaRL;w-w?@^h7)*LN)-+h2irGK zp~wL%q)r1Uf_No5o7c$5^5w@}>ddh4@Dv&u#=hYC6&Yfd?N6P&>*C(T(mZ`?izXwN!MItQN zq=;K(7j7~*43d2rjT9-q2-1K<#3->lGb_BWt+_e_2Ym_(vW1xIGk0M>C;>T12I{P;el2&+c$)m8mZI&$K@A5Bs~Oh%o?;S4)UR zf=6fh*fI>E$noQpGm@f@tj{pqc!%dqU8Z;>!w*Oz0H#uPWLFDw#vSU+gzv}G9kFr& zA;Xsl<-_I3o&kdM)E1OdMRX&JN%#_NDWJ8^29@92NlYHVFrX34-~apI7yya{QzDcx(jmG;k2*HM7@CBCJ2bCsG=|%uKS7tYkaIL2*(&GzZO1^U%F?KV$w;9AH#1 zL##?xkR4%HaiZL6UJbuakPtKqo26ayKEX%(F4bKPWx=|%zkc(VZ*I&hd*#$*az9rzc0>i+0VOwe?prc zK$Ko?4aL!cm~s&FiRrA=i0J1K{FFSweiz$lAu; zf~f$$S|NXt3jK>P3QSs?+SzA)F^C`u9$|P!v}f9TTeVHwwL`mYkL+!sUZ-|hS6Io& zJWU;CANr=YaWD`a!5w&K%eH>zmOae=sRQN`{ZgZ{7OV-`%=ES;QVA$}0vywp(k^>)GY&VDxfooh^Dk+kCah zopaw+KYHh(2U@kc;%BEcvubeK8GriSA1>&FF!+Q-WaJbF3eTtEN=wh1i7&tOt3!nq zt?w^Nr$$}gXo*^^Bo;OfUOxUc;27ZhP&Tr_p-uFNYn8v$r0(6rDpX?l@q-gD&F0NZj083pga}{Xt4i$%zU} z$DM(ZCpW+Hu$oa}qKGG6sxR+8#C?iMNGr)JDC!iwUv1VH0U=Y^AIh|#Gb}MHZW0?Y zMDO1K*h0chw{+`uLl2Z|G)82&nAsOiC*Vgd@q;BdStp>g5iX+Ii&5jDF-70muH0N(JaX+XW;7F{0z@@odl zC#vl$atN@Z?H!7a-R`C)lB|5Bmp@FM7$zbo0<1GDNFbKh`DNcJI9b5E$ckYtmw6e8 zxV}y93Ir^&bvt5bqJd7gE}wL;qZdoEsDl~Dl6hxGew>yJlAt8&A0UVRi}}QYdZhX= z;PAVoP~Pm#5^S})ZIjfb2ht@2iR?1RdOB6 z%;5#RK^^)mxqxMkuq&6!<-wcV*C|P)8?zd|TZ|_at9+&wxZi`8ZJgaGCSgW{c)LA% zoT_kUP0kkfh+sa%X2Hg1VP4q1#dC%j@r#{$Jy{kN97kQ7bBLY0G+E$yuM0THCPx~d z!vc0Zf<7-FIYF*sSMW8)5fqNDk%~!7xD3O-CYjyGa$p;_DOS^~}a}UH`0f1G_GF zeamK5615wcr8yhai)hZ4)!LE>OklZOB5;X{lK7^lVaOKo&H*{Td;zNt02Z`Ha~!)s zF_!AMVd%OkWE{|J8(Hfsj}^ElEi2(qzm7}U!hozT#unb_b{=1CQ9YmZa9(fkK*x_R zD?nuvLy`(sxei;9`e($t>UNs#7RkQO z4-A9LyM+&7Igwh>RJFlnJnYF5^0ChLu1`s^#9~Qix`fVT&4KKDo9I1ewMTQ!HR$w9 zQbLBRDou<5xjSy>&MMiVD?odc=@*9A;D2s8Gzv#IjBJ->a`zLfKIK=8Btz>rkei&I zq2Z%jOw+P_e0uuMP?ouOrzU%uHk72{rsH&-Z9fKHpBM|pPH6q zE*RX$x_&pP1bSBmREc`TmCN0)BoLgxY*IHWSJ*1m#HfeY(Nd0Cod6Khf zdJR_T^?gi}EsUs76O`SaiZ+0$>q1o|H)GTDT+0B8vKQw4_ z)q$a{oHZ8E4yz$NUjUOA0)d*$8w!rRQPg$0prCh&4W4ro-#V~acn059k&gJ}JU7^( zHlZ(M9sHLQN{hQOP&T&4s=w~byzxE?YAP+6BSXi^#HrP|%b@Z^_dHubCO=;4X>^nZ|S;e($5@O;mF1k;Cn;9psONOVnbjA zMfD2i(#$VTVNJ;e8Hv&q?z1!V(2`GoZc@@yOBe% zx&{B>=oJUgKhJJW#scX)2>7RY`^})YlDZw8Z&`&f%Uv#iGkwVP6=NFs5*nKMUiDTbuM0;nRK$()*LKAhWM!T@&~D z`%Vo+0aH#O&|hpueJU6;BmG`Ge8e|})k$^RIPye|1~#3<2?1q9u9GE1)NPO{S&W`k z>RP4lDg5Cvec)~u<_C_6YgtfJKC!sF>{NvH@c2IbF|2tjW=8a*;Ui&#az%ELdMrFL zh+nWx8Bb)CD-au9!4E%>@$16UmQ)D7in(m#J%Ez%8XiP{gbr@Qrfxq|xkrxmLszrO zt-eeKbd9=(+;&T@|Aa3YdpGKcyiq80&0Lh-X3vL|STk(i+P`UkxG-%5e2!)a*KuJ-^_5f67MQ{mCI_ zZ*_GrzSV6$q6#m1(XA3En~$lLo{#x?!;2$9ar;4;O5uwBE>6eTTMr)uy{+rU+z8n5 ztq!SM8+wAymW|mr6ut&{wBYC|qz$&iL(-}nNcU5z(yXU^g>kRWZ87$s3>uB>(){Z2 zb}K2}R87h;F;yY|FP`R)bKmneBXx2sr@^kx1{?Nfg6&Eht%YFPrLJ+V$b+6HalWvX zd+9TDZqgpeA?Ghk1MY}?ViSGIQ_cTLrFTM-;v5kFjry5PmKKeoRKx`D)E~**$`ih?FVSzqr_sceh_1i&&hw)6mcJb~roEfG2DhTN7;L(owhn2+ol@fRmRtH8#V4b4Gy-1vm*SVz zCg*}2Gdi41+x9!#li4GXQ?^La>{yZct>o+K3QM2mZElbl30cr$176!pWMq;eHNF}kt8HWLgF*Md1 znQR_$(RC24Q!Vpw7xiq>Sj0}GTWt?+f!ix4Nv+D8pK6QNPL`7=h{T1y(1F2e*r{ieNKWw(~gyBgH2-8 zJe1X5Z0O(O%WgAoNFk>ywdLtE!+zq6r-NB6)&ILEkq*!jnGk4^Wx8HD_nv1{a6=gG z^G3Fn!Zd;V0*mHSl=5N`QoAhRLl-j%0Xdj9E?c-FThDc0NVHJ$cVgi%R^Ng4h8vBr zMyKs%K{^dklUqd@;;>EFBJVTa9!p|1)Z>uI2%;_$af9V&c{#)Pf$~M)|Drtr$LCd7 zyzjbGa9~!L zsMx)YsRI7qntRCQWmn#Z&3b>tqKD@G1Tb{yRw~fa(HoDv&;PyYwe-*a6Gs1?pFL3d z=we^QIEl}OI7xqW_AGpLyNQnmu3kKI;`KQs+uD#g>f8E#cU$|fzyI%_zd-AnB9UES zh2VY6^W#V3V_O4LYEY9KEg`e==l*mS&? zG0D<~kvTL<0V9W&x&Y3g8J;~F&Y{U&yY>tq>cY*6@V^Uf-GA8qa=V-zf;O z@`ZT=YNzI(%ku-=2A7#d=5*}ynl&@OK+FtbXsojMg{qn2y)blrXt8}BN3oPSIVav{ zS0>S_6wzRfLNT_Qg-|n6hLk{)S|?D@>~J<}@WE3Bgc9kAN3E5VloqbcfW^3E3wph8 zx%KvQc@x4xp+-}(RS?T6zVukp5)Zuj+<=;ZD=GJEM+aG zZPu7&!@|Cip5ES(g&UgfZ;PrH4Qqj$LVw{XT2E*0M55M8i#O&MZItdoK`U^yi(^!L z0k{-=()nOkaS)B#qj<2n=)roY-`YyM9pT|-#&HUxsxw}VhWx^*Y28M z8%du*La$kWu!(-KagPl-k(QiayQVfDn7O;0+Q{i;`Nz;ou0mgE4xEcc?^o~{&2v&% zI=aL)R?y3!&>A{2_R;tTm7Hs0(_H0!HmP1ix8)8kJ3GR5HcW=|SyC&d%&lg@>x1w; z+lrp~-J}7JXugxe*3l&$WBJ`23agHE|Sl7dCVwd zPJyA>Vgw8*95GBwKD_)2&?&_28pm5ii^m z%=TxYT@6v-LtElD47w{KSl;`FInmg-)nbUNgxzkJsHaY4po-n)j9Noub(in&M@NmZ zv8D@1Xmdg<>UGJ9(dYf8BB}@XjS20T{;2u#ITw~5e<9B$XpHp+iRUg)|7hBQHhts4 z0W__Tt3*96x3JqjZ-b@Y`Zs!LN_v62(0|pZn1;dxw7y;@YOz=(E#hru5W2}i`Lp90c59FMJ$=KFO+PnUO#|fOxTI4TCxC`{C!I%f?weiQWrA zd(mTu^FV2%xRLn0k)@d2QgPZ>Q0{bBdY8jD8*FA{y-L(!l@P$d@XU8GotG1nhu}X!)H`!2St)0BBSurN(J5SXieF8(Bv#^9Tg~q3S|1{> zEP^{uBd6i@a9c)MMrMhQ;a;;I%nl4+qjo8AGpO&sGCyf~>5mn3r=6U7mrhe1&P18s zDF^0#cYWwH7+Q-R20t0|zMd&w38CKEgStKM|MS2NT5Iyzi&5(W^b6N6f{-laK|{(E(zUTmh5d>R#dBvzf-Ke3rmc_MqlIvVXZX@0^O z+7MTZx?OT&Os4mil{X%fr!3DOcQNq}N$V%OG&cJD-<4_Kou0O6mNz@w*IngRg`}Kj zJ9a<1kJ9^_k`y#^MKZU9UZX@LYP+Ho6ZC$%e+z5a;oe}DKP$`A8gT{9HnXn6bMT0H z2fF5USDi{kggx=T;MdBg_xcUCj^ORnx!_i+ESUQuiRf{;t4zC8KjS;{w2>>k!ZvZr zwyTGkajgz@$$xPkK5Rz>g4Qf}J@}pG1`D4vvRISY#+WmgsyCIh$}Zsp+20%}XB_a9 zir7B<$sk)feWvLReI7||6tT8uD5|DG%JMrz0t&4gB?Ixb4!&*A&ca` z>o5F^oBOl;k?KPNEyj2GqZRi+@=m+klIh;oJ$7;Y^uCN@){kDLK_{l|bCrUB zM39kMY7>$DF<^y%Lb(+a&(Hcd<$1hbXj13yK_RA4sgC-WE#N;9>10s+Y7*8g#V)no zXphFdsm<(#yquNc^AN+W(}RB)|F7z+N99F(VbrAbt;+?cFH0w3cq&cy=Bq9Y_=Xo!%PKUujk7y# z!O5?1hrU>lwi^MxZrT2y^zHw#ybiT}>wz2D#~*o@LI=Od(AQ(R1YW(0T9-jHZOVD) z>L|1;=U`Iku zBCUz#%jZ@E{WfdF9UIRd?4+B`Ww+Nkt2%m`Th3ejxArBUrhQQ2w=}b5e!0<7_kNn# z$z?c28bPR*opiaduP%^!*2rWHBQk%KdCYk&F4zx)In;&WyP{%4s}Dj15eF=o_sJX6PkkP^U`4OuU+&DBqN7Q zGF+fLVc>G2_Ae~qRVx(LJZ^_V(E)tu!I3u(4~sXq`aMI#uN@r{Zvn(jPt9`(bcT15oS>nLqc+5tJimg84@fHafBDCG7Pe!2wKkO~oZx|7 zCO&~R2KXe5uuGixEw4k+3G}_XzCJj0YvA?8pInk@KgNIc)q1`M>X%PXI0uOU5a zjyIHR`OQq4ndn?|t~n=A%Ct7xMK5=CAw05Zb-7#@mr4?Pousi|W}u5a9JWs^Hm2QE zbej!qrx3f;vcN{dq~7y4joynw7D}xvr8B^Xc6G32L3KIJY32QlO2E2mbxLWViDfc3 zvIMSVmRY~MjIyG_b#`@$s-5kkB^sP=cY`BQ-{^ohrqLOX$bBT1forLAg@SRH#S-@b zpaYs&@_s#bc{TZGZu-XY2HRYuE9o;KGi z+t(D$!8dKd7&ukJi1-xIe-c%Jm9lJT9c-`5sgOTA_i^9E^SU0Y8?!k znB7PyW}2A(@eK`ihE~|0Sn=H|(a;)mK8YGTM=C2e+&$KaJnWK42A-Le~5 zQ^*p)Yf-6r61d@Y_~l=r_WzL%k7BAZf3UfD<@Xcj1|r+fEB}^Bc%d}-1~R`1em^JY z6MW>%9@O2HWz@|$7R~!N;9czSwbk2bjSi8xcLG`ueIeWQ=JoQQGWE z8vB!emWj*L!{HJoQ)S6bdG`WM3B%GzuW`&;+!6mMfOm=X&j%I5oIE+i)2@HLP_J?R9a-LIh zNV>z$K}$g^&Io2?R_f-W%nUJTPfy;N zNozg4BZHoGrHP)7wIH+QKEc(^*oeO$_SSo>bvI%XhX26c!eX>(YvJXoTOK8^CjIa= zcoKmaDbcR&hpxQ*WjMbFxd5hS8t7)mx!gN=fmxvzg-d-CKkSOB8}hd@lwuE=W#p6; zcIMw(!r-A6BDc~yA2v>nNN=;46qoJ$%Fq%}9K!;b{MVAKo5cna&n#1mVF^{QP<$i9tSHR`^`~nd_z$y0$%lTeE4~#7vNNKZ=Se~1QeT+gq!dlx5 z;o7nq27ZqYT!1hvXongHvf6AT!ROzSM=017PRIs<%z*(YY8XKbCm;O{7!>>*r}RK> zJ#-<0fd7k4iiId>#k1DWic9tpK8N8hB60Jnq8)@MPh~|rbK|IEVI*eJCWP}=T>8#< z*-^q3H2fT=c=ySY{qi~`U!CIraSF;k)?lZV`9J>nM}Pf2FXbMbD3ppAE<*O~h=^Lg;< zJYGN{q%b8PL32oGAM}xg37B`8`r0`J2UdhyotmyNk&-HtepSfpqvLyXAvVv_!0aq8rs#4gdU+Lz)$<@)~Pyr z6dn0a8#J}ObJg)3onh`+g+;EATGsWw9F_B(ftm`3tUsaG$SjiQkr=lm7hZ*D z0h|m)&Msr?)Z`v#efXu>il)B(4e_Hxi(^N3*Y*3JE}xprIFUK^?F*6@<_kPZPK#dm ztg_rI<sgFM+ zal4HZk9*GTl8ndeF&D`+$PY*OgJv^0;V`64<`}|S!8s~o6@iL+2kz;e6Sr5T1$SFaqw4A&K5ey}En> z>LirA3sXE}t-@azgLT%gu1isF5WTFndvd6p6a`d0E*l~Hl%7bU&Ii))0U@qR=%Qt<# zap2$I;eOh4?Cnha)L%B+#Tps?A{F=2?&bG$@hkuQ;L%RAE8i>qQKzF`M9X~BTjJ%@uT9RkBR@1kkZoqq_R_`rKiBQk;o~O{Fl)` zvkUCtb6W7AA%6t|xvo&ZDN^|2jYG_UB3*nHb6~uPu-KiOZ3yD__Vlzf8($_8o_(50 z;VgZ%20KZ&|74TVD%$4i{Jxo0fThb1vuF_h=CfIQt0~iax6TE(8uwE=X{}!p#*Th+ zKPRxnil08*b%3OGjDILxxoc4bn|wY zFRj+G;2D2n4z)c4K0O<@Vtvpo@~H+(Dr_)|m`sZZWk|L3&qwYn!1}^g@CkS>KR8#- z);mGR|9)mF2X75LIXxq%Zq(s*@%P{Ke|#10%!K&d81Bvn%vD?J>ilq*Pr_mofwxn{ zL)oR4Y;oafl4$6}tv!+pojf8vN(s=jd$VC~QnVepS<>jV69 zU~loWe*p8`K?(rS2%XXbHps*hLnL9QWqP1{M9QMT_66WTq_^l49Wg{ET=HiegdSXL zOpOfKC2pe2Wd+}dnHVAow}mMqPM6KMdruNEL?&!m&dS}!@5#NU33vbjp2*#%GcBxg z&g!7Ogm^sUSzhE(mTl=$WZGf=E+-!HY+fuCGY(w(@>(C(XX^`b@my&J z%Zpidx4~5cQouu=&5JR-ywpzn7p!-cEeU>2cb_)^9&%kX4-NnTN9wT&B1}!>qz#;@ z0BB-RB~?*1)zC)TM4M?#)z(9KsMPyXP{OP#r$SPoCU1_my0Dj+CSmo==dL+waGC(z z7n-ZWZr!aSz?*avZ_zEh8@Ou^-lKc?Ks`{oa2lO_)Q#Et$0>0QwO{-=zD~>if5XfN z2jI2Ifzux>{_)p-l{XLn=VJNw-KPN23h4?KPbXnw@t?qk-i`LaoB|ytYg>y`)c0y? z4QxNq+3nda@bhgkk-kHTQ)F$iSX$HycDnDcnH5po&IWt*XE|v_o zXMbX~#=w#o$eLP=HG=k~Vb)1cs+aTaVrF?x_ao>7ourRwFL$;NgtkvopFeDHp6C5Y zAL!(;A7!-K?_IZL{aPP(ZoR0J23eJ5-CxSp8o$UR%c!fDR`ilyx>B?QY3ZB&G}Fga zJ%wG`=km-!!;>=F_odYhvO(k9WzhcWrq;?Qii~cD$x$VyZTwU-lqk$G1HdFEWFi`! z+7>`61c@O#ctSdOCq`H_Y0gaT1BOxLSCsX$CAPX@2DA7jxp8*$qg9cY)1}m1+X1R_ z?V^lLMlK5lMvpx-=fcNb&px$gC8Z}#DOa!SqsbV5b6A{7{cy=LB(e6)sGREq!z)tI zy_>Wjh=yz_zck=uOZUt?<R^_ByN0!=ygA$ff>$`oDQqU-Yj5V&oWS-u$r= z)}mFqwyk5UVcDr^2iUL)fk8AOh7lhj05?F$zwRJ@LUND=NG4K+oJ0N!jfCDqsZbZ- zRJaOmhZn=o!&~9U=rH;e28F?6Ix*vzHP~D%4J*ewu{GFk?9*xHw8QCn>GbsJjPi`x zjQts>Gd{|=lj+X9mc_~H%i5fEBCe_Y!U=?kjv1{xkt55C~kt5HW*DB_1cf zPrO+aC|Y0izvA-Z4JGW7<)ta5W2I-y3}t6Y8Kem5RWhGELH?CePuW0CqmFzYeJAxz z>U-4x!8d__XlbuRP8*?}rWerJ^bz_6hJ|sF@eO|+G22;WmY=nRHOIQadc@9VYuGL9 zBkVso&v2jO+PIV4cetN(zvcnn0Nyg*3~wLr4!@Ak=EurQ%I^qRf?tK}L=MpdF;84A z?iSCAZ%W#vko1UbNcN|ErTjI;QwpA9f#RAHuM8<)RQ{oIs}`x=P!rT|ssGeeY7S|x zYyQ#Fw6)ru+P`%Ly8C*cepvsBA>UAKIApkP6dHStS4$24p@VEV=^Hcwa(mTt@E z))Z^Cb*uG(O>S$nZL=M-U9?@dJ+%F1=h<;~mOW|TUIKJbgaHq1W&mIY7-dc=0Xl#~ ziZT&S-1r|_6Pevf|+_lxwuJHMmPT~xfc{^O%Z;p?)+_npK@7j(KVD+97Y&ih9o zbzXv|9<+9{LiUCEW69yBO=;kJffSF-+OJ!5MjSih`DBQ}7tm7{_@^cDFTevO{?50Y zjT>jGprrq+QBbb`aplg*3S%(m*9IE|AKQQK0aQF=J!@%?2Q2tYIsZqXYF^@1?_A<@ z7f#=Q{7G0Mi2I0Iz@1hSethpZYBY8Ry>a`|BlD|-#rK_5k|d2oB?KXuW6A|bt|wbg zP-bbf*{E=~F(p%iPr~UGkFmBQGX?VI^Pu_UCk7lTC1#8=ggIYI-i3x#E^DvQQpgwg|@zU?!SR)J`Z~S>HBY5&!}34$h0T>P1wGe7b%6U*IezN_(V~ZXeMLsg4@CLbORP4mr+%SvLL& zokdLiGrRiYu-ybOvZ5_`-tK2UoZGVrDj+Kg6mlqYz<`q~+VHp&VQgI8qooYkm*JAR z9)iA|nWFG^{<_^8hGfR_fpqGyzPXw`R zJvq4qghBR?dVaH#qfgGnyScO(Rp$2>hXHXL*{w|l7dCD$yVEqG19m-ERcDc58ZN1M z?2cTo5z-QxYpl2n#33*uPdq%sQt9cam~%Q*e7aOesUQ+i?x)Z8khWaJ@b`(`+y543 zHQ3+4jxo|H!RBSItlfqCBu>^4fJIbbrx6A^WUgIX z(iH4DhoikSqwEr=2jt=SEu_GhGoEr=DtB)kHZoG{VsmVNP`=Uv-gc)i_gLu%eB>O* zJNHigVYux~8!XVgTxGTnN<@2EpFn1!TynC|uAnH8$CZQ}dCeq@Sm;^zSN2(fyej=3 zYu2jqd85#eZA(RQDEL{o>Kgx(-)2RBStv2ONoiUvguxntDKXK zF2M<9V7%q(II4T*6IQ^m(3q&~o*yH$o_ccA?G^!_SfTE}SUHFwDn*mpn((fJA9B+kdUaYxIP;8xUX9T)W+s<%tb-PRmb$?sG-^()7|QfgScpi9OD^y6Io^_ zL`@7pAi()vQvaUEeaEhyH;HMCDFp&BHkGIJ6FkC<+!hHsalnE(w_=!4z|3rYbUPU= zJoy&=WAV#DR^Fr^ttERVS~?qRY5P1>gV2Zt@Z)QJJE5hVgsuR4`<*WSr~O-`OLxZd zYf+g$P^z`(s`$_&ZQS@|^{>csM70=`qhEk8n`|8zSLl>O9M`R&9D(j)i4``yqzTB` z{Bzgr^0-&`XgR#p3o9j;(0e!f!qJZHw+f3t`(y%8ixEvEv^s=1Obj6{sI0DJz+&nA zO(CXoLs2m!+Cz3OyL>i|-0vKL8lZrRgjD;EL*TRVuXcQq;-X8RXUVGs{_pfC`vQe! zkl<&MT3lx$dLYGSwZ?%c;2!mYn_6_E-dWU!4(=lhwfGRnR;%V9NZi^qVjG z)UjtvV8S$e!K&i+trWxJYN02ee93i*nUuq%vLDCpE?SBN4>WeGIut+QR95WuMe8FL zd3+6gx4(L4t&s^bFeIe-&K`W@c}n$vV`zCPkHKZ^n^(@}^^=NZ}_zG_i5* z;nwZ(BFQU(o6ASvSeb2sJmmV_xg$?KXSGC;j4tONo~v(NPjZW zi>lEfSfG84s>xv6aPS1Mv38 zzWv!3J03xOujA?@>aK+{q5|`O)8$YDGtyGVQSdNm>BYnOeglCTaV)~Pw>(Kfe>(cmF zzcx6vHf;oQSDh~1P|Om{Ks|Spu*~I&yfQJN9G@Fbp-}$|h$o=hYm)N{r4DVPQxXi_ z!rFG6*qSPy3Z0Q7p5(lL$%Q^EkS8e9-`p|BC1aC_I=eHRi^j)C|ARs3i@&(z;1|zN ze6u$YI%K2_?DfJ47Poj1de<|H@6@rqYj6eA-%F4Ybgij1QC6;JuA!J$NwftX zwN6o{b+Qy=;)zh0bUuAaExbhKyuDl^F5GHAS8_hnRO^0TQ$59rCmuNX&C9U$E%J2z zsppNV;=z^TP)aF9`rE?Nw^LqW{j&)If<{>KvzEW@vWT=i3o?Vb==8XTE?&DJ7h*40 zSp=GPuAF4a@ht|N4`lkgoyAmf&$(L_+kf1sK|I8NPR{>QIb?~x^w~vq*7fQZ4{_+6 z$}=519u9BzN9$V2G|*I@>@66NX>4hlF=^o^y!G)}$ajK9Rx41bB$K*9Ayl-+g|o zt*tj)&#kEr{9jC#|MTAqG>!3>kfwfdWIUl&7=ki&B$JVqnaOBL)P@>*I-1}zckL+8 z!w8+z1ddT1n*)BxYHE4y0!$jztBF6<8K8LH7b`+16k4@a?Qe)vNv4X5YI|FTFo+(p zIgh7>*+bg4DY5oK&r?Mj!VZpSZQpf~IIgzuHpuv^7hz{xyS}H&bKC!qaMa zF8`*_Xbkvk-()V+-`SR9%=ul=;+OgE|HQshD>n2j#{dh8Lmt0(ckkAn&AoBz(}oME zp0Rt+Iwcse@52#hwLQkdDOWP-tSYOBtA%n1NG5wcit!9{1zW44b+n|8_Ce7ABs{I! z_h@vmp2_{5z5nm=NtP^W5ASOHM0Fplilw@xhz|UvVk2CK(2V8z{$TBFI*0MQ_ja9s zNE$;16Er=wvZxe36U-Si1!6LIboc2Eo^%4G)o z+^?`IWdHnQt=r;*%$%VB%CKb)Qr5D(m8#+>GCVCxE*_kbOAR@6SE96w3uXVc%0ULi zJV|=2&|Y6^swvbQ(oow{Dn-O*j431FQj(yR$FUH1F+BK$h=HaEPM!ssG z8fMUQ;Ffzt78dryBzpJV=NeFz#o= zr~YfNWb}6Md0ZB(4u>4 zQ&XP1%+jOXTL%-PdKg2ZRk)K!nIE?I>%RT}CqL{rKbd?f`>dfF558Dqd;6b4ipAw} z=im1>@huHBkdpEaJTV-#rSb`Ts8}td9#AfiJdM;AB@Y$U7GEr{jvqVSF*N#yR?Sfl zy}8OCBuxx~tM!INV|Lp=G>U_k*|D$wpBK*4MZ)I$Jp+J6(ZF5QTgUm|{_I7DX>`eS z^4%lPnH%5U7dDRm(fVFpP^^Q|SpjNjL1l9u{DJY?hbIZ%xHT`94UMd}7=VNcvi5Sw z{q#q2&PNI#+!M32p2?iqdHi?5ag^0AKHPm!o`7na2>3= z;uutO=wS(v=goja(bgY^*4oi{4x^8+CE0h|FwX=z8_{@NgAY)^33XYDY%SmgYrp{O zfDY8gfO}TK#uuIHvO#M$U;yr5oxlLBdOl<8ICjl8I;L#f(q_`{aal0Zo5wzgIi&Do zsbfMLCOxQ2FAb$;_!T;y_n^V0ATSZyHS@ih)i@hr)o_O3EXjL_6{r#%+S^~oE%BM? zx*N4%4pM_gF%rumLF}J-`dp8Zj1G|IdK0@o>G5)%>pc40)7qh?;-iIfvJhNoQ!B49 zmT|m@_Ww+6M&0LdT4pc3^HBtuo7`Yq-P1@oaz*?sb@9Tzc+Zb4NV>Sof-~eeVEAvk z9FD_@thP{SR9J>q2`D&B!IcdexC+CgG)Rz12({m0(P~h)$4Sv9F#r1Ik5?-$fN{Bw_% z0vh*_)T;z?DfMHZ+z|x3DP~&GF9g1tn1F(zth6(5tz1P=pM&WWJ~a;pWy`7Bq%8bF z{hs0Bm5*CZJyXv~i&P@Bdq%~lL}8E_3Y*Ig(3;N-$ClI{u;9`(gkRsS|LoI(VzO=( z>5Ig+;stKKKVDOhgq%$~LS@EJ z*9P@kTIXshAvBuB)@V=X@PU$f6`E+;vy`R3U?3jxn$1DMIU~r!xAY>q;7zH=#zgLA zwQubl9!2*va%;33KY1~~XtcW~8m-}C(ZZw2P4?yU!#`O#hYgrj^J=tMvx>f13E!VC z_k9$S!L4GbuYPpSR|0N-n5Vb+)mrUu;y#_Vl0m3%s8s3%uh_9;ONi8Squk%H(5l=J zKv^D|28Wakw81YVB8&^2SY7r-GRrR}a!WBr+925ULyKNIMqHkBp4*djY-n>VN?x0H z1_`}5Rh``1WdtQaU$?`4cd&}{?PSo=K{5fz^N3ee;G(i&kmGKX+Zo?l8Ir&aZR*|b z-@h{J-2okOpIGVE-(7|FMRNcd;?U%AZw6uDw?t7e7W5=AJGzBsVnNcMEI4bg%)H^Y z156DrY3^`l+iR;sA1yo$b1ynl6{&eum5}|tUEO(R`WL#c;Kl(rTD%M1+TWbscc$Oq z90tDDjY9&1QV-udo2@OaKH7AzmiMjTd3fb~Eve5V;6<85mKh}20+#!^{+Q|2@&=fd z7J@`og2B3?cGj*}^qX%65?6GEjdkh_Kxqkmp7ULu$-3meH#FWbifaeEyZ5&jiYYMo ze700Fn!{aQ2xVc@7$=EZDiDs`xAtRZCGXQn{a$mqT0Jfo%t-R%Qnl*Vk7T-(;61a8r@bS*t6T3mP3IFkhHr2_>f3S@%=#Bd6 z1(iW9^y_H*R3S=KDo3tLeJ<<0!2A6EL>S!>M6DN9YACb}dTA}EhB7{HJ|IO^E6Hh? z7u(xho2imRoEu9N?s=A3XfUvIMT+pw9LakMx!4elH^kD-k^5U7KVcJW%+kX*I!unz zbwvUOew`NRe99a+Y*ZU^Wt@eVa=xcZk4Gz?v(BntoijI7Xb!zileKK1n}sq`1N8r5 zdi(u>H9Pls-fGuGVG($0C( z!E$Bg=ItRP$8I(zFWHw%@(JRtTKW_#PdjzH<4Ila(l8EqAkFtL#sNh1*(3F1eOtA% zFBT9f8hD4NUD<0wr(AZW`R-&)0TqJ>=eP0%B6GryU1#=pmzIlon}T5!mS&U%){7Ws z%&Ev$-k^tM2@p%{*Bs?klH}40>-3n)gPy#m8MtE#DVqyUzI~W*MQ2J#I-=Sz>y|V-JY)%NO_s4hIAYy+IF~8MRt8UA4u<3C z@qD|Ji7VLt=n1L^&h(8oBvD7XwW5ln^$JfdUn@|)H#NHHp+cFEyKgh&QxBa%|8uux zaq-tHVJfuoVV;TkFE+aW6pEihafqYVW}|MeD|8#rMLo9OEcUjiw;}9$UZI9*pNyqq zmp`hPqSp6g4`~Jn)%}gy+FzNTnFc)~eZQwqyJr?ZA@nnB_PPS?@?oQ}C{sLq^jleN zFLVbA!1k1)HA78&s!NGr45CJ0aVqlx^0u$Qf~~LM%L65$oR;Uxr6&Vejm(r5k-|1r z;^q<240k`|zf|1U`udOO#6G%_?s0f)JTbx)*QAFhDHqp~L;hTJiQnE9Lu%@A7SNYa{yA|e*+WWp+PPZq41rNB0D2uQtDC7NBH`QO+ z-BV+NTnpb)Z{&@*yy4tC^pC8^AP6nE_BV;QD)Kw7G2v-II%>1~OiDQq*p853th$Pm zX*hf+92Hu%CpP4cB|rMdl0+g^>UYkpZ=i-MiZUOC(1_@+QMKK%qhW`B75>R#1U3P4 zc|*vCkr3u`dVRrw#~;kJ4e9I1iDr?<`aK>zQS(Hn(rTIrN4H)%;jDFImPcouIG$^( zI9E%WBSkO9QPYAhzq_?MK0d#&xjwtJzCkFjT|5jW2g%V;lVSBl=f|0L_iq*P#xV}> zyy&qW^7z7R!8xvgqKP{O#e>^e3Bk!JJXfyb!EJ)H!%3I&Vq=a~CH>T( zCky4~s#<={B2M1m?klqyBvX5n%9UJ1dz&n8q16VS7gJBlhCo+)UFA@ddjfCX%GKz6 zqt<|%tY`!{XD>#IYA#Tj0X#pg^88%5B!%tGS5!gn2;4Q1=DEMvtmZH+Zm+~WM$6k-0|GmuH zeNGN5S|NcYrnR*3AT3p@D}q5O9`S(IU2+b^{HD%Nma@LLt2d+}P$UYkYjjD$!Ui;f zD~d^N^{6wVmhq7jGlzza#Jz+b81zNtI36%rK3Oh7yQMY^FEl$%hRTHFa2@jexq?+?YVa~@`~kpA+x(i#V2W1r%i|USTRDj_ffq*>iAJr(gvWyfw3-r zd#Ts-e-5vZZ4y-`GnBu*n$QR8vH zp4RI1Z~kCyI<+a7&*_v$l!eWl35`U&>2RpNi_PQ2Qvcr3(b3W2&N57XICLLn9Gy`sncRXQ_G763MQ!+B4v6z|NhQK=xePo&jewcdoWUrzRgwg-;1E z8^V2-#lb`p6H2w!X~P`!afzBxWiA}R08>JKXE@RZg5-?OS4eM1(Y7r7bxn*T8l zdrj;Vbm!5-bxip(ZVA&b6x>(i&Umcf0Lng3Li~6}{R|_pJRtfin4{Pd*}r-~LSfi6 zz8ZcO+b@^+#SFBXKPshvc6O-XDx$UPri_eHeaD5_(Dm1s>WJV*#)@M}h~#VJv<`D< z$MLf~fQ9W-C&Y~ITG1kElFH6?OmE8+C`c@e2sIUrLqYVM^QvYkJRGFcY=-Hf$l03* zQoyJ8!%m>zez#O>Ym!1s@!GU0b-;2tuU_5tJ z@|cy3!AHc;ov!oU$8NYuQ;KLfGaXf-bErq4W?-2KkkM*r#sHgUk(>XSMx2h6 z`lnhQu`8zH&e(CisJcVm`MX`LocB(4#Gw~`e<{%kJs8?f?1#ELfQy<6N+}TCxhyAK z_)U_t3L=DyG;}>VqHo8DGtBY0vu?4vgQHxCK@B=sOQ_zgignUImm(G`;Wh+6V7L%>;S?%%&Qqod?iSV#CI8cKR*>>eSgQq&X=PN0C1 z=vUO&vJzmw~r);m?s4Q1*XiAVwG+Z>Ri!2aqk-r2xDsm;hp3v8G+yuw`Ov zY=DRZ&*;=tAU~5olM2y%tNw1?!%_@2G6oIi4`+M%?PM`~&TwhXWY3E4{mjQ5WxOr> z^Oy+We()`{-utyMEN6G9-8{O?-Du`*2Im{*GZiQx`A%nZ#lQ@2`&9J06Ir{HE9Arr z3&y{+n)6}Bt3^DRicB>ecU>TV9%GB-y&CP0n|^5>mu${>Qmn6K?D?%&_nq&|thaOZ zBD}xUS!p9V)i%oSKJE*xvF${}f8jXS(Rr`2+Dk*My<2}I|I%s%{@8owoA3RKAKgxR z^};tfPt=2*b!H9wJyr=orw$=mb->+1n8aQ#x*Y8`A$Ii4%Lgf+Cs^mdVV=f`b-!o? zwee-}d`W-cJZ)?Msr<8;*-mq#a=|70(`LopZU$rxZ^e8Teg}~7_rvHqqCWlPR`SE2 zSp52<*n^+*J(4MSbw`7K#a{$UPWt(4c%S@aQB&ldW)II$@f&_G{;-I?gw`WE2dgo*T&CCY>-I}^po%>syyw%aI-@P=pM|*qXHN12TQyGX zKja#$c7)SwpN;-^*I@p_1%R{j<)8*Nif5rL%+YWAw)0V=gg)L>Oobke03vgeS0Q;m zPp_ZuPJcaO#^fq_I(XMeWl*1L&f%`?v~PcVzB&Z$+jq7blcx1g{r}3z=_}~|J2&^% z+ZMh-eX($>(MRaF{EYdag$0(wI;FOp4kyhx>25mBOm!uP714Rcgi{ts%eI!|t5hz_EFm%H7D^(c@BDCPEAeoxC@ zR4dNi`|SCwPA6GA9d2c9ZEYC(P`p*BMpHp+%xE@5saP<#vDjD!24NGk_`oe&zO-?trzLF`4BH-reC zr{*IvuW@)I!Qn>CkM7TJ4p$9^n-gm{H4IOQ+$phT(xbdWr^KCOIfgn1f0i!?ZFyuO zHw@XPDoXK`Q58vdY_E@$CiZeWC^kUK7VzEYnytP0v65~@lq^!^PKS$k5}^8&U#{=k z7HEbYC^Cjoc_K)$6hFCAClX6+S>4vfbdSTiV!k6IcSf_AG?Qu!nqiF`h3-&ohA^~t zLMTa-aY4?Z70WzrPTx-r*6UG7y@{G~BtuP_3@Hk%sfk5$HZWky_nfzzQvuo=A89T^$0X9(we3aF2qvgqg3X}(}OKY zVbR5Hze11B8%Zn(B+)Kt%D9kI3t_lBG#)P&Vy4M}GM_lF?LA*D=eXnvMRsZ=S$4S` zl*!C+nZc2GLoqpxgbLst%_{*2VJJrcH9xMC$fHL>u=C6~MxO+7qNRnSZKepd{E&9F z_Pu@~Aen1<_MT{s9Vzm>$lo5QG1d{KRR(B41~NIO%#bA;^8t)XMjFFe+VZnq5lwNhZe-hfK%NwY78;TKo5Mb*Au2D`J8GAry6gyQePP zfE_XS*8T@T4?bC(4+TR6`2YDH5DSYbE=gXbggprFb&VdM&9gdgdkZ}_y>WMaDy6*> zVaQ(l!FUpuwA7;=Lr8t7&wU-ja1Q?L;I#E>;IJc$(W}?4s-ONC##&0vl#e% zUflE(;gr8-z`K}&%G#$csdy;lSH13k5>u<~VO5GFO|NaqT(t0Mbq%Bd$ZK^-&n zw9g5Z!-vnCeJaYh6O@An!76U43^kB>v0->mQ zIN||bnTZZCDI?#SU2vfpOv%8h<#)B`4&3F*x>Re%e8l5|HrEb>flY>4=`S7xpqa(hi8VD!3;EU#OBS(Jsk?f;L#fzW%WkA#@q z#^0oDF5vMmaDvB9 z??cNjX+&tFH3xt@yLQnXjE|%(SJ)#Sim=ofKk3$bDS`GoU|{Pv&2jmX`NIZ-CSdvT zJHy`Yuv;9>>2CF&x=^Q2{Jlc%f%nJMVQ~-O>wUdFeM>>CxJ4EPOlk@GU^pu&@L&jW zQ>y4X_<)6C09tIE4r6Hd8lEN#JVztQ$44CQL0su)D|D95SO66#SR}PHBvn}vd5FPV zj>qG=!TM;TCb66OQVFIKDk>FHO2=7GPx&QbSa(CB^1Kz6`5Pz$iH&FXVrXuUTO{>L z#97RWyTIm5m#uYgXI)=$#_jb05X>UT zMzvbYdj^JXZkC#%-rq0@@c$>7)CzU}p|vO*@Cw7)#tglmWK1~CP^d4nI4N2*UX`f( zn^il0XIIRA@!WuN9Im8WG-fpa@#(SgDR*;q6&Xc<{fl}+c#e>n* zn@sL?wFEuC8SVN{ie`_N6I9^!s>-KM+;INYHYMRNK0{?2gV(d;r{!P*Q+7;~q4jng zsWb+vN+H#GigO@zWCu6TWtMCK36TCo!4?sGa|I??IiiE?Qm#vf+hhHW`+n! zbcZN<)*zs!C1b&>mw$7-nqr`U#@liGz&i9v_@^%WmlMLm9~}6*-P^-6j+NSB-To%g zj9EIQ?-Vbdt`U2MHz+qcLl-jzw^qLMVCxZXtE&D1YL2f=oU#e zJ#-b3<~)9Wv<#4~G9X34h=vLUVi*I!{T;TlIk^m>l}O%^eZDD_e5MPprChiSiA#33| zisKtS@B%3pf3$c~Rxn}T^wUQMSa5OqGR+#2Lj9N!%HyMiZy$}nyz(?+;QUg97f4C} z*UlO_JA4=AfUlp8d!1js>#c9Cxn$_j1kH{42YH@3z)GEn{TN~$$xK@0%OrF|ySq)b z+(j1xRj08^ymUytukIY5!fL7=g-TGWoM}hKOxSQjtTTxIf+`>>nZl`rn{MbGAlSgS zI(K-{Iy);l?hDtFC}?j75-{NF*tJgAP(($iF>?ZIqP94>j86VX zIKd_kuF$eeCbq$bq0|J_L7n8}3twfS!W5*k(&e;F%>sBoa5bJ|7-^uLOd~`bWC@c> z!^Dwa_A6}y{4o$P`81Mc7Qz_i#KWr=g#rl~Ale$2s#_x}Nf&LnW54XrdNw#X9N#m_fA?~u;Zp>YhI#QlQvTv;uDl;8yL(&w_;S<*UxH@uM76rFA zlcFX4QA~YTFK(PWq}3eF@cpAZ5=wp}Q6aQIiyRBcy<(2z1Z%xOBFdy}`?)ZRR)Zn@ z?GtMoG=7>Q*+gCiF|tjw$+8P+gy%s<-K!Q`qPFD)XDzCUOFK$cnqjIast%8 zZ#V;}6LN`)TAmy1@-^kPfqSaE!};fcbbm~OYaz9hA<0nksWtp3D1#!z}N~^%DLXxVXg~qBz*PY z+GCgN06i8b&%90cd7`?X3XlLkMJ!Jx*>1&g-G6<~E5){+=4kO>B^h$=oXn{uU&I?8 z?o{h7hX;RPo+WUA1KRdMql8L`_CcqRiP-j`NI4Tw?u??U!V3_v)s!InG`yx9xZwr7 zih+yW#N@-y^iM&HN%Q}SEHe{2w5pKDv=@p7)9*=7dvy4PU}{pogkari-$HJr_q6E% zyV|Pj4mSbAU0oYdVD*33(eKRl_x$-`HoAJ=Q~=YW%&9#(RPu&%3e*ybu`)ji3-{gK zXkEjNe+!lC|Cdmd?)(a31tti0)on!qp0^2%DD#)5bth|CRi7kdGb7Com?I07LJus- zNHlln^SM9a>1rMj>fXe}5NryvjL(O4SS?K(EgC3LOiM~KZJhu`^Ue$Dp>NO^!Mk))(JJ5MXR%T$-6Yu$7^xR;f8H( zSvB)On>@F(DXN#r7weKNTzG|rLEu@Ioe^pdGlSZAOUcpj$SEUDXNyu}8vz6LgV9A5Ha!+&3>dvr3J0BZm>Vp+#|BahmUb&LgIx2yyrcz_09D#Ls?d_eAA;F6xz^+yQUceo zc97mPdX_(U1Mz;aHDWB@M-j2}D-rE&Rpi^_0>XxM&1@m$z#sJ=&7Z6V7riD5*uU>n zLmwhN3Ek*2O(5z?mY97rz7x8VVnCoD>#m9aXTNn5^9?+4%EF=cYiLohe9pGgDXaQdCSXG~53|iTCl|bcX=r-7tuk1Zs_UMqrlY`q~VF7aS zC`l*z?>(e!dryAv-fx_(gCTV=zT0|58=ZOYPOCZN)m-!&0w%^-h>8DmlyQMi%hdgU zpE}q0)>IFMH)q`KFWj5PPfQvMsynLZ6AR*`5DANnVN9y`wB{FQ}zZ=dYGe9 zq1rPCBMy&M!4X+`--7@{yW=&FZ+e(BO=#ZTIdU*E(;HF`vs3pti+MggX?IA=kk;0z z7aetV)3dH*l}N%1`rf8INqHKprAL{Z>7;V&WLq2;+b*3q2MK3XzudWj zR|u?BCIqsoOE#d?l27E6Flt3DEuG8=Q?(t|tQ^hzq~Hhuy4#YKfzh`%6vf5qR1IJA zo`%Hv3x2iY1VBk=iAWJ>R%WkfxK8E5F^-*MY=po_J(>IB9J>hXc)xM`&K<^*P0}Yq zst^jn^gkAULMXazim>2SR5YWa7@Oj@@_Q`!FRVM54hK)LeJjP}!0O^i%q|}Toy?Qj zIin3_TiVGfX6+7v^WcF2(VDU z0?k(YxUv1%E9wAUh-J0^Mk>@!>c%D^6!T`1GkbYDME2*`4*P zjdQ+8#t$nRlkIuox^6*44AhL#M}0j{fDxiz zu2;ZzZd43b8}wD$FtmMe{@`8|j-7-Z5TwHpbiy?S?^r;iL=gg!?o^Jl$k8~69&eI% z6r4=lXX2S&E}J&@FIzY~u(Kqb>S;ff4-X$JuCL4MWs-L+Q~kZPwnDvb+-%^w>{W#8 z=Y0OfP4b$n9dQ;EQ^Xz(b(T`%kwe@({BbXHl=-$6V8TT*9^ycBw27|YYGy`QrENa2 zr{M%(#@DAp30zm^%HV&mT^~xxhXp*&+aJT~_YeM}l6o=O*&;Udy7{m0<4Y^6O4#S9 zLOWb3y$cZ&dOGzK;0`dK(NIr1WY$5czNk045?)C&(R_P0AI*$2{)mfwRE^w3vZ2rW zV^|j$v(~sdtlat{(uQ)tv*How6rfwp;Bh?V_Czf}@YbL@UWGo@3?>JPmxZRrg zo{)&%oFH}e7Vg5f)01yC% z3$wMJ&Y%?WcwDWY5_g9)enVAtPPpAKef0y zee|ylHr6Gy(ZU{F|9jj;stlE6&$rOYdnaFNV{JvnyL5QoF9#-1iJQ)P;)V6w^GY&C zwzA&+3eXt&F6iDB0e}s>f6Q|{1%&mJT0iM4Uai;I;&T*-S1NY;Dwo(PD3o%#F9-=@;qM&ga6MQTA|r`6+bI z?Y%tilBoHFDM*;{C`&ao#3ymhfT1k1EDqwSs&~k_;<*k?VM?jZWgH17b_hko$(G?j zT*sDG4AE4FWr7V`oChG6V$mB|#u36cRDD=3@a7n{9H&>5kSWe@cMV(ZU9PTL0jD86 zo6wvRl$z`*>7oIF$T{`>kyc_R3u?63B+6zgE-jUHMnsuC^U=W6#1(j25)qlG3|(6n z!QyDuHG0j{CId|1Vm8Tnn$?@@Aq1LK9PjNBjzf(m)>m>@5tw`0yV%&w0@!6dEf`Cj z#1jhhS~r+c(Z7qXey_bbVdYjwmdi~ zKGrP8lGR-{`I=$#UbBOv@Rp}lnOtV?Jda%ezZOd*UmeeHzdv0w@QRRuoyVi|HnUze z8n>qFT!Um@O%nx&iajSgbj8+|9V+47F5gZ(370fm20nZVLMxRV2(rwg#!l7Epf?(Y zt@DCaKh>_AP_ZFoj$&M@n4PxE)E3n|CGOo($isb3d1`lqH<^-R2a2*nF;M zMq))*xDEf6coP8x*oC*6p>HKEj>T#u5dzuu*&M|NOp}d;mcMgkxb1`qERtAq}ub&CrEj|A~xu5|xQm!*qJ0#C8iFVrVJ!_LqMFKXXB|%HZK_5Su4xBGYmE0Q z!(l_~y9`PCghq03aLRPj_7LFp3?y~}L>rz{X&5e`a{;|z36f?sC;k_RD~1SL>y*SR ziH;M$muVm3pyrj!zOQolX-&b(966urOsVB2VW7|u_n5zjQVf8D-@KN59lel@$m4krpD1;v}wbRt9ZsnRn}3$)y;R79A*Y`?^RTMoT2xLaEO(g-GQ^eBRV(xmt@*)7gCJ zB=27ehniESrcbd8{0U5NITig}H>by-c>Bb*q*(hHdhhd1q}zK)NV0XoUvfz+vWS%h3Yktl(OFnlu*dSA0&ta#yf@l zyL;B~Y$7u|ac{ddWz>2`R|fWOsxO6d8Cl$0Rd!iuL-ylJNO9ePZIy2si6E1UAP2PGei| z2+{fkP$RS`qT3fMZBL7%6NSZ#_lyp-HLn)MEc^Lt=NahaA*)>4Fz>Y9731}CV4CBi zZim0%Z5wVA@0=WWB-gJ#b!i-sed%Ej_^onLn~6_Y@$tW1fu>U)eAn_!kKHSfTV_qH zs^T+$dj=~n+?~0Vp%6z;)_V1yuK+B8aj61x&9C!r+b;3eBbqVJQxi2Ejx1Avk(Q`# zYr0Jnwn}1e+@AU#C>p1Q0hJ^;OwrD2#x=1@t zs^xA=hm5g$RY*0P@aojSEi?zH(kBTgJBWEYsw<=nka6gMhdY-hwR|}Jmb10Fd4#r_ zxQhi%r2yPB1B-dU%bhR#mnDO&;G#4GN`W9&3UmTZ6F&x0;zTm9O9k1fA&>Kd0|tc+ zkoT~WJmzk!8uxV60bx2o2epD@fPzNpoflev)xSm9iSSlF6oC=6SXa z|L!PZfbY#R+qRve3vaw=pBUO4acR)Yf^mq`2XcbcWRl8ffMm;H@); zQ9I>xf<4cMH(qR@7zY`^D6nGd7%!Z_50bm%P=Y#+%fene}dZnM_ z-qIxTN|QC<_?wI)C%ZD$T5fPYoUp(*-_yeMVYfPqO%VAW(iJ#dg_5DknN)UF;&c_< zr0HPVF_DbEEQA|z+1O%A7o@ODl~x_AYjrwXkG8`2AK{$L*%*0;4%+qc$tW4c zt5ZW#Kr4*xB=^);_3X48t^XmFmfssMh#3^g~WoiA<`6 z(tD@O#tbd)aT?v7ZRoYVwLM#EA<+>kQfdOYkFva7CCk&JqJD2k46fD1gr7W??{>I`>4F3NMW zH(q}Bj4PIst8z{>a_`BaRKI`m+2E~4(*G-zN@yF8z+WXja2w> zfVJ*=5*kU%?>jcR6}Ma8aVr6a0?%*M9tNKA`jI4D=|F5HdGs#oDJa-Z@&3-`1tm#3 z;yYW(u)r;>JFmvy7T|<2n3Q8N)~d+4V!B#oeue+x{3IAG>f;L)h(FJNbZ;T&ZTv!d zy$amWxnG%pDW9!DGZ#Nd-Aakt<;+-0`EMgPw6)igsKtI(y$?tJVj7vb(5 z{;ycVm$Ftr--F3`@reFk?Z4?w38m(<&+gTOEucZQ_4l9D`p)SK-)ReL``4?!YWZwf zS-%njQ+~XMSI<246RKp|)P75SD#c8B?fWkJCAa499=z(9`}Y-D#wk}S2Ipf}xmd2; zF|A+vE7J8-d6!Ku9nEBTAG3;(MKM(|pNm)v<`})RA@sdg>?H3ePw{qQwaGIWkgE77 zjSw*3$CDyoB`nf&)kx4$+L9le z{q)t+lzIS+Sg3zL6hLy5{J`j^FOj%1@OWW*Un|Kga#R$n2#=@4DNU_9SQVSGp3$nt zjP>}|lUf3_p#4`4LZi$>di3|Run1>K3;6J{mAB#9n;8v<*zBKkT97e{+qnmr7Pdur z{#HS466v(724$%D|KaTK^fJim;?s7AI@y1EBiMb)?*{++p}YQeaCBaY%Q;Q9)2B4e zS6XdKv_AULyV1?sWmVAkcF0VsV}CYF9$!Xje@p2Cx??p>KnWSFX;1qEd-6trxpm zb86lQ4u%3>`pgtL|>;;fmG^~+@qO-O3HBm($g{4ZNF6h)0;BE(YyYl!N#PEOukfC zX3S)>3!lA>QYAh3@@9Frw%Zh$agcdDQ%cg@x-yOzycb=5jx45pRgdyz;?tsPYhL)( zi_(QZTCk|3DPP{@Xe;)xDI_<}lk4slxr6=$<;%Iz;=gI6&ymH(+4@Ik<133lf~{5Q zUV@mm(Zux(O2uhY$0|AGNigDAIdG^>BGUNobF^f~GMb)#YmvqKAbi_Ma z@o32iFc3YE*#8qpE}_am_z~mSrFc|5a23gjij5sO=I(Wg)jrO*mCLzJGPV!oIN=U+RTExprK@f3nEK*F@ymtfm9DXWT^-$Q zJVzHH+n?55+0g~^$Kvytc<8L>KD*Hy2=R>jmHi8^+-q-dZ`YaeFU{IA-rfC0rWEip z%!bhRnhssW;@obmqDzPVRAz-WfjQ=K3p-*;&b5#d7YvcfR#5A3%{Y(>IoA%LSI-1O z$pPZL(}oq1dg;vqb>1G@n@NHY5e0=&@?QN%-p2#=w{w zn)Y2M&1OGbuP;SN_)DsswFc=eaRDPiKo|}c!P*58GY7VJk>bwEDy%U*Th+qFD{P#i zTmI@M`K16w>-nrP7B-U!rCiG7K+}?oXYqV6%pTI8&%*!JnTXS)%iqA3s{j zp@-_3r$CKbW&TM?(4!jC;wf!shtiYEM~%W_%BiX_zG&yCtoW(nZMpKR(f(p5UL?msRLCP~%KTe=k&BrcIv0wr8-Aq|y+~)W!{nnovVCuIr0UktF>(Ym4~UJ}lbxci;lgJmYsQ1pwVnoCNQo zuPG(?K$T^YAgCY}%9(@xB!N<%>a>>1F=K>i2|R}pg-b~=m8Dx%@ilLoDLI)PPYJ7X z($x^#R>t{qv(ZZBB0-p7oAWr}w<=o@LtoOEp2yg%UWv*q*vh*QaXEY@ROm#9k7V=P zPr7Ssz({(IF!0uOAd_l}h$$2#Vwm8@z9RFWmh}}y$26O$>Qa?qIEw3>M!N{%T9F75 z4UK>rL!?Tle*!DQ$Hd`mWfe7|J_}=o7=_(NB7h|j9mE!E%{;8JVTCuAyke~zJaUF?Hx#~VN@r{KWy*9 z)noif#-Ot(F2JvQ(JqkXFM_L@Hf&g-?alJr_PZo{(*ljWP}X=cQ?VW0d^@MkC(o!Za>XSN zXL@dz^ZOA#m(Pz4-}RtpoY-NW?~}zf6sLZk!h0`zw2~vhO;#fES~*2tA8jf3U?N+n z2opKNKEVD~znf6287^D3kP`;uir3!A(KI_ic;Z{ybBzYTNDwE8S2bk_ zN>z+&u0L*^(kg@)0a43Jx$i%kPvSVu2)#$#2M9nwMO_q0XepYv&m-4X>u(Ui~+%2I{U+WH(2#jmM5ftNeu$TCRjmwCQ&BM{cB?26b%`1~5i(VZ&$i-D!K@)&Y{M=hs1jP# z&H82p&m=Ouj)T{hu^+%;UtlJQ|0lSzQz7Y4RWt^;@^6q*OreDciwgYzb&B!BYLA#F zlNG0z{yoIr5SaYCRr)x8vib)SL=!qNihvg>(5^N_BUje61S0j{O|Z}if4mGLFOZnC zE?d=6zAZowvY!D9SjU_tF~E;b_y;zG@FXT?NW3!sIZ2Z-(dg}F9s?I17hoybf8oRz zY~cP2_58}GkhWcc^R?Xm;-8Z$qHa|Bk5*ZaU#Q<&Aw^yJdNm*c$^4Be6UWrN65|QW zz^HH>H*#fK7C6kbqzWtLkfMD#R~8eFYZVc^wCeXCIC_UBCS1Ujpjx9)fGlaP2%Sbb z;J|X+IYGq5*uQj_Ki1Q3Mk-BI?%>(`+*q;_)FG87PS(K<>dIN3FbMH|2X-nCqzN;q zkr%bklc-XgtZk+2U6R_nr3$cuEj+ZhWz9?hp;J~C8CB3sQv?*rsFp<{By+H1+o@9# zNHo+D3h71%Py{Xn2vlQ`t}QsiBFD!|4^m_lY--v$7s75Ur6j1jTCC<=iNel0X%>Qo znAHKI<|<=RD8woaneE(orhK-9!F+g;y0BiP-}b}@jgDz+G&iV#*Fq`~@_p$PLGZ4d z4-(n7MrKfQ8t20oj%Vn?;KE)bzU@OFE32ZQCK``qMUu?38IsU^Jfej-P_FG2Qm3(A zHGGFHoL0q$S4s@ueG)B`S!C zmQbCDqgbXx-KdNm0~p>0bb_-*z790F2rN&d;I=ZyU&n>eN}sl81S5|yKpcl~0D;Cd za8zPBUGi$BmCT9C#>995xDFluH8-Fb& z>ADs{fIpcfyyf*UpL;er=ddVC{%=pH#$AQ95Tqess8!fC8tHE7;5y5eBG3P)TVb96Hxp(~)B`Ulfs5-AX)m5F(mbHf_i(C3wtBs$nV&-b{JhmN1ziB)2Pa zaD?DyO%@O)dNQ?bKM5VXD_K#kJsh`P+3=!u9Y^U`}^Aj*gI#E}?KnMMPX~ z1HU9e$ch@}D)o}#nn84AoYBmIEFRT#kJ}!S$(=Zm?~;Y}eYmewLZjXKxDN{=G=sb( z&xKb~JilfD&yYq9^NC9r$1h)auPb)(%$>sOs);!%qX5WCvMA*TC5AT1aFtC1ECV+f zKmpa@P_{6mP5~B>ATF?#5+DHjxx&;8V|ROFw$AG25r?a<^}(b*u<8!4@IWHYS1YkN zRwPm@J(mDR=Q=}W!w2kdU>Nv3`y_{Lo6axe#fFWOnPJbw37E0LjRldg?OIG=w}iJ| z6jrD|L=797OiouSbf*ohS_x$uk8D8a&ma63*uR32wsrnbrg5mUH2@3bkOmychK(d> zXzS%uvC4R)f7N%%LPwu zO#_^T)GZb3O--r>yhPf=I%aCgjPJXq_}gW&Fg6b%fM%NvX};9GN|NE0>I^X->hab; z9S)RCh(2$HvFR5fBK7ZNS`<|_9XVMpSg^tpH9-J^_)$Tr7Y12a5x|5rS#kwYAn-{X z5c@?maD6W>NZl3>810sLSwT`t^>W~>Mlvc(C8v=s1%(7T($Y&wiTPJL41o1k!>J%m ziA}>;IKLPLgvrvFw0w?6KF09+3rXE0-0CP*_asz65lD?qJ`rj{8r(-)#(PnCJjrZx zeHL=&%z2CFmUB&Z%iTTpvaB7Hbyypf_)}yIyI^`2j7A1CutQjj1(-sS;E9l`n)ehauObi;}XEWQk_QHn4p`E8?lQuu9_5mI6^oSo9GMfabCA zDvS{GRAR0EVz)=~I<8#cYL%9-q-R67#3RUsNC-aa6x6hOyOA|P-@TC19>$@D$8iaD zQO*`7n(f0H^#ntg$qty}pc-!6O-1u7Pt&C3d^s=Pe3;yH%WZcg4t@K9rW3g9o*Ay% z=(IC}{V7Bi(J!XYLo;0$DN3{$zl#llNJ!MGU57SZI&G1}qMOwdDSDXrFum*?oLoMW zZ^&>cSi&6+jF4nhjC3!)z(R|R+UhGur1?fN(2sLUmWU%4~}d*56*cLQBWhW|QpjBk(@55K}I-^)b!M^Y#9GfB#=&;}erp(=)Sk z^9zeh%PXsE7!c^Zfk7a#*J*vNvHgV%>d@0H#I{Apxq!m4QYs`4vf8XY)_bjuT7JjY zSV+{gNYqfFMv!6#q^rIwMyD+7-g(B_02(aKlSese&eZ}ut*PAg;P z1bLsyma1ChXsl{Ej>hlPm`2ItFIxj706+s%0u%xOD4~I=20(zK4tzD#p7xP=A+jE? zZ8jY>83#3lR8(2Ps9o1_5Y zXqqx>nR#tb-TzNlrA;B%-a9U!Xy;7!H`P6hDP*#Epq4B7aOjRBv6oI9`)Htou(q5Y za7)OCxQ&Tiut-#-xh`7iTx0Dvn~9RL6T literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 64dd1cd..d677dde 100644 --- a/index.html +++ b/index.html @@ -2,1021 +2,690 @@ - -noctura.dev — Portfolio - - - - + +noctura.dev: Webseiten und Tiny Factory + + + + + - + - +
+ +
+ + +
-
- - -
-
-
Persönliches Portfolio · Web · Systeme · Infrastruktur
-

Interfaces mit
Haltung.
Systeme mit
Substanz.

-

Ich baue digitale Projekte, die nicht bei einer schönen Oberfläche aufhören. Mir ist wichtig, dass Gestaltung, technische Entscheidungen und Betrieb zusammenpassen — also nicht nur, wie etwas aussieht, sondern auch, wie sauber es aufgebaut ist und wie zuverlässig es läuft.

- -
-
-
Fokus
-
End-to-End
-
Vom ersten Layout bis zur laufenden Anwendung mitgedacht.
-
-
-
Arbeitsweise
-
Präzise & direkt
-
Lieber sauber bauen als groß darüber reden.
-
-
-
Stack
-
HTML · CSS · JS · Linux
-
Genug Breite für komplette Projekte, ohne beliebig zu werden.
-
-
+
+
+

Ich baue Webseiten. Und eine kleine Fabrik.

+

Aktuell arbeite ich als Fullstackentwickler für Webseiten. Außerdem entsteht gerade mein eigenes Mobilegame: Tiny Factory.

+

Aktuell nehme ich keine Bewerbungen an.

- -
-
- -
- - -
-
-
-
// Über mich
-

Ein Portfolio sollte zeigen,
wie jemand arbeitet.

-

Nicht nur, was auf einer Liste steht. Mir ist wichtiger, dass man hier ein Gefühl für meine Arbeitsweise, meinen Anspruch und meinen Lernweg bekommt.

-
-
-
-
-

Ich entwickle Oberflächen nicht nur danach, ob sie gut aussehen, sondern auch danach, ob sie verständlich aufgebaut sind und sich sauber weiterentwickeln lassen. Für mich hört Webentwicklung nicht im Browser auf, sondern geht bis zu Servern, Deployment und dem Betrieb im Alltag.

-

Genau deshalb ist dieses persönliche Portfolio bewusst keine klassische Leistungsseite. Ich wollte lieber etwas bauen, das zu mir passt: etwas mit Charakter, aber ohne leere Inszenierung und ohne technische Fassade.

-
-
-
Was diese Seite über mich zeigt
-
    -
  • Ich kombiniere Gestaltung, Umsetzung und Betrieb.
  • -
  • Ich arbeite gern eigenständig und lerne über echte Projekte.
  • -
  • Mich interessieren saubere Lösungen statt laute Buzzwords.
  • -
  • Die Seite soll eher Haltung zeigen als Selbstdarstellung.
  • -
-
+
+
+ +

-
-
Stack & Kontext
-
    -
  • HTML / CSS / JavaScript
  • -
  • Node.js / REST APIs
  • -
  • Docker & Compose
  • -
  • Debian Linux
  • -
  • Caddy / systemd
  • -
  • Forgejo
  • -
  • ufw / fail2ban
  • -
  • SSH-Härtung
  • -
-
-
-
-
-
01 —
-
Klarheit vor Effekten
-

Ich mag Gestaltung, die Charakter hat, aber nicht im Weg steht. Dinge sollen auffallen dürfen, nur eben nicht auf Kosten der Lesbarkeit.

-
-
-
02 —
-
Technik mitdenken
-

Mich interessieren Lösungen, bei denen nicht nur das Ergebnis stimmt, sondern auch der Aufbau dahinter nachvollziehbar ist.

-
-
-
03 —
-
Wartbarkeit gehört dazu
-

Sauberer Code und vernünftige Strukturen sind für mich kein Extra, sondern Teil davon, ob sich eine Lösung gut anfühlt.

-
-
-
-
- -
- - -
-
-
-
// Fähigkeiten
-

Breit genug für ganze Projekte.
Präzise genug für gute Details.

-

Am liebsten arbeite ich dort, wo Oberfläche, Logik und Betrieb nicht getrennt betrachtet werden.

-
-
-
- </> -
Frontend & Interface Design
-

Responsive Oberflächen mit klarer Struktur, guter Typografie und einem Anspruch daran, dass sich eine Seite bewusst gestaltet anfühlt.

-
- HTML / CSS - JavaScript - UI Systems - Responsive -
-
-
- ⬡ -
Backend & Infrastruktur
-

Ich mag es, Services selbst zu verbinden, Datenflüsse zu ordnen und Hosting so aufzusetzen, dass man eine Anwendung nicht nur startet, sondern auch versteht.

-
- Docker - Node.js - REST APIs - Caddy - Forgejo -
-
-
- $_ -
Linux & Betrieb
-

Server einrichten, absichern und sinnvoll betreiben. Gerade Self-Hosting und Deployments sind für mich der Bereich, in dem Technik besonders greifbar wird.

-
- Debian Linux - SSH - systemd - ufw / fail2ban -
-
-
-
-
- -
- - -
-
-
-
// Portfolio
-

Ausgewählte Arbeiten mit
technischer und gestalterischer Handschrift.

-

Kein Produktkatalog, sondern ein Ausschnitt der Themen und Projektarten, an denen ich wirklich gern arbeite.

-
-
-
-
-
-
-
Tooling
-
Developer Utilities
-
-
⌘
-
-

Kleinere Web-Tools, bei denen schnelle Nutzung und klare Interaktion wichtiger sind als große Verpackung. Gerade solche Projekte zeigen oft am besten, wie sorgfältig man in Details arbeitet.

-
- Utility-first - Schnelle Interaktion - Klares UI -
-
    -
  • Zeigt, wie viel Wirkung in einer einfachen, gut gebauten Lösung stecken kann.
  • -
  • Gerade kleine Projekte zwingen dazu, auf unnötigen Ballast zu verzichten.
  • -
-
-
In Entwicklung
- Work in progress ↗ -
-
- -
-
-
-
Backend
-
Custom Backend API
-
-
API
-
-

Eine eigene API-Struktur für persönliche Anwendungen, bei der ich Routing, Datenmodelle und Hosting bewusst selbst in der Hand behalte.

-
- Routing - Datenmodelle - Eigenes Hosting -
-
    -
  • Hilft mir, technische Entscheidungen nicht nur zu übernehmen, sondern selbst zu durchdenken.
  • -
  • Verbindet die Anforderungen aus dem Frontend direkt mit einem sauberen Backend-Aufbau.
  • -
-
-
In Entwicklung
- Architekturaufbau ↗ -
-
- -
-
-
-
Experiment
-
Lab / Playground
-
-
△
-
-

Ein Bereich für Prototypen, visuelle Versuche und technische Experimente. Dort probiere ich Ideen aus, bevor sie in etwas Größeres einfließen.

-
- Prototyping - Designstudien - Lernsystem -
-
    -
  • Hier sieht man eher meinen Prozess als eine fertige Fassade.
  • -
  • Genau dort treffen Neugier, Stilgefühl und Technik am direktesten aufeinander.
  • -
-
-
Geplant
- In Vorbereitung ↗ -
-
- -
-
-
-
Infrastruktur
-
noctura.dev Infrastruktur
-
-
▣
-
-

Ein selbst verwalteter VPS mit echten Services, Sicherheitsmaßnahmen und einer Umgebung, die mehr ist als nur Webspace für statische Dateien.

-
- VPS - Deployment - Security -
-
    -
  • Zeigt, dass mich nicht nur die Oberfläche interessiert, sondern auch das, was dahinter zuverlässig laufen muss.
  • -
  • Für mich ist das einer der ehrlichsten Teile des Portfolios, weil hier viel Eigeninitiative drinsteckt.
  • -
-
-
Live
- Produktiv im Einsatz ↗ -
-
-
-
-
-
Warum diese Auswahl
-

Die Projekte stehen nicht hier, um die Seite zu füllen, sondern weil sie etwas Reales über meine Arbeitsweise erzählen.

-
-
-
Was man daran erkennt
-

Jedes Projekt beleuchtet einen anderen Teil dessen, was mich an Webentwicklung wirklich interessiert.

-
-
-
Worüber ich gern spreche
-

Die Inhalte sind so gewählt, dass daraus echte Gespräche über Entscheidungen, Technik und Arbeitsweise entstehen können.

-
-
-
-
-
- -
- - -
-
-
-
// Profil
-

Die kurze Version — für einen
schnellen Eindruck.

-

Vier Punkte, die für mich den Kern ganz gut zusammenfassen.

-
-
-
-
Arbeitsweise
-
Hands-on
-

Ich lerne am meisten über echte Umsetzung, sauberes Nacharbeiten und das Lösen konkreter Probleme.

-
-
-
Stärke
-
Frontend plus Betrieb
-

Ich denke ungern nur in einzelnen Screens, sondern lieber in vollständigen Lösungen vom Interface bis zum Deployment.

-
-
-
Motivation
-
Systeme wirklich verstehen
-

Am spannendsten ist Technik für mich dann, wenn ich sie selbst aufbauen, anpassen und betreiben kann.

-
-
-
Eindruck
-
Substanz vor Buzzwords
-

Mir ist wichtiger, nachvollziehbar zu wirken als besonders laut oder überinszeniert.

-
-
-
-
- -
- - -
-
-
-

Kontakt für Bewerbungen,
Zusammenarbeit und technische Gespräche

-

Wenn du jemanden suchst, der Gestaltung ernst nimmt, technisch sauber arbeitet und sich auch für das Dahinter interessiert, kannst du mir gern direkt schreiben.

- kontakt@noctura.dev - noctura.dev — persönliches Portfolio -
-
-
- -
- +
+ +
+
+
+

Drei Gebäude, eine Linie.

+

Für mich hört Webentwicklung nicht im Browser auf. Ich baue Webseiten vom ersten Layout bis zur laufenden Anwendung.

+
    +
  • + +

    Oberfläche

    +

    Responsive Seiten mit klarer Struktur und guter Typografie, die sich bewusst gestaltet anfühlen.

    +
    • HTML
    • CSS
    • JavaScript
    +
  • +
  • + +

    Logik

    +

    Services verbinden, Datenflüsse ordnen und APIs so aufbauen, dass man eine Anwendung auch versteht.

    +
    • Node.js
    • REST APIs
    +
  • +
  • + +

    Betrieb

    +

    Server einrichten, absichern und selbst betreiben, vom Deployment bis zum Alltag.

    +
    • Debian Linux
    • Docker
    • Caddy
    • systemd
    • Forgejo
    • ufw
    • fail2ban
    • SSH-Härtung
    +
  • +
+
+
+ +
+
+

Tiny Factory

+
+
+

Mein eigenes Puzzlespiel fürs Handy. Du setzt kleine Fabrikgebäude zusammen, um eine bestimmte Form oder zusammengesetzte Formen zu bauen, und lieferst sie ab.

+

Das Mini-Puzzle oben auf dieser Seite habe ich nur für hier gebaut, es ist nicht das Spiel selbst.

+ In Entwicklung +
+ +
+
+
+ +
+
+

Was sonst noch auf dem Band liegt.

+
    +
  • +

    noctura.dev Infrastruktur

    +

    Ein selbst verwalteter VPS mit echten Services und Sicherheitsmaßnahmen.

    + Live +
  • +
  • +

    Developer Utilities

    +

    Kleine Web-Tools, bei denen schnelle Nutzung und klare Interaktion wichtiger sind als große Verpackung.

    + In Entwicklung +
  • +
  • +

    Custom Backend API

    +

    Eine eigene API-Struktur für persönliche Anwendungen. Routing, Datenmodelle und Hosting bleiben in meiner Hand.

    + In Entwicklung +
  • +
  • +

    Lab

    +

    Platz für Prototypen, visuelle Versuche und technische Experimente, bevor daraus etwas Größeres wird.

    + Geplant +
  • +
+
+
+ +
+
+

Hausregeln.

+
+
+
Klarheit vor Effekten
+
Gestaltung darf auffallen, aber nicht auf Kosten der Lesbarkeit.
+
+
+
Technik mitdenken
+
Nicht nur das Ergebnis muss stimmen, auch der Aufbau dahinter soll nachvollziehbar sein.
+
+
+
Wartbarkeit gehört dazu
+
Sauberer Code und vernünftige Strukturen sind kein Extra, sondern Teil der Lösung.
+
+
+
+
+ +
+
+

Lust auf ein technisches Gespräch?

+

Schreib mir gern zu meinen Projekten, zu Tiny Factory oder zu Technik im Allgemeinen. Bewerbungen nehme ich aktuell nicht an.

+ kontakt@noctura.dev +
+
+
+ +
+

noctura.dev läuft auf eigener Infrastruktur mit Debian.