From 2cab32ace65c1d05efdd30214ab874721c7a33b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rcio=20Fernandes?= Date: Sun, 12 Mar 2023 00:09:58 +0000 Subject: [PATCH] feat: on production --- README.md | 59 ++++++++++++++++++ doc/administration/README.md | 30 +++++++++ .../images/git-homessistant-dashboard.png | Bin 0 -> 16727 bytes ...docker-compose.yaml => docker-compose.yaml | 0 4 files changed, 89 insertions(+) create mode 100644 doc/administration/README.md create mode 100644 doc/administration/images/git-homessistant-dashboard.png rename docker/docker-compose.yaml => docker-compose.yaml (100%) diff --git a/README.md b/README.md index 139597f..7a72fd7 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,61 @@ +# wiki.limbosolutions.com + +Welcome to public repository of my [wiki](https://wiki.limbosolutions.com) + +Using [media wiki](https://www.mediawiki.org/wiki/MediaWiki)) + +[Check](doc/administration/README.md) for more information about admistration. + +## Requirements + +- Docker +_Currently hosted on an ubuntu lxc container with docker and portainer [+ information](https://git.limbosolutions.com/kb/lxc)._ + +- [Duplicati Image with mySql client](https://git.limbosolutions.com/kb/duplicati/src/branch/main/docker/mysqlclient/README.md) + +## Setup + +[Docker Compose File](docker-compose.yaml) + +## Backup & Restore + +Using [duplicati](https://git.limbosolutions.com/kb/duplicati) to daily backups of files and databases. + +- Backup Name: wiki +- Destination Server: backupsrv01.dev.lan +- Destination Path: /wiki.limbosolutions.com/duplicati/wiki +- Source Data : /wiki (check [Docker Compose File](docker-compose.yaml) for folder structure on /wiki) +- Schedule: every day at 1:15 am +- run-script-before-required:/duplicati-mysqlclient/scripts/backupdb.sh + +### Settings + +#### Default Options + +```bash + +--send-mail-any-operation=true +--send-mail-body=%RESULT% +--send-mail-level=all +--send-mail-subject=Duplicati %OPERATIONNAME% report for wiki.limbosolutions.com -> %backup-name% +--send-mail-to=to@email +--send-http-result-output-format=Duplicati +--send-mail-url= smtp://serveraddress:25 +--send-mail-password=username +--send-mail-username=pass + +``` + + +### Restore Database + +```bash +#select a file to import +ls /db-dumps +#select a file to import +DB_FILE= "file name to import" +mysql --host db -uroot -p ${MYSQL_DATABASE} < /db-dumps/$DB_FILE +#root password (root password is the enviromnent variable ${MYSQL_ROOT_PASSWORD}) +``` diff --git a/doc/administration/README.md b/doc/administration/README.md new file mode 100644 index 0000000..2844daf --- /dev/null +++ b/doc/administration/README.md @@ -0,0 +1,30 @@ +# Administration + +## HomeAssistant DashBoard + +![Home Assistant Dashboard](images/git-homessistant-dashboard.png "Home Assistant Dashboard") + +```yaml +type: vertical-stack +cards: + - type: entities + entities: + - entity: sensor.limbowiki_info_status + name: Status + secondary_info: last-changed + - entity: sensor.limbowiki_info_version + name: Version + - type: weblink + name: Homepage + url: http://wiki.limbosolutions.com + - type: weblink + name: Duplicati + url: http://wansrv01.dev.lan:8202 + - type: weblink + name: Hosting + url: https://wansrv01.dev.lan:9443 + - type: weblink + name: Git + url: https://git.limbosolutions.com/limbosolutions.com/wiki.limbosolutions.com +title: wiki.limbosolutions.com +``` diff --git a/doc/administration/images/git-homessistant-dashboard.png b/doc/administration/images/git-homessistant-dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..8052a450766d1c03b93338309ded42ba62c07e43 GIT binary patch literal 16727 zcmchTwC`OC1&Rj^Zl$s(OO#0R95WO5(G`t5|1ef<4SvFF6lSR!z`^fnV?sY@b}LjH<2YMGp_7U|plnv5L@rPv>Z z)+CK(e|!r+VGyrdh#Jn>^U$bZ9 z>esLB(A<2MgxjmY&XI`#D=)sQZ)d-_&1!nXP>hfO0Kl5NgJi2xj_CQ#jdXY5lQ9Qy z69OrUr>3FFC!Jee#VDDHet7VmouA+Ci$Grnrs9rq#YJHd=ZCwPnH5~pTcrdMvDYWP zr=e+6>GZu(jWKX?awR~ z1pp)~a->9q!S11X@KY4x{Z}61G9x8m?)f_Hi3JOQu>7hwGdpp5S~aEXM=54&Ofc%e zlRYu6Wt25y^+3$Ef1Q2Z<1u}cglc-43u5*!O);7pe+2 z&;U~>yYHi1Uw`?sgTt-W!Pfc=u4nrw*|!QDpo`UV(AM%8<{J6hw%;NNDzy3_kRldw zlHu>s_v}%`wd%&r-BRxx$%Ga-wkl zIPwTK)vR~g#>Eef4#9A8Xk7|9dAxyOp&~7p8 zO1x9}q*iCXSF|xZ7f1=(6#ymzVy0t3_k2qrFe$Gmyy;}JkEBb@=vbw#*{Bc(ktl9su#j!n$y zu&>K@B+u|p?p0~uCTXX&e`6l-WtEyW2k;vza(1>kMuxoC-YceoK|mK(%>-OQi1iB< zM;6vuvf<*v#Pfr$`o|VmtF=3P>SU!jL7o>U@?1cRpf~nL^9)keyKM_T*1+bjq!{4+ z)5ytT^BQi@S|Di#poJ6VKrBxA_5C!o#$mr{NiJvZ6n3T{jz68cp$2Yag*?Pq5I+!` zWM>CseqZkPLN#5mGV3?3xLilRC&jzsH|XXRa10#Q8)OHOX;;UE48D8rPQK!a4cY#H zN0uBMH#eSi7kZ~~HQ*%w=v3iPA)pHju=h^GJOukLdqlXN%JSU=t*hXzAUlD8lKL<@ zGt@qsM#qR!w%4h0ktYTE9)EbbX_!O|FwIr2Qq12$jj2A#08upZjUlhYWhZ*#&SYsG z%Jdg^)2W7}e>L=}8-=VIv549l4R~@CA--lp$ zbu_Kt&F-7#v{P#39tn1Sa^)fu=vlnbyzAC3#yFUbuWaB1_A0l0uQz~rjx(rL*w$g1 zQh2}|E$NM)&3$?f#C5)(1(D0|%3R@ghYjOR^`PUXBT-Whs(GR2cOgG9K;)gf$i*Wo=oZQKu1NrRRdMt6uR{HI2Ui5fkVkZilbnu@{?l41-k_zJcELY}(#(#Ew*GAceXgyyrZx13YY3@13 zyk#Z@#Ts7Z>9G^!M4LB+3fF)S_TcQOszw5Haix5(2kuB>^(nb_WS zWs|`#-xcHG$2)W4UWy1|FE$>ws$Y3E!w}1*9uxhYT2j82i00{SodVPc1T3^ZBNb*w zIGIddW%nk z{XsL0DF7n)bG23uT_aU0+-i)_L#OL&6<95D$au>gg4g$KDM)C8LK0K%3OHmOQDf6X z+DWGLs?|s!ppp)MDmp8|_30jw_UWAWb4Ssv{uTC{*O2Y%-t^|hDeP_U*VH`FtW-67 zN(EY-(F#D}F}os@gVz3s!kT=?m8!sT{y2}K`tTUP$vnto-^X1HP0tHQi|EoE`Adp8 zA%UkN+Ltviut+g-Qwf_GPA$26mZJ#PO7r-z&|#xmjZ~D8Cle*F=OUKPnj_P*Hgb_e zU1_ZpO{xTkY&0Ut(iVf1;VtAWtXv;IrK0~cb@f>X?pR$i823tw^YF2XY($?yk1NV< z!LCRfv|3^4TT5V(4?3_tnr{0HS`@bU^Vu`(h^3|1!b*Rjcgp3a{hA=P@zed=6F=;F zD#bG0wT|pK;(AEe3h&KC##ws0IFg@$XGa-^ZGT-A(%_}~v(@&~uEbmis&-1EwbVs1 zmKb$&N_o{3=Jrd=xM^#%jKY**o~Pe8?{4`EL)(42sM(pt%izV?+bAgzg=bb(jRON- z$h$XDAjTRX>6=eU-XgjQp&w%FjF4*a+|+)5K2|a<P)!Dg$Qt2jk zQ;PN*KSE{)X-0NEj&EPbogdK)k=0Vpr_E)<+SZnOxqNl8s~dLMeHfCvZCq;c8$>Ck zYa9k6uL;1hSTb7FL`7&kfl5{3bAMO?d91^2Oa~m= zGNb(gDiIw)sdnL~aWYNiNkgKc7FX^#NFO9>RjQC{N>x`lv3Z&!L4#KpV54tQu6|X^ zRQ3wMN-+h{!=C@~Y8OKEDQ5qB?Cxs=uX3DWrE-HIlXOMD4IYu!35_>$I*s@`?E`0q zhJDzmk#sa@Z^u7GBWC-X*K{-^JMXbk0JS3x`mfs)Dpm~rN&9`;zWq(}T+72y!PFWN z37LwkRi-tiAAe9-m(PoI+&V?GkTuCBV@_CaIvPzt!}oF?JC!G+JF114>73p7)$=1p zlk-@%u4xF)e%;mLSuR9Y4~TCL)6_WCjVf}pqH^^VPOBc3l=%4O_-1>BM+XOHe_KRv z6|lKnXB17)A60I^TjDrm5$@^hn+3UGj+6 zXWp)S&@wXfsw(+iV_tl;S%^F*xX1!>f2tNsk$#iEPGTW>o&s!AN$!uV?;Mi@EJJEX zS%`T7D$6&!Y#V5Fq-BM>)XW~N^1EFhvjrayAT1ZGny-IxF#2iJ+m@$N*J{|1lN)@W z*Os*=(9ob8gV-s9`L)rcGLA?rQ!yd;dbNTUfV~N$nAb(0g8?Ql<$Uy#sffJtJCw8v z1x*%B`^}CCHP!bt;rrK%g0X)(jr`NMVHnBj*5PA`=*cisk}vy{J)!$^LpqUlngfyL zJ3?wc@^)4n%KlJWEumi2>En$^ECsEp9HvQmJ$7c*PW@gaR>nC9aAO6J;6lck2Idt}m@cjLZ@^M7_dq~_| zbUI3F>D?If9NI7AKh-WYM0Av81g!$X)%}P$pN^U-Eml$_vfK1!YsB)sq^)gFeB=Z<{83j{8f|iQYo9N!raDhWAl(R zQdEm7S|pnw-XcXew}dml3hjKArA8jr?H4l=!f&zX{vf*4;=+zF9a(*(dHFt&A50w* zY%OD>B|~f%-K^2k*3-Z!b^7Ql)I?@~MZU-TU0kcmmU;|2& zSiMxboIrx2HRaPg+wMyyh{IA@WRNn(^vW;VocB!#2Mu%3Du0oqa-o+#v=hoZ)Xb2= z!NY)oFD?oxZC&z+RTFo;KyQbYN}+{Tw+IH!>bVibKeNpn-KF+bN>ODC7g?U_fw>s? zk~r25RNd#96nR(|^=>7vaHF=_B*HatIex4+ve zI#cywT6}OHV3_lx^Lz|RR&cLquTysHE%|@XgzDU^05Ptr0ElntNF>j0GqTV7c}EROT+yvFVK_ji#tklqRC7nAlnssdFPb4rk^R3oZLBI6MIq;PO z^E0S*eY#&?`9Rfsqnvy^r@c^sJxfia^s`Rcvz>SBUdIO|b%d~^Al#bBDdJH54OdWw z$j5PDWZ|4vTh}AjSQB)9@MiK>k&s68>I*e)6Pt^T}A> zG}d|vjTPhe%A{G+WO8%f`Cw7T3rG_M+UZ&N`sj;l5-h|Zz`sa>MOJ;d$y4QbO&k#l z@KD`hsrIzxQiABvlbhkF+}%(GT6IOBPC(^g2s<;f|8TFZbizH@zEKZN;HOGGT0a(t zn0P2NL(^7oOm(VHT;~%mPi(+B>GO{5>QvA&ZTVlIA9OWToP7X;!ED3Ir@=lh$eI(}d6$Vc+B{+;7a#3Z_ACbL z;}2*O;5bIOK+D*8Q@ZLq&)fX+_^UDL>plhkMia0cLFxr!EhN34jGWrmCcXg4W{Qyk zglamYWo)9&;g1=7WltBAV-(Z4V3uq^g5JOQ{yis_ zGyF^Dpd z=UOeCk*>1k@=4z~5YYpZqsa-HfR53FF~3*pZVpNnrRpxj@%Dm(u!Ica`?Kd2UHlje z+AE!v1b#r@o3^_u*J7k`M`%M;5$u<}|G5PmDK)wEJVZyTgeIqP)+}p=(OcX^G@RhDHo7MOPc+-sH!e{=CGJI-X3U z=BveMWiO`o3FOf{Ee~OIC(#SS1FQ`>>M}sdc`(9$o1Ew1ls%3*3MgQsjgfK4ut@lJ z5Kv2qpNptyH$MO}viMR6#u>+49`QH#DKV~q+~#f^vRQaTNelzh;Z*Nvu!s|*dbJeG z%iL#QOGVO3DmY=`e7e&GK{IURGU@gx@j`yyXtoe8BWLuRCDnSrsk~hOo6Dgc`V{;? zGFys=1DJ9sm34|f;cKkgL&q!?@x+-!iE-X~BzCY?LXXr?FMsJ-5ZbyMLEhiRnf>V)-9}G%@X~~1GRCSR zUe$@=Q}HGFrq16B{zH=AXfwc~N(o%F)V1Rg>wqTh+MllL=u%=R4S203xT}qf@ zte&RpDDS1?c-DPwRG!YARB0tOFsJuD-A@>{NBalu(h9-Q8t5()0S_FR4!;>NnQ2DK zsF1I{FCwp4iY zu#gje%r0+!@xp6u8Wi@gpHGxO_IBh& z6RilZGAAGF##tg1Rw4BY5GEYU(rB)>8|k7QVyZdS@7JGc+!r&+oR@}E=>~zVl$UA= z(t4f6o0++ODPNnKtV54EMtD$k6vrgV$~QdS=q<=nkWrBpa(+at+Ccp0biBJ?sw#_? zYuJT4#N+vX@qYHpV*LsRm-?mT{p>^N|H(1XY$%i#2k!g;ME0W_bIPS&nDb^yfmA7! zI9TXz&{eDbx%D#A2yKq?s9vg(y8w!|9M`W2hFt{awFAD7Kz|9}V1*#%vs5uJCx zp}V^_MWx8Rakx7UqLe)x^gjCPP16@H2-Cp;`p}bzvi3eV(<8B6kj5*23L;}&N}PBP zuaA83eWWY|nqsNF{@LOgoxY^G9 zxe5&V_(CY)kGoeQgBUay=>;lFiP{QVu;si@jt0JCI$LJn=xb(m+R3QLP)Xmwi+?ji zZ<6t7Rb;DVys^P5_-1&38{{GQ%|Lt8u zP8k1%;qxW4qYNZY%rqyimDLwt-meZjTDCT%;mVw8Gx?Vb12NgvuR*-zcI=S*i z*>11n%phSI{;;J0(HmLOoquSBPdhtdL&o;6A%4#T`_5$kq)kSYpr(7w7+t<= zS9ScY?*Tz-#V)+B+KI8cwL-nROJ^R!*J(|B7*LyDv|^N$VxQ;xfq3r~VMLqdsh6NQ zvU5PQWoKxR|7>tFU}N~skTUPF^e(O-zixMm^KS1qQBuGd|zigM%z#;EvQ}( zYo;JMQ8=7aeQaM_}zptjNO?-PeQx>&7QI2e+qie(igoS95~-c;C;RKaW4R z_X44MQ8u!;YqII-S}+>yVxP>_q!_+Fi|Xo}+#I1^xLoh4sOgTXnT=j4eKIBuY`K{9 zeo5&N{u6FSNj^ZlkqoR^MdnbzAMAJD3+v85ze45#$G|p?yrgEw%D1qM$6CrS0@wBU zX*OE6P}dh9_{zI^-(X{C(NojpSGU^a`B$L+XhVJBn@{iu@Gk^$bsC0e&L2$cHB*sB z<~{dB7dSZG)UQ+^yyTf4HzkFXdB_io4WSGp_dYbdV|g&)p&(fyG72~s6%{Iq_nLW! zg&P_80qbM8g0yY<9n1xYJPL4~14*B<`zi*`jE1NNiy_YiM9`j&i&zYQ+^4#0X>Caa zgR2Ro?$P|uz9+r`1k^d%VcmMTf1H=<2oUUA4|Gu6JV{?L{ypxrxl`T+*B0fD{-IMem>^6XDwt<>QS@VKhBb zQI8fpe#V$>6A1?=L{h;4qEb zi}jTuV$%PPaJ^<;-l53X>mF?`AB{p-yDW=cOCz59>8x*rTDP0WoBp7%+Dwj*3H1v63l$?Dho?XOGXuhjHz?wr3AY#~Td^?m2d&b00bWo1`MBgRw7D=gB zsvp+ZUL!X2bfg}qGUQ&lmEhuSeJiZ}yPmNH^}s1UeDqH+a*L-OTayPSkmnX5?&>VI z>v;#~Y2@kfz)qTX9rhRLv1EYiSkKfS1{HnAT8B+jLSO8Fk)uo*(?_s)nMlGF6OYW0AkLaQr zdg?jP_^`>io>`r#jQgiDR80G!kcEciAUV5k|83OrIJNWh{*B>Tl+)fU`tH6~p{Ty4 zrgb5IVPp!Cn6@6FCaCAO_Mpk#Dhv_y(i0Qa zN8fX{>uA5G8)LhUD-Cit@VyqbXnQm2##o(nLK-=orqrtybVrV+gNX<55X$ZlJsxNrcRwod z!-W~*e+aYlYj_#@zp;e;f2GfS-ykC!&bIlfZ%Fk2VK;u)@o=s2@SU9}x9bpH8g1m1E;?_1$wX|5^Edk;gv}UpkN`mfDkt zNlSC+qGVa%9!dV6Qj1XRRmazej>M*mH3oQfo1#Z(#JB2o#Nfq3W+I*s%VO_v3kuRqHb*{YA=kef9<|wR}9ZV`*+CJh=qeR*G(qakK*{WFVCpeZP)NZish-~fWOg^ z6a8H_!vL$&aPf(d%C+u8Dzt!R6R+V?0h#O#Q)`XDx`n-hT$I_XCa&z!l;!>k^6>w~L=bfVc~>o1ln4#skh)B0CO zsa`bA9|@#Z@nRB5aBvA@o9palW;;!<{4W$+D0vC1<7B*dRd;RSeg!RDGKyH#D%clb zc*LFU+8Q-_Y;mNSqwlx*jaIG|7k-pXV~Pq)96zNaeqyWM4E|5#G=m8Q{l}>cLcYcE*drmI@747q*mo)H>=q4 z$0UHtXc<^zNH6*Mh+jdt332qQ0MKnB_E;PX5nH-INUA)Y$-$4p_nW5)^yDWL)&plI z@fSYtUb4;*P+(dR7ki0Z=ZxK$d0oz4r#n4iAC@ODlvF_ex$<3puO~zqrt!a{#%y=u zWMpwoRP#?@D|>vFf>$f+thJ-h!3>p)$Aa6oe&K~=za1yUA3S}K=n~K%;+z4t3H)DX ziZ{M}jme<0aP@fbZ=vnT&1fE9?|7|J?U7vKGr*-rUAntaEZ-RzGXIlIUyFHYtL_P1n-9DR|xWKph`88%l5db z06Vka@OZfJH`d#r`;nxh^5d(^WKlKJB^kCaRFrw&&rupP@nmb}(MN#+!0`b29cRJm8RMa>~NR!i6Uitj>z z*{e#XS5^^tmRb7QB|w;DtbW>oa-^Q5x|%^%a-PS6Z|K*@-bJ5^6u1CRuruNuw-~Xw z!C#>q2c2h{_*|=2*(cOfE$W2ScaKzbQOiAk#;yE4DEEy$At|tqI8|aB^?N?E(jvgDtr9HC9PC^AEkhc{>^Aj z)9=vn=&&Tat_hac!oJ9aouy5yZ_%Vy6^JVd7y{L3>AcPN|;4%Wm=gO_Ph7 zTQl2!%GI6iK$C0k9vwF`)-bsGs_!GW?-FJ(|0`d7_RGdCK<7Wiq37ovMYd0D4YKNx z{NrG}y+8a8W*Gop0d4zAuOzylSKRykf_pzbL39a8@-0+uUUYHPGi(~|vR+gU7HnwH zF-u#M*V%ELs8G?(3=2FFrpYUU786cV|Wh8bmgHh`E00%D*K1$my?Jp zzO371bOF~zSY2wR)IAZr_R&>Wz)jO8jd3mI^D)A;inrGzQUU3@Q3b2xD|=)M7mcSP z@Nu2Uq;c(i-*{xG6?$#A4nA3ZewF|t;n&55j@{*Sdx_}}j{L_&M(xbqaxUp9 zs!4{J9*tNtQYI$yb8-una`}pmS*VVH>q{MFD!lwX5*94iP+F9@GsB!!(?t&;9tDVx z>b?^@d)8_D>WiGqLy!2D8q5AZm9TP-m*xv5M`LypzNc1W&n3X!9VY$9KD zjx~qr?g3G&3xtsZswS!0sV4Hfig8s9YrivkF}s_9bUMA)wHW8fkja`mUXrcd@EJS* z<`Z3Ntx!Bi{QScT`R_7}WoE$IJcj7GPZ;hc++#edpF{vAZ*)V8TS<`yh2DB2D6q-9KS98xfHa)Jvj-(rlt3ALoDPK#hUubms((qcxwZHA9Ng#D9jn$9Q z@=^H_bsfiqk|n`8=pR6*Wl#TiNS2}!0I<2NE%=qkdlwTjMjRvRxRggoKLJp_;(4wvsleHiMTtn(ifWrC~$q)5B$d5s5>FUFNNzUa=LJ z@=mr1wabf|qICgDb_uI)lxLW{G&LS^l~flASaVK`_P>!tMpoFrAaVA@y=B})i0moU z#M7yVh??0Ar$SR36Vlvq0N3%Bjk(NSdzP#Zw=^1r^lR-x(qWp&eW(V z2}T09DLBGNAnp!Pq0(~>!46hju40(NNmV@2%zwNWF6?|K{~HA_X*aM!wMDKcGE1m#%cW}Jvsu=|p|>6RwpA$#Tk;g? zlr=8wIc9qT`&}p~_(hO#2)bZmBM()FQlMKbWj-{XTqbS{zHtbGYS3lqvGFiGSuu-& z=1`m%*2uFS{=rtqAAQ=#wtxiGTvH*JG%aqpH77kno<`w=PU5Ri+flTn7=`Av`w{#X zGbdn#y>s9@7DI#zdl%N?79<#Bi8PxX`<*2gJaOSXxgY?O(1r#oU`(eggk4y3x|*9I z(a;>yw!P=Ue`tnVAH{1qj=_wyx$#kt0d*keQWnIGoR1Q!{~_e~uZQ#)D- zb^N4R>qkzizaE+UGaxVr5*F}&Awc2O*oMVSh{r9ql*1gDe<^-n>}JNZ1~rL^5HcGY z#%2V&?mn$IoncG-n$)D)qCPRErb0U)g~tRgBF1hUf@Z<%NT2KLrb>I#6%jr)zWFau zmhqL`gp<*blR0;?<=Z&iY1a&l-Djy4neX~ClbWL>_XVk9?f`JBLp2`Uzi2~_X7}<2 zePN#&6L}9s-S`S!PjHFD^g-hr!&PP^fk4sNHMjqG9i%nkbgH7Kjo?U`rTFvmkHp8{ z(Wqst>XAO>ONfBA7|`D|@E?MkC87JO{flL1^Af6irOUt-b$iy|vYxI$+p7;WYD+nz zPt%0Ql-6*Nua}&KiyT#&Eu^=k(&l8*5thiHm-PnkL2Qtu*o+N!_Js7k7rksEigOXD<( z2ze>yVJ+{wcFXQh^7va!=o0rl%9XAz*#qo4K)^>w#-OJ&o||U=Y8>|U zUg-laU`njwJK;Z0-r2Nj3JOUO=z22lzuv$5euL!>vtG z&ZiPp>2UT&dV_|6(NXH*r|=S-e4fLBDH`_q{BTB#v|O<9gc#y++@Ud6@#!i8nJ2rs z;6a=do|Rim`GGMYOTnBrSQyJxsTdIN&8E7aW{G@o=v?~UTR7!Oibk4B);1vhh$UrB zgOWkgLpphW0kK*j=@{dU4AMYEV2Go*=>Q` z+EF0tnXWs;NCSUjC_KNH^jx%w2$7qp&sp=^8{i%OA?{v*X9nL>_J+x(Q43SS4<$0m zll#}e)69e`DgWSNv-5Gl88rDJ5LidXE0&q)8$`+JMEgK7GSu_?sA-1!**al4lp9d6 z6%Mpoi5D$CaHdcgO6taEP-|3J3U^bfo^;h_@nd`-7p#ndIuwkX*kqD88m_ghSdr(x~IORa?=k^ekzz{d= z1g&B8c(dVN7`w|)ZVLeN*;#Dni#Jw04JgEWR+Kogm_3koj~sm_lg#@YQNfZpN$VvqLY0iWW=oxsLab2#`-Z zKI@9itifhlGoaqTx7^rBaa^ePo$%(LrwHx*Z6rKlXJ!F8_(2jwsE6ebO#wgm|20Sn z7Q(vE^*l5?d^bHs4pip$y# z7O~M>^>^< z)sWNVhUEGQ&HAU_1oOPdSb+7jFm|BdK--TOoOP$J;OFW?{e&EfkXXvjxMvhm0Kre~ zg%1Puq{9UlhX2_7FZmNAUE%y9W#Kl2MM=ZxU~+AV7M7w#>7XOBj|cn;8eH0A*Hdq1 z%d;jy12UmE1(uPl-+r|wCMk`qoL#0KsZG%>Z%Sy+{ET2tj1%+K5#=>K{e5mxOCn#y zpXpo=)Xy*IVW{hS5(Oz#Cu>fEwn5K;@c3pS>6(C zzF$l_Yx1s@@08?*`Af;xO4kR{MgZW341Q_wLfBZv2G|9@NM#oi*IrgJ$pk+7c(8sF zyX}J&ma>JhXX&PugnW;@%Y%-Zoli%)OP{G(O$iy3vHdg}zVU1q4fuAJ>w~)Kv4@^K z8Df3;jD*;1QQ%cTwx1YV#jNt`%*kAuRem2UfI1C`bk#T@u-~r;w6i?H>S`sor1f$L{-mf4hTD@;XswJnUO3@e1n38hgc8ca@qi z`RiEm zZrB2U`z66_qH+n`2Qj(BszQD+&8kAoPf8wx49JI9H=Q2Qo}i~1#hQ-Mmm6E25BHa_ zAE`D&CsIA-bhaKRFZi}WWQl?c4xgLJFn$?^t$$u-RryT!7Y`>!(C3r-lgZr^B)zHy z)TFSq>RXYzRblYgE0AddYcav(C`X#TuG+yV8aK6z@imdIQ?xBi$M=Iq!OM}&`AX*} z9XVpsp`@U3iuh7eX#s@Z^-HR-(OP*E~w*pPIrRPDkhq6om+?-C(VbW-72Ad5U>_BSO0BxnC; z3rk`o{HFc4x3&Dg-4-uDZ~JfK94oPC`E``+NbZ_8dRKI=*$$ZUC}vjQ;J`1QGezif zv!b?!Ag}BxpkYtshtAJc?mWhCmbtfE^vWM3j=B*X`V6h_Z{bt60Nq*Qh@OV#>5u>j z^j0~#&3Hzj-4Zh)@kjptZ~b1~!+M2#?C2k^qLmIWXl*`l+8;G#0VQbv?;sdI7Om^d*;Dgd{Wm#wxt$>pGF0_*666YG#@04qZ ze%tS7#cn9d%?F=Wpw5oI^d-ru7AF#Ga#cab!iT#1Fw~NuW5c42D0H~}Vwj{UMy&PH zV|L?&J(7J`VCw9rp8GmE`%u|Yapf>K=@g3BHJ<^7f9x!I_Fzbc zPSwM~XfEEP3-Eg$v#O-#BzlIrfi&ATTm}RZ8QNJ$Y5&B2 za%0){cL(K1McXO+i76#z)zJg**WyGp*K|U3;?8wnv#rL{-7*Mu;o1j z{AdAz6Q-=AA9-!h%4NEz?LG9Zu?}u#kP{KIFTs z>hsI4MiBz$JrZR~OKNxxOC}J!kn$~h?%2pU;478F`%%cB zyzR&h1Hae6@88rDWrMsse8Z7$i>I6mAzjkJAuyPag_IVKLYI84j(kkHXl&7@R;V!Rz;C2 zbzigJ55XG)^+cfOIDm=zEv+*ww)i|p?OS_^_9sM zGzR7}nsO@2{+5oNR|0`v^#8MxB~l#JBX_5ifebeydEXpVU}})VwfUu>=QD)^q zk|?dH1mpreG-Mm|L_m?3_B|OqD98>;@{z8>=gZowb+V-HYvv4Axm(6uk&i{<@a8(u z%P+Wn0Tu?WrD`OM#Nm{eMcoo73@q4Hty>G~?bnQb-f zaHD*uLd!mKW`h#=Pn@>gJQmO8*`jIPsTMfDX8NXj)`ysZh2Nmn@WC31yFo zH?#=qc6qtY9yyO#yxh|Mc)pOCZLa8u2LGMko>JCi-j!!c zZzR(RrT#by^d>xC`i?PEPIs=lXYC|Bp(GF~r1`tA)^>N0}Tq(-S${F6VIUAJ6JA_p%@`lJ5qoP~L_5kHg^mxVnJf1_uDjtNScnwlKx z4f(nZz}Erii}idOr+?*vXWqg+_SVxL`d@a*Y`7K5fC3ZJ6&A@@bAqU2DAqNd(+-CM zj5VUmaG^ub@jjk_pcZDthiq*YqRfN&1|u~>w_6?43HGrO15;g5*6+!P^8x!??4d@` zaO*v>^FtSUPW~~Q|3UoUfCC2csp%EjN3DP}(K&;+aHr$6P@<9ADciq^y-T}e;I0<% zrz=)m&>H#~0yNKZs=}E?A0x4)5LnTQ0J+=cD92r#*(Tz9yg-?7Ii?~IbQ;-Gw+cO7yrb9 z|EBF-z)~y_S(kj!SM!j>-R2zGTykhU{2V8GO-c_9}N-tijVI(I~eK3e1ughD5-v8+T{%LWl_79y} aw4-