From ca9656854e7dd26a21974799e2d7da3fd6776a0a Mon Sep 17 00:00:00 2001 From: Paul Joshi Date: Tue, 3 Nov 2026 17:20:32 +0530 Subject: [PATCH 1/2] Search pages, metadata and sitemap for openkeys.live Static comparison and how-it-works pages (Yousician, Synthesia, Simply Piano, flowkey) built after vite build from site/pages.mjs, a generated sitemap, robots.txt, llms.txt, an IndexNow key, share image and richer structured data on the app page. The old vercel.app address redirects to openkeys.live. Co-Authored-By: Claude Opus 5.5 --- README.md | 3 + docs/DECISIONS.md | 5 + index.html | 72 ++++- package.json | 4 +- public/3071ecf16c40a239023848ab12f05eb7.txt | 1 + public/img/practice.jpg | Bin 0 -> 196834 bytes public/llms.txt | 29 ++ public/og-image.jpg | Bin 0 -> 74346 bytes public/robots.txt | 4 + scripts/build-site.mjs | 163 +++++++++++ site/pages.mjs | 303 ++++++++++++++++++++ site/site.css | 140 +++++++++ src/ui/screens/Today.tsx | 4 + vercel.json | 8 + vite.config.ts | 5 +- 15 files changed, 735 insertions(+), 6 deletions(-) create mode 100644 public/3071ecf16c40a239023848ab12f05eb7.txt create mode 100644 public/img/practice.jpg create mode 100644 public/llms.txt create mode 100644 public/og-image.jpg create mode 100644 public/robots.txt create mode 100644 scripts/build-site.mjs create mode 100644 site/pages.mjs create mode 100644 site/site.css diff --git a/README.md b/README.md index a3fbd9d..f755134 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,9 @@ played (notes, timing, held length and dynamics), and teaches with immediate, sp No account, no server, no tracking: **audio never leaves your device.** It installs as an app and works offline. +**Try it: [openkeys.live](https://openkeys.live)** · a free, open-source alternative to Yousician, Synthesia, +Simply Piano and flowkey for piano ([how it compares](https://openkeys.live/alternatives/)). + ![OpenKeys practice screen: sheet music with coloured notes, falling notes and the on-screen keyboard](docs/practice.png) ## What it does diff --git a/docs/DECISIONS.md b/docs/DECISIONS.md index 317a396..6c0d4dc 100644 --- a/docs/DECISIONS.md +++ b/docs/DECISIONS.md @@ -124,3 +124,8 @@ frustrating feedback**. This file records those choices and why. 36. **Note names on the sheet are hand-coloured pills** (blue right hand, soft purple left hand, as on the keyboard and falling notes) in a row under each staff, so they never read as part of the black engraving (or its inverted dark version). Chords stack in pitch order, and the engraving reserves room for the row. +37. **Search pages are static HTML next to the app.** The app is a single client-rendered page, so the pages + that answer searches ("Yousician alternative", "Synthesia in the browser", "learn piano free") are plain + HTML written by `scripts/build-site.mjs` from `site/pages.mjs` after `vite build`, together with + `sitemap.xml`. They use the same tokens and fonts, need no JavaScript, and are excluded from the service + worker's app fallback. Claims about other apps stay general, dated and honest about what OpenKeys lacks. diff --git a/index.html b/index.html index 6f59618..7ecdc37 100644 --- a/index.html +++ b/index.html @@ -4,14 +4,80 @@ - + OpenKeys · Free piano teacher that listens to you play + + + + + + - OpenKeys + + + + + + + + + + + + + + + + +
- + diff --git a/package.json b/package.json index aee9bd1..7a8d74f 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "openkeys", "private": true, "version": "0.1.0", - "description": "Open-source, browser-based piano learning app: play, listen, judge, teach.", + "description": "Free, open-source piano teacher in the browser: listens through your mic or MIDI keyboard. A free alternative to Yousician, Synthesia, Simply Piano and flowkey.", "license": "MIT", "type": "module", "scripts": { @@ -10,7 +10,7 @@ "predev": "node scripts/copy-samples.mjs", "dev": "vite", "prebuild": "node scripts/copy-samples.mjs", - "build": "tsc -b && vite build", + "build": "tsc -b && vite build && node scripts/build-site.mjs", "preview": "vite preview", "typecheck": "tsc -b", "test": "vitest run", diff --git a/public/3071ecf16c40a239023848ab12f05eb7.txt b/public/3071ecf16c40a239023848ab12f05eb7.txt new file mode 100644 index 0000000..a84985b --- /dev/null +++ b/public/3071ecf16c40a239023848ab12f05eb7.txt @@ -0,0 +1 @@ +3071ecf16c40a239023848ab12f05eb7 \ No newline at end of file diff --git a/public/img/practice.jpg b/public/img/practice.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcab8abe847133ea060b1e21e5ffbeff464da32a GIT binary patch literal 196834 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

?w& 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

PwZ-fo@e|Y7Y|1;?mXFcoGDr@ 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

=JKj^($*1ehCPP;I6e%c!&N>f= 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%0Dvbc5DhG#e2=AZ97xU4g$oHY|{ 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 G_1^%lxNCX< literal 0 HcmV?d00001 diff --git a/public/llms.txt b/public/llms.txt new file mode 100644 index 0000000..9e65998 --- /dev/null +++ b/public/llms.txt @@ -0,0 +1,29 @@ +# OpenKeys + +> OpenKeys (https://openkeys.live) is a free, open-source piano teacher that runs in the web browser. It listens to you play through the microphone (acoustic piano or keyboard) or a USB MIDI keyboard, waits on the right note, tells you what you played instead, and loops the bars you keep missing. No account, no subscription, no ads. Audio never leaves the device. MIT licensed. + +People often look for OpenKeys as a free or open-source alternative to Yousician, Synthesia (falling notes, in the browser), Simply Piano and flowkey, for piano only. + +## What it does + +- Input: microphone with a 2-minute setup wizard, USB MIDI keyboard (Chrome, Edge, Firefox; Safari is microphone only), or computer keys. +- Practice modes: Listen, Wait (stops until you play the right notes), Play along at 25-150% tempo, Follow me (follows your tempo), Loop drill (tempo rises 5% after each clean pass). Hands separately or together. +- Views: sheet music, falling notes, or both, with an on-screen keyboard. +- Feedback: notes marked right or wrong in place, wrong notes shown as ghost noteheads, results with a bar-by-bar heatmap, top trouble spots with a one-click practice loop, and coaching such as per-hand timing. +- Learning: a 7-lesson course, generated drills (scales and arpeggios in any key, chord progressions, sight-reading, rhythm, ear training, note reading), daily goal and streak, spaced review of trouble spots. +- Music: 15 built-in public-domain pieces in graded versions (Ode to Joy, Für Elise, Gymnopédie No. 1, Prelude in C, Minuet in G, Canon in D and more); import MusicXML/MXL, MIDI and ABC; built-in ABC editor. +- Free play with a live piano roll; record and transcribe to a score or MIDI, locally. +- Installs as an app and works offline. + +## Limits + +- Piano and keyboard only. +- A small built-in library (15 pieces) compared with commercial apps; no licensed pop songs; no video lessons. + +## Links + +- App: https://openkeys.live/ +- How it works: https://openkeys.live/learn-piano-free/ +- Comparison with Yousician, Synthesia, Simply Piano and flowkey: https://openkeys.live/alternatives/ +- Source code: https://github.com/PaulJoshi/OpenKeys +- Microphone accuracy measurements: https://github.com/PaulJoshi/OpenKeys/blob/main/docs/ACCURACY.md diff --git a/public/og-image.jpg b/public/og-image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..273de84984f4efed3d82763e8bb73be25181ae93 GIT binary patch literal 74346 zcmeFZ2_RH&+dqC}OVYGhl9&onLS;*2l8_`t$U2qmF)6z-Q-rJ&EkcYesVq}5D9qR? z$-ZPC`)Hvt``pWQeXixc?&}<82eTj8dR9wE z3t(XZfHUAffJp+*X?i)>0)U<#a1a21jQ~rq1HcBBz$(Bl@B{$XBo=@b{L8{*0zlG+ zU+%KKNn-t_yuo9=B6AuzcEKLuhPZ8yxVcA8<}h&Vl#U+TdTZeEtt|enxV1$%{3`}{ z$2NY4>**Br6pA^((xIcF0l#3NucdQN^Vhr7q?pm+NbthHZ|MB*$<9v zeQe-y)%y0$pGyDL@1?e%>NZRNS2g~d>s;4uZd-%*$>1q=3+x;u0WVnQwfm_oxn92Z zQ(1Mr?CEyX4Xkrvy?pDEfd*K<4wfbDzAIn*u55kt)_VPLu#T$p4fplF){phsZMJbS zG6er_1kc^TZNLD~22QQdAN)UfAd*3PE`qFi@Y}U(u>g=C2mm`ff4e4@1OSkG0FYPz z+qK_la`Wn~tKXVi=g4piywF&VB5yNeeV%W$DY#2~zl7w0gYpWBO2?FsYn;~9(mtbe*6@;%u?a{9>+3eQ zcJ>aAx82-5JiWYq0`3I{1>X+|jehv(@spURv2n>MscA3LU%q<%E+-eCmtXMyLs@x6 zWmR>}$4^boEv;?s9bY?11A{}uBco&E6O_66g~g?1>dNZ+yg*6$X%@MWR~MiGO62;n0sLXzuwer$J1cmwbFi-;9Go2A4$hyC zjo*$<>j(F*2NP_BW&KI;G4N;eMvje}|M0==0TqrevlH0N$^wFkbsGQ!7<^c(Elj{?aPBPd zG1TGt10C*n$7q>bAZi1}Dy2k0!d@hd>O0UENZ=zn=?PR(%rrAfQep!mO5O(~rd%(9 z)h=X1|FUrzm9YDEw9_(;we??81L}!p7`J$j8RzHuC^h`soN{7s0X;h6=RvYWH=kny zha&43l*RP5*W;ekkHO(65+$O>{4^b=ewsqc&piM>)nPCd)q3+KRJGs-B|3idtm6Z%d zEB?h8V_&O`th1Xh`dx>*)b=-;?bof7LEs=>5{Gh^4+-^pxcYFS(F@0yWDJwtu%Q<~DJNkCQ~;W2A!J?*1g zeyO%57Q7U>7KxHTic<~An5BD-^h<4hJgO&r(=tDZYM%w&y)v7ZU_YhtJu*Rq%ZTPPDqf>rdeHt55jCgG}SM9v~r6u}r`bUAm76jBTUHGMGRI69|-D%BOFa zV%%W@JJ95P)pSYL`KIbBt3yq6S-*Zim_b2+c1v2MZ>`w1eUFoAfhCg|QXMJ)U8=zZ zh7wVq`;kA?B3={S{t9z;y@Y=_ZroaZUttml>GC>1F=x_z z$nMERZ!2ad+SFexGNeIZTk_l4yW{77&!-pDmW8gRS#^J@n@@ykwMrKXJKg>r`u~cC zt|)8HlU;VQ`^&o7O^hRSqedj;Ho0D#!n2ll*Bh%=cHm54fVI~ik7E`%jozX@$H1=q zVLtp{>fZ?b?Lz9yvPA#i!TN}OXV!AY?@Wh~_ z11ks2i{4e_yuFg85-Toxg8O}~PofjY@73I&H;v2&&|gUo1tkAXPmiS(UqkyOPK2Wp zUNIE#SbEW@3GiP0-#^jJ#y>+j!T=QxD(uEJqM8Cytr>L?DM8g85Js1OXcD}E7dob) zaWq)+oSo{OF_Q^NR#K-_huSezJy8f|i`^w#j>aVJEG8!wIX6*m;Q8i;=dO#1J?-vR zEXSmIb96I!fk)pcqrF162a=2BNS>wGP^^%9*erxD-hfcm@O#mr_u5L`wlGdg*RAhR z`r7?!*>S6DnVE$tG-CP5EyQBX5tyRUOp!O4fd45* zRTJtn6X4Ay245WS+>)I?`Ers~m!|HlzI1~<=5v+MIJKP;41W#Fvzrbi=MSb&L1~9k zUkE$`8dg-D)Cmu>uCt2OBUY9xlodPT$M&W>YKv=8#H+GwbeFYsm_3%A36$!pUUeO` zr7Dv@7M=Sr67tfoaD(iAq$X_NISo0PFaD?O*B&r|tHciCQggVeIxwhTcPS z<@TtxwU>IBKyaM#F~?b5-pcv zUz#c(wy5?mY=#7%r;04FEJCL7Ak0gtw_l?^68P3KiFUBy#J$vunHJPC2*;$_cFJag z$Ms?+fYB{k3VYM zFjtBQ7rJbFFuXcX|18~k4F_|Ce8rT*HW!Ka_kBfITOFr{4XjC3Y@3Wp6s1VFM0IZL zSLyecI(q)h1G_p^O10S<7ZqILunU76L^7J00RO(Vw}it;b!t2*!sLR#6lN<@tx+Oc z#XPL#z8LoUdr00+Th~ID?ofbn3+7Poe|&bTmZt7Cy5vV;FSCSuNtqTli5KV>9>{-? z^uYI+Q2QjjA!hmrO$lV)Ui1|-H+>U@vuc*Z3sdETtAw#Q#4SC)YU4YkZEIWKDN`O5 z;|;0ZZOKtS39rLdV)#v|lLG?xkv8d-uEKfgz6vc|-bWH`LbcT{M;m^Q47u~g`&b>? z5=u7IgE6>j2O*mopHO^jc)aXZs-Zy>Vau2&+0jhwz|H(8n4%NU?t46P^P1nCpms}g zL;h4ejh`yJ1O;cFh_s}l$ruBy30XFT!7^!efLu4+zC$50EuG7HJ324;)@Tz^64sAp z0vnjXb?i>m7cw=c63c;fr{q+d_&j=GVK%NZEnmy6$!fipx>-k#-X}Ao(%#yJCYwU< zs!4!--1A}rOZQsjeS5e`^K|iIszd*p^2sOmSNTtMcGbbA2?M>cI2cur<_&^G4Sc|b zet7L6L&9sck_m7vq61}LD$qsvFv~uxz31or=k}g@xJQM>uk4Omcq_600qh+*5QOoo zT`^NTGBjUybs;ZNZy>eFwCS9?it(9xH|8syZw`jMA%9Awn~dN}pdE!ISP=L`JWPZM z+?eh3FY9*_fwoT5x%)Gut9DPG(KUiG_Fro4jUA>gH)kBEQh{@mu4t5 z$tUp5(7gwo#P$rrDZD}6O?uA|L8`7@-it|);okofinjTWD_Y6qOog;2t>}-ucdygJ zOYZm`VFHm2>^_pqvkXmM;G)js6seQk%Q1*7pV3MT1}Z=}hQ5LcGaGJu&jdDBJ>(Bb zTYDL>zrH^W;tKOa?(WW*o*+Yv8wd~HXJr)_(Sn`X-b!!}Y90d+reK6~6vCd9?TKxZt~K0N~Yahv~IPe;iYx%P2zm|AUJ z@3n=9HR%W6u3X!!&z(Qv$^=T#)K86%lh~6(C4qHg-ehCX zV!!U%W#3hm!l|OJm7IFK;<;5Vw$6~yxX2@G4X>(!4jWHE22TpQ8Ta6V7sF~Vx;t;V zu+~(uc|O!;CLqIM30x-@1^P=l+ghDmWjtcRX!6FI0cMiv$X@Ie1NInD485%_c7tE@ z>U&RQxuCGui|kpwx|8g@M~~*USs?o=*PXRFP@wCaE|2Yckq+sU-g_-RbY|?>LLG3u z(Y%RjXNC_PiRM2TYul+_vU`D#2OGTTOATx-I&?99RuO=m1*((tWQt&!rd{zF_t73i z??(aQYp{O#NyL^(fhPkKJIy~S8`%!R&NXmI^JRG_Id&ppjvoT=S2zv*rbz_*iH7j8JVy z7pBLG-oR>~gfa8MeX7F~dlyFT2xkL0MEb0pGiyYuLj-PQJm56+rwE4A^4~%>Ap_bTX^U-pd0S@&g1^o++i_!`Px?`r> z7)CDLo0-5_pe{M_ZH}GeOxL`Enu>48+o6gtx@?w7&mMM7R`(=rv`^RDp|Lme>f0bs zj(-0wM|AK6a(&&rEOfN(&h}6x^cH)DbnzIFjGe<$`Lx$D_fX299HCGKiw>{dHRDmO zK7oD=X#WhBaq6XJP4OIW&uyyb3sx+)dN0Yd@bD>pb>Wwjzfa@KJ95QK?D_`BUH_1U z2(#snD;%js4GZdHaNAu z64Bq|R;l>Vt*W@klOOXWly1-7iD9tuV3uJJXh8{1C59iS^D0KZSPR`E4;$`xuMJNvx6DinZP#Ld;0#yx8$n}XoeNVyDl8&PE5D;N`f>)_$`qK zD#j_y8>i0PBiG+i>3LR8g|5J{fy|xP7}+>@?0@ zGF$xJ!_WN5yc```LzqVozYO1)Q!yFo>)b!DIz3IKeI1D()ys{T#uJu{0Y5!57}4jU zo069=Q|!X_RWLT)er=Vqn>*fg-;v6#%QX0-EJpdm&f-td03t`6vrOA+Q*Yl{-vk+H z6$6JVcUDh+m(u~TJ&~unDLJ+(?In4HgA{g5kP97ZC#QYY_h9|aJ6CF~X|X46Ldb29 zSW(H%-LgGPNsvNW20tA}bs|SP`&M>ZX4T&(H7(-{zij!MN<6aRlt{90I-;Q+N{-Q_ zqFu@NCVFKeWUW388Yej0JhZnB`qEMQK$$j7D3%)Hf1>5wBwRPEH8Oq@ni>Z!tq&mV zx4h;op^p#Mt(8)#a2RC*+W7g*qOXQ~hL0$HPRGues8G!MNa!Wu(FpV#w;`on=kFqH zhIH<2@IA5=TgFBq%!`Zf)tTSkXxd<+-*f}uIsup%A1v*Eqo3_`GE<8E!I`m-fb4w41vJ|z$WLOE7t^Ac&0F6tcI4`F;c40C^wV=&(RxI+= zeXe7N*;Hs@a1FiAnasv%IkOX<5Cg8R};e-}5>Ty4houG@lleqXL! zO*Hn|U@a#Lp{Tu7#9Gcfyib8!RJP|>&q?TW>=q<988*OIq;{yFIq6;Tare=vwA8>h zhoquNF|qAjY8r*ss)Gu3^b_R1(gdZYNJ@Pm0w<(T4)?KK&{erB7A0d{a~|c%c`%rQ z3o_Obz0&w(v)Z(h?*-2B$GB3s|6!_$6`}3WfYZ}#*^6yo;PPgrd>>9c3)!!Q?Du?_ zJ2Z5~L=-_z@1IV5OA_`OsGc?!QA1Blsa$#pVcTl{=!skcagJ8RLU(`)JIycGMO}I+ zjVCO+S?#9;hp1Y*I(yEcZLg9Hgrl{36dZuN1>X7)2s{Q76b9pL>mY>`g6(+1$sVd}{%fTgy`&%+wNtEHW z!~{Oj>)RfdjS6@qTKRD(JOW2)g^!bS90hVA{?oS>rqb!p{u!vqk zGA>x5wgxG1rD5D5v&X!vN3}3ETK?XOIfv_T3?iQ3+F7KKEwc-eD+hX?7V{TZ0zcpZ zzf!VnIc$r2{dQ^@Z6I(slYcoM-k}J$SIulUP(GS8WqpRcldRN!hYHgrpGy=bzNJRJ zw74vdUrp6>f+oanIOf`(4)rN8rUa#ldOy@eNP*iCxmTk7bQUvvbS((2*K|$u#Ljf( zoi5axvX&qxK~8;WmxprFwHg)bq|J?+a`W&X&d6{ys$PU1PDyuW0&eXR=~ipm!ai5$ z#GVu`c?cF@02Ie-Giv;WJiIPUhU>HwewXIvlM8i6=PTj@hf_LvL&ai*=xLp2IFHfC zSQo5G*b->KhxBsdW=9eE(AND0MGa}*O*go%5r{!jk31z_YwYb+#2gB5Khlq2p|etg z%X&1b;$Fn%HL2!*JZ_$+m)upQ_E}vFR3FHREI9}>_KQ4&DO^qP!ERt|o;!1yppW2Le<8#??dQg1z z#dL2$y$`kivrBBce3ObxR4j&eiDmWq0OTGVSj2=S?ro7b2{3+l#Hz=14uoCj}Cv@6HkmO0mPJ!ghqgHuYGJ!)zYEo7eZ??1)5!H?b(Z}YD zY%D8pf2;)jlqq3l3{EmELRFfC4qle>c3z87sL0=>As^)JVyRkotR~=7w~C1@d4H`= z3qiq4Uzft>bRr7x+^8FVWLwS2(mmG;ENqLk^!Xh%O|8%DliAoCb?2tnG1yFt2MQE& z=K=hs(2J1n`3px_o8?(1tW;^Is5Gk}C%bp>H!gF#_lR;qFADKaj#~KK_Gl(q`1TRIcOwkmZcBnWBrYddzDb4J7Z?;^}Fd&eR;MZ@GvVh&bEZ ztKxBH|F)Nx?81)#Zh}imTQbbrUQjsF1`>3dBp>&y80^hEGTeQN16c9df}enIo<<61 zBX1Uw;T4iOX%n?#kb`+`0iQ7S5J6SexuYnB`L)>)S)8<0Wwd0pK54~$}~ zvT@<~YgIbixh!y>r*|IGe+3IvC=hPHPkc8*Q7jY*%N-xAD4%+*3>W*T_SyFeq>13a z_RI~wdGeuSjuU@d{<192tgA1J#QLdur`~8ye0_G$XXTxIl*s3}iCzBUg*QUB<-b0y z7}1MQ1DCTwFF%{6Bl(wiotXRdqIrmA{=;E0<-Te7!Cq>B0b$NGR`l|gq02#yg^{SD zO%0%E7hZ_U-zlxj-(5GnMJH)XO6jic)YtQ6y+SSf?~5}srA=qVj#RO|IP6IzOQ^PY zL3s%~>D$QAAUt%Z*|_l>9J58RsdT9GZ4cTpEm^Iu;^ETmXP&ghm9MXyOgi6HNgE_q0hz)a5}AbSVPxtD~Jm9-&J06N5e4nE<5xL`hMQlnP$e(i~4%5ks9n z4aP->eW2tAATMS(co=&;!IDGqgqJycX{U!e(<-)WKfAIYT>8uI{HWSK zEUF_a$^K4YhIVn}%%#nFtu*2&sJojIApMBaVnfoi%zBo13D!cKMCf*a5i7-vM%n@$7y)% zw0tJT)S$`SO!f}1X;hFzyeyv*g@Q8q(!te=UH8@q?nq07q&qS9cQB~5B%5967t(P^IXtphJB{PDl=hBhxx^P%5_7k|0i)ooRFvsd#($Y1y;4TSn2xx>MUdq zC54pL?vHdwDjB>g<(5`BJQANNL+&;ilxzi?Mu-jF2 zaen@NMsFHh>Rs(z-{jU6-A}@J@7#i-ZMn~L8_FpbS8GgxMB)o}*agM;X$~-Uj?AS; z%Ckl>ikqS8Ry#m^KglZicvM{~zt4P)#g{otWfC#-ZLKUhmVE zH+yPwdf15Q{UEV?r;w8bV+YU0N8VATa=6;}gKXGaj-bH79gQcQjwYYZ8gULeHMHSg%t&urEwC?UVu+?>U)=+&dtUC6Bu7V+<15_QJ zd!^{$-_6O4;)`iw?}9?P>>3Eo`{mYZF^}xh&*NA8o6mKycT8Jm)T=ke7r$hkMuc>> z2O`wOkOwKx8>jX(&n)yD^_`Vu%$RCma=E;}T$nLT#7{6}niztPCYb&czNg>h`euOZ zZ`?oWc&z+kGf_AEZ*~ zd5->E)SDPQ)B*9KvZqG1Xw}VO3UxKwQ; zED&PDJT+g7->BUlUl*v)T~BkA+JX{wj*RfDpk^k3wc})LDe-IGT(waUNv->X5zRqh zuHvgrWZPG^m?P08EaLTXV|0IjZ*I24Pf4exNMK+mLXp_%E-dn8-jmH#*OS(qSn}Xb z;#XX3o2h_`E>E9tZ?@?~+~a#nic50xI^F_N$6u91-P!^fU`c{Buv2|Ot7D*->E)@N z&uDxXW191>3CRSW%;+lbrK!#7!)3G)+Fv6VbJFO0*Aiyj>ooDR2dhpT)IEcfZoA@9 z|JuA%q(XV6^6|$4<%M&*=p8y@#>NIEn1Phr$VyD_O57c_GBV*|Ka>;Idcn&W`Yy~_ z>xivuA12V21Zl){ZjcgovY@8OD=C_^#Tb8(ZqdIE+_O4zdgId) zw&zI9`C_U0QM1O`q7#{x_Q#WNynpvN>G7qY@&g^-ySHHnUJkY@>|FRN?=|A;B>zgK zGLc(r<0&ce?17}9?_0m;?G1j+&_`O8U6fIwVrU3&31(oB{v ziQa|wk)=%#T6$X$jsO+M;FXPV%|E=(nqW%$ax&Or#* zk1mGIF`8nNTZ49*VaBxV9ivjbv+~vP}S}8wId~(|IpGUjjb;1Nl8q{W5Bf9Sr z_6K47kIem~n*IUWLzm7;N%sE=!Vk9t*TRKv&8Oj4(1v?Jy`1_-GHD>pwm+eR7dOZ* zIx(hE@b(Ed_(c0!=gT`64Ky~#Y!^G6qEg7dsVG_>?~E=xFo0g=v_$u%Gl2p7XM>QC zjzC2DW!%#KXvo=rCaI}R!l5UqF;~FgY4RN00H&&4h zhIvQ=6s0xR8RBd+IuQE9gUV|U~EJ0KsTsOGS-x+7r|{=VhC{z z>dpjE@pQ?h7AElYPqllnvNdx_iO0!rNBKU#vF>2(%C9G7nK-`$vjU7`o~PfJ z>93He^{_1eZ1jM{oqho-6<`78No;vPs*6}sUal&PMdmzE*>O@(-Z&k+I--iU#v&b+ zBGSYC(GPlz<Vx*E-u&0lJ`ZQ*YcvXqAsxnYdXkaGIVy|(sVeW8`QPK z`Iwk{_3nX8O;V4elTgH2Zo9dxbX`+FW7E@-0njsjbKr{!2dCn!(l*2F<9aWh3M@bR zU?bb+(dIZ)`Qo!ec7@SgrzN{gzn%dorD{bD?7O7SI`3cY)6Z=QMNKTmUYRkkJ%&YOm$>HKF#WJRr}H;6X2+1)L8K}s&P1B^JMSeh(>Rn zTz&MxD*jN?4)%ls%PN?LSol}bcTG1S^+f+Z@(qD$-9h~=8rgIUifs(ZJnSCN60f1F zm^XtKDK{n61qwZ%EEL^nm588TGUq30rxe?PuT@wCb+%&1WAcDvy+b-7nAukST_aL$974qIP&(HNl# z=?qppl(H!XLmYe6iSAc1S$vAkoh{*_3%XMF%kFe=er{$Fri^1Ncl_KTnOOMr7N=`X zmhWum4luJUW6X@NFLa@zh;mfygN2okElKQ{7A8>x`}l-DYn)68LmS-H_>D@L(}oNl z6Y7g6M-{^;u=BnN#C^3cB%S3-w3!kSkC_@wFLihI96WJgd)dNxGh+p1o@B8T-N&KS ztz!Mm#F{KSC~yyLuOE=Oi%RN0I;u%APS}!eGZK+`Etd5KsbgNV13IEdL!e6)iH@=z zP^+N&L0e3rPSJyEyUee)x;ppkg_yuy#_Xq7@(FYnd>Temp{uTCpg5=j{rVNO%QFkb zKCMaDN_OzxL(N>CZ)_xga-yfGNq9kwsYVp33K%#2B&?aP^vcq~6TaBiX}E*&>eAEQ zs>F$|wN5(mH%oQ)B$!ZphMo5!n6vS>ols``Kg3eq_0?@b$Xgn8U2g8OsZ7l{xZ93L zu%>>{io^tXR48E#{{x`4sPy9D+wuH7;?m85cb{d%)2-qjS~e~S(B=E8WLKB~oVEZ1 zjg|v396rw=E{~xDku**HR(mF}_ag&mgPk9Mx&9Bep++h6yZ`LE4PLm)U8CXn@gki8 zF63nGGlcujFAY1=`=u7T`r%cwUzZ03rcy}6uZY3+5F4^cKDnzx$!9rGVRlcq*<-?y zkGB!7J6DM9T9FZbX{bw$=BbY}eYb|*;}y_Y&Kbz3^Rbc;{*2?u0~C{hh5H0abXiuD z`^L031c{%=@8tw1Lv7nWL3PJ~8_Kiu?ZNAbk9h)9IEwEQ7dgL_2?P^1Iq#?hca&S) zy)Vv+KkE#`h!vMc>n~z%haXLRT7#=OF1hofCNIluH1ZtT$t$$I+Td%C&g-Du`F>jw zE$Onod)$>TGcI(qF7UOP()}72JaU5dgC7|lWHY2?Jz^=vhz-t6Fcovz&|ila0@*g+k4+hv>e zu^Y|R+>q(<>Nr%EU~x`uISu(1+zHTgqD*SPZFDPC5mGkL<-W>#^Jx!X>XY$(B85FY zHt6ckBG7LE)1|m!o2Up2@=TWfG9tTvM{yap_q3@0z|k>%%E;AupX;7DL2y_V`P4=d zgx~22|M3c#b(64|rPhIy!09U+4GwvJ+7LF0@tL>u9cYUgkY$}P6G>xBUYZ%u>AzGG z3Ofov?E7p_rI$1>%cL>mc;f<^-^pqV`HwGVMscES(c^JygFNtpn9@&3A7EHZ0Umd1mL;FWn)BQtv7_WgRE6 z7xITRycj9X8?M$UI(2(y1s64z1bJn>mXurI9_EzR+^Z|)hOvo%bYvxJV!P!m6CfgT zm_U}5I%P*?Cn8k5*}D1M+=~RqD@p>Vy_;g5=p3ak^u6)jG#>}1w5_ML{R>XqYzl)X zjyg@M-;F9a>0_ra?CSH!*9Jc6gDHKTS*qoIx*%gIHz7q8z`Y_`Gl4GFL6a$MN_738 zehCdkIJ}IY*;+Wy)4~=(Ih#-|6jPuYs>i~3YeaUh4uaX^?xMHSO$^IM$?}EKPlJ2DY)pU&B<>nzfKJWg_^rD%A({eGoT6VY3!w&BPy=qW_l2rD zWYyv(r5&Q!ZWkTy(&pVW|4zus%eve9R$9Fo{dEhhKSDq$%-hpxpigGm3NFy;h!NEl zbJZM>lPh(#5j++&(&bYzno>2lWuO2}4Y|$WTJKa27v>* z!vxlRlus_8gP8#N95f6LnR3I4T<#fD5|M5|YB*(RUiEO1Xh!VIZ+4NNj$vszjI=0v z`wmxgQR*cnpT5I-U^aBolxvB?GI7e8tYo|v3$uX+qjP48eL2$n z`s+BF&m>OtoUN4V(t2shJI7LW5?5VM4RKlmpmXIGE9mh+TgN`~ZP_WP^;Pk^KVUMNZi$ygf>7URS_gi5P_!^i5_&SSy+?M&X1m(888eylg#!+VoZwu6lO0Q z!bOQ6td1baY9*RcGb#i+Kcy!X7DR)OEYbwQGSIL9<_(bgd0pCC>YfKNw?8`@HNLD0r3>7 z(+F2Ymuq}w0u9QAIv#GE% z{_hm#T1FPJ2Uokg`dYv9;OFXm+6gd1zheCS4H$cQ@VBm9*Xu$5%&VJHuj5O7T8pZB zNlDsTou8UE2Rz#~+&pWdJqTG5!W%Jx^pC`at4Uli()QL9S3$4VA1mO$m=RLQ5l}fb=k4RhHmBSa3HuaH1924I#fxc30`aZMtOxQBn zIG8Sl1tS0rYVi5>=;@}>D)7~MNDQ69J5^E-riSQVS`20|HvQINE{tSB?PJ^p6E3je zg4je2d;u*92_{)2e+Co&si*P!m(jERDU5B>hHX$9RZ4@wS04cyV5sa0T@v&yZx4bY z;#vlJ)1kkoeQ^8co|4%ds*x5EUddNf8h-a7y%PR?^L_E8z6cm;M_w>Z&2nJQqbu^{ zfsN2r9{wx0pnr%Crgy=&(>6YNH3?ax^P9Lpne2|ZW)zF14F>~1u zEBhct&aMMoFM`TU*!NA3?}Rpm9X?k74`39UWJaB2+?@wK@=aaU=mj1uh>6K2R+V3P z53>6g{D3=!fr!ESRZiWNb(Hm0W7kKQ{%Q4Y{2wGPZwlE8FL$(jNQGT`uIBg_e1lg8 z34$qt_&L9zmeteL2Ijs9QMY>l_~J6}sIw<7mUcsY-h#{WV3d4*A}O_bcvIU$+-H@i zHGIo4bl#j2)Zrp(X+NveRjJo>S#olIi$l~%*kRZ);;%A>`Gr_nknixG@;$I~SYdx< z)?jYcZ+QP+Zo&@BfuVw5WcZ)a{sDBEK-NZ7D=i^DG{ZYUkX8OymS;D?g9-A8jpf_N z=Vr~5dsKM&K!5i;H1l5pHTADR|4mxVzK6N?_lm=o1O1Ce0onVru<(IP$?x>Z_ww?0 z^hB+{(cZao?v6WvX=tsd8Ye1(#`p$txy~)|0M&O;H^O}=vdkEMkbQi7 z11tSy4r};tQtDTb~iJ4?PIQtbokO)I0fXT^H06w2O)O$lu7@`)Nwe8jR)O_!GqB#yQX zfH5IBH@ZHn5?MIvrO)u{LHB9U?dOXmz@VcGarQYw!J@=Z6I_mPlMpM51z?Cspsa6x z(iJYV(z^qUhAP3AK|{Ywbry_M)(hciW9W$8|Jnz#bkx+mEZsID2z6@J1yL$?!)NLj zanZ={M&xFwLxNK^rqQ=uF?n@#4dppf%2P-Z7z{y5GXb@HUUc~>syV~YMQXTDu8cTe zHON?nQ*dXgaPp`I^?8QH_%81!9bJ_pGmrd_JdkSmG&j*fKX4wK_-y- z6go=Z494PqVg(q3A@GAM4D(PjR@e((j$)^1)(6hsTi)L3+&!kXg%meLuivyzZwzf5 zT}6adTzI9G`Ld-)5nHo-pzc!WBSpIwaH;rnBfm})OchNa!Bz&{!2lnGlJbR&rBgnD zOVVI!+wMx}#b3rRWnKXlQI)mMsC5$09l94zFPMpC;OC@tNDA;pC1obyWuiB*QX~r| zF!T1h7neFm`L*q20+$|Ho%CJ)J+9u5tm6vIi*eG91$!s0_nx);bB5eZF{IKg|NcS& zJ^`ZjA+Gbr6iT_Y@`hh}C2RpGqPNqXh9O(%&TXm^DV5L13@tUCAwBvJ7Dw_;mL5>x zy)>I@hB7?$s;jEV%TkjFD_^Ou7jR-{gPXRV)iQm>ftgk_g# zlAyv+2u;K55)-J!SC3l=FHds~=xJ3s31!5m2az_PCrX?;>}wLflDNaDb8i8?64|%) z(kII^s>$2WcFvolqsIEx@;@>1no-&<*grzw_PTlD(Ka7MHIBPizA-CzkbjO?harW> z(b5^4q$%a)KKhjyHuG-t^T_(3M1JgWb&vCLIXI>l8ehin`?$3mvY<@Etc*C#!l?)D zB?`gAMK;VoPaqDoQS}H0$I-Uhp~`nC(BA`S#q&EZH-0DKBdim$|3=j(ZK;bS*XNaf zOAbr&!zvypon(K}G*+zgy`ajwrv>fqcBWZ-3ex=F6III4^Hr0KRp_Ah;op$^o8+0) z5PF9gGy`9krH@fqYUiqO7M4VXf{J|O~c+7fRYyo>PmMU-G^Kk zl%eqKNpp-A)KkR&9r_o=#5d0b!o|r%x|oUD4JDy`$Oo+R$YqT!QkCb(D~lJGKc?^g z)ep2HFjfMV949oUnx~vXu1&Xy*{!yJ6!{LK9}c9FarAwPbwk}ZXgB&QO|blqc=F!g8)2}1*uPo*;PvqkL4N^^d9}6?PI$rfTOu-_H0Rt4Ut&mt zo`Wb{G`Dw07vlwJa`~FQJ|Mu{M#Qmbp@`l~P&dp<|D)S1vweR=)&8ql`!`rua7gXD zWY=}S)lSj81pO!}Bq#$J4*(1G$Zi6JFLA+A^m^^Pb7iCv)7ej@dwvz?~vLOI+9SIl6OK z3%U{eIxBWky6cTDo*dTrcY25S|D@tt1$ZA&zxLVUAP+=%Xh zvV)5fwa37>SOdW*P!4I7z9R8$(-jPx*_GF?%;|sIUW0@7s*Dr-GOV8q5e$k{u1Alc z6~vXr4|Fj4%xA{3=t)0VAB>$J!v4H}YlMZsMnA&VH|mfnKi1Z!??G<|EneH?JdADx z_*woPJ)eY{pvy9;-k@)+^V4Q97-}*l&oht@zim&Le1ehh(skEeRNQAKK)Hneei|1z zTl>fvY9i?R=x=+D4TvB#q)R8XRYg7L4L*9y&TsUQ6il$Pv4@ z8^u8Y7by22119uUOOze`Kp)v3xjr~2+~>9j&r-z2Q)ad(X@7;2L%n=yU@*21+=m%> z2|i+2-q#xgewSAXq&9pP$PDgvX2=lbKw=WtiPg(Z$g@p&i^3<|_q$tSx?{R{AgeI|mBTqgYTsV9iEMx#qU+qDG(aF#xyH+$g1GO7$ zH5H!VI0@%LL3%BGkdaS4>Qh zAd#^0^vMjGXE|b(e-<|Ta2>Ksvq60e(!JIw4P73JO!--?tN$TF;Kj|;wcLndos`Rb5_=DcOm^irP^pK5u88xiMjez^m4204^lz^X?br4_&CiHW&0!X zN8e33_+tMDY<~o!7eC?0977vxCjN%ggKXL#TGXd6EhzX*#DaGCpHYtl6{Hph?C^RgmOhkOzFdsO3j_%ov9LfGXIJ zXkncIdH0*DfPOEHE82{$un_e8r27h%aqvg_0IP*RC@AgU6ZSj4qtA*_~wDBZSMWIRU`HI-_s4s=LH>* z@7?o0y0??`=uKBHRvk>@`nRQ-M+qp!jT!EZ%#BB_ne{)5>PK&^~q9M%6@9k$N59DAi<%%A zR$=dcs@dF9lBPO2zoS=zl?m8nqyM4S=YNL+e~-B(G_5-#?FM-t^6_CvgNy_9ryzVQ z^Hv{8XwaDsuIRkcY;M7(`|@edj&M#9#^XWvqhL1b!IOXFGxUGvE060dDf$n~CX0dJ zU0PpBnUp!3^_4SZ7@Z%q?6aipJd7sq3gQ%SXQ(Er>{X0^RuX6JBTrT7nKHqSRYK!ONfrx7Uotm$6Hz3=4)H zR@c|dJS2T^`(o`NhA!703_7)Q=o;|y=0z|!Vug;K#BAs4Z1RH4v7?w}s866=GTBL`m zdb{`E-&aJ@ig9(|ogPk6R6ZuLYGO3v)x`*y1J^;h*}7F$oGnG(HawURytj*JAic#h z>2~vKJId8C5S1Z2HP*6JtQ?oe&^l%m=X+_gV9wiO0E|xl0Y<<%e8p#}_J~d3CR6n| z7{*cxgpIZhF1&`5>&*n{41Mr(T^MpI7~Jq7gH8!Ue`VA8!5mpIN6yO-To}X7f&rFa zx&t}(TP+wVu?XBufjwlL3RAJr?4#Plz>O?!OjDk!I%TkI>3B|;4qMtC%nYpxvY743 z5Ny}@1sk2qB`3Hqw5AnA&l!0bt=xnK9X@bY+C@R?F`AS_mjXf73~sIFqRZ8(CJeuH zCQ$7d{MT{Ar|tm<2NeLu?r7jlA{)PjX5cGJi7(NA6_>h}_Z+{10pH=p7GuS>=A!n^ z+XNzYj`2=Uy{q z0=8Aj8O^c(AA9c}7t`AQk58hA4Cz4BAcRy79Y{4fChd$MopS_>Y-uv@BpU>y}dp&>jdQEHA-0Qxt z`?}uO`@XL0z87qYo2+|TxTf=+OS3Dh%-6_cFW)TY+!QP|yp|YovhqEhyNPkmeoASk zrpL^>#wo>@xn$23T*;f25ar!lU={h=-1B7&`DxdvJ>P6OwUK-*O@SY;`!=G~4;wsWq%oD4(w;L! z>K&whm^%Wphrgf$~qUKiFLCPVe=R< znEcvl4aYT@baeGQi-qYCS3I{w5p$pGNNoAq`~Q8{^Y>@lDw!qL;BoH6YN2dy(BMo; z`wq@G7_@qYlKS*YW;_(`e!98Q%!}N(t^n$6S>Jp!)E4{#`&*H3U>!1SKBLBR{x97Q zeb0nU_Vr0fQwsY5(~FzQx;u4y6zkAwC@sp2krq@)<4aP-^ns5&w|bDlC9leSd%e-T z(DKYC?G^aM8_0Un-EU+=oQ@3O#zG;0Z@B3gz}u|HtnC)JKP0ReHL!M?K4U zbv$_Id|Kaq_SdPj>Z2VqP`Mt>Kklh5xC;tDYu+}_Fyi%p4v7D%W0)!sr)t`iGp?OH z^nR4UoQ>6HijHP^T07a11bPP}I6V+KX>vQ*60 z7&uha31Vf)w~tUQnf-v*B9goXt7-QT>L(RV%bTOv-){Kl_bQ%OL>mrZP~YN59)#lg zuOH*YfqZfC^CbvT)Io4F>PWJUi4Cmy5_pn~qPtY;dOAGB2)+m=!uw&5b$8$+W2J;7 zo|6BbNdD55uL=8~IM1oDo+gXkhJkzU}aX4jjs3rc0$M6?l}ne+5A@Anxm zf@V{BB(`!G5nf`(TU7w(Cf3?b9jIf>u`)a|G2674eLE$N>OY`tRQ`a~FmH3ijh&MY ze5z_fF5Tf?yiGuYygnbiYFNtCp42Dk`M_rim1xOQ4ex26tj%!`P{D`q|; z>=(^gb)vG;g$Y$XFg$vnY($U3oBmhi@u-8vmONJtj-BBtzGad^k^X!)=R*BJCfgjMB=C!+~eWHgY9 zVV~!-@%i1VNQr?BBqcsiN@ccv?KEx#j9D;&JG_OhzeDSYrxkMwQLXS@7MVhMqbF4I4gG{xdy zKi`8qO*-TeO`sHutenmN8a$rb*0m-434+m;-nvsRB2otHV%#b^gv@h z#+W>Y=$cl4nr3QM)C0z^u=O{f=zn0y7cw=NCbh4lKvwr4YWhV!PE#8~LS#~L^F8>T znQ6l3Fvr)=mh`W{`>O`tC>`+^peT6VSUSKD0`Ma(4!C^%X!&(| zA!+o*$TX*G4(l-_NKe}vK1si7hRn#j-;wUMcHINpU+3wF@l=e_gkU8C@Wh3(3dQBs8TGcS6QnhaCz}V)M zwTBFTK0id-vV(GzwK3WKO~ijm z+M9+c%m1*R8=&Lxjl9nMI}Vpb&wJDjL)Kk?(*2DtJz_55a`GS5B!s#cY|LEUKA2yR z7{I2RUx>jMr}8Ue#(;zQ_49upJ^wNj`_u4OhS3`%LbTE?Zr2p~c7)okzW;cdU(?KV zAEMtY)t{J()o^laT;A3&?*tv4w8ZV%A?LzYqh}C({)@#tf8)TuKg*RN1nnaZK`*r1 z-?=TviJ|i#uJTloXS|nb_BB=Qi5@u+g67YDf1jslUwx)Tx`fIt@g<9E-YF4ZPE(*t zLtJ8Nh*+DUq`2Waa~Z@Vliolmr?;VaP;{NWQA->{q!J$Qd_Ql#kHUc$8Xlx-6DeC@ z73j%r!HHs1d3yTxFW^G`-pU7(8(Ty)b1JRZqn~Jb{N?`4ZfZX@yk2Hez zbmHrvZ@Z)EF;aqeurQRB1{OEiba)WyzXQ)c!9{T1V;qh`r4dtFa#+1WBM8VFi@Qe5)e&}HH<`;3PqN-;xn-r)JGyXcQ zl<#x|f&stI)vq#9KJH2kpH^`%zX|dl3xppa&QI)z__m?A%cTS?a;WLc7ynnvfk3fN z@dwyl{-v|g2WI|Pzxb^>=^tT-s7^|Ag19cRZMHA#Jrt$nyq zhc>pj=Uma}xbAISlG}eVLaxAFV{aXpKxWL$%r-bT&3@xM zvGu~~ADJNLVWa&ws?9ID2-5gwf3aT;6O`u5*#C}R9&zDSW(P;--SJ$~;dJ^)AF1Md zZH^0NN|xBJI#Z1|C<5i*XGxXq7BuOiH}V^_gKFgWb0X>A?D7& zea+WK9jO^8V2r71E8G5ZobXK`W21)JcdBfefz&Gn_RHEhU)H)c4ttmGW%b|1wqLvU zosIqLp!3(}%ij=&9_zb29YFEdi4}jP^YyPtWRs@-%woiA&s(;4H?(^?bmE)NI~}+E zZsh-H#9t5{Z1{^$D1AE?f{TC6dz>|S@|UdT)4$*uaaObtRRz288bhQxJ^_vE(%i>P zAySHe#guqYUkS`7dGZ0@axJ+=Go<_G8Dzcgh}iGY9Afu>#%=v7`+xJ){@2Yz)&XAS z{EN?xw{vYOIN5Pj%~5Ab_n4_i`d6#<>AwCtejitGi7B${-kG`2|2Q{-LCKj+Yh4=! z(D%*%{W~z{i!c0lf|`MPLCBao`>7r~S?=L#NBYi$;c*(@&twJ}yq_cU;LNm(sp0e8 zAo9EYtB3zrDBpkO4*qAJAuED}&&lqTVDrg4Sx3t5jW=31B2$f>tV2KMODXG*(|F!> z%V8YvMI6!oF;n|y37mJb`LFFR{TnBH0;Lr^Xm4Ny9PLzX+U69g@v?K}o=g4BYf@A4 zUKAv*rY?KF>^TvTxs{e-M>zw5!feZX1*{9~y)GF^AC*a+zDqqca;{5Y7d#u#(eHhd zEY?L`8e@6#a_=rv!*feQ-?=?-eCA$Rb1>dG`u4T3ReP4N&Uw4m`Rrazcu!^RvxRL+ z%5V8K>l2=O&%t2%q$A!8|EIhgGxgO1-jh+>Iz-Ba??!j$aRvvTh^Sbk=JdHBh!>xGnFK6qe~JTd zYNLE*NzP$!gSB1vI?o-uI%)Ip4qo}?_YH?db>%5zga+rYvG>l4yB!jrVoQ~(X^n7K zG}e6V8549_Ni9Nh`Vsb}X6!6)5;4)%HYA1i@k(L%TE1X#V<;sGevUCDv^ z@+;Z=oWjSw#?^XVm$TMABP_cQOL@~4-&H=JlOGB;Gj^L5GMpC3tW?- z7DD62&$GxjtJ+-q-Z-&Bld0w$^S;iBSa9v*=_#tSo;M$xHU3(A69?PQl0#d%kQZ=% z&bOaJ&BsaiMh?z>3(anv_Z>mY%QVrxr8O`dx<;OHBRfg zzGw4i(P(&Q_-vRaC9`e!+mFq@%`|K~B1Z+`3O|N?`^X-y)gj;6NagDqQ%~1bSP)On zIjF+<$#X?l*3a$}Lp8c7*gVr*GG#k%&y{ye-QrIj$DG?)z*AYg*tsE|3`(r1=v31< z_1NtSM#j0@OHK=O2pNkgd_x43uwS7C`~;KU=kVRkDxQ}|8usAp00{t} zx+AH>|H=5yH;94go5O*W1m&CY{5d;$_*ZgM>{Wp<(K-51Y$nT=v#JRr$eD-o^wB=YLLb|Gt;_PP_l4$N!B{9+6|N#ZG0) zr=}@w8NA(Nd2qSsVOINg^gD};FH9z%KHFgHk$xp)NoQ!6{SrUOzOK0`4U3Zh|Kdq8 zBZw+D0zBbcFsvi?^TqhgvGM5a`Y4lN!kOD2v}8N|o0m()H#NY9t5D|+6%XIZ?~AtQ z^cH@Op8x+^mt?ia;cKy=!*_rF`1C5fx~0u%CexZaTq`QKH=tzP%3{;mxB3#ypumH? z$CTF(#f0TwY3vZA{}syOIN#|moa6J2`u=agSohe^5^A(CsB^yiYO~#H_G34#Q6BN$ zu>m-hx0yQ0snl-Op_xh(4?3LracPlgYaedgf^v$ zL=#@oQH>bS6X$nC_V(xK)rcYk3E6>YNl8)nMAG~mp}`$Nzs6UqgI8%#%vw^79v z12Wy2lWS3b=8njZH+ec6^R!H;w7apKQB5JnW&6G~9?#0t%T&3pVYjAnH+{a@@gvg&$L&QtTVnJHs9x2<)VUm6EQPnEA-v)W znB({wGjHTb>5PdvlV76JDb@>B6+kx~%^+o<38yA1LfMP~4d*e0SPD04et8!wDWs#8 z7sgM<5*)eI`tfIo={&udNyQAuiKOI1XM3ixR+uhS?f#=S`cZteo+lh?Hfm%{X|Z7V%dK(Y?;mWmaMDpLe&yVHsMGUModff)P$0sPXGC;PJL_ zlA<>|kAcl3a)%P_eiJniZDQiq&Wl^eyYmf;ZtWBr4ciumLZ2Qis zAC?&h(_;(@@CizUOjdNOyFphx_eRfD+oh47J6=-8PM%$CpACE1Ki6i!LZKMW!$E_G zO&hjr9UkFP?YnyyRqb@Qu{^H9OU*A1vY}*C1KecqdIaWLo9~IWiIv)ZbLr}j&{7h;E8o_i1cQ5COjr#h;-I>rAKX6=5#nlOm@pNU#&;ZMz*WdF1_GOwS}!- zZ$OC_i-0^#1ds_o!WwMk4Dg&A?bOZFD|MYM$mX=g9|a!uK}zYN6HZZ=&=a8LtV}xB zsx?N=lp8uQ{%OQO!T`SSqvVI;ud0#!ZGPByVMhJHCuD8Y(sk-v>ML*WbFXG}%aLA( zhCN!RyapDb&DJbJR^0p4mG?`Tvoi))F!~etziBe%);*@}8{ewBA8fNM2QRHIc&EVK z(|@MMr$7IS+m$(w!fzby+cS$Il1kH-z?5=Xa_KHH_%g0VoV~Mh{|AGkXU0~TwVa=| z&-lR_IBo>_Lwzj3S2ck?I)gr%`~0Ghc$MfDbuZ;CE0L0C&hkT&=bR!`dAe6O?J#$o zH}d3V$^4&;RuoNp=8gQGNmgb*wh>ul0P!QuVUQ6x6Qf7rd$BFt(soO3OVENQw2Upc zdc?NfQ%p(M`&=a&p*rE0i4e2KZxc@6)W+hPAlUqm!7AyI5!u1d{a+>27Nl((3|*BV zZU3Pn_IHeF*|9;j-=E}MsuQg`5MD{(&)eKm&*~g=gBqA_?kI09SN&qe%w+-CYtwtW z9&;2y@%oc6_Kl<$vw|H9)$1-msdvA7=QVg8mOgm+vDt#u<6VkGO-`2b_$xnsdNwL8 zIcZ%i98~wXNh-Y`eJu<^j=lro`b!$~b$PZn|~CV$$y8uYMXwF`Wt;>;Ii}hZ*JxKI~%f zJ4jSh9%cr`c%0zh;2t0*r|`!0)K(eZKl{;a^yYep5@pPFEP&C`Z^}L#jA+8yp!7>n z7wy`x>@@aS>K^D+aifp^+H^&wq}=BtU3GTZT^%AlY;$fcav(-S;%k&WmxwqVzn>$c zt@bE+)q)451=)8ByZ;#Qd=A4KkDy2~3n1oGC5Y$jXd`5g3Rhk(^Zcw?VZH>0geV)^xbcV`3MMTC9C5Tiy;9g zT!5>UXByx~u%kz#J#1I@_||$aIAujO-kKUReOm9VQ&eR0h6np3|rL`v!YF zB}PL&chp9%_Q`(gG!J%zUGwemnC&kS&*f&SY5^k`uWPyfd4`9-VyVYT_yV2zl)|7a8?J|9aktIf@X6> zq7d9!uaX!&3OcnbJ^e{yDn@hLo%~}c`wC^`8MYUoA5=SjWeD^HEG0U*_~V+S4`Bye zCp~yQ%4bYtH#VJvE3A6vJE@#`xRLGeeyPUltfQvrUFR&1bCV|&s`YoA&>fUafGO!h zzfQq$9~YT98lQ-T3)eEO-WZR@rj{pAP8gRsf6AgTB6|}3F6;Y_i+$!d zQ~ACrMOE2;_n{ebuh_Uq4Q?@ERWDB=gp?}cLnNtwG*SE9Awmvlyc2vr%ZYKu~+g! z*M${@Tu{^>7$O}6y@9mN@9T|#L(Bj@^n=jnn^~|l`9eC@;cGDO#^RHl2`RK z8}I#*Y9P8w!}MPgG7U3|@%grONbCL2);#+URBTYV(zlqdi0)wpN21SI=OWGb`OYiB zS&ypMuh@rUp^b(Y3Kl&NbL-sMMLKYpDAfCk?0tA;*#N4^lW|onLBfx6hk75}9f3 z_rr+l#&z$+&3*hv+i%XIf??wJvk8frGv6h>%=$P7m862mz12ZOYa78=9gz)1t3rl@DDK(6W;3V_<} zpVEA>+CC;~yJ3+1n1y4C<<>TFA8g?RmSBauO&fNM{eJym%a%L>6&|&{?Jk> zb?!$4c0kx4r!8GV1Ioocbkb+fMg#eiY$nj%iC(KhTbXfjMp|y6?FR5>LXx_2g z9b_5tO_p!I^NlQ_4U(mUxR9$D*#gtE)cxd9#SLfmZPWD>H@|qEZFX|6#Z~0tW%kL3 z0D%Lqukc(~3s>~ctQOv-Hs3%Fm6N~rFh#oK0(9fOD3N;btkQO#QpeN!LY(HOTsO-a5!)sr!M_jI%6rh zGYaOCwM{op{%tY`CN+DortW}GkZNZ6Eof~3$=ZQ@3blh|p_phvW0qxv=Dv8JgNddI z?q^?>s!JM%(MMKxyyb8iELQ4}_#}+?QcvR|r4Bn1+>@V$LfAiPh zq6oQGc=KD48nMC(?Jq>a5r5^+S2Ey=+vh7JWEz$0Ie39nj<9Ke!*Kc1(&xS{JeV6);G<%yP{` z`BLfdAhHRip*jwEZqrRXMTwKneKcY;fc(54Fkqn$;Ss&MgSGdDNYCxz`$D`1T|=!u zH$>{W*nJG)FWZhRF`;yX(;K~o9!Oyqlg{S_+#Mp_`pH_j(;8y|?)7-1N<*ZML*>-I z2kS|^kQ1z)ZHB;QcfKTx=ANk(20PJvWMRefz#Nam4UESRkqUQmLqvfKkiHuRL!`q# z8pMi69I+aZ4yCOJS|xHPvXtG4kjw{s*x_X82tRef<4%+!AK2|EU%CwK^XYf53B)~i zAeDN=RtaKq9Uyk-arO|YYIFAx$uz@97oZ0|h2a=Xg2TsP=x~DdtIR)h+eT@jmGvM@ zRaQB*=V!VSQZ*KgvUD}O-+Vn3bXfct zq_;pIQwr~>krnEXvI0Enkbod2KjUy_Q>p=Qs2r5$FOB*z# zo}}~VyaXX7ZItGr^frhuNZmtTsEAeAK`IHpVAGq!fA_ixGzvR*D?Wvy>?joP6_DN!A z*nN#Koomo$g$OEt*?#&9JM}#Mk z*0y}KFcGbw5#xb;UYy5tgjj+;as9qCer2wtpb*+Lpf=C(g&`%nKqx2HNDD2!j>0N> z98B58%kXxaLWqPBSNqb2Nb9{wJ#@e6lt8@#;yN2FXg}@^4MfNzITtgRAn&FQk!WtZ z!m->{gjrFl$j2UO-CB+TMo4QRFXS^pM?T+T1sG@%E&}HrMIvMK^v_Nu?q+nuBVG`j z+Xczcq6xKmR;C_wi2?1$8ZACXeZs)z^`=7fk$+r#xsfc=qtTn3=^f#qc!to^1HL6x zz6HK&h;+NK9e3F$Ip9smUWYF#@F_6lO5(D1oX7}u0sT6&6oVn{+WU~&vmP{dA&TiC z#1?C=Bhf?`?9OEO^@-s74@HoCuey96X&v`gf|$K3iVg5oe+kjX4{oX*q7VIpLZ$_LSSR212U&GUrDZy+zssryz8ku247 zkq5D^^iElN;~-2J%+kehqJ+iY%v=K#ygZVGdDCF~lRqjtN^7BaJ&_h%6v#k>7F2@T ziMHPxA{l@WeoTEE3lbOv&B%I5>51f=rPzVa{SfKnE3X=Wx>4(!kwFW`eAYlRL$uhb zAKT!i3?yV91Dhkm#+TE@i-AO!298M2)|v|)lnz2(Sfqn`?5-&QOY*vfc%bm!%)zy2 z2Pp0CTA1GhsqFe*f-DCej>MLLEd&x*Q`VD+4eg@6XnoBYvF6LP5T5N6f%jVt{IauX zFH&C<0_K-R6SRQxv~P?eS9PCi8|kGk^6wlXU1poH^{@~kZZ%+X9@?wh3f8cn%Jql^ zNE@Zc-Any+#R#YXV)hv%AHraxOJ6yVg-)29A4x+<*!VW>|yV!$kTv(!WHjJLgW7JonXle+y_(K;K z&3i==jA}&%di#kP?Lv^w2`%b}J50cphxS(h>-R>HyX(@E>SJ-B%Hu$f49Fsq_1(%# zOn~xGqXw2x3RFBwhD4ZA>wAkM_^YsGAp(^-pde%7@NQ=jC~bW&XHZA`1dDHA0mwVa zda!Pzv_J;Qir62|Rcd01&L}g8up)X4i+hxXM|1M%{Dq%5f^Ff0AR8$=q;M40BF1>= z&dpxyPnEa|jCHO%&l)(AK5=O__#z)<4~4sTdvT`^&j)Fv1rCwS9oS9wXd(++qCspB zHV%k_Ano3I;E06C3&}bJj);@2E(&r-1+qwp0`jmD2YC~lrV3ZW5HEwmL{(xvCDMII zp$B)77ds6#06GZZpf~f;w>9WXbwU=-zPOm}VNK+T9K`$zxtl`rWM^+;1@dKyx2Qn3 zy)>>UQw}LKf~AueU8LL(Q+_25IL!QZ;)#9_n;U~<(7RH_SG0b)audlgk^PJB-Ie^C zuc-jT`bK3D|C#?tZYlprV|D)-xpl`c&_huE!dAM#To*B;aJPjFt|=}+gp=54pB)0` z%iZ(O?;#;))9G!Mq8b8F@;8jJC0o1Sndn3SSGdlp`0eG-So|^NXy4Bz(t?MTmpsgg z^|aGNq&jdUZ`NjPNKXO;-psTn`eTXHIubl8uBbt5a^f`+xk3(5?WRL4Hxx2`V--M` zk})1kuTM7-%;r6&JvE_}gy70xwe!w#)kS_s8KOD5#0^v#`EbtTuTk26%30~xyx6!u z#DCh;Sw(SuTZqv>2j^}0mGJ^V6j~DMoYX-4dUxIsNjOcHCejE+Yo*X!As@6k>^+8p zU3{Us8>NGB6|l&h28wX}Hc<7|M~Oy(HGaYcZHFB)^C2%8asuty##9rtUW#b$IrJTU zJ%F!Es^}+rv&l5QFjxv8u=;ptd=2crJ1+ArwJE!ac#_)lK-vsiMjwD_P&R;g2g*77 zDZGZmL!=$GgBxKpvWJjZF9m(sX^x6i`}->KNhm?p?<0}I27D$sNIkkpGZKBMjm^}?Z&1Y! zC_$?L7$Li9fFSF@)a78%(Om~nfvqkHnc7d>M!EZA@#wN_z&>ZHz^0$rZut)v`y>XF z;3+Xkp)3Y!yR#FVr&&F_m&@)WLr>qJ9|CY0=;>F23ottioaSXpk0Uyn+Tj*FL|QkU z-EQ6#h=)?Zxm6i3M5M|d5VzEBr0_caBlNRITQuDdjn_U$=~*W}Kl#U2v`^ARHIDv_ zf~%ed9ii9LMSdyTqNxf95{^rJVbGSuC}>UtF!41#F!Dk}3+edjEqYOx za7ZDp(z*Lm@f(RPM1iLH;3^XeC~DSAR*%0nRa}MWv1)FMhxoV&^S>CH4j{JLHxT5?O#xc>~k81YSoN<_x=|m$e=x zF7`=$;EbexxLS);mbVb$7W5E=`%?=ZZQeu`Wublj4)lktfBL-%$9uo2shr6YCaBV@SBwXdd5djCTqxltR zwFV&rzIASuC<^Jgf`Nas2&=?uN~F7`@u^g3JPum|%S^UtG2L3=<@=8u@K3W<*nD#d z=?T-WZXsUK0+GHJ27T0czs!E%W!u5Fen1^r!gkNN}*lZ-{B%y zucUvN_q*3Yx-)?MK-VtjF`1xxen3$lu?yP%kfK(0>=f@v;l>cT?*SgxML+1x<@8wN z(7t_IV2|HpYE=&LgRsF=6qH6KF08U^2|_=xu`NW#QF8Mrl2D2l=NKYtQGYO=23hirgHKCAOAx{D?SsEhQSr1kUb^HXm7hmfF3KBiLQm z&b`_Pu>OYfr|2dD7+?Q0wdX8S-Axpx!emx6=vghe>TFOLU9KZ&I$5-A|3wM>TBYC> zSW*fFEXj}6UkqkdRuN7AP(*JBwUT-(UWNfnHv*)h+4z%u3z(+B&Tk-9yEuc9eUZJ4 zQ$wV-WSVdsAi)y*FcZqh7{D2@-Y+z{7KU7Q{Vu(*6WK=RdZgkvYqMB<3-Gj}Wo_a3 zb@0Hi#g9k6f4nMOdr$8wu4>0B*d4LNI8cwUOe_Oj z0h21QRUskvR4&ZH;A%$aSh%>Sn>ayldP(ol1v>%%dT}jLg7W9sL#|qvFie&ZsUTVR z=siEv0QIX-Sav{QO^@AE2+m+D3IQMm7%T$HQ0hQ$b1_kM;f4`roq@tq_ztO1j~}EQB^~2jFJKcmJCq>?8uEAJt+&&u z4Q9GUl&ux%{r)=7!>b%-znn&bAnX-D=|2j>wgA@ujMWl_@xz0#3_nWG23XIv^+Jbk zvkOpcnJdJCcr2oxBk)RKSJD3Y4G7#3OZ?SN2kMjBY*g>wH*;;i zrmGgVx76M9oZ4jS7W!NIZ`tof3DHX=i$-mpN=YV*!jK8D*i7^qB2Bdc%FD*)wcs%h zzl3WkpTo6mD8>$%XyH2giMfN*!AjYWfbGkc4vaWPWuW!d;O#8vSuEjMq%~B4mX+}< z!6)i}3DqV*yk&{?An=B)Br%afPf!P7GRkK6BeAia;F{(zc+Ny_5%8LI5UAqKR~hBg z4qOv%zIfTUmEl27nYN4JUN}`_ApW<_}=sg?=??)KDeD~lkDT>T@W$SVy@DNo9c|PDGpDx&k+dDUC52_k&0!~;DoMh%P z!_Nh{ovzj+*$i#Ek1=5T^5PT| zj#fY3F3L03W=dl7co2C?Daq8u=oUPS@RRwCbt>x>E<2pRYxiQ>A-7PCCRPxD>ISrG z)rPVo5lNU?gU741qKl@An|vy+NvJG8O(I;7`WJ(03_ljdX30}xzKS+PLMv~Eiy(fM zwQF}R!1yDqtKc~7o%0#cgivF92lWIesrXs(F-7+Z%E~b)IjYs1cQ& zbW(DbqxzxE>V^tP%WWA4_UfIdZyu~l(~3s2xZAoV1`mS6mAhu!#S$E$R-kW`yNNMxgi`FhsVa+nDZ(MRswjwd-4gqj)XZ>_9JaV1L}6Bd7WK6-#eznw~>?@#MqNDDs`( z6k6EF+HVIxGS658G6Q9hQdA~k!NgcOA;fMtDnE-j*sAVCnlPNuYdz|m?AyO=fIUFt zF-|hIn~G)W9?SFHChYgJx;4?S?RE32yag^<)~m9lG9fY>cz}4u>08Hyc8@KD=mo?Y z4x(J=^paFuarv`o6*Ho+Jk!z;wwEO+5I0!LQzGiSgWZu5Wgrx*jhF?(c|-v#F*O?w z9KoC$89A)Ln(;x6@@3^##EY7xAE%a)dylhzKFUtj>bT$C(OlN;AeXav@`tq_6x2pi z?nIHfcgr8d*IK33v~e=S&?oFSG)yhN=qZx5B~xO4+O@jHiQN!y`N0_ambIL^QmZ;uxKNYQEC?$ZWV z@$tAOx4isy-0bGOccs<&HfAyb3ks$s?AowT5_dBm|K2t=UwbqT>|w@B2we1WS*7SZ z?{6y*x=J;YwG8=DWZa{&GN(b^zcF&m$b_`&)iQ}!{fzCSDr?M?*B+nne|&-}38 zgwiu$?H)2Fp=>8%ndL<7vF_&xC0jWHV?oA@3)|Q0Lm;%ll_%9!NhnHX8bXBR{4EY5 z*#9vz5~6nQ?`%^$h1?aEmF~EDr2Z7(GgZ!_qYtR{SLqM!%5&b^G1a(ng&In3&XW_( zKCqtdP=7|P(%@^99x>9-k2DoertSVm%4Y@?2R3cbpLKfO!J9qRQxDc}*;jCj{wol76nNxLGoh;QONs)n+sF>0Phv_$x7Q55iQR&D zJ5Nj6HFuk7@5A>!4$VNm_6RLv@qYSiwCV~mIskZ`AH?9jkx%P^#g%Bh+XWX~h-XEU z9k_wn>0s7cix7Vw=XzAiV@m_a|Gpu)-o-#x&9t;Zk$=hUp4{9R`_reELhxqB=V}yf zA$c3}iD#c`Z}$EFCX{Axi0*8qjYGKG7>ddF?;#J5grp;_Z>aIeGUvli_=b$9ry-8V z2tpG=I-+?od5KtWBbrkroon#+c|t~~=>AVHtQPri?pWflqR}EmF?H*Xsg%6sDw@6% zG3!Eu9X$_)@^-5)-0A#eb8IOGo4J6+yE8ylZ!LoLlu91pc1A*TXsH2L^zssWs!NXK+HtYKhk?2}W*uktvt9pXEc z>^JCGm_`HSM`4Jn$EDZwlh+j%*`}mkM0W+BDG0-jQ~2FE6n~1W?^tX-MFO8)(t$6J zG3j35W;OBD4Xg8AyA(VM4I@d!Ql!4maUC%VmvNe6iqmwd83p*$EP4xvALmnDhh9S- zJLVNvx7RZY+LvqUH#z$2aO87hmz(d8yr{7-=qf2svSsA4CG_by7?Ix*BHJJ~`@Q7G zOmF~Bb0V|nxan=07J9V>;NO>8|7v?o1m6gIwy{exKY^J;q|actJAap(C?}t!lL#4H zqV!-g#V=E-jH&5}EPVVp(87Pl_E|FW%SW}j9h(n$Mjo7H3}MlSM>qnBD6%EHS0qk| zd<>ulQ$|#*j3H**L~N-o3P4L_(kC^MI|_tGz9srr`mCu;m7CZ-7v1fe^v%cTERvr7 z(4xL+_8JiQ&CKa(kIR}$Kc;b9CLP>%In%^bZIJaEErWtLg$ui3be8YZT`Kc!SS_cV z`@4ZX_#N@h;(4^JNDgjL@?UK|=4gg*j?&WAYAHS;+|>HwZ1!aCv7?QH&{1&cio&a(LAvD{7}@G(13 zrx;V$@1UsXY3|R;l=Ik;qZqNP!8lJ*!bvM@X~ChGo+xrd0Wq%S@maL~7NNiGJp>H1 zA7wHku2Yjgm;ba4q7C{TVZuesQM_@P+L(5|#iVS(wY(=um)bWxIyXgGakuM~xl#3r zGYak~^!bxK^|Q!>>Uy01eov^%+G5?r#;2vsWaAUfn^v5EAkEiL#q;|FqSM$6h(3O- zB{HF==-&Q!SO}N%jH1L;@#OY4`i3~O_jv^rCs*0$&kmqz<_2YurJZj)9FUhFrd((< zo3^=jmBGo!+0XBJEL|qaor&J-hB}RXA7BW$>3B zOs?JPU!!>FC2-$a&iWUi9EZjHUXFK))qQ?IvRz>g8Xr;?y1;m&p zp-gto(m+t1Ew9Ss8xL&Ddp_&KktlL6gyK&)e)LD{Q#evq`kRr)qZ}eCG7z&Cc>C5A z5DP0CE1JYCX>Y>QArfiM9b*;WTu!2Pw)T|m_zH~9ZORdhf3ovw$3TVEg*+YKT{?`E zx4RFT&i6U%L%IK{hIXniE@Q0iajgzUl(+Y(-BY%!9i9Iv=kbs0W*(zvr&?6pEZO9yI#HW3M)dA*qz!!Ip62L%ekCj-#H$z+b1xE zF~Q!(+;CvP>O!GT=xFZbCsWi(){w;+UoAS0emaj?!`$x_pOYk+DGIJ4R}C~6*I5%2 z-b2~_C|NJ1;dwAGsgM{a<7uVwM^wg-Oi4@(((G(FvvaeK#3p$+36l|!digG?cFbr$ znpZ%`_`5TPNaO{gXjj0fLNlIRKc#OH3wIX9#5J)d`97m0XrD=6gEV%_1JkOAx!aaX z_Vhezbk$;3()zp)7YgmSS6y;=S0atwZyng^lg4SWtJ^;?Kxv|P6@IS!!kbHx`fJpO z7g-7^adW_7AoEr9vbTcr94ne#HH(?S4|##EQ&@RM2Etc!DA+Rlws%ODbEZz5!HK79 zg#|>Emyhox(Y^OuKd$M1=f>t2V?jbW;yFvn(7}@@-H7CbklWL`qEkEdD<55WsdL?C zfzy+!-3=4w@)e+do?3s6@(_|fCp5LSGADXiesGH*cI@g@3+WPUlm;I=GV44An}c=? zCd1lCrZ(p>0QH^}M4H9*xc{aAbVQfC@%+6oZY{05*Z`7ct&|3q>^@alt|;&%bDpCj z>sG59ue!!2JKEv&T`elRy zDmJIML-rw(7tLi8q&z~QpPa)AAS5ue`gUp{I<7C+PI^^Ys_0Vwi$(H_JkOOH=h{oP zxH)uLkhXkRq^A3kGjWJizK_M9oJ#D?m~)I;q)w3KBPT;fEsVDrdlCw zE4x{;Q;)>~0$3Z?Sln>|{Dl`!-gpuA2K+^?;J#wxYmNA|HOp>ov%FTZ@YR!=DeoT% z!stt35|=?S!ze7)>9%$@P3F{w2%THtIX5l%(XCI@gfbJ!N;yczCsONU*1C^~EO-xY zzAlhh6^)aQgv~e&r_(V=fF7YB(ODK#+m$ioCBgu+2V0B+%E8^*B^A> zYy2^hn2#%CTX+RIYFVffZsgEtG53em5yhK=_6EP&(dlwFe=U%%fYNui$8*>pHNMov z-437yai+amAYLM7=))4xNf+5+5AjGpS0bxYbpcQIJ~}#m{^ltSV+emGQa1Pia=gzP zF2dgYvsx z3dyF8HPzAEyjbiIrys_3B=9CE&s$=u{)~QZ?c!KszN~&1DBH{Qa={WH+cxX&!q44# zo5GqY-1DDn^@LBjA$$*Ps*qY$*9u@b?>1%wtMf~3MtTY-*SC!xmF+NVg!2vT8uv;= zY(9I;%X;l#1BHlF$xb)T>|YSGFU@>&HG2NL-KxO70{q^sO6_L1)S!tW*pfN>IQ(=B zZBB#JPPigiF4Gb!`Q{M(6|-H;cdiG677Xh#t10n}?UfyyezGnsI9RRQuboY)-oj^K zqvGtGIin0G#(3E91v5tF3ihO}>{&Z{#e*wMtGO`i$J39-+P2jg$Bs#Tnv`b3GoO0&^U7OB3|y3l%psDz zZk!ahrU99wqL=r^H&1bKsr?93m1j19SjIF=cXOjOXiFBhb@f&jX4>xy>&y-$9=Y4e z%;M(omxwL`J5SVBWvXM|QJAZZzv`@vhbiagt$e<)O~quXTD%YSe=CVw{x1tR9Z{-C zM#p16IH$dBcX4vuKl_q({e1tCVJ0dro~C)lgHoSR{YlT%5%T-&a> zT3WK~*AHZ#lN{0~_KY+5$z#yp3Eu%rW&0oik0L5$MC6Vc?G?R3ls=#5s#kQW+bL z$@C&nY*o0LTU-k9g*B)9PXFctsqZwrImocg>^Eh0tw%pb((rKDZ1PMX-fVKGpK>}= zs+4J!IRL)~YERj<|5g1y>SN`@wiG;m_ zE6jjj4w0oq5f~`@Qod+P0Z3j1}IvAugnwbs`V>Ww+JlJmMDhy}X3(VSA`X+#Zco?X4V)Y;Q_S z3El4EaMW{Ve)E>+BONc)iXuN4IuS`Lp<6}lULA?9wwENuGHH_@${7 z;YirjhdGzUy*fz!@UZF^!!ymX4}U7@I!%TY`dc19r-$Q~-u)f7C%HvL-ts?rA;)uZ zey`qJtEI)IDRCcBWsmNL@v)5y+LfRA^=A9JG(DC+uy^{nnB|AoZIEd(6jVOK7`bWm z;3Ge$bSkdo_c}UESkZJMYanX8X+3PV3(i6K;{(Ai71~mo>5^i}V9rEV3Fz^N3{z^( z^@|cZ68M^D-M!uMdSVC!d0i zZn4Ox+8WSwmET+-X%rFi$nz6>`mX>yWq7UeEY1!YoX~;R!T+X4Brjdh*nDJgmMVmC zAL_Ocr@Z>odTCH0*|W|NX#S7R#i9v)60JbY;^?=GFH;05f-RpUi!#-QNcY}QI~FnU zA}K5@T1JWfNRHGZc*)y~#FM>=KysFal-xRuT<2IoTsjK}} z7xE#Y8mUr7L=;)mTevmm^8gDak99J*>aHKLaO}@-7Oz-q*L3~zTz7{D^UYa<3*6{@ zDS$lF923>cYveadU%_aEDGio5m9V8?hDNDI5w1Q&Qj0x}w0|UvCWN=jldONcYoOnt zr`V6$^Z&K??eS3M|Nlzuq}#YfX`AUHD&$kSRAg*&TOlfnm`ZKQGD$I-F{enBG+ikz z+9+AKa!r`yeoYb?5o2a5k;#n9%wc9u-}kip`TmyO&*N8pKi|jq@!jwKaUO9x&Us&6 zm*?yCeqF4K0jk*BP8gYDj!W@$5;UQ<7!Z>7zMS~RGs|^=bogo+JH7f?KtCfzW{C4Cw=RmP~4edx%isC}P_ zQTwOyHPG4ZO%#%EYH(vp?^C6ugn5$ul{HW2A^S^K$iFxNjZN=@m|EygRFy7DlQ!mN zsUBt+@HdllDgr|8)ojaK*IA#m@Y+SJA-X_cbbm^&lcgMJ7Wdf~^zrMOUx0X0k_MvI z!XcK6o8*a4go6IS&C6Duz{rKsy*f*vh)vMZHgHH2+#BWV`@Dk?3dC%YIf07^f$b~a zBv3D-M>1AF$jfJ%T9Qm=34$s3m#vz$_oKeuGB*%o-`gs9=9)&8sbIe-pn_$Yl;5L^ z2pj`Eunw9P^FGRz4g*t?xrReWOoOTtwDNKbVte9?i3f^8N1+zF)`Dp_`dGl9bK1a_ zzX??1xI=D0BST;mWBjT3uhluO{`e9hsM+x?O9IgNF;~{muH!&%%A`%ZPs@7=sCNJi zpjydpM0I6VDJA*-@Mm{Y+?d9J>=3Faqd0Ge43{FC~U$s~T1r4Dl|WXg6l z0;SJ;e*&d3fU_m6hU(6tP)vdu3Y}F#lXjB2)O2X?RoX@<$HVatFQFQ~b;S?44nPA+ zU`9#oEOyqUf%k!B$E(?L?wbNcJkzR^YLxBH6Z`iqOX^J#1BN`c7_~6 z@VCe^k|JDirRx^2Cc0ulpE#>I~>Rf7>6D3&dUzLzY#+l@dKZ5>uA zi{lQfW{x&(jZaFnEY&Vd2QFB+)PBgc<7ouf$mkKhV`?3loQfxQYAXbDn3bq+rWV_?-YKv z;D6t}**=T{I4VLTxE0D-pTdj_&#z){s#z6xoKn~wTv4agDl_MJbLY7+6*`XUD zEu~_q!#f~p&0~`OVIt;=O?fUVbOr8mQ=01j-dmrW~Fb=E~zZ&Sx^lyaZ zuRvw5J$0{EZ38}Z)p!Q-?;{Q9cAB6 zZxYO}R*?AbNtuwpjA~3)cs>b$!Fz^Cpf-5*-85@JxB0i5Yb$s)bUmY!lx-McfpMwF z?z4rrt<#qsc1vd#gg)J+R2w%E8}cFea7EE2#!rD+&WJ4^C7xv{I?nO%kmj9v-dHqk zRWKdiKh;5r;>rix|10%|$fUTe(^cd%nQgjdvy9V#fujPri&P2%3N_8ZZag?n7?;bu z$h3RGqizpQRd5=}yh6AdU+=Z3XfKoR)Wbqd!>SUn{DgQmnKq-dURRG>;3D?#JzRa# z70AV3KNbF~!Z<~E1V_U|)>L4j?;V3iG)7N?o(IqZu)M(U7j$M6KieLVsp{{9iU(nm zAd`d08m1?&`38~%XCHZ~Z;-O)j|XuckyM~MB0oiXvL9bR6UF^uU2n7!dIW=NL?p#d zV466M_hO{|-Z@vGpb3XS(R%<#W~7%Gm9uOggxTeIJm_3}?wezQ_e-;S8YT*T`X9FX z^$0YkYX;n?4;(%joWOpQpdi!`sD=(C^P^mq9pB+)g0QW-wMNLTxioBaGH4k7z7PI0 zgs}l}`Y5+_QLGr4+`U=ss}sNdz!boH%vAu0H-5WOmoUw@Yu~F*#w+Mt!$-LwkT3si zYH@q=6l&MZC;sTHl|6a-=!&In1<@Bl>!!5Gc z%p{EZjHEF6K-ww&Ooq|OZ~!Lr{-|aH@Jj#Bsr`_qNyh9D_@dDq{kccv?Oz;U`8uY< z^}D4?2EMB2w~4m1HvL%=W(t1EWRxMc`1>|<%nkV!c3M4H|ZAJ2?Jmu(hANEP1` zC0GEcP7$(M3TR^@{{nRfokJAnI1D(uhp*usx~{h@mp2qyzXk7SCZ$+5Nn%X&#qxmE zWI8%+;*u5iK{9Am$GK14Dbvxc<3@CVYm-u3HYI3 z9~U@Esbv62DVHpT0jqrfX*#=8j&#JN!_#~lj?B%@mOc`^xlM2B0E+6*_IQ#%dY%Me zn8_NQxu$0jF@>sViu{CIfUOkV>kZx?C~yUAwcl$KD6BD6r=GR}s#_w!OUap~t0ia@h!K<}Rizt72v6AaD-<|q&p=(DU{ zS;ImZE3xMF<5sm$x6u?jSGMd=SWYa!Q3v&<37tA1repG0K=S+9;vy?x9#(L$;_1L) zvsNf;%r=Rc-h$+%9sy|Y(Mgsuj)e@%cDhpn9c7yI=5LyGT)vrD3iS5`vu3i&oFaWP z!5XbOPCwPH(_FlP(o=+0HaJOq`NP8pL+tN#*Ep^SdJ=E9^o=U29fz)x8PI^kvSb{l zDdVsuUBe-dfJjsu5dpk8X}ogi2Z!q^?>yCf)$OA9=H=!6qe^3BX4EOnbGZBsNc%aO z1K?_Jx89=yN+7a?B(Bo=D2MNb*~E&f&o*2CY2rd3zoOBN&I{KbxKe8&qY^kK^L6Ue zMyGzt{&u#(hC^&S>XwgkiH4vjK&<320MdG(_X?GXjuQo0MaFpxJK`_l6@ZH_1~~`Z z?!a&e(MJGd%yj2yOUAOKBQTd3NIGJir)Dk-l$+_rQI~*{NJ2vOtv`PVcrkwWx7L!C zq{zhKx3CB(yy%dZCHK2qcTeFbPPmQd-(@U?n&Lp6D?8Ls^n);o;&cF04*mYN0W@KR z%&uD<(L75qbf`QQi4ZZWVNp9E-9OAOYO$Hhgxf&17gRcq4HLzEP&H$qyOnfA_Y`o( z{O&Ftab_tIdK;lZ@J0=B4#lbDezrUtk2r&(Tu^T#jVKH^`TZY!(Q613-cFdXKRzEC zc~-(ZwOAm9Cj7^rZQQ?cYX57;1n7G!6_|jDKp8S>kd}$${x6r)8wRws7;3r%{wh4A z>r1GTz`u(w!HxwG#qWYr{uNP9;-?mP!YG+t?!OW5r04zx-+dNK(IqRhB8f6id-l1* z`mcQM-^juL#zpvhRG$R(XA#WAwbBNrcO*m^kST!k;)35q-v3&;@R{;cnG^~{`ZYhX zvH)$*T9wtR0KF&>=Z!(O$)G*m4q53$xzD_&d{u{s-!wIi$n2l?sg}$AQ%-reKD6Bn z^O^Iu(97F+jlI9dMp2o69C{k|CL!9yvaW!dAe=lB;B^n#OfDw<;;p9AzGu_(y5v5i zD|xVRzOd1ZnE9&^TG25Z1!g*@9$ zXQZJ5dO(Oc(7cyk38Ef0on%>=tt!b5ow`rsfGd39nl-_~On&3Vo7@bFdNiRYjxg7c zu^1U5C?JKoAs7dNUj{oKE8a4v+GCAz?P_ed!j;IGnU1T;x3Sfab$E`^_-tA%zo~~1 z!B|Hoxg~no+w2Z0xf7-Mo!*Kx%=Cx&+T42wU zEZ?BnREwiy3$Bb^=2F6HSjPjg?O~xhW$%8G@3YqzGNefcB-MV;wa=-Jn@T>UsXFb+ zu9@%r;81NP#Yi6KzHeu3-Do}X?A~Q3JT>hMsV07y z_jFxHG48yaC`4TthX`)JSK!Rit}Jl!&`JtPBlUpr+apeqS(=M4sF-?r^@f_bE@MMc ziAu%lUTU}49&VHwOJ49sU)w~=5kX*{oR~itUe& zFRw5Y(>5r7@3+X9$9nK2XrSwYFry)>Q(kz9an&tuxXM_C5J{tmPF#p3>DRBFoua() z=+l2V9`kwoc!hj>@lLThbuS3F>cocAw3vqqpBV_x-Oeqa{$zz$Btves)2tN@-@0CG z{`^z1f0`Hn)Bh@iQ&^J7X9$J2EeFL{Ss$2hq+4ahX)nzLAswH45x%B~*PoH4=9&ds zHjaU_#+d`Xyc1$=v;x$=V?`P^g$L{+i?<7KvB_n}<1RR*2!rGLn^!Bw){N(_T>-_x z3w&Qrul%v=C*wE7=Rv$Kv9-0}WwB#ARY#g^a7!O^#1j|VWx9$_i0j^Y&A;IrY5al9 zbGs=orhotq6>U_3#fCZ;?tqzQ20kiCKt;{dmfRms(S%~>i=d9T>TYq}Y(^?THqG-ZH`* z$@lypQrU;i=D&*zzjDO(A9AV@<1=S7~y)R)vaxLm?s4_tSzgfmFr${itSK^A~E(Il#i)Coh)&CagaZFI`@4; z$VQQK)Sw+DWPN^4PFS0*CRJ>8W+cmB0GHztZCt9rq>`B18%bM{pVrg3pHkwmP5FNfNCpPqi-bUNb_p1{Dbv8BFM(CCcV_I#OJxB zfe6^C&uQA;9doa8752AMo!E1>JBmGTFR!-^@Ff+`uZ=Sgv~9;9*-NuQpTgO3lD*O- zL;Y}cS=-Vae(ae9&Tu7TN!Z)aMP`j3<$_HQ72cY%*z@kIo!CyU5aKrtWQg~Y#X>6I zw^h_Z3@35(@)EdGuk;vxLu^g)jjY^UJhDQ4;GsVod){n{fLXC`@z`A_!^vSz}7xaqV1^VT2fyHsHipg;v$&b%` zW4?SnTk+@asz>w2SmMQKO&X}A->lBUQaygjyxB82(@~S5#az1K{K8!+LsKFXW?wB- zm?_e9cYzl~^@vp}%Uv)waNA^-gAk~7;cC<{8QzI)k1vv;^nBhy~8 zFjRtgJ=#i8G{Ydy9QO=D`N_uWcpqI5X`!*+ak{jT7D=T_uY!{S?8_#{=f#GcMnX+T zehI|3H>t!1@6%YQ8iO{jHfPZb7f=bC(%#^aRq9nT!1*m`(t?-RBl5GkTiW!OUr&jb zl$}_o&hp2Ll(*h%<(-%AmnIVqzeE2)*0wD`wu^1O%@*)G$k?sTtBVc&6hE?W1Bz(Gk#ze8}78=xZV_mxg=IFFc*gwY3S5O4El|lF!Xqfo3@{N{ynQS zEa48kfz7Ag&5&8m;S~0bj<-X-J2v|My+juu`PPO}{O?lkf8V^Njk48&DBAC=@8M#e90q~=s{L6K68cq$o5L&L%@P6z3jm%9eTT%V@w~V5Y7eq3TLqt)BV9( zcJ^DY-Rm!Ua=6#4ZZzu#v=457S|f}>`hwZ;IgKo#@oB0aIOHw2NG}_nu57b7bOzQs z?(P26`MBP^5PyMB8G-Leq7!g=aOb*8;L&50vGtWbZ8MLU&DnJTWs0{ZQS<#DNxN}g zLv?_^-arSTP9LEq0`Zv@_$jm{WOM%abV&HU%Zz zJ4G;oj_8NGIhL|Iw%5SZ4Hn!j%;qPQ1Sgm2!tWROzF89*f`GO_9ce;$X&B*Pyc4SN zzM0J0AyDK?6YduTatIHDnK9=!9=IHTih*q;E`-V~7|W@6q)hBh-GW@_8!7DLqj?#x zJT!Ca;HE3qT6Sm9{;dup4y7Ch@I{A4LuEE*OQ<%2H_Qs?G^+0oM-(trTMTaQ-Q`ub z?}y8;?uqOr1U#kB90!8Wrh(I*P%;uEe1x_Npz3%}2umg%td759DlaPNNH!YsxRKPf ziyf-I*4PhoQu33_t2$MU4}X~3`Sl-M3&Ct#NA&y`roR7#ZNSq6^LvbV&J?`zh4 z!h7wWSDPN~xtZA|B>CN36i(BZtbBkhkC=UXP<}-D}~tt|P9CZ&7U4wVtAD-gpNnoY5Br3do6# z(C7Gt41LK4nfX6PMhPyV$gZ5d5H_P zPfN_A{eyyNx_aA-Y&8?yW=aDRtwb`ONLs+YI7{D zjXs!x7z(_|UYkq2g)T{hU(p0mTR*}YsLe*?ja z6(s7#(wGs}#YA-jx;m1wt&M68EJq=#xFg0eV(XC8n`0ISOp1P7mO*p#VJv7FWksob z&OtnUgN5#mPU*Qtl;)_6Y`g4f*XEi&HHS`04W!qLE&1K=OBuKqrX~We6XNR6hLoF9 zJr5f<>U<|$w<1P6X9#ZFT066rUS>LCI0W;Si>(o#YGOe|Bglqh>%ZB2tNrAa74icaK0*Q@Tq>f%Ii8q}sifoIZw#s|(lXMZM^b^O{$YmU za!g1Oo#ADT+g@ujOw>WE2oGOG@RS7gq6$da@I-U*EVgX`XOW+L;Z8T=(iJ_Ma6UI@ zYA$QhVw5APJ#<7HuF0Z5X7Lia`sZ~Hu?ec(4OvGLuouA!w)OkJwL1j-#%X0Y*at>3 z@j`DYKspEDsUQ^;K9m(nlY0T@v{b+6_@s$V*fTDr-`AU7T7AIIrlx+QvTgri`C*YT z1+lv)nFZRGKz!?pp@yJCY)3^;Z?!@F@jA6`*JuUNl6AzN$72T~#B(H=wp`HfPxy<# zHBuK{<`d`=>lR%dt894jBI%N?vIDkBtF~+QjlQ2;>+yUi?0Mo0bTzG$pvYK7#f0w4 z)pOnRsQ7&F>tVBI9fv)ywC`+n7|#pB&`3ZEahON)46YB8lT zd82QFC#9fnqcjHWr#%rEQ02Z>+@1W9je)oB@AB}RZKvrf z+}1s{=Qzjjx^Ny-qDm0D7YWpBqC$Mw@sc?Gs;(ba?)Sj4b?-*l<#SBTFbd1Uub3Ar zuX*MQq})!1G3cvZD zC;eYwL42;I@g>jw({)6=|DRUQJ#%1i*#N8C{Btk-*A#&J6VnEGuI8DmLUX%Y|Nq~{ z@OeBC*$Et86EACG_4yTYUsz!IzvcN@sXJ6ej2#_6tv{asQ7#bH??3S6{<*Ix0`j|+ zE&M1~VNPzQ4YS_(wUe<5(~0qZ}3Z@n?Zz_ld(#Sttm6`up2|ule7!_BW6HEnEJLGW9>*m6Sw@ z0VaCkpruUmGSBWX0*c7_OSGQ+$FE2a{H=dih8+08K=!p~;QS!T9N?4azvQhi@(0UM z8sTg5KE9+Y+F$M2uL(5ztF6J8%;#&4cfaKQf3;^ne#Oz@Uu_M(WIkVWru8N7|EoRw pHHPwEZ4JI;J|Dlr{QZ*m|J9!TFQ7CTBKtpg{f)oAY|lTw{13@cm?QuI literal 0 HcmV?d00001 diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..6601f1f --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://openkeys.live/sitemap.xml diff --git a/scripts/build-site.mjs b/scripts/build-site.mjs new file mode 100644 index 0000000..c5d88d5 --- /dev/null +++ b/scripts/build-site.mjs @@ -0,0 +1,163 @@ +// Writes the static info pages (site/pages.mjs) into dist/ after `vite build`, plus sitemap.xml. +// The pages are plain HTML so search engines read them without running the app. They reuse the app's +// design tokens and the fonts Vite already emitted into dist/assets. +import { readFileSync, writeFileSync, mkdirSync, readdirSync } from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { PAGES, SITE, COMPARED_ON, UPDATED, FEATURES } from '../site/pages.mjs'; + +const root = join(dirname(fileURLToPath(import.meta.url)), '..'); +const dist = join(root, 'dist'); +const base = process.env.BASE ?? '/'; + +const esc = (s) => s.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); +const url = (slug) => `${SITE}/${slug ? slug + '/' : ''}`; +const href = (slug) => `${base}${slug ? slug + '/' : ''}`; + +// CSS: tokens with font URLs pointed at Vite's hashed copies, then the page styles. +const assets = readdirSync(join(dist, 'assets')); +const tokens = readFileSync(join(root, 'src/ui/design/tokens.css'), 'utf8').replace(/url\("\.\/fonts\/([^".]+)\.woff2"\)/g, (m, name) => { + const file = assets.find((f) => f.startsWith(name + '-') && f.endsWith('.woff2')); + if (!file) throw new Error(`build-site: no emitted font for ${name}; run vite build first`); + return `url("${base}assets/${file}")`; +}); +writeFileSync(join(dist, 'site.css'), tokens + '\n' + readFileSync(join(root, 'site/site.css'), 'utf8')); + +const CHEVRON = + ''; +const stripTags = (s) => s.replace(/<[^>]+>/g, ''); + +const header = (page) => `

`; + +const footer = () => ``; + +const table = (t) => `
+${t.cols.map((c) => ``).join('')} +${t.rows.map(([label, ...cells]) => `${cells.map((c) => ``).join('')}`).join('\n')} +
${esc(c)}
${esc(label)}${esc(c)}
+

Compared in ${COMPARED_ON} from each app's public information. Prices and features change, so check their sites.

`; + +const faq = (items) => `
${items + .map(([q, a]) => `
${esc(q)}${CHEVRON}

${esc(a)}

`) + .join('\n')}
`; + +const tiles = () => `
${FEATURES.map(([h, p]) => `

${esc(h)}

${esc(p)}

`).join('')}
`; + +const related = (page) => { + const others = PAGES.filter((p) => p.slug !== page.slug); + return ``; +}; + +function jsonLd(page) { + const crumbs = [{ name: 'OpenKeys', item: url('') }]; + if (page.slug !== 'alternatives' && page.them) crumbs.push({ name: 'Compare', item: url('alternatives') }); + crumbs.push({ name: page.nav, item: url(page.slug) }); + return [ + { + '@context': 'https://schema.org', + '@type': 'WebPage', + name: page.title, + description: page.description, + url: url(page.slug), + dateModified: UPDATED, + inLanguage: 'en', + isPartOf: { '@type': 'WebSite', name: 'OpenKeys', url: url('') }, + about: { '@type': 'WebApplication', name: 'OpenKeys', url: url(''), applicationCategory: 'EducationalApplication', operatingSystem: 'Any', offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' } }, + }, + { + '@context': 'https://schema.org', + '@type': 'BreadcrumbList', + itemListElement: crumbs.map((c, i) => ({ '@type': 'ListItem', position: i + 1, name: c.name, item: c.item })), + }, + { + '@context': 'https://schema.org', + '@type': 'FAQPage', + mainEntity: page.faq.map(([q, a]) => ({ '@type': 'Question', name: q, acceptedAnswer: { '@type': 'Answer', text: stripTags(a) } })), + }, + ]; +} + +function render(page) { + const them = page.them; + return ` + + + + +${esc(page.title)} + + + + + + + + + + + + + + + + + + + + +${jsonLd(page).map((d) => ``).join('\n')} + + +${header(page)} +
+

OpenKeys${them ? ` / Compare` : ''} / ${esc(page.nav)}

+
+

${esc(page.h1)}

+

${esc(page.lede)}

+ +
OpenKeys practice screen: sheet music with notes marked right and wrong, falling notes and an on-screen piano keyboard
Practising in OpenKeys: sheet music, falling notes and the keyboard, in a browser.
+
+
+${page.intro.map((p) => `

${esc(p)}

`).join('\n')} +
+${page.table ? `

${them ? `OpenKeys and ${esc(them.name)} side by side` : 'At a glance'}

${table(page.table)}
` : ''} +${them ? `

When OpenKeys is the better fit

    ${page.better.map((b) => `
  • ${esc(b)}
  • `).join('')}
+

When ${esc(them.name)} is the better fit

    ${page.worse.map((b) => `
  • ${esc(b)}
  • `).join('')}
` : ''} +${(page.sections ?? []).map((s) => `

${esc(s.h2)}

${s.html}
`).join('\n')} +

What OpenKeys does

${tiles()}
+

Questions

${faq(page.faq)}
+

Try it now

OpenKeys opens in your browser in a few seconds. No account, nothing to install.

+

More

${related(page)}
+
+${footer()} + + +`; +} + +for (const page of PAGES) { + const dir = join(dist, page.slug); + mkdirSync(dir, { recursive: true }); + writeFileSync(join(dir, 'index.html'), render(page)); +} + +const sitemap = ` + +${['', ...PAGES.map((p) => p.slug)].map((s) => ` ${url(s)}${UPDATED}`).join('\n')} + +`; +writeFileSync(join(dist, 'sitemap.xml'), sitemap); +console.log(`build-site: ${PAGES.length} pages and sitemap.xml written to dist/`); diff --git a/site/pages.mjs b/site/pages.mjs new file mode 100644 index 0000000..1a50795 --- /dev/null +++ b/site/pages.mjs @@ -0,0 +1,303 @@ +// Content for the static info pages served next to the app (built by scripts/build-site.mjs). +// Each page answers one search intent ("Yousician alternative", "Synthesia in the browser", ...) with real, +// specific content. Copy rules are the design system's: plain, short, sentence case, numerals, no hype. +// Claims about other apps stay general and dated; check them again before changing COMPARED_ON. + +export const SITE = 'https://openkeys.live'; +export const COMPARED_ON = 'November 2026'; +export const UPDATED = '2026-11-03'; + +// What OpenKeys is, in one place, so every page says the same thing. +export const FEATURES = [ + ['Listens through your microphone', 'Put a laptop or tablet on the music stand of any piano or keyboard. No cable needed. A setup wizard tunes it to your room in about 2 minutes.'], + ['Exact with a MIDI keyboard', 'Plug a USB MIDI keyboard into Chrome, Edge or Firefox and every note, its timing and how hard you played it are read exactly.'], + ['Waits for the right note', 'Wait mode stops until you play the right keys, then tells you what you played instead: "That was E4; try D4, 2 keys lower".'], + ['Falling notes and sheet music', 'Practise with sheet music, falling notes or both. Notes turn green or red in place, and wrong notes show as ghost noteheads.'], + ['Loops the bars you miss', 'Results show your top trouble spots bar by bar. One click loops them, and Loop drill raises the tempo 5% after each clean pass.'], + ['Your own music', 'Import MusicXML (from MuseScore), MIDI and ABC files by drag and drop, or write exercises in the built-in editor.'], + ['A course and drills', 'A 7-lesson course from finding middle C to playing with both hands, plus scales, arpeggios, chords, sight-reading, rhythm and ear training.'], + ['Free, with no account', 'No sign-up, no subscription, no ads and no trial. MIT licensed and open source on GitHub.'], + ['Private and offline', 'Audio never leaves your device. Your progress is stored in the browser, and OpenKeys installs as an app that works offline.'], +]; + +const OPENKEYS_COLUMN = { + price: 'Free. No subscription, no ads, no in-app purchases', + account: 'Not needed', + where: 'Any modern browser on a computer, tablet or phone; installs as an app', + mic: 'Yes, with a setup wizard for your room', + midi: 'Yes, in Chrome, Edge and Firefox (Safari: microphone only)', + files: 'Yes: MusicXML, MIDI and ABC', + library: '15 built-in public-domain pieces in graded versions, plus anything you import', + instruments: 'Piano and keyboard', + source: 'Open source, MIT licence', + privacy: 'Audio and progress stay on your device', +}; + +const ROWS = [ + ['price', 'Price'], + ['account', 'Account'], + ['where', 'Where it runs'], + ['mic', 'Listens through a microphone'], + ['midi', 'MIDI keyboard'], + ['files', 'Import your own files'], + ['library', 'Songs'], + ['instruments', 'Instruments'], + ['source', 'Source code'], + ['privacy', 'Your data'], +]; + +const SHARED_FAQ = [ + ['Is OpenKeys really free?', 'Yes. There is no subscription, no trial, no ads and nothing to unlock. The code is MIT licensed on GitHub, so it stays available even if the project stops.'], + ['Do I need to download anything or make an account?', 'No. Open openkeys.live in Chrome, Edge, Firefox or Safari and start playing. You can install it as an app from the browser if you want it offline.'], + ['Does it work with an acoustic piano?', 'Yes. OpenKeys listens through your device microphone. Single notes are detected precisely; for chords it checks the notes it expects. When it is not sure, it shows "?" and never counts that against you.'], + ['What do I need to start?', 'A piano or keyboard and a computer, tablet or phone. A USB MIDI cable is the most accurate. With no instrument at all, you can play with the computer keys.'], +]; + +export const PAGES = [ + { + slug: 'learn-piano-free', + nav: 'Learn free', + title: 'Learn piano online for free, in your browser · OpenKeys', + description: + 'OpenKeys is a free piano teacher that runs in your browser. It listens through your microphone or MIDI keyboard, waits on the right note and loops the bars you miss. No account, no download.', + h1: 'Learn piano online for free, in your browser', + lede: 'OpenKeys listens while you play and tells you what went well and what to fix. No account, no subscription, nothing to install.', + intro: [ + 'Most piano apps are free to download and then ask for a subscription. OpenKeys is free all the way through: every lesson, drill and practice mode, with no limits on how long you play.', + 'It works with the instrument you already have. Play an acoustic piano or a keyboard into the microphone, connect a MIDI keyboard over USB, or use the computer keys if you have no instrument yet.', + ], + sections: [ + { + h2: 'How it works', + html: `
+

1. Choose how you play

Microphone, MIDI keyboard or computer keys. The setup wizard checks room noise, timing and tuning.

+

2. Pick a lesson or a piece

Start the 7-lesson course, or open Ode to Joy, Für Elise, Minuet in G and more in graded versions.

+

3. Play and get feedback

OpenKeys plays the piece first, then follows you, marks each note and shows exactly what to practise next.

+
`, + }, + { + h2: 'Practice modes', + html: `
    +
  • Listen plays the piece with a grand piano sound while the notes light up.
  • +
  • Wait stops on every note until you play it. The best way to learn a new piece.
  • +
  • Play along keeps time at 25% to 150% of the tempo, with a metronome if you want one.
  • +
  • Follow me has no fixed tempo: OpenKeys follows you, pauses and restarts included.
  • +
  • Loop drill repeats a few bars and raises the tempo 5% after each clean pass.
  • +
+

Practise hands separately or together. OpenKeys can play the other hand for you.

`, + }, + ], + faq: [ + ['Can I learn piano with an app alone?', 'An app can teach you to read music, find notes, keep time and practise efficiently, and it is a good start. A teacher is still the best way to fix posture and technique, so OpenKeys works well between lessons too.'], + ['Which songs are included?', 'Twinkle Twinkle, Ode to Joy, Für Elise, Gymnopédie No. 1, Bach\'s Prelude in C, Minuet in G, Canon in D, Greensleeves, Amazing Grace and more, each in easy and fuller versions. You can import any MusicXML, MIDI or ABC file.'], + ...SHARED_FAQ, + ], + }, + { + slug: 'alternatives', + nav: 'Compare', + title: 'Free piano learning apps compared: Yousician, Synthesia, Simply Piano, flowkey · OpenKeys', + description: + 'How OpenKeys, a free and open-source piano teacher in the browser, compares with Yousician, Synthesia, Simply Piano and flowkey: price, account, microphone and MIDI, your own files.', + h1: 'Piano learning apps compared', + lede: 'OpenKeys is a free, open-source piano teacher that runs in your browser. Here is how it compares with the apps you may already know.', + intro: [ + 'Yousician, Simply Piano and flowkey are polished apps with large licensed song libraries, paid by subscription. Synthesia is a falling-notes app with a one-time unlock. OpenKeys is free and open source, runs in any browser, needs no account and keeps your audio on your device.', + 'OpenKeys has fewer built-in songs than any of them. It makes up for that by importing the MusicXML, MIDI and ABC files you already have.', + ], + table: { + cols: ['OpenKeys', 'Yousician', 'Synthesia', 'Simply Piano', 'flowkey'], + rows: [ + ['Price', 'Free', 'Subscription, limited free tier', 'Free with a few songs, one-time unlock', 'Subscription, limited free tier', 'Subscription, a few free songs'], + ['Account', 'Not needed', 'Needed', 'Not needed', 'Needed', 'Needed'], + ['Runs in a web browser', 'Yes', 'Mainly apps', 'No, installed app', 'No, phone and tablet app', 'Yes, and apps'], + ['Listens through a microphone', 'Yes', 'Yes', 'No, MIDI keyboard', 'Yes', 'Yes'], + ['MIDI keyboard', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes'], + ['Import your own MIDI or MusicXML', 'Yes', 'No', 'MIDI, after unlock', 'No', 'No'], + ['Open source', 'Yes, MIT', 'No', 'No', 'No', 'No'], + ], + }, + sections: [], + faq: [ + ['What is the best free alternative to Yousician or Simply Piano?', 'If you want to learn piano without a subscription, OpenKeys is free with no limits, runs in the browser and listens through your microphone or a MIDI keyboard. It has fewer built-in songs, but you can import your own.'], + ['Is there a web version of Synthesia?', 'Synthesia itself is an installed app. OpenKeys gives you falling notes, sheet music and your own MIDI files in the browser, for free. See the Synthesia comparison below.'], + ...SHARED_FAQ, + ], + }, + { + slug: 'yousician-alternative', + nav: 'Yousician', + title: 'Free Yousician alternative for piano, open source · OpenKeys', + description: + 'Looking for a free Yousician alternative? OpenKeys is an open-source piano teacher in your browser. It listens through your mic or MIDI keyboard, with no account, no subscription and no daily limit.', + h1: 'A free, open-source Yousician alternative for piano', + lede: 'OpenKeys listens to you play, like Yousician, but it is free with no daily limit, runs in your browser and needs no account.', + intro: [ + 'Yousician teaches guitar, piano, bass, ukulele and singing, with a large library of licensed songs and a subscription for full access. If you only want piano and do not want to pay monthly, OpenKeys covers the core of it: it listens through your microphone or MIDI keyboard, marks every note and tells you what to practise next.', + 'OpenKeys is open source. There is no account, no paywall and no limit on how long you practise each day. Your audio never leaves your device.', + ], + them: { + name: 'Yousician', + price: 'Subscription for full access; a limited free tier', + account: 'Needed', + where: 'Apps for phone, tablet and computer', + mic: 'Yes', + midi: 'Yes', + files: 'No, its own catalogue', + library: 'Large licensed catalogue, including pop songs', + instruments: 'Guitar, piano, bass, ukulele and singing', + source: 'Closed source', + privacy: 'Account and progress stored by the service', + }, + better: [ + 'You want to learn piano without a subscription or a daily time limit.', + 'You want to play your own pieces: import MusicXML from MuseScore, or MIDI and ABC files.', + 'You prefer to practise in the browser on any computer, with no account and no tracking.', + 'You want specific feedback: wrong notes shown as ghost noteheads, timing per hand and a bar-by-bar heatmap.', + ], + worse: [ + 'Yousician has far more songs, including licensed pop music. OpenKeys has 15 public-domain pieces plus your imports.', + 'Yousician teaches guitar, bass, ukulele and singing too. OpenKeys is piano only.', + 'Yousician has video lessons and a bigger structured curriculum. OpenKeys has a 7-lesson course and generated drills.', + ], + faq: [ + ['Is there a free version of Yousician?', 'Yousician has a free tier with limits; full access is a subscription. OpenKeys is a different app that is free with no limits for piano.'], + ['Is there an open-source Yousician?', 'OpenKeys is an open-source piano teacher in the same spirit: it listens to you play and gives feedback. The code is on GitHub under the MIT licence.'], + ['Does OpenKeys work like Yousician with a microphone?', 'Yes. Put your device near the piano, run the 2-minute setup wizard and play. OpenKeys follows you note by note.'], + ...SHARED_FAQ, + ], + }, + { + slug: 'synthesia-alternative', + nav: 'Synthesia', + title: 'Synthesia alternative in your browser, free and online · OpenKeys', + description: + 'Looking for Synthesia online or a web version? OpenKeys runs in the browser with falling notes, sheet music, your own MIDI files, MIDI keyboard and microphone input. Free and open source.', + h1: 'Falling notes in your browser. A free Synthesia alternative.', + lede: 'Open a MIDI file, watch the notes fall and play along on your keyboard. In the browser, free, with no download.', + intro: [ + 'Synthesia made falling-notes piano popular: load a MIDI file, watch the notes come down and play them on a MIDI keyboard. It is an installed app with a free set of songs and a one-time unlock for the rest.', + 'OpenKeys does the same in a web browser, for free. It also shows the sheet music, listens through a microphone if you have no MIDI keyboard, and gives feedback on every note: right, wrong, early, late or held too short.', + ], + them: { + name: 'Synthesia', + price: 'Free with a set of songs; one-time unlock for the rest and your own MIDI files', + account: 'Not needed', + where: 'Installed app for computer, tablet and phone', + mic: 'No, made for MIDI keyboards', + midi: 'Yes', + files: 'MIDI, after unlock', + library: 'Built-in songs plus any MIDI file', + instruments: 'Piano and keyboard', + source: 'Closed source', + privacy: 'Runs on your device', + }, + better: [ + 'You want falling notes without installing anything, on any computer with a browser.', + 'You have an acoustic piano or a keyboard without USB: OpenKeys listens through the microphone.', + 'You want to learn to read music: sheet music and falling notes can show side by side.', + 'You want to import MIDI and MusicXML files for free, and record your playing back to MIDI.', + ], + worse: [ + 'Synthesia\'s falling-notes view is its whole focus and is very polished; OpenKeys splits its attention between sheet music and falling notes.', + 'Synthesia has a large built-in song set. OpenKeys has 15 pieces, plus any file you import.', + 'Safari cannot use MIDI keyboards (no Web MIDI), so on a Mac or iPad with Safari OpenKeys uses the microphone. Chrome, Edge and Firefox support MIDI.', + ], + faq: [ + ['Is there a web version of Synthesia?', 'Synthesia is an installed app. If you want falling notes in the browser, OpenKeys does it for free: open openkeys.live, import a MIDI file and play.'], + ['Can I play Synthesia-style MIDI files in OpenKeys?', 'Yes. Drag a .mid file onto the Library page. OpenKeys splits the hands, shows sheet music and falling notes, and judges your playing.'], + ['Do I need a MIDI keyboard?', 'No. A MIDI keyboard over USB is the most accurate, but OpenKeys also listens through a microphone, and you can play with the computer keys.'], + ...SHARED_FAQ, + ], + }, + { + slug: 'simply-piano-alternative', + nav: 'Simply Piano', + title: 'Free Simply Piano alternative with no subscription · OpenKeys', + description: + 'A free alternative to Simply Piano: OpenKeys is an open-source piano teacher in your browser that listens through your mic or MIDI keyboard. No subscription, no account, works on a laptop.', + h1: 'A free Simply Piano alternative, with no subscription', + lede: 'OpenKeys listens to your piano and guides you note by note, like Simply Piano, but it is free and runs in a browser on any computer.', + intro: [ + 'Simply Piano is a well-made app for phones and tablets that listens to you play and walks you through songs, with a subscription for most of its content. OpenKeys does the listening and the guidance for free, in the browser, on a laptop, tablet or phone.', + 'There is no sign-up and no trial to cancel. Everything, from the course to the drills, is open from the first minute.', + ], + them: { + name: 'Simply Piano', + price: 'Subscription for full access; a few songs free', + account: 'Needed', + where: 'Phone and tablet app', + mic: 'Yes', + midi: 'Yes', + files: 'No, its own catalogue', + library: 'Large licensed catalogue, including pop songs', + instruments: 'Piano', + source: 'Closed source', + privacy: 'Account and progress stored by the service', + }, + better: [ + 'You want to learn piano without a subscription or a trial.', + 'You want to practise on a laptop or desktop browser, with a bigger view of the music.', + 'You want to import your own pieces as MusicXML, MIDI or ABC.', + 'You want detailed feedback: per-hand timing, a bar-by-bar heatmap and loops of the bars you miss.', + ], + worse: [ + 'Simply Piano has many more songs, including licensed pop music. OpenKeys has 15 public-domain pieces plus your imports.', + 'Simply Piano has a longer guided course. OpenKeys has a 7-lesson course plus generated drills.', + ], + faq: [ + ['Is there a free Simply Piano alternative?', 'Yes. OpenKeys is free with no subscription. It listens through your microphone or MIDI keyboard and runs in the browser.'], + ['Does OpenKeys work on a laptop?', 'Yes. OpenKeys runs in Chrome, Edge, Firefox and Safari on Windows, macOS, Linux and ChromeOS, and on tablets and phones.'], + ...SHARED_FAQ, + ], + }, + { + slug: 'flowkey-alternative', + nav: 'flowkey', + title: 'Free flowkey alternative, open source, in your browser · OpenKeys', + description: + 'A free alternative to flowkey: OpenKeys is an open-source piano teacher in your browser with sheet music, Wait mode, microphone and MIDI input. No account and no subscription.', + h1: 'A free, open-source flowkey alternative', + lede: 'Sheet music, a mode that waits for the right note, and feedback through your microphone or MIDI keyboard. Free, in your browser.', + intro: [ + 'flowkey teaches with sheet music next to video of a real pianist\'s hands, and waits for you to play the right notes. Full access is a subscription. OpenKeys also runs in the browser and waits for the right notes, and it is free and open source.', + 'OpenKeys goes further on feedback: notes are marked in place on the sheet music, wrong notes appear as ghost noteheads, and your trouble spots become short loops you can drill.', + ], + them: { + name: 'flowkey', + price: 'Subscription for full access; a few songs free', + account: 'Needed', + where: 'Web browser and apps', + mic: 'Yes', + midi: 'Yes', + files: 'No, its own catalogue', + library: 'Large catalogue, including pop and film music', + instruments: 'Piano', + source: 'Closed source', + privacy: 'Account and progress stored by the service', + }, + better: [ + 'You want Wait mode and sheet-music practice without a subscription or account.', + 'You want to import your own scores from MuseScore (MusicXML), MIDI or ABC.', + 'You want detailed feedback after each take, and loops of the bars you miss.', + 'You want your audio and progress to stay on your device.', + ], + worse: [ + 'flowkey has video of a pianist\'s hands for each song. OpenKeys shows notes on the sheet, falling notes and an on-screen keyboard, but no video.', + 'flowkey has a much larger song catalogue. OpenKeys has 15 public-domain pieces plus your imports.', + ], + faq: [ + ['Is there a free flowkey alternative?', 'Yes. OpenKeys is free with no subscription, runs in the browser and waits for the right notes like flowkey does.'], + ...SHARED_FAQ, + ], + }, +]; + +// Fill each competitor page's two-column table from the shared rows. +for (const p of PAGES) { + if (!p.them) continue; + p.table = { + cols: ['OpenKeys', p.them.name], + rows: ROWS.map(([k, label]) => [label, OPENKEYS_COLUMN[k], p.them[k]]), + }; +} diff --git a/site/site.css b/site/site.css new file mode 100644 index 0000000..278ebe3 --- /dev/null +++ b/site/site.css @@ -0,0 +1,140 @@ +/* + * Styles for the static info pages (site/pages.mjs, built by scripts/build-site.mjs). Same design system as + * the app: ink / white / soft-cloud, Inter 400/500, Bebas Neue for the hero line only, pill controls, square + * flat blocks, no shadows, no hover tints, "tap collapse" press. Tokens are prepended at build time from + * src/ui/design/tokens.css, so every colour here is a variable. + */ +@media (prefers-color-scheme: dark) { + :root:not([data-theme='light']) { + --surface-canvas: var(--ok-ink); + --surface-soft: var(--ok-charcoal); + --color-primary: var(--ok-white); + --color-on-primary: var(--ok-ink); + --text-primary: var(--ok-white); + --text-soft: var(--ok-hairline-soft); + --text-secondary: var(--ok-stone); + --border-hairline: var(--ok-ash); + --border-hairline-soft: var(--ok-ash); + --elevation-inset: inset 0 -1px 0 var(--ok-charcoal); + color-scheme: dark; + } +} + +* { box-sizing: border-box; } +html { -webkit-text-size-adjust: 100%; } +body { + margin: 0; + background: var(--surface-canvas); + color: var(--text-primary); + font-family: var(--font-sans); + font-weight: var(--weight-regular); + font-size: var(--type-body-size); + line-height: var(--type-body-lh); +} +b, strong, th { font-weight: var(--weight-medium); } +a { color: inherit; } +img { display: block; max-width: 100%; height: auto; } + +.wrap { max-width: 1120px; margin: 0 auto; padding: 0 var(--gutter-desktop); } + +/* Header */ +.top { + position: sticky; top: 0; z-index: 1; + background: var(--surface-canvas); + box-shadow: var(--elevation-inset); +} +.top .wrap { height: var(--nav-primary-h); display: flex; align-items: center; gap: var(--space-xl); } +.brand { font-weight: var(--weight-medium); font-size: 20px; line-height: 1; text-decoration: none; } +.top nav { display: flex; gap: var(--space-xl); margin-left: auto; align-items: center; } +.top nav a { text-decoration: none; font-weight: var(--weight-medium); white-space: nowrap; } +.top nav a[aria-current='page'] { box-shadow: inset 0 -2px 0 var(--text-primary); } + +/* Buttons */ +.btn { + display: inline-flex; align-items: center; justify-content: center; gap: var(--space-sm); + min-height: var(--control-h); padding: 0 32px; + border-radius: var(--radius-button); + background: var(--surface-soft); color: var(--text-primary); + font-weight: var(--weight-medium); text-decoration: none; white-space: nowrap; + transition: transform var(--duration-base) var(--ease-standard), opacity var(--duration-base) var(--ease-standard); +} +.btn.sm { min-height: var(--control-h-sm); padding: 0 18px; font-size: var(--type-button-sm-size); } +.btn.primary { background: var(--color-primary); color: var(--color-on-primary); } +.btn:active { transform: scale(var(--press-scale)); opacity: var(--press-opacity); } +.row { display: flex; flex-wrap: wrap; gap: var(--space-sm); align-items: center; } + +/* Sections */ +main section { padding: var(--space-section) 0; } +main section + section { border-top: 1px solid var(--border-hairline-soft); } +.crumbs { margin: var(--space-xl) 0 0; color: var(--text-secondary); font-size: var(--type-caption-md-size); } +.crumbs a { text-decoration: none; } +.display { + margin: 0 0 var(--space-xl); + font-family: var(--font-display); font-weight: var(--weight-regular); + font-size: var(--type-display-size); line-height: var(--type-display-lh); + text-transform: uppercase; max-width: 20ch; +} +.lede { font-size: var(--type-heading-lg-size); line-height: 1.35; color: var(--text-soft); max-width: 40ch; margin: 0 0 var(--space-xxl); } +h2 { font-weight: var(--weight-medium); font-size: var(--type-heading-xl-size); line-height: var(--type-heading-xl-lh); margin: 0 0 var(--space-xl); } +h3 { font-weight: var(--weight-medium); font-size: var(--type-heading-md-size); line-height: var(--type-heading-md-lh); margin: 0 0 var(--space-xs); } +p { margin: 0 0 var(--space-md); max-width: 68ch; } +.note { color: var(--text-secondary); font-size: var(--type-caption-md-size); } +ul.plain { margin: 0; padding-left: 20px; max-width: 68ch; } +ul.plain li { margin-bottom: var(--space-sm); } + +.shot { margin: var(--space-section) 0 0; background: var(--surface-soft); } +.shot figcaption { padding: var(--space-md) 0 0; color: var(--text-secondary); font-size: var(--type-caption-md-size); background: var(--surface-canvas); } + +/* Feature tiles: square, flat, soft-cloud */ +.tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-sm); } +.tile { background: var(--surface-soft); padding: var(--space-xl); } +.tile p { margin: 0; color: var(--text-soft); } + +/* Comparison table */ +.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; } +table { border-collapse: collapse; width: 100%; min-width: 560px; } +th, td { text-align: left; vertical-align: top; padding: var(--space-md) var(--space-lg) var(--space-md) 0; border-bottom: 1px solid var(--border-hairline); } +thead th { font-size: var(--type-caption-md-size); color: var(--text-secondary); } +tbody th { width: 26%; } + +/* FAQ: disclosure rows */ +.faq { border-top: 1px solid var(--border-hairline); max-width: 820px; } +.faq details { border-bottom: 1px solid var(--border-hairline); } +.faq summary { + list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 16px; + padding: var(--space-xl) 0; font-weight: var(--weight-medium); line-height: var(--type-heading-md-lh); +} +.faq summary::-webkit-details-marker { display: none; } +.faq summary svg { flex: none; transition: transform var(--duration-base) var(--ease-standard); } +.faq details[open] summary svg { transform: rotate(180deg); } +.faq .a { padding-bottom: var(--space-xl); } + +/* Link list (related pages) */ +.links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-sm); } +.links a { display: block; background: var(--surface-soft); padding: var(--space-xl); text-decoration: none; } +.links a span { display: block; color: var(--text-secondary); font-size: var(--type-caption-md-size); } + +/* Footer */ +footer { border-top: 1px solid var(--border-hairline); padding: var(--space-section) 0 var(--space-xl); color: var(--text-secondary); } +footer .cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-xl); } +footer .cols div { display: flex; flex-direction: column; gap: var(--space-md); } +footer .cols b { color: var(--text-primary); } +footer .cols a { text-decoration: none; font-weight: var(--weight-medium); font-size: var(--type-caption-md-size); } +footer .legal { border-top: 1px solid var(--border-hairline); margin-top: var(--space-section); padding-top: var(--space-md); font-size: var(--type-caption-sm-size); } + +@media (max-width: 1023px) { + .display { font-size: var(--type-display-size-tablet); } + .tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } + main section { padding: var(--space-section-tablet) 0; } +} +@media (max-width: 599px) { + .wrap { padding: 0 16px; } + .display { font-size: var(--type-display-size-mobile); } + .lede { font-size: 20px; } + h2 { font-size: var(--type-heading-lg-size); } + .tiles, .links, footer .cols { grid-template-columns: 1fr; } + main section { padding: var(--space-section-mobile) 0; } + .top nav .hide-sm { display: none; } + .top .wrap { gap: var(--space-md); } + .top nav { gap: var(--space-md); } +} diff --git a/src/ui/screens/Today.tsx b/src/ui/screens/Today.tsx index 260340b..bacf0d2 100644 --- a/src/ui/screens/Today.tsx +++ b/src/ui/screens/Today.tsx @@ -90,6 +90,10 @@ export function Today() { No instrument +

+ How OpenKeys works ·{' '} + How it compares with other piano apps +

)}
diff --git a/vercel.json b/vercel.json index a29df42..45f7868 100644 --- a/vercel.json +++ b/vercel.json @@ -4,6 +4,14 @@ "installCommand": "npm ci", "buildCommand": "npm run build", "outputDirectory": "dist", + "redirects": [ + { + "source": "/:path*", + "has": [{ "type": "host", "value": "openkeys-learn.vercel.app" }], + "destination": "https://openkeys.live/:path*", + "permanent": true + } + ], "headers": [ { "source": "/sw.js", diff --git a/vite.config.ts b/vite.config.ts index ec3ed08..152e8e4 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -16,7 +16,8 @@ export default defineConfig({ manifest: { name: 'OpenKeys — piano teacher', short_name: 'OpenKeys', - description: 'Open-source piano learning in the browser: play, listen, judge, teach.', + description: 'A free, open-source piano teacher in your browser. It listens through your microphone or MIDI keyboard.', + categories: ['education', 'music'], theme_color: '#111111', background_color: '#ffffff', display: 'standalone', @@ -35,6 +36,8 @@ export default defineConfig({ globIgnores: ['samples/**', 'models/**'], maximumFileSizeToCacheInBytes: 8 * 1024 * 1024, navigateFallback: 'index.html', + // The static info pages (site/pages.mjs) are written after this build; never answer them with the app. + navigateFallbackDenylist: [/^\/(learn-piano-free|alternatives|[a-z-]+-alternative)\/?/], runtimeCaching: [ { urlPattern: ({ url }) => url.pathname.includes('/models/'), From a9992a74b759d7fdb1ff3ae73b5628c7d523d248 Mon Sep 17 00:00:00 2001 From: Paul Joshi Date: Tue, 3 Nov 2026 17:23:12 +0530 Subject: [PATCH 2/2] Search pages: don't repeat the title under a related link Co-Authored-By: Claude Opus 5.5 --- scripts/build-site.mjs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/build-site.mjs b/scripts/build-site.mjs index c5d88d5..5b311b7 100644 --- a/scripts/build-site.mjs +++ b/scripts/build-site.mjs @@ -58,7 +58,10 @@ const tiles = () => `
${FEATURES.map(([h, p]) => ``; + const sub = (p) => p.title.split(' · ')[0]; + return ``; }; function jsonLd(page) {