From fd4ca85d61cc5501df055abe22bf07df7dafde77 Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Fri, 25 Sep 2026 14:53:20 -0500 Subject: [PATCH] Audio Provide alert playback and volume control with a native audio callback that does not depend on the Python GIL. Co-authored-by: Daniel Koepping --- .../assets/sounds_starpilot/disengage.wav | Bin 0 -> 91244 bytes .../assets/sounds_starpilot/engage.wav | Bin 0 -> 100844 bytes .../assets/sounds_starpilot/warning_1.wav | Bin 0 -> 62444 bytes .../assets/sounds_starpilot/warning_2.wav | Bin 0 -> 72044 bytes .../assets/sounds_starpilot/warning_3.wav | Bin 0 -> 76844 bytes openpilot/starpilot/audio/__init__.py | 1 + openpilot/starpilot/audio/alert_volume.py | 71 +++++ .../starpilot/audio/availability_warning.py | 21 ++ openpilot/starpilot/audio/axis_alerts.py | 66 ++++ openpilot/starpilot/audio/catalog.json | 33 ++ .../starpilot/audio/default_enrollment.py | 79 +++++ openpilot/starpilot/audio/downloads.py | 285 +++++++++++++++++ openpilot/starpilot/audio/native/SConscript | 6 + .../starpilot/audio/native/audio_mixer.c | 115 +++++++ openpilot/starpilot/audio/sound_pack.py | 290 ++++++++++++++++++ .../starpilot/audio/tests/test_axis_alerts.py | 226 ++++++++++++++ .../audio/tests/test_complete_alert_assets.py | 46 +++ .../audio/tests/test_default_enrollment.py | 188 ++++++++++++ .../starpilot/audio/tests/test_downloads.py | 214 +++++++++++++ .../audio/tests/test_soundd_loop_dismissal.py | 86 ++++++ .../audio/tests/test_soundd_output.py | 108 +++++++ .../audio/tests/test_stream_diagnostics.py | 32 ++ 22 files changed, 1867 insertions(+) create mode 100644 openpilot/selfdrive/assets/sounds_starpilot/disengage.wav create mode 100644 openpilot/selfdrive/assets/sounds_starpilot/engage.wav create mode 100644 openpilot/selfdrive/assets/sounds_starpilot/warning_1.wav create mode 100644 openpilot/selfdrive/assets/sounds_starpilot/warning_2.wav create mode 100644 openpilot/selfdrive/assets/sounds_starpilot/warning_3.wav create mode 100644 openpilot/starpilot/audio/__init__.py create mode 100644 openpilot/starpilot/audio/alert_volume.py create mode 100644 openpilot/starpilot/audio/availability_warning.py create mode 100644 openpilot/starpilot/audio/axis_alerts.py create mode 100644 openpilot/starpilot/audio/catalog.json create mode 100644 openpilot/starpilot/audio/default_enrollment.py create mode 100644 openpilot/starpilot/audio/downloads.py create mode 100644 openpilot/starpilot/audio/native/SConscript create mode 100644 openpilot/starpilot/audio/native/audio_mixer.c create mode 100644 openpilot/starpilot/audio/sound_pack.py create mode 100644 openpilot/starpilot/audio/tests/test_axis_alerts.py create mode 100644 openpilot/starpilot/audio/tests/test_complete_alert_assets.py create mode 100644 openpilot/starpilot/audio/tests/test_default_enrollment.py create mode 100644 openpilot/starpilot/audio/tests/test_downloads.py create mode 100644 openpilot/starpilot/audio/tests/test_soundd_loop_dismissal.py create mode 100644 openpilot/starpilot/audio/tests/test_soundd_output.py create mode 100644 openpilot/starpilot/audio/tests/test_stream_diagnostics.py diff --git a/openpilot/selfdrive/assets/sounds_starpilot/disengage.wav b/openpilot/selfdrive/assets/sounds_starpilot/disengage.wav new file mode 100644 index 0000000000000000000000000000000000000000..d2729101c99dada1194a766a92c27c4042037931 GIT binary patch literal 91244 zcmXVYWpErx)AYdN%q(kn#mr!~%y{NAGcz;Onc+-lIy1wWnVFeU%(%kU;xO#n@qAxQ zD8fG!(dzE1tjw%x_wU}N%fyK=G^E4e&XZ>?4A(;t1cPtQWAKk9FoZyQXyUkq4*ZUh4%U4q^@Eg@q+kV>?)dsMI6bn^gB9~S9kZBjNL6{)dlc>+&O}GL{c3Gt&BB`AHSKFs zYsS>@H3s{Jy5>$lH|(t=^XN3Tif<&HhIHsq`2=OC`WS{0i#7S$X8I|HKE_-lY$`Th zH7+qm8Fv{j>1XSlngPTeEJVFunXGs$3qwc2TYTTeKLrnWon6KZr0Y?%_qFFg_XStE zv%j;zvCtuRoT{5#H>2)F-FQbwXFt~p_a{#e5~baYi61HM^__wbqN~B$9n~0qnb2#S z=m`B@eZJnU|EXW7|D~(Ze$Xr;IBcpqP1!~9Ox6m03U`Kbr0wD&VF&+-3*lC=mCP{a z3*DSPL&Z>!$N{9sd&)b}+uobvjq*l%6TRKM+q_=y5poN4ht{)eIX6E~H2EGv4UrY- z6Pdqazp_}hNBvgKsOMm{7>+-|I$>YcP1Jo<4VC_iB>61af9N4(8axcT;A`c(EER|` z;&e5M?0bG zkc03(=$cQI#z=3(VPbpmGezt!GQu_?Lb%7b<6m)Yz#W9K$C*DEEn}xM=~wh4`a7*+ z<})Fzic99V3l`~wPX`Y`_MkRdYq0A)l?p@gulP*jE5Q;Z@t7D*e8&}dFjf!jeYWy% z#Z`HxOeRZ3$AI-Kpw`eXU#1i(tr0&9c3#Q*aYnWa^B-MG`B9U|YVR)ZXzvj3DsQEC z9_dHbQU$bv-OAM$Zi|F(CR7OzMc>K>C{Wb{bw_+3aTi4Q7+s|PhQ3VyRli4HU%yhf zLfc;xPk6CC>QL2r1tuSfX2J`hK;LU|jWC;^#`R$186E8+v%O^=qo;@akSoHK=G^5R z>Ky4j?c|)3U9h_d#CC7;9W|3l<^;Y}%=SG6c{N8qP?@MM#%2)jG_~3vy2W~%KG2{y zWa#JU({yTGfR-li;B!E1-%++w+?O>(Z^0d*I_a@^MA*!4=Z>*z@cE7fd_Ln9}Gn)7lXVlwOG0GS6{<11$H{2R>NuR`bLMb1{FXL+1q3m78 zz|5o5sgBe;at_&$M94hvQ}2J?gWxCK+l+ib4yM9sGn34Y=U(!i#3E@s6o^bi_sD+8 zTPx409;qi_Mc63(9{vH}g{R;jv0>O1^$pc-w?T-~=WAO)gEnb6P#G}9&pHY8M+BDY6pY1J?HU z&60A&iDH=O5dITd2~YVZ`~}X)&0^m$iOgZzOy8nrQ!S|oDwgU-ZKA5FHFPhg8@r6l zGE%~ z&**F9Bm4vU?Xyb;DN$@E4ChyJ+t>}vD*6;fk{!q$Uf6rmGtN`r6X<& zk5fYeC`X<3~Xr63^LZe!zF2PcW9-4UVU9Cyi7kr_*7ut^6bD9jI6#s-B zP)`7;!ppD9dZRdEgWmYgNQcC0LN+hw8*`)CHOwjc2c@HilDE9^-rJs@9@hQbeaZdS zZSoxUjP!OPdr-^iOr{T4!ygd`_yXWGWR0wz;+wLM`UX~oJ3wAF*RIrV&<@c`nuVHI zL=|3x{ZJoMO;jc+%4J8;p-3F8gjh)qb~{~o!AJA^IW@PGEn|8z*J&L+gL*^8ljpsi z!M>|Kj3>&w$m{m*B->GHTE;YE4|8T=qv(>BLBYsFG*P}taa&oYs#D*_+Tv$$FP=!G z5XJaF{04?$UDQ2QDN3s%L>?*gLlMLX4~8E40({e?r($z4U6>?%<>UE7Tm;B3h#k-T zq`T6us6VL+au+!gAo&dPFj-8_qFT`jOe1zMcY>#d!BU!UBwU0Hm%Ws0m9Z+Fx?Ft# z3&L08&+t6_Grk>9#*bimYDjHSMJrH&p_gCjEV7 z=WlW*ZXWv?)QH*i3(7#vCNsQ$dW${BJVu1+be~Pq zO6|qXf{pLVKjebAm7rdB0a1p~qp7E4J@O&gugS}MBu~6|g_rf7CRb2@(+?O8w~~j% zost#W3tQ2{GF&l2xmk5oy%!sgbNC2iA904*Otc^_<22SB8?GLv>ZNR_Xenb|bQk(PHHh+&Z^>)q8&Ux>o29PM>zTjV z2OJ~}5#LBHq5E(P^rkFQu}S$$MX5d5JA4B1n+Vi2(u8Tsh*g9QkHkA;ebt>+smdS) zB(FuYkZk;~N14BiX_1ea6BpqI0O;)HiY*X(H|3DlbBIByWV-%7Lh+A$uq+DY;XHsNc@il`hy#Vgd?nY6`*wtRel~cEy;DJrE~jj?ksZaoa%Kqgfo@D6p|sRm zlJ{=)*7wq$3J_z>y@$OGNjF(cNpws05N8yQip_jKp{WQY`&-T{2CFu!4`OTZjzkX8 zQZrYxQZrP8YyKgMa6dd2i&X1W9>s6@HQ8Qt6S4_D0NwXhNy*Yu@x2fttmF&0*4znz zBx9M6VD$@B1L`F?jci87kj=?OWF9$#N}&CjD0TpMfj5Zzr5NZA+ztII>#KOGRH|EJ z-S7mWgqWduqw#2*Ag@Mgeh>jfXS@&AOtV$RbI=Ow7}eo+Hxf&R+8W6QWGVWsGl=0hyJ66Iub z6rYt^byI*OYT_QzLbF|SUb7eM*-i`~cH!5t8|nk91^M%?1FFU%&IV%p9n+k-M2FD(r~v9R*_+gnPJr6}E4~qbgulX1;ob3fSP0f%Jxw)PIb6{}9xhX% zF1Q4$0<0unngGxf6Q=RMxDMP+HjzEXsF}a$8fqk!K@KHr0UH_zn0{~XQtxMPchW(= z1Qj}yv2gSGY)~_DeWTzqWc2@PMoU#UbrM#L&BuS?3PMLzg6Ov53$RP-&#Ldrr;3Y! zbg29>gdaO3}1>XodM8P8E5fa}+Z6MQykHsV6($%_@Ks`=ogr{fKY_e5jOJk2W2aE)B^H<6F)K~{yU z3BZQl$WO`Ep)-+L@Ji@}FHH&r>wXnl2M2^-ou<^KX4{th3J(QLjt@O^?~Squas0)OpSlTXAlKMh$cm2)Vv|O5Et=s zj8nsER+*!CAm1-ricUgC!c(CQzPl0!l+7i9n=f?h&Ge&QhZgGs(!0aV6E^QIE53009a@j z{1!&3Bh(F4@yZYdDz8K{kk{}lz&>lG7*L@f3Bkf@-ocIIez2X{+e|pKo#v>yR0%nS zRFb#7tG#o8!ny6$gS~gALg{ek4|WSz%MTONq@hqI&^RAtVTv)zrK;)b=2$k?3o!1B z_83BLfs)pkXF(Ks+A0&_*Jq!MN%1bJ|pLP^H+s%>6kA9zJNr?cFP@#6jfh!Z!8S| zgm)wM6Ay@s#7qJqX5n|R9JNiAul%UEDc=qF&@`ZD7eIS`?fDdUk5Xl$)@{)S~;4c$us0!vOidR9r=^&2TuDX{fPO+>Uh9c#jd_DP(S1| zUWBb#}n(pj?V$~^dq(a2B^bg)Um1%rBYEVOG95G58xM2j!*7uFYOeo zgxPOt@>L%5evZ2;&Q;kS`!B18QvZ+-yF55!c}UZF{)*GXd03OJ0T0y)3;M9 z5j%-Dgc#u@AHpBytlWOE_7+CTY@;poO=<)cOmU=0hEo#&mMo^5F)?f^H<7<2;L<9e z7g~VS0GH^ILQ+Pn8)6px2R@E?O>hLP$sslo7%?5ch<#H3RJ~SSRqU6qkWE3yB9j4@ zocEQ23cXG&7y1CT(E>zx9CwH{u^SnlUQYX{{ZuQ81+_VY^pb6;t02NujEj-jB!0f| zQ|#z_2DJe?qn>=HB14I)jTnnP#QPBU2@fFwMA=LD6N~YOSfRRBRiVsQJeOaP9R+Ov zIQ#^%`J#ODrO#r0@vvY3eBZ~d;JoZ~wg~t|S)gjU!PfotpmaLUxqw=Qex%wP72^a7wfcM@65#EM)3zWu8>>u?Z)qdcW%#jb3 z^+dZP1K_#PG2oMgOMi*QLNDPJ-;%$@C2^3YRM<$dGan<190R$ zwE$GfHbCKQ;d6vG(nVi5ydQyOW965@uFF;5)c;_yph~6TrTBY%HPEp0vHR*`m0M|7 z6af|c2tAJ+gD*nweXjqpp&uZ&PxBW3Uk(HQ7z;e0N_q^y?SWJgxrS^)LI6!*vJtt1 zG*HihV{wFez|veV;f|Q-I}e2+J5jf+9bkbg0g5%meq&wnEucPc138t2b-}i)@2lPd z)_YriM79>4jZA{4Kudhbqzq6e7YN_^HvCl(*~eJ}yA?$CY>>_4sbWwimE=?JX75~} zGA?@MVC__(C>2aNJCeJ_`-{6I9kdNb&>6rnaVk_QNc}}U539pk;v@0CxEUZ=BDM~! z{7YG+$ddn*eL|lgZ-8>I@df#YOIJjVxLj}oAFh_0$ASUoQk5|w2k4}WPX)UB=+*Xfm$FJQ9?dUv0Hf_FyC>Q5?_UX0ggo;(6p`b zYnV@6Pu)$`SJ_RGDvy#`P(2a=H-bj`4oHPS$sQ3D!V=!jP38&!7yHPx0!liDK2J5I zK7uv7kSSzKP(PlLt*8R(I(>$D#Jae4!YSZFZiAG_TC^JYaf_Azs)~9m(QU{+_%iehD4f1P$*RDKSMX!_-`t6S3&l_4 zA|3^lB>6u^v=F@(546X#I=nUph z<}KZWPNQa0K~yQwb+5@vvN3gzYES#<3dY3-@DqgRVzTcvWI=YI3}D^=DsQRosQ<+} z<3I5R#28{6$f_EA9-e{uW9`%fRKt~n6y1QLYz6Xa9J~p*B}(5&={?|}7XbS`$p`-r z$9A(gyP3h5{eX36Q^%>ls3p`9s)*`CSJGzzdhX*M10_2GIP7iUdq|S(U%4IB$=>QA zSQES)pHKWG=&j7@GU0M8u|e1G1LAua^Mf8tR{<8-jS8hqR01^_Ajv=)V~PNZ`M4&4?UzbDp(k(x zx$Z}oka zLI8>t0pxxSQ0y*1vD2&toHfKO1*~Wr@Y{39>mbIik~Xpv^@UnW_hx#s6S)I?mC#eV z?~8}`Av`)jz8C1Lx2kLE*%%CN_Zt2Jzl2Z58Eg`E8=x4YM3kc3BdbJ9k!qNQtWY=K zW+_u_A|4ZTfCaMLBF@21U<;W+z~}D;oSN}KOWy+-Jr^*O`vAlCgBUY0DmIK8%%2cM zah9(Du)uq$K|WZqR=G>H7%-D>SZk0^dx1~X3jdC^!*;4)0++o`Q7tc#<)Yb03G9VT zP*Z?UK76W+3+o(pwj91}bSCSI&WJ}XPrA?lIJ){0e%3e_D=f$4Za%Me{?!{9ys zC4Q{&n`yMg8c-0Z3v&4H@-yoy)W76G=q$J`@O}zKrI63Ip({PGQ>-~v8DaaQ3@IH_ z(x_y3NpML<(aC~}+=T3(8C}wuw5}Olvp?pCl{Tt;TKm9RIt!f&GWVBmrfci5oF(3qp~%aS7+bZh*f zY42u}n@wrDpy9#ft8x0M9idTy4J=+`tlnQ^R&SMwzT^B#dL#Jz7T8bE6*O6JXMZ%$E8bk54`hS}S*%X4n!e<*obmF5hh zQ^oISOKgO$k?D)&QJ^biOW6A`RoK*!s=xsMW#%Ww-?}!Mo_HViWyK+M7PLyd$%QjB zs9cgI^;A>JO(}qz>|*7D%GVJYFW;{+5QOfQKE*J=P+_2qw@lMazl}LY!W3crTNg#N zQ+HB6mN%5uA%%!eRxSHWmVn-d!=b0*pWJH7>RI4iR%fs$*6y!~sCij^pt?o%+A2?F z*Q$c*q4rp32hR-(;*JS(BosJJ%h9p&Wy(L*-LZ*)L#DeyvLnOYUfuLl%)v*UBt^5CCx3E@OX=|w!^rus{Lun zw7KYHQSV~7RA*~geWR|v=Q|xBbn}gYpCeb%Xjyw%32Hqz8-KTBs{_ul^x@YeHFJPzCps3go1?k3E>GV;tod_gg*|R z>W}&fx-4Qi7OB!I%F(VcDbnmIa++(R{ZiEfo1@HB_IGJXiM6C%aa_@i0w#A+Hi+|# zfQ+(?J6Wr9#ey>>23tZ^i`s*Zxto>z;7aMFpy0i15ZizWpd~Vt{NxP+PKcA9!)*|&pcGk@vRr+Y_)BLt zj`HhjxndpSAK@=q+M4^D4j2aMFX(3I=IV~>&g+tOUo>ZNgSwyM0lFG~=thwZnm+V<2oz^1hQY1>@!xhlVQg>!^Aky*;~ z;u{|V+u=iqfcTID$UArkR46?ZmT?=I5PCS!nPJo{fTKN`R_su&l2=GI&=+p=v)gZr4{w4JFLR=u&ZwQXu?+ah_sCTCCP^Yn*l+tQ%)cj+fGCS-D%W3$d= zDYFxEw&wX4T`7yJZta{-brd$hcKI&#YvP!$mGOYz49hI*Wa}1-$M2%CLWgViVaHWJ zK>vFyszWwIq_j=kDufBsgt?;3=YpIFDQlrTt~L`Fw6hE?{Z3m3`a=P?{5M%2o6nh^ z8;0pu>5_EeIz+csyFl{|f32RTRLDJ`7xfLg4!wjPLF1tnzH;#dpT)c<@3{S(c-_w0 zH2_EAt7laWsr+G+%0f!F7XMfDpvYF7TsF9ZsL81t;$A?uXVSQa;y_S=Duo!41t?T2B9lApXo@g z^&~iF)Q+tjUiP@?PX4;w205#;gR^V0Ze(@OI*|Ea#Sg)>i@N1K$L84xAV8*uS-Zt@Wr?Z;iFw@jGZN z)TI-->H*4`@{Y2{=vlM?b)b9DdB|?4xwMC8nSInAZ>T5AJ=^un`O?w1Ze(p$Rd_{* zvJ=G@3-1nDCt}a88d5Q@ z+^;OKG_@q4_O?9`Vrn2SyW8fq+zD-aL%ep%#ENpmW-xyW=;>1PC1u2W`S?XO)Zkkvb z8xhqj>~_#5|L^AcrWC_#t&(`4DwbV_h6u6D3~v|Lv%1f<&1&9PMOU`4)s=QEo>*`o zHzs=|K<(I!uNiRGitO0jZ+TM+9EBH)sZv=5UH#AzMmo4V5TSU4oz(s?O!M1rY3;u} zpm|{5z&in>{r|N5XS%6>sX_4dst$@CvaN^*WPO|@7rP2U!Xe?lINf&u4wI!Tj;cox zQ98+x@3+%h9I!WNPVlhc=|MjN-dSIpF~1kaGD9!J6FsB*t*xig zCG^9$(05%LAok&}Gfx4Q{BR7jkF8;7Hw^f|8%`Jz^)|NyRw=c35xr?$&_LP6E z>{9#0QSQD%Di}Ri&EFIU`yN4OVH&;%7eVWMHDYg}n#*LZ>}h5U(+4=hr{VInkpdwc&Xo=YwJcnpvJ2 zuW4Ii+vFbTnGnu4r7FSvP(SCkx}~+QD#~`Iv>8C{9yw82w=?YN=hGjj*QF~mYSSO4 zpGwb9znC#7OP+h9piybt%C+`K?i+L;;Ue^0c1yLA(CgcoKA2}&1N{rFS(b+8L=$9q zs$E0$#?-3I^7d#BbW!>w^aGO}e%vUoK0j8d5bycY;r=o|r4g&IX{UD@jppT+P;08S z(z3x4Ybi6|G%qr9eu&>pV<-I^O%#4hbyN`{Z!dG8m1r8e4E+!31o!nhgsGg9{zis) zf4j3?sLS8!s2gnWS>vc&V{2QsvSeBD;9_&hzokdZ3o2r(d)H2^Tjspvjv@=_Puy#9 zK6DuH$!oHcGPA5cnvD3vRw%@mBy|)A3+q9b=@6I8?dA)G8xjKFLa!-m)zdZ24Xw;; z1Ac^15w~K##D^svO74;}JEcuZW^$Y4p-HO5u=pi0M5H@pc)(e|a6LinR$Y~MM^j*} z@48UQUZu>Q5suq6<0^NR4=lY=ytHU_;XehF^W}L9bDn24%9LkpPWPnu%-oXwS6+4D z_R`iBdDV040^AVQiK~!4px0HMG^vLEeoHOatXBU_Ypm7Za@_BS@e)ApDfn#FRQX0w zft+GbA)Fu2!JLd6&T09E!Y`5cZ9;~~lT|;laE(g0PoH6+jl9Y3chhXNl$ufVTGM1h zxppLB!rB8@ahL*E6wCL>Z2-O1h{Jb7T*hx z_pOuy#nXH$hq0+lI$cArV8*j2xg-IVT0=jOQu$oZogw7h45N9 z2PRZJP&~Rr&M5m}rwE(2zG0SW13>P>{!IcnP$k=18v6Mg6ZL1c$2C>NMBxAE@lWay zRe-{VzJV)zYoyI0D&7~Sf?kx9Tg1+zC2xQCMMp<_=bCp_uPTj|dn$q|Hrig5SCl1{ zy)LCo(eiTJuBug0T?!Ge^BcG`EWtiu z&N3gFcs7R>xHCe&bOg?l%~iD{BK1nYGV9BrBVj|Me#CxD2uz-nax2A=+$t$AJ|T8& z)a~$;&^JLn1OBzlFn!a##b+uNXo(cbQ}lSUm1m;skmG`VM$OC0x8)Z~_7uL&Tb+}W zm616&b4BL2%!XO(vc6;mXYbEmpA(h0x4>Q;WGkq4In1PvyCacEsbUl6(wGcCO`>^` zHQrz4-`M)mOqyy8uXTGh{c%kFQL$Mz6fg-&s`aX6t9hZ{2GbW~ym6^vojzFCTN8mlRn1TgmEA*5gWlU`=q|Jb zILHNHas2!&clw=br0=#YZup)R^gQvTeGsKB_+j~#g|Gtl`XMps$SO2 zsuP{FJU_@(<`NepuJmn#b*LS!C;NfIXa(rsuJHAinuvjdj<<4c*^A69<~p;I{mI=E z)V>?=DcKKYJKU|c8~v^0f_8-sidq%>GrnzNUgD?34v7mA7Q}ap%Zp*7)v~Y64-u%ybnYmAaV(*qbK2QjmROOQf7Mm51WnZkXmX7Ny!K4@A}QBwtf$nV2Xx7WayMq!~T{MaVRHjLHwEHQV$@j21tG`G#3< z8DZIPd2G32>0%jX&NJm3wgKjT1ACxq3%c6xZ*9wQ${#UiT;$3-USwQKx62H>drMJpnmFL>nia&soFRfkRSmJ(4;;dP? zBprk@;J=Uy$Pz?^yMWr;6nHN)gj#M3m#)dPUI%>!4j} zd}4VQI4AT#M3d;jv8wo42}=`+q`;&(iLUs4vGbx{ggp;>V5Lll_2)Eld_Ty@vFI>J z5Jmz$sday@V{87adSB7fmRUBb^j)!|FgO23?xF00%u^X586z?VW|n1@<%H)iD9kGE zU4~TP)feo!uAS6b{u}gM-UcY}Si`@juI71`AZs)07fZUiyI)6RhOV(@8>Un}ls`a~ z$UbP4Zz7oR_(SY1=7|_^tXX7*JVbR9^V4+F^))mz`TYK~K>m#X=m1TC!hfu#o1ekx z)+K5`5x>Cf#&OVvGpfHT>nZxnCL((w!dD76A zM8E+%0bY{FhJ&f9YfLWFnXP4uxKu$UO@(@(7Zu~MKeX{im-%==RLF+#dr{{Ba+{MH zCl5?sn)D)}SKPel`4KBauLQ{gW?5dCe(N`Ds?~^sffdqtE|i|&jdUkEXVx95JyAWT z@=Lj?N1Mk+R{l=xXqC;dxfjo)s|I_nK4%CH~M2w1Q7~dgrR?_370Z9`QgA&ff$zxNa z>qWi@`yD(rV7Gaep{XWWy-c2p%=DQ>lFMKYQ&w+#SA#mZ##Ui0KM1hIzYr;CkiRl7 zD>pWGLe9DDMBq#v$gaqd@`?(Fm3FI`Q*+jl=AnVB(*~L@+pao5w9@xBT{kxY&Qg)J zhqa@n(yxnYv0;+Vq&W^);5@kkwL^V;DbhZ1g_tSsmiGFb&~fCVOsl-3-b@VEl^O)o zCi6~<+1l0G6P&ln`p)u)WxUzXZ@96ep3&ULuc|RsmO`UAA@3mnA&Ui*hUefqpG*o6 z`T&Ep<6WQ*5=; zDLVnQyUzDTED_p)u2CkREYyH5exXl>ER7y+=L0=svZZXh6@!f6_dfVGK~y`clut6@xl-8Etnb@4|JcKN(b*Arn(zCzuV{3 zbgx=cVX(!Q|5MhYOjG74Eh;T3jV*gyMwWl5XkDFRpX_|($)f&Y-|<_;T zF`Z4{0F%Ambvx_Ll9|R{m}Mk6D*nwC3%mAY-oni!NX5(%6X8cnCIJ zwMubarbe&BH^7URbv`SYNqQ+B6bL?+#pxXHYj>`*sUzS1u=aM%)#?LPqbscyCFQwg z-OK(ggUV;w7FF`qPwhLLJv^Dfn_2*B-#7_}#=+f?+sHpiA?WF?_L-$;!hZf7c)u`; zm9x1_4M1*$YXbT>(Y{>RBO9u62j3>04u#JlM$aLQ-!O32r*O3D}taC!$!I}$|kILDS)kU)k-sWx2 zJ(c6mo|K)F)jKOIb8qIA%bOc>sWVNdOW|%w+fx0G~?5?4GcX^ zr~DGkUcWd$hjF^$vhIWC3w~eyuX3Ec1)2&k0XwNDz7?{BN#aoHq^~6$fp(GKP`1ai ziIKW}hT*2eet(+(HcvOJ%t!sg{r)j!8|{XxfB~jz!f{kBR}PhHWwBtoFci54Yv3fv zElm^8^S@XFvzQ7Y9iB?J!14fy4M#K?)U0F6s@9fvJKDGI5Yi#J{qnYk)@X~aO)DB`lOM+FBZdY2 zHXqV|!IvtJp;17+w`CWR<6W?QaOJ|%^#vu_57O~pKfZCF7k>9>&I)~sgv3rglz$ZA#2WuErb3?_wp z!q*okOOt&O&_?J2^aIkvQ{d-tedHlB7>$ydWXUp|7Haj%k5|!k^;2^o_}Zl278Pay{P+nU6Yz^7536oMZfb;=2~-Nv(IJi%u3Jd zlP$}kb0*}iD(F?5UWQcNv;TC*GL6N2c$DHg_FcQ(Xtm4^SP*OsYZ6f$=@*?5-702P z%=egx*fz0v?75h3G5OI=qt}2IJs#CF>Pl4eXgEe28xfZnADmE>FgtN?Vw=SN3BTh$ z#59iz0zHrs0V$TArfYiOToUE#ML?ByLpJ)(2*21?bcOeeyUeL~G_wcP+^W>snwR!3 znv}mZ=X2(`^wz%z{#@}r>ubc95ua9lxb?2*+p%x_-kf+7`fkOCNuO_ioBwND#A(#jj0Rktk0Zm~eA#(M-{_Aa-C2RAq7v8VaR|9k_w? z5N}t&c?Q?Kt6Xn8Th_R=Y01grb;Vi5+e`MAek^NX`&_ZQs$R|E+B^1fbvx^t*Il!x z0PLMt+p~5^?b6!YwZ7U(_7eN1x@``|S>oGAuFTape5yQL($@l}U$E zdN!zNG`Q)oX2s2mS|qf5*kW&UTWVU9zZzB6r;<-3q{VEFC=8~p4x>vGp#EFd6p9vx zF&Dg|GszxWLmOTCG&llf_FZ(|Bd++}?{ngD4n2Z~-BGqrDOu16gS}|LpQtDLG)YaG`qFj@xYoIUJk1{+mgc!FQ1>+dg zQb;eZZ5_&uWvxr^m#iweTGFkwZ`qsj%N0oVjoLeobaxJU zg^2-E^)laI&;fW5au!*O`~cI3zoZYs-&`saObzy`JgM#~7wxjR>$?Npd9L*?!gbd9 zr_A8iTM z&Fd(4JabxXi#|{}HNT95tSf@rh8>Dr8B-RQme4t=b@GGc%;Y19OPb3tvBy??12meyP zYla(I8{S`Ct=K2)gk<~v5Vvsm=t^&Qcd6sOovdkDeXuguR#En~WIA9{%G~&@iRr(8 zZTYeG+nXI3$^_O15qi8o*09DEz|e&)xaUp{<4@Ox9{;@pviai!(9b=Atc zk*?|9PORsY^W z`5^Fw zgVF*Q2c`vN_>Z>^G^ZOmT`loj{YFuSwt&;6N5W6e!p@*`$yweGp3Uyj?ozkTTR_%l zO1SspV`vZBMsY#)5!*}1v;m-3dsU~?z1Il%Lv^BZoNP9{5ODhO%ph`@d$Yq?yRZ7c zO1z@Hyj{7hJhA*}`B2+{imjDs^}(8s_V0BXXN|L$tAXpLGt-e*64axVRm<@g*h=^O|xg8D*leXvg_QNnwEJ_oUb=~d(;Pl)Sj z-Ll$E)xJtY<(rDeVB(>y+EqKkLAY6O1LiQF>?=bKDH>p_G_&;%qtg7$66Zf6V0>T? zFiLPKI67o@$f=N5Aza9S&|jfD!x`s)O$tLYnZK)Zl zaO&wMFB>gyP?{npeuztr?i&sTkFzc}4%c*7jYQ8$e{!9ub?(BtZZ)SXGE2EaG*6q= zD(%3JUS9`)y7GR^+s?1szZ~{_)zf>AV;|)|hF6;$U#d%x_*Nyk_tPm)5_4R=ms6Kc>n+Pd=JH*d?0eg=gOFG<3 zo&I${Yu;9&m1k|&%VWz`<$sn}mH)PdRKBYEP?K6`cjkL?sE6z{;fwSWnuXjz_sT-# z-Q}=+kgPd+7R-+<5F7G1m@G;oE4@>^O}rh!3y5Lfo?eUhm8Xa2gS(6SjjOxsnzPvP zqi&}CS>u+70L@w6g(;DS=bG9_ZpO@mY=TJRjsK@b%VD#{6biv{F``X zxMWER>K;}T84+6&AD)zv>`2*G??Syk^{%C)CBI2JkvJ(KIQ~oQyqJV&MU*abK!h{A zI6O3BPeg3wi^%#>i=(zj&5KHmx)-s3aXj}(QVOZHxT%caqRx4HX}qmezZW?WTJ<)8{hMRLWJip7=7 zfO}!D>1}^p7vdb^>gVR&9X(;5WA4|k_s(nw;aFUkQWsp;vTki%Ufn1M>MU@Qt^pp# zYXiPg2%jjHNgbd-cn;hZylQ&rTQ9|lclmg33-gT6wtT~$R^9jeZ$ zxn$3EOmZiZ$;=@B1eh7vCAX*-6PI->j1_(k%TE8Y05PyK=tgjlkQX6=p+iEKg&qlg z6RHeb5!NKUW5j{T`qAE)ia1AtGC8GQuLi>##WeZ1>5A0vsY_GWHLY&^x?%JBBa>SK zPSQGZP-s}-5%X7lF!eSQ-uHfM zeQkZ&=K02_nwmtMbD1Y$R!?%wfJQ@6a!7J!p&swbRy=17Yw7YB&;6R4|{?Q$CHU9O;7D2 z-5&iWLw(~R<3)fQvBnpM(FVEUoBpJJzP^_}T94~Z;QwjJ(|jJlJD7HQlM<2`ha$`Da5~jaAf%Qr~|Pr5@sev zrHrm;sXwHCMEz~`&Zle#JyLz**ZA#mb7N=5Y>TdpS`{@v>PA#p^!4bWF*Pv*Vz&Zs3moT+lhxHE^F7-gm8gs3WHBc5`B*XZ^z3q3YtQ zs!G?&f{MKr4=W~B?yX9!`MYj@6(N#|!SJ+MH;UF29a8#@*Mk(f_0(jGFB+zUMWy#{=4u$?(%|Ihwf z{}=uvoS%N<*-w42-WOSuJhMG^x%atEb}MBDGWRk{T}SCz^xHHObpy4F5<;0wCWC3o zRa`da6;cZGblw3m+v}{IKwrT#`~>^`1n|8KY4dfd`Y(oWrbw&K-U<2Syb(T#G@{>N zA$T!<4d^u(@LJq4>;-f<@-pllwA4{%>jGV)S-Lv)R%Jfu_G3Vmuv#1~-XW$*j1sW7 z$iB*%$}OrA^&ib8Ef$<4C0e^?RIODBlqSV&1yrGx2P*zmBq%k?E>)Y_sF|ee(4RHV zHTzjRY!gQpI7pBT2n@2+F?-Yt>?9$UYbK2$Lcd76OMOClPtKFB7?~t#6px6DB^;@@ z{JL_XW~u(T>8BO%_#gBQOohZ?HTZL+Hp(B`0@wEp9<$5sjr$G{PtOmY39Nf8q}L`d zk=H%%eLe-g7{8aC3jt?>o`p1o=^|XB2V-`|6~yNzj8FJ4K0oe%F|tTpxFq;=fPo$7 zo#FvyT%ySE!RXnr^AL^ojB%y*sIpf&PFyLNH29uN>)GBRYT4bGSvR%%c}4!8^xunq z7JUyYt@--uOU>u`pErJHf7$bOXQ}tkyfR&ds>ZMJYHLWBpzqb-DdBu6Np(^8#dOqG z?|2LKg+(Id$m!?}m<&MHKmw;-Ep`^R29tz&g-!*ow=R?nm5Kg?K7iSYy@qSW(}_8t zCJ~b}C`lA0c@4RW1YO*dC0xqw;&w#~=5LZhp+2t|w?yDb++eJ_?hLTn_sJ-3Zw?>SEVfvw>>iy`{q9u&lId zt#57r*q4m@I-WTAj$#Map#h4*7nVZPK0~Gssi{}KlE0F+OOnJ&p$W`?GKY^0hYC|g zCF1iVzh#k1mAX&YVEks;YHxQm16TS5mt@#!u$P3ujst(fcxW+1KB@zKa;kZ|(cQq& z-_$M8EddmP6TthNs%z0EY7c3O)V(SbAmR`dTG@MP#>hkQfRH%6kl#D_W?-bhsNdXQ zKj1aQ*N*(?fho^K$cK-S;W>n;CE?Xm^Mz6c+wD93G(w zzZwUDpRhtyavWSsP@owRNg36)( zfp5G`eY)<&ovm$iTkuW9h6Qylwd!iW>ep4vtJYRES6#2}skv3hYq;I~s?FZHuD6lL z9Eu)hi-$(G%7>K^nnWGPFl1a~?y|VsrrHmVK5>X3q0pnwVwd@F9pWkK2+>S8I8DWg~uF0-n z=}}-G(Nd>Uizq0{4DwOZF=9I5Ij#(I6op1?cBybmbhO#ZEl~4C;~K*i;HEsM+Xh@Y zdHO{LiBV- zR);-ZA!xayejD0X;#aB9E-_GPc*?pdyU@*MnK)PPGAY-$K6~{IYrJAb^ zyq5gVw%)Y^_~H8!AH@mHbHj0q%}#du?hJ#=5PMM{(1n;;*k4!&)*080eTH3)jR3wk zA~p~>W-74hxL(`?{6WHA;$hNp@@7f^6)1nGh159eH3}an91fH8#NEU|BA@VyP)ztr za3-E3E+d^IL#VH5yIny~#4Xt)#PhRfx91s8k%z{;!fhq9(UnFIqe97V2;sP+=vG7; ztQq?ieiu41iLwmzZ6gVJ}@g zTqZdu06xkR$4&ctYr9!%9Bbg~`m_n!UQLyzOC!^mG(DQj8V}7@b)l*pyiXPKJF*2* zt7NOVLP#54&MzBW1$2yDUK?+5|JDKI5K*vSI8m}eCRF~`s*L+>W1Yg_9E_E4ncBp7 z>EY(>!G6tY4EQIA7yKh6FLZNgUZ^M}E97kO=O9raE-*9TZ+`)27bk`j$eG0{;spD@ z^A8Ky6L35rJK&{%8Rw>7IM8G~@Y?2ScFSeVqOr);_^p^=Bn1`){m0>N7g?%JuML0e z7HK#tx%`9lrsT5d#c&57Hv`9i+1}W)r75RjNnK6N`RbQd>?%p6t#W>q zrE0W#d2LkvhDJyWuT9a3?`88s2S@pDg<~a!Qj44dcwP$ab-j=AZ&R1q$GRF2mxzx2 z5CZg_^Lp51#0=CG3>1HhIE_N4*E9Zdukh^hy6r<}XZ!haiaBadH)lELl;3Q&*eBil z0IShsy!$9q&OkBdx_+a_(x1`@w5`-C3Z1fw{FbC7Vu>(7AM?kKL(`E(Ft+nSh{^uU z`UreO_Y6gVs!^`{2)x;6^}7t8jmyoutsV9a5SH^VSSoTEnu9%wTaE9+x8Y~wSL2Y_ z7&IDr71j@>LQ?I2S>77G^zSq$ROc1Lva8bPBOxP%k%c4H5w4Ugv&h|)A*wJnQu9YM zS^Gr$PPENEhDBV<6(WfHd*scHCu^Pm}KFypVD8_blEKVuma4gv?66u# zVNfWHk9dh5kEmRRq-V=N_`_{3Sabf~u zg2sg`3fmH~A}TeeH#Q+YBcU}xl&~RTO8mLl)aVTnDWN|D(VQfoOwSl5lJ=gMiG7N| zIBy%(m~ZJ3)Bl1z+=s9Q-`Z8d5%tW>!_99q_ zm+(mVG1yucIW);>jbp1l%bI1rZOk*w(|^>h1l+W7y3e{q{chmDcG5fR-fIYIh_Y1n zc;uUSyy&uUx$vqmNwh|c7{LJDBvf6ajW7mS_d7ydx{;G`S4nSZ{>&ctQco^xh1YT~ z0gLB3!()qECZmZKLRn9&!Y#whMKuA6NCoi8??on~w`0+STGDOmOji~2st3($oDYnh z>(}D<#&3Y_;d{;Np~rk?9W9dl0RIzhhJSIs1j(?UuoRd^0d;JiE?w86JEX@MAja#a ze9HsC>45<{+AMpCZIkt<8DerXD74?zeaZ%TxHL<=YirXf%&TM(n zENvR!L~CL+eQ9iHu+}%!tLj_oFVuI`4>quxmNlbV8STe9m-O7^_7B7gYDND_uPdi% z8w`&v-$(z2GT`9TqfeyAFuj6g#coHET>2drYlvyLu1A$DKPN#5e-0h#&*^jT9%w(_f^1w_ zd$ICyS<{c?Z{*LhA3nc(^VaeDR?+cSwJ)c>#J)^Ce)qr;ns% zqy?vnl20aS6FlO3Vj`pb!Y>40^55?}oi)rHOKTy1#PX22Fkk3oM~CgDg=bmzV0XOt}VO< zW9^yhZIxfjPyNCEN%&*>v$f(})!f?VhO!o1=ZoGI1L4C1lDUd?8mqq3qy$s(_4fO~ z)o{}G0yykGn!8ObKwaxK90c?n8lY_KH*kQ*&#Z5~+khwnb7DY!opS)UrU{;g z{EiC29KzP%M)2)~BSZ@^kMx=}lk83*Qxj?X=u+1+Op^OSkI$aPtn*$|yxY88e0bgm zy^UV~^ZLbdWo`Ft^_cG=bwBKmbwA{$Wo}{mGx1Cka}l$bdChH+d$5Pt;~413j$>u9 z#Gd}1Tz4Ngp=&4&N4|`&Mi0Sp&dVKx)(fVU`aK$v@}s;$N*Z}9z9jl3OcDx*3x+d> z{}$ZjPaIk`;LMBf4ex@qzi&R&u(S4jm7)A&S?jNipZFj1zfb($_TBmC=&#;C7pg3E zUM=>{eY}OkcVr&AUh99(V=+bKi%f%83Fk#{V>mT>TP!}Fn6NuxO2Vc1IdQEq*yyOp zwD7P{MsQ%@W`C*QW%dT&WjKDJG1Zmz68;Yq2J&%?)}8fy138b6s0J5`3EdE(B~2 zni8B9yfCOcpoz1HeZhN+r@PxjdI04uAqOi&*2B!uy^t}Zake>@Q>GHbfX=2-tDY;8 zWW^G;=%PSAn9{$$udbWixvfpqyst5*eqF6w&7^8Wm0$H>wQp@(ovLAdb9UQ`PGwIG z&oH!7#FH*mbpV%0iQVE92o#FTfI{&lz1Zyx%fojSCqJ+@xF>X7_@juOk+#U_D7UEE z$Vri}BU~cJh3^cz7J4t_P;hY2oq%%APxe)x>0VgR7Pk^c868bKLs>^IAdLeY(Hhdf zr!>&u+i+jvH`+Lp3i~FAS)%11u z>HARJXzmfNhEUzy7Rh7o$uP2ZIfD7HEnG;RQIOFwVGEMQAw@5R{5f8YR!eZ z{KmU2<2okw6!K>BL&a!$i+YM-iA8E}f~cY6TsmAnyXc*NLVdyQ%+uauIcJ(;pzH9O z4Ap>QRQ_3xQ$UnYRb85k`cI~G8xa!davhn1^CM@v?(q2Lqw`0FN+Y+$-A)>xwlTv! zJ2%Ian?4>j;nakd3APD76XPdlPMkJz-NX|U4^NylkvAb@!jkbR<4SWHv-f5erq4{- zmk=4VI(&SPh&_w-o&lvy!`(ylIWcVO3}q@G>6KxR0bWm2yHoR=x`xUnWzZj0U#@-F zR=m0B>GPDQevdajjQe-PJpG&G(O?919 z`WFiwGK%&e(+2zBP7qiV!i2hwd5WEh`wv%$+Xr}HUo)@Kz!N)&LxRt0&e4RLw&=9{M?pF*wIzRGMczGx@_qz6#Y9ucXJi5gxlBG-}|O#S9d^HPsfY)f;L_2+t$I> zyKOz~hdPV9bNXWX*ALYVFO^7SyHsZFc;iOPBD)J@F?6*H9-fOZA_9>02o=yNjsW%} z1Hv9nvhA{{0ax^dp&XF9w(AXgC*yrnjpcy-4#e!d2Iw~xxI$tjIh6{bF=&5NH&TS8 zF2WvMHyVeGhNVN70{87K%WPA-fu~;$_!iCvym5~y$`S)k?P17K=Tx```5(p&Kbtri z)U6X}>GW3MrD3}c(-+Y%(vDE`fQEhzSULHiGmwY2BD(-v!xw%JHU~Bvwhz_^%ZGo5 zM%d~*=UASg7ctD6g(Kwju?Yn3jQ(^*^JnRz#|^O!vNuB35*2mcKPD+!KKZG1$zX` zg;Nn8$XwJdGzxnNH-Psf29X9pM=gq6LJ|>w67uj@vHzksA!+bS&Nj%V(Lw7@bB1w_ z{-^e`=Ce9XEm!GOS?W6V15dgItG1Ihmbo(0DMF?uTapdfhK{7p4yT4tEAWlRzYXCvGHplYaok zf{}8BYNalr{YxvSmC&}(jMO#M-xNG$A-RxbBW4hH5ia46;^MIH&^F++k+|FdZ^#z= zdCMc?9bJLCRza4%k~|SXg{=ZHe;J>}w+s>aVf?xLQ~V-+KOZCT5>H*BciP}f@fqc*87r(WN%w)tt>#V$5?;!v09mHdYGh&k0! z=u(S1h_4}EpjR_@dYoqkfmw~&XRhyh-!;CIeA9h1eK+~G`Totm2%PO-1NwuOhek&% zi2fOuo79lHDnpx{KW_WP*vY%5lBdb1k*6=6Rx@?imaBR4g(E$}{ruPgKW=VMLFe4|X{}$Hk2U>hT-kW25z{1XifMV! zI=-FOsqX6RdD*v=r|M4|oHZ25ujNk`R0^gI+lKpu4pF|OdSoH!xqVblRSPsTbj5(Q z%>w-AN^>Nrl?6Z}t^<76|8)OpE~ySF4#*yk7{nJv>x8$5U55$72ZxUeQ^bWMgYrT3 z9fQR>;xrc7h~G!Ud#v_d7ibC7Mdv1{lKa!rGGv*I?628|?1t=F*^jdR&77R^C*6|j zlp;-h7r!qyD>@)DDtt-k`{2N!nt&Vrhd5jP7P9?(zjX8qSxY+BadZNrC80@|1kZwk(~-)JJCA{JE_N*yI3>Wnt-vPQzNA@2?i0H_OVB*2Gthzc1^2xr9K3ZJ)vMuMFDg;wlfuGhW|lsMk_EexQX~U zf{t*T=uNsnGLmw@{IY~xLHPhLgFlCP2Aq+H@+LIS=C>yB|nmBYhbmOE`4U2k1s z+NLkiz*JY|3#IEM??vgt;NkTGcR{e=wqVonLEsOGkX#+nNyFun6*)>K_+M72CF=ia zIzY!proF2>pf4~W0Ku)<8aE1YN_H7Qs4#1ZQ)x%sxLy-Ew}M|r_|DC{#V9| z%oCYq8Qxs5;pMHeiY9VcZpI(kA+y_A)v4LDtIRt7OV#9x&tDJq<*AC_FYk> zYSetv?J-bH+sz*>W!4KemVFm+HJ!HS+x50Xwo&U=peUUL$d4HF7E>SKUiTVy8vG1G zK;FKu->;tq_@ZLnGhM!puU)8pt1+nk)zeg`l}5!A#RtVQh;|t$EKZ`w zB63|$IQckO_QTdJ%WAXM)Mp}?51WaW&z4PAUt75?*}m1j(hj$0*qGKs=F`SR{asC~ zvR}rNvv}eFFAebd3q{tEBE?QkuEE!$vfps>haEzeU_RjgAq7#d&>I<@ zZY3VeS$eOPK25$ce%CpufK!2C!MYG(m?dIdbXn}4gsI76(`IJO%udafj?bEuF}ZOH zck06Y?EHsQXH7YlN1sR^cQ?Cq%-<=*gyqqf!ioYvv0t-ZGhb872zK;zc)!y_d!d;R zG*~9ZQ|Tsg^sssG7jI8*dKa|4ulZZU^V)){x8=Wo_x*4x&G~ZwBfG?0OnrOp_1>bk zS9f1^zdBWP>oxjqUooWQ$j4=0_LlbkJo#sR)xNrKO@Zx&-T6G@&`nX0>>pLJ?uLnN zo8bt7es!TBB2bNm~3|{*6I+D(=P0&5nrGsj)%ka=R&D3DBm})^L zLA3FUo(uHQk;-kdQ<81MiG2S7CoZHXzVlw&8c-#qHZE^KG>mTuX?)gH-Ey@3OV`4_ z$piBR%fvyl$I3?K^i7dbEZy_h0GvE^BY|J^_K0+wzDY=_cO+7>t&|K+odL?Z+jYnNV zHBeqq&QtDCPB!&VA@>Q(RWaN$$JUsu=9bN>;e?! zcxK&T+Nl4bS*zNp_#n%dhKwXiR*T<@aH1u`XTuGGe*WDd!eD$qjC-`_OJ_w}Lo>I5 zUiYB-P-TC4(I4cWp|box6Uy5vT&i1ZXEknXjqW9Q}0#BY9?ua>&_T%nFN+;_8!M7XuFFq!XH(M zCSYr^cw85jgLT4eL~Ta+!!AKzIG)&!nCBYiYA>mL6oIl&BOQ_giPy*^FtIOG_G+#g zYAw4RYh8|^3h_@V%NgH2&U(LR`})@h+zY%F*cC9tKf&*&&)=+M_iwJA)N@1~b{z@= ze-7Q{*lqjQ3^hK`?bKXUH7mm8kEGrs*Tf^j(BVXW>L8`Rz3)cPq%KTHOY67huZ^<$ z<#k@QF*Wb2OR5uVa%!9Fni>+CZLNgP@jV~8lLoQFz2ZNza#g1eYL2mQc6tF*qLT63 z$am>C-4?MVK7Jf)z@gx~q50u&BHl%Aj_Qv>N5iB4L@kP{i}Z}lkN98stgztFZs5-P z6d>YY{XBffc<*NocpP^B%k4B%&A7o>%$Uts!q~z%%-GHt%MiGxxW)sYPb?*fREuW- z2NxaQ20i8Qv^_Kh=-8fne^`p3=^H?Om;hTh2GDnhKkqHnlWGHy1RA zw{*1}Zgp?_)Rx{})K2MG)$y#OtAo|Ky7OmeV%OKM`QUb>?XmZUaxd{R211Aa5{wAn zNvdRlsygj^W3M$5^3cT#bsonfLFi@7U{7!F`@WC-y!}xD+XLnXeD;6NiS^s-d(wLc zYqm$e+iJ#RI*N9I5=!m|ih_UeJ8=iF|6y$CqafvE4Eh+_ihhAPfjy3UgNG9LkUS`S zYAwBqG3aLXfOu)VKltYPedO@`YXbHL@&j#wC4t01yZ=tkId-JaM%Hq765}|vnmCM= zBBd@G2+E#lzN8P=pp0(S9C}!ozUOdS~=J>Ed^c zwxL@Y&FseP`h&H@)mN&nRiY{_75ge5RV}J1uPbikv|>85df)fw3b^9w@@wjw`atto zTk~iIgaxgKa-s79GuYr5H@ek!&ho+pH6GW`(OuJKYqx8?b&K_Z#vSGga{J+@}-tFf754`dz3T-%9OH`Wc@ZGb4f)vcvzh&k7H;>uC}idmQe7T(-s- zgsSJ#!@^aAi~II=erR!Rcv-!reC@AurQ*+PKlr^vy$N}B`T6u`2Mc_k@Lt^6r+9x4)@hxq_{T>lc;6gT=>rqpAr_cXtcL5Cv`CM-z{%6yb%%e+3u zKlN1NwOC~2?_eC~lUEd2ms@GB)Nz!33&@Y^_%P=u7c8Yz~ADJAMg9nQ4gsvms>T?F?SdNP>C;4sdwBEbon;O>PqzHMCund89jpD7*pN1z5Wp z6akfl+=Zxu6X0WE*??a->Qn}~1k|`Gc9N|c(0$`gFr!GX*G<%QYoBS$LB2wk{+;0- z=(NPxuQ}R)xA!Ql6W)Yahdhq-M8+aofd@?O^xiSf{>q{=y6FQo;MyunkUSJF73>~T z4wUv|``dZ3{cZ!B2Pg8E4c`_?B}Zh*N~lJv>oC5zY_ppkflv<@9qc0_4z&pIQ`ML` z*ktTi3>t$&pF_Ta!(op==R3%;-}VhKfN3VV{;Kw|`i#n4@pP~#J~P?({2KhO`i=8@#vby;`?h=2yd)ln z-5$9TsDp%KmPC zeR|NQxb`rLnG)t%W-OzP_6&Ho&SP#OGM)QJt1N-WM(rzAg`6eji&u!Q3Uh>k!d1e2 zky#useJJ-*eb=njC!4U=KKpXWZs;_o9y>SHj1-On}Y@dZ%*RUw|EAGIanq>LddMkfe7S z(u_%_CFaY3$9WHAOO)74?MLklW;D!dc5C0%P2x3yj!BsOtme9LjO_!&3M_Klu$Ks%$Qarl*O$z9?k_y| zdCm99V6W$(0DnHoEjHFx=f;YF9199#Nfsd~xCqAT+U zX3_G)CU|A0CiaCVa~8WFBk>XZ(RYR@WtP}Dn9wKhV745u=Tv)^Px^JY6!oR#1Ml6W zw~*H!uO7TO{QP}kY9XP}zi?aOXyLQxr(b+{$tvo6{r0Wm-SrPwKDU00{8>`At1`2; zwPAjXsr_JgeV?x1lbB#(*>6hu3(VM;}jhgyCd1Vqk@mjn&c3RBksFnz7`0UWD!JUCY z0k=8fegt;DFW=|8Pb*N@ob%QBE@QuE*Rfx-6WD8f7l2M|BWt5)tVg)}c(-lL3&8nW zOz)@p(aunVs5%Ol@{@7}=<}06%GwRWAKV>`1=#`n3;J~QnPsYBw|a(5Bb+mMviE%Z z^Ty~JY?TI+!H5AiN`9J3^G5kYkkvs%%ZWc8$K$z&93~rkjh*&q11(+7w}m zHzpZY=?6hJ%v0SGeWBr^NoXmy+aWD3lTb79rId5bH(n9`s?hH-(~_5FbmknJ_`fN4 zrp=pKID5m~ig};rM=U@sAkN=A_kXj?XB^4jpVvOFC@VT`ZNi19#*jJwu|5kubgp#j zPht;lE+zss3-JrK+hwkEF4WV>2_gasDi>{3>vVIxQLDSDNmGgB_oO={(?sKkxA1=s zP8=ZjC-6$Sr@(w=5BDGL5ceQ&X8+uQzXsP0?ctvhoEly$w1OFzN*F0@5wr{?4Fq!E zbj#a^n%~x6tA10S^n1b&(KqbZj?Y=2Cw>-xCVYMKt>t^_FGX2@MMzCwy?e`WM`9mq zXoomSnQEAC-{vv_^M&-sb)M%w-^75+AtxeSW2VK2CEZRrodz32$tcX=WjxI=jj^Y{ zO=G6!CdVc^$JfN{j*5)<5t;@ZA}cr)w#eJan(QfZuXTgD?PfYL&oPLM^PnqDrSqv7 zlw1;o@CeI9Z%5pBdE?YEO0!)tFE?(|Kh{dsJ5{rkrxo6c0eOSmDBrCZtDK}NP*2zT z>k&q?Nnv?o3mVOGSR5N6=ON1>CdUepuk;m=b3a+7mKlKl-DOsqgDwAAmRj>{8|~83 z?~rQffXgtv4*54a2zwbO*ZXDDRI`nNGqt58HrO`_Cc`4D9A zpZ@ba1@{tnFL>(bxwp74xz$_*FP68Mx0yGa=f~^g9_D&+zxOTe!}M```+G5coBIgd z0d5bEHn3yRI`mv{M7Umjc;vS1x?-OyL{p*7(>EKkO;62ckSNt|-|m?0bkrFRS0MAS zp2Q8*H0DW`ub)#eEix~DW9pVH@9{GyQ>JrfUziuOP`{{maqD9E;x!9t^XYT;&PbU$ zVPH$JX|l?fCizzr|^&@PZqDt(&Xvqn$}qtj8cH=b195~ zSdTmes*j847wGM1K1z;!h=9WbK=|Sz$1mFx^H{?pz($ddP({=DU;4N9?dk66xYzcl zWqfm7)9yxMqqc$AxVq7)siBGA9M{_3*4{B4%ut^9KjPa(?_|%^pMcY+8gd=RM5o|2 zBtP1atG}DceX3_H>nCfF^^C=2<$KQenCPDFmd)J2=yJX4`plKVP&3B5Q9PEgynGV; zN&>cojENw|yokpqQ_~)gd6h}c?#vct&&wW{^&z7$9hz!PJRVmUWe6h&2l)H@da+#H z0_geV0z46O1CixIbh6tG!1;Gi@1?C$olz{3%^TS&z9Xy`Q2FZzKlLMd z(8sn3=)((!6NbMDhWO$k-eA>0N57tz%4_C+^p@5G5EanWd1UO-@LFSC6 z+EOg*OpgpLIwvh%?XL8bdr5JUA>m~~>`*~Jm3y$Kr!%GfW{Xc#aeYp$pz21&@;|A+ z#{f_0({GVqSznHS-uv10%jB<7rEh;!{$5tGp{BjzTlv4 zQu$zQ28`hi*kIYzwdAG5SUeQliF%2+1H0k;)@cY3xMn%>fxv^Nn%f zr_WeuDmRB)f7-TiyEldxCNz;7O+4ILWf3?c_T2UmmP zz>y&im^(}tJQGw1-U=2AD)~r0YUt}gQvZ4Ghu+`aU7fb}oVJdZ@6CwjA5G|HZS#TF zXYCuhntIFoCkfU{oRoO|KC3@eiTq92K<9cmvwsCT!oEcJ$8Sj9m8KapkU1}V^H^%m zyqx%)im}%0hOE5I&0~_&3X&fr#K*3QoE>Tl7|-6uI?X&m-ADKbT?z|yYPU6-y!2ny z&lCpfImtzlb@;b{Am{)Lw1a|e!xh49;sqnyWDga6DuOlzIIpIe^Q@tE<>(!d&a(&j zH@?8$!0#fCBL9cVLi>YMH!Zdvw+pYt(+G0>c)TC(GG;G04G1ouAUM0P8KM89Iw@N$ zUMko*Anv=>eWwG}#%&I28f{qAFsWgvA+{-~rMoS&E2FP%fHyo#idJh3GFvb7Iud~= zQ~q{c;r@^n1ypWPK;w1~%&6b_VnCDjjt9bRg6lf!T~aIF4|@-lj|hW}cfRO^gM0_% zr!O|Wbrz_|7XlXgdUKa4)^x!5$naKQs4LLk)f`qIRNYmUD`<)%z&%vI7Z(HZuhdyYx-4JRn4lb`t$y` z=I8n!-rvckx!;PvuK2p=>#wg1zfCIL{k{Fi;$P^pZ+~`Ggjdy8&#W!4BQ;EGJkj*H z`D06UE4K~Zk=yyW%d@AU_XW4I-*c!?a6oir#4dlKF3^k3`$n^!CnL||hRG`!O3$_I z%0NNb_vpxkkdzzg+cOKYvvcBe@8mAeeUP(e?2oLnjD6{p-LuL|P<)i!e_LQ{~n-|o5s7x>8elPvf_964#=xfhcFP~q3W-O?9qIrD# z@$1JyPl5`bK7Ca<=jEN(2jAg7`ISETeZT5kgRYI!OBpN>wo13E&gh&?gO&ulWi%Fo zblUE8%4wk!#OVPf8=`XbIPiewvDE1abg9c#cqVEIRzzr}Fd2_M=K93?yM@3b+hg}8 zsng=KQgf9PCQQ!Hw@*))6+Y+JT*Ex|{1*$N7am`Df8n8pfeSA$D4xG%Uf-PFS&L^Z z&2P_Z7@smWbj;5rYm6hTC!oM*oBIsf0>W9;kn_&bvF0q@8KtXKAhZuH=(qRwb`7`t zw;pKH)}O5PsUE0!`RBs#gFo+nZvtn?_s@Gi{qs@q;pB%a9~>X*KcYXs{_^e{^v9`R zF@Gc#$E%@rSq%YAKbwiI^tP6^*!IQk)7rh;d)m&lEojSZThZ3ocC7s@IC*b(7xdb= z4+n1XyMbEX9RY$Z>8^mFNb}MEoZOxYxeW!>;N80~Rr)7k^?kKwNtU6kHa-qEfy>Me6d zS35#J2eWNfjG?=mo@58WNp(a{QRDQN0!ywTXyc&O<{GrN`2{#U1S z&p;o3U_QT5m@!f!XQ`L#t{Bf)=Gi5VeCR%ql^q4r+`KW1vAb|v@pB2`L@lwDbc8&X z;z}K*Lg;kYY{nxd)BUB#T2_cR-IwIY@b?E?!-P=(aAU+lu)lna$&Wo0yDYXh1`^W} zwIuRR__5H);OhZD{l59^WNF=Ix?Z6?BRs(zM5HH{$O>dEaEuet`_Ww>4P`ROogrgxp{oEp8G>+z-31d@iS4m@g5kF& zQ~6VxBX%Ah9JKS+_fdP?yLNZPwvTOl(z>K|N2?HMf_}8m?Ht$rymveA`XGGxt@x~L zqiVcPXPjp}IGW{j-}y3(ibz9_A`hV6qQ0U&pzfhwqSUC>;C!Egt;3xnTq3noCebB~ z`|itGF+Lc-VgJuT$3rtBI-};rK92vIcp=#{b$!~RbVGXTn6NQT>74WwaNjCVo|ROT zz>hP=^hOrWjcvB!hjN;P!=KKzcSg6G8s^k4t#Yo& z`4dz2{&(%~gJqBZjHyVhT35rXo7c#1UfovSA@4HvH1@6F_4IoT1`iSVb^ILy-0=0` z6rout5V=T}ju2!hMTF|21_t;9mF8~iMY{w%XF8-4ky&rB&B^EkUVcgci+ zNl|&b^GuT(CW^;z%3YP+F-D(KoRAuGGkhS(m$THn&>iNwfjojch;oCCKq_o?CbMpq zxFPm?HTIZ+<$dw7T8S`ihJ6PrYyS& zIMY6(@8Xf5@>}CNjrqjwl)K3t>ha5cx_g-$$L((>gn5kN&pj9CmW<0Z4)&Clbj z=U%VHJ`>nJoUi_jKyuKPptC_efwu!baHg?Wcw+!7cq?riX)Epusv5Qun&H@CBU;d= zr3Q>1q080QYL07GX|`#uYDzTKnljBb;Lts(zN^}$q$m!_-i-8#6+)8$!ei^E2 z(nslK^{nltb|bpyb;EjKz03RDc&vd9LsG#-(SngsIb7ACIiUA5y|)C|?>d~Ib6jr1 z-yq+iZ(?)sRRj#lldL80r?gXsDIX~FD5YcxshfC-K*EFE9yAMh<_e)l90qHYDMy#8 z%97m_PZ-`lG+{u(TgZFM8|>E&HVc-E@5<(>&lzC0uTF;$vA8lak-_mS_0e)#g3`ir zBDK+z0i(t}>27jM%0TL)v^1a^=cf0izfE76&P@wQ%Sw$-(IxFoEQ>FTT@n2%VohjS z;3dEBUR&MnQWxUCA^IUQvs7c1rVcmozI9PsjrH@YCzY4~`ud&y4gO`~C-nz;Np6Yd zz2p7ilGz_FeT@Aa@O4+I@yDy*2g_$vMb`@J_cn1`DD8yKs;>DxMZFb$4cs@po&E6x z_JN+k+946&7ieS{;!4Ra>3R7h<&Zi@S7kU3{BlPCQDYB$Bl-#+Pib-e=F#9|^7jsn ziK54sCey}Hva51w6IFQ|rtX`@n2|n{KT|bx(agvhQ>T5KvU<{zard$&q%BT>M$HZ0 z$A0E9NLxZkL;d4CXY_^nl|EjRr!>hp(g6uva#p-Rd`$dJOqcAD)Jbq7o+I#)TFE{M zNpek$5#JZ(iNZutqD>-{SRwWsc_)1!Z&BuGbh;AbNy~V9m%|!dF zBmXFpG>!TU^9I{wN41mK`2&oIAR()fVW=s9Gmk-iMXp79AqNqSh-L&DxgI%!ya2Kg zjp(PK2W|rCs+Bkk$mB+W{PV52QS3HsIR=5rKyOABA{B^Ph%Wek_&j(Xd@cMYybI1k zEJ2(_+(hg|1R);5t6Y{;U(>$*T{`i{ieDXN`zms(Idzc6w&qK1;hhhF@nHJKLx5B22HuMUJ$HXwbjb;*Ol;f3%>#AEP; zPaxr_`>1WeSNtEAgC8a+Nr}{7^wZ4E9w)tC_%?GCfkPn$;jU4!F{0RjcyWAaf-F8d zUK1M~qm7IU#{yN_74||ehudrVI`TR^4_%Mg1}g>G@9&|R&L>@Fz%L{HF@3l@#8Apj z+8x&@=3j2E?z7$5?pNIkm^&B**DbU{N*@VH48t$RzC}l%dJvUx6>KcXw>ayv#AUim zl#9*zuJZ_#2l9v)fsBC*re2V1(?rXNJo3`QA#!Z{*n zyQb!Bbwia`)%wbc3ZIIt<;{P>|2!{?F6;jN>UY8K>fc^v#brnToGNdum|O*`G1WpE z5}Vev+-v*L@wRJ6kE3@yH<{PZ3+eX*v!#i=f4D#U487^S#XVDcvU>LQc=d+%{mVVx z-#>U!@Jz&z)`HZIRs+Jb4`%MyaNJq`sj&rT^_ZlhMhbG7VrZe#VtWPp9^goC*J8Y7j@A zTSwc?_jO~HEt2DcE&XqMj&}^UkeVHY>u(QmZg;6}^RG^($t538T65t{d!2U>}4FIXX4EM2xu4l=aFWjx|M z@JLf|{`i~tJ@{(ePV6IeKJpgOF8t5oWiyx%h8bF{I!O6LUMI_x1<4l5c(RM~jf#EB zqpDZxUJXVU4m1;sjmu4&fSYKO^@Qy{NZ1U5oONP2H@aMhA3z>M-^SM9EyM`Q3a}nt zGQYTA_8jX~>5cY<0rnm!8vTB=lYn|-nNPU4p7p|WmIuvU%^YM{T*F)s&{eecfaI{9 z+DVC~%qCADDG3XJI&cEI8UcgJoX(E+S)`zjT&if71PyN+Xzrca>EF7oF}1D;cm{?l zYASA4W>o*GwKfP_)_4BZ_j)i`^j(&zd2DR5J$7<~N23REIixJAjJ}xpkNZEK`Cc;b zCBDzud_O%$1QL;s1O@~>3{nTV1!IC=1W5yH1LFRVqqB}`GkM!^++B#0;OnZ+~@xy5a6l1Wh0W;%?uZ@4Tm{hkpr~cV?dZzAitG&qhxlK^C_W z^sHv$w;^L)#pW5>uEGEH6-p!8qnh$-t(DTUJtc)j6@_~X^9pwrJul8I4J@Brd9RvW zce^3JxxMvxN2Em7d9P=o%y$5xR1fPl2!oe-lx@57D)bKGGI|D1MDQXDslRCi1{@G% zRUpN4nmNQ^Fwpc4>c60cZYJguo&bw^Fm3<~!(GAM!21!C$O@{NafH2x|JuXL_i~^i z6f9b?MPTwYD>XTNVMcAnzZu8V+f(-@uT6LpJ11&OsNLV@d5tGw$cZ(m$F7IwPR+)_ zwSAq^;r46IlKPUGDOIa0u;p=O<)tr6J4(lvm6R0NdMbv{de|iIb zAK;cYF?Rxz@i*3Jb_JmR|HFC0xyf0;5wqRdZmeGBHbxgMfI6GJop=y`2)hlv2skom z&<^Jt`&G~^x?ubXm~qE6VQNoR%J8|N@FANLK9n`|zoEF{n&F))qWYrRq7K)DX&may zYKD4^>dNq|q36mggX=&8yIHziQPad7 zyJ|aUtFw)_x7Zgu#Eux}eCI4D-g(AR3XE%Stt%~R(@NuSJyW+)^FtLp`~sx3s0uQm zQrwUS$oph1z;uO|$I1VaAC;e%?~#uLUAG|F+P=+zob1=F?JST!ll)IC2MwJF(HxOR z1d;qL-P9%Pk;uj=Jcs9K%ZwXr-jE7J3U(zigu0y($y&@&ayvlNZipx36>x@F&zVEC zZjc#6Vz(eg&>ZJBTbuc(afacR{;=NNu-rJx{M~xZ(F|FLpkey(mE@1~L#%XOzhJpn zu5VjFb@1b`F_C4_?y-yF_atmeTAdP?rcFPSNy}P0`s|o(W4YrNjSC-lZtR>f=d;+E z1F3|hU2&07qe6;(^99+g?c}9shO5N5dw9BRnWV7!pPF~2Tl1fMU;63Q`*pA1{BQBo zb&oplzr0s@C+jx+7USl*8%uB8xiRME>|2K0oO_?{H$OW4EbryycPsL8zh(cSmq;sb z*JrlA5I1(`$zzn0)F}N7Q<}BK?&}gjm9U$Lbl@_6iM@osPjr&c(^fGLum^ePgloKy z_?HF8MHIv=9|=u4ks%#z8~>tS<(X%=X^Y%oj!mimQ;{lJ-i&Tt-N z*v1)%hAQBP9Sz<9Tz!Z>TYmxc$d>?r{ZeC_af0cVsSrFzO=wfPafHF5+pTR;(^T$5 z%t6wC9#98syGuIjC05bIj@q`Xz;xBqysvp#^MmH77E)_K+nIK>=&^XJRNZ;7+txFy z@2c##yt==0K&fyIa)w3^KT**&ue4kA6OB{NORNX%Z=7Y2CfFCm-zXGF*zCj21a9fY zgo}i0z*34N9LGy=3|ugF3}!j{II0%xfd)Vq#fsPgZWBfWn`#V>1a9bKDSK(93>+(w zGm)3#4iO&qDE6%Ly5;TTv&-kS&ukD-&h(z^72=sEbhtzL`J6=7RYn8VPD&u0#|ERh z$j$H+V5}Yk{Tu253xw}M*pT-?n&drbxp)(Yi0esLNy|vX#5Ce8!a}frMq`W7J5WMo zA$$>V7@c$lIvea~Y@0!Qa-;dKsU5gzuN!pWw|ib!09cdt>N~2e;qOZJ;DmvB^3{E7 zK}YAZv`IWxq-d{cQ?`z3Eo|A-GP7lT%L?%S{T5Bjgx2cT1#Nul?0 z^_`Z7D3C*D6%BBLms`%+-?%=)fFA<06_-O8NqSEHOj!xKhV9fFR2ns%GJ*^zz0p~z6w2DAqA1b2+E zmXt;DqP5T$F^k+}tP0?M(sRGk-t(q=x+f%`45}SUB-LNhX@V|*`5PlDxVbp(!duXo#E@F zv*QjYI#OSb`gh!sNoS|;oilRbhoy}xbJpJei?j)pFt@U`Bv&4+I1X_|TF`$t$ zY`zbC$z`Sl;7g_&j~F}*5`C*42h6T>jr&aq%YZf5(d|;f=A!&?BT2_-I=5}SdLi8h z8}KN&DePoqe)O&p|HaOUyA`)54ilFVn>KuWp<9ca8=In=tc|RuOHJ#WFSS70UbdeV-IRRntm&@p{VluH zAF8-BSf^|s${Sv*VypjC^EEd#EbTLGoUT~61gvTo4J_kxBg2$q>M(hkx0pYep_a*( zw-$l*nw4lfZA01rws+gp9A|**BhY!o+3lR}61xsUlAv4|z_%chkeg7C&}|q3E)ld8YCB+ZK+$C%CBdFm5H0*yQ0)GapTaxA zIl@X~meEL*NMbrJ2_1ysfxCbt+Zi*=_zon|s#Vj6`9l%P+k>+PR}3}}{!jU3$WK+H zexZG!ziixL9%Gf*!W^+qopX+BjVsFa5Lk1I>?>{M7P+a?a6pIGtQvkdXzHIN`_Z$Y zD@(dp94?yBA#bO3)B>J9QF@~5M6Xq@8Jw&(==&@fR~q6t_8Un~m$BcvkMz3icOz(i zSaoDi%)L0>$fm?G$r&j>Q~sokO36sBNo*gvCGJv8ROHssl)&dczlDdmR>lnSPV6E0 zX~zSTL^D%KmGio0jk~;FF8+$hlTpG^R{W0Hnq`{7%mf(ts4=83@2?OSq?*;`Pvq^3n znKKz&dL#8bWheO{=?`%<(VIArI6$l>p((ei>*?p1ovaz$PX0k5&+D>}%+DC`HOME# zH}p~H|3c$JCxj@1A_K9&Q#$Mk720?o*t40v)ET4?I43F_e$QpLZ3J!9a!u~A9L%mQ zGD$D1=Wf^R&IQs(AY0NZ{w}T)vm{3)zEYV~(mB-S-Lt26pl_4h)qh^WQ$8K?R$Wrt zHM4cs^yLPtkqK;0u~t8ux82_n2*3*o(xP-lj1vN_W*U3*y7t9+uU>|Y|^DHF=3f?XoH|I@&?LGtiZ z^n&v3&T|!hGDAtr0uEm26QPxhDyaw!+Q~5lb{p<)keKYv(kd-9-uWbjrNF|Px(r| zM%qlAPgsfniCchMg6qMl@&5wCO%Cl7@L|q(zwSx!yBNd{KOfy0XHEQ-nwU9hG-OD3A0b$=62C9Z?c79Nge{(6gDRV0MuI#rnZd z+4~J%s=577yT~0+8+TTpFLmbE{y==W`SJc+uUF3JnNO9EEDz?~cmI!bZ|hy&UBca^ zcZcuR-{akX_Tbv1+9%7Or@s9A4e~=-UiDY_uQde?C1Wbz)!G}w+rq@Q&bz(D{<(wu zhxciA=x3SYtvH9mRSPRd)?mbVDtRjH3p0(=#ed>)#AkcJ?vQN}>te>oBa*J9>N8lQ zhsWk*mrX35ylv{+X*Z{P%t)A_nVvkIKJCPm8q^e-ORqNo_0KEzTDshhRm z^cRhz&E*zfTa+CQQl~#09~>(jWnh}Gu->+$n_n8;46AjoG~EkBx!4Vm>fYN<8vs%}(PRgA9)s90UW zsSK{ltA0|;Y0x*Nw%J93u7`c=6)RQy^tUW;omb(pn12ZCDIN4~x8mI#`EX9*C zVBLXK0&d)0V0zW+-|Ix$iCTxIL({40(YQ1?twB?#*{6YOW~mQ@oZp%us`8a0Y~Z@w z-Z!K7XLm|hz4W5wp!mJWN7T__>X<1af|YQxw6JqoH@CN}Z?#<3pQSi7cwRYU$Ud}h zxO$kR@>Y#h%~$29Dpa1JA30SMqK($A)PFHVn)1!7tOC2laSIsn5b&D_HflZk2Id-e z5l)Wt#fRc$xVgAP*wq*&8W3LK5EvEW=}ZS+$wKpJlfwWrr0T16FTopqte$M38E2V# z%y+E&?Eg4l0TbFJWIj3>R}LJ{0-A{NA8P@Z?*3F5<8|2Qt=}_1(Jlxc4EY)w9u^WVD3HF(lP~*VL`0562En>s=$g*#5i8Uc0)|R8n5h^vnNy-RJt;s1Mq=Zf~x=+WPXt zi-E3e!c$Z?aTLJx%AKDzjgmC&({?%uRzxJG^*O@(pkOl2k@$0dZ{JN zbqetbTS&T2PX$?m-yXMpxB+v5$At|<%!uASVojX)$X5x%q$SCxQ_iO5q)ktUW<1Fd zW**M0$)t|T9JOWC?NM(>)s5;H)jq0V)QM3(qfTXlF@O4rGEGjE5nO3~2NL-j-NG`fl zw6%C^$)(b^GC{?P%12cV)ruNzZC~Bb`s)p=8k3uRn&~Z3t#jL6wF^Zr#T%vBUD-YB z`d)!9`9`IAc$bC*_C9FKBHJOyMi(Bs3APSS23&v*;LLFk+KCpb*Z4a$e zEO_&PanRspxT2p3nB3p=+YJ90^?>>O!e#-6QGd7=S&J#ce=BIg&2iQLZQ&l&_S4o7zB15wi-JEcNa&+AH`endkAX6 zLgIU(oM##Qo&a)KvN`K$m*M z8RP{BvOQ*ch52;&X8HdWkP%oEI1uroMp9r8sr5a9WN*4(BH9(-Jf_R`7aH|h6|#u#rzffZ=8F)Tm0F$ zBe7m1{)*loIVYSH`aNh~fXer%H_7vsAckMUnZ#;j%%l~P-HF?9x#&8C9Auww+NPQj zAR!Vp+^)DT-`2acD_0UFQnx`{7d2y>kd31oMD<_mtLp^~&l_em`T=h#tHq-=x@~g% z;*NhrH^lkCh3ww7uDiG=sqYUkuR;|igO7#|t2S#k>v9Yi0pY9326e_k7Q&7rZlj)H z?tpXq6q1X4mCB>dDeEr4v=#>HQ*C&hL2FaSnX%xzewlx4Pf-cFIP8 zIWKB>zgn(MHJmklu~gVT0i&lI^c<`Wu154DU!amf3(JgVVz3w)`YD)R>QSdrTvQ3* z;m$+OL2gDCBgdnVfc)ZzJq7aRDq=6$ObuWx2R!f+ZXW-*0PhjxS>vhoJPtTnZGy}E zT+Vp6MKlg+8}=6BuIqzUX_%`C7@9ZWA=?1XQSi>G(pgdiFw$~+_VrEZUpv?_yg^Gh zezL?kP5~puIMj2@Gu%YNHR5qnGC7xQCC5{iQLa$hDACmK)D>X=$6|1p?ruRW9=nab zmGhJHhqE8tK6kSoxbc{)=?AFm$O*(D++$2O3WE3o{nvFK&^O7}8|I~^WyV_ul;NR% zjy?=@jE8jJbh~tX-7#&QW?0>*Iy=lAIyP7}ppv6yv|d6ts*@>+7j0`FZavkqta)cs zedFfFS&iEp2OA$YoooKw!fdx+ zbqx78@g>2N5JG4r1e1U_h8FF{;T{pp^xhuuG1M3p7|%|AkzSNFeO%&%eZv*lxJvX*7sPdS^A6#Fc)Bc#XwxmTL|BbJmpfUiR4xagJ>U|!M|cXOmpD$Z^zH7g>6zJs>KW=r^^68InuOlE-h+KHGO_G$xn4fA|6u>d{=oj*@_Jci z-@#sN&+4v+(mJuU!`a4ZozQ%<5!R4X$EuZAw^S)B-7C*jBv-gsOsvSQSXw!!>RL6X z_D9{LhCfZz)_>Y##hgxI&ji`+ftaCQ(7JzPF1D*7UdS2P6U2MeE6g<ZUw}gHP-xjHkN{pF5Vp42)oI37V{Opm|k?#@~CDN0sl1?S3rRY-brA`EmmDQlz zgw9}Pz%pK@Gt<-4+)_^_pGou?853I`)f%=WXr^zE5Xmi|hZEPLZn>(=KHB?(IekUa z$L-dp;kq-`B^5u*CYPQq`KzS8q_uQHd1&Q|>YmzD4O5%F+p0TON$NWd-Oar@vMxDx z0HXMmZ+pz28VH1$+~KkG+Fs>FkrA; z@mkTS7(Yl-`VL(m9;cqBy{GpxHCR5_AGof<&LNj#;_#Kk49a%eWQKwn4LrxWY#Fgno*fNlKtaxrK0vf~TH#ABlfb z5G5o#v?}yLXl2NR;OM|jejeTng?!#kHxZRc%*4EcPj{^WMrfL$MLR+>LrqYxP|w#i zYJchBrW{L{UGIDY%|JXum13^qw7}2xH}N`g8ZnPhhtI{W#S$=is98uDq5yUmdI+-L zb;Nnhams$!w#6D|X*Z2B9@Ssc&QP}xc?`z(GyB@QawLHrT`j*FtLkjk7b^cQFD%_w zvZq*H^r>jLXnrxa#8g5p%P7B5;i%kEZL7Ihm(+l6Qa9UMM|OM=FYVmYQzZLK@%M0r z_NeKsT?XBP_8_WgU)Y-kWS_->i^5z{F>x&k*5s3E*D{!+T%&eoZOy`FjUMHm`7xcC z7LyX2#7Hp5wT#G%{u$X3?iY3|Bo5p}Y6G196#po{>AvfHW_t_0{^wyAK-~YwC9}!Q z0%{;B4u?WLg3=rd%=dKS;S@z{-@7iI_#9vZFK)WqumZ43ch)_tOR9Hk@M@gb^tPGZ zy1Q+-eX*!fyhJMNJlP%JYwxRdyc8)rY@{n|fV8*IYo8VhreA_HzoTdZp z{4aKPwvTKot9e?kE_(6D`NR74(P#Fjs60yEO^_dc`o;CF=_fb;OVQo3S5>`rg60+N zmnHAIpUZYC2*X=6PxWt1N3A0P)jkz=4`D>bV^`r%5U-KXQ%7Qs^H}J)#%rJVHJ``6Fa2)&9|#Bzd>@Dj@(V%)-40X+ zDE;sHF?{2^X`Zqj;gbR>54&!Mfk@FnJ68Q9&<4tYPAazoITg&y4vNlMB+i z`OyPWt&z7Qvch{q{|f03niZJqkN1o6N%V5_`0Vb_OJ%z=-&1u&EA~5bJT%u1H?PqF z6Om$uY+pB1>Lq&I_PB-CYz0X(Y@=J_(#D>~lTGo>w&r&&i(8GYTiY7I#A#;x_V!Ed zpW7wv?2erswvO+jFJiOgG)OK!?e&%S4M>%C)kxhs;|WWSJ`oI#c_;uqI@0r{$0y+g!C(9c?%%9U3^(dZ;t}j-m4uch*>NR+MW!d^?(pUrriJt)MHI-&kp!tK8qbFZ}@ZS8^>rnhH?iKefztQOKD=ij;6N2HfY)ea zbc=Ni9d#P{0wEXMfNF(nA$;cwo7jBKcn37s+BH~URePiM0QXA++A#e&gTc7S{K+z8 z)!Opy(;ZJ7?*IWwYmc+X*vyur=0RhyAx)R1NmF?Y;RaRxBAEj0SY~t;Nmoe1#nGbG z9kuQ2+9TUJ;7M#>+y1EC-k#lYzXL7WA+m|iiTxxdi5#@{=63h@6!dk_RTS|t>{-bDppOAVezSaa-lc$K8Rz-QW1q(^kDDG^a0XL&?)SoaU-yRijQ82- zv)G5>bK1MatI+ehN0RWHJBgpkUHbnvcm^$(oJhQcD?%3`4nRGf7p+CcYVGskwF;DM zZ&$Y{t@U+7WR0Z!PjP?#s$a?9SAT(ja(prx7e46*_GwYl9hwJzL!fB;{S0d^pO~j6~ok_AN<$UdFbD47(A;UePIGMfN z(L%O&hMzc~5~Tj!Lbrr&2!(~t3|SGJ9poN3;Q!n&$9J{QG4EEdC4e=!%1h$)(Yw`W zw4cFW7HAIk4_h5^CF*6&&DaI;^&=e#9}}5Lw4}R<-xD^EERQPyXX?rbOQ=4m!vCVr z6iAi}7swdVF8s9VrwO#FK7sEQe zy90W&WE=W#D+ZNwRKuEQ`kTO|f_CnK(vT&X%Y-GAXhtV%JFis$_3HE4?Oz+%9{e~o zCj4SVbEGqh5tBG#UF`EXP5i8cy2J&^u+;Zyt1`HwO0$-Y(T|-n{#bU-gp7$FCRR_Kg+z3Mo9J;Sr-!$;U4_S*CEt$Zqls;0ZQOfnTpjn2ljP8>3}zV zs+N`>D|r5M!PobBS3mf@%X&k7z3tVmSFG1l-f-V7{t%mY=u7aAus_?1y36)fW5FC7 zE1KK6rZ=I#evqJoXs_z^MkSzC;Ox;3ma`a4E$_P|ppDIjL_y|4PD6Si)1d9pv!HQz z6H$!}M8C!);%f05h-T7K%1i1m8fg79CNfeO<-p8Gp%qcm$^QZiS_jsQ#-Xwhr(rJ0 z1J`cgplGp=w?pjxHmrStz1hAA%pq~WKVbuHNf=xMZ$aEajzKk|64ATSchUFJm(g3$ zX=py$hU!9fqs%CO^a}JBz)rb@p<+*hw#UDK@puLgC!8V>h&PE|q-UgfV9E%j9Hx{} zeyjejo@@AF zxN7{@^v*nNiL?D@w>ze}-a&LwA$$Zvi0nh2K-p0%(bv!)(SN|5!2xs_x&Y;YT7%pG zoEK*3Y{)t10sAOxvnj!FK>G-A_ge;RvZ&q*UEWf=h}f~Yjo<3ovaOlWtZCvmpJ|S1 zfwiLBqT9E2$V59OA)RKBankqs_itComD^PuZI}MH>4o*1qXuGtv(b}rhl$T9rSuxN z-<%VGwZF+T$2-IKxnHjT?11wD^8YG;h2FQih* zI|w;|Eza)tg0fH=}r@HgEgetD=u(V%jzur#l(03$?yCs&+#XUTk z`@mvlm1>S|*m%~8axQ`%K`cUdW3hxfq7NBG*-kk^AyN{^DAIh;KcHjQB9FngxLAP0 z6ll1k2^-cbdgYTc}ZBRwF|f`&d)a!xW&x}@_=S7A54cX8i+nG|$aI11sQyOKG? z8}?OAP+!nsbf5K)j1A@t8^Y-T+2U(xPkbS1J&o#io}&l;GB58k--v*WAY<_I&{biS z@HOFog$IN`4jT%^hGIh;LAt=+fNp=KAIy*Io8+^``;gZ)&vPDs3&R8-_@2DQoW-ml zW;<;n%GlZ0&p}rgt1^O=yNU8tVLOPgVz1IV-pod&=F) z5#{0Kx5{T%q*orUGFSgsd#3($rTB-`(} zeBfVED{*+z6KW`PJNqy%NpQkrgIBBfJ0F5?Gicv6dHH&xg;)3@j>FAGcTni0QTS5K zDbx!@JUk3`1*EC!q32;`@L9+a=pEQT{6o?)>QTlO)(>vGd#6XW_Yprv;QZi4q0sQ@ z5#uApk=Urp$k@o(2vJy2C_lI$fCf&r{leY+a<-h&LU}@1fk7djy2je{#;4jt!}}B$ zWs>fxQkbZ-b)YG-;Z5y=>Ws=c<*!OJN@&G#MgJ8pDco1sU-+V^q&T{Cu*_1CR9#W~ zPs4)dm2Ia)zodq4U)kb;Gs>%~L)sX_YtsPeQsp?xoxfb0Af=EN$U{gV$aa-F2OTCm z((VIxvQ?H1AUm?z(q=gU&gX6R_0AAT0O)i+MtNXA;#ZP%NfZ!6C5{nb+v)vzah4^y;4@Tv}97z!-B2(FaM1Dll*7LAH|=O z`C|(_3ZX^vqN3vGCC5vbl#MSRU9qV0cvVyNxLQ%&*@o4iSGT(DOvg{L8#wV&`d$Nj zd-xDrP0`Ve{+0~;HrEAUk&|JFgc$M++Aii9_B&pMpv%+gg9<|rq?Cs#+LVTr#VO~Kw-pA6l6>vRZR56@nkO{Vn^!cawcKsJ)Xor7J5Tg% zkiQs=Q}^j_Sf)CMU}MlT@ea~x8lAb6mC5;!dx8h&bND4ZE>FO%V~=O$FwfC9Q4`22 z!eiVDOejdq;$VJ|Mb7W`aW;)5-~8J25zxM|fK6~xR|w{%ZW=M^WYNe{qi0(5zL%j=u$2?@3R;(?%R01h}Q~0#NoPPy8{rP7L4i@GY%`BmpaVsWNy{btDcBPjsC)>A) zmvmdUx2j))ySCHD4B%FpZ7Z^eIuEH6E83 zl$@0sovzHt8C96|esubn(PQdHmu9(-lBN%(>`Yu8R}xhlx;a4V73sc-RZCq=h(gbX zwL0o7iAJIBIIyn$P+lA?Qyfv;P+)+&=%-RMG*4CeE>7=lSWU|TvN75X^b-l z7)o@(+EHr%;qQa71M6jnz{(siRz<}_TZ39l?KJymozzx>ziAJe~m|MK5w+o$GF ztk2D#F<<}rw&=&EUoZdo7rrZ=P-d?9U-i5?dSg}drM9^uZz;Ch)N7aH2UCYPYV!4= z=1Vp=*Gt$qlnMKuxSP6$xstQb{l2HzHy~(N*!L(^EIW~w+Lp0$^v7}cCS*;%G4=HH zz?mCoEtqYY9W%#!&ez$RS>-b`XY8G}V2X62Fq=QNchvTDNwRmstk@k%A)`ztE{Nzs%tw<>jQYvX^dvqf@gSkFY6U?6|cZ8%WP z)i&z>HlR#L%tp%&o6~;U=?VD?oeOs%{zb7tr_G2PPuLI4Yp=+6D5t1%Y3_hqmCYz% zu$fbt^O+Nv9?Sy91jc`K5zS7uQToY+q>IFv1P)$-Eya95|3uY;a`p-^S)2%0!Y;zn zVSri(-3yI^Dj@eEV;~yWCD$mI!&%^b=6vM*<0QFu0pk1{$O`BP7z3_^e?jCRqfzas z+32rm7$zD}@?$YHOgH)sdMi2|%|p}CT=Wd^(|8O93&%x(eVUxOfGnb9(e}`HF}O_N zC}XZ=aOiQ=7E(EW3FZ(Y7Lsdo8OLd_53vTCdWSprfwN9}>%QgStP``>2XkD*MHKaXsozzBFIlBRV9yBZ?8nNbX1% zbnWS>>)X&D2EK({jl15%M71jHPhGLF8;Gx{mzedqA^Zs9BvK05LcU00Qg=~Hs8E_O zEtV#vS*c&C)2O8s7A1xpPSO)j;`P{A%xu&`#A4V4NQ^VXKFxaC+-E#s7^k15`=}kS z9jV={h3kyEk%n$#pE=&v>G%ODf@@GdxO8G7rGpmA&IVw7OIz76`pHQTw!QDc8@m)O@kCObE{K0`ubzu{w%m8dvCO1gvl2k$}HL-+^S zKs)eEkb=&|#G>~ikHNP?GhBAyJ6dWM8oP9VG@n(qLpDHRx!2E6rVTGwAJiV!Z!$)j8!U5e-|S`w(}jdILvo-9 z*izVa*bnd&!9KzAVImj~z8>BQe~9=8c@>!yrM>)WEoa4!>mIwcZOo{e++SG2FwfAB=t~g3KX!Vq;O0 z;aeg9ImFgP^DP5hw@S_#%voFoC*;Ke`3 zp|bKAduY=rGf7hj%W=mrcTt}Z6)+KCtQqYzTY_b)Dc3;PU(u2^_f#W+h3@X)Ood=T zDKC?~>3iDyrl+bK)}7h)u#?&ON}4HkNXjMeBu^!Il3K~IL?9h6-7LKh+@;^7-=#04 z52dH1yQFKSd!+ZIYU$?A0C10ftS7iHM1E;thVpNfQ`=&6S@*a?5l)PbD5sUM{^qxM zH2BO47!`af)GfR#Tpd0lyeRZ>@Ib(8U$mE(0Kx5ImQfpt!MFlcJ$xKA$yMOUx6iO| zuoE3g&U#lXGz!s$D#dmX;FKWxXtz`jkN;WV>6ze-^F8hN&HrVw13u@49Ps$Lns_eXWz#@#-_{7uD~o-&jAoo?Ty4x3vydcM2HQz5%{h zGI&9)!S9FfB_EP^qGyQkC!fUiW*O*bDH`yX9f2f5YwcUiD&1t&4MlaI zu9GCD$x(N~NYOOxl<*IUXAO zU$k%Jy)gHX_knZ$-F>ZIB+o42TlaB%B+tYla7MC^v&3%cZV#9;29FU;N73$4pky|f z_#ehpA~i6htIJ+vsWNJGnHn)@hv*gO2X^%TmM@ZL%Xi6#qA4U1IU zHB?p+Ek`$?8JGx+8>SE)iJpg=j5NWQ z!5%?=IP>h6teeeKjhXsv?FRLyVfUfWgL@T=2X^(pl*0gpySZ;J$UpAuW%d5*$?2KV zlL($UJ*R=|B%}9JZ)D%wzVV;~woQ)ff6za30H-Kc+#9^2ygT%B7_DBe5owp`VaDgC zaTcTXf?eo*=@LQ@!s_6j$iGk@K{F%+cMnejjusZBfO?F+iaC?Df%6|v=f2LP-|K*H zXn-{6LTG$MK~&s`4RPy6aub&%jY)o$d^33<=^e7hb{~}7XqPvi zY}j2Zud1vFDGvtz@}ko1W%of#b6ItL?S+P;&HuK25S2?yyC3&W?ax!xE8h;st50f< zX)|;Ux+wih(5t$lzY1)>Z}oj(pMS{^ZL}Go<_yb6>r(qjX9{Ek>?y*4io@>4p9dV0 zl~g4CD5ITebAzxI>`$D(xgk6q?+5>;`(42wA;BGm<%n`i3|iHy(W) z;RQ3f$j()Ev30eDZvJE309N8hTA}8$NIf!{r=RKL{GtYDG zo7tr^k59Kvp-nQ5zdwdPYHr%`q>J%8V`fJLfNaSP?>Ry@UaQ+}+A>lkj)W3JKRd2k zHW)@~P(#iAH+mO$@`yDwm$e`LyG6 z($@vw-~XKWC!jF4WM8?f>VI{|n{Kv=fZeA~wr?LO+=nAqOh#=&oP#}vymnUDVYca(64N4Ml3|Aa zf4VWc7~N`}RQE#v4oq%#nM157yTd_;!~#0WX4G!XWSj%Pp7;+bmAsEUhJ2GWn|KkQ zgk6R5gP(BSuL=sMg> z?Qa<@QPt_BCbJC(VIuVC*Z6euE!unLK{lQ@$vsI};X(33d*AeK@&4*P$@{3+Do>*@ zO)!?v;XY$=nMY|&P@J$XF^J-)p^daw5V zClkx34OA-@D^)`WR7lMhZJExZXB#=DLDMVq6pP%l%WAWpwfWiG?e`t0o#$Q8APQ(Y z@K^buo}(kMzrksxhB%I#OCiuw=nEKAm~^)%Zgw{|%jx#YE!6EavzdWsq|y)5`lxe( zk*b+C6xS)7)&^e6JY`Y zQQ|9{1zQbibf!DL*)pv^%-N=D!$kcbVEtaKx;pf7@Ht3xuj`BLL3FiAN<`xJgtm^B z-sb7eS

nfxoBC-aZ|$oBF!7eZ&EwlB(*^tkJ(QzA`TZW|lsC1u&(fT^n8b;J$wx z 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

&i))(Hlk`zy}S8WN3A$nQLDRUJ>}T~Ps2VV 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

*WKKMY&o-&HiNtlABcVr!-2Nh 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 bool: + return self.readable and self.value is not None + + +def parse_volume(key: str, raw: bytes | None) -> int | None: + if key not in SPECS: + raise KeyError(key) + if raw is None: + return AUTO + if not raw or len(raw) > MAX_RAW_BYTES or not raw.isascii() or not raw.isdigit(): + return None + value = int(raw) + minimum = SPECS[key][1] + return value if value == AUTO or minimum <= value <= 100 else None + + +def read_volume(params: Any, key: str) -> SavedVolume: + if key not in SPECS: + raise KeyError(key) + try: + with Path(params.get_param_path(key)).open("rb") as file: + raw = file.read(MAX_RAW_BYTES + 1) + except FileNotFoundError: + raw = None + except (OSError, ValueError): + return SavedVolume(None, None, False) + if raw is not None and len(raw) > MAX_RAW_BYTES: + return SavedVolume(raw, None, False) + return SavedVolume(raw, parse_volume(key, raw)) + + +def effective_volume(key: str, saved: int | None, ambient: float, *, immediate_ramp: float | None = None) -> float: + """Return gain without changing the stock Auto path or immediate-warning ramp.""" + if key not in SPECS: + raise KeyError(key) + if saved is None or saved == AUTO: + return ambient + selected = saved / 100.0 + return max(selected, immediate_ramp) if immediate_ramp is not None else selected diff --git a/openpilot/starpilot/audio/availability_warning.py b/openpilot/starpilot/audio/availability_warning.py new file mode 100644 index 0000000000..12116c9480 --- /dev/null +++ b/openpilot/starpilot/audio/availability_warning.py @@ -0,0 +1,21 @@ +"""Bounded delivery of an already selected availability chime, independent of authority.""" +MAX_DELIVERY_NS = 400_000_000 + +class AvailabilityWarningDelivery: + def __init__(self): + self.context = None + self.until_ns = 0 + self.last_ns = 0 + + def observe(self, *, session, drive, now_ns, selected, requested_until_ns): + context = (session, drive) if session and drive > 0 else None + if context != self.context or now_ns < self.last_ns or context is None: + self.until_ns = 0 + self.context, self.last_ns = context, now_ns + if context is not None and selected and now_ns <= requested_until_ns: + self.until_ns = max(self.until_ns, min(requested_until_ns, now_ns + MAX_DELIVERY_NS)) + + def pending(self, *, session, drive, now_ns, audible_none, priority, low_priority): + return (self.context is not None and self.context == (session, drive) and drive > 0 and + self.last_ns <= now_ns <= self.until_ns and + audible_none and priority <= low_priority) diff --git a/openpilot/starpilot/audio/axis_alerts.py b/openpilot/starpilot/audio/axis_alerts.py new file mode 100644 index 0000000000..18ab5ab55c --- /dev/null +++ b/openpilot/starpilot/audio/axis_alerts.py @@ -0,0 +1,66 @@ +from openpilot.cereal import log +from openpilot.starpilot.aol.runtime import current_intent +from openpilot.starpilot.aol.wire import INTENT_SERVICE + +AudibleAlert = log.SelfdriveState.AudibleAlert +COALESCE_NS = 250_000_000 + + +class _Transition: + def __init__(self): + self.session = None + self.sequence = 0 + self.active = False + self.observed_at = 0 + + def update(self, session, sequence: int, active: bool, now_ns: int) -> int: + changed = 0 + if session is None: + self.session = None + elif session != self.session or now_ns - self.observed_at > COALESCE_NS: + self.session, self.sequence, self.active, self.observed_at = session, sequence, active, now_ns + elif sequence > self.sequence: + changed = int(active) - int(self.active) + self.sequence, self.active, self.observed_at = sequence, active, now_ns + return changed + + +class AxisAlerts: + def __init__(self): + self.lateral = _Transition() + self.longitudinal = _Transition() + self.last_sound = AudibleAlert.none + self.last_sound_at = 0 + self.native_sound = AudibleAlert.none + + def update(self, sm, native_sound: int, now_ns: int) -> int: + intent = (current_intent(sm, car_state_ns=int(sm.logMonoTime[INTENT_SERVICE]), now_ns=now_ns) + if INTENT_SERVICE in sm.logMonoTime else None) + # Engagement is persistent driver intent. Temporary native permission loss, + # pedal override and output suppression must not replay engagement sounds. + state_ns = int(sm.logMonoTime.get('selfdriveState', 0)) + state_fresh = (state_ns > 0 and 0 <= now_ns - state_ns <= 100_000_000 and + sm.valid['selfdriveState'] and sm.alive['selfdriveState']) + lateral_known = intent is not None and (intent.pauseLateral or intent.lateralArmed or state_fresh) + lateral = self.lateral.update(intent.producerSessionId if lateral_known else None, intent.sequence if intent else 0, + bool(intent and not intent.pauseLateral and + (intent.lateralArmed or (state_fresh and sm['selfdriveState'].active))), now_ns) + longitudinal = self.longitudinal.update( + intent.producerSessionId if intent is not None and state_fresh else None, + intent.sequence if intent is not None else 0, + bool(intent is not None and state_fresh and sm['selfdriveState'].enabled and not intent.pauseLongitudinal), now_ns) + extra_sound = (AudibleAlert.disengage if min(lateral, longitudinal) < 0 else + AudibleAlert.engage if max(lateral, longitudinal) > 0 else AudibleAlert.none) + + if native_sound != AudibleAlert.none: + if native_sound != self.native_sound and native_sound in (AudibleAlert.engage, AudibleAlert.disengage): + self.last_sound, self.last_sound_at = native_sound, now_ns + self.native_sound = native_sound + return native_sound + + self.native_sound = native_sound + if extra_sound != AudibleAlert.none: + if extra_sound == self.last_sound and now_ns - self.last_sound_at < COALESCE_NS: + return AudibleAlert.none + self.last_sound, self.last_sound_at = extra_sound, now_ns + return extra_sound diff --git a/openpilot/starpilot/audio/catalog.json b/openpilot/starpilot/audio/catalog.json new file mode 100644 index 0000000000..a7304bba23 --- /dev/null +++ b/openpilot/starpilot/audio/catalog.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "packs": [ + { + "id": "duck", + "name": "Duck", + "path": "theme/Themes/duck/sounds.zip", + "size": 75095, + "sha256": "c37c1f0f177a08a79b4eae723392bedb39b2b99d49a4226b0ca5141a00d523f8" + }, + { + "id": "old_engage_sounds", + "name": "Old Engage Sounds", + "path": "theme/Themes/old_engage_sounds/sounds.zip", + "size": 376387, + "sha256": "2fff703ee69452789ec7884e6447c146a0f45c6fa39c70455fd9db88e15ebb54" + }, + { + "id": "tesla", + "name": "Tesla", + "path": "theme/Themes/tesla/sounds.zip", + "size": 237831, + "sha256": "98a13264d9c5c61f0f9f2a8c5e073aa32b3c3679c671c3cb520f9c2c443c79eb" + }, + { + "id": "weeb", + "name": "Weeb", + "path": "theme/Themes/weeb/sounds.zip", + "size": 1139378, + "sha256": "e367fdfc0d3d6604183e779180b281471f2135a2be5e75b9766a52c03696ba36" + } + ] +} diff --git a/openpilot/starpilot/audio/default_enrollment.py b/openpilot/starpilot/audio/default_enrollment.py new file mode 100644 index 0000000000..47335f1157 --- /dev/null +++ b/openpilot/starpilot/audio/default_enrollment.py @@ -0,0 +1,79 @@ +"""Enroll a settings namespace in the built-in sounds once, before consumers start.""" + +from pathlib import Path +import json +import os +import tempfile + +from openpilot.starpilot.state_migration import ( + _atomic_write, _fsync_dir, _outside_params, _params_lock, _private_dir, _read_value, canonical_json, digest, +) + + +def _write_selection(namespace): + fd, temporary = tempfile.mkstemp(prefix=".sound-default-", dir=namespace.parent) + try: + with os.fdopen(fd, "wb") as output: + output.write(b"starpilot") + output.flush() + os.fsync(output.fileno()) + os.replace(temporary, namespace / "SoundPack") + _fsync_dir(namespace) + finally: + Path(temporary).unlink(missing_ok=True) + + +def enroll_default_sounds(params, storage) -> bool: + namespace, storage = Path(params.get_param_path()).absolute(), Path(storage).absolute() + _outside_params(namespace, storage) + with _params_lock(namespace): + identity = {"version": 1, "namespace": str(namespace), "target": str(namespace.resolve(strict=True))} + marker_dir = storage / "sound-default-once" + new_directory = not marker_dir.exists() + _private_dir(marker_dir) + if new_directory: + _fsync_dir(storage) + marker = marker_dir / f"{digest(str(namespace).encode())}.json" + complete = {**identity, "state": "complete"} + try: + encoded = _read_value(marker) + except FileNotFoundError: + encoded = None + previous = json.loads(encoded) if encoded is not None else None + if previous is not None: + if not isinstance(previous, dict) or type(previous.get("version")) is not int or previous["version"] != 1 or encoded != canonical_json(previous): + raise ValueError("Invalid sound enrollment marker") + if previous == complete: + return False + state = previous.get("state") + required = {*identity, "state"} | ({"before_sha256"} if state == "pending" else set()) + if state not in ("pending", "complete") or set(previous) != required: + raise ValueError("Invalid sound enrollment marker") + if previous["namespace"] != identity["namespace"] or not isinstance(previous["target"], str) or not Path(previous["target"]).is_absolute(): + raise ValueError("Invalid sound enrollment identity") + before = previous.get("before_sha256") + if before is not None and (not isinstance(before, str) or len(before) != 64 or any(c not in "0123456789abcdef" for c in before)): + raise ValueError("Invalid sound enrollment source") + if any(previous[key] != value for key, value in identity.items()): + previous = None + + selection = namespace / "SoundPack" + try: + raw = _read_value(selection) + except FileNotFoundError: + raw = None + current = digest(raw) if raw is not None else None + if previous is None: + previous = {**identity, "state": "pending", "before_sha256": current} + _atomic_write(marker, canonical_json(previous)) + elif current != previous["before_sha256"] and raw != b"starpilot": + # A later choice takes precedence over an interrupted startup enrollment. + _atomic_write(marker, canonical_json(complete)) + return False + + if raw != b"starpilot": + _write_selection(namespace) + if _read_value(selection) != b"starpilot": + raise ValueError("Sound enrollment could not verify its selection") + _atomic_write(marker, canonical_json(complete)) + return True diff --git a/openpilot/starpilot/audio/downloads.py b/openpilot/starpilot/audio/downloads.py new file mode 100644 index 0000000000..d97f371ec0 --- /dev/null +++ b/openpilot/starpilot/audio/downloads.py @@ -0,0 +1,285 @@ +"""Bounded installation of published sound packs while the car is parked.""" + +import fcntl +import hashlib +import json +import os +from pathlib import Path +import re +import shutil +import stat +import tempfile +import threading +import urllib.request +import uuid +import zipfile + +from openpilot.starpilot.audio.sound_pack import REMOVED_PACKS, cleanup_removed_packs, LEGACY_NAMES, MAX_WAV_BYTES, PACK_ROOT, pack_directory, read_wav + + +ORIGIN = "https://huggingface.co/buckets/StarPilot-Driving/StarPilot-Resources/resolve/" +CATALOG_PATH = Path(__file__).with_name("catalog.json") +MAX_ARCHIVE_BYTES = 64 * 1024 * 1024 +MAX_FILES = 32 +MAX_EXPANDED_BYTES = 96 * 1024 * 1024 +CHUNK = 64 * 1024 +ALLOWED_FILES = {f"{name}.wav" for name in ( + "engage", "disengage", "refuse", "warning", "dm_warning", "pre_alert", "critical", "dm_critical", "prompt_repeat", + "distracted", "engage_tizi", "disengage_tizi", +)} | set(LEGACY_NAMES.values()) +SLUG = re.compile(r"[a-z0-9][a-z0-9_-]{0,63}\Z") +SHA256 = re.compile(r"[0-9a-f]{64}\Z") + + +class SoundDownloadError(Exception): + def __init__(self, message: str, status: int = 400): + super().__init__(message) + self.status = status + + +class _Cancelled(Exception): + pass + + +class SoundDownloads: + def __init__(self, parked, root: Path = PACK_ROOT, catalog_path: Path = CATALOG_PATH, opener=None): + self.parked = parked + self.root = Path(root) + self.opener = opener or urllib.request.urlopen + self._lock = threading.Lock() + self._cancel = threading.Event() + self._closed = False + self._thread = None + self._lock_file = None + self._job: dict | None = None + try: + with Path(catalog_path).open("rb") as source: + raw = source.read(65537) + if len(raw) > 65536: + raise ValueError("catalog too large") + catalog = json.loads(raw) + if not isinstance(catalog, dict) or catalog.get("version") != 1 or not isinstance(catalog.get("packs"), list) or len(catalog["packs"]) > 64: + raise ValueError("unsupported catalog") + packs = {} + for pack in catalog["packs"]: + slug = pack["id"] + if (not isinstance(slug, str) or not SLUG.fullmatch(slug) or slug == "stock" or slug in REMOVED_PACKS or slug in packs or + pack["path"] != f"theme/Themes/{slug}/sounds.zip" or + not isinstance(pack["name"], str) or not 0 < len(pack["name"]) <= 128 or + type(pack["size"]) is not int or not 0 < pack["size"] <= MAX_ARCHIVE_BYTES or + not isinstance(pack["sha256"], str) or not SHA256.fullmatch(pack["sha256"])): + raise ValueError("invalid catalog entry") + packs[slug] = pack + self._packs = packs + cleanup_removed_packs(self.root, parked=self._safe_parked) + except (OSError, ValueError, KeyError, TypeError) as exc: + raise SoundDownloadError("sound catalog unavailable", 503) from exc + + def snapshot(self) -> dict: + with self._lock: + return self._snapshot() + + def _snapshot(self) -> dict: + try: + parked = bool(self.parked()) + except Exception: + parked = False + return { + "parked": parked, + "packs": [{"id": p["id"], "name": p["name"], "installed": pack_directory(p["id"], self.root) is not None} + for p in self._packs.values()], + "job": self._job.copy() if self._job else None, + } + + def action(self, command: str, data: dict) -> dict: + cleanup_removed_packs(self.root, parked=self._safe_parked) + if not isinstance(data, dict): + raise SoundDownloadError("invalid request") + with self._lock: + if self._closed: + raise SoundDownloadError("downloads are unavailable", 503) + if command == "cancel": + if set(data) != {"job"}: + raise SoundDownloadError("invalid request") + if not self._job or data.get("job") != self._job["id"] or self._job["state"] not in ("downloading", "verifying"): + raise SoundDownloadError("download job not active", 409) + self._cancel.set() + elif command == "download": + if set(data) != {"pack"}: + raise SoundDownloadError("invalid request") + slug = data.get("pack") + if not isinstance(slug, str) or slug not in self._packs: + raise SoundDownloadError("unknown sound pack") + if not self._safe_parked(): + raise SoundDownloadError("park the car before downloading", 409) + if self._thread and self._thread.is_alive(): + raise SoundDownloadError("a download is already running", 409) + self._prepare_root() + if (self.root / slug).exists() or (self.root / slug).is_symlink(): + raise SoundDownloadError("sound pack already exists", 409) + try: + descriptor = os.open(self.root / ".sound-download.lock", os.O_RDWR | os.O_CREAT | os.O_NOFOLLOW, 0o600) + if not stat.S_ISREG(os.fstat(descriptor).st_mode): + os.close(descriptor) + raise OSError("unsafe lock file") + lock_file = os.fdopen(descriptor, "r+b") + except OSError as exc: + raise SoundDownloadError("sound storage unavailable", 503) from exc + try: + fcntl.flock(lock_file, fcntl.LOCK_EX | fcntl.LOCK_NB) + except BlockingIOError as exc: + lock_file.close() + raise SoundDownloadError("a download is already running", 409) from exc + if (self.root / slug).exists() or (self.root / slug).is_symlink(): + fcntl.flock(lock_file, fcntl.LOCK_UN) + lock_file.close() + raise SoundDownloadError("sound pack already exists", 409) + self._lock_file = lock_file + self._cancel.clear() + self._job = {"id": uuid.uuid4().hex, "pack": slug, "state": "downloading", "bytes": 0, + "total": self._packs[slug]["size"], "error": None} + self._thread = threading.Thread(target=self._run, args=(self._packs[slug],), daemon=True) + self._thread.start() + return self._snapshot() + else: + raise SoundDownloadError("unknown action") + return self.snapshot() + + def _safe_parked(self) -> bool: + try: + return bool(self.parked()) + except Exception: + return False + + def _prepare_root(self): + try: + if self.root.is_symlink(): + raise OSError("unsafe pack directory") + self.root.mkdir(parents=True, exist_ok=True) + except OSError as exc: + raise SoundDownloadError("sound storage unavailable", 503) from exc + + def _check_active(self): + if self._cancel.is_set() or not self._safe_parked(): + raise _Cancelled() + + def _run(self, pack: dict): + job = self._job + assert job is not None + stage = None + try: + stage = Path(tempfile.mkdtemp(prefix=".sound-download-", dir=self.root)) + archive = stage / "archive.zip" + digest = hashlib.sha256() + with self.opener(ORIGIN + pack["path"], timeout=20) as response: + with archive.open("wb") as target: + remaining = pack["size"] + while remaining: + self._check_active() + chunk = response.read(min(CHUNK, remaining + 1)) + if not chunk or len(chunk) > remaining: + raise ValueError("archive length mismatch") + target.write(chunk) + digest.update(chunk) + remaining -= len(chunk) + with self._lock: + job["bytes"] = pack["size"] - remaining + self._check_active() + if response.read(1): + raise ValueError("archive length mismatch") + with self._lock: + job["state"] = "verifying" + if digest.hexdigest() != pack["sha256"]: + raise ValueError("archive checksum mismatch") + sounds = stage / "sounds" + sounds.mkdir() + self._extract(archive, sounds) + archive.unlink() + with self._lock: + self._check_active() + if (self.root / pack["id"]).exists() or (self.root / pack["id"]).is_symlink(): + raise ValueError("sound pack already exists") + os.rename(stage, self.root / pack["id"]) + stage = None + job["state"] = "complete" + except _Cancelled: + with self._lock: + job["state"] = "cancelled" + except Exception as exc: + with self._lock: + if self._cancel.is_set() or not self._safe_parked(): + job["state"] = "cancelled" + else: + job["state"] = "failed" + job["error"] = str(exc) or "download failed" + finally: + with self._lock: + lock_file, self._lock_file = self._lock_file, None + if stage is not None: + shutil.rmtree(stage, ignore_errors=True) + if lock_file is not None: + fcntl.flock(lock_file, fcntl.LOCK_UN) + lock_file.close() + + def _extract(self, archive: Path, sounds: Path): + with zipfile.ZipFile(archive) as source: + members = source.infolist() + if not 0 < len(members) <= MAX_FILES: + raise ValueError("invalid sound archive") + wrapped = any(member.filename == "sounds/" for member in members) + raw_names = set() + names = set() + metadata = set() + total = 0 + audio = [] + for member in members: + self._check_active() + name = member.filename + mode = (member.external_attr >> 16) & 0xffff + if (name in raw_names or member.flag_bits & 1 or + member.compress_type not in (zipfile.ZIP_STORED, zipfile.ZIP_DEFLATED)): + raise ValueError("invalid sound archive member") + raw_names.add(name) + if (name == "sounds/" and wrapped and member.is_dir() and member.file_size == 0 and + (mode == 0 or stat.S_IFMT(mode) in (0, stat.S_IFDIR))): + continue + if wrapped and re.fullmatch(r"__MACOSX/sounds/\._[A-Za-z0-9_]+\.wav", name): + if member.is_dir() or member.file_size > 512 or (mode and stat.S_IFMT(mode) not in (0, stat.S_IFREG)): + raise ValueError("invalid sound archive member") + metadata.add(name.removeprefix("__MACOSX/sounds/._")) + continue + filename = name.removeprefix("sounds/") if wrapped else name + if (name != ("sounds/" + filename if wrapped else filename) or filename not in ALLOWED_FILES or + filename in names or member.is_dir() or (mode and stat.S_IFMT(mode) not in (0, stat.S_IFREG)) or + member.file_size <= 0 or member.file_size > MAX_WAV_BYTES): + raise ValueError("invalid sound archive member") + names.add(filename) + audio.append((member, filename)) + total += member.file_size + if total > MAX_EXPANDED_BYTES: + raise ValueError("sound archive too large") + if not audio: + raise ValueError("sound archive contains no WAV files") + if not metadata <= names: + raise ValueError("invalid sound archive metadata") + for member, filename in audio: + with source.open(member) as data, (sounds / filename).open("xb") as output: + remaining = member.file_size + while remaining: + self._check_active() + chunk = data.read(min(CHUNK, remaining + 1)) + if not chunk or len(chunk) > remaining: + raise ValueError("sound file length mismatch") + output.write(chunk) + remaining -= len(chunk) + if data.read(1): + raise ValueError("sound file length mismatch") + read_wav(sounds / filename) + + def close(self): + with self._lock: + self._closed = True + self._cancel.set() + thread = self._thread + if thread is not None: + thread.join(timeout=2) diff --git a/openpilot/starpilot/audio/native/SConscript b/openpilot/starpilot/audio/native/SConscript new file mode 100644 index 0000000000..32bd6b6fe5 --- /dev/null +++ b/openpilot/starpilot/audio/native/SConscript @@ -0,0 +1,6 @@ +Import('env', 'arch') + +if arch == "comma_arm64": + native_audio = env.Clone() + native_audio.Append(CFLAGS=['-std=c11']) + native_audio.SharedLibrary('audio_mixer', ['audio_mixer.c']) diff --git a/openpilot/starpilot/audio/native/audio_mixer.c b/openpilot/starpilot/audio/native/audio_mixer.c new file mode 100644 index 0000000000..f1cae365a0 --- /dev/null +++ b/openpilot/starpilot/audio/native/audio_mixer.c @@ -0,0 +1,115 @@ +// Bounded mono float32 alert renderer. PCM allocation/publication/reclamation occur on the control thread only. +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include + +#define SLOTS 16 +#define MAX_PCM 1440000U +#define MAX_FRAMES 4096U +_Static_assert(ATOMIC_LONG_LOCK_FREE == 2 && ATOMIC_LLONG_LOCK_FREE == 2 && ATOMIC_POINTER_LOCK_FREE == 2, "Audio requires lock-free atomics"); +struct pa_time { double input_adc, current, output_dac; }; +struct bank { uint64_t revision; unsigned lengths[SLOTS]; float *pcm[SLOTS]; }; +struct audio { + struct bank *active; + _Atomic(struct bank *) pending, retired; + _Atomic uint64_t command_seq, command[8], status_seq, status[10]; + uint64_t applied_seq, restart, frame, stop_frame; + uint64_t status_count, underflows, last_flags; + unsigned alert, sound; + int loops; + float gain; + bool pending_stop; + atomic_flag rendering; +}; +static void free_bank(struct bank *b) { if (b) { for(unsigned i=0;ipcm[i]); free(b); } } +unsigned audio_mixer_abi(void) { return 3; } +struct audio *audio_create(void) { struct audio *a=calloc(1,sizeof(*a)); if(a) { *a=(struct audio){.rendering=ATOMIC_FLAG_INIT,.loops=-1}; } return a; } +void audio_collect(struct audio *a) { free_bank(atomic_exchange(&a->retired,NULL)); } +int audio_can_publish(struct audio *a) { return a && atomic_load(&a->pending)==NULL; } +int audio_publish_bank(struct audio *a,const float *const *pcm,const unsigned *lengths,unsigned count,uint64_t revision) { + if(!a || !revision || count>SLOTS || atomic_load(&a->pending)) return 0; + audio_collect(a); + struct bank *b=calloc(1,sizeof(*b)); if(!b) return 0; b->revision=revision; + for(unsigned i=0;iMAX_PCM || !pcm[i]) { free_bank(b); return 0; } + b->pcm[i]=malloc((size_t)lengths[i]*sizeof(float)); if(!b->pcm[i]) {free_bank(b);return 0;} + memcpy(b->pcm[i],pcm[i],(size_t)lengths[i]*sizeof(float)); b->lengths[i]=lengths[i]; + } + atomic_store(&a->pending,b); return 1; +} +uint64_t audio_command(struct audio *a,unsigned alert,unsigned sound,int loops,int stop,float gain,uint64_t restart,uint64_t bank_revision,uint64_t stop_frame) { + if(!a || sound>=SLOTS || loops < -1 || loops==0 || !isfinite(gain) || gain<0 || gain>1) return 0; + uint32_t bits;memcpy(&bits,&gain,sizeof(bits)); + uint64_t seq=atomic_load(&a->command_seq);atomic_store(&a->command_seq,seq+1); + uint64_t values[8]={alert,sound,(uint64_t)(int64_t)loops,stop!=0,bits,restart,bank_revision,stop_frame}; + for(unsigned i=0;i<8;i++) atomic_store(&a->command[i],values[i]); + atomic_store(&a->command_seq,seq+2); return seq+2; +} +static void accept_command(struct audio *a) { + uint64_t seq=atomic_load(&a->command_seq),v[8]; + if(seq==a->applied_seq || (seq&1)) return; + for(unsigned i=0;i<8;i++) v[i]=atomic_load(&a->command[i]); + if(seq!=atomic_load(&a->command_seq)) return; + if(!a->active || v[6]!=a->active->revision) { + struct bank *next=atomic_load(&a->pending); + if(!next || next->revision!=v[6] || atomic_load(&a->retired)) return; + next=atomic_exchange(&a->pending,NULL); + struct bank *old=a->active;a->active=next;atomic_store(&a->retired,old); + } + if(v[5]!=a->restart) { a->frame=0;a->restart=v[5]; } + a->alert=(unsigned)v[0];a->sound=(unsigned)v[1];a->loops=(int)(int64_t)v[2]; + a->pending_stop=v[3]!=0;a->stop_frame=v[7]; + // The main thread may publish dismissal after this cursor has already crossed + // its observed loop endpoint. Never replay an additional loop in that case. + if(a->pending_stop && a->frame>=a->stop_frame) { a->alert=0;a->pending_stop=false; } + uint32_t bits=(uint32_t)v[4];memcpy(&a->gain,&bits,sizeof(bits));a->applied_seq=seq; +} +// Initialization only: caller has not yet opened/started a PortAudio stream. +// Admit the initial bank without rendering samples or publishing fake timing. +int audio_prepare(struct audio *a) { + if(!a) return 0; + accept_command(a); + return a->active!=NULL && a->applied_seq!=0; +} +static int audio_callback(const void *input,void *output,unsigned long frames,const struct pa_time *t,unsigned long flags,void *user) { + (void)input;(void)t;struct audio *a=user; + if(!a || !output || frames>MAX_FRAMES || atomic_flag_test_and_set(&a->rendering)) return 2; + accept_command(a); + float *out=output;memset(out,0,frames*sizeof(float)); + unsigned length=a->active?a->active->lengths[a->sound]:0; + if(a->alert && !length) { atomic_flag_clear(&a->rendering);return 2; } + unsigned written=0; + while(a->alert && writtenloops<0 || a->frame/length<(uint64_t)a->loops)) { + unsigned pos=(unsigned)(a->frame%length),n=length-pos; + if(n>frames-written)n=(unsigned)frames-written; + memcpy(out+written,a->active->pcm[a->sound]+pos,n*sizeof(float));written+=n;a->frame+=n; + if(a->pending_stop && a->frame%length==0) { a->alert=0;a->pending_stop=false;break; } + } + for(unsigned i=0;igain; + // Only detached stream health and playback cursor cross the callback boundary. + uint64_t status_seq=atomic_load(&a->status_seq);atomic_store(&a->status_seq,status_seq+1); + if(flags) { a->status_count++;a->last_flags=flags; } + if(flags&4U) a->underflows++; + atomic_store(&a->status[0],a->frame);atomic_store(&a->status[1],a->alert);atomic_store(&a->status[2],a->pending_stop); + atomic_store(&a->status[3],a->status_count);atomic_store(&a->status[4],a->underflows);atomic_store(&a->status[5],a->last_flags); + atomic_store(&a->status[6],1U);atomic_store(&a->status[7],a->applied_seq); + atomic_store(&a->status[8],a->restart);atomic_store(&a->status[9],a->sound); + atomic_store(&a->status_seq,status_seq+2); + atomic_flag_clear(&a->rendering);return 0; +} +uintptr_t audio_callback_address(void) { return (uintptr_t)&audio_callback; } +int audio_status(struct audio *a,uint64_t *out) { + if(!a || !out) return 0; + for(unsigned attempt=0;attempt<3;attempt++) { + uint64_t seq=atomic_load(&a->status_seq);if(seq&1)continue; + for(unsigned i=0;i<10;i++)out[i]=atomic_load(&a->status[i]); + if(seq==atomic_load(&a->status_seq))return 1; + } + return 0; +} +// Caller MUST stop/close PortAudio before destroying this stream-owned mixer. +void audio_destroy(struct audio *a) { if(a) {free_bank(a->active);free_bank(atomic_load(&a->pending));free_bank(atomic_load(&a->retired));free(a);} } diff --git a/openpilot/starpilot/audio/sound_pack.py b/openpilot/starpilot/audio/sound_pack.py new file mode 100644 index 0000000000..e66ddc5036 --- /dev/null +++ b/openpilot/starpilot/audio/sound_pack.py @@ -0,0 +1,290 @@ +"""Installed alert WAV packs.""" + +from pathlib import Path +import re +import os +import stat +import wave + +import numpy as np + +PACK_ROOT = Path("/data/themes/theme_packs") +DEFAULT_PACK = "starpilot" +BUILTIN_FILES = { + "engage.wav": "engage.wav", "disengage.wav": "disengage.wav", + "refuse.wav": "warning_1.wav", "warning.wav": "warning_1.wav", "pre_alert.wav": "warning_1.wav", + "dm_warning.wav": "warning_2.wav", "critical.wav": "warning_2.wav", "dm_critical.wav": "warning_3.wav", +} +REMOVED_PACKS = frozenset(("frog", "frogpilot", "stalin")) +MAX_WAV_BYTES = 48000 * 2 * 30 + 4096 +LEGACY_NAMES = { + "warning.wav": "prompt.wav", "dm_warning.wav": "prompt_distracted.wav", + "critical.wav": "warning_soft.wav", "dm_critical.wav": "warning_immediate.wav", +} + + +def pack_directory(name: str, root: Path = PACK_ROOT) -> Path | None: + if name in (DEFAULT_PACK, "stock") or name.casefold() in REMOVED_PACKS or not re.fullmatch(r"[A-Za-z0-9][A-Za-z0-9_~.-]{0,127}", name): + return None + directory = root / name / "sounds" + try: + if any(path.is_symlink() for path in (root, root / name, directory)) or not directory.is_dir(): + return None + return directory + except OSError: + return None + + +def installed_packs(root: Path = PACK_ROOT) -> tuple[str, ...]: + try: + return (DEFAULT_PACK, "stock") + tuple(sorted(path.name for path in root.iterdir() if pack_directory(path.name, root) is not None)) + except OSError: + return (DEFAULT_PACK, "stock") + + +def read_selection(params) -> tuple[bytes | None, str, bool]: + try: + try: + with Path(params.get_param_path("SoundPack")).open("rb") as source: + raw = source.read(129) + except FileNotFoundError: + raw = None + if raw is not None and len(raw) > 128: + return raw, DEFAULT_PACK, False + try: + name = DEFAULT_PACK if raw is None else raw.decode("utf-8") + except UnicodeError: + return raw, DEFAULT_PACK, True + if name.casefold() in REMOVED_PACKS: + name = DEFAULT_PACK + valid = name in (DEFAULT_PACK, "stock") or re.fullmatch(r"[A-Za-z0-9][A-Za-z0-9_~.-]{0,127}", name) is not None + return raw, name if valid else DEFAULT_PACK, True + except (OSError, KeyError, TypeError, ValueError, UnicodeError): + return None, DEFAULT_PACK, False + + +def migrate_removed_selection(params, root: Path = PACK_ROOT) -> bool: + """Persist the fork default when a saved pack no longer identifies a valid choice.""" + from openpilot.starpilot.saved_document import commit_exact + raw, name, readable = read_selection(params) + if not readable or raw == DEFAULT_PACK.encode(): + return False + legacy_default = raw is None or raw.strip().lower() in (b"", b"default", b"frog", b"frogpilot") + valid_choice = name == "stock" or pack_directory(name, root) is not None + if not legacy_default and valid_choice: + return False + return commit_exact(params, key="SoundPack", max_bytes=128, raw=DEFAULT_PACK.encode(), expected=raw, + authorized=lambda: True, temp_prefix=".sound-pack-migration-").verified + + +def cleanup_removed_packs(root: Path = PACK_ROOT, *, parked) -> tuple[str, ...]: + """Bounded parked migration over captured directory descriptors. + + Enumerate at most 256 root entries and 64 pack entries, depth 4 / 96 MiB. + Keep captured descriptors, never follow links, and check entry identities + before mutations. External renames between check and syscall remain a POSIX + race; symlink targets are never traversed. + Concurrent growth/revocation leaves remaining obsolete files for a later retry. + """ + def safe(): + try: + return bool(parked()) + except Exception: + return False + + def inode(value): + return value.st_dev, value.st_ino + + def revision(value): + return inode(value), value.st_mtime_ns, value.st_ctime_ns + + removed, opened = [], [] + try: + if not safe() or root.is_symlink(): + return () + root_fd = os.open(root, os.O_RDONLY | os.O_DIRECTORY | os.O_NOFOLLOW) + opened.append(root_fd) + root_identity = inode(os.fstat(root_fd)) + names = [] + with os.scandir(root_fd) as entries: + for entry in entries: + if len(names) == 256: + return () + names.append(entry.name) + for name in names: + if name.casefold() not in REMOVED_PACKS or not safe(): + continue + expected = os.stat(name, dir_fd=root_fd, follow_symlinks=False) + + def guard(name=name, expected=expected): + return (safe() and inode(root.lstat()) == root_identity and + inode(os.stat(name, dir_fd=root_fd, follow_symlinks=False)) == inode(expected)) + + if stat.S_ISLNK(expected.st_mode): + if guard(): + os.unlink(name, dir_fd=root_fd) + removed.append(name) + continue + if not stat.S_ISDIR(expected.st_mode): + continue + pack_fds, budget = [], [0, 0] + try: + pack_fd = os.open(name, os.O_RDONLY | os.O_DIRECTORY | os.O_NOFOLLOW, dir_fd=root_fd) + pack_fds.append(pack_fd) + if inode(os.fstat(pack_fd)) != inode(expected): + continue + + def plan(directory_fd, depth, *, budget=budget, pack_fds=pack_fds, guard=guard): + if depth > 4 or not guard(): + raise ValueError('cleanup depth or authority') + node = [directory_fd, revision(os.fstat(directory_fd)), []] + with os.scandir(directory_fd) as entries: + for entry in entries: + budget[0] += 1 + if budget[0] > 64: + raise ValueError('cleanup entry bound') + saved = os.stat(entry.name, dir_fd=directory_fd, follow_symlinks=False) + child = None + if stat.S_ISDIR(saved.st_mode): + child_fd = os.open(entry.name, os.O_RDONLY | os.O_DIRECTORY | os.O_NOFOLLOW, dir_fd=directory_fd) + pack_fds.append(child_fd) + if inode(os.fstat(child_fd)) != inode(saved): + raise ValueError('cleanup inode changed') + child = plan(child_fd, depth + 1) + elif not (stat.S_ISREG(saved.st_mode) or stat.S_ISLNK(saved.st_mode)): + raise ValueError('cleanup unexpected entry') + else: + budget[1] += saved.st_size + if budget[1] > 96 * 1024 * 1024: + raise ValueError('cleanup byte bound') + node[2].append((entry.name, saved, child)) + if revision(os.fstat(directory_fd)) != node[1]: + raise ValueError('cleanup directory changed') + return node + + tree = plan(pack_fd, 1) + + def same_entries(directory_fd, expected_names): + observed = set() + with os.scandir(directory_fd) as entries: + for entry in entries: + if len(observed) == 64: + return False + observed.add(entry.name) + return observed == expected_names + + def remove(node, *, guard=guard): + directory_fd, _, children = node + for index, (entry_name, saved, child) in enumerate(children): + expected_names = {item[0] for item in children[index:]} + if (not guard() or not same_entries(directory_fd, expected_names) or + revision(os.fstat(directory_fd)) != node[1]): + raise ValueError('cleanup authority or growth') + current = os.stat(entry_name, dir_fd=directory_fd, follow_symlinks=False) + if revision(current) != revision(saved): + raise ValueError('cleanup replacement entry') + if child is not None: + remove(child) + if not guard() or inode(os.stat(entry_name, dir_fd=directory_fd, follow_symlinks=False)) != inode(saved): + raise ValueError('cleanup replacement directory') + os.rmdir(entry_name, dir_fd=directory_fd) + else: + os.unlink(entry_name, dir_fd=directory_fd) + node[1] = revision(os.fstat(directory_fd)) + if (not guard() or not same_entries(directory_fd, set()) or + revision(os.fstat(directory_fd)) != node[1]): + raise ValueError('cleanup authority or growth') + + remove(tree) + if guard(): + os.rmdir(name, dir_fd=root_fd) + removed.append(name) + except (OSError, ValueError): + pass + finally: + for descriptor in reversed(pack_fds): + os.close(descriptor) + except (OSError, TypeError, ValueError): + pass + finally: + for descriptor in reversed(opened): + os.close(descriptor) + return tuple(removed) + + +def read_wav(path: Path) -> np.ndarray: + if path.is_symlink() or not path.is_file() or path.stat().st_size > MAX_WAV_BYTES: + raise ValueError("invalid WAV file") + with wave.open(str(path), "rb") as source: + frames = source.getnframes() + if (source.getnchannels(), source.getsampwidth(), source.getframerate(), source.getcomptype()) != (1, 2, 48000, "NONE"): + raise ValueError("invalid WAV format") + if not 0 < frames <= 48000 * 30: + raise ValueError("invalid WAV duration") + raw = source.readframes(frames) + if len(raw) != frames * 2: + raise ValueError("truncated WAV") + result = np.frombuffer(raw, dtype=np.int16).astype(np.float32) / (2**16/2) + result.flags.writeable = False + return result + + +class SoundPackLoader: + def __init__(self, params, stock: Path, root: Path = PACK_ROOT): + self.params, self.stock, self.root = params, stock, root + self.signature = None + self.checked_at = float("-inf") + self.stock_sounds: dict[str, np.ndarray] = {} + self.builtin_sounds: dict[str, np.ndarray] = {} + + def is_builtin(self, samples: np.ndarray) -> bool: + return any(samples is loaded for loaded in self.builtin_sounds.values()) + + def refresh(self, filenames: tuple[str, ...], now: float) -> dict[str, np.ndarray] | None: + if 0 <= now - self.checked_at < 1.0: + return None + self.checked_at = now + raw, name, readable = read_selection(self.params) + directory = pack_directory(name, self.root) if readable else None + paths = tuple(directory / candidate for filename in filenames + for candidate in dict.fromkeys((LEGACY_NAMES.get(filename, filename), filename))) if directory else () + paths += tuple(self.stock.parent / "sounds_starpilot" / BUILTIN_FILES[filename] + for filename in filenames if filename in BUILTIN_FILES) + metadata = [] + for path in paths: + try: + stat = path.lstat() + metadata.append((stat.st_ino, stat.st_size, stat.st_mtime_ns, stat.st_ctime_ns)) + except OSError: + metadata.append(None) + signature = (raw, directory, filenames, tuple(metadata)) + if signature == self.signature: + return None + result = {} + builtin_loaded = {} + for filename in filenames: + selected = None + if (name == DEFAULT_PACK or not readable) and filename in BUILTIN_FILES: + builtin = BUILTIN_FILES[filename] + try: + if builtin not in builtin_loaded: + builtin_loaded[builtin] = read_wav(self.stock.parent / "sounds_starpilot" / builtin) + selected = builtin_loaded[builtin] + self.builtin_sounds[builtin] = selected + except (OSError, EOFError, ValueError, wave.Error): + # A damaged optional pack must not stop working stock alerts. + pass + if selected is None: + if filename not in self.stock_sounds: + self.stock_sounds[filename] = read_wav(self.stock / filename) + selected = self.stock_sounds[filename] + if directory: + for candidate in dict.fromkeys((LEGACY_NAMES.get(filename, filename), filename)): + try: + selected = read_wav(directory / candidate) + break + except (OSError, EOFError, ValueError, wave.Error): + pass + result[filename] = selected + self.signature = signature + return result diff --git a/openpilot/starpilot/audio/tests/test_axis_alerts.py b/openpilot/starpilot/audio/tests/test_axis_alerts.py new file mode 100644 index 0000000000..3c5b3125dd --- /dev/null +++ b/openpilot/starpilot/audio/tests/test_axis_alerts.py @@ -0,0 +1,226 @@ +from types import SimpleNamespace +from unittest.mock import Mock, patch + +import pytest + +from opendbc.car.structs import car +from openpilot.cereal import messaging +from openpilot.common.prefix import OpenpilotPrefix +from openpilot.selfdrive.car.card import Car +from openpilot.selfdrive.ui.soundd import Soundd +from openpilot.starpilot.aol.intent import AOL_TOGGLE, AolCardIntent, AolSettings +from openpilot.starpilot.aol.runtime import decide_axes +from openpilot.starpilot.aol.wire import INTENT_SERVICE, IntentState, decode_intent, encode_intent +from openpilot.starpilot.audio.axis_alerts import AudibleAlert, AxisAlerts + + +class AudioFixture: + def __init__(self): + self.sm = messaging.SubMaster(['selfdriveState', 'aolAxisState', INTENT_SERVICE]) + self.sound = Soundd.__new__(Soundd) + self.sound.axis_alerts = AxisAlerts() + self.sound.update_alert = Mock() + self.now = 1_000_000_000 + self.sequence = 0 + + def publish(self, armed=False, lateral=False, longitudinal=False, native=AudibleAlert.none, + *, age_ns=0, valid=True, session='card', sequence=None, acknowledged=True, payload=None, + intent_message=None, enabled=None, pause_longitudinal=False, pause_lateral=False, + active=False, state_age_ns=0, state_valid=True): + self.now += 50_000_000 + self.sequence += 1 + stamp = self.now - age_ns + if intent_message is None: + intent_message = messaging.new_message(INTENT_SERVICE, 0, valid=valid) + intent_message.logMonoTime = stamp + intent_message.aolIntentWire = payload if payload is not None else encode_intent(IntentState( + session, self.sequence if sequence is None else sequence, stamp, stamp, stamp + 200_000_000, + False, pause_lateral, pause_longitudinal, True, lateralArmed=armed)) + else: + self.now = intent_message.logMonoTime + 1_000_000 + stamp = self.now + message = messaging.new_message('aolAxisState', valid=True) + message.logMonoTime = stamp + axis = message.aolAxisState + axis.sessionId = 'selfdrived' + axis.sequence = self.sequence + axis.qualified = True + axis.nativeAcknowledged = acknowledged + axis.lateralActive, axis.longitudinalActive = lateral, longitudinal + axis.desiredLateral, axis.desiredLongitudinal = lateral, longitudinal + axis.observedMonoTime = stamp + axis.validUntilMonoTime = stamp + 30_000_000 + state = messaging.new_message('selfdriveState', valid=state_valid) + state.logMonoTime = self.now - state_age_ns + state.selfdriveState.alertSound = native + state.selfdriveState.enabled = longitudinal if enabled is None else enabled + state.selfdriveState.active = active + self.sm.update_msgs(self.now / 1e9, [message.as_reader(), state.as_reader(), intent_message.as_reader()]) + with patch('openpilot.selfdrive.ui.soundd.time.monotonic_ns', return_value=self.now): + self.sound.get_audible_alert(self.sm) + return self.sound.update_alert.call_args.args[0] + + +@pytest.fixture +def audio(): + with OpenpilotPrefix(): + yield AudioFixture() + + +def test_park_lkas_producer_wire_and_sound(audio): + owner = AolCardIntent(AolSettings(True, 0.0, AOL_TOGGLE, 0, (0, 0, 0), (0, 0, 0)), explicit_latch=True) + published = {} + fields = SimpleNamespace(sm=SimpleNamespace(frame=1, all_checks=lambda _: True), + pm=SimpleNamespace(send=lambda service, message: published.__setitem__(service, message)), + CP=car.CarParams.new_message(), car_params_published=True, + slc_replay=False, curve_replay=False, conditional_replay=False, + last_actuators_output=car.CarControl.Actuators.new_message(), can_rcv_cum_timeout_counter=0, + rk=SimpleNamespace(remaining=0), aol_replay=True, aol_qualified=True, aol_sequence=0, + slc_producer_session='card', aol_card_intent=owner, v_cruise_helper=SimpleNamespace(slc_cruise_change=None)) + card = Car.__new__(Car) + card.__dict__.update(vars(fields)) + cs = car.CarState.new_message(canValid=True, gearShifter=car.CarState.GearShifter.park, standstill=True) + for pressed, gear, expected in ((None, 'park', AudibleAlert.none), (True, 'park', AudibleAlert.engage), + (True, 'park', AudibleAlert.none), (False, 'park', AudibleAlert.none), + (None, 'drive', AudibleAlert.none), (None, 'park', AudibleAlert.none), + (True, 'park', AudibleAlert.disengage)): + cs.gearShifter = gear + cs.buttonEvents = [] if pressed is None else [car.CarState.ButtonEvent(type=car.CarState.ButtonEvent.Type.lkas, pressed=pressed)] + owner.update(cs) + Car.state_publish(card, cs, None) + decoded = decode_intent(published[INTENT_SERVICE].aolIntentWire) + assert decoded is not None + assert decoded.lateralArmed == owner.allowed_latch + assert decoded.allowedLatch == (owner.allowed_latch and gear == 'drive') + assert audio.publish(intent_message=published[INTENT_SERVICE]) == expected + + +def test_lateral_activation_without_latch_change_is_silent(audio): + assert audio.publish() == AudibleAlert.none + assert audio.publish(armed=True) == AudibleAlert.engage + for lateral in (True, False, True, False): + assert audio.publish(armed=True, lateral=lateral) == AudibleAlert.none + assert audio.publish() == AudibleAlert.disengage + + +def test_native_latch_revocation_and_one_lkas_rearm_sound(audio): + owner = AolCardIntent(AolSettings(True, 0, 0, 0, (0, 0, 0), (0, 0, 0)), explicit_latch=True) + state = car.CarState.new_message(canValid=True, gearShifter=car.CarState.GearShifter.drive) + owner.update(state, now_ns=100) + assert audio.publish(armed=owner.allowed_latch) == AudibleAlert.none + state.buttonEvents = [car.CarState.ButtonEvent(type=car.CarState.ButtonEvent.Type.lkas, pressed=True)] + owner.update(state, now_ns=200) + assert audio.publish(armed=owner.allowed_latch) == AudibleAlert.engage + state.buttonEvents = [car.CarState.ButtonEvent(type=car.CarState.ButtonEvent.Type.lkas, pressed=False)] + owner.update(state, now_ns=300) + audio.publish(armed=owner.allowed_latch) + state.buttonEvents = [] + owner.update(state, now_ns=400, native_rejection_ns=350) + assert audio.publish(armed=owner.allowed_latch) == AudibleAlert.disengage + state.buttonEvents = [car.CarState.ButtonEvent(type=car.CarState.ButtonEvent.Type.lkas, pressed=True)] + owner.update(state, now_ns=500, native_rejection_ns=350) + assert owner.allowed_latch + assert audio.publish(armed=owner.allowed_latch) == AudibleAlert.engage + + +def test_longitudinal_transitions_without_aol(audio): + assert audio.publish() == AudibleAlert.none + assert audio.publish(longitudinal=True) == AudibleAlert.engage + assert audio.publish(longitudinal=True) == AudibleAlert.none + assert audio.publish() == AudibleAlert.disengage + + +@pytest.mark.parametrize('native', [AudibleAlert.warningImmediate, AudibleAlert.warningSoft, AudibleAlert.refuse, + AudibleAlert.prompt, AudibleAlert.engage, AudibleAlert.disengage]) +def test_native_alert_wins_without_queued_chime(audio, native): + audio.publish() + assert audio.publish(armed=True, native=native) == native + assert audio.publish(armed=True) == AudibleAlert.none + + +def test_native_then_axis_ack_is_one_engagement(audio): + audio.publish() + assert audio.publish(native=AudibleAlert.engage) == AudibleAlert.engage + assert audio.publish(longitudinal=True) == AudibleAlert.none + assert audio.publish(armed=True, longitudinal=True) == AudibleAlert.none + + +@pytest.mark.parametrize('invalid', [{'age_ns': 31_000_000}, {'age_ns': -1}, {'valid': False}, {'payload': b'invalid'}]) +def test_invalid_latch_is_silent_and_recovery_does_not_replay(audio, invalid): + audio.publish() + assert audio.publish(armed=True, **invalid) == AudibleAlert.none + assert audio.publish(armed=True) == AudibleAlert.none + assert audio.publish() == AudibleAlert.disengage + + +def test_startup_new_session_and_old_sequence_do_not_chime(audio): + assert audio.publish(armed=True) == AudibleAlert.none + assert audio.publish(armed=False, session='new-card') == AudibleAlert.none + assert audio.publish(armed=True, session='new-card', sequence=1) == AudibleAlert.none + assert audio.publish(armed=True, session='new-card') == AudibleAlert.engage + + +def test_runtime_native_pending_permission_and_loss(audio): + audio.publish() + cs = car.CarState.new_message(canValid=True, gearShifter=car.CarState.GearShifter.drive, vEgo=20.0) + for requested, allowed, expected in ((False, False, AudibleAlert.none), (True, True, AudibleAlert.engage), + (True, False, AudibleAlert.disengage)): + native = SimpleNamespace(requestedLateral=False, requestedLongitudinal=requested, + lateralAllowed=False, longitudinalAllowed=allowed) + result = decide_axes(standard_lateral=False, standard_longitudinal=True, + intent=SimpleNamespace(allowedLatch=False, pauseLateral=False, pauseLongitudinal=False), + native=native, car_state=cs, initialized=True, model_ready=True, + no_entry=False, immediate_disable=False, dm_lockout=False, pause_brake_mps=0.0) + assert result.native_acknowledged + assert audio.publish(longitudinal=result.longitudinal_active, acknowledged=result.native_acknowledged) == expected + + +def test_actuator_ack_does_not_own_engagement_sound(audio): + audio.publish() + assert audio.publish(longitudinal=True, enabled=False, acknowledged=False) == AudibleAlert.none + + +def test_mismatched_payload_timestamp_is_silent(audio): + audio.publish() + stamp = audio.now + 50_000_000 + payload = encode_intent(IntentState('card', 2, stamp - 1, stamp, stamp + 200_000_000, + False, False, False, True, lateralArmed=True)) + assert audio.publish(armed=True, payload=payload) == AudibleAlert.none + + +def test_native_only_subscriber_retains_alert(audio): + sm = messaging.SubMaster(['selfdriveState']) + state = messaging.new_message('selfdriveState', valid=True) + state.selfdriveState.alertSound = AudibleAlert.engage + sm.update_msgs(audio.now / 1e9, [state.as_reader()]) + audio.sound.get_audible_alert(sm) + audio.sound.update_alert.assert_called_once_with(AudibleAlert.engage) + + +def test_output_drop_and_recovery_do_not_sound_when_engagement_is_unchanged(audio): + audio.publish(enabled=False) + assert audio.publish(enabled=True, longitudinal=True) == AudibleAlert.engage + for active, acknowledged in ((False, True), (True, True), (False, False), (True, True)): + assert audio.publish(enabled=True, longitudinal=active, acknowledged=acknowledged) == AudibleAlert.none + assert audio.publish(enabled=False) == AudibleAlert.disengage + + +def test_explicit_longitudinal_pause_and_resume_sound_once(audio): + audio.publish(enabled=True, longitudinal=True) + assert audio.publish(enabled=True, pause_longitudinal=True) == AudibleAlert.disengage + assert audio.publish(enabled=True, pause_longitudinal=True) == AudibleAlert.none + assert audio.publish(enabled=True, longitudinal=True) == AudibleAlert.engage + + +@pytest.mark.parametrize('invalid', [{'state_age_ns': 101_000_000}, {'state_age_ns': -1}, {'state_valid': False}]) +def test_standard_lateral_stale_state_and_recovery_do_not_replay(audio, invalid): + audio.publish(active=True, enabled=True) + assert audio.publish(active=True, enabled=True, **invalid) == AudibleAlert.none + assert audio.publish(active=True, enabled=True) == AudibleAlert.none + assert audio.publish(active=True, enabled=True, pause_lateral=True) == AudibleAlert.disengage + + +def test_explicit_lateral_pause_remains_known_without_standard_state(audio): + audio.publish(active=True, enabled=True) + assert audio.publish(active=True, enabled=True, pause_lateral=True, state_valid=False) == AudibleAlert.disengage + assert audio.publish(active=True, enabled=True, pause_lateral=True) == AudibleAlert.none diff --git a/openpilot/starpilot/audio/tests/test_complete_alert_assets.py b/openpilot/starpilot/audio/tests/test_complete_alert_assets.py new file mode 100644 index 0000000000..ae9cb58fe5 --- /dev/null +++ b/openpilot/starpilot/audio/tests/test_complete_alert_assets.py @@ -0,0 +1,46 @@ +import ast +from pathlib import Path + +import numpy as np +import pytest + +from openpilot.starpilot.audio.sound_pack import BUILTIN_FILES, SoundPackLoader, read_wav + + +def production_filenames(): + source = Path(__file__).resolve().parents[3] / 'selfdrive/ui/soundd.py' + tree = ast.parse(source.read_text()) + sounds = next(node for node in tree.body if isinstance(node, ast.AnnAssign) and node.target.id == 'sound_list') + return tuple(dict.fromkeys(value.elts[0].value for value in sounds.value.values)) + + +@pytest.mark.parametrize('selection', [None, 'stock', 'starpilot']) +def test_complete_production_alerts_preserve_stock_critical_max(tmp_path, selection): + class Params: + def get_param_path(self, key): + return str(tmp_path / key) + + if selection is not None: + (tmp_path / 'SoundPack').write_text(selection) + stock = Path(__file__).resolve().parents[3] / 'selfdrive/assets/sounds' + loader = SoundPackLoader(Params(), stock, tmp_path / 'packs') + filenames = production_filenames() + assert 'dm_critical_max.wav' in filenames + loaded = loader.refresh(filenames, 0) + assert loaded is not None + assert set(loaded) == set(filenames) + for filename in filenames: + path = stock.parent / 'sounds_starpilot' / BUILTIN_FILES[filename] if selection != 'stock' and filename in BUILTIN_FILES else stock / filename + np.testing.assert_array_equal(loaded[filename], read_wav(path)) + assert not loader.is_builtin(loaded['dm_critical_max.wav']) + assert loader.refresh(filenames, 1) is None + + +def test_required_stock_only_alert_is_not_silently_masked(tmp_path): + class Params: + def get_param_path(self, key): + return str(tmp_path / key) + + loader = SoundPackLoader(Params(), tmp_path / 'missing', tmp_path / 'packs') + with pytest.raises(ValueError, match='invalid WAV file'): + loader.refresh(('dm_critical_max.wav',), 0) diff --git a/openpilot/starpilot/audio/tests/test_default_enrollment.py b/openpilot/starpilot/audio/tests/test_default_enrollment.py new file mode 100644 index 0000000000..d1f7e9ae00 --- /dev/null +++ b/openpilot/starpilot/audio/tests/test_default_enrollment.py @@ -0,0 +1,188 @@ +from concurrent.futures import ThreadPoolExecutor +from pathlib import Path +import ast +import tempfile +import unittest +from unittest.mock import patch + +from openpilot.starpilot.audio import default_enrollment as enrollment + + +class FilesystemParams: + def __init__(self, namespace): + self.namespace = namespace + + def get_param_path(self): + return str(self.namespace) + + +class SoundDefaultEnrollmentTests(unittest.TestCase): + def setUp(self): + temporary = tempfile.TemporaryDirectory() + self.addCleanup(temporary.cleanup) + self.root = Path(temporary.name) + self.target = self.root / "params" / ".namespace" + self.target.mkdir(parents=True) + self.namespace = self.target.parent / "d" + self.namespace.symlink_to(self.target, target_is_directory=True) + self.params = FilesystemParams(self.namespace) + self.storage = self.root / "storage" + + def selection(self, value): + if value is None: + (self.namespace / "SoundPack").unlink(missing_ok=True) + else: + (self.namespace / "SoundPack").write_bytes(value) + + def enroll(self): + return enrollment.enroll_default_sounds(self.params, self.storage) + + def marker(self): + return next((self.storage / "sound-default-once").iterdir()) + + def test_first_enrollment_replaces_all_selections_and_preserves_volumes(self): + for raw in (None, b"", b"default", b"stock", b"custom", b"starpilot", b"frog", b"\xff"): + with self.subTest(raw=raw), tempfile.TemporaryDirectory() as storage: + self.selection(raw) + volume = self.namespace / "EngageVolume" + volume.write_bytes(b"37") + self.assertTrue(enrollment.enroll_default_sounds(self.params, Path(storage))) + self.assertEqual((self.namespace / "SoundPack").read_bytes(), b"starpilot") + self.assertEqual(volume.read_bytes(), b"37") + + def test_completed_enrollment_preserves_menu_optout_across_restarts(self): + self.enroll() + marker_bytes = self.marker().read_bytes() + for choice in (b"stock", b"custom", b"another-custom"): + self.selection(choice) + with patch.object(enrollment, "_write_selection", side_effect=AssertionError("repeat enrollment")): + for _ in range(3): + self.assertFalse(self.enroll()) + self.assertEqual((self.namespace / "SoundPack").read_bytes(), choice) + self.assertEqual(self.marker().read_bytes(), marker_bytes) + + def test_new_resolved_namespace_at_same_path_enrolls(self): + self.enroll() + self.selection(b"stock") + old_target = self.target + self.target = old_target.parent / ".fresh" + self.target.mkdir() + self.namespace.unlink() + self.namespace.symlink_to(self.target, target_is_directory=True) + self.selection(b"custom") + self.assertTrue(self.enroll()) + self.assertEqual((self.namespace / "SoundPack").read_bytes(), b"starpilot") + self.assertEqual((old_target / "SoundPack").read_bytes(), b"stock") + + def test_failed_pending_marker_does_not_change_selection_and_retries(self): + self.selection(b"stock") + with patch.object(enrollment, "_atomic_write", side_effect=OSError("disk full")): + with self.assertRaises(OSError): + self.enroll() + self.assertEqual((self.namespace / "SoundPack").read_bytes(), b"stock") + self.assertTrue(self.enroll()) + + def test_failed_selection_retries_without_marking_complete(self): + self.selection(b"custom") + with patch.object(enrollment, "_write_selection", side_effect=OSError("disk full")): + with self.assertRaises(OSError): + self.enroll() + self.assertIn(b'"pending"', self.marker().read_bytes()) + self.assertEqual((self.namespace / "SoundPack").read_bytes(), b"custom") + self.assertTrue(self.enroll()) + + def test_failed_completion_retries_without_rewriting_soundpack(self): + self.selection(b"stock") + writer = enrollment._atomic_write + + def fail_complete(path, raw): + if b'"complete"' in raw: + raise OSError("disk full") + writer(path, raw) + + with patch.object(enrollment, "_atomic_write", side_effect=fail_complete): + with self.assertRaises(OSError): + self.enroll() + self.assertEqual((self.namespace / "SoundPack").read_bytes(), b"starpilot") + with patch.object(enrollment, "_write_selection", side_effect=AssertionError("already selected")): + self.assertTrue(self.enroll()) + self.selection(b"stock") + self.assertFalse(self.enroll()) + self.assertEqual((self.namespace / "SoundPack").read_bytes(), b"stock") + + def test_changed_choice_during_pending_retry_is_preserved(self): + self.selection(b"stock") + with patch.object(enrollment, "_write_selection", side_effect=OSError("disk full")): + with self.assertRaises(OSError): + self.enroll() + self.selection(b"custom") + self.assertFalse(self.enroll()) + self.assertEqual((self.namespace / "SoundPack").read_bytes(), b"custom") + self.assertFalse(self.enroll()) + + def test_concurrent_enrollments_only_select_once(self): + self.selection(b"custom") + with ThreadPoolExecutor(max_workers=8) as pool: + results = list(pool.map(lambda _: self.enroll(), range(16))) + self.assertEqual(results.count(True), 1) + self.assertEqual((self.namespace / "SoundPack").read_bytes(), b"starpilot") + + def test_selection_stages_outside_namespace_and_cleans_failed_write(self): + self.selection(b"stock") + replace = enrollment.os.replace + observed = [] + + def fail_selection(source, destination): + if Path(destination) == self.namespace / "SoundPack": + observed.append(Path(source)) + self.assertEqual(Path(source).parent, self.namespace.parent) + self.assertEqual({path.name for path in self.target.iterdir()}, {"SoundPack"}) + raise OSError("replace failure") + replace(source, destination) + + with patch.object(enrollment.os, "replace", side_effect=fail_selection): + with self.assertRaises(OSError): + self.enroll() + self.assertEqual(len(observed), 1) + self.assertFalse(observed[0].exists()) + self.assertEqual({path.name for path in self.target.iterdir()}, {"SoundPack"}) + self.assertTrue(self.enroll()) + + def test_corrupt_marker_preserves_optout(self): + self.enroll() + self.selection(b"stock") + self.marker().write_bytes(b"invalid") + with self.assertRaises(ValueError): + self.enroll() + self.assertEqual((self.namespace / "SoundPack").read_bytes(), b"stock") + + def test_symlink_selection_is_not_followed_or_replaced(self): + external = self.root / "external" + external.write_bytes(b"custom") + (self.namespace / "SoundPack").symlink_to(external) + with self.assertRaises(OSError): + self.enroll() + self.assertEqual(external.read_bytes(), b"custom") + self.assertTrue((self.namespace / "SoundPack").is_symlink()) + + def test_manager_runs_after_admission_before_cleanup_and_warns_on_failure(self): + # Inspect the real startup call without importing its hardware/process graph. + manager = Path(enrollment.__file__).parents[2] / "system/manager/manager.py" + tree = ast.parse(manager.read_text()) + init = next(node for node in tree.body if isinstance(node, ast.FunctionDef) and node.name == "manager_init") + calls = [node for node in ast.walk(init) if isinstance(node, ast.Call)] + def line(name): + return next(node.lineno for node in calls if isinstance(node.func, ast.Name) and node.func.id == name) + self.assertLess(line("prepare_manager_start"), line("enroll_default_sounds")) + cleanup = next(node.lineno for node in calls if isinstance(node.func, ast.Attribute) and node.func.attr == "clear_all") + self.assertLess(line("enroll_default_sounds"), cleanup) + guard = next(node for node in init.body if isinstance(node, ast.Try) and any( + isinstance(call, ast.Call) and isinstance(call.func, ast.Name) and call.func.id == "enroll_default_sounds" for call in ast.walk(node))) + assert guard.handlers[0].type is not None + self.assertEqual(ast.unparse(guard.handlers[0].type), "(OSError, ValueError)") + self.assertTrue(any(isinstance(node, ast.Call) and isinstance(node.func, ast.Attribute) and node.func.attr == "warning" + for node in ast.walk(guard.handlers[0]))) + + +if __name__ == "__main__": + unittest.main() diff --git a/openpilot/starpilot/audio/tests/test_downloads.py b/openpilot/starpilot/audio/tests/test_downloads.py new file mode 100644 index 0000000000..9d05ea404a --- /dev/null +++ b/openpilot/starpilot/audio/tests/test_downloads.py @@ -0,0 +1,214 @@ +import hashlib +import io +import json +from pathlib import Path +import stat +import tempfile +import threading +import time +import unittest +import wave +import zipfile + +from openpilot.starpilot.audio.downloads import ORIGIN, SoundDownloadError, SoundDownloads +from openpilot.starpilot.audio.sound_pack import SoundPackLoader, read_wav + + +def wav(value=1000): + output = io.BytesIO() + with wave.open(output, "wb") as sound: + sound.setnchannels(1) + sound.setsampwidth(2) + sound.setframerate(48000) + sound.writeframes(value.to_bytes(2, "little", signed=True) * 100) + return output.getvalue() + + +def archive(files, modes=None): + output = io.BytesIO() + with zipfile.ZipFile(output, "w", compression=zipfile.ZIP_DEFLATED) as target: + for name, content in files.items(): + info = zipfile.ZipInfo(name) + info.compress_type = zipfile.ZIP_DEFLATED + if modes and name in modes: + info.external_attr = modes[name] << 16 + target.writestr(info, content) + return output.getvalue() + + +class Params: + def __init__(self, path): + self.path = path + + def get_param_path(self, name): + return str(self.path) + + +class SoundDownloadTests(unittest.TestCase): + def setUp(self): + self.tmp = tempfile.TemporaryDirectory() + self.addCleanup(self.tmp.cleanup) + self.base = Path(self.tmp.name) + self.root = self.base / "packs" + self.catalog = self.base / "catalog.json" + self.parked = [True] + self.managers = [] + + def manager(self, payload, opener=None, slug="duck", digest=None, size=None): + self.catalog.write_text(json.dumps({"version": 1, "packs": [{ + "id": slug, "name": "Duck", "path": f"theme/Themes/{slug}/sounds.zip", + "size": len(payload) if size is None else size, + "sha256": hashlib.sha256(payload).hexdigest() if digest is None else digest, + }]})) + manager = SoundDownloads(lambda: self.parked[0], self.root, self.catalog, + opener=opener or (lambda url, timeout: io.BytesIO(payload))) + self.managers.append(manager) + self.addCleanup(manager.close) + return manager + + def finish(self, manager): + deadline = time.monotonic() + 3 + while time.monotonic() < deadline: + state = manager.snapshot()["job"]["state"] + if state in ("complete", "cancelled", "failed"): + return manager.snapshot() + time.sleep(.005) + self.fail("download did not finish") + + def test_install_and_loader(self): + payload = archive({"sounds/": b"", "sounds/engage.wav": wav(2000), + "sounds/warning_soft.wav": wav(3000), + "__MACOSX/sounds/._engage.wav": b"metadata"}) + def open_url(url, timeout): + self.assertEqual(url, ORIGIN + "theme/Themes/duck/sounds.zip") + self.assertGreater(timeout, 0) + return io.BytesIO(payload) + manager = self.manager(payload, open_url) + self.assertEqual(manager.action("download", {"pack": "duck"})["job"]["pack"], "duck") + snapshot = self.finish(manager) + self.assertEqual(snapshot["job"]["state"], "complete") + self.assertTrue(snapshot["packs"][0]["installed"]) + self.assertEqual(len(read_wav(self.root / "duck" / "sounds" / "engage.wav")), 100) + self.assertFalse((self.root / "duck" / "sounds" / "__MACOSX").exists()) + stock = self.base / "stock" + stock.mkdir() + (stock / "engage.wav").write_bytes(wav(1000)) + (stock / "disengage.wav").write_bytes(wav(1000)) + selected = self.base / "SoundPack" + selected.write_bytes(b"duck") + sounds = SoundPackLoader(Params(selected), stock, self.root).refresh(("engage.wav", "disengage.wav"), 1) + assert sounds is not None + self.assertAlmostEqual(sounds["engage.wav"][0], 2000 / 32768) + self.assertAlmostEqual(sounds["disengage.wav"][0], 1000 / 32768) + + def test_truncation_and_checksum_fail_without_publish(self): + payload = archive({"engage.wav": wav()}) + for case, stream, digest in (("short", payload[:-1], None), ("checksum", payload, "0" * 64)): + with self.subTest(case=case): + manager = self.manager(payload, opener=lambda url, timeout, data=stream: io.BytesIO(data), digest=digest) + manager.action("download", {"pack": "duck"}) + self.assertEqual(self.finish(manager)["job"]["state"], "failed") + self.assertFalse((self.root / "duck").exists()) + + def test_reject_unsafe_and_invalid_zip_members(self): + cases = ( + archive({"../engage.wav": wav()}), + archive({"engage.wav": wav()}, {"engage.wav": stat.S_IFLNK | 0o777}), + archive({"engage.wav": b"not a wav"}), + archive({"sounds/": b"", "sounds/engage.wav": wav(), "other/engage.wav": wav()}), + ) + for payload in cases: + with self.subTest(payload=hashlib.sha256(payload).hexdigest()[:8]): + manager = self.manager(payload) + manager.action("download", {"pack": "duck"}) + self.assertEqual(self.finish(manager)["job"]["state"], "failed") + self.assertFalse((self.root / "duck").exists()) + + def test_cancel_and_departure(self): + payload = archive({"engage.wav": wav()}) + started = threading.Event() + release = threading.Event() + + class Slow(io.BytesIO): + def read(self, size=-1): + started.set() + release.wait(2) + return super().read(size) + + manager = self.manager(payload, opener=lambda url, timeout: Slow(payload)) + job = manager.action("download", {"pack": "duck"})["job"]["id"] + self.assertTrue(started.wait(1)) + manager.action("cancel", {"job": job}) + release.set() + self.assertEqual(self.finish(manager)["job"]["state"], "cancelled") + self.assertFalse((self.root / "duck").exists()) + manager = self.manager(payload, opener=lambda url, timeout: Slow(payload)) + release.clear() + started.clear() + manager.action("download", {"pack": "duck"}) + self.assertTrue(started.wait(1)) + self.parked[0] = False + release.set() + self.assertEqual(self.finish(manager)["job"]["state"], "cancelled") + + def test_conflicts_and_existing_pack_untouched(self): + payload = archive({"engage.wav": wav()}) + blocker = threading.Event() + started = threading.Event() + + class Slow(io.BytesIO): + def read(self, size=-1): + started.set() + blocker.wait(2) + return super().read(size) + + manager = self.manager(payload, opener=lambda url, timeout: Slow(payload)) + manager.action("download", {"pack": "duck"}) + self.assertTrue(started.wait(1)) + with self.assertRaises(SoundDownloadError) as caught: + manager.action("download", {"pack": "duck"}) + self.assertEqual(caught.exception.status, 409) + second = self.manager(payload) + with self.assertRaises(SoundDownloadError) as caught: + second.action("download", {"pack": "duck"}) + self.assertEqual(caught.exception.status, 409) + blocker.set() + self.assertEqual(self.finish(manager)["job"]["state"], "complete") + original = (self.root / "duck" / "sounds" / "engage.wav").read_bytes() + with self.assertRaises(SoundDownloadError): + second.action("download", {"pack": "duck"}) + self.assertEqual((self.root / "duck" / "sounds" / "engage.wav").read_bytes(), original) + + def test_cancel_after_verification_prevents_publish(self): + payload = archive({"engage.wav": wav()}) + manager = self.manager(payload) + verified = threading.Event() + release = threading.Event() + extract = manager._extract + + def pause_after_extract(source, sounds): + extract(source, sounds) + verified.set() + release.wait(2) + + manager._extract = pause_after_extract + job = manager.action("download", {"pack": "duck"})["job"]["id"] + self.assertTrue(verified.wait(1)) + started = time.monotonic() + manager.action("cancel", {"job": job}) + self.assertLess(time.monotonic() - started, .2) + release.set() + self.assertEqual(self.finish(manager)["job"]["state"], "cancelled") + self.assertFalse((self.root / "duck").exists()) + + def test_malformed_catalog_is_unavailable(self): + for content in ('[]', '{"version":1,"packs":{}}', 'x' * 65537): + with self.subTest(content=content[:20]): + self.catalog.write_text(content) + with self.assertRaises(SoundDownloadError) as caught: + SoundDownloads(lambda: True, self.root, self.catalog) + self.assertEqual(caught.exception.status, 503) + + +if __name__ == "__main__": + unittest.main() diff --git a/openpilot/starpilot/audio/tests/test_soundd_loop_dismissal.py b/openpilot/starpilot/audio/tests/test_soundd_loop_dismissal.py new file mode 100644 index 0000000000..da8ffec6dd --- /dev/null +++ b/openpilot/starpilot/audio/tests/test_soundd_loop_dismissal.py @@ -0,0 +1,86 @@ +"""Dismissal preserves the current loop's tail; urgent alert changes interrupt it.""" +from types import SimpleNamespace + +import numpy as np +import pytest + +from openpilot.selfdrive.ui import soundd + + +def daemon_for(samples, *, builtin): + daemon = soundd.Soundd.__new__(soundd.Soundd) + daemon.current_alert = soundd.AudibleAlert.warningSoft + daemon.current_sound = daemon.current_alert + daemon.current_sound_frame = 0 + daemon.current_volume = 1.0 + daemon.pending_stop = False + daemon.loaded_sounds = {soundd.AudibleAlert.warningSoft: samples, + soundd.AudibleAlert.warningImmediate: -samples} + daemon.pack_loader = SimpleNamespace(is_builtin=lambda _: builtin) + daemon.saved_volumes = {"WarningSoftVolume": 100, "WarningImmediateVolume": 100} + return daemon + + +@pytest.mark.parametrize("builtin", [False, True], ids=["stock-or-custom", "builtin-starpilot"]) +def test_first_loop_dismissal_repeated_updates_finish_exact_tail_once(builtin): + # Continuous periodic tone with exact zero endpoints. The chosen dismissal is + # deliberately away from zero, exposing the old step to silence. + samples = np.sin(np.linspace(0., 8. * np.pi, 8193)).astype(np.float32) + samples[0] = samples[-1] = 0. + daemon = daemon_for(samples, builtin=builtin) + consumed = 401 + np.testing.assert_array_equal(daemon.get_sound_data(consumed), samples[:consumed]) + assert abs(samples[consumed - 1]) > .5 + daemon.update_alert(soundd.AudibleAlert.none) + daemon.update_alert(soundd.AudibleAlert.none) + assert daemon.pending_stop and daemon.current_alert == soundd.AudibleAlert.warningSoft + remaining = len(samples) - consumed + output = daemon.get_sound_data(remaining + 32) + np.testing.assert_array_equal(output[:remaining], samples[consumed:]) + np.testing.assert_array_equal(output[remaining:], np.zeros(32, dtype=np.float32)) + assert daemon.current_sound_frame == len(samples) + assert daemon.current_alert == soundd.AudibleAlert.none and not daemon.pending_stop + assert not np.any(daemon.get_sound_data(len(samples))) + + +@pytest.mark.parametrize("builtin", [False, True], ids=["stock-or-custom", "builtin-starpilot"]) +def test_urgent_replacement_interrupts_pending_tail_immediately(builtin): + samples = np.linspace(0., 1., 8193, dtype=np.float32) + daemon = daemon_for(samples, builtin=builtin) + daemon.get_sound_data(400) + daemon.update_alert(soundd.AudibleAlert.none) + assert daemon.pending_stop + daemon.update_alert(soundd.AudibleAlert.warningImmediate) + assert not daemon.pending_stop and daemon.current_sound_frame == 0 + assert daemon.current_alert == soundd.AudibleAlert.warningImmediate + np.testing.assert_array_equal(daemon.get_sound_data(128), -samples[:128]) + + +@pytest.mark.parametrize("builtin", [False, True], ids=["stock-or-custom", "builtin-starpilot"]) +@pytest.mark.parametrize("loops", [0, 1, 2]) +def test_dismissal_at_completed_boundary_does_not_start_an_extra_loop(builtin, loops): + samples = np.linspace(0., 1., 1024, dtype=np.float32) + daemon = daemon_for(samples, builtin=builtin) + daemon.get_sound_data(len(samples) * loops) + assert daemon.current_sound_frame == len(samples) * loops + daemon.update_alert(soundd.AudibleAlert.none) + assert daemon.current_alert == soundd.AudibleAlert.none and not daemon.pending_stop + assert not np.any(daemon.get_sound_data(len(samples))) + assert daemon.current_sound_frame == len(samples) * loops + + +@pytest.mark.parametrize("builtin", [False, True], ids=["stock-or-custom", "builtin-starpilot"]) +def test_same_alert_reassertion_cancels_pending_stop_without_restarting(builtin): + samples = np.sin(np.linspace(0., 8. * np.pi, 8193)).astype(np.float32) + daemon = daemon_for(samples, builtin=builtin) + consumed = 401 + daemon.get_sound_data(consumed) + daemon.update_alert(soundd.AudibleAlert.none) + assert daemon.pending_stop + daemon.update_alert(soundd.AudibleAlert.warningSoft) + assert not daemon.pending_stop and daemon.current_sound_frame == consumed + remaining = len(samples) - consumed + output = daemon.get_sound_data(remaining + 128) + np.testing.assert_array_equal(output[:remaining], samples[consumed:]) + np.testing.assert_array_equal(output[remaining:], samples[:128]) + assert daemon.current_alert == soundd.AudibleAlert.warningSoft diff --git a/openpilot/starpilot/audio/tests/test_soundd_output.py b/openpilot/starpilot/audio/tests/test_soundd_output.py new file mode 100644 index 0000000000..c23993e45d --- /dev/null +++ b/openpilot/starpilot/audio/tests/test_soundd_output.py @@ -0,0 +1,108 @@ +"""Actual soundd load, alert service, stream configuration and audio callback.""" +from pathlib import Path +from types import SimpleNamespace as NS +from unittest.mock import patch + +import numpy as np +import pytest + +from openpilot.common.params import Params +from openpilot.selfdrive.ui import soundd +from openpilot.starpilot.audio.sound_pack import DEFAULT_PACK, SoundPackLoader, read_wav + + +@pytest.mark.parametrize("raw", [None, b"", b"default", b"Frog", b"frogpilot", b"missing", b"\xff"]) +def test_default_repair_persists_and_flows_through_actual_stream(tmp_path, raw): + params = Params(str(tmp_path / "params")) + if raw is not None: + Path(params.get_param_path("SoundPack")).write_bytes(raw) + daemon = soundd.Soundd(params, pack_root=tmp_path / "packs") + assert params.get("SoundPack") == DEFAULT_PACK + root = Path(soundd.__file__).resolve().parents[1] / "assets/sounds_starpilot" + class Stream: + def __init__(self, **kw): + self.kw = kw + device = NS(_terminate=lambda: None, _initialize=lambda: None, OutputStream=Stream) + stream = daemon.get_stream(device) + assert stream.kw["samplerate"] == 48000 and stream.kw["channels"] == 1 + assert stream.kw["blocksize"] == 4096 + for alert in (soundd.AudibleAlert.engage, soundd.AudibleAlert.disengage, + soundd.AudibleAlert.prompt, soundd.AudibleAlert.warningSoft, soundd.AudibleAlert.warningImmediate): + daemon.current_alert = soundd.AudibleAlert.none + class State: + updated = {"selfdriveState": True} + logMonoTime = {} + valid = {"selfdriveState": True} + alive = {"selfdriveState": True} + def __init__(self, sound): + self.sound = sound + def __getitem__(self, service): + return NS(alertSound=NS(raw=self.sound)) + daemon.get_audible_alert(State(alert)) + daemon.current_volume = .5 + output = np.zeros((4096, 1), np.float32) + with patch("pathlib.Path.open", side_effect=AssertionError("callback file IO")): + stream.kw["callback"](output, 4096, None, None) + assert np.isfinite(output).all() and np.max(np.abs(output)) <= .5 and np.any(output != 0) + logical = soundd.sound_list[alert][0] + from openpilot.starpilot.audio.sound_pack import BUILTIN_FILES + expected = read_wav(root / BUILTIN_FILES[logical]) + np.testing.assert_array_equal(output[:, 0], expected[:4096] * .5) + + +def test_warning_urgency_levels_and_loop_finish(tmp_path): + daemon = soundd.Soundd(Params(str(tmp_path / "params")), pack_root=tmp_path / "packs") + alerts = (soundd.AudibleAlert.promptRepeat, soundd.AudibleAlert.warningSoft, soundd.AudibleAlert.warningImmediate) + rms, peak = [], [] + for alert in alerts: + samples = daemon.loaded_sounds[alert] + rms.append(float(np.sqrt(np.mean(samples ** 2)))) + peak.append(float(np.max(np.abs(samples)))) + assert np.isfinite(samples).all() and 0 < peak[-1] < 1 + assert samples[0] == 0 and samples[-1] == 0 + daemon.current_alert, daemon.current_sound_frame, daemon.current_volume = alert, 0, 1. + output = np.zeros((len(samples) * 2 + 4096, 1), np.float32) + daemon.callback(output, len(output), None, None) + np.testing.assert_array_equal(output[:len(samples), 0], samples) + np.testing.assert_array_equal(output[len(samples):2*len(samples), 0], samples) + daemon.update_alert(soundd.AudibleAlert.none) + tail = np.zeros((len(samples), 1), np.float32) + daemon.callback(tail, len(tail), None, None) + assert daemon.current_alert == soundd.AudibleAlert.none + output.fill(1) + daemon.callback(output, len(output), None, None) + assert not np.any(output) + assert rms[0] < rms[1] < rms[2] and peak[0] < peak[1] < peak[2] + + +def test_builtin_loading_does_not_require_stock_and_damaged_clip_uses_stock(tmp_path): + from openpilot.starpilot.audio.sound_pack import BUILTIN_FILES + params = Params(str(tmp_path / "params")) + params.put("SoundPack", DEFAULT_PACK, block=True) + actual = Path(soundd.__file__).resolve().parents[1] / "assets" + stock = tmp_path / "assets/sounds" + builtin = stock.parent / "sounds_starpilot" + builtin.mkdir(parents=True) + for name in set(BUILTIN_FILES.values()): + (builtin / name).write_bytes((actual / "sounds_starpilot" / name).read_bytes()) + loader = SoundPackLoader(params, stock, tmp_path / "packs") + loaded = loader.refresh(("engage.wav", "warning.wav"), 0) + assert np.any(loaded["engage.wav"]) + stock.mkdir() + (stock / "engage.wav").write_bytes((actual / "sounds/engage.wav").read_bytes()) + (builtin / "engage.wav").write_text("version https://git-lfs.github.com/spec/v1\n") + restored = loader.refresh(("engage.wav", "warning.wav"), 1) + np.testing.assert_array_equal(restored["engage.wav"], read_wav(stock / "engage.wav")) + np.testing.assert_array_equal(restored["warning.wav"], loaded["warning.wav"]) + + +@pytest.mark.parametrize("name", ["stock", "custom"]) +def test_valid_explicit_pack_survives_restart(tmp_path, name): + params = Params(str(tmp_path / "params")) + packs = tmp_path / "packs" + custom = packs / "custom/sounds" + custom.mkdir(parents=True) + params.put("SoundPack", name, block=True) + soundd.Soundd(params, pack_root=packs) + soundd.Soundd(params, pack_root=packs) + assert params.get("SoundPack") == name diff --git a/openpilot/starpilot/audio/tests/test_stream_diagnostics.py b/openpilot/starpilot/audio/tests/test_stream_diagnostics.py new file mode 100644 index 0000000000..6bad27fa9f --- /dev/null +++ b/openpilot/starpilot/audio/tests/test_stream_diagnostics.py @@ -0,0 +1,32 @@ +"""Capture transport fault frequency without doing logging in PortAudio's callback.""" +from types import SimpleNamespace +from unittest.mock import patch + +import numpy as np + +from openpilot.selfdrive.ui import soundd + + +def test_underflow_counters_preserve_signal_and_log_on_service_thread(): + daemon = soundd.Soundd.__new__(soundd.Soundd) + daemon.pending_stream_status = None + daemon.stream_status_count = 0 + daemon.output_underflow_count = 0 + samples = np.array([0.5, -0.5, 0., 0.25], dtype=np.float32) + daemon.get_sound_data = lambda frames: samples[:frames] + output = np.empty((4, 1), dtype=np.float32) + underflow = SimpleNamespace(output_underflow=True) + other = SimpleNamespace(output_underflow=False) + with patch.object(soundd.cloudlog, "warning") as warning, patch.object(soundd.cloudlog, "info") as info: + for status in (underflow, underflow, other, None): + daemon.callback(output, 4, None, status) + np.testing.assert_array_equal(output[:, 0], samples) + warning.assert_not_called() + info.assert_not_called() + assert daemon.stream_status_count == 3 + assert daemon.output_underflow_count == 2 + daemon.log_pending_stream_status(SimpleNamespace(latency=0.2, cpu_load=0.01)) + warning.assert_called_once() + info.assert_called_once_with("soundd stream diagnostics: status_callbacks=3 output_underflows=2 latency=0.2 cpu_load=0.01") + daemon.log_pending_stream_status(SimpleNamespace(latency=0.2, cpu_load=0.01)) + assert info.call_count == 1

~2JtwD-uai)uNyG;P9bSl^gxiU| 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 literal 0 HcmV?d00001 diff --git a/openpilot/selfdrive/assets/sounds_starpilot/warning_2.wav b/openpilot/selfdrive/assets/sounds_starpilot/warning_2.wav new file mode 100644 index 0000000000000000000000000000000000000000..2f3158139f440f742c3049b120f96c79ffdb011b GIT binary patch literal 72044 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