From d41c3e04c51f0fc2f4e0f34f9f7ed1d58cfe8174 Mon Sep 17 00:00:00 2001 From: Ade Hery Shopyan <51158020+adeherysh@users.noreply.github.com> Date: Fri, 12 Apr 2024 15:21:06 +0700 Subject: [PATCH] feat: implement logger (#56) --- CONTRIBUTING.md | 84 +++++++++++++++++++--------------------------- README.md | 44 +++++++++++++++++++++--- bun.lockb | Bin 247716 -> 250012 bytes commands/index.ts | 2 +- package.json | 4 +++ server.ts | 17 +++++++--- 6 files changed, 91 insertions(+), 60 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f89e602..7448d23 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,7 +5,7 @@ CLI tools for serve supple mock server with random fake data using { - let items = []; - for (let i = 0; i < 10; i++) { - items.push({ - id: 1, - username: "{{internet.userName}}", - email: "{{internet.email}}", - avatar: "{{image.avatar}}", - birthdate: "{{date.birthdate}}", - }); - } - return items; - })() - ], - meta: { - version: "v1.84.0", - api_status: "unstable", - api_env: "prod" - }, - }, - headers: { - "Content-Type": "application/json" - }, - status: 200, - delay: 3000, - }, - }, - }).toString(); - - const response = await fetch(`http://localhost:8080/users?${queryParams}`, { - method: "GET", - headers: { - "X-Smocker-Secret": `${process.env.SMOCKER_SECRET_KEY}`, - }, - }); - - const users = await response.json(); - console.log(users); +Predefined health check route. + +```http +GET http://localhost:8080/health-check + + +HTTP/1.1 200 OK +content-type: application/json +content-length: 24 + +{ + health_check: "up" } ``` diff --git a/README.md b/README.md index 72998a2..e61b875 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ CLI tools for serve supple mock server with random fake data using 5so9{Em7NAHt!z>|**s`vJ@3z2Yj<<{ozs0kzvuq5_3Fd-`o6DuSl7Dtl1&e< zsPw>wN-JAOou9Tf?Lhi(VQ)mQt^0VpsqJ1rv;Upz^3y)4?0b6cj1IR4D!yLEqw9`U zqw5!ZInQT1&X39-PvNau6Kv-ZugBxZ&q+&8&4Wacup<6;toU`V&CJS~lswJjnN6u- z@Jwt4Y+73M#EhKWya{R9c7YSpQf5q|oXlLOu2iKjAmMLioecL;p`CGdc1~Juu4iU) zPQH@PE$8sO{Oq*oj9gD_dAFjB%(UnUDV}J2<;%@W&YO{&mYYTTYw%OCYH)7aG`j(# zT|d}BHH7+U5e3OMb}Ras?kQu&wDh!`jJ({5G$)<-w7g_>z*EspR|cz*n2?s6my?z6 z$xhD6O`DN3HQ1r)Zcp1$n96&AA8ObNY&bSOIkzBd7DLw#PoO_P)RO>K1>ZqJ*}1NL zk=)hr<0>&7*r)NUVkc!eL);90Eq)RW(^MQ_K9zr`YrDhMfXuYK^sEWFp4R2)e-%JY zBB-Nq#Uk#j^Hk0x5c#gX9>s|X8mj9TVv}~=JeDX0kh1pn*$cfsHU(l|OQ*dLfhGqf@ z)PwHWCfLcj(fP@lQ$5K!lkDkj2Uog`+~`SDvr;^%^_=`o;Tn;QNz<}&(mbBJ_^L>W zlBec+meqIss&2Z88Pg_2&&V$D3~k_K?CaX>=&4z$$$2z;YDQ*8o~Lg^C*DU!_4sXk zjYLjHW=`@%kH>BWBXCzECq8RhD%E>DvvQKNv-3TkjA;|6W=u-YDC`^}TZ`y*)W?5? z%lV;!oS2-OH=W{g(q`mlOw9MxjduF=C070D+S+Nx`}j(qO+F^Oa1@r+Q<&Gr<6+Sh z4#d~^#JT0Bw6)7AD7>D43aZ@Bv1PF8&pNCIt`QluM$2MV@WvV*538hb5|+s>EWloe zUE0CPAICkSigMF3XQt(NJjorMa`Ka>PR+>8^Ze`DW@fcCQdk1HQE%;Qd)bD z=e|x(#@?Ns0+(Rbpp=~CRQtA#ad4`t2y{}@kf$S{6d^lK=3BvkuxDWd&;Ds|8_U0K?~!Z?P?NM z`O|W8vT~x+X6FZ-{MWnjHM+C2YpBW*(A@o}r4wAE|KBC#RJe}(+&6`XX#kxo9NEj6 z^D|g>uEOEHo$`BQwY|I!*OW6w1@;{AGt;K!<<>}WrX(bR@vlOH`U9K_ ze(mo>e2KN^l&Me!O%k0JzX#V{{Q|zGWRGiiQ;~X}J0mqGIXBG{HORTEvNLknq;fr( zw^9(-FL0HYm!39FchlDeE(q>VT?RV|GBc)SWGCn523KzlxE5FZ5N9acV%329Lmhq` zUqkvTJ~v9?QLHKo#{c;V5lmkYOgLq@)8pVAm!rbU6fl2;Q&0mMss{M6s$kwo=eA76 zYKT9>iVwzW&i_18nNzqQvOS(njFifqqMbc!Vu9z&>z$S-=j3QaIA%;^N6*bmn>Kw$ zMowDJwPTzHtRbVOBsHCf?F3S@`c>q4;>Az9cGp;EN|UGMXC~*RrmrNQ8eYusYeeSb zYc1v2_Bv1DO$0P|OKx-;@;O$=h1amPu}N{(@UW)slg2suyI`*cx5TR6`dE#8b*$EG zzgrwWe}wf|SiOSm@lJLBz$*C*u1%RSaiX@TjI^}0m`)u%Ym=R3p1sK_rhS}KdtJQ`ma+wo`&4tg&z{ofKTSkM;cFGb`!h*?vt@L zegoopY~|%;q~%n`*EreFbJAbtFeg7dV?v&uY}!O~*dBu`E4Y&G$Z*CbxS(<-PM|vO zFCP&am<^L18(gA)97S)MOgCE7Q3rv!4?fX zH6t~8;(J4Ji(&qxa-ctMN|3hU;tk(K)I>L)@8o|9U-|OVbFyYkO7}bs*9g~! z*V78Q|8^(Cgsi;i?3}D@j;*TCa~`gQAJX$0*x;FBLh`gpx_PtjbcQl`#v14PiLQ;u zY6Lo9)qvEjsrHdRJ7ZdQ7AN>d@B$6#Y__`z3}ID(roiV~_Clz~v!}@E$>_VB_$RUI z;Q*{gD$cbFmO2$aPI|>(zQd{b0#@a|@A_{nb9lsZ#-Bw{n3vPBvnqOn1j@J_+X#DN zkyGHeE1bo+4XYkSuW}Ys9jrPqf2Grqnya0WDhJnyt$2bbujMlRxmj?Yg#AbySaW#ta{S=erHH) zt>$bH{Lkp4#sE1iD7>U&oFI(p%2(I$>aE(y%gHHN} z_^P1(dMAAata=#S&a!7@W~-tW8=Uy7ZoXjtD&(i31%+tl$*9d+4uyeO`dc^5*5mp^b&dr~eIwd3TDr-q2G4xTV zW5=*nbpP)opoH78x=kLyswcrW4pW_*!1Fx?=yv?nEr^d)Y0;B&J;9CpUAWc;Pcr-X z_au!|Lut3YCQ@^A^>)P5_AzJVxM@7$y8ovTPy?oKbw=WSYz6#=k304ieBCAKST!I4 z+W;Hb=A`fJ#=noRa>i3$1?=@$b*T6WC*K*@2G1ff#23^j!4ovK1(wfp_7LUsL0Zc( zxTWT|i=Bq+X|=;?d0niAl1F;-)Z__isZ%p%XpqiqcN*};Q%(bdAF5u4Ypv|ZYDB6$ z?c`@iv{I|pEf~1V86hq1i5XMVdf=-AzwUIVeyf`=FE@Hx)`T=qzTFy+r)ZBeQ-xS{ zbVA0&iE3vK{x$e?L#`*?jUR(m{Rys(b!LdaQZZc1?IYKdV`@*XM=p zZ}-u;%DqCn$M#KoD5Xrz8!NBKzjNuhOX(e#Z|`*=c53$W1)h%QYL&eB@YBz~wd?aywo(E2(Xq|5-wOrYrPWRa(XPel25_L~vri0M_{ zD#8?$w@NV2l()iK1^nNa_jqERlGn$EhI%}GaJ*I(%E}J4N?HYcJ3_6n=z#B|P%9DB z$Zr*4#`~?X)&bvAzm?cJ;6K1E=60)hjK3V~s)t?5uywKCFe|K0z&9_AlvfO|jkzRw5l9!(!1c)R#^Lh@3D$j zBIc`#R#E$ae>fX(M^gH%VQphV?!fD1ooEr~I~Hz*wGD)nV{Lb}!kK~|3ORM(5$nCi z3hNl~oxa9O>=+0c!3{dbo~NyZ204xC9TV~sURx`?Wt^{BWh=2$z(0#S!kvzeF}@cn zTP48XfhyQz4_=olR$}Ks$XxE>&T2@=PC|()#DA5LGd_&6Kb~z$4QI@$YC2wm72ZD1 zzt`m+Ygp?T-=(TnSZu%-UCm0w+*ZvhiVgUm=i%ba-KsXMrfODLmw;y)Stnb> z_*dbz$15W* z2E10oN{kEmALSNQ&+Sh7KXSctRuz_I^GGKyM4oR#q?On$;6DpYAOkDDeT=^ePaQ3F z7ArN3!gC5^>4vP5XC=|N6Sb_O_<+AA+k#dEBhV=(BnhvdwJa*mZxPZ!+kNt#scjVn z0{*xm)Y!5(tg@DIAs-8?C4(l1?pNiMdX-MlB|5I)pOQ3Cx@4|IfQU8Fy zc@w9tbdjBKLK7=2A>iB4#7e|`)x;{o3~FkXBn12gO`Qcz%R9#SkKt+Z8Lw6`eqS?> zXQ<;bmc#KhY&40Dw5XXCmdM@&bT(4m4;S#%qw?0O$74fzcmXbviIL{Lh5c0>B(1+1i1-9icUvI{>M z7h4vGb>At@SF5E}l*I1R(wVrj_D!-CPess3M)qSob=bLqI?%D3oN`zUEAWQkIlK4! zt*o#i0bko_D{)A`pBnAV4{>Z2Yoe_Z;Lkv96?O*yfYwfrz1GP-6o%K`F1iYn{VLul zJLSoPvEDXT*sy?qWgCxYn3IBOJ=ezGA8N2bR3xqK6yu+PHyDqV%Rn7<;}}Gyu1-5A zr9CwMoA5LuJTRY&4aIS9@a~k{&Pp5+@V8)$hm(R)VPFm32t0dp@_&xk_YbcP&*yP} zc*S^bCtJmOJ6I(n1O8|>T>f)%hfF5Ov!QpK|6xMfahx{2D~{*anE9{edG0KTVL7p( zIQ&;w!O~s0ksvK_)}8+?JQdEvjZXV1&*{smgcyGkp6*a8U{qJTan97ff~S1W{Tjwe zQz^^ax7SEKttxwK^>4sanZ&U+-^0_A4zbr?Bx}W4n`$N@C3O08H=Ytw-2^*olwAgo z7k{%Z&ip#VxdZQy;q;a1Y8BlO@CCYBB{u{@7E<02>%`b@-mX^SjRF66Y;*1n)jc+p z7OOswb&?UAf~Tg?XlCrgKjKtjt@uA~f42U6@Dixl;X6J)!vhmRRTlF;4Q>c zRcyT+2A&I8CF27A1}svIlf6ZS+=RyiZd{!2aCfWd=79fOfHQEb`m;;15L8|nYt@~x zWpRdD;jx^`2&rI3o*DZU&s~b$V*G)gf0WN-_|~3Q;`o679B?EVe3nYhCiQqbyVl7! zcv`3SzUWKoZ6ziL{9Ahm7mqT0gGVJw!Z9nZj}?{@@ZH+SN=ym(FVNbF#5w&L%rtbf z!aK(KiwJ2>n7sBezSsI%iKzj9br$4}Hat0!^IAXq$@VBvy|Eu2A)nyIS|_^4`Rnv| z7Po!&^bg0=n#E&s7UGS@3%7UU)(KW(8hZv$7L68Fwu|xKkEgk{8|HrtFA>ifvepBf z?m2gM9-g!6*s(&Mz+=-J66gD3fE6|=;A@v?B~A+XbI4BHC_%T-IXq|3wZROu!qNl& zTLwCZFjg;n)*Az@qI3>_gRBzbmUBAee$mQiIG!J5C1!BQOR}qK9p@iPNYONpWpsx) z9!=+2^JbEjI62_!GuSGc9Plq-e^Mv8mzcc$czSM!*)#LwU@LJ-z@NmXsRqV)SRKG-EYGmJ;v0vOcP8qD?F6@rXk%l)qCS)mIz+MFQDJp(sL8=| zHoYosVncCMHwkaGoz6J)hIDONW$FzNneH(m*?1l8bI8MlICBh%3przlmQi2*F-~Wh zV{W~1W30s7fPVu}^To`vjr{O0Ui4UJJe&ca?s}Zt7~&W4)G256SH2-wii%FS!3vuZ z@GZE(O2izz!77>&@c&8@JpdWpSZ>lAt+1H^|2^Do8a*b8b@eMA>riEK-blE~Dj~`G zn>-#iF|8Jk1LyI0c53#RhB4zmE4kSU%MbX&ZgG~5a~qAsQxeB3#?xwHJUBVMji-rlo)Za)cN~o8WG&jy4IWf4Atzskx;^|HbwI9BB;%QZ~74o>^;vY)tHP1My;r zyT)D#OYzhqzqTUZhq+eCU7TFa3qtd;GE^l-Wv3VJs2DM zhoffR{fDQnpTW~j<5V~DHjjrLQH^GTj^TC0WBA$Ye#O%b9I8#&mp#WSTFr~BIabN) zfd7j*PKOvky4QMcFrP}f4Nn7M4{pc{c-)D+vhmJy@;G(%#vAF>H7vF)PCt9^JWEJ7 zp*>O|4GV0}b8I@H&T!|m4UU$avkiQVr!3s5w7N^7Gw{wd}dh(H- zP!F}r*M7bgW&-}%^MggM%8K#7gr{uGUe_4^RlKftb=q2DZs!HHy|rv2)WbBP8OFvZYK$;V5cbm z;^3m=7V(W@NHUbh20+rxlCL)YuSvrkd8~J-hR=OPDr`!!-9W3o|ceP*5`Oy z&MYY2_thz43E6M%CMe{jg1>~<+6wO)7xDw4eri+5q`Q<>uLAcI(jYju*)MpS3m)7& z`noU0vra7U7D}L(gISPo;5p-_yS(Z$XXJS@+!hlu7%xF@*Fx?Uw~{jA{Ab)0j4b2a zV!3l*aF*UoJS|e5j+FH%o>Q_;U7z7iwNG6+E1V6ls#RrfjIZWOD{(`>f8R=vrwdt~ zQ&7)U&ZEV-DOceo62~&^6XSbtm6iAqpLkb$JW0Tc_8In8yn#*H}Hl!9uNFR#ladh-065uTXX>1?s`lNahLI0J8j{vY`VtroX_*~@rDqGw>ZZC zI^IpTSB1Cd_c={rtk_uc@U%efY4AVl#yLyv6Fg0klQQ;xXB9cG2lMdMFlWV_z>Bv_ z(fSE{z)9KI-tEWZIWfLR!2{m z;Ggld+U>2?AG5*9$E`gw#-ER;8rUJX$9elWTkb=Dj00!K0eJoGn|39kVWf3FPn6&2 zJZD)pyl)ENjV6xiXHxIM>+g6>{}*`f#=yXIeAwwL+XqW(8lFbd8T0jc!||L^{^gI9 z%z&@YBUaH<0e|r$!3Jwu&fvw8fo*_}Ui)b2NxBKI2XPD+6`jU&?oH)uyeU}9N#32{ zXtbQoZX=#Xl2ay2@H@Q!8oS1uoj01SB_0ez@SL|-O9*N4Gf#Z9du_8-vMb;#x5Wy3 zCgAV6#aWw_&L`6XybgBh+Ebp|VwF4-@clr_-K2cXd44cYd^DQ%m{qhp5Pkp{r^b2s zM?9;FX=xp99_st)F{@;Ez_)O#6}BhfySUX#+!OG(dfb^2Zjh{)kW{?BR(P8@-{!}y zu)P7_na8a}%&=`%5vF*XRf73qn-#V%;A`=OmAEh9PkAEvyga!v#<$@KtAw~upRmIA z2YiuFT8aAu{t-_)FFu@;z$v^rw9Z+CH*a^^>coAHr><79s-*CbEjye;Np<@WG!IY1 z%7?S3V*F3wIdh}Mdl^rI$(_UVE%1~x!wfASN@n6|xj1Lx&3JwAoLl=RJndCHMJT1y zPG|P*h2@*E(<*s3;6DV^J?%8G!PCwvzJPx!ajAj=lNpgnOLD zWiO(TGkClsTi-2oZ*X-Eo5JRar-5@?S&YY{l9SFELfSaF|5)r{`}Z-u=O@P7(aDV!X6<}^Owye)Ljk&EyY z=bXo1!P9QW`w1qZ+(9Rfw>GrD51z*8TC2*On2paYy@tT9z zhUCom+!+5>yrFo`eE)){2dkaZmvG2RJl3_K0k?^ys{ty58YA64*SWR{R+p@JQxt+) zB3-iLt>kc(w&Kw?b*y~G-M+8|!GM14TCKCM($)vzDP~tdU+n9zY*|u_MBymePVHD# zoZ|ZbWvO31ndC5W}$LuE>gyMu2nwy zg-BDj0BNKaAzl9yTb^_UOYP(y&tF+pvMrM}&(pNLW3%Syr}t498e#D77$WaaQQxzy_`_t6)RdFKv~sF5|zZI9J5h!y;k4Z)9xtHSPXysUyfTwBo74fGP_l2x#`Yx}sov{ixq;Mz+^VAX*e z-E^g`8ZaJS9XkW75uNR(lVwT^Jab$it2r)o{nA!wzRP9RfCa8Et9*B2RY4I}QFrOb zpRCYQH-4EN&-^<9$Eu)JM5qGGwfEQwJ)Y85@y6w{s#sr=)K%IF-S6_!R{7V$y&Af8 z3Ruyv*DTQ1yGb5)vwr-^3T<(DX)E*?KV-MM@v`d9ldfOds<}_WRo`AW9y=M=0ZMRy z2*n+A?Xzw|S-K5ByNWF1zV32X`d_P2sOt?K&Zpsx;+XTVAzr$tvh~{eNebFU(C>(M=~S z9`5?GYDi^`zXH|V2w5e(7AsW4<)y9SYr64~*f9LYZo1M|>GTC<*(PrKW?0qN!cAYG zfO_8A1*NSrwsGS-xbd>8Fy8h5oz)ubO}r}V=h^{o`ajtMkAN2WV64&%<%cRB=Gx&d zAE`*L(pKntH-3y8U)pLalU**Wa#LJiR!>Dwstf*Kta_Y5IgPM)*#)!xVfoLqoF5vA zRdQUbpe3%S;=OK!tXlk_>&vRe>#;%)xxBPh{6?3{%6}NEDc$V)Td*48C$K7iH&&Od zo{FA5F8H5V_4HXc{r|+O=SN7d2EBk)eJ^4wU{Ctoj~@i=tF#sRhnwL|H@>u0fv4Q~ z({8-1g73M0X{(03@ACh$?x{pTE&IStAgkax*Dr0A?jtw;6RiAC-E^g`(0Moh0=6ms zHMBy!vRWg1T`=%(tP)lgx8mPvR-ix)Hir03zto%BzU)rjcdT`kW zZv4No?d<{@l0XCB1go^o`JqQ!8##ZnUhC{THSO{3K&;kH7dMrxg56x(9joT`aBWYl zn$sJr>;J}TZ%T6WVV(Ic1?&R95Bs%UCzxSl!>c z^=@{7tX6&oRuxQkd1*=GBUsh*sB1U5cC#D*nCowK?c-X5%COA^ zPhho3_h2=Jhp@W-Css+He}bs{H3jy+;O<&vQ~ zf^Y(2RosZuRta=9a1{)z?#4(By3Vytu)1W$wWF&6|IKT-0{eZOGDIU?vhqv4hZDB_ z`q(7f`&X-m{{MRo$NVR|1am+#|r8~)YnH|1BndbAAvU%rNGZ?D4jWYo1DX)Yf^x@5I#HzO^mzhA@Io<*ze0@eM{rXK@z8=DVzlQs(*LE7AzhA?#RP^HF@7Hj_ z*Km>l@ipAe{I3`KdU$uQ4;dc&RK11f()gGPM?by2jMLUo?SFpy<-Yk>vz8~|pvfx#=C~@t|@t)(qzw=v}b2m--ps?b$@cVmDJ9PibxBRbv zko?JW-Dgf3A9mu?$j@t)-}XYAk8i9J^+n9mr7brVtqh-C^wV3>N3BcWMOY_(8pvNT zIeBHYwfXyS>(Va+z2R1uUq@SGeh4q9OZ%u3L52LMPcn9$!E&q?Bt=U(?t;`<>dTU#I@tXe} zZq;Qp>RK5;jkZqVHMu;{Ti=>~d9=0omvHMXyoOdoMk@B#aBI<(f!@Ye)X$@>3wX39kG$+Jt&>$NfIg+s@kZ`)IQV_nvU?KyQb8#(GDabRX_P+)l>t z#g8cC4L6xyK#bWda7>`C575PA_yDuZ0!|3TnaDDL<{^N&WdQN!xWFla=(2$BCci9T zaXG+Qfu1HR1Q1&uuq*`7+ng4-AP`>;(AO*}2Ph5&ToUMSx|9bb_yKFn0|uCj0+$7n zLIDHKnoz*zFu+xTBs0Jd7*heT%?}u2t_Xxy1dIy<3^QB80DA<&D*#5Au@wO6;edkz zql~{IAmSQ8W<|hgvsd7lKwS;sSd$SBm|Y2QLf}Rdc@3a>Wx(8P0OQPYfl~s}l>oPx z{7QhuRRCuNl1)@)Kx|dOvdVx|b6VhnKztQInpsi>P+SdgNnn!cQWcPJEnsa`K!&*} za9JR!8eoc9Qw^}WI^e26rWtT8U`!3bwrc@d=88aQO~AP7fazvSb-*5h@EU+zGqwgG zJpyo0V21J61VlsvGHU{6nY{wX1nNcr@=ZnrV0JCQ34z;8WF(+@ZNS_}z+7`&;FLgg zEkJ?EuLW3K2XIzkzKN<0h^-4)RvWOuoEEqs5MKwd$SkP?D6R*%BygwcQWua=AF#GA zV2QaXa9JR!9^fvsrXFB(1He^*WoAHqz?g=BZS?^w%oTyqMu2e*0ISTF27o;R;SB+n z8QTz$-WYID;2z^|1ckK$) zwsZ#U5eSa~{KJfm0i<^U929uV_+tSPT>+W=9S83_X0O08fx2A)r%gr|!0b4{34!-a zWLH4*Zh*O60cXu|fl~s}aexm@ejH$NJm9RrITO_l5E}q2>jwDPoEEqs5FZct)GUby z6n6()5;$+V1ON#=0BZw)i{_%hWr3vbfPb1b-2t0>0NG6Q-5#`FSg>jC)6ToDNE z4H(xG@QvBh6R<}hycgg*Gq#s^wD)_nL*@tL?@e?>U!pU66aACfD{xGpZXduElhFq- zyC2|$z%M4UFQ9pUz}&uotLC`CDS_yIfZt7iKfvMyz*&IL>oqOwxDrUna6s%xz_Q_h#^$uZ1%dbxfF@?i2te^Dz$JlZrprh`!u5c)BLPw7qQGT=q)~vD zX3Z$T=Fxzw0?}r`^?)&)JIuE00d33`fzYvlaian4%$CuBJp$ol03FQOF@W?N00#v+ z8NZGr5jO%d#{y!^UV&o*b#DN4F&Q@iX5R!jArNOGZv-?S2bg;!Al@7oI3*B$6QH}v zzX`DTX24m2o+fG>Aodo(vT=ak=Cr^Cf%uyNea(`a0mb71mjwEoF1G*@k^yUP0Sqt~ z1uhFDjRy=gYsLdMrvR=BB$)xpfHA3nZOMQk=88b*1i-iyz%a8V1+YgTJQXm)j7nX%O z1+1M6$S@ZLE(;`00ZcJ#rT{i)0VngLS*W2OPNO$B6`D*~ZefN`0C>1InNV2?of zG(fHyI}MPY4LB$;!}zlR5z_&gS%6t)ufQ>Zy4iqylaURWodY-_aGQyo4rrbWm^&RX z*Blo(B@mqhC@}dsfW>)$vjX!?R4yQP24Gn(V1YR;a6uqG53tBA$paM61Y8oh({z~u zNSFm!I|H!9Tokx0kTer;msv9tuz5D%s=zWcU>0CZK49A{zzTCkAoNzixY>YJX3K2A z9)a+DfMv$!1JZ8;92B_6_-_S7%mHNH3NU7`z%hZkw*l6ejN1US=K@X$+;1Z10GiJO z%$);RYmN(?5{RA)c+lj}1uQNAoE6w$qUHf&3jxdK0XCY`0v8103jmLpB?W-u`G89T zn@pENK*H^SwS|B!=Ayu5fu#9>t!B-9z~%*js{-51fZG9M76P{24tUaB5eQub7`Fhh z!)#dq*dq|W5U|sXT?k0O18`7am+>zGMBE9;Tm;x{_6i&msCx%sugSOrFnclJgus3i zc_*Ox62RO$0SC=-fl~s}ivfpB{$jx5BEVUJBPMDIAoec6vL%3{=Cr^Cf%qc83uZ|X zpm-_ZlE6!*%UytkWq`GJ0gjuC0+$7nmI7WjYnB2wF9%!|IAI1X1B_V#*tQJtnz8}cL4mi7eAw&$vuE#1Gpq`-gLPakWdU*doSRkxhQa1Ajts!Y1SCP<~4w;0+-ByV!)XD0NaWI zUzsZcq4xvEtpR*vwyXi{5eUBz@SPcZA0Yh!z(Ii@jQ@T>#9Bb+{eYj$UV&o*bsqp+ zF&Pg4X0HRB5ctJJt_3uI5HNQw;Ho(;a7rM09pHD9zYef?J>V?B=k=Ku59$Q60kZ5t zoj`o%U6BhS@$1PHVwS8YQ}IK9O9JIhmkoe~jexZq0Df~(;Icr{Lx2iq%|n3A4+E|W zgqr~y0b?E^v~44xlDQ%f`Y2%B!+=dEZURJ_j7@;qTL32nYMaQ-faZ?@=57YmHOB=`2}ExJ)HnHC0E@Q*&I&X% zQI7#)9|tUZ4A9t|7Pue~zZKBLEZGVu-UhfN(9Cps9FXt?VD008D05NZvOv-{Kufb` z8({O3fU5%0X227GG1~##o&dBlR|G_36U-Oj2hl%Tb1pv#~g2eU57?&Jch=D}arU5%Vj+^*e=J9mE2_}-sVk3ZYD)H|`>X11z-56S1O}R(djOmF0Up@{NHX6DjM)zuwHGkN zY}gA3Jpc&V2N-6C?E~x)*d;K+c=rR+4+7Hm14fx00uj#wsviK1HpvJ0aZKO^fw88_ zLBQ-ofEfn?H<}{?%?|^bJPR0SraucfCGeKOEvDfiz~Uo-MTY>%=A=OEbAV2V0jXyG zVZa4}PX*FUyCZ<&qkwyk04AAp0twFp`aTE9Fsq&eTo(92V2bH^6tMXPz#~TindTdT zF)so}JrBq-8=eP*z61z)0WjSRdjYUVV3$Cy@xBO1KL$v95irB-5QsPqsQwaQmPvjI za7^F@fqYZt7+`h@V8$`PZRUtT^OpfljsxbJ>Bj-51l|%TFbzxilvQZ*W#*fcGPj$k zmoW>>e3^yjw9F#Y?iKIGkO=Lv-g+X*{^ydy!;J=vb%@A>V3V8LT3CM-q4We zYVd`g-ShuRF2V50?*Aq&vo60dD?Y`^*5@tnP2P~+{Bob)Kv&p_J2kg|4Y;s7w({SF@+y`%bGFodh3KV=;#)G-fPC6@rL^T(RKIx-+Qm|*|kr7*Bctyu8&iI{+%lL ze^|LlKkmvd3QoF+XPGLPhrug*hRs75{hR$~LbK7_} zrSfe;Wm{kuwe&niRi3CW969f;9TxmQuRWh+o;~kv8hJgxFFF99y4&BWec|Wcw$4DRuH8x)_6cP$w1v0l?w$;p-RZx2 zi|43>rrxl&1?oP(;(4bD%lCCF`0aP+5^GD8##O&Nsw?Q*1Lh!4I~@Mm$QA=&Umame zQx?^7kf$?1W$E9S>bNY%O{ah0)vuUy6?nS13H1xE+a2iX>Lv_@J>{})ZaV#whkl`5 zm%iAgO7y$xpA*&d%;OCJ1|nZEp` zO7t%l$qH~Kx{T%INpaagm+AM1@nz5~u*lCZCWQ7+WH^>g9% zFjZC?u_M^mST~*KvKi96-rzF!5>HiX(7fIV<3Ih6^6W2pVLap9bo#Y%{ieRIn;ll* zX@K)CP{V$Uo4FxjeKSn+pX{tAGR^rfF3W@QpQjz#?y{L~ zI{w~@XFW^{ZkJyUk@Wgcl(# zvNpg7s5Ar4h!acS`sx~v;v&1VDbe3!)& zR$j5&T^1m$uY~AY;Ii(7Uv}9-AM>wp52OMcV()Yl_9UzV#TL7)7vUphXoOwjvfhMK z-2#hT)&~|sUM;-fcP;x8K997<^u0@>J^iTPa}McR=EDAjb+78u7c&)1K)O}6$X2>+ z0AX!9T4bwTmPlBej@aE;RWcCuA*_XWkIM!T?n}5p@Lm@t5e|ND+rV@`4@OrhMT=}L zjQ{Mfc<5iB#U6C?4kheUB-eVE4I`}YxoeGWaM^Ie`Dzu{L)w289)UW#aHE@03r0hz zg`#hZDteU5H2;sd?0Uj45!Usn%SIDE=CVyL8v}cpu;yQTi^>~I{dOfiaJIPc2EzJw zdN1r_F1wL%@E2;fy6h%c0%1+f<1QOVSl@8hNN#i4&4iD+OkZzR#kZj2Vw(RaT{xcb z%WlH$E=z{J;<6nut+N!Q#j2@!+D(^ASc_F`m&+y)E>Bof^9+{%JZVUys!r;wwD$97 zB93~TjNJ<)Xn)H_2~!B~b6GlJRjh*dyDWpSDi%B7vdM&%SLGgb*%X(ljAvc;`klV= zxb$$fS-#ZQNS!mA=KJ!?>FH75V}4%ftJiuL_!+bt@l7@R;jeGX8B~ncApN-m3ww7N zv;217%;*rp)H#*P6A{|%akd7!iHH@bx=o(%3uk z7o#Pp2;GI2q8rgo`X=M`1V*FYs4wb=`lA6T5$Ug>1W+Bq4`QofuSL~SRirOI>r2o& zMbt%AQAHGvLXjVZp{q3JH}pHwAIZ6bzSoZO1A$M_2k1j|7M(%wp|{Z6=oES#okVY< zR}uT6y?1J_j7Qy357ZO&LOLKELPyYZC=yl+)kbwtT~trc%?9WS33MvBfc}Xtp)b)_ zNPq0&WAq976zQ*l=(Ml_J%l!*htVTQ2Z2#Ye}kquT1P`4M9a`BWTAUeF-k=Ry6cnC z0<;iKLfQ|nLx*VCVWhoQd#m=+(6a0*s0{j;VgCeuiatZ<(M9w*`X~AVT|!@?uaLec z`Z_v^j-wLIzn<=|pcAMf6}(QXPoj?qe~k3C+U6(qG*RP&!IN-6^adwmzzjYM`2^9=sB&jIKfUH>t4N zfIr22hR&hW=v|~k!2pzqULehjXg<0fwS=`o(VG7zNPkD?WE3q6B&qdjOV+KlwaY>LquG#lx`eUV~5N0-o-s12+=>VWhNFX+sV7&L^)wMaXD z2AYiY6gWb~&mlc&^kmVKL{APqDdv)I9?}C{5AfsY1bP*{fIdMT7`e`<4O&XtJFxot z?ycxH&3`6=ER=($qRD6q8iIzR9%PEd)u>KUT&sX{rGiT8UC>%co?IpY) z>CgErLo3lY2qF?_tlN)9566164s)Q67!xNt%zz{0{b7 zSannm9l&3OR-;+O--hNO{mF?LhOmq;pX;5)W4P83pNJAM}Iv2n{Ntp!z5Tl||>tmqPkvGztwwI_CC9eNbQY z9_iZZ6U9*iSJ7{1Cwd&|7{>ft%g-$>9RgPaP`?}pTi2Y(F{j}Q4-QH z>jBjZ`#ZKfHh|O_?GZX*YN6hN7NH3!6{VnL^bGOiv3lU?Af>HAkAy0yGAfVgleQ-h z$xO3lzQ}@Wa4Mn-$d5u%7z#&~kPb45NC%xhs5k0`dZJ)H9dw$Y>ri*p7&Slv6p!kn z=BOLe2aOh}4&sIxZomGhg%gP)(6y)qkUf|aPC+9+7L?z~`}8qnCBUFNH; z|KGjcr$*Rd(G3Z=MEa!E9tH0eh1;NZs4Z&k`kk@CIHm1~V*kYSNn9I%(khKaxWLY+ z$T-v$slCB=1_wm_?SZs&3_u#((*0_H-ybQx2CW~``1C+Z-vBAT2TDL1t3hb6_D2n1 z3EGLCMo*!;kd~45vhC>Wjvi}}jvUL7@)V&Z=uWf{EkN^8A)+czF3Lnx z(PWe%n2si)G&BLFpk#DC8jrMP-H1k_;b<5dfyN+xavF<9Bc&gO#O2G5L${!tQ7W2< zrXbaog$neT$VSsq4$4FG&>S=a%|zPiZ$*ue8Z#TsLiui3b}qUd-GLS%^TDpayDM6xQ%- zm^H$WqZFk0t>_7~O*K48K&{n$YYiwY8(aqm2y3|Zq1|W~dIs%5d(nQRAwG^?LWhtl zd=?!tPW_w zzKTvD0r1Midq{mee>2>&yMo~zI z@XIi5;6GtcBCVTm(Lc}|=o|DYdJDaY-bJU-JDTCQ37ke}(0k|;bQXoU{yFT2=za77 z`UriDzD8f5f1=OO=jc4Th%UHc*{{%-=n`s;zC+W{_vi=B|BnQ`wEj2jRrCw`8L4pf z>8xEFJW=98rbS?xGq+Cls*#GLA7098) z?LzDVr1J8yvr#%aj6VrG5v8FSntu&R9-4+SQ3lc+PDT-EDw^VkbFtG=mg@)8X5%YO z4hoLYOu{NdWz9mG``fYeQ6W;@1#|hKqo@|et!NI?XP$e|YNVd6!rqD0J8dxA(F(%L z(K7TX{)1=@(p0G;^?V6hO8i}@2+hYYL=3up*w0jODo$`mEBzEqhF_1yBkkGR?M5Q4 zjbUgB1)DXd1UMCpVdM=5HG5^P24;oZnW_o8BS3~fR8 zp*2Xo+lYM#ZE)HBSoL^4_Cd4`X=vA?;8Z+7cr|HM#%8n$J&GPt!iSL}j-toVVe~9| z9BoBf-CfW=v>QExqR`Vw+wFGjljsSw4edlb&{Jp^(hjKo|1-1)?S<_@2T{QRe(Xnw z&~xYrdLF%mUO+D*HSRc4=JQy+S=1IChwX|qv|X@z``8v$Li(s$0fixbq6kG-$@?q% z1^tY!==0HK0zaY8&|wPt6nhSRh8d|I*r~%XYDZa{}BPL@=vfIBlYki`VswrE}$>aS4jMO^d0&deTfwJPxLvu z zc0GM?E9Zvg>y4A9N4kb^(APBSC5`>pO!eu%GKxaY&~>OWYJ_T`2&A_F)sWr@=uLsb z`tV%?MWO~sZ~XM;Pq(DvYa^wthw3AZh}4kq@7SjL7ndfkqY4F^WA*B&1z|O+4T?t9 z@%1`etya8VcXvkZkkWNRdgY*35A9Jr(kH{7s0UKn1F-{;J{$Kz{q^}+5&Fd54=F4u zf!=G04=TkKr_a;F&`_6qn1&IAb=NGyYTuZQ9glS9+>i9yLa#4wLV9DMR~mY?F}8po zW6-rE(kFL)f>&6(Ts5rTdua7$U{zQeHW_J!Pr#<4#|dknNFh8Jn~t4?Cc2W(R%`#; zb`QS6m_C;E;;lj$Z&@fYqLG zA7OEIaP~$Z*TnELwhilcWBbnIX2b>>m@gmj?Q0iKaYY-x9dm!Rw0A?Dq@*iG6^L2Y z=7wcWcg1%J_1@gRt(||PIkeUn$?p`OUhC_?@3n-l!+c_Tt^@vTZj@KqtdOZ~j$&%Z z(U35Tday}htCow>QYfmEU6QA-sq!GXMw*tG+R3DAK)PeEy!v^qp*Oeod2fzs-MKZj z&NsI_=u7h6XSR{9Q)X7qq-0L9Z|7$X^a}zN%eqK>d1Cs_~BPoAyvj znVL7+Njs=zdc~wd_P6`!T;*P&-HB;OA??kXM=0dhM}4&-ek^}dKY$N5yDDq5Ai^~JW=tM&DHNkc(AE<*0z;EV8`4>7ei z_}crv3o(N?_y+mPlrs;AS1f0GJnV}wuWs3!xSudVc&g>H(UCw-o@BPh`-{|Y$OD$)*Z6rFYoN4{2uf18kkuv9&GY@a{wXYLh z-f3aV*iG}df3_ml=WW~C9s^HodGjqP{?w%V{^UoPYaa1+3^vW&B*$r2M6ey^`A2-| z!P-0j%#3P1oL&0jstOg$M{7u!AC^ozuwue%T)yG!r610d=}x%_^~%Qu|wV4xbtE^z#q9wbOpL-T!@A=7G(=T6N+mD1w3> zx~6#VjAi?KxC22qf{k;luCs#iQis2IGJeCgyGAv4tL*S!Dc!2g@GVUG&dO$*`gWkQ zS*(Tgr`6_8+(Z`6=*L(%EY78m`6dP@*SD{lxn?Wb-T5^=w)$=_9r^xNMz$|Qpjo^U z-e_0#9_zpMdAqoT1=Z?t#wm_RtM0CxkSU*C=&|y$mR#r7wAr(xx*7jC?do5{oOzat zCe<)cki%C{!&E+m-B`o?x|bDv?KV17wx(&j%@@(RQBC_zV&S>P@8#_nToTF{bfi31 zR2(tdEz;&)oRu^7+$Lh$bCWV518bUjeHBIHyzUut4wlAj6VY1V?!sQ#D8g+H`X`1d}#vY4w25?W02VWiNIq(B1*`+igM*L`4B>k>fd?1V0Euak2i7iQa^dmP)nWvoZ>`nQ~4=UG_J#0kupXPdoyX= zx5v-fW!R(Gu8!&R6fI2U*r{5=)}DKJVfl|c*!43@d=RQ{Rx3r{2F^Bi{jiq@Cs%&@ zB~oY{=z(xa?S>{{r?1dg*vORZgfp@cPczbYH8O*q_D!sFsj*X1 zW>meD$L>xU;`6c{+WS+zCgxRA)+uh{JeG>@?(zJad&WdiS10yNZck>r&Msezu&AaS zWNGiAre^3adRUJfYX6k@yBAOY#~HP*6C{ir z*Mz%w9C-Km2R^SRUT29fqs`&nl-aelQ)XQKgqv?&oj8y(wR#whyf)_h-Ha?F+7ZSoz&fbqRX=kIEUMtOZz{@Wxg5vERO*;+U3u(zJ8=MJ#5y^JP@7nMo5m`&Q7g4 z?FH)%w#(VC2mP^cuj#^fBWS-n;O6;5jBt%O^C6ph=f-i)0;+X6^U{`qjf(7I+r=<@ z?TOJePhK!|#Jq|3atvd4whshJai;ZQ^4>&>8XCG6Lz|BXeQB4IwNSJ6M0i@(zR5taiGMI(RO`nOBdnhb*h_><~w)#{F>1pw%zimB(s` zH+C~apQGW2yEzU2WyH;qr{6E)n99A{Nq6(x#Ar37ce>@#Hmxq*LkwIo>~-tN>$^VQ z?0JqBPl`8R;MZ9gZ~t3j;jQo0ul!1CbiUd{bJ(5p1E#@IQk3iNuF2`m-ut2;QF}*B z>-HL^8r{tSQux+&H`9*#+IzQ~4M!Oi7uWeWn+_YDI&!$C`C1v-e8QfmF^gK5!1Gk~ zCYz9&e{#%YuMhbC!B2I()6npNxtGa#-q$CrPcNr2BYXXyTCO~x#_avy-d9YP7A;Db zFfs{kbcv9WJqaPZNQuZ~8LClPYAi$6!$j6Hlw4ai!w`KDvSlYJLza?dFqY)|dG0xP z?)U3=o8RxBU;n($dp_qm&w0+Xo#(tR%fSfMCA7)xBfVPPZ`;Pd4ww@zuMj=R6=FN? z^%?!Bf47;sp6=b5@kz`+s5={lr?Psa7O~Hp2bt}YXV02jH4?uDL%9HDy2rd(BGEeI z&32!}N_sS5MbzejqZRx5l+;PO(~FHe1!gOHaWZW)o32$$DIYbmFD8J1NnZ?mvkZ)tta`J&Q_wKGKFsB`Mgh$}NH$9QzI^>g;hv|S4*dBr4jTv# zDx@jdec3z!l_!B9!#fe;<^9)2AiN+691-cL%Sfr{TMed^9(; zu}PL$Pa7^eG6lmZw+BZ}e3)+@mb$Pro1X`7-_nO&%ERhjU?urpYW6>cR+QaKInYaSju zt{AkCZBS6*-r2Fa9S{^hJ@6!c7MYF;3tMQgQNs_8ovsS_>I#}wi*y+veADh#Wmc92 zi-7FFt+n$2=6P1Ko_q!fQnOEC2I}d}yl(@+Pi%^E^pMAX_aSQ1iGVdJlEF2+fg6w2 zlU)hVZ05)HAZU2*iDZ*4hLS-g#*nhw`LUyzPvr>&NzAqO%QDBF7BwUT2fU$dQIAoP zEL~9a9KhocKFv&BPbyU53a8prCj3d&7D zO=}e`&m+iJ3}wB~L)R?=SoC==+jZw*9rckPlWrx)AMXCkC*xF&*?}EYYy(&ojd&Em z+%CX6I5}(8q2b)m1})1R8d{iK0hVY&u=FT^%PG3%=%mieQl@E`)%0NOg$tN<@kloA zie%Bm#i_mG;z%Ap>`$f+{>FAPG=scxTNpg|!q&D=fv6AOx>=-!HrzWjN;eY^TFSel zxR(vC%Fg?+ZxG)q}983TOiU8P_E23vx+v~oYQ{K1N^k_D$iq$JX)Y%ls910|#|BlSos-Ysj z^*!{txM)=I5RB7AFIPqJcy766lcVB|I;uA7dR~lYMFr4)vk6?*XRSV1);4*0jU&kI zw?kLm#a`pR|VfaXae8GnuOBsDE+(PMDBUN z9WZ1-|DRSL)zWfx7bs?WRjQ%XzYy|#d@8M)=$=MCY~EF{0;^bm6-xUxZme(?ihVHm z=X<5~w?DGrk)R#Q&LQirA%1I8S##F&n$$#sm!EVE`ujYDWulMr&ZqQz7s47}M?Uui z*HYvW%V#=7dMvf?53YqD;!0#`hw|eafXI#QT>NZei$I5708u)E?UX{<79wNk$KCmm zE9K22!%c?+;la%UE~w%TkwO25lABb4w^{ZSbX-fAp8Uo)M>X%x|5{juI_FE>NCm5sRt>YIR|O+EM3lNNn_&*lRmoYbzVY}GC7SKMH3;ztLC z=1Nsp5`hpVerPHyz6FJOJe@h+mfUPVPv^6}pR?fQANI*M76x596C*B)2Q2Eg)L&bI zQT|g2hE?5$9rlASCxKZR4sYb!Xu%m&g}4SN^p{|${P0ByhRwT!+TwrIUmB@$K$Rk@ zzWNInL(+!kNBghd`C2DJoFQ|HaLQ{}2nYEeWtrqc>~DQdS;qRyvW(Id!NM35SuDMM ze@OmGqzIY-jI{RuvrvOlMVBHRC;qYEK#P(7_d){>2ZQrM4DkNt>ZP{P!8K&#fkNGJon?%Q)`*@_aXGzcU4 zNAvN$uitzq7lSImd^Q3>>mr_1P3Q9Hl%IQl>w|OYcQ6ZT66E$=MbFtA%WAD}8%6Pg zOb`a%Z7ys42gVK*2-T3Zi+f8NklStN1UG@(IP{QQ7sL(sYW=K?O1?xDW5v8m+bA9+ z63#kyI#D&B;;dM{M-Pqc@&7Qu_ubIV?tS2zPf zXD2Qh&s4=_^`o9EB?IAs6gi&kD8@?sByGc9K0sbDESlAQh$;0Rt6kxd6hYC< z3kcQtAGpWLY9ptZT+DriDTQwhM-TbM;G*2c`}gm5(=F)m4{SM6cgJaymOSE{MNIt& zGe00yp<=c}f2v=sIc&wZMPmtbL{G-x7m3CF)D+N2&!9yK@hq9f zt`hugyOeY8?&sUFKu~!fTC@#4+YY=wo9|kH$Nx<5@Xz)*UqviaKRe|CJQ* zXdu;LXhV=L6~wb9Pk|@`4MHToP1*8WBY8d$ZlK;CpJBu^|EH*ZzY~bXXFFuy2w92W zkHr}X=?fB|1TLu@yIT=SllIrtjMaF8`U&g^s7uWf*ma_z{h0&L{Npp1yLYe!QXG6b zg9Ziknk&tgRZhwIP1DoP$pfDQB(N@JpfNguEi;sH1CYQX${=+VTvE%BZ>KL|#^vbG zUcwy8@xIeiHVSQJpQT(Xoge<1Z1Bc_5+kS}@jGlOO9Vo-7YN#~eRuj@t$6>ATfZh9 zTd<6CbEli7mpXD6r3U{s*3uBVT<{ZnS1$QXwqDNN_72CQrL+39>z+f-%9Y#?PqvInjL2+EwF!7Xl5?At>=Gdwtm3h8m4UO*k8ImNUM%5M3<;dObvvjMe2!MR2+kleoAIl#7E#}Zexcl z)6BZI+Ytg-G$*5ofKSmmC=B|6}H$Ib4S_g0Cu!B2Fk#RG>k ze%El!xj;H#kgdA9DVC(LBY#2qJ+bRl#JpJE*|z@Ovws31LM*7i_zMg3OJ!Z&A#d22 z%8xO3UMkBW8d!>EuNzw0 zo5g)S80S8%R9tp5k!|iu|yzj^97Av2kK`Zzt}8Thv1V)MQN;vfKAi+S@Y-TvAM|+hYt|nnypfBpq8oX zr|hzajr#x{(o!ti!zHn6#K6U757WN;a%w?QJf!s*tP;bO>oIE`tV#QA6@BXiCxEQC zFoU^#)M;1s)%c9PY#xBB>T|XYYA#yu*CvP3&K#RZtL29w9GCJjR+$EbDcJBk?YSoP z)z5U*ClH6#>ngEKZMvs9&zw^;U%b?FF)A`LMWLF_uY{g9+Q;>DZ)n=JeDkALpi7nx zAJiH>W|;B8-GQe=pEVkz>Csp=ip`BbL34tTrjwWG9C9frI$?5iLI42c2O{hf=GRl? zB_D*HM6r7d5K{Sm_8VwPl?PY_wYAG=QUyCUJIFk%q=S0S6!3GJKd(cq?q>||cZhj? z#&GQu?`Pt@YE`D@Kc>azf2wfb>hW}@PHY+I!Pz`^)5#V)9T(?6)b*UoWQ9aauwt-& zt%=-LSpq!i!LgY2l_lLqj0K)oG!*5TYsVnX65-|V4=;?e)~4gNsVjR?L$+R9BsWxj z`Ei|OV3EbQwN5rqVr)9smQ=OoQhMWpq#BOiA)7fF$kwV3K#&5=TX7)Y&bVPS;uoSs zzS&#!1VsJy&^%@jB|yT&1F~7Pf$Szt%4TYMMr5-Gcq(Htf^yf;ep4)+S1qQ@nD3in zNjAgBJ#NZmAjpyzjmjGr=TrMB6>uo=ba&aA&0-~)E+)8k8N9fwt9q)u~CL zIi)dR(iI2J$yl+`PWPy-@)1RJTm_&eW-y+3Yt>Xlu39^BEf0zOx4wXzVl zN#MdQYd?_Xhz-$dx2GYrq55wsCbZ&i{nn2ys=AE)(MU&t=k%IN0aZY1tHpPs zrlzdYQ1)V8HD#BWo3IYD%Y_}>^9|-0SIw9;AtG?bL`CMw>2;F&TSlbyFZ#o6 zS{cnQ>+kM{HYrP<$D#B~4hAu1UjjM_fa!ts!dxZfjlW}w{yZE4)i*}wQXKHY#e3Do5D@cV@=S48YY`x~^cJRCS@kcZXd3uqGq zPST(Aa}UQv)VP5cG(r8uvRPx+2CjIIb{({{AG-}5Keg+D8aQV(M?1XL>%9BLk*6Kd zCJ8L*bIekmRS?|{ZF{tzMo*nz*Wp-);b>DX)hl;w+W08f$S|~9qpcd>uUW^XTOZGy z(PmnB&_u<;09CMAOkUBL=CEs;aBXHIwN--J-dVKg{+j79F#pBPj%ZWD<@@ch3lS$g zR`e159gIA-ZAw(PjxbDS7)`FDyXY z3hmtm70F%pjCIV}fESi{k^ki0iKvj(XEV?y5%~xEkE*@!;E61>8=)PO)bYmS6a7=Y z=+`^&cjhA7{gs?ulYh6HHPT4lCw1Tr=Qhs#A8p_)kc2wT42c{cI3sjIo4{E!CxuUI z6C64%bjGBKLHOsSiGe{ABbb4)tZeXia|S5r8f@z%*`9qek(KP#Cb=2wWGZ)HE6rpV z*2-BnX7}pLe)c-@7^-Wup%CRt^Unwjp2#lQ$}QLwbJ?1?*?>@N5805J)s=6u*L7w4 ztmgIP1~MD%EZ5D7F_r5ZWF0q?O%1Y~&1Lt^=KphL9?W&2+>|9Al51rJ?U!RM>U>4N Xl!3pxmt?kLnbcImfBQ5!EwBAIQ%En2 delta 48577 zcmeFacX$=$+PA&dKp+czb8dr!qziurUE zJ}|Ua7hk^RIPQ<@p|i5bInFY_&lkYYNlQu1gOny=8T@rv@hYBOZ2SFH3bKlm0-BdU zB`r21*B2e;^OeHS%E(HK9XHlj17GpEc`13*a?^50lm0sVL0FZVn>N|0ww>okVU<2D zEp~iHPHtXSuG>PDr_fdUp!mAsPX2Kvr5_diJMy)V&(y+clc!`%VUUjFYeG}AvnOWYzu?7h#i{}8uxe;d z%8b~t+2iu3&w#=I5oU^Giubn+j7>Q`4s8<@zp?S?N-AdeLj zg-y$ylrfnlb7K`ZVX|l6_H59zbLqYsI4N!VWEGT;uY!kob_`bKjY~_LqBYfwd<;Ti zL##%2ZdKPmQ`J}CWIP4X&{QRXdhkwM~`iH%A<1;3Yi=8&bSE5$3oAC+>RKS$j zN!h6>c{F=cMpj0i?@BF~?3=)AFYa zudD0&<0qx$<)w}DZK4LdoeIGV->wfYE zcU4SD$xDx=p{eO9lO__M8|{uQ`y!V1PDsaBIZ2J&^oy{Xrv4>1!&p15M1_I@t=yECu_~cMYu6u}lai{f`3%1JuUM_;er??N(E1#gk>f1zlJPF@ zMmd^`t4wxn>`k;xwts@#@+YwBX+FctAy81*0>IuV>_I|BtZM5P5ZVab8^*;>nK&Wj z-;?AvsBJsWB+}QwDt}r|PIgXg+RSF{-TY;|_+$9$z&@faX;a}ZiZp%wbyt)`oT zJ|CN;a5@cOUJFZgawqvgEYndK-r23-GJaY7JF(gUp*i7Zkv(a8ny;XXJD1b2rPv*X z69{N%zwYQ}98Lx5QE2O5scBaYuURmcfzjg1$(}Tc1Hm^wH*I>_K8{G!IOOMom16XbQ zR)gH#7KPOaufU2I$7*Jsk{|dGm_VrXZ{p0v`@RwpW-kChz5#>wpyYZoW+;#Z1 ziRadomzPnHmQxI%HSgS-$*^_2>rcrTm#5p84#%7pK3`~Mg;r9#ba%u;D=KIFIMwId z&10NKY-omSLre6}BiWnyG6f{uOa}FEHC99Z=Zx!Vkfxd&Uup^!Ok}7l;Qx6FM#Ggq zbSoU>`Mt2p-yW-aT4L2eE%5?HgpRxPX}J@1=3YQrJD~@tKR+(~`Mw^ykB4q;f4-%K zrt&?n+}!-hsS|k|$;+Kokf8^TV=N4{XjQhmsg~rrE#5(#_EgV2cTQi!>iF94**}j+ zXaxSd9^Wy|ow97KMsVab#=ks)Dl^@JOJcQnexBjlGoF3Vvrl*xf6Fjw@#RjLl#$2U z$V$s51rG|d-6;s&h$8Sc1v4y)ae zl`G-NJFFhxF+JtmpW}%y};0=0G zlZb)0yBWr1=fzIR$)3V9sp|8sgsXz3wB9-Ky{Ct9DU&B?KR3M79m>!hvV!OPJp03Z zw}a=fYCvlCBNP^Zcic>x$$XO z_3(GN4w{ReP2@z>h>pcq{8q2xRbF{ZJb%GGY7lpf*9d40Q+tZo2bWrF$1!5&Meg z@4^NY!(w&+zQ5DEv>S`?O_9~{8CsAahH{@A6n&SA8{L0WtE%$ zJ$zOC4!+XAfK?AeC)|{2SyNQeC#&7~onF3B{#PDh{MFK@ynh{!NtKr`T zuY`SYt($%ZzVeMro0Osx^H+MR5!$%U-7Q~Z)#HwjxeZP6j=Y`TNR(LbcI>tS0_wpO ztmb$;R@>x8ta=i9&oC)N{qXsUC?EiT#4CtTQfd0!5_(*@AFe6l=EesxpO5xB4PA=W z$foAz>eYzvtBr2G1rv!-#ouglhjw_8Tfhp>_P}a)d``S7K7_4}-Lu(Eza3xk!=G@= z8AEw$z!0oDQelgmZ>VSQ_TuBQwe)P?Xsgc`LqeXzoFU8S)3KIe=qSyPOPGx7+wi2@ z;$>J3EqC{nNh#yfQYU3h%OHLzTpgLP-EBbVV^eo8UmL8Z?4BKNe)lA_msY4+@bXS~ zaI~(+XG}_a7GHgsK~l|nLoaJyZtP?}8v62`2KjtpyWB~-@{HTpaT(*eRdfHuS5xST zT;Jzj{99Nx;gDx{y0)Njod@p3YR88jHs?L=;e1zu*pLGW{KGYUAf@_&qq+{iM_STAR?dFxHgkOJO{$2NsypV3MsT3XF>fUXg_a#i4 zVjr#)ef_<2eXTyNdi3STo_g_}r{B9TdFOYPUcY|l;f7-@|D$%JMjiaG+Zl~Igw?iu zzLs`Yqa^#voAJ^w?-GUV`77WnZ*|)%D8XOC&TJO69xY)PVcslZpU0FhX~#4V1_qQQi<9u;;sk$5JF|Jvda9&d zMAR2Vsdh_^4m1t-`8tN$5}1sqY?gg7Cm|e1jdl`R?}pn&aX~9QV4ue%1nig=!LaFU znYQ+Yn54iqLT%h~==N8nY8(tivO}8uQ9{>J_W2gUz^y>lA7)={7H{n>WoNbwT0fMs zi!ftK+vhRsOWQH6f`M>$bSo$O#hCa&JG{<50s7ymBnTV>mkp+&@9QC8)e6I2nLP=G=S`tHt}J_xWja}FEmOD^dzLwE~f2b zJy_L_=@<-L1ZrMrSCja#Sk8g2no?_OHTyi#+W|R5`|Y@q3E`XyD!914{pp0_IPUgY zO{l9=Zd{A_z~_G?l2?xds2y>vc1C72p0|tJ#9J$C*ylS3!`=Y0+8ZTVrEA)mU4nr= zHGRG$^3d6~@qxSWl&6HP<@yqyn!s4G(#ml!P@Hp81p0ek2`6qbo@Urh`4XP;F`J#@ z10`zz(T>>(;W!#;va!OJ;;F$TWQDznrT;{$c;F>7u!nDBHw z#aT9EYOShg$Mg&aJ_4$xVYaqr)%tc(&!9E5zI`6EzP=sPD`;5_?95)lKY3U1QWz@Kgv*WJH(asiW=|I)^vH ziPL)M*4XFkkH;)=4lQYH7YztnUp2PR4+sXLnz&<694AHpCU)k)U|<`tV<WG( z^Yz1XhbkXWamAb|d(-pW!70yz>P#G!GmIng+&!*-8N8mvF~m&LCwMnH9>+$YZ=BCJ z2+ujC0&DQP{o#FyH}Vg!AIG5ESuM1OTiBUHf`QM08frIt?Urt}?$)~*Ps`P9;Qd}) zKm!YB1aki|gw~z}J7z@C`Z2-I91#q(O>`HSdrPnr?eoA* zw87m_YT_9@HHuR^E5=I$(kOtW5xsn8v*W^#r2H0 zz6t7N2&>P^9$;@tObX-?QtKJ+X7Pa?cH{j+S?ei(YfME^YMP)5eZ%oD>MBH7t8A116;{-cY;r@%!*sz2PhnKv5{ zDnLEYz|-=g0KD~{=iI-;KE>;3Z{exF87Hht2sn4WEIcM&4Px%LdvQEeuz0`4W5~7o zxW9B}AqMTNPDz16LTWZmV+{7*Xva(qT73uEnV6k}?4qf`KnYf~JE_}wd>VkqvsSaD zz*2?WtaB2=aWojL3Xb7uj*M1#tP0M<5qQZ?ZQBTG{7X3Z*RSw2ETp234TpsCY#*9X z9EYci0ZCyGI-yu5?;S$wEKOy{RTyfY&kF{IvOKkndEn#N*nF)Q_BmcxXQXc!=8lYe zxZR4!dBSRcnUI@XMgBI-E}9;+5{KL8F}cI-m>I#qj^XaDjtA{T_T+H82-y2(chs1j zE*uPaT9D4Ofc4wWcIM1rUaubTLTie;L{xo+W z!ky7>kEg{L=G;)H;-x!ni)$4hs6IZl0ODrE2lSGn194@Y?X(B4IUXNRc;GvSrvc>I ziknUA3GNI!AHM<<@l*pFnfW}3r!B?90Qr8!bK4%*Eg_tmHHl0c1G5HC)s=D{c|OKd zb$;h;Dx2YU!F}3D@jUl5Sc%78@DB1Hyg0T6)iuj>C&=}3@l?5c2JFP^?B=7HKY4L( z%GMLz`rMntR6Nz-#D%?r*Vfrb{z>jII~@(X4X>ZWj}dC))T1_7S?-{^CAY;>8z{MT zLioQ$?eLxbud;wqjx;WWZ(Kh=)8 zCm2{f_1dCez*7?U+038g^Tp#`=gdlHyqoZ7M5lObX^x$_m}e898qbm0F+LEU8(L8u z#DO55CcxR>ft7e#QO=Dj>^;034SU$|JkA*V!o%&t31}sia~`Z}PP^7yil=HA4hlYu zr*1hz9;iIsZL>1~VMFlvl)AcIaRQy~*jw6#6VTYZpBt~6;XZ1(wG6`JnZ&DeDIO0v zo)oT}RF%SJ)SLt(zHcnHv zC-LS8PsO??$OSx3Ma>;cedO(KVeY&?j+a23vu^?);b}nKxbk;|N>RQ(cs+@8=lmf& zrQ}mKpH2GB3w^rLEGORSt}JT5J0ToL6}Uwn@S>cD11sV#J99P~uR5W{LLQhL4gn@Xso%jxBIJWY>#bN$KlC@U_Z_}$tI7Z$e*C!iee z6V72gO)s~DIq`ww_qerF%YzAW_{g4_6nIb}61j)!CwP7EShr0R!WX;Cmi#!@i`XQmn3DJ2i4{e_Mdd)VKe51HdDBzHMhd9t^w%)S$XAKdLNohX{{WkH%BA>;QJh zN<2-Hdvt#8c}(%#gz$$#36*UEp2msiT^_U?|IHH4{XJ2>b8V^`l08!AJgNPh2EgVEs77^i8q3j&cX_OhNu28RGcF* z%R?u-UY3l&QyeK-Y7gV}`Xl8(@U%kQH-9k?yDf9q%Urzn#JPLuc|4`8rz1YB@*~us zR}5D2BX-P|U|9PVjEwWnVGbb;yPNF=ao1yv{43o9jt=!n@UPT+|G<4Pof=e1iX(Ws zKe(qxgH>)>?lWWto|?{62m|*SUS~HYo3#Gw(0HqqJUlg)GI@Ku4X?R#++HB0JPgH< z_^@VcDBanOxeB>l$1q;9o13owj@QFU)%{WTl@f!sEh#LX6f78CB>e~2c9^Muq-cLCO4_s3n4Ng0B7BXQ2)2Dan5DVZ?qmvwf`Q^7#L$Np#{ z86L#b`R4pvP2eb=y6a{yzup~khKVJ6AD#xyosLs@UGW$I2Cc^9Za&u=j;AF{nLMIz z!gB}h6rm<`Kc;~}%*E5N@o3L|Y!99$)A>h(z(u?kcs%Oe zm=M1GkNINObMQ2x+$Jbw8(v2|XSZ74ZMTb_=PlR{chkDP`m2-m)htFo2M1WWi9$9e9a&JmIo;-o$hFb@`{<+|D>yy`Hkq9}ET-0#$)q-RpQd zF_8Lt^0&yctAB4WQgHtu;n9Zxq;rv&TJemmx9 z+k%=t=XZnn>Dpr0I>?XedbS=`m#lbwIb5=}P!~B|*IEmoyQ-6(_32!HVGI6r@pLX(RXEIb|I&sLH`0s$U$<`kP64WDlvmJSS;db=YG|sLPF4*_M~crty8e?@ z`pKvS%2WNy$Y&YHPWS8#Y%w$oX((?+y8b7&BZ(dB3-iLr#$<>y@*BO4QqI0h6SS2{``Txl(-Pc|^SylWG&zDvFx1KMn zdM+aI@3k6qeUJQh+H186gf9tk$;!VhhwECaVy+;?|B7_U%D?K_->|x5wcacu6|djW z)%6!vr-B=y3c|b$CA;^7_-c>J$yF}wYVD*AO;UnMVW60)Z0qqPkN?ZEzEog)B6QaF!m0;1dI_(!YQRuXPF53`>-nQ3Mj$7 zUWBYFe!%muwL%Yi{93F0OW=xn$g@j5YXrGubr!Gk_-dCI_`HB)#n!kH|7L|A<%jHA zFJ4wXeBAS|wd%koxGLP{#b0X`zZ0(Y=X=Tt_%ItQPHy zSQY$=XODXE*ILCNhb!te{fPDgig?4z@K@Hd!``Y@N7bJ6QvH>+?DlU}DNtFby;T3n zsEY!h3=2Pwo2-^ye(bKNlm3#MHKgZSv91jXG?ipR_XM0TcHS#UuzYAofm&S zwiJF|&7%yH{6}IyHzp`3~1#L;7 zirRa&qnF{YtQLAV;+3QaKU8tDXM1|Qw<5W&wL*Qp`2JqJXA67^XfB6&5wa?HxaZ5t zzuEKuzgYEn4CU0t-rk4d3>?QW!2!No-eBg8m!QAk6&vQ z|FFkpVkVC8@4rTdrl_Wws-f{(EcNf<^el(wW=^Z#O%F5soR)~do%9>3NKMR+`- zJ^_WV=Z7+s^CGUbe*4178+1_kDiJGN#Y^>9R;5G|uYs?QRnl7g(Cw|EoIhEmzro|O z3dVT8tX5L6)%Cw(bzF7z^8HuqEY!bFpbEQ_QF(jv zLk;TX74)C1^7Zl3_r)s9056}c_TpgAAFLat_QDvfDoF7nuC*#K)#KM%r61>USxv=6 z&%f3x-6XimnT(a6?b(7UUWRL}5=@0_uBUkkr+evS6+grC|H>+A7C&U?@I&culk+Fb z8YuA1BSIA|@Dlv*w5oWaSFWu5MOcl*Jr1uD3bDuJi0;SS?HaF$PWA(^y@9Vcqq4ZG_V9=7$=v$FqCA z0X{`}^xKrMO*>G~_H zx&7bt>h0g(yix9JKA-)=F@0T;haLUky4I>~f4_e_?~KcTeh;US`uqKxJ5T`)2AAyL z@85h$e)gAk@!#*?{(k@V_xm?Cg5JaZ{r*iy!nN<+a2;Q#=il$&^d3$l^!NL>zu&+8 z{r;^~G52N1-|ydaO8)!%xxe4P>5lRD`?tT}zwtXaoD;gPwL<^@egCHS(z^bSy?@)e z=lgk*(rJ;7hKO^jsmwWq5+nX*Awa?;3{L(huRx2N7%>lD%pwu9BL2yCBklS zwYR^DJ@x8PJN!z7{SID~UFWx<_HMlSzxDQ4vmYR3`mYi8X}lVCqu+Bqmp zoWp-;fj`3ZweTC6<(7Y_N$>-%3N$u7ivi9GY$*naHJ1gJS%8tn0nN;&;(+90fQT?a zoEaVlxFoP&prr|v0BkG{$SMJ7ZT1KZ3j@?B35YitB>~|j0LKLqO;k8wx4@imK$1Bk zkX{lH8vwL7`2j#=IN-EE2h*q&;IP2rQh-k8l)%gYpnYjT7qhT5Ai5ObfJOYqV25?oNx9NEu;Hi~VtWr1Z8fRSYZ{mrJbfaL1{ z5!V9-n&H<2E(z=x7-RzF02|8!vdRGln>_-UPk${m^0oi6# zRX}nSAfg&zsu^Ala7kdlK&}Z?2W+eg$f^#QX7&gSs|Ki112Ds6)BuE62OJm3H&HbK zy9MUd1k5%^1k!5&Vrv2BnEYCR$eMuD0tKc~ZNOoH#kB#qn^OWaYXREV0n9ZE>j0u_ z11<>6H;HutCk0m41>9xM2`s1s=vxo4&@8V9NT>_ADsZ>ySs!p#U`u_#VslwwSv|nW z27vp_rUroI`hbXrfCtR*hJZ@~`vq(hxB;-S0U+xJz(Zz_z_5mZ8qok_GNJ+DHvorG-T;H1FHSilBzPGCV3K;Nc-O=fvhKte3ws=#K`vl-y5z?No!E#|Vo zvZjEM%>hrEP0azx%>WT`fbC{@9N?0`eu14P&;qcrIUuVA;Ayi*U|1ZWMoYjhlhG0o z-U4u3V2_Dv1=uYxrxoB?b3`D$B_OsnV86+44Tx+7I4y9%G-?AlEU>r@;01F^U}kGT z`*^@1voIbI-3D+$;3boo05~bIG6C?4IVZ3n9?&-taKtQ61SBK?t_r+rdbS0e71+`i zaNJxLSe6JFnFKgtHYEX)+X5om0p2jf+W{^K>=$^;1lj{OCIPZ^;=g0|2n=fns1XFb zXEK6-@b-Y?0;fz=2f%KDIUN8Wm?Hw|K|pLrz-g1;5fIq{a9ZGF)2I{Ru)yL@fKSaS zfteiv?K=ZLHw!xhqB{XD2z+T0y8uoKtn30fW6lXI=nUxF6>!ch?+Qrh0=O#hwdvUn za8_VTH^2pRSzuXLz{u`^Z_TFefaGp~h#r88W_S<4C4v0{KbSzWf2jXQlOpqz*@H2| zdJtWsC(%EfjGln-WWaHO%O#-VWG~2R zk>7nLrVr$>$l^W}<2R@JP|Qs3{-%9jKryqhFCe-P;DSJyN$dwWDX_91prkn`u%IuX zZ+}3*Ebk9U=m)qeP}=ky05~hKWdI<;Tozc?pU}vGfU;)OKtS>UK*WuJa%T9AfJ*}V z1uB@pAi&0ffUH4)N@kD1up0q2ZUR&>88-pK2LX-?M470;fZYOf1_P>@BLe9+`L8og zhxmK>Ync2YfXKn5I6Z_EwM?U-fWrcdhXU%DQvx%G0NM`&)H4f*0iuTjE(kO*iNgUW z1y&9R++fZLEEoppdo!SsS$;DhVL0HbKx5PM7Qk77Ew=z-&1HdQHv>kF05mh3MgWp; z0Yr=h#F^nE0ha{!3$!$WQGksj09m5|t<4^RVIu)GMg!ta#%MtJD8O-nL=!azuv=ix z7(kLaB9J~B5Ss#MZ}L+Bkz)X-1v;2UV*!T+7LNsVGN%M)rU2Tf0=k%msetIQfC~cM zOyW4eNr9E)06ok(fd#36zG;A-W_cPQVI1J9KyTA?Jm9RrmhphT=CZ)DG{DFSfc|FF z1VHk5KtwuVpc$SHxFoP&V2}x905(nlWMu#bn>_-<(g8Ix0YgnjCO^V6nElr>nf>7= zY9e5F1}WxDB*iV}h(LNKAa)X9q{*KIh@1#GEil?N$^sk~Seyk&F{cD(P6D)_3`jK# zCj+9h02c((Oky_Rq`=B-zyxznV8LWS-zk6$vwR95AscX2V4~?c6>wHy%Tz#?xh$}3 z3SeXoAlq!p0VGcaMC1adn&G*CO9J}^a!nu)urUXal?Rw+_6Q8i1=N@Zm|-%e0mAbD z#|83D)O5gZfjQFwv&|8K^l5>YrWCjSmV=Usra z0$c6^Y%!MwmfZ;$xd8B_*|Y$Vd>0^MAz-^1z7TLpV86gl6IcY;xB!r~2=KJoBQR_s zpvK*RT_)phK=>lSae+N1>K?#ufjRd8o;61V((eYuE(Yv3`HKOO_W(`{959XU1soPw zd@tYyb4p<5VnF-*0Ef)N`vB4R0xk%=WD@TOoD^7jKj0N}PGG@(fW8j^j+o^S021y8 zToriL^n4I-R$$A6faB(}z_JGbBW=J5v&jY|KM06e0(ip=Ujn!!uwURU6L<))(FSBa z1bD~n5g4`vP-7|JJ(IB%5dIM0xWFkBWdOSc<`}>S=7>Q0Qb6o7z-g1e3=nAmrv*MX zjg|ur3oKp^_|%*dn7Itl{$ar9X5qtt=;eS50$-ZMM*t@URz3naW6lXIco@)k1>l@n zz5jA~g!u5dY#{d@u!c5}hfRh3% z9|x2)=L8n42lU+l2$=&qD0-FIFHvzIX11gz40>g>`HJ$)eF&R$)!Z!ns3q+ZyEr8tubG87g znIi(}PXJ=K0&1B2t$@fafYSoCOrs|OhXoct38-UE3C!FIXul0m&n(;qh<*}qL7;(2 z+zvP?uyQ-#26Ike!8SnO9e_q=`3^wBcEDAE#-`^^z*&JUI{~rgvcR$(fRRrDnwd>c z0g`tDBAy1snc+_ZE(z=xXlVk^05(1a$a)6Q+UyY+_B5czE=u}_8<1p<2&C@<#O?vKH*f3#MD7N(-V5kpZr=+yEbyg3ClmK9VCEjcL(c-bm`??w z_X4`@19USF>;s$>_(`CL>9ilP;90=>{eYh4qCmnvz~JWqz0IS~0nQ499RTz-0}lX} z?FT$9(BJr<2P8iSNP8YI&}GGOM5 zfQMcNq?%6!qF(}Zdj*hY9(Vkk7m%te8OR{(>L04AD8j{wdJ zgdGKBnSnnmjo&u1LT^NV}OlE0WS$mGv$s0hP?`y zb{sInydV&M4A9^;K)#v!8eq4;I|8#!ofClc^Q}MJnptUA&G-D{{bBX0^Uun=>U`>- z=qA2&%0I#%c9~x*4469a`R`Mfh_4$uzc^a>6ZZOD{FnmzzuAWVe>V-fn0}x8|6#q;eOK@c|Gj=|R-aw3 zed%v%Sv3dm`t6MWnPOoh$MW0Zs(-H2T9t-m?LVHl3R0;S#~Q)MzF zsUQe^(R{=KKwFxd(PN z@mniyEuEaNe(@FH+buISqF4n}rof6eC+@Ps3Vgr)?p}&-LNfgukbciwSIAfHvJUb2 zVsZ4UUDB8PbTx-5jk*#gz|{hvvh<6S`ZZ!*Ej?C(@Z%2SH=6X#9A(z;7jN_uw(%0` zmpk-3%evw{rf-IPstjBS9@9VF{ljC49#bbaA~m8dOwszKNp(QscKj$ghJe1x*g%A< z3sxEQE5yST;Ogozjlgh^b@SNuu$w*B-DCQ-<1rrVVIC;7DinmiBvgT@OfM?*g`tYD zi7<6jzpS8W4eTRGS09hD!kn*Wi0PLZl#X8t_ccZu_ltB1BCHut(RW8wHiwbZE5WfIyMb`%%VDV=i-u{r=^BSsuo2SI(ls8d5sX2hU&P9Q zsSZuYE&^IrnI0=>g0si#-9!(@!oK&|BpCncPfPeVcx^3*tSQmj zneMT8!kQAX86Ha@Y_Ybqc4q2JhH6+MQf4h4ok(JBkurmjK{riPN{@)WFW@ zBcw$(&tqK(pG3Omd#o#AZC_n?VioL$w0#S-$n>>3!S1Lt0WC6pwN9)D($OP!4^|Z? zqa?ywc#A#Old#S$v3otHDGGht_CA=lWN-8%g=mdEq%WDl^=G$yKY7r2nft;nt2VA> z9_vR~Us%>6Tkf&`gr|7vLf_vT0Bh{AN4#_cVZS1+lNBDjk@_8|`CsY5L4=VHk7cwQ``Z&)?>p6kJA)u{?~bMIN=V2H8+oW z>}JCHVzP#Ey~l1Le86Lmdu#;kd5>-I*httxk8SkWDA*y7ZGt)94H*s8YSr94;UyeH zSgTcRi^oz3>-)Q!nyoPY^NmI7v3j}9OP5MmJyvDgJvNT8(y6W;9!pa;Rjh({dT=~p zRV?^+>n%4M=zLO{fTM zMo*wENZ&Bh9bI2)T8!>R_aS{@eG&F<^fBdsf^?Vv41JEiKwqM-&>3_VokQo**Ot$0 zUSOp)SWT#Jo>p*HDZ9{E4?J|86>KHnX z-av1nx6nK2J*2N-?L+&K7PuC)7O)m<5!#HjPPHy~7c>19STzguy|C3t-!n648Pd1V z^nJ@HR25Z23(#$Jtq}b{yY!tpZGu8{JGukSMK_{Bs4wb=+M;%-Jqn_Zs1wqkvS_XQ zSOpyYu>}1dTWM4V1(3d{8iw=;Q4u*`8Ne1tztaF8){lN9_!Igk`WAhMzDD05Jwm*T z-a~Jrx6qsD7&?wl=p1>4z+v<%dI{-()M2W_Q;!jPa@C`Qo=o+)pvQw}&~BtBfa_u9 zP5bQ*n(K0%+N&(P=S3-l#=3B8P7K?l(DNO$&w=nyJK`LEFE!{`*@_mK^+ zrSIU@CQt{}MfFg9)Bx2$caUKgb~c)a=A%2&U1%^Gf`+1DXgInV-GWA-k!Tbejk+TJ zt&~dG%BVbwK-cLxwh|E~P)QVqEOd!s`WbzQP9r@UypG;LdL-zGIw9Sq_oJC8AJv7` zL-kR0q`&%b0sRB%FFgDc{fsW5%jk;cUw>QTBzgjEL0i$2Xf0Ze^wo&_(ETVI>8||= z4fzy(fxbiyVU17>(j7b&HAUTsTY^TTF(?I%MZ0O-9%L%sZB;DDBjq%t+qZ7l&!ZR7 zOK2bZ0L3s~v8W-MOWHZu=}2GJ%|YYPc$9%sQ3@K1x}zQ_o;=rM%b_ZS!_hff64b*? zG8Mc9cpJToisS!^-G+9c2hcop7dlI(3^WmCp){nM-@D{_550qCknTESPrldmC7ja0GUzH$e;H)~T8Ji-AP425qr^`l<6`(Cv=J5qYm8#iD40I> zHHPa`*a_0=6O|r(R$(>Qow2%e>rOoYJ`mklz>k~IU^D~`MY~8Gg}n~xZ-sn{4AN(W z$>?JWsDr%|s|S`_ksfw#M0yenRdSmAdTbB*A*+Yy+sR)U73dk^3er>Ya54--eNboA z1+_&?7T8_)E~8C=RKPtGWri zP2?NsRV1j!=zHoa_yjtF6h4a7z?aa=DAedsC84|_t5J0;VKLuB;aqR)e$G{@-L#f1 zg0)-KHhb>kje`28LDydBfz+=fB-2vS1SBF=t3mD!y9cWo)E#*=((=>8%Lt@rAwAIO zp7t`*%1B1xs3f9i8V=n1%bx<`_3)Mt5P+L?T zMWRHMfGVPTC?2&!4NwJCAC*Vt(DkS+Dve5^0OAczP3O~n1Wu?D6{Ji~R{wt>{U#1>K2yqbJa2v>rW%)}lwz!)Q5Lg6>5Nkn+q&^UxiLDt))1 zThZ)re#}CX&BYZg+f;&M(HJxujYK2RKy(YzQ^*k1AN56jP(P$YYB0J9-H4Qa01}rk zI}F{7hNDp^1&v2zP$tSy(_pxaR) zQim0ui^Qeb=q|Jv-HjHaMM`-Ofd|li=zjDdvXKU988YZ0v=psGkDwK34O)d(qjgB5 zt_Er*6xN8Rp;WX1jYNun9Bo1yQIT3IX^J)N3d@G3eiz{}=xMYAZA079PV^Ld25E?2 zL__x7`UPDls2l2m`k<=B_4I6SY%f$F z)(_hksWMfrinZ{DV~3$3XfV2|fFFa9TC8nxqZgJx)C((PD2=%0nW1xDduXn`e=qu7 zPY^mAROW3+<>g^>Q7Y2jAB#;vW6%^-pq6E$43v(>Ab-@m_c`b`r|;{7_mw zH7iXP3XRZI!YV^$yNZH`k;9fkdK{#ZbyYk70t!YLF?or`=yk%o2|3QdI}yqGj9V;x$H9z|A2mDEkc{nMzj?@fwrJ+NGG7q|4-3Q^b~9-+KqN; z{+}VR7wt#;&;fK1J&#^MYTS!RnLoqETka99_d2bShF0%+^kPsSMLApmA z!$zYM^3hx9P4pgm7rl+%K_|WNY3)_5@{h3}A@%SJbP;`rK1XNJc_jWV`Um9H?IB;&)DSh$XGeW(FOBM>x~LYaiE1FdhtoSby`$47>9Q!o z3+sKI-rMPYT{RSmsvvDirLByVR-eMFB8`Zo_d2?p*1^`+KZMCqg|hXqH=qWD)hN9m zh(=}b8)4OI#p_LU9BP7;t~t_M>ZVBV67;fBANur(Tc5o3fmffzJ0sqhI4_@6UkANA z=!oPLrF&ZYoxVjmF-Bw7N%ON1_dcbw-RJ+!H$%n}Wu8lCNWS zHug4@k5tx7tPZmo79aZZaI~m&)aDY_%ZoI$-Dg&U^SGuc;_EM)hG?2;H}tMB%FiQ z{(p$DxOx=663F#^nCZ99I%--xW>v1X6u<&1tXio-x!davIu`C96_?;7TWeAuvs(Ih z7$ftZdG#?XieGR1QeH6=wH|Yw=_}LJ+`gW;1oH@{S`Vs=pv2w(>@n=!n07NP|ET6o zTQ_aZ+?o?gmuJqcxB5ou9$K1o-(8upI$?hH5GP%$rp#8IAxbMNgK#h z#k}<|ui82~5+Li@jf={@`)-LTmfwb44{?)MPf1Npo06C7d;9s4UC&(Jy~Oh07T2_8 zQ#!V^nCZCDifps4m|J_3qwjpP<@E~PEPq_n7R{Ts;3h##1&TV|rPGI}2mZ3j@~io+ z7?T%@nR_={Ev)0k%)yOTAM126bNwbO()y~HX};ZxG@UnDRjrG~%&1Kyy2?L->>x6{ zxOqZ;RB`hOwtD^ItYNiu`hW(5)hg6J^ST_j zagkotgDf}inx|dL9=|PBh3B(dYFAsOwrbjfb?z+&^Y9MVPG}iVDQ^;XS}odKA)C&N z%Mo>-uGDeOcb5NKk3{piv=lMT_yWMFS5tmu&oN|8Tek9DtYFscq+=5*n!S`^U9D)g zy@+35pT>U&96lL~V8 z4c@%fDtnQUq`^vevXTjYMu8VAndhEjUHQ5Bt0|SkhS%s5Ds%$zw%}$$G+1x8Ty|Vd``09%&K?Cr} z^7_y9wKvesQSr2b`CMArT>lIsys5Hj{+v}QtR)YUmCb|C(Bs3EO_MJ;AwGJBz5G^X z^NZkzl}*!K*fW*QRz=R*MdVMF&EYSARjZg^fmXvRX3`mKvnrPoI+zI&ULH&!vXDdpQ<%A5TwKIs1QY7WU!t=X6?;vtcya5oEU4C^wA zuI%o(`nBG^eLsjUmdG}9t8()u#qb0F2wU;dg=nW1=fpcjjJE&Kfp7O6`TdbkotWmz zd#0*cwTJqnYPhABTKVbw^Gbf+(y5=>;(?{6`GyqMm71pZUV2@kmT9}!>QntnE%#h+ zwjucZSM$ftA&1Ua%DktxS-aONwA$1$^`B)z8QGj?DWOvx^Z2t&+q$~ux_y-Nc0Cil z58ki-(ywscS*>L5-e*;+|1nRFG`esa&tN+AQV!O6smHP?ja)14FVsTrkGxW_>bq{o1~M?1O%r*XCq|Q$R4aMZtOtAbc4C}W9n;kGJ3zA-t`%Qdqs^xW ztR$;UGgI?<7dopmvYDCmJZ;|7%XlfGXMAbPBBi4UT$XAD8)^*P9yhqnc7jM z?`Y716y7*6&~HC)#guBn>}rd8r-L^Ef1DOp=uBAf0yi#N_1p_qi)x+Of7+F=RZ8yk z*pHcKor;|aX=+Lzw4$skEzNiTV3P$8T2=pQNowGz_`hG0-CCJ@57OlUt<1rL*7)j6 z7_sZA@$PX;w(ooY$j8*EGH8c;f;ju1eLw0DnJ%|7V=hvA(IL*U4m=8J2nLV&=J#Lj zPvN*Dr*3+_XIh(24lzi-l0qA!_^=i?9WPPz5-Gf`+pmqO$bneBB==X9vGv1ezp0bk zq$(-cbej6mu(`t&S^XrZrZ)Mf3qHu(-tTC*lQK?8y<@mdiv)6!;(=X<4rSDhTkx;r zw?8rL@4}M(X3vv;+4+*y(%M_eoPCM0 zc_P77=PvN)yMooalF59To%7${9r`DjH(#cN&Mi!dSGYGFVLAUMr zrg8B+_MIX|%e(5OtP7iZ*Ig8fY3VzgXePhH)+pB2P4PgVn;W0APnRZz&JCusJTaX4 zh3#Jsj~*2M%F}LM?mWKewq_rBtHpbHrzEa^dv^U5dr6^ll)QJFZ(m{Yb#H4vdY9?1 zdzcfxe_Ing%*imat$F+~{mb&okBTbW{oEf4yuLoLiwbh zM)!H}RZ?)CD@B=hrul;^R66aWI~uju=%Sr zZ#u27NCEdgx?}LwIVT2FfSxAV4;+uTu(3 z=KH#%Irgg6wbU;i-R70*WCmQIwmUnyr^c*~jX!G{dy^*JJB%LeWcnSWtCvZkg;TP_ zq(yscKR1pPdZ?kc@Xl^o4PULl=fEdtZ~ZTMtN-^YCUh~cQ+oAjUECvn?zXfOF^T>6 zc)ewB7j!Yjk24upm@Xc43x^DRwO`8hPrX74odneH-tZcmImfM}HV<@nA6O5)*Y%s* z&&<}j%YmX~j}fDzq~$Yp9@=KDzoI92wgiXGj_&3k$7#f~q$o#a+=+;7a{2g&BS*BGtIJ>9tpj{cSjB zB28`DlFc{Ui#b@(@6+s$pB+UJnpc|9p|zRJV~eSO!YW^C0m(Gn4|F#jPjKHl(97I= zf>rZwFSGFkJKbA>=EoCOtLh*3a@WfFfvK|x+#P)zWopY(+vB~>6R(qv2hLHl+k2at zuXAhprMElZUVQa^ecU;WDqnumP4&vYeNETtM(Uw6o>llCRf4M~qtdM0VU$lm3yq${8mo#(U^&lOFBn?bqz!+Nh(4wDH@xrT;~}-o4E0 z?_WKrav*7K)EQ_7Fe26eqGgHh0qd2ar}R~%Y!iQ@+m7dM%s6EI_SXGQFP*ZA4|2!w z)8CG7jcygOj2Io#)Dktwe4|=gks^v-=3jjJ;)$!#{8H{49zgpkk6UG12%C!e#nQeXEhg@>&B-gh|eWkk)Z}LSor`wq+-KJqA zq|ikXD%6KW5=Aqyn}}|@Aarq=>B7`0UDW6{r6{T?snKnUn&SJd=h^T0&J1(TA7B5x z?RWjwUTd$t_S$Q$=Xpu~Z7bU|i|x9O6Mf-JNyCx@mJJ)PoT?Nx6jNHsmXoPiaJ~T_ zOUCcFZouicyRxJkvdM}L^9FGRi`}FnJU^-U%Y`+WO_-A>g5cG|&C@Y25_OzEcgZh| zx<8scVErTt_Xyckz{j~W5Ae#ra2DTnh<-FJLYOk^+Y$+Z`^|cXJ4*pVRl4Tn-^`Z6 znO|$^x%Y<-P&p6tQ52FcKtK6Kj!=m?x&PdR;Ikq^j8iveGw+*Fv>pgOm^e3a=eii( zW(v3zC@{x!P{^T|?X6W=(cg3dD0JLG5jsyBcJ^tN8?4w;>IL+F_&r>ViH<66pVY{8RpsFv-e|U@3*0*wevL_*GxY1%m0s8gF|apTvjP-z zP%ap~@1d>#@`gmAID3CC3jnXY4G2ph^mAMDmT&8;r{q=Yeutu1cT&M8&%*eFaO?-)VKNQ*L&Ng|EZtTCG?R4H6uhQLhWBE3gRqgmYX#ZVKs z0A1pCGuf*bba?O4d&q-2h;&er(#8&?@|=OMwPS1WNYAFh8j8ip z!^qXAMFt$NIdp`&dgz}}GBrFvTGN1+cb|tCzo2N~AVq7Z0G0_}`DZ}T?)>C3Vc*l_ zdOILUGaS^J0c_I~ti>yUJ*&g+-~?LKW4t(kIo4y}GXvTBdVF6L$d2QCG@WnM%clJM z#*gA9Zbt)%^o@M7GWe@{Dr~ti{@e;eu1LC|6~vOL(etm3A7#VGR@v~8Z7^aU4}e2` zy5a%C#lN<9S{^`O-rnh~v-AJg)RCcyvGr#tAvGryY1pRjSoh=n@XfCGmo;PEybS#J z9SRio3m!pvsj%PHSxwI}AERig3})Xy26#&dYod14KSJ3UK`^wS)IKd#DmwZW&MupA z;!zcpprQ*gFE5mhYJf+a0D@A?%uVmYFIbmT#mfI2#l(i|pC`w5Eczj9nQ2F|B&f_qY`l%1COOx?nJ zEGFV9eFu)quhIYGxci^L3~<~Ua%4E}TN-l}{?3ON^X_17-WPhjl6f{l zdNW7t4l=A*5uZr?4@$$3hG>LIyoy=5KNi#*PZTL)C(SsF<$+fzMRp~e)zMtf!=(%3 zxj{9%9u|F4BUw*g;_hPU2#C}N3cR5 z6fYvAoV@7D{j ztEAnScTuBM&<(^NjZ_8;RJ+m7Am0oKN?e`%tLCqcU(}bRPy>9piV0qupq(rkDrD>b zc={D6-23~jW|xU~84whJ19XlpFPKzy0SKN=JVhx;m49Lah{vRL}QHj`#InB6AsDx$+jBGy z(t#wwQRVm>o_)QYfE0~8)FvmEl|RSwk8s3o!E!|Jy(X6kVK1J{Q=GE4d+k7tllFVs zDOX~d-U}?N9tb+Kd**xn&#uXVGlAfF`>R;?=?iS#M(0cw%v|ypVcjn4MCet?gvC4Aa?4Fb~}79umA|2>+?pOd_554 zR9Dnb=O6mgQUwTdUEH2q;+R1*4qIj%%YTVg<^xGClyJeJ^rrvjg+L-XCQVD@*awn! zj_Z?pvp#+0ylYhZkdtAqTXD?#73NU>LVr}{522gv9n9PHc^$_hUttb<4S@o=PEJ*o zqgn<}Zil0o?Y=He7d~UTj#XkRbcxemqxu!+j*wv+VQp2knS{XkazMznG4&C|udegfWDSU{5 zWn?1zb>;O`+@>asx?L=vr%uL;rL|9_a;Wa z$cvfe6aWP8vd-JYf`CvY06{k2d3fxldxOvS6cKh*6J>xx9%c}>?9krvy~cxL2hHGn zdCBY~&3+sR+`Z9(yR?RvP0iI5dBr{zc~)rJMtH=}@W|iZMqG&877<^Caoqi~mBp zQYzyEC9RGn7Zgcqv%%ulw#ALK>^%LBvgQ2jpBXa;@ z)dIimJTmM{Wvg3Y(UMeYcXD+TW8&*w>Dr;lfPJe-WraYWiIlS>C(dd z9i3gShkTgC)rG6Xr!$M+u=ETdOt7Gqyqee;dx!O+`Na0d(R4PX6-%#3XG?)xbQ8#K zKxP{12J6MID+ZDhcxcuD3c0=RvQ2+Cdyv$^=YSOL4Cz2l9%6Z9w`FhSCcgno1~dkR zw(X2r(9Ji_rsKfFGoyYP>;>d0Y=EGUF}%6aqd;}PMmwT&UfiJ0AHe(f?GmryQXSjj zJ6q^5^FU;rDak$dA-CITyFLD(@ZRK+OqK**c?abP0s$SbA2M0_2RKyc@^54^y^pY& zO$HnA5wW!{i+OyMO*Zd9D%XeiJK0Wl7mVhIcSBQ&p9bM@ef9LRSCeF3pg z`t>g6O`EiTH;ZUR6o0x~GVj!tgR<Fu@-gie`hWHRr zj2_%`Xs*xN5O2F=v#o7d#EfiK36GNdWlQ%~h7kFUe0DK56Gjyc6O_FL7fNJys+nM` znwC06FqJ*ppSnP>l^;4FW#LnIk20*0U&T!}h{ul{rXno zNB`t@0enXDuks{Y9dMtX(Cz2kW$g$_G?$@Nr29b@Boj>R6R|`}V>S7818ydTJ7$OTf?&!UBv|%iT4PsY^;^r%lqE)f%)PuexjFr_j!Fo=ucn6*1Y@4 zQ$D$2fn?cnzv>s|o-d=`BCl_xO3FlG34{UEm{u`r%idSpCg?QBbEQ^kDncgr4$_5^!=Q8x9jYBJ}Ekyo3HU1sxnl|3l159Uivw zu+)W}XIC8N_@ir=_Ejp^vPE4mlO-Kyh3djlxg~mX`dHJ&U)0^kT9zRm59bbf>lQINT>%4&q=>owjOD&T36+$BatJ0+1NYYV1|KQ74tthVB7 zY=3T}Q~L~VNNscvZHVU$cUYXJl6e%d9BqUmD^`o4-1(TK)V66?Ub$aRBa@&zN?wV# z4kEf@8F-eN-xU$Xiq&@o{~x|K@BG;~XW+h}+hZ`tZRd%afs4vAU4 zvTtCkJ*Ep@I>f&nnk-0H7^6o2XN9_gb<`$Er+YQl!M;*8Os_R$`Mlt{A-*cbXM(z> zPw5dn_cO^|@61}Y$2Hf&Gyr45uQ8sb*JfyUHwTrT)IbC{472 z8&X`BJD-mce@7S{XgXMH#nUPF4H#2|KR2={uWEp5RJT6@UUGoJk-VA%)rq^`W84P} z8a1jmvt908lCPDLh&r?HKYE{tC?AM1^{i#yw^r<*HmGqb#*|9vSA2E9W?*vg9E|a9 zO!T#%r-#iLY19ylF)3grdmVH7SX8juMtng6{+9A|xo7I!qS762Hk_KWw@OnW2U59ymYEp{r6uD>bG#|!jJ{N z^I4RU&`)!&pYKqg<$iu8JBwA4kgD-g-=vjvY}vIQf(#}sIoFc!IPD36VywZ s%mwQ#=6piXDDgffgd27>puf(5e})wT%Z-=yRy(ufgaw;^O*Q3z0U|YQLI3~& diff --git a/commands/index.ts b/commands/index.ts index 7480afe..467c312 100644 --- a/commands/index.ts +++ b/commands/index.ts @@ -8,7 +8,7 @@ import path from 'path' * @usage {cliName} --port 8080 * * @param {number} [port=8080] define port - * @param {string} [secret=""] define secret for client header X-Smocker-Secret + * @param {string} [secret=""] define secret for client header X-Smockr-Secret * @param {string} [allowOrigin="*"] define allow cors origin * @param {string} [allowMethods="GET,HEAD,PUT,PATCH,POST,DELETE"] define allow cors methods * @param {string} [allowHeaders="*"] define allow cors headers diff --git a/package.json b/package.json index 419821e..a262bda 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,8 @@ "api", "mock", "mocking", + "faker", + "fakerjs", "bun", "cli", "tools", @@ -54,6 +56,7 @@ "cors": "^2.8.5", "express": "^4.19.2", "json-schema": "^0.4.0", + "morgan": "^1.10.0", "react": "^18", "react-dom": "^18", "zod": "^3.22.4" @@ -65,6 +68,7 @@ "@types/cors": "^2.8.17", "@types/express": "^4.17.21", "@types/json-schema": "^7.0.11", + "@types/morgan": "^1.9.9", "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", diff --git a/server.ts b/server.ts index a91ddf2..a5ac940 100644 --- a/server.ts +++ b/server.ts @@ -2,6 +2,7 @@ import { parseSchema } from '@/utils/parsers/parseSchema' import { faker } from '@faker-js/faker' import cors from 'cors' import express, { Request, Response } from 'express' +import morgan from 'morgan' import pkg from './package.json' const app = express() @@ -11,7 +12,7 @@ const corsOptions = cors({ origin: process.env.ALLOWED_ORIGIN, methods: process.env.ALLOWED_METHODS, allowedHeaders: process.env.ALLOWED_HEADERS - ? `X-Smocker-Secret,${process.env.ALLOWED_HEADERS}` + ? `X-Smockr-Secret,${process.env.ALLOWED_HEADERS}` : '*', optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204 }) @@ -20,10 +21,16 @@ app.use(corsOptions) app.use(express.json()) +app.use(morgan('combined')) + +app.get('/health-check', (_req: Request, res: Response) => { + res.send({ health_check: 'up' }) +}) + app.all('*', (req: Request, res: Response) => { const { mock }: any = req.query const appSecretKey = process.env.SECRET_KEY || '' - const secretKey = req.headers['X-Smocker-Secret'] || '' + const secretKey = req.headers['X-Smockr-Secret'] || '' const bodySchema = mock?.request?.body?.schema ? JSON.parse(mock.request.body.schema.toString()) : undefined @@ -52,9 +59,9 @@ app.all('*', (req: Request, res: Response) => { if ( (!body && req.method === 'GET') || - status < 100 || - status > 599 || - (bodySchema && !['PUT', 'POST', 'PATCH'].includes(req.method)) + (bodySchema && !['PUT', 'POST', 'PATCH'].includes(req.method)) || + status < 200 || + status > 599 ) { res.status(422) res.send({