From ec92e458e63be1707b8c70a3ba1e004b7f0d608a Mon Sep 17 00:00:00 2001 From: liamcottle Date: Mon, 27 May 2024 21:26:23 +1200 Subject: [PATCH] compiled cxfreeze python app working inside electron with logging passed to web browser console --- electron/build/icon.png | Bin 0 -> 111913 bytes electron/main.js | 93 +- electron/preload.js | 4 + package-lock.json | 2847 ++++++++++++++++++++++++++++++++++++++- package.json | 24 +- setup.py | 2 + 6 files changed, 2942 insertions(+), 28 deletions(-) create mode 100644 electron/build/icon.png create mode 100644 electron/preload.js diff --git a/electron/build/icon.png b/electron/build/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..aea1c67e2096792226e1262be4a3c1c190f0375c GIT binary patch literal 111913 zcmeFYby$?$w=hfzNH>BsNJ@8i2n^lbFm!iH4Im&Y(kY!H-AZ>2h_rNf49$D{{Q5iR zeDC%Cf98T~=AOOxT5GS~Yp;n>Q<29+BSnLQgTs8IAfo{Xhq&|S9~Bw+2J~fm0}k$) z1z1bZQxBvpWa;9>W^UzTVa?|2>=bUO7j<7A>i|$ zui0s+{+i&6`}<_j%j)bw`v=6|V8~c|Sh|BbwHV4MG8`k#^iGTqhA#nZ*Z&c*egMEwVfe-8hbg#f$%`z5~SuK(R+ z5a|DZx|7p?Y{SD-)*E2l--YlWH2njChnAnKHM@qjhl`iHrM0X#z&+Z(825)SLTX@N zYezj9Fu+s~KpLVnoE#h+|DR#~|8ZE_#nHuG6Hr8JVBue@{%}v|jgz^pwJzAo)9&Bk z{cA+o+S&HM4*j9f(d&;&Xgh;}J#qaDp5DL4L}>*1*#8Zc{(n34Pk9LaMIp$=3LudC zFM$6VdLu2Z=I&wxb_B*eG~}hI-pESxaSHPBv2wBf4Fe!NAz&@o#!trF6PU%t!NtSM z!NbbUp~Wd6#33le#lynMCG>ZO{WTk~AuDrF^Z(oYKbAlxVr41h3HEff{_E*)mLcir z`M0OPJvxH_n1hg`xwEY(jW4T}wT-!#qbH4+yR|3S(#z4yiPgv2!qU#%Q-uAG9XW#k z4(hL`f4~x9{|`hW0HGj|kOJ7l)5YEI-*9VMyZtBbzs!+}>Mtb|GPnFA8&MipcNZ%! zOKYpYxC!jyZ=)VAHl9A_?$(mFfPRV6NZQzd0V(=X0hSK7b+&e=0_>H8jrTtn`Pf+l z0RLyMvj6*T{z07x`+uSTZ=3%&rvj||+joGo0=ypkKiwYi@K48S?F@KJcfc)T@wc|X z!NG@t0fqQ4iU0@4nB<`lYy-> z1G*g__SbC9ht`fwU)OTQi+1*`1jzF9fNIAbaP8(eWldv+fM3S z?P#mh+gKJ03oOgKw!0A1jnuA}r`HMDGBV3fQU(op@Zgl9zY1&jp9<+r8R+PlBrs$! zG0xnjvV&DOwzlc6AgvQII6a9OBt@tkLmcZ|iCmCGYW+#7mAee_;g$_%u5yA&JzCjx z5yX6=0)HtBjf;qP7_zlbA$MgA@`1^FhrxEiobMV5NVsp$Y{3in!?Cg8upPCYSH;Yd+~#E*FK2=QQkR`K?;j#`H{yh>Llo< z?By@1vA3m7{>m?i<72F#cNiE;ZgC(C# zI_oU)lX1x5q`}=zrHA;KwYDcGy-(BwM`sixwiq3EwFXcRn zsq#w5{O{|3Iq<(6_+EQhCmeG5qkb@X+GNbAtYQ@ zAEgI@rs*q}(nIXzK8-Jy$Os zPh9doeL66knUJF?Q@dA_t!vX-a|mYAN*}Iy!JqHz)j=Punap~Y%mW)StdseY+& zk((+<(E%H`8A9m|`JAE{IGU0VnwcsT3JTbK4A5T+t`C${XHK4HYt*v$W%Ox1bLyO$ z*JVvU(Wt9k49W0J{z*aOKIwjkBdJx%yjs8K{W8-iq%^xaaG|vBw*mOjZQm`qY#wG? z8X2L81&MTQoSL`v>d?$wOjvNL`ZTLnSQifAD!IZ&ml>9Q)uyxLC|&3^!>0YJbsD}i zQ_`;#lbungzMj8uUTmUu(xmvOK9ecNCl<4m7I)J((umBPURq3tRQVWXm*EKN^^7ow zk@!Ph4?RP+AIrOk3;L?B>VCXQo=ULSWD5Hpbu|(5bxW5RVo8 zK38(1%Dtm+h-6HOP+3Xa+`IM6XlTg0w0s9+2T5xT<<>oVUqfenY56mB-={TNqFLJg z6>P8M^WPU+ftpo`bgI0PTjJ^$7Fe|PJX?o@ncn&pvL0Wompir2R2hUvEG&IdntW(k zbaF56m#Fu-X{_x~v{&MFOe`ro2}e%iow?RDi>&CcbZTj5caD%M&f#w?+ZlH9E2cDc zTB!8K*imxuV;L4S*7vqIWqv>pch}k=nTTOV6}Ovk*T%G^tKPu(*EY!Y`PQxy>0CUo zRb?O4{F%kuuW?qBb%C|s9&@?3s@N#6)=1ll;pe)i^?c=Tw(ro~AE<9L{LxBgT9ff*Va1GqL~TyDKn((?yD5;Q6p`?QXxR!$QsiiyNn@Il zApN5!Q-LpZ|Rl=%14%0BEmHoh%J{l&WE*{iQ`uSjo|@I;X$Q8 z<+XG$cC;!Lmm;TkIY)Fp``A-v-GBH|$zd>JndPk1T(sb4)Eq!)WjHpquC-KtyPtuO zespPP5~9XfCO>mYn#b6ZZ!d|usvSWZfzzV)i7Mg*6%`w)O$wErstu=$1r9sn1nvZ` zix%mkc|iz{9ASPj2m~hthdBsW2~XoEEC{M^>fFFW9Aqa_mY}El*!T)ZRVBp@?zDOL zwE2#c2^Yl*Ljpsi&+1GFZJ^{67aG$SJc!g#>L(kSbQ@HSJ`fc34fI{Q9L;MGtxZop zGz#EC7j*U7k&!epqB0n)Rt1;il4h|bNG>(ZyHt6Z{Eby-cHNV3A)cDDP_OZ2A_Frz zvS*o2A;yk#JUpBBd!KT9)F+I)zm z>hZqiHr|vap zu4bXfw>$5e;pCQ=E=-7lOca*9%AfsP3?1$9=<}x(sPtD870igV zeButx{4kaIsVMV(5hpy8bP+hJ06d}qP36NoeV+yy@1b4YwX@c zbpBrXNim4&?X3ppi3;Wtqm^JIh3WV8a(Kq1q^(h`{jdX5+=O9{6OS(1un4JSFPaAi4 z8&5O(?v_fOi#W_$=ZJNHxrJo|#Pj>q(7?vGoiDpFD=Z|6V|zkXlDjIYOorGN=eAM; zDm;t)W^kO(S+`{h=aV+yf(|83K|$?Xm;57<2grFPm$7Ah&t<_xQs5{YOew~AoDxJC zH9D4A6S`J^d|d4hzU~;}QlS`<7K(}e|87HQtQF>nin2!FPuOk;lRu)7# zQ8lVRS{l61tZUZz&9S*d#C1O|)bad4ME-_Cckj2eZH5kKlcxS3=`&hO_>^&FyEJR) zM4)GxRE3%x@H8U8?(Zcm9VT=a^r|UKtY*<=op8$LOBfZ0!``!!Qpt!?+4n5|vZrJD zB_o3*15fgCaOeS}AoG)kio}o`(46-su}|+>CefHVoY#Y1flVPY2#! zZlH&%M4AXMowKm!F6dWl=5;RK8SHSWh$Rf*0v^V`u)n&8Mf_pw| z+))4muRq8`zV-;6ubjfAwrm$9rJg~kZOBAW2tu7ig7jJa&aSo!;0EG3M6n;vNX zFH-P#&zDGP)Rhe@EX;~O08-Ro*$Npebv5zy;_W}{jTpC>*NE*WBu$T-OPDc1iQBr{ z&v*!n`b@t>YzNrL$9((v*fK9P*+ZPzDdq^fD4h7v5`3v?1XL@1aa>$hR&%CJ9x8^9 z+Wvy{AP>ECxz02Nj8q$o5lDaEdeVu4uZ7j??wE@ToxLoq$F!nk;auW#fyRz^3OObU zYPJ%^WqqM4&MX%pBZHi)-iXb~H&r@sm0UwsdH7*2lNae*38bdRmbHLNm8Tc`iMf_5 z7UL+!;pF2=@t{F&t$f@Qp!75}@;%g>1tK^*{e?X81?E>7a``JfcQBjj#Vm(uN9fVBhE)>I#dkq@=Z9>nR?iWInnz1RO-53|!h~mz3oJZ6pU*n7 z8s@4Z985ZOW*feZ;+Hr#s}HKp670W0e|y7KOB_-HN&4P-#{XL{RaDEa~|&Be!$ zM(M@GAXw+A811mZMER00$iK$Cabls@5jt44rX$^2=oi-a(=0cy-Wc}GKzj*VWapof zU&0cZ?}?UIM<33=rIINpBU7jRMvy6N`uS;8A^0kzXwrdx?Lkh2??qxnbT@u?IM}wu zM`)l})gxcS#i!X~{`bXuM3((JA<>t}-tI_PGwtQO&+I0wP`{rM)Fe5B^r{Ja3G(jDUK+}Jhl*LE)=8!eVJ9JyLuV( zOO1wv8b~L-4=^(afHWDv4lBT1l-T0M{5cz<$q?5;q9f=TM3%X1Lp+i#rB4YgIEVLbGXIiMghZDCk zbsm5(wkuRchw!%3g7>{J$wVCHW+c+NKUEhZf;}4SWJMm4Q(7G#hIZ&f!U}etzk1L-C;|cDi0H$!8WUYv|SJm=}Hv zhnPS8>=$&ZPOihr%lcal)GudZ^D78qr|PK!`QO_4tws};S>3;r8CLox9K_X=@ok(Z z-UO;}z-cj={p&#a=|auLl!u29#A>`zpViOS#@6u7#4%EIq0R^zXPod^u;WHeOvT5X z-QUsc^JZohB<^*i$1)7b{<1H5AM5$}#`cXMb>Tts)In0zA6$OsHU&>NF^{5O&{N*l!#VSAEL7GJ}3tHEvr3m5^5xc+GS$1k4py)b(=EdD@ zIYpTPHrA;!Uljvf&07?8_gV`R<=M-~VVer)VpdaS31X*cXQSitQgM?>(SDX#|4g+{ zU$~AbSZRk3<7@8wLzv9d=?lOT>B!1Zg{YNg2Pg;8h%kq-;&WLz1iYcZuOD$V=(*R7 z-Xp&^N(7I9K61owcq?~@nv-&1dOS8HDM+Xjl%ykrW^%!#JfeP;`$9aR=>GLE;I9mP zvI9JY;~>Q5OE97l$cE*kmc*tTrId|NW{BCB7$n zjDzFrk^z?_crz}u3&9GO_?>5e+*R=U{lwB16{OF z?~Ah$xiYe{IlIXtXLnH@m2!g@H5Fjz%O%!Sw^d_M@};6{WZp`1CiciWZur2*s;Nc{ zTH0T5NEco%*vsZe)fRq(>Zb7dA+OM~wEah6na3*u=kaIywD929SYum8W}l<{em8)} zA~&t%whrS|Mv`H9FMdlK-UcT*OzHJoO_rcd~V%Lc9NWcfg;AtcW z91LVNL&G>T4%E&S?9OqN#C}9$ahz1*Wj62Zs{KJTxmUI?2A|@!QWJYE^j(OBT=?*Q zI10SmO(Thrq8=HEz(I@Vc$qEh>rGU<%0V-UN>f`4k+p=#(L(yy)wBp(s-$N;cUrLW zMuIr=?az}#P_2*fgU^QHp4SLml%s^ezt7AzO3W`~oRqJL>`y54bllkf^-4vtS(7xT z_?_>;T-xL#O25B1Mv=|xZ@6p+1L{T(A)-5MZHJxteGAo}Mm zL2HpOinOD>el~b!1L^sBWPWyLUY3?<*~942r7LS;1P|W%4 z;-HdwW`WaJj-zMyD}Ppv*7dw$!i|^X6c&zi6>z)}BEz!u_a}vNbEl@INiq`jDcd0@ z&7n#GJgTit%>uCzr)A0VkVaMorIy& z)G!#=~1e9s@ z_4)8)>O!+Z5y%M2;$_@#^mt-@U&qSOa1s{)+z2nJER{7jCbxHRn4C~c?CX=`;p5BC z>j)0^cXD#-TL5@cL5H6l3Qh;M`zGpk7px2dS+|LbafY3qx+yCwn*|20edmH|qDFsc zho?!J+i=B5ByQU`F0ATJ)v1%v?m`u?uhWsWp?M`j1Rx)wo#KwnioSKR@8d&+ zO6h$ci>v6&%VwGB` zSNl%ra@*}m6_B+0l(fJC^B7$QIvlhRW=`nWe0hZh8~oUe7&IjBBzANPA`qS{Af}?v z)+iv=*dd+zVg!f4d0l#ylq(_cMnxe{&(7x6)ZmVSK<7UMb-!XEAymlWvs!8l-Jk_G z zjYHp~otJ%X)8Qd6OBb;Xg|=>8pc!`|x{|zs`r5Nqtnd>5M919mZtXH`&)N;{*wxvF z;{6C8JX@6kax<2#W+~sIs{QknsH%F_OY(9y9k1hOBJ2Kdw7N6iwy&ps;&^BEJsW$@ zBX2>Whq~aowgPGznWhu{8bqGKZRy36DKnnwwNef~ zyy$~>!`%&ne}_c2m!lu7rr5M10Flz7e({^4h}{DEqTE{USEoKpoT*S|I-(Y`M-kHHsq?ijPvHlImqx@JsX7C^T#LW~Q1&|Cqy-IgOQ*GA8*RJ! zt=|v$_MnHN?uX0KV{P7t2b_Gt@yFK;$=(udYXUSMJA*Qbn&N#i&^{OsTGJ%Rh(zhp z`TevshN`VhyvJCqtlT-U>yNEs^Yr$nAZRi)G{nU~7NpMr?gu_-&=8=J6Kq9CM^CP- zBt8TM?NGkx831xmsv)cqcT{?iRk4%)?_Yjxg0;!rZt#*IxX z&F0r6$diq?`$of$L-tNATObV#10+y%cT;4TrK%mp{;P0UMPl4%K`~M!sAY3_D89HO zsOsfiv)`3DQ`x6*N4FdWWqdi2C>aq1TB1nY#4bp0E|Ytek{>~mE9$Bms#p#-W;~{y zy|bjD1B;Nb@YnoubaHZX62!*wZ4ZCS7>FH7j0_D4;=}jv5?m87Y%@FG7nWaWQ(xpr z(BVl^y@+7Pi6{%8CM0~WDRJqWyJu2D!OpXUGP53rBa7`(wg-E#w;}DLgtl~MFoI;W zETK%r)-VgBu8K!i^vcX_^qo28^UOcz!ics$PxZcz~=(c!?c?p=cw7e~fj+c++VLI>5!GRIbp5OxHS#JI- zz%3FPeq1kyfB@w2@$p8<)Rgk-U@0z0RP@CT<@b{l9C`-&)l>gfbfnyXK%Df12qrjC z^k=j)3U;j}hvJN&nc%1r&nX_$ck;F_JAS808LKL@KIM6fN53ul2AHnWV=!^N8#Yo4Gkuy=A#IWjrHowUOMPhi!u80^Yfoufq^r2MQTw@QW7o(2F7c& z^MI=(Syfebf7o&VzzL3=yc`_rb-1K&AUtC_79v`KTHe^RYpwUXUgWZY%GKY-sgq?D zJq&3`Z#FxKDLS5`NO}2di!Qv`tU$g9G+sJ<2V#e<fFs}Wve#)~ zZJ_Qf^=ChtED>K9;0&$$UFA)ET8Gn{aL`Ui#+yXNtJ&y<$mVt#Eslziy{+BP7V!pFKf4YnCNP^w!-4&hd(LZ_tgr>HN$7|i6a*YSLbC`{^+szoiXvFif^W@r!vIM}2peu!U zh&cpOfSkaaNg8##8Ri_1&%m5!iaH69FC2Xk>99S<)k zD58pXQKzS+V7F9+n8?%3Y?oqoCgMDajT1Rv%A3YTH)%i~4uF?+8&^tP3OkS#oo({6 zYR)-KPxeGmd&Z76G^E0z+G#qV=TUAsf?bvBB629TM0sx&naJsLmP^0&Q&-}eZ@YZC z6s-vvze|}4S1Ib)S0w85XChCp%I|wK<*qv|UI6i!Ev>CJ?wg99K0aTXo6`tgXlU|Z zDJ%X_ri-hq{NiF1QBl!ftv>7x$G>7k1Fp=>aw%zPX@Nuy;Rh)|v2tD)&Yn@Is?Hj3 zB6j}QRj@PC_t=LC8qj&W2#c)`fd zz_JbK(>TEdw6%sEZJUKZ`&K8hb4!!(_T`oeS>5aQgaV#zmX*FmFZ(th5z-%ycBGSb zNI+oTF{nWRtl&qB^iPY!`TDpn9|s4PZa|B0H?7m@qoSjUBd?cQeJr=DmVVXxVBg-| za`5pXSI?q^aOlVIN1`F3@l=cJ$E#|uRpyj-SmjhIzDeKmsF_Qngmv6sw-1QOi5l8P z_ui#dB{c;06>U2BXWwX9DG@F_fG8-{&`*V zbgZb_W>EW!Q$~wg>KEI}()tT*T@K;9@a zND9!M{0^KBgfAnqHQ2$A1ajdTpA|8T3z&JJBbiAjc97pDqb5C;x3neNnVvS@jj*xQKx=TmCmr48-v8@VK%Q_KpiYlbds$gSmS28efe1 z%Xl@B;1^QiN7z!ZXL)xBb1mboInJk?xrkFReETiTUC`9ik6a{8F@I~a%plt zZG1|>Pd=Aw`BuE5Yet>x<05nzxMX_%in^yIP*@8gk__@qq!X{k6*Xzs4RZb3BJa(J zvT9!Y7sTjFag2WQ*600X9vE2S_pW5Y*Q<8U&fW#9e_9b{EId6478;zoO&`yQ@BQ|5 z+OF4>e1q=xUy!|!_*#V3k?x<`LfO$G=X=jPr?aldS*TUOW11Lg+p%QNBe0yAk=Q1*u!e> z(P2!{pdm_^vhqhzqud~FUKAigw|5=L!>cUC>mmgviIuPpltTrLXJ-(KBAeUB5U$rcYq zMZXdY^JOJpSigmDcPBL9RL#**5E!2=6t$Hw4Z7D4`QrCriu8LJYSTy%gp*Pfvok`M z&yBB!SDQ*kE+sF|FebP?Dsa5$;nqiDYt|b}h{c}*L`FNmy~D#^+C-7J;)_0%6u!Sz z0R@!^@_4B{itXZr*v5OArlPPdQLQi=30#PUEWz%jJ45S3O%!BBAFiaDRbHo{hxXn_O6kGjwSuoL%|)Y@y-dS^X%vngc0r zi3<~7Marw=7ctkLMaLIIFwv?DwuNJiI;xH^_Ouh=+s~Se1=;Cxi=V2Rzqxla*#;og z=Mcw!8{ESZEchM%l?O9|L2gU>MqQpfo`r4YT^xJIi>$1yzhljun4RUP{An6+s6EZs zD2>TSJ>jaRhZ4*9y9t!Or8Idm-B^21mobxzMMgH^0aO4lnEOLb1Q*LPZP7PM@6!5G zC)<|Y5{8Qn(u)*rJCR1*{LA}>ke%2~k3iseOswwHnjIM_9lMGVbs z)v7fxc9Od*hy1GU=DKe3hx``uUSgMnkFLYiKE;2A^>w^`+YF}T;BKR=iJ`7*;92*` zdB9jc&xYl;w=eb5;{mQuy%ZAz2rO%NC z;0_+{`KR4H^6G={Kj1|*y~qd1C;n7FFPM8nO@a%nGPhsab~Gv7^=Yo`VNRQ%P^VWM zy$3xbSFo(*P9;B-x2vPv&JLjHIJqfzn+F$L-!@|bHb-M1Rq)AoBT4?G(j^2X1!JdUH?Gb{opW}A1nMk%mP`71?#PD^OmeI7Ze+9GleeRgyUtQj-BzR+t4JWtv*2BVVhl+IR~Din|^Ncsz-JjPY|U5Yg9_W{tw19#&d$ z9QWm%78FrsL8EK|yg@(om*aN#vYDCyHytY3zQ&oGlC7ES(aI36sdmeD_!%oyBR!R5 zK5=3~tZf(M(&e>s!R!dqVC|r{d+AW*xM}-S~OP!Coh4FBj>Oje2opq+k5ox z*=H>Gyc$WFsDQ8DqxSa;u+C`iF@f%0`ac>s=??oHj=fek9!PZOAF%46A8Dq!&^2d` zw&%{wC3;iy5E6W5ZdFx4j5h&nOA6SQWutp`OV&P;>m2h|T-g@frz1<%&R^@*Hzk_vzjtJ&WIBf~_&vb$B%}nG1&z5wnhHmoBu)ZJW zs1M(b=Hn((Pj{l1k#v84S=H~iowco@`3DIk)(5uavmVPLhM@`jQgn_}(!#)7zAHtz}qG(nqz!C5J2P0F%Udp)?a6P7(07KO3vXujplGmhEk$-3J14 z(<$Z?Pelz+S4Sy(j)Mb)L-^wV;9&lFd%1raqZ&vS9@Or8(a}mpz{<efrWz4Q1Tnpcx|im{+Lj&bv=w4k=@h)b;bXb`q&6F^;Hx=@zcde3b?_x9#qtk+gL z^=Kiis=;Q_b3I<*>X)Ul9r7QYOA^iwI1&sz`8LcU!WU^a+oILzlRG_g(JS8l+2l>* zEw>{a%PwI&p(ku(Z$8@vBZfBle2i9AfNf&JJt(I8#wg%b5lR5ZTrKA8D@vI=JW4{n%JLO(%EFpq>`>AVg`b_lqWXY_?V`>j`Nc?>zd!`1BxL3ekYJY2Dp zr*9O}9)zcF=Sl18dA^jl6ZVt2F{%W0*Z6k#eaS1sIFgaMIhe0UKla@g<`m$IY)Oum zoV=K>XcJW;|JeG$*+v zH#SDFtmE(NryIVg!1=O^149IMR^D`+#NfKpt(xB$@;&L2Z+d3!0J;o09}{?H+ji=E z{U9d)Q%RhX%P*zqW~!?A(G{NS z3CXZX@wV$uV(V*m>BAiJ0Sa$v33;9$nd=r=Bg^(KP^|PBOTN17U#26l&N>v;f4%+V z6_;pOjWPSWG-VS(#q?_Uz)qwF(Z$K~-dXA+{*w z`?50`-F}!%I(?D9sl2TRd21a$u3!%bM&P-;c=sj$Q`I79aQ72F-)gjJCo<-x*QPTX zfbxx(A7wgfp7W+T&LBIF($vzDLQnO|`N+dl=!oScP|m*(y5KUGXk<5)7$=;L+nw)V z%&qq8&gd-L%TAnMiI@FGAu}RFh96+s3uefI7&<><28w0xra%U&26st}E|Xo>CT&d^ zeKcR|*XQFu-5iE=QKD`$WCqpmodyr3Ey2CN`%aBFssHZK z|9Q&8Wnt6m?S9_A|L5Kq$UvF#o&RZ`s%dzNX+ZlTsK(LVAGvYGLp;GK1ofw9HKUIQ z;B8~8_OHu3TL@Zx4tr`7AD?Hp&@+~O7OUgUqLnmOpW&ab_Zc316jim>?_8?c-QYsL zShEgDvL@9{zHCPrqTq6y{B31>p2}~)`1WErqMWo z@p!m%mm^9cebzZ0$l0P7j@nqbzQL(?$LeW0(Y>5{Qx~c$egG{Km)UXQE11`RQqWix@cJX zvEWy1Cc$n$Ukjv-oM{tx_;XNtH} zqRZz&^_Ynx?=CKdYdUyzS`N4uiNjP4Ru6Q>h?g7OHJWa6m%VqQF6&v1`K2M=C|8IB zcii>?p%VfWfhVd0X9Kk4^K^hu;1hoN<4(+t*JPoid=ccPWemb;d^ot%8|K`Vks)zf zY9X}Ed9Z<`+e~|pJfVGPWk~$^Z|-n}A%SJ9z)eSmB1J6c^%{1X(764k2=q*l9q8Z? zcNNSWA5RDTVZ6!jUSd--0R|d(2v{-jF{iV2qe~D@c{JjLKj(?L$VTcfoZO2dEgQ~1a3dga`H=U-MFI5S|F4O=(2_BS7zFl7cq?g3SJXj zA&C7}isaO5HSS&E=+wilDjq+k;;lIM%cT(fd-_6?^aJA0;bWzO#B2tDx zxb$l*o@EDIk$CdWSd{q$*t-|O?f(kXVjL>^b0z{=kx0cYnu{8S+U|Hi@6R>V9r$&A zu`kuy!0x|VA#^l?ZAY=PO}_Av%y^;r>R3Wv8ZJ@f9%pZFk8JS|XB)g0umX?fk0lgg z-R1JLlXJ_lUJg2Wt+j|^)hIQ-WT(Demrlorhw@6Ah^nOWGM^%6_j?OdIw(6^PW_eN z#djGlAn8%c84}2<^UpMRUV*Rwod%x$`=TfKREU+o! z0(!v2Iz)WWk_kJM`l9-KkRe;b((+6AUwT&Xsp;ZlPQM3x=ibn*gTq^ayJ>v4Ba-6Z z8|(b}H63j04|*JqJX zt}F~^b)e6wa~G2SIbi`_{dhvmD(HtQ_JO2Y&*}6>)!h2}nY>XT5rexwO=37bWe*xX zy`=bN|4Iy2Gb*rM_c3?hKr%5|W39I`skN8RZ?fi3)9=_)Jh#eCN zDQVYBRUwkvu9V{*HYN2qw!aK@$i;~ zrW>jiLEfwdO3*+*7&k139n>wcn(PTw$(NmxFKABb+-^2s%9~%li++|xRuupRuQ0w5 zpxg^XO41 zC&R@p>{)-FdAZEO!NavTa4Y6}8hL$I{DhpYqvvxawHUbFe%-$x{7$Cp@%d&1PSbW# zj>S^CGm3$nOkLgKVlzHNRv=eh6x(#2cOiYN&YQ#$Wuu0tWCr2{dDH8K9i3pxAag<> z_S-syRP7E^ub@S_Llk53ces?t-Ij@>L#`?^8y^BF z{YPqCAJYSAICc{Av2q(Gh*^ci_iri|h`gyu>eLK)!2UEPR*0=eIvk+sPcE_w4Rl z)cL>#lGH=%$%!ApT`YjHqD}MAm5O zbN+5fJ5U64ku=Y1!y$_^p|TxgtL4!r56IqK`0}fMY7 zm^Ag*C0fTtFZ-V|-RgH6pcI;cLJ>mhvkc3v^s-BjGJUuo(U*oZng=*!eYYpS0@n*Ji`42XGLPP|U^#s!lkjH)knsTf4=71%(g7>ywdo zrN>4dtQFd0m7Xr!dY&&|OdJksb2jp9k%fNSYvSf-Df13PJRE%VutyA-m@`Uz*|?~7 z=KKL@a*a2CaSgRpT`-UbafGTmvn@59J1*ZALBH;nbURgkDRzNd@HzG<0VFjH^viYL z9%oD#P=3GozI-!CLR3#aMW`Ln52RA}R9F;=*$&D=-;`+q?C82X;$~wmxdzyR{`E)a zrt1=|fc8!NqI$QByBIJodU6x^m-4yKHFzW*I~u;sX(4V#^Z1835_{HEr_gceP9;> zEMCcgVuiUDr)cR)Y8nF*ohqZ4)}vcf<;#u)J>R}w)|h!Kz8WtbAFC$SXJ!)Oxv4H* zj`2#W-cGvXEcunYQ=Odna1pqP=7BIBpmXt_0JvrNOQ19?x6x7O?4P7<4OtR|9J8b= zYgA`>+ja>8j%g94X|d{~Aa*x`Hya;M*C`)x@B| z=lZzddO@tP=|Hn>rsMu;IA0Dvz)I)ytafCtkuz&**Y5_+2KK)y);?N|_C1l@_&G9V+;!Z+FQGa>; zg{8zl+oCaFoX6r=keY_(ck8Ti^wF5NGWJygy&$D;q@BHfzy|LChX{Z7t94SY5hZp5 z4I+%4X8jxFlHbFBoOY$%tuK*rLq#<>TSqO8jpQRkzkLp90v%aKu{yhP+?(_JQq?(ToJymm}9O z>DVyWC?z~t{%Zhq_ZTmBt&d~@2~HVy+{ff1f(sP5BGEH|=6M#W+S&$+m3b{ccyc&{ zjF(QLVgwDaHXK~_DS7c*^-SOUn$)9}kLeq}O@y)T7Qodxo78G& zdGaA_Twvn!JL3i0;=cE(6uqBW`Lz}YBLR$8O+vHMWK$kI&cde{{+|vK^=-$eLaydv<6N_3!Dulbt!AVaR;Yr~Y)w*O+x0 zX+!#4`O>jFp5Iy0!J&Kgi9FLsQ6CK z*TV_SXnTs|6+viEctgx?N0#q#@9~dk#74in=>Ir9Z`CuM7+Voa@|;jG(UYL6wl>dC z?p)x=yqh1#)+Kw~h64=}*8E6@-I?AGi~Q-;Zza@B*jnEj3co~JZaEI!9t~+FaI}A_ zLp&V#RWHgTgvyS0y^0Iby>UHbo_>Mf(H?7DDaQo6fKNu|3RlvJdCvX{@Rtkf(3 z3PBtWy6&Tk9+!=Ks-H4`lzu7ux%7&KFXOMpZ&n=()57q-Rn-|F6^2UT%?ec2oNEVt z8#GDy=JR-#@}5D4?4$o46tNr2ew^4nu7#v=xXyO;J*8jQ-1f3A%W3^;B#`;1m4z^p z9oC{JHnL`3_Dh|vsK`)#b9HnitP&*510 za^KP213=N=+BP+R5)qA;-vDx*>rb9*4D^_d@nyFKo&L1M>nuDVAs>@HKa58x#nF(a z4b?@o;`K2Nk!jcqUmaKQKJe}Rdi}coQ@1d@mwjD-miGe>m2;s!?&j0#?TLH2l)io@ zv{dp;5aD5$4;yyIyeX_Ax$GMcvFheI*o8lXIgF$uB`uxG&CR{hbn1h&8K__Mc1&|J zVUgand=qi`H<*7(+jxn^@3Kw>MM5l_HDDQ`;RjxaiW4H<<@EC&N3L#Pt1E?;%dMyf zeQnx2R3qXSC;pdApBk?)h5tPa$Cg}#o%+KUW_o1M9Wu}D-y)2){eBl>X=ztJe0s69 zg*Mi`liV`w#s*JIE0|)P#($TBL9Al+(>hgb%whzu_j6c*=nAm6Z(!JAQk)O@s#gp= zB$DpYcADFNb1Z7Btt>eEk20)SMMJ&23No?#@@EqOnwhI32bmuFmFhQ+6hxy{o*u=7 z2*+SIpm4o3o7cH3&hOtdIm#XkJ6Ysb!7||JkF#=63W71-a%(BycqHnLgVQMc9{=IN z@;P*(gEA#-bBK4BQ@N~iU;KI{1pUSuwsr-BG5FFyO!1lh&-@}QTJbL0vp`}ZnTl`v z?v?M9g)W!hGLJ|FnS;pQYoFa;#h=Q+p8wBR2ZuuE{?E>6ZMQL}o12AM-8EvNo+lO^qwa3k8SnE%@EHqy8Z3ZiDH@;9@LAP;Zx_XfKFqIlH0K2-n>T%Mz zS7~~Gcs9oim)h+(39F4xb<8Gc!Zo|8r9sauM43 zkTVQayBh@=^>vf{%+#k`8DZSM{p-ET$16Zw7p;LoA^q{EG;JWj(&W1Kt?=Wm4>oV> ziVjJi?!(u+&dFk54_<$e?V~?CVJVkX#&|_rW%~T| z$bWR!J?XT70#p=gg*ryJ#{%OA9$t0 z4dTI}jY6F-ZQhUXWo4LQ#v7I4lmX?r1ddH$llGyD;l|j+!Ui!X(&;xz`0J`u%=QvD zH|4T`EI)m{tA`%vGBxhU@=rA!rt{ZlJ;*&XFmA^yu;uf%&5A(wuBxP(9fs=}X-5kv+auBs?e1dE&qN!F1epv`>D3u)$Dakfz1tkKC}(Dq zc;sB>-OD_OEOfE_HsvGZ?Z&qX-pp@zp|RC8dVy9#51z;kmT=IU`nAYpgH?@_-PcoE zhT+){!^x1X%KnC`r?yUGpQEUG=nDMHrY8xMF?6c7%T3dWYaw{+PtlY>-zTI z9jYf}9ZY}tFAsUslUz+Im&c+Im(w}}a`K^R2d*65o`5W&6nLcURCY~7ef^6tKEq-l znl4yb?q;i#9m{!(Z}jeETM`6D3?K$~=ikmcoOYG_yJN}rGYqX}lyEC`^E~gp^EneC z5+v040i5rmz4L$mPxdmW-kRPlyoOFVYd5j=NhQr<;1G_44<_3MO2o0hfG3`kol&PX zx!D!b|71H}jpaiyh@Ew}SnIR7qBjxyi6#@)m!!hUsbR(yyvHJ^G8k1rB6#XcL=Ijp zkS%AQBXZr{Ip3awhxTwWUSDYgjCc8Wk$VQ71iJQ(@He8D{OHMkU;8k^OLQWO#ry=u zgf8%P4Oi?}>)_Y#2HDPTtJwq>1loNLi#Bh9){xb ztRK&d-YRQM;&nII*{6^mr3PHtpDe<86&!xDGpHh-AX*=He{pkJc3fmj5Ksk7z$e*@ zyLOxEOtj~JUropR!{3{Z87&(cm|kUoP7rT}4#*ZYFg)aXUH4dL3i2`go7dei$3(Wx zTxx2yyhbh+k+DSny*}~VzNjg!9f)~(dFpz0cBPqaMfzYu+4+}d&NcmW+a!X~J zjY2o_nRCBZ&YZ->Jcz<3Ru!^t#qp}P|GR+Rai!m!o}F{UhP_nXdpHRqLJsCfQzk!0 zME{2-^zFVFQ{yyoYHVcfM$cOYYa-s`h48OaoCdz$-c58ud@9AF23C{ktAcf*h3PE9 zdYPNM2k6dRT)&A3w;>WVe^F5(S92m6tu7dxsn=<1h__x6^a*qd!(tBlOZE1Fsg?O0 z-wjo&R5HO=98?;2zZmiKX3daXnicIyl`katTg|kG*^^@&*|Xt~>8CFuM9G8_s##GrGx$zj65ygq#izN)^xI-@d(6m% zAumu7{nw8*k_d?jaAKKE>2UVXu_&M&>D`k(w1`wZFIYd+8ncv- zUi%2Ia@ajEMw5}i>XO;6J>Y`P0itvXgBw)X$U}ojwBD8h+pn7%O04v*M=uIuL?Bw$mpdGLLkT%|qD2|iF-Kf9|MypP1&W8FM`Bc!UQ z6Se^(wvZ6!gaFssgM*AvQD5KvBqC(IvybU0Or+1qt@h2V@WkJ%p2N8GAU&t@%^-as z)8m8^&OYg=sQV?Vi!;h6NQ}7;213*KJp8XK;R8cMA&rd!3Ks})fkvdlLqnbGx^A?P zdB1O(AO9XSyC-8tkP(IYi8P5bVl(=V<|bI4AIKR7?H<~|#*L&2W1hD2>hD~n3N&h^ ze~DHayjOiic!8UsN-Zw^Y>*-VL0_sx-R@-w6sO*&!;M4`ZEM5!FAadq%4aVSg0E$4iE`+jXi2pKadnQ=|qyx>3?8>^6)^KAc2cCUSHG>qKxo z7$U)szQ)G(_Nw~R>5?AhWw&?v^)pXL*KT$D%cXeqaU>{~a!A68!{RdLi5lB^)}%LT zRK^#vzWkn>xJRGt$Q~)c(+=V=v9NgI?CeY~;DfD!X%ADV?J_hq*UR|{W3k{5fV}0i#Q(%Qy6fqgHi?zA{X!<}-nVt|Sd}(?9=@zt|3KodG)|1G# z$U0{#`h9F>-w=i_IQVb zZjz)C`|5Slf&cSlckNre?aSb@Ll}>oqKmQF7_DM4gX2Z9I19V(*LLKhmN?m;k35-o z+a6zZb$4s0(1R7e{c`6$eNw4j9LUpBBB^A^yww(9^JDrf`An&Q_D87PxHG+aB3B7b zOGnGfqR^6PrRfISI(1Pe;+q&KN}TpjIC>f6B;^Fi2v(Hj0q5~J`>Q|bhM1YZ{AE-_ zdoQY@ErS@FeNS|l;FkNnguD~hFPg0id~FboiM>6hwi1SNHb15Uk|wwjK^c^wky7bp zmZ-m?J2W=fU3pOUgvK zE*zDS@rj?Gzk*!}lx<(IUT#Mv7ZG-L13bgH;nr+@W+{e=EPCf}4m#|O!_icIYb6X( zg9om<6M=zLB~k0;DuJilYrKZ$CP#~l_ZpaUpVneSGVf{1%63P}1Vi9p!$NO5qZcNv zz<*>D1q)R|6Q78vyT6}^(#}iV$^z3dMJ9P(-cPyN<2Tt)%Gv_vgtdi*+B;%9`b^}@ z0u&eZ>haLdRk~O;e1Z|$wio%c@0_P6+nvc?ep(ypdJQUx80p6jf&5A%)nVOLd=lQR$CkS+HVe`(FCoAHEB=A)jw^C7ye1A=XG5VL?ulwDv^gJza>Z zMHw6zWtsSlW$t3XOv=R&E8%f!&rJ3RUF5l3UL#r=O-@MHSx+#@T$9#!#zTv~zPVnM zO-*5-H&VG$YPzpmQNy)bXD%n6i0m0%H%^I#<#|7wD0I=I6SD{WZ(V;n`SG1jl!IjX zh9ay%rz_nsFrcerZ54+IFZ6_BIcTdWb)gf_@_b3S`_IYA*6#?Z^rxx25=g3I*lM_n z$xdHsgXc}4hVN|edOzAUgS6?`*jE+$4@ElGyxg)2pi4mCceF^*~Xq)npv&p`zVHw{9B z-$Npx2swT`31DUkN8N@{@VloTU%s>8Us^WyF+-q_p@cPL!!q!N7w;N-Ot~42Yq>X< zGBurT2r01EYw^Nk;j{0}P1y5j{$lK48yq>=&0+rOrSPi0=lNT3sY|lCsvXnQXh{aS z6*ZMe4W9@Zl227c{EY-ZqPe)5pU{ihkIo=^sWsPMaNIw<_4MBLZQ-@UZM)q79mCg`dBA2^<(*O9%~Eo!lN zCg{^Xq_`E@y;ar`C1rDFSY0_Z{spJ6-+x`e9f5aOdrDzSQ>EVrmZWBpRVbXmyvpWv zX*x18veAD413ehP8d~tW2k+w~b-Kq_oHpL7RnRn->DP!ev?&Y?RYLA5dl*i{4J2qB{F>c7V7W}?OvT6Tv5}+yef$iTJXcXs zk=5!hqDSil+DyWb{#e!i2S{%^iKa6B)<1~t0fLtr*B>Y-V&8Qj;2qs0edB<2#Cb-R zo9am(bxW$3`-^cz;!709ScYite?_#<2l}UXT$ZGd2`8(5`)IKP=>Lk*lwoft={7d| z^!FgV6WlQ=nrpqYy6&zNpZiLlcXVA2Cp0XdY;DXId~f-mmMRG9PYcg>`6kB6ru*eg zM=B(+BTGCk6u@iOn=JLl`c9+THV%}$vKszQx$&oW<;sZ#t36exM5bFkk)&xrhDLaN)m}kNmT+SvHD&*s zfRLvxKx(P(Q*1*DBRbUr65;M{%bk7nMRK|6R0ftS#S55@`C)iZM49Mf5}mLYrppKB zf~Q`}081G*00%Rmq3OS?=2j{! z%vhaAQ$g_ZjW;mN;Hym+O8@ug1w79F5MtA>ziu=zfpQnurFQzlSQQbaon(gerLvuw zQ3K=S!4WP|;L2rt!1Ke&{t~Spt|CsKaK1Y~GJ;Ombx&=thY!UDqikvxV~_a#V+Lk5 z7Vi{arXeD3Y(#SLU!1DX%ve1=FV&elqn|9p2j98KS>=e$(ZAd-&Q9X0tKQGAXBXv^ z+~#kf2UBUzel7M*Gggic?M`oDYAT5==0Q|yrRhW!NjgdifHoai>gwu_?l%FpQDf}Y z6>$8ooy!?VC~j}p5|>r8Wi%NkV6SNP7kz{KXAlJwCT+$Mn*75>)kaD`wVC7S2J`u8 zD>KW6-E{p*WYJFf?}do#s0FWvD^r6NKX1RjJzL)##YG=W8N2Y)*wGoXHOr@VA}rrK zP*l#PV`^+4YpOdZe82ee1JjA9Vt0NC`ELUJO^C#1wJGE+32=VE(1C*QlLI(+P0NO6 z!S4QPiqf>u4&bB;+=G?cT{vQ~QW0BTX{*S@^rk!P*c&@LCHkSuWbMK2bb*k|q(8?$ zj@2w%5Y)A8fl_wts@!#e&9>+LzmfiD+2Z9QQ}1HGr{AkZ|04@771#X7 z_H%i|6)sS9nr7$S`X!<}tI_k?>i$w~ahL^kblnJ#vGs^8yBTj^w=%wF-JEqVtSe;) z{f+kSDyXrMq`ZyC{G{vELfbQPK2K$S*k&=-+QbKG6@IT>I0LU!uD(M9PmUK-8_SgHslaixoBRQm zpmdWYtJpWMCvozR?oJHbbKi`Z;q53nR zaQ`_fkCA+#0xr;RO(*(j@YJPmMFq08(jGnc$L5F>4}8?3!hD5Ow+6Y0b0A-P?6q48 zw-*9^90iIyk>!81Leg}C8$*+iZ{e;ssBz%M27A<)$%@WurR@-ut!>~O2*SKk)%1`W zJia4wVf0i~zs_(%v*XgUvge2%_FzG+;@~u)2HWQZxS4y%j%+y-&?S4AddH;I) zIrSBeRa*AxTQ+yT7D01izuO0RY0MKWcg=1*VX>!LOilYW;~ERFEgW1|LlW&B*5|wl z`q%hmb;lN$Lh6k81A{Cb5rMw7#1ujxJd|C}kQasy{Rf(aVTjlj&TpqijYkcI?+uPu zFShU!;^Pz1#2i!_1P^Zr(V@&h6+bkc&tdC&6{(`i8DS=_*diqL$Lw*{id;<0r}uUJ zEBhhtY8)DYWk;e3=QhmQ&eyht4A{ua5R&2=c08&!J|bh|yXBq;&}M7~heo@p&ePd% zqFyby?(?I5zFnSQE|t<9@xOTGbG~-Czx0F{{Dy=T3_fqe*MZTwjCy|u^*qjIUac%n z!pgk*5$%mEtT-+{kI4r5oRmU5B)mEwzRTOSyJz3HqOz{4C9iy8>h`5 z&CDa;<7}pI^5PoP1h)K}r5Agw#S|-l3ZG2N%3P*n(R9B zwA{$cn$IN{pt|Gbe=I;Yh&Ak1K6^9$Y59kNa@ie?lFz|ROAd%{%RkV2LUe|Phc|b3 zF;Crmsj*REPx?yDe}FDcptKxZW+Nu}jXZa&tE`|5n<&fK>!S5$UXDqsT2lNk!4DI!zir8bN#g^AdE zw`?v+xCmaE??lg){yVq5JeiVEcwb~;*X8E(j}Bb5q3_uX6FEpDU9=b|l%goj3Y%>W za^)WFGb+SxvPvpyC#f|`` z1Lr-(RegS#hT(BKd|G+B&xD`&?eA{0`+V%}ZK?L{<*MdnksV9^Fk_j@Qs`s93YX6G zFHdAq54$Gip`7KAP?Pca1OT&4Yfgqnn+}3q{VO@D z6a0`9+_ndZ0Q3**I-rI%VMOb5v^XYm7~Nl0c1`+1CXxT%1a=_b{2nsnYuPtTRkDnuPP+L6C_R@&>lzhl_WM8Pg4PW5mQ z^o2RBJCe4MB`j|Xe(+&`MUQJ5h7nX6!&Bbo+F92ce!iBhKvH^saoy7y!$OUJaGiD+ z-I&eJdc(`b)!laGPu-!}Y`S?XO`AyT`HWMt@+AbxI?m%_`86X9mq|Vjk6D0(#(y(9 zyujMS)4RKi4xezY4#x6+f&fcx?Bo<_=hcZBrI(1}8&EG#o~9Hlh+|KqEi%_*R8AzO zG7`M97*s(&2ju@-TaweBDOrK$#dF)OZ0-F({~$SyoWuW|$DU)U>2p0+obtTOVzu6c z`1yJ?O%LDd z<)E9WR8qhvOx}905j*!tnD}jLV$gY^!56Cs7ex~O(fCc(R1+ABMuMPQHQ$_U_Khxs z_6x_)>|Dq=M3OVFo=l)A*@|3__BfM0iF{gMG6ITT`0@@;e^&JJ#j_r~&NZHnmeY^# z*|D0#T`gGaa@7{2{G8CbKZs|+=l8l3CVV;*B7AIt10Y5!MzJr-K}eUZh2QIC+w-Le zbV|Y)PLsZIy&OR-S!~IiBqaiez~7wfrKJ9OI$Q$Xxc7&7gV!NzzAMw8)cvV8jE5E; zih#UqaJ?{w4$@c{azF?ASya^dIOD=t)1soU_olOPcpeG}OICytZoRq}CnbsjO%D2F zM2~NxJEfro5w=${vhd42g7m@vBw8_}6pU`}(NE~W0uC0d`!n&2Wvi}zr z#!*CGuA!%g5HJ5dR~w2SNdGT4_IFr}9Ldl#@a02871vXInMc<}!?_u~-m^%x(KSmJ zJvWlcLr~tU1klO|6BA2+$2k{CoIV;FiuB(!Lv;HiQnkNmQI(?B408^vy$wZ_WOr_- zAtV4%7CU<c86d4-j=?965v4KA0Y<9%wg90M5unR_jEPf`qpal zdBT0<<3p7fe7Uv{C7I}UYD^eLZEH#k#`BHP0BoCEAR7h{z!s3S9sk_f z8TdAXiDYugu1L&Cz|*#ccwdFuQ`^-r4>R3fLiisNVo`HmAk*Z#!h5@e z<3zJj(q|qe6m2grOOG!`H$qEyv=0}giYe}vPKKYD`^K)dPwlB8D_9-;&j6wy%`m`%l{3 zpqutPN(Dc|7$%PR6n-0Ga*Ctc6EHl9F@cCPs#_y2VXkeL&##<=(6wu&w=zGv zFh9PQF3r38k#ql7)qapyJ(-IG5;gh>B_ulUrxC`sjbm@oOCf@UyfCB1Ds$4bm)OV! z2ujn?whfSe<^9>)zMwb^u)2vkD%iG6XeY}E3g?+)vZnr`UXq9qsGD%)yP^!Y%Z2m4 zsl_L#|Mo4>bRr~~IN62|3$r7Zr(K+pyFi2gsL}P5M#Ju1S1f!#u_nFM=fod~eVA0y z)_8e1zxTSKl2gv}h~J~@%OgPqq*LmEd~`vjX(lGio2%}GlE$j{wlOif!D)0KSNOmg zZ0VI8fd-mC(Q$Qq)aw<0!n@@4 z8yZ~g&4tvc=s5zym?<)TU|TZQS946-w?A(Rneg*{rudtzk7zv9qB(#+!N5_&QD36iB+I;bI+QB=fnYa(d z3df=@!9;6Hy(yx;i>NNI3Q+6ww|ut1W9pL`6zUw`Z|)aV6@juBg3<&pS;iiuU*Sf1@AqB+_KX#C%Mh zJj_9R;wmif-D8!R5G;aeXYf|=saWE5S>K!pQl-r_?{`a!i`{zl3+$0-ikQt!-$7AV zxK8Ot-+NxK%L9ygLVa7R4;nUODZjox>}M=L8;DPH?boJ8Hr-DqQY7|Te<3aw*VJ6Y z6kf+yPL(gW!)Ca2SZA2iGpqjCogyF14;sYF|3CT8C{z@H0lonB|K;8qqf#Chwj(9$ zO?cV9&t&;LfGaIDUTX%A=wJ~w zp2H6;b9oYgF*e$Rr9vBhV>ruR@WR0iVokI1+PuN(&(|<|@If3jWl7MkdMgA$vKN!z zoUN}9Co>@D!o{PdlTTp8j33?s)Xm&%_cy1`&12!I@ki-~q`WCnw)SU%*bLEes~Aa6U>7(v*QlziJLAU=crDEXhLj zT%Ddpj<@2=a|MG9+7p@wQCv)wH-8cjR`E2DCK$t`i}&hzE<+zTsw9{=|4V>*ogP` zt3IW5&`I0={bPG0W0p~ag4TPJ-5O^aS$sYe#Zj?s92L-@6XdGvW}|wW-+~BzL z!fI(_JP-vzlFsFDiQp@Vmwfb6apN2n6!Y0h z$?{gCNh#)9lR{#Y{sELRBM%RUVEIoC}7~y{WtP^fnnQ23&Uv zaZj07#Kn*y$w;C{Gt_V$h9fTu*8 zNJ;+nk)P^3auCX_n3)Ac2Q|Q{r^HkB3>H1Hvi(Flq`yA~6-Z8VQx;fmEFF8xkB`V2 zNZ?Qs;fo6F66M`mzlsFpR9H`cV|NPyOOptAe;rVLwp((7zJ!FtTy8@5or1#V$q8(` zGQ17d*7x^%klpSR8Il{WbHn_GCX8*XS90n~Ti;cKO>o|^V6Szuvl zReO?gI#YuF50J}91Vv2lqc_RuH6rlc&@>&kHX^I}9Ur)>sP?L>ENx9=U`3iuRI^X^ z=Uch{p)>4L)YZ8;+Ab1EI->>91sbS-z)o2f(hVdmKBD}ww3!`aoflj6N8(diQa^E{fSB|i|Hb7|5U@cm zk5*ve0<9nX4_N>XB<4IPkR`yA41@{C)9CD<){lz+6RRnDOCGKgUuk<60z6;PAD}9g zUenlmV+3gM1+iqIz>;op$=o9ajcRiUyY0VwxLj4g}&^I-d1t1M^&U`|l@k;~_T( zVG_Pg`QYni-M`XkGCE#fdIGnsqX;e8^U4mGjzFnn2O8V$y~jBSeWW2qB^#^#HITKH zl?mCtS6QD13xWZdBwSPHOH~Vkb=-+|mnMv5KSaVxqZm3? zUtbbf6UF%i?hP;7#?|KO=@b5U?*+6Ii0@(#5Sp+9*a7(^fXhuSD0L-k2~?>1z-~U` z_;Bj~JU#I;u;UH4(l+QdP(2uvTr59vO3pSO`O(Wowr6@*ChYYbFbU%uoWSdQS-yl+0(*I`XmjEaqeO=!_r7e@?D#^{H3(ybKHWa@Y)RO;EMTPaTwI^ z`Wxl~Jy0hiLN$9NqaQkifT{Wu9PW)OPo2a5-H;6mg)r@O{%$2O0U&8Scv=hrsz+uY z4(Wc}jbVD&nZc@J0cT8(VawH=u2#D*6?tngOe_L0D3%kvo;F?!vyG{vTsEb;%n0BH zmi1dPPaN_^*s5+(uGkIOzoWLwH`W6MzN39}z8HRL0?v(tBJqa6f^2Ti`^|9=y>{np zzV@+LOb_cREkGzbho*w~+CMdd8i97Mwo~?BuRg3jpd#SExcL*=0EvgH0c|uby#GE$kJ;&NSGyZZ0Y2P>8ERzm@OPN))@e|s;sT}A_vZ;! zm@ET*jU+^5XXOdUqphXYugLrHsBsY4Wz`?Is*oeFtZYVK|4(zrBHJZ}Dn3#A4@Q_T zNy2?KObL@E+FY25xX5Xc?GyNxo8Au(RTl7nQ9pZJy(vrDm7SFh?5R%KIaFE6vR-4o{HVW0N1H&emFS7S>#7c9`5Pu z2h6E7QrW|{)SJ4=6Or;L&`my-$nblmX%klc{ElxwrVNr9jY+h0GyPp%9`2Ze3lSN{iE^tvE~p%ws+ca6@DrMF(S;JaHrheP{Ff?Y7>l z{fEH!AKlCv&O;j+84YeiSA1_$U&P(e^wHx6PB~jRFzL-zbw-rY3KZK-iOm`9b(%I| z?vMa{bT)a&mg{h%4E-x`K^DHXK(jJ5eB}X}>!oSo(1M^ty5jnY3a_?1eieCpQm-C8 zR|8%(U~hb>c%Q)29I$qFWDAYf=i&yEa!ewq{O1Lxwd?Jtfp+FJ_OvYdb&pvqb#L%#yUEwOQa z^gCaY!2GkA1p#sQVjySWn%10NrZ^ECcGHVGWT!J!;WA^zch{B^^6ieu=H}+ukv zvw;eUFNp}GiGMdKW+4c)I+D`+$8;6;1_!J+GC#7dMBUzyqOJMJpyA-8d`V4!242AP zimSIK07F3v>9P+R(V1sfwDq&GF}rp7Q!c;IsA4NxBe9$`dfs23-LX0=GoOncoiQ}@ zj$crKCdZjSYlubpIyc#@@S0VzJsopYs1Xm;Ib*uF!SheWocZ-&))Mba`_ahZ zvxTYG)_Hm>1yt7mWf8guQIZ0yfWSuh+Mv%$Nj`w;y5zq5W&c*|-%d$#QP(p=Su zRsZL(FECri9SO`>WYrFPFU7aK?y5k6vvkny+1-L7wbW!vzzr~=sE{4 z(B6ofe&W#GzMO3;5yd6fKfH}CRae{pm$4#-Wll0tH;#G(rV@9WKe@LoiM@@~^uD^%ElHRZ5wRrdvbY`3+*OcJ!A+ox^OI9=U z!+6sS(UKz(G$kx$@7@iw?~MLyc%%-^-**WHkZH?bNBWKjyXIZ-oSiCtMQ~y!UB~R} z%Y&hDN`28v(r5DtGQ53Nr;qi9t44@T96XVxU*8gmH>&!(tq<~Q|56sxoPr z5GKZB=yNjrDy}-(`prer&y>=Bov#Eh&L$FJ`I;gOX2A@=Hdch^GY2E8qm&$1u6vluXYBryvmG@s<3ak0L%0R&$gXkUR*{<9>?TWO zV2C9ov^KM{Sp@D1ZrMtxwz!*k44VgM|DdS>4MtVDjRx{f9J>cRiLb)w zf7Z!@kxK_nSbii_tCSD+##M#XG!$1^~s_~XxhPkx! z$6-BGc>N}q3Y3~~IlOw*N$!|&|67Xt*sLj=Xdl|Lvc5(j&WgCejJ!1`lt9yK^dU(u zTMbEUO#siKWS{`;UDb!W{9J6!`N7qnp`LHTUQZnI2Ei|&UG53C2;GN`6)+AZ7HioK zq2b_BgeqrV7V7eJ-VTfm${ZbGsp=Ty9;#|N-)#|icsAs^USP+}?d=j6{cA!Pc{E}A zdP5~+K;uuhBUo=26SvzEQZAYj4B~N}I%d7;4nfxf?*9b+;?{etVt^bCRkRY;=Zvh4 zp4T1u>b}S$Iip%*ImU9i`#ylV+$RNJ9DX~QNQNy}EmmH{l$zQ{i z2ECyK+_9osCMP>?={)nW{-leo_<7PsuPGZDQUWENk9(8yVle;gbt_q5>~7 z-~eY{v50ldtATO|v9W47AQIVyOCKr6{9}w!@v~MiA8GOyISh3IEj#-cx&#DCDS+%f zc7j6z`JHxU%s3zXYKZ;&G>sbPEZhkjXr!3B$4!liZ*ug+$$0}`h zAmlt$`{=`M^RUH|6iqWB-t~kGAeSsx1)nd}Qa#_1(IMRc!Dk9rAt(!Y(@~lR(VfvK zlOT@uQp0}bbGkc~)#_{{j_(N&q1i^Sb4Z{%joN6e2Qs!zW46K)iUpiLh)e zR_F838Ncs2>egD?xW{VEdHxyjc5AS4By?vC`1KnhESQhnVrvHp^E{UUQ`O@sR>Ws}<}?0*X1mIP4ywHFw`z+_R}kC-8WytAUyk@rHRgmAs*xtG^P}!pAKoQ5Xty$6^Cu;&0a5<1M};jQuPt3oFf}fD^((U_7zNP2LqHRsG_12+N%v8cR=( zfk`{@jJG=;(xj4ZA6#;jpuRITbnLQV9q_HnEwl5vk5RnaEcB(PRP$ z>m%M|fWTb#vP7t?1a=qR4)?(X3=BbOde65Md4M7}M%g691_s7@J5acCRkaH3r3^~do_33! z;*Pm5imSLkg8*xmf*?^nqyPFU+`$BRX=BH@ibR$~L<>lDp{YLzpaZTdk7$b5@*xUnSH^}U& z^~D0UQ)+;i3~#p_Lzg7d83x*3aQ2vyLBM?m@?NXam?hs;Zd|Y9y!tuM!F|eQRuxiH z-(9TMXKHaod?e~a?r*nX<7g^@bb0g{aIo0j&Jnh`5BQDv!iZ48!@-sh>LUpp z`#nz^9%Az}h)I8c%M?iG4rS=3MEeJ-vxt;% zx$IvQD-uYcnxj?gOyrx#jYUPb5XD3xh}AxUB0`w6ozpKft#8@K8zkiI#lQ2I>cwFKz70lAfP5 zVGv{HmmOHy?LuUQ_2u0_R+Fq~FE5j#-A4h27%)f&Jyuy>dau3glf#gSnxO7G^t-dA zcsDdu3;J_1!u`F;rg!Ng{Uu7mAWH{&(OG~49Ew=8f73zfZ*FP*hyJk z*tfNi#B+PH?atE_(M{0#)OPDS*?dT9^Rl-%wNF=Lwnp3m@ z)4D{fO4W9BobhwlNTg|n$>1JF-}gVL;1{@zWbnTT=PU2YUiS?HYifT75jZ|YMe)Wv zeJ}eCp;pJ58v6cZ5ygv}WBdn^|Ca^m^jN(s74mc-eY-&fCTlbaFS5|wL(pwDA=C(O zxvQ_Q?F64WW*e;fIj_QMO*iA)RH3;U-7ArV;Gf6^%0@=izgPq)trgz0YFsO8sAhA_ zbEn%^ka&PQs^w0ia2R5XsB%3wnYM53eDzKzH$Y1d(a`V%tHMT@O(gzXZ%l{@i$#wS z)W62Z|iPbPJD z1C-ppVY%{gvz1GwGF79=ah4i<9Et24MpO`z=m%<#$@<;S|MF^tIycQ=iy8KQVQZC} zI?yFHZX86z0N=6IMN-b#q^1oj+TPm>|22fFPC!DMY`xI<@79`<00y35^MIW`a1H;P zexT5A^Co$0=Q3!ypA2lMim;c;KD)^i~ksBa7dz3SnTHi_o zCl!fc+|%^lp|Y$eKGs&s1``l%DT>TAEP$+mm+MW&1qfOLyqkaFK(h)&dIL^VE?dIy% zld>5MI@bBc-HaB$kRZE3z11SBvZXv8Iy~4VFp?^Y(_dc(7~1-z6@8i@5Q>0wymk5PI#!vd62uKjjr&Tw<~Fj$V$ytxY2{v zSCMR9(X`|$UDMvNxfiExxcwfhU>9VG%2pYKzO$mDrb2uqqH}@ZnQZRimZ!hiZ^=>v@8lEsl4&EnRt6_5NwRj859&0S&V+TOx(2D)~bS%p~c@ub&JCdxiG45 zfdR#%Tlg>&oG3bV8+BZ~oi2?|+nA_P3R;WE7?=Gi#!aJVjm`X~Kwx-ivY=zQ2ERHj z3}ZhAAUzkWX~{hjte{Qj^Ccy{CO=@*klEsZ`H}l0LNOc?j{|k8Kt|rY#(r_=iWp2l zkaU2BF(*iDfb5AE29S5G9~W7W4bXYsP)mwR7n*^>iu(&6hgmK;P+cbWIZLO$%_?{O64HQwlM zO_12LU8{cUAR3Q?sK;#W3-;f|kr5QUo=7xI%;irHREEz9sR@eKqI2wvpWf46_IR$f z_L{`o+BX)B#S*pR(ugB=l6R7;@Z|OEgvP`qX4gp#g`S#8nDHof1^!gqRyNc0nTZ2 zT-D=SVz&**CgF+*xoUifsAd%{6 ztxC$23}`ND{W2oMDLBY_j%=?e!c{n$i7o8y!~Wo<@bS|z7J@G(o+@X!rV<*pTD|rS z7l_(4_Id#vGbod7XyiABCQ5-jqRdu9t1jrJ3>5j|E3l6>DDj7%ojS=%AredA*!6RW zI80Wwj@rP>T6Y1QF?`14y^~+wMK=DjueLBCSb{{(XW!f)_3k&W2r`f+j{46d;K~Q2 zlByMvuK$#2YEvuiQqG4TKcfVyW)nQW<%sZnU=C70=<&=;y$)*S!uLIS|3`l$ZR+4fsr#-|LCZ;9E~O-QR7 zH)Ujb;+k@%?dY}RQRMoIBb&C4v$DBgq?i*srV~bV=qu#PRC977R*8;sL{|kqhmkea zIdnI@c>7r7-Xv{{PT)l~GkT(V9*v>F$t5x*McHX%4M~ zba$gPC`fmMba$5s5+WsC(%pUMeD~fT{?O%u_sl!9_fvZgoK1U2hXz|ET!p&+ze*>h zg_(gq%265K4Q6ZU-Z=yzToQ;OS5qzK=I@|#{TEnjYA8QMAaKYaO)8N)(e5qJgq;H% zBQm*u3T|%hi=97Ni5QKHW(ZP-AY1;k8D|P?HSB|NtpE)vLkqQ->A%r7jnHvg=s-0{ zu&z6a-ID!goU@3!tRWff8B4mf`ty)y7Mn+%!VGdqM@L5)ar)d%wWWufm99St;G?Aq zNXwkx3sJ@e6IkSo(3v6JxCkdCn6z%ziL5!gxXlbNo)4Z}xmq@eb$!Wj#BR<7EHyp; z`n3_i&6xn3j5JKv#dnat`(D|nj;b;R^*exFh2MsiJ>e!0TKuirN(`-fT-yddGEdi7 zfQjAo`dNw!CNMi&d^>+8^k34iNuDKb<8IPVR8?{QwnyuPiT9I;aMbB9uaW+|=|@4I zs*0xXar7E}o8z-%DhC52qML|hV0*r_rj$|5jfBB4EI z4icAvGWvZ#lRCA<&_3M}6ZX_wEw>ZDRdW*ls6vIuJYx0Mis{GYbyT2qv_{VCv$pLS zK0#y~@s8RT1rU|UXvS&Itxhp4(xv2vgSmg(dogPJa5+xUP=$l`$75D zavRe6^330~46AgM^^d6QxbehQwDT^9x#|1DllP&vP@y0F}IGER-~7Fw6HMmjEB+l z4b^6u42aWfe=Nu`EKV?%o4bh+TZO*4IaHm82bQUsqro85XSg~tIwGY%Zo`%=j zy8F|3cXRJ@Y878Nx$&})-g)O{ndpM5D2-y#p-=KDZ!bVMt^N%^z&LY@?Sp_lBC3kF zZ2tcE8a}g|SX(=(e1>q(+J(q(S-Mhv0xDWriRWil{CcP1fG&@GF9c`gg|xC}9nskt zo%os_gl4qu=YD!Fjc^Qpsle5j0GX=jYq5b(Ec~uuNN~|F<@4P9@kX{W0bsyNvuitS zXoxWfLtdUBL;mgJg~*!`2}N%PiULtH-=1iti<(=eg%q;G!;4xhjGhw|G_+vI-GLd7 zPTd4~?mUrQKC2i1CbuNt(j&=%q{qpH2NIL;jK*|sZTmMAS2)Y+CFwDDthUC9AzW&9 zrm7Mdp#8sgNvWtKh{$?>u>WBzdt`2bmvyMAwtiv^%M9*7$Q3SCFb?R;muJw?9{_Q7 z^VBCiE!RAd*v4#zf3b9foW03NB;}gPdf~v!Qao$oc{Lf&y8s%IOAQ9#KN^P32D0!U znE;{5Fzl2p*;{$KX%#UWn4a_W4FA&vtKWq1IfXqTGW(fE1*R`kr7*|ZD zuZ>gs?+feO*Yz0M?X^X?8Iv#h*u(^#??ixAFgkj%&2zho>h9xz>Eue*!+Cmf5vs`? zB*h+8ksr4jBSy>Ez z>q@Hx9)#|29e^?kdflEl&sGicdr%bY2_fWzSwvYkf9j2n1Q4wp2Rr_NV2;pQ^kakV-%58Z9tn=^uF#7yLASNn1dk7dVqQK; zmC|bnX+>WXbkvLKI`~+!f`Vx*{KPI2Ya8J)IP6cN7`EjCtNVJi!^a{88R$r=n=k<&l zU@$j7FI6H>8~vo)lzN)h?4*HRbAT%8nPt;-Y`V-Zz9;meqK3~@7#LsBz_(%8@Atrb zdo%vipP~18KP79pRWFsgdVj*H17`9wt zk;DY@y9XI5Jra9kV5g52Kp*MC!YuTFtY^mb>JRPN?p7~ z7gBOaTBL$N@;in^aDL(M1LJZw@5H-?uFfkbgRv2ns^!)wFha|%Pg`5t`;F`Fod5j` z&4>ZdeQ;mH*S!^^_w0H%eaAb08u7tsh8y`$7ZA>&DSVo%t$zXT%?N_zPPlmr(K^k- zwx5~30F=j#Bn-knRGYXDnA1`rJTmwkY9|*b5=JC-%WN^!*lE)or#$mtZ3dYp(nYS@ zk8EBAeVI}-@rpr!ee#EZaKHpm#94y;|NZ6#a$w(N)|7uZN!{_>E5k5}30Q!WL0ASl z|DW#$G?*=7A7Ogp`@hb za}9;Lp(m>9%LS~)XYlE+M`q3Dlh0jAhJY;t?r}&+i~-u*`!txKcMlJ~PPb3As&;6h zQsSJrTMfi6`NJ8rX3=mRT;D9FUIhhCdAll7hsDKVL6df_)+IbBpUW+!Qft5|9)46Y&hDmskx3#C*g`;@p=V5T*uJ z#<9@!FpBwJDeCG(O=mZMaHWBe7coujpSvOn4OsgqQ5Ob=g&{*f-;2E^@@%%p#Kf5C z^hO~5e-*MLke}iqcy3j+d_pby)T|HZ)PMj2cI5}nZ2}uZ`1?=$k;VpD#vCCI=4`Jc zk-U9Ry6{g+O20aNtOLga$~yBO`;rItF12;qqM zPqFa+*tUT?rNlEuCKnKrS>pWTUVgxS&&Y3(7J`BnMWBwFix-s_LMHSOyy z_v7}-Vl8YHYmL59CL|zH2{PY#B?aFmg@7#u3Kid-YU*4Q?+@YyFdgtqFX0WyhCQ4f z7JKH(a;qLp7XpIw=5C*{o$pu)(&80{n=W1f3Db~9lAx;%hOo=aU6~h%cngWQkG(hr zJwx?@m=sKuf)PSlFjpT8?~6mS8umpZ08FQd&bq9FEKbVZ72M1dbmqt_%D;ad@%ZF5 zsUI*UNG^Y<4}znmAd3~`A|fhEUG>!wP$&}8I_+ygEn^Bf>U9i-oVrI>jmGPTu6w+# z?%z)?no%qYNSQhK;HU*1Cs%#2+kUL-ln<=p*XPArqxxQ?!S;2%!ONJsDsaBs{sT|L z`?x$N09Z}T+01y5lZvc0l?vSYAI?*6k<7YO2bb~WuyLBfcpsRb%>lhPuGX2TqM@Ni zdqF@gv3Z-DRySD~>#g9vwSiRWBp?mK0qT^9m>%@^5lh>dHMG137@^lCDWVS?A&t`UznjOlZy2*scU1 z0Ab>EMCZI=hUqPE2HIA%O}9Q*WXy5%^Y?*xucKL%L`f9bFmz`2_xkF1g?rK&2a^1b zdja}o`v^A&PCi%xgfMAElq8*cRwUC}X3Z_T_Hi6No~WoN8=Il|`ZNROSY6#o_~PA5 ziBkkG6v42b?#ZEA#xGGyuIl6G`L^Q|rtj>S-Ce0mDz&fDm#L^xP=Yn_WwB)uUeUZs z&by$I-IYy4qcN0_^iGbA)Rn-wMZm8ylm5mmN=J>Vz&D(9`xG98{rhMvb15_RTukl7 zm(fhpgwe57@I60Zz&4f&h4cQl_h36J1*o9rE_Qqcg_d}!?g64~9dq~((W9)NI!W@} zh*R}`{21;1G-7M#FzWA*$h?yL@(-cz@b&rS*9PV$zj3kTI5s8*X1KC{osmBrjoSW1 zZtrh|v?Rz=zuFS&d^}A#IDHauitj7`qlS&}EiOVXG4j-_Z0)%sQb#phzGPHF7aJj( zc##x-u(S6=rM&+g{^5OG_u2fEdc#|(U1ZKT<3IXKbpEZbg74}eJ#UFs^Qm8cF-ZBfg3$xua*Ll$x6(+Z(KZj@*Cv&D}9O07ce z%bXu)*)0N9!v0KTjS#x*8`#}l+ufMZZ_`(z_a|rNvXH^Zh{*0Uy?0Jk!9IUpzpmrl zn-+vzO~HCSLT1@~Ge>ln`|X=(MQQ7PB;LkrpH11nR~PqM*A`=VH*9^4sK1Q=(AG7N z1#@B*w%nZIsWL7Q_vqR5H~P?;{JiZwEMo-f$72$ z@6JPOLNPGw*|H}5njUcn3Ffmi?;bxNa#-8nq4ikGAB*Lr*l#)37w5UzF%{knAGiza zUl2vR5VAWFkB`qHyD-LSzgN4vRnp;fTr9iU9u>4VKhnQt*!xp5XeZL(B1FIVV^l`} zF6LQ#hg*>~Lx)o|+k^C#l%g3Y5jN3kT>S-U?NFMy8@M*i>Zhspfoj$xq1rWtTk-qnUr)H@x?3P)ch&ICMTsGr`6U=jO$&&^5oyTz?W<{0+gwNAN&rFEI5EkzjCT(0p8j_N)NaGtcm|}D$RU4;Mkg`Z> z=-4--z4(HtYl&>wC|Z0M`)h6(5&Na`plq*M4YHYWLz7=0Tb zGTdb0QhBH7YW*p)FWnnQVqK ztn*%@MxQbuQzWEIHLGXArfKn^DW@AIC0Y)mrsT2DS5Qie^v+Qgj}VtUroYbCO-+%O z#0is#yMDfmhOlwEm8Uh|Tg9}MN6Tft=op>Cw_vw@(chQOuGZ9@5Xb9! z?-lW+S%Mvx{d}9epOV+3`zOzOjrk}IWAxnml>|pcIK+t(7eQn5FP4g5^%t^MJ8mpD~ZLd{%Abb4{>U2~~) z8KWkC&XA1kB3eK0x_XNlq9!QhGP>bI+%Fe%RqBRLW{0_T8=cyUi}S*fKdwaS$YGsc z@Pw=O4-NEKH#w2N!+ycV)XLjfX$3xu!rJn7Q-C^l^HmNfit1jF>f*oYN$Hb~8u2eF z8F@Qi&USo|X5Yk?7+i-TwJf>hp8OjBwfz!xv6*}q>LYU=5*!MWUI^Fxn(O*4A>+F6 zAlg_kj5_4l&)3g);-=?bL^LKnkEXZ9fj54{gfqts((j0Y1ckD2jfV$%1ZKr&s ztKOC3@wM*R6)$gQNMclMe|&1fs`+d1HyK7VGcyxB`%ZOdy=j7eVYAnUNW1zd6H0f3 ziHGLFR8{hFxm@&NnQ*S_e5TYro|ZFsuB5LqTlhNFUUy7`Dmn4t#H!rS1?js^t~XYJ z=g_m@FS3mLyPMV3v4)fL%UcJx&Yk-EKlQyVH(uE`P48eu3wgd9kMCcJ@dsR(#v$y$ zKK+Axwd>`O_;US=x)_06K7sx5H|j{ZW#12ELRci9y423Wl&6A)xHxMzw~G4+zm%?w zyu7rdkU$)Bb38?9%Qp{RqaH)Q__wy-Lt*S;g#z1YoVd8o%1m(IYP)^Z>?==}H~Uit zU><&xf}(=#b?!!u*%;5Cs&`XUQ`ANu2a3o?hg|*dhSLq0g5lt?hrX0hE4(b9pMRq= z-prlDQRHa!bbpWm`PZ_i(ucg~?TzN)dGjO`8B2*zk<LoWL?i!cn3a4TI7T19v%D9QR=AjiHLeB~AB~&nVs+pW?f6sRpn-hJziTs*`ne0oyB?P*JccV&-@VVlJ7 z{W6QYgzxc${pMwDU3qx)W@|;}m)FF+)r4bNUEv+bT~`;HiwunXgwhOS-J=m4x#l*< zuP9_i9H##nIttAjl^KYiGOe45CctiO@576)ILgR|a+6!u%{x>@2jrjp^qVZZ{b-9t z@ayJzki1t~nko|Rd|Y4hd7%N5OJn)^L~?(9WWZ$mC;#d1KY9Yb7mR9ZVG0mio}}@t z&mR+6yurpV1{W2X{`$#u)b|n+HLVP5ItiQlO2^^h`g)zfoEImYQ2rOJx3!|r9t}*O zu{!6hj!f7R5*SiVDS3l@8ra_9wh^SWZE~D!%M$kSpQ8}h(LjCA; zg#~8YL)qMv{MBK1{{G4gw4gR&;|%IbjIT*}%UKMI9-tR(KR2~z`)_$?cGw@tLlfiOb)!BI*jAP_N zU=v;a9GHLvcn5hDbO$3||V56)jj?3-*h>^qAl@ zK5uOC$0x$KQ@;%<%)uUN&Pt0-#Wf1;S=~Fr&$CF?({8_CmLDC$*qhf2nzxE$LaRnV z>V8QSc;ozG1(QnQC58P0uEMKXLop9C=g3*D?@4s1v+o;QUc5Nj<{_n#-{xa;G_D{? zd3|k1_Tk_ur@ncPNSR!aNQG2%XSWpF`JK#rym&i7&eYrKpV$~h>YRfv&53W1FMB-n z!n3jhd(o;gR!(F1h*X?J)U3vTN!qerS}-iH?fz4#{;*3{rHsz@1`ko$+X)7`LG6x5 zWo^H;lVG+1154V-Kl8iU{-2qpY?@4`0JpnE)626`H8g?hH%&#;zf+@pQhRs4+=@0`0ssO3+_=`kCId)eBcmt?&&% z^yc@qw>wh}q6m@_;FsANi(!F(93i=m>XV_r4QeAJ6G;?@+#Z7V+n)lq#(b35 zvz2SRyD&ctxYESjiNxls@!XC(wj1LH>#E=8(h~a%)rB*DngSzG+2iuy6GJ{#Ab`cu!qQ-KlaXQyY_gIuY z^%|fkE+-sTKTkB(#$I2sy+Js+Je3U7{xy-S#SN;{`iMhk-?p(Icw+$;>~ebFTCbNw zEMiD=Zu7D7o#EKdurI?SB7!uUTMpAlC>$m6Xqb&UeM8WnZTo6xC;+pxqRJ)kLOhOQpDJJ^|Pg z@AfclGko*dFJ5BU!CXu{oRE+n^-O-NF+)`I$4EsBRM?3Y6?9koDL6fCmd^WI{)fBm zm7DAJ4-gf_!AWEPu&G_vb59?BHtEDRW+nl1sc*QrxbQu%s)UC!L-Qh?@hVx0?x@=7 z^wB4jdL;ap+7d?w7zT(eUpHM;@C@+)JU=$ytC01tgdc}I{(g^mpS7694w?q}`4{dB!=~-fYG0nLxj= zLVV~}x;rQ3Y}-C}ebZFTQH8eN6_HPu$N?|xosPVJD6g==3=!{fOZt>;cpF$a&-S$t z@TX$k?z&-TRP&xL7!BbiepGDi=f0#qkBJ3BHKoWyMYKO!Y=>D#z1%xI zH)T|C$SX4ddh%EE24?`FL)WjQwm7Q4^PRA>R6y|2rk2b=bt3}vle|{l8enji*`vTJr&W>9`~sah(zOTnFmn$=a}w~TK&_RzrQjpHd{rr z10pt_Gm?1aK&jLGo^u~OkVaF3wDU(axJ1|0m8V>fc))LNTH-GrHVHmTW75Zg!*?7< z=0++Qu&o(c9`qF3q}cuZ9ZU8hU0veJ-`Ev+LN6`g(N=6Pte)`*I{0Aa^7m0CREtAV zxmWtp2+<;Oj?V$b5V$$KRvt=Gmb=*dt(r^xwU?dIsBez=e6sP{5wbPGY`1@;=JfAD z7L(gWMb)02pnQ(XhwSI(B*hGy*`MXFC8^-IMa$u4U<%JV{i0rL*Adpbj4JvJ(?M4Y z=aFCxvrVxhh=N}Hv0TQWohz=yZE8?g^jIt9@!@?8x8*L$sD5qQBQ?S)bET&J@x*uH zyx!7|#NYPs-?P*!7M*tpxbxZV1~hSsQSa}WxQhg}RJ*;(nx2NeOvq;9^(f5={BxsWo+ zZZS3k(&^_M)J_m-Ud*wo{in8E+iw07))mDUQPuaJOdoZs22JJq(>behrYKzVoN>Nt zRJ*X_F_Nf!Dq|$5T(A7u-Bw=jtmXJ2E{KXm1;Xz?@8W_@s^pgx(O6yS*>WDK*XFHd z>to4omcRKys^faszn#+wsn+EN8AnFXrm+(XSz3t}#%i(v=O~h+Y9jhVC7#aLdleg~ zOQE~y$+TK>T+Ov}*IiXy0k=X;A9{SRx*RwyclFuL8?0yg%kElm#WG$lT!s@&MEp&R ziuu$xc>OeN!c+5JFnNaC(5?PuPIAG?yQK600$KQ3VV*EHLMJEJDf#+=g{dwU#(wjm zv)d8~m(h#>a_19fhrF`c$2e(`eQ$lC#^d=B-^HA)O#Bp#+tXR`Nv{d37ujb>PaU4~ zcH4%X*2sfnDOEq1{lpaFtG!2ji1=>Z*k@%znATfj?F2@nJxOOMu{0+7Dg-8Lo14!T z;aw+9SU=)4%%!N>xcX^f%Y4-l^EOg*8;(UgJqt#V`ZI=$=wOydQ*E~k`BO^GVR#W{ z{44=z7a+X7))q1fq#j46W8P2_RU+$G+#>XNjQGOK3#qk}^K;8IIS1u|Xdp!&!>az7 z+mZS9U)vN;7wTnCAN(fQJ9ayRJSnfA%~LcHT=`+zV5J72oO_!z2R)b?iNpZkGWQt9 z5SvEvxxAKJB2RQj#wF$5qNr;V4!}P}0}eT-($^y-+f@mc6K*F&O_eY&-L-A__zoVv z+zRN6ZZqC`GZ+0bj?@-K+NgW>+t}TO)-O;QG49wEGk*|A498w-i15LHa{G(X?bD3eRHRUcWCcG`;|=|XqfGbS;m|0^&+e<2sC!7;-Gv^ z+cV`1(SV43vU|6E333FUXx@?F@6EUkQJ}rAZbGbduzPbt%p3=tI=)s5eQQ>e43yAX zL|q%55;X)Z?4KHW6t)ufe=STv;Z^AlpDUU6Xx3+-#;glS(_AE!`0ebdr?!-?d2T<~MA{~S`PCNWEw=MKKA)zPtXeN0&H9VsvJ zPUTg9+a(uhZ+xUM^E1l*{rx9o@z@;QY3r2}JVfDnfu*#_v?4qR=sI?;UKv2}zn~B# zjw)7@0WDf!?8}eS$)_sE-96qS^K~=xiM>;KytJ>4pd*7zM{ocQ8U&31P&s91XBQ{% zP|ydne=>MejW~&8%1ILQMp;qr>{7F-;UlSdJqO&wFMB~kC-Iq^j9`~MMDV0PYV>b0 z)0%?EeDQQ0^gF(#y>P)qc%pV_LwFeCl26R5X}^m z8j*8r&ZwvZ1WnDMHWV8twjm(A&J51y`VvqpFm{$$%9=$Gh zu!lH`G2Grt#Aw{Pkh&3 z>V-r0m^D|$l$${*AY2Z0Q+&(XQvj-BmZ16zbX2*a;w()oxxcQbiZq}(1uorVGP%b_ zo^EkoeG>CLoBRwDcoD5EJHD-Ot=WR^QXHL!|1QSdZ;n7T>FJ4+1gL)p*ccB| zN?kb<6QkeC_|+Rnt=uXZ@TFs5g_3pn^W!LI;hZp`e74UEQz2YuLh7dxkO)mt(fU_W zr%ZoYaF8TAjQ!?)qoC5)On4`S*Kxf6Cj>v;{WawjAQymZFmaL|DgX;cc)!W?F?Q)k z!#tj#JOC{mm-`Wx3k{)@p8I_7|Ai7dT|LN>-JgfjY+rr@h%V_@8d?B%VWSPX4WfrP zIki3x2?3hCJ*EtI*TnCgeH}*@XQzQKL)6g@v69)}`NBnI8CIOSo>_~gBZU|4c?us@ zoH)ug9=$!U5A{$mlCI0TKAy8Hr`#5el%4jwi9h?3tx(=)?h*k)ASzU^0haNrO`Yjs zBi2N{i*fm4`@65Ji?c(>93m_D#z(p#S>y|g1R2`_51D%Ju<>&?i9AzjR#Yazg0Wsq$im7ll`8I9vrBu#ydo~ply1QV}$bJgyYI3zqha2Y^?sJxV(ymswd9n z{+|mVoTgWcO%&m~=HU}WA*v#;d_tGxX(q`j%OZfgSnx?tJ}r%)iiC9S0%0RJ7cU3* z&{Spqd=T$Cm>G0EKtoI3)&!S3Vfy;v`N^rudCM^rr+$sk5b~k8$09cs8noicbC|tC z`}O9rQ~XL;2!rfXa?u#@`*gs2-UvGy%5rlspBbUW!Nu1Ag;u*P_!8YXIrDH`0jL*s zj4=gyjzWD#bgJl0YoRdI)YPE;ooWXj?Zp&&tb9q5DAW1;HpER5ucay{?6dRIj4IfJ zijh8&TpBoYt*)4R%RX`CPEeg1sHOzqOX@N#B1nk?%X-i^Vb@tsH@}p`3Zor+@7mBuJWD zZkA8O<#A?pV02DEQEIFYn+DomII?=A@MPJ< zggWBe#Q}+G#7(K(>+gkOFdaXN*@BrI4UY)uQFH5&Gp)W5d~YTkvc2kyoS!;zJ!hyL zYynmmV1psz&te0XW}AFAjUD5VZ^sexBstClo}VlV*g?-;)^8(LX}jqAhb0!&H=Oj@ zfFKC=iRfO6(znx%{%@0au)!+Ms>9&#)OVZ(vvrWccfWDtc)DY^(6No#2dCaqQ>?%D z?a`dtr>CZmK*7?Xk>DUIL;dtrzH3au+o+eYVX-GXgzpLqBST#!0Y{yd-vjm=(D0zm z5X$Ec9wxS&;;V}D?yFCAxqL_{%5|bPUR<&r${{r#E&o5zH+wqw6g*0RLilsmVN>z(@3_-S9Sftdnzf?Sd+ z2gEJMUb$y!tB{%lJn*+)f50#iN9gP= zM%dNS=ZP;S%IQu0TkD=Je59XM(}HG)y28io^c}MbJKt|_nk`)|flhZ&y3(=Tl`RmV z=TO!A6>0;L0eL4VqVH~my>cZ zjmDWi-%C5E*Y=be+hz3B9<|^BZ~M3SQG>BVe+Q_X>FnQ@|Mfv#LfXN`?sgFv-pzr@ zw2B|(UOb+7Or1e#Krr1bb4k4x-3HdLvadPL+qY9(0O~0ExJ_27iODN|B$?vUVxi9& z?z@DpW~<{ZGeNm7Q~)WN69iNs&Pn<%Pj3T>;yD%bgnwheUv#45@!eeQJ+AGuBPHN; z?=CVVgJ7+u4!AD%7PZ~eX@tCDE|b&3It`6VOvq01R9Ny$)oT2tNVi$A<8%9Dt^ z%bXo3g>aXeP8yPC&~{UwZmCqJ|iKKr3!V~T%# z{=j}sEo3e)P;5HEp713U`Sf%-EjZ6aVNGQd5$HSp^8cw za4J4(+(|*mZmhLQmdBK1zR$>&7oa91{}~j8!i+Y@)ZKHSR-i%a0d~}E6A?ywtOT3?oQ)(2L)ZVBH;1 zP8him7o*}~#t!Tma9MV`Ow3Sy^Kx}xiN##TXYSpimeZm6OLF4aisR8l!-l&d<7b)w zNZ_|oYm2}2zEhb0%mG;C8MUYsPHrC@u6s6HZPuCaoAZ3QniY@C$OkWJuG)%0dprPR znpsD4lkCXx2+knzsFJ`*hOz`pXtE3pzii^IX!K3v+a~mE?tg68{<7yk*)AxNoIa+` znhk?K`)ggbnB1aHFChq(`uhm_+c#h#NC|)S=VKft^NvNlvz+{JLX;soPVi=D07#V~ z4gn&AuF=_5SXsx5+PTDDs%Fk;48M$`XU01M!ODVn2lccA_K19|y}3xl)OEhPG)M6Y zBkNSvh(0KWM`>B{$;8nO(l}`jWLkY1ejhyfo>g}^6TK@3+emF$3%{WB@+Z}PK<(sg zRr5F0WPw9>1O(^9zjEOpt#2h0|Cb2n0`m_L!L>6jS3lDiPY?Ha*%8*^EM?n#^;NHZ3CS=!>FRPH>VbC%tWgWasV+% z)lqx*Kec^-S`n5yyS=~f+g)8y>E~dgi$29xd3bBxmZr+}f`PIVwzV%d5T;W40yO@Qa5@PA;H3JHNKEy+U)omr9g(nF>L8P=YlFT`?dR@H5Dn6C6xrN#n35o~y) zT;i7GzO`<^S^Dy((;eAvTWPkzkMXQDCw*~v$tuNjp$_lJ)?qk;g%@$pRorZ|+CxNr z3kL_cTEAe*dAe|Bb8-3$t2**dB>-6hDI2n}CQYly!_{C$C3y zCWWm_-)HUmd%+b<2kVjNUz$jyO4!y-M|DIGsi*v8QcRG)05}8qVkUd-^z2RfBMtL_ zckicg9m%>*dg7nOLzFsWuf^uaeHQ~MGVxMk?jO7#9Dv3~A|LRiQsV;bXk6USm(rOe z(|E#R{3b?{9BTLDsK%Ofu{(O;4$arK0?0dqFA25I%|)h>)(0k~1C3Is!jX<%9f8?- zkubV`8_uCjp|-W1D`lHdBq%=;ab?0ZRP*%02cc>M0R_0T!^;-Vlnv+fLD$0R7unA=+o6^bOf${OYO+ zq`jv}3B!D}DAmMp1lD^k@f-+KGG7A%DHMUO!Jt4oD5g|ZsBxO5m^<{QvI3a=AFw45I# zuj$|k599%rhyIjmU|jCc0QUN@wfWC%V@wp-qb$IY#TN{lA18clbCY>KA_o9ddy{OL z8A!>6Wf96l6BMq!q&9=8OcQ8Ald%B%9%(H;8)!~1WfqDZJ)z+seAVG$g9+SprDBb4 zK!>5;>oyuN^q8GY|G4DB-^h_2XT;GFt)x@cA~J^TgGI$A3J=7J(D^uHUQLH@pzSR+ zVx`29K0pYy3hab4UtS%Eha-;6Zmi=s!qk?_Xh;B)^5kt71&G4vfX6!O-6~UNs|5Kx zY+}`_g;0*-1Up1S#AHsXpRCFeKqYfa%_|?0_Xws!fskgC$Oc9BL&+Ec(Zr#3`ijpEyh} z%3Sb4Q*pSV5?ijutBMQIXzCH{&RRCg^)0V#{EB^T;!syKwBVShm7AN3Ex5vsmWPd& z*`NzwPn?tdgt1AOqXa|sMip%W^)`+~n>UdFbPqPA?Hmv-s~!ALy0rVDOUH1^*1FC{ zrpl<@*_LqI{In$O?dEtnp6aqAZb6de<3t1Em~X$jKrsMc2QNCyb|=lf=@$Z^Dy(Cq zaF6X=##@CCm`MgDTd<2S%9iKsuP4hX!FnsKR4?2Wq6c@gq>Yhcy$lX+cDJYPx2YC; zQAipqLY+iqt9v6vVRI5#?(`()hiQlu*E4@^%M$t#>aYp8Jkd-6&bMYYyYBSKf=!!g*;hwrABEcgKMPRFo&H$ud!lF}_uDA|Av9lx-<345UAHT$sv7%L6{NiHIbPpIH##Q2maA2X`(;BeL){i>O*8 z;rq#{4EE{_+6#d7DhPVPMHeBS@c7iPbd!sm zZ5%?<{5iq;?ls5N2l~e4HW0`8CgC#?kp*CozyaS_K0!+fG`$1)UQ7b-daJ_?D@OLu zDS?eY49+!A@7vl~7*Ozj@9Tl6wfSCqlc8!zV|oq=;!p%2;fHV>xX zHSH9a7z3`ihnHL~apF>qxSGk#LfPqK%?iHoP{`#+P$&I?&-vYKdm8>~rfUB#;L%FCo||IK~!Ieq<) z%^*w-lkDvQ8PxB8_~P%`Zt6GfrzRTFGN9i=M8wpP!W4Mf!}6Gg%T}Yy`s3H|ns5o# z%^A5m`5){YLb_{31|sE7Bp4*ZxUTb`ED8W$<6!5Eu)UN)p3_0VOAG&8Z~Ggi=e*c_ z;%4^ChlW;>vGx!9UwlO|aKkQjR3@v@ldD!YIG%=FqnXflRw_cIxS91n>I*F!H6en= zLFC?MgQcm6OH2`o^O!ANT%6Wt;&{2G&^5-@sGE;=B=hR!MqZ|VLIE;LX6t}}LCx{LEVxlC7GhIN*nsCWuiT$~&Kjw(%7YccWkX@hEXzv~LqLUSJ#53jeYUwe?~8i$UX8LV zgSy>lV}>&LixEvh^}@EXdG9EK|fB^LD^v}7oEUe zw?fQh>U+i2n39*Ql*jdC5gM)#>{H&-O-6s0mg}!XxhJ1%q*A%Z_RrIcyMQ z;XCfSmhQVNCJ9Ry9bYeK(!ygUk;*0mim8lfjpRVIRF!+fp>GW9Yi6IeL=liTo166U zKUui8L7B+m9p+HV?m3_x>3rTO+4hjnyXIjUj$^3cq&xJaIm!WwWdjEXzv_DOOMv?> zB@wM&5d`D)^qXIQ+X^`NdF)pel#R@99K%>X^1f> z_7LNUn)`JW+{wz=1hYy$z`KTMc$EJ9*!db|pq=Aui9{d;8Ee%KTxxwO7Pw08`&+Zy zgHo&O%?%)|dD7z;BFFU{GlEo0stAY)mo;^c`)0gl+XPZkHGt6~lMR&az89$@qPt2j z$?(DzI54{{4U+Of=(R+@PD)p2d<0zU`~J7#E%`dbD6CM2$;%jU^dI0a3~Im)nx>FQ zoQ{Yiqe2kfy~C4pp2MN3L*u44ig8|C`f0^ucJz%41*66UC_C(N2_P#+(Kl#*dteRi zhq2u6n=GFtAqvW7LPb)yy7gAS!}mo%I3LJqKz3S|1v<-Y&3P)+4PV5B%HBPatv)-) z?xTq7&<=`y-X{i{!C>g;P^s3GUbj)2+UySZV*w8D7Zd+!vu|@L^9;+^1o0yh)c%WF z0qP*l8F1_Uf7GF57)l-LJ)<3}4Ya`_`p+Za&+(Bb5-1E%j1L{}yhCzX(Tl3vo=1zU zfi5VK;E7lNfEJWkrA!k#Dn*lwqmY8nQw$07&s`a$Fn& zkZeeI5_}%-q8uuxFFW0+3UDT_V!}8oi$U$X%P&g*{wu+NNrG`XwBZezmJ_2sE&&Nz zai&k85vP_On2CU`yw<(e*GHWgp};{gLm9`7f;p6AOdD)1jy;(Ml`0eg*|fhN+8BH$ zp(+=!@Bu6)0!UM~j*L#B)$RcrQi+>v8{s~={5mUrx%f#brOlT7%HK(Ed67_WaGrZ1nu(R9GUmO#y;Oqaw*gx(MbIf#*90ILC71#dgRRBqJdCCFBsjxF*QXwx$Xn3K6MaCZTUX;#gMFp%X-)L1`F=`jHcQh{qc-5M*XLL5?{rwW6fO1oV_8r;o)uZK}j zkdv&4jbP+6K@Ss5B?ziQ0Zi+f`e5JnY|lUXx=D{eczTFqGxql|uS$1Q9?wvSVm<_* z0&j5esc*&fIoILzFm6Z@@@sr-cmQ|~kTl~aOZ~o=MBTm+cUAToyJr}nugS|%%S0{NG9}hYAakzc7zUVk-H=zEp2U7JB?Ug$+YQixai}k&lsL=)quGns3rTHA-H`e0M(#7 z{YY6h%KE(!QJXR9_a9v)NEk*~(^ekaD($2SgmWcded4Vvh3RRnIr)dyy~A|GxN`{|<7Yhdhruyj}j;y})8V2aUfI}#Bu z!$%N23>3!>+pAY_}jYCO-(X0Wyr4SZqo_>=l$9LA?vNfqU_qf zQ9@E0h7Rd&=|;L!KpG?jBxH~V=>};~8YyWIX^`%cRB4bI1nCChTk|~o{ocKg{nvdT zcZ@UFTI)Q2b*^h4s`pOoOF}0{wLCGsHyEI^`BBAAF5^l6_E2K|L=+@@iUPYct(t!& z=YqGcM(%_01%$i+7!fHzZBac|-xA_AxYoX)A|_CB%=Dd^Pkp7r{?CL zX|*N$nn<0&$D|EdFeQSp$k%P|7jF`i-TumDdWKbeUN=ulW`;qa7zq7Wf8w`Bw}S4s zu|A9^ATj_J{qzjla=jB}c{G9F%_i{m2_}Nt#ZxXl1_~fV3`1Az#SQNA@bF7UFGM+>T_v-g#(I#NeUu3y7j#9)HioL!Ve3d72YY zy7Z*Ay0NbkX-)tsk&HO<;#tDybSWvwW|3z+_X5!2*WH9UpHj)6sDKA{PUuWPqw9#@ zc7VdY64+A!fy$>TUQ*Hie+u}1US6V61+e14haud}VhmLdWwgy`5u2a_O@Oa#Pe{32 zc?piVkE&7pmhXDco!^Rs#_?0haCyEAFr~V;Jvfi9W@G7*K;V8WA%?LI1al>St_NXH z3cW+r_3bp{UsW?r(T?gCvF%~Ebq}436TI>FDA15oY;mBPQ7W?^{Fz(t`nhy>fdJ6J zq@*PVMqGKw)D{94w@#$;>BzB66o3pYRlO@W5n3Ay;p-7~4_G^fIa?4~XN%Lp=dwP| zux~<|q0gtWT50}PoYEpN)8DZjMjqjxv-%#K|1r^it$(|iM=-6de*scb%)JyPEyRZk ziks10>|n36ABcZDcg|p91&gb>wKkd3g2?s)zmoPpfoOx}&5kbtngLtjNyDO@R9C{T+xpPt`n(y33;xkdsVX>Jp{KO#R{v zN}_wY>d$9wEF-CNYoVg%VI``u)-4+0&afVb8Jf+Vqd&rAm&w(zz zEliT{U$$&URa3UMF6}zuWH?=Q+*fXSX`!I3@Z@QKC@4NLs_a*L+Z2dEEFRrI3gDDo zdZPMy`4)vsSTFAyG{YndACU~q~U%VFPUFtkQI1pdn~T-#?qof zYrNg@+H>`mV@i(?9aJT)$1w7ru(D?U^1)xT!~n9fVzvK4*OqOMTu5|6tO5`r5d;Qk zbsK-1OzW=0w5^&?U;VS^Bj?*4K!z{W2x+jiq3>apG!wfq^Vd*+XH+Z_0)Yc9j7t)4 zqaedaY}1Dm=3lN9Gy$$6VHVzQG~+xXF`rW~!7S-Mk< zy%eyS+|~tZzkPC#uWqk=D8JXX6?mH>X|sVXFt9N87K+x*q9*xk3iQ#uH+ib28qr?J zu~HTTq3w{&ueSESri?Sp>f{u5gPV~^(t5xp|ntQe3xYrl2|w-q8MWg3aK+=T zu0@WMW}*5e0R?(~d&hYlvJda+oH+_1Jup2(Ct0x4J!EHvZ;E`4(`QZB)^9hu;QEn7l)V}=Qk{l_+U=C#+& zXEaj)x}T9;ILdJq?HB_+&SdDLh7v;I*J^Av2i7I!DlhMAi-Sewxq)<2XQ(E_K`*HG zLBcT?%Ri$gJv3}%v`;&`I3zf$AHnTzN~0OpaJN#nKOyD5mxo98wKK7l42$1y-0nU3 zwl@As*xPBLC8TPrR-jaZ*sB=SsE_=Ia%G@)hv6vQ|7QYWrF8!<)XRu{$FmcNScX4|e&nJ;+MD z@34U18BL4vHu#AJqQMysk-&+@Vvh$;CT^Dfko~RIJDIXmh-Swx$Md($?eu{t- zQRxDc(29?e{@7A((ePVI2~y`=CG{Z$szRg@Akj>?8OYXWK7SYR*qg;VHLYkL+pA$5 z5+q}3sU=9i$^*ph-wI#5F6V3#T8II|dF1Mpzc~yYj1%KC1 zUN{^3&O7;|e9-R?4Tj%;C(_YWxL`{kBWzDQ?05f>qInKs`2?ikzkd&4YKQ)E+(_tx z+4)5PB680ZUDQ$XNuFsWCZ+P8xair34uj8`%Tn7iw703V8nG9B^)fGMYR_nWH>Hec ze{rTIl|a-sE#mpH5L-X386(#-w*5)nBeT!lM|*ptPcWA&TRxr{p69~}3_XmR*|IsK z!HDG`fZ?JOJ6a$eln*7o52C2Tiwr&J*% z>%B`=pb#qoSksFkAleHqDr!{{Gh-G2EdYa}=EpDzmdY!DGQYjp&Bd^M4y1q^g9 z+b00rfu0?&q!NElt~T&Bw8l@oUEt{7&Q3`S@NQM)zLZV28&r_4=VpBOW5ye-B_#-|f@aX9Ss4JW zdPq6&R~FaZMMv+hL6@nYNyeUxelJmPK?NH1i%%*L@5x_jow*h$XOcPk%crsZyMJI2 zZ~|vK=w=`QQSQLcHXHPF=o7}tJEE*%YB=Ye8krdQer`JBHf{hQT$&Ug-5qHo#;=<|kN4CI10hH#%8A8&NaqW0pl9Ct#r*WrssG7dRIb>mZv~uhR;maXEt9;8AH0cI<4L^dqnV+{K z*4kW?w|q#8@7B&8NX`%5N}04+T8Fi{)1~^b%p67GOV!5cha>Pp0hFDil!J5(c2f1wRJ-L$}LkqtwWA zFo^2!N7+E0;EPWg-GvBrqJuw(;M?M2rhjbv>P5jG_=&3+E4$(N0HD30dO>)k1x9vm zlJXG5AB>YTgEs*Y7Jj)j)6UU~5tG$s)8>Tt|3mlz07)^}=`CA_CuY2ZLJGn>)w&;H zNq2Q2JkUKIi1+ze!wW#m4O|sBC3p8D)B$_K;jvIX1EI8!KrfK5nRvc4B@)drI;6lZ z$|xT@NSUgWELx<T!+P@R$>+@jsgtnN!=!%)yA|%4KnTn0W3?Gl2D99dB0eA`&4qeR=n#0l zrP6}Zi?Cv}nos}%<&8cYQX9uj$pUAX4m|J&9#IRBvXEp+9(~>fJMnW%Woky)X~5fd z8satMaEiE$z72ODKXC%=k1(obwdQo0*JL(Et#E%0^d!*fuD0ms`FB6xCN*og`fPK##@2Fd%mTtv& zVt$nIu7QkU2B`@hu2*T1YUH*!CJSW0RYwA=<~@$BP&fgoWy*+0ZhJ5D8#iZJ60^DGZp0?1M;u_s>0`wc~X=c}3GNvbPC43UBQM2#E zeK^&A=!bpmx#q3GfFa-8Bkq1kY<$y=n5h=A=Kuz9{vTFHSv@rlFz{`69{?_T09gQ_ zvFb@KIOBn>DIZ%@i$p`T_}f*E;JrFCz6uYi+_IVFZFK-KBDRhuLbCihjUbBG zyGm{<@%8kVnP*E)o0>eZmGco8Tr2~nGO%@sD zjc2Q?Gi(1|9R?gM3{OYsY13m@G}twm;oK`ts6Sl!ZOr$Y8jPk@7>nJYLRkJvD=KSFCMhn*HHEfI2uNeH<2fgb0-q9-J$7c6 z*qt@zlopDK$jnU?<9Hw1HrW@0cM8X1z#<|d9u?2(Pax(t-9>Xn0}mu8E!$%IKfMIV zZ{0~xpuzLa22}ibB;=X9D777}|Iko=p=C2(v(!4cz9UQg4c}+On&^tt488;-W1!eY zYWt%0Y3KI=5v*J^Rjsb9Wfq__YT&Koi%U(jgp(*5A&WD$1bG{Q^dpIPQQ$bcKeVrq zO&bjsL7_kh43l^5hiYsmTSaU(mtClKw1*&xB6PM{}z(@KqV_5WDw~3_V zPa?1Pv^5csjV&bI6#ujAapLZRd6~K3eC7R^1f;p)Tw27?>cu~cUi|KRdVj8>c+dFT zDaO8MphF;}4Yi@0H|zl5(tpAPKS3n`^{fK|@kQf|TUAG>`vJ}* zvMlhjTxWB3vj8*Br_xMDR0g(kRG1=nS@IM%%a20+dLh)WYNHn8UAHWC}yjb*#x&Sm0A4a%}Tt!UpfRHVK9 z095HO`0_kFByqpak70KA%OB=HuOm|9K$YA%C3$-VAc@B}%p7rViwk3gE>E&06ewWO zd4rS%VE=*&uE0^u1)x{AKsg5=bi^Q{#3h#^VNv>?lK$!QFAT#f{l zLQlb5u8V~L)zlZ4QSnX*FkOU|i=NmE23FIgNRy)g82AZL0_KLC5eP{^-*C6)Wo~M{ zUWopx3-P{e081LY&uJEVdh5KnE-JVPu5WQ%4CQv$($MNLTB}DJ?vj?ylJI>xi2s-K zw)9d-i3Q-nSRvE3vixBD*5u?EU{m`CrdH&f<3!#X%3Nss|O9A6x-t{Kbj*)Iz^^hs)5Nm81VgG8qJrK)X%ne3s1< zqs6-R+ZA+oKUwQ&0RWa5Wk&EP>B<9nhqBqrX7%@_X1oK=C^9`|e$_yPc|OFvw~E`Z zM+^n@u}&#u%#T{ze`4F0nr0u!^`Ui!c>CpPf==-qe zgP+aB!YoJwV!{2Kbu|T#{aSEY!|U{J(+jII<*|@*a!zN!0`yIa?64~QWs~I1wg~fl zQfuQeRJQb@#?IcP{&K8uc?bNFVL;a`2J!HQp&KCd0YpiJm=?hkWW2ubghuS1qN3gr zj?xQ;610L89*_&bRtIX1x(-|A!YkM>VlZ+qD#|-by!jfC2$_X_>K{F=Kc=+PK{Ws) zB7zPk`&U`oAN;$3+LAGu6H4EimoD`jc&UDP`O!3Vf4BGqQCjqRI;rgr2x?^mr?KcI zeQe*=kVmZyiVc{DhXHFY!4_|NSE*G6d^QfbgyviKu8WD?&$!^3nL(LAf_n%$K9e78 zi}zFQf9vHpGxILK_LamKH?H1z#j)K&Zj36(vhP_tYdFTjqWXXPb`1*DKT#+X<^!&r z>RHkYBd9J;uaeMp50Y5OgCo_QZcRb5u#V=4lWcx9_yX%EQ)&U^EN0x!3_$REolo$e z_|UQq(8)GwmVTvt2a_DzT7Cckn!Y7nlY$o^t$M*QkA>6LdGOI-2w4XiXn@&?Kh8&j z256%ffG2iXYY`5HYes1IjxJ@2x84zodL2kcW$&hP0^;R^3Q}nFlEA^u#O_?VkzL(+ zVsv;E+Y*cYo+(C;GNyC}H)@Yfl=nkz5d_kd;y78wU7c?cf%TSfll755#idR z|5t6?2H)8lcbXG8EFIyg$Mg)K1p&a2WQ1PxI264&`9(FM9#RC%7kq3s=c@yW3pUf} z2{7aZuB02hDh#xfacl#{@7}h|W@6#8VwxcgTvwJ^V__>EiBRS@K4JU>Xpc=cbL2^E z-7z}#dNPm2 zOI+n3_j}-Wn$a@Kh}K$`u?%JV=JULM!57%IavywgAi)#s9EW=4_BJyD?a`+nwh5F8 zosazcwC0xlZ4L)X)m?Op2Uq4$^;K}=<^vg}INGpd`0iu$?2*iA#)Wb@YJOJv%Ys=kc=-ExW9yJf!N2fQ9la2( z?SzaLs>oQ+4YQnvLb>YCp@Wiv;NHG`$yB!Dsa8?DzMo>LGbQs$MYd=W;f1f)Hbme2 z%#^b~QJ`6lVJ5zLtE#z)Nl#JVWrUu0OysR4r@kCBj`iA)QJ2y_KK8U~?0YsGBT4W%>i1cdjZWR&qj^(sgpoa`oXa$9A#J%75B-_~JXFI6_9Jcf#+=4KH}@w%h0V6Opy zV(AcwCceddfL)Se4-%HqP24}!!3=A@ZfZXn%(JQ%IEoyQQ3h{3d^y{Te9<_7kz)i# z&2D!R>RHh)-!({SNs*=H z4JPavyub8Ic^<}{s*4=F6dR1%?5H}2z>o@b+#Od8mbm=P0#Fk3+u3xLET6ZUvG1D; z(hXpf5zy={wZ=LA@_w|69s%Aph_0uvPk6**JWb9q9V15Afsy+G^auefFEsI~Hr1Ta zV&(&dg-75*+XnljSkJdFgsOR4TG#Oyc|9MDSIxxg1Fxxl7LSN%_C`*FkM)x*J+@Y# zp=XB-DRxfS$A-4?beIaA<*OE66%NEe8=yFG}-_XInv3;NYo9O2g9?O~>9lca;8zne3 zR37v3^Q*~0L5oc-LAb)IW6W(?xoD=+UgQ$9jF|h>QOPi@w+7SxDafe9AG7I8Y)_2KC7<@rhDX zX1vc{CJ(f7Ltqq+I+Ywb)HIJ0z{fK|Q7!}2dWPCbzw&&H0PiF%vaMe0!k3EFmW8@d zhmCW^b+4m)%=P4EQH2P?fxb+Tg6zyT9rDF!{L6z+UG9eh7LV`%`5HkKu!?buZVqBf zFFd3pVo!0FKF>QY)Fl@1%h6l6_;Bw%1lJjSzG_}-v_~FIV`C9th}dhM`MgNb;d34- zXP*%^Da)Fn<(?|~XHyGvbBnRei$f$?e4^K ztJ@bS7Pl4IUUy?D?5*~>-;Zj7WkcU^D9{hl8hqvRDL)s;Vm2 zGa{Sk;RkY=zr^4MIaJysHi}0p%@L0h#60c=7>aF~MpZ;jn<&BP_fR?VisD+p(BMEZ z%#FD2?H;YkMd-ROZSoAi&&i!-PWv0wd$(0=N^S5BTMNN60CIJy*0)C~6ayQ`?m6-? zOH0N|^jP%)Z`#&W)E4wSTwlHpptL&a_>KM$;N-*sUd`+WjlrR$I*MBjTn$COCW`)(crmz)|B@DtlclEug4 z=id?Ze}?HPkkcxtpw~bOGO$GEIknlExEtY)3k7(kycXQ$?!P>a$b(#G$M;>|I)l=g z%LzjSyo-{;e|cR!vgpG5_Wjk?`bI{sZshlw-SZZ&2STkIi=LR%%xt=tp;O5Px3#GA zUza_DN)e!5d}~*N_!vDP=N)W*JSR+ngns<2mnsSh?e^FHT6j|4!%f#~5o)fu)6w5*{Noz;|EZJ{pi&~9NM9K*Sf?BYw62~5!&99Sd5W2OR~eu9 ze82lxW&0a{O^~apcx=Sy_fyj68mbU=&se{czmk$~l%J9kdurrr(_1xA{I+gsGrFzNe?MoMHKj3WhMbX^sT$_*XlWd`(;454-^ z^3gFm9X4Y=Z##U#P$4c_ERNy)xIvQsP3v)-%=y7Jt9!j`V4Tc48BME*2LoV4oR z^eCQ2eWu7y7GEjls;I%&cp~Hz z!3;A&ebqsF$l_jhjj|D&VRQjX?r>HU)T3;3Ie-m<{l!Voayo0N#fMtPTeT>D>D5{X zzc6XR`OOU;ZHdSD{bIVMx@M6KZV5mO6Oy@HJL=n_i-zlO)5n~9f(m}guGbj1E zW+$kM9@7Dtt-)1qTJ@IN?WJQOJWs?I>OIM3z8+$B;9?WzFBt(Qzc2O%8|=VdOZ9~( z;u*WYDs;^{1M#{2@p{&eXPMWiw5#y{Tg_7*L#0!bEI%#oWlbTjeUaxfLYxW;2uvo8 zbAnHBFGIvg%b?o$`E=Hp$RWeJ`FjP5`gHKmz=dWQt3n+LLw=wl+|6wnEw^00m$Rp6 zza7TsZo?gP3!ap-axZ_m$e+> z3uQ&N=Z~IkiJCiM-=aumU_%+S-yD=F476T5gU-+(CXPwjcsh+0_h+eE$DMqkopVQ< z63w*fg+bNaoI!jxpb0$2$hlgq;?194a)Ur(gvr=K_7{rWIg1Xzu;-nTo4rk@rCJfj zqCMaz;fd2Tp}t|8Mw=;NYUG|aNig+oVJMHkUg;Sm6SCocuxRlx(emo z!_vZ7t>DX-l2)a- zHj}DI26NugDBWCEQ6uG!-&DlLru4kKV^&Z!-C1DN7BO-$5kTdpoQKeiJ!n38aY-8q z3KgZ~&iaU_tmA6)eL@FSv8VHm6`~>#P=tII%NZQUw;Xtn zrw>~dC@8f5a-`RJ{x%CpWzB>ex8vo@!sI|w?D$oW@5aq*jqGkS=v~#iC?2ir58Vc1 z!nx|_6n{U8C_Uu=Dprol04-5Ch|P!+?eurZ;N&FJHCo5x!FOwA-}9h01cis$h!&ed zXsu5q(1RMoHHMj*5U5SnL+Pk;?0_P{^bkIH1+NvD6bx_RGY zh*@2JD25v4&RDX7 zM$6SI3rn8KJK}w~3(h~r;P{hl{CmGzFL#NrZ{w(zU0mH9fYbwRf835|^azxJoH3fWI z8Y#3cBiuuaTv`ZhN3lYuz>wHY&empg)8lTLIYvN0I$bRSjQ?*;C5PeUc};47g3eer z**CU`9N%zj781}}e>Jt{VLhd!LCKFa&zU*(#v?D;ERPnxJc>cJqdhRt`Ej~6Jqa$8 z$(!BflU}|^!rvHmMU6b^&^xjpWQ{5_eWc{)eux;_e+P!;s|2j`sl;9h1 zY#kPHzULJo)uaeBuiPmFeRO;afpibcM?fgqp7x`$aL-{Tw%BSYvAl8JpbIO&EP?73k@qYF4!{`zc6{UUbxda(&^%cE?U8Cs1Alc#>l>Tf6S1S34ZA-EN9M`$ zqHVrn=$G(E82$+rvvS!)19iSLmRV12kkaBG7iQL?@_GMOD&>#)J^NVFX2R@iIHCM_ zk`O6;-8YbF%m)DJ=xEFgdMtVrP)wvK7itn+67fO@_a&j!ew|mu;uFbXo#^Ui3CiHK ze&mW$YO1upJ^3-5Iy?JP>}B|tDD1ClQI_#Tesy_x_dX2>_MgsO}KM>XreJ= z_{&}nOB$cfyj`3&`3iXjrr8hq1gBQWnw#aK%{-u4+`-M&r?UVTH0$zJE{fOC{=Zyo z6i%~;;k6eXp&t~bWc$H$6nDe0>*?Ftyd)qE@W)lm?(#YOMz=qX#?b*-7nAV~&-Cn} z;=_?x?V{k{%^HAkC@2O5nCR_$mXl11H7|kyKwt|sfDVQx9sdkE%2N1|Mfbl%F8jWH zf4T@uyvb#hE00}Ne93mcN+wGv@ne$<4HRYS8_P*C*_F4f92)2`#2FR^4lz86V*xS# z0g}KSevi|^J2_=J;^*O7S-NS4*B~K*C2g@kGfU=kb{3&Pkxd7hT5%xf_UJ|rlf~~h zC43%^mL}tO;6wsLHZcN7FEo3*V@6Bf`%lBFq7{id`d2vIda&rx>*kCwbg8=ZQd5^m z;T(|7txc0irhYEWe7Q_E!aB}LqluzTGoJ9g7(65i{M`3Xh)=zC2VXw|qDNvXfS+91 z;?Ivhqj~OtUB`m+cZ_MFt=j(;Z(BO?GLsfMejDifd@z)Mjh$O4L-uM^Q*Wi(I5Ih@mBuk789;x!+b%~jqA@)%%jh0a}WsQCn-NaKZ3}=DRm{vteP)+$daiLWzBY)?>9Xn zcNQh4L8@8teMgS|t5)g4;g{p&avH}y_lJc_cJWE9wK1Fq`V2M(amq3tY=2osSg?LL zfyZ`3c6^jIOyXZ~WG*bV$K#@kNat561Wrrq^5K}k2JaCW9H;hQm#7RVRT;KA9z4O< zr#nhusonox1cnWnbp%nlg~`8XEh`Jp&Zdo{SfSfn9K0NeeI|+& zV?f)(_h7*oJO083U4Vk>ePUu%TipK%^Q^RlMQP_VKH)Q-z6$SW8aHnxZ0g`B+P@qq z9Jk4Q@qFNVG@H0Wv>D}fASE`(v~S+f0V6Aaxv4T%qX2gv%ww~og~A;4$&J7^0dP12 zQ(4KtLWd?uT*k$Ee!s+S`*M@4`@G*Qr_CMmc+n+tZ7ewX!-sjAlzcUy2>ytywyv!Y zGl~$n3bf)S8P5Eu>LMR)m+BdE4+%gSyOu5)jl_o9B=<5FyWeaI<%kATkkzh{&dYKd zmi2wdHLZvCJ#T3fEw=FDovYoA_zW2XWZ<<9PR4+5liKeF>M-NPNKni-bC{#G`8rHs zHP2Z2)?s+ybsjfBWbJs21%VVNXrpdVq^E+7+xH76ICaqUpOzU2+ii8skyk|% zuP2wB+5!{?&L4o%5wsu9KMUJB8>rN1H&s?pv>ocPg-g95;t+b3+YmpiD+(sVlOop(>mo4uN+SlP&=W4{7B1`fx*GS%=*mg^P9my;X0uGlsl=4UOW zp>ZCW|J@Pw+X?+N;Olpc6_eHFBQ!earYMDrS#R^)wBU3-o3;r(A{0DE!UO4(XJvB5 z$79nTqTatFbteyi%+b3Ls65@`X&IkePe5@VYYbVwdRp*UP?0%uXUhk$-Os7WXtWlmp}$ZW8iP zYVC86;MeM@zvU41o?}|3THYtmP-vp;A3g-$4=$3#><2s=2zWYjw_YXy$h-UsCh_`p z@ohPsijXWHY5if~+JsQ#>sKeC=b&{rsRbL6tdWlMI*!i>k`dBSvFa+7roPXLW}SKf zE2-5qs>6{UFVH}}Iv-3xvvm>1iX%Wjcm`;p%oX(8w(nShrYgUeI9+&za?y_|)EVD( zM|iwwsx~G+H~4ZPNgoD}CFv#v>S%#hk;VL44SNS%CWuaRyMFY_Qojrp321OOyOGu9 zv!xOj)KUXgqP1EBt>A7-ts|~BVP-Up|F9uqzl%fX8BW^{XCMC2!3LkU_Ck#qn<5*a zSU9BO@W(Qi@fO&RSrX8WoPB*?!P$IR7*PBbGcNk67e_b&V_hVQ)E3WypVX|8n3Sl3 zl43oMYP4fdAsF}fegr1V?K8C37>jL>ex->S0;sXTd1Zp(rX`F`Ck?@_DiS zZ|wMnddYL=Sks-n8B$uCyizXX5TMyp*i~j4gB^m9t$5bb+zxT%RVYCd7VJHh{Dop( zXh6>(zpP0}&$SY`9hL8Q7kjInmn{w%(ecod-ubhMbNHv%K8UVGN<{X5vH(|7L$=v} zk4a3Q-0O6aJf)NXdm~TWkTZ^wj_U*&i$75~Fw(Z~BCu5J89}E-5>MEW6?lAr)e|t# zx01rM^Mda;FwXo+sqg{IW?+1^OURFZo0P8z)HXsQo;4~(j!9Le7q@d{lJ>A3VxpHe z;x>=_L$6N+M*9VRPjMb_{R!_^kW;=V-1@!?Mf@zF;JN%UXmB|gO(2(kl~FPKBwR%S z4^8}GW{8*ccRtSdy=>6xIj3L6Nbq+K?A`a&sR~Yfp22lSY_Rbx*#WU@jR`uAZ?h|! z(^-K-T4R6K;+80&+TKP=*~Tmqrb0Q5VzIG=8e_{7&;Ks0ysXEyUON^f7x7H~&mSd= zhY(`e0qW#9r8r{)5l9V}AA_&6y8TisX5Y^NXX1^oewqCEd%X&UvBC342{ExT1MKLq z$d8ZfIUOWds@i2Sknod((F+AEI$w^o;ZTNo(_5Eng=JUYCR$x?q=LUC=*`N(hRV@M zpNZ4VQb0=*D8UUEpp!8SgCoJ`Fo3RKM$gVM8AJa<1QNt@^Oiy=j`$bTB3*5Ke2f9 zE6_>>h7ju8e-y`6)%DQAF??d_YQS;ZS-?+Lv(np6;4AqO7Z1`LVC3S#fnh_ZH*Ag7 zl#|m6#RUV0f?kv%m>ep&%o^VLw+0J}gqb9wJ9-0orY!B|sP$=QPo8FDNcnzpP5Q?dYakA_Fj zcicWHzI!OFZ&bYRcvb05IbV@@BUD)cPWkZfUE~ry_UrSoXMOz6Kg36BpJ68Fjm}|3 ze`73`|511N?~;NJH_`U%4=vlnXmGjB_9XW~G^spJ(@p+Li|=9b_M$Ea$&tIaBA&NM zi=DU9XRWB|I+aIJ5sVBRFHZL8Bz^H@nqMUfFvqF}aWmjkCeR>I{;&ID^du}FvT$eb zgTBguS6G6n8KGMRU+W3y)1|oth*~A3$nEWXAQ$Sztxu5hbtNf zhVXoy$y;JR2~XHa{gDru^q>xMGQbZ5uQ31?91dl%0SAISb&O^XF7ezvyNb6Q0?aE$bg-4GLd^aj*G zc`gv}h*4D?-x97cMI92Z{Z^Qu&i~1QEWol#rF1~-{X$1|sS%pS{p%+@`zzt+r}qlL z2FikY!8VAgCA?#N%@`~ZPj&<48u&tfJ19U^U>+S7m0W3zqvZW6nvPl@j9wv51At9I zamfKoqxFz9z-@d9CR~3 z*TM<5Qf_f>$UxH?e8ZzP#0i{c@&O=EggT&imjXggE>(a5TISO+eiCdvAW$gJ$NqMQ z&xwtj)Q9Yz^a91cr~L+Br=senB#u0KOZ3b6tLWW0BPvN2lgfdfRM>RAA~9kwEwQ-G zg_zyt_k3y{<9l@=;7*OW%3kq{-{voUnjqzkw!&OcigAY2VH z)jWKZb&+t#$qjNEWui^)-of3o*=g{a-o-h@YCB!`h~t?a;Hky?dO`v1%u`ko{fPEf za*B~d99kwzMrCgx<*GXfu1O~TC`Yp&}HF+U@-9?PT-Bn^#itVb5fVRE#re}H?G75e@t2d&{8sIUBzp(<9_#M1eJEfEP* zH*hlT@V`tnk(3u`@PHw+c+3e4FMV+rAI;#JWU{bN!$woOIK=Z_+|T;zm=5`5Y?*g zAUY0TkNbMpzc1E*bl28xt$WPW!qlxnybJt=YxsN64Adh8SQcEQy|7$bdb}0tX z;6WtB=bA&-Jxr>V09<_f{XgVO8o3q)hZ9b-FSLt&9q+Ka_V9CZ;R~8n97Yck!h?TW zZkP^iWN#7o_@GnPL-Xo7GL9I_sDQ$fLMZN2xNRuY*sU5i|geSxMf8VP9zf z`8R@VJ&tt8A4^o6_p8=NS>jlxGS@|K^6h%C(0cn&A>-9 zNYfL#q2NlCDA_t>s)A#2J>D57_%wbh9`M&lI60!Yb=UkQf617Wkbv#U693M--2x%< z4}1VjFGGuNh)qyFy53kmV!vGkcjk-iVXZ~se#0pGC#>c8B;cV>^Ryp3Cdz}giB9TjpQl&fb^_)`xRzW99t zLOLR2{0N$+;u8-4x1SL?;LJtH!p}|tq=6%0w*G?rX2VLEAB+#jtJlun{oIc+-u(nG zQ318SXe)ZYOx+Ygpnz3tk_a5y=>C2MN5>`#deQ-?_wL}3!=0h@hu@0(Pw}9n;>rF0 zShW@NCrq1cOblwx@^qC<7Hgd)M8(9TV?6-Jl~Z;g{Qk2n1fiDs?n}SXD{}c{*sTPa z;ny-TsUJP<*uTsllLJ)Io4ydCNOT#w*&NQy8n=7l+k?9_fb$faxCT5%oCcC9v5$=6 zO=pBO4r3O_xG+rmLFQ(_av1JT4}%@ahr*I3CyNN)b1JV zxeP$tG*nS#4_!8Cg!Sl}f1Z;qH(L$$Y)$WVUo6-JIT=+yDiPp}>$`V5&3iVzdmb+! z5DcqXmi;EtcVR;8d*VLkI=53{Is0BNwM~$$q6~#TL&+7*Pf2=j^?uho8v=i|sKZ7` zqTqHE-Z=zVq>yxbBQZzDb)K&9W_`;sQ0LIXG@_g879FR*SZK=Gu0BHF7&Je|ABvwC znL)PrtsWP9ynWrh6ugg996$b1t9EF-#91>Jou40YUFRWpXfv0gDn|ZaXq;VR{-{vykUvMdP zlxWDK+-M8qu5-@{fw^YtBNejVtdS{i++81S&QpaAQA>Fu6GvS<6HX2!j-P0cBx9K{ zXWLbn#B{ul8x_*Q$Ug-~Z7p+Isp~p9YAs*CUG{JVZzcNdPIPaAl>EKw64_ zGmFyyvfi`ZlWV4Ufj}0Y7j{1T3%2fZz))4=1?a=cb?(>)~-FO z!%@XVdcwq|H+Kd6&pOrc!p(@sv6OT~T4>^gkpRM6R3uTT<5*7Sq*VceKbd~LA= zZFw`xFuHi3Kf=Gui;Hb^=@b5P{0bAu`SAjRyi{-ZZ5t@df+nWuLY?+ql3B}GPqxpV zvMK2`Ts%9ze??Dst_m=L^D&mebmMlORC|T~ReV`{ODc(;USrTFcKZIO+ZF}E0e3GV z{b#%?*pWF*-wtV)&wa(jdHLd$IP@x9VMdUX*51b~rL6s9`SH^*t%f4SKEJF^m(Buo zM+DYwL7`FkI1e!`80sIe-S{w(#rK7`xN2Nk#pe;2zT**3%&n#r3NHV~q;)_|JDl5B z_g7}*1vf*nO_$#A!-FTOL-<&FWt^ak%lP3}buP~>y%4GZnCC(1^RUSmAnz5sjBFxY&5!-#vY-lpSv5ZP7axVnQGw=hA7~f7~7ov-KP6${l8`49u~=9A251JY@)1 zQPu*k!|GH{uw?4J+-KpKU79Yi>>GqnE0vej)YM3YR#)clGX5gJibx^1c`%DUclsZ~ zfKM}Y80M#%mi$z5xuH1lR0+_<4iWpC03a$-m2`8CJ`tSV^rh{7Xd(cFASSUyuVNbX zPIMF1sX-+)ZEuk<2RnTb0VJeJRi&ppEqovR&;*cFOfbgx7;P1>IVob}M5a1`9G(os zNe|t;nM)remDmKlv7O|oABz7Ei)Cg;6BZU8-z3@_jFG%xUe%z&ABb6&so*QFIqPqj zJNb<1ZA2EXNFMZkCy%l0$aKxsz7^*}9UT}zD^c1pt1PKNiUtN6BH#ALC))I_vs2~Q z{oXFyvh4mpOGQ{+BdKw!T%N^x73;e@*xIPgD!Wi|1*IW-aYj1A^R@AR!Il6CqD?sj z5!LWVge!-_eBE=dsThD8N1x-8K;>x zA4J(i19v$n7e2FC+wZs9dCS#mRo7XauNB#XKfmA*K62%-%eD05!`fGhXE|Lykj9K^ zTcWWZi?EOtalRO447Cy>;9#QjjxFq-gTAe5G^`A8UN`SSv5if^qPqTcS!pQ)2Mg(s z++3!Zd_$WxRzr?RWeA~sd@sn{JlSF}SJ}uDPMtiRSr@gZ`2w07CLUfXN-p2lhZPF7 z2zed-%A}GBCxwqIv=a6Hdjkj7tP9nKvo`=jAT9YGg%3dBNYlmtw3j+=3ko2p*{u)T z6p@-AVp@rnUzjBaovt$CWQ(T$sCs>`zt=+1Ta~d@?R577hu0L=4{h#NUh@P28bj1Dyp#C;TPy z$Rf#&1IUNthlek%bfU|TX@LVwhz*;HIw|QQe!8=qzK4kixwIM~*%tz0^Gvo$#}*vWL5!ExFMa8nQ-s`ZbQ1hUF~J)OwMxUH?>FYEm(@O0A84~)+xkCby=7R`-4`{C z1xSa4q#yzk4&9-oNQtz-0MgRZE!`j?-Q09{gEZ2JbTdfDAPocaobi4C*Yn}|>ZS1W z#NKPKwe~(BCyJoiy(97S^CJ&rV2GTZTgRTU;T#M|Khf-6a@`8zR=VTU$nd zMs5Mapv*_04rCdKIg4r@ih75UiUzIT#hDF%diSPa#%MlAom|v9W83DOmU1zd7_fvu z&2(kSYYfbmpp<>b&LcwPLL){<(jBScO7O{k<9!yT-`K`UEd(wysdOj=eZ##SAXsIV zogv_ptiosoPW$R+TX4>&kc0cmZ{wPIv#N+Sj1L4{7p*9C9%p|j;>cNnC>R9+r;k_1 zirs3DcD}uKXlS@>#R}sm;Ac{Rk&b5KgYV~vlMiTo>PM#n&_#Q=a13P8@U ziI~~Duid9QKf8XGiU#y;!@o~F0T+bBMHs#1Hqitsf}?N}LjasiB@&w+Sk!DMfFfUk zQuHApgp&H99bUA%wTD5x$bFe=jUkct?2LBLz~$%2*TMImAOGdOxmdr~Q7fBQy}}(W z-$OZ7(XverOg(SjHa3p#uu%!ZSlw?z-W5q@Bi3mSi6tVU!HsJE{UrZr6&&*W50a-5 z0a@;OU)~q>98~C>jM0El!ZpaehjMt9-9$_G7QQcj2t1jbgCSZqr~}{1e>3n@9~4k; z<6~+U_4Fz~^*uD-w@U7hii+$8+KEbs7i3@5{bTj>DlVcYL_t7O>E7D96Yx4tVVFVL zkR0263+_~5U@+OZ3{?aZIWf;(DiJW7QNo$zQjk% zQdTsa@71%&%@+m74CF4gqW3at5k3Dg00t--fa2WAouoxql(!rFySJ(8Htcrd_NWew zbRmd}%r918N&(%6ue1?B-H%A(q8w?#?K*$ZpG0+(KnU)~0Y)^Z)7rb=mNUd4(I@U_ zzdoja#OZ;sn@H~pt!=-l|F%uOa6wD5l%^N~{C7W6Umv$XFr1DCo>7AG3Ai|wJ60CQ zUCe0EGGpU^06Ez>U?)+Q@XAmn-UdMZ3mS2gZ;I2UOZ6BKXd5AQu<6)id2!xyj68{1 zot(T^4n7qs>AU2MZE^q2xB}hP8)Y3NeDv1XO1|8hZYG~zGKN3L`wo6zDx__&*t6l ztgo}*1Ku}0jF^-#P%M|pXz!PHtQE%3kQHnn6#W#Z)#UKUfGC*Yljj%K@kz4vBeP%J zETiJX)%_1U@Gh9uBru+_vTF?x|+Wo7NZM@?ip&~UF z#P7z8EKWj|iC8Bb{`|Cz!`W(A^f+{#FFyd!yf=gE@A0-pHnWn9=4oIDX_+C#39!wf z?B8Dfvl$8mWSL((5=v3F;F$Q~^5CvTaT%^~U~>@zLRZ(Z$Yf1{KwcPd$vy^-l5Th8 zFxxUVlHYvJ0W&J?{LxrV%P~q^1kit*`*XF*ML3F7toI5ATxl|+1zeI%CpEvzOx}g2 zdf(Lk=+CKR|G7!cM4>aUYQd)ufRF^@)mO3fg|Dzeqn12S1_LznY`5Vka7k8)E1DL3 z+ghAiu5@%~qw8&bp%w^-vyBeoyY&aYz*)^X$f1ab&;PsVW3q*UM2NkK$yi;H{e3a- z9r51&4(Fe$g<=KopO}6(`lP_{E|EEGcdCRNOKt#3!mftK=nWt(P$b$eO9RSFWKlO}WMZuZ1_&9@4%NLW8q8s{NlztUPZ}!s zbNFPT-4kz7FVK35E+9`n@zvUTU23JnmyzuSZTH=udrl3x_mQF)ucITPM@P3AAlU^T z$+%6tq1;k39uu8=XPs=cns5{b@EUscjE+`?Ss-G61$QYZ(v0F_w3}&r+=ro9gDsrV z$ubLg5?mWikh=mITgQt?UZu2-2viqYv!-$g=yw{{Z+i?9LihGPQSg6tN+Eo%Kh;-o z&qkcXGc^D@W^@swy1kHB7NGq!8t~mS8R;su@4XS{TU7b-wj@(OiwNKJ8sZsj>J%M_c3Tod4JuKL#xC9cXSEldqF~nOqYPaV!#0g0+afF z5$@jbCsKe)W@tmFlX6dREnqR;)IAQ29*h z9kK;6Yz(<($Tnod?A~mAXo0K=;GyV1;Qsn$BebZywssg6A0JHyi2c9AwV&DwsaE$>#o`Clj1g6_07 z8UJHR_gtq*^lFbrdQH?R1u4-EF#F&(Yk=4%-zx}wI~R=h=(HpGGkILrLvnV9K=Owm`eEfZwsv_U|GaH@N=Op8Cnh26}_}E(*I4&7qqVe5py6{Th|?!k*hvW z)1sVzf44@gcO8>}Lz$h@12&uR#~e2K4Y>ITNQlE9*O2C#jM1s36-)wS_3sLm-rp8L zsEq+VU{fZKGxw#H6_t#ey_NIoCC%+PCd+37jQ_J=q9BL9Yvui)7hq8@L-yXw@9&0_ z;gq`?Mk_IVe6MI!$;zcB%O9+IoH3qU_Ef90=@C8p`*Q7E z!H1E&88;n#PAm$Fz_|-@=_*Q4syDV50Z|ud%=t4R5mBA(MrQCIM^D=!ckH|&^k~1Z zegT7&ZnJ&=DrZrV(8gFQ_KR@R7!K~q4=g0idO6HOcfX(Tv5*{!yP0y9yhnK=9hjne zzUt3+FP-g;Ktgv!z0Zjr^egt}>tTG0A8v;=WQ$aF!VNoTF%g(U$c*_en}l?XfKjK2ikKJ-%yNRkCxpa-NvRM=?w zznFZbKP4aoV`DQ$_m!)k00FhOXp#;+Br?1oM34!PM;4oHFGI0{-ZKjf7|QzR`iqVp z&71G?VA2s)Zrm4bgOKd$vu?Qkch((dkc1y!Pl32O>Hvm>*q4!gc$TKhG60Jyq=%V{ zE!S}vzRetKFaJ;kmtWWvsI%q;Rx$cU*XtC}5>mQcjSU!oLtu>>-(x?_W;GlDPH^Bw zdraYQ(`nQS=Z`i*k6c@e+sap>lcW$9<|)?09YUsjCDzf*wrEQk)`wtvh>RHl4!Uq9 zn~d*paSXxRxOlN*xH2ydI(+EVSmbr3QWz5pgv+TH(d*{F_}~Y88~$1JnqTTV`9xX& z%FT;;Xm4Ba1z_q60f~e{dWCA|9;yYgCQI|T0fNLbuZxBeeceELiu0ii@!BK(XL@$P zjE?9^+Q9};r2c3e=9!H}Fgqe;{o4 z;QL^&6cX|CSdaAo zEjVwgdqYCQ``h}x8Ar11?mV}big=w%ll6W7I}26oxU6;>Uxow2)>n&gjqEwd z1N+;<2l-WkQIZ9jDeD{cQ|3#xcT6SBRMZFdw{Q)B0OEIe^LT1CHA|C4=TNbR!IXU~ z%ZII7bQ=vA$d;K6y7wjc>d)aPx%bn_Gl9b76Gav9DG=LW*Y7)kH~C6C;ktThRgTw< zZ0U3(_Eabj#=JVK(TI2p=p=AvV63ucbOg0Oa11{7YOa+Ay^)4y^8Co@F3?Lz8o7&N z0)S-#?A+WCKkz=tcMU5X4UV+#F8?$u-g1HFc*a@3XiKwYEIh{NDBIty=*WviO zgz*gJKG_%c4pIrS0F8WFmDjfW0(Lk?=;u;^5!%@|W}WB*+RlA2ri4o5)y@4|kfHs& z+sFCcI_CdVESQljQS_DQoM3B=XoLIsi*LT_{gdjF-0y5Z7_@TjBuSYWgnmH{4ivx8 z?S?;UXi|D|o2EvY7W&@iodtZ5OCsb?9E`|C(yJarl=tNt$q;s-6)%`_lEW<=DyLrb z9$l7?9o4X!U2oVRA;kuImlUXZ$y3S344Oqm0dKsifWTcy9D7r=zQPrL12wQ?Ms>JE zJ&;{Hu1Oq*5ucoZPFJwBNm-m`5WP5Kjqx;H0OmL@BGhm!HTfVG-^w_+8om`C)3M%aI=DAW<5z zh~+5RTxZ5Y$D%My_baoFm^uDk;Z!{)78Vg<0s*K&gbaRvJrroN=KaWb&bKpM0a^%v zL8iCJx}?UD*rX6J8r>kC9?u*}t{v`niQEApdc1VuSww0RCa5t`{|EY7?KB`5f#%H@ zgMFv>mmjUEzs}0yoMN5)t83YNA`+F+76ROd27flwffH2$mI$Cki^fRzZxw%Oe(w@! z(|sG-1>c{~(SJ-oTu2sKTCy{TeW1GXc)F-pLwS20KrmU;b6=EoE7Pp`2$6eq%t?1o zW%cT9%#~NyGAAWyu`+!QTJVRd_;EnKm09}yJ<{D8Wk9u=q%w0Zl?KfalDUQr=?vUh zkAkNa_h1{-Q>eSI#!}zn4$e97jlQqYQ!ZVo$9VbjuPu&g8So-KJ`}A4hKsrKtY$mK z+5INa41oV<8|RDV29l8g;N<=vRjSFhbziZ?@R_ebN4fK#dXZtAhp9<$vqUE)jB710K!LUrZeJk6!;# z<9*I*AD7zODnih%90|Y*M0P!w(XhwO9W5H zdQLn!1fCcZWIjNnF6bFbtX2M=RB-?5i;>-h5}aPxENzP-NgQr;1V( z9{6fP&{O(;s3b>w|Bpun0N7fbM)zOowgkS!)>s9-%K69o?Rc**)?g?b4MMDu3~O_! zn@5bZj8Bmg5DWJVwz6T>tm97ZqOVpOpPNU}-He5bfEH1(MxO=|e_Sb_bcuMQm@JD+ zv^Yddu}0Nmu+na5Xy~lh#*;&l)9$?=E+{jff)y1|{>0hV8md$}p}D@{4tyJb?PTvf zn^aDM!wU8C=nq(#0*nV!uuo52(L{jz#}11Tk|Kf@r8>8M9LL1APDo!QA}BfmJROeK zOE|!-A>wg`<=dHUAxjr1>nVW#lJC_$szhg=k0_p}v57u7m=)XvxMGIxKqgaz@y(!i z5oig(v)1w(@xTL97dn8WWQ^wygoRa)15$9-aUS^W7--jkr$Ea45%+Y4Yh_ts% zCihK2g4p)&U*Kss0tw^36l_PDr^7jWPR*KFBrQraEIPOu;$|I=Ndzy8tgYUI#2$|r zysAo2$osIi#Wylh`i6Q~zwR+|UzqJuVGAOssMrfU1V&>qs^k+FWVN3^(!P6q!9lcR zulrHiUyzlLTm;wy9tSI3VcBq*jRw$EYyvkC@CUvF--#jj^J6K(12w@D5130%E=MS* zd%;YCwVlmD5k9(rBuc>*_P;w~6sI-K@f!tfag|k*t7n$^1r3A}b+&h^6;_V5isp6zjL zAc%n1K)6mWrQFMEDs{cK-nb3t=(joO+dcUCxfZ-g47${{nhjYgoOb==+O3p((7xuM zeO~VoXPwBEl;4y!B9aJs@eNg8Dds*UJvb)pJl-FZaLEBueAP41FLsJ-5>>L%iv&J4 zuINmlWOwnVPE;D%Qi&a~F4R>2DTdb3ep{N88&3iRkLi{1LkD_Cq#Ix@2Qv8+K@>7- zu{$75aoh<8ZUOq2+Cx0fK)|oG@8n@i5}^Db|RExdF(G}l4; zK;)7m!Ofn97jb+0G>{>HTpq0Sa5BezVU6K8J4dtpO;|X1y(q&zfU0ufeWzcQRVvxi zx$b^_0n$=yh^bVt6Cx59nVKbPcvNP~1w!8{JjjT`e2og$6SHBf$Ue9#4i50m_S)Vy zudN2X0Ap|1{_RER#)mBIv)-KanUl_l^6q=Dv7P{n3V7)ah2OUZ-I6$+nE`%I>hJKr zxR>HW8&SngN-x3{=H}T2)o8A^6-P}`h+qPI?${m4bbg+@$;V|IU^MzrwSGixKAz1F zQt5z*ckcX@oz>90)15_hKEB$tbOH%9H?r;Ik^jti!tZ|Kh>Y!NJDsfEd!1L`o!cLc zT7o1$iOy{GxNCtXr#c4yI8a{zeWh@woN3x-$v^(dkUk!}nKbqvvex4D;a*EjT(f5X z!NOP2j_2E30R2v3nJ^3ny*>Cl(gMFSK{I97>2KASxod5zavpucmLWviaUa|NP_JsC!zyL@oqA21~76}C%7f{e%*~?@AT7*#+~fpp*XT#i?9*QqgGacfaQ>69DSYGX$0>=;!e&2lY7wlu3vX* zLJsh*=2tzYlX?Z53)q6#x3^=*MIY(N5_lu$YzN(yUp z7Ok>Is(?We`Nwk8b+;<6HI3Ayu8hs&uqhBQnDuvsL#ydZf%5gKCw^|5!+;^9-B^hK z9Vx#9W)YK?NgXiIB9Pb+5-1WNt>qZ=62ps&ToR%9hWxb8qxUJ)1qEX_R-sxQw_t!-LLOcUq|;;5Z_4vXbvh~yZ;X&VpE{H zah?M~CZ5m(I8@44njq#1XYXoTmvon!k>u>4tK{cN!t+;Rz83pn{z#?OwQFgH=wr|c zXG)PuAW<6lf^0kUfZB}U2-&fEc0}G6gooAY`X+txaTO_GiVVv>3)GuD3c9#@3K)RR z83Democz(7krZgKQb@^WxhR|O0gD4c0T=v4UjQNL5}XP0~7_?^QEG4LNvOm3ov zVYwpqUrf#dvFEnAzPoCK^?ipaNhgv9lP&;}3BKUN<@?hUcT=k(|sSY zPr+%#K-+dIQkcnIn6&`5ZUWYX?rz+g{^%d0-yKx)r8qZ_R{{f2gB4JeGmvq>jqub4 z8UYyd5u2qI>vzO!*k7Vvrj}s(ex#?ZUwNW==Dk8%+e6L>Wna({93-vUXK>ppuCkrl z`tSJh)&$+Zg?ViUy$at_t&_7FlW3TF_FB!sRU(8co?V*?q<~()$f1VyxFIMnXmX^Z z^^b4#u?c8i?rX8dI-PxX?d<)Rkb;#Z3MS>^2`K?9?Ru&<+if!MW89Vrwnt!4%s1{j#rL2Q*^nh9a3+Sg=AGRov7bc4|uh zvCk@GW5No95k8DB8X!u}slLds9bX!DSQZyDm;c2$k{)$>aqIc%*GAf2`-jh|dyCl5 zk0>HYPRz2APNJ@yK_PD|U$c#iQm^dTNW0*oSqW-Olvt$GVG7R84U`zNUJ%8&R?SRmViy>;kb+1w6_;%ZvFRPdVh*| z{q@V|oP1VuYiG5g<1BG{PA1M<09-M~V+^JVvpL@LI4GiJN_5I?X@% zDoG_4CMJE2&R6)cb<`e~kGqE*?Q?l47vZ}3LgeyPib`a#i0|%Kj+|tz&BX5#2aU1? zHR}R;^OT^o)V5Tg<;d;@Ry`RFKB)Vi$(#_<|^Y(VZ8YC6*}(^gP6Y9@)e(9!o;?-Rolou)He#=OS!st_WTqtIn^6M(|ya znm`D-^c6b(-*U309mn;4eT|!!lq*z%_E-g@?k?%g7!8^wJjKOpH+ih%Tca_TyTQF( z!8Q7Gn_O&&Q?CdgPX-A^I@J2dc+_RTc9HepTRzF@Psz_9nk7y9R^`(%+xszuxso}| z&#+ft zk2cW_%R_4i?rnI~6^)C^bMNgv@TmI6Wixtxpk5eTliUG)QN_f*MG&#bE86x@FufEj zQc+6kPYL^@W{utDI2iAQNA{jy#B7b`_BveZNfv$AND_}Tj`#Kc1IL|l4Ohg;&Qo$^ zpGV`BZ-13rzjzmHMq~3m@wMKv zHAq&x{`Sw5;F4hLk}Z#7ch{eeoFlzl_?%y0mu$PPy*4)D^4P=GV!xXsI3=Kuk)HnO zp}Q{>8r@Vf6Q1Fq)q5CNj*rz@6vreT#E|pxbu7baQ!{qLNUE=y%nH7dT_v0^p&T0C zE-7m`p9YCBtHO%bPX#xuZ!i31xMukqXhyH{Q@5iEy_;`wdrS3M;5416^3^Teb<5gc z7>%v%{8Y7nb>KHX>jW0}FCtEh1IAwad0NZdik`kW={010$-V)@J+z{1?x{qgu*NC+ ztd)kbiAgAqyi}dkx6ZE<-9ZLZ{8y6irEBJ`T#=J*+uV)}q!qfV>|4?^53AV>;XlNn z>2YzX!TR1hM+FhB4c;{_Cu7ft4cXuihklN9$L~0BY`4oEZ=H7p_9ZYpc3BcZV{Olf zT);RZX`g;XNT{xB{c?OL#sBb&uK?P|`6@4_d$X*w`9mGfj1B^tUzq4Kdt_t{cf*xo zH*-f>)+L)=uuM6*-Z)5`uW-LexX(Ea0Zj*Aqtk2KiY?INrRx>cRB`gfqwbX^^qzD% zJMBw^{3H*X_L=ZC4s~Gk780#s@+FV=9;xE-?Y;~AZ%s6P7ZoE9A0gq@D}uWe_Znmq zll{BCU$rOqKap`h47P(f(i7!?Uwi4ixo~+DU`9Ym@>1k(I=#hi$X|K&>gD7&_jdQg zDLuWZ$nax#rSnZ{Wr!4M8B z8-KLnD^D{GSKFdpMcaN5H{dtZpmrgfAAj{N27S)w@_J-~a|6EnghNU`R(kMZyyI-m zOiRXN`kcQ>5)rPZr?*;Swxrk4Np*lG(sUJ)#V~GzBl{{S?=}#Q_@{>xb9;0>D-gYx zo^NX!rrork@x3h%@43_xHzA${*P@ztZ{ngnn8WDsz5vxH$k#fndCZkjPi)l;pZhU{ zYyV=D&%-aihli871s*wM`+$7ovxKaNTU2Cg=U#Wg zXa&8oo@b^9U}PqT_{#=DJ8%Th+i3Xpe9}?LD&MUQ*=WAkmgciu_B^;jvnK{t0AJ-M zJ|4iXSa%#01nV!M_%GZbHbiS%TJy$drKC3WeF3fdpN_15s^E5UxBYvm4}mz0+~@nt zxax44d?~43r?$UXh|@Vo1qxyGHN)&K81k-P1BaXsy`r5TJ9$p93x*Na>EEgYMq;*I ze7(X=F)5x7@e~c-1P?ym1>3HVkoD6GaY_6O5F)-Gvoxi4ppLj`T&hZ#nH)4vKKD(R ztyiQF6E+bM+VsgA(e^24`g|?dgwl!J1x6^eUT)qrx?RG$E-djLO1A2^3@#z0#i`GU%>tvM)EN1FiMq(AV*#@vt6HhIa+x%p*BSA z>a(gZw6$Szs>|+G^q8D*T$#l@ov+}JqKAf)jH8lFIfGNBDqfy;YLKys#cPdM4rYmd4!)eqnGePrO!c$4TH;7%hRVa9&Y6rIA-gK3C@R%XhH zpT>p^Jdb6_9-GpG4{374hqrGGaqvi&`^HLUa*oDTlK8gd!OaWkudwLqmaxCATWS?D zL$2k{HhE-ba(%I$Y4?9SHvD&&%BEs-8DOg{q$s`-2=j(@a{+xei_f0wwsPtM^3T24%TV4hNDYeu}5fs%I*`PVNqtDH0)kNmG4+w zs%hw7YI-+Vqg8cwqz6r(yk)_&h17bVIODXs;M@trxV1_@1=sK^DD{{D40v&OTx)XU9mNqT|A~~64Gk2zYII7Q&{6GVot&9LP8)6mwQ*>$xKUa= zNz&79m}~L<^tg)CJSlCvz^Ygr;F!6ScFD}_T=>auT^H=4EuR&DkU)_BF+1MNfOXKZ zW*%?5+SszeY=sA|`$=|J?XCD2R@ns_(HCdL?)Aa^XZnl|JygfRbzD1+rV0bC&~3EU+J%5uPnh;jF-wR;c`c_e2@*mEkj;+f;hAEo zQ9qTV-vkIMxFYIO>p%Ud3_c#LO&%B+B&F#P+Hr6q3kVK$cN)Er*Zi^5uP6TD*Qn7- zb}lqsm2xYy0F*YfKW*0!Wiz{dpZ5p!;c=0}dqO zH13Ci4qaqnlQ`Lz_G=OohM^$=s!txdtO#MUb|m|IV60$DliqA~7ZqPxbxNGJ8$H}a zHiA*u7V6-R+8M26K+_%0bt$HiJ4>YI%d?ek!J7T@u>s{!ys3(xX-Z6Dx0|x3O%4pC z>_|mdM222P7es&Lhf(*D#JA38B4UJuQ*6GvSuG#jFPmGSXY!-+!u3b-+h9|=b1Us8 z=-<$Vh9DqaR6(K2k$vkBG58R@AsH7Jr{S*Sq6os?YQA076|tK|?~w!1Y8}Q;-Z*i- zb1N~8RAE}&2WKIXT^QLL*-hJBax@~LWRo#IEBDww>1@v|u?ww0KntxGUUd5< zg;JUrtBAMy=c!W8kGz)qQ-Z8BcfQz9le-)yct-YUPUkCgTz9V=BRu|CFJ8fGW=&{Pqy?gN$Ce}RUzS= zpwPY8O?$lz9RVBo_of$xc)c&(^5B=ELQX%%9L!dK5_TKl;1Qt`!@rMcQQh?3u3xlT zI~o6Dz}pvTYib=*1o9gL*%~bGoI)=s7-~lddu{^ zhHrBqv5SbCP@qRsgzMelVMUgKi4q{!ux0WS&*)E%Nao41(&WY^L+xF_m^xO-UzC_*l7y6#42#KG|spaYk zVueCo5l9shEvX)f{Xz%R?CT#`Fe!Qtra^r>P#utZecm%zVP-h&<>D@y)*_OUzt-}C zb^K29$#sa zIQ9b%y%AKAt40T~Y|HxR4hPMf>_lOF(c9A)9!00SS6qUUZ<*ONDC=!6Ok!N=b9Px@ z($P%nQ%6Hqe3l^6%M-)}9G@4BacG6_VMI|8)2!&*P>(O{IY{9;=y%MubO<0+mUBRzzBtJ+{ zHACG3HMgu5ugRh^g_XK_1Kxwvua3q(OM$Rz(RAfH4@xQByfWuB5cZG#yV_vL(}jU zrMy`3CVry5pGjX(yk7GNdjgPQNf)pW0_y7Ko)fK0U{YGUesfm=AHU7*&>nQdMsvFK zz9_daM%>CBCcpTlKs~ZX$J|Og!4CN?wer)Q)#C34vq);~*C-@mjjFbJquaKfO^?ny zcol_TR=?5vM%Zb%rd4YmGf)Zsjz)kW4snJjraTBJiBp}E++3XYAZ+s>IRAxhPnB!k zC6dkeahhA64aR}WWHhZy&@zke>yU854*Cvpz)B%+Td}+jsY07pkPp>Kgwxu*_7b!% zcWzvdLxTx6|8!6i5~{d?gK@;`a^|iQQ!YeZ;%PqlC(ro>57Ch_@<%ZE3|{3p^fUO5 zaD~BiDkK~F$q#;sqIQ;|#e!w~JHm(yyeKIS@jKt3FOD|=W-twu+ zvK)Y)w_!vZY$w^fo_}xn=1iw&zCRFR*UEYK((`uBXQEo}d3F_;Qi(OycYi5We&_H) zlB{JZ1syGaK)`CLnS@CxjetBQr0^O%*g5007ogvs;%je2^EyNYA)(WOsHgD?77J)F z^YU$N-Q`U;e~Y39bvk?3qcQ{{RhPJr^1>;PctY7cZVWU}=Q&#VA?j()KqmhX#>P81) z^hepDnc8_$Gc(f5NAQF&_$jxUdMbV-2%~h2#duJkwU-EvEj?7>3b6NB9*XGU zG(P3-y67&)l#AtX{pLc(uTAUZ`?^J zeYWuoQZWzjzwg~XFf!DgO6%?Cdm-j0ULUH5P>y9-bW`;yO%unKv}w#hZBpScw+p$f z^OvHFdMtNmq3M(f{JWmFDsr(b%~wSa$;cj^8ctlA_u-swPvrW6uyQ{bY;}>X^6AdR zQ|=A~X-&s94PT3%IVB({d^3IYf@Op8dv7Ie{N7ZMQLGRXu9%=r?$`8)gUCG=9gruaKlIHX|KOELiwOj8x`!D}!A|rT;0YiNp9o^%!B&2?QH*Lvp z-3zZGW~m#g24`n|EKeVMrDRzLR1QCeY<)J);GW7!l8UbGr?-tK`FHAfVxb|Qn~PKn z)<-VP=tPPhujY&vy;Ue!I{z8NUc&Ui4(1dBtkAuit&R`(&@;#QEoJ#;{7QqU>u(NO8E*!Mwp5)6v@hlQVpd zMx|sl>fx8=%+(PK=;!6}^&%?jCu4vq3tQn|2L=9GE~MSJdyRmi!z51Tax)jXenyrd zVJy{%A{(UI3ju=Jk!US7dgr6($sD*@`H?hC>D7R75Rq}0S*91G5D%fskM{uT0}`{O zJ=y;zc#)x%>^H!Ph=ssyCjd{*I$qcbrAxqCzE~o6RkI2*I-a!(yc(;DE8zS)C+B*3 zh3qb>*#Z>?Z=k`tYVI+NY4RW7Lxn>r)UUVCDBnD+HW(A}@XU)oXxWig?)mR$9P4d2 zh}(+9G^AlvkaVOyRw9CZ4!1 z6*|?E?1WB~^$EsJRRf+*Z#oCszWM#v{MdXlKk~=8l$7sFE_y0{y%pjz9iHydrJHXt z$uD@k=K~!P@RN5a9BHk?>o3Tr_Er}lg|#hxSdpBn{r-jp9jCP1*l<^@dWR7*#%SAK z-Q(d?oUVmSr|wL0UK=6}L_499Iy>?qgvVNombO)hru(SzX+A;jKR)PJ5H4lq-B=kW zpKP;xlSFurMX`g&by2tF`!9q7E~;@VyY_WD56eZ^#vyGkPNgldaGPwEW72fGZN`bK zqF6uPp~Us$e%g}LsQ_>(=;dO^E1~p3%Zs$x`2_oyF8KS-RnKGaXhfsjkUCf;BT;~A zcyrWUZ`I`H=KAFqC6HKNKo2aSb9hu@LErc8eoUncJ?mmK4UQo$7+amwT<)ul?vTn~ zb-SaJd7k0rDzNOjCWm6BPz8&wk?)}}>2`)~Lr^soY%t<|dXJ3g3%Pd$$u(jE51*PT zXSq!>n$K0|{aao|l_!qoOIZFG=hCJce9lMW3_R_s>Qz@2KJeRL>LF1PuWMv*Tid_6 z|5d;`^!OseXN}Y`x4HX5CrXT+SSFL2FyhJLZtW~=I;{5X594lGNGY03s z6UT3h&%ZSZ2@|U18UFh$GFp$n4^&MFZKLF)zBx6QNN*KNbOo(w7z`(I?n^V#|BZdw z6S6ESlxsFqQi+7Cq$$afP>3_};}6YP{g@YT$aaIFheU^-Z?~cf$hPQ?udsqq%#r?; zQa(yj_8XEILQ{|}hWAcpZ05sa#+14s9c5(g+faa>lg|G-kh@(NBuPm8qq+W8y}r=1 zel@Nqx}^$fE@keITvN%FX2gBXMXvZ(&>f9>zCjY!M_qFIQfr)?{<0ET`C3Mqs>nyba)>*(rFU+KAj`v-9k_S2q5pIWM5#7o|2_#a9xi_L`BifZObgW7WKj-^o*ar-VCOz2*`@A^5=xgz%42u?#%6i)b!OJZNF`Frd%`T&y21`(U2< zAf8sU<$_`;v6Q^s14*}dvEiy!%9nkh5hz}NAmwSr^U89$=YZ3><$=SdPjo-j6BocQ z(hSLtj3rKwT?XBSyys5>QHik_3@}`o%D>I*Y758{pQ)xEFAn2&pp zy^vX6Ev)1Jh2G#xfRaG04H^s(_j>-G$GX+78j_+=lc=K)Dly5PJlhMd;przK^>9g5pAIv(V;6X=0rT71(bL#eI7 zM{N%b8RPz4Q%<&VuYUOv6Nd|YeRuKG9M~B3^+m{Tr4N%3zFaH;c#}7mh5{EnMJ^yh zsB#bw9^bt{9=Q#t-k}5DnnC0a6)&%w5;+k?WL1_cZz9~*NYaEnlw5_?e}Ynd_@rVL zFvikj>7bBh(szH*P2)oY^cAvssNJ`FMzTxcc@E+d(Mr_+fK2h{{WmV+{7b2~Hh+x08n63`L{9w7I9dq0ybXGNf>azTswuIC( zV$Efdtre|w)FUmt@?w?nli)*UDcayWT@0GRX>C|GvQx-qL+4MdR#9srLm&Bp) zF^rZrP}p`qT5~xy5D;b>PVfG31*h0q&qSI3%Ax^;GXWWOsGS4(UpCS-Q5Tw*MHT|y zyExN`s=S`}juTuppa$mNK0|p2WR@I+{rquIB`~47EZg|dX0aeh{P$Bu z1mF`==7EM&+uz!n)a&u<1zHL_#6#xW&wY8{!(uYMI4Ad?Pc&(t%S3h6m+3r{qhG-S zlX_wq9*ed>0}rVeVBtrkYi-KyMD0G!4NtWDsQJ&kjqn#ElM02P>8x@@C|M;zk;3rz zl0WA~OD24RY~`7x-B<&J2xi2&_H$x;s*M=g4svywYO1Ezv11FbGEBFcT4!?(hOx)M z*DMqJU-SKwhiEUsV-RLh`?78SN!8jc%?HE5?WB>8nP_*CUliMRH#Rmg0@Aa3tn7lu z$njO}jNRVXWsX2{udqDTC$+XqSf~R-_KUj`T#h%|8WGTn?rlR!j)Om2D29M^3)FA~ zWT7Y2WT7o;+6#r>T@Ww$b)e@89UEGe2lFsx5#O{lDsi4SQc`)+vN8sPC(5fnw91mf zd}SGuPRWVo{!&EfpJjRPG+T@DWb zr>T1$<3q^#I9AcadXqS=F&gprOjQ$gciYl4kDeM1{gg6wr?@^nJdkvyr~fMh5Hvaf ze|=|hRYo&Vh+;%!k-dpT>~dWVQZ zf!ac1oAP)*RP8qF4_d#(;=|0)Ex#c3)>Bd;^X^`~P1#)u z4$v`(Kv`6H!K=k-OG-oOP3DJlr)}bi+DG@}bei#*$eQB_G-v zkpdAHW!?xWM8kF*`z{zyoe1rGDYVryirZmc+&tHRuIJ@G;TZHR;00f2Sp%+2#;TVY zs8>8?j5spL?eP=FG6R9CK|s+0k|z9g`zElDZLCgD=+k1-ns@k0lNTl1?Yd+HY83dD*6`_o3=j}rJ9b6cs8sTk=oDo5>Svt>teuv&sN<}0TCwbZA5gh z2l7H>(+AEtoXwaCo03=fAspAI{<9TMC~4ab@;qkbQ%aIh7skl$#f$tbdw=79Rrh^q zkXqYRJn{VbMYpB5G7&e?D`|K)WOsw?r8Y*MytZN*rCMvjj3FTdsvvvf1yAlcq;1i- z5desE@2MN8&qR>hm=7_o#H{oaOhoLq*tNubNNu(q*n?|82>9;%=sM3cIUFh^6Pj`Q zJXNzT%VM68)~E$x{Cw|}gNe6$yydX#>SW8y$`1%@pJCG--%`zvU&?^}p4i%b<;PW= z)R@G)D86Bu30wSCK?ZfTGXAb-^$Zvm$svK?c}?|tPI!TR#{ zA&skDz*q3mh4kJ_@PaYUzDT#MkEcB1j$;QQ9KlyljQYz({i^A}5___Z-wKo6#!f9o zBkR0l@{8}ZzKHr1dPqnj>Nj1$0%XvlR`~D!V%=E52_+-b`XFE8n=w6P2Ek zT=G{iCC}acG(hblp{{;!gn%%H>F-~*fx%I*V(Md}kTUt;dNJEzXFguV|NSiY-lmUD zZLKt?IXc%nxwa4B{e6EZ&;t6V`j;OBa~Q5m{k!<(|NVDW|F(crfE;Y{D`rYg;Peuz zvpi6Zh*x_BeFwzw$E4e2S6pOE>M>A6o%|oWNA&1BW; zg6$(7Nnq?bt|KU;BvXBHlaW{ecvR)B8VqoC2Dqn=R9}y*7L#ANL$4>SElo?5w%*;l zYGnIG(sqv!_f_`;e37rz!p@lHK_MZ7>y~sBl+-W(4^v+q7F8GZi-8~r2BoBQgGdjJ zgn*QE4N`)1$B>GEw19LYIW*ESNXO7M)POWIbmzc5yx;xqbI&t_e+Xyqy?XuD+IzDQ zRr(Bui){kb$uRi}hK22h@2VeUq(jh*=az*c0oNCsCT^+!F1M~|85z5b0lGX70NRDb z(`hKE82|fY_8sZQtPeka{J2j61W8)CWGz-)mksZ3sZTf5Jh0x#cD>^b{(T$pwPMEh zehM8OosMP=9m0kC?IWDW{W2WJM~5d@cOjEOg=DLy?0Qb3n@R(=cbnRoh4?zbFZJBi zErHHa4aL@Z zZ;SAv#Z#Zz(H3SqFJU4drOF?0%&3K|lxHCPjbHo25<^x~I}jZm8`n^e^sz0!(T70< zK919*>wyRzfba%mL%QPmJCR!rn^+So{-syyZXnp1CG7GwJsrBP-7XNvY;U2(&pHf< zMh<;zj;gJN2QZ7iIKH6F|7F2$2D8}uZg71QWa#(Y#mW`)mlXH@jcs^Rv^}4E`%42F zF^FMgN61rrtFRwGu(DJC!5Nlle$k%Bzuc?A`Az>9;*ON(g%)r{(Wi>p+!7P%i<%5&+pGX>}m} z75S1KahVZazDNWtZWhqMJ;Om(ZcGXgmM^GW|EE3vtSl0BvJhR{7u7#Oo3o`NLutbF zg~GtE-$8Za>8&PkLi5iXxc%M0P3Db51xJI~Obp#UkNW``WT~i>BrA4}_B!YR4=P9; zoOK_hLZ$>i>YVEnwq3RPgzG1!CN&~#I1{>e?w#bSb zqON)gM3?URE^lc_lH#uD#Ik9*R)w8T_z|ypc{M)80l%tb>cgQgV7IFAq zEMtSA%8pE8IAY~nL1}4d-rJZTh564%ZLX2AB)W}|(g53L51@JSgWnZ>=8ECWsq@5R zLHu5T;f3y>zV6bHaE=-6M*G=b?YU@$7@6yY&C!X87O_U9E5FNxA^yB)rh~p#?`Z64 zIV8P7dP~0NP__8H@h{scE{H=DA^+FW|Bm0^u^Tr;)5F1F)yAeHcr(?^ngLr7++IL-3r~TW8t>wHlzWfyPof4?M2>{`lr_7yYssi$AG$cZ}S~+ zz(7dxoQ#N(f%N|x2k(V4^sdIRS7mC7^QR4QCGAUkaSP+vCb|}@B_VmohamT6yi@_Z z7tA|H=2;|wnj;9jDcdPicwfF}|zs`z{Zyms< zMs9aU@5*XGS=b=^CD1~3SCKoW6s7#L;fs@sMpb9_ea{g2D!0FWbVqC6;3VcR@O zOQEr;J6<3g`O{M#7nPOrv&?-ZueN?lbUwTM!pyGzh}ZkG+>fF!kT#V1!$@gaudJ~ zPq+;RN)1t=w-_t{cMY6mDtp7t2NXY#(F=N>hQRu71Z<}RPWV>^TxZaRJzTI_k*23l|^kZ{JMRoaT!uvsDtTEm@F6A zoMzV?MeUskZB;e&H|*Oe&`^HsW!l;A+i-E(p62lp_TYN*C@?D@K)5x4Ca#g&M(Xn! zRqvEN099x@qiF{KK5Q%?*r8=&d!g>u9uprI4s;sk8odvJUf%L50;M#$1^(&19l%*) zvk^L#8^Qo(>_hL$3zS2^fJY!oE12tAA#SI4v2>3;kX%_ zo$L`%dfb-qA@;YO3-v#v{@YNEAOA6py(&VmCpw6=bMveg;L?2(z~zQ6(6r3wG#}f9 z+!|iwqFp%-F4BLky5oj1u>Y_c!DAk>T&aR{_i(pf)75_gAnzBio=3eZSCvu2iUy_Z zuUZ*Smbqya04a**?@GyXa*LhlU9_-H7bG+Xv!BUMGp2dM-R9M}$WHa5eVO9#ujwas zPa7T#M^WH}bkNp&0WTbFl+|dySe}Neba3C*_jX}!pZ@2CD*&1!;czN{mMh=lstOrJ z%zP=J3CY*8RWLs5pJzu}Maj4xu^*u3y*B6b*h89$p2wSfDlg_)hlvz}2(p1NDGdFOF)H0m^?O_^FMIG!#@45SpM=73-?mJVe!rRvp>$(ru z;MjtyGQ>g|lsr!!lx?X`e!(3r1i#2{y}a)VDicA#!L(t6AYTVa0vN-m9KW|IjjIqf4*I^B8Ms|P1syj*nTK5d_Zp_nJFDwo z{1L~z7)+`Ao5F8%{R{88`k*->{}NDRXm3|tcvly-0|ilGNdny)NjGRupQBO#(Rx2; ztpXr=Cf*0ksIk^*ZsMl8M3vVhKB3J5TpUK@(a$!>SQ9n!?)o@Uy{t0BRpXKnvB9SKuUke8~rbl+cFEFReg^z;A41*Y#4&KjhPoOHT_8 z9l7uQt)#MPRj?lC7wa|8cr3}ygnXg6vBSpAD#UTW&1A=k>*R?&mFUA#{o234R3lZ= zK^L@lQ)LH=u)Fn@GySgcZUZO*cgo7s0rnVZ ziRvIp1a`fZQ9Y-i(hA)JlHVWw?e|*_iMcDpyjna>wxI91eKSO4WrY<_`ZK2+O!TDT z><*6~M_)dSB{on=3u7x*tu{?0Vg+Bwot=+<#<~Lt-iAq~ezpd&jQo_8;RoXOj`n&nazHTnd+xV< zeg-H@p<^MA%HBd1XRSgiEl@StQ>dEnuH%ERaxLa;Fet>fo5npOHzE@`rFmB{Wc23K zU#w>FHGV$(`RV8)pv}T3mVtJH_?wyrE`Y^D(XMw<-~IachHEZ$(55DYuMrYCd9%p~ zQxUFkSzH<{epEIKZRM*y%BR+92e<#owexiUF^U? z7~}c%R~g`qIM45hUM5uNol>TvNcLnh^n<`+sW*wac<&GV~Hsy zRvL3YbfWY}Lv^vF2)%gY%PuR*HF59nC%i!6qF2k@Ti^IoZ@b-EuCm-x1Ha2#&rDrmU*OCx8&XAqn@_#sjXZDr)Wk1_|3&2~8=X(`;+y8MTC7tKP z_yp3=U!KgXImz&5^u>pm$~Op`uitBtPOlm9xj*=k^!1&L)EIaSWQb9045c4=4E;wS z8L-(`Fy_a$!r3u@wD*)MkjzcSaJGVt`&v+cyQGohU^nFilJ9a|9cgLCB{YhIZRdUE zv<+Y}*WED^Udti#O29k-&*UTgHk{ zf(|G)Z2{vm0Otb!-r!8y_b>kq#$47nyHSYpyK|6ogCmZQU2i}C&kI+Bf%xrp9bUMd zN01fJNOaOjCQ(-czGz3}Ioo%cDKg*Qn2`ibo`@J;6%IYSrqR5?&a7JS{vx}`t)TrW zEbKwf^0R~qVzMgU{k5k`Z}w96e#W>H0(b6gBAdtnXf%>q3pFS7u3vYM`-bp_p&13m|MOe^~fZ`fwz zz}Ge&SuW!t>Zp@ zN_GMMPYMf30WlP*XCL!L>2Yr>bAzA3dpt_6hKOI)anv5H#hIu3S;-QSb{3e5-L}4X zlK$KYTEo~fE{{hH(M>2I#sIP>gUVA z#6-u+`q;_INsU-`!W&3b01JWzSdjI7OCWK~X>q--f{f!U2yYC3rV{r*P0pP%N_Z*V zp7GPX;dg3Md|#qziwq^eJKV>Cvc^1aaj3F%OiqZwM9K{+j%u;}*o9 z62)()Z+}jc8L+x)&SyJ~6-h3@!S;`ch$tp03Ap#_Us%h#|MUeqs+)xa8w+YE4x02y zP9!u07S1D&>0G4Hd2r5Oq>S);WVT5k%TafhO%T(}ITg$7wfkM$Vz?u~2kro1ON zvC3CNlUvzwntx3~22(=jOE|E|bIi=t1+%%(i1H9Q0*Zu}DwzODrl)lYivV;BNS>qs ziqtNPty_p0YdZjOAR?T`xO(>LpmpjN_mjzuv@@+4gM$5%#eDxin>KJt!G=^MjA~c;a>*Gjr zewmI(1YvmRxw#Azr3PeDQc~hD+5h#)w}}VL zm0k$i_bCtX07jAOy12x|#bL+weV?8dVqjv-F$sKRHDCA~FsX{fhoAp!g=7E66b3?k z*ZZAA%G?oJ5HRE*^^qi~)@;WI>u9U4b)B~BnW$lG?rKXwm5$fV@SiG81lp-2S1OjKh*62`Qhl8CTq&37Pk&Zv1x4_yIA}pkq;6ZJPl_BS za8F|6Vt)P%0Qk_^+4-7@=@DRY(kN8#=5ZJ0KaiKz@!}pzZ9sLcG|tf=PQHwse!V`5`GdBqy8f_RLanh@&(ZrU8OzpMUc;u8JGKi9@_OezAM|^ z$gocC(KxWDzwOm*Io5!Z{hVC@7mIme2@B$48tk^Bz=+K(uLR13N+X9sEiX}%ht`*Gl!y<5q6a_o;zRDF0#6qpM6_UWGns^nW;Eo$eZFiPJhgLfyp@QhOTO6b zyY;W)M_br}BQq8v-sImw^<@cR%R%BQTc7i&whJ}?$C50G6#I^B7o4T}$|f19a*%C> z9%sesdi#>=Yd{^{&@yxY<$(jE8SyU1WX1kx)VmUghF<^dJ7g;L$(TV+0|d6u->`o( zuwW;0@0yC3{6^n!yf)A+_+JyFp8XbP4)^_Jw&21X?MdP`o7(8N1%1sCngEw8uD@SG z=&}n#7VQ7L=4QrGnGD_EcZ?314+#pY%mQFGQmIHIO&tYH4v;;=!)YtN!*}%0ClyojX_=XEUcGwtUR70IP7b(3XJFt%E}7_1 zf4`iZ+@q>Le*mQl1d5oeYisSXmQopvPYIi-9=&@;oKBdMFYN|(gsK#(F!Lz~a%ZPHC3E<`9<{O$C6TRC-lgPD?uj9*IRv~Y6|8+VLm$L?B(r@uA;f5E9=#IX6^d5+k;f9+zXwA;6 z+5B+YGvLBX;6uW?$tjdnMFVva)C_s>majMV(PMJHf(OtJ!Vn~36B4hu>;7a>yZPHT zVryyLq=rxSzEm=DQ&Q&U45s+n4IWynWPWyUUb5}i0$T}G#`(-GEt@!?_zoM~hLZaF zJQwP^dw2dR1C6TIp8eC#!};alJM4H{}M2;IWA_mf_~=%(gRAm__?zSUUnK9ES z79oZ6pSPbXS82s*?}kV>K*P9i1s=zG!!Tmpi3Ni%82 z{}4rig@x~BWaa3fnlUuMohCnjK6@G2onx?scog`xLn8FyI3IyPDuI`mmu%hqyrKE$ z&j~CgUEM zkg;2}o(}W%j~m^#!t9Nja?E<7tR|r(+_5iWhJg%4eC;H+Nu;bqqKeLY0)M3;wHUm< zRU{9HkyzCRJr-{cT2S>#q~c3WwGxj)N&8iQ{-P|zyy)pKc+jCD$UtnKW>vrKLZ;P5wlP|IW&4ld%g{ zjE|Lfhd$uUmD?ZNeg2v`1f+{USCZQ;0=ty_SbU00MFk&IKLLv#xl*Ch_@+ zxJQ@&$A(-}IcVKgntijfu1G~!i$uSSNZ*}Qlb15w4YIGpiVPy>WYsi{L zuqyg-TerD{IUh{7+vO3?m7J_k0Ip&MF2B#H_c zFCvY|>h&Ki0x5~=d-&?SMj%EI`|pmc%=Jmmp6SM{Y=>Vey(0` zs0({USws$qo<9f@Mtys7ARg7LLa?%R=>9mbJRAZ))<^fSbVp3 z;5wLwZnuB|;pf!$lWFI-*@fEXxj?%~98d$gq#%5audNP$l`X) zHjL`_{xtSKC9IDhe#6NhrEa+bp{GuN)mSil2SOi4Tr#;!=JSeeB|5g)h`e81D)u!i zC~H<_X(H=OuQ4n61-l$s8H2Br#TUcF6e4oUAY-!Td||%7gnyU6=L;*sw4ZU`Dh&?W zkm*!C!g~MWwZcy|04QXE7^-b51{GV!AEf27hux#%>SnJ`WRzrevR^W*_bZ!jxRW^F#D3{lg!X$c!fp)6BqVO%CUA6EMSUMllNb;iFzF~GDmp(K^fVC*hr`F;ur-JpSUUq2AJIFs~RaBe2U+!05Z`b)S z63F7(-Xvq9VGg6xrZ`U0Q{2t{j|wDi+(DXCF4)J-@YB8d<^unXbsPq8bfijJ{cJQwWT)Xl?#Z0s|ZRzN_MbFYs2FxkI9 z>Fwx(s$G7=V~nHm-U#s3h|TzzFyg=gujUf=b1KP)!J`-(?U-vPrcX`HN@Tl}1k65! zM|^qiA6LkcNBErbnPkJWr02mE(pL_uA;u%n6zo!K-D>HpN2jRM*6T3wiz3yn+&Gmn zew|k1J)aGc$%O^5YsWoJ!gj1{XmA+hGsU%G2iR5(5n)oU*gWs5e^uLDEjyNAxMi(h z-7Ka)H$ts6b*igkn`|K>)?GzPZsyjX^x15JBl(i!>d63hJaw#4fLfZOzwcKTbJ!ln zCyJ6knx}h0phih~2Wsq@=6<|4-YC)Zj;3YlQM&sqs__z|gQD8=3`t2%?fAkUP(_>d z`^75MZgoGgdQ>8K4(hODU1Ddy=l+7< z$em-E+QrWA52|Mvti=9OO7x(hOLY{S0xp-{`i-DLT-m=TL#R4Cu&AT)JR7yG}x0K;j5b1lvh zPp=M2>!g?c-A{ z$(gmrRqj;1qnB`jlTxFPHi>95s)EGYy~&W<^GCk>fe2LNmU!V-c`G=ajGM5o3yZER z(M2=Nwl$7Y+d|C6D0xYA@nj!N>$mQxyMpiKGtt;XNDvi4MLy5;#h}bifLnhdrqFoA zu7}8|mdF@#{_B$3ti=7*xJkaW4+p#!3rn&-3`Dh1MWwM=t7dIbco0L2ITCCw<@R55 zsBz!X_ucNMa2*of=&dSoG|33rjB%qT=dLQPuIh;Cr+rscPwgg>}9nSTdaQS+DlX=4K2C!Uw4^_CJU( zzf(}{jZA--eKR1NPTjBG2Ji9*C`wDpYhIsTW;oouDMp)=^6FTKzkhnz5FF1V4k!sC z>!IM?;wI51GI!~$HG%nXHk+S$5k?hdN(HN3${$BBHh9(LB4fe*bp#>_6W8d|My%4Wnb7_ zY)MBnYHh&a@3-$fHOh7$HB!4nLXPWjEXR)!4Wc8ipSFJna+HjqZb#o;#Q_XItukL}=G0SVH&y=U2&wj|r>pQJX1BclxV1`nQU+mR^Xk2}G;2X1uEX3qhii5K)!(^+=5qPj{ z#Byk3rffF9cGlcX=?{^rz^qD1TU9y;?w%59!T%Dj|B0h%ZGUfA@Rb?4#fLz1bOdoC z4}RzH%srOOMp0nVL}%MX=XqOSWlUfP z=IXLL_>mm%)T^#!duM=doxRzikE#08_%IjOVLdtW7-K6d;|Wc`#ea({F)|UUBmun1 zD>Kfw-LCyf-D(tIYAIEJK^4)W?w}qh%%v#9bJqg1Fyk=MPoz3gx@AA=wUI6#;wk32Ple0Zwqw}Jm zrVPcz$mlqw($rM<3x3W7BAW`zg0{Er>6JT7W_p9&x`W+SDS4=$<(D0_t#aKHVZ*MU z#QRCguGaFekjJA-ATb^uAszu|$NJVf2V1L8A8xL`9EgZ#N+%wrK0C^&ajWp?xe06$ zp-w#ZT=&6mOmqW0Ag9L*{+?mHy@Z;azwU{tnK^AGi<%DG`q1DZ#@R;yL@w{ecx!9h zk-OF9C4!+cbkFTZ>z|ut*u4KwT=w7A2}nzkRIWM9*kW9QWaa28pl8upbu72gR}6Rh8b!@9dEZ z<3)Y{arxB}=#TRb<6_&&z(sQ~hKtM9Gkq~?; zTL21OWlh+jbg=af;+Z-Ou;XTy&^keV>3;e9vNj0nU{DzI71M|suiFf!aG2<^Z&pVb z`?sW|q|n)Oy}5lh@^!`;!_>5hg|3Th@M)_X2_yl-*YU2UiVwOtdd}y^zYY1D`&gU$ z_yD%Zwg81A7V!EDbmKaud!3v)rlis=G}ofXnqw|Z&%I=5+I{RL`xg%OFA<@y%qHPU zMLh{Ml5gF*lR&RD=#%x$H0hJgqaNIk5_%nQnEZ>67D1KBx1_idE5f8>7Te9>0c_fR zuJF5Ti?H9V#}FaLAm}^dhIDG!E!@hNH$qUkjib~B)5(E>lML3u#1E_IPRT>Fp9ku zgIOGe1p&sfVCJAx;f{bDSDt1AbTm8Mbv{7>dX_JzIIOe=ziCI(fC^hL(CLksQwc=8 zj!{wcqHA0Nhu#Y(jjtDh0a4b^kNJ+W;KPRUy2cFOu2)ipTM>@y&Qc;#;mi0Re=dGM z69K;($3zXM?RxkKC*XVQXWN~n>^c6UQF^+wC`S9`%|FPsy+?wlo$r9cL?=-V!HGLZ zMs=F*SXFv150kxZfj#=u-{Zkfb3HdXCVP%QpP=L78ti6h1`U_<07+>%Co0sv+3AqE z_4jW-qi^cO-cclX9DRsR%`jg6C-rhH1#=M(^2tn?FZxn8#=EZ6)S7N-=-jhrt?Arj zq(iS!;MUXu{3v+Z@Wtbk^{l3@_AHeP^0+WnB|3k+NFAXZU0>7(PgK z(NEGBysojMyX-m_+Op}~5}SQFw}ihciLYQ^KiXA52%Wq73z?e~G9I1-JsaR~9!J*IqC zI^LPxeLH+xa2}MkW<9unZ%TrH3~(G7)sYqk?i{;7q*%Kml&~}XHo;=1)+~ajyNb$; z1FoB37Ex)zVS`@K?S6T+FJusF5n%!EecLS*n+z!_@?u;`Dhhm5NxzcUF>bDuqMvAP z_~m2SmNmK>Rc)9zkNUU8#@P_(yw>Q<%$T><$f{$nUzQqMTwUC8W)I@$7fW|82xew% zum_2;Hhd9GS5YY2${%M%xQzqBgzo7>GewWsF}oB)W5BI_ZgZtucOmLXHl^C@ z`=IqOQ}%5?L|g+*8kU7k@KLH&7rV5R>`$4G9s6;s3vK*`&-fA5o5xoHk~JTmx@1VN zpYZx;@BKC%=1A&NF3=$Q-QlOAELY!-cdBkgPvssY+@A$TpL}oe(aq!xdUTW=?GkjH zyb{5%13{rqVyBcYd%B0ZI3v@;hn<)E#yRJN$91Qiyv}l~ul;(Q7+=BN`6jdHP3`8J zl=l3FEv)VAr|vBIU81QQLBo3Q+v}_cd1Tdx;-w>jPyE;}y0ll0N_&PI|CBN#T-0q1 z!b&>_;!!5$1ur(9iv0U6ln1SSq{p<`_&Y@cs_4})MRa-y%_ciwjqn2!lu?$))oGG?gZ9&@}ENA8EJ zZv7UV&$_b?Wlg&veu1GN2_kGwT`jp-UJP+W9x8by z>ciGzjfKZ;8Rz0pSC6BdH6#I*n1jo5s7s_p=I-d}M||Q5BDYAz34Um;i_GHX?%7FA zxv%nFf*|g4Gzhv_jiYzqP>Tc<-&Q@-o~)ZJ-W0meyCyOzj;OUPqhA!bF5%ux#t)+Q zVUf=hpF6$YcF4vt{gx&iV|T-HWzt)NEKJ0=xv-wI*Hy&Sy_j+@UJH=ShQ}}eeb-VfVvB!4RWcJctfiOfwl!DzMSd|#`IZ4Sv@Q#8q5zS#c7!qx@h8;G_K3?2I;bTw z2#1o7*KZ0
qN6Go1fU_|v2NAT?jS$5Rbcc~}5We(70$ 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 { // create browser window - const win = new BrowserWindow({ + mainWindow = new BrowserWindow({ width: 1024, height: 768, - }) + webPreferences: { + // used to inject logging over ipc + preload: path.join(__dirname, 'preload.js'), + }, + }); + + // open dev tools + mainWindow.webContents.openDevTools(); // navigate to loading page - await win.loadFile(path.join(__dirname, 'loading.html')); + await mainWindow.loadFile(path.join(__dirname, 'loading.html')); - // find path to reticulum webchat python/cxfreexe executable - const exe = path.join(__dirname, '..', 'build/exe.macosx-12.4-x86_64-3.11/ReticulumWebChat'); + // find path to python/cxfreeze reticulum webchat executable + const exe = path.join(__dirname, 'build/exe/ReticulumWebChat'); - // spawn exe - exeChildProcess = spawn(exe, [ - '--headless', - '--port', '9337', // FIXME: let system pick a random unused port? - ]); + try { - // listen to stdout - exeChildProcess.stdout.setEncoding('utf8'); - exeChildProcess.stdout.on('data', function(data) { - console.log('stdout: ' + data); - }); + // spawn executable + exeChildProcess = await spawn(exe, [ + '--headless', // reticulum webchat usually launches default web browser, we don't want this when using electron + '--port', '9337', // FIXME: let system pick a random unused port? + '--storage-dir', path.join(app.getPath('home'), '.reticulum-webchat'), // ~/.reticulum-webchat + ]); - // listen to stderror - exeChildProcess.stderr.setEncoding('utf8'); - exeChildProcess.stderr.on('data', function(data) { - console.log('stderr: ' + data); - }); + // log stdout + exeChildProcess.stdout.setEncoding('utf8'); + exeChildProcess.stdout.on('data', function(data) { + log(data.toString()); + }); - // listen to process exit - exeChildProcess.on('exit', function(code) { - console.log("exit: " + code); - }); + // log stderr + exeChildProcess.stderr.setEncoding('utf8'); + exeChildProcess.stderr.on('data', function(data) { + log(data.toString()); + }); + + // log errors + exeChildProcess.on('error', function(error) { + log(error); + }); + + // quit electron app if exe dies + exeChildProcess.on('exit', function(code) { + quit(); + }); + + } catch(e) { + log(e); + } }); @@ -56,6 +98,7 @@ function quit() { } +// quit electron if all windows are closed app.on('window-all-closed', () => { quit(); }); diff --git a/electron/preload.js b/electron/preload.js new file mode 100644 index 0000000..23bd972 --- /dev/null +++ b/electron/preload.js @@ -0,0 +1,4 @@ +const { ipcRenderer } = require('electron'); + +// forward logs received from exe to web console +ipcRenderer.on('log', (event, message) => console.log(message)); diff --git a/package-lock.json b/package-lock.json index 8692f72..d030347 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,64 @@ "version": "1.0.0", "license": "MIT", "devDependencies": { - "electron": "^30.0.8" + "electron": "^30.0.8", + "electron-builder": "^24.13.3" + } + }, + "node_modules/@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "dev": true, + "dependencies": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@electron/asar": { + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.10.tgz", + "integrity": "sha512-mvBSwIBUeiRscrCeJE1LwctAriBj65eUDm0Pc11iE5gRwzkmsdbS7FnZ1XUWjpSeQWL1L5g12Fc/SchPM9DUOw==", + "dev": true, + "dependencies": { + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@electron/asar/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@electron/asar/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, "node_modules/@electron/get": { @@ -33,6 +90,379 @@ "global-agent": "^3.0.0" } }, + "node_modules/@electron/notarize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.2.1.tgz", + "integrity": "sha512-aL+bFMIkpR0cmmj5Zgy0LMKEpgy43/hw5zadEArgmAMWWlKc5buwFvFT9G/o/YJkvXAJm5q3iuTuLaiaXW39sg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/notarize/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/notarize/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/osx-sign": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.5.tgz", + "integrity": "sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==", + "dev": true, + "dependencies": { + "compare-version": "^0.1.2", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "isbinaryfile": "^4.0.8", + "minimist": "^1.2.6", + "plist": "^3.0.5" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@electron/osx-sign/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron/osx-sign/node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/@electron/osx-sign/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/osx-sign/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/universal": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.5.1.tgz", + "integrity": "sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw==", + "dev": true, + "dependencies": { + "@electron/asar": "^3.2.1", + "@malept/cross-spawn-promise": "^1.1.0", + "debug": "^4.3.1", + "dir-compare": "^3.0.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@electron/universal/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@electron/universal/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/universal/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/universal/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@electron/universal/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -57,6 +487,15 @@ "node": ">=10" } }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/@types/cacheable-request": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", @@ -69,6 +508,24 @@ "@types/responselike": "^1.0.0" } }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", @@ -84,6 +541,12 @@ "@types/node": "*" } }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "dev": true + }, "node_modules/@types/node": { "version": "20.12.12", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", @@ -93,6 +556,17 @@ "undici-types": "~5.26.4" } }, + "node_modules/@types/plist": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.5.tgz", + "integrity": "sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*", + "xmlbuilder": ">=11.0.1" + } + }, "node_modules/@types/responselike": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", @@ -102,6 +576,13 @@ "@types/node": "*" } }, + "node_modules/@types/verror": { + "version": "1.10.10", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.10.tgz", + "integrity": "sha512-l4MM0Jppn18hb9xmM6wwD1uTdShpf9Pn80aXTStnK1C94gtPvJcV2FrDmbOQUAQfJ1cKZHktkQUDwEqaAKXMMg==", + "dev": true, + "optional": true + }, "node_modules/@types/yauzl": { "version": "2.10.3", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", @@ -112,6 +593,360 @@ "@types/node": "*" } }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/7zip-bin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz", + "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", + "dev": true + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/app-builder-bin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", + "dev": true + }, + "node_modules/app-builder-lib": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.13.3.tgz", + "integrity": "sha512-FAzX6IBit2POXYGnTCT8YHFO/lr5AapAII6zzhQO3Rw4cEDOgK+t1xhLc5tNcKlicTHlo9zxIwnYCX9X2DLkig==", + "dev": true, + "dependencies": { + "@develar/schema-utils": "~2.6.5", + "@electron/notarize": "2.2.1", + "@electron/osx-sign": "1.0.5", + "@electron/universal": "1.5.1", + "@malept/flatpak-bundler": "^0.4.0", + "@types/fs-extra": "9.0.13", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.4", + "ejs": "^3.1.8", + "electron-publish": "24.13.1", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "is-ci": "^3.0.0", + "isbinaryfile": "^5.0.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^5.1.1", + "read-config-file": "6.3.2", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.8", + "tar": "^6.1.12", + "temp-file": "^3.4.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "dmg-builder": "24.13.3", + "electron-builder-squirrel-windows": "24.13.3" + } + }, + "node_modules/app-builder-lib/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/app-builder-lib/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/app-builder-lib/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/app-builder-lib/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "dev": true, + "peer": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "peer": true, + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "peer": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "peer": true + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, + "node_modules/async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "peer": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bluebird-lst": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5" + } + }, "node_modules/boolean": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", @@ -119,6 +954,39 @@ "dev": true, "optional": true }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -128,6 +996,96 @@ "node": "*" } }, + "node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "dev": true, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builder-util": { + "version": "24.13.1", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.13.1.tgz", + "integrity": "sha512-NhbCSIntruNDTOVI9fdXz0dihaqX2YuE1D6zZMrwiErzH4ELZHE6mdiB40wEgZNprDia+FghRFgKoAqMZRRjSA==", + "dev": true, + "dependencies": { + "@types/debug": "^4.1.6", + "7zip-bin": "~5.2.0", + "app-builder-bin": "4.0.0", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "9.2.4", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "fs-extra": "^10.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" + } + }, + "node_modules/builder-util-runtime": { + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.4.tgz", + "integrity": "sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/builder-util/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/builder-util/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/builder-util/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", @@ -155,6 +1113,83 @@ "node": ">=8" } }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "optional": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/clone-response": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", @@ -167,6 +1202,189 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/compress-commons": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "dev": true, + "peer": true, + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/config-file-ts": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.6.tgz", + "integrity": "sha512-6boGVaglwblBgJqGyxm4+xCmEGcWgnWHSWHY5jad58awQhB6gftq0G8HbzU39YqCIYHMLAiL1yjwiZ36m/CL8w==", + "dev": true, + "dependencies": { + "glob": "^10.3.10", + "typescript": "^5.3.3" + } + }, + "node_modules/config-file-ts/node_modules/glob": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", + "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/config-file-ts/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/config-file-ts/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "optional": true, + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "peer": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "dev": true, + "peer": true, + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -256,6 +1474,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", @@ -263,6 +1490,152 @@ "dev": true, "optional": true }, + "node_modules/dir-compare": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", + "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", + "dev": true, + "dependencies": { + "buffer-equal": "^1.0.0", + "minimatch": "^3.0.4" + } + }, + "node_modules/dir-compare/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/dir-compare/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dmg-builder": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.13.3.tgz", + "integrity": "sha512-rcJUkMfnJpfCboZoOOPf4L29TRtEieHNOeAbYPWPxlaBw/Z1RKrRA86dOI9rwaI4tQSc/RD82zTNHprfUHXsoQ==", + "dev": true, + "dependencies": { + "app-builder-lib": "24.13.3", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", + "fs-extra": "^10.1.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "optionalDependencies": { + "dmg-license": "^1.0.11" + } + }, + "node_modules/dmg-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dmg-builder/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/dmg-builder/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/dmg-license": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "@types/plist": "^3.0.1", + "@types/verror": "^1.10.3", + "ajv": "^6.10.0", + "crc": "^3.8.0", + "iconv-corefoundation": "^1.1.7", + "plist": "^3.0.4", + "smart-buffer": "^4.0.2", + "verror": "^1.10.0" + }, + "bin": { + "dmg-license": "bin/dmg-license.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/electron": { "version": "30.0.8", "resolved": "https://registry.npmjs.org/electron/-/electron-30.0.8.tgz", @@ -281,6 +1654,174 @@ "node": ">= 12.20.55" } }, + "node_modules/electron-builder": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.13.3.tgz", + "integrity": "sha512-yZSgVHft5dNVlo31qmJAe4BVKQfFdwpRw7sFp1iQglDRCDD6r22zfRJuZlhtB5gp9FHUxCMEoWGq10SkCnMAIg==", + "dev": true, + "dependencies": { + "app-builder-lib": "24.13.3", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", + "chalk": "^4.1.2", + "dmg-builder": "24.13.3", + "fs-extra": "^10.1.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.3.2", + "simple-update-notifier": "2.0.0", + "yargs": "^17.6.2" + }, + "bin": { + "electron-builder": "cli.js", + "install-app-deps": "install-app-deps.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/electron-builder-squirrel-windows": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-24.13.3.tgz", + "integrity": "sha512-oHkV0iogWfyK+ah9ZIvMDpei1m9ZRpdXcvde1wTpra2U8AFDNNpqJdnin5z+PM1GbQ5BoaKCWas2HSjtR0HwMg==", + "dev": true, + "peer": true, + "dependencies": { + "app-builder-lib": "24.13.3", + "archiver": "^5.3.1", + "builder-util": "24.13.1", + "fs-extra": "^10.1.0" + } + }, + "node_modules/electron-builder-squirrel-windows/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-builder-squirrel-windows/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-builder-squirrel-windows/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-builder/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-builder/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-publish": { + "version": "24.13.1", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.13.1.tgz", + "integrity": "sha512-2ZgdEqJ8e9D17Hwp5LEq5mLQPjqU3lv/IALvgp+4W8VeNhryfGhYEQC/PgDPMrnWUp+l60Ou5SJLsu+k4mhQ8A==", + "dev": true, + "dependencies": { + "@types/fs-extra": "^9.0.11", + "builder-util": "24.13.1", + "builder-util-runtime": "9.2.4", + "chalk": "^4.1.2", + "fs-extra": "^10.1.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + } + }, + "node_modules/electron-publish/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-publish/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-publish/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -299,6 +1840,12 @@ "node": ">=6" } }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, "node_modules/es-define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", @@ -329,6 +1876,15 @@ "dev": true, "optional": true }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -362,6 +1918,28 @@ "@types/yauzl": "^2.9.1" } }, + "node_modules/extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "optional": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -371,6 +1949,52 @@ "pend": "~1.2.0" } }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "peer": true + }, "node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -385,6 +2009,36 @@ "node": ">=6 <7 || >=8" } }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -395,6 +2049,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -430,6 +2093,49 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/global-agent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", @@ -522,6 +2228,15 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", @@ -574,12 +2289,38 @@ "node": ">= 0.4" } }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/http2-wrapper": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", @@ -593,12 +2334,213 @@ "node": ">=10.19.0" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-corefoundation": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", + "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "cli-truncate": "^2.1.0", + "node-addon-api": "^1.6.3" + }, + "engines": { + "node": "^8.11.2 || >=10" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "peer": true + }, + "node_modules/isbinaryfile": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", + "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", + "dev": true, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.1.2.tgz", + "integrity": "sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", + "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -606,6 +2548,18 @@ "dev": true, "optional": true }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -624,6 +2578,99 @@ "json-buffer": "3.0.1" } }, + "node_modules/lazy-val": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", + "dev": true + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "peer": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "peer": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "peer": true + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true, + "peer": true + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true, + "peer": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true, + "peer": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "peer": true + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "dev": true, + "peer": true + }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -633,6 +2680,18 @@ "node": ">=8" } }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", @@ -646,6 +2705,39 @@ "node": ">=10" } }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", @@ -655,12 +2747,96 @@ "node": ">=4" } }, + "node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true, + "optional": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/normalize-url": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", @@ -701,12 +2877,76 @@ "node": ">=8" } }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, + "node_modules/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "dev": true, + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "peer": true + }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -716,6 +2956,19 @@ "node": ">=0.4.0" } }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -726,6 +2979,15 @@ "once": "^1.3.1" } }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -738,6 +3000,57 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/read-config-file": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz", + "integrity": "sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==", + "dev": true, + "dependencies": { + "config-file-ts": "^0.2.4", + "dotenv": "^9.0.2", + "dotenv-expand": "^5.1.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.0", + "lazy-val": "^1.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, + "peer": true, + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve-alpn": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", @@ -756,6 +3069,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/roarr": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", @@ -774,6 +3096,48 @@ "node": ">=8.0" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dev": true + }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -806,6 +3170,108 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "optional": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/sprintf-js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", @@ -813,6 +3279,79 @@ "dev": true, "optional": true }, + "node_modules/stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/sumchecker": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", @@ -825,6 +3364,124 @@ "node": ">= 8.0" } }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "peer": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/temp-file": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + "dev": true, + "dependencies": { + "async-exit-hook": "^2.0.1", + "fs-extra": "^10.0.0" + } + }, + "node_modules/temp-file/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/temp-file/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/temp-file/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dev": true, + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, "node_modules/type-fest": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", @@ -838,6 +3495,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -853,12 +3523,150 @@ "node": ">= 4.0.0" } }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "peer": true + }, + "node_modules/verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -868,6 +3676,43 @@ "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } + }, + "node_modules/zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "dev": true, + "peer": true, + "dependencies": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "dev": true, + "peer": true, + "dependencies": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } } } } diff --git a/package.json b/package.json index bb6ce5a..135a5db 100644 --- a/package.json +++ b/package.json @@ -3,12 +3,32 @@ "version": "1.0.0", "description": "", "main": "electron/main.js", + "postinstall": "electron-builder install-app-deps", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "start": "electron ." + "start": "electron .", + "dist": "python setup.py build && electron-builder" }, "license": "MIT", "devDependencies": { - "electron": "^30.0.8" + "electron": "^30.0.8", + "electron-builder": "^24.13.3" + }, + "build": { + "appId": "com.liamcottle.reticulumwebchat", + "asar": false, + "files": [ + "electron/**/*" + ], + "directories": { + "buildResources": "electron/build" + }, + "extraFiles": [ + { + "from": "build/exe", + "to": "Resources/app/electron/build/exe", + "filter": ["**/*"] + } + ] } } diff --git a/setup.py b/setup.py index 0d331f9..afebfbd 100644 --- a/setup.py +++ b/setup.py @@ -36,6 +36,8 @@ setup( # it also prevents assert statements from executing, removes docstrings and sets __debug__ to False. # https://stackoverflow.com/a/57948104 "optimize": 2, + # change where exe is built to + 'build_exe': 'build/exe', }, 'build_msi': { # use a static upgrade code to allow installer to remove existing files on upgrade