From 7e759845785e654dbd6901a44fc0dc9ad59dfa01 Mon Sep 17 00:00:00 2001 From: Jeffrey Johnson Date: Thu, 28 May 2026 23:05:59 -0700 Subject: [PATCH] Add board screenshots and fix refresh_seconds floor Screenshots: - Generated 9 board renders by driving the local FiestaBoard install, setting each piece via /api/plugins/pride/config, fetching the rendered {{pride.art}} markers via /api/templates/render, then rasterizing each grid to PNG with rounded color tiles. - Captured: rainbow (primary docs/board-display.png), trans, progress, ally, rainbow_heart, rainbow_diagonal, rainbow_sparkle, rainbow_arc, equality. - Manifest's screenshots array now lists all nine with captions so the marketplace can pick whichever fits. Bug fix: - validate_config required refresh_seconds >= 60, but manifest.json advertises a 30s minimum (so the alive Rainbow Sparkle can crawl smoothly). The mismatch silently rejected any API PUT that tried to use the documented minimum. Split rotate_seconds (>= 60) and refresh_seconds (>= 30) into separate checks so both honor the schema. Co-Authored-By: Claude Opus 4.7 (1M context) --- __init__.py | 11 ++++++---- docs/board-ally.png | Bin 0 -> 15911 bytes docs/board-arc.png | Bin 0 -> 15264 bytes docs/board-diagonal.png | Bin 0 -> 18623 bytes docs/board-display.png | Bin 0 -> 14193 bytes docs/board-equality.png | Bin 0 -> 14441 bytes docs/board-heart.png | Bin 0 -> 15575 bytes docs/board-progress.png | Bin 0 -> 14193 bytes docs/board-sparkle.png | Bin 0 -> 17875 bytes docs/board-trans.png | Bin 0 -> 14090 bytes manifest.json | 44 ++++++++++++++++++++++++++++++++++++++-- 11 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 docs/board-ally.png create mode 100644 docs/board-arc.png create mode 100644 docs/board-diagonal.png create mode 100644 docs/board-display.png create mode 100644 docs/board-equality.png create mode 100644 docs/board-heart.png create mode 100644 docs/board-progress.png create mode 100644 docs/board-sparkle.png create mode 100644 docs/board-trans.png diff --git a/__init__.py b/__init__.py index 488e0b3..3896ed2 100644 --- a/__init__.py +++ b/__init__.py @@ -279,10 +279,13 @@ def validate_config(self, config: Dict[str, Any]) -> List[str]: if cat not in CATEGORIES: errors.append(f"Unknown category '{cat}'") - for key in ("rotate_seconds", "refresh_seconds"): - value = config.get(key, 60) - if not isinstance(value, int) or value < 60: - errors.append(f"{key} must be an integer >= 60") + rotate_value = config.get("rotate_seconds", 600) + if not isinstance(rotate_value, int) or rotate_value < 60: + errors.append("rotate_seconds must be an integer >= 60") + + refresh_value = config.get("refresh_seconds", 300) + if not isinstance(refresh_value, int) or refresh_value < 30: + errors.append("refresh_seconds must be an integer >= 30") message = config.get("message", "") or "" if len(message) > 22: diff --git a/docs/board-ally.png b/docs/board-ally.png new file mode 100644 index 0000000000000000000000000000000000000000..1335e7162977403eaa2c4c48ee556538ccfeb3f5 GIT binary patch literal 15911 zcmeHOd0Z3M+7>NRr9xX5L_qYqKt(}8LD@nTX5+Z9*BoIOfOBRwa$#;Ubb-1YbefRfmw|_t~XJ*cvIhpgk&-=X3 zTyS=@oi%g8%qdf*%-XtT7ZqO^yo_Pq2RZ})_O`#jV23hZ1mi_ z^@xMRlojCn=Tj6Sk52haehBzm0RF(~*A%8q1D^`=wrf-W*gGxb+O$8uD=d{Cn7em* z{gf#dzii$3?XExtPMgCe&!b_C!K}=iS&<7{+h!kJy_)xhV6V}4FApEGzxugn__<$7 zwq$&1uk!Qp$LlqoJk&UU=cT9dFNYre<96<;!+H<5sKi}~Sa#_g@$;{uU%XH@oQ<#E zX7t01FW`sI{hf9P5UERr_o#)85U$_NRGFXKNZi`q5S%bbltR7He>00jI>K!gMdGhw zX6j!1Vd^{ocFns-9>Si;LNw}LyHA?Ba7&o2vz3D4oWK6f-*kT(OSkXDP2|xX;SEB> zan4rZ+dngpzWlI1^PNk{uM9fX{;R*SZ-00Ce|t_(uAcXxz1_`p{rWA{WRmP3#hTjM zSu~ujtu5KIy?_80nd%iYUEm_)4OCv$_Ga_VP_^*}^2%!NFGdm;MLXC>93i1**av94 zzre%AG;azwqbib8?+*F?ij`GXu^t!WDWwjj1Z_r90Olx!DuLP=IrmwqB8d%DKjU?E zyIFwrWoJoR*Jcivn`Pux6LVnTGd-<^3o~0NqN_6{oardBmsq4Z0Mtz4`uSWKp4Is`kp-4!M!J}D<_93gX*RX=I!hk>G-g zHkNG*Sb=GXxRWd1p;p;fG4=2!b?RlO8_J%84uML&*6-b@8#QXnEi(+pRAt)K6J^GH z?BQnUr~OoLX1kRI5D3 zXK`)Nx@;(uSsi zkFNckGhl#cthvP3mRG%>6V?RYj&#Ume0qzy| zW|Yq4$jATw%PD(u&Q+>{sgCu|ZvmHTo)N1J=4u7~7$sf57Ue)`Gw%fBUg>codT~R< zHXCE=UT|-5xx1cx3Hp7)RKExw2*bFU>egsoD>z| zC?3%P&1Wdj9wH*feM1mO^gAts=OUZ?Kyyuh+`hetxU=`CAC&4mTW!hKh~{5YKyy=@ zp|T$0-mAVGuqwJF>Di48iFvaJtW1j!969uERAz1B^8Bfvu<@KCt(+a<4xEU+p@mX}OBo%Y_1 z!ZQ*T)rE_R`Y}csCkR@Dg)1if+z4I=AjvQra!o0x>-#%qf}yA z?$ERQdjfc-5ep$EfA$L0HT{^~IkXeDXkBleU05rCS+1nE%i|V$VQ64+SXiHYIp+rN zP&3pbX`fDehFxj3CuXp31T39-jB^2?rw?xUU(#Q=B}91oQqptMb4ze*lfFC>XNKrx z%>ptW1~6p2$Envk(}SO`AJc?aeDbqls+RmNUnLEw0Id7q#^qX~IGoqhqw8kq2e5u0 z)Aw;CK#HF+$%Tu+y7nu4^$4u?$0jwd(Eu3=T?Y?=n}4O@rN0F%e%G9l)!>}LC?mBD z{TNSum(cmAMX;Vh)`8h01^9n?Q0OCUkaXBeHvL90(c!`{+~ZS_g9{A&wZHWx*Y*x$ zPmzmz!#@RJ5`%A6!K!TIE(z;xZSucOp>V!_(2KA`bQt7kH(~x78ABtK&W!k@ zmY`}OpD_s!jNKK(PE`o+IF8W|$U9CTc_d-OoSDh}2@r~BmSWZ3SF4f{ z#MdMu7P{{3UEwdFJ#IG>>Em{sJO)59Yq>uHpa8O71%PXDA<++kw+f1mt4^Nmo$Gk- zK9OR1#d1I@BVVTy?Pibq5j_*GJr&*L z#29(-t@w8rDiPz>BHj6dLyvV$BxvJ`g#kTWcbLbP-#Zs4PH|j>5$K{CdP*T_D(@Fn zoUX-5!Ev{$hv_HUi()MWyo!1+lrYG(3Hzk(CvpB9o#1PX3on|tj(xpd#id{eby%~x zp&Kkt-iCF4A$&i4X{!ldP^Sd(nt4h%{sK)O)ZwF#3ISW9l*W!6q=Sn`XV2n$f8)rr zf@bIDUuE{w-L~96+pAQ^#PpYqL{RZ(=A+e(xpTO|!jQ(Y9mk;9=K^ z4-O4+EQ{URUIR)t$d)l9)3r9clqT8G4B&3uZ9(h~N%pw{nW+m3B|QO=NiHU^l!jS$ z7j}UQBz?iVA+&XiJAuRykW66`4T`)g@+$HO^W?eZj4i1nP}%1wIv(x26ZRzrCS&`q zB%K)YmL~M?byqK?g#1MisWd7c3Pnj+nG8tGCyo@#5ABWDd)&$Ft#H|?pN(DQQ|9IW zY243#*dl#r5I~wJTKroi4ko;A8vF*JMcE84K+eudZ?NX0Z)$Hz(muF0)cIU{`TmW%bLR9u$1ju^0`ich_)iR;xoq4Czjz39URsoRJ zu7AVfRba%?>+CNB1dna?d$PY_nK+B3!U7Rw;yy~9;>He(xU<+hPSYN(t5?_^oe#j( zrg7zlIKU-+sf)b<^!{{fpYKXQCSRx8H2$U^GizVo>%9PEpISuTTDLhKJcElDUEYo0 zIdk^r0NT;jet^6UvDkmT3!1kw7FKNAuEyT{7M(VMtr&1E}00B+O{7wXJGJM2+RrZnhB_1e<{Bb*}PR5P(L0g zHyOe4ZoA5U*0_rDh z5B5YhXMko$v0$$wVpjhbP4+bqx&bI(tp(9HYWJ^`Bt|){x1@^?bw+^a*jWF|(WzkJ z-YYNf0#CVy+UMBtqUVysC!?aOKx#JOZs&Qf9-TvAi9{)X27%?SoRfPh2&{#2#UI@P z_fe$3xHk&cHBK-%svK`JwE^_#yr-Cc3(;sTY;`74mLy22yJDv1)W8q1Md-ztt9 ztC`PcMH-;Dasw-NvN{eXLs6J^^|5#x4-Mt#KNK8TvQL?JV2S#i9+UIlKDV*nOV9r3 zgLT2Q#bZx)mhozARqMayLph_k_*%_O%Ml_y6S@~FYd+nCi8{RM*E|sG=_k7P-{uI( zSZ`PFaQXRD;pwNcXQk#bnjg&bd2 zi@eHYtN_#SlBRU6EyKMV>=2;feDKE9C2;yJqHi!70U|$4l>?|BQ4?Q8f^;wv=7NV4HAgW5sPX$Y;T3Hp^TUlwtN#xSs^;~kYc&%-OPC*n@DuH&2(o1>O z+~e*vELs~bT4+O9RZXR;7I78qCBsc`31?Fs7MJYkG2FKud%adF#hUstpE38$b=zQW zzKw!ml&ADXu1s-;R4O`j#Iu&Ow*iq01Lt+}E-*GYs@{^hJDAev^ItRd0#qLnTJ3QI z43W&_7{nP8`v{x(y{+)*=s~)ca$cmyZU( ztLESBv5O9XF|XAwb=L(z;I2Em2sF27nV+?8Z6; zy04Qkb4s9txX ztBvLXWcOS-*YI4?b1n<9?L6;JQ2B4*SGh#A{t3to*6)?b499-5FE^--<7R(LLjRun zo1B}Cj075P0S`~^OhBeStn>PInc}sUfafr(HoNKSL`?3#b=3s*KNfV=%EjXH6+mRm z(^ih2>uGK#m#ZF|ywtj`45u?clgQPQ&h=$ga>J26`IUj526Aq%#W^-UL{S)Q^l^O9K3O=`e_Ib2Q~QW?C%~J zSlw3Wr_|l7y3aHXt9AK-6HjAXW5Q||h=j6ZDY@(j?l#EsUtOmiUVW(JtUTHd^7+$l zz^2?IBO6hNpQ?2C(OokL+I?j-KNtk~VoAI4k`gG$F==yk6Q+J$>=Pm2Sb;GF!@Cqp zyo!p-j$w8$^tIaEqfyMWPkJHdYleBd;0TmcQ<)>$4dpo07{R_V#`t}SjF$FLq4S7F z1&f0UNM49rN{p<*lnK5juSH!06_q2+y;5CuZ0IH=tLn)5_L^82EnRypIBFcNDhA0}zp?K*L^gQM z>IabWPT3W|3y}@Zd9mu`?T{_c&f8 z?xk-qv#Gl-%MwoT7aeGksqzKvc9k)n#4_1+%M5#+@j%1vYK^S7r4Ggft=1|TbS>gO zFltj&MimctKJw?4YOrE4vh`?L9wsxLD?7|qLCRzH!^6Yz{jipJ&;|t;P0b1^xGRL} zj~-98s8n4S%q2rQVXq%)+o>j76c_I6&;vBzPCG>0$;u;0%=^CsI+YE)|L55j&$%0q zb289aGMt6kstS{I>e>@dNfn+9zD)7&!V??}WOxiEg&TGd3R%~v&8D0%Tw04c-za_o zR4!4K*rL>=i9cuqh2+28nNZA#_SP~j5QhW0m1Tf^IV_i~tg6i(7q`Qy`Q(`9@%j{F zOx$vCl6BUqq>~z}b@CbTfXr25cLUyI-GZZGim5p+{1%{U@#QS6N+2l;K3!j-`p(|& zUJAR&Q4-8ISiBb0Aa9W`wO^zmSJh4ToH_WG*YrOsjr9}cJ0Nix9gP@EX}~SLO=;>2 z#a(WUtrfcgp=21DepFvV6bUE5J0$oeJef3s0i{Dw%rr*b|Nf&o8=^Y+F~Z05`p4uM zT}96h*lGb>?;qK^e7tP+VLd9ohmdKO0m>X7l)m26$8*Ak$p~l2v&-dUHT~@O+;I!O z>TlWV|A}n%X&NC|J#MAJK8A@OAyQQ-+S=uyYz69x|B13y8fx~%Ppx@r$}8QhVFTBi z*XOlCQGYU}NIUf9vVbMn&S!u_c_viNm7k|qc8d8UxVvXvKdXXlaV}%M-?xAlOjwG8 z6ZVF7K2rpIWzr{ij1e8V!nN)4h`fCFk)rDxj?^U&WB&u=MDbbFj3mkl&nv&r`b)O* zgI_E&p&7XRT;VfREcIe+tB4E;-0}D>GU?t0xqh?I1e8^9FC|S*CSjw`$p(-ANXHB5 z0d=R|s9RSZEuWTn)5%%dW&X=bJGGpMXV0F!y7E--hHA4%6{*rd@sLYdK|vhcxTSF_ z_%~fqJnPkdjgo3^O;oynw=FqCsa;xhmjY3YDVv{%8ivS2u8EAUN-xM`EO@&A8u)k3 z3i{U7`)qe#cejBz#c$OM0SHd(a`LU9byvQ9kPJ^p_sp2iO)--V49;Mt1XoU2cH2oV z^a*Eb_$T3Jw}q+~i4NSZVg#RR88{5-zhP87jTMbrs0MDwEb`WF9N&i}rI`P!(jKVa zChSP)|1pBF4s|d?l$ygN)UI<^v=B?33i=NsPKMTk>0$w$OB=;|qjTAZ$jnm8nR1=W z#ARqMLie`{Crl6TW!Q-8f9PE|&fw7p3J66lPre$5+X_Jcn&yn&fn;_EDfic-n1U1J z($Z2FT;&Nl?QA>kWcg}jWPP^O%+xfPKUhHPqto^^t%G{$`A>ri)7q@K`?0^Z2NR}QlEfJ(-dpD7*(%tDEJx1_PKcB8( z%d3>ffv$(8g{kgs?pA7NcrqCMwAc`1K)#w83@5Le-=z&z=#7z)kt_kHW&JZyQk=nO zpZo%A=mlMbMyT}~43XJUZbx4STYt^Vk)A!`_IS&L94QU=s0*lKKG)stPyMDOPC1{Q zk}>wxPdGeGYNLeJ5VQkv@nN_C_qM0DyJR}W)r{mzVe@_NCCaT@NwD}IqplO%xa9lT zRQ>@I^(#Fl8@_FnzAYl7^N0eKX zZqzgzgGHZzA$BSN6{4wk3&`pkm+zSg+(=aaB&YM`*ooE|3%JWzu5gcsUH`iHg&XGHR&uUk*l6ksR2fNtL)QkSwLT_WAv7$+hWOWqli-7&qG4^6t!+Cqd`a#!`Ka>rF>@CFoA;Zw z#>rtG{x`6TX8q!~ecYn|+l}@A#f|l8);Ca{$K&xjXXS-)(&~wX7YfF$`@xb7@SJ{i zv$Sa0M2EcJ4#is&F$vWM2sP%>g8s+zP10P_!hjm}0f$ylSLHWilR*@qahY9 zV&h-Gid)4G7XX#KM;kISx(X$g;p z+E!sp3ACP&G-YWQzs~gIr{ljVq`L-d0-WTP6|zCC!k4aR0c>!4f*GxRz*q~}v46$_ z5C0~VpWp$WIdA2@ba z9;kJ93=wL5QP%(U>_n&XG9l3^QzITKD@Yzkwru<53Q&mCXhU;VW zU5(I$JJZSdnEX8hThTW*At52Gj*dm^pd6`L)3Vpq$E07n!t~_Pq>7gI$r6Zd!_y2C zxm%A()%OnXe*Vat(Nq)%7nzTlnd&ju_Xd>wDPXzC1*|Y^2aFcL95-~K7vM=%=pXfv zZi<=Dw#${Pny;SLjN?OHK)8xCIlXBd#LAtm>RVK{BZVtngVicLEek>_`1gz)hgZFEc8Hfw8}#Eu#5LBk4kh36C1IHC~hU)G=8Ljoj7L9I)0tO zu8|%W$5KZ32iF(c)@v*b+-VvxU}QtlTq`ZF#n%ZjSd%bexiX6i!8$DB0UYIY*#x&g z#x~`IQN{*@kpT5jjzfRYCxmu&pxSSOYbBEGL4jlou--R&=eL$jkM{)+J|DkYLZNvuH4Y$m2fi z10aF*)P-`91?M;P*dP>p_fb#f?VzkcdNCvK53|)x#u);d417{$LnGSKm$(I-)kVE+ zp*se(WkZbYFk%B%FO38BQrf)eBr)gfW@!<&CG1S;O@@9NhYXBVR9OLoP9r5*;%ene z7`;&J1Kq5L_QN4tl5m-3jV_zHUB~{cvX7-J!2b1zY$cpPwi+{Ty>(-CcjLxPxXAhrA7@Amdl4fWLpJJRhnu>wd(4` zi5Obl=#=z7ZS@~h%np3 z*0|2R$L7n%N|S_eKk5E$UHbR*iCF=4h(@9>Pv82_^r>~dc>8F1g50`p7_Vn}353{B z)pg$M&$e8y_8|#r%*}mr>{+EkCpTPOf}IZ}v-f#7Mbc{Se?eBeHBz3S3;<`so9yxM zMR>>4COUddyB34s=IQ&pTpoKeOdB|BUiDy$1J;T zV~i{AzzLxpJ;&V%70R*;t}sirQ&LhY*7@wx_wV|%XdKGsJM(%dn+DqX?7hb6Z26hbF<;V~JLGBu zqnYEXTo5Mxjj@2ff3+8sfAJg5KDmB%>gBq;xME(TZJkoPtc>@1Ha@FjVQGxMTS@df zZpPU}%yS>9ga5E+4-<1rAIE;2ZU2WXlb41in@RFmF6~3!EQjue4w%3W2UhC?>KARk z&qtU_=4%-{>qm_;nWSq5ZQ|nWVa`80yD}Nhx&0$Vkx1k&l&Zj^n;=igX>v|$9&pQd z=|6}?cuN%&nYzv(WOtuG>@|*m4FQ>|DyitVarH#`dp=(*jYPhfZmQA-Xib@(b4HwY{pGgC2--c!u0+;Zg}#SlZ>J@e?#7jvm59mXs64# pvg;G@-cw@u>o5Ner#f7wTycY_F2c2Y$Y0Xly2){4j`hJG{{uxOLY@Es literal 0 HcmV?d00001 diff --git a/docs/board-arc.png b/docs/board-arc.png new file mode 100644 index 0000000000000000000000000000000000000000..cb55c495024117aff60540c8b2dc75823dea0dd2 GIT binary patch literal 15264 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 p@JEU1?_0yljQYIL-qj%(o{{syjg&hC@ literal 0 HcmV?d00001 diff --git a/docs/board-diagonal.png b/docs/board-diagonal.png new file mode 100644 index 0000000000000000000000000000000000000000..77b358cd9e689e32490f82949dfadb4c48b43ae5 GIT binary patch literal 18623 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 DN_;ZD literal 0 HcmV?d00001 diff --git a/docs/board-display.png b/docs/board-display.png new file mode 100644 index 0000000000000000000000000000000000000000..6e588d03bcf642d267ab07aca3768d61fab95100 GIT binary patch literal 14193 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 F{{Tj|Se*a> literal 0 HcmV?d00001 diff --git a/docs/board-equality.png b/docs/board-equality.png new file mode 100644 index 0000000000000000000000000000000000000000..fec9ae537a09baac5eea431a3b822db7fad572d3 GIT binary patch literal 14441 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 literal 0 HcmV?d00001 diff --git a/docs/board-heart.png b/docs/board-heart.png new file mode 100644 index 0000000000000000000000000000000000000000..188af26f59f4ccd360f750d96118a74b19e445d0 GIT binary patch literal 15575 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 UdFiC~rQ&6a9Tuf7{CWR>0aPHX5C8xG literal 0 HcmV?d00001 diff --git a/docs/board-progress.png b/docs/board-progress.png new file mode 100644 index 0000000000000000000000000000000000000000..6e588d03bcf642d267ab07aca3768d61fab95100 GIT binary patch literal 14193 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 F{{Tj|Se*a> literal 0 HcmV?d00001 diff --git a/docs/board-sparkle.png b/docs/board-sparkle.png new file mode 100644 index 0000000000000000000000000000000000000000..a91c4307d2265fa8823487b43331933389d8d230 GIT binary patch literal 17875 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 NLDL^{51jhxzW{+{OdS9K literal 0 HcmV?d00001 diff --git a/docs/board-trans.png b/docs/board-trans.png new file mode 100644 index 0000000000000000000000000000000000000000..11a00e2159c62016e355ac160cfa0d3a863f9728 GIT binary patch literal 14090 zcmeHOYg7~G)&|srN);_dS{0$TO1%K5t%?;Pcm+x^E))>C#7nKUSb`N2NXU$MDJm*j ztEo~z3ltF{3L;2M21QB*g#v{r7y>ASaLEJ+ncODxO|bP$&XTXLqZLk1e`MulGnYN@ z%6|56Mqfz*`vEFvh@ zaqO>%fwN@cn9hYKzs#&TF4yS@IQX?}zfu_8d^(WnL=%-?Le5DvA zkyC2FY*>Ron~O^dz9;R8@~=C60?1Vv_(Q8^^UfEoudnUj5t+G@?@7h|9gxRt44#`v zt(kW5rJo|1RrEdTwxsIwQ3f%-b6Ih0gc;e>orpg{=W)QabX{Mtl7KF;_Bc|7wak%t z5RLQRz;WqTT<2*bMqVC+BdPt;S=K}t3O|73roVEn@O7dC*KC{JiVkF?y+btSti|DJ zyv@bHnFJ6lo`M5vf$ZCecZo*J@i=_8tcdg?0^|L?xc^g<|$P z11E*s3U95eIYBh~zlWpf0rNWh$pn1dWQO}681?ZIB4{>`A2Z#9BRgL-i@1Nozp3H) zkI$4812+}ovF6}gShW5}irKfmul#rD74eZKR_;!P>gZrB9{se~FKn_eIh>LROt$&H z>Og3DJ-8CEWyyI|L`bp4;V1Z9gZn%@I@S4Z0lu#+5`T;L!j>x)o7dtio_vN%07Rxwd*#i zU4m{0a?`x&0Z)5?(&(bRE+$9Elb7aUpDCqI&^67?L@-(&qP9LUeT?>)hu;{j-!ALm zyYRtJeT%7K82~8 zkvtO}Qc?9qH%%vgG^FESWQ!UQ3IkoGyHIUN1ZtA$3}G2aQzb#_yci1lP223p^cA~m z?6hmPaNlZuzGWcdEcwxDViKCtEyWxg*-MW|gB7MNtT-0Cj3j3UJytG+ww_!#4qCXe zOwi}NDBz?lFf}s9en{h;(`fxe@f<-i>Q;ndE=8a%TX&y+pB}AU0hO&%FNA0TXZr%@ z)(Lt;+39njbRU-W5T>v?ssv492p^cInUgf7>$pv-pvcVbN-M{h5lzclWU_f@rxD~#$Z>>SmT6GrZ zC3%Y5LPw%w(nGk_C3?~q#F}knY%b0i)i=#WT&JJ#X!Ekn8P>#&RyR@yMoi+iVZn_o z#L5GQAFB(B>heyXGl2bCzdx13KMOS+s@w3|3kJKoxaOet!kEhMq%Ty+UALOS*Ve6z zBcIXSNd+5NvVC-#BiJIKnFCVQx~5i(s&42lzUCgM2avT>X7Jd6`@8PO&^zDw8biK8 z?pFQIGXpGTfu)fV?+!)`nAW6^ z33ew0x3P&}PPjt!HgC;p`YHo^D9-Q&hp#6S!DzHpk49_Wq2~*KT5N#8JT5~K6X)THKVm3)4Nip)z5mQj<&c*sD&ir_molYyBZ~18#U?-H{I*&6}T!7HVldzvkC#KqPyP-Kie*r&6e$oeZ zol=BC+At)#!C&R#-J#(0bA{p^ls06+`9`P`rln-CPKj#whha;gMpm-I7a&^{pkTje0i#e!TpBR zR!W`-0H`1$@ft45yz1iX8CnNpP_3!_uz^s}<5Bh(Ey@4abq+n3sC0&#rm^)B;duXH zl?Zi05%gfhND^olq-x}A%+hd{Wwu`P`L^LxE&B#5`^|zgo+9M|0UhiWi|+H3vX;Ah z55VdY_XHZG3ZyjgROVFcPdezuy|=Bj$sTzfX4)z5yY$Wk$Y}xcF+lux$x)LbyPElG z6KK^Zd7RiX9cvv`h_?~mVZbC zssVN7(w2RugA^mdRU3|^=z4iVkO`Zr`07~|-ao@%x2BPmNw;Yq-hRI2H7UKu+j065 zecC=*hUtDHLH9Syx3W>EQYfb1CIRrdC@NcCfU!kAu4K(zC}W&Z7YP(-miA<6lV?Y0 z1S+Al|0<`CdG?ncikQx=s^yo%JC+xKNrNYJ`k~1*N{YNI4_mXSq33sw5vj0N1kb>J zfp?t%?s0-o|EN9v@j#@uVcU*!YUX-M*$}3{fj|bB5kkjhRvmpcT;Yz34L+>ll@bxK zxPu>~*L&*afz^zgu2u?^5o%&cAsg+jZ(Yh2jGX=3^0a@WMfEb zDpKXmE4FnlCeA?r2N&4>jbD(SylIRmuUtK52{NWJz&6D8`k=A z`NJkf**Ah6?Kwm#)UA1xoD_oS*(E581Fvcvv4LqXheklkeriznKh;+%bcwA_U{{4ZX-*xy z^?V~%@&5}FLn#=MSpb>KA*%=Su!#~~iX^1dE|nCY|3aNRy{H0x$QTj&KoK@-^~jJ+ zYC-RU9nN@{_RpM(c$T92jMVs}dO4^PG`NH?{e)pQY)ihz7fAr*kA7gwAD0t4FM*YLiGuGt*> z93kn%*b;^_dd%aP$@9n){}M9x+H10lsx2H`HDnKxv=H-r{EQ|7piMu4Nx@}wjQRsY z`dashq^eC#IpWG+53QK|AD8ysZbetmbs5rxC1Wae?niS@RtFOYq4pGS#5qO&mK-~x zZX4^Y@B3P;rY`@t?ukSH_As!aZ-_CG25D9f)*J`-0CGhj*IlGhNHrq0T8h%4-CZ|c zU@jB-*=8Z5#~)-O{ZOxlYg$EV$E+lAB;cw>KLf)Qb9D2QYJ8$l?eEn9IfPJep;m%4DOC&E*7xRXk9pU> ztF8asno=>OF?SoZ5Q#3&ADmr0Bh|$Qskc78nndu2YQ$5`qR1CYN9diA`U`>ES+cM_g^(*_`lxJczy*X7H9Y*WeXGe zDP7--yfwVNNc{x-$Y?g``3*jb&xLg+I1%qQsdL>JFuan@;5z{=2{!pJQI;S@%gJ1G zKvpSjbJR9SZ&ta0<$*D+XHcgSI;6@Mnm1`HUVd*x-03isCpKl{Q%)P-7g!h!S|#ZxwZ^47y=_1x z^6{~-(9$5X0h6HXr?2deH0?JKa_jN=?;OkBE(UWL5A_pON&jS65GTDRZJ386mfzh0 ugBmVeKY~WT)!}W3!+$$FdL-;DW&=psi|2ghiRj-$^IWxNWzO