From 710a93d6901f78c87ed3c2a6cdaa0a2366418533 Mon Sep 17 00:00:00 2001 From: webadderall <131426131+webadderall@users.noreply.github.com> Date: Tue, 22 Sep 2026 19:48:30 +1000 Subject: [PATCH] Add project dashboard and Raw library with consistent Solar UI --- THIRD_PARTY_NOTICES.md | 5 + docs/pr/project-browser/projects-dark.png | Bin 0 -> 193133 bytes docs/pr/project-browser/projects.png | Bin 0 -> 199312 bytes docs/pr/project-browser/raw.png | Bin 0 -> 37618 bytes docs/pr/project-browser/recording-hud.png | Bin 0 -> 10725 bytes electron/electron-env.d.ts | 20 +- .../ipc/project/createUntitledProject.test.ts | 26 ++ electron/ipc/project/createUntitledProject.ts | 31 ++ electron/ipc/project/manager.ts | 7 +- .../ipc/project/renameLibraryProject.test.ts | 32 ++ electron/ipc/project/renameLibraryProject.ts | 47 +++ .../ipc/project/thumbnailFreshness.test.ts | 28 ++ electron/ipc/project/thumbnailFreshness.ts | 24 ++ electron/ipc/project/trashProjects.test.ts | 34 ++ electron/ipc/project/trashProjects.ts | 45 ++ electron/ipc/recording/library.test.ts | 8 + electron/ipc/recording/library.ts | 4 +- electron/ipc/register/project.ts | 58 ++- electron/ipc/register/sources.ts | 20 +- electron/ipc/types.ts | 1 + electron/preload.ts | 10 +- electron/recordingEditorNavigation.test.ts | 31 ++ electron/recordingEditorNavigation.ts | 24 ++ package-lock.json | 14 + package.json | 1 + public/announcements/placeholder-1.svg | 1 + public/announcements/placeholder-2.svg | 1 + .../announcements/AnnouncementDialog.tsx | 2 +- .../EditorAnnouncementBanner.tsx | 2 +- src/components/auth/RecordlySignInDialog.tsx | 2 +- src/components/launch/LaunchWindow.tsx | 7 +- src/components/launch/RecordingControls.tsx | 184 ++++---- src/components/launch/SourceSelector.tsx | 2 +- src/components/launch/UpdateToastWindow.tsx | 2 +- .../launch/popovers/CountdownPopover.tsx | 2 +- src/components/launch/popovers/MicPopover.tsx | 2 +- .../launch/popovers/MorePopover.tsx | 2 +- .../launch/popovers/PopoverScaffold.tsx | 2 +- .../launch/popovers/WebcamPopover.tsx | 2 +- src/components/ui/account-avatar.test.ts | 24 ++ src/components/ui/account-avatar.tsx | 52 +++ src/components/ui/icons.tsx | 298 +++++++++++++ .../video-editor/AddCustomFontDialog.tsx | 2 +- .../video-editor/AnnotationSettingsPanel.tsx | 2 +- .../video-editor/CaptionListPanel.tsx | 2 +- .../video-editor/ExportSettingsMenu.tsx | 2 +- .../video-editor/ExtensionManager.tsx | 2 +- .../video-editor/FormatSelector.tsx | 2 +- .../video-editor/KeyboardShortcutsHelp.tsx | 2 +- .../video-editor/PlaybackControls.tsx | 2 +- .../video-editor/ProjectBrowserDialog.tsx | 1 + src/components/video-editor/SettingsPanel.tsx | 2 +- .../video-editor/ShortcutsConfigDialog.tsx | 2 +- src/components/video-editor/TutorialHelp.tsx | 2 +- src/components/video-editor/WallpaperGrid.tsx | 2 +- .../video-editor/cloud/CloudShareButton.tsx | 8 +- .../cloud/projectShareLinks.test.ts | 21 + .../video-editor/cloud/projectShareLinks.ts | 34 ++ .../video-editor/dashboard/Dashboard.tsx | 42 ++ .../dashboard/DashboardAnnouncements.test.tsx | 40 ++ .../dashboard/DashboardAnnouncements.tsx | 97 +++++ .../dashboard/DashboardDialogs.tsx | 81 ++++ .../dashboard/DashboardFilters.tsx | 129 ++++++ .../video-editor/dashboard/DashboardGrid.tsx | 117 ++++++ .../dashboard/DashboardSettings.tsx | 48 +++ .../dashboard/DashboardSidebar.tsx | 184 ++++++++ .../dashboard/DashboardToolbar.tsx | 49 +++ .../video-editor/dashboard/FolderColors.tsx | 92 ++++ .../video-editor/dashboard/FolderRow.tsx | 103 +++++ .../video-editor/dashboard/ProjectCard.tsx | 254 +++++++++++ .../dashboard/ProjectThumbnail.tsx | 33 ++ .../video-editor/dashboard/RawRecordings.tsx | 142 +++++++ .../dashboard/announcementConfig.ts | 12 + .../video-editor/dashboard/types.ts | 14 + .../dashboard/useDashboardMetadata.ts | 31 ++ .../dashboard/useDashboardModel.ts | 110 +++++ .../dashboard/useProjectFolders.ts | 50 +++ .../video-editor/layout/EditorDialogs.tsx | 32 +- .../video-editor/layout/EditorExportMenu.tsx | 6 +- .../video-editor/layout/EditorHeader.tsx | 195 ++++----- .../video-editor/layout/EditorPresetMenu.tsx | 2 +- .../layout/EditorPreviewPanel.tsx | 2 +- .../video-editor/layout/EditorShell.tsx | 82 ++-- .../video-editor/layout/EditorSidebar.tsx | 38 +- .../library/RecordingLibraryPanel.tsx | 2 +- .../library/RecordingThumbnail.tsx | 2 +- .../project/useProjectLibraryController.ts | 4 +- .../project/useProjectOpenActions.ts | 55 ++- .../project/useProjectSaveActions.ts | 180 +++++--- .../project/useProjectSnapshotModel.ts | 6 +- src/components/video-editor/timeline/Item.tsx | 2 +- .../video-editor/timeline/TimelineEditor.tsx | 2 +- .../components/viewport/TimelineCanvas.tsx | 2 +- src/index.css | 39 +- tests/ui/bridge.ts | 34 ++ tests/ui/editor-layout.spec.ts | 35 +- tests/ui/hud-layout.spec.ts | 42 ++ tests/ui/project-dashboard.spec.ts | 396 ++++++++++++++++++ 98 files changed, 3533 insertions(+), 398 deletions(-) create mode 100644 docs/pr/project-browser/projects-dark.png create mode 100644 docs/pr/project-browser/projects.png create mode 100644 docs/pr/project-browser/raw.png create mode 100644 docs/pr/project-browser/recording-hud.png create mode 100644 electron/ipc/project/createUntitledProject.test.ts create mode 100644 electron/ipc/project/createUntitledProject.ts create mode 100644 electron/ipc/project/renameLibraryProject.test.ts create mode 100644 electron/ipc/project/renameLibraryProject.ts create mode 100644 electron/ipc/project/thumbnailFreshness.test.ts create mode 100644 electron/ipc/project/thumbnailFreshness.ts create mode 100644 electron/ipc/project/trashProjects.test.ts create mode 100644 electron/ipc/project/trashProjects.ts create mode 100644 electron/recordingEditorNavigation.test.ts create mode 100644 electron/recordingEditorNavigation.ts create mode 100644 public/announcements/placeholder-1.svg create mode 100644 public/announcements/placeholder-2.svg create mode 100644 src/components/ui/account-avatar.test.ts create mode 100644 src/components/ui/account-avatar.tsx create mode 100644 src/components/ui/icons.tsx create mode 100644 src/components/video-editor/cloud/projectShareLinks.test.ts create mode 100644 src/components/video-editor/cloud/projectShareLinks.ts create mode 100644 src/components/video-editor/dashboard/Dashboard.tsx create mode 100644 src/components/video-editor/dashboard/DashboardAnnouncements.test.tsx create mode 100644 src/components/video-editor/dashboard/DashboardAnnouncements.tsx create mode 100644 src/components/video-editor/dashboard/DashboardDialogs.tsx create mode 100644 src/components/video-editor/dashboard/DashboardFilters.tsx create mode 100644 src/components/video-editor/dashboard/DashboardGrid.tsx create mode 100644 src/components/video-editor/dashboard/DashboardSettings.tsx create mode 100644 src/components/video-editor/dashboard/DashboardSidebar.tsx create mode 100644 src/components/video-editor/dashboard/DashboardToolbar.tsx create mode 100644 src/components/video-editor/dashboard/FolderColors.tsx create mode 100644 src/components/video-editor/dashboard/FolderRow.tsx create mode 100644 src/components/video-editor/dashboard/ProjectCard.tsx create mode 100644 src/components/video-editor/dashboard/ProjectThumbnail.tsx create mode 100644 src/components/video-editor/dashboard/RawRecordings.tsx create mode 100644 src/components/video-editor/dashboard/announcementConfig.ts create mode 100644 src/components/video-editor/dashboard/types.ts create mode 100644 src/components/video-editor/dashboard/useDashboardMetadata.ts create mode 100644 src/components/video-editor/dashboard/useDashboardModel.ts create mode 100644 src/components/video-editor/dashboard/useProjectFolders.ts create mode 100644 tests/ui/hud-layout.spec.ts create mode 100644 tests/ui/project-dashboard.spec.ts diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index 8a9f73a4..60cbcace 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -36,3 +36,8 @@ The Voom software is provided under the following license: > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE > SOFTWARE. + +## Solar Icons + +Solar Icon Set by 480 Design, licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). +Source: https://github.com/480-Design/Solar-Icon-Set. Icons are rendered using the MIT-licensed `@solar-icons/react` package. The muted microphone adds a diagonal stroke. diff --git a/docs/pr/project-browser/projects-dark.png b/docs/pr/project-browser/projects-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b729040f806bdcfd83f079ac0dc7e1cf4f113055 GIT binary patch literal 193133 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 z

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

3$=EEZRg^$lQr?`q{Iqa{O&UU?ZP8} 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

FbAa@hko0)3uPVWr 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≶{l{1>Gnm`fdC3O2<|;$3wYvU(?3!>USKusi?u{gJ|epsmt~Q z?V|CP!RW!U{lNTjo*_`kb4=w3xuz~4vZzalZDN8XI0O(S#S zh6r=a7Q{@u6XUn~3%I0iNZc66{KqeCLS~#%&$q#Aq4JPI;r0Jky9Y-TX%m= zNDj%nPMSk0E~7~KO&yKG)E#^i+WZ{(|0S`5Cg?}yU^ZojW})SJ$s%8GpklRF&I>zK z2*MEkz--c@hu|;)Q6Z*-8B!{Ixyq~YVTcTCKC7DaBiHGaG~g%C(*1!A#|)=t5rHBv z0Hy_fq$$Drm^|jR?zBEHxIMU>;oF#^YJKF(VUXtaPi^9p-0Y3GfQ8rBX7L3J3sgh~ zz%h`KY+QA8rjOC8@>lEK8-8R=E3VPsnDWfI*r{h3o>WM6@v%x20~pr5-nQ_DJ41I| z9r#Dmhj%;Y!Ks}eVk_F!)6=Y(6QcbNkm~H=cc>7VdUV^q$5=S$)I!dLUYeg%V(^N3YMb z{KsKZ#arsV^SG(M7bE_mr@0%MC9mJcXjURu_U@1QaKV4@)Fo#4! zCcW+@j$(vBIR_g@bDr2fuNUSFCa$%}&xJFhpC|{E^S56>o^e^`bnh9-1bc9 zL@!+TIyW5nY4^9qU?$^EDZPBv2>G6?&q&=I`lqzCh5@x*mt!NwL>V|MBj!5&LYhm< zJ<%0T4*UU{$|NxMxm!|6?q!U%DZdq2`N*=s#WvNK|4V`U#_?Ew>rzCn;6Rh$R?>zq zN0sWciGSq1%!4Te7z~9!fnjx|j{E8G-JhS>G!Ni|X?TmwagS4kPPhflKdAB5jDPRsg0zQ(Y5&457LATwg9%+4lhb9a}f z7h&LR?*J5+yj~GTude?>&@x#PJM=17?a5%n^TCF$cX|)}_)XD2XMf`PT)3!E#VF~C ziHRyW8yNzx-oXJi&rnFsnU7z4P3fVtw9Cl%$-?6^%^GqF zh7Is*-g`KIy+?%IMEKtuB)Qf9NrpX0)G66HdK9DlCknqqb{dnl)#rg^u4rQ7M8Y3k zw;fkC%pMrKaNc#S2M(3)(q8shxxNbc8?+z}8d9|t*7JxnkLG-VO!G6W)9dwr+;h9h zxzisXy{*19Uy|awqMINP@LK)g0X4sJxg!mSJMJmwc6{%dHF|&EP2A9KZ}?_&FUVf$ zB`IBZPUPIt&E_W$3}C^sw8`+&gJ`;CI?yZi@z*vdSZ67d-6d!@^MmOe;$a+MjN?K? zVqT5~9&~W(K5tbPV~KpUjMVh-LmC(z=v6yeIM?|dsZhy(v+Rh8($TfJeDu~()l+omwWh6Fb?lG!xl5be}~L zb%~w^%?xIN&$D^{&F-g2@ADutjcA1b_V3>opZ!-)2BM2(GE)sDEo_VfRiQEN@jC){ zb%>Q~+j8&P1-+T(A<@mgcvqzBR^oFT<8D+Zs1jWK?NbfGOP}5iMrcRAg0}+I1H}@8 z^ z*t9LT`|H2#L%ONY`+Fw`oYMGxJI+BGla&WG#x!O+Yy~jM*fIy$#9x{uha}m9mtmM+ zWm&eiZ4e^)Wc=WNdaUI&3P&MM-` zf<5_jYEKzmzk^Ag+Q7}Svh_B@u5HFl%DX8rc|UD7^uxd3tMWNWl5k%?RM@Wz&owiZ zWp=I<<$6cmhDaz5$V$eC6vL}K@nZ4TXVd`WdO*E7duxBah052)vT4|tQGaAi&xz~D zw~zVyAPRK-sJFnW_(;-tdg%6Vg__%{`O7GnugZzjbkIa1=-`I!$~PFpq0b`=??&dq zKabhaKpWB1z;T*;mrq{|&bvQ!nlP!WvZ@o~17!wDRl2iuX>D_#Xvd}^G(MsJyl(zqoezc1kJg#7HgLvi01w{Tn5bt|6+at=fSJ-%zRl zWdS%qf}!q8w|o1m9YnfLI~r9M2})0`dx3Oy-KNXHmt$oHY&15(L+-7wSa`KGJpol?UDGAn}EXj`vXPgoXH|xN;HkWLE7`-UXR)KC2PiG7b>f+ zFb}KwaT2f7L5fvX_Bf%3L6VM@Do6)GUM3JoSzQvMAbZs@iLLy)>Sl4 zd)t^oURWn`L^9a^Y9!5853u0SqOZQ8!B>M{`bxS{pI${6RM*WNb(WLE2L%OH*EBaI zijrr)-MCmY>bQQpyfgzD{-@)X8pe|o_#XFZCJzc4_iX4-tTXpukfd*60D!(-gS*Is zetvA`^POzv-LK=3pkKB@-!Jw89W;VIsAr5Np-%EIZxq0KLz%lrukfDyysuiRas>*2 zyT3gl(%!jq2ktfgaBpjCXv2s6fAMBq(Z9m<$L1!-{rluI{?^~0I;=D9&E_H$%7x1v zx<_@5Q>Vx`QqN{0I7&JkDUikbsuv2(8)F>n{#TPfUR(IRBum#wdR#^l68*+NXp*?76)S zBVR>Uug}FaxlUI2`klR9ia4Z$Jur9EN`~hqgpuPm@)s?v4^4smGpj-#E%D$K}eJeoq!7T4>B-a+fA% zfDgrSyMv80892^B)ent%iDl3mDwftql$sGrrS06oZ;&^rNQWOs;c8lb$-wvgGov8R z9RED+?AsvHwTqBHcVoQY7f9vYx9OpoCy_{H_Ekp6QVu|whpe6SLIx^L+rJ$z!0rq2 zqotvFC6uw0KmMpHp1E4RJj8?45}y*-XSMtFZAKa9HM>>u#yp;>R+q(efkIk zv?I!@&*8OP-0{tewav4@>xjlipsJkTpQ7Li-@o15?TrXTE&B82c#(LTY77R0fBfh4 z^Qw;pD=5C~AV~RCxg#V3ih1dN$Fb(`u(YdA9T0b*QuIkBPjkFmBMekN=bXDaaq>Qi znMkymm<=(+NMxC@7s0mwwM_|1CIQY0C z;8xV1f6jNk4@tB*xej2vKcaBw(&?wr8oSDkSNp`kSj-B$Df|iX!e8 z7ccV?ISGb1&tcJ4e{{5j9|>47Jb0EaU##9mprWmt*F?SRiGDYR2}XGDBja zv^Z^}cr)drk{t0)5KlY}u1a1%sf?4$#N&c}GO8!haLwM+(ys(({so(f>|I@7Mt$bu zfLCn2Lu44$fBuG*x~e9xU)Zxs3s>K+pekpT{ zn^=I{NAA2{fzrt14!gSSHG(vLA*o0E#>oR=U#sE$cyvgIB1gW>*X1|OMt_f>fzI@T z!a1T=aw{dXMuC%(LO9Kmi}iyjAfE%AZFDR{i-LD7C{Q^jTb>mig+eV96d3NmEoniz zl*we$lOc;>|`U>9Rq?5N`g3KqY5nc_9G=%yCDXRpvd z2PojbDjG$&k)Jw&(?Z1wQMh0#CKgt^0d0)8YbbRte1B4w2 zq)f*&q^~8{iVJH4FWAa6%|(ZJt0JSltP(0cMB=nO_dZw@+D08A7gHVh+u>F$?rP>O zog>zRWtF+C=x_pcgQnXqViq;=n8J_4;4bg9XkHqtYnk8m#-k7xTdP^A1VbYXN|2U5p$wepJ(K?m za|fQ=g5fPY&+8VgUpXMv`GVAX&?Qg#M)T$jh;D`+Hw$Ad1=Emmg-d1d4H@@O;9IB+ zZ`s^o7PT04#^kcD`x!M}9@5#rfbY{VNaN8}Z_5crWx^{!w`7g<;uFbo7rq({nBDn3Hj3=>xv3Rp(I0p$zK8`V+!0~S7idX}i=7J-Y^9L=djB5jz)Zrr#* ze+_FaDHU6(4@foeuhjGNwHXc-HrG!b-q0yC^1;P2v~`Cb2la_FkZ;ljPX!g(23-z$ zFXS~+700IYkFhzKv~w<;&D~-?n9m`bKC_BvmJ*MZ-t0xape}Z8O0+Tfe&x~oR{n46 zv7Mq2yw{J%?uIi^wg;~-kP?s*<|@#mm14;oh3)B>BWe)`d8c;`0l z8U=C#zNgKW&#-OlVRf$`!u|s4DdmMq$)iX^fz!5wA|si%|H6WBX-l0Z5gF6R~4%)drKD#aCM;iT+U-M+ex>Ri-lWL*;t738|xc z*C4Adla2CUgZx3A@RL*vq6MsuXgz-j;FSm>NIO(m>qwe`SJ;V~#;I*P4gL1O0(G}R zs>RHtQE`6sP)SHHs14Cl)3sAqBk0;lp{hdE&vc8pnX+H;;JsF^n`|{WB(d9Vy8sn1vg2*V+WKmm~j`~LI@Upd30&@7_)~> z7(2seRlF<|nnbYa>-8s!c{h!`vLS?O1QCiT_s)-vlY-6#J&mHzDoo{!B`Go<1hs@3 z6pSNt*!>RQsqwUqGCBgi$&+W{;g5Qq7!E?astiika}X|A4PFF+62s~|jmGV=5DCo0goBGBZqIgH;5 zJPZ0Wa|Z~%*6thr(Gcy~X2}0(cX~us1}^<#5^wt_aR&$>;BY2YuWnFMs&VmiN<`?e zBvw-SSygx_%PUD!W;KCwi+u;ZQ?12bi!fVs#If7Rqe{5FCC8d{pWF0%GZk>SaC>Dy zchbZQ$4#`Ij=dR5c6K(MxD{%4pM)_t5BM*j&lewtB4MokG>0y%wDMcbBB8ffhk>cd zl~b;+8EGt(&* znjLtE&*Zb>-4m*Di%SL6xAM;<*{~BJIgkcOqc&O?lK=4I=r|8Kk}0=KU`cXfo78;~ z=rqjFr&!C7yXOaZRwVLaCvQ~Z=p#pkkz?a^=YCneyz$N8aC<`S?A_taL}g>sXngWW zYxw-;K&cMKN}oep4q=h2CkNmKrA4HAvMp+jV=r{u=;@W&#;bdsE$HJIWyUmB{=);Y zu#TWnY?a0RT5YaQBfmr1Z962Nos&CdN{MU!em3~2nvNN<=qUA9hJFF4A2GVrRIGJl zT2FmNm#ENK^hpmg&Ej?UFrYN{eZF}Qn;$>6CyAU*&YrZ%-I2?~g|FqWZj_kHAAj`q zw6S^^jW=t)RJ>Zh5jT2o1Pk)D{x$PBY&o4FISKX2{jNLg1orq(mW3e$n}Z;7A|bQ3 zev7aewn*Fdr?MuXIJ2L_*^o$&_%^`pwn&&`2}&Y`u}gUWHnw(!T70 zjYe3tr6~Cmn(HsY(81@}oq=htpB~8u1L*%7+q8KI`D$c%WI7{5uGXP7Z!U@Y6W6=L zx&nF7x!-Q<+E^*Y1CW30qy)p%RyFr1-;w}vTz6hK?wyDUr0A2oQ|skrCp_ry?O}D5 zEoM{UfBZZu`uTh?V=sz-GZ4B>!?Q6jPUGBsPQ$BBBWDa%X2ZXlY`=3edFY`)BR7&% z=(IdtKm8+z;P}fV=uz%)#?}lqVq4XjUa?ye>`>KEq3eE(V3UFO?Ux-E81&^H4d|gLsN@6(4 zO*uZs_mz#o@&Z4{eRm7t&U{I*5SoZa;Z!}a9b6$(V@-(B*c+GZwqf-CK>#J&jk$aW zt<_syrsK5>0Y&O#_v^=VW%n+xc+2hjJ52==3f7|K#925`OFSw~U7W+SC@fDP*ZgP| zwR_H`aOP9}set0iGu#{Bq=p>i@a@e_jL{G<4N1vZ@D#(7mz#C z+{pUAVE)$yZ{d7McMqbnTJ7WGEI&20gPXE4ZK_69SMw!x)LTbzBc;@mAB7I7b2hfp zNh$bwh6`*pZ_#_9J|dWPIH7l{w(WW=omX7`e)$r)yIX*l=Du?%A|1e-y%m#K7zlzj z^lLXy&dw6B*n;7;t-=XcLyMwEy&FkT@xCA>?$L1(G8u3?CqEBD!=UJF}@* z>A(YOUsBtOYLwK{J4!OpLGkvR9JR{2M>$Fqr%(9Z;82VkXZVoWqPLzx zZnUW6A(1yX7#M+Nf+!EGE%qqa%Bm-w^u-%Dh|x8XrD#TQ2#+Um%rMU+67L%FV6S+a3Nw#KGnwc|s?x{(MD?YR%8IhjCVAQ@Gq>pFwB z5xGt1G>|5-%QUBw=^X130yS=-M&wRf4W>W%ms2@3a;Fwy4bgi`A8!u|-PaVZRl|wb}-A|IuXWXO5(ZK|0xfg<$6S|QPV*8g;HE(Yj=zK8W>JxiO zT)LmZW!7b8@bKDySpdkzT&E(VcbPxRPmhX_v=zO@r%kif0^Mc(w#`ES;zr;U4RW{X zy$e&mf%HSOA^}!mO~RIt7w7AnTf_%-!0+J$g!yBulpJX3W(VqN^B(~k8dNjWKwO#l z^i~RA8fyi!rKi2GC7D#|5Ci`YdGFcRMAwG>+E76S=|~f#iGV02AfYI|_Z|=sq$c!U zRX~dLrVs(?H9&v_2u+aQJ0u|>O-g8jfK;FHy6*daetYkau;+y@aAqJgD>G{y=l?iP ztTOcPYKw2OqM|~bn<*~anO|co&c#W|SI81!!_#ZaRvueBu(j(CFK6MENQspv?m~@x zd`iq7(R~O`TP(q&qBL&51?korrs;?wKX*8qs6LekEj}dpqVk$yu9i<;Q{A%R?)@T1 zGlI%-Vy59kQ-~+=edI<{Q==&vO;?Dhk^mi z0te&dYp25v6qD`n=d{DaBbJ7(n5b~#eaPe&dE6UOCoyfuE~pT+&5qZQ$r=5~#q^c1 z>KJI;@(%3Q7;!+{CvnPow_p%LdTGGf#AJPgyXMs|DhGmH#kTgJh+R8V8Hk>tbv8I!bB6~B z<#$bMh=7cu?wTZ}c1_+f#Fng7ixK>XAqPtOG#lA+_Dwo5WHWq*QrRTgnu3VJ?pp$N3M2uHP%kz@e4d(NrSUT+=WS%#oM?lyn_Ub%qADFO?2mFRu zP&m&9%#%xgcs>qh_u3f_JV&|;!(gWART{QmVZ!HBbsGH-Q0Ri#?@6zh$80xjZBaF* zfm~t7Ce?hbv)tx?G;z4W0Z>|R4{x8qCQdN8V_C6l*cM&5mOAwf{b;Aw21cN^P2NU$ zZk}u_)Xx8=L@*|)Ye?KqA{d!WjHAzt|6$8y=Aw!o^f+#$o2#%x{miw75 z@E4pYSgL}$3AaecaWWwcxg_O}?rm*=br+|QLWt8yR4ytzHe*p*uYKz32Ylh{XzpHS zD`;|}lNWW}pvjkf0Yo;n^Z28*I1D1Y_xEf|k4|lH=r5=k#dz~1FGdQf+pp{k8b|r% z+u8{=xT7}XD_og~E5!Me2H*+k_51QhcHM07pOBCp=#)&G2ZH?$SsBFDW^-$ zHEC3Csh`HaNyo!f-WoejBBntDAVi$mq*w%9%r)$?nLdUN`0p z#VSi@-)Cm_6y|cTp=4F-UCYEfO&@_Cy5|2BT$K(U3l@&YdiXDWM3_u-#JsG>WEwwm zxE*@s#wGUOWQN02%QK7E)sNdq;$f_q$Lt)6f8Qy@|3qdUbqm#ABgntvVUVjSnG0&r z5#}mnXS8r)bWmH*Bs-9C6M7F-dfke!fGIa#nB0E_0$X}F1w1(VMLhe85EnVz=1G$U0}-*OySW0g+L-6VSgPQfj)sj2Ev`ugEve%nIdP5m*O&53r zxIdmsHK&lX8ZYR0bP^ zvs$B8!pjS6nCwX3rX|H217cClsgN(9pHs!7n>+4Z+K8ZM$1bTrQ@tsdUZm9giIHrR z;Tj)>ikC-vL((nufwY(-N!@sI8it2M)B(Tt@g0WzVI)1%x{;{l`kr4>Kv$Z9V8to8Q;e>S|=~oW~ z7u#<^=DB}ZRfd3gkgy4Mt9P2Sx-AKU47E2 z(cMhP=_)5*Db1!!oBt%PmMF|s@5JQ6A@Q?b^W#4&A{BIGgmaL$$(S$YC#b(P{*kkJ zgEhF&m|wJ}Kx|Vw)-*@|(fprX;kPDjy*^wYCN4Inao1tpPesrqU^8&Mc#Y*4x<*H} zJf820j#530o2^aAvh6<-66EYh0t?Hn_2ao3zruE-SDIbPe?_F6mg?mh;H}kA0b|)Z zogF+(3U)UB_MmQ3y6#za`U8@h1CGROmEmogqc+rW>71Ia*T>iGKkhXg2-Gxxo;w_w z;Wd&SNX3gQiH)T!KW^MaGC*+SE}jB`5D8F!_UxnhL(00X3g3z@!&_03@$W!P8Khod zlR~LX`L1mL5iVHaN)_hdDdreCwB?)CJux`ZF|}Z}&R;YkL6SqxOUP=S+-Jm~FM!jd0;1BdDz zRDAg5rz>c24cDvacq%~m0TzA*jFhFQ_yV984|AMlm=+L&>OI$eiCglZb{O}YFbwV0 zt3g+dmy6b2S9gIzSlneeLr`)ItgBKIL=bR=Zpqp^|UIZMcIvm)`66(5ahly3j+&FpWv+OO41j zhDy0CmS(4q7+(k6=~v|MT|%ZryykS%-&$v>-@`OIP`h@bd}x22h?p`q`~pmNj9#?d%x!fbKoBD{s$8iO4gOM#s0<{@QCV8&l3&2zTe9vuM)P&cpv;WBuG#|X3i|B->bff_3` z&&j-hd_M)1XXiyT3BsD@#A-%GKH4M?^iuot9jmHR1+Id2hAHsOSLm1Jq9>vDgLK_m zEZkAyDs|h`b?qMtX7Qx4HCBuzp?8$50VoCfSg^c{3wzfYD)|2pe{5BzL^){JOCa%J z9^t2mIJKz?L%z~3AVxiVa9KZHj+T5w@TM&X=jXp_ke5*M^E>)7Y6Ghsfvf>z(zXYA>qsVpB@0ZsO`BWc9RCJz&Dw zD#)iaq0`6qaH?$mPffzj&6W3Hb$xQ}bG+IiVM#aV-h)?9CAI5>h))-dWXvGhLr5Ve@EpLo339Cy~eCva3t9pNl=hV7L~MlV#kwWlW2s?^Sj zYT2yeH9F68&lIFcU8Ws!Bl5pmfY1~bWYh%W4@wUlT^2DMeYcK7lIUUJM$ZtpXAB92 z82Jhq?J{Oi57WqfRIR>qM@Q>;(fEFhEA&Cq9TNFicYCFE-J6B>b(kC?+w5PXukgM5 zr|5ZvEW~Jwo18MTK%Ueb4EkV{Re=(ag1={F)BL00gpf!GY#H~3pQT!96NIer0Z)tH zVv<8~6(Z#kTm`oyN5)2eEIMo)=F+9JDS4xIO5h5k#-lX4K2W&Vmon#957>;zG@V!$ zeq;48>ZSOTbVPS#S)(x!*3l1s@$_D$%~x);KlComr-ZOXy%SgJsfui{S8p?-IWMv6 zd_evalyeV_B5X6jeWwTBI6Wk_($bP03F%ieratric~i;G73;qlFrt$<(3S7 z56w(plPD?CfQKf&WdNG481~E3kcG#^X@>h3*VWY-{|TncV;dfB!N{end|TtBLbG_O zPgm!_HtbVkayxR1C2AMHUJ8)6W9x--CZ?~kI>zo3FRM>?6)J`T(kKlMry8n2)~Wjn zIbq_%`HI(p!eaL$B)W6Td69t%)wX}(o(%pOCY)^lImYClQc~KJ5A9L3d5%Vv<{{YB zy0K#SQ7*9x^SZ=e(2hOZ+=(0eIOR*Jpb2J zt2?o--HCVh{iMb^!bUYdXuAxL#8UQZ6N~Xju07#E{B3xpb1;8ORV;=YEy!k}u0F~O zTOPLE8B*?e`s(~c&?esbQmN9=VTHrb$m*wkm6yYD`ql^4lMD_@%Vi z`Xl>#pdu&(?^mbFQ3kgsz8#l%s(Kw~6W(6jXqs9uW~rs6)u2CMQ$x+I9vPg$8J(R2 z1qj!kT4)#*2pPpbGKDHXtT_4N_}DQtw6kq)F6&jvvi{pB1^vRcTF|CPtCo-z*n{gQ z2v~%r3K+hHCl~YJaX3e%<)%r0Fc3kI@K!yl9dWz1r6SW1m-gzfe)?#|UQ?|Y-%%Xa zH7=YiN(=z{6JKUDc-;JB&Wq_J(!M8(ClKW_@CH}`Ue2fg7;as&#v6Qm+A4L_F2u;i z8nD+nZ|0gB@boEqDM}mwmEeY)(2&Ak)5n@<#>)GV2(CpDT`j5ha`JHKsP1VTVM_`@p_Os2Iu4pGn2jrCD|Hp5`eOh+s2bA>V7cT z(tzRhZs0C)`(f1$pii@r8G|ce9(A9}hm5hO$O#96$c%mV?25|fCif<{sa2tv(TnuB z3WtV3Ca$T3s8b;*KP`sLvg~RL=3B5g%^Vb~tsm_{2pgeh0@&Y8wtLl?mT;{o-^y_n& zS>xP&QD1#61CkfMqAm5QaTUiw_d1*+ZNEP;hu{y;MNV|j8epZ_rNKs}gkPEEX?s8d z6`&AuBhOD|=Fb-U`5aPwH?XfmeiIRQrdU7~rYx~K9Z6hjq;HYGzkCR;ITTA zW;y!wzJW)QWq-nRzE>+Q!a;q4A-kRT#vvC{j`3XmFV8z#149TWS%!0*nb!8h;&&)1%$+KOQ#!m<|ybg135tC+(J3`p?<)hE}U;LEpjoBK4VLXuff$1i4| zSylV>RtK&R>G}r@&WsM3{uG{f`&L)DGZv)Rw^lt(-Ja#*Dc}2&1lp$i=sXO?#PVDZ zu0@DuHP4?mjT11HMtx&1aVGBD-*{&+tb(x2**Ax3Kis;>JVr1UiaN0+NN!F=uj4O3Gr5O{GwgTW?aT`r;q# z>HR|eRO--##@mLx@ZZ>amqA{>k~OPskioil-_GXd<_=K|?p1WG!xZ0p+&+qW3E7xa ztufReF7@(taiJJ}NFh3{={%7M*0t6*1?ASY3n!-}7Mh}Hh8^`M^Da`8CvP(TWVaQ% zhr;5HNLFk5DhvU^w?VhUaI$Y6$hI)yp;$>QB*=Ku+8a)|_Xp_RpBN88=F83y=J4_iy{G&7IR5l&7AQL=> z7kdu)ZA4pk@5=~J-dS}Na0#DQ_2%Mqz@G{|bd6U`(V98NzwGqdX^si#fE5A8@x~J? zsH)2Wp=dUZ9ZvZ8A`7-N%I00!B3(3qpRzshoy+;2dUs4X+C}Y$-70lyqD#YIpbfWD z&_Ui?jl;eiR4}LRb~4a|09xm0n(j51gm)k%QH<2U_xdS^~MQLjF@GWT_2l?%T2HT z48&&vX&$_&gk(McJlQ2O5cIRUvP|D@2FEF!6PB#lmIDXS+8 zcD{+z$Wjz@*&`3_H$S0>2csYzM>%DFZ9`|}C*W@2`1!jR&?OpTn5sz-@&$J(^~x-Y|4e6VSLzBrs;w*Y@$vNXDU&%k z#C;GJ5q~l>jW0XYeVn$qaa}LX$KpE41WS*ia(rDCMui(H6P@Hy#1u|-FEhXu-ZQN7 z+0fh5vsg|v7=0A$kBQsrU`v_^={&12T>7C1$xvvbK{Dk$;&Y594DovUTByh zg77<}^|ZU?;sxX7(u$v`oeLFI8vp`=jK*hxVfqHyL)RL*R3#QtT^aKHH#Wu-CVVi- znjw-y#Q!;>4%lkBiW&mEjt3~0bKCRx?Arv_ea$I=N{^ABmW4UR480F?tqiUQ^u423 zh7-%vOJaA{S;#Q#D+^Y>h)$o{+WrySYY@GHxQY>j*+QxHO|}A~2X66Qu8O95jbnnl zTZ-S@dHCPO)vvI>h=Z(T3E{$8?#=Ufx?oB|w`E?g`nFW^3IF1el|Po9X*Ha^kQiYOt1h!<2bJAUtL&0Jj`;Pi_bOf+qH& z?c3!e;k>f4vbwtXgID6dbKW(SbL2dVlOdz%Lp&03kPGmF_DL?{me}Bk&2O&7v`;qV zQMV0>il2$<-5A-Rs4SdV0rylC#%t|^xPyLW~Oifv0DG(`sn@a!-ImV}d&PO1c z&3Fy^Qggsrwqhgt9ucFzy|C)s7WPccYc8-rk@WP5bn%@1vh0x6ZLo_PV*k6fVDJ&o z$4>!bVIkf2^)MGfGru+?2epv_7G|vQuw?QjhJfOmFH7{fH9tRxyi=>hz`k`!>%r?x ze5E#24pl6zDd^OU%mP;Xrl+=A`riSJFSk#v?N-;H^Oa7Si^dr6Nr!u@gv!M8Y$e**urSyoU;Rr4FM(Ke(rOY<(y&8PL68O`Da!Ph>px>e{or`0_? zSc}B4z!d~62;Mt!uz-Siqz;o)-?(Tmjf*ge8^ol+43ZNh`*{AP#YY=Yivp&P%#Bfo z;%I1L>T>2!Qw@%fy`}1nWe5*lyXjhW^w&}*GlIX!&2D_sF=)_Ra_14wsLn<@eiBBm z@7j25?8uRd$GD{`^Qko|k#z@DV6N(XD1mnyu%bR;xbzYL5-O#Wi%g+Z#0$)N2+3Pf z*01(%eO}8j#ba32mRif=rB`kA7Mky7`+$%)f|){_B3AcE4zy6VJdR)7c$ic={;Fe} zT|b3UT<*emK|b2AuJh!Xu&S|SCx7>zUG+!ird^trHqd>7nz@Taa7RR`qA0(ltaeZ zw#!`)AZO%p@qs@e6w-U@6SQF70yB!AYn%3efV>~y(_STSZ?u@NiI&SBE~DAQMj120 zyo|jJ;!$n@OVj``^B6RDPjgNfQ%s=kP~!*V;C+vV#ljV`p_W?WE8j9?ztV}62dOe+T3 zgO+}Iu=XG`<`uMylGJG+TXBHz1>)ipoWQmk;y6?UvdIjFg`Hq&9oQ_@4M zSRIIFOSF^qsm8+(nLaH^3uCK-(AU~ANp%qBMIGC98~}*tW8kdc?_3EQbK})y-f)$R z7y|sg;b4oHhrwv7J;q0vbOLuOtFN4p$Zg6i#m_L9#sHABjZ=-~a5y|&KU6R-(G@pT5TfLn>b}A$se~GLJ#o=pYjgpgXhYls2h2-Hg#RhT628P-)GU& zSJp2~o$j>!Q87rNN0?2jZ^h+*ClXTMtCJpTmaQ5|6_Gd3v!9H(s|^MTJxCxq*;@Nm zGeC&a~H%f*v^wmy8%z&V7ec85^*?Wf=DWCNCiL+lGX77Fzo2wC5%YHh)*f4S)vz)>zlNUHJ^2c6i=v9uXgNMbv<^d79U!T`A($0h2nkI@J6VhUD z8xg)`*OEV#j{H&F_ zY|k~ji=Xm1Du5s8;&WG{7k6%0S{S~-Q#i55Jck4EJVTBGN%lZ0tJ99^m& ztCKfgVyl(<$hBChe!LP$CajAbDfu{y7s}b0Zj4SH%tTzSc1+LZ;tdcGM2dk#hc22v+Nr3 z{t6C1wUd!NOK-cF7w{>Czr>A%?>*A1JMeCYnU0zfPQEu}bAhGI2w4DW2{euO{D0{V z{^1clhR+9D%nO*3xgNB~T^a33y905b)R^@y6INdubL<`$2QbGD&#f7G!`y-WcCdK$ zG*hpAU?gZvNM)TU5oa{k%&4UkGO+uU^$-S_uHaLTGHjj`-Wr$EZq>JS6wjooE5%L# zytAAtkHD4myJ4eoF5MSAR{Hm23Jgb=iyNK0HQj@TXfkcph%gJn6o8{6*XK{hXKW@l z%+yJ}lJlJAGJ;D>Up&sH)&#wRy-FwjX{_3XKJ^jFVpVIXh#K?MXc9wyiB*#uxl99-^48#CNbq*L8O#p7Hl|5(xbNZLZO@*>*|DM zUP6<6l56ruR}fXay4Y2>2am=ZlVk7J#YTTaCnx*r=%4ds^A#ISlrgm%VIr4`^6b~K z$Z4CavEcM5RMdLpENJ@~Q$|Bzi#|V+G%C}y8Yv>O#_W<@L`>LP4c1h1cA6Z#O7THw z*^Z;VSJAy;6L5GGJ^foWy|%Ui4Z%k#WpK6+`T1X1m-)CG?ww>k22h@d_Im9gU`%og zvk9sx+fdk;vZm%|UWF3mZ@x5O=V@iv^NTv-dtL13 z%6ch!a5UZX`LI1rGMrmT%yjK=diJsUy@25wRLwQyvKTt*buA}g-?rt%@?&el5p5Ar zZ~g&%hp=yBsgFB7I5HnS$k?^~dzF03H469^TA6 zS1*AWOi5zb!3brC_gB&FHNvQS@7POit6kB zM*goCXHLxEJpeIWBXR`G&4<}=NI|ll3b_im4U87l#{urxlliL#XLNbGb*pT`aMj!8o(6shNJ2qibCo|etdn?6c zOIe!Mr;PN90^DgJW1oZ)du_m6sgFTUl)?u;b>Z6&NBY%&DRcOZ!O8VS$r-=>1=K#p zhpeTbWu+4bBc}JEwz0NCi)aL!_89p9@!>8UQYqvAy5F45qf!PHZJF9UgX zV`|P8`JoKnp3`y5b-?+qS}y|P2WY9h3^XSBszzcpyoNqPBKe$`f4)^+Aa*;2!>PG-axus2h}4`fa9ow^O3b$0qiz{m{m)fbrCrCz>+HH09q1&1EgUs1e07D(tRo0;N1}~wvK+6X>qQ|M2 zyecxeZ@w~eMyy7?wr-*YIs*@GaP}WkscId0D33Z|*z)9w_;Y>= z%FFOE5lxygaZ1sTK#nGH&CISE5YBWrqTubf`2c&rP+lDZ6KUdQ&4;NET7GiQuMio|o zl&&Ovw-RXhkU0y=BH?`k**B4V+U@HRGOM+dAu!C@gIYQZ?MY|pWmX%Ra#=#$4L0PQ zNuVv%FuUpoZKTe8dd=h3RFZP@BdUO`f?6Q{`@0n5yE~|SmL5!)9nqRblQ{da4dwvN z`tTua%*3`tD=BY#WYIXG(%$(Nci|U|A93P}nL-ijfZ7Rva~f2rTny*Uc()NZT)AqO zRKC3g96h=9+oXS}^0`hs;K-M7z~@l@`8hlyz`5@&S*Dj4&L!tUeQ0kqmR39B4Ld!~9Sj1roI%3r;)7*{8(1 z{*@Y#`rXEb{Dp2t({U`$hzerM7LiEY+^jGx`(a7NX!k8c{eH|RGX;;yU68_h(rfM( zSWO~unQ{{`DgfH!^@`Kv9{u zOx!r;zKXq>1n|0y)YdRds!AuVG4}$i*6E~B6?Gd9E@lDgE|Glx!{)2aJHPVm2SP1$ zE?ZMJ6oe>r?rxNN-9MWUGpaDN7J7fvx!a08rpmbtt$0b1wF`|bPvr! z%|z|qRUd*!ea!dDea2qx#KW#|x}gcK<|cpr@c3BJQI?Pkc+%@C>v}yXc_R(j^I-LI z!gtk_INiqaxOir}8lYR!iCf6_%>nuxhScq<>*vgw&zU8Af!MN(r9US#9i%L^3T>5u z=TFyGJ^L)rC8VOUG4zJYDw&+r*{*3x0GB+dR>L5x$Iz8nxoheGbASa|T(27xz3aZy z?+OjDxZVhU9A|N;dQ)i^G^3zuMw$o|Tm?(AX=vD9@Puz3$jyU- z54U{nTC#gvPuP>tBIt&Qkso*CwoXh=4t%8o!}MHzDzSa<(I!OQMO9^}-eRfpVuytF zL}UB++GR5X*X@2wQ0K6!gU3y8tNz>K(^HS11W?ooS>C7!OK?g~o-vMiiZ`hHzTpjP zwki4z)8u|3uOid`{z^3~`Apnc!Cm#y_Etd-s8SGF6!3oQ%+U;KCY%fPT;ZTy6ZYTA8q`Gt6#>lqZM?*);8D0G9KZFob79=*9~ zwOJoG?+D#x^qm-sU)vw5m@lktXD0F6&nxp>FT>+(wny38Xb8nlCsi;{)vde@h})M| zL~|&!xthgvT*T{dFI4#@!mUfP)7Jt-1~RYM*7tO9>YSFV8rh8yvLZ64bTB)xLcmhm zAum9tZqY6=H>}v6!(#)$zMqZzERv`;u3(jw2_T9Ew@IDa%580auhcmY}L_j5r0K2^V>8QwsQOS5o01d%C;BtrgNTnM}**i-$ZWLmG1$3@;@3Xu7e zdSB-Ens5$}$xWM4&QbK0fHLZ6h2meE1CSprM^;;P2G=0d;b8iD!MwNezVS?l!9B40 z9p`nLf}NR$p|oPNdhEBVrg?pt1DSy&H{$@Ou~2_Bxl}TMO*>qAPhf91l6}8Ym2-;S zV|pJF76(?q6{+RY$8QAP>tz*%>J53RUSjAPVc^OZlj>OFPmZk!OZ$dl{dvjdu8dyF z)mw;8Sh}5yrtqO=@T=6-vC;l_WTMsa?8J=H@<;kD0>ha$W}D=Bp4L< zkGit>@O9|mR?I;SD%62Dp$C@<&O8q~FW0h_lT#ekx##JiNw)eH7LHam*I8hgJhS@n zODg{R;GE$V$n9tDqtf8>(^akP5h?CcCdeLnoN7U})weEDr>W9bAgMD&mFtS-tdN`R zG*;$pEF}2&evw9|{I(RMkTD-EY2yV|kW|MET6$w9X~rP@SDN{G6*AR=G|^kgwN**Z zx|G8E2rWZ%^oVe{)Bjx{(ZhfdN4jCA?5`mB<*+C3@Uug--V98gTX~;f+7!iO{`8uWM#VkoJX9>* zt(YxDO%2DbVkf#~)>(dU-`-N0rn`)yq$snAfIi@|!1iO*^$aLu^jCeL+TSwUt^0CW`9FzG`h5 z*Rhyd=9wFYi7LS(x2mQDSJ6yufdxfqfaaKa6sat6WN#1f3;r{8;mWu|+V%=$xa*W< z7SOYYxq_63vtA(mU7%OQ)=V9HK{DN2&#O1Uzr$DpvOJg7qY65<`@e5+SNl9`khTLX z&S+}YXMT=NWk z+#9R&c51fKQ7E}yYyDrHB}_L3fCaL~2Gux8#r#O^I7TmKPlaZUADscMjB|PO?Yq%( z&k|$rVvQLG6c;rjfyKsF{U1rDpOYF^UP{dy{|M%j&0ax|zdchau4m2GWbYZRXYmA9 zA>&>>haRo|@WF`-qmmSCCgX`RODz7|A{yF|{fv*@*4YCp+`nPp39Z3=ICR_^<;3d1?{{QU z19!1rz${+GS_xdEcjp7HWQXp-!OEbI?CP}&mSN_xp^muBu|G6P5w!SsTzbH);nu3V z@yVR7SoVfSTg6sK`ZbkdI)QB50^38v{wVpiR`)DVUCch?VNF5e)X9Ho4!PNnPj#m; zQe^jC_RgkY&8k-CEX<(Yzq6#bAWpZ82o5>T*vn!u z)IXpS&z=}yvIcDdKSByL%y>9CudFw#R@1#JMgwIxiXF|FYPRLtvE{yyVsr>r!43M@ z7aM16B>m+yylyIp!S6)>kd2zNFH3gv80Fm^l4pw=MxD46l{)|W6?WsbyZwdG%+*^Jbz7Bu&m`T7>W ziGbtOD(?lfFniE*aNkcDMtwf9&qs=7i(tSit7V0=Z-1GZJB-ie)rzysM-`WM74@0N zclxVRCSZ5gO2Dp77f7C!E!&yP_hMQw@Mni9`{h>j zeN#SO{*KD7b+i<{F#9ydu(_ekNmgsP3-ERFM}*p8V|4^#D;Bzj3(v5aF{YS`Doox{ zAy(r^*xck>EPi8>g@q;PfYH!n^}*BGjF^H^R;AJ-+)E*>nKb+!1Ap|J3V4jpYlO^nqSbYAI&Cxw}X+vwHev zWAk2Lw3=Y^#)RIytj7M?zF-MVSE}xl(CfWg2R%mS+n3<69OPKFbIMEqZf}rn59!7I z0}K!dnPXq>WP{EeAe9+~Kx_?%w4D7KpI04pJ6=lpI6#G})AJad~@bvU7ht%oZ1M;xW6O~v!+ektR3w2zMXIG_v_G$$$C&h zKFhWL9siYK1uUMQzdl~Xd0*ya?OSF2;?5D_$kO6GB2%Abd9!Bte5QL&OGEoqTaSBu zbTk;qGne``l2_SOEh}ZrPgmKv{lhLh=!NRDppyw|Ey7yzjCCX>MSqwVk zI_F2fRX0Bu!Rr6Tf2A_mYa7T*uN{{D{rrEQqRLCCkA&P{(YVGIwx?r|<4c5S%~V-R*XI;M`fG@)2{oh}KM8h+W z;pTiY=3$vu3Pu)|NG2UsX`khaf<4n#oJ~8+`aQvL;6YAVyBv5 z{rBNi)fLpVVVP`i+l}eq?3J~=c;6)^ib})RAt8Uxj`1zO#;8g|KCO%@Wq-jLCAWxM zcl|Q5FrS>BZnfzhgM!K~RQ~sCW>oL3T#2}wUZPhdvfl?>VWh8+|BP@u~PApx~F%eA6e0SSZQf#=>|wwtX+2e%e+!1AO~XB zLvSb)3^9=N#yNC2?T*ePM};2ynS7M0MRWh8=ZqqV}Tf((cGY0 z;b$6R1jENhap3K>w{PFdT>MOeI5$`ieNO+;IXcLAi+=kH4oH_R@!ngGVqwwnBK_ZK zmuP_Ke_cic;6b?!1qJl5e_(9-QPH?vX1HP%!J^FZTopSn^Cg=8cW^9%!pof~wobD; zlqvV$<6qA6L(omy4{e0fuhYI66?D~Z?)o{VCU|ssxZ>Ub+(sbpR#8g)bzcf_=}Wkr zl$5&L!*7vG{bIYqMgoXF|JfMO#&1J6Zs{9*fB3Oq|4+;9(vTPLapsRdZf$JXJ-+Pw zUoD_RivG(}AQ|I7+Y=GJ?+h#1QKH4>-abD6eM(%q^tI6LR|q%Ve|NiNDg4)N`roZf z>i?eMlI86G@Bi!Bl}jSA6L^uRZ;rpEX(Q`s+)e4gdc1X6fXk z$vpP|4EZh@?z;Ii(Kv(i#Wb$H3);obgI{~s{T-xW{LXJB`orFtJ&F3E#W~6PM2%HS zOWk3faS9Av{gImngy#-G3p0{>s74Lw)#d^1i#HPM)ci-Tntef z82J4X)eZ4-JjdEyXK8&SjiDIaVC?R{|5r04xv%!`Ut-DEmGaC!IY*UArYU~NPycp` z1ONVR+2VrHx)Q~R%(lj#z^}dn9+AM~jp~y1ZQ9qRla5H^&tM;N7`yAv^?yHT(LA6Nz0tb)$LL0j9K3ZWTx1vN{~gr6=E9~VaTYQUf`x}<(v##_5+xopQv5CBywNyO)A`SDd)isN{HO9T zDx}emXr>gnLWivOVP?Hm^!NV!!6aYjt2GePF09$kLs9^H{Ac?b z>FXeMzKuj2gLda7CCHr@pTE8OX0)iN=*H2TfA`rvS%CONZ5TFRVR$$mGOu9$nfdZ1 z#V9Z0l+5`r52vZ}Oc94gAh(rUeJxAO1<&Gb{QTbo-ykvq>T)eKRhFi>M7m!5J?}y% zJ-whwHFT%>Xl;ADZ^f|>S7r4riK}wfty>Cs#Zbbk1FcyKUYC=dHn2zTCDUoX(;y-Fc@26WG%{`W71@P-7$DYldAbsQ#V z1pRzl)7i?J0klAl-vl)u_QX8K-HzE+789)xz4|7x+L>?y48f8O#a%3{E^~ZdX19Y{ zYp3P(@x(PI5LEJLR;J}-qjW91#%?%p{&WsYAZWlZ87MaV?1K2<93r;2H5kY%TQ8<$ z+3Swx0<=GrTeQ9~P$ZXh{d0H-`uC<;mhY`O!FPhU;&(p!{dt*AO&=}x84~w@*n6+2 zrn@f+5GyDMHWURZq9Pz5D!oKHDo70|U1@?s=$%AGDIy?Bk=|PnLXlnqBE3loEkG#J zLJ2LjkYq0E_n(>fd6>0kcyOuFB)?nE*=O%_?`HRG7M#L`wMg&V67h3lyEV*2?#3%@ zG_Pt7ynjOU3COprBQJAxWBg+8L&d;Fbdc3I?ufNu>LxJk(!of*qETR2i$=S0C2Cd5rMGSVowf$0sXK9ZW3mj_lx zT3XFoI}(G>MdeH4vlZM&9leR&3GOSDp=R0DHh%t$2>C#;I!rxhO1dFbZGHVY3W-2& z5@VMmCN0&1VIWiyxS;oA?pXHnX2qAA)w|)>K)yrSX0eLd`%J!XBzSgX-G?nFjoruG z2{lXyHUxW{IWYK!Fi3-^mp5mkqba-H(fNjD09#xlz_)F_@JN+43z*hUxudIA)4zo3 zm-vUUdV{Ney9~$IGlz?-Z%7*3>!!D& z;Gk{-hJf%%%o0 zW64`s64=v-{k5#WIP0}=UE2l1OL6nC4m3x&2tuXvoJyxNyJz=`!YvFMZYUC+gSk`P z41*(9K2^j(q)o^RWQ=iEus0+=%Yd9wIrnj-q@KI9UClmg_sh?3_OSzU&OE<#at-;P zeEWH@)f!z~U1J`~9T`C3#J#uFY~OCzZYLmB9f_F1T=au4Hv|p7CmD?AuGa%EuX4BL zN(5ytOe0PdTJy@x>^?@WUuRz3J0avNza8+B4Cf_X0$E`~}8mQROzyN$V8L)o?8r#~+&$HBdq zi`wOhSxAAnP49m=@o_K)dY;`ZLcX~C5J2x$w!E5-M#z1@2ZQ@f|`OOPe9-e$gn8P5=jDws3TufN2)oRSj#@sS*e3ka>wT6&_fO*eazfL!(C>6k- z-RRSR__~5KNF;j=;GPl#g)o-iZ3u3~gSo&Qfew=tE|3 zu8CQNQNluNvmAM+n&3{pq z>a#NWl4>R0{kJ|+Dmq2`MzC1jB+obI3%xT)uk|^I=>@V5^DS`Oe)xbG6ZBh*u=!r3 zzR7kAw?_8o0Hh1Z?0+&*6Wv`Y8}q{VgWhO55`oVqdY!ebOz)+~T;t63q*jEN*6dW) zl-LR+H;SBlx%mpm_uc(x&W!~29HeB+LX}mh@uv#!n0T?E$0j!i7y`8;?Tto9uCU=% zo52wlAjQmfV%=Il>u(Klm(&$nb&iCFhUVvAcw4_TT-=Xi#d+*BUZgIAQd&PU7+jQl z4v|Vx>9D zS;T;7>7rqy3Zr$ml!pSuXvo5Ap1M!VKR=u zQzHk>gxIO+DGT|Vj|(hgFan8&DseH$^m7!=+PQ`bci?ug#)SF?<>Q@$Hi#&HvcN7Tj(iEQ2#-VryrT_sikO^ zZ;#XdFO+>0a4~I2L$$$1tq3HRZ@=1Ef3HaeQlL6Uff+fAyW$`pFe-6${;@X zq2gU^jD&OC^Fj~c+6LL^*jOCML+mZg^YgoSb#4e5l_yh<#UpfssQ^n+HnZmT z_Xg**$a4@5?D`?vr43+AcL3%vOGetQZszkaS{7x0@Pju9yHdy6pp zUuB>U)gs49>7h(W0O1_ua=<(-f*@SrGy@DECA_v$0@%q()ZGRDQ>;+S-xtw4%gp*l zx$Hh$!*kGt7r^xEZ$1WvCCW||r+#WYvDVXjrk;7LumP@bQYlASOc~yI+}SmsdKZ=Z zjWt__5~pH|^0Y~~rN6LSQj|q`6Ke`FO1Ur`uOi8?dWM-s`4HDnK<%sp^oR4=ShlmX z>&sMsiiS^vZvgIz$8BbcA@NN!(Wc~qvcz81fGPW3R=edtj9q`CYOp4sHFx*Db>gmZy||ZV0i){YYhC+koS`L z&hx}OEV*GjLu&o}2r_x*D(s%~rW7a75(8jk2CU1L$2D4&v*9KV^+`h2t3tZewP+^a zc@A(`rOvbf`1c{pklBtPiGWm5x%e2#YU7)>Hy92WutX-=ot7fYb_lRd1BqHoY|I5K zvpuRoBpeN@?Q~fl84(LRxR5?H&!8l;rbaJ$yu469QaUxs>t7+K1*{^;TMXIt16wl8y~yqja%oI|A`5TrbGK zv6bHD7B|>h4{1IM_hURtq69Alk6W{evi3Az^_N3X?`vp;@!5SZbI&G9P{%_6PFWFv zdFp(@Y6SzAyg~H@Nu@~D>a0{8z$fP^W-u7a02>GEQ&o`Ai#%IdX|Utf1(tK7bC+il zX_V)NdTh3r$ZvgbzQG*HV}x-KkTyIwN@bS6e|ZWcfp}g$o=FtA%rM(1BU1y&oBc)k z{^A};$mH5how2Sw zi5_eS^;MEy-(DvB9IM(^{rNi{N=GoK{(N|WgoM4f*NWUo<)!H|*lAGSy>3#Axw8Nw z&C>jQ^0UIZ#3})!@&*v({_;kz^P)9Yc)C3m85lQ|R~_#gM#(zUgg82cpQHH|7<7)O zdMzXXTt(1R;L*U!sN(v!%zs7fNP3d%_-i0ovU1^yIhjW5;3DeNhP%yke}{l3t^Fcn z>WTMx#Z5g4(WcU0n`Gng+E7I&01X@4dP(md#b1;*MXZrs2z8^*?kI384b|z8n0^LWl}d}wYzRv9@lOB`tMw0K)vDsm~fn zdS#$$1Qwdh%P@!?W#4oE7)TAjQ-cM)_7uASu7)*v}t;bqBAU~yNzovoV_1J%W?cWr<=DO5)IAG)# zK_d!Qe*e~(>U2WI*e3Rz4ck~~(TPViksp@&6gl*F#|T|D`|JD{Zar}Tw6W~&?=QIh zSp?Y8ZPm4CG!;alqyUZs4xKUPo=xxdXrr?-vf|=9V+1%AP?R26>|>dU*JSEe89%7; z4ik5BQMG#@5{?72Xc$;Dl9G~Ll8dxR{8~44KL+rv#t!uy?7o}Aht0|ZCI9j9LnD`n z9SE-gpZNw%*pf&s>;$zgaeXpOw|Q_d(;l>^n|Lo{G<>FX!hI*+1k3KWYK*${sc+16 z>-b;3uaotdG$YgvUn*?QRF7k?nFX}5L6zHb9C!|Z$vOHVz#d(oY!vzN`Xg}m!lm^D zPkaF|(bXb9dH}0h-rBAq)bv!t>LX>So^9m!*Qp>Aq-IJu#$_G9SKs~b}(-&n2Yrgn2!#5BiWB}e}WbQ z7R=GZaWo~r=W^kfrlsYl4|ugdKSTK8bTNB`g^=g((oOVs-+K*!37cdq7;3D=b}N*= z_eD5XFphl3)jQ6o1bjsROLF8^q<)kN)u^IKuj{LXbEap#D7K&P%A@F}vg5Z5FQ9=a zcnJwsp{&DFp$dPRK^{`XT5xXD=u}%7nrz3Duo(qLyLQqaV8!LF;o`aK=_^@hhK_om z>AbgwOT3zaf0XbDK2SFM?SC84@Os?jmj$HuYMNM2G*h_s7(bl)6=0pA^t&1ym4CE_tX^t0WjzsASmyED<& z#lsIXT$W1)mBNIc6qrr@3_|SnCG~^r2sB~(LgI_x2pb^~%8ogXvb7DUm!5-Fv(Q(j z6{Z$@FNlUkI7UtR20`l|Mf%Y?wX(^I^z0;5WM{lbn>#BlDZ?mKAqXz$M?ikB}I-StabG;kaGd z7(h(@Kyuq0_a^92rT0LL7oWO)*z8`NHT2)Cw+(5d`5abX5wr9zSUDCp>R&R%+)=sp zv?xMUDDt7DnOSmfF8}f|UteFK4Yu}VjzjbGq@<+!#r3lBao;#1V<;We_l4$I@<_D% zyGJablePb}YxWnO=`Xx-ap0@3xE9T--2AuuUkkTixak16)>f#Ndm_Dzn{AD|Ak-hS0BCq-}n-b3e9VO-IuDCEt2=1D}t*-Ei^6udtfaZkUg}u zW*DH@Y+d9%BE?;|O5@#sFMXr|+n%m~S2m{i^}Hm62v#1%=@pZbpszJ2!3zr0ZCcLb7kxalhJ#_go;iKXglm)<)6kb|u1IvM)+ zQR-NZfG1H-0>Zl14h z9z@}8J5If8f`q3bZNjA2cYwmEo+usEbZs|@dWW>iy@i`upV+Qd|NBTEg~9hROZQpz zV6hT8fQm;;3#gLp!yvruk^k6mWrn{CF2n_GXgNl z{Z+pl*OddJ^2ZPiT~pJ1z@M#DAeNSwb+*1ey(_y@kNA2!#c&uX;uRBbA-T=Y6`<~^ zDXf2-i@_^hH1-;?;o$&1C-r@KP9eBoTWaJ!GJ~&+TF))%}ABp$BlaHqCxuZ#A-`@wy z>fBvo8p!4ZmJXB5;^ROB-P&eS+yd$|8DJlGclVyfNN<8~vStepJ=>Ikg+UbuNYhzG)tD!1JF0HT__Byu_jaOoCF> zE{J=3ER+*a2*9w}ceP%nZKlY;EXlD6NZfXSGOu3!fxcz9^-wlR3c#5IN|8z-6lc3} zih*j>nS(q}+kv(2jJaW&pkT03HK>^SE8$bCNg?AuoIe z+N(r#`xP+w05-=XwIORi`>YdpdAWW99vi;bXNm^Sxt)nJeT&EKxK_~A6f~9G1cU;x zx@zZS2wwrWk)d7j`!hcPEDwlFU==ul$uxE8xsJ@$MWGN2kCH^-nxQiD$z;IbZv)O4 ziO$jCK^d0G$xznYA3^Qr$ppmq$4l6oOrr>D1OAo=ko$EjcW1GWGS5(pXSy+cq zcY6Vw3J67{*a|4SAf#alV8-q}C#3=HmR+rDK$5!Kiu8BdTgZBa zCi{#WWq?mFJ}2*uS|ZYZYwTMT&**;$IK1ZrxkGml)W`T znAt{CjY-R8VFm*Hqyt($i~veafDb3@mq%R(eQmE3WUv6K1GHKA+m zcq21HzulYJa2pFlNfD~Ify$0^Y(8eo%g#*4j@VzQuTMpmUaOKbd<%pIDiNi>RM7Ai zAP@`a=bZ))ihKzm)l{SpwqU|RC7p~W)Y4*%?ttI}CM({l%}`gVsoJ-5*AG zQMa~taY=Jj@~k^P?9X)FUj+BRrG?2(0g6puKW}HcRWa6f7w-@D?gVIJSuUU6D#O9c zD(_^SSDa{Ba6B`yfCJ54+-k74K= zY)^~KOd8!uvzc>jqTs~f_wpuCTisLg>euk~A*^EBHMha{uR;zhT?xhG0YJf9wq>-207$b0 z7$rsGRjtjZ522>|FfGGClV4+FHCCOMDHovgTC%&p0=hI&T8z3nTAMqdI=n>ms4%j5 z`BDe#vs?lt5zt}y$XJ+ehQh88?U;2+j z52;?cg8A@J=F1HU^rv;8Bj!|k>mG`^+YEP^0Sl&TCJL)QX6&gE3DNacBx>5J+v%vo z+LD0Z@;>MravyjK0Zk>kiE8k>Eibqhp#qqodKkQh%*~;*H9_?$TQ;StfAfiy1Xpdh z{F$lS^190IO_vD!Jz;RqPjN@_8knXY2i&2d53CIQ5QeNJr6+{uWG{CEy zg0D`PEjdGDcm_dUybhp|p|`gk(Hk@_n)nh$f-j<_5gq&aKf&&;@*>7kHxRPvd`0M8 zb)T?0fP;Kz_^tDw6s`mOuZ2M33qfz4PTR!@J-$d*`*J0Li7$}E)DJ&((NH;oS?FpA zT=|`?>DSGRP~uLD%D9;0^X)-2Wo*7)DR>L|Y_pccuAAZmq!F86A)OsSkX#3>Y&B^t z>wp9T@W2;X{^rnDRaR0Kl4MKm$GnLBB7>t2og#w=>Q8-H?&n?bublg}0+3ht0BN*6 z@-hsR!B1pl&6St8U7`eiE$iPdgJy8P;{pcXIS|tkykGhYRkkW!7q6Owjw+zHq{W)` zCl!H_a87FmQCz6xX-Pu%Pzt-m<}bi;IH03VO}qd$qs|CL6N=g&hdjF7pzP+VWE^pK z3bvd7IOzsHiRbgVwPSz5X@m7_hh3<|?9IqmaVl?vT+DU(@<%{nRE)QMxfxgyRDOuG zR6GY-4gvThkmejfp5DOXm;w;$E`&0jizfhb1l{ka zZ|ur!Ct>1cvj&ha2bnoIV~_UI9b_8`ATI&q%LqsyvM14fJgNV!G+&=`Q+W>Blmg~m}D;7rDtX7cPaz*m^5193|evz zVNf)`ZlqE~Qd7~URz>}K;I?o1EAWg|_K2~uzfe)R?m%JMT+rc`5(u|f+q@eH(o!dY zBOG4yh15M%v98m22P;^#T`|`1J$lofjse}VWOaAi<~??*;kN!azN9sn(3%S4XxfHU zQi7DLwoXzFdaWrAKpPG(CPAa})gScTOtloyh3WzLj9StdL9;LWSdc-~*Ixb4019g7 z$gDv`8jj)1rP3efa z``KF;Gu8K4Y8Q+$rBMhj<-OH0&nl@a_E>y!h#ytG1%S^%pW|J67_oc=q-L3NDur}! zzR7B$o|XfO2=`rYg^h#q1L%%#0Ax3Hb*1dvnferNVII=5m*YSKD%p=?|06!BUIL%p z5aGBpNt=7M2W*V0gCshecpqA_3n)V};75rF>h?u^Qd_HayrU!rFCt-?eXmwqdsf2?G*T26PM}M@Lek(kazo! zW_+$>lga+bLEYg&?6xT@$hX)i0l`O`Fu6wKOzPBX5!J9$_ex z8n?EH2R5`%a;9r?;W|MResVJF%P^{@%_KL6C(2W^;yVh3%6-`fKcl==OTto!{3Tc71BALM79?y1H8QFd<2lP3t7`(p>7`H=|v=)VSjw zXr>{8F{dJP^MTQJ-rk%*S-))mcP}EIx)X-Fg4jO+YQd4G)@05~A#yEgMMp?{dvv4U z&y+Mm1w|Vz24V{Le6ZOMmeN5kDDe6X_SvRn+Q2nXJrOWf{q$f9X~=GL6d$d7a(!o+ z0bg&i!>W8=xBj{(>GcRBQybD?vjpY4`2M1aB(cBDBk2T#oB77Mcn00<2ag48YL-`4 z9_opm2O^q{!|OKIR(EFGA$${PZ(b#$5M|mqi2%v(wnxl~xwOb; zEk`#M?;n3VrE*d5U!-9c3b#)b{;Usk6dgllAFVB1MTvbwlX}Km;QPBH+l~wj4=-N= zCDPN%d$lJrj0AJm6=5*k1D=F(i`LJe4Gjo#)O~@3Gr=DqR$b8#( zyM!YJy_jEx*i1|ES$JeRWRsNu-=9wMSqnC;{QWstY)nYx@a_E8xr2(Al%*awg26mU zR+{Zf*Z{nR1t>+1(cg@_Jd6=pt#ZEeDB6nM_twVFIpjC(F-O{1@j{=ao_F1gf7Z@x z;igPJhZft3dVRe}AiSj;vD>`iZUL06sQ1X(^b8!g7}2 zV4mT2yD0?^sK`pCQZJ+~0Doq6lhaPhYWx0o+XlQhU;6_=G4#r?T-*E3? z{GJz9FPCB|czx?fyjo*JZJIo~ZR&T#S(m~~wfj>*DIA$IQl z?Wtthc!fM1@M3-CYiCim_wGz1atuz|F=XHdyy8x6*wfc;9j^e-0SJvBLh!ZVvT?6= zkwK#vA2~xqY&3cw1%l(^ur<{Q-_J|kf|(ANJI=#&k4*=vW#({fUlMqCdZ*<-GVS9# z^^#1!^Rax!E~O#gj{wnvu(&8S7w^pOHJ?Hy<2d4)t-IoL*u!dVT_%4dSap0|1KJ7! zv=`J+_E-U876bB&$4ECylPskOt%8#)0jse9x`}98FUEsO17-UU(C2d3IdjBe`Qp8e zU4hj#kAelw3^BsuZ86^ASI3i_{!xIh!wYgwvSGVk*w#Z3Ztdvcg}fsg5;MO+CAbZq z3ezmRg>W19dpvgdccg2ZxttzUD_geK|F!@?zU3_|DFm^{bH+t zO41ok7-TB20SMjZ2PwFgO6Jgf|M@pRc<+8tR01SKor%yHcLP0!NnkfzL#Q79=&sxI zY{Tc((K6V-DXMEZ^C;?8hI-xl;6onx>~0gTH~Zw7!F`L#4x6-98BTCu0Yo-|wLA(? z`J;=m1Oh>ys*8GM6?f#w5oFjYzKe~|wQ8&Y!GBblmDdu8-|UG8Ex{70_PTtXz7w`j z`rB`o`~FohX=pAN{%HjM_BVmy zgO+Bv$nfSppBW=mL(r!nRUCiN{1jiCtNVs<}g zNvY-*XdLc>|xPQRz|@V%3HSnKWtuoirwSjc#Y#sn4daHhUqfbFPmjuOEVM16-Hd(vsfdCbItA>2F@dS!8&bC!~LE*hF&ufo43BMw>#UIZISDS@$aXridI9f%jn6q5D9^xfjS@rr_D ztm{2YV>Wd4&>`@7b(cuOhYq}4CK`BYUSFG8w+dm{`6WeDXMQ)}82Iw{KMS*8I#3{J z^7UzGKEIkpP1Z4i6Cl!}&hWQDG*Z3Obn)TAXV667qM>;px}l=0X>*Lm_pA&b`;LYM9&VkaP664`hUz`_5Y|Qg3 zg?YS-V;(B&-YJTYjFh%qzshY9$p_`K5aoZD{9!M^>s|VILAIV!g_`yUwYyX z-y6g7viiKt{28CULQY>ICVucTcsg8t`f1L%_L+zrGG;3}XLFWcW_P`ErOp3A5hBj# z*`(;Oap_aB@O~WL$I;lWpf{@3r9}U3s*!*`#w25;Y{VRDmu*1RxzaMDsAs25%rwZ0 z;KxsX8%Y^S;Pd^UR>Aj(8T0;?plM5XKqPOD_AO|eWy-kxow#=7+)bXgOF834e9=%U z23s^^Yv^v6l3O6RnU^w7kw=uIT^o6{yQOVdI%@n)?WW#%f0R_}r#PV^tX64qwc_;> zyP30EB%Q=_F$QGlfO|T-7Gs1fk8+JBHD4yNFf?P&FsQ;HGajqvt59Os@1~12=*-u9 zDW%!fV&Rl}frWl%Jz{)(Y|qP`)HrN>aX)1Pqkj>JhS9NB#?tpAN!{Go2AW}ZD)ZqG=B?cy|2H!S{H1~RFo>nNO!mf>iQw(|8_ zVzS=4=3pzocK=I;y$^1_o~REe@mGD8S3+%}1B4@if_^H49T-FB&rZaWj6LfZiw7-~ zk4x<>r(~SWla`jdBR*u*6Bot4_w6xWp3i0|g<9sjkpepU^P}3c6|cT56Y95@x;aQu zTy}f!^)#iFm3I*#U&F7DRnJ=_%4*u(z2quQ+zb3fl%&H1pDTGhc=8(FsrK6#jTZl0 zwt{8}Lrmwu!|NGcZD#I4vw=%)Px<f@A%;4pZ0$-*wD{EEAzRh?^DLD2z|TkZ$PKv%UepV)n0}v#0*&3C_pjd z*%19`O&0}t-f=CVXLRJrqb0Tc7}(FiKv}xeW3iJ0(rKbu5MDEO)IeGCQt6&46jrQy zPqkm8zfXfTxc{!IuOC^4^+g(A&F`Gv2SsV)LAEs<#N`irCYJr?B|&!#;~s8BqsSN& zqkPnh#rL$WvhrM;Q5{M?r`2!7K9taEQM1e9Ex}47E9RX!iQSXg z2K13Hlcuzo24Oa5GMmC{#m7JBcM>&x`r8bdNpey1!jt1T?OdCF4duK{EoV0$R<&g{ z3tmHhcFUKpS$nU)tnGdnXBksIha0bl=-t&FOfPI%2!eMA#U@w&#j>IY2mMYb^9?|A zZoY(mOysls_RC*xBpZJsVxe=^tJtZ)C?{LQO1HRW#um|dG7^u|=e$nBAJ&_gaKGNK zmr7K6nMr}3E7{h|))W%z7p%6Po_dRv-;4&ASj#|vz3g$ytK)(iw)OKd`zi4;YL=>< zQ}j88MyVdj80i&f%?n+m|7}!rQtMlRwgya+u^d-o+0 zb2Z5I?SQ_Gam+y5NDV9N&Aucd1}jS&hk`Aob0q}L^Zk)oU2e$pIoe1lhiyA$PyNEo zUS>zHbS3pFGALVKc{%siOAelFa#faU4YMr@m#LNQyUk-+Tyk0Q!N3ahrEKMG=*L)I|n{ftA_$TRPtU>rZWUP%O#X2s`%*pPD8u!f$H#c#^A>{WWZ5a!gek zSH-}G$J%Zrm+1i+NU{mOFcIH9$U@W;D(kAr8uqr%x^Y!cC2? zqZ2u;~6Nl(4j zd*%pMPJZT9qXl;@8|ln=$n`@OB{%gZ9Ag}lEp4eQ|u^}gI}mghKNWa?U_&MLhdbaqEPl(NRMpO$ssh}Vp3 z(8D1uTv1rkyTlb+yTCdq8g+=a5gX93+~80AXU4-QO@7%Z(M2q>S$bF5Eg6r#xM^{Or}@>%8Nd!8(Zwm#lwJJ70lJ zf4JFyPctyw+)(`bb-53U!M!K^xqIYPwG~~ODqIAo)4~F{qAxTmMiw2rmMYQe7FmtG z-t1Ci>Cxm-$fqGWIO;zmZKZoC;P3cG;*+i(W8=ddyI$wG8iors?c1DN&fHyhB~4*w z8*}ZfnFM1O?uRioh$p{P>k}2S&(BBYSBJqrgps(^J)}khSOUxp3hYjFG6bDr=wBKo z#!)cAo%V4p3VrF#gmHHmu5zo~MjclvyB1jMZf6ZVMmU|^msUb?KPYfQNS)unNPdaz zXO0uBKIGo9{rqLzW}N<5zklHg)F@?OXVdQTlD+pferCnC>=ESD85n8JSZp7QC3_Hf z(yfAR>f(dh_wS2O>YIM2u6u1f@2eRtWej@G5-^<*(je|Qnp0R6H@0QVbAsMuh+}J| zN5e+_gjxCG6^@AC86yxT7*+J~d;^^33r&Day01lDy-S0$=sUae^H%aJw3q3}cFgu> zXwmx}x>6}c>A#MiL&TP!S-atwV{QiPXz4T*UMm={gr9^^JI)$(n{;y*h|eq*c|Ae1r649<+VQ}ZmdBaX__WXRF!(}j|JyK_H9_r z2m$2tOu}pitdyO`8_(!$gr0|~j6zoY!niaCD;DDx?FYv=aI^~8MXTbMpK8v}PQuI4 zkXoN%a(j}Ay_Xbw*0b&*PO`$ztkp)AnDKN$;nx8d>I4Uq%Cxkkcd@f^6|rG+$6W`6#wQaW|(e0{NCMw015Td(A?>$!@RX*=&klP{%6*rS*7YnNj4 z?%L^Gocw(uc9pS#{H*R>XtmOZC~jC`P?J*tGd~^uwXh>I3{8PCzMQ>E*>W^I6{$S> z){&15qkiJ2leN2x4DSCoJ$vudUn^u(CNHlcTz{TmL5-}ESa+gvSOj%%tsA%RD$V{X z(6rVDu^q4o*?$(-?_(O$P*9W+7oLTFA|`dLCWji`d?>f7nm65QeDSo7Nv3jLR1r zBb7BEs2qfGxGyB*8O$2DA24X@yS7K3TvdSS#^@=HAHW%;`+Rns*gOfLHaRa}MF9*aBPSAWhX z%q3*bd4#cb`qTGFwGi7QY@cg?KJl|&i%E!eg;Oeo??lC3ejKBPOgTszV2|zbJOCli zRZf4?m{Y^0?9KFIDRqi(v<3oK2se`Iu0k7mz zr4tM3_g)9QdRjLmJ}*^_9T9(DOP|1Mp4?UM%7j8;6~#_Zxz`NeqnuG$8Mf`f4A|%I zq55u|V!f1k`UvC;Er`--fyo@gDEX#lz31SFQT&-WKb9J8bmsM+yIn3KZ{*Mc*jto(_Yg_isqn z6DJ(gEm_7VmO2)`O^$5NGXaVNv4=)$tMDjvax^-Ca%?En_uTmO>T6QjD&@v~sn5}( z)hD=upbCyLYlRV>>AA~nNfuQG*9n;fH+DXV*yOC!AXp><)64Mgb9G)Ih?;_X49mamFj z;&|c0KrD&e;CQ<34c95NG}+0O@yT|lYPPhw8l#m?XKeby^iGu}A) zNLER8Hke=aTV}?+_{@+HSU#6eP@=$3~$t#x_X)C52h@6wpJD0e->}5U-Z#|KQ{QVg z^?HHX=W>!^16ea~dQHZVzG#~>gm|hYFx)#cP>w6hP*d&5K5vBAk+x3x@_8Edd!a_{ zH;xB<8mBLqK!s#vrj(k`|8g5DZ7RL-=48R`j7U!#*+Q_yS#x;&V@H z{t)P0$(X$5j=S$v{p3N(C)MM;JmE<#l8sN^+&OO5|D*ic6{8&KmWoRep(x(k;Hg8x z+R1eZD$a%%o+=eQQ-nOHTM&!C|07OxxaE-NP{HjCkTU@6bU(6I2s%!jI33En@Qd~&0mlb$MfP)>Dl z-P{coV6A&38|t~SD|3N^*5|9^X&Gw5KUnjS==|_c01#f{U8fU1HF7SUC36x^KznPL zU)Gnj|G3_S4LntO&n>G89B`mUmUCs*3kke3UA>t!cKJB=)OLBx6LayM>3Wq0Gqcsr z6~WP(gu1?bVIdRNDx09UJYFpGRZ<=ZCgD6}iUOVQNQkJL{;#XbK~dLQyS_??nehZR zpYBDC%cR!}n17~JlAOHl#C#RqJvMPyI&mvzwpWR>?H6Z9M4}9XosNYBS&FwwMFu`N zl36%E;wOe1YhGosy?;9HLT0e($uGz8^#h-yRS0Yj)pW9VFbmcN$x; z_DrF#$N$%v5}#W?Ih$Ijsa*EHv7wx==b|_`x1vXuj=;@Rzif+my$jOtSCTKd#;>4i zP|5vlDzi|yKKN^aa{GPy&mibf}Aa9f|unz0G&83C=FzaDS_4nxjr0{xqQt;rra`ECKUOUvOcYx1H$b zCnouEie)G4SP#pb9)CPLR)6jC=dI^b8Crs24#PCh%X^gJ{@tfuoXSv8rD;qX_O6!s zu@fjR-08{ktoi)meZ_5WA9w!gr*AK!CT?q@CwIcXA0ce7E+6Uj4|Cguf1Ez#`{FF! zp`!D}B0nuo{}fQ;9}DDk@e_aPCukLz-;DXbb=t>7GUe2D!rPv6-Zs52zq4G@pc}u_ zlNNE_F*veE-Eqp*Y4tTym-5+ z1oxHTzUj}t3J?AV(xbxlrNqWx=2et3iZ!g9G1Zj2*OIp}^#&(0P@0@Fn=>vsr;peGLFajfWYYewXtqtCf-6nOs|JZdQ4#-uKEaFT5!9mzv6D z+OHG}h5R~Te%_tBZp*;6>>Nu)>@VW-gB$@O|Cg#Q#bxzpSo~^=|yuQ zWzHQ&B}b_gj5lwt%^<4TjoE+t;hfo zetF8Z&iIGHczWwu5xJ9bfmA+aWXfCpQ{)A-E%l?qKcq;c zSN#)W#xm8-DU)V|vlql4dsLN)jV%twmA>4|^z@OYkYNOS97K{<-4A7g+oxy@ay|bz zyS28{>0V}v2IB$`oac@{uGlK~mBnF#6fkXymW8iX`Z^X5+m|+7^S_USZ>%CHGme8l zGT+B7E_dn=&Kq4l63~NN*)9ufz}Dc-iFQq9IuG2)zcXo;b$f5E3Tu87Ph{`sen`A^S7rF$b1j&H=7kFUO5_)BKGmTWgbRxN&rnKW`1p zu*}=hb)(U~yHoN2GiBrAUv_@n+X)~oczohxdbAxd8CNF#Ld|@$ zL0pEhk1VXlb!u~A^7gS?!zY@1{L+N$mXCOxByjWv-erlVqm!0aV`68gGhl-G5kkGc zTYa#Z^!S=dW?A9Baz*Z|zlbn4+vYQ^1Jzh!sI+NxZoA1?LX^DPC<0KF-r}Jh`ReUN|PPi*0`RbX= z?U;D46P7=qr+z*?{4;)8^D}qUI-R6Y%udOpDaGjRPhq_d?}7+sL$xI5eZp)$DT&Uv za#Oqa+#BU{j4mX1rqY@{b83JXc2U1-=j^r{zR9e2X6(pl{j3xN?yBP8>%1(xB$@OiO&UG@t`?#YJq3lY=*l~=nNf6A){MHTzf)+1Z_;ScuqJE1-+zQeWu8`HW6-l-@fszMM>>@bCyZR&qt3<3_VD1TKDMHa71|TY&p`M z2CJv{yr+V~yM^1k+hvLL=j%2aD2g(H&O!_fa4!#cm36g5??B~;)ANKI)B$g2$Yl?g zAaxdrTaU@AF7MqlWZ1F(V{A4jWgRb+ny0s#Ep4d`vJayVIS}US<%Z-(3qAi2roO@< z>b?1z?rvDRo28beyIW9Nx;vzi?(XgqrMtVk8>CxWQt;*aT<`Dw6LxmKGiT16Gao7# zzzDbN99JW>m1QmMbq{WL%`*I=XdxXY`u^1V3g|Z_71o3IFJf5E@(vvOV*u)dkk9i* z*OQyCPwYhhydt!2z^ntdwC#mmW}`no=Mc*FH(TKi`jdRHbS`3IxZi?Fh6 zL*7cn4f_L;Elr4wNlkPR>16B$BAoSeoJwm9L=varR*0E8-8(Wsi%ZYb@2pq zt3MTrob!);ms0AEV&9Ile7n%~n_Rlu=1#!JSSb)FFNsu1$NZhj$83R-4#)67;Dekx zeT>>I9vplLiy8V?w<(Yq*%zK$q#^6y(VsGvO*C-PCO0)JkM z!VFfFoK=gxySH^uMrjVAz{V1?^ZWnBOZ}_9#2;LfaV&)+38GKl?>&}ue@tB-vPK-XAk(hzVo>s8~#!Hi84tt%$_Jb}yXJb^NZ zE7#DIV`M{IlOpUL@?Ts>$M{dZl#F+09`)0gW0;-(n1!vnCGJzM$eFw~E}aM|&2BKv z_r)j>mP}c+_-Mg-&SN5u$RaVM+Mo(V|x_Cdw{yvKEALtOL-^-HE>>D`hAO z_URgidlq32`jNk)#lzYfIL4b8LtGT~B;2YXgg&rZ41A=2p$S+UbPZ!MGiu5PrIja8r@gUiv}75Rhx6~60FFH0EG zLQt$3vgK5AOX)6Oh(+c07~q)MznO8Pd_Fn$^ITQ>xq_B?{7ZNK`5?(|ShDGQ$sIVI zK`_2KXx}5*M8b3IWHWSiBC-a*BtXuI1}GW4c%}#fCb;!vSl9r6h1AX!9<&TM?xWYW zG8_Qlm)bmQUiV}j%0HC-?Gv9}|3t&$91Cj9J+n4G-z@Z?tOzyfa3Se=$ViX=UL`*Y zWRdJ1_d?jR#H39qPc-b9uiF$)LX5~u(97E^4l!JA+8l1`TO7!ey()5I1aokvfy~0N zh*j51hU<|xfW=63ZLc7w81Wqx20Qhw;s_xR?8CP zET#M9k{KDh+q(qRk;nU;`2T@Mia($+xq2GwhvqeUTtL){SykUCMtlVc2K7C*@c^J@ zj|yFV%%Ncx_48{^qI3)5HyE!yM{kA^gIU8`x*+6_DbXqGNaNW;HU0MES8>k1(G8eJ z3$QMz;FDByTjdkAXZizdu1W3KdSJMVc2S|Ny}?}fw~Ch&&zrCIp>3frFNG4x68CVM z?Pqo!$FaNfm`gIiNQ!fVf-z8uZVhWtdStkL9+ybs_wbcR@Q;S_hTq4TLt+#oT}MMO`=*$Ki`QJ~atL zzd?YOAHMwTX23T^H;QO38Y@q{pRy@_!=3N6)a_GKPu7bR(IaY1-? z+U|XR#$Lu7Jl{JyeD7IPE8D#r+B|A}_zmp^Kh5N&a?OVqK%l`}lpFTJD^llHa~1M_ zn&`Ij9eXxH(Of6ZjkV~MkErhEY{9-(gv1S4uvVYOP-IoId-^84>FI6RSe2O?{X)s5 zBdpcM7*LgEso<@?z5sKZgBDJL(bUTa6K>T;I}@0jU!#^8V2F3Xc&@ z3RSeOZTWl3^`m6wIZQbV@d!Z&LIm^5TE_hN!;67^|FO4|j3g=L!Ma!hha>pEoX1!b zw|vM!F4PvgL@sYMjb)K^d9eihcx7E*N&Yw5!G6&lJL9LpjFBM3UvIB$Ax;x$Q2`%i z>y8l|cjiuNc_la$kLJ^_Ok#z-vWck#9}{xCSzcTTJ-9;((h<nIA0U`Cxi{Nw7_KkN!H=Vz!`X%|hIv)eiJN*WO&+B(=s z?&0N%@mN{oB|bN$Q8Vi?7EousD+bK&!Wy#bv#UgCHW%B{ujRU#z!8&28Pjr`#w3kA zAcWgfi%}>#_JEc%Z0Pf(tlnoq#C%%}iSA=c1 z<>wG3CU7qL#CI36m(zy0+ucrf>!R|aL(Im;qs+dal@*Ut)4V>i0t5b)WLG-4g}a)n zcmrnuZN}xeJlIF8V8656w+n&`|6qB){N4F}>l@@Rh#6=U=b5qeOWs|q9koH#8!;Ic z;{PzE`ahU5(#iZ2R=qk#^&G^T6(ZoqJ+cAgAP3)6k6jwSnwJXSUxYzEp6;qYKIa`E zkpMo`_Oj3ej`+i1jnS3CkT_L32`zsA-segWP8xngy>GRj&-ED;(P&uSh@=;-PQL|B zknrpji9xylpoxk2T-+p@Tb%5#0j+9U3E?PlFzL_>17Xs%{`ujUfz~ePxM3_Q$JYaAyoy&{R+5U&Le6v5b11WS;XK@st=%kM znG&%mN@(8F&wAd!om$rvFRF&Rd26NxyBj%=UE5j*HlSVMv9SWgyev~wp50cm$DfP* z;HKDc7*8YzFvVOC2l?wOow_4C7O3I2pFmtF;NH-o2oX_%6$r(GW z3e=>EN=lb`2nNO|@Bs1ARj@@{lP`_J@s@R$DNk!kAK}0G2yu#4zr96COvB2dfxUMb zC%L{u9TqDl60$8uNFdEeTIOs(lA2i`13AR?qkS7fT4uNTU`)ymYY@v zuX5re&H&CDh%CRz1sxm_g*%{gh#F<_dDc+cumjShFKv# zD1m|9!8~EdY{X>rF*x?(5By5eH6$63dhpW}4Hy8*P|MM3s@{ZAq=CwJN_^X)T0?c; zS!_<=Pp;uCJGw_YYVIb=UmyI!PMqkheOl|rq7n=)#A-sC%Iyp_vm37USSfpbqrfxhucT9* zYMllDZu%Jiq!0$-P@yNgd3iJeP@`~b^nJH)8r`YpfE`ATOVaQaLE4N|3~}+<{#Njg z?3d6>Y(^JK^jngxuwO+&hJG=*OXBC;$mw<>2Hg}c;zpvfQq6dWLX5nl*!c6k)~V-J z3Op%S_1wz@iGKZtxS-K{L9}4@9s?9CTQq_&=9R90tOjnnInaHVtmI|XE}bJ&W%)o1_;cN8%qo;S2X zbH+u3s!+ks&iRRc%)r%r%kK%tlJpqF1n7J6>JMhju5t$zc#GWn!#W6-vn^p1BS)L^ zDD#c{8Z_8)#)ke5dF+`+@Hp;x2Zs+}Z%!Z;oxQ_v@weYgO70exNu!Fu{?cfhUP=#& zFOF2S`{*SHIpucaL81F=pEFX3t{CvQN=g11e344xW6E28i4V?ldpoj1Fo?@DcLoFq ze=x2YWw0Xs!kj=T!TxS9cm4`6(RbMXIv4+JbqGOwCqoS<@{v{vUDC<{2}t<5Eh>NX zmkYpARE%UMMToma+bgLuIcYuQk_}k33r^kBReM}L$U=(&?>jo6LCALDxAv4$_8x6- z6Lhu!yrVKpjx#_qPA6+a#~Xc@8+-RuTCo%*Gfh;RyAqOE5Le%UV+hYj7abj<%l;i= zb&|`J=iPdQ78H$6VN$e}!|_x#9CPnH6M->@KC$)F(E*ONOOi2WLO<*JphkPTNl$j9b$KC3DawEg})q zulHTXTf19A$=?>*u6>Qv!VNvKL2cKlm%QYdY}^&S4U#_=^>B>{6hPeziD@;gup)CV zqtN1|%&Q_hrKhqY=Pt*VQ|CUO7a|k}6pAXJwBfkL6n?wr{O4crY5bGbD)lH}N>Ia) zG(9(QJxX}6olI`x@KmQ_2uW#pjyimOFN$1hVs|79`j(=P4x`G~lp1YPokc4cJHH25>oPWY}aaH(F_q0Ize5Jt+)IiZ16E&k+Wo!_rS@7ufftkA*3iO ztZTuwTn#0!3OTsq=c8r$E*LTtPqfQ|wu9iOgMA*|Wou~#zN9EnjOtU46S~gfKFB^B zZX@{ZL)-{F$FPs;sIhdan(j1H4&87lkf0z^a+juKjg20sCZH+j2CAeh;~myz@O8&H z_sUMF4=jXbbeVWl2v3ApYQFG!2Na@HT>h@>Fs!^|_(b1A7tPSc^$rs!XA3cC745+0 zJbkh7<)?*D4-uUQFnKxY1@{h{z;ytz{g6MU>TAO^;hZ0*TAMGhuc?vn3kfAO+G%Uy z#(K|~wEO-QQ65jbw>IXQkkb$;Vum7JFq1aNDI-L92cQwAv0P@u3fw5(yh|l1iHPwnU-TW zzRc|8z)S)&IRrogX>|}F%L~kx{79z z_zZl9-e-h+bZ5ndE~|&>!5?Rsz=`Yw=P&_=7@8!^E%K=2&`zS@Bqrwv3}*V+{T-}y4&fV_$+P@k`ba1!njG~|COdL$3I;%3~lI^c|B;RcV6ra zQUJg^o0kC}-I85~NZd2Bo!(z9s@?o9MjysG5yaB?PkNf24nz`DH zmej*OHn93Cs1XyGRopI;ttEV??oAa9+<8F;LaNRKQo|(b!SFKA03;VA@IlfF`ce1{ zG$d|!;SvO3uXY366JI;Ld)%?>Fdbh*&=49Ia zr=f1ImjxV7u|kkdsWV?6x3w`w3(Y+ux`^y^VjlB4OBbAd#wR|WHpNdu4joUYDA?*J z@Vmw!Vk0;hrUvB4`H3CJ$9rXU)9bP8l9PU=bVHGRVxMZZ4CXq@3d<5sn`+>KhYy6d z@)M-4;9^tE>&>sx-Q9t8a6doap5~Re#EFi@ym;H)Y!13h)}YRZz<{wds&#fNhdW%) zxf`o$JRt6|#&LrHm)VFFhJ*1`y!4L2XVnyFNZTp(ahIW~CRpgs19F>lSosNxjDF^5 zfI*x^O=}c!G-GSTF%Jq^?jQYD8o=6R*)cus7NW^1eGi@c6CCnw_)&g26{)*%W(_Fk zbj(a4>cBpv`Xj_DsaQaxrK`M@Hnrind)7xI}#g@x0(`-wsz z4lR)+-7SSGd#NB<*Lb$(nb^BZHV90pdHF!;L8LplTX-S?OzsbijR6Ebhf7#@R}`Gx z>C^Mz$ktO23`Hh15tk5mk;=`Pd6 zm@(d8cjD3_WG{yt%9KYEAv9xq4SlYP*x96=tFtM7Xl8xWuN4niEVXC2MZ~J5M3xLl z42a&xot%17Q-CSPvuKD_X2p4*MY}?VV?Ax56o|PaHH;T!G55HMF&It+(2-s-?)7L| zzvs!X0e_TS)>>WZgF^?f!xUqKXYBG`*+KT=ZmFQX*0LIt979$Qbdylv96p6$?XTEw ztAB9~;{tl}pDlW2=?jdbiEGbmAevmfI7Tf{*eDlL`ipbz5urLHnRm*|?YGFj-f>Z^ z4X{j8QcsPw@oGR9Bu-u&2{y2lW4w(t_dBEBGV~#qHpZZ;sFWRFCj52Q1);Jbe9}&K zR$Ncqen#msU3ZOgyFmfFU+nRarYj8vPN*J{WvGnW4w0p`iFPkMN5}+e_((k_k@%wj zkAfe5Z>Llwj_LIYo=3Nstn~r+P-&hvKoIzD%PZzpraLrT$|P2Pb-Uit2}hABoSIjK zyN`gcp(IJI$J>vD7z!+dCDnq6itt1qSp^xJM4(!3o-dY^48NPclb1|)5CuJ*bv)uw zJec3R65}*(WrU2QP!?e5NnsFTOQ0x%KNCfZ)|0jjt)u{I7LUQ_ay{FAl_ah*e#nmQ zs%v7~IuGe!73%*%(dizx=GJe%Ff{0<5elOKUW1uBReLxq$_}HIbC9O^Oc1?=AwK#a z3nJY0C#P@UFL@wU#A?LfA)ph-kC>8L-X3V+0$L(%;yxC5sHaPJsf0dx;CMfJ@ZgYj zYbA@3;7)x;2$+NIm+_O9_maN=T^&T&>8D=_H-`RRZ)6+p^b?=zkeBhsY}t>HNX)>> zsxBZf-Ea72X-CH&JJ`1Pv%~oV-*5?}%{bMQ9LLVrDJ!k$G(<{`aG1=&RzyyTF4Q}w zxsDn{c?Da(X#WF2nXsTjMoL-HAWel?gLS2Li2{J76O5h_F#>CTT>Kd%7;%SvkagC! z$j$$w)U&P2QrMD&o&p%gE1;r=-}s~UO=}OyGKtINZ3%A?=8MHhx`jifYhNL1GOtsa{Hkw^a6AT@CST>2W%dX>!cy5} z^%xCILmXWQn+h?p=2v@>hyYLlx|BH@h#yhbq|g!VqA}Swe>|ym`(sJ&0Rd=(FpZR93Ti5!BV%7qeZ;yl$qSo@+7t<4WA_QoIP06)a=MQe@ zZd*^EH|*y4LODK9PDqZ1@h#pL|Fq>LMHBpKcs&D3x}b>EbH8FLEL((O*}KQ1FH zAARQ9gI-PfaN4ZLYy2HecA@a6fdz34sMn}dQE1S6omJ~CG$ajUki_)dECE6U4%Dl? zsXnF~B4zdAG$tSTCe?k1h#b7RRw2Om(%qbH)3U`X6=v)$BCyUEI_JjYNqzA(3$6*N zfQO7HLpcRTVh18^f%Ea_Zx82^S>)G>Kl1u$Rf`*c9VnGSd)(J_R$C^g}YaEii6o&DFxiEN5C>Hs8@f?jK zsqtItKse38C|H@j(x0&smI~)AsK-6eA!oRQ_{$xG2lD5oay~>0cvF&_$p#EfHF{Wr zR$uxNH}VJ_rsoyK?F&&`xS-2e(*ZSjp->f1mB0t0eQBT44YXYbQD9iDwic`1@sGb%<5!$-~{sOOv} zt<^@3UWq8jpFKHXVo}T03T_5M2H(!8mWZ}InI3a^s|MY;0_|}ha${qUNDBX@3EsVM z{Ym^dWNC57L@93qT7^J!!okv>@}6~p_efaFG2Ivxa)&W-&hQa#RFxs08X!z?b5&Sg zOmQ+WWhrTcOv`hRp)1HD@QHeR;zA%r3IH9Upm;QxHTOC~L+PuGU+;;Vk_Hbyc;nGl z6%{F|S4kEVKpdi>4Nq8vlm0OHQAj}Gj**oahR|Yg*PZANSnd*Oag#G7*3{XSx(pI3 z$eoTQkU~(KfF9Y^HwlC(Ochxe6+>n#J49oop;toUpp|LwGnpN3C$XLLvkd#exQ<7i zz`0C*j`C5mZatcd!`k|{vG2`lb4vK&a(Ab{G5iqfKa-i?4L_)xusF*`)Ue1B z#kfDZ25$wz5bM@x5XWPu*h!j%iz1_SDa|V_E5%IU)cA|dZj|G+XSla~TCtVvXTQ_u zF%esFommH1YLE0NtkJW)78rjl;crHNpvr5ivxqj+#A5<2*W6M9P! zp7!!FP*nbSYCthrL=i2LDo}TKz<^~b&({`9VN4d|@zatc3MLcaYC)urr4?*pugBoK z^g&?35AQbuk!K;RUT0c$()aDHh>DupBl`}+0#?-G9VI>w{31Q%T?wPml&EDnHB`c& z3nA(;mySv!dKg#HN$h-ohRC2gPPPTH_(FIJ_-$Li(xmz2X9PN_@`qQ4%@_1#X8~`j~JO1CBi{w zT%XE8Q4(@vtj(az+bMh(tdRzrYRAtey7Q#GS|Gh-*J{O#*{ryfZAyG<_ZY|V2h&Og zEj=LtVbXuM_{k^caepw+FggdqAr|iB@t#MG5LK0g2o$)wM76w40^@-0c`S>@Ha-P* z6lVpT=K}%lSkv&O3NKamZA5NVT|s6s?IqMDH|G-f|qSb`VxPwARH>P=lx;xv|nU7 z#(#DS<}`y@`RGFt^Z~P)kve50A^vPLfGEkXw%svCqJg)%Z?t?+fkmN$1dw(IA#GJj zQyNHDkTag_xU}5v@EVM~MEg;`A=07fGf*GpZo$j=97t+`QXgBtouy{cEjOaT+RH$v zH3?{YN6(W_1Lba}sccRg{aCc?lxFIqoHt~&m)143@|8*{J7X+3^vVi(X7A z#>jz?q5unqC3a4rWGUp;j;0wq^dO|iC3Z|l(gqeYia@cM2@ljN!$xAj8#rYygQDvY zZM1BQV7SYJXf-R5D6lO%9%K2=kZ&-QiE)~f>az$K7dw$NzgJl)IwU7&SZfmXepsy< z1j9zo6I}I~tcsToM(>vnxb&KcelD?#*tt8lit~uBP>IPsSR4ie=`RTv25@ z`L9N-{}W8XZ(L6Gyo$Tb8}Xy`BqtAD1Sn<&BBjtbbM`mSumJ{oDID`(kUtV*CobbK zr-R*g3O~&FFRr{iZKfF(%z&cH##Y!4`l&Ll6hyzMJ$)m zm<{)wbLofZuR=7&Gsu4}7>ue>(*54RYY<)X%t@%iAF$#ZuF* z`mY&r6(V&kKK*P)q9G|F6!%qbgK&+QfZjq|)my3f0kb5&{zLKiq#bEKSvm6HXD(K? z|C9`df7p>PaiLhus&IK@g*Q*18P>ZKdPPs)3v^w>rm8sdyb%LTd{;OL<5S0lzNJOQVCC{Rg?Ya>u|T;I4~@fp3OsmYq4E7&%zsa!QB zwJ!xk9B>aaME5AvDD!h<9ALEF&)Ybx?H|yUL{?u_6P5|5*#TcHbWJ`qtaj9O@U<}f zM{?-@Avwk9G-LgN{Gkg+m8fb=9KhkX2c#4 zz)U_Ml_>p$GG+7IJ6ZWoLul@1EN6E07j!o06Z&wRDDH*@l(Q(bs zSXXcSSYO@;d${K8tx4!x0az+Ea$yG`d@GiWSVNz}XW!2e8i(;m*T;g-3%tlLY1bjes;nTl*EquP_k4T1xflw_8dVAA4Xxz%UCV)|e( z`gm0IEPB~uTT5nK;FRsJmRJ`)7olKk_otV~jDsSy%~s;bTkZTbDq1IZxRJQFI`<#r zsnajWXWspx2bWu=&kSdXQr5KAZ-xz!dzb+Gn!zCEVJkWBdlTxF`mBlBb#W{~>ScA$ zO+QB?q>+)*9T?H`R;XoKIm)Vcv#R5ygEI1%@TkyeJ7VN(E+E$*zLr&;R+*4%kiA|6 zo4v19h4$@3kmE4nQ+Zn`_6A}E;omfx`K`w?3vIr#2kYmRA=WoDiu*st6HxwEO&O}=HU0B6?!Br z_WD~CqW&*}@Ba{O5jS8~yu^Xo0T+<<^g9I+M?*+?+%fF&_?7+)$E+to2f=5{26~x+W~f>;kZfgwP)HE z{i1ZyCE9XlQvrSJd(3Xrv-<^aDU}kI#7RU8ReVgEM`*<|)V|ZCVSXI6bXoi4GjHm* za%Q1=Aq3`PzMps0>>UroB*84q!rOO1BiHbC4Umq0(P2gZCebCn{CGZD;W@|7dw=0xhEp8RzPod z(*2VhG%FAI?RSN|`!R!QY}bR&&$s)SRmpzn@(0)EqXSt;#}zy_902ZC`WoH_jf?b) z;ueJ?^iD)FS_-uqr*pE?t$S-IS1RcYAsE9MK}SR`L5AqAlxb@=OjxN0KH|+jXGs*^ zpKnQOh?~#TKGFRQ};4Z#Mt}g>rUEGd56mwNHkHPZ0smk02i7NxVKOIK%#TNWyqo~jh%l;4|9MdG6aFAc)*#aIjQrl!&Z|Ak zpH?hmB3CB1OxIWI%T@EbmpNPS5}g{|N~bQJ3B^Ka5l#<(xxc%FA`{&C6$)3fk1~*T z!HeDxOTCPc9nOEr6K3z;KNV=saF-X#HPp%mcsAG&uZ}JGZtMlLv%ezUg+@W=+8DZ` z07*xLVnC15lk!sF6s3rL3B^|MGqTA~CJDgfgk0dug$>$MSs@x=2u$JOMdcl#w~@BsjL`Q?-XI=o7`!=Ig`i4e3H%vpzK@6(`UB~X7g7^@XXF8> zCU)zhTN$iyKu|+hM{zcDcbxoYs0_dqaFnuiOx)7S2#0{OWUieLOUpvZXj_ppuym-X ztB@TxKv6AF3g)nBmZR6+{FH=&V%@`KklEPQdQ4^{oKIrVI&ejD-u3e}Q>2MX047af z&8wMoP;LMrH6Fo!%LWDOo8%x9R<>%d0)&;H)OdeLN;dxcN=(j;;rwzJSG}Sg7}%xp zE*86@_xm`Lhh{BtH)PhW{>odMz59&s+4EY8{`->u1W=xFsw&?PiO~a51&Reyu2Njj zg8fG>CXDX$W0_GbHxh3l$qkj8b~@)t3dbsW5b_Uj9*%Za6rIMGLV;R+RGFzG6mJyQ zM{-K7!C_OjJ)3-#@#3hWUyCyLOL$+PPblnGUb=UmyBDy*lqh~wX^`Wjmk^f-w-7G! zSFBI`C>PP&_lO=CXFX&)U{Rg{V}&Sa(2N2k5&D~GG;C6wEbs7_%G^7ml__|~&-ol1 zas7yPP{y^U6hA)1f#-s_d%fRNKNY6YAi%xpO^F-;TMko$JIH>Bmk92#%`|iQ$0&N( zLJ&%Dya~`F&QkCs(9z+Z)u=R1_^EI$ZY(&Ys-8Utf>$kOG&!3jSVgLwQinuX+PJ4G zFEqH=2&*;H2@)BNMP@chU@oD_QO$5hYm3r|;X z^fO~9o}5bV7+Cw6_|;^c2cIbIkuzEPL|t_78h+uCP89JI#~3Md1N_3Xe`-h;+3xX! zMRyGm!qPk{^FERQLY1NoRcL^=-MDCUP%$V9vmk1t<`Cn3Ts^{_ivk9WE48kOG&Z^n z`k(+td*CGriG807{#|Uo2f~lA%rtME?|-=f1{>)*l6-!#wpdFu&XsQ?SezjeJW(Vq zc9O1kXbJmsM$U6uC4e~nd|g+>Unp6VJ&kBzm%iwFTS{|4J_E1aN+9dDKQhmCtI)_D zNUdu=&u;Z(zHC9^ zwyLW709qBY!#*s4)1&Ik^`py+ODnaI@M8AVi0-A|zV0Z3C##DAMxS3{z5S=8=g1)5 zA;a^}029sg8Q_J;IVqB21YF8`*D$PQmnVJg7QP?pWEpJ2(glLlkPppSrzqx zO}IS?(UTqeo>x=RQF}1GVtk1XI@1#<>OipB zL6}|Swr2&F8VF(T>cUcPGZtS{V+2D9pR^O7l=N07U{Fu9phl9_8qG<6?P$uKGidZz$v7bJ63`Kyt!!(q2FEriW#O+}X#x z1OZXrXXnaHdavxM8hAi=ho4!{0p!)pPERjp24Z{Yao8^DIP^9T!7JK!hj9CS>@zUR z0X+DFv{Cv<`iSnx2MTc+#zxQu@@e>y#9v&t_(O0r2*#WYeHWwSZbof*nIb z_X3Y)YR@+;bvG1UExuONxJ+7$uUloCh$}Eh%rIpQchgGpt#Oj`*5#& zjqBXp7v82P7DFHkGbD(`$!tgi?sdMq;|FQRD+HLx88Fy|YJX7x7&00szamarDq%Y-*5#!A?X3z4Fc)1Y9c^2=@# zX!#vWl~*6n{(PbE-ud<62`Kb`X`lGl=EreRz#@N=FmOX8Sjq&Fc=^K}5qO`!(nYNbVp77DGz z5c2HD(yt0Z^QYZFv#2JAMz3p`KzDt-iothKh3i z$C}b5{)2TxEfskd@1pArFRnvUXfRkaKuW%#-`)csP%0os=V%N!WP%R_rW(G(7&yM~ z9$L)bs{5{sq4)49JNI~S2aWzig61v*2SUQqtan2t&X|QDozk*r^Q<8E2;fx*rFaP; zti~|u45d-x)}U${&4D1F%z?nb*VMKN^&*fYil4|!M1aV%|I%-pbkIxSeA^NIp6Zi? zkDsESUIyCs2|<(4Oom0_GFLMiO{lBXAcg=u@<6xy>_I9FSAV;}I5W~HlaCgFR4*SGo&q-Zr!X*SNiRzEhWz5Jmg)Y#X#vDR!%pBdpOYWK2MZP zkcA9;v~EOotAx46SuYR1UC#SH<03j9fIyqse_=ZOGZMgCmjJ8}RCb71AHkm?Xf&%X zZ?_-#*!**%ByNse7x?hZOfLI)I#*|vt1ksAr&t6QZz4&Il6Ky^Xk2yTgX*#RP z510D$3RCV;Pn^J9?dLJzTR9AtgcgR{!N3tOHFlh@Nn5}>NLR;(!RL7)xMA2CdZPCU zo?RF}H6qvitk2#ulj9UzomQH8>{p~7;e?KiD0t~H1jw;*pEOIVko#pw->kET%&%<7LR;l*|kPb-@**n3Kayo|qu+?weo zZCMX33vtn_A?$z9mb;<2bvR%a)BN>^6z`?%#%S$mB;c7>I!oQF1nceC-T{6yv4*Q- zm=84mplA!Jd8Gs|VbEdj(0;#MtUCRBHeP&C6>X9y7TR~}z!{Z#pq35E+uaF8V6=mP z7^g_0`w+Ct{dDPZe5onv`Pz{ z8<(M))TScVZ&@i;kE-G_rVo^jCnrp};Ff^m!Dy8y$FP<1o}tlpanGvi!~v%!jk`t^ zoZ8=k2GpKK53D=iv2#RMDMAzNARB4#zbRhAXv3K2vFnadsa8FjoK*_n(GOkhb zKtJ34T?Gi{CD672>DJ7^o$DA0ra>GG+o3guvMNH?LpQ!1Q4waT=I_pZdwvMrcjHXo z*X{NK{+v3~8B}0m6_wD2X;h|z8P~H{XnwIjb~*54x@V3bS<5G_Me&(6?( z@z2U>rC6psLviUYX5w-~e%hMQVv)y>(7tr3snciJ{f`R&cSZIY1(3H8Xdje#K=g@p zTqx$Si|_kwtsU6c3$cKCGnBCTmvgXrRYQT<`ys#TYZi4W>R`Il_skcJJDT5&FblLP zRhdbc#v-ZRE*~RjyQ!&X4Oi&c2i6@V3iuigq+?Dj=D3XbMH8n*6&?azWB2ane@}H? zkiNnTtaq#mcM@0tvI9G9?N-g!z|bArE^`umVuPrVBUJn{1!bXr3t0gxu&No&g9|fk zlcZlOoaCWb-%TaF(9={U^+|EaZ!4&VR&ujC)g^>12 z*Hd@~9w3`n&1Ok>T0yFRbo|WnEHUOY+F`0(HMBzGn{%Ou1v&m$J65mh!^-^m4pO-O zBzA5NaPo`a^Rwf>b!dT({!jbQc4uXcNwZiOZFq$dPKfgU4bsSjZ09;)3fx|Ss;NYK zpau@LoaA{FuR3ryVb_#Io#hf4sD!M7`}|t@Mit*5a3LmrK{6z6sA3(^CQg((!fWmg zRO6#~(|OU>?|0G+($)J%hjO)aN6SQoZiuf7^=BUIZ?pZrxWDN1aQ6O9o2F5})}o3DnM=TRu+ie)mE-7tnAVN78Baa@3U>FKT0c&0>8A;}IxFYR+iUqe`FEaH zR{1lrcv>}s3F}lnSe3uAVF+>U@ndIqrRVz3MZjQqTd-Mt6tA&2AmpEuEglm#wg@RD zb21P&!&+#EWP+CtcYfPx)$=9ehs-n+5%-Na`#MS|&2Ut_{Z2RJlui~+Ik|odLuX$s zuq&c127YN#yf4wUGLEjh!yM$RnA`8~FE9GLx0CUfTS$G@OPeuwZY;KlO*n$_$|il( z<%UGoI(=0i*70if4R_*V>cgf)0S((M`^#|&*{zLDGE)S004jbv(-sw_Y?n9lixyaF zf!Zk$OElxd_-10DL@Z1M`?S|q43llPXCBKm#bEr7HM>jwdPxehzV@Db46B>~d~y&P zQ?_9gb<(6^6O*{=-AopF!;aNgx2373EKCAjPr#!Xk+IT0*>-G(y#>-6b@`v+}(_B$wlvuK;Yo`kOQ zjAD>zP_b$I)J1J5xeviw#1C~S@Wfq0I~?FIifK8)!WfvM1dH?|k&yEUu_p&69m(e{ zSQbZG^Nitp=tfz)IJHvMuzpw@+dES7Fg6KoX16ApDB(>Uvg|&<`>|xw>G;rD8icUf zc1e17QF?V?pv$F*G81|`yV~sdBeK$Cp<$`y2SpFY*THBEnoBA<8hOHCWKeaplnzY; z=pDuTphpBuY$$^wDJ;>^LrzCjCK8jNoc?hBuOc$YG<=2vK~!5TT*uto=tF7HIzY?P zMuSp_d+}yGb7^$M87@Fjc3_2nMR2rA~laL@(pAV*pZY*t>$Q95t(P606>9mD1?7cil%g#IC=cAnDI9Np25X~t>bIH|YD zm--;FO`TJa+cRwx?9c#HwX}zT^Ix!YTmQ(+f~Lmve{R9c|4yof(0knu0q zdQT=b$M`$X=G2D$>t^&gIA>#X>PzVYBIg!4G#%CC$x#{!ovE(eo7y5WkSh0sc7@j` zQU?&qG=p6POzBc#IYqA#dHfC6J*TXfn1ZIliU3go$bcvP05a3fVw1OhO=Q{c^k@;) z-q6CiX#s-ky57-YBZCe2I=Rgh(+Sig0+iP9*CF1C$&BGAz1FJ!!sIvueL9;mm#w^8 zmxN8-E$5bf=d6YnEiPf2eue~jPCLe46pznAWj{(PZ@iI~O(fV2d5O{YoEAgvL=C@% zyG*hZ?Qe~&F^pLxC^{5g)b5>u^?C%}bYWNPk4V7-sXad%3~)Kgv(41V@4(ds%^HGu z)^Pp$EW-E3B@#!VCc1(=2SyRo1#!oOQyNTACKZXnzOun8vm>$i`|q;3xBOb=dW*-Z z{tj1(e^iswCq{Nh$~BvG7suj}|BtJ$V2g77zNWiD8DQw{8oC*}L8Kcg=@5|a?(R7IrxL|}@b|rGrJ*>7 zac@h2*q~R$-l$4PoI?nHoV#m{I~MV=1Wux;l^g5)X)m{a9G;8WeB)8Q?FV|ut#pY( z51vIsl0GvPMCW;%yT9gR`P$IhK-B2nJdm-K$a0uMM z!Z&lv%;_>5<3q!$E6WZ8s0ITyDWwzB{4JgXWFeFeo+*6mpd-HP79sIP*rPssx^?)~ zcqj~r5@TkXf#XOFW~caSSY{wm4V0T{-RScf)_5R56%Kad(IMCndsq%;++d2f3qZLT zg9AnrhPxnF(i?)!ndCGgE^JSu!_8UyPH0!%*u6@KOe9Ztis?m1vXwe_GUTPdh|YyM@^c~4cBLqE*_rMde@m` zy(xmsp;uxaSXn3k@sQI6YK*-o3Av?4f*+JRPZJNR(6EQ>9R<9&S{s$`F9DI_U|`c&758rwm|qSPI% zMZxH9eZ_mYo2UK&hq$6fIYxc{p8DIj*f|N4?}m61Jja-_e%&(;$?4`=bO$-Dm^@lA zkgg#57X7E;NcF0Cr&iuA&B3pX)|Y;$Pu48sAS*LwYxyC{o-E2i0lX28s@AG2KTdfW zL^I4L7+^ov9N#e)VMPf5Pc2V1RoN2BB$65>_^D9hfkTd{!@#o={;hI@66Ht6+Z*ye z$ZFwA!O8eEBQYsDafI&^24o8dD?Gk(5s>w;oSXf5S%;l468mEyJ4mdOyTb5#h}P8@ zeT#x6e%6I!-hJCJfp4>KpXsdbpx-Xp#u>#tMj0NZ1zOM=_owhOm^)}qw?z>B9J?!? z+$0nz_bCDBi9DRnsgf@qL69uuD7f=!dWm{UDr*AfhYQs;!}4)s9ty-uaE@4T3Jj4}m?6Vhcxl}@&( z^~nPcHznngj5a}W94YD6Sf!sFpydVQmR|b0BX}R$`Fb>9+CBo6Nqo2pV%{I& zU37s_pPO3G6tF*BS9y}i!#kkKIEglD0Xj;}*W`OqjhQbw~qBdfcVQ!cGg zBOS9X;}RGslNrDl1%+Z0R|;oo6GK=|0MO$K{QPZHT4VXm#b7ASC1=}A6xWc27>xK? z@aPVGYi;x`3Uia9{9EQ6cG5CN`X*XFoS@NgRA0V zzBbq}!PJv<8{RY|8)eoGa@^iSZ-D_iW5M%eUYb3(m6S*%ieJScZPmiqp-H=|xTNa7t1gg!15B!(jAWA-k0PLnJnX{nudfXE|yG0;P^IXC{jGdqjj147l)<+&0eP>Ta&BhJQ>@IX`u8WgRnE7@;!d;O)S*6X{NWAf{k-FfTEK)!PmO34YF-c#rxy$h zI{p_2PaF&k*$O5_sV^cFe_~uTxawRA>3@&DVLwa%!cLLNTej_f;`vR5GLR&v#N;?E zCLf`=Jdq(8PN1D`QX`Bh2?y7%Qnxw&YO;CQZu*GA0MQ+LLv?SMyj%C^jOQ}aIUf~zdqcD~I=q!7jz?}WZNj58ow4=U9guYdS(Wgm9wFBs3Y z%Bo?)UE~9fA~y|Ur|R9X{5WIVSIi~HCtE<2k1jmoeb$bwzyBd2EHIw*+b33aXT={} zB-9z4o)VRvV@KMI5~F4yub84BMEQ+KIDNbtWHV_QCG0T)+pHpY8yJ1es~w^4&xoeu zOO=yvxrqQo04mP+T5#aRLEjjT&jaSELo)AxKzU?Ta^@jw_jS19G_{o3)M^q1>m&+g4?vi~X=^umOH$=j=nVanbelvwG7r}DwL2hSRf{MnOX8E!f)PRQG>571_nlSP#9DPw-l;0Dkk${%DJL+Wh4EHu8QAmzutk* zdF8By8Mj@pnTgnM#_j;x#*Fg+z(UbKhRk`_WDXJR9)dU8HbEuf%;ZB+@5bRKqh@Ml zD5Tp@TcQwaFf+LVB_&0ff$JH@5R*>@G)HSGcu2~HR28Sn=>%G#SN&yOw%pKdM%_QM zQISEI(!y~?O_>a$==@0!^J|yD0Xvpw%dNqYjrCm4+K4+zm(i7Y=>1Dn z4$0{}?VQ-dv0)J#V$?YM>46_&>)?BCmsc-b(9AsuHr@<9uMXFF+Cci)M`beQUACtC zO-FWP8Y4_m5#LcrZzmV{6SNN2OP^bZf7aiWw6+{O*Yx_dKklhA{O?Bha$o+hg1>hx zmZg|B?&`|aMtG^+MUkGOgw@k%3g)SZ3$u6yv%VT0t^C_*Q5X8h z)pGU43Q8R5M)g<(Dxj$cC!>BwUzf$>V%6`7`!d%6E)`H{ZUcb$;tR*m}5(P z7-8}gi*m_J+@VnX4@kd0mPnSnBzFXsG!1Kop!0oE%P3Ewnri!mC|bQEg9PJDA(^fD zJlGa%b2OFF)A#-)m>xhLI~JVa(4u}zCr0LcuU)Pxix((R3Ktc>#oept|Jm%+jkp`G zwvR@AhF}f~ja`vO#&5_r&n<^tdjEUBqOo(DB_9cXRpG_TAn$};-6j-Kkj)+2`~o&F zapB>~@MPyM}vNE3|G{vnoj%$jdRKBG4LNJip7z} zN9L^ImAeIXRbIft>+;dGI!lQ$W{X;Zxm z;+asPErq|jsk;4pVxE4Qc4D&g$d09FsrjhUMZ*3H0~QUWRAM(PvaMOxCgpDD&Bz2B zsvKX|!@w;OCG6g*WGtOYmr(QhQD%Q#ouF2%Bi`J_xTAMfTy2`WUpam96${<^Ahjjl z_}y0jx&3GNe$A8n<-yDiK6mG~snQ(uK2+n2@Z@yeP@kjvGCX+dzgd8EKhQvCBq%Oj zDQTT?r*kvny%&;RC8d-o!M~iO`BK(@Jwx^oUe*dJS*i|-+B8sZZjS#V+oF07WJHYY z&o^npl8+@1K7ti+W1{zgjfsd0cHTv>_f<;Nnr|+G?$~LarYk3Shl|6+risJ@?TXDE zZ_V!&L@&dNBSX42Wp@>V=rgU@zp9(pbEjB7zB^asVaQgk$;@!&aTKFDS zd%;4*bieE_VG0b_nNJc~T!wtR0Xb|8!f2gi9}hN9VTY7EE`&y$G%qq?L{@=E%8${( zzH-N>A_ejHK+p)*HJcCuA-O_vE#xT6l@%Gqzu~$UTyhYxBl#3 z49<^?ADg&<^n2s(iFDdMTW>utcK_^ML0`R2V;ce6UlAYcVki(pOK%TI%QC+~0n2Bm zp&25Xb|I|pz&9vU8-~6=jrfZ?U!vuU@+*z5+Cb!ZI3xqXsZ8UWEP%AHLA>rYAs2Yx{`;UqaNhax`1glv906JI}{HQgQZ_ zw)#tBHzO`l&_qDhsB-WFeeQ#$xQxJle;xYBaI9h)a4y=95;lfADi%)K`DTUK)^a&u zNvES>CH2vL4!vWy)p_JCW{ed0UA0zSNYS`FC}coBqA-Y=WEPqy*QA8IuGx&Q?dgA@ zRPCQ{MzoS7626!Z?hL_{=7k6b8H^6its)BE;(n`@g+ZBt;R^^^Y>nR!slW)z+KFEZ zDpga){X7vHSQp4nIg|8A6!uO52|5IT$ap8jcx zOW(2ut6I0!YU7&qv?9}CPMOv7n8SKtX4Ys_ASzovv1M2{3k%`HAm!nJgmt?2gstyy zykf?x|I<@=7|2|1Jbui;1-;FcM7PwMCEQgN^7-!i^>+fVNB!^_N$#zg-EWTAugH;I z0W%>+;q%jih{jOVCw>+OjZFKr%Vp(8B_=VQc;psF4qOVs^vyZW`$3FLCB$(p+vsjFvYmyW z@^ej;!GFBZbE3|}9nmyxGY;?jeB6+D)?DU@2|a546@l5OU4a!jcHCg=(5Yi)K>#m5 zkdTvmiZU0mxf+hn%Y2MLTaSxjo;B~{+XYDRx9syh>Gl&~X=H;VtP9l>@mk5fRWyEo@i^{5wv1s;e$ITe)qDOJkjOv~egLVD zfr<|lKMjh^dQ7-)kV6PY&&nj1ffk?KNBVS*>`;{dB;y|DNt?{m!Vyq-ihL$@T z=q9&s$Tn-85?jS2X*$$RPWf%m81@nw@J0 z@oQ7^jpi{@=92MsI4So+ZKIYkIf9JBKCF@?E4|~J`l5N#|1~EyJ(A04zIki&7&3R; zC>m-LMCTH;AX2qQ&0ozTHg>Wtjuo-G%B_YDo&1Xf`M`Y`*eaQoClQOFEtOGaL>EO_ zkN<&KT}_C%x<1OoQb7ouj@BK&eeO*> zTbF?MSJT|rc*K1lj*_548!Q!H0L3SVG9Tz-Y{?9R&Q`0Ht4)|K-Y(x~l9{3z_`m-E z+3P>>`=5W{E>45ZKf=(zBmBECB~8Fr^Qq4(m@EtTS&#Qz6WNYP|nyC0lJD+zFjJ7YnUzEf;BsU8U zrNxco?K@tCm+9%0yH=j7cyz(KpdYr+1#X6`dcKzoUZ+m&FWQ#J zDSN`kxE6@k<+ihUI6GsCW*)FFwk{714NYY=6yzzB`M9#XyGz4dvW4;ji8y7SDbyZ4 z{+*~)gc!b6@ly|7HB(}O26QrQ1e+wFwid#~CsN?*N&QjAm*&@o+V2!K)23uLqfEAg z+A} z%}>bn=N}xF8>XAuo0Q=sZT)77JcArCj@~$AD?(6C4@e<&jK5wk4r<`;rMXf%sE3{w zB1iG*xwl5&r;u>($KysZqcis@{xY!LaI0A*?HT;pgUnhptp6OdNjy8R z)HCfyHjHv;CZ$WihPSd3n2aLJsk<~fk-2%NATjmk^iWv#IhkgG zPe@7^(Cz*ed_fKYoEk2s$6RXo2Ig3LUm1!`Hsf#zb!0}vCqk`^(1pKHnl<}r zL3QZBes_BF1tLZUr`G(b(g>{Ys~rfIc_zmTya-Z!#+Jn83EqiFhgd~{KxTcPtBi+u zQ!dR`Mk27Y#quv$pkwH>qu_We^OZVzvM~#Dn?c8xXfLz27{K+Ow}sUldY1sNyUVoS zAKN0$9~TE-o@0CdJYNW0pM5p3uakYAefTL_e78j9*pZqWY+z_u{Nn=B$Wo4}`2NNJ zDPAMJ;-9J7ok5i&V%9RLPu5<#c0~zeYbSXCZ64Kg8(ho+1f>Ag+Hm20pN#EFd!>D_ zDa*r;uk;N0mn7y0gQRFowdT=Q47505359+8r&oj}D+Uev-w4VUx^ix zxacyWjvpNzYFkdZZUk_L9|v4kW(GWO?hQAa(X%NdPo5uqU!9p=O3ITw=<#X#+Ix=a zIXfjMsoU#z(`EyN`-;|Rlm9{-<#O`z`@a%oZgeeXRW)V-q zdB=dMH?^g>Vd9&D+M&13oXmPFeKi&1dQ@7hryBv@D%%(Qf$$5&>@eL2DV)R;&>13seFywRUH*ZSXN$b@9thS7u4;>FU z%03zbKMEQR*@1NYt`3Wf_pB!y$`2lcc4&(}xGR53robYOx%dTp1y;1H3QrzUj(Ie2 z_=03Dm68;Jw#B9{%AjHfY>2O zBbFh3Q7JJ1N;-(jV<*ROkjj_3*{wNH@5|Rt4&7Z{e3Q}vyxQ^qq$E8}a>tY`%l(fy zk`%-Ub3lgh0!BvInXh|}I-kxSi87yw{1uTB3kXVH2=%dWcfi5p=-lg364vUd} z3oaJUO24nl3#c3W#|;w)e$IauwUi|);Tb2$(XMsVJp}buI#?&&o|iiBFE)sq?LIW$Z#Fq- z92VNKk+mHkykv0XV9$>Z<8DlG&9R8a9>y-YAhuV1$w>I`J-qIY*H(Vi+@6+SKe+?B zGlfOum`7h5bRYA-M*b^?o7-f0If6rXDSAhX7`MLO`l$FG*IUCr23dQrPQy&26g97%(?-e}9k9YGBhsR8WSg^qQT>|CgN( zoEM~{%-@q@7_ZCiR0|c45EP%OA{T1ABYTgoIZ#{Csi5jH0`zZqa4(0Pq=Rw#MjKgI;lF#;5=n06 zZB^c=(3dDwu^UUB4>plJ_kCD=XaG@~E5m;V2Nr{gNSj?eVeRc9uAwW{`-UKJ5I753 z+VWWMd1}3@V9mPrdTNblaEYKh))Cj#^Le@xeJ!vj#({W(MvXK--JN4Ex~TNSAN1{A zw~7H)M6qCli+^(@-x~tXQ+VetJ9#P2~e()EIQZy};_b&qco2Ze$ z&x_7!$b`7;QGi%0jz%|!p93Alt2~hEyzpr$CD$foXN5%!MPIg+5!ZY7wWw|a7!LCM zD&=<|-$#$TKf^xJtfBk!eTL|#9$_7YOHqrl%{z8~ecJ5*uBnK>){;QB?NFvo{2u>4E}+eDQfvIqp?*Tz<&V7By! zvFv7j_N`WvAD=+|rwsb4c(ilB9im%GT}lN-7Fj*%F%TUcgG9IWCzMM< zb=`r%fWCUbe&@=K9p{^?_(`&kaMyQ1zFgqzJ-f|EpJkCKo>-q}HhrOtH4+}!!-&+3z2+k4Tk$!?zqF?o1D>O9OM)-}pEf z*4QFZ;krW|y=rn+fJ}T;7RCJMc&TU$33?_UQ_}(@7{EqpSm-0B3K%iy7WzT$*GQaO zSk>6>Cd!CE+D;yhk^qQT#y`?Tj(yyONFHw3h>sDRJq3N-UOdqI-eHgA>T#Pp->T3p zzb>DBZboriP&$#{iCNWzD5f)h&G;TcXFU>>`TT9BKtc3EWdG#^VR4Y8v-*a+IudbKTed93yKU4suvyL?+n*Z&L{c8B{uPpt~K z>i$sn!QY~}F(=H}x4c>qQsWU7nWouHQNULuQpBC*=QF?qIPlUpjfILj>4-FF5&Sa= z|ME@oB^`hHnRS-u$ikoYGi(Ae8_pePQcL;^|K9zWdf_NCYbs7()`*x&ffB18%LCMM zUTiO0t4DEZb+Xgikf)=PtJ3dxA49d7+}5F<25Z? zkAqXgX_$?rT<#ZE5k1`I8hM%@3u0>&9_EILLqN9PGJb`mwAT*yB*&*m0_WKs>!dX# zm^^bA{jr&jha;u}37G){mbL-(dg6%y6x!&7P`#!Co)i}QRLaaB$!j_ssmW#{el~DdqFEtQ=`O((Ko_TpB>zZHiY^ydSkMQ z!hL?uY?PelM>j^hyeStz+gvGwEvYrD8|*+ z9+=`?`H82E^S8&j#R7$nsFLl^3}5Ejz?1%v|q7ok}RbTLw6 z{BqKgkk|AyT(~0Ap=_*8$KePzOnW{m#^*Dp7IH4M>?QWl0#E!t3Ze<|5rlI#2X`C{Hd(h!FaSadD zF7e!One=*VjVnJiH4VEPeIFQrg2bIY-itjQg*81S&kI96l&jh;Jgf?=9Lmm})fQf9mv)KyD(s+cz7FGo4E8_>LZ}D5A zSL9S^^)-l`o8vc(66#Jo#ml{w+e56r!pbF-J?jc;I5HU~7@GBGlrW8_Q1jp_)eBzu zJ#dZ-sv$^`v<{J`lWqV_qSud*C(r`WmHYymx^1mG`be0 z@b+|HC29{@1jbID8m+JOA7vAV3?owADZl2Q*KzEf#Op-jE=y8*{o8ify9u`yanW4qvHljGV8X^v>+zy(}VQk`2NW9SnytW=7+~bXSEP~Ai47r za*D1MI`2ZJp!TO=wlhZdP_iuiVJzl0Qph_rSV?EM+>(PCoe0bD!S3{@T~`sP7>?KW`vH z*qy+STG(Eo`u&zM^^2tgydT8H!t&F)3BUUBL_mP50(eHxj1I?m&8ZApR&f&EV)Q~3RB4OSP)PqKb+ zH@*~r1lya_s8sQ!zO7XF&~&1w-~xlGGE4Qu_qFQX2ij>B6Rcq@6TLq->B0vk9G}>& zK8eRKPGYy|44n+dVCIh(S11&}SU-+~B&0iK()bPeauv5RPL#9RSaFu_!JBA!ky4c0%>45Px^EL@o zkqaS)GWZ&a!*}syIVGRW+l__IN%v+S<^&>kHQk*iIb+21BttYZ$W`;=_Cgf)C$pd^ zj=XbhA}sZZz{uxqr6-xz(?Mo!gLt7npIZm3tsU9O^^0)mv(+RVjw$@OkG; z>?{NCxu7s*?2L0I#m=c^n8RoU~77kU}c@m85w{~Du@k!+i4og#%VQ#*0elVJOP!oRZz}~@n z0Aulk#g{@4a|73fjU7Nru2`64BXh3N%*H!z6KKsN2Y&yQkIf(N*^#5y_lw2i)Q${3 zv1Bv~c9h0kY$qk}kbjIPm%hBwiSuj7C{+PD>VN{zM3#9w|8@fC>|v7rB;*6?u-uC- z@yVq*x^oSg&RS2~kj?gw3)q1kC{r5)U4DIV6bte|pBPadv<-GK*6=Hed`$`miAgV$ z>H|(q0*V@v%U@DNE(R!${9y)q?3}1RpwK4X7rq17WpPlr^P!N+C$+XpbFj!1$TC)KR-C1eJZW@ z6KRy7pc=^vYAV~?0!1{k$7N~UUd8VUc$j*PGg3cj)Z*p24xWtaPM9)dXzINSG3VYW z5IKV!U-;Ts0(9>ENLKR?8GrbtFctzYKVVv+Ach9|V-v-)NSjYP*=#~M+yQIL|=Sy0|H*Sgw_odlr3G1w>_IG>FrQ-7R5Og$cKpI+B1 zO?0SAeW?)q%9kq&70NUojy@i{eaj>3RRmfa6kL7Vi>-KdRM?z)BOP384mbft!Tthj z3K|3X{3(*?RYTkxT@D=JEB5!$KXXIsxAta3IYJ38vb&uF~&dg+nfD z#aF}B9|QIoIy>8$x9MXRRIFUp2ez0tM>%rk4{V@4&oo!Ii!2~vaoh(N1s*}E{aiv~ zHEVxdo)Dv$I)Myf@(B9PUcPMNmv=U07uk}6<+#{)$r{#$_Wg@Pj)5b@heSOs??jb0 zksxzHF$x0)*rEu==p_Wxz)-1&RZbGA+b8@7reEm~^S@X}l8?`T}vuR>`px?ki%!lvscT8l1gO?At zi&9kZGZmLD3o~MOMRthevTan<8K%K7A+2)$9s=oe?s=d0ahaV~R~dipETao|c&2}P zCZC9OZLmt0&Eo>P%c}2kHC+Npyq~d-JnCKs`7>G=qS4pcqAtnWil|ii{<)S`ei4yf z7Z%cu@UCzrr9XEgAJzWDOO1c=lH#5XoeVVsM?a1L87VtU+ScI@o1d|4A`{WDus7P!;=lSX8)8a-4?K!)$+C(;a1eH^Sna1e5Qs%bh zXLBUCiE^Z|rOd$D5vQIr+o_35isF3HUS7n0yRs_QkL!k*NptTpFT%O`TV8fX_y!fw>QmW!uAP^&&owA^9Tik|r8 z9O>RohgVPj9IL96vOP@g&nZ2YX$3N^o%=8{BbgH?H6V7Gsad16=zGlYyFuN1C(Bll+o5IHs*(a zVAiof-(8JPK#PFqQE}A9YZv>L#n?YjFz{;?cyVz!^+~<>0bw^Ib;1sXkgo&le+km? zZ-Ug}A_PCBy(mcjK}dR{73V>cCm38#@;{$WF(I~35f2b-W(h}bv{Aa;a?#;9EmDEe z9IyI`o7`L~p5=6pV-5@p=SUOhDVc#s0EUD}Q1}UaaUb9V?nm3QfttxPki4Ypig}%! z5UUvDzovX;27B>187@I+=2Ffr%486c8B|qKo9LmV6 zrSPfxHI}Br*r@>NVXR=sEG@37s<*$cAJ5K*T2;O2TMb;yz1)4Y{{r(Df6J}?+wus# zhp>;JjJp3R;@Ip@w9X<;3`GOw__kLC_T|c5VAJCM(u!!~M3O_Idt)k@5um^>hVH86 z@B;@4nUy!!C{)s}cvF{1P$hEPDRO>kRFrnKB8ibb9fHBgj$qf3ut3n6j-z&(GAA(W zIu`=)E&9`d561?u6Uej!$@5D7p8FP`O`D$deWCt$Ty(&SLkMFNEXoGr6q@(XeSW^S zMo3g?HTrC(_P^Lclj=3lEvha}Ej`YL9_&7o_&CB-2O1}{dRUoh{dga`%Fq44uG7iJ zSaQ;+9=NcNTO9l~ik}yI!NDzIR5g!%F^(n|8qwmzi+=kH#Sg-_nW)Ldg+~~nz@t(x z=Qv*$tW=f?@Z$|ERKb7-9&RBC+YX64Kt2~{nIFJ*fY=HysAb<}MB@_V3QTXBz=u;y z7Y(;V_HTQ4G^n)SbvNyw?RzTW&zbqcN&wIrFdXM(F^GRz`1{3Vi$M2zk zhNMdZ$hzBo`m`wo>XB-4+7i>S!w2tQ1LOiTq~!Z;afSy}fh zD!{0CC@&b9&a&QAq@nYH5{SxAgYqwiWGmQ8W)tT>Npia<(J4{>iDsJ0++xFk?Q^Km z>4j76WltyDe~d`Ug0=3`ww(0@$NVhq+PDrY#oOWY{&_8Ou`6(HIb96@pL6tJ{GI2* zQdm96F%GlGzCT4ogRp1`ri|^#i2$U&@@ZU9>euRCwZXuvj4<EQsoZ};3GzR`{H~EA6Mz(IbwVz zTC3CCH*4q#0OJAjbXFzg1b7bLGRe3|p{dpI$f4kTs7~2f3vYl_w4MS^Sbx z@wOoH5@Xiup}3iBA$<{)w_})>^7K&{FuskuD&g;a7taS1`FI1Aa5;Z9BI#WlB)_E% z;O5wpIY;BMQv8_#$HfZ{1USHvzNEw#3P*nIgJ%N_u%b&rCSWO~X@?pb19gJ;#?J4( zm$W!tr}6Dr`!bC&7HWx7lyp}78vrsEz4Tz|z_hj%UiP}d1@26=nXUWTQHJAQbk#rQ z>QeS~*?yU+f?-Z)+Qi2V`?VE7nPF7PbM&3Nn|-E;-V|eVqYiWRgUgv6N{pv(O71u7 zUO^xIbP09RD%4N3yl$;yz7UT#9nD59?rnyu?x4e9vV;gMr*fw$EafuKs1K&juZw?MZ7iR<#gpk9ATfYcp#~7yDfxL=$l98f(TZ;H(iN+=1_(KOqvX^@D3G7bh8NG%7yO#?Zq8Bv&QTae*G&ag zd=*HNXV?SuwqXT=#qeanPo3>!4MJ6M3!iI)T6P0MMt$ z!i%7cx2=-OvqwiPX9I?bEc8IpAN&%y`qI-_@`!PN`|;{Grk4kfBpCrM zPt)k!%R$^y0_npBXO>BhZNeK*p+VLHFo!{FbjLFq`xc4<{-NLNk|tUbn%`1ZaB-8UH2OUqAM zx3Mhy{O%;+tf<4BQ^UU3<4Dj>A@)e$rON)!)c3OXXk^lS5BIx_VXR&KqcD0IA`i(u zNQ%VT3Tm?LWt!WYSRb-9>;Fl4H!TeF=&IOW0^_Xp+O-S zF1E{4(K!Ic3Qw9{ktQ4qH+^{12YN-*t#%*pNPPi<0?I4WaW7MXCoHq{n& zv#JYdL9mX)R;b;@j`*RINp=m`hY~Z=)mgGeRj%@NCYr`HV68d()C}AVf^{!tL$tM< z#T6R--YlG?KVAC&UAoQLBNj=?EIv64#qGB>-oQIXyh+p zy}tGN91ke?6H1^iV--NN^d|e`BM|k|oNc$pP)b$5aa!bBbX{+RHasj{^Vw^zS|N;_ zS-U@Gx2Zf*WW~UOO}NlLCR73_;>zHZe*z-&&q8oXPq{I4tI5Z3xBbvr1Y{>D)>r{# za2Ytzl&JgMeUy#3pyrN#ZXCA{8;Y_D%;|(g8FY%G+;MS9HN0S5Fl&J?@>Zt9BJhfr z!~`JNawtm{;&g>@!hMr`-N&&nM$1AKxD%B;jn=P5e!1Zrm2>ZUY%PDLyxCq9d;%8v z?{>5||KF7vE+`ZG%tbJ%nJo=O0Rb0|!XNo52iBuIU0MgvAxf?A(A8_ga?n;XT zO;~KtRuf*(IF78C7lTfi)BxrrkgeH-$oLHqZWUe|E70}kH}yfFCf7j_n@x6dZ@w`* z$3V?od;a~On^F!WUBPfFCHTC@3auskZ=!h|_d@$1LF?xR$sOMb`=V z^g+@wZw+T(P<~+J_f{r*hf9N_|CBF#-u^`?0zw3_Gr=_sGW1o9t-nK}OOO>|2p$*h zhoe!?uEB%r=-DEmK5dL}CP^3z-F&ko8PYMvy%FP>Z(2(o@xy->*w@I$aGT(ene>;A zBd2W8A&9B^|IGsIpgcL4>#$+<(IAK@BjB{wczajnJb6^VOg8^`b7k8g7Od1}iLIz6 zWVs|>Wg`0LSnN>y0{hvImJ0UE0DdLzYNaLlewg6gqnx2$v#lwk&tG8 z5c1|A7j?KJR;f?Yhgmp=<*`=3ceo)m2muhwz5eM?N7#I@B|CAdHQk~M8o4H?ENn{e z^OwyVOfa?nr|Lld9z!37+~7N|f6=8+^sBpgOZC%sshh_*&e|4u9G6GEZHx1R4z=}~ zyM^OzpPc5Y8;iWO{h^ed_(Y`F0HwtU{V{i%;Z7PMr04Y4_E1QIz^@kSi!(p%s(-q9qjCZ({R<|1!+DXi8bp$B+Iakl%FUU2Zh8l zY<0KJ=C_hCSmZavQ;jwkac$yW`hBWRtYQ5y4I9!d%detAEf(4F=7NrA#wU}Omg2u{ zH<^ztI|`3*J`j*&m^85UT3ez-vxO%qE=U5~T^fSHXzL+$(F0OY()M|rR+80Ok!Y90!0dEC@3~3xWgC1zDkZ24PRiIOGLkNnwU7!kt-~ z#G0NY(IE_SZ@`24uEG;|O?7NuC{%kkwZj6LY;Q+20ZUkO=*o`bQyaZ0D_tJ)rqUy} zf(F53j&G%U_l9`LnN=%yyv5UaQ5tzV2f8Hc7onV7u&<01@r+~tX(n@zT><$W6EN~qoM6%rS0xN+g- zKYY+1+$Tk&lOx6j*rke-JE7tyMX8KAumkfVwiRFc`m8F#*3w8?G&o!)3=GB&;EV27 z=Gitfi05e zpm&2Tgt)f9GlomXIoFl99R1P&BY3m;RrzmgIbDsu#??YA`H?U!A!NCPzmcQnMv=aS zE%l250MFhQQvTVbiW(45`kF@OaV$5^#jGYBu(`#?!mC8pWOCJ)_10t(#mg~F8U};~ zCy%5k7DEc(XJLaWdqJfLD24mD*t{`EbxCi5fziOAIzy!V?-2C=vGKYZkfmVxL|GAjgKSP9rEN6)v+L6W0AFxZ*{$Snh>%GR z{3eR+ZNq&C2E}cnSblMs3Dyaw35w?tRi$?eo6cJiWi*v9u_sx_*3w7uMjTK9Zek$C1nxesexO*tqYLW}#lV}GUyUsiFi=Z(S zxoNTlXFmS3H0(>lK05TpI3EV_ndJ{i(fjlYa2PrRK>?UOh*C<49PCcvT-W`75iIBr z^U|73Q}vcA0*6@{3=<0I=Wr5&U}q;3$T-_)BZ)E44a*!(e9gXk)Ym63!6ShJpQaUl zH6ooD${@fL5Ca)hTC9Ao#`sad?kanZ-Lyh13S9w?HWTOeirS?g!sbhdJMcB{hKY`1 zp`OyI7crt+i{&R?R>DvgIxRJs)o&d{`W||Tui!{N$)wvjwx(gn87Ehr=8N<5v>75%QfgtR7O8=)!h779a;Y)MP=5PR1-oQ zPfCy)=wlnQf1*!iXWaf!W9_MjjV;ev@*7QEP4M`KNroCmARHf`AQgUGYbd%gl5r40 zP$5COka=~rkU(2@e^x>eBnA(DCuZ%j4uBd-a!(Yu2n?4cr8><2*q_Ja6UBq~;Ou8_jTArHW2U!d zffnLl{KF!q5t+ohN6n8R7q<2nTY^Ly?afN`n(2QUL-~h6iqzezr9oqC40|XXLPc84 zqGC`bF}N>}er4$`0sC5l;}iJ&kZ5_vX57kbkT@cn9yH0t3UpWdDB zm0tE8bY-Fl*ugGANd@+UTzTXenQyeg*&O)xr_T(Eq)dtRUz$xdV9)U_aLq5%{LZ zqDTFhF9^I=GjUOZJF_xm@dPK`L9Ee!{V8k7v`h2CeDBfm@7<@;2o?n7nm+!@U(XLk zC2KIGhtju$GL9ns61p&GRB@0qD_-ZAIqRgBMt79p~aM>VS`|r@j}aE zi|tg6r5!uHk=wWb0;8)xz-XRw;$-uB(?#XuOc9OZj)G^^O54nGSL7DbMpbtzy0q-N z_X$0D1D?B8k#Z zW6&9?$}*QGM5eVxfF3CFgM>}9XRH==?M;D{>}_N)wibU&AP<)r6gBx`^Y!|x{+2B= zUb7X9>(7L3ZelW`a-vfonGxdt&7_Q-XVm6o=}oww?7$W)ByS>=avwm1G{%6cogH+{38HA&g((A6Nauz?ROEH5nkhBtdMd3Q4mCs z1UrZvV9DLE#$k18k{Sg23o6XlVi3_yxT`*r%*ioavHV*ONT}6ta54#@0D)T=ug7m~ z**=o}Gp+b^z-CvZBUe3}kP}PF7;}9Fb)#VS7qFIIi=>eDFY!Us@$)T^Vi4Cz7NiT2 z73q_*N$4=|L!$kndxvSKWq!>LRixn*iU0EnlYhF;;m@act+ZoallljNh5Z}%U%AM_ zg_i53E6$_-WiA@WU+44w3VHbps zv8p3|Bg9xMTwLjKfW-UK@_XJH3VY=eGED#qTTRG~MUYJ)mOS*@)qiF*JY|6}TpiuE z*WOqI92*Nh*wX%^b=U#-JGc*D%FMP)hD{5wXz!}$*tP!Fdf5HxwP9r?*gQW0DA$vR zeM^jlQixwWe6;}%g&#HHGe@`&?=i^3Oqo||bh_HMGBVa8d*T9SpMQDPyiT6Mr@p-I zT~xVXr*6m5L;K|;9b6WQT0IMGHBb;3r|;Cj#m$D%PJQI;y*L&p@*m)*We9;n0v)9E z3iSVY{s4Sejhi{r$Zj3qzI^dI&=bqXw_tM%S)+IbESjq_?zJ3SpE94pFI*~)sP`8A z5qf-^J|oA#9G=Y1nnpU#3^nGp;&6fXRO?)yYx;~8RJR(|^wE@rwmURNpRIlO+vi(QosM)}PkY^I_32>!0agz^iC|D4MK2s2C2z#T+&o0W@Z5FBUrhT) zB6k=Tc(44EUYHTCVZLBsdwN>Q2&kVRo7|KLRU4JNeizBR%$#y_Ylw+M*2VDIG*5z? z7LIi@@`scfYh<7&U&~No^?6N9?JG(ln8=Ng@JarMOV!_CdV}^lZuYDNpDs_k&$ll; z{8(Xs(`a&`4}qmiU!xWxkeR_Jbs^V-W~?4YN{Xxn*2z9 zz@vR*l0NknliNdYW}!BKyf8qJnb~PiEK7*-nSwkjtl~&2^=Q3`xMF7?u2XD$CZ)}; z)pimJPDZcDS}aWekk+%A({4BRt8uas9TN+otv4`>9!|{Pgq?F_n_oMJ=Q`rQ8Ddql z`9{iDCTAqHn$iPb`@PR4JYi&XGv0u{op{d@13MZv%tjEYv|~z&jY%ZZOgO?m7#ycY z=~3b2XDEKoV(U&dbOzoJ$<9HO@2!KS(0knp!jzM`n1LGgZAg9oCG=k!NM#&^Jw+$& z8(GuOog9u0{LrR9ezJEv+rO(1_HwRyXM6SZ{mXs?LIjN_0fI?l09$A=Ai`CP}zV!7B{(2Am9n_+{1A>V#5oZp zUbN*$oF#H(qUaDZybNUQ!n7k*3g5_m;;g=2xPmdm8EOOZy5);fF1o9+XLrL zbP#6Xw(e7)W%vkZ>j+gL=iq~&XtWi+YX)!e0c#sG5N=8ue^=~A)1ck*S*(mITd|~9 z6ut_HbxOU0xcI~`HDxf>{$+beB;K-;vDzsYA{J@tFg%(GG!}Xlt5uH*h1!0jH!H&P^K@d z5jOArxioT7CsPK;?Ny~pWVfed+Wcy^?Xm?!j1gr;TTH}*88 zH24p-#}HC>zc8OPWUy^Hkbc%6UB!`iW8n)EqxtO&BYbM2456gR3h-*G2-jRkvrmEO zX^jSv%Pa|f@1K&Jm1+3+F^)LEM{xdY0Rf4*flg?>h2S~EUnd&;C);W`rcU&h?18PU z>5(8{ZF(=!^w@nkA#f9Gijx>4XJPr{TU3gYkZ}AiKO7V`GV9lwS+NC?nJ=8QW(4{u zMggSBrWk35?~uv-+|AgDa%)g1H;885hnnOM8j3Xdd6e@esO8M$X8CBC9R-H}B97Yx z?HlYD-^}~htzw(P&>JLAKNPyMnH*y0h5e0NH_Ctbs?YD>As<>egks*!KnL&bXXY1s zlq`#FGSvOvib*I{!mr`8!DTFHs3e4ahE&mGY*5n4Ip0HU?M-0gc!J9YZ$H;Ms(+6Z zMV=A+flh`UdgvRSTzEGcNT4Qy69bcy`o?b)n)TlPhZ488G*{Rnydpf#en)?j(_8OC z_FeklbePXSHp*=O-NtuP5)DvmdyiD^v8R6;9QT0gDpLwATRyZW_;L^YW`fhBWfv6}g-Eh192qvRDgX_ZI z*=h7IBu~FdQ7?g-$Mf32l*2nkLjy~v&3?2IRPW1)n{p?8pPxsJ+>dOS0`}aySrx`H zjRnsD=AUdiDF|7$gp2As$i!9krMu>aWg`h=pyhh^L^d={qossa1LPdeL3y0C5J>jH z5XD@wz%e)c6VFtt%zv8Q_b1>(iSW6DKX&*74UR0mXMrT?<=iUN&Wbi*s!~l8zU5A; zL0`y&%=4}vexHB$0jffg!UgqMlpSv+knH>;Y74<@^hh<9l;q$~BHJFd;XwXl+IptW ztfdiXDJ|45_X71*yTvLy-*a8J|67}tCrl&wv+(w>MhAdP?R{YrcUQGTu3uHJQ_fEFu@+6TiPlzKAxKF|AiSZWTj=OpKRuCqsi zD+>1$!7h4~ip_|fV$0u+VE!#mc@{y#9YNbX?6SiJRUC*u_!TnXmXc&z=9FP6<7JQ3 zf$!r_J#&OK6EMK`knzDhcQqIJa;5bGyTM^W@XpWS8*6c9zU>U_{pt=O*~_Tjk0&O{ zcxT#Sg}VRVC{lt4bF`l23ngV(0H1&kXKo}m31y&n-5z#OwM88v5@#XNU;4FP_QyBi z@NmWTs~ixgQ%4$Kz`9Th9l)3CiKV@HqsAy72vMuxhz_gg?TW`88$!Z8zb&@H-;07BthxOFH|RP+WQF{oZzVWL7)ojiv1pny_q@dXW>jaIGDSQlTTA8#S<~|&_k?GR z9xBz)!eYBUG4E}F6XEA4jPF{3dJ}E&$I?m7U&hi$mxYYA6XR+cL0&nde zcd+ILHqd7^io27=%Ik5j_1Rw{J$~9qJQ*Kc%fku9?^EnL%PMKXDZ1pNEl(s<_gfov zh1^^ls*LYgsQPYG!m9EbfPsOrV}V0Yeg-mpD(a^=7xOb}pXc`GT)}+1ZLk4Z-MI-o zTt>|rJ?v{$X6{c-78!ZC1=1;6%^aMXZ&+wHN5ZI3h5anbT*)Rk(B-!V%5gpG&$EXt z@P=I3Qrd9x*zA?1H?Vh`F_Y(Rj{3_}4)FehlPl&H z>?Uh8q^0C+sW0wwqxU@7%VVg>53bJMV68sXBV*~1T5gY1|-w_cXqPaO## z(lCV#id;jGeQDqrFy&;(XEeN;nGA5v+^Wq?{XHJ-&m4{<$sIm_W?;u<{)V@vwESsF z)EFJdvy#c`V$?c_& z=ppyJGd=GNS2?|Q^;n+nR&c^xSd7vfec2Ve#aD@B&f43w$!%pQ6R zwGs~%&uNT9elo@h`d;+3s>0!#*U(pD*JgimxUD`;U6Jl7v^Zf?+Ah*_XxE}{j;^bC z6`FPo0-Bwb{Evx0_PF54+TzOnC{^bAlD}jSf6`+W$Fo6?UN&bJs-)pFXMJ1DmF_`S zv19#ZdWMMo$oX^$&XHgVctF?U2X^m0U(qZrrdjt1O;A+e%X7A>TfaWne2*CycwlzK zws2YDfG_%Z+R}E~`S2WGs#2xLnMuzD#_*AIx&~Ki&m;ox8t|mCbOm6%0mlJ0IP{;B zNgfEeKPOpkkl24t`0qZj|2gqK1BT_FW0h#*-;)-xu7B^hkMw@`=h6Z0|ML$LQk=GV z--J;*XI8B~JUpC}vs6?dudG}KmW9d3r#JV{H59P4v5^ra7Ss|1Z%h^=0^7K>w5{D; zLuO1^C?U`Yz0d#L+x?H)%NrB@Gt_%9<62D>gB%2K6HR3Tu$Jv?Fl7VKj^k%A9+Mpp z4;Vym$|6Cql(bZ_%&-kGv#-o4$bdOaEM~)vh&r*s?iL15VF0@v0sZ*Gkc=MtF^e*{ zIyw~+18?pqqY`xF@BOYQxi>Z=LuN7qd?SFHhbQGbnx1YP(Hkn`|&LvIR5u3 zSP%0fPU|uOHbbcw*Vh{{;rz9PdM?Xo>okrF#e)1-JF5PJ7=UHRWz6@*2mHf#uPrzk zyhFp>7xLYvHx!z2*qS#H&2VvXQA0&I<#$z6g{&y88LDpz1{0U$UD8^$GM;@XA+@hp zIuYi=z28|U)H$+~KzkSDpBh_pb9)yEqCjkn7s>pYKmX@v8~pn&ln^Rq$Ljhb!T7<* zMP+rP=;T*jQM}m20ig$%B6+;sV^evs$*<(XU@537ANXeo0e31c8_cOurua!ES>tSx z?HB54=8B@!S#q)@>uI#-{0BXuphyTXwe0^4VauOUarWBami=b+n$!t3H8n*=tiw7( z4bS`y!*ojf1d~z@uqqY{;M(}W;4TnBftWOjiB)QAYYP+2?Uq00ryuVIpViVWUUC%# zNpVe#HAj&R&oma6_%N1Ech=R_8IB~Rju{Q*eJ3O$%8l@6v-oBG`>T(c_;?#E|M^M- zf{L`SRA*7V=~o^Zsh~)vx5m8pG0)H05OAAYqb{ zltczY10u)KzIDY?Oo{D;lhzq|t1^gFpFJj5dpAMLbG=w;A(l+8q#p&V^(n*cELNR> zualqj_B^t(rt9h4tIBvn7xcJj{C06%*;x{xyu1uXi+QFIba{1!=l(m}a@92gouR~h z0r%~3;gcfjk@{LSG^tQVrOrUV!=kclZm*|<8Jkik%=i?`?Y@I zmC0(Y5ypgdr50w@^QmkA*G-$H4QRr{?Xp$=fl6|6l(qb=`sJmz#+kQK#6M%Ouf(xX z3%;2)a*}wjq#Yxks*}ICxOh4fA4w{aR>^X&4^1y3JX{5gHfb3(CnN+$f=#tt^JOo! zl1{hn_hI4N?Pefe=gs`G19x9Fqs4N=_RYfjWP$N$6D_T!oQX-0EzZCV7ZDB3%lez= z+=KT!6W$dUr@?eF&-ULxBM7Qo{%Qf8d!rAE;3i)ovAvZjsm-)XBtGQy%)UtX3VDPdy&5y$-U)YHIE3NCqM^*{#;t z5_LH(E_aF}MncQVPNs4PK#Mgh1^W|v_%qW~R5KIYS9e~oS9*-q)|-Sbs)e#ThP%PR zfo5)eR-G?rv&Cw-e4g5f>>pR|o0`WO=CKbh z?Htp^pN_FjgeVM;jOaOUicoyIB>EJWkf5s3ISbp&<$f=&(L)r;ttu~{HC`du>Ui36 zHQs8thvT$D!4NL}D|EU{!)Xa#WU&F%`T`mZrOd*xep}5x+To(oQ+Y6xTAbqiv4cf3 zw{b9)%Shvf!&vTsXzC_oOEo9-<=57hl32tbZFn4h^21K77Zok-ypig9a&;=t(^;aP zr%3ASSu5U-Lq3AU;={3CW*mo6?PAAqjom)&Q>|GU6U!MQc+op>Xlu*q%qpU>r2P<^ zr1~L>`m-TsZSjG=yY)BgJ`^QV=_LH8m7yVurBR_kxDlv&;7dzycV1qP>u;*OH?uR0 zO1FFPc)XX3#(K{W6OjYGy@R|jYwb@b#~(j^y7^5HTGhm`7EdLnppaO8l&qNQ@Mx{8 zV>Si*jKz9V-nce6G&H5EzS_7x?sYS_@Vfr?WWL-0dVAh~i{(($VR@O?vYNt8XEHu3 zQpi1PvuhBh(eq#tQ#m8~E;+unxq0#P(}Wb)=Iyev#5my$jb>fcSes*#xx0H?om?GD zUS8gJW8;xtxAXS5i-FAN*Sp5CG?!ZY#^Kg_b=gx4kB42gFLz;BY`4IhELIy7LfDUw zeTq&n)b@PXz2yKt?{N-|_q=c`zq0DIzFa7Gj;8mVh+IULQMA(MRQCBDG+Yw5OU_Ds z4kFTwK*!;wj%xfzqh@LMi@wCWbuYa{TAe&o0*Z3vz{T2gO1ett+r>f>!T1#>Dyor- zbZX7IdtZ3o$9=xHi%}*y36J}m1%H)!IvQ-#o)xEc9yz|3#!S!0hgdmYC1W)L3T?%# z?|VFVD=cQSA52@s-w7>|y}jN^LHS;cbDc*!C8eg8)|-7NQ8eAXQ|#)KMQatB8}bYd z4BQ7=KLZSW;E&!H7zvL225}691_32!we7NEDkZuf@|H*gWOGBfT^ ziQ&CI?CZT=WiHgu{WGSHmm4EbK1fJX%_#chxdYfk>QqujCYD1namRQMa11Y1j=k;{Twz%)S@#9H(mp9}Ah%owI;*9Bl|4^OBhfVVHgM7$T z@Xlyg##F>!Wos2er$9mJK{$^-zf9(tZD$udv^}OvH$@l72gQSp!oxSJ&`+dUjCTZFGU31~U|vMoCK@&RFIf*0@}un!dH& ztu04KmvcIvu$xXJfAr7K8UEyPGl!;_z61Jv-15rJS4T^*RKA{Ek{hNK`sq z+nqtgz)y>+4$GiMvloWx%39ACsAA=qhtn;fQXk6%;R>eTFLY!n!QsDl3%C`JWWWk zf~CAjAmE#7qNd4*%Q{i$g{R#F>IWGWTm?owOq3Yj!E&CBC}g43gZc8*l?-+p!B#4_ zQ(LM}fJZw0y-5^d9_#V=aD_HFuZi3Ka=YFMc-rY3%GURnaWyrJhamN;4X&rJAxFfk zQOgxNt+NgM%MA)k!cVuSr~CL8>m9!H73}s!msN>LNpQAQJh+#)UyzW@wc_iFiF2zf z$1bvgxI6?B7Y}N?nw}0gv4X(NctXn=988$rNc=kcol!(o6b_vppO#j3>B}@1<;UEU zCU{)#-VSTU>5K7nE{^8C`Eshx5ztbdYJ;roDTIWALcF1{q~FP%n#Lr&~{oxg+nBm(n?w;9`QOP(b65!1^s)26lA)w^f389+(ktVv7X1=ovbL>Ul zXwl|&b40ZxD(^^jhe7w}@b+^f? zftv*m+Rd6OtOiTuTAzAfZ|f4mc956!DFnHagANvJ2MT0T>rD?0RlH{$PlD3f&Ra)E zmGDZM?a&4zS<|DV9{`+mx>PUL46TDq2x9Zt9ab5hhq~{WjhIx3*^_FkYKsiHud^i+36X;s?=&0&n$QX4Fxft3p2O*>=;-Q zd%mY6$3wHeD3dzx_4e{SQ%lvk)ZE-`tCinV@JJgnTN)RqlrB_rZvT6udnv)*{$@^% zMyEyFM>+ZT)s>yQcn;DNjFOU4eK6*+G{{ZZ`_o|&0!J`F@2*D41wA#jvL+D_U!CrMkL2yw%4M$E?TyYwuuYAZqoAXcHwTZFUA$bMF7KZa?X2_7INX90N8lVi$S8um)qrOBC!bfhut(Fbn#;y(!fgy+yhXVB-j18ys=QO zQUGX!O3R=_RIO zcyvF*O}9YL^8uxz(dRJ-CVl2Xr-+1xMyF$GDe^?zgoFe?%a(c{8qYnCW~Kq8WylpA zkcXnkaHP9gq(Ec{E#%0W7qRNRJqpizKbhRf;BuLl&gJC!_7bU7C|i6P6(_8*Ih{Y! zV6pf(OjURr2Y|QwQ$+BJoJzqRVhFe_)#m*9uy1qs)1k_qraTFHHQ$RlJ$jpJa2yC% z-}Aj(*E%{qUQ_A095sifb5$HNQ@YVTYx2Lqst~UtLwiE}e zGJJHlfJ`=x-FgE|V;Pu7-}&zIIfujmyA{LpJ*%f6*{VI-lITBd|LuOD))xvk?g9AiX@M_m?={eZ_P19z1%>k5oF(qN zm34D1O&(?hjAB2e_Gd z3&FaFiiRAm*H&<+II8ucAyLQcV=CXk_nIkRYMF4SEE|P>jRsfz{oiCt-VyMlA71WTI1c_U8$!{e>7ce zz-fik5uavaS+#9;zInXO$nk{-1>FPSU;#iM-+GIHPCZD_GLj4q4GVL>8e7PJ&jMPy zzQ1=Km_Y~sXYyxvsEF6<_XH#}SxtEohefSL17``c=>Uw8x(jOvlO7z8%&Ukc)5}gb ztLuM(1ns?pU-4RXSQt%lC_G`QH$$O#kr;0ahr{7CF%)=foP9$+rmbY^9u>|O2>sXadpeK9 z{2qW(0kAPmMPB~vdW9E2aDjoa-`o3cx_lEj4iAfuB<4v$pJRuVD~(N|_qjUV0qI9x zK585LL3vPmpyzOZ?8yk2P?0>hMP(1k#u+;GW@G)~$9W&~yzKxeefQ&C@b*CDXL$J7 zR!!qR88)3#3j;>AGWD5qt^E!UIt3XSC;y_VDtexm@5l4y#1;-|bpAYSY>mT*^gst@ z=i~^6D6Sq)jE=g#K6pu-A2it*0LYFid;e;Jk4#@UzAq#sB+up>UahLf%cT+VZTVAu z-X6NeiQL8Aos)aurPRiXy#CMbYfQGmN4Gw)hi~|wzPJ@y{k0tw7pv11Ig`Z3=BW^8#vK?vK6ki8CIy(9& z2Y;1rAQF!)mF9H0k;{0UE{hILjKJ&z2L}f*K~3gL8~_ObV)E-h&kSS&hYknNf>Jf# zB^j=ZwP1^n?W6sb(`Yi4^C+$N(&fwXR|~*$sE(4)1^66H(}6a#e-VM-FLE&0U_j_| zVpqf|5>W7`Y-GOp=nyhYRXGfmwfJ9(XwL_@EGP{T)l)(o*`@f33>{;4hq8R%9*kq& zb%XoOjpBGn=VA(+a<;pobzMQxY!=R>5ihVYWsgr&xm2IK*NzT1=P8*YcQQ03r1%`f z@Q$PA0dZ8e*a{_v{(C=s|FWA_fl~#iQYtH^vUJtWX7_y2V;XB9C1jV&KZy8(m{=+f7`Goax;}h&i#JpAgjRzJOE$K};n4%r^oLThfA%aD`;PoVa zXrn}X)0A}%|J*144<-%c=f`^6EF@&T%BVS7ZW^-4m>KFSolqZCK6qaNl0Rl#lO_EQ z38I-i)$z7aS%zr+sc?Hn$uJEJf9-CGAo77>lpr&uCJ$p%O+jx)nV!-QK}cpT+7%qL zZL4@edlfVX4>l=*!?4cW4NpS5V~LNFa+a96gU zkoo8KO2PQ!vZ58V%aRFP#DCs|9U5BR*LDFkrAAi#)3zrhHy&faP~nE_y1fqEkvb)6 z?nn36D$UgUHp6`}w|yvR7!&jgO5x2X{Q&;R!gr=jRub8cv|`@I@eZxeOZJZaE|~>zphjO@lZlt+iEx6k%jhavTMYss$2$yXq1@=1>6CZ$w2!yi6_uFSo2p ztjX0`o@o^aV)Da3X1!0+w(Baih}qZkc%_PIv_Xu*@3QD%=hCZ75+ao*MZ$pA9#`=% za{6?0vOCs}0L~6yQ6ji?m#AKGlrs+hw{z}YOP(L`emArAM5(x&wW#@hYT@1i9i;b( z>YNaFGc1vJIgIBb?8X(H78lku(Cd|M`-4J)L(f@l_49k(~8wlKUxMyS~1 zJ<3*6p5{7R93n52(B40klWfaZRN3uYma5#GuWMyD|C!L1ivBBrT_)d)D!pU*eWC1$ zE7K-)zMtK8e1)55nx35O@uTpnPP2S*kz-Cx5m2y>dOUB(j(DFq#xg8}%2q-&rX~OK>!-U|1-ZyrGe+tEjuXk6_QF0RbfqO)O^4`Uo+&^$x1aVC^MnR!UaZ($uur zmI4G_{DAHJ=>Uxg$bX1DYQgW9kRl)IMf$6iYc|>+O489)0{>4Tmo}ANKdht^2ALiiuIL0xS z$bOfTaRvsasbmocHyu~FVei+0mK`51*GoG6sFTyvJ?2zq;*n6P?`b(XUAw$r=kS0n zWoP~op1%(f?%on7C9$2mJ+zMKbq))Ck)~GvZ5N5ViXE6R%YM~*?zz}V=Xw8I3Sd#X zFC@3;eB^kw05lo3*;{M3(P}(%f4+c5!3>CiQE+kTThOD6>XL$qt^>DhyGX(1X(@Sh zdpd=eOB0_d$j#AQcUq@@pLNLWfl@MoFyZGX1Ypqe8j;&{&c4w!j-KTwcR1g8e!Yeg zU#Oc@R!|J5n;rmGEDx6IV<9#wfGL^c|1^x+PT@wg1Ix}q-IkRlKMiXNC2qiv2{p|f zg-*!LEj<@oXH_VT!S;O+A0$Kz9(b)bC~aCK9;&v~2(W|mg~~>z{i(9t(4ORq)$rhv##*5*BWP*nqNE_KyR}8I2|()=*GWQhIKO-#MLy#kXUs$Q{pvG&|fKLQyxD z;G{e~f0W(cb#_X8iIquh7|#UiCf**4{$q~!ZdihCupId^Op~0wrI)bm&DOfQ9V-C= z0fV69`Dl1<`sIZMwF0NprCO7z%bc8?wRX4hBnBN#Oh8qQs`wmCDJdxlwA^|(J{Eg{ z$wc03i0*riP@p3UtLAo|N@>DUIrAzN<*2UiJ{O>KNU4fDk`^al zd%uUu;Al^M_L+8EttF$y@6vl!JH0}q(QGi3+U@3Ti2GhA4LH9_`?D2=$L^i8-P%Au15E+8n5g4e>{q4d)sD|tv)kcuvALNI zY%c=zlCengW%|w4RjgbM_po8GH)&xmWuAo&Zw(PKl49st^Zwn^==5|=v)w)(r#&+} z`@xcVVP9`uA_8D81~M`+Nf~MB*7cV&D7;Lj{f8)?d@q4O$`6=uXG_AEv3|gg&aF|o<}NT*Ql`vDZ2KlR;S3b)mF#zwZ89+rUUo@ zpbuqs;(NUxnJZ=c#mO83hsW#s_EMW4`~(Q~^`K=`P ze63V1Q#Z&YI&JUpF#lB<623}x%5TbP`K!wCcpgWoAWTj|B3?EBSpb;gHD9~smcFr! z*TsG~Nq6Gy*ona<5`&YH;-Wz8zrV=csU=3r^kBV%_i7sH*jcK_+C{NyyTE+N1W2n@ z{fQ7~{m$HZlR?3v#q0Bx%Vlz$dU;b5G0Co9FA0sNFnJnXJ2Iifm}-Ug-Q|eYaAt?` zgk?-D^V%bRG+`@ zdi<_A9_|-lF3I@)m{rR09gu6g-Oogms;{mTR{T8RFw9!r*7od=_Da;sub4=DofuCAb{5is zn58;xI{CBlV+*zB{d{GoAZFv;D%&xT{9{57o5uFI=v&AiqvJuD#opcZM1(<(_1c4IW{cydbx=oaEeP*8=N5`{F%QkXt_|ntgfnBKpRyb zphv^eZZUJ_ep=Wx`_1j}iaS#6Yd)Bso?f|@^TQ>I(~6DTLWK^=JvzH}*FU;iAFlgv zctE24eakyzz+^suy4vcLm_)?JrdIQ1z@fn$4F?bJ4Il@STfbNAysWZ_Ejm4(XbnG!?L_kG|4ec`T>=yZRjsoAWJdvkAEdEU>+5o)U%tQ% z#pH_V(Wd{daW^w_)zE167y{V7!|}XEO1dpTt%~hxPS!K=+t1wY`bYc<3j?Wh#}Z}T z4yitUD4M`9v}Of*oPruiH3|Xwi#YomAgA*7yJtehaKhND81>uRZLZONrx20@vFUEs~ok1Q{62eX92dm&N zR}-DC2a|{@&5M$8yjY9v5^@t!XRsfsm3I@`%ddCEAsCHDKa?}ii3-BH4Ew^bkvK@W zx&m?p*ZZz;2A_9DQibw8L*M2GIsNC&FNS3*EvoYCDfngz_tk3a@a zBg^ZJ_g3ihiBLyAi`I)Y# zNid?PuNF=%t<|UB2z|i-k%#>L{hK+Js_yW}7^fAGwn!$ESwUvb&U3zRB-p_rX0@(2 zDL_``6wo#_TkNY17`G@@Dn7J+>%%l%lCY~j`$zgH%*z`-2lj2iqg*zfi@=p(OdY!= z`f*|-9nNG<{FV$SrRw<=*rHywwC`2Vj4?eWYT@SM0tUAHxlN)}#gVrD;g-aPz+NF} zCzsso?8m#Op~&ypZx0i0wp8mB6r`F2z|as@RyGIepUShG&R>jBy*~ov? zkAf3NYz|vuCMKx@v9Kohvz1CiS73h#0FYs_TYn8dj=p^WWU7kx+oR*k%;-e58}|!6 zFCMFrgmNH@xDJGR9vYhRsw(-pn{g}$?DN~x>gf{qqvC-~m%WKgBy8+F*n_Cf%e}GX ze4G2uw{*_I{QhK?m{kD{+kpu62ljH^cHP&52p9Q4xYMmIIPtKUlr`b*=D%7%N&zf7 zVmjBr&Mu1m>5|5D-OdiuCAg9`jt+9p%`qDw=xIOfkS{;5$AQ>Y1|m*tYiplw+rM{t z^ODJ_-lkJ(tNTI2SQ-&cUoNn#L zR7f6`q*ti3dI2h&FZ3O-Y0t=Jk68WA%fZxkjRDcFxS5*0y)sTIkfD<@Gi!MsyiTB5 z_Hb{LU;}d!UB|SB!x0SgN1?2jXYmp598OfanJrct%@TOgb=d`-GFAgCgLc%!}QXvz&2X!G~)DzBGgmgL2JsR06^akEpet1)=SH$d5(Ia~93vp9T*!RI*( zVDqvYt1xUA4Il-b<{~vcSPA;toS3L|>g9!32=}h}W_}$g`Zz%(5{<-Ca~bt#rPsgQ zk@$p0+j3Gfvb}xBb2Gb+>v@lue0z821&GlBuvjfXDatN_kcp7ycPBAikHa+$pU$i1C!FD23dCNR*~chJc$h?Wa&0xioP9yD|o?R+v{uxz_sq6&n^yPT1W zFGP%<6mS#2{arFq7HwZEm%@BIfQL3To^$Ow20#njdps-_v!)Y#&)?nqmpPX%gJb2~ zF2g~HJ;V!>yxiqlVrC0-O5wP7+Py%5l!OPnqQMR;lqx$-55$t=#UsK1;s<= zn>$c>(N^zptop@n5CV(M@?|s7|FZpQ_1uWPLO2B$5T&D10Qf+maZ1yuJt6kN8tF{W zzpcI9cr@vCPHo+6!7kndeUWwO85qy6Q(}4mzWl^UBO<}YAO>J?#@f6*W@hI5idM@~ zgZgq!5g;t=l{fNER{Q|1XG3gce3pQfejF7VKVz&KeQ|0@-=Q zH)f_LI`wnyw<4EVc8asj&xWekJjQyY4Xl?66y)R|U|>oZ^krg01B!(H-ytybsZ;Th+s6}>zHJm%$_>UQq50v%Ox z%-$fLj_Ucd*r%JEP(fn793P*Ysw#v5Tm6P9Ua2pB9+yLEZ|83>#Z67Ux+x{V#+$a6 zC1sHOu`?nlG2v>mvK5h$a`7dyJ z6f{v+fZXDl*&5ziuhrD;Jasy{z#3$5)38G4B{M-qzi@9No;5H^r5S;ZkY_KBX;e2n znf13oPRYgy5)f8bqTQgdQ}VQre_*Rwy0t=TE%|Gw85C2qmMqdQk!Nix1c5Qr0JWC= z`_f(A5~4pIgW*{Hp0M)H36Fi~kfwevEOCq;?AuIPj@Qq7G7YhdvrQ)b)nMF!8oZ;i ziJm1s#ohRlmt@LL?esu?xjB~6FIz;*wxumarXNceEmYB1BBTYjbN`m%1qmr{M65g@ z#8cWzDvMULln=@)+MM}&a8p*gqi&W8x+~k+RpVCt?1F82_qP)71EBw1ONxO9>ew{1 zv|OKT+WRe|zoE(E8t7O%RS~oiw%wKy8RWH<_RV7e-U>df3*Vv;JHG!xZ&}#sC=j9ccQ~I_QT~`+i^XF$-j<8tP z_UCI3&-YVH*S*08Ee^+JM~47wwpyxFVF{@>XB$gz<^OltL;Hn1?8dL^owBmBoSc|! zA!y8SV@BlKMF68a>gk;W_zs|#lx(r->FF66+5f)AS`+UEyDPKl-I<5JzJ9-1uFz*F z-%)B>+Tie2qM4~Fg<;cDH7j;&{A#Jh2rkE7SLdVx>16AjK?WCs*db<%Us(dak0XqL z$O#Vz7lXb#nVk#NRtW`sK3Z-}9Bovm1^~LGIJ>f{>RN%!PH*tGpr8++{{5rx0IClu zDK0G~B~adC@NElG;}VcMFqw>mBXM<5{=D7fM>M<~!p)xnuv!4$wqG>#4TJ-h{&Vd_ zwK87SjL@dDf-V8|gG9#KbF8mV1Sq*DlQRm#<5N6)z2E+cL*`w2}vzW+e;`N}7-XY}S*&dEFhZX=7VEySi#p%l4txB*hvZv-3>$e8s!ar=NZN67vnHUVXdY793)Mf<0QVHz!Nx z@OX^F^Sn2FxKv@J!59c<(*u%c(Ce$yuRo z_WGPzAdR7S_aW%{*@r~xmCc|(emEb{!e)YksxX)e664}rU0hU~148@06&Dr#zT^}u zAq>R`r{!h&cr;>GKa7_HXv35xz(N$@V73AZf~V6G=Us8gTCE=lD33}?3!d+{34_sh zMBcr7cS6=F-*9D#jH-&8ymfjCX{BZt+_*V-sF&P9VDp1M+RB+qet=P5xukx-ls>!v>iZlg5MFr`I1f+`~y{8m#iTq{%o_Z90%g(%}mMyXzBDr z3JMF;HGOvrp=iBvLp~I=FoONC*>x=}#Ln#Py#daT=D{Ce5ZD*w<-NB)|Mf5p)M-)D zaIj>%Imr9R;gmyen3xQvh$=|C4uPO(?DWM5!PG7yQA@j9hr#A!?%rzt&7#6W)>yD= z9lUOrqVGdSEl~BPP-ybt!$#_!Ktrr!hrIF)IaIQ( zui)f;zg-5FKwDdT`vxdU-t2Cw z4m6gfr#;VQoJ&{*g8AvwRxObylVwB*-8e~0i`t5cO9;dUh}{)e@`K5b=Ag{RHvtmE zHXKgQyxwo9!U_{h4+3LMTyAD!su2%`nx|)FD-|l=6CeKO${HjmNW_qL?)vzAZjUt! z-SPYcWTdMU+ncR#!$4zw%8z7WNp&b!_WefXs&r+pw0t(>!|Xy?#&TNF`hq{&&(9Bq zN-5w2n!w)P9xN~75Z)8{W0fF-j=sLh#Z?GQ-e79#CEMi@YFJ;`?CI%gm!T^2K53tM z9<*7F+bBp)ecr`!f*Mm)NJx42_4T2u0s&x07#JBjq+KfF<5#kkwt<=-e&zkX!s>x7 zi977JtoLjT=xV!GGSbt>@{kH97B7FtT;j7oj>Z8mrh&Jr7E0C7Rv{6@G0zQ4`RGN> zP!5p+K8pi;Un5tNqaac=H#ZxU_T9C!!_4#OHYW*ARj(J=5ty089E1ghg_C`dhF-(2 zGFv2)T$zeciLZx;j=jBKt(*CDSu5}AwSLR6>ZT^ka*NU4o*obr&z<+s*wWF_k#!p> zo}ZUq^`6$~fjdV`Jc^F~xwh6go9;;SAkVpkX5a+ z2CtVQ;wKw7`XXP_9G9KW%gxPoF3&0?&uh3h% z(Ms3kN6S>zW3ixB>+qylGDs1(w9CmiA3!K5)ZWZ69O_g<{PTTv_4)Q+e0r7QD?nFF zO@)AQXD$5U!_O-sCFI+Z0^2iVoZF~;X_t*bie`p1`jy6=JF2#}gx1y;J3Bk)K9>Za zsdn~q$5Ht!V#|0eLfH1t@85L{SUGI3t34DP{uqzN_8fpPv&qX2I!(~wdVc$rA9Q2C z7`Z7aO{irD1Bo8^l#kI%2GGK#OL))Dk00;6%95~oU1MKAF`;T=oFOJGoSMTHMjzeg zWEmeq0_fRb9UxmYOuoa3d*=-vJc-GNaR<+U5lg!tV_eIRAGGi#=oinxT7?i`%B8EX zpPA%y??Za*5EhaLcpl+xL^QN7!ibsF!?o|6PEu1*onZTHIo2J=SwA&(rldg)WNmHM zgVoOdR#v)mL{2**=oXz6zRX7?3P@I0w3k8Kc2y{vMO-CleE`_XaY&jlQ^j3R_&Hq# zxOa0Jw(e7_eEC&RMNQ2wkRu!LJ%NwyrKw41+vBUN*HrfEbOz(B4#7?Co@TuARl0}!Cnt(GDY+vK*vi~t!3uHF(?~o!$MHw`6EgZ(@YJ9%k5GsT3RlJlq&ae z3S2@aFCU+*n3%G(pCxozy0b??KzLgrK`q}r2cfL&IY%7b{>goUjxJ3(mTRL)JI&ByF0HlRhs6K)GN*x#@@p~ zUQc2=l-UmsxsO~=@W+#1|4(6rg$)%4BwiB}x!<*!RX{OKjs1rRsMc<<0uvcXnn9i= zk5G8&Red~&G8PvW>Ye+S!;kDklJ3l08U{^7b*=lj#SrrF8u;rF=rpvujT?g+3(hlR z+6F4~t8tLZEI^8(r{{%6|Cs-js;>4>;Z@E1_s?zKVWS_@f#C(jqrr)t1w;aLHGeM0 z*3V@RcLyI%8D8m?@EvxtX>*nh31wiEWa2u!^54s6a2?=*xi6CYz@uE@}5NF3Nk2n2X9u0==)39t{@}ke6R9d6hlOQV7 zaRz?hWZU^TWP6g9anWq}mfo%27!)$rpO)d9xXR(6-1fQ6?V(ZjBqygxzrfFbZ-+bN zo)GQr*7jwb#FUV$y_;JoU@$o&gWI=Vq%($V-HY0I4-kf_=!FZ(+EwJ5Q{IE;txHX7 zYgL9~V5Z30-Zs=M$=q_-b)o|Is25?wGHkbTYIIGtPWXTvlA{ zGe;Z<-QCLcc7+9ul{FSg`TTjEQ^6YY64aT#u<7iy?(O_Rsuag1C-;^ZU}mZk5_nvB zMMT!8J2i0~-Qq5zTc4j?wP1Q0kS(wDZT{0mfb^f5|H9bG^YXe(wpMNgT_E4j$B(e^ zz|&mg!fMr|VAF1}nHV#4_lC=pl$21Sft@X&x>vz~B(Z-~IriQN1+jU0Ru<>kv$-w; z44iUa#v6A{MEc~H`|_?we}@Jk2&mQ3+hlgB0(oyHZi zt~;X#^p2I)1wgC{fme{cQN_i5LsxZH*XUs`1U->1iwE@x+Sr3=5Eu~9(ff00xXFF| zPo>~VtxSyt;5gDGE}o!4riyVUCf))NoJ@N5>>2d=Q!0?zlM4$OfJ;`!c9nwt68V~c zK#7#z@C=Bo`n51*;W zmx-FyJc?GhRE}_rE-xQXHqx3D5{kt;Ri}Tjk18ey=-fa;cee~qlLl!%w=SizZF%*` zl4?AJT{DrAu>G+vKR3qXj8LT%R8_qn9xkzL{JdSy4CR|A07IUPc)u&tzH@T z>=g2MzDR0=P1+9B(E0NoivvGMYhi3xY$v{dEkdOyB_|6Gzmfy#bOHOSQR4m@94$cJ zdLJ7Q0!13ZBM$XWXjg)iKHjRQo$_|NObjkI9+i$0L`#6H7?SM~)n$Myvgy5AZW#*rM@uET;ne z^Q}W-uukIv$5TCh{TcfePi&{9MN0{=$p(G9Io2t-Lmh3G#3;iF4E4DO~0(i zz?@YgrfNO;wcm2z9Xk4lAwj;M=c4QZ`2gZd=}~CmKRS)Hv!3blg#eNm6%+H^j$jD7 z#J4zu|IFW)ahg~+D1U$F@7!FTurNzs3ScNHDR-5W*f)7N598c1GQ#%y8^ph^V-2IB zKcQwxx!l~}e^3hn%j+bGm^#qE=8VfR(UpGL`XHl1LrXgrIQIey^5b-LBVaXaYRY+D z68uw)Q^8M%MYXRFvYz)FTB&oS1xx`VjGw%`9LC@@iJSb1ZwqVeZmWcT{r)vS&i{jb zw6yNb%?@k8_a$0wZEZcRuH$dAQd3h)6vNd0OTRENG4b}U&4zHFKcCA$85ONiVbwC* z&~P7e8WjyqVL`!&=erfAGw~uOFYis@L$M`rl)%QfFRq`9zsAk&$$Cu>Kx}uf`GhR9I?BzQ)#XQ zm=K_10kEwR#GBgQaVK51^g?T+C8qNl6r!p_xw+l9j}GmC&#JG#zeqbLJLleN zGP8#R@Z7LKG*`xy#sa2x;V_8c^?B1_`oA7h-OQ9l4c?DuV6T~;nW3hp7Ca2*v}Gq{ zn_G}sW+Lx#ZSa_IE$d2Sz+(Q3k7DDsfs_4G<#=X^9>NQ2Eb5?ihVDQdMI^Ic$5CZv z<(Zjtz6}XV#A6IE6sZa=`U4L~^d)_ZH$bz&lTv`j$vbr<|3Q6&bJT%lV%w0@pTSFDiKZ#)OB51Iqx@ z%`Q0$Alfzy3VKe38vom~;J{DB~XZ?5&S|O*vj-`cBz~xwi zcp;`;a!w+-{)!~@^^elu?E@BB$)uT9l^5q3#Sd$(x6l=^HkkU&b#*_1q3!}j*Gi~= zQ=lbo6g!X+>RDgwiYlg4R+&a=^VxQ{Lf^*h5jZ-wW3YG919NsEh_csw4m?_hcH z(OupN^3x2+o$-+BkdtM@?L;gMs}p|1x)0d@_8cz{XTwqh@`6d15MYm>;_y)4T$?o1 zPa`*da#{Z+b7GiyD615Y7iS0N}WN}jK9drh_oQ~Ju~wqvpr zZ=keCqbtdAQ_2Q_agUDlT>j<`V)?C1STD-vdZRK%MidW2RLbh= zs-mLe`L`6Dy{mGGok>SV5UhMTd-v}*FD`PpyRYE!st}%Ve{*I%BaguH2kT0Wrs}Fi z2#54^t22hz7`VADmxRs`bNpLQgR@VKUUpF;@*c(Xc0yvJO=YF&3o46K^;x^}X4tOrlOJ4FWzjPtWOC;z0|N!E4|;n9Q+C0U(shESMdsj> zRV}MzTYhX_JLRGJt|W}%5g7X5l)7E>fJ|LZm9|-a!)TxNc9mcKy>3MP6`*7v` k{fQatM)-l|01!|fL8Q~!$4epd4?Y!rT}!R(+MWCV0e_^ z4D5&Z|9$)DJK1|5Y)yx;obUyhj-&I z!FBLXA|0U|9UUrgK&7veg2ERMfou4LRDCqsS>P@C2%$B| zIaZ%QNItLn^4G6l5M3T#adGjw&T{!{;PaU#DTne}DHj))SFc{FtGf&Yz7|#Nc-7h6 zB>VN(z`(%paJ)76nI|fcfqZQO>av=e8tJhr@52-<7OS=ZU-~ND@hYL4$&}6^uVC{r zH6Gqu)q9(s$6M=bf8MXJI*`2Ri{Xb+JICEkM(6R_&-^fH^C1K0^G%7f_N%m&!^&pf)|W!Y;3^o|NGG%8GBIn!w2la*@}97+BfO8r+o%(=ShI<*(2gL>@ONjx-NB*4X!U7duQh_b7>c2Pd|ttaK<=Gxj? zU=~4bdXNWG`M1KsZA}E8FW$Q{j_paQ9yKD8`>Le5S0`%{(Ybs4^XD#vn;Gxliz#X= zezpic`9HFr|7)}Re?2gjVdpx1g^i(3{mydr!-ztA&8MqSlk%^I`>8Bf7V?j~heAhu zf<{V$271}TUGK_2)pCs~o$XaOBCNjM2LD#(UVSCaAVmWak}FpGc~4v6OBQ>&yB6mg zRh~=eazaw^fvo;fzfsQ}ZD5&rcv|MEH|aK3jZ*^>G_Z1K2@?~~n7IbzV`b@*UgoLV z+A8v0E_KUwAVP3>bw@vdBVreP-mvdt+L;L=Yk|KQf#Dj0s|7(_T`Dl-iL$za3wbfCm zb(Gv!hp)y0jdHUtn8H?(vZKX4Dg?@?f1F&Ab(k$(0J=STkdJQHY2QCM$d~phq#G5r zO)@^o;!2Wy$-zM8NA|(h73po|=M_bBIKe+{M9H(cds7AF5=s149*hBWr9&5}AC@45k;7)g!hi_Tf6sZTO>py#r+B_1JkAxw1bYp&JM*Mly`i)Wl?U5o+9I=j^8 zE`wamS>Bd!#tViWTXs^sYQU*x=j!Zu8W*v=FfnGZ(GoTLdxr@L3Cqg~)zx0Vh;#=e zWqS4>t->}oY+i|_8?~%aC9`Kl739CxC03=K<2mjr%0COW;H64+cO>I?h?{FLA4u*R z-?YfXu52tTxGL#70ej%^b$q8_=`)~?(}apXK29@Kj8tk^al;OpI;M&HdWdBtBs{cD z#;1F}SlLAqDPbx&zu(uN$a=YD+Q4r+@wd37eYD)TMUK&5=$-0lnPI~{=a4U0EGlS) z8hX0A;EB{c+bpSQr(zI9cy(2p^{Hf>o9Ml?8Osw|^g3OVlQ_55`KniIt&Ta_N#!wR zPz;-`cYwdf!|SlpG%_;M(&8MQF-cZXGc&WHpbQOS27e*+>MwUtDzd!exw{UUQhyF= z)MYrPQtO;jP|=Cw_-J_tBguR-6>p;Gz3(aQ9-6aoUL`pRLqFJ{g)(hkD*|ew$5LoA zyY^|vYuuSo{0UKVjd@>8+g5o?Mf2u>5)V%Crf63JixQ&`M67%h8HjwU{IEj5MnFZd zylHJSlBeBzbs(8(EKSrC5lkxKwpmnom)_^~=jTtA)BL9Nt-?~5-I%@BGYFX$KO6ep z#Oz5v0(}gU@o4Q zpLt7AP&E~3r%*UL^+e_~@h_HzNbx<>NQZJ&_!uH@Mt@-7te@`99{RYl|y zdzj_3Swu+wbRGmKVPWBh1rIo_Q-6HQKFi_b|^B#?+S}unTotjt@^_%I|^#*@UHY^ zZ63uK;|ct}zB7Fv13rkAZQ^{A6H?>3x1$2ak}Z`!YxGfJn)arZ95sEigqdZ(Y34J( zwT0zCKjy992piH^E^f{kk2kAdGSlI2=Nnz7O)wd8ufKm7U~^p`X*(QgS%aDG!;vNp zUIz(EJZ<)eYr~j5XkeSqH*=0C2HZbeQ)TUk8GE7F9OD*`J_g^RMi-~BJDY36=_3-D z?R=%wku?4-;Oa6na{-uR(yCvvf!M@*pF(C;GDL8wROp4S5!m3fYbI3>Qukd8WP*7B{N%& z7DN!hGz;6Q5qu%c^dfGbXLds4-a+pmF$m9PmTA*VjMw9CDwppEznDp5=rMCQNU@kC zO_g$^7ySHSg~LO?I7@LGHSYgnjxE)#K>W^@?o1HfYZVm}w3`BNn1H&bGULvjJNdL( zvCiMSMq}>30|ki<8)eaJTYaGid&3+fgFKk^$yrH>2E>57g=f23BO5f0{6$g|IyvVS zhhn>{!J7DGqOpdCfVYZ^jg7vKqQ1e^I{Kp*(AaG&NhnCoZI>4qd=7pjuh$kDrN z`OyxxV@~YG@)YD*s5tc=q|!|t`=;HZ-F`=raR;2K`9 zE;uB~(FWg67MwjrL-$Bwatz+D$MDUr;|0M?&CKFOH6>Ij7aE`DO2!!9cg`zF$uCGs zmMlyW7p(Fc8A}*Ca#kC-6QPJSRjYQ?LbkGpNE|_4j zt|A+VO1wk^hfozio`AfooB?q}C-dANq{i_=Pp=TrkVSIaBikKZT+WD}+t?WDzEo0F zWKRiv$p?!6Gk^Y`9>&0;B@I6@buBHU18+&;C>xtex-n3*cx+Uw%1cYppUzrkMGkN@ z$jLq#PS!OcQ#A_2?R9y(12^if31?;Ei?}T=(_|Rn)HcG}=H#C&Usw=2QFUu*|=*#+O=};{k7`1+0SwUl=8Tu6xB1~BL-jvVr* zZwPefqy?^uiRYsBGnGyOhnxFCOCc+yLT~@UoY0@6_ZX7}iylx{(B_2ORp3U(RVB%D z;v!bfS4>B?XKPku88bkn-P{3zhb+_7XJgf?GzHXe>azpp9EBMk243yB6S!`vp38Ps zAD`{Svv=rvhr@^zE<+RV)#=Xeqm4aD^!y9fw9<1=I7R4PMKk z8nZLq_74hvhKkxZ@Ja3_BY-ny1YX<{_dR(i>S3?k0y^ZXKkJ5RT5Xbuh;a!;`8%mONk|HkwL)F*TROmPGv!yu-IeJ-HIkB zCD}Vo)4HZOadWe6APU;yU6Q%ZeU5U7G}5!g~l#h2BX3e&+HfYjvH_ADk|kp z7gCC!TmHmSj^Yz3K810UsQ^l0{ zo-_~3*c27jq^vD?xgafxUouMsFE1}Ih%L(NH#)1=)?{23&I^5gRzmPhLo+9=i4Eha zfSEmOT0!ufuP~>p(r8sE;F1iphIyVvlt0MS*0?Xe?{l%*RTC@v=rAn2J__>#IHJCd zO|n)l=R^0MwZFWEEgr`5bPomW8z)g9m+osj_`>D&8Ut|Wrwk!;U?JF;nRBb1VjM!1 z{Z~0s15THsKutWLt!qr9UJ^&5bM#(wrra2QRr75nC(9Vt+ZXwsLB+%iA$dnFg-J-> zc6;N1uj0j~hvj7hzTHIBbD|Bu$_8aY3|udp|8B@rW<0(<@bpndJJe^k`I9Tjg0^;Y zz8#SX=I!xZYmQP_J#3&?S-#>)mT=e;P5FaMo&O#*(COoOkfrXB-7ztPaJSuvRK zZ2yT0?OCy+aGW=K_%eRN_}*Q9o3X~Z)nuH6vP-0Iyo}b$*wZ8n8ubk`pQIhi!jc_fWTbHdKlELn zDyfpCyED&cIU-)c6JzE2a=aY+1I8qt7P3*uTJ}KDe3<)=(47b+o^yB}fBGHL&AG-u zpFQ{~ODq^21I#W0G9GT{1m))Cy@!|6dN8&Wkj5kpSTj3@sxx>{P^RK=UxwEiGbXEK z41{zI1XM7?EXQ4gp)8}=p;B< zOWFnstb!6yNEJ*%wKdW(BeF;b6Hg?1uW?4 z^dQlc12@AI^vqLbGtC4M`kv4IXP9~gPo|Kke@nq}%r+dm%q;SUI@#!GT7i}R_htgK zXvlR*|HZD^!TR~LXq@!fw1l4Pie^oPBvchG(3A{swHf;U+y$;g#NcDsk3%v%xE^X~ zYOsHfZ>MAbOsLT?S1HV+l+(yYGoT-tm5xCjY3tM2m`awrPNpv7XavobktD<_l8wg) zn7X?}i~+tjpPjfxn^zVpcx=CB1PoGQWZdgrp`jU$)AKnRTaa=YmR0>;O{aB9jAMY} z*)}Ur{!W6r9l&Aa>**l|PV*XkRx*e{?#94Uzh{vXNv)r9xI$U#O5uh6!TpC*m)jpn zVdAC!u>wuQv=gFs&glcXg48MVSZpgZMu3Q^2e*>qW}V`{YqqmiI)jZiM3!V_2)ui{ zMWZCJa5OaEnKQ-_vy=2K^JD;1BGo~LI4JtU(YeXU1)pd!4sNh2Gp@8%>Z8iyBP4_i zm&(=1A@oIlxOOo(xOSDBT%MMO_wtB)AgO{|1Opa_S)5=7fiOY*TH7Pj49N>r_BWo^ z2Gnl`Ww<~YI*@c^9-9TLd#inR!RPeVd-V6o-jE487b9`EYGkP`t$dK<&K_nQ-!f$Q z#L?8yiU`imwb1UtmsMjt@hO+v%0$tohcK;K8=`J8nG|ukLxY9@bFS>F7hIf4GR20o zS~l1w)#XFppPhdiSmmOf8ti{#T;Kk7vbWPf2a5e0v&W@(d6Y-F6rcD_pfoVjmBayF zv%~7rK}>zTGbMt~VHTl7Z#6uH!S7vZ$k)qBul40M(UR=VmYSTiYA^eX3J}1U7KJR4YkhmuAG+3- z;~eRxp{q_KTa+n`V>KJoj^9x8NtDzKquC#lwP}f@nqA&N*QQN>vkrw}m*+$a`q1%W z=PG9x*hAC>(>+3r_enIl6czcMZjOtiAqHj=TY87WwyIll1{sc=MN5qjzF$GSu(v~h zDCLeE&vVCpr}!3SKjW4AdRY<>#gsJKnHv(jj$OJ>2BE1Oy;i#TVXDSwGa(jBFE-Pz zwauki-D5%#Y{-7Ko_bW{KVDkry{g|oaf{YaU;yj&BPGe&I?HlzL?8NgG9|cKfaF@= zkcBt-dZ}ooQf}okoUu%D=f@Ny_v~q#X0t3mQAx;pw!cKo6Ox%izj+v%dR3c?*Vp^( z*UMz%2!^pXn^mQ8D#yF9KyOPGv6iMvH&p9!as|mI;>p~~c3RMiB$v>@A5i7s`B}2D zvAH`*R9b2-NpQK^(ZKj_-perfQ`*lFVe8um3G547a+$0gK|`DVpkrY^W}BNrixBoh zN#*BvB9*FNO3)DV@s{~D|7grJ4M%Ag@XQMZOwD!q3cw33Mm+nJv+93{`4f1{af!y6 zy3{E22G%p42;bx|3)UW_&>7O%l{VO9%@XE;@+CRxT&`gB!}gFb={g5gq{cn1=f`+# zqh>_rSg!SD@o<6m6YnkSYe_+X1=QAFFJAQ+~3O)?mkeY%V1fmXR4>Bm2f_LJz`>_jb{$&OHd}7HMN7JC zpv?2Yutx|At%UK&!WwOc=ASRLDeq?SY)}hsK~PhpjNIE85bEg8ma)%$CtWgj85{UU zlshl5sP86bXLX)$K!bbiaI(V7{xDA~ghF)6(Asv>QT)hepffb`@yu{ia&mG?3KbPq zz1_3`z>7|NvOmRTnW~{tP#^0xbzB<#RE>UJMf>^1fS`mC=5pk(Iz|>a0d-kFtSq&D z@>gjcys}A1kb}!%ePLK#OQRn2VrCu=#1yDI5#!?;B{BUPHn_E%(x_S=8d0Y7U;X_t z?T;d(BvdqL|Q~lWvm&*=FYhIzV~+ViIzA>nlqSO9M-v z&ApMmwsg;LO)Z2=QaV!}H^oJDjjxk5T!rg6JQ|vfTem{N(ZxRlTN{y|w9^L%a>m#j z%<~FliqsXuElu^5LjEYKA{TDl{C5)x<5E)Ujm?X0(xP7L!WK{CETFOmyo!&VQ12SQdjG4yW<2s|KF;RRsEX0etn~Fza%c z@v_l>vUqYb<-4fo1pwc8^eP)u%9Ou8-x;}|4H=P474u_X+8rE1k)Z(Tpko$9XEA@77&v*us*v1iFD`nP&#q(c5o!?FVP@;4bj?gwXx`#Rpl+g8-q*PnCQwxwL@w3O*Lqo9N!z#Z;3Z(Zyz zw9o}&Uw|g+yJVmlWC)AfYcO@6%;z%TgBLqr0_dvF4qmFCXdoc;uKPx9$?M(jB4(o$Tiu+45M|Gdy)b|JNBY zUKn_KG!6?7&2A2uF$?a@Em#0-E-mj`k3wQWSjny#k?Hx^XDY6=@Kpe*1}=Yj;kwRE z5E$F+x#u%y!)oz9FPvx)0MZ*%WrJ`hRk6h&oQlL*qqFx}D7A@ktCvlQ4p(R4UwDIV z>#QKs&kB1=xHaYQccQ543o8kc4xb+Czp;Rduuy=tsd;!z0jmZ*{hf4rk)ui`X_8sn zz|MH#)5RNwDjD^*lWAGlKY>zJg_%CPIJ8yBCE{p%7B`_8-q*&h+v2M(WB!fW)Q@Xh zb-W;&RLuF(3j^Oh0gW>wcV&fMRWX33+I-wA{Ltx6?dCI;%=mZznhuuhVDdv&6Ir3u zQ(@hQo?W(Py6X+2w`GZX1Jzx_vge;e8NE|sJ|A$qt2#-tePVj>v!j)3(TJ3 zxBy3B9zT6av6Bz(IB>So%)GJmpu`lnH17%<8Xhh?m;0en2d%5j%9WE8@Z7~#`pByT z2<1HMK@#^FEE1q@<*MSkn`MxY0cPVzN#5Y>j4ZV?pfk-Q(|} zM1$!+!XZLWh_ZE>E-!E~66c@QsPEJ)3AY{%aG0A0;)Zt@(1iRsYCQg1Wu5}|Gxw6w zt5qyF@sqbCa7RSpbRX2bLJaI6ePOF5x)sFktpJS=9sHGjo$-Fk*&+2*ZFsf{K)+9! zV}y=MYgC2@;eLJeXt20Em|yXpp>;75KJxN6rRbjf9ObIZIIy=4{^=i=%6CEf`-Tr5 zdm_&E_K`uFD#A>xtgNjz5Pum;ZJe4i@$uwRSFC=W?Xg3{0=;dzx=fjb7Cq6OJDsR| z-645z;l4Bi4g!*Q-(`@ys=Yo5n zkdIm5T!RyJJ)=~LgQut#U^6b`_ooHuW@MuuhW(Sb+0xgdHC{e-lpj+1=O;en-dvq4 z(U<+wURR=_58um|le&cz|l@8J$%ZyzUZOjoEr zBTvQ`&s}C*IX~VyM4^hmv!>f3Emvb}Q_S_)UW*aa3Rurpd(X%Zrf?NskU_M@ow)4% zmO5puzPq3f`WPumjsbnacnwdKeWI(&B4KD~XrHv_Gwdl{m)aI#A8&TUrS;EilLYRS z`}582C1oiM4)9ID^Xra;ZIvImpEi!&CrVzAi~8=pR%9lkrPgJEuthE>X~r-<{}HIA zUI7TTtH1!L$EXUw)mHzL4T_7j?FLiiB?gLwWwbnc%|2PqfOuhqB0iIEOkmU@JcdAW z=)2F4Y12)X2>cl#Zr*6(*b=@NXKc;2=_ znydL;1J50o4>Kr`yUD_p4U0THTyP0Wjz&r><{;POlnKrtWEz^q+ zhfy>&Qr~P-(R;`S!v_DWv=7X=r;M~1_Zq}u!}gQ8ita(_Hy~j|*7+^)FYsv%dYkNc zQhSuzP5Uov+9CZh*j>*+gh#sBF-HYf5p&|Ovd0oarj*JZYgKYw1TWoq5N58e|MX4x z4xi1K&;=KO?p@%5K8M4e#kjIia-MD1);exu5j#C1yewlMpR@g{rDmzq22B?ih4~-S zH8HA`g;GnxbZw6|nBs$O6q5;3lk)GBr2vsukq@ImU(8Me`#o+{c(E}gv!^E88PXeK za8U20u8+BMYnkX5fbB@B`%Qfv=0S$&G7K-l9jqSMh8A!C>EFYx2?~ZO+JJ&Y%7KgX zF6D(y77<2`=r3$ff^2M>Qk+`F2fMi(p~+k zciKDj;@w5ctLqNHt%b6>nq8JFcTmO2Czo_xwi4>!i+VO>wJ!MGV{gQyNyre~Dqd(a z7&&x+w(OH8-J_#(>Fz@pheQ%CRoWw3y-OUz{McK4XR<04vBOg+c+sGMok$p*p=3@Q zV;IRk*5T~s)VSodR7&*4a8=pDrQv4=XODfCa>97@}>4gz^5F3wzTDM#sE_M9I7&g|@L@*qC3NM&_^ ziF*w{zivsC?@Bt)Lq6+!#W9rR>cDNJ>*@;@h%lP`0uixq<|m+=j^QQq+L1lsK8EmJ zTP{;Yc~wAgS3q$dXJ&qXvsp8}*Fx>en;vi5))|)DTspNK@2bTTo4$&q8tyVHO}m(2 z_&DwMV>#*vswUiR4OHt^jrT_D?A9%Z)28^6RP#?uN`3q~nTWNw(o*EyF|Us|Cy6j> z`cD!41`;w_!T(wJQ$B)1yGeiGOgvERIbbHK-o=p6&jGr-`h>|~t9rPZ@xPYa(Fss? zDod%DDMRurr#0(}p#$X{0f2a9JFZP`{m$M2*(B^P%{)ZC%d3BT*0pPL8f56&lsb0D zf2>6Uuq_}w-L1<7R6Q)c;rT>kj))g}fi3&`WiX>3$3%oQj@@XnEZWvYNc9xHDI0Tx)&6R`~rMENpPY!ouQs z(;`g7s>Q>BJr%63sKA=ijJ(z;N^-aR2{^VTvD60Lc`=kBD!DC9hd-1Bea_123zwko z(%#+Iu()bpCLBC%F&a`_;#x+r;vUvsA;e)3I1sWxn!L1a(A>EoeNgH2>-tqm{1Z@; zM14`-Rl6&}Q*J+~xUm)IXQleCs6(Rm<1&twC0|gtT-u~_Ig#9p(Vlm8I1P|~J=X5u zl9r-d{s8%m>?C_mbpo^+YHtUUY+Q0Pbxr9FF@+Etbp4hXDN9%Xz4o+^H_)+y3@Qr) zvf{~|sqh-B1|lBLJ$`}htHoYfrJq_Xcbc;R_3) zJkNO-Cm{l$h7E$LfL#(@iPF5luBSUSt&XT21Jh8m^SLs7qqz(PNI%L$6lL7Wxp%^pxZ>4e;$pK{w8`JmwT!0`bj~ zogL1)NUg$Pm{p#v(F)T&Ytc|~!h@fn?g*IDXMQNiy+?c$OloPpNWl7|km&kY!;VvCxq zXnu>qcl%pqLsOG5AjFLbT%_Ea3s%jNPkR&hi-1<97v%jiGKbBJ;x>J9J-J5;~u$f&+Km3sK#QfA*&<7Y8L0cg52p6xM1gg zPtYq#ud?r6<13}0p0QmRnC&8Eq$r>4W7av^Lkenj+Igp{$u*-9quFB&+D8vQT%4H# zi80Y+>mYZ_KCpoH;m*v zH)=PxbjaX;MCQ`0zTi)lHFowJ(7PAnXt8??2fN13KW7ibi6(bVX0parL|;s}v#NZ5 zh!C8>Qx#hJ3TkJgT?T<|NUCXoI0X^D)&62I!e=X^%(EoSxNJj-aB?J$JaoWY>wuEc zb%@LbMqSY^BCtD^S8Pk_BrAK)R!Da_p$S8}jsH@kK{!F%L1Rrl`Kq;Wk^#~f3s+>a zCZI%BDlLuX$kc!eP|w@N2lzdB=3E*n46o#2x*P9GOUfW}$2))rIQK z(1^gxE+FPY@4$t=3uON@*#JM;DnEHX<(4^pv_Q-lunl%;+3PXgApj>F=NsKUGnf2G zMmw%}-RJaURaNGFeTGEHGq?Tot>S;*TnZ* znU))qN$ZZkEI(Ilpy$C^x?w8j;^T>Qm2iaN&L9TC_{ zG&L2~B!akYKz4OyJz3s#On~C;xV~@ zu|#oEr8OwoRJRzUN){jkkD)e!P4?D zy}on3I&e!+YB(+9L|y@Rsoh*#^8~`v9&LN6u}tg7Znbiof}i;MeeH&SZ!W)LFDmLN z?OeM|!63Amhcqka!&!Y6#AQX6h>A1qrG*c?zHBAzHfW+MY`>LB$n1o>w2T}=9K#_6 z6+a3Ha=AhEs^?Gvf;fElE70dJ*8KhyyfErG`N3020TU%53eD6rjeLtG5u% zf;I=TfhrNSGQj{^`Eu$6z~w9G$ZZ34ug-0EzDl=Zw~oT&!8N>@FPmeZq&t4@KHK;g z#S~Qs5NMehp!I^f|6eugtXFX6|9?4s>ydRT8z<)wjOQ7^P&qh=Y5-fav9Y1AfBce{ zml<4QP=*x{k^vBzUi74FVxkscK>*4q(BUIz8D||^s?SEgx zKZ0u{0CHvZ{{3tBdnb9Xg6DxO7Nk_I)w=0kP*JjhE06jiMZn)#^ffK* zp~_tC9YWkNxCJea2_HrFkU1YCoPti7RUtmzEpV<`kF#cXS`7^ieBy@>Vy3ZYhqQtS zLE!t(utnG8t`Z(-p997VS`SuO-(+1ZHM;Bp4YIWsJ`+$8Bpl}KTp^fscGJ|9lydu7 z*392afUs4H7!Xscl(EG3CrWgACW29ihtgy5Kfao?;?wo4DuQ}~-}j^ysDAluk6eg8 z_eRrt?9N|ghi4K{Lsf-WLm;iN(J_&y1WRwj>N=^yh(%GLJ^*4uAAu-&lo32=ogLA44Rwd2G+fV~UAaZqYh=6lUdvuKbF5hF zhuS3it+97IbM8Ri^mA?4o5>$CW4||0mf_OduP(#o)*GeIlq`hZe`O}{haQY294+@K z0e_=Uy?e`Yh3IwVtazs5Fxcd-B+X z0j>2=J4%!`)3DB#1_t~?OblSq%`X>cD$O)y2vF)?T8}l(m7C;8npZMR9kS6O8TiOD%u+RJRoj%hpz*~d|KlXLoJJ= zEtz)hDFJLaU9d>w2lg=*z<)79%W=gV09c}z)3xido3r$Qnm zr4g5&UNhO*MM9gDnwpw!h^S_MeS_(#*KSkl)-)`}JQT)Fhm4_zL(vEfmtnm%kh243 zC?O?f3W&FgZ;7~BQ%j|Qo>jnR>@SeD8P(hOTp?-G<;K0SS*QD5sv+V=jm`&GRK(g> zCNRrzBVO&|NAPVBS`XsoG9>^%0d$z;I+uTQg+-t5a(*Gd9#hI`$_Ko!Pl~eW$B(z3 z?b&8vF~5ELwzP>3Bc@%^p-cv&5dzk~KQbu-d7w7Eq4NX)(_|g{x{)K zE8ksJNH-J$0$y2sBx9EPSeWU5(i4#}L{P)zXS>k6y1&%djzw*`WaWZf3??1g&2r59 zNI-x-TMYgNf+x+3a2OJt1Ra1I&tat!C&AVlU@hQEZNnjzV+3Ia_T_XJ_*N{Bhfyc=2gRU5BZ-X+4#GW)TdJ!I)#| z<_cA_z@0tnXWxT;_Atq}VLk7>PB23Y5WuBWDE1ggYyTYyZAl8cQBSoVFDjEO8~s!@ zpaIBBK?n5@YNva1OrdW{(0(*$H9ysa%9BUTYGfXi0iE6Cs$yqlPR5|mhk>~ePr!FF%YJWv`|}gH zsi2IXTbygQ?=+XyyB^kdKsiNtn)$zAbUmz7@s^CJ?VwTTg30M=5> zsiURE=d#?b#NG5Pb9iK=9n>~JFN^1K{~EsEQ+GPrqP)B(Vpf)xvf$0_>*tF>Flikf zojpVwn17QJGt|*J*$YHoB7DdHJ?b_%N(E>aYn)nkuBbaF0I~r#bPJ68?frX(CyweL zjV(%Abjur;QSMt)#-0mKUBL;gHBs&0w`@ZmJf7q4tWa+T zmDUsWMiTm+-kWr4(O$pF!GY|Q)YNh zvJ?E(Z|NpoW!-+RveH%78!x9-0<*J^UP-M!(~8&Nc-_Kr4PT47taEd+gc+Qy%>+UR zM*YGKG-_$dojU@*II%|3x+JBffN8fY*~Ls`sI5ALE|guvFLJ=qH#Oo4vJR+Pnof_8 zSJ%^P^gBcSS0a3w%}&AoI@^GPT`oJKR@AeDj8N#U;X$l`SYcry*vzoF4`4>f+uIws zLWc>n)+Z_LXIh`7>Yi!EuyZJm?y`$tuU9|IjSlSn3Bss=7&*qCctHxx_EP%y%VgQQAALVgCE^j<3OHXu&UjtynX&Nqzt;*bJ|~okRgxd2$yp z3|lEE@3aSg6KbG3ynv#ZzoKy?LzHchq^$m3lAdU^)N`@quT%@k?m8rz&7k**JY zn=Vv^fh;#)@37Uf*DfgueKe;6=*e$<8*NqQ$UFK9;IDOm*2*;Cpl3SAcx|VFRpNAU z1*|1r+|8ECTYa@QjGP9wry=Aq(N>@yXoX2+04C6XDb%X4V2WSwo0#_|=zPhv@4h7) ziw5y8(|1=NsEq+P2J9qM6ly!U2>|UYfBEPBb|)2G;!|bu{f=wNHH-m5hsV=>p>fLq zFfCi50>j`Y{>Q`jY>oVnEx;7rbd2Q1U-vD6*2{}15J-S68_y6t26Lk_k(S9d-rj~H zp1W5!&Zb!a*|zr&Liv0U*UOfOWR_I3~0NaYu4p7?JpfIFi=B}3x< zFQyx}w`rwPzVTWC6~0cA@KZ#<=eGb_-T{gi_rJfnxg4eut-z@8wqLj8J%oN(-2?@y z#Cu|=))(y`mOkR|Hh>lEJOpqT)aST)wq`wG)8oU351Z34;*Y;TUm|GUD+kgd7>FwL z$J8H`l<1U!EfQb;EUl@jnFY}GoSdA>{ZY9rg9b+&U>n7)e_sOu(jV|dIjA4+4}pyX z09O)FrT0uiZoZ$ZCB03`@ZeoM0DUBnev@Yp0e&Yd;5_uX3&2i8-IzIJ!LCk8uR>~F{9D0Dor#FVTDin2TfO)xBc ze1*m|$##Viue>~vRa8{Wjfjy%_#I{d70hY=fF~)2yzepSk?$C$zgWrLhxn!P+f4zA zPy|>_tFc!6*AQ{ijWyzjg4At(wBHGv=s1td;Ju?!19S+IZa$CcQ}!LY!r>wL)@*sdI%i~Qs& z$N_}374}Zm0CK*vdHK&7bk2MZb6&um^7HfSNN)lnV~@dWF<`W?$P{`pQM3mL-$h97 zz>P?-mY`vE-xw<@K)LuvgBTB@9qxrD8R73afITAuJqX#$c=kQ4f^-5I za~M#oXaXJByRRcdphN}C0H{Q1M2>z7A|71Mn8U!pOr?3>2|zxgugvtxf6a9Ok&`X< z^b2SSyuH(lxnaY@!@uOOqzKRe|D2sF8%>jd0MOto+d4hCPgJC6W~L4lq&q#G4B)91 zy2g6oX&O|Ha1QpYntd59zt~W~$XuO%riII-^$B={#QW=YQQFl?ARuI_>_+Sf}&CxuDOFePbG<8cQg;4aS^BHV!>Lz_oRG^c`-SIG} z)hB&VJPkos$h>+E#*eXGQ%R6nj`Kj@j+gxJ#dc)A6@*Z{Xrlm7kA|9-d#yv`pC-G$-hbApvBgYU2{(GkSnb8U12r9%*Ge1uSleT>-H{+?3N=jO*WR}VqSO3wfz z@XpLEGR;2&2|wy8Dr#vwUI8C09`1kp^d&-6Gmln_=lg@DBgg|Aa27m|GFXywUVgrU zAVfx{H~#7|DIMJPD+jM_LkVnG#j*`@Wfy#ba_A}_dnCZ_J3n|HDneKoL90D8&_yZ< zy423jfBOonnV%}M9OeB)LXg~~+FHKgVzo)=g}WhmZi=O)C2;;q-felJn4~0%VZj;h zhc4S9fOTyH6*i!4f&i}wy*QT)nRsL(;j)|u7*GLDFey#OEQff=czKCKUV8RW>H-45 zK{|}idt5n?Na?9+=6&jx{Z6G!KUC4cuucmW&=UlEsO=h91}NW`@+*sgR?@ysa=Z}A zI3RYqD4lBb!RDFkYO<+m(}z_+ogO|H_d8Vp?2en!b{Or&X)q(!NvsW2PM7G*fcqXB zklYyDL2O_%=!=SJu_K=C)B^Wak*+XE<&XHXKrXWV z6QA@hjUs_gv18@`YVWI~s!;nbQC}~pgop@8iKuV|L{y|f1q2gNN)e8Th#)Ca5=X9- z0jMaVl!Vfq(vs4mba!{>VfOKxcV@m>YrZwPrtbaYvJg1&oagz){_VXV6zsa(A)0<1 zCkI;+XE3MbyR7u#gz#mXk)Hz}3`*B~nevT0vKsW?J6dh5T4@j*uTVMuLES8qvkFIs z64o91g~p(Xaib%pOXJRn3=em>m?eafiL!Q74z>M{v)hy;Eo`AW1h~V!sLsXIcFFYG z2QkY<%wsZ)|3tsS&#S>KZEtODO~s8|ZdXk2eqN&X=jX~sMSr**kRmrF(BTdm9TRvQx5r`=_!^Z~a-0;>T% z_eBrYqv0PUbbl?drr1k5qUuX+SONjM(@G`5VWo1&r3Jk-+3EypFSGhcm0R6N9q!%t zT2n{XCffw%PIFB$i%eFd6SJM||Ffq7?gOX~SjA=sceg8?1iJ|`F;X*Y|}?Y@iB zo9i!ny3t`vZLaT%2t0joTo&hTJj6Pd&Z~8+7c!euA8S`^RycMt%ErF7E>b7dkY7=9 z(c4E!+wJ|5D7ZDv9VRKHh8t;7$NUrk((#jPKo!bv&e(G)(ht- z>QD$~PiC#bVS{E%F{;ROt}@Y?-@<{3aCLYbeO$HD$0@^-aERagmuEKywYwlX-zZCP zQ|^O5Nqw?pIyBhwjAsoL8IJlZ8tdn8NFVzJk_(b+Y56%tw!%4e_7{2hogTa4AKt%w zDg`%^^w__B+m>56KBkbYYMjO!wNF%6&lC>Ja+7=QUWRH zQ*3V!iY(;g)rWRlfLSW?yL5*TvQ;mlsLzQaZA% zHrKk$j4&saJLu|T;7ub6I3*7@0+zK>DGJ`E!tV?*?)YF3^svj3ZeuRkhRj_B7ipj4 z>7J$}U<_FN*cZpL%uAj#Mg%-;#b#jI>ILjs#Hij8i0MlrKQO{6pg{!dmd{#oo%zJg zkzZZ;i>+oQ0{nQceY3^8Kh~$__)0~2s9J~1YobOenhU?+<4z-S`f?6wm9?)dAA}K& z`UFD$Lx1FleaZgQ7H)K$ohY7haLB=v^VD$nb0r&sq6nCjEyty-jaN1-W_+^&nqVgb z`Wxx6;cLGx0V>ej!K}%Ef2l_k@_TjtpzgD|Ej#64grrs^@1x=>p7q*|w^0!U5 zT{S9!K(|@2RT|+kGoL%2`z^t?>|n#&%x$9*VC}swHscx_+jBqSZ&axpr#8H zF>_juAtzMV3Du5e5BdnVfgaw#M?WthqmAEiTFM?%@M5zg<7L3X(EYGaELeA2dr!oN zJ1y(3_<6~!_bg$6{bYFt7?o*Gj7jYq{y0{Y%pMS&y-1B9Lk{PP`# zExUGBOl4q~wlHek+FLW)X2!YDZLi8PtbP%AdnoEzYiWbt&Jx zxsMb=^6y$-O(5ouH09@+R{0IVDTe`=pGYg;XZ~B6_p{X_GoAC(qbry4H=kl*bz@x7 z35kuxp2Tc3`_afxbW@Qz6?Hku5k)s$)_cQ!uC5a|rxa95cE97QL$~KcoOwZLcbKc* zTptpU0ZjSuVKQ+kyK8B1H*{v?e2bkHQrLve0XhY45!b^YXkMBzgje!?bCNd*nZ{fEi>-g5$z~Fe5V*3Utzb zD-&i!$-(c?zMLyaLhoi-BbIB{RofbBT>UYPai*d%@J_5&MxN6~yHc**p}mzA(eKf= zmJPI_nn}2nbhB6_ObsVBJN-tP5^yDZw<)J3V%|!1jD*dk>eqfZR#QLhWnlV|kAXo! zPECAXrrG{AFVa+qNl@p_hYu{BxxO!=B=YIJj9iTm<{9MugwBGKz(7(>$XzV0c-KX1 z)j=+CRLOHz2mW#tV(TapcBKuVNpy*6L<@FH)hUehYI$)@c@|bx>=M@PZZzb4z}EW? zxn4ez&-Hrhq7DZT+vBF~ZRp5Mn&NY~tKh4LPG6p^0>SBg_-(rZ7F~Fiy0_h23;p=> z(NACQ;M^>~963MVRaZ)DoHChBev40#%S-yG)mJBN^0maI^ef(Wkrr1$VGdTX_hF|J zt+1}J4c2mGNW&n@0ub%JDnFJl#Dy5b;>dOBor4IC*vnnTBKfN57G>dG;nJ-}q20p`%s_scGzk~!pg@rnud)eE(P{p+t{gs^6pgYzX`x(|{gtgWtoP3}i z^kmPY*9x>WVxudHLEf;`{mYjgn^_e6pTH^n`MjU(gIivKC-TK;>wh^K565QMr@FS%3#K zE&6~`AtuMDr}g@aVy+kP{yo!#zV(6b<+n-45wAnVo72S}PXJ!ZCoS+1H^#ak(Mc(C zrxQGOtfsOp*?J-isfsvXSJr!?=i>5@5Cw9Z0h=P@d-n!I+&QetgM&&s@!zCGP9@AFyTq><3pFLI!1Pn`^bk~+317#iM~5P2V9-Rc1okeH2oF4OGPoYIofPc8a7BLix_ zf47}2FY6nTrIP~xtO-7qFu^H`?iwy<>>U9s>hi~V(_&NZ0Li)_<1!gAupdkQ#gAq) z;%1tW6)+y75$S`%!fBR6WPJ7c;t`3{;de|nUZNadL}aeqM)wl={Ce7Uct_a6=nN8~ zqpQY+Hc^J>L&tkWBE!FYX~-RGH+k!*@>Bp#>@#vX#d1=b#Zqskw}fm+a&*=Dep9?j zjyVPdYm?b#sUj`t$wKKBOyXwf;&z{9w0}J32@E(FG~ZS(^z%1vkU^X??BLUkAk4)F zY@p;6f{oH~Arzwd2qV3&TnnNDZ+*gY%e}U*33517=z z@&+CE=mBI)A)l@3`SolGwvyh z_r9OZT?&D8CDd;29ty|X%}J4WGJRhhTYWfG!(KQK(k@2rA8OURgAZPb@)C61XE4R z7QJjwhb#yE7f1;$dt8V5`|lD*-FK?gAy!M8brwRXg63sa&Cw82P2CJx=jj`T5fbBx zXX}XURbR=XqiuBU#9|MnQbWkEM1qN=cZrAi$rUw5#qv3lRMQS}>lZ9$sm?CZ$IHu0 z^=A=Te26iH@``slL6HSzd>-_E+V&G_hzizJ5-5BdmOqn8AsVu)(_k&R4G>l;?7CKJ znpjWAZgxNQmS^0e@38~3|HX|df+fb{T}0w}+hV>NXku_O)nfL6-}~{+n?30cD+5fJ z&-RosRc5gLbe?7bv%zwq;XTv>w$L%Tx(>8lOmi)|#N|+45pC0;M%W>-yU>eC$9CYl zO#O4l7#P-=q4xJm|N8aMe$gIw(07RVb9VDHn_zqx0(?;0Rm{@{9ZWRo8K(@XO>}+UjyOxNOq7P%5oS~pP-7MJ6p!bb8%n4C81Fh$Ze}&obFgA=u89U>|E7x62 z?%WQ5g>}GEU8A2N zi!*I`!xMGzIA^Vl8Th|!>{Yw)Sz z?+{{DSDQ2^ena^O>ob+_>KPfeUeUeTDn}(mpvPm|eU06Ph2ka=)?Bp@7MV# zZuPj*x4MWf9c)OhBOdRG)8DG5F$H7qYXR||noab;We1StdJp$p=hx11nC^B~k)L~x z5lpG0HFo(?ojqHlO(Wj;j)!&Q6K~b0#^-Hw(5$J=q-f49cwGt`mTa^5xZL8l*uhxEVHi76_@m)~{lQR`Nr=*Z% zy1LzOUDofQKoVxu0gcJRVkUbE0)zg(_X1iZ#H7NkA~*IMR+Ku#jks6W=SLfIA6^h3 zUWS5tw@%#nMg;aS5@lz4Gn9ykTEn|_F>7+aJOsHJWT!lQ1noQreOqDEODAp@W zVLSUJbFH@dK|-#W;m>+>U{RQ>z1szXuqjzjK*D}`{=UjT`3l9$cT6by5*KQJL-vB37Ygvu*pfF~ou|N}HdI3h34CW=b?< zFJBk#j+D1eSiT~gxaVD&kpF&>_|y>-84@>AC;ilor@v(O}Y7f9-!`S)^4P zoIkzTrr;V#X2+oLJkVo(wSZnt)#_XY{RywfgOvyyU2wmuk}U>Z{zqQk_Fi+N;Md(=nr@ z2%wu258l`7-+HGBB~R$Asj#orXnkH}r0qaO10_f1W_n5CJxV(1X=wL$1piJc5}nt1 z8Mb}`lM_WDh!CKu^sik!H;{g){&ofHqsW0t`Q92izP!g>YePp5A4YbYWEUQF1}qEC z7#@5CAE>fwoyvWDjJ@^T{q$(A<)D!P(M;??W56`kjNEb_vP35`9lQPb5AWnrDQcMfqHXhADJZhv1vdT_cJ0OuRk26s zGevI+Rb9LoNulvbE?U1VC?s~2otLq%ph7s08B?&KAbV)&rS{T^{)D;&1N^-(Ie)hl z@sf4vs;ZFRcTi0@1;4J2R)Xa!dsrrV*pFL>In+HdN-d_5n&sjBoV(-Avq5K}1>4P` zdr*!MJ@IC$aZ7J8gS#ioTyOY=Dc47RICali@2hHwj(2Wnaxkoqq}-g3Aj%DF_*w6l zcF<&(x!Ep!UXr>RtUXZmbD*q)<3Q0>ul>U0US4?JP7FI%R(iJUf#bTuk+;-l8E7c5 zYG!EzpoMiktPE6nMPC*2W4_;X7{hl&*|N0yrE=MNy;3v}~)^kr}IYId8ShvA!ae4*Rl-b{ty*Kg@ z(fC;4msBra>G*B_ zgCIIZFE7RZiDyaFxS*U$j|UD^B_;NS%hIvqB?TS*=Lj?F;;=WYOKzLp-b?ls`nTWE zf5RmQ|9U0yw3QIVNT>HV;{1m(92Opn3>XG(Q#68K&KxRYRT z5vCN}NuN#jbjXV37l+X?!ZF42U*pkF`rst{002zGVYnRDj*lB{^#TXK3QRe0VAF2` z*;!4L1X~(jm;hOS+xZtT-PhR8b{5f#jI~s>R8{?^vD{{AcHN?I_39#ukc6!8@bG@% zd`>XDhOfm`NA?nnK|p8J^|I*guw@m61tlo#)4gm3&x;6`npD`eyiGu!&(*2}> zzyuvJGbA%J^Ffnot<2`SJd?Jczd!3~X(H(_^hE5A^D1TRHn)tTImis0+X;!gxSzav zlU%(?-xdE59SH#1>tOsNZ8OL$cRwX;u4bXaR`cxwOM^ya-J;@c6!3ae)Wl)l()$Gk zd3l#Nrp%bp90O?-oi5mh;pK=**d$FQNar&cVCF0|E{Djv-!m}ivh52#H%fNY9EWR5 z?hylnJ7E!e|?|8&1)>?v6@Mek~Z*#m1I5A`vfie z=N`Mut`(l{yoV&wMI6exi7V#)2V7941Z?uUQp2cB=7~b8=vG~%!cdLg?jt{!LPG! zQI59MZ3ttDVGNFTG61g(Aq51H2=*N3e6W!x!hPI;{C0z=X$ON|tfSOi)h}*q=eYAO z>|)81Q<=TbEC2oGE_|ZL2R9X+rt6`52=B|5Ju1 z;F@Yt`Z_RhA&hfl3bx0c4=V*!>}Y=qbzW@{06=a~>_HDgelyfARAhVOdK{_!z)&dc z-QS`ak`GRR2MR7Uf&cZ#otOxVNk~XcMu$Zws-xrvJ^u=yn}&#SGb+&ypdKEzmET`; z+pG#41rprThCwYkQ{lxIbee!}3}#tWR8-r&?eC+gg7_d&)9{`(;RTLf30ZYguE)KhjrI8z^~U zl9omp<_}KsYtR+RAP|LyNUF2mXni@IOb&0_`f%8bh|3?CJHnfEv{Ljd73!FJ18vfC zmU}CK8&m8SVX50KYCV2ePfyR@ekjMz^5?J3h>-ckMbnmKVG$Ag=EP(nz4Hnge$Yy; zuDW3uP2u7HjgC#ho1^Qir4qR1s}b?E7a(qDl@J$yU}Wt&FghAN>;_=OZj&SnQGQo? z+!1c>q(>v%pakxsym)BO+)!{N=JNP zG$3i47@wUTk^HbY%=;K@J4VOHS6gbGa5r1OtUGN+hRx*wQPPhPZry&|#wG|bIslq_ zG7wT+e4s0IPjBI1HRmy{#paDAqDf~?!spGY@AT?LrBKP*v?P~x*$r(dGnhKmva?S> zi!@XtEV(}YRM)B@TI6c5^xAiBf*^kt-2}IsPh!&NfjcG>-)d@VN?tJa4-P_!EmZHD zxKSV3maI*T@93E2cfQxuWW9ck6^x6ED=8_ds|HKPjO-m724S88R~YmV7#xAdYR1ay zA02&uVd}JH$#Wjr2tW9af+qOOagA18L&J3xOA-!9Uyz!Y_dA_MKg>Z&geWPC>Q0y5!uL-c8nqc`b zxu~hCYO~?G8x7wj?bCabFz|RODJgND zyfrJ?!4Nj0D{X2JK2_l z)Y;!!#7X8M3atfES`7vIGF zM`h2RbvpGAyl@t4={v>K9)6bF$+=@&UI3rywOJW@$8XUwG32+`z1U}si4Vnr#edNL zKl9~8C|6@=XJ=z03~UpJPl`PnRx~p+Gy0mD$ve&?wecmasx>XY^1CAcjoI7t+aFJ) z34i{4m`?JzSzqar^;G8?~`K}Rp~3W-%*{5;gCq6YVQ2KXKBDnMS#Yglennw1=uH));~KtNil@DomxSUN6VcjKsRfXb@#%1ggS`; zk1SD>)_%RRtH!PKI*J^wuG?|rVdhkxn1+L&a~L>LwSGcY2QrOYQ@?(>r(tIHurXGG z@{jzv8eiPpCABtASnubNnVOu$jYhVj%A?|MP2(k2(o)&adE=Ne;ZhOh@Vq-I}?Nt5@c#aj#W#&PtJt_^0r2(MK-BrKzd6sJDcM zg>m2gYkq#-e)0q3>Ba_jFvaO6vmQLQvT9hHB4!#j_!F0GYT?TZaZEy1Ru(22KkDi} zh_8y|%_thl=vL0vCX7!^Y%FHHC+JAstIbORJRK4ur1}Oth5(taWx{3}=1jv$WgOy< z=a;jmOv}G3R(&{Wf7?Nk3ohKVnAM(>GBh>qOxAzU+=k>TYqByNW@6K>BIUHs-j?2w znqjlvlQ|JJpsWO;b4E#t>)a4gfQQGXDP9T&pEbqL`UY!*SxXacE|i|Ejb#=~KDcgI z8xRGGwUDmEeGzgBH#cUUEU@>8Yzl;d`(42ve>o$YF2jkxeh9c71C00O=V@a!={>A z*z*@JYJ$yRRCZ01=Efnm;i!nb55d7uQrD*#jA2S)Y1d7)(1V?I_)?yZwl<3nay+gL zCQz~2FEtJh3^vyXzPjL3%Cl!gUfwloTSNW$j^O@hJREd=MHx=Z zMZs=TE(P>?YO1OjmS^#k!?$VGtABWjS>D^Xx1U{7bBTv|f(nAL!ETRLGiuO6-h-&u zL|n_*6glLE`i9|VQ9eG|bZAeA zX}G%VVKMVhle1f*!jRA{ZeJSxcI?U(rlWicUyd-)eCFokn`@=qc|rfS16WcRDt@)h z52nOSaqynXcAWdRcIE1CLi!cO!#?(Eji@s;PbtFR;QY%-(MQAPHa1IbW@fZj^a zg9lU>;Jt8BGoOwsQ%IIMG8X1OW0Glfc1Ia72@ z0WM3}v^&hGOSocBpFRzbomtZrrr2_p+cHrC8?w8OFu1zpTHU0X$kxN9heqbGG<6sYIuZHr1k=;l}H=g4ZLewi`d`cFxkGM8q0G0;az#r3S7eK%^_vIJY5H+Nf(GC1H(Ri zS4x+Zq*t@e=b=tq@Fv{=4I8P~vHOfR?|$73-E}t_Gxu$AHy6&=6X`CILt*=c%&n3C z!~$}PAuwX1`Jh`=fvr_paWS-Z6r{^6+a!U7%f4=Ia}5n@UF(Cvm>FT6C%TBdsxPPG zpf|#iwQbV=1v`o(mzlxC>-qSxBjkjt>RUmr#rq!gu#mr~qy*w*sml%<7v(*jjJ@YT zwk}Y?LVL4Ii1b+MoLoOrZN8)39d)YnYA}%vGEj``MXC~E2gVkqW zO-5MrPUiy>5`4njO9ya@Wi`vIa=x;fzbWq@$lfVYTV9@53fHB>qruXBv!1!ZiaPdN zy(;PUUhR{R$Uc@JAh#joJAHkpOiy%l1#-uewl>_YT-ahG`Yx~Z!YcOpOiAWVrp$xl z?VtG0m0N`saY|hbB|Ivk+({G}g_xSc;i{}CCAoemV3O^|7m7Pd|2Kb`dO^j82RnRj$(C zU$B2*08`a3=}de31+}xn!@^QBGw;K*Y;LGa!dP>}YAM~(zS@mu%EeXrFm}?Vi_c*% z%?J})4OVz*#Bc?|jHLTl%*x7F1ZR}*UCUsr@7$KN^yV^l_Z0)&8Ac zJ8o)}9jK!DP*%*d#gv^ym}QJzf4Qqg4GveCeC z$j!~gs$S54&2sX~;= zbGBnjdLejoWvo);fzje57%D9Wo1wU11uTY=K%1*Fk0OsbypfoUB&{|vg-a`qp7sq2 zx`eLHYJIu9r>K(C-q?aUA3V-51tpj6Yuegrk4D}=VM(sBGWDrRdUvMs><7WiK$P3J zK***aElt+mU5MoWAWP z%P)u#89Pa!hPX~>r8|HR&{jk$V)bSdyGbC%V^K#FI6~gIxb69QK9YkgmfWiq#NCYy z3Vq{i-SFs5P>^*WgRbOU)pHQ|kz6x~o8J;|YHKePGk6>5>$|C+(60zD_u-M-xNz9z z+2rKpf5_ZDTDohDF&b2^1D*C$J9dTKa5>1ZZ*ejXO^IfngP~@SxK%H?Kdt|+d_I)4 zrVsC$wIv9Ley>>xwNrO!`J7z&`o?@DqN&3~nh2;f8MnZvIJ2U*k(ms#Cez!>z-2gk zw1QGyBi8oe?KgGKo?Kc1Qd-0gZQ)Y^;A#xP8gM5~X!66mwhayJCPqeZto2ysp>dr4 zwi4{5aiYb>v*7`=v_mrjCt@lzarm}CHtO8GnXFe<1I%J7D;p^oOJ%t{ zomBFI^Lu6Gu8>1=?kMh1z#_4jAnE|D`T4UqqpQ_T>Gy1 zk?ZH4WjZX>N2T;|L;IT%G4xY`(*zaoXhp^A9sx=^4ryYZkTEEt`z6xFpZ{cdHt)`H z({}o{HZMO|^zo6*xY)# ze)E{)qT*4Fmvn7{oOUIn4K7Y98aB8`o^sc&U3icr1XCz<4Zi)=MKJu?(ZRk@TTL%C zkJ6g>pvOQ*O^xOEYml&;RTbq_nj#vNHPCGn7cOjr@ZuV$bOoEv$ zid=i-{e3$LvV*pR9~f6wjx{dtp#oKqf;#i?R)rt!4qR;ayQ2CZTlbXirviX7tYJXp+S2749)2?hB5^_#F^Mz#Cs48QasTLC?KDP;-LR4 zzv!Gl^%kg)<81#3(okyZ{PX9tz#*}ck z(>I70$dT#xE9!EAqZ1SCo1`g0Z5@$6#yhpw-~fO>lM@+VUnwaI1T;`HbO9A|U}(ry`%0j=;rg;fXf4OAx$q z?b;q+a$^QGAgc1r;$%m@-5jNW029opK>3mc1D&wZ5X>q5=F=Ne1KDt(b1(53@gQj@m$Gk2kDlRTA zNa#rHnJ6tCv>e(G6@=}|;^5$}rVcg0mj5c}CJsqV1#lcazpQ@g(svQ2qQa=_2AvL; zP#ms8o9Gu9m}bA!sVrW&7!)*#!=x-SSeq|W|NP@eDUGTfILZuvgdbU;GK-3n(o|MX zH1Elo{?-`ZL3U@Rm=RjmFuzNVuTtp$Y#kqKo@im}cw!KABT2XD%Tvm+YjnC%@$rv) zpOpb$rTim2U1noG7?(7`YIuXNxv-+zt%$1(V2f zoZ4&)?%qfg#)gJ}9zFUS%M~T357c&^GO{seCVZ<%kcqp;?>ybuD}Ijx0~0 zQsT!yef@e^N=mBUv)%~2%mHU^#y<<61Ox=2)M*m^ai)e>V55JZpa0_;ke?~02lnG( zbqkjvgd!%7y?lwH3AzS#tfr>Pg9o@vfSv1F_~gzHrwrGvY#M%;I|1%Sffy4ToBAI! zWR^o!qza>zmBQ6PafZCMh6YF2O8u??s!;*(3J3&A+7*&E+)>2j-u{-mt!-{@j>Ey+ z>G9)MN>1ZIA-z#gN%pW$pFVxLSKCumwolOMfa;sX+Mu8yq&ywz!5Rr%Y}bhG-qdV{t})uEYGW z3cbY<^1StUcO@Mg;idTzHnOpYrLL~7{=j!CdiuV^%NhsarKFSJ`|H;| zJ8AFmHw^80R*a(VRxw_`IqOcIr`6R=h0j9xL_IR5$NaNA!qE8qe*M4d>jT93a!fls z{y}T1A64-B^=shwNhv8Oe?KOQ?z-02k8lk&pH_R7b?LCE<)ATU5WnBkC&VO>-lJMX zOv7O_Ntu!9{6h3E$YhZq$gFUO&k%f#%#ZxSkY_6;;m@87vDb?8gm-U2KfkY~Wlw$( z4b=w^#t=YHo;V@fLB;b_WOn`S+m}?Pc2TTq=W=)Dw{Z0h3=XQRQqz@_EhxKVLL(xE z+P}JC=a~O|AI&OaJ8}MED>lW!%z=f4G4f1tJ8SUzlAv-#4l+HJm_a^}?{Wt4<^q1h%j>6I(hXhmVqASTwLt2a6sOa3^tv`&1W z-ZW#c85ajwpkqu!kgdnft5>A-drOBpG6M?E283@dJ2ObNNl}>Zj(~PIKQAwj{FkDN zfi0h}PR`EGUeoS7c`H-sO!t9%@tJSA8-)K#BnQpioZH0oZug{o_T20IRP*9Sr+Yj- zi6#74yZH)Gg)=$f4@(CKGIY*Qnb+oJwtd)!ci*_QVp$rogU#VHb&1R#@-A}Z5c|DF v|Lg0PP9h#@bMtZ31g@r}_=CKSwozEswawJzWqrWEP+X9|Di?q5_Fw-F=>kty literal 0 HcmV?d00001 diff --git a/docs/pr/project-browser/recording-hud.png b/docs/pr/project-browser/recording-hud.png new file mode 100644 index 0000000000000000000000000000000000000000..ffcd5dc1a8fd4d3261dcacb6d5d998d3f4751b12 GIT binary patch literal 10725 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 literal 0 HcmV?d00001 diff --git a/electron/electron-env.d.ts b/electron/electron-env.d.ts index a2500fb5..7eae1e17 100644 --- a/electron/electron-env.d.ts +++ b/electron/electron-env.d.ts @@ -762,7 +762,7 @@ interface Window { commit?: boolean, ) => Promise<{ success: boolean; error?: string }>; cancelRecordingImport: () => Promise<{ success: boolean }>; - listRecordings: () => Promise< + listRecordings: (includeSources?: boolean) => Promise< import("../src/types/recordingLibrary").LibraryResult< import("../src/types/recordingLibrary").RecordingLibraryEntry[] > @@ -831,13 +831,29 @@ interface Window { path?: string; error?: string; }>; + showRecordingHud: () => Promise; + createProjectFile: ( + data: unknown, + thumbnail?: string | null, + ) => Promise<{ + success: boolean; + path?: string; + projectId?: string; + message?: string; + canceled?: boolean; + }>; + renameLibraryProject: (path: string, name: string) => Promise<{success: boolean; path?: string; error?: string}>; + trashProjectFiles: ( + paths: string[], + ) => Promise<{ success: boolean; deleted: string[]; errors: string[] }>; listProjectFiles: () => Promise<{ success: boolean; projectsDir?: string | null; entries: Array<{ path: string; name: string; - updatedAt: number; + createdAt?: number; + updatedAt: number; thumbnailPath: string | null; isCurrent: boolean; isInProjectsDirectory: boolean; diff --git a/electron/ipc/project/createUntitledProject.test.ts b/electron/ipc/project/createUntitledProject.test.ts new file mode 100644 index 00000000..261da980 --- /dev/null +++ b/electron/ipc/project/createUntitledProject.test.ts @@ -0,0 +1,26 @@ +import { afterEach, expect, it } from "vitest"; +import fs from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; +import { createUntitledProject } from "./createUntitledProject"; +const dirs: string[] = []; +afterEach(async () => { + await Promise.all(dirs.splice(0).map((dir) => fs.rm(dir, { recursive: true, force: true }))); +}); +it("publishes complete, uniquely named projects under concurrent creation without replacing existing projects", async () => { + const dir = await fs.mkdtemp(path.join(os.tmpdir(), "recordly-new-")); + dirs.push(dir); + await fs.writeFile(path.join(dir, "Untitled Project.recordly"), "original"); + const paths = await Promise.all( + [1, 2, 3].map((n) => createUntitledProject(dir, JSON.stringify({ id: n }))), + ); + expect(paths.map((p) => path.basename(p)).sort()).toEqual([ + "Untitled Project 1.recordly", + "Untitled Project 2.recordly", + "Untitled Project 3.recordly", + ]); + expect(await fs.readFile(path.join(dir, "Untitled Project.recordly"), "utf8")).toBe("original"); + for (let i = 0; i < paths.length; i++) + expect(JSON.parse(await fs.readFile(paths[i], "utf8"))).toEqual({ id: i + 1 }); + expect((await fs.readdir(dir)).filter((p) => p.endsWith(".tmp"))).toEqual([]); +}); diff --git a/electron/ipc/project/createUntitledProject.ts b/electron/ipc/project/createUntitledProject.ts new file mode 100644 index 00000000..b7bc3779 --- /dev/null +++ b/electron/ipc/project/createUntitledProject.ts @@ -0,0 +1,31 @@ +import fs from "node:fs/promises"; +import path from "node:path"; +import { randomUUID } from "node:crypto"; +/** Publish a complete new project without overwriting a concurrent or existing save. */ +export async function createUntitledProject(directory: string, contents: string) { + await fs.mkdir(directory, { recursive: true }); + const temporary = path.join(directory, `.recordly-new-${randomUUID()}.tmp`); + try { + const file = await fs.open(temporary, "wx"); + try { + await file.writeFile(contents, "utf8"); + await file.sync(); + } finally { + await file.close(); + } + for (let suffix = 0; ; suffix++) { + const target = path.join( + directory, + `Untitled Project${suffix ? ` ${suffix}` : ""}.recordly`, + ); + try { + await fs.link(temporary, target); + return target; + } catch (error) { + if ((error as NodeJS.ErrnoException).code !== "EEXIST") throw error; + } + } + } finally { + await fs.rm(temporary, { force: true }); + } +} diff --git a/electron/ipc/project/manager.ts b/electron/ipc/project/manager.ts index 7828fa8b..f6921d77 100644 --- a/electron/ipc/project/manager.ts +++ b/electron/ipc/project/manager.ts @@ -1,3 +1,4 @@ +import { hasFreshProjectThumbnail } from "./thumbnailFreshness"; import { existsSync, constants as fsConstants, realpathSync } from "node:fs"; import fs from "node:fs/promises"; import path from "node:path"; @@ -335,10 +336,7 @@ export async function buildProjectLibraryEntry( } const thumbnailPath = getProjectThumbnailPath(normalizedPath); - const thumbnailExists = await fs - .access(thumbnailPath, fsConstants.R_OK) - .then(() => true) - .catch(() => false); + const thumbnailExists = await hasFreshProjectThumbnail(thumbnailPath, stats.mtimeMs); return { path: normalizedPath, @@ -352,6 +350,7 @@ export async function buildProjectLibraryEntry( "", ), updatedAt: stats.mtimeMs, + createdAt: stats.birthtimeMs || stats.ctimeMs, thumbnailPath: thumbnailExists ? thumbnailPath : null, isCurrent: Boolean( currentProjectPath && normalizePath(currentProjectPath) === normalizedPath, diff --git a/electron/ipc/project/renameLibraryProject.test.ts b/electron/ipc/project/renameLibraryProject.test.ts new file mode 100644 index 00000000..048b6cfb --- /dev/null +++ b/electron/ipc/project/renameLibraryProject.test.ts @@ -0,0 +1,32 @@ +import fs from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; +import { expect, it } from "vitest"; +import { renameLibraryProject } from "./renameLibraryProject"; + +it("renames a library project with its preview without overwriting another project", async () => { + const dir = await fs.mkdtemp(path.join(os.tmpdir(), "recordly-rename-")); + const original = path.join(dir, "Original.recordly"), + target = path.join(dir, "Renamed.recordly"); + const sidecars = (file: string) => [`${file}.png`]; + try { + await fs.writeFile(original, "project"); + await fs.writeFile(`${original}.png`, "preview"); + await fs.writeFile(target, "keep"); + await expect( + renameLibraryProject(original, "Renamed", [original], sidecars), + ).rejects.toThrow(); + expect(await fs.readFile(target, "utf8")).toBe("keep"); + await fs.rm(target); + await expect( + renameLibraryProject(original, "../escape", [original], sidecars), + ).rejects.toThrow(); + await expect(renameLibraryProject(original, "Renamed", [], sidecars)).rejects.toThrow(); + expect(await renameLibraryProject(original, "Renamed", [original], sidecars)).toBe(target); + expect(await fs.readFile(target, "utf8")).toBe("project"); + expect(await fs.readFile(`${target}.png`, "utf8")).toBe("preview"); + await expect(fs.access(original)).rejects.toThrow(); + } finally { + await fs.rm(dir, { recursive: true, force: true }); + } +}); diff --git a/electron/ipc/project/renameLibraryProject.ts b/electron/ipc/project/renameLibraryProject.ts new file mode 100644 index 00000000..476646f0 --- /dev/null +++ b/electron/ipc/project/renameLibraryProject.ts @@ -0,0 +1,47 @@ +import fs from "node:fs/promises"; +import path from "node:path"; + +export async function renameLibraryProject( + source: string, + name: string, + allowedPaths: string[], + sidecars: (path: string) => string[], +) { + if (!allowedPaths.includes(source)) throw new Error("Project is not in the library"); + const clean = name.trim(); + if ( + !clean || + clean === "." || + clean === ".." || + /[<>:"/\\|?*]/.test(clean) || + [...clean].some((char) => char.charCodeAt(0) < 32) || + /[. ]$/.test(clean) + ) + throw new Error("Choose a valid project name"); + const target = path.join(path.dirname(source), `${clean}${path.extname(source)}`); + if (target === source) return target; + // An exclusive link prevents a rename from overwriting another project. + await fs.link(source, target); + const copied: string[] = []; + try { + const previous = sidecars(source), + next = sidecars(target); + for (let i = 0; i < previous.length; i++) { + try { + await fs.copyFile(previous[i], next[i], fs.constants.COPYFILE_EXCL); + copied.push(next[i]); + } catch (error) { + if ((error as NodeJS.ErrnoException).code !== "ENOENT") throw error; + } + } + await fs.unlink(source); + } catch (error) { + await Promise.all([target, ...copied].map((file) => fs.rm(file, { force: true }))); + throw error; + } + // Auxiliary files can be cleaned up independently once the project has moved. + await Promise.all( + sidecars(source).map((file) => fs.rm(file, { force: true }).catch(() => undefined)), + ); + return target; +} diff --git a/electron/ipc/project/thumbnailFreshness.test.ts b/electron/ipc/project/thumbnailFreshness.test.ts new file mode 100644 index 00000000..69355243 --- /dev/null +++ b/electron/ipc/project/thumbnailFreshness.test.ts @@ -0,0 +1,28 @@ +import fs from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; +import { expect, it } from "vitest"; +import { hasFreshProjectThumbnail } from "./thumbnailFreshness"; + +it("rejects legacy, stale, missing and broken previews while accepting a fresh high-resolution PNG", async () => { + const dir = await fs.mkdtemp(path.join(os.tmpdir(), "recordly-preview-")); + const file = path.join(dir, "preview.png"); + try { + expect(await hasFreshProjectThumbnail(file, 0)).toBe(false); + const header = Buffer.alloc(24); + Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]).copy(header); + header.writeUInt32BE(320, 16); + header.writeUInt32BE(180, 20); + await fs.writeFile(file, header); + expect(await hasFreshProjectThumbnail(file, 0)).toBe(false); + header.writeUInt32BE(1600, 16); + header.writeUInt32BE(1200, 20); + await fs.writeFile(file, header); + expect(await hasFreshProjectThumbnail(file, 0)).toBe(true); + expect(await hasFreshProjectThumbnail(file, Date.now() + 10000)).toBe(false); + await fs.writeFile(file, "broken"); + expect(await hasFreshProjectThumbnail(file, 0)).toBe(false); + } finally { + await fs.rm(dir, { recursive: true, force: true }); + } +}); diff --git a/electron/ipc/project/thumbnailFreshness.ts b/electron/ipc/project/thumbnailFreshness.ts new file mode 100644 index 00000000..00db1986 --- /dev/null +++ b/electron/ipc/project/thumbnailFreshness.ts @@ -0,0 +1,24 @@ +import fs from "node:fs/promises"; + +// Older releases wrote 320px previews. Hide those and previews predating edits; +// the editor replaces them with a full-resolution render when returning home. +export async function hasFreshProjectThumbnail(thumbnailPath: string, projectModifiedAt: number) { + let file: Awaited> | undefined; + try { + file = await fs.open(thumbnailPath, "r"); + const stat = await file.stat(); + if (stat.mtimeMs < projectModifiedAt) return false; + const header = Buffer.alloc(24); + const { bytesRead } = await file.read(header, 0, 24, 0); + return ( + bytesRead === 24 && + header.subarray(0, 8).equals(Buffer.from([137, 80, 78, 71, 13, 10, 26, 10])) && + header.readUInt32BE(16) >= 1600 && + header.readUInt32BE(20) >= 1200 + ); + } catch { + return false; + } finally { + await file?.close(); + } +} diff --git a/electron/ipc/project/trashProjects.test.ts b/electron/ipc/project/trashProjects.test.ts new file mode 100644 index 00000000..fc110734 --- /dev/null +++ b/electron/ipc/project/trashProjects.test.ts @@ -0,0 +1,34 @@ +import { expect, it, vi } from "vitest"; +import { trashLibraryProjects } from "./trashProjects"; +it("rejects paths outside the project library before touching files", async () => { + const trash = vi.fn(); + await expect( + trashLibraryProjects(["/private/tmp/a.recordly", "/private/tmp/private.txt"], { + list: async () => ({ entries: [{ path: "/private/tmp/a.recordly" }] }), + trash, + thumbnailPath: (p) => p + ".png", + }), + ).rejects.toThrow("not in the library"); + expect(trash).not.toHaveBeenCalled(); +}); +it("trashes only selected project files, deduplicates paths, and reports partial failures", async () => { + const trash = vi.fn(async (p: string) => { + if (p.endsWith("b.recordly")) throw Error("locked"); + }); + const result = await trashLibraryProjects( + ["/private/tmp/a.recordly", "/private/tmp/a.recordly", "/private/tmp/b.recordly"], + { + list: async () => ({ + entries: [{ path: "/private/tmp/a.recordly" }, { path: "/private/tmp/b.recordly" }], + }), + trash, + thumbnailPath: (p) => p + ".missing.png", + }, + ); + expect(result.deleted).toEqual(["/private/tmp/a.recordly"]); + expect(result.errors).toEqual(["Could not trash b.recordly"]); + expect(trash.mock.calls.map(([p]) => p)).toEqual([ + "/private/tmp/a.recordly", + "/private/tmp/b.recordly", + ]); +}); diff --git a/electron/ipc/project/trashProjects.ts b/electron/ipc/project/trashProjects.ts new file mode 100644 index 00000000..8ef1e2c8 --- /dev/null +++ b/electron/ipc/project/trashProjects.ts @@ -0,0 +1,45 @@ +import path from "node:path"; +import fs from "node:fs/promises"; +import { getProjectBackupPath } from "./atomicSave"; + +type Dependencies = { + list: () => Promise<{ entries: Array<{ path: string }> }>; + trash: (path: string) => Promise; + thumbnailPath: (path: string) => string; +}; +/** Only library project files may be trashed; referenced recordings are never touched. */ +export async function trashLibraryProjects(paths: unknown, deps: Dependencies) { + if ( + !Array.isArray(paths) || + !paths.length || + paths.length > 500 || + paths.some((p) => typeof p !== "string") + ) + throw new Error("Invalid project selection"); + const allowed = new Set((await deps.list()).entries.map((e) => path.resolve(e.path))); + const selected = [...new Set((paths as string[]).map((p) => path.resolve(p)))]; + if (selected.some((p) => !allowed.has(p))) throw new Error("Project is not in the library"); + const deleted: string[] = []; + const errors: string[] = []; + for (const projectPath of selected) { + try { + await deps.trash(projectPath); + deleted.push(projectPath); + for (const sidecar of [ + deps.thumbnailPath(projectPath), + getProjectBackupPath(projectPath), + ]) { + try { + await fs.access(sidecar); + await deps.trash(sidecar); + } catch (e) { + if ((e as NodeJS.ErrnoException).code !== "ENOENT") + errors.push(`Could not trash project sidecar: ${sidecar}`); + } + } + } catch { + errors.push(`Could not trash ${path.basename(projectPath)}`); + } + } + return { deleted, errors }; +} diff --git a/electron/ipc/recording/library.test.ts b/electron/ipc/recording/library.test.ts index e8dbde70..d44bf102 100644 --- a/electron/ipc/recording/library.test.ts +++ b/electron/ipc/recording/library.test.ts @@ -327,3 +327,11 @@ it("restores on volumes without hard links and preserves conflicts", async () => link.mockRestore(); } }); + +it("Raw includes camera and audio sources without including metadata or symlinks", async () => { + const files = ["screen.mp4", "screen.webcam.mp4", "screen.mic.wav", "screen.system.m4a"]; + for (const name of [...files, "screen.cursor.json"]) await fs.writeFile(path.join(state.root, name), "fixture"); + await fs.symlink(path.join(state.root, "screen.mp4"), path.join(state.root, "linked.mp4")); + expect((await listRecordings(true)).map(entry => entry.name).sort()).toEqual(files.sort()); + expect((await listRecordings()).map(entry => entry.name)).toEqual(["screen.mp4"]); +}); diff --git a/electron/ipc/recording/library.ts b/electron/ipc/recording/library.ts index 8d945248..82684137 100644 --- a/electron/ipc/recording/library.ts +++ b/electron/ipc/recording/library.ts @@ -13,7 +13,7 @@ const isRecording = (name: string) => /\.(mp4|mov|webm|mkv|m4v)$/i.test(name) && !/[.-]webcam[.-]/i.test(name); const batchKey = (paths: string[]) => JSON.stringify([...new Set(paths)].sort()); -export function listRecordings(): Promise { +export function listRecordings(includeSources = false): Promise { const task = mutation.then(async () => { const root = await fs.realpath(await getRecordingsDir()); const server = getMediaServerBaseUrl(); @@ -31,7 +31,7 @@ export function listRecordings(): Promise { } const result: RecordingLibraryEntry[] = []; for (const entry of entries) { - if (!entry.isFile() || !isRecording(entry.name)) continue; + if (!entry.isFile() || !(includeSources ? /\.(mp4|mov|webm|mkv|m4v|wav|m4a|mp3|ogg|flac)$/i.test(entry.name) : isRecording(entry.name))) continue; const filePath = path.join(root, entry.name); const stat = await fs.stat(filePath); if (!stat.size) continue; diff --git a/electron/ipc/register/project.ts b/electron/ipc/register/project.ts index 885e5ddb..0782c8dc 100644 --- a/electron/ipc/register/project.ts +++ b/electron/ipc/register/project.ts @@ -1,3 +1,6 @@ +import { renameLibraryProject } from "../project/renameLibraryProject"; +import { createUntitledProject } from "../project/createUntitledProject"; +import { trashLibraryProjects } from "../project/trashProjects"; import { getRecordingThumbnail } from "../recording/thumbnail"; import { listRecordings, setRecordingsRemoved } from "../recording/library"; import { importRecording, discardRecordingImport } from "../recording/importRecording"; @@ -214,6 +217,15 @@ async function ensureNamedProjectSaveDoesNotOverwriteDifferentProject( } export function registerProjectHandlers() { + ipcMain.handle("rename-library-project", async (_, source: string, name: string) => { + try { + const entries = await listProjectLibraryEntries(); + const target = await renameLibraryProject(source, name, entries.entries.map(entry => entry.path), value => [getProjectThumbnailPath(value), getProjectBackupPath(value)]); + if (currentProjectPath === source) setCurrentProjectPath(target); + await rememberRecentProject(target); + return {success: true, path: target}; + } catch(error) { return {success: false, error: String(error)}; } + }); const imports = new Map(); const pendingImports = new Map>(); const watchedImportSenders = new WeakSet(); @@ -258,9 +270,9 @@ export function registerProjectHandlers() { return { success: false, error: String(error) }; } }); - ipcMain.handle("list-recordings", async () => { + ipcMain.handle("list-recordings", async (_, includeSources?: boolean) => { try { - return { success: true, value: await listRecordings() }; + return { success: true, value: await listRecordings(includeSources === true) }; } catch (error) { return { success: false, error: String(error) }; } @@ -674,6 +686,48 @@ export function registerProjectHandlers() { } }); + ipcMain.handle( + "create-project-file", + async (_, projectData: unknown, thumbnailDataUrl?: string | null) => { + try { + const prepared = ensureProjectDataHasProjectId(projectData); + const target = await createUntitledProject( + await getProjectsDir(), + JSON.stringify(prepared.projectData, null, 2), + ); + setCurrentProjectPath(target); + await rememberRecentProject(target); + try { + await saveProjectThumbnail(target, thumbnailDataUrl); + } catch (error) { + console.warn("Could not save project thumbnail", error); + } + return { success: true, path: target, projectId: prepared.projectId }; + } catch (error) { + return { success: false, message: String(error) }; + } + }, + ); + ipcMain.handle("trash-project-files", async (_, paths: unknown) => { + try { + const result = await trashLibraryProjects(paths, { + list: listProjectLibraryEntries, + trash: (filePath) => shell.trashItem(filePath), + thumbnailPath: getProjectThumbnailPath, + }); + if (currentProjectPath && result.deleted.includes(path.resolve(currentProjectPath))) + setCurrentProjectPath(null); + await saveRecentProjectPaths( + (await loadRecentProjectPaths()).filter( + (p) => !result.deleted.includes(path.resolve(p)), + ), + ); + return { success: result.errors.length === 0, ...result }; + } catch (error) { + return { success: false, deleted: [], errors: [String(error)] }; + } + }); + ipcMain.handle("list-project-files", async () => { try { const library = await listProjectLibraryEntries(); diff --git a/electron/ipc/register/sources.ts b/electron/ipc/register/sources.ts index ba40df16..25dac821 100644 --- a/electron/ipc/register/sources.ts +++ b/electron/ipc/register/sources.ts @@ -1,7 +1,12 @@ +import { createRecordingEditorNavigation } from "../../recordingEditorNavigation"; import { execFile } from "node:child_process"; import { promisify } from "node:util"; import { app, BrowserWindow, desktopCapturer, ipcMain, systemPreferences } from "electron"; -import { reassertHudOverlayMousePassthrough } from "../../windows"; +import { + createHudOverlayWindow, + getHudOverlayWindow, + reassertHudOverlayMousePassthrough, +} from "../../windows"; import { ALLOW_RECORDLY_WINDOW_CAPTURE } from "../constants"; import { getNativeMacWindowSources, @@ -119,6 +124,7 @@ export function registerSourceHandlers({ createSourceSelectorWindow: () => BrowserWindow; getSourceSelectorWindow: () => BrowserWindow | null; }) { + const recordingNavigation = createRecordingEditorNavigation(createEditorWindow); ipcMain.handle("get-sources", async (_, opts) => { const cacheKey = JSON.stringify({ types: opts?.types, @@ -589,12 +595,22 @@ body{background:transparent;overflow:hidden;width:100vw;height:100vh} } createSourceSelectorWindow(); }); + ipcMain.handle("show-recording-hud", (event) => { + recordingNavigation.setReturnWindow(BrowserWindow.fromWebContents(event.sender)); + const hud = getHudOverlayWindow(); + if (hud && !hud.isDestroyed()) { + hud.show(); + hud.focus(); + } else { + createHudOverlayWindow(); + } + }); ipcMain.handle("switch-to-editor", () => { console.log("[switch-to-editor] Opening editor window"); const sourceSelectorWin = getSourceSelectorWindow(); if (sourceSelectorWin && !sourceSelectorWin.isDestroyed()) { sourceSelectorWin.close(); } - createEditorWindow(); + recordingNavigation.open(); }); } diff --git a/electron/ipc/types.ts b/electron/ipc/types.ts index 58f5425b..7f022136 100644 --- a/electron/ipc/types.ts +++ b/electron/ipc/types.ts @@ -65,6 +65,7 @@ export type RecordingSessionManifest = { export type ProjectLibraryEntry = { path: string; name: string; + createdAt?: number; updatedAt: number; thumbnailPath: string | null; isCurrent: boolean; diff --git a/electron/preload.ts b/electron/preload.ts index 3e977e0a..8665528b 100644 --- a/electron/preload.ts +++ b/electron/preload.ts @@ -201,7 +201,8 @@ contextBridge.exposeInMainWorld("electronAPI", { }, getEditorMode: () => ipcRenderer.invoke("get-editor-mode"), onEditorModeChanged: (callback: (inEditor: boolean) => void) => { - const listener = (_event: Electron.IpcRendererEvent, inEditor: boolean) => callback(inEditor); + const listener = (_event: Electron.IpcRendererEvent, inEditor: boolean) => + callback(inEditor); ipcRenderer.on("editor-mode-changed", listener); return () => ipcRenderer.removeListener("editor-mode-changed", listener); }, @@ -512,6 +513,11 @@ contextBridge.exposeInMainWorld("electronAPI", { getSources: async (opts: Electron.SourcesOptions) => { return await ipcRenderer.invoke("get-sources", opts); }, + showRecordingHud: () => ipcRenderer.invoke("show-recording-hud"), + createProjectFile: (data: unknown, thumbnail?: string | null) => + ipcRenderer.invoke("create-project-file", data, thumbnail), + renameLibraryProject: (path: string, name: string) => ipcRenderer.invoke("rename-library-project", path, name), + trashProjectFiles: (paths: string[]) => ipcRenderer.invoke("trash-project-files", paths), switchToEditor: () => { return ipcRenderer.invoke("switch-to-editor"); }, @@ -798,7 +804,7 @@ contextBridge.exposeInMainWorld("electronAPI", { finishRecordingImport: (keepPath: string, commit?: boolean) => ipcRenderer.invoke("finish-recording-import", keepPath, commit), cancelRecordingImport: () => ipcRenderer.invoke("cancel-recording-import"), - listRecordings: () => ipcRenderer.invoke("list-recordings"), + listRecordings: (includeSources?: boolean) => ipcRenderer.invoke("list-recordings", includeSources), setRecordingsRemoved: (paths: string[], removed: boolean) => ipcRenderer.invoke("set-recordings-removed", paths, removed), importRecording: ( diff --git a/electron/recordingEditorNavigation.test.ts b/electron/recordingEditorNavigation.test.ts new file mode 100644 index 00000000..ab5860d1 --- /dev/null +++ b/electron/recordingEditorNavigation.test.ts @@ -0,0 +1,31 @@ +import type { BrowserWindow } from "electron"; +import { expect, it, vi } from "vitest"; +import { createRecordingEditorNavigation } from "./recordingEditorNavigation"; + +it("returns a finished HUD recording to its originating editor and consumes the destination", () => { + const create = vi.fn(); + const target = { + isDestroyed: () => false, + isMinimized: () => true, + reload: vi.fn(), + restore: vi.fn(), + show: vi.fn(), + focus: vi.fn(), + }; + const navigation = createRecordingEditorNavigation(create); + navigation.setReturnWindow(target as unknown as BrowserWindow); + navigation.open(); + expect(target.reload).toHaveBeenCalledOnce(); + expect(target.restore).toHaveBeenCalledOnce(); + expect(target.focus).toHaveBeenCalledOnce(); + expect(create).not.toHaveBeenCalled(); + navigation.open(); + expect(create).toHaveBeenCalledOnce(); +}); +it("opens an editor if the originating dashboard has closed", () => { + const create = vi.fn(); + const navigation = createRecordingEditorNavigation(create); + navigation.setReturnWindow({ isDestroyed: () => true } as BrowserWindow); + navigation.open(); + expect(create).toHaveBeenCalledOnce(); +}); diff --git a/electron/recordingEditorNavigation.ts b/electron/recordingEditorNavigation.ts new file mode 100644 index 00000000..a241de53 --- /dev/null +++ b/electron/recordingEditorNavigation.ts @@ -0,0 +1,24 @@ +import type { BrowserWindow } from "electron"; + +export function createRecordingEditorNavigation(createEditor: () => void) { + let returnWindow: BrowserWindow | null = null; + return { + setReturnWindow(window: BrowserWindow | null) { + returnWindow = window; + }, + open() { + const target = returnWindow; + returnWindow = null; + if (!target || target.isDestroyed()) { + createEditor(); + return; + } + // Home flushed this editor's project before launching the HUD. Reload + // from the finalized recording session, clearing the previous project UI. + target.reload(); + if (target.isMinimized()) target.restore(); + target.show(); + target.focus(); + }, + }; +} diff --git a/package-lock.json b/package-lock.json index 6dac10a9..7a2f7e9d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "hasInstallScript": true, "dependencies": { "@phosphor-icons/react": "^2.1.10", + "@solar-icons/react": "^2.3.0", "@supabase/supabase-js": "^2.116.0", "capturekit": "^1.0.13", "electron-updater": "^6.8.3", @@ -2405,6 +2406,19 @@ "url": "https://github.com/sindresorhus/is?sponsor=1" } }, + "node_modules/@solar-icons/react": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solar-icons/react/-/react-2.3.0.tgz", + "integrity": "sha512-ihrnDrdksuX76wsea9i0jlEtln0Vgkzj0TxhIJ2JRWhDSwvX+ItXT3KR30C6ldMmFrEMcbpRCfGxOIHNlOZr0g==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "react": ">= 16.8", + "react-dom": ">= 16.8" + } + }, "node_modules/@spectrum-icons/ui": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/@spectrum-icons/ui/-/ui-3.7.2.tgz", diff --git a/package.json b/package.json index e0a6c11b..168b0919 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ }, "dependencies": { "@phosphor-icons/react": "^2.1.10", + "@solar-icons/react": "^2.3.0", "@supabase/supabase-js": "^2.116.0", "capturekit": "^1.0.13", "electron-updater": "^6.8.3", diff --git a/public/announcements/placeholder-1.svg b/public/announcements/placeholder-1.svg new file mode 100644 index 00000000..8aa9f2ad --- /dev/null +++ b/public/announcements/placeholder-1.svg @@ -0,0 +1 @@ +ANNOUNCEMENTSSpace for what’s next. diff --git a/public/announcements/placeholder-2.svg b/public/announcements/placeholder-2.svg new file mode 100644 index 00000000..78293785 --- /dev/null +++ b/public/announcements/placeholder-2.svg @@ -0,0 +1 @@ +COMING SOONMore to explore. diff --git a/src/components/announcements/AnnouncementDialog.tsx b/src/components/announcements/AnnouncementDialog.tsx index ca04d2ae..519e039d 100644 --- a/src/components/announcements/AnnouncementDialog.tsx +++ b/src/components/announcements/AnnouncementDialog.tsx @@ -1,4 +1,4 @@ -import { ArrowLeft, ArrowRight, ArrowSquareOut, Megaphone } from "@phosphor-icons/react"; +import { ArrowLeft, ArrowRight, ArrowSquareOut, Megaphone } from "@/components/ui/icons"; import { useEffect, useRef, useState } from "react"; import { toast } from "@/components/ui/toast"; import { BUNDLED_ANNOUNCEMENT_FEED } from "@/content/announcements"; diff --git a/src/components/announcements/EditorAnnouncementBanner.tsx b/src/components/announcements/EditorAnnouncementBanner.tsx index 8d2af32b..d3f419ba 100644 --- a/src/components/announcements/EditorAnnouncementBanner.tsx +++ b/src/components/announcements/EditorAnnouncementBanner.tsx @@ -1,4 +1,4 @@ -import { ArrowRight, ArrowSquareOut, X } from "@phosphor-icons/react"; +import { ArrowRight, ArrowSquareOut, X } from "@/components/ui/icons"; import { useEffect, useRef, useState } from "react"; import { toast } from "@/components/ui/toast"; import { Button } from "@/components/ui/button"; diff --git a/src/components/auth/RecordlySignInDialog.tsx b/src/components/auth/RecordlySignInDialog.tsx index 6c9657cc..c6f2cdef 100644 --- a/src/components/auth/RecordlySignInDialog.tsx +++ b/src/components/auth/RecordlySignInDialog.tsx @@ -1,5 +1,5 @@ import { useI18n } from "@/contexts/I18nContext"; -import { GoogleLogo, SignOut, XLogo } from "@phosphor-icons/react"; +import { GoogleLogo, SignOut, XLogo } from "@/components/ui/icons"; import type { User } from "@supabase/supabase-js"; import { type FormEvent, useEffect, useState } from "react"; import { diff --git a/src/components/launch/LaunchWindow.tsx b/src/components/launch/LaunchWindow.tsx index ec7f7af7..5a28bee0 100644 --- a/src/components/launch/LaunchWindow.tsx +++ b/src/components/launch/LaunchWindow.tsx @@ -10,7 +10,7 @@ import { VideoCameraIcon, VideoCameraSlashIcon, XIcon, -} from "@phosphor-icons/react"; +} from "@/components/ui/icons"; import { AnimatePresence, motion } from "motion/react"; import { useEffect, useRef } from "react"; import { RxDragHandleDots2 } from "react-icons/rx"; @@ -212,7 +212,6 @@ function LaunchWindowContent() { paused={paused} microphoneEnabled={microphoneEnabled} elapsed={elapsed} - onToggleMicrophone={() => setMicrophoneEnabled(!microphoneEnabled)} onPauseResume={paused ? resumeRecording : pauseRecording} onStopRecording={toggleRecording} onHideHud={() => window.electronAPI?.hudOverlayHide?.()} @@ -250,7 +249,7 @@ function LaunchWindowContent() { } /> - + )} @@ -364,7 +363,7 @@ function LaunchWindowContent() {

- +
void; onPauseResume: () => void; onStopRecording: () => void; onHideHud: () => void; onCancelRecording: () => void; formatTime: (seconds: number) => string; } - -export const RecordingControls = ({ +export function RecordingControls({ paused, microphoneEnabled, elapsed, - onToggleMicrophone, onPauseResume, onStopRecording, onHideHud, onCancelRecording, formatTime, -}: RecordingControlsProps) => { +}: RecordingControlsProps) { const t = useScopedT("launch"); - - const memoizedControls = useMemo(() => { - return ( - <> -
-
- - {paused ? t("recording.paused") : t("recording.rec")} - -
- + const actionClass = `size-9 min-w-9 rounded-full ${styles.electronNoDrag}`; + return ( +
+
+ className={`size-2 rounded-full ${paused ? "bg-warning" : `bg-danger ${styles.recDotBlink}`}`} + /> + {formatTime(elapsed)} - - - - - - - - - + {paused && ( + {t("recording.paused")} + )} +
+ - - - + {t("recording.micToggleDisabledTip")} + + + + + {paused ? t("recording.resume") : t("recording.pause")} + + + + + {t("recording.stop")} + + + - + {t("recording.hideHud")} + + - - ); - }, [ - paused, - microphoneEnabled, - elapsed, - onToggleMicrophone, - onPauseResume, - onStopRecording, - onHideHud, - onCancelRecording, - formatTime, - t, - ]); - - return memoizedControls; -}; + {t("recording.cancel")} + +
+ ); +} diff --git a/src/components/launch/SourceSelector.tsx b/src/components/launch/SourceSelector.tsx index c47b81ed..c5906697 100644 --- a/src/components/launch/SourceSelector.tsx +++ b/src/components/launch/SourceSelector.tsx @@ -1,5 +1,5 @@ import { ToggleButton } from "@heroui/react"; -import { AppWindowIcon, CaretUpIcon, MonitorIcon } from "@phosphor-icons/react"; +import { AppWindowIcon, CaretUpIcon, MonitorIcon } from "@/components/ui/icons"; import * as React from "react"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { Button } from "@/components/ui/button"; diff --git a/src/components/launch/UpdateToastWindow.tsx b/src/components/launch/UpdateToastWindow.tsx index 8eeb1be0..c6dcc08f 100644 --- a/src/components/launch/UpdateToastWindow.tsx +++ b/src/components/launch/UpdateToastWindow.tsx @@ -4,7 +4,7 @@ import { CheckCircleIcon, DownloadSimpleIcon, WarningCircleIcon, -} from "@phosphor-icons/react"; +} from "@/components/ui/icons"; import { useEffect, useState } from "react"; import { Button } from "@/components/ui/button"; import { useI18n } from "@/contexts/I18nContext"; diff --git a/src/components/launch/popovers/CountdownPopover.tsx b/src/components/launch/popovers/CountdownPopover.tsx index a0c4b669..9462a227 100644 --- a/src/components/launch/popovers/CountdownPopover.tsx +++ b/src/components/launch/popovers/CountdownPopover.tsx @@ -1,4 +1,4 @@ -import { TimerIcon } from "@phosphor-icons/react"; +import { TimerIcon } from "@/components/ui/icons"; import type { ReactElement } from "react"; import { useScopedT } from "@/contexts/I18nContext"; import styles from "../LaunchWindow.module.css"; diff --git a/src/components/launch/popovers/MicPopover.tsx b/src/components/launch/popovers/MicPopover.tsx index cc5eb0f0..52ff84c7 100644 --- a/src/components/launch/popovers/MicPopover.tsx +++ b/src/components/launch/popovers/MicPopover.tsx @@ -1,4 +1,4 @@ -import { MicrophoneSlashIcon, SpeakerHighIcon, SpeakerXIcon } from "@phosphor-icons/react"; +import { MicrophoneSlashIcon, SpeakerHighIcon, SpeakerXIcon } from "@/components/ui/icons"; import { useScopedT } from "@/contexts/I18nContext"; import { DropdownItem, HudPopover, MicDeviceRow } from "./PopoverScaffold"; import { useLaunchPopoverCoordinator } from "./LaunchPopoverCoordinator"; diff --git a/src/components/launch/popovers/MorePopover.tsx b/src/components/launch/popovers/MorePopover.tsx index 9a5a5290..ebe41780 100644 --- a/src/components/launch/popovers/MorePopover.tsx +++ b/src/components/launch/popovers/MorePopover.tsx @@ -8,7 +8,7 @@ import { SunIcon, MoonIcon, DesktopIcon, -} from "@phosphor-icons/react"; +} from "@/components/ui/icons"; import type { ReactElement } from "react"; import { useI18n } from "@/contexts/I18nContext"; import { useScopedT } from "@/contexts/I18nContext"; diff --git a/src/components/launch/popovers/PopoverScaffold.tsx b/src/components/launch/popovers/PopoverScaffold.tsx index 848ca7b2..e72546cd 100644 --- a/src/components/launch/popovers/PopoverScaffold.tsx +++ b/src/components/launch/popovers/PopoverScaffold.tsx @@ -1,6 +1,6 @@ import { ToggleButton } from "@heroui/react"; import { Button } from "@/components/ui/button"; -import { MicrophoneIcon, MicrophoneSlashIcon } from "@phosphor-icons/react"; +import { MicrophoneIcon, MicrophoneSlashIcon } from "@/components/ui/icons"; import type { ReactElement, ReactNode } from "react"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; import { useAudioLevelMeter } from "@/hooks/useAudioLevelMeter"; diff --git a/src/components/launch/popovers/WebcamPopover.tsx b/src/components/launch/popovers/WebcamPopover.tsx index 0c04ed89..6a603697 100644 --- a/src/components/launch/popovers/WebcamPopover.tsx +++ b/src/components/launch/popovers/WebcamPopover.tsx @@ -3,7 +3,7 @@ import { EyeSlash as EyeOff, VideoCamera as Video, VideoCameraSlash as VideoOff, -} from "@phosphor-icons/react"; +} from "@/components/ui/icons"; import { useScopedT } from "@/contexts/I18nContext"; import { DropdownItem, HudPopover } from "./PopoverScaffold"; import { useLaunchPopoverCoordinator } from "./LaunchPopoverCoordinator"; diff --git a/src/components/ui/account-avatar.test.ts b/src/components/ui/account-avatar.test.ts new file mode 100644 index 00000000..e1665ba5 --- /dev/null +++ b/src/components/ui/account-avatar.test.ts @@ -0,0 +1,24 @@ +import { expect, it } from "vitest"; +import type { User } from "@supabase/supabase-js"; +import { getAccountProfile } from "./account-avatar"; +it("uses OAuth profile photos and falls back to name or email initials", () => { + const user = { + email: "alex@example.com", + user_metadata: { full_name: "Alex Smith", avatar_url: "https://example.com/photo.jpg" }, + } as User; + expect(getAccountProfile(user)).toEqual({ + name: "Alex Smith", + initials: "AS", + picture: "https://example.com/photo.jpg", + }); + expect( + getAccountProfile({ ...user, user_metadata: { picture: "https://example.com/google.jpg" } }) + .picture, + ).toBe("https://example.com/google.jpg"); + expect(getAccountProfile({ ...user, user_metadata: {} })).toEqual({ + name: "alex@example.com", + initials: "A", + picture: undefined, + }); + expect(getAccountProfile(null).initials).toBe("LP"); +}); diff --git a/src/components/ui/account-avatar.tsx b/src/components/ui/account-avatar.tsx new file mode 100644 index 00000000..d3f8f211 --- /dev/null +++ b/src/components/ui/account-avatar.tsx @@ -0,0 +1,52 @@ +import { Avatar } from "@heroui/react"; +import { createContext, useContext } from "react"; +import type { User } from "@supabase/supabase-js"; + +export const AccountProfileContext = createContext(null); +export function getAccountProfile(user: User | null, fallback?: string) { + const metadata = user?.user_metadata; + const name = [metadata?.full_name, metadata?.name, user?.email, fallback, "Local profile"].find( + (value) => typeof value === "string" && value.trim(), + ) as string; + const initials = name + .split("@")[0] + .split(/[\s._-]+/) + .filter(Boolean) + .slice(0, 2) + .map((part) => part[0]) + .join("") + .toUpperCase(); + const picture = [metadata?.avatar_url, metadata?.picture].find( + (value) => typeof value === "string" && /^https?:\/\//.test(value), + ); + return { name, initials, picture }; +} +export function AccountAvatar({ + label, + className = "", + user, +}: { + label?: string; + className?: string; + user?: User | null; +}) { + const context = useContext(AccountProfileContext); + const profile = getAccountProfile(user === undefined ? context : user, label); + return ( + + {profile.picture && ( + + )} + + {profile.initials} + + + ); +} diff --git a/src/components/ui/icons.tsx b/src/components/ui/icons.tsx new file mode 100644 index 00000000..bbc4015f --- /dev/null +++ b/src/components/ui/icons.tsx @@ -0,0 +1,298 @@ +import type { IconProps as SolarIconProps } from "@solar-icons/react/lib/types"; +import type { ComponentType, SVGProps } from "react"; +type IconProps = SVGProps & { + size?: string | number; + weight?: "regular" | "bold" | "fill" | "duotone" | "thin" | "light"; + mirrored?: boolean; +}; +// Outline and filled states always come from the same Solar icon. +const solar = + (Linear: ComponentType, Bold: ComponentType, slash = false) => + ({ weight, mirrored, size, ...props }: IconProps) => { + const Icon = weight === "fill" ? Bold : Linear; + const style = { ...props.style, ...(mirrored ? { transform: "scaleX(-1)" } : {}) }; + if (slash) + return ( + + + + + ); + return ( + + ); + }; +import { AddIcon as AddLinear } from "@solar-icons/react/linear/add"; +import { AddIcon as AddBold } from "@solar-icons/react/bold/add"; +import { AlignHorizontalCenterIcon as AlignHorizontalCenterLinear } from "@solar-icons/react/linear/align-horizontal-center"; +import { AlignHorizontalCenterIcon as AlignHorizontalCenterBold } from "@solar-icons/react/bold/align-horizontal-center"; +import { AlignLeftIcon as AlignLeftLinear } from "@solar-icons/react/linear/align-left"; +import { AlignLeftIcon as AlignLeftBold } from "@solar-icons/react/bold/align-left"; +import { AlignRightIcon as AlignRightLinear } from "@solar-icons/react/linear/align-right"; +import { AlignRightIcon as AlignRightBold } from "@solar-icons/react/bold/align-right"; +import { AltArrowDownIcon as AltArrowDownLinear } from "@solar-icons/react/linear/alt-arrow-down"; +import { AltArrowDownIcon as AltArrowDownBold } from "@solar-icons/react/bold/alt-arrow-down"; +import { AltArrowUpIcon as AltArrowUpLinear } from "@solar-icons/react/linear/alt-arrow-up"; +import { AltArrowUpIcon as AltArrowUpBold } from "@solar-icons/react/bold/alt-arrow-up"; +import { ArrowLeftIcon as ArrowLeftLinear } from "@solar-icons/react/linear/arrow-left"; +import { ArrowLeftIcon as ArrowLeftBold } from "@solar-icons/react/bold/arrow-left"; +import { ArrowRightIcon as ArrowRightLinear } from "@solar-icons/react/linear/arrow-right"; +import { ArrowRightIcon as ArrowRightBold } from "@solar-icons/react/bold/arrow-right"; +import { BookmarkIcon as BookmarkLinear } from "@solar-icons/react/linear/bookmark"; +import { BookmarkIcon as BookmarkBold } from "@solar-icons/react/bold/bookmark"; +import { BranchingPathsUpIcon as BranchingPathsUpLinear } from "@solar-icons/react/linear/branching-paths-up"; +import { BranchingPathsUpIcon as BranchingPathsUpBold } from "@solar-icons/react/bold/branching-paths-up"; +import { CameraIcon as CameraLinear } from "@solar-icons/react/linear/camera"; +import { CameraIcon as CameraBold } from "@solar-icons/react/bold/camera"; +import { ChatRoundIcon as ChatRoundLinear } from "@solar-icons/react/linear/chat-round"; +import { ChatRoundIcon as ChatRoundBold } from "@solar-icons/react/bold/chat-round"; +import { ChatRoundDotsIcon as ChatRoundDotsLinear } from "@solar-icons/react/linear/chat-round-dots"; +import { ChatRoundDotsIcon as ChatRoundDotsBold } from "@solar-icons/react/bold/chat-round-dots"; +import { CheckIcon as CheckLinear } from "@solar-icons/react/linear/check"; +import { CheckIcon as CheckBold } from "@solar-icons/react/bold/check"; +import { CheckCircleIcon as CheckCircleLinear } from "@solar-icons/react/linear/check-circle"; +import { CheckCircleIcon as CheckCircleBold } from "@solar-icons/react/bold/check-circle"; +import { ClapperboardIcon as ClapperboardLinear } from "@solar-icons/react/linear/clapperboard"; +import { ClapperboardIcon as ClapperboardBold } from "@solar-icons/react/bold/clapperboard"; +import { CloseIcon as CloseLinear } from "@solar-icons/react/linear/close"; +import { CloseIcon as CloseBold } from "@solar-icons/react/bold/close"; +import { CloudIcon as CloudLinear } from "@solar-icons/react/linear/cloud"; +import { CloudIcon as CloudBold } from "@solar-icons/react/bold/cloud"; +import { CloudUploadIcon as CloudUploadLinear } from "@solar-icons/react/linear/cloud-upload"; +import { CloudUploadIcon as CloudUploadBold } from "@solar-icons/react/bold/cloud-upload"; +import { CopyIcon as CopyLinear } from "@solar-icons/react/linear/copy"; +import { CopyIcon as CopyBold } from "@solar-icons/react/bold/copy"; +import { CropIcon as CropLinear } from "@solar-icons/react/linear/crop"; +import { CropIcon as CropBold } from "@solar-icons/react/bold/crop"; +import { CursorIcon as CursorLinear } from "@solar-icons/react/linear/cursor"; +import { CursorIcon as CursorBold } from "@solar-icons/react/bold/cursor"; +import { DangerCircleIcon as DangerCircleLinear } from "@solar-icons/react/linear/danger-circle"; +import { DangerCircleIcon as DangerCircleBold } from "@solar-icons/react/bold/danger-circle"; +import { DownloadIcon as DownloadLinear } from "@solar-icons/react/linear/download"; +import { DownloadIcon as DownloadBold } from "@solar-icons/react/bold/download"; +import { EyeIcon as EyeLinear } from "@solar-icons/react/linear/eye"; +import { EyeIcon as EyeBold } from "@solar-icons/react/bold/eye"; +import { EyeClosedIcon as EyeClosedLinear } from "@solar-icons/react/linear/eye-closed"; +import { EyeClosedIcon as EyeClosedBold } from "@solar-icons/react/bold/eye-closed"; +import { FileIcon as FileLinear } from "@solar-icons/react/linear/file"; +import { FileIcon as FileBold } from "@solar-icons/react/bold/file"; +import { FolderIcon as FolderLinear } from "@solar-icons/react/linear/folder"; +import { FolderIcon as FolderBold } from "@solar-icons/react/bold/folder"; +import { FolderOpenIcon as FolderOpenLinear } from "@solar-icons/react/linear/folder-open"; +import { FolderOpenIcon as FolderOpenBold } from "@solar-icons/react/bold/folder-open"; +import { FullScreenIcon as FullScreenLinear } from "@solar-icons/react/linear/full-screen"; +import { FullScreenIcon as FullScreenBold } from "@solar-icons/react/bold/full-screen"; +import { GalleryIcon as GalleryLinear } from "@solar-icons/react/linear/gallery"; +import { GalleryIcon as GalleryBold } from "@solar-icons/react/bold/gallery"; +import { HomeIcon as HomeLinear } from "@solar-icons/react/linear/home"; +import { HomeIcon as HomeBold } from "@solar-icons/react/bold/home"; +import { InfoCircleIcon as InfoCircleLinear } from "@solar-icons/react/linear/info-circle"; +import { InfoCircleIcon as InfoCircleBold } from "@solar-icons/react/bold/info-circle"; +import { KeyboardIcon as KeyboardLinear } from "@solar-icons/react/linear/keyboard"; +import { KeyboardIcon as KeyboardBold } from "@solar-icons/react/bold/keyboard"; +import { LogoutIcon as LogoutLinear } from "@solar-icons/react/linear/logout"; +import { LogoutIcon as LogoutBold } from "@solar-icons/react/bold/logout"; +import { MagicWand3Icon as MagicWand3Linear } from "@solar-icons/react/linear/magic-wand-3"; +import { MagicWand3Icon as MagicWand3Bold } from "@solar-icons/react/bold/magic-wand-3"; +import { MagnifierIcon as MagnifierLinear } from "@solar-icons/react/linear/magnifier"; +import { MagnifierIcon as MagnifierBold } from "@solar-icons/react/bold/magnifier"; +import { MagnifierZoomInIcon as MagnifierZoomInLinear } from "@solar-icons/react/linear/magnifier-zoom-in"; +import { MagnifierZoomInIcon as MagnifierZoomInBold } from "@solar-icons/react/bold/magnifier-zoom-in"; +import { MenuDotsIcon as MenuDotsLinear } from "@solar-icons/react/linear/menu-dots"; +import { MenuDotsIcon as MenuDotsBold } from "@solar-icons/react/bold/menu-dots"; +import { MenuDotsVerticalIcon as MenuDotsVerticalLinear } from "@solar-icons/react/linear/menu-dots-vertical"; +import { MenuDotsVerticalIcon as MenuDotsVerticalBold } from "@solar-icons/react/bold/menu-dots-vertical"; +import { MicrophoneIcon as MicrophoneLinear } from "@solar-icons/react/linear/microphone"; +import { MicrophoneIcon as MicrophoneBold } from "@solar-icons/react/bold/microphone"; +import { MinusIcon as MinusLinear } from "@solar-icons/react/linear/minus"; +import { MinusIcon as MinusBold } from "@solar-icons/react/bold/minus"; +import { MonitorIcon as MonitorLinear } from "@solar-icons/react/linear/monitor"; +import { MonitorIcon as MonitorBold } from "@solar-icons/react/bold/monitor"; +import { MoonIcon as MoonLinear } from "@solar-icons/react/linear/moon"; +import { MoonIcon as MoonBold } from "@solar-icons/react/bold/moon"; +import { MusicNotesIcon as MusicNotesLinear } from "@solar-icons/react/linear/music-notes"; +import { MusicNotesIcon as MusicNotesBold } from "@solar-icons/react/bold/music-notes"; +import { NotificationUnreadIcon as NotificationUnreadLinear } from "@solar-icons/react/linear/notification-unread"; +import { NotificationUnreadIcon as NotificationUnreadBold } from "@solar-icons/react/bold/notification-unread"; +import { PaletteIcon as PaletteLinear } from "@solar-icons/react/linear/palette"; +import { PaletteIcon as PaletteBold } from "@solar-icons/react/bold/palette"; +import { PauseIcon as PauseLinear } from "@solar-icons/react/linear/pause"; +import { PauseIcon as PauseBold } from "@solar-icons/react/bold/pause"; +import { PlayIcon as PlayLinear } from "@solar-icons/react/linear/play"; +import { PlayIcon as PlayBold } from "@solar-icons/react/bold/play"; +import { QuestionCircleIcon as QuestionCircleLinear } from "@solar-icons/react/linear/question-circle"; +import { QuestionCircleIcon as QuestionCircleBold } from "@solar-icons/react/bold/question-circle"; +import { RefreshIcon as RefreshLinear } from "@solar-icons/react/linear/refresh"; +import { RefreshIcon as RefreshBold } from "@solar-icons/react/bold/refresh"; +import { RestartIcon as RestartLinear } from "@solar-icons/react/linear/restart"; +import { RestartIcon as RestartBold } from "@solar-icons/react/bold/restart"; +import { ScissorsIcon as ScissorsLinear } from "@solar-icons/react/linear/scissors"; +import { ScissorsIcon as ScissorsBold } from "@solar-icons/react/bold/scissors"; +import { SettingsIcon as SettingsLinear } from "@solar-icons/react/linear/settings"; +import { SettingsIcon as SettingsBold } from "@solar-icons/react/bold/settings"; +import { ShareIcon as ShareLinear } from "@solar-icons/react/linear/share"; +import { ShareIcon as ShareBold } from "@solar-icons/react/bold/share"; +import { SkipNextIcon as SkipNextLinear } from "@solar-icons/react/linear/skip-next"; +import { SkipNextIcon as SkipNextBold } from "@solar-icons/react/bold/skip-next"; +import { SkipPreviousIcon as SkipPreviousLinear } from "@solar-icons/react/linear/skip-previous"; +import { SkipPreviousIcon as SkipPreviousBold } from "@solar-icons/react/bold/skip-previous"; +import { SpeedometerMiddleIcon as SpeedometerMiddleLinear } from "@solar-icons/react/linear/speedometer-middle"; +import { SpeedometerMiddleIcon as SpeedometerMiddleBold } from "@solar-icons/react/bold/speedometer-middle"; +import { SquareTopDownIcon as SquareTopDownLinear } from "@solar-icons/react/linear/square-top-down"; +import { SquareTopDownIcon as SquareTopDownBold } from "@solar-icons/react/bold/square-top-down"; +import { StopwatchIcon as StopwatchLinear } from "@solar-icons/react/linear/stopwatch"; +import { StopwatchIcon as StopwatchBold } from "@solar-icons/react/bold/stopwatch"; +import { SubtitlesIcon as SubtitlesLinear } from "@solar-icons/react/linear/subtitles"; +import { SubtitlesIcon as SubtitlesBold } from "@solar-icons/react/bold/subtitles"; +import { SunIcon as SunLinear } from "@solar-icons/react/linear/sun"; +import { SunIcon as SunBold } from "@solar-icons/react/bold/sun"; +import { TextBoldIcon as TextBoldLinear } from "@solar-icons/react/linear/text-bold"; +import { TextBoldIcon as TextBoldBold } from "@solar-icons/react/bold/text-bold"; +import { TextFieldIcon as TextFieldLinear } from "@solar-icons/react/linear/text-field"; +import { TextFieldIcon as TextFieldBold } from "@solar-icons/react/bold/text-field"; +import { TextItalicIcon as TextItalicLinear } from "@solar-icons/react/linear/text-italic"; +import { TextItalicIcon as TextItalicBold } from "@solar-icons/react/bold/text-italic"; +import { TextUnderlineIcon as TextUnderlineLinear } from "@solar-icons/react/linear/text-underline"; +import { TextUnderlineIcon as TextUnderlineBold } from "@solar-icons/react/bold/text-underline"; +import { TranslationIcon as TranslationLinear } from "@solar-icons/react/linear/translation"; +import { TranslationIcon as TranslationBold } from "@solar-icons/react/bold/translation"; +import { TrashBinTrashIcon as TrashBinTrashLinear } from "@solar-icons/react/linear/trash-bin-trash"; +import { TrashBinTrashIcon as TrashBinTrashBold } from "@solar-icons/react/bold/trash-bin-trash"; +import { UploadIcon as UploadLinear } from "@solar-icons/react/linear/upload"; +import { UploadIcon as UploadBold } from "@solar-icons/react/bold/upload"; +import { UserIcon as UserLinear } from "@solar-icons/react/linear/user"; +import { UserIcon as UserBold } from "@solar-icons/react/bold/user"; +import { UserCircleIcon as UserCircleLinear } from "@solar-icons/react/linear/user-circle"; +import { UserCircleIcon as UserCircleBold } from "@solar-icons/react/bold/user-circle"; +import { VideoFrameIcon as VideoFrameLinear } from "@solar-icons/react/linear/video-frame"; +import { VideoFrameIcon as VideoFrameBold } from "@solar-icons/react/bold/video-frame"; +import { VideocameraIcon as VideocameraLinear } from "@solar-icons/react/linear/videocamera"; +import { VideocameraIcon as VideocameraBold } from "@solar-icons/react/bold/videocamera"; +import { VideocameraOffIcon as VideocameraOffLinear } from "@solar-icons/react/linear/videocamera-off"; +import { VideocameraOffIcon as VideocameraOffBold } from "@solar-icons/react/bold/videocamera-off"; +import { VolumeCrossIcon as VolumeCrossLinear } from "@solar-icons/react/linear/volume-cross"; +import { VolumeCrossIcon as VolumeCrossBold } from "@solar-icons/react/bold/volume-cross"; +import { VolumeLoudIcon as VolumeLoudLinear } from "@solar-icons/react/linear/volume-loud"; +import { VolumeLoudIcon as VolumeLoudBold } from "@solar-icons/react/bold/volume-loud"; +import { VolumeSmallIcon as VolumeSmallLinear } from "@solar-icons/react/linear/volume-small"; +import { VolumeSmallIcon as VolumeSmallBold } from "@solar-icons/react/bold/volume-small"; +import { WidgetAddIcon as WidgetAddLinear } from "@solar-icons/react/linear/widget-add"; +import { WidgetAddIcon as WidgetAddBold } from "@solar-icons/react/bold/widget-add"; +import { WindowFrameIcon as WindowFrameLinear } from "@solar-icons/react/linear/window-frame"; +import { WindowFrameIcon as WindowFrameBold } from "@solar-icons/react/bold/window-frame"; +export const AlignCenterHorizontal = solar(AlignHorizontalCenterLinear, AlignHorizontalCenterBold); +export const AlignLeft = solar(AlignLeftLinear, AlignLeftBold); +export const AlignRight = solar(AlignRightLinear, AlignRightBold); +export const AppWindowIcon = solar(WindowFrameLinear, WindowFrameBold); +export const ArrowClockwise = solar(RefreshLinear, RefreshBold); +export const ArrowClockwiseIcon = solar(RefreshLinear, RefreshBold); +export const ArrowCounterClockwise = solar(RestartLinear, RestartBold); +export const ArrowLeft = solar(ArrowLeftLinear, ArrowLeftBold); +export const ArrowRight = solar(ArrowRightLinear, ArrowRightBold); +export const ArrowSquareOut = solar(SquareTopDownLinear, SquareTopDownBold); +export const BookmarkSimple = solar(BookmarkLinear, BookmarkBold); +export const BoundingBox = solar(FullScreenLinear, FullScreenBold); +export const Camera = solar(CameraLinear, CameraBold); +export const CaretDown = solar(AltArrowDownLinear, AltArrowDownBold); +export const CaretUpIcon = solar(AltArrowUpLinear, AltArrowUpBold); +export const ChatCircle = solar(ChatRoundLinear, ChatRoundBold); +export const ChatDots = solar(ChatRoundDotsLinear, ChatRoundDotsBold); +export const Check = solar(CheckLinear, CheckBold); +export const CheckCircleIcon = solar(CheckCircleLinear, CheckCircleBold); +export const Cloud = solar(CloudLinear, CloudBold); +export const CloudArrowUp = solar(CloudUploadLinear, CloudUploadBold); +export const Copy = solar(CopyLinear, CopyBold); +export const Crop = solar(CropLinear, CropBold); +export const DesktopIcon = solar(MonitorLinear, MonitorBold); +export const DotsThree = solar(MenuDotsLinear, MenuDotsBold); +export const DotsThreeVerticalIcon = solar(MenuDotsVerticalLinear, MenuDotsVerticalBold); +export const DownloadSimple = solar(DownloadLinear, DownloadBold); +export const DownloadSimpleIcon = solar(DownloadLinear, DownloadBold); +export const Eye = solar(EyeLinear, EyeBold); +export const EyeIcon = solar(EyeLinear, EyeBold); +export const EyeSlash = solar(EyeClosedLinear, EyeClosedBold); +export const EyeSlashIcon = solar(EyeClosedLinear, EyeClosedBold); +export const FilmSlate = solar(ClapperboardLinear, ClapperboardBold); +export const FilmStrip = solar(VideoFrameLinear, VideoFrameBold); +export const FolderOpen = solar(FolderOpenLinear, FolderOpenBold); +export const FolderOpenIcon = solar(FolderOpenLinear, FolderOpenBold); +export const FolderSimple = solar(FolderLinear, FolderBold); +export const FrameCorners = solar(GalleryLinear, GalleryBold); +export const Gear = solar(SettingsLinear, SettingsBold); +export const GearSix = solar(SettingsLinear, SettingsBold); +export const House = solar(HomeLinear, HomeBold); +export const Image = solar(GalleryLinear, GalleryBold); +export const ImageSquare = solar(GalleryLinear, GalleryBold); +export const Info = solar(InfoCircleLinear, InfoCircleBold); +export const MagnifyingGlass = solar(MagnifierLinear, MagnifierBold); +export const MagnifyingGlassPlus = solar(MagnifierZoomInLinear, MagnifierZoomInBold); +export const MicrophoneIcon = solar(MicrophoneLinear, MicrophoneBold); +export const MicrophoneSlashIcon = solar(MicrophoneLinear, MicrophoneBold, true); +export const MinusIcon = solar(MinusLinear, MinusBold); +export const MonitorIcon = solar(MonitorLinear, MonitorBold); +export const MoonIcon = solar(MoonLinear, MoonBold); +export const MusicNotes = solar(MusicNotesLinear, MusicNotesBold); +export const Pause = solar(PauseLinear, PauseBold); +export const PauseIcon = solar(PauseLinear, PauseBold); +export const Play = solar(PlayLinear, PlayBold); +export const PlayIcon = solar(PlayLinear, PlayBold); +export const Plus = solar(AddLinear, AddBold); +export const Question = solar(QuestionCircleLinear, QuestionCircleBold); +export const Scissors = solar(ScissorsLinear, ScissorsBold); +export const ShareNetwork = solar(ShareLinear, ShareBold); +export const SignOut = solar(LogoutLinear, LogoutBold); +export const SkipBack = solar(SkipPreviousLinear, SkipPreviousBold); +export const SkipForward = solar(SkipNextLinear, SkipNextBold); +export const SpeakerHigh = solar(VolumeLoudLinear, VolumeLoudBold); +export const SpeakerHighIcon = solar(VolumeLoudLinear, VolumeLoudBold); +export const SpeakerLow = solar(VolumeSmallLinear, VolumeSmallBold); +export const SpeakerX = solar(VolumeCrossLinear, VolumeCrossBold); +export const SpeakerXIcon = solar(VolumeCrossLinear, VolumeCrossBold); +export const SunIcon = solar(SunLinear, SunBold); +export const TextB = solar(TextBoldLinear, TextBoldBold); +export const TextItalic = solar(TextItalicLinear, TextItalicBold); +export const TextT = solar(TextFieldLinear, TextFieldBold); +export const TextUnderline = solar(TextUnderlineLinear, TextUnderlineBold); +export const TimerIcon = solar(StopwatchLinear, StopwatchBold); +export const Trash = solar(TrashBinTrashLinear, TrashBinTrashBold); +export const UploadSimple = solar(UploadLinear, UploadBold); +export const User = solar(UserLinear, UserBold); +export const UserCircle = solar(UserCircleLinear, UserCircleBold); +export const VideoCamera = solar(VideocameraLinear, VideocameraBold); +export const VideoCameraIcon = solar(VideocameraLinear, VideocameraBold); +export const VideoCameraSlash = solar(VideocameraOffLinear, VideocameraOffBold); +export const VideoCameraSlashIcon = solar(VideocameraOffLinear, VideocameraOffBold); +export const WarningCircleIcon = solar(DangerCircleLinear, DangerCircleBold); +export const X = solar(CloseLinear, CloseBold); +export const XIcon = solar(CloseLinear, CloseBold); +export const File = solar(FileLinear, FileBold); +export const ArrowsMerge = solar(BranchingPathsUpLinear, BranchingPathsUpBold); +export const ClosedCaptioning = solar(SubtitlesLinear, SubtitlesBold); +export const Cursor = solar(CursorLinear, CursorBold); +export const Gauge = solar(SpeedometerMiddleLinear, SpeedometerMiddleBold); +export const Keyboard = solar(KeyboardLinear, KeyboardBold); +export const MagicWand = solar(MagicWand3Linear, MagicWand3Bold); +export const Megaphone = solar(NotificationUnreadLinear, NotificationUnreadBold); +export const Palette = solar(PaletteLinear, PaletteBold); +export const PuzzlePiece = solar(WidgetAddLinear, WidgetAddBold); +export const TranslateIcon = solar(TranslationLinear, TranslationBold); +// Provider logos are brands, not selectable application icons. +export { GoogleLogo, XLogo } from "@phosphor-icons/react"; diff --git a/src/components/video-editor/AddCustomFontDialog.tsx b/src/components/video-editor/AddCustomFontDialog.tsx index ae57094b..f4575173 100644 --- a/src/components/video-editor/AddCustomFontDialog.tsx +++ b/src/components/video-editor/AddCustomFontDialog.tsx @@ -1,4 +1,4 @@ -import { Plus } from "@phosphor-icons/react"; +import { Plus } from "@/components/ui/icons"; import { useState } from "react"; import { toast } from "@/components/ui/toast"; import { Button } from "@/components/ui/button"; diff --git a/src/components/video-editor/AnnotationSettingsPanel.tsx b/src/components/video-editor/AnnotationSettingsPanel.tsx index 6736630c..c2a09ab8 100644 --- a/src/components/video-editor/AnnotationSettingsPanel.tsx +++ b/src/components/video-editor/AnnotationSettingsPanel.tsx @@ -14,7 +14,7 @@ import { TextT as Type, TextUnderline as Underline, UploadSimple as Upload, -} from "@phosphor-icons/react"; +} from "@/components/ui/icons"; import { ColorControl, ColorPalette } from "@/components/ui/color-picker"; import { useEffect, useMemo, useRef, useState } from "react"; import { toast } from "@/components/ui/toast"; diff --git a/src/components/video-editor/CaptionListPanel.tsx b/src/components/video-editor/CaptionListPanel.tsx index f3aa6f7f..8edfb7f8 100644 --- a/src/components/video-editor/CaptionListPanel.tsx +++ b/src/components/video-editor/CaptionListPanel.tsx @@ -1,5 +1,5 @@ import { TextArea, Input } from "@/components/ui/input"; -import { ArrowsMerge, Scissors, Trash } from "@phosphor-icons/react"; +import { ArrowsMerge, Scissors, Trash } from "@/components/ui/icons"; import { useCallback, useEffect, useRef, useState } from "react"; import { Button } from "@/components/ui/button"; import { useScopedT } from "@/contexts/I18nContext"; diff --git a/src/components/video-editor/ExportSettingsMenu.tsx b/src/components/video-editor/ExportSettingsMenu.tsx index 9813c8e7..3c4fc65f 100644 --- a/src/components/video-editor/ExportSettingsMenu.tsx +++ b/src/components/video-editor/ExportSettingsMenu.tsx @@ -1,4 +1,4 @@ -import { DownloadSimple as Download, FilmSlate as Film, Image } from "@phosphor-icons/react"; +import { DownloadSimple as Download, FilmSlate as Film, Image } from "@/components/ui/icons"; import { Card, Label, Description, TagGroup, Tag } from "@heroui/react"; import type { ReactNode } from "react"; import { Button } from "@/components/ui/button"; diff --git a/src/components/video-editor/ExtensionManager.tsx b/src/components/video-editor/ExtensionManager.tsx index ac6b9e39..419a4292 100644 --- a/src/components/video-editor/ExtensionManager.tsx +++ b/src/components/video-editor/ExtensionManager.tsx @@ -1,5 +1,5 @@ import { Card } from "@heroui/react"; -import { PuzzlePiece } from "@phosphor-icons/react"; +import { PuzzlePiece } from "@/components/ui/icons"; export default function ExtensionManager() { return ( diff --git a/src/components/video-editor/FormatSelector.tsx b/src/components/video-editor/FormatSelector.tsx index e3288b4e..869b3699 100644 --- a/src/components/video-editor/FormatSelector.tsx +++ b/src/components/video-editor/FormatSelector.tsx @@ -1,5 +1,5 @@ import { ToggleButtonGroup, ToggleButton } from "@heroui/react"; -import { FilmSlate as Film, Image } from "@phosphor-icons/react"; +import { FilmSlate as Film, Image } from "@/components/ui/icons"; import { useScopedT } from "@/contexts/I18nContext"; import type { ExportFormat } from "@/lib/exporter/types"; diff --git a/src/components/video-editor/KeyboardShortcutsHelp.tsx b/src/components/video-editor/KeyboardShortcutsHelp.tsx index 3a36b2c8..dc1e3c2d 100644 --- a/src/components/video-editor/KeyboardShortcutsHelp.tsx +++ b/src/components/video-editor/KeyboardShortcutsHelp.tsx @@ -1,7 +1,7 @@ import { Kbd } from "@heroui/react"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; import { Button } from "@/components/ui/button"; -import { Gear as Settings2, Question as HelpCircle } from "@phosphor-icons/react"; +import { Gear as Settings2, Question as HelpCircle } from "@/components/ui/icons"; import { useEffect, useState } from "react"; import { useScopedT } from "@/contexts/I18nContext"; import { useShortcuts } from "@/contexts/ShortcutsContext"; diff --git a/src/components/video-editor/PlaybackControls.tsx b/src/components/video-editor/PlaybackControls.tsx index 1a914a80..bf00385d 100644 --- a/src/components/video-editor/PlaybackControls.tsx +++ b/src/components/video-editor/PlaybackControls.tsx @@ -1,4 +1,4 @@ -import { Pause, Play, SpeakerHigh as Volume2, SpeakerX as VolumeX } from "@phosphor-icons/react"; +import { Pause, Play, SpeakerHigh as Volume2, SpeakerX as VolumeX } from "@/components/ui/icons"; import { useScopedT } from "@/contexts/I18nContext"; import { Surface } from "@heroui/react"; import { Slider } from "@/components/ui/slider"; diff --git a/src/components/video-editor/ProjectBrowserDialog.tsx b/src/components/video-editor/ProjectBrowserDialog.tsx index 9b686795..95763048 100644 --- a/src/components/video-editor/ProjectBrowserDialog.tsx +++ b/src/components/video-editor/ProjectBrowserDialog.tsx @@ -6,6 +6,7 @@ import { toFileUrl } from "./projectPersistence"; export type ProjectLibraryEntry = { path: string; name: string; + createdAt?: number; updatedAt: number; thumbnailPath: string | null; isCurrent: boolean; diff --git a/src/components/video-editor/SettingsPanel.tsx b/src/components/video-editor/SettingsPanel.tsx index d5711df8..b70345b6 100644 --- a/src/components/video-editor/SettingsPanel.tsx +++ b/src/components/video-editor/SettingsPanel.tsx @@ -1,7 +1,7 @@ import { Card, RadioGroup, Radio, Label, Description } from "@heroui/react"; import { ProgressBar } from "@heroui/react"; import { ColorControl, ColorPalette } from "@/components/ui/color-picker"; -import { Palette, Trash as Trash2, UploadSimple as Upload } from "@phosphor-icons/react"; +import { Palette, Trash as Trash2, UploadSimple as Upload } from "@/components/ui/icons"; import { AnimatePresence, motion } from "motion/react"; import { useEffect, useMemo, useRef, useState } from "react"; import { toast } from "@/components/ui/toast"; diff --git a/src/components/video-editor/ShortcutsConfigDialog.tsx b/src/components/video-editor/ShortcutsConfigDialog.tsx index b09292be..a7a958d8 100644 --- a/src/components/video-editor/ShortcutsConfigDialog.tsx +++ b/src/components/video-editor/ShortcutsConfigDialog.tsx @@ -1,4 +1,4 @@ -import { Keyboard, ArrowCounterClockwise as RotateCcw } from "@phosphor-icons/react"; +import { Keyboard, ArrowCounterClockwise as RotateCcw } from "@/components/ui/icons"; import { useCallback, useEffect, useState } from "react"; import { toast } from "@/components/ui/toast"; import { Button } from "@/components/ui/button"; diff --git a/src/components/video-editor/TutorialHelp.tsx b/src/components/video-editor/TutorialHelp.tsx index 398ad3be..611e27d0 100644 --- a/src/components/video-editor/TutorialHelp.tsx +++ b/src/components/video-editor/TutorialHelp.tsx @@ -7,7 +7,7 @@ import { Scissors, GearSix as Settings2, XLogo as Twitter, -} from "@phosphor-icons/react"; +} from "@/components/ui/icons"; import { useEffect, useState } from "react"; import { Button } from "@/components/ui/button"; import { diff --git a/src/components/video-editor/WallpaperGrid.tsx b/src/components/video-editor/WallpaperGrid.tsx index 25ebd9e2..5bb1acf7 100644 --- a/src/components/video-editor/WallpaperGrid.tsx +++ b/src/components/video-editor/WallpaperGrid.tsx @@ -1,5 +1,5 @@ import { Button, ToggleButton } from "@heroui/react"; -import { Check, Plus, X } from "@phosphor-icons/react"; +import { Check, Plus, X } from "@/components/ui/icons"; import { useEffect, useState } from "react"; import { getRenderableVideoUrl } from "@/lib/assetPath"; import { isVideoWallpaperSource } from "@/lib/wallpapers"; diff --git a/src/components/video-editor/cloud/CloudShareButton.tsx b/src/components/video-editor/cloud/CloudShareButton.tsx index 2c611bcc..abe52a00 100644 --- a/src/components/video-editor/cloud/CloudShareButton.tsx +++ b/src/components/video-editor/cloud/CloudShareButton.tsx @@ -1,5 +1,6 @@ +import { saveProjectShareLink } from "./projectShareLinks"; import { useI18n } from "@/contexts/I18nContext"; -import { Check, CloudArrowUp, Copy, ShareNetwork } from "@phosphor-icons/react"; +import { Check, CloudArrowUp, Copy, ShareNetwork } from "@/components/ui/icons"; import { useCallback, useEffect, useRef, useState } from "react"; import { toast } from "@/components/ui/toast"; import { Button } from "@/components/ui/button"; @@ -16,6 +17,7 @@ import { Label } from "@/components/ui/label"; const DEFAULT_CLOUD_ENDPOINT = "http://localhost:8787/api/upload"; type Props = { + projectPath?: string | null; filePath?: string; projectTitle: string; prepareFile?: () => Promise; @@ -27,6 +29,7 @@ type Props = { }; export function CloudShareButton({ + projectPath, filePath, projectTitle, prepareFile, @@ -127,6 +130,7 @@ export function CloudShareButton({ } setProgress(100); setShareUrl(result.shareUrl); + if (projectPath) { try { saveProjectShareLink(projectPath, result.shareUrl); } catch { toast.error("Share created, but its link could not be saved locally"); } } toast.success(t("editor.cloud.linkCreated")); } catch (cause) { setError(cause instanceof Error ? cause.message : String(cause)); @@ -135,7 +139,7 @@ export function CloudShareButton({ setPhase("idle"); setUploadId(undefined); } - }, [authToken, filePath, notes, prepareFile, projectTitle, t]); + }, [projectPath, authToken, filePath, notes, prepareFile, projectTitle, t]); const handleCancel = useCallback(async () => { cancelRequestedRef.current = true; diff --git a/src/components/video-editor/cloud/projectShareLinks.test.ts b/src/components/video-editor/cloud/projectShareLinks.test.ts new file mode 100644 index 00000000..bdf68560 --- /dev/null +++ b/src/components/video-editor/cloud/projectShareLinks.test.ts @@ -0,0 +1,21 @@ +import { afterEach, expect, it, vi } from "vitest"; +import { + getProjectShareLink, + moveProjectShareLink, + removeProjectShareLinks, + saveProjectShareLink, +} from "./projectShareLinks"; +afterEach(() => vi.unstubAllGlobals()); +it("retains share links across renames and clears obsolete paths", () => { + const values = new Map(); + vi.stubGlobal("localStorage", { + getItem: (key: string) => values.get(key) || null, + setItem: (key: string, value: string) => values.set(key, value), + }); + saveProjectShareLink("old", "https://example.com/share"); + moveProjectShareLink("old", "new"); + expect(getProjectShareLink("new")).toBe("https://example.com/share"); + expect(getProjectShareLink("old")).toBeUndefined(); + removeProjectShareLinks(["new"]); + expect(getProjectShareLink("new")).toBeUndefined(); +}); diff --git a/src/components/video-editor/cloud/projectShareLinks.ts b/src/components/video-editor/cloud/projectShareLinks.ts new file mode 100644 index 00000000..58e27d9f --- /dev/null +++ b/src/components/video-editor/cloud/projectShareLinks.ts @@ -0,0 +1,34 @@ +const KEY = "recordly.project-share-links.v1"; +function readLinks(): Record { + try { + const stored = JSON.parse(localStorage.getItem(KEY) || "{}"); + if (!stored || typeof stored !== "object" || Array.isArray(stored)) return {}; + return Object.fromEntries( + Object.entries(stored).filter( + (entry): entry is [string, string] => + typeof entry[1] === "string" && /^https?:\/\//.test(entry[1]), + ), + ); + } catch { + return {}; + } +} +export function getProjectShareLink(path: string): string | undefined { + return readLinks()[path]; +} +export function saveProjectShareLink(path: string, url: string) { + localStorage.setItem(KEY, JSON.stringify({ ...readLinks(), [path]: url })); +} +export function moveProjectShareLink(previous: string, next: string) { + if (previous === next) return; + const links = readLinks(); + if (!links[previous]) return; + links[next] = links[previous]; + delete links[previous]; + localStorage.setItem(KEY, JSON.stringify(links)); +} +export function removeProjectShareLinks(paths: string[]) { + const links = readLinks(); + for (const path of paths) delete links[path]; + localStorage.setItem(KEY, JSON.stringify(links)); +} diff --git a/src/components/video-editor/dashboard/Dashboard.tsx b/src/components/video-editor/dashboard/Dashboard.tsx new file mode 100644 index 00000000..129ab1d6 --- /dev/null +++ b/src/components/video-editor/dashboard/Dashboard.tsx @@ -0,0 +1,42 @@ +import { DashboardAnnouncements } from "./DashboardAnnouncements"; +import { Card, Modal } from "@heroui/react"; +import { DashboardDialogs } from "./DashboardDialogs"; +import { DashboardFilters } from "./DashboardFilters"; +import { DashboardGrid } from "./DashboardGrid"; +import { DashboardSidebar } from "./DashboardSidebar"; +import { DashboardToolbar } from "./DashboardToolbar"; +import type { DashboardProps } from "./types"; +import { useDashboardModel } from "./useDashboardModel"; +export function Dashboard(props: DashboardProps) { + const model = useDashboardModel(props); + const view = { ...props, ...model }; + return ( + <> + + + + + + + {model.section !== "settings" && + model.section !== "shared" && + model.section !== "raw" && ( + <> + + + + + )} + + + + + + + + + ); +} diff --git a/src/components/video-editor/dashboard/DashboardAnnouncements.test.tsx b/src/components/video-editor/dashboard/DashboardAnnouncements.test.tsx new file mode 100644 index 00000000..ca0e1c08 --- /dev/null +++ b/src/components/video-editor/dashboard/DashboardAnnouncements.test.tsx @@ -0,0 +1,40 @@ +import { describe, expect, it } from "vitest"; +import { renderToStaticMarkup } from "react-dom/server"; +import { DashboardAnnouncements } from "./DashboardAnnouncements"; + +const banner = { src: "/banner.svg", alt: "Product news", href: "https://example.com/news" }; +describe("announcement configuration", () => { + it("hides disabled or empty announcements", () => { + expect( + renderToStaticMarkup( + , + ), + ).toBe(""); + expect( + renderToStaticMarkup( + , + ), + ).toBe(""); + }); + it("renders a linked single image without navigation", () => { + const html = renderToStaticMarkup( + , + ); + expect(html).toContain('href="https://example.com/news"'); + expect(html).toContain('alt="Product news"'); + expect(html).not.toContain("Next announcement"); + expect(html).not.toContain("Previous announcement"); + }); + it("renders navigation for multiple banners and does not activate non-web links", () => { + const html = renderToStaticMarkup( + , + ); + expect(html).toContain("Next announcement"); + expect(html).not.toContain("javascript:"); + }); +}); diff --git a/src/components/video-editor/dashboard/DashboardAnnouncements.tsx b/src/components/video-editor/dashboard/DashboardAnnouncements.tsx new file mode 100644 index 00000000..81450cc0 --- /dev/null +++ b/src/components/video-editor/dashboard/DashboardAnnouncements.tsx @@ -0,0 +1,97 @@ +import { Button, Card, Link } from "@heroui/react"; +import { useState } from "react"; +import { ArrowLeft, ArrowRight } from "@/components/ui/icons"; +import { toast } from "@/components/ui/toast"; +import { dashboardAnnouncements, type AnnouncementConfig } from "./announcementConfig"; + +export function DashboardAnnouncements({ + config = dashboardAnnouncements, +}: { + config?: AnnouncementConfig; +}) { + const { enabled, banners } = config; + const [index, setIndex] = useState(0); + if (!enabled || !banners.length) return null; + const active = index % banners.length; + const banner = banners[active]; + const image = ( + {banner.alt} + ); + const href = banner.href && /^https?:\/\//.test(banner.href) ? banner.href : undefined; + return ( + +
+ {href ? ( + { + event.preventDefault(); + void window.electronAPI + .openExternalUrl(href) + .catch(() => toast.error("Could not open announcement")); + }} + > + {image} + + ) : ( + image + )} +
+ {banners.length > 1 && ( +
+ +
+ {banners.map((banner, slide) => ( + + ))} +
+ +
+ )} +
+ ); +} diff --git a/src/components/video-editor/dashboard/DashboardDialogs.tsx b/src/components/video-editor/dashboard/DashboardDialogs.tsx new file mode 100644 index 00000000..1cc306b3 --- /dev/null +++ b/src/components/video-editor/dashboard/DashboardDialogs.tsx @@ -0,0 +1,81 @@ +import { removeProjectShareLinks } from "../cloud/projectShareLinks"; +import { Button } from "@/components/ui/button"; +import { + Dialog, + DialogContent, + DialogFooter, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; + +import type { DashboardProps } from "./types"; + +import type { DashboardModel } from "./useDashboardModel"; + +export function DashboardDialogs({ + folders, + busy, + confirmDelete, + setConfirmDelete, + selected, + run, + onDeleteProjects, + save, + setSelected, + setSelecting, +}: Pick< + DashboardProps & DashboardModel, + | "folders" + | "busy" + | "confirmDelete" + | "setConfirmDelete" + | "selected" + | "run" + | "onDeleteProjects" + | "save" + | "setSelected" + | "setSelecting" +>) { + return ( + <> + + + + + Delete {selected.length} project{selected.length === 1 ? "" : "s"}? + + +

+ Project files move to Trash. Source recordings are kept. +

+ + + + +
+
+ + ); +} diff --git a/src/components/video-editor/dashboard/DashboardFilters.tsx b/src/components/video-editor/dashboard/DashboardFilters.tsx new file mode 100644 index 00000000..849ee9be --- /dev/null +++ b/src/components/video-editor/dashboard/DashboardFilters.tsx @@ -0,0 +1,129 @@ +import { Dropdown } from "@heroui/react"; +import { CaretDown, Trash } from "@/components/ui/icons"; + +import { Button } from "@/components/ui/button"; + +import type { DashboardModel } from "./useDashboardModel"; + +export function DashboardFilters({ + period, + setPeriod, + selecting, + setSelecting, + selected, + setSelected, + sort, + setSort, + visible, + busy, + setConfirmDelete, +}: Pick< + DashboardModel, + | "period" + | "setPeriod" + | "selecting" + | "setSelecting" + | "selected" + | "setSelected" + | "sort" + | "setSort" + | "visible" + | "busy" + | "setConfirmDelete" +>) { + return ( + <> +
+
+ {[ + ["all", "All"], + ["week", "Last 7 days"], + ["month", "Last 30 days"], + ].map(([id, label]) => ( + + ))} + +
+ + + + + setSort("recent")}> + Last edited + + setSort("created")}> + Last created + + setSort("name")}> + Name + + + + +
+ {selecting && ( +
+ + {selected.length} selected + + +
+ )} + + ); +} diff --git a/src/components/video-editor/dashboard/DashboardGrid.tsx b/src/components/video-editor/dashboard/DashboardGrid.tsx new file mode 100644 index 00000000..ef34d42a --- /dev/null +++ b/src/components/video-editor/dashboard/DashboardGrid.tsx @@ -0,0 +1,117 @@ +import { RawRecordings } from "./RawRecordings"; +import { Cloud, ImageSquare } from "@/components/ui/icons"; + +import { Button } from "@/components/ui/button"; + +import { DashboardSettings } from "./DashboardSettings"; + +import { ProjectCard } from "./ProjectCard"; +import type { DashboardProps } from "./types"; + +import type { DashboardModel } from "./useDashboardModel"; + +export function DashboardGrid({ + error, + section, + accountLabel, + onSignIn, + onShareProject, + visible, + busy, + selecting, + toggleSelected, + onRenameProject, + folders, + save, + assignFolder, + selected, + openEntry, + query, + setQuery, + run, +}: Pick< + DashboardProps & DashboardModel, + | "error" + | "section" + | "accountLabel" + | "onSignIn" + | "onShareProject" + | "visible" + | "busy" + | "selecting" + | "toggleSelected" + | "onRenameProject" + | "folders" + | "save" + | "assignFolder" + | "selected" + | "openEntry" + | "query" + | "setQuery" + | "run" +>) { + return ( + <> +
+ {error && ( +

+ {error} +

+ )} + {section === "settings" ? ( + + ) : section === "raw" ? ( + + ) : section === "shared" ? ( +
+ +

+ {accountLabel + ? "Shared videos are managed in your cloud library." + : "Sign in to manage shared videos."} +

+ +
+ ) : visible.length ? ( +
    + {visible.map((entry) => ( + + ))} +
+ ) : ( +
+ +

{query ? "No matching projects" : "No projects yet"}

+ {query && ( + + )} +
+ )} +
+ + ); +} diff --git a/src/components/video-editor/dashboard/DashboardSettings.tsx b/src/components/video-editor/dashboard/DashboardSettings.tsx new file mode 100644 index 00000000..0fd96e45 --- /dev/null +++ b/src/components/video-editor/dashboard/DashboardSettings.tsx @@ -0,0 +1,48 @@ +import { createContext, useContext, useState, type ReactNode } from "react"; +import { Button } from "@/components/ui/button"; +import { toast } from "@/components/ui/toast"; +export const DashboardSettingsContext = createContext(null); +export function DashboardSettings() { + const settingsContent = useContext(DashboardSettingsContext); + const [directory, setDirectory] = useState(""); + return ( +
+

Settings

+
+ {settingsContent} +
+
+

Projects folder

+ {directory && ( +

+ {directory} +

+ )} +
+ +
+

+ Named projects save automatically. Previews refresh when you return to Projects. +

+
+
+ ); +} diff --git a/src/components/video-editor/dashboard/DashboardSidebar.tsx b/src/components/video-editor/dashboard/DashboardSidebar.tsx new file mode 100644 index 00000000..ccb5f8b5 --- /dev/null +++ b/src/components/video-editor/dashboard/DashboardSidebar.tsx @@ -0,0 +1,184 @@ +import { FolderRow } from "./FolderRow"; +import { + ArrowLeft, + Cloud, + File, + GearSix, + ImageSquare, + Plus, + UploadSimple, + UserCircle, +} from "@/components/ui/icons"; + +import { Button } from "@/components/ui/button"; + +import type { DashboardProps } from "./types"; + +import type { DashboardModel } from "./useDashboardModel"; +import { FOLDER_COLORS } from "./useProjectFolders"; + +export function DashboardSidebar({ + folders, + save, + section, + setSection, + metadata, + update, + navClass, + run, + onImportFile, + onOpenChange, + onSignIn, + accountLabel, +}: Pick< + DashboardProps & DashboardModel, + | "folders" + | "save" + | "section" + | "setSection" + | "metadata" + | "update" + | "navClass" + | "run" + | "onImportFile" + | "onOpenChange" + | "onSignIn" + | "accountLabel" +>) { + return ( + <> + + + ); +} diff --git a/src/components/video-editor/dashboard/DashboardToolbar.tsx b/src/components/video-editor/dashboard/DashboardToolbar.tsx new file mode 100644 index 00000000..622418c2 --- /dev/null +++ b/src/components/video-editor/dashboard/DashboardToolbar.tsx @@ -0,0 +1,49 @@ +import { MagnifyingGlass, Plus } from "@/components/ui/icons"; +import { type CSSProperties } from "react"; +import { Button } from "@/components/ui/button"; + +import { Input } from "@/components/ui/input"; + +import type { DashboardProps } from "./types"; + +import type { DashboardModel } from "./useDashboardModel"; + +export function DashboardToolbar({ + query, + setQuery, + run, + busy, +}: Pick) { + return ( + <> +
+
+ + setQuery(e.target.value)} + aria-label="Search projects" + placeholder="Search projects…" + className="h-11 w-full border-0 bg-default/30 pl-10 shadow-none" + /> +
+ +
+ + ); +} diff --git a/src/components/video-editor/dashboard/FolderColors.tsx b/src/components/video-editor/dashboard/FolderColors.tsx new file mode 100644 index 00000000..42a91c2d --- /dev/null +++ b/src/components/video-editor/dashboard/FolderColors.tsx @@ -0,0 +1,92 @@ +import { + ColorArea, + ColorField, + ColorPicker, + ColorSlider, + ColorSwatchPicker, + Input, + Popover, +} from "@heroui/react"; +import { FolderSimple, Plus, X } from "@/components/ui/icons"; +import { Button } from "@/components/ui/button"; +import { FOLDER_COLORS } from "./useProjectFolders"; + +export function FolderColors({ + value, + onChange, + custom, + onCustomChange, + name, +}: { + value: string; + onChange: (color: string) => void; + custom: string[]; + onCustomChange: (colors: string[]) => void; + name: string; +}) { + const colors = [...new Set([...FOLDER_COLORS, ...custom])]; + return ( + onChange(color.toString("hex"))}> + + + + + {colors.map((color) => ( + + + + + ))} + + + + + + + + + +
+ + + + +
+
+
+
+ ); +} diff --git a/src/components/video-editor/dashboard/FolderRow.tsx b/src/components/video-editor/dashboard/FolderRow.tsx new file mode 100644 index 00000000..7d2c74e8 --- /dev/null +++ b/src/components/video-editor/dashboard/FolderRow.tsx @@ -0,0 +1,103 @@ +import { Dropdown, Input } from "@heroui/react"; +import { DotsThree } from "@/components/ui/icons"; +import { useState } from "react"; +import { Button } from "@/components/ui/button"; +import { FolderColors } from "./FolderColors"; +import type { ProjectFolder } from "./useProjectFolders"; + +export function FolderRow({ + folder, + active, + onSelect, + onChange, + onRemove, + colors, + onColors, +}: { + folder: ProjectFolder; + active: boolean; + onSelect: () => void; + onChange: (folder: ProjectFolder) => void; + onRemove: () => void; + colors: string[]; + onColors: (colors: string[]) => void; +}) { + const [editing, setEditing] = useState(false); + const [draft, setDraft] = useState(folder.name); + const finish = () => { + if (draft.trim()) onChange({ ...folder, name: draft.trim() }); + setEditing(false); + }; + const edit = () => { + setDraft(folder.name); + setEditing(true); + }; + return ( +
+ onChange({ ...folder, color })} + custom={colors} + onCustomChange={onColors} + /> + {editing ? ( +
{ + event.preventDefault(); + finish(); + }} + > + setDraft(event.target.value)} + onBlur={finish} + onKeyDown={(event) => { + if (event.key === "Escape") { + event.preventDefault(); + setEditing(false); + } + }} + /> +
+ ) : ( + + )} + + + + + + Rename + + + Remove folder + + + + +
+ ); +} diff --git a/src/components/video-editor/dashboard/ProjectCard.tsx b/src/components/video-editor/dashboard/ProjectCard.tsx new file mode 100644 index 00000000..ac9d1f19 --- /dev/null +++ b/src/components/video-editor/dashboard/ProjectCard.tsx @@ -0,0 +1,254 @@ +import { AccountAvatar } from "@/components/ui/account-avatar"; +import { Dropdown } from "@heroui/react"; +import { Check, DotsThree, FolderSimple, Plus } from "@/components/ui/icons"; +import { useRef, useState } from "react"; +import { Button } from "@/components/ui/button"; +import { getProjectShareLink, moveProjectShareLink } from "../cloud/projectShareLinks"; +import type { ProjectLibraryEntry } from "../ProjectBrowserDialog"; +import { ProjectThumbnail } from "./ProjectThumbnail"; +import type { DashboardProps } from "./types"; +import type { DashboardModel } from "./useDashboardModel"; + +type Props = Pick< + DashboardProps & DashboardModel, + | "accountLabel" + | "busy" + | "selecting" + | "selected" + | "toggleSelected" + | "openEntry" + | "run" + | "onShareProject" + | "onRenameProject" + | "folders" + | "save" + | "assignFolder" +> & { entry: ProjectLibraryEntry }; +export function ProjectCard({ + accountLabel, + entry, + busy, + selecting, + selected, + toggleSelected, + openEntry, + run, + onShareProject, + onRenameProject, + folders, + save, + assignFolder, +}: Props) { + const [editing, setEditing] = useState(false); + const renaming = useRef(false); + const [name, setName] = useState(entry.name); + const assignedFolders = folders.filter((folder) => folder.paths.includes(entry.path)); + const folder = assignedFolders[0]; + const shareUrl = getProjectShareLink(entry.path); + const rename = () => { + if (renaming.current) return; + renaming.current = true; + void run(async () => { + if (!name.trim() || name.trim() === entry.name) { + setEditing(false); + return; + } + const target = await onRenameProject(entry.path, name.trim()); + save( + folders.map((folder) => ({ + ...folder, + paths: folder.paths.map((path) => (path === entry.path ? target : path)), + })), + ); + moveProjectShareLink(entry.path, target); + setEditing(false); + }).finally(() => { + renaming.current = false; + }); + }; + return ( +
  • + +
    + +
    + {editing ? ( +
    { + event.preventDefault(); + rename(); + }} + > + setName(event.target.value)} + onBlur={rename} + onKeyDown={(event) => { + if (event.key === "Escape") { + event.preventDefault(); + setEditing(false); + } + }} + /> +
    + ) : ( +

    + {entry.name} +

    + )} +
    +

    + {new Date(entry.updatedAt).toLocaleDateString(undefined, { + month: "short", + day: "numeric", + })} +

    +
    + {assignedFolders.map((item) => ( + + ))} + + + + + {folders.map((item) => ( + assignFolder(entry.path, item.id)} + > + + {item.name} + {item.paths.includes(entry.path) && ( + + )} + + ))} + {folder && ( + assignFolder(entry.path, "none")} + > + Remove from all folders + + )} + {!folders.length && ( + + Create a folder in the sidebar + + )} + + + +
    +
    +
    + + + + + openEntry(entry)}> + Open project + + { + setName(entry.name); + setEditing(true); + }} + > + Rename + + + void run(async () => { + if (shareUrl) + await window.electronAPI.openExternalUrl(shareUrl); + else await onShareProject(entry.path); + }) + } + > + {shareUrl ? "View in web" : "Share"} + + + void run(async () => { + await window.electronAPI.revealInFolder(entry.path); + }) + } + > + Show in folder + + + + +
    +
  • + ); +} diff --git a/src/components/video-editor/dashboard/ProjectThumbnail.tsx b/src/components/video-editor/dashboard/ProjectThumbnail.tsx new file mode 100644 index 00000000..f41b51fe --- /dev/null +++ b/src/components/video-editor/dashboard/ProjectThumbnail.tsx @@ -0,0 +1,33 @@ +import { ImageSquare } from "@/components/ui/icons"; +import { useState } from "react"; +import { toFileUrl } from "../projectPersistence"; +export function ProjectThumbnail({ + path, + revision = 0, +}: { + path: string | null; + revision?: number; +}) { + const [failedSource, setFailedSource] = useState(null); + const sourceKey = `${path}:${revision}`; + return ( +
    + {path && failedSource !== sourceKey ? ( + setFailedSource(sourceKey)} + className="h-full w-full object-contain" + /> + ) : ( + + )} +
    + ); +} diff --git a/src/components/video-editor/dashboard/RawRecordings.tsx b/src/components/video-editor/dashboard/RawRecordings.tsx new file mode 100644 index 00000000..69b07fb6 --- /dev/null +++ b/src/components/video-editor/dashboard/RawRecordings.tsx @@ -0,0 +1,142 @@ +import { Button, Input, Modal } from "@heroui/react"; +import { useCallback, useEffect, useState } from "react"; +import { File, FolderOpen } from "@/components/ui/icons"; +import { toast } from "@/components/ui/toast"; +import type { RecordingLibraryEntry } from "@/types/recordingLibrary"; +export function RawRecordings() { + const [entries, setEntries] = useState([]); + const [query, setQuery] = useState(""); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(""); + const [preview, setPreview] = useState(null); + const refresh = useCallback(async () => { + setLoading(true); + setError(""); + try { + const result = await window.electronAPI.listRecordings(true); + if (!result.success) throw Error(result.error); + setEntries(result.value); + } catch (error) { + setError(error instanceof Error ? error.message : "Could not load raw recordings"); + } finally { + setLoading(false); + } + }, []); + useEffect(() => { + void refresh(); + }, [refresh]); + const reveal = async (path?: string) => { + try { + const result = path + ? { success: true, path } + : await window.electronAPI.getRecordingsDirectory(); + if (!result.success || !result.path) throw Error("Could not open recordings folder"); + await window.electronAPI.revealInFolder(result.path); + } catch { + toast.error("Could not show recordings in folder"); + } + }; + const visible = entries.filter((entry) => + entry.name.toLowerCase().includes(query.trim().toLowerCase()), + ); + return ( +
    +
    +
    +

    Raw

    +

    + Original screen recordings, camera footage, and audio files. +

    +
    + +
    + setQuery(event.target.value)} + className="mb-6 w-full" + /> + {loading ? ( +

    + Loading recordings… +

    + ) : error ? ( +
    +

    {error}

    + +
    + ) : visible.length ? ( +
      + {visible.map((entry) => ( +
    • + + + +
    • + ))} +
    + ) : ( +

    + {query ? "No matching raw files" : "No raw recordings yet"} +

    + )} + { + if (!open) setPreview(null); + }} + > + + + + + + {preview?.name} + + + {preview && + (/\.(wav|m4a|mp3|ogg|flac)$/i.test(preview.name) ? ( + + + + + +
    + ); +} diff --git a/src/components/video-editor/dashboard/announcementConfig.ts b/src/components/video-editor/dashboard/announcementConfig.ts new file mode 100644 index 00000000..701f3b1b --- /dev/null +++ b/src/components/video-editor/dashboard/announcementConfig.ts @@ -0,0 +1,12 @@ +export type AnnouncementBanner = { src: string; alt: string; href?: string }; +export type AnnouncementConfig = { enabled: boolean; banners: AnnouncementBanner[] }; + +/** Code-only configuration. One banner hides navigation; an empty list hides the card. */ +export const dashboardAnnouncements: AnnouncementConfig = { + enabled: true, + banners: [ + { src: "announcements/placeholder-1.svg", alt: "Announcement banner placeholder 1" }, + { src: "announcements/placeholder-2.svg", alt: "Announcement banner placeholder 2" }, + // Optional href: "https://..." opens the banner destination in the default browser. + ], +}; diff --git a/src/components/video-editor/dashboard/types.ts b/src/components/video-editor/dashboard/types.ts new file mode 100644 index 00000000..0f78f692 --- /dev/null +++ b/src/components/video-editor/dashboard/types.ts @@ -0,0 +1,14 @@ +import type { ProjectLibraryEntry } from "../ProjectBrowserDialog"; +export type DashboardProps = { + open: boolean; + onOpenChange: (open: boolean) => void; + entries: ProjectLibraryEntry[]; + onOpenProject: (path: string) => Promise; + onImportFile: () => Promise; + error: string | null; + onSignIn: () => void; + onDeleteProjects: (paths: string[]) => Promise; + onRenameProject: (path: string, name: string) => Promise; + onShareProject: (path: string) => Promise; + accountLabel?: string; +}; diff --git a/src/components/video-editor/dashboard/useDashboardMetadata.ts b/src/components/video-editor/dashboard/useDashboardMetadata.ts new file mode 100644 index 00000000..c2e97ffa --- /dev/null +++ b/src/components/video-editor/dashboard/useDashboardMetadata.ts @@ -0,0 +1,31 @@ +import { useState } from "react"; +import { toast } from "@/components/ui/toast"; + +type Metadata = { colors: string[] }; +const KEY = "recordly.dashboard-metadata.v1"; +function load(): Metadata { + try { + const value = JSON.parse(localStorage.getItem(KEY) || "{}"); + return { + colors: Array.isArray(value.colors) + ? value.colors.filter( + (c: unknown) => typeof c === "string" && /^#[0-9a-f]{6}$/i.test(c), + ) + : [], + }; + } catch { + return { colors: [] }; + } +} +export function useDashboardMetadata() { + const [metadata, setMetadata] = useState(load); + const update = (next: Metadata) => { + try { + localStorage.setItem(KEY, JSON.stringify(next)); + setMetadata(next); + } catch { + toast.error("Could not save library preferences"); + } + }; + return { metadata, update }; +} diff --git a/src/components/video-editor/dashboard/useDashboardModel.ts b/src/components/video-editor/dashboard/useDashboardModel.ts new file mode 100644 index 00000000..5ced875e --- /dev/null +++ b/src/components/video-editor/dashboard/useDashboardModel.ts @@ -0,0 +1,110 @@ +import { useMemo, useState } from "react"; +import { toast } from "@/components/ui/toast"; +import type { ProjectLibraryEntry } from "../ProjectBrowserDialog"; +import type { DashboardProps } from "./types"; +import { useDashboardMetadata } from "./useDashboardMetadata"; +import { useProjectFolders } from "./useProjectFolders"; +export function useDashboardModel({ entries, onOpenChange, onOpenProject }: DashboardProps) { + const { metadata, update } = useDashboardMetadata(); + const [selecting, setSelecting] = useState(false); + const [selected, setSelected] = useState([]); + const [confirmDelete, setConfirmDelete] = useState(false); + const toggleSelected = (path: string) => + setSelected((prev) => + prev.includes(path) ? prev.filter((p) => p !== path) : [...prev, path], + ); + const assignFolder = (path: string, id: string) => + save( + folders.map((f) => ({ + ...f, + paths: + f.id === id + ? f.paths.includes(path) + ? f.paths.filter((p) => p !== path) + : [...f.paths, path] + : id === "none" + ? f.paths.filter((p) => p !== path) + : f.paths, + })), + ); + const [query, setQuery] = useState(""); + const [period, setPeriod] = useState("all"); + const [sort, setSort] = useState("recent"); + const [section, setSection] = useState("projects"); + const [busy, setBusy] = useState(false); + const { folders, save } = useProjectFolders(); + const visible = useMemo( + () => + entries + .filter((entry) => { + const cutoff = + period === "week" + ? Date.now() - 7 * 86400000 + : period === "month" + ? Date.now() - 30 * 86400000 + : 0; + const folder = folders.find((f) => f.id === section); + return ( + entry.updatedAt >= cutoff && + entry.name.toLocaleLowerCase().includes(query.trim().toLocaleLowerCase()) && + (!folder || folder.paths.includes(entry.path)) + ); + }) + .sort((a, b) => + sort === "name" + ? a.name.localeCompare(b.name) + : sort === "created" + ? (b.createdAt ?? b.updatedAt) - (a.createdAt ?? a.updatedAt) + : b.updatedAt - a.updatedAt, + ), + [entries, query, period, sort, folders, section], + ); + const run = async (action: () => Promise) => { + if (busy) return; + setBusy(true); + try { + await action(); + } catch (e) { + toast.error(e instanceof Error ? e.message : "Could not complete action"); + } finally { + setBusy(false); + } + }; + const openEntry = (entry: ProjectLibraryEntry) => + entry.isCurrent + ? onOpenChange(false) + : void run(async () => { + await onOpenProject(entry.path); + }); + const navClass = (active: boolean) => + `h-10 w-full justify-start gap-3 px-3 text-[13px] ${active ? "bg-default/50 font-medium" : "text-muted-foreground"}`; + + return { + metadata, + update, + selecting, + setSelecting, + selected, + setSelected, + confirmDelete, + setConfirmDelete, + toggleSelected, + assignFolder, + query, + setQuery, + period, + setPeriod, + sort, + setSort, + section, + setSection, + busy, + folders, + save, + visible, + run, + openEntry, + navClass, + }; +} +export type DashboardModel = ReturnType; diff --git a/src/components/video-editor/dashboard/useProjectFolders.ts b/src/components/video-editor/dashboard/useProjectFolders.ts new file mode 100644 index 00000000..6fe9330f --- /dev/null +++ b/src/components/video-editor/dashboard/useProjectFolders.ts @@ -0,0 +1,50 @@ +import { useEffect, useState } from "react"; +import { toast } from "@/components/ui/toast"; +export const FOLDER_COLORS = ["#929292", "#de85ac", "#d6ad58", "#70ad8a", "#759bd2", "#a68ccc"]; +export type ProjectFolder = { id: string; name: string; color: string; paths: string[] }; +const KEY = "recordly.project-folders.v1"; +export function moveProjectFolderReferences(previous: string, next: string) { + const folders = JSON.parse(localStorage.getItem(KEY) || "[]") as ProjectFolder[]; + if (!Array.isArray(folders)) return; + const updated = folders.map((folder) => ({ + ...folder, + paths: folder.paths.map((path) => (path === previous ? next : path)), + })); + localStorage.setItem(KEY, JSON.stringify(updated)); + window.dispatchEvent(new CustomEvent("recordly-folders-changed", { detail: updated })); +} +export function useProjectFolders() { + const [folders, setFolders] = useState(() => { + try { + const value = JSON.parse(localStorage.getItem(KEY) || "[]"); + return Array.isArray(value) + ? value.filter( + (f) => + f && + typeof f.id === "string" && + typeof f.name === "string" && + /^#[0-9a-f]{6}$/i.test(f.color) && + Array.isArray(f.paths) && + f.paths.every((p: unknown) => typeof p === "string"), + ) + : []; + } catch { + return []; + } + }); + useEffect(() => { + const refresh = (event: Event) => + setFolders((event as CustomEvent).detail); + window.addEventListener("recordly-folders-changed", refresh); + return () => window.removeEventListener("recordly-folders-changed", refresh); + }, []); + const save = (next: ProjectFolder[]) => { + try { + localStorage.setItem(KEY, JSON.stringify(next)); + setFolders(next); + } catch { + toast.error("Could not save folders"); + } + }; + return { folders, save }; +} diff --git a/src/components/video-editor/layout/EditorDialogs.tsx b/src/components/video-editor/layout/EditorDialogs.tsx index 0a011138..8f8a8d26 100644 --- a/src/components/video-editor/layout/EditorDialogs.tsx +++ b/src/components/video-editor/layout/EditorDialogs.tsx @@ -10,7 +10,8 @@ import { DialogTitle, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; -import ProjectBrowserDialog, { type ProjectLibraryEntry } from "../ProjectBrowserDialog"; +import type { ProjectLibraryEntry } from "../ProjectBrowserDialog"; +import { Dashboard } from "../dashboard/Dashboard"; export type UnsavedChangesDecision = "cancel" | "discard" | "save"; @@ -37,9 +38,14 @@ interface EditorDialogsProps { projectBrowserOpen: boolean; setProjectBrowserOpen: Dispatch>; projectLibraryEntries: ProjectLibraryEntry[]; - projectBrowserAnchorRef: RefObject; + projectError: string | null; + onDashboardSignIn: () => void; + onDeleteProjects: (paths: string[]) => Promise; + onRenameProject: (path: string, name: string) => Promise; + onShareProject: (path: string) => Promise; + accountLabel?: string; handleImportMediaOrProject: () => Promise; - handleOpenProjectFromLibrary: (projectPath: string) => Promise; + handleOpenProjectFromLibrary: (projectPath: string) => Promise; nativeCaptureUnavailableModalOpen: boolean; setNativeCaptureUnavailableModalOpen: Dispatch>; } @@ -61,7 +67,12 @@ export function EditorDialogs({ projectBrowserOpen, setProjectBrowserOpen, projectLibraryEntries, - projectBrowserAnchorRef, + projectError, + onDashboardSignIn, + onDeleteProjects, + onRenameProject, + onShareProject, + accountLabel, handleImportMediaOrProject, handleOpenProjectFromLibrary, nativeCaptureUnavailableModalOpen, @@ -170,13 +181,18 @@ export function EditorDialogs({ - void handleImportMediaOrProject()} - onOpenProject={(projectPath) => void handleOpenProjectFromLibrary(projectPath)} + error={projectError} + onSignIn={onDashboardSignIn} + onDeleteProjects={onDeleteProjects} + onRenameProject={onRenameProject} + onShareProject={onShareProject} + accountLabel={accountLabel} + onImportFile={handleImportMediaOrProject} + onOpenProject={handleOpenProjectFromLibrary} /> ["t"]; exportSettings: ReturnType; exportSession: ReturnType; @@ -359,6 +360,7 @@ export function EditorExportMenu(props: Props) { {shareOpen && ( void; t: ReturnType["t"]; headerLeftControlsPaddingClass: string; project: ReturnType; @@ -100,25 +96,13 @@ export function EditorHeader(props: Props) { return (
    - -
    - - -
    -
    - - -
    + / + -
    - {isEditingProjectName ? ( -
    void handleProjectNameSubmit(event)} - className="flex w-full min-w-0 items-center gap-1" - > - {hasUnsavedChanges ? ( - - ) : null} - setProjectNameDraft(event.target.value)} - onBlur={() => { - if (!isSavingProjectName) closeProjectNameEditor(); - }} - onKeyDown={(event) => { - if (event.key === "Escape") { - event.preventDefault(); - closeProjectNameEditor(); - } - }} - disabled={isSavingProjectName} - className="min-w-0 w-full text-sm disabled:cursor-wait" - aria-label={t("editor.project.renameInput", "Project name")} - /> - - .recordly - - - ) : ( - - )} +
    + {isEditingProjectName ? ( +
    void handleProjectNameSubmit(event)} + className="flex w-full min-w-0 items-center gap-1.5 px-1" + > + {hasUnsavedChanges ? ( + + ) : null} + setProjectNameDraft(event.target.value)} + onBlur={() => { + if ( + !isSavingProjectName && + projectNameDraft.trim() !== projectDisplayName + ) + void handleProjectNameSubmit(); + else if (!isSavingProjectName) closeProjectNameEditor(); + }} + onKeyDown={(event) => { + if (event.key === "Escape") { + event.preventDefault(); + closeProjectNameEditor(); + } + }} + disabled={isSavingProjectName} + className="inline-project-name h-9 min-w-0 max-w-full text-sm font-semibold tracking-tight text-foreground/90 disabled:cursor-wait" + style={{ width: `${Math.max(12, projectNameDraft.length + 1)}ch` }} + aria-label={t("editor.project.renameInput", "Project name")} + /> + + ) : ( + + )} +
    +
    +
    + + +
    + + + } + > + requestSignIn("account")} + onDeleteProjects={openActions.handleDeleteProjects} + onRenameProject={openActions.handleRenameLibraryProject} + onShareProject={async (path) => { + if ( + path !== project.currentProjectPath && + !(await openActions.handleOpenProjectFromLibrary(path)) + ) + return; + project.setProjectBrowserOpen(false); + if (!auth.user) requestSignIn("share"); + else setShareRequestNonce((value) => value + 1); + }} + accountLabel={auth.user?.email} + handleImportMediaOrProject={openActions.handleImportMediaOrProject} + handleOpenProjectFromLibrary={openActions.handleOpenProjectFromLibrary} + nativeCaptureUnavailableModalOpen={ui.nativeCaptureUnavailableModalOpen} + setNativeCaptureUnavailableModalOpen={ui.setNativeCaptureUnavailableModalOpen} + /> + + ); if (project.loading && !project.error) return ( @@ -209,8 +237,6 @@ export function EditorShell(props: Props) { return (
    library.setOpen((open) => !open)} t={t} headerLeftControlsPaddingClass={headerLeftControlsPaddingClass} project={project} @@ -295,6 +321,8 @@ export function EditorShell(props: Props) { >
    library.setOpen((open) => !open)} onAccountClick={() => requestSignIn("account")} panelContent={ library.open ? : undefined diff --git a/src/components/video-editor/layout/EditorSidebar.tsx b/src/components/video-editor/layout/EditorSidebar.tsx index 7002bf47..edee811e 100644 --- a/src/components/video-editor/layout/EditorSidebar.tsx +++ b/src/components/video-editor/layout/EditorSidebar.tsx @@ -1,11 +1,7 @@ -import { - UserCircle, - Camera, - ClosedCaptioning, - Cursor, - Gear, - FrameCorners, -} from "@phosphor-icons/react"; +import { File } from "@/components/ui/icons"; +import { AccountAvatar } from "@/components/ui/account-avatar"; +import type { User } from "@supabase/supabase-js"; +import { Camera, ClosedCaptioning, Cursor, Gear, FrameCorners } from "@/components/ui/icons"; import { ToggleButtonGroup, ToggleButton, @@ -23,6 +19,8 @@ import { SettingsPanel } from "../SettingsPanel"; import type { EditorEffectSection } from "../types"; type Props = { + accountUser?: User | null; + onToggleVideos: () => void; panelContent?: ReactNode; onAccountClick?: () => void; t: ReturnType["t"]; @@ -33,6 +31,8 @@ type Props = { export function EditorSidebar({ t, + accountUser, + onToggleVideos, activeSection, setActiveSection, settingsPanelProps, @@ -80,12 +80,19 @@ export function EditorSidebar({ className="w-full items-center gap-2" selectionMode="single" disallowEmptySelection - selectedKeys={panelContent ? [] : [activeSection]} + selectedKeys={[panelContent ? "videos" : activeSection]} onSelectionChange={(keys) => { const key = Array.from(keys)[0]; - if (key) setActiveSection(key as EditorEffectSection); + if (key === "videos") onToggleVideos(); + else if (key) setActiveSection(key as EditorEffectSection); }} > + + + + + Videos + {sections.map((section) => ( - + {section.label} @@ -108,7 +122,7 @@ export function EditorSidebar({ aria-label="Recordly account" onPress={onAccountClick} > - + Account diff --git a/src/components/video-editor/library/RecordingLibraryPanel.tsx b/src/components/video-editor/library/RecordingLibraryPanel.tsx index 222604a1..4aa70f95 100644 --- a/src/components/video-editor/library/RecordingLibraryPanel.tsx +++ b/src/components/video-editor/library/RecordingLibraryPanel.tsx @@ -9,7 +9,7 @@ import { ArrowCounterClockwise, DotsThree, FolderOpen, -} from "@phosphor-icons/react"; +} from "@/components/ui/icons"; import { Button } from "@/components/ui/button"; import { RECORDING_DRAG_TYPE } from "@/types/recordingLibrary"; import { cn } from "@/lib/utils"; diff --git a/src/components/video-editor/library/RecordingThumbnail.tsx b/src/components/video-editor/library/RecordingThumbnail.tsx index 8eddce50..e883666f 100644 --- a/src/components/video-editor/library/RecordingThumbnail.tsx +++ b/src/components/video-editor/library/RecordingThumbnail.tsx @@ -1,5 +1,5 @@ import { useEffect, useRef, useState } from "react"; -import { FilmStrip } from "@phosphor-icons/react"; +import { FilmStrip } from "@/components/ui/icons"; import type { RecordingLibraryEntry } from "@/types/recordingLibrary"; export function RecordingThumbnail({ entry }: { entry: RecordingLibraryEntry }) { diff --git a/src/components/video-editor/project/useProjectLibraryController.ts b/src/components/video-editor/project/useProjectLibraryController.ts index 92a6578b..8b893683 100644 --- a/src/components/video-editor/project/useProjectLibraryController.ts +++ b/src/components/video-editor/project/useProjectLibraryController.ts @@ -112,8 +112,8 @@ export function useProjectLibraryController({ } const canvas = document.createElement("canvas"); - const targetWidth = 320; - const targetHeight = 180; + const targetWidth = 1600; + const targetHeight = 1200; canvas.width = targetWidth; canvas.height = targetHeight; diff --git a/src/components/video-editor/project/useProjectOpenActions.ts b/src/components/video-editor/project/useProjectOpenActions.ts index 9d740492..45e7b4d0 100644 --- a/src/components/video-editor/project/useProjectOpenActions.ts +++ b/src/components/video-editor/project/useProjectOpenActions.ts @@ -6,6 +6,7 @@ import { useCallback, useEffect, } from "react"; +import type { useProjectSaveActions } from "./useProjectSaveActions"; import { toast } from "@/components/ui/toast"; import { fromFileUrl, resolveVideoUrl } from "../projectPersistence"; import type { useAppearanceState } from "../state/useAppearanceState"; @@ -26,7 +27,7 @@ type UseProjectOpenActionsInput = { setDuration: Set; applyLoadedProject: (candidate: unknown, path?: string | null) => Promise; openUnsavedChangesDialog: (actionLabel: string) => Promise<"save" | "discard" | "cancel">; - saveProject: (forceSaveAs: boolean) => Promise; + saveProject: ReturnType["saveProject"]; refreshProjectLibrary: () => Promise; resetSourceScopedEditorState: () => void; applySessionPresentation: (session: null) => void; @@ -79,7 +80,7 @@ export function useProjectOpenActions({ } project.setProjectBrowserOpen(false); await refreshProjectLibrary(); - toast.success(`Project loaded from ${result.path}`); + return true; } catch (error) { project.setError( `Could not load project: ${error instanceof Error ? error.message : String(error)}`, @@ -172,14 +173,31 @@ export function useProjectOpenActions({ refreshProjectLibrary, ]); - const handleOpenProjectBrowser = useCallback(() => { + const handleOpenProjectBrowser = useCallback(async () => { if (project.projectBrowserOpen) { project.setProjectBrowserOpen(false); return; } + videoPlaybackRef.current?.pause(); + setIsPlaying(false); + if ( + project.videoPath && + !project.error && + !(await saveProject(false, { remountPreviewAfterSave: false })) + ) + return; project.setProjectBrowserOpen(true); void refreshProjectLibrary(); - }, [project.projectBrowserOpen, project.setProjectBrowserOpen, refreshProjectLibrary]); + }, [ + project.projectBrowserOpen, + project.setProjectBrowserOpen, + refreshProjectLibrary, + videoPlaybackRef, + setIsPlaying, + saveProject, + project.videoPath, + project.error, + ]); useEffect(() => { const removeLoad = window.electronAPI.onMenuLoadProject( @@ -194,5 +212,32 @@ export function useProjectOpenActions({ }; }, [handleOpenProjectBrowser, handleSaveProject, handleSaveProjectAs]); - return { handleOpenProjectFromLibrary, handleImportMediaOrProject, handleOpenProjectBrowser }; + const handleDeleteProjects = useCallback( + async (paths: string[]) => { + const result = await window.electronAPI.trashProjectFiles(paths); + if (project.currentProjectPath && result.deleted.includes(project.currentProjectPath)) { + project.setCurrentProjectPath(null); + project.setLastSavedSnapshot(null); + } + await refreshProjectLibrary(); + if (result.errors.length) toast.error(result.errors.join("\n")); + return result.deleted; + }, + [project, refreshProjectLibrary], + ); + const handleRenameLibraryProject = async (path: string, name: string) => { + const result = await window.electronAPI.renameLibraryProject(path, name); + if (!result.success || !result.path) throw new Error(result.error || "Could not rename project"); + if (project.currentProjectPath === path) project.setCurrentProjectPath(result.path); + await refreshProjectLibrary(); + return result.path; + }; + + return { + handleRenameLibraryProject, + handleOpenProjectFromLibrary, + handleImportMediaOrProject, + handleOpenProjectBrowser, + handleDeleteProjects, + }; } diff --git a/src/components/video-editor/project/useProjectSaveActions.ts b/src/components/video-editor/project/useProjectSaveActions.ts index e2d002d8..504f491f 100644 --- a/src/components/video-editor/project/useProjectSaveActions.ts +++ b/src/components/video-editor/project/useProjectSaveActions.ts @@ -1,10 +1,12 @@ +import { moveProjectFolderReferences } from "../dashboard/useProjectFolders"; +import { moveProjectShareLink } from "../cloud/projectShareLinks"; import { type RefObject, useCallback, useEffect, useRef } from "react"; import { toast } from "@/components/ui/toast"; import { createProjectData, type EditorProjectData } from "../projectPersistence"; import type { useProjectState } from "../state/useProjectState"; import { cloneStructured, getErrorMessage } from "../videoEditorUtils"; -const PROJECT_AUTOSAVE_DELAY_MS = 1_000; +const PROJECT_AUTOSAVE_DELAY_MS = 750; type SaveProjectOptions = { silent?: boolean; @@ -57,6 +59,11 @@ export function useProjectSaveActions({ setIsSavingProjectName, setProjectBrowserOpen, } = project; + const savingNameRef = useRef(false); + const activePathRef = useRef(currentProjectPath); + activePathRef.current = currentProjectPath; + const activeSourceRef = useRef(currentSourcePath); + activeSourceRef.current = currentSourcePath; const autosaveTimeoutRef = useRef(null); const saveQueueRef = useRef>(Promise.resolve()); const clearPendingAutosave = useCallback(() => { @@ -74,7 +81,9 @@ export function useProjectSaveActions({ const saveProject = useCallback( async (forceSaveAs: boolean, options?: SaveProjectOptions) => { clearPendingAutosave(); + if (forceSaveAs) return openProjectSaveDialog(projectDisplayName || "Untitled Project"); return queueSave(async () => { + if (activeSourceRef.current !== currentSourcePath) return false; if (!currentSourcePath) { if (!options?.silent) toast.error("No video loaded"); return false; @@ -97,40 +106,35 @@ export function useProjectSaveActions({ .split(/[\\/]/) .pop() ?.replace(/\.[^.]+$/, "") || `project-${Date.now()}`; - let targetPath = forceSaveAs ? undefined : (currentProjectPath ?? undefined); - - if (!forceSaveAs && !targetPath) { - const activeProject = await window.electronAPI.loadCurrentProjectFile(); - if (activeProject.success && activeProject.path) { - targetPath = activeProject.path; - setCurrentProjectPath(activeProject.path); - } - } - if (forceSaveAs || !targetPath) { - if (options?.silent) return false; - return await openProjectSaveDialog(projectDisplayName || fileNameBase); - } + const targetPath = forceSaveAs + ? undefined + : (activePathRef.current ?? undefined); const thumbnail = captureThumbnail - ? await captureProjectThumbnail() + ? ((await captureProjectThumbnail()) ?? undefined) : undefined; - const result = await window.electronAPI.saveProjectFile( - projectData, - fileNameBase, - targetPath, - thumbnail, - ); + const result = !targetPath + ? await window.electronAPI.createProjectFile(projectData, thumbnail) + : await window.electronAPI.saveProjectFile( + projectData, + fileNameBase, + targetPath, + thumbnail, + ); if (result.canceled) { if (!options?.silent) toast.info("Project save canceled"); return false; } if (!result.success) { - if (!options?.silent) - toast.error(result.message || "Failed to save project"); + toast.error(result.message || "Failed to save project"); return false; } - if (result.path) setCurrentProjectPath(result.path); + if (activeSourceRef.current !== currentSourcePath) return true; + if (result.path) { + activePathRef.current = result.path; + setCurrentProjectPath(result.path); + } setLastSavedSnapshot( cloneStructured( createProjectData( @@ -141,8 +145,11 @@ export function useProjectSaveActions({ ), ); if (refreshLibrary) await refreshProjectLibrary(); - if (!options?.silent) toast.success(`Project saved to ${result.path}`); + return true; + } catch (error) { + toast.error(`Could not save project: ${getErrorMessage(error)}`); + return false; } finally { if (remount) remountPreview(); } @@ -154,7 +161,6 @@ export function useProjectSaveActions({ currentSourcePath, currentProjectSnapshot, currentPersistedEditorState, - currentProjectPath, lastSavedSnapshot, setCurrentProjectPath, setLastSavedSnapshot, @@ -174,7 +180,12 @@ export function useProjectSaveActions({ [saveProject], ); useEffect(() => { - if (!currentProjectPath || !hasUnsavedChanges) { + if ( + project.projectBrowserOpen || + project.loading || + !currentSourcePath || + !hasUnsavedChanges + ) { clearPendingAutosave(); return; } @@ -188,7 +199,14 @@ export function useProjectSaveActions({ }); }, PROJECT_AUTOSAVE_DELAY_MS); return clearPendingAutosave; - }, [clearPendingAutosave, currentProjectPath, hasUnsavedChanges, saveProject]); + }, [ + clearPendingAutosave, + hasUnsavedChanges, + saveProject, + project.projectBrowserOpen, + project.loading, + currentSourcePath, + ]); useEffect(() => clearPendingAutosave, [clearPendingAutosave]); const saveProjectWithName = useCallback( @@ -202,47 +220,73 @@ export function useProjectSaveActions({ toast.error("No video loaded"); return false; } - try { - const projectData = - currentProjectSnapshot?.videoPath === currentSourcePath - ? currentProjectSnapshot - : createProjectData( - currentSourcePath, - currentPersistedEditorState, - lastSavedSnapshot?.projectId ?? null, + clearPendingAutosave(); + return queueSave(async () => { + if (activeSourceRef.current !== currentSourcePath) return false; + try { + const projectData = + currentProjectSnapshot?.videoPath === currentSourcePath + ? currentProjectSnapshot + : createProjectData( + currentSourcePath, + currentPersistedEditorState, + lastSavedSnapshot?.projectId ?? null, + ); + const previousPath = activePathRef.current; + const result = await window.electronAPI.saveProjectFileNamed( + projectData, + trimmedName, + await captureProjectThumbnail(), + mode, + ); + if (result.canceled) { + toast.info("Project save canceled"); + return false; + } + if (!result.success) { + toast.error(result.message || "Failed to save project"); + return false; + } + if (activeSourceRef.current !== currentSourcePath) return true; + if ( + mode === "rename" && + previousPath && + result.path && + previousPath !== result.path + ) { + try { + moveProjectFolderReferences(previousPath, result.path); + moveProjectShareLink(previousPath, result.path); + } catch { + toast.error( + "Project renamed, but library preferences could not be updated", ); - const result = await window.electronAPI.saveProjectFileNamed( - projectData, - trimmedName, - await captureProjectThumbnail(), - mode, - ); - if (result.canceled) { - toast.info("Project save canceled"); - return false; - } - if (!result.success) { - toast.error(result.message || "Failed to save project"); - return false; - } - if (result.path) setCurrentProjectPath(result.path); - setLastSavedSnapshot( - cloneStructured( - createProjectData( - projectData.videoPath, - projectData.editor, - result.projectId ?? projectData.projectId ?? null, + } + } + if (result.path) { + activePathRef.current = result.path; + setCurrentProjectPath(result.path); + } + setLastSavedSnapshot( + cloneStructured( + createProjectData( + projectData.videoPath, + projectData.editor, + result.projectId ?? projectData.projectId ?? null, + ), ), - ), - ); - await refreshProjectLibrary(); - toast.success(result.path ? `Project saved to ${result.path}` : "Project saved"); - return true; - } finally { - remountPreview(); - } + ); + await refreshProjectLibrary(); + + return true; + } finally { + remountPreview(); + } + }); }, [ + clearPendingAutosave, + queueSave, currentSourcePath, currentProjectSnapshot, currentPersistedEditorState, @@ -296,7 +340,9 @@ export function useProjectSaveActions({ async (event?: React.FormEvent) => { event?.preventDefault(); const name = projectNameDraft.trim(); - if (!name) return closeProjectNameEditor(); + if (savingNameRef.current) return; + if (!name || name === projectDisplayName) return closeProjectNameEditor(); + savingNameRef.current = true; setIsSavingProjectName(true); let saved = false; try { @@ -305,6 +351,7 @@ export function useProjectSaveActions({ toast.error(getErrorMessage(error)); } finally { setIsSavingProjectName(false); + savingNameRef.current = false; } if (saved) setIsEditingProjectName(false); else { @@ -314,6 +361,7 @@ export function useProjectSaveActions({ }, [ projectNameDraft, + projectDisplayName, setIsSavingProjectName, setIsEditingProjectName, projectNameInputRef, diff --git a/src/components/video-editor/project/useProjectSnapshotModel.ts b/src/components/video-editor/project/useProjectSnapshotModel.ts index e138cad1..aab65ffa 100644 --- a/src/components/video-editor/project/useProjectSnapshotModel.ts +++ b/src/components/video-editor/project/useProjectSnapshotModel.ts @@ -42,12 +42,10 @@ export function useProjectSnapshotModel({ ); const projectDisplayName = useMemo(() => { const fileName = - project.currentProjectPath?.split(/[\\/]/).pop() ?? - currentSourcePath?.split(/[\\/]/).pop() ?? - ""; + project.currentProjectPath?.split(/[\\/]/).pop() ?? "Untitled Project"; return ( fileName.replace(/\.recordly$/i, "").replace(/\.[^.]+$/, "") || - t("editor.project.untitled", "Untitled") + t("editor.project.untitled", "Untitled Project") ); }, [project.currentProjectPath, currentSourcePath, t]); diff --git a/src/components/video-editor/timeline/Item.tsx b/src/components/video-editor/timeline/Item.tsx index c8790fd2..c7690d4a 100644 --- a/src/components/video-editor/timeline/Item.tsx +++ b/src/components/video-editor/timeline/Item.tsx @@ -5,7 +5,7 @@ import { MusicNotes as Music, Scissors, SpeakerX, -} from "@phosphor-icons/react"; +} from "@/components/ui/icons"; import { ClipFilmstrip } from "./components/filmstrip/ClipFilmstrip"; import type { Span, GetSpanFromDragEvent, GetSpanFromResizeEvent } from "dnd-timeline"; import { useItem, useTimelineContext } from "dnd-timeline"; diff --git a/src/components/video-editor/timeline/TimelineEditor.tsx b/src/components/video-editor/timeline/TimelineEditor.tsx index 3a2087d9..47252a86 100644 --- a/src/components/video-editor/timeline/TimelineEditor.tsx +++ b/src/components/video-editor/timeline/TimelineEditor.tsx @@ -1,4 +1,4 @@ -import { Plus } from "@phosphor-icons/react"; +import { Plus } from "@/components/ui/icons"; import type { Span } from "dnd-timeline"; import { forwardRef, useEffect, useMemo, useRef, useState } from "react"; import type { diff --git a/src/components/video-editor/timeline/components/viewport/TimelineCanvas.tsx b/src/components/video-editor/timeline/components/viewport/TimelineCanvas.tsx index 23ef6992..824cd3b6 100644 --- a/src/components/video-editor/timeline/components/viewport/TimelineCanvas.tsx +++ b/src/components/video-editor/timeline/components/viewport/TimelineCanvas.tsx @@ -1,5 +1,5 @@ import { useTimelinePresentation } from "../../core/TimelinePresentation"; -import { Plus } from "@phosphor-icons/react"; +import { Plus } from "@/components/ui/icons"; import { useTimelineContext } from "dnd-timeline"; import { type MouseEvent, diff --git a/src/index.css b/src/index.css index 9615a725..e4ee7cb9 100644 --- a/src/index.css +++ b/src/index.css @@ -97,14 +97,6 @@ .editor-playback { container-type: inline-size; } -@media (max-width: 1000px) { - .editor-header { - grid-template-columns: minmax(0, 1fr) minmax(0, 0.4fr) minmax(0, 1fr); - } - .project-file-extension { - display: none; - } -} @container (max-width: 760px) { .editor-playback-tools { grid-row: 2; @@ -174,3 +166,34 @@ animation: none; } } + +/* Keep dashboard focus visible without the oversized default halo. */ +.dashboard-surface :is(button, input, [role="combobox"]):focus-visible, +.dashboard-surface [data-focus-visible="true"] { + outline: 1px solid var(--accent); + outline-offset: 2px; + box-shadow: none; +} +.dashboard-surface .folder-row > button { + background: transparent; +} + +.inline-project-name { + background: transparent; + border: 0; + border-radius: 0; + box-shadow: none; + outline: none; + padding: 0; + color: inherit; +} +.inline-project-name:focus { outline: none; box-shadow: none; } + +.dashboard-shell { + background-color: color-mix(in srgb, var(--background) 92%, var(--foreground) 8%); +} + +.dark .dashboard-shell { background-color: var(--background); } +.dark .dashboard-shell > .card { background-color: color-mix(in srgb, var(--background) 92%, var(--foreground) 8%); } + +.dashboard-settings .custom-scrollbar { padding-inline: 0; scrollbar-gutter: auto !important; } diff --git a/tests/ui/bridge.ts b/tests/ui/bridge.ts index e5a3b7fc..8ebe88ab 100644 --- a/tests/ui/bridge.ts +++ b/tests/ui/bridge.ts @@ -31,6 +31,37 @@ export async function installDesktopBridge(page: Page, videoFixture = "preview.m getAppVersion: async () => "1.4.0", getAnnouncements: async () => ({ success: true, announcements: [] }), loadCurrentProjectFile: async () => ({ success: false }), + createProjectFile: async () => { + document.documentElement.dataset.projectCreates = String( + Number(document.documentElement.dataset.projectCreates || 0) + 1, + ); + return { + success: true, + path: "/projects/Untitled Project.recordly", + projectId: "test-project", + }; + }, + saveProjectFile: async ( + _data: unknown, + _name: string, + projectPath: string, + thumbnail?: string, + ) => { + document.documentElement.dataset.projectSaves = String( + Number(document.documentElement.dataset.projectSaves || 0) + 1, + ); + if (thumbnail) + document.documentElement.dataset.savedThumbnail = thumbnail.slice(0, 22); + return { success: true, path: projectPath, projectId: "test-project" }; + }, + showRecordingHud: async () => { + document.documentElement.dataset.hudOpened = "true"; + }, + trashProjectFiles: async (paths: string[]) => ({ + success: true, + deleted: paths, + errors: [], + }), getCurrentRecordingSession: async () => ({ success: true, session: null }), getCurrentVideoPath: async () => ({ success: true, @@ -44,6 +75,9 @@ export async function installDesktopBridge(page: Page, videoFixture = "preview.m finishRecordingImport: success, setCurrentRecordingSession: success, setHasUnsavedChanges: success, + onAuthCallbackUrl: subscribe, + getPendingAuthCallbackUrl: async () => null, + ackAuthCallbackUrl: success, onMenuSaveProject: subscribe, onMenuSaveProjectAs: subscribe, onMenuLoadProject: subscribe, diff --git a/tests/ui/editor-layout.spec.ts b/tests/ui/editor-layout.spec.ts index 6bfcd462..bdb9f675 100644 --- a/tests/ui/editor-layout.spec.ts +++ b/tests/ui/editor-layout.spec.ts @@ -42,9 +42,7 @@ test("advanced controls preserve values and remember each section's view", async await page.screenshot({ path: "test-results/editor-color-picker.png", animations: "disabled" }); }); -test("header stays centered with long names, native chrome and compact windows", async ({ - page, -}) => { +test("header breadcrumb fits long names, native chrome and compact windows", async ({ page }) => { await installDesktopBridge(page); await page.goto("/?windowType=editor"); await expect(page.getByRole("button", { name: "Rename project" })).toBeVisible({ @@ -53,7 +51,7 @@ test("header stays centered with long names, native chrome and compact windows", await page.getByRole("button", { name: "Rename project" }).click(); await page .getByRole("textbox", { name: "Project name" }) - .fill("A very long project title that should stay centered and never cover the toolbar"); + .fill("A very long project title that should truncate and never cover the toolbar"); // Validate the editing state as well as the display state. for (const width of [1440, 1280, 800]) { await page.setViewportSize({ width, height: 800 }); @@ -85,8 +83,8 @@ test("header stays centered with long names, native chrome and compact windows", ), ); const [left, center, right] = boxes; - expect(Math.abs(center!.x + center!.width / 2 - width / 2)).toBeLessThan(1); - expect(left!.x + left!.width).toBeLessThanOrEqual(center!.x); + expect(center!.x).toBeGreaterThan(left!.x); + expect(left!.x + left!.width).toBeLessThanOrEqual(right!.x); expect(center!.x + center!.width).toBeLessThanOrEqual(right!.x); const buttons = await page.locator(".editor-playback button").evaluateAll((nodes) => nodes @@ -117,3 +115,28 @@ test("header stays centered with long names, native chrome and compact windows", await page.keyboard.press("Escape"); await expect(page.getByRole("button", { name: "Rename project" })).toBeVisible(); }); + +test("header name edits in place and saves on blur without a boxed input", async ({ page }) => { + await installDesktopBridge(page); + await page.addInitScript(() => { + window.electronAPI.saveProjectFileNamed = async (_data, name) => ({ + success: true, + path: `/projects/${name}.recordly`, + }); + }); + await page.goto("/?windowType=editor"); + await expect(page.getByRole("button", { name: "Rename project" })).toContainText( + "Untitled Project", + ); + await page.getByRole("button", { name: "Rename project" }).click(); + const input = page.getByRole("textbox", { name: "Project name" }); + await expect(input).toHaveCSS("box-shadow", "none"); + await expect(input).toHaveCSS("border-top-width", "0px"); + await input.fill("Launch demo"); + await input.press("Tab"); + await expect(page.getByRole("button", { name: "Rename project" })).toContainText("Launch demo"); + await page.getByRole("button", { name: "Rename project" }).click(); + await input.fill("Discard this"); + await input.press("Escape"); + await expect(page.getByRole("button", { name: "Rename project" })).toContainText("Launch demo"); +}); diff --git a/tests/ui/hud-layout.spec.ts b/tests/ui/hud-layout.spec.ts new file mode 100644 index 00000000..51e03146 --- /dev/null +++ b/tests/ui/hud-layout.spec.ts @@ -0,0 +1,42 @@ +import { expect, test } from "@playwright/test"; +import { installDesktopBridge } from "./bridge"; + +test("HUD dividers are vertically centered", async ({ page }) => { + await installDesktopBridge(page); + await page.goto("/?windowType=hud-overlay"); + const dividers = page.locator(".separator--vertical"); + await expect(dividers.first()).toBeVisible(); + const offsets = await dividers.evaluateAll((elements) => + elements.map((element) => { + const bounds = element.getBoundingClientRect(); + const parent = element.parentElement!.getBoundingClientRect(); + return Math.abs(bounds.y + bounds.height / 2 - parent.y - parent.height / 2); + }), + ); + for (const offset of offsets) expect(offset).toBeLessThanOrEqual(1); + await page.screenshot({ path: "test-results/hud-dividers.png", animations: "disabled" }); +}); + +test("recording HUD uses uniform controls and a readable timer", async ({ page }) => { + await installDesktopBridge(page); + await page.addInitScript(() => { + window.electronAPI.onRecordingStateChanged = (callback) => { + const listener = () => callback({ recording: true }); + window.addEventListener("test-recording-started", listener); + return () => window.removeEventListener("test-recording-started", listener); + }; + }); + await page.goto("/?windowType=hud-overlay"); + await expect(page.locator(".separator--vertical").first()).toBeVisible(); + await page.evaluate(() => window.dispatchEvent(new Event("test-recording-started"))); + const controls = page.getByRole("group", { name: "Recording controls" }); + await expect(controls).toBeVisible(); + await expect(controls.getByRole("status")).toContainText("00:00"); + const sizes = await controls.getByRole("button").evaluateAll((buttons) => + buttons.map((button) => { + return [(button as HTMLElement).offsetWidth, (button as HTMLElement).offsetHeight]; + }), + ); + for (const size of sizes) expect(size).toEqual([36, 36]); + await page.screenshot({ path: "test-results/hud-recording.png" }); +}); diff --git a/tests/ui/project-dashboard.spec.ts b/tests/ui/project-dashboard.spec.ts new file mode 100644 index 00000000..b7ccfadb --- /dev/null +++ b/tests/ui/project-dashboard.spec.ts @@ -0,0 +1,396 @@ +import { expect, test } from "@playwright/test"; +import { installDesktopBridge } from "./bridge"; + +test("home dashboard searches, sorts, opens projects and returns to the editor", async ({ + page, +}) => { + await installDesktopBridge(page); + await page.addInitScript(() => { + const entries = [ + { + path: "/projects/launch.recordly", + name: "Launch video", + updatedAt: 1758000000000, + thumbnailPath: null, + isCurrent: true, + isInProjectsDirectory: true, + }, + { + path: "/projects/demo.recordly", + name: "App walkthrough", + updatedAt: 1759000000000, + thumbnailPath: `${location.origin}/tests/ui/fixtures/recording-thumbnail.jpg`, + isCurrent: false, + isInProjectsDirectory: true, + }, + { + path: "/projects/tutorial.recordly", + name: "Getting started", + updatedAt: 1757000000000, + thumbnailPath: null, + isCurrent: false, + isInProjectsDirectory: true, + }, + ]; + window.electronAPI.listProjectFiles = async () => ({ + success: true, + projects: [], + entries, + }); + window.electronAPI.openProjectFileAtPath = async (path) => { + document.documentElement.dataset.openedProject = path; + return { success: false, canceled: true }; + }; + }); + await page.goto("/?windowType=editor"); + await page.getByRole("button", { name: "Open projects", exact: true }).click(); + const home = page.getByRole("dialog", { name: "Projects dashboard", exact: true }); + await expect(home).toBeVisible(); + const cards = home.getByRole("list", { name: "Your projects" }).locator("li > button"); + await expect(cards).toHaveCount(3); + await expect(cards.first()).toHaveAccessibleName("App walkthrough"); + await home.getByRole("button", { name: "Sort projects" }).click(); + await page.getByRole("menuitem", { name: "Name", exact: true }).click(); + await expect(cards.nth(1)).toHaveAccessibleName("Getting started"); + await home.getByRole("textbox", { name: "Search projects" }).fill("launch"); + await expect(cards).toHaveCount(1); + await home.getByRole("textbox", { name: "Search projects" }).fill("missing"); + await expect(home.getByText("No matching projects")).toBeVisible(); + await home.getByRole("button", { name: "Clear search" }).click(); + await home.getByRole("button", { name: "App walkthrough", exact: true }).click(); + await expect(page.getByRole("dialog", { name: "Project details" })).toHaveCount(0); + await expect(page.locator("html")).toHaveAttribute( + "data-opened-project", + "/projects/demo.recordly", + ); + await expect(home).toBeVisible(); + await home.getByRole("button", { name: "New folder", exact: true }).click(); + await expect(page.getByRole("dialog", { name: "New folder", exact: true })).toHaveCount(0); + await home.getByRole("button", { name: "Untitled folder", exact: true }).dblclick(); + await home.getByRole("textbox", { name: "Folder name" }).fill("Tutorials"); + await page.keyboard.press("Enter"); + await home.getByRole("button", { name: "Change color for Tutorials", exact: true }).click(); + await page.getByRole("textbox", { name: "Hex color", exact: true }).fill("#123abc"); + await page.keyboard.press("Tab"); + await page.getByRole("button", { name: "Save custom color", exact: true }).click(); + await expect( + page.getByRole("button", { name: "Remove custom color", exact: true }), + ).toBeVisible(); + await page.keyboard.press("Escape"); + await home.getByRole("button", { name: "Projects", exact: true }).click(); + await expect(home.locator('[aria-label="Local profile"]')).toHaveCount(3); + + await home.getByRole("button", { name: "Options for App walkthrough", exact: true }).click(); + await expect(page.getByRole("menuitem", { name: "No folder", exact: true })).toHaveCount(0); + await page.keyboard.press("Escape"); + await home.getByRole("button", { name: "Add folder to App walkthrough", exact: true }).click(); + await page.getByRole("menuitem", { name: "Tutorials", exact: true }).click(); + await expect( + home.getByRole("button", { name: "Remove App walkthrough from Tutorials", exact: true }), + ).toContainText("Tutorials"); + await home.getByRole("button", { name: "Tutorials", exact: true }).click(); + await expect(cards).toHaveCount(1); + await expect(cards.first()).toHaveAccessibleName("App walkthrough"); + await home.getByRole("button", { name: "Projects", exact: true }).click(); + await home.getByRole("button", { name: "Last 7 days", exact: true }).click(); + await expect(cards).toHaveCount(0); + await home.getByRole("button", { name: "All", exact: true }).click(); + await expect(cards).toHaveCount(3); + await home.getByRole("button", { name: "Settings", exact: true }).click(); + await expect(home.getByRole("region", { name: "Dashboard settings" })).toBeVisible(); + await home.getByRole("button", { name: "Projects", exact: true }).click(); + await home.getByRole("button", { name: "New", exact: true }).click(); + await expect(page.locator("html")).toHaveAttribute("data-hud-opened", "true"); + await home.getByRole("button", { name: "Select projects to delete" }).click(); + await cards.first().click(); + await expect(cards.first()).toHaveAttribute("aria-pressed", "true"); + await home.getByRole("button", { name: "Delete", exact: true }).click(); + await expect(page.getByRole("dialog", { name: "Delete 1 project?" })).toBeVisible(); + await page + .getByRole("dialog", { name: "Delete 1 project?" }) + .getByRole("button", { name: "Cancel", exact: true }) + .click(); + await home.getByRole("button", { name: "Cancel", exact: true }).click(); + await page.screenshot({ path: "test-results/project-dashboard.png", animations: "disabled" }); + await page.evaluate(() => document.documentElement.classList.add("dark")); + await page.screenshot({ + path: "test-results/project-dashboard-dark.png", + animations: "disabled", + }); + await page.evaluate(() => document.documentElement.classList.remove("dark")); + await page.setViewportSize({ width: 800, height: 800 }); + await expect(home.getByRole("button", { name: "Import", exact: true })).toBeInViewport(); + await page.screenshot({ + path: "test-results/project-dashboard-compact.png", + animations: "disabled", + }); + await home.getByRole("button", { name: "Launch video", exact: true }).click(); + await expect(home).not.toBeVisible(); + await expect(page.getByRole("button", { name: "Rename project" })).toBeVisible(); +}); + +test("home dashboard explains an empty library", async ({ page }) => { + await installDesktopBridge(page); + await page.goto("/?windowType=editor"); + await page.getByRole("button", { name: "Open projects", exact: true }).click(); + await expect(page.getByText("No projects yet")).toBeVisible(); + await page.getByRole("button", { name: "Back to editor" }).click(); + await expect(page.getByRole("button", { name: "Rename project" })).toBeVisible(); +}); + +test("autosave creates one untitled project, stays idle without edits, and refreshes its preview on exit without a saved toast", async ({ + page, +}) => { + await installDesktopBridge(page); + await page.goto("/?windowType=editor"); + await expect(page.locator("html")).toHaveAttribute("data-project-creates", "1"); + await expect(page.getByRole("button", { name: "Rename project" })).toContainText( + "Untitled Project", + ); + // Observe more than two debounce periods: idle must not perform periodic saves. + const before = await page.locator("html").getAttribute("data-project-saves"); + await page.waitForTimeout(1800); + await expect(page.locator("html")).toHaveAttribute("data-project-creates", "1"); + expect(await page.locator("html").getAttribute("data-project-saves")).toBe(before); + await page.getByRole("button", { name: "Open projects", exact: true }).click(); + await expect(page.getByRole("dialog", { name: "Projects dashboard" })).toBeVisible(); + await expect(page.locator("html")).toHaveAttribute( + "data-saved-thumbnail", + /^data:image\/png;base64,/, + ); + await expect(page.getByText(/Project saved/)).toHaveCount(0); +}); + +test("deletion refreshes the grid and keeps unselected projects", async ({ page }) => { + await installDesktopBridge(page); + await page.addInitScript(() => { + let entries = ["Keep", "Delete"].map((name) => ({ + path: `/projects/${name}.recordly`, + name, + updatedAt: Date.now(), + thumbnailPath: null, + isCurrent: false, + isInProjectsDirectory: true, + })); + window.electronAPI.listProjectFiles = async () => ({ success: true, entries }); + window.electronAPI.trashProjectFiles = async (paths) => { + entries = entries.filter((e) => !paths.includes(e.path)); + return { success: true, deleted: paths, errors: [] }; + }; + }); + await page.goto("/?windowType=editor"); + await page.getByRole("button", { name: "Open projects", exact: true }).click(); + const home = page.getByRole("dialog", { name: "Projects dashboard" }); + await home.getByRole("button", { name: "Select projects to delete" }).click(); + await home.getByRole("list").getByRole("button", { name: "Delete", exact: true }).click(); + await home + .getByRole("button", { name: "Delete", exact: true }) + .filter({ hasNot: page.locator("img") }) + .first() + .click(); + await page + .getByRole("dialog", { name: "Delete 1 project?" }) + .getByRole("button", { name: "Move to Trash" }) + .click(); + await expect( + home.getByRole("list").getByRole("button", { name: "Delete", exact: true }), + ).toHaveCount(0); + await expect(home.getByRole("button", { name: "Keep", exact: true })).toBeVisible(); +}); + +test("cards rename inline, preserve folder chips and use existing share links", async ({ + page, +}) => { + await installDesktopBridge(page); + await page.addInitScript(() => { + let entry = { + path: "/projects/demo.recordly", + name: "Demo", + updatedAt: Date.now(), + thumbnailPath: null, + isCurrent: false, + isInProjectsDirectory: true, + }; + localStorage.setItem( + "recordly.project-folders.v1", + JSON.stringify([{ id: "folder", name: "Work", color: "#123abc", paths: [entry.path] }]), + ); + localStorage.setItem( + "recordly.project-share-links.v1", + JSON.stringify({ [entry.path]: "https://example.com/shared/demo" }), + ); + window.electronAPI.listProjectFiles = async () => ({ success: true, entries: [entry] }); + window.electronAPI.renameLibraryProject = async (_path, name) => { + entry = { ...entry, path: `/projects/${name}.recordly`, name }; + return { success: true, path: entry.path }; + }; + window.electronAPI.openExternalUrl = async (url) => { + document.documentElement.dataset.openedUrl = url; + return { success: true }; + }; + }); + await page.goto("/?windowType=editor"); + await page.getByRole("button", { name: "Open projects", exact: true }).click(); + const home = page.getByRole("dialog", { name: "Projects dashboard" }); + await expect(home.getByRole("button", { name: "Remove Demo from Work" })).toContainText("Work"); + await home.getByRole("button", { name: "Options for Demo" }).click(); + await page.getByRole("menuitem", { name: "View in web", exact: true }).click(); + await expect(page.locator("html")).toHaveAttribute( + "data-opened-url", + "https://example.com/shared/demo", + ); + await home.getByRole("button", { name: "Options for Demo" }).click(); + await page.getByRole("menuitem", { name: "Rename", exact: true }).click(); + await home.getByRole("textbox", { name: "Project name" }).fill("Renamed"); + await page.keyboard.press("Enter"); + await expect(home.getByRole("button", { name: "Renamed", exact: true })).toBeVisible(); + await expect(home.getByRole("button", { name: "Remove Renamed from Work" })).toContainText( + "Work", + ); + await home.getByRole("button", { name: "Options for Renamed" }).click(); + await expect(page.getByRole("menuitem", { name: "View in web", exact: true })).toBeVisible(); +}); + +test("dashboard supports creation sort, independent folders, shared settings and precise captions", async ({ + page, +}) => { + await installDesktopBridge(page); + await page.addInitScript(() => { + localStorage.setItem( + "recordly.project-folders.v1", + JSON.stringify([ + { id: "one", name: "Work", color: "#123abc", paths: ["/old.recordly"] }, + { id: "two", name: "Personal", color: "#123abc", paths: [] }, + ]), + ); + window.electronAPI.listProjectFiles = async () => ({ + success: true, + entries: [ + { + path: "/old.recordly", + name: "Old", + updatedAt: 300, + createdAt: 100, + thumbnailPath: null, + isCurrent: false, + isInProjectsDirectory: true, + }, + { + path: "/new.recordly", + name: "Newer", + updatedAt: 200, + createdAt: 200, + thumbnailPath: null, + isCurrent: false, + isInProjectsDirectory: true, + }, + ], + }); + }); + await page.goto("/?windowType=editor"); + await page.getByRole("radio", { name: "Videos", exact: true }).click(); + await expect(page.getByRole("complementary", { name: "Videos" })).toBeVisible(); + await page.getByRole("button", { name: "Open projects", exact: true }).click(); + const home = page.getByRole("dialog", { name: "Projects dashboard" }); + await home.getByRole("button", { name: "Next announcement" }).click(); + await expect( + home.getByRole("img", { name: "Announcement banner placeholder 2" }), + ).toBeVisible(); + await home.getByRole("button", { name: "Sort projects" }).click(); + await page.getByRole("menuitem", { name: "Last created", exact: true }).click(); + await expect( + home.getByRole("list", { name: "Your projects" }).locator("li > button").first(), + ).toHaveAccessibleName("Newer"); + await home.getByRole("button", { name: "Add folder to Old" }).click(); + await page.getByRole("menuitem", { name: "Personal", exact: true }).click(); + await expect(home.getByRole("button", { name: "Remove Old from Work" })).toBeVisible(); + await expect(home.getByRole("button", { name: "Remove Old from Personal" })).toBeVisible(); + const membership = await page.evaluate(() => + JSON.parse(localStorage.getItem("recordly.project-folders.v1") || "[]"), + ); + expect( + membership.every((folder: { paths: string[] }) => folder.paths.includes("/old.recordly")), + ).toBe(true); + const heights = await home + .getByRole("list", { name: "Your projects" }) + .locator("li") + .evaluateAll((cards) => + cards.map((card) => [ + card.querySelector('[aria-label="Local profile"]')!.getBoundingClientRect().height, + card.querySelector("[data-project-caption]")!.getBoundingClientRect().height, + ]), + ); + for (const [avatar, caption] of heights) expect(avatar).toBe(caption); + const avatar = home.locator('[aria-label="Local profile"]').first(); + const circle = await avatar.evaluate((element) => { + const style = getComputedStyle(element); + const rect = element.getBoundingClientRect(); + return { width: rect.width, height: rect.height, radius: parseFloat(style.borderRadius) }; + }); + expect(circle.width).toBe(circle.height); + expect(circle.radius).toBeGreaterThanOrEqual(circle.width / 2); + await expect(avatar).toHaveText("LP"); + await home.getByRole("button", { name: "Settings", exact: true }).click(); + await expect(home.getByRole("textbox", { name: "Search projects" })).toHaveCount(0); + await expect(home.getByRole("button", { name: "Sort projects" })).toHaveCount(0); + await expect(home.getByRole("row", { name: "Dark", exact: true })).toBeVisible(); + await expect(home.getByRole("switch", { name: "Experimental updates" })).toBeVisible(); + await expect(home.getByRole("switch", { name: "Connect Zooms" })).toBeVisible(); + await page.screenshot({ path: "test-results/dashboard-settings.png" }); +}); + +test("Solar navigation selection, circular initials, and Raw sources are consistent", async ({ + page, +}) => { + await installDesktopBridge(page); + await page.addInitScript(() => { + window.electronAPI.listRecordings = async (includeSources) => ({ + success: true, + value: (includeSources + ? ["screen.mp4", "screen.webcam.mp4", "screen.mic.wav"] + : ["screen.mp4"] + ).map((name) => ({ + path: `/recordings/${name}`, + name, + createdAt: Date.now(), + bytes: 1048576, + url: `${location.origin}/tests/ui/fixtures/preview.mp4`, + })), + }); + window.electronAPI.revealInFolder = async (path) => { + document.documentElement.dataset.revealed = path; + return { success: true }; + }; + window.electronAPI.getRecordingThumbnail = async () => ({ + success: false, + error: "No thumbnail", + }); + }); + await page.goto("/?windowType=editor"); + const scene = page.getByRole("radio", { name: "Scene", exact: true }); + const videos = page.getByRole("radio", { name: "Videos", exact: true }); + await expect(scene).toBeChecked(); + await expect(scene.locator("svg")).toHaveAttribute("data-icon-style", "bold"); + await videos.click(); + await expect(videos).toBeChecked(); + await expect(videos.locator("svg")).toHaveAttribute("data-icon-style", "bold"); + await expect(scene.locator("svg")).toHaveAttribute("data-icon-style", "linear"); + await scene.click(); + await expect(scene).toBeChecked(); + await expect(videos).not.toBeChecked(); + const homeButton = page.getByRole("button", { name: "Open projects", exact: true }); + await expect(homeButton.locator("svg")).toHaveAttribute("data-icon-style", "bold"); + await homeButton.click(); + const home = page.getByRole("dialog", { name: "Projects dashboard" }); + await home.getByRole("button", { name: "Raw", exact: true }).click(); + await expect(home.getByRole("list", { name: "Raw files" }).locator("li")).toHaveCount(3); + await expect(home.getByRole("textbox", { name: "Search projects" })).toHaveCount(0); + await home.getByRole("textbox", { name: "Search raw files" }).fill("mic"); + await expect(home.getByRole("list", { name: "Raw files" }).locator("li")).toHaveCount(1); + await home.getByRole("button", { name: "Show screen.mic.wav in folder" }).click(); + await expect(page.locator("html")).toHaveAttribute( + "data-revealed", + "/recordings/screen.mic.wav", + ); + await page.screenshot({ path: "test-results/dashboard-raw.png" }); +});