From 338c18df16d354f08cd8dc74b13dc1f8a5e13c60 Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Fri, 19 Jun 2026 14:06:58 +0200 Subject: [PATCH] Room list: add release announcement for sections (#33800) * feat: add release announcement for sections * test: update screenshot * test: update tests * test: add release annoucement utils to close it * test: close release announcement in custom section tests * test: update release announcement e2e test * test: add more tests * feat: update Ra labels * test: update screenshot * chore: remove stale screenshot --- .../room-list-custom-sections.spec.ts | 5 +- .../releaseAnnouncement.spec.ts | 49 +++++++----------- ...nnouncement-Introducing-Sections-linux.png | Bin 0 -> 81651 bytes .../src/stores/ReleaseAnnouncementStore.ts | 2 +- .../room-list/RoomListHeaderViewModel.ts | 24 +++++++++ .../structures/ReleaseAnnouncement-test.tsx | 7 ++- .../stores/ReleaseAnnouncementStore-test.tsx | 6 +-- .../room-list/RoomListHeaderViewModel-test.ts | 35 +++++++++++++ packages/playwright-common/src/index.ts | 1 + .../src/utils/release_accouncement.ts | 17 ++++++ ...play-section-release-announcement-auto.png | Bin 0 -> 34894 bytes .../src/i18n/strings/en_EN.json | 5 ++ .../RoomListHeaderView.stories.tsx | 30 +++++++++++ .../RoomListHeaderView/RoomListHeaderView.tsx | 8 +++ .../RoomListHeaderView/default-snapshot.ts | 1 + .../menu/ComposeMenuView.tsx | 41 ++++++++++----- .../RoomListHeaderView/test-utils.ts | 1 + 17 files changed, 185 insertions(+), 47 deletions(-) create mode 100644 apps/web/playwright/snapshots/release-announcement/releaseAnnouncement.spec.ts/release-announcement-Introducing-Sections-linux.png create mode 100644 packages/playwright-common/src/utils/release_accouncement.ts create mode 100644 packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/display-section-release-announcement-auto.png diff --git a/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-custom-sections.spec.ts b/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-custom-sections.spec.ts index 29f95276fb..90eeccbb56 100644 --- a/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-custom-sections.spec.ts +++ b/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-custom-sections.spec.ts @@ -6,7 +6,7 @@ */ import { type Page } from "@playwright/test"; -import { rejectToast } from "@element-hq/element-web-playwright-common"; +import { closeReleaseAnnouncement, rejectToast } from "@element-hq/element-web-playwright-common"; import { expect, test } from "../../../element-web-test"; import { assertRoomInSection, dragRoomToSection, getRoomList, getRoomListHeader, getSectionHeader } from "./utils"; @@ -46,6 +46,9 @@ test.describe("Room list custom sections", () => { await rejectToast(page, "Verify this device"); await rejectToast(page, "Notifications"); + // Close the release announcement about the new room list sections + await closeReleaseAnnouncement(page, "Introducing Sections"); + // Focus the user menu to avoid hover decoration await page.getByRole("button", { name: "User menu" }).focus(); }); diff --git a/apps/web/playwright/e2e/release-announcement/releaseAnnouncement.spec.ts b/apps/web/playwright/e2e/release-announcement/releaseAnnouncement.spec.ts index 8f0a73ebff..e73c5fa7cd 100644 --- a/apps/web/playwright/e2e/release-announcement/releaseAnnouncement.spec.ts +++ b/apps/web/playwright/e2e/release-announcement/releaseAnnouncement.spec.ts @@ -6,15 +6,12 @@ * Please see LICENSE files in the repository root for full details. */ -import { test, expect } from "./"; +import { rejectToast } from "@element-hq/element-web-playwright-common"; + +import { test } from "./"; test.describe("Release announcement", () => { test.use({ - config: { - features: { - feature_release_announcement: true, - }, - }, room: async ({ app, user }, use) => { const roomId = await app.client.createRoom({ name: "Test room", @@ -22,37 +19,31 @@ test.describe("Release announcement", () => { await app.viewRoomById(roomId); await use({ roomId }); }, - labsFlags: ["feature_new_room_list"], + labsFlags: ["feature_room_list_sections"], + }); + + test.beforeEach(async ({ page, app, user }) => { + // The toasts are displayed above the search section + await rejectToast(page, "Verify this device"); + await rejectToast(page, "Notifications"); }); // There is no release announcement currently live - test.skip( - "should display the new room list release announcement", + test( + "should display the room list section release announcement", { tag: "@screenshot" }, async ({ page, app, room, util }) => { - // dismiss the toast so the announcement appears - await page.getByRole("button", { name: "Dismiss" }).click(); + const sectionName = "Introducing Sections"; + // The section release announcement should be displayed + await util.assertReleaseAnnouncementIsVisible(sectionName); + // Hide the section release announcement + const dialog = util.getReleaseAnnouncement(sectionName); + await dialog.getByRole("button", { name: "Ok" }).click(); - const newSoundsName = "We’ve refreshed your sounds"; - // The new sounds release announcement should be displayed - await util.assertReleaseAnnouncementIsVisible(newSoundsName); - // Hide the new sounds release announcement - const newSoundsDialog = util.getReleaseAnnouncement(newSoundsName); - await newSoundsDialog.getByRole("button", { name: "OK" }).click(); - - const newRoomListName = "Chats has a new look!"; - // The new room list release announcement should be displayed - await util.assertReleaseAnnouncementIsVisible(newRoomListName); - // Hide the new room list release announcement - const dialog = util.getReleaseAnnouncement(newRoomListName); - await dialog.getByRole("button", { name: "Next" }).click(); - - await util.assertReleaseAnnouncementIsNotVisible(newRoomListName); + await util.assertReleaseAnnouncementIsNotVisible(sectionName); await page.reload(); - await expect(page.getByRole("button", { name: "Room options" })).toBeVisible(); - // Check that once the release announcements has been marked as viewed, it does not appear again - await util.assertReleaseAnnouncementIsNotVisible(newRoomListName); + await util.assertReleaseAnnouncementIsNotVisible(sectionName); }, ); }); diff --git a/apps/web/playwright/snapshots/release-announcement/releaseAnnouncement.spec.ts/release-announcement-Introducing-Sections-linux.png b/apps/web/playwright/snapshots/release-announcement/releaseAnnouncement.spec.ts/release-announcement-Introducing-Sections-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..059f80cdfb97b60a88b60fd5e99c8d2c10505cc1 GIT binary patch literal 81651 zcmZ^~WmH>D*aaFY(4wUjC=_e4;>8_`TX8Gi;_hytIK_&)y9Rd%?ykk1;O-&GP2cbP z*8OqUJwG_J!dWwOX7)U?pMAoV6r`}wiO~T70G5ojxC#L964`t<`RW<+_LW=~1ps&h zkP#PAb5B2BeNCaZ`~h%ol$JAE_Z~mbq&W0bzM4LUjpy$L(X>xXb%*t5+VxK}mvz&U zH%fw~Aq29~1WU#FFPVaei$|qT|H92olTq1?zQ{iKPRwMqX10#HfT0;)m5vq`bdTz7 zL&FwD1;3EPDr}Vh8y;}Zpe+9H{_pxq2|)SsKTUw2B+9cN|Jw#cK6}yme{JHIul$fR z{_o;Ie*<{_zisn(6adu!ZBKsw3c&o|cDAw~;Qjx$zvlh_4dBmK%1vEBZ6MdNleB}M z__nX0kGlB%#WP!K>X+29&$Q%~+rtc1U%m|OL;*xk&TgBPX6A{)kV{~NZLJ!pDbh05+F^+Q&;W9T%<9sWutRoL!NslPV6 z36^>vjWpSs@owGB^j83Yg7(H!BW#8AgVPQ(wkJljL_yz{VgmYa^kHM_n?!lkmOB!* zBAowL4&Xuo0VM0lR-xCT%Qe?1=K8&h$Cu{Vou`seSL1eUQ)6Og{^|2HIzD0s@!535 zxKMPEdHoEamXlvB{i$SwywnqqzJRX6#AyX>uBg;NaiunMSV3pBul*=1p&piI zK($SkPeU&uK1E)JhLySc;lG9V(~dC%r0XS1#CtPI*62^De@0U=FI=ffQORKD*mW#< zq)Ups$-Map!RrXNm9P>~(IC+M&cHzT5%3jXqOZ^YbG(k)^+zZkw!Ds2!>nb&R2$LD zp|pGuEt#64$saGk)8o%Ql%yZ&H@ka;xv7*TB}(SltQb7pl<8)N$HI*oG0>yHLX64b%T4%L797Tub^`b7SMd~nv(RiyrKgliR3A%9 zFjGx<9Us2_&&-YU>TFl})XsD%+y>qn9BN-R$8P0r zm79^za;6==pR1Y21Y{SU-yl&1IAu^c}oS^i;+`eE!t;q6c@sOS+Gr; z^lo`7hnEO&C>PRTbB<3bjHScw_~bd?f?4x9;p-QU?I9?;6*F**T1jvade7H{=zxub54KZ5NdYT&o0Nf}VfPAKBlE#YV>Ez2m%DRdM6T}HQrP{i)`nT;V zcdX=dwF2`=WoWiIsTN^K;~H@8jG|tM0>DDfYAT?YHab>y&D6MB$X88GY1Vu(w<1bo zf%&nJMsj$#9_O{yj{e`c1)N&_HQ%@)P+Or*_F}bW>usU-9%baDn;KNIYRzH&ZGnLa zQCvoY(aL^Z(Hej44=OrTwZxp7SLZ|F4NDc-V`hMk5Ay>Pqi&3N zJyCN}bkK!3il&JyVNEr)x0t9$eM`T45#y3e_UWlQ!4;7xxd8EcgR z`8DaP*Zt?~t%5u9@0_WnE)1ywt4dd=tAE-AJ!2i&c&@jLCJaNiq}?y?r}VB(+Br%y z`~|up(EwLh{ZoDgnTtj_N(t&9(+aw=`p=mVnz+>B?6cg&OKA zN=>tQz__YkBi`wbdyift1UKE-QIV06(aSa9qCGP?EIUq5H&wHQL`5VrrBVX?)anw) z49wb~qvKWz>Pc*=j0TD{>@#KynFzye`;e-lDD3uiI}HrNal4ro7t#?53NLlZ>O5F0 zrKF5ZPVtVHTCkduT2mdZ>%KtB+VAVlZpP(iP3pOq3r<+C^sKbX;wYi;l$j*`PkFf8 zQp7{fNqBx)QGZ!l842nAUw_0z1-FGn$Fk@}4vl&u>c47R3E5~{Eg^*Rh5QAN=h7Ox zZJ*{^o$fZ>u>B@N3`#7n!#8El10C0C+%pL&^YSD9TwTOPgVxDi#cV=m7rdx5#oJdP zPi_u5$*y_!U!LgVB7p?^HW^-?qDd$%#qc>c09^Z00>v!a#Nvq;aj@I_&X+LgH;;8- zEM8BX)OAgK4(ca;abFpI)q*7sG6uapFM_;wu2Ove5kcR}(N#2=T)`XugD8jlcAsV9 zM)fr4q5e+7GLAvVnEL$eiJ{PFgPmsNBlsZ(L1PYyG3!@NinhMXIIZ)0)EJa$1qxnz zZW)>C$E3C>py4g!1~57sd-`X8*?x>_cU$_F0Lr(ooOm?7VDc)@~+)BUA?S)PLeO`~}JNrw3}Wvn3ZPpali%-CIRZ{P`H5 zL^@0%x1w{x<3LMJ;1E9L*1X2FN3hQ0YtRp9>Ud`?{A#5d@v#KBEFu8qdU-a6V zLa;aJ%loILSTf;NxBEawqYkeuJ@T&1uXvpGE22^7My}&h*FGlgP(RCpc|2KvF@u9C z(4;US%jWtG?sEe{d+5`idG!>iI5syH7Kd>C&N=Amsi-z#Ne&pfKg>I>J0Ia~!u0tkHeL=10+^YZhsGa_XH$MzMvXA7v^W7JO*M2#PlVb> zb*4Bvc7T0%DV3{D^%l@Ik6PVU*Qq2A)1Y#%j|lz;-HPz$vCn0up>c`Mkn{06<=S-U z(bwk`{CIX@U@0`hND3Q= z*jTTXO*-1zBqGvj%^QA6M}Cn=;orr2(|bkb_2so{^dMoEfY7zg!`ASGGXP&a<5H1@j4U&F5xq#*l(VPpn; zqt=S$N6x%8?6N48=v76VUs#wr0w(}C@puFUNzl`;AFwV2Zx78t?wJFQx3}MaPnuEy z#|h~Cpc|xwU$kiJQqAxOG#P}Cmp2>lTFa`Gtt%BLR(u`NMestqDiCb$r0-@Zl_ z0O7g~pY!#*v^d(MHgsWXU7-Ho-ROrINz6kN!>N(sA(N+K1&IlLlLfhvrHv%@WLH6| zeL9oB-NH$&8%9HIh{5Xc#PO`ZAEAfMM;4BjekJFycB2rM!usQ*O}4L%iJ(5F0I<(J z|7VNhYmk|O!g$*Q@Y7J;Qk}(89o=a%KX4PWqN~=!CjELPpW~GNHs~`>kLqs>B=*%) zoey|p<8W}sJ>BT9q+Xl#lVkstoj(b2sM^ja)&kC#k4{6)ulyb< zZgp5JNa&ot0-m&M))r_Ands?-@CeB4A4y{4xGLz27KN%Tbw56s4KOic-s?Qk=ry~a z)&!9mqLB)_G!z%V8k&g09WajYeJT4}&TWZ2NeEkE=vb%G`ms&D^~}3eZ&D3v=4V38 z!hO;0L<8j2dpw$UK?ky{!OvWAhkbodxvVB%Y2UDaW==rhQ}Lh4F+?uaS;pN_Bfx1F zd`sF2Mw0Y&8cl9~c-?pzB-rHqu(N{w3nR&4fsx#95Q(dhB~9pOwK{0)w=)Bw@^aVf znMPh|y`u22ii#>p2HFz^4-?J&;eFmwi+E}lnoUh>-{~B}ZCHEYf`net=-n613E39U zP1(!1g~gzE6_x#aFw`4*kfGjnf(PUrp&;xFE0NaH8yIy>jcX>L$^=S2*xB{B+f19Z z$)m-fkJ2+SNR$QCW30IDqk>Kq_kRnsxVol8rapSyt?`dNx{iZ^XS_Ni4hM~5 z3bEbkw7;NYWThz+j^u>~5Gj708STrCfI0%h5Ltxh<0*eAUK@{-%1w97R8CJ@Ga04i z66`kZCW*y>hh)6N2ThaF;FA|ozHZTcG5G6a`)GIfRw|80;6kqn*ouwmqW<&Ec$zQs z9%qVl7507O{v6N6?PV$*J3^)>g9<%t#M2Y9GJIe?td$jGGxV|qqA|Ma{L(=BkGV5n z*EcVB)45(u*Nx2e`qpd1wziml@?5K8v&kUQx2xh$i%D;XiZmGw*_vNXT|oS~lRB6} zyML|;wQk?;BIZf1GAv~))FOt(9-MmazJt!R<6=bq$jR|qa5s$KxEm%rT%e{&ZoW;g zOU{$a$|rb1`W}QrIR_y{xS4K3dmQ;k6mnjDGvYS~JejGAtyTy56%Ox4b-`O6c|Q@Pqr= zW}d#_w-|vH3@?>G0~OOcGG>px1!;W6*%OU4Q1a+|6$|^dA`lL<5NG|-C)dnonSW;d zTSWl#jS)?0g|?}m+@Eg_7X4Sim%ISSwDoVCgF9S;(8f*fnMY3eXdI>%{oPPgHt|o$ z?l#M_(&l&w%f))>FPNw1Z{L@Uqu*v{)#6l*$2&LPnE3sSOCsd9=6mN%8>!B!Iw03{ zg3~-?J2zqRRHv+Avv`MnhM@hWnbP*h1(M|>5*DN<=|1Y5!CjCvJQF_fDbS&GlUQYt#h3T;%n*Cf?~3^$-u>|syk zGdnhr?77OXmPdP|1ymAO6~?3&y~1rt&ip?tgwYN4R$HL`XyRY&o=AH{^Yt0>$krmD zXZlZ54to21J1f?rPUlO{p#m-22QuxDGbr@BvO3t9l^tSirEvZl4BMXr>Y!0{`Ae^w z-EY1W^nB9{b0gkbxmde(bNp5H{%vsLrs)hsa;5ohU*WH${zr0s@9f5l;r7-rx4Z_d z?#Az0jfm#H@_~h$U;Q$kkDAtsRJ^-7=pH{NL)(W2b-^x;6psmc2AnRtWl^RRlo64a()iWbG0h+1W%#vby9TJ5;{w#Md z12LJS(fqwLuFW@@+M#fE95|XG3=}tuWa^o%rEFOUwRFD6~b z7L@0EqGxYZ`jT5C*(gFeTJNzMlx4V;xxw?GNb3ZT%X)kyT@oC<*C^7jSPr%D7cp%i zhTdg(r6llwO+%I0$QoY&1xcrr7BWIBRYgkm(6A0?au^YGH~j+(bqpW54YvI#Pku^f zN*ocm2!9=7frK3V}w;)HQeLZRX!&(86 z9cGumtPARx^8*%3ar|gi8t?8-0z%OJ{Oo3Sh?r zJhFgmTp-Tb3yUpZH}Yrg`rekII>MI`V41J7q+yN3(w3(6aO1nn&g|;TwF4bBDuk}4 zPK!nyjitYH-RhSQFopHJpFd^n>%x2k7wp)TD%ysAeBzY}2kP9{I|fQBGTcedB8Z2iW7511LGWu&V?-e*2W#{%x!_x0DCWigtJLa_8 z`@hB3;docJ@%lQB^%$a;8b^Td?Q|@aJ3BJp^mliClr>5hY1F4C$vI?ze`bp6@_W-R z?kdTIdqr#YBBylrXt~(?y|g0s2W{NBmF*{URR$G0JYZw|w?%HC=}h3~ug*Vhd`vhk zJwl5PGL%X&U%{S{Uc3p zN~|Hz@7or$#%1{0YJa+>T(o$E5Kl218^E{D>Cn1Lt5*?VpB3$wo#ZthcQfM8H#&Tv z8~b;iT|KhDWoHWIBbzVQYt8UWf3yJ+BGv##?O^Q}Ej8a_5zW~Igms_Pvz3{=A9R(r z0Zojugv=>}3i8`F`}}D(nB1E0xzkd*m``q&o8Ww5N$hYP;Vw(Tl-z|?%ZQ`vi-1-R zu{jQZ_1l#0&mbbb1`4+JqK^gE)-??dZhW495@XV1Ruz{fS5!_eGpX=>HMRc8(Zosn zo5V>!ftlY1H~@@kOEjG3a7!h-)q8#{J~smRdfec`KEdy-CIJj0P{r4GZ*9b7si!Mt&Cy*g$Ebstnhz}_af6GE8kny*Hzd7|KXEwpIGttTUnHh^p zWF%%O_OAWq8e44(@$edY-KzwGmc8fBk@C*b52$^DBPY2A-$Q4Y?lO#*AC`?W=;`IP zElaaO6XWEIZZOpkMscS|6sD!PMMELF720lg&NiE{(piq>2F8|@YZ|a-5I1DcjH+LN zY5L5hQYWOyReiQDxH;lvMx>jXw}c4^1%Ap8c(t5ZD}iw%LJ}qBPYlGKN80lHApz8 zNwEVD40!gv9xa~&I1~;uLMz-pJp&@v4=Q?GIx6b^0-EZ!zHGkwwEX>V+1E#iIbRVY}V6c42zVR@5uD{)|=SS!-lw#okG`Q=HC!@kMvkoudf#o+?`(}f-VHQed z5yV$QhBr$ZNYh*=9tGqm8~rWIUR_x7uFVUcoN)1xa-hJ=ECibvLDfN9nx<4~N%W$G zz8F8zu^>`;Fha)t^LN5_vZMLydFmuR4m_epc;i07*;pqI89Ys(ytQPOz(gJ2#52Ys z@>Q(xuqEd>(~-GVy_H;a2br10&-n&f33CxSEAUO?&76ABncdl%2P^o@IVS0XAaM>) zN!doMD7#2HFThtTyfuhCv;A|n%A68BjaEiW-jjF2Z5o2}aLuXEZG*~b1DoIP4sUGs z(RoeJMc4sM{F5`i_+2x2exP$AFDx-AWquBW(EqgFiIWACt9wtk*)2@yIC=w}FP6z4 zM#sRodRxstxq@?Vn@SS5! zY2^w1PvLF^Sdy_zZ!~$EVb3nwOdqSIt1d;U_AWb#DKrB&Ym}&{$3O{%eHR6^g)gBR zCrX`<8ALypO*Z5>AZ~A>rM-ItPWZH0`twU~Cm>WsS(%wJ-Yl(0)R@iUZ#EnA6OWc~SH)-q8aH^b8 zngg@9TvxF@X9)hdey$UG2L=WT2@(rR4?NwU+{$HR30rDr17rN~$MsAxRhkG^PCDo( zq)mSPitp}RnN4UmqSYnFL4&>`GB~C0q}9_H&8w4wov9v_l_}hUcO_fV8jdS35y|EL z{jTU^2yF7zvcBZ3BKJfH{7MBD-8^HXqsmb{%q!z&n_9oG0K2BTRhXUe&z(0Uoa{DK z0=)-ggiPRLAI*yve1`5d57IJ)FtNd7a76t)v!`7oEe- z8mv>H9fb*@;+ZIwbM1=g6&CXBo$D>bcm>2XT&pG3++<|J=b)Q;<(AS=X~9PGy-bb_ zky>uX!;}__;aTvE%K)iB{U*13jVs}ECU3DwdFEYB0cPqLd-LJ3F_Z8iKsd9Mv&d-i zb16ILENB{yY^(b@&sj%F<=hXS-@(CkIRy!L!-k%rl|;|Jl9d*E$6)5z71$yz#T)Iz zgX+6Zn6yIE$HtE~^npz~T;ND^xt1}E=ozC^q0!SNMU_@- zo=y!_HK|KUbvu=#R{13xZ5F*RBX{RvFgS|*?5uYE^!+7uR>IY5L|<+(cb~zAn3RG- z7N4?AAuZNtJt_G+C4Qe{%biVkeF+W8fpG;4v>V*Eqfko@3j%aL0!M2*5_tZ6=~WdS z5Ob@ZYCbo5hTQHs%ZsyBq6jr2pOD4(W*KoxiXAdVB4nzQ)p0q{?LTY<63f^=dXhJm zWh(MzQX7!G=~D2>Q^TDH%K)DnTjeV{D`$=@4!7@%)q%6uXqbm^Hsk1p46Xoy#FU(+ z+~g<{tE;WU|9=#i{f}tQEY5%+|1vAkf-yxoW#WWsvI!{Hu}R6 z2nNyz6Y#?WUvE?CNogdy12N7l_-Y0Utd4vkuk zSASj=BAm>mruzz98*$hM7Z1LzC4{wLw+EnV1#k?C-kn|7fz2?(%)Us!V5g1?GMe6u z^PQni_=L5}?EEeZZa+}>vFIS6J-Xsh0$(e3Bg+n@#9jmkXRJz~Qi1yN{*H^oH|xmu z8xyr^0Tz=ULikucpI zs29mPVMRJDFyE00iE^4*Q(3Wrv|9w7Q#n+}CYXR8Vr5){l3^!Xm=Z|mLLWoh&2{GpRHRwkX_zyf=fOSvf|C1?K9EI~GhB_z&m zcX)1aL{mj|M#y^*ekozt#t^gvk+j2QnfA&k40%=1p*?HejV($ezsHamzU6>UAXU;R?u zrFQk3A(?N-CvjaloTSiJV<-QbR=ISPiVikfxB;-zZkQx><9#@<|gRoxe>1r6JJ2+Dne_v5JTjI5aQ zWsqLIf#Qd>Us6xlrKPgo!Q?pIl+wR_%MwLAsUddwv2t>Gc_1AeV%H~e3S=n~KzB~J z_4fkc-O}X9DSO?F+BIoOUI^HLnDD#%9aC=q!0{pE$>KFS>^-Q&)8c{8&vl7 zEH5fwO5_L5fT{XY>s6_ZP~TtZNA}71#96FWXn+`zrMvmn{CEXY=Tzka!DW__1$K6J zCn&;Ij|W)ocRz10gzY00Rj2a=dB()VB!jobo@q{08tEHEw4v9ESgKthL;-x2XS`15 zHsb>I35iHHN_zZ|eio25)gv_&qgjazUk#MLN)uJcTggM$Lz3Ojf;%YF(XqiKK6HnY z%F4U*lJD^GagLWFcEpoW`j76RN> z&Cau_?;uf9J9ls9;h%&+`hevB$#?4iP zlRX1?6UrzW95&>YaaX{nf;}HSw`MYsn^OoZoA>TFONh9JsOlEI?zRR1is?*DOb|V2 zzR(Jm*f-C`-oE!U_|^>*e_HMyeZl#j=Kw}=F_gCx-$x* zU0S1B$u1=dC%RvCL^+PZCC2s5;hnrH0KmArYxUa`&+~&k(EunK1eqZOiH}h1h8a-B zqO8^Vp3Id^y#fF%ttKgs0-%VuSZ*dIxRL)HdNJBZ z`;7$7b>}s*$U3eV!0$00&LyX;EONU~IM=gKt3p(|1}%$!LEsD=eRws+0?3X!x7g_k zv8Jn6pua%_0F;0`x0TwdvT1w6#KY+H#Tw^}*`(>jM}M)Q~EsjaKF2Xm&f1p@j(vUU3WGdZVpLLR#P5 zn~wEVq34YBlnl^qi0;WehxQ0LUdZ$F@Xh*%r_6$>T&+k;p>XvhP?0&2vG+O)J@5#W z-P2pQki_DFT<*hQ(Hwy$H=X-^(6QpP9-~gA$jIPkdMBwgSNlUOc8BXI%MesMc7Tcc zw_Ny35C)ReL1y_>FCFnDTsS3ef}OM%rlzeGEK(n7u3Y;0S6#0O#^{im7ltgM+6&FF z{POZ;eVuj-JTY z><5f*G4=}*s=Z=cuU#{PZ0M?5X=C8y7Nvca-(i|LxxyO{&v8nM*$ynTKalpcXZpYSv$Soq%7Xtc=*L2iy zpflZ40sww3et_?7v9T)NSYzYR?mh2KJ#{Axq^mt1a<)Y&LkhL{+31|m2F=;{yze@^{;Q= zBXPcgiG+_Z$%}tm3padMse}S>d;uW>0L)+gce>CwJl`QFwL$gou{X%a{0y|}=?IHs zUIFfvdozI)%1E)?4LWj0fMU!_P87h+3k4RWq{m1EsiHH_&o>C}mMEnn=oeO*FUuMg9GVrnYdtIFCL;u|-Oe8Fk9o;m z8=9J$1oNBJ^6zLwDI>_N3^^v5KR#)2r*oBh3ymo)uECL?>LD->YpFXsb zQ7;63**B8C!7de@QS6FLTkcO9J4O$rt2&;Of?2mYTd;?0(vc$3k#Y6_d4AE z{}iK#!Dz?lYfV#Dweb*MYp$0jPKCP}u68U6dV)$o#9>urSx+$xgEAg(t z!d3aUMr$>V#G61+Zm#3w>}y@B71-g8l@DzEzDQ@Ga+`)HoOHe4G&|;J()G1w)2LW5 z=HXP&aU-0o>Ce5V;Kn^J2?x652cB%a}s!fLM_z_1sm)&B`E;1`?Lj0}HbGQ!2Xf{6hjV#q0k<#w7@kwj%!(ky! zy3E*CASr|XDd<^G$flA3Pn}F0&4+nV*VI|%s@DaOai z*r<5{@fS{xj`Nkve(dQ@AEeCh?<#cMUbr|o99~u-lzYoU1TYZ|)nuUo9O>w5Z5|BR zL-rg^-n*7mwYZeN17Jl2>Gk~u-U_bMHh7moL(#z@y2Dle_@0%O8~JoNe=bN5c)sy* zi}Pne2oUFZ9S6~Ymt}wGJPDb|av1b{63@;Lk`&kPJ~%2aw&GFBV)K~pdfwr-ZMP+z zEV(WCm(6<{^iGvz1y>)VX`T8JpFuuGe1Bw+{VMy(Y~ ztc{6c2D+?o>Zk9ENLi9YNI;MDCQs~be6}pTUdUQeBlT$~-qtdfx{)=2{?{#1&c1wlI=2&PXjVVcxWCJjiVhOn#ygcwQB;}E zqpLjSnIvU@jQ%Kwn)2SQC#I^}fjhnVdY3jrlk_ zz=rBW*YFw`VPirrAnja5UQ#sh<~F9TXdH%jc)I7`=wUxOgf#0cnc!FGLRW4||0C!Z zQ-=cHujAgWx>0;Nk3WA_Mqu9=L233BaP|n&ZXaLt=q8CyAts*ugAV{m2jI0K8Pc$1 zf!Law*zCOg{1E#)k==G`4)U*1ZheM?bbj4sgNlk;sjGJST?3IdztdygujkN4o8|fL zTr@b*BzXN>bTcwOMe1f%n4WKxY37-YW!~K!X;KNleEBj2hn&}k@4ge>{`?*vg4|!| z{edM_2k?#z(O;cYr3lg&yf|xX6G)F98y@anMMZr?x~UB^laSjJi5c*Vr0{ze`#>M_ z)H*wMAR@;`ht$bw#%jUng^#@~SJD{#Owu~?)V;&&4qLr^!RBw@*W={iU_E9j{a#Y= zO|1;@Mt1UQZ%n7JuMepS8B60H86ACFp0V&48A}kz-rp_c1HH81{A z;XT@)u~cP3mfLq30)jAnc%*8%{~J%F|C##!$R~VCDm?x=YYkV}a<$6$L>VF0L&f1w zJ#_P-?T#0#rn-Tg_t{06&Gx<0aWad3+vvFIW)yWeq3h8+zMJ!L@!f(!tNo_KAne}3 zai?Ge8Tl9azdYmUPS2oSYra`8jBH!r*Xtk&0_terz7?1Z*Yv&_Hu1W@=?`;-M_?p$q3f9>Xh z-{v5#d$hv;4?TxEk|X`4-QxyLE>P?!92~OqNEpi_ zIQcVb-t&;2#SSA{vd71pw2eQtO+Bk)H!hD?w9#by2Z!hexDi3Y87!YacmBHQ!$53! z#gu6>5z=^7>v_SuH_eacE0_%)2`7jU{U1$4yY)6l>`dOhb-W#lGuD+}2fOyc+?XCM zjrG?EtBnW<2yAcHf>nR=_($GzV-g;CUYm$ec<%opA1~a>zy1{vav_z4unET$j<(CR zU98JgSm?K+Z{fU!o;D*nkIxrK+Fz2FmlybOIv|!+n7^^FCNIx)DBHVU^o*WKyQxN# zC1g9HkFvP5ltx%SW?DaKGJ!#vXC4WGi^GI-49EoO3W9J;m<9H5W%i%TK`k*wIlqFi z>?MGSao0z15ZtqKbGue3Njl%v0_{8&+OR(&VJdAOe*SG`wI~?zq5p^T8_ZPx3DxsY z$WI;2ts89CiAcOrAp$y$mIVcKlE*x8MNOLy_WOTxe7s1YtH5*n?p|b?oLG-r@7-r9 z@Xm}97ctxJe(+n=HpgC@gj>NOgW!V~yRa|<4nt$EoLTD_dxPCKwfDW~wR^F@|1)H~ zunN6H!+B^{$cVChg;uAkyRyAy`^h)zu^(7{)W#)COe8e|jBxD+XB7(cT+j<4q{Q`8 zxq%ec=%K>g#!X>~Q++P1+di@e(P@xt%*<+EOtCarAH21(@vLqmcj{*Et<`IAj@h8>z{0^FLLLIz zx$3;NUoc>h0p{FP4#r~yDLe7S5!Jus3K;?CpjLbh$pBOAf8pkKa!E-?)Zf|($NG;j zIl4JThPHX%oeIK5Srk$PUL(`{`^Bp7ygr_HmWwqe*K>nr69yc4DlRTWy37k^npmZ` z|GESWDr2#A5+WksI5#yb(9ttj7P$p)ED{jlE2i>vSmzM-AU~b*%la2xtQL+vo`HEJ zs0&VM`jPh7Y&`wL!512?TN-3ejvNiw@(;?tsBv;CM+~~P<>@`}Jd-z13|bRJL;G*~ z!bO3Bt=qH;$UGH!VToZq`>`1gBx-YIJ7NVe)6tzMkpX}(ZNLBijr`-sS0(~r6wgs| z_-pV;l+p{O^f#3?*e{R`#>0ndurIG|8F5!&1vqS=st#rI`Gtrs55& zE+pv!nwdFWX};Q6(`y<B{&JeWog}T~c-P~w%5VmvLEr~Oi1s010b->%j|$I=#%uDBCa*@0wTSf)Q!ikp0?4fL^p@4clKimf-| zTIB*!@chqPM<(ayZsk(TdEV9>=PxVdNw8m2Zv0s;HFFDy!bHu3jWso`3JDby++3$( zASZ(5|MYxAG0Q1nJg~4Z931&uY^!HL;gF3l;)Bt8?nCs06_Tn$V$62@>7|B-hH1ZW zhvoYU6L#&9(^6wcWrrbyR=1DHC%~1&ZD`*m5t8}|?_lT!1z>bANf7dPz~tv<`81&| zx8>kBF!asth`JA_heBBYfao$L{5(A=iFU-CgbSI(BbmI56hS+9=z56DL3udwdodru z0ajpf@gMAyJ7i1<@Rhin`1d*Co3apz2~PbZMbwvQ>5pE!hxL+@dQ&XJCZ)?Y31ucE zDP2Dz$hJR^B-`#wf=hk z=yo#wRkJiL2kwUg3&yVfpW$wn(d)?aVBhZOx}(vaqBM2*i2(p&e`KZc<^vbyL-p~h z*+q@XCLu!b@J#Ac3>pqmjcZRo!e-eMa?3Q^RByBXv+AU(*37?*l$}4#g_lhLW>T7u zJ7|1a%xc7vDV&Aa#du^!CPu%LZZ7+-EJrl%B(e=eTW?Q*jkUGMKmCcTeA~UeAFm&V z;s%K9);}Q^0i5Uw#QB2E*PJgeFZV{T+B~kfV)2l<8W9;8&zGJlP`2XX2qC%f-bUa@ zY`?KFCeyK$t0ygV1zhqAe(&AOf(ty_O}}QXTGP8znsgrDYol=~fuV=pUJ?JR;vhXU6r@ z8k!U`Lxty^>AK%aN(N#;kc7+CP^GH;*l3u)e^b-n+K*lSFX=vi(&WB_Kd%T!$3XCU z?X8Cs+AEG}RM50GrKY5DTTF9otpjmL|8lR4+ZGOxbU8NKE_!nd`F3T6x452^7U#Qj zfBcCs0OG&%#%C^TYBFC5l&MC*28OoJ``6nJ?r_m`;$3Nw}4RVw0Xv-&|iiIyr&#o8LM=Qk^d5N`w!o z>dJdvZ@ldVavLhVM19o&`D&H+vB#RIB_h99ye<0e=?bsor$3T;V|p7FW@lf3w~Rj* zuaU~05&*pn$rPM?wUOH_!woiO~avId4v-6jK^z-tHv(@kc2Ti8L zPmDR{hy<(l-{|24qbaZ=h`_dOKfBo&!S&fvz0ToC5^y{#?G4au%b1XwdJU#=cfc+y zCrjw%S^2%?MMxJ-P0fXP811 z550c1Wn^OF?d(w8dB!tcRFc%+;~K*a6>6p{QjheS+P#)6psn0o53*V=J6$_-a}J+* z#%tB7v*`k(q9_~fDW!m-Iqlk7Ux-4+&D6v%%Y9c0s(mW>>-+W3f@~#s<*WYDAFa@= zL^+UV^%JofAmYs7cE+NpXvV_1Q!aP9${)HMydiROEqN@*{1xeTUJkS)nF!V|v1Ntw za~K#HNQo=seG?2Q#6uJcjCz^*_IlI)FVD<9^%=%EJ`Smnz{cOHM!U5tCnp#VInsMe zxT#tY)%yGUx3{`&lWZR?9Q>kaaGxXl7M6WfZebl8KY!nIcIKKf}qcT)Iqu zn65x!JB*x1Ls8Z{w6+V;*Xur>5kSb)pf=rTGsia4G2CQrv)pjQKe)Vv-2E+HX=PbEk79FuDf%fSy}{5IFdjz_Hn1C@9DT zUyJTtX=$k?L2WrbWz^XB#d0p2y8O|$4Xa;OWQg>D&(7Ezb7FPME`_YHMa2)r3k*(Y!*Fp ze<7dB)raCyK$MB~+SJsTQLDpyq60Q#<~eDeD$T~6^!aRqolY<>bpNE*?T=hjAnqdJ)G9`tz>50 z?@lx9yEQ>nYoB5|Y|0X~Zjpwo9%;TK^VSoYI42dK0bjoNB-K%(E5??Ulbe9yartiT zFiWmNvEJ7i?xtRAf&#_v;PvF|U?Ja6Z-&IeP1V{JGRnvbgtPo3bl~B%SVsj5CE*3_ zM>UpTfN0uAYvpk1W)aq&S|j;gccBCeK?j zwcPkMdA4b#23${0U4@V&eCLE1d;(BbRyN{*WGw$M-?}2v-@Wk*oWu8-j!p|wf3Z^n zR))DFPGPO(_0q4 zbnhd@X)tJ&i_YPA;+cFl%f9eyqG&ok#dK}&%bg3qUtFZlL<=B^1zS2ppF!XCTn{IK z4hnj!lBt^F;`c>@eNho&tsWQx2;DCRlbJK!eR5?{0cS$iOB+G_shn0FmKh7i3nl!G zb`tgeJ>!-AtAXV8^#_ZKiwXTQJ`aWuu@X&UAR}5( zbT>nH$Ix)L&;LE|b?VdMBNx|Z$6EKg*RR&bLC1sl+$^@(Wo8k>++=g_(l!4MeNXE# zyZyNIkHX&jG&hy^m(>|pa*@!2X9+1>1M-Lrc6<7!wv_Fo02Rc;Ir_9N_`R2L0CYP6 z_HfhQXJ2>BmTZm?6+Tu?S6PbM%tt&p4)^NF4c8qkVMmJR_N01#J%mmu0ZrY%Pe!uR z8c!66mUj8(@HDc%Z}VB8FxD*@i9=6LR)%Cp5PF9;IO5GL1zc--pWS7=6D9gRRC>Td z{_3px;;kKg@ReudPVN3U+!e)}d~NeaH5Scj#-hN4FU)!2QZ&GA>VQ50*M$$4>(HP6 z_y?~|XLUO|)k}b_?R@oXVAAZ8_yNoR(H;>wX1JI?q`$MbmO(oZ@BDes4Iw9$H)bP8 z2+%jKA+pMs`8?74Y*XRgKLkBaknr3dZsR7dgOkg&9QP)ROh)uNrEL@jt$MIiTXMN9 zxXjLem#DL->fT=Nn07%Vdgzu=aYUwmeEdNx>~)4X)SfY$IF+->wj7JuR9;%74G**L z1U5(J#m%>gg22XbEa#x2eWv0D==PzcN9pX|9linHYk$B7@1Spmsh%V_JD5MTmjtfc zEPCE3!P515y&lltK6?I)_P)10_0Y&W^~58uepteF_PB`&3YC2Myj9tUy~Txlb%l!9 z@KUQn(|&91RcGfT3B+WkRTTXX-i8f+lWK`tb0_g@4(l-;hxC5~X{x;1=2f;f*@#E+ zT`f@1ZLq_<@bkgo#>0gyzS-RxGRZbDIDaOG71ThUe*Lz?eV_-JaC7#=MqqHZTjoMm zSyB@3ZILI8!iKlYa_(muCBZ?^Jg=K296HFcem15}^$l`Xw1O=NeX`R2+z*-U!(@Df zTE!U5iCIY=wK`mdR0J)xFUPk?DkM&V*zY>J4xSb7&W^dwar;u89Mf*n1*MIQ9tbx& zGXhA5@T(gW9}pi z#DnMgh_F7^9yG6q+&-gcnJvC<;x6#*Zd95FwM}>U9jjtsY0btGFS8WRIb;GpOgQsg0dNTm5(5&;A zo7kXN?G^Ca=zG51zwo#{0d&7jn3#GNYM8gjh`9#0Lq7Ney7f{c$sIggVN1P zPi$z&h`haH)~?gi)fN2s@w9(k()SVXXi3)NWaUr4GLPWnND})5co_R;TL71ufJ%tR z_Tob^W-2KTkC(?y@swf)jrI9*Gvtz?;B?(&B;{&rXrX<*ckKtGdYrJ^AM5JS{n9ym zn_(`#y}i1f4;`fP$!m5imENI5%xmk`8JM`8g2z3*cN79V?#s_SKySIZiRsNyIkWwq zggDKr2W*;Nl@G`I*TmIYbr(Cui4#{D9BQdMFHiT}@jW6A+X?7LM{;6Yk)`txQ^7AV z-k;DMC*3Rw@xKYf{dG0XIG!84P9@;-=Cudi#$dzE`PQ$9jI<%reU88y~ds`6x)!V9D|O6@lH^@BnnK2=7Qo5gdJ!WT4v8fe1vu9~Qp;q>sUSvzCWF zl$9c%^3K&Q_HshS9N2EXbQHFqev720tbBJHcLfQ=qpF@tE=>3xpM9HEnCV0OZU-`+ zi&-rE{I1_`0b0#C*~cIyZy4$|?76Z(6zNr@OUJBzAS4#~u=4)M{$rf$vimyH07`^a zK&-toyF+{i58w1l!G=oDhMBmqN&A5oGtn7JO`*;x7aOO78H6m!hnuq^ZOZsAtyk8p zmhjFdx{yy~8_Yj$ot{`m7`P|@( z$ijEQfGZ#ee(SQMUJ6Y1ZZ2DgV?E!2T+Gf$9(humgAb2I99r`O3EAJ{3%yzOUN)OZ z;j@SsdH1zCF&8_@7O8ywo+0eLeAz}3=SIoD#(Ha8>#4b~Ox*ePR533)G$h37XqN8& zSB@IZT;FOJgQI@-=cl=-xA)XLUh!uR5A&Q#TY+6#_sT`|dO2-Q$HjbXxRHQ7zR;iF z`9v}Az4UzjkAXoWuoTF6OnfB;Llue``KQiwG^=J@w~~OcEL4Uf`;CdzKDGZuu|c}$ z*i152yw7t=XS>`Sm=tVsp60t1Zw8O6By+?q5NHDl8l|t1a;QS0c%H*YGj_LP=WYF$ ze3qS1BqAtDVMd`VjdH5iI~vNM414HuveF31fJ~v1JNJFVEiN}I0O9N4JX-Qb5Zltp)PZM$%Rj5XtW*I~}KE9cAy(U~JXdJLJM z;YH~o%3TL0&O3?rfXQgez|Lr#UM459cCv!0Kd!^u6_yved`7si*|KW+aVxiZI1g&Ev1Hw7f{&WJ*c!bbgQK3!|3;&mZY=HWoPLtTwb6-5oONN_5wlas4_WeY-tCsDAil7B zy-Z1Q+eeOldoI!7xQpz#_FY&cfb%y6(KWLUWWn3v*pqA+)cUn$h|7))+j$@8$^NNz*vDY_P~}1B zkv!1RpSDzrDo$_Mg+JwcxlzcYI{P*KhL3$1$Q8 znVRBeTcB7Ry3T);bgBh@_bGH*qXT4~pQ+xLd3W*%FU?b=ixym}+HQGKI6Zp0ABz($%hA40WP z{rTRRcuE5~C5;g#X2Kpz^@$M=Y(Ii7Hlc&UmEtbEwp*meFYZ7Ny*N%`A1 z4GwFx;;dkTUgw?BRd=2AEaUN;VDKtsETye*xgc>nNG2 z;IFl2J)m+8zS8&^99&h2*E+UXZ9IUEM=+An#$#ucW}de4?CBmF-X{_3bVnd7&;mwX zdx6L1xiOETO-FL}Yz7=ZfJbGvZ~sZZdvek;WcLqkO%SZ~-bgeYOSmV&RFxLlwbHo)SzV{^Uc$OL6dy%i9kH8Cr;ijHzzNIu^I{}d8DMYs&-kZ^>F&yXyydO0s0v7} z1RmhKZOf>W4K$=e`u<2N^}BmthZkETHIzJWxe!~{4^}oF{NRJ@;Nfy$*X-_mJc;jm z`2NVycxrnj;GCCyIF=e~=TUZ{si2x~D8d`EE^ z>9S#Q9Rd;C-E9Vi0lNbx9osN<$>hZ)FC!~$?{8CNpQ`zXkxf9el_yez+FscAtJ7lv z6I&zc0^rgsD;F|AV~nFfMZs_9vgU6KNGYwAl+s(}-2L{DKyS!}x1c6h!-&HLS~{WI zs5C)?=83q0CtOOM)zc8AM{Ne8!Hl~FYfmaVI;+#=K=Xa^y^@0devIGl?yl<^1vjk+ zUfPe`9a60o!hp>1I1hY`+~aMBI66(@A0aperSsl9--&y(Bnl0+z;binJb{$7CY-51 zGJN>Jutp_rOxyi{j(c-3udLzaeqGVhwBulP(N#xUedNu~mQT^#?L~UMEf!6evrElw zZ6EO~4j^IvCp(b6*m3{KC?|NKUcgq@CD3)i-Q3zb`d#t^QKRP9y7x#%lM~JEOK>{h zk+1tL({Fa1_4ezkKG(j$X}`K!SzhwUE>~1oWxXpDKA^2T6mTA9x~C>TzvyplrBBjU z2?-7V(oj#0M-wRqa4^axfVc8t^;1mu-&3u&SEq1}%5L{N;ipt8o=R^3b#8If8a3r~ zch?4kw;t}U9}jX0cPxNX@DkCho?YJ+m>rm3)`J&^d!Wk}mX_o6B@8%-0JI(8p5I3;Of_0B$+-`v>MSdF|n`u^AJ$!LrEw zS5s3{fR0AHX=b{u|L@PM0u&^%;Pf^BC12cCYh(jwbMxfh)EhIiT@0kR>S>oa(=M(! zI}<1m*yX)Tx=`@c05NM+>i;l)UcOpN&=aVsWF7>-@9WeC)JjXs&~+kPC)?oGQspPu zITaF9K7jmGi*df8&qsA`B;`J`-*Crsj9;B*%1bMyBp2pt%SAI1BXxcomM9oaN7$bIZy+ z*-mE57M$1CAc7u=*SA9{SI5GW9Q2F1(y?4tT2PCH>B(CD*2M#>xfj6BJu<(%{K)&d z{T3%B;Ft#8ZnEApsH47XIDOS>!DJ*|;@{q5Yq(*uPNtWB3cP2}M&Gm!c8 z``IeW-9L&Dq;QC$k4#?ubrK8d`tkzxM>rZN5rlh|J*WuXa8rV%A=ig}EOT!h2IAe`Saw=Bhj=6RQC5@Ce@I zKKWFc*;e>-noBfrj?IBYIye{z$CH8CqhC#O@2u@`l!s=$VqZVp97rhF3Hc+ao8MSx zI(K$np!k5UMNCKpAOnMK#H@0O9Q}*g+ZpHEm|KCN1_opHtG=$xTD6G+-BY!acq}6K z&eU5f`d@5qKd1YZLnKu>?Rpi`1oNA`Z!cW`KNyNB%PI5f(2}GE*H}7v>c@wx(Vw1O zhX-J{!B?fj04V?BtPK}RMsj}z=VYKif&*K00V+Ykmc_-z67}-uX+oN2%2LTGrb(e8 zvN{C{hY)ajY**)kH)63N=g^h;enoJN!}k3$zfShb^%!*mwd(}rDPsf>bzbl}vT?HC zovc1|Jhb*lX6%eEU=F~qpk6$8#qu-#gD&p38~qDV$Xfaj=g+~pYXWn1$JWhSDgbjC zEU18nM*-&kA$ErwCP!y~e59)wn<2%3a%8>O(v*{JUX1h%3Lls|n-4 z%Q+^BS0wBT8Q7^i8^5|H2}`C;&CH;arVWs;9{+3pqw-i=rfq?_?qblKAzgm{RuL=c zk=L7rlFzm}G$sZ=;``+VU;Rh#JabS9JUgd+En;eadfVe3rXLY>6)z8qB1ofuA@S+c zft?W3r0wr6K(i|mNs%Lx!>rwG+Ofz>%B+o*&40DqoXvu`(5Z63#PtIRKhpmP%YkFC zYN4XAoN6*S=yC_1S5X(>P7(3jaiAEJe`gHIHr8u#I!s`_sWFi|pKBd@j1+$UPw6qF zTM2wJ^dn_Ds@d&*A*&uJ&e?+XQ#zh@qv^Y#E|PtX)fP>j{Is_AbNGvGUAk~#=dG~N z6tbg_X2ebM8D^t-1ABnDkyS_khq(lux>puu#IhtmA27H}&;4z=*Vne5ZVGI^O|h*s zVVBIfEx}%`0}8)sOy@B>`~6~B_E)8CVXTyg z)vjW~ft+%ko+WKA$ZUh*0wB4Li~D^t$iK5EGtUD|%C#20bTO;tQW$JU^Y6qiq&zOh zQE7{giCwRPOH1o92zTXDMp03i4FCNbWcqRwSQCKOGcYmy5di}N1W|RxPalrjp3((e z!<^-J=4#yB(iqBoW2)`Wx0qkF5&;Q0ToX(3e_48hZwY!MSJ~F%I#Js_8HTVbCgq?- z0MZ<*qM|WJRa;jpZB(7hhE2(~F<0|CHNQu;gV)=`8kN(<`*4mB-vi;gXEE8n^8SJ1 zb@fw4%YT!vxLh?8sQP`TtJ$vC6@_%KFZlN7_Way^2Md4HBKmk_yys*-f^uP;+DLQV~8hC(bnK% z6L~4~mvA~@fcavnsdw6m2UoI&tp=F%D<`T4EcxFGU5HKMSaEyXL2YUfArzBJlM!8? znm$6@OL+SyJ}XZmAkH%(u1I=93}-pZ4_$`vbs0MDbs3b`{LK$*c#|FH z{L{(1e=}tU^?zmxkXf@_pa`cOP-jYH=jXmU2W+axi;Z<=ehE7~JYr1Ow~o7O!V?pJ zR9;TyTdZS$Ix;O@uGOpoAJ;60;y(2KeWf-ne!n*j^toVTAezJZjtkwY@oi?z2H0}( zBB_SYanC<=uf~x7C^j~22)wO8y6vC)cVK{^RJH~@q+WKOe86}4XN>xs$mOv?|8anL z#P$g=Im;w9=WojWznBKwR;YyifI*cOhjj#dzwa9j(VPQjH-H3Yc0;5J8uH=FpGvmn z^hR4|SLk&J!wgq4MP3lIN=v&kI1#UVSc{1KBuX3pYk(PFl0Th0UP`BE+nv=~a{ioL zech9xw2hf4VjQQ*OM8w>Ykr5`_PSljBh?$wxA#^DsacTT+Ey>uKziUW?&vvg_l*C& z#RRl}BX@ple@YCuEplOBhP5dYm(*eKAX%soHb)6?L&T-+4-J)7>tLF&10{2 zmjg#nV1>hLE!`8IoK3OMfg6;-BhCvfF663Mz6M#9mEM61z$!P2?3|KxHQQjKSfU1~ z{jg>x_Gc@ekQS8-tQP(URZsl=b&bhlu+CzgPHxSvA(E1IRY);ipeNWEYQ`>QM9y4X zs<+Q+F}zqzFr3t;-_a?2iV+a7=zH&RPi6u+-773QqqI33t1*eBB=Y@i+o>#1c%?>= z2E6$TL7P5=Gymf0rYxo2%Z`zVX;Vmlf4>;=jMc4NGpkmuslnadvF{@fA8kqTTFm-m zPA^}b`4VZrkHQQu>C0J75S8<`*KHU*D+3dL6JU#yDHoUIZGsh-l&lX0aF?1MHI`yO z9}_E+25Jwb3D9_4h_C0iw6==0A*0wr4b*eeTfFk)KUU~PEY=V4Uwr*@nc^($xs`c* zG-2Z8V0kaR-37H;#s*A!NE~QU$p4hDVj?2Qz2f^b<)?Es&bLgF58j8}O9}*ZgC{5L ze%a+Z;hWr8j`w}93Qh^8EoVowP}b*aOuW$BRD&Wgo@PvrLFVS>K(Fs&J+EQ*=)Asu z+E=s9+61ruMtVuj293&4GX|33itupQOqm3F;3XT%z?&}RsE(Y!hDXmJn5 zqfF&--2*zLTC5NPEaA)OoijM;YHEP zOD7h7o}FVzPtUKbs6!m`5-Q$T8Y&tt>?~>;oLYQz?CTz;JAXO%Pv|E0}E$*CUi4m@TU*e&}Kt>F-@wsN4$YHs7(bv9Eln~z`C0_b5mr4DY4-?Zu}6#?06 zKT=ibVa*HdB!gEOydb??frq;bX&3mv??wrTuJU%&|Ho#J2J9{EvI}?&pqZlA+FvZ8 zKeI5+KMe;-4kvN05ACDPKt?M%W^?bx2^s16!o^p5J2ah@&ne^MTNc>gT(<@nCnv|m z2pmtYH&I?kNbBh>?_XR15*8ttGcmkE1THIMm;H=t4UQW-$$ZZ||Gfy1pMNP6K?7Vl zU#ROK>-pCUP!>rEC$7(#0P%SJpU~?P<(WRP7Yd&&@*x1occ3lq zFl)c&hXR)7|02x)S0!kx1{DF`l$C=2>O$r_AGLoA+kZd*Ka%AuM2ZgvW_+8QJ%$tR zn^{5Uts8*Ha5VA@;Aga+7i%dZMSW7U9#@ek>|eOjQPxOHHh)6nuw7212M0rZlmR#+90%5|d2(R-t{A$UzHABf|(6cVZ44lBNkqoUFz@UfCdu} zB?2_e$%vf}+FwtQKdD&Q?F%?pR00l(OTS(n@_%AW8U$1`g7RLz?udu7jCGjpyhGYx z7_>k!z1eerOX9d}x5(@<2oGzk-u66Ry#fSKUT?1p@E1zmQ+8rhP8jvw;*cola z7!Q=)UJ?(QEY6PcXbRelW*PvhH0&jlj~@Z$kFa|@fSil}Hwj67CDM?4c%j^bS76;s z@9aWRAY`XBrK2RwnM!!(E#Sb$5+zuq_D zS{-Vm^}Xc|vD7rs>pnrp%v@$rUmx?Az;jb(Q~b&OyMqu=A{yT~>Nc5g{usIGS!(?L z;q{`js;bqIZvfu0uuTTrO}h~2%8VVzajF?|AIST4vQwfiflC#b0~%QNOzlwwSkS`# z-_p)Ui+W97hBaXLWi$|^2^38(_`2^MdwfbLX}YAMvV0g{Rz_5?fuxShT(9*CFqY3_ zDTCrB9lDJ#@*rasUs?sgO2mP>;acXV&(nDV6@$!JL2F3(y*ln+GB$SZv} zF!mmu9;b`$hqe9RTmCdEq+T6s;5MC=l^1~+!O_}U74i!it;MLUE@fp9AfDXb-WK+{ z|8S6D-?k85%BQu{V6Ul}gm(lFZL!TU+#Zhk>vulILr2VV+kI}59jd0HQcEI011Q4) zfe5fc!ljsvwEng7h>8mO-&>Lm8y-L&imlrsgL=IL`O~&NBJ6s0ExVi$y4`hl#sl8k z`cF5Ux$F@+^L8j@WZ+#Y&ru|44E@MBHlO3Qv_0gnj7-|)Jgu-I_wTIJtiZPXNN!RYR{BS7z_(L zIIvul)YK#?knp@Zs;Z+9a_NgI9W31`WaN3jiT`H^Hj9i>MkVAjdIg08EsnHyDqZ;H zs^5trm`+()xn|E)hvoZnhpL)Vv<9W`uZLsd)ofNtiC@G1U$X#^85|e%ho|$Y(>g#_ zT6zvp1FvL>0#=0U#4ZN$ybzf@z z%Fg1$k34)co7ZPQxa zvsC50N1)aa5fV1?DX!SPSg19lE;S?fyu^C!pg=*#(So^1%lw@Hpsg|W3Krd}>hO5A zJKRHC6((cbQcE@Ubx3FA{Jet*hc>hHW-#`X^Ll)lmKG0fDTVH5#FowMa}m?AT|hCm zHsjHgWWM;heSSXMWMqy#f4vrn=W)Jpndgf`_Oq1xM(;YLIYNt(#%Ys(&CU86}h<_Zl%g4(`BgZ-ptqY zrLJ=i(W9f@60-|0rfZvuc7tQR*WZviuZJ7nH30{506$UCo;OI|H(KqqSlw-ATV2MH zLT;k<0v}!?`deC@^oa*HKf_nw0T#Uix+G`k7yVJT9^&HSsgr-7wBDLMH?s)&MSpkT zFu#lGb#Xh}P{!{F5;AxJ5~;56BpwJzFwQVeQ$s)Iv2U?1F%)tcj~}ppF^Z=WH1!eA ziK4!Q&wGHiobI?EGE?5P;HnwFE0l#VG}50|D|GPh-#_b# ziOGBCIX{4)%h7sv075dkR6^yWr#D&6&g*>M9lKF*eU(_Xj!N}Wu}oXlrTlU! z2v0p5f=%@!Cu{8MfxmD)^A2!u$5WlVdR{t@l5Ukl)rnzyRgQ0j_i%cLu&PN+{O$WI z`=b_jOsUkGcOuu4qYq4*ySH@~QAX53cmz%v*gWrA1ZD#&zui+i;a;bD>u0b&irn+R zWf$1;c(^5WK1SS7Jr>n24$5uqZ4UTT8J2^(gyVXWcDV@u>wzcz+yDn-eD<^cn~eMW zik+Y}kNyIVGI6BA*1G15tcO7Tr*6YLhq3*6>v2Aji0B!Rb!JJ>xqg?zL%gm@j_+ij z=XnqALH111%&)nH_aLlnqP4?Il=O%PY}b!}y&!i#gfQyALF{JvX5MY-V&BQl+VNg$ zPj%u!Jxvxg*TO&rdZLR^U3W&Ii>yNK)s4*=FZuptiTDTiE6N|o^=_ditQRY5mnzE^ zmO_idb%UOjX7qwxKMCSdg+9m<#+Ru(Hy;@W?01h`AV4mY)>&z01uXH1a}QLro{*HI z{u>+!qUGWQBjWu2PuSaxsjNMRHZm#=g^|?P}cR(j+lN#rGkh_!g zJ!4a$*)HL&{>vOn#FB0Q9lv!G-R#Ti!(_g4T+JGHYr!?QzVK=RCy~9pD5GKnR>5kU z*Ppdjzj@(3DW|wLRfHBjH2ct7>M^4QeZGrnD55VQO&SRs9B!q8EgUNquLOv@fGQlf z5BVny$}I*Eb-AJxo6EwqJb|vf2uBmp)-<@=n7-(Sk&B;o*Y*s#jbN^n++YNcX6>2Lb-<#rpp=tW&*cf2Yz`JjcFoSL@yP$x zvCN}ATBQ6j4&O&y0RlU%6GNj})F%vKv^3o7pSvLJ?R=X+tSKyh5|DeuGQNY;HpX6A ztov|5JgTtR9!mYH#}h%5NeccZiMB3xkI1L?d1Y=O)&1E#h&W7Vy0^JO?7QrB!B* z;;DXC14Z&1PsCR{4P~|@8CvT12~=Xtsr9Qut|w=J;%}Ks_bj;~LVcTytYXH}yIHTq z8R9fGAk<_tUtH}IwUXbXbN|U#mCIo15^LzNS+MPoRX3p#pZ)feT4b)! zBAbbHpDgBSvyK`)_j>;!8I%pCB2TLNqbjcycmL55(Kl3ZFX#Yql~3D<<#RZniyHC^ zPW02hr+VGjY_ZqKXEcONjWgy~GsEt(z`%WDsZk6*&T8B^L(*7Nqt%!hp(k^t#Nicy zGu^?{?jRnf;9Wwup021|?$f?lcl5wu8hO;aTfRN$z4t=G6+QgSN%u`6(=S*z`5tQj zPd&2oSY4EL2uN7qr^lVo@nM)&DeQozyTmOFpsf#|v85u~U;o+FYfH75 zG1i)vOY(O%)1j+0dbWF1YV_B|ToilZ&jxamqUG8m_!t5D{XGe`Zbe;5XlUpwq%Y43 z5kLZr@aUB(YGYRaT};JtZMe5G|9mhc&3Rk zLUy=3wEyVPb<({Q_el6l(1X!@T;F6880;hz-OQznWyc=F>FC%8Wml@Pcce^jlfOVL zRz`r7oqhBW1O?U8-(J|TB39rUxkL`quwAyN*@tw>0thN$6xmsFV+UNS5^kNV7pfCM* zy$*{YM6mhZ+WuVI+(OM-sFkav<UYk0~Z)1D1Iax))c^stEKMKSfknZwLN=XvR z+Z=nFkNcsMG&q(0Vf9TTx4RIU8g@R9`RNiC{V-pBxcF>@E;2Fl59J=87>o6kG8}AV zLE3mL**Fd9-pmdv`us@YKsR}HG8P<>gQ5^*bLIlrvYuE!p00|H$qeB91#FX0>&yS; zc+@k*_St_{Af0lmY*TE6-K!%e(*1~faDX?Litde=xl!hMMN6IXrJ=}RSvEeyqc49P z$MG8)ZtlrT-?Y#|D@P910dV$A@j-)}xpgECq)4`2E(L~qHPeOJXmtcmmRkOGKvv_v zgZY)Gcy)#ONqeb@B;M}ff1e}pDrpEzPenF&I14?MV^3td`1$rlXt7M*?zdq2Im_j} z*jK7S3e4K*X%Q+8!9(w&@@+`0Yj{bZCP~3YWfyvD%-QtY1@;5!$kWCkc+C-wd+xRz z`6Qu0KauuPx~D%RTl*Tg`^|*Zb+_@iht=pnzsY{f&&-=5Yb6_Z$_9!fR``a-)U?B`CP~vy zt%o)Y^7@%bajRcXLg)$G0XHS8!{dwR!ouu>=TLtU2fvytqM9u%(-*S3tH5ZjdC$H6 zco^!nya08fIHaikQz+B-K```#mHdF3`X~mGs`5ysp(afiBu~1#qtbh{XE}SKMQ|Zx z&`Voy@);MqpFE@_xJ!>KB7BxajvR}7y-c)6mR#xkM>rR;W=$ELc(234O`51ymieTu zxv$=ui0ZJW{G$>-?zB}6{Q`;|2Y5XG(+A5T#77}B#aD7q7VIyCXyA<=4h2_L zjzSNE^%oV5&m4=4-eL8Yba#(4FrWWe86OAC{b@b3>SPb^`=@a8BA_JiBWJ{>Dy5zzbw#fZzqkHPDh~9e!k_-dM4JV# z*g#XEQ@H0YEm<$7!M=nxt~UA2&%u%GEWEk7h6a+E`^e?LTkpL@B}H+@$~;S;{yMEr zyOTs2HT}MQId7>gS63d7B#)^n*awdIRPd9STKn}B^n}D)q^+h^GD}}EO+>)YTvWQM z%E5E$9*WD4-`c%g9|{-Ry<+cUU%2e&#Wq`0v+R}an>f2sz$$oMl)Nb(X><^WDEl76 z0C+GrVqqv%oIm%i%UUG5czIMh{sS1VB94xn18taW+~i_Q`@l_;0y(wNflSWJW|EbT zOq!v-b}CwCOP4xf$_#93QjuW$*oR}p=k`TA`lOjoJ1!`rV_2cZcHgVGk6@tLb14Pp zt4>9A82w0AucLoO$v^*1N$T+(xXiPyO8dvGiYU8s7uX0tNv^y*WI#c>>XtwSk3H6k zOg+Upp=hfnM(L8>pYi*@A@2j4y~6kx#A!Cs$Z7s5w|-QVGsW%giFY{#`*3**mt*}^ zx232$oS>FBDz|tX~>Xs^p}8RXJTTP>+|!uGHrel%ZTr8 zvYmAnp;C40{%Jwm`%7@1+LT?Ne)QRRcH)SRQ(?UdlvYUXhUYo`(AZIHW_%PGD&)tS*Ympn|X`#jAO8`TMl_caGw7}S9Qu`hHNbNZuwn)^JBJ*o|vxaY@ zUKAWQWtawczVIpsxpMg%y+F{A!g ziS$a_dbw54sz<2FV}5Y+9eIthq_d2xtqP;8GakSBpj^$cn?!w+um;O1qVhEv(@cHV zMNy}%UCK0AT!S-<<00VI^Mv`V7EvdoI}W!{(k zzQ2$52F$t)NldhZ*A4#x7~c*YG*7i5>x48*oib?$-${xf5ciZuYbDMQY2Bn{=9 zhM1V~COqDqg1DP>ai#D1b(SoiwQe9~)vh@MMeCV{M|)9C3f`N456D*T5?)vo{fz>n zoHIo&HFy@Gp7mV~NbIA#yFpiw0g4A}I0sTs7$3Wm68tqWaZU!{=syj;fa>x&Mj3DX z5BRiet04`5Pfk22I=xs^E_U6?xzVd%3I2D6-nVrepDGBN8-N*)DSiObNLiW>*11nO z1Ey}IBfDhG8`r9pzpI&RExdW7_(68lMEWB!VI1G)zqjb~HS3Ex@xL!AL4jmZn^~U& zZAkd7baB1`w~4_ahKXvI#Sax#D^C4iA=FdS?`mpF*2Tqz8h(u80&KuXv%{f!C{v-X z5+5J};I+LliS?Geua;>hz`TSj=ivH$2F~*gbDFn3mDUvQvQJDp*0gnwwfV`Z#Zj_b zi(>;IHU3`Z>y8# zj-D%|(71a6ifwq~-aZ2Z*PoPU07w&=kr%7-d;ihLSX4t40+Eyc&T)jCzBt$l( zaxF$_*}FM5@qL6FA>r@1-!3?kjH}m6;I;$%P33-Cv)yLZO5R0PXT^toLcYU z4e@-i&VxR7%K9K9W$K9_-OD=-Z$mYYF|)q`EQ)vwW}X?rWxjkLO+!mytpocy$9({HVC*Z^}j=l+k}90;~4UX zAJ#Q?u$u;IiXNK=9e|kT1kC-}<^Dh{2wLz9H`?x&f2SIM5i~mp*GEPoCHq)b8B%6n zSTb;;1tkTBP?_b47I0{#1&wGK*pwQG3}{99clAu)V$7tm9P+Kf^Z?-D0#Az8BZUw0 zxNU&CvEu$O((YtG)~n$o0$E`7lgNmxy&&S|NKIW`5(()oibo?4?1|N5FKWEFhUxT^ z*Z}ZL(7)RtO*7vo39(87M}=Ru5f9_M8N~xaDpjt;-Mg!Kg;+81Sgyo?lwBAOX~eVa%Ad_D*!Q_K;sw6mjAHdt$idhplLzcEsYHPY zVDj0C&=nQNsJ<-xN&>vbbw5@{M$|%Iq3nkM;(Xu7&d&iks)rwUb463ITSG+OcrNzuz-iM12Gp+X z=t@&;CZ}&xU(|WPd3jQMc&(A0+4#-q`geZG`0j(h5CqCWnsyhAc_K`}z~J{d2ZD4; zWdf0400{>iE*&uYMg0InH3u|i12w;3{0L`6$~wkV*U|Ak_U&Q;^qrTpue85wTGpAU zEQz-L*bZLFMMjE3PerFI`XGX@@%ni?U_$1-5MTSDPs8#?f-nbEg=qi_d04$3V||v% zlG|Gn_Z38AfAL})9qEfFHB8*RnCAK4|B^n%a%p~c_p}!_W~$3vya>juNZN-K$yMXadJSlOoN&`qG*U#R%VvItVZXg3|WL{<{mA_%|>m z=Q_u9W9u7|^yg@q1~G!q%f7$SIg|t`C431N1CmNYu&@{yWElSb-2=)X;b(e5R9jYw7{N~xs_*q+@m8k# zkv?v;?s6~w-PFBJNMTiHLP^Hl&9O#<>&^2HX5SrR9}wZA)A}(_>r_D7aR%?rkKSkp zRR%71<+`@7gcwMpQB|PsfV5z*p0AwhoBPAYwBmu{e?A9eiFPZ{IzfPH-R?Xog`%H& zHgtQE^sos;wc?9+cLPs+y|P1`ft;+I ztU{6dEicACPeiJI+dV5_J44HM`Yv_%{Dty_zh|q2PDh(6->%v9p(=1500*%QG#b&v z5qB0@OF93VMzPeQgw8FU9_@gyW(H;_sbD#;V#pvOm zk?62OZHO>{b%D_X&9qoT?YkO2zlz8rbw{=+Dn)e|3Mt0il@umDt4Xos*gjO1{)1a| zGP`j;c=WS)ajk|L@+tkH{$aCzu}GOOV|2sGBO%BI_3@2whwzRKqxK0Nv){q%zg%Xn zeDz5kC;ezrLVXUQRS=?1RMj?ShDab~!S%aM86MEUAaS0QsQ!dh8Prd83=u2i=Y^fq zKDn#00pma{l@(PfkfF~;oV83Wgj)6g)CI`UT$_37K~W{!IwNHccVw*U0;oduTKbo& z38wI)*VwDIxl3G;4UqQ>BFOc}%OcD6r=<+))Sa|)N7kf8?-DOa_{@w?sEOVgOGwgT z>)HqrWToz(qbG+gCbw^?ev!vm=CkOOVzjp}i7r2fqS068K9(8M23qP0m>E&ULbj%J zOe`^ES7)?o$NhAf8x#=$cX`)s3W@XKykXx?k#^UOcBB-Z-Qn0&sbv>} z{SeIOG8po$Bak-s{9vh5Dq$C|H`XJ1DKl*;Y0l4@&h%a&^f<R7h#RY~QwHoYEB%0WvZBXQj4HqW0K9u-py=mz~+e;3YZfmyIKoHU4#GpOyg_%rD;Xjcf5AA0??O6F<-WEvdaI zc~^g=C^p}7`x>%!ey$A_&p+Mz6S4rr(;l5W^HSX69+adI)bDTTmM6Nhcd3o&*m1C> zSqfO@a-z_t!G-LX%dMly)8Vbpxmr@HxVX1(E_Jm>axu1ArVO|0&z)cJUr_LaGu5_k ztSFV$JzsFzm#1O7itk$pkJZO^=%d?X{SAKMtwN+G91MSdN-x+t822MEXx$p?b*rLwa~guqh%b8Y9p$rERAKUMHDE%i7)vB4$ zWen#}90dGQmUrCa;&+RUR2PN0u-spTpR5oAk=OK_GR16~(%&`5Jep72UE_f@Vx`}U zGAeJl<^r<=kAA)N1B|@vEu>RMu;KfRO1_*JenL0Z)7Vj!pwkO?bN(a#nx3zp#1`DT z#^k3t#Bx!GNNZLhN*6igDXj;vs2w@6-KM>EN=aR|AN03_4uZ)vg?fXYgoLl{paMH| zW|x)D)lP{AQ7>Hu(?*>W56whHOA7@JM%v^Ra#06UVS?|jCv}64h{PU*6Ds&S~)Tmvw3TF zB1G6arlVBwF&3xKrD$JQ&^JR@)`e3#!GZZL8-W?#f|ov7g_ytLNZH+bpBSb3Plnlh zm(ejRwR@8vn2rAjXKxu0N7QW#LU0J~8r&tgYtY~l++7+cxVsZPxJ&TH9U6BH?he7- z;dS!eJ9B5=n?F;3D5|?opOSN`_F8MN-4Qa-ao83w!#mH#p{}AywC>c1;&ZEpt@1!& zqgl;Yvlh@qtny-^u$YC0pRn6GI(@0Ex$E51J@3;9tnhqN|51kwLIg@(<(i(b zAvPE^ng5xy!-=K6y8OiMZ1kqMln=|q3(kl_lYUtczekNk&tQrKCv6~ic1jN=Eauv! zLL*IAytbw>_j<5^U{RYrmKq_lS0>^HHF}6HM?b@ibyd5mr)Sa1Ezt?>m;K|eY3rOw z&>8{)9fDjVt0U8ev~+Qe?tGT5t&$3PwN#(?3VeLa4>m1mGWaMCyy#lCnFbCt&we9k zguuk%zUi3GhGfWZHE2;ru!U_1*b5nkMUfC&s}|8>(fKhL4&A zZ2^50^;a1+QP(=D%~k@YQ=5nrejd%xCs|xI!P<8~KZo0~jRiX~@$KpJ4W>{#rbdKu zM|NOSk?}dbg;OFim_Q|V&d=xb%bNCDr`l@reva!$d^ff{J%u2cV_{ozOvd$AOJO%b#F=f-e z=FwGPQC*M(9F{{qfv>Nw7|OV=gkAgFrd;jG_lzhc*(+gRL9Vyxw8ZHt>{oPfYK$6P z7X0N!b-~v*OPHqZ%W(`fr09SNq*Z#ZK&p>?){FD# zRaboumfm`w1v%~{7?FPm46DJ$=<)_=T)U<{jLwlXdyZ53ep?4u%;<#qp+BmnE?L)o z57#5MO<{tmm5Sly;OkTYw5&}kRZDM8tQ>pzom=)i7<=6cL{|nP&_y^xPRBzEJrmz& z>e_s3<5iynInJu+EZr0E8y!Tay~*ez?*wq+41CPURNAPqC@q#Aup<<#6z5`1GZ!J7 z0q5(zBoQ2W`I|W!?heCQWdGhC*7xT07Jj(Q6IP&r5TSrTg?MLE!#icT9Y%eld6(1N zn|4{D;H8-5vrI(ersK=2*egj2KO_joRa+w&ARte~99y*E8Jgp&$yM!Vju9RF)kB05 zFOL%A&YVjecNvS{h#35Qx{pIka!Slgf9?@q+-)IbY=M zNrM+kR+PYAah#Gl01!#E9<5W}F(4BcBfqWkR3+pCm|PCYMj1%@s^g!Cm!;`CCKwev zh;NQ;tB2UqqvCj%F}kJX@`!Y5C9-9Dh4IJKdg&7F_S8LGI=})99S8?WK9Ou%pEe=A z+)(4rsaqi!7y0&)-HcshqJzCJ1Mr$f;~m{N@Qr)dJEiJTZzo$yn}2rL81zrW%A^@B z<=)spwmDh$V9}2EfPUF8iSLoAJ_@*de977%vaLUt?6b}6dWgp+F6tj-V~Ey)Nv?|8 z87pji(`nk{QE++~AMdbVRo~hL@-P=_vRohjqH{GK&yKx&QVu|ur3P+SAeUzLT?`cx z*&Y;hy%tlb(2C-BC2Q5C_I{QWm!7GDxt^^=9!k43GcxaAAmwCtbUHx?-kycxC!V1+ zyJedZHt-oQ1bQ4bwwjuIA2tw0UaGhe5`PQ9x@?nUQxD9!Z-kDOEbTDt z-3FA0M!-z?juH{5)WdkqPkJ#RoiAnITsb6}lP%gr(bO7C+@~jF>urxoWAW)9TgZSq zMJWlj6-pHy_HJ0Xhb^YJp^4;5#IIC(pBhnk(%vd-O!WvYj{Vz=Ky|u5@6=l<)x9`K-pv!=n7 zmN_hB@7}yRWKgSpZ*Ek?r+*ImWe}0zZ|+&%FOlR^m-*1r?ArD>xwv&q$hjCvIYRd9 zyG5U5t%qS7&rD+IG7G~+x;80MmJF|AUu^*Vp9^|FeCXNMBtGFLUfS*ckwjQ{r|WsR z2+OU*$G}BNO3D_p+Uq!L7njZPD@vTBya*1Jxu%JIacP78C9ES1ylx;Hl~< za`;1Tw|`CBko#gfv8?Uk%z^wV?{l~4WM|Ti4G1y-6oIu;^sH#_lq)M|mw-QiN8MhO z$VgPdP+1bN^8wD54j}?D*d%t8+189^LCCQK ztIajt{+l*OHvzJ!XW0NT2~H_4hgG0OKqV_TS#*<8;t$}?9h6Pztc}uE%S<*lzDiVw z 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 literal 0 HcmV?d00001 diff --git a/apps/web/src/stores/ReleaseAnnouncementStore.ts b/apps/web/src/stores/ReleaseAnnouncementStore.ts index 7d37cf2853..4bb77174b0 100644 --- a/apps/web/src/stores/ReleaseAnnouncementStore.ts +++ b/apps/web/src/stores/ReleaseAnnouncementStore.ts @@ -19,7 +19,7 @@ import ToastStore from "./ToastStore"; * We include a `_test_dummy` value to enable tests to function even where there are no running release announcements. * This value must be at the end of the list. */ -const FEATURES = ["_test_dummy1", "_test_dummy2"] as const; +const FEATURES = ["room_list_section", "_test_dummy1", "_test_dummy2"] as const; /** * All the features that can be shown in the release announcements. */ diff --git a/apps/web/src/viewmodels/room-list/RoomListHeaderViewModel.ts b/apps/web/src/viewmodels/room-list/RoomListHeaderViewModel.ts index 1464b6c41a..c61467ee0b 100644 --- a/apps/web/src/viewmodels/room-list/RoomListHeaderViewModel.ts +++ b/apps/web/src/viewmodels/room-list/RoomListHeaderViewModel.ts @@ -32,6 +32,7 @@ import RoomListStoreV3 from "../../stores/room-list-v3/RoomListStoreV3"; import { SortingAlgorithm } from "../../stores/room-list-v3/skip-list/sorters"; import { SettingLevel } from "../../settings/SettingLevel"; import { createRoom, hasCreateRoomRights } from "./utils"; +import { ReleaseAnnouncementStore } from "../../stores/ReleaseAnnouncementStore"; export interface Props { /** @@ -82,6 +83,12 @@ export class RoomListHeaderViewModel // Listen for section collapse state changes from RoomListViewModel const dispatcherRef = defaultDispatcher.register(this.onDispatch); this.disposables.track(() => defaultDispatcher.unregister(dispatcherRef)); + + this.disposables.trackListener( + ReleaseAnnouncementStore.instance, + "releaseAnnouncementChanged", + this.onReleaseAnnouncementChanged, + ); } /** @@ -229,7 +236,21 @@ export class RoomListHeaderViewModel }); } }; + + public closeSectionReleaseAnnouncement = (): void => { + ReleaseAnnouncementStore.instance.nextReleaseAnnouncement(); + this.snapshot.merge({ displaySectionReleaseAnnouncement: false }); + }; + + public onReleaseAnnouncementChanged = (): void => { + const isSectionFeatureEnabled = SettingsStore.getValue("feature_room_list_sections"); + const displaySectionReleaseAnnouncement = + isSectionFeatureEnabled && + ReleaseAnnouncementStore.instance.getReleaseAnnouncement() === "room_list_section"; + this.snapshot.merge({ displaySectionReleaseAnnouncement }); + }; } + /** * Get the initial snapshot for the RoomListHeaderViewModel. * @param spaceStore - The space store instance. @@ -290,6 +311,8 @@ function computeHeaderSpaceState( matrixClient: MatrixClient, ): Omit { const isSectionFeatureEnabled = SettingsStore.getValue("feature_room_list_sections"); + const displaySectionReleaseAnnouncement = + isSectionFeatureEnabled && ReleaseAnnouncementStore.instance.getReleaseAnnouncement() === "room_list_section"; const activeSpace = spaceStore.activeSpaceRoom; const title = getHeaderTitle(spaceStore); @@ -316,5 +339,6 @@ function computeHeaderSpaceState( canAccessSpaceSettings, canCreateSection, useComposeIcon, + displaySectionReleaseAnnouncement, }; } diff --git a/apps/web/test/unit-tests/components/structures/ReleaseAnnouncement-test.tsx b/apps/web/test/unit-tests/components/structures/ReleaseAnnouncement-test.tsx index bb0274e9af..75a1474ac9 100644 --- a/apps/web/test/unit-tests/components/structures/ReleaseAnnouncement-test.tsx +++ b/apps/web/test/unit-tests/components/structures/ReleaseAnnouncement-test.tsx @@ -22,7 +22,12 @@ describe("ReleaseAnnouncement", () => { function renderReleaseAnnouncement() { return render( - +
content
, ); diff --git a/apps/web/test/unit-tests/stores/ReleaseAnnouncementStore-test.tsx b/apps/web/test/unit-tests/stores/ReleaseAnnouncementStore-test.tsx index dca3429f1f..8a17c1913c 100644 --- a/apps/web/test/unit-tests/stores/ReleaseAnnouncementStore-test.tsx +++ b/apps/web/test/unit-tests/stores/ReleaseAnnouncementStore-test.tsx @@ -108,13 +108,13 @@ describe("ReleaseAnnouncementStore", () => { it("should listen to release announcement data changes in the store", async () => { const secondStore = new ReleaseAnnouncementStore(); - expect(secondStore.getReleaseAnnouncement()).toBe("_test_dummy1"); + expect(secondStore.getReleaseAnnouncement()).toBe("room_list_section"); const promise = listenReleaseAnnouncementChanged(); await secondStore.nextReleaseAnnouncement(); - expect(await promise).toBe("_test_dummy2"); - expect(releaseAnnouncementStore.getReleaseAnnouncement()).toBe("_test_dummy2"); + expect(await promise).toBe("_test_dummy1"); + expect(releaseAnnouncementStore.getReleaseAnnouncement()).toBe("_test_dummy1"); }); it("should return null when there are toasts on screen", async () => { diff --git a/apps/web/test/viewmodels/room-list/RoomListHeaderViewModel-test.ts b/apps/web/test/viewmodels/room-list/RoomListHeaderViewModel-test.ts index 9ff26c2236..006c4778d2 100644 --- a/apps/web/test/viewmodels/room-list/RoomListHeaderViewModel-test.ts +++ b/apps/web/test/viewmodels/room-list/RoomListHeaderViewModel-test.ts @@ -26,6 +26,7 @@ import { import { createTestClient, mkSpace } from "../../test-utils"; import { createRoom, hasCreateRoomRights } from "../../../src/viewmodels/room-list/utils"; import PosthogTrackers from "../../../src/PosthogTrackers"; +import { ReleaseAnnouncementStore } from "../../../src/stores/ReleaseAnnouncementStore"; jest.mock("../../../src/PosthogTrackers", () => ({ trackInteraction: jest.fn(), @@ -59,6 +60,9 @@ describe("RoomListHeaderViewModel", () => { mocked(hasCreateRoomRights).mockReturnValue(true); mocked(shouldShowSpaceSettings).mockReturnValue(true); + jest.spyOn(ReleaseAnnouncementStore.instance, "getReleaseAnnouncement").mockReturnValue(null); + jest.spyOn(ReleaseAnnouncementStore.instance, "nextReleaseAnnouncement").mockResolvedValue(undefined); + jest.spyOn(SettingsStore, "getValue").mockImplementation((settingName: string) => { if (settingName === "RoomList.preferredSorting") return SortingAlgorithm.Recency; if (settingName === "feature_video_rooms") return true; @@ -191,6 +195,28 @@ describe("RoomListHeaderViewModel", () => { expect(vm.getSnapshot().useComposeIcon).toBe(expectedUseComposeIcon); }, ); + + it("should set displaySectionReleaseAnnouncement to true when sections feature is enabled and announcement is active", () => { + jest.spyOn(SettingsStore, "getValue").mockImplementation((settingName: string) => { + if (settingName === "feature_room_list_sections") return true; + return false; + }); + jest.spyOn(ReleaseAnnouncementStore.instance, "getReleaseAnnouncement").mockReturnValue( + "room_list_section", + ); + + vm = new RoomListHeaderViewModel({ matrixClient, spaceStore: SpaceStore.instance }); + expect(vm.getSnapshot().displaySectionReleaseAnnouncement).toBe(true); + }); + + it("should set displaySectionReleaseAnnouncement to false when sections feature is disabled", () => { + jest.spyOn(ReleaseAnnouncementStore.instance, "getReleaseAnnouncement").mockReturnValue( + "room_list_section", + ); + + vm = new RoomListHeaderViewModel({ matrixClient, spaceStore: SpaceStore.instance }); + expect(vm.getSnapshot().displaySectionReleaseAnnouncement).toBe(false); + }); }); describe("event listeners", () => { @@ -435,5 +461,14 @@ describe("RoomListHeaderViewModel", () => { expect(setValueSpy).toHaveBeenCalledWith("RoomList.showMessagePreview", null, expect.anything(), false); expect(vm.getSnapshot().isMessagePreviewEnabled).toBe(false); }); + + it("should call nextReleaseAnnouncement and set displaySectionReleaseAnnouncement to false when closeSectionReleaseAnnouncement is called", () => { + vm = new RoomListHeaderViewModel({ matrixClient, spaceStore: SpaceStore.instance }); + + vm.closeSectionReleaseAnnouncement(); + + expect(ReleaseAnnouncementStore.instance.nextReleaseAnnouncement).toHaveBeenCalled(); + expect(vm.getSnapshot().displaySectionReleaseAnnouncement).toBe(false); + }); }); }); diff --git a/packages/playwright-common/src/index.ts b/packages/playwright-common/src/index.ts index 9644a15982..be96d53f0b 100644 --- a/packages/playwright-common/src/index.ts +++ b/packages/playwright-common/src/index.ts @@ -13,6 +13,7 @@ import { routeConfigJson } from "./utils/config_json.js"; export * from "./utils/config_json.js"; export * from "./utils/context.js"; +export * from "./utils/release_accouncement.js"; export * from "./utils/toasts.js"; export { populateLocalStorageWithCredentials } from "./fixtures/user.js"; diff --git a/packages/playwright-common/src/utils/release_accouncement.ts b/packages/playwright-common/src/utils/release_accouncement.ts new file mode 100644 index 0000000000..0435f58585 --- /dev/null +++ b/packages/playwright-common/src/utils/release_accouncement.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +import { Page } from "playwright-core"; + +/** + * Close the release announcement with the given name. + * @param page The Playwright page instance. + * @param name The name of the release announcement dialog. + */ +export async function closeReleaseAnnouncement(page: Page, name: string): Promise { + await page.getByRole("dialog", { name }).getByRole("button", { name: "OK" }).click(); +} diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/display-section-release-announcement-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/display-section-release-announcement-auto.png new file mode 100644 index 0000000000000000000000000000000000000000..3739c0881ed7722068ea4e5bbf11b9a49c42672f GIT binary patch literal 34894 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 literal 0 HcmV?d00001 diff --git a/packages/shared-components/src/i18n/strings/en_EN.json b/packages/shared-components/src/i18n/strings/en_EN.json index 80bed47b08..9bf59cc09b 100644 --- a/packages/shared-components/src/i18n/strings/en_EN.json +++ b/packages/shared-components/src/i18n/strings/en_EN.json @@ -67,6 +67,11 @@ "mentions_keywords": "Mentions and keywords", "mute_room": "Mute room" }, + "release_announcement": { + "room_list_section_close": "Ok", + "room_list_section_description": " Group your chats into sections to keep conversations organised and easy to navigate.", + "room_list_section_title": "Introducing Sections" + }, "room": { "context_menu": { "title": "Room options" diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx b/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx index 6fe8755910..bcf2e8efb2 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx +++ b/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx @@ -32,6 +32,7 @@ const RoomListHeaderViewWrapperImpl = ({ toggleMessagePreview, createSection, collapseOrExpandSections, + closeSectionReleaseAnnouncement, ...rest }: RoomListHeaderProps): JSX.Element => { const vm = useMockedViewModel(rest, { @@ -46,6 +47,7 @@ const RoomListHeaderViewWrapperImpl = ({ toggleMessagePreview, createSection, collapseOrExpandSections, + closeSectionReleaseAnnouncement, }); return ; }; @@ -68,6 +70,7 @@ const meta = { toggleMessagePreview: fn(), createSection: fn(), collapseOrExpandSections: fn(), + closeSectionReleaseAnnouncement: fn(), }, parameters: { design: { @@ -124,3 +127,30 @@ export const ExpandSections: Story = { collapseSections: "expand", }, }; + +export const DisplaySectionReleaseAnnouncement: Story = { + decorators: [ + (Story) => ( +
+ +
+ ), + ], + args: { + displaySectionReleaseAnnouncement: true, + }, + parameters: { + a11y: { + config: { + rules: [ + { + // compound-web's ReleaseAnnouncement renders its header as

, + // which jumps from RoomListHeaderView's

("Rooms"). + id: "heading-order", + enabled: false, + }, + ], + }, + }, + }, +}; diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.tsx b/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.tsx index 3b17571d54..92711bd9be 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.tsx +++ b/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.tsx @@ -80,6 +80,10 @@ export interface RoomListHeaderViewSnapshot { * If undefined, no icon are shown. */ collapseSections?: CollapseSectionsOption; + /** + * Whether to display the section release announcement + */ + displaySectionReleaseAnnouncement: boolean; } export interface RoomListHeaderViewActions { @@ -127,6 +131,10 @@ export interface RoomListHeaderViewActions { * Collapse or expand all sections in the room list depending on the current state. */ collapseOrExpandSections: () => void; + /** + * Close the section release announcement + */ + closeSectionReleaseAnnouncement: () => void; } /** diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/default-snapshot.ts b/packages/shared-components/src/room-list/RoomListHeaderView/default-snapshot.ts index 41887e8ed4..a775a3c526 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/default-snapshot.ts +++ b/packages/shared-components/src/room-list/RoomListHeaderView/default-snapshot.ts @@ -19,4 +19,5 @@ export const defaultSnapshot: RoomListHeaderViewSnapshot = { isMessagePreviewEnabled: true, useComposeIcon: true, canCreateSection: true, + displaySectionReleaseAnnouncement: false, }; diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/menu/ComposeMenuView.tsx b/packages/shared-components/src/room-list/RoomListHeaderView/menu/ComposeMenuView.tsx index 3803c23fcf..c31fa53e82 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/menu/ComposeMenuView.tsx +++ b/packages/shared-components/src/room-list/RoomListHeaderView/menu/ComposeMenuView.tsx @@ -6,7 +6,7 @@ */ import React, { useState, type JSX } from "react"; -import { IconButton, Menu, MenuItem } from "@vector-im/compound-web"; +import { IconButton, Menu, MenuItem, ReleaseAnnouncement } from "@vector-im/compound-web"; import ComposeIcon from "@vector-im/compound-design-tokens/assets/web/icons/compose"; import VideoCallIcon from "@vector-im/compound-design-tokens/assets/web/icons/video-call"; import ChatIcon from "@vector-im/compound-design-tokens/assets/web/icons/chat"; @@ -37,7 +37,33 @@ interface ComposeMenuViewProps { export function ComposeMenuView({ vm }: ComposeMenuViewProps): JSX.Element { const { translate: _t } = useI18n(); const [open, setOpen] = useState(false); - const { canCreateRoom, canCreateVideoRoom, canCreateSection, useComposeIcon } = useViewModel(vm); + const { canCreateRoom, canCreateVideoRoom, canCreateSection, useComposeIcon, displaySectionReleaseAnnouncement } = + useViewModel(vm); + + // 28px button with a 20px icon + const button = ( + + {useComposeIcon ? ( + + ) : ( + + )} + + ); + + if (displaySectionReleaseAnnouncement) { + return ( + + {button} + + ); + } return ( - {useComposeIcon ? ( - - ) : ( - - )} - - } + trigger={button} > {canCreateRoom && ( diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/test-utils.ts b/packages/shared-components/src/room-list/RoomListHeaderView/test-utils.ts index 70c51c45c8..4f534cc4ae 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/test-utils.ts +++ b/packages/shared-components/src/room-list/RoomListHeaderView/test-utils.ts @@ -25,6 +25,7 @@ export class MockedViewModel extends MockViewModel i public toggleMessagePreview = vi.fn<() => void>(); public createSection = vi.fn<() => void>(); public collapseOrExpandSections = vi.fn<() => void>(); + public closeSectionReleaseAnnouncement = vi.fn<() => void>(); } export { defaultSnapshot } from "./default-snapshot";