From 8d2130d3e916f0bde3a380dc7ad7f3fa13f3dfec Mon Sep 17 00:00:00 2001 From: James Mark Chan Date: Sun, 17 May 2026 19:38:18 -0700 Subject: [PATCH 1/8] #128 prepare icons for ubuntu environment --- jdm-core/src/main/java/jdiskmark/App.java | 44 ++++++++++++++++++ jdm-core/src/main/java/jdiskmark/Gui.java | 7 +++ .../src/main/java/jdiskmark/MainFrame.java | 5 +- .../src/main/resources/icons/icon-duke.png | Bin 0 -> 42346 bytes .../main/resources/icons/icon-jdm-beta.png | Bin 0 -> 38173 bytes .../resources/icons/icon-jdm-turtle-bw.png | Bin 0 -> 15951 bytes .../main/resources/icons/icon-jdm-turtle.png | Bin 0 -> 17913 bytes jdm-dist/jdm-deb-slim/pom.xml | 25 ++++++++++ .../src/deb/share/jdiskmark.desktop | 12 +++++ jdm-dist/jdm-deb/pom.xml | 40 ++++++++++++++++ .../main/jpackage-resources/template.desktop | 12 +++++ .../main/jpackage-resources/template.postinst | 38 +++++++++++++++ 12 files changed, 181 insertions(+), 2 deletions(-) create mode 100644 jdm-core/src/main/resources/icons/icon-duke.png create mode 100644 jdm-core/src/main/resources/icons/icon-jdm-beta.png create mode 100644 jdm-core/src/main/resources/icons/icon-jdm-turtle-bw.png create mode 100644 jdm-core/src/main/resources/icons/icon-jdm-turtle.png create mode 100644 jdm-dist/jdm-deb-slim/src/deb/share/jdiskmark.desktop create mode 100644 jdm-dist/jdm-deb/src/main/jpackage-resources/template.desktop create mode 100644 jdm-dist/jdm-deb/src/main/jpackage-resources/template.postinst diff --git a/jdm-core/src/main/java/jdiskmark/App.java b/jdm-core/src/main/java/jdiskmark/App.java index be290d5..c6e3d75 100644 --- a/jdm-core/src/main/java/jdiskmark/App.java +++ b/jdm-core/src/main/java/jdiskmark/App.java @@ -109,6 +109,50 @@ public String toString() { } } + /** + * Branding icon variants for the application window, taskbar, and installer. + * Change {@link #activeIcon} to switch the icon across all display contexts. + */ + public enum AppIcon { + BETA("/icons/icon-jdm-beta.png"), + /** Custom JDiskMark turtle logo — the default project brand. */ + TURTLE("/icons/icon-jdm-turtle.png"), + /** Duke, the BSD-licensed Java mascot from the OpenJDK project. */ + DUKE("/icons/icon-duke.png"); + + public final String resourcePath; + + AppIcon(String resourcePath) { + this.resourcePath = resourcePath; + } + + /** + * Load this icon as an ImageIcon, or {@code null} if the resource + * is not found on the classpath. + */ + public javax.swing.ImageIcon load() { + java.io.InputStream is = App.class.getResourceAsStream(resourcePath); + if (is == null) { + java.util.logging.Logger.getLogger(App.class.getName()).warning( + "Icon resource not found: " + resourcePath); + return null; + } + try (is) { + return new javax.swing.ImageIcon(is.readAllBytes()); + } catch (java.io.IOException e) { + java.util.logging.Logger.getLogger(App.class.getName()).log( + java.util.logging.Level.WARNING, "Could not load icon: " + resourcePath, e); + return null; + } + } + } + + /** + * Active branding icon — change this single line to switch the icon + * used for the window title bar, taskbar, and About dialog. + */ + public static AppIcon activeIcon = AppIcon.TURTLE; + // application mode public static Mode mode = Mode.CLI; // elevated priviledges diff --git a/jdm-core/src/main/java/jdiskmark/Gui.java b/jdm-core/src/main/java/jdiskmark/Gui.java index 1646a0b..a91ec73 100644 --- a/jdm-core/src/main/java/jdiskmark/Gui.java +++ b/jdm-core/src/main/java/jdiskmark/Gui.java @@ -228,6 +228,13 @@ public static void init() { } mainFrame = new MainFrame(); + + // Apply branding icon to the window title bar and taskbar + javax.swing.ImageIcon icon = App.activeIcon.load(); + if (icon != null) { + mainFrame.setIconImage(icon.getImage()); + } + if (runPanel != null) { runPanel.hideFirstColumn(); } diff --git a/jdm-core/src/main/java/jdiskmark/MainFrame.java b/jdm-core/src/main/java/jdiskmark/MainFrame.java index e0dcfef..98991d9 100644 --- a/jdm-core/src/main/java/jdiskmark/MainFrame.java +++ b/jdm-core/src/main/java/jdiskmark/MainFrame.java @@ -839,8 +839,9 @@ private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN- }//GEN-LAST:event_exitMenuItemActionPerformed private void aboutMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_aboutMenuItemActionPerformed - JOptionPane.showMessageDialog(Gui.mainFrame, - "JDiskMark " + App.VERSION, "About...", JOptionPane.PLAIN_MESSAGE); + javax.swing.ImageIcon icon = App.activeIcon.load(); + JOptionPane.showMessageDialog(Gui.mainFrame, + "JDiskMark " + App.VERSION, "About...", JOptionPane.PLAIN_MESSAGE, icon); }//GEN-LAST:event_aboutMenuItemActionPerformed private void openLocButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openLocButtonActionPerformed diff --git a/jdm-core/src/main/resources/icons/icon-duke.png b/jdm-core/src/main/resources/icons/icon-duke.png new file mode 100644 index 0000000000000000000000000000000000000000..62b6b5c95979db9e82ada627b5ffc9c676174f21 GIT binary patch literal 42346 zcmXVXbzGD0_x`hjF>3Va(I6-zrP&4|AdNwXv~)h~-@mrM&hB03T-S5%>zwC-iP3d>1Q!AT0D3)LZ8HD>U3>)raH@+Bn}AAJ z0C*;&r;WQATCmy@LJ_@lOY=;5e@Jcj@>E3d)d}Zs5d@u$@4k{rih%6H~ zl&Xw`?e6d1xFu+&jnocLmlq-J6#X=8Y*~0Aw_h~F-!xDdwiwnwdi8T)@KTiP`cA;m zVL`yKNXl|67EG{fy1Og)*J;P9E|lIuquM$Zw|=LZ#2zUL3r)4O`5LMfTKFfEP&4?)W2f`O=G`9e1RUgwmr@xu@V^9#&;!tEAGI^O(aGlHymodP zfPhW}3+i&_0wR@^p)4{!6KzOH6FQW7`H!*Dd-@3PoYv076$*^#0#b&8fCb0^7)R@3 zJw;dMs6D++2wzR~iFxW-H#l(!8i{A$4v=QyEVzV4kRHwqkxVt3tQ+k-HCoND=Cb=& z1|^SS2JZ*{FD-gdpsuot`oS%2=;$N@*qEcPlYwQM0dk~WYIy&SD{f2|!$;JWybMEPd+z?x$WnNl3s?^JxZP(V?9=#)9qM?|~))xh>`+ zB|w51!sBi{fi+2LH3xLUfwz*!H1izLJWXXyxgl`oKlS+X#+#f@RFw3-Dp$*hh`~Vp zASG&WXsc&rlm<@Vv~nB5J!AbU50Xn6(|m}$mLUTvK$2ybsL`B9(B5mb!ZhuG2j?f> z$;SIDVxzBZr@F*%hPIXe?Cqx^nQaXIHAXq8YIp_&+di?mZ zwNZyI{D-u=Fz{IXJMlYEO${1Y)gp|5xCmM>++(z7@#V^|tfzMTlL!#&2=+0a2OE=@ zOc$z+#p?`I2}(3x6K;!KebZA!%s@5|f4e9;^|zli%ADX9PGM?2^J#~j?$|4M%mW&l~HwV#EIVg!fxs*t@T+yS>yMStyzG({gL883fJSs1HLHq8|? z`I<%URfS2=vT+HcyTY07v^INhF9rfn|92{$|K&U)Buodcjpq|0O7k>% zeDgpZLf6gZnSmS0aNw)B3KK~IOQ`_u?4S6aSv)V9O1lw{yM3L4237x4z&(IFt5WOX z!sH!H3B!!&w_pJS-pBd6-S$d8zx~A=grVzl{})O3w--i`NO;HiOB+&#?HRxLLAG;+ce`}oim9y`<4X@h56qd+~w!u`Oaby`#)F`;ef^FA^JaT zt4&iWc4f+u5HR`UI^@S99~DGfUNDPZF!$j6lBn9atn$0b^RU77l4zx3 zTqNaQH1rF><^VGwN{1(n@`xkYfx{~7^WADrvK(7)%I$0#$O?+}pK&8^-L54{1aVpU ze`1WQfRMA@z)A@q(SX8Oy2IKw+s)u;J1Xw4+8rEjuyI@^h@9+$Iw#kut0(=3*qDFbMj$f+(?Q#@&Sw93ZsCe zf<^#>&*kD&<;GV|LJ-6uhN+Grtf&MIs--IQ2oez%#W zpHZCUi2}Ic6BkpUFdorg5cfF_vSVT=CwR9%6+I{G1aOZxKq)Wp*gC+ z+yt(NKl`~jn4kU$PQ!DHOZ}ky1{4@n(x55X_Uinx(WMH~5?x4n0ZE#T0*1Qz`<8n> zP7X}~2NU336=h&_-!@)?l|jReq6&M&dN)e@S0{&4wnV7BhcJ+Kg$WS_GrNGE z#X;Zp$~KB=`4=tC_fH*X&%c2Ph$Mb-`2%+>5dT{-m6;0m>?OzFRxU)4O^$vNvpsqN2lU_wMx4KqCe+ z`Qoq%V7xgNssVD$<3EfB`)Gn{GtG*~UEdj5eWSD!i*>-W%jE5|tJu(hk;jA3&zhxf zn$#zsKb(90OSAor8uR9st@G&ZjD!vpTSDF;9hX&6&78i7=GPsT`?EHe+rOr1ncb5c zr35zd)$LwG<$ zcAAE$#%HAKmfpo&541x7yjKiiw`+{li zX4bcV&pIgK>T!x7Y}Qjv1QkDTRC!{C4rrsRpG$mVuH@6_36<--$1=p6YK)8Z2T zGOwS+665kQ)7)1v{Yr#wQRVu+@XXC0qk z)Z^QWderJm2C3vY(#Amf&hMi9ut-uDz@b7vA39cj2@`%L5QAj5ygggevLVSZ_?s5M z%x+zOeO#N$MH0ndNjA|PHIdCs|Irw>A}P~HuT&);UVHtqJWyMa(>{Lc$~n3xy{tT@ z=zt)Z2#hTn0KUTLEIJq2rw)9i#yIOG-uT`$HAdzVG^$F zIy}!nGsOS6^mVsLmoE}8qfP#P_++}iWn&e+juAbPSa?beCi>M73yBx ziJF@9g8B1ZiJGiy|>dC42+RNnTbOLM-e6jQMu5=hr7wdd0e29@bIf} z&X*jCGlPse&Fc&|L!0d@apXV^hIgP~tCnR}DHX7s_Uvi`S}zFz(=d6A94mTH-jr5* z!o&-`$k?37^HU*k%Vc9SkIk?mA6T9GnYE0^9C0n^UXI7H+q)b>hX5QkLz@62LFFv?Rba`dV5zzsI4y`7SkdiEW$Lmv z-9zcryI<&5=XGY_j)1gihX^KGiAgq8=2&{CEnWcdyfn3dU11nMoGZKW^FFoI<_%Mn zQkFndj62o*K0i-_mrq*3t2-sb(5LNd1usne;H^PZi-SuJBrwAh9mb7KCJ0(!IRvD= z8h-lDNFCHFEeLYkh`6jK#dxKrYmJV2is9{o!=33e2l0|5w6FzYyK|KSDFbB&9Pv=V>m!jDI?Qr+7x8qdT;VZip$zb{ZVKAqzm#X*pH&KZ?cuR4$ZCtyQ9 zMdvBTTHE%moNbWObvyqh<+tYnOWVEZO-88OlQE9j`V(?181;`EPV*wKf&5D%I7lGX zl;#bj;zGjIx&V?xI1A8TFmYB&Ta$aZG=)EV_EC;(>y#%fQAX^T+kT*?CT<)skUzY~ zy?kQscSTB=3k$za%hkQ=LW7I<#u|v`&0faXCMaMC={ohm1+rSk%mg3ZLn!!)Bi0H{U`+(axY`VJE5aXjN_pTM< zQv_?fe|oe_pJGA*ebEJYtYml3v`?gvg~L!ok>TdvWvo9aEL(HK&30sx_3xj8L*K_* z!o~f&{Pnwm&x^GtIJQ$4pAxpTHe#+wp-KoXZ+?Uz=T9LJE{&^8h6#r} zM5E45E2zNsajF_u?_x#>V$y}Gt*-)}ZbA{f=+qc^^GaK_cM#yh1dNU?d#e`lPpnDt z?{du1ofIg$VN$7-Tg$^|E6UPRy$x(N-$Q^tTw;lniKy_~!9-hA;5g7v69cPqMr|@B zsi~j^+Xt+4{;gW{E!`!7*$vAR@4M>)BZdx_nWo{0adGD}ve?75)v)^x_rE|;lcyB) z@cTz}R510Uf2IVlS06nYIRiOh)Hy?oq%M4~$A;9WoB(ggDG1C@U}13lO7=c1Z15aY zl);0NFK*vT^4fq!R^(+Acb?%WKY?;(STUH+Vv*V}KY`qq^s-P++WFqMu8H(QDwi}S z#9{L1E0@&Rrm~idWty_2i&^EH;&56Li1GUcLM4r<4y(WQ<`skwuiRnH zn@XVi_menhihqpE=FLy!d8zy9b;p$@fn)^y935CeIL&FuQfxa?z=VNd8LDND|6^x@ zMP@WNsDD-!DAoS7#PI_2`yda0T>Ni}@zRE}S`ui3LyJ^8$S2Qu<&iJhzCH)}gas0; zPsEGa1?OTe5pcQuqR4kqgNm8$Po6frclIe5cU7iSVm)@q3~3j{*V-`=RO9}{SOa~( zBn9qKvgr_owVVFcK)IH5%0yRgWoQX}D$lq{)qqhWOm&7_;l8z9+7i=uAN=$+ zdZbMKlYU8sA^sSu3^9Xie?RaBbeM>+i~A#wlJaA+u%8H=E%>8%+jrT8JP53yfvu?@ zeLCx})U<_Rpxr)|n;|I2^nO&Em4w3*IHrmue5P$v(+U$}twldvoN?9`nXivw5nTu&6le`gIY*GTPC;`fvGCrh zu{g1P4Q#@$8rS?~c*5t?YZ$YOh7<{HJY7k?6&krk|6!VbM`DfDl19vtq-!d)t>L>cf*IqF=9zc;+X$#Yvc4P_>-HfPi8Q%<%hpogBJzXMFf(u5X3m0|}2iI4>Jj4o-{i}f|M>UTQF%U$wPFdwU+ozSFS?cqaJ=V(c~ zDzWYd`g1Ar?GpOGm8#!7QRuF|9YW_5`dN9Pz}7o`Jyg6IJ`~!AfKf@p#9`~Zl-zjm z2m~V{xcc(8zjZm0TddoE`#>pJAwTy;7g^ZENoSy&XUwI8GO_J-B$cTEu^Hw6Fb|L2 z)lw3eeVvYV7Oq}-XYt~uN%iQ=h*4$?6^2(Wfe9ubK$c4L>hq0!!hRA3<|^3Aa(i6% z&9@{f%~(eJh%|6x3PMIAAxaDstt3AX;hTjMuN+swBkthiFlv4PG~{uda+-W+pnWD1 zLqS7iMX8vw*>t%8PZo$SU_kRg)l=c*UI6o0l?BmSOblcGN()?h2}Y9;T*}-m9-A<# z_(IpyeKdIbisxD#@@M2|MZ1c-8~xqo;8!BS8?F0n>ec6bLaZkG7j~nPtV`>)9S^{m z8b=feeE37TE>JO|y_Jy*tXU|~XY_OeRg0D@8ovfrV@{Fdw17B;s6OK*GPPq>I(Im` zLK1h!8Y}`TDW3BK1`d))RyYj-O1O))PVgc6g;YPZm$D}oSKGzqKQ=7m?y0;KZ{b;c z|CdXOZ#2CSqil#jHy@HJ+D`J(*P@91lgRhq-UB)be9J7&GygNR3WS00jK#(ua?`hjHw6yYXmM_qq;*ZLm@twqTY_Yo(D0mycMq zuSDkNJz@T4er*5W_oMQQ()-`VHa_F`i)MlOtJt8{?UUmM7ytK}<#gLj@LcU!MTjAg zE<7s>EXiVMoZ@bvKD6nlkNp162MsLSTIrt6l-~lt|?Pv!%G5GimP-i67d&xoF z2Awj_DEggh(T%t_lCNj4dydYka$lW&{l;J0O327e93^@khg1SltlYqa8)O^-1>9~i zGG3qgu>V}{biES@T8mFNAw0XVR#BX5(!cDfw-R%`pYiwMr(GBWDC;4qAZ3kwm#laH zERaQzS-QJ7*A#DI?s=`oJYN&xJ}!i#m%KGi7R8{G>JGsYfCN$3dAk(p*U^Ck`m;y4 zs!&yIO5aWNanBKYFTdR3vZXS6R%+qYl(N~W;JMjgnD6IS_dx#%o+=5zwl9u3(5EBn z)r&chbHM{9FMho^J$@ngE!>LwZ{P)j|8vJrgn><^T0G6+40`ge)~Maw;s8Nbo`5xh zieo#lQLx#&f*-Sqfiy{usQ0eVQMZ4ypzFWybzn45@8-Z9TAaUgFpcnwhA`svW_dZWb=1Vlv8ie{e`R#;757yK--g)m zOjHjV5?6sspeh(0bM2JXE}5*mtSqOnyD;(e92&7A1a-KO!bLF}?03D^tfVs_!Cu7V z?(ozMsFa|_g~aRya8ne4HX~9G!K8_M4D=tRyS2&0K9kC$b5+>JY6FL9`!XoN7$$VS`;n&z>@bup6`sE715>F@5II>vJK zx0_qcIyurNNE_9*5LcaB5>FZEv$X*#&S;7l<DP~8qvFC? z&5R#z@&@VxPbcKsYVVz6>owo03TEJrl^o8=nH`u8zIN zRbBYcz|!jJz~P-F*6|B4$ z1$ljoc#r$$AK(#6HnXIX`tOcFIF0kmFAs&PMpANqhD)Xu=e3J9@x(Qzm>8N@GGBig zCMtTp{VBuLDmLF(O7O)mC7+k_QT}C_R~L%cAvrqWk^&ypo~MU}7g{Ke=!kBeZ+b=~ z@u^BW2K-^6infJ+B=u_U$SCz1CwWC{FvS(zSJAFy9d6nDfGBCBgA(%vGn9efCg`r{ zvU{K8H1Dx}6BVJ-=Kw9P7dq8)#k~qX*7rJv2Vcy-VS>yR|9qw6m!BuWbJK*>?he~k ztpsl|S~txOh4ZEgJg}pyyE{6Pi?EwLh zNVP;PN2wCv!f7se4DiP2gOBzceA$?#Il$W3M+6!0y=;+x@DG8URr@EbvS)%RS8Gmf zkE+wx%x6!Bp|M+=)XQjj4tz0|)upt3He9Kofbu}dqy@qC3i8{~;Vq4UJl5&HoWcq+ z^-@_l+as$KD-paovuK{c-3Kfxwjb9M^8F_NlXoqL%gzRmxjCTcA4(Cm-~uF8m4{{b zh0B(%oJmY;UZ@4t=ZORs=qYutBs%~)H$S_2@Mx?ycbLP!k<7Y4Y{|KTb-aM8yZ zR%vs;h<$e-igU1T&#=d87o!nK1nh%>pjY73gA)y0(+u$&>pBGv_CR6>1(S3J4R)U} zF*IDNv?5mBMBcf3Q}Driv;n4Ekmgl(hotX2Hpb}>jCE#5829ye^JiwFpd|EDQZ`do z_Hf*TT8&xSgcK+R&1BGe?)hL@JD0)hF8T+D5{Nf!kTEM%!-&FvjcKT9KvRcwsrOz~ zA37#<7Bp_}{Os2c!Szcya~ymsbie6UL;P+_Gl%&}E)~?bMgL1=b>KD&YK8qa3EJ*% z7r(?*ri2$^uB7Qe$=w6HBRAiwu6Jn_A_;pmTJOvp*8{2uwOYwE%wV&JfiKA%0)b!D z9R7f!wnZ+SQZ}VD;>;F}Cd@bH3K)rz5{Ns!4{VTSh6ITk1S-z%n(@t|AXOzU#dPun zBk}E}9I?2rz4X*JEe6#sFBxmk`ZaaJr@O*?66Q3$&q#{fLVPJMJ#--#(2+J3+^U zYM7R&tdaMh%HJ8*Yf9F+d;x~Cyb*VSjLS8TB=Z%-I_Ixce+-kEM@_wJ9iQL>l^=(B zi@Ioq50w{RLYrcrJPG6W<*&VscckputXo)dFQEbZ1Gyk=eb7Tv{2Ew>v+e~*r;v~f zmmYruc|JJca9e*v%fE64i=2lNB_c#g+03!aUlD$Se6u25{Iyr@@XUnQ*S~1#jwG8L zU^;v!Bu-@=MjaTQ?n*pv)$diS77vP=CkuePsSJby}D zCFvsXqMmygaucnbWrXoJ8;5jb{X296@B~vg9btHXefM_Ay0)Q*u-_S{^et)`mWiVdJQk})&A9ouy<82@ zs_1>5Z7ekVMp5n#!~7Pb(y~|50|GnbIfBUX8AUT5{LBBzOxSV5%xB>$^bJl1Ub^h> zl)wj?e0tVBkPLqlDS0jmdl;eNPe@gD<9DdLV`=MK0d*Hz-wscsn6}lSekzHlTuEl+ z6%6YhYmk`ho^C9Qq(K#02CPLiOIG>l);24NjwLAGNA{|XsmLA0`q|VZKA--;&2L}F zb>Eh5Wr;VZqEm=QfW&TAVCNR*as5S1JET5_q6;`zjRC)T9g_q9nQqdD)yZx~Jo8#T znIX&kb)I#5{B`AMZKXhYbr4R~(KnV>{J#}%h*qG{TGi0_TKCm~jiI^l zqwwROWz@f_>KH#=T9(npC1I3msu{_7OcjYG*Xi^S7p_3X*F2A3!`{M7Oowmi1jV3$ z!HoyB6>gia!s*Y|H4+lOa*8p+bys|mUBb|$PoAKQLGhwA)7HN41%+z6uKHEnKRL{v zLFyzJtURW{a-?wdBN}Om&=eWcvv(iuC$rn$at%Fwsq$>t@~UHhdD@*qvDhjkyzloD zrGvW~mh?gy_4m6o`h=~lUY|rp$9_K;vMC{CNMs&H5^Eij(wR|#apsTm*iZl4Lk*At z$%W+T=E#_(X1`%;inFGYou6pjbme>9iMh@}p~25Ski|1%2Row7i;~eF7une- z<&tQmylycSmJ+0@72^~ zbU(S7C-0E2*Lx*QT+MaX&zW!Ma_z2k^AphP1VS?FfuN8P1LYP@P*-$=V;Sjq|K(=y zsrf+;TmKhv!gEAFp3 z%l~#Ug&7LE*Nz=AJAe51K5Cr5NA9&>qz=Jhg9Ah7!#Q&$%UU#)7281x8=C+0v1^q? zP=K6d!5y2NnhgL{_Z(?>cfk#R{qe&2o|v5*f<({{7dLCFHhX*It1gfpnZdQZCFa1yz4rx*+0RSu+bt z0Q2>Nv4F|N5c-y6G@AjntSNhVxt~A@gWM33dFeA;-SxlfoSEnQR5pM9j;p$F1`@Ow1qRB|uH**28mczz_wy@{rr#U*KXfBR%zQ7iRb0 z&)i7XB8pG17wTu^$JNdmua=VmOcKEXrB`?V<%D-b-dOhGdT%2RxlAAv6qf>y(i&XO zus|rz0ScIbv`49DRTxbvC-Vtwh_2@@T~bR}w_9=bjguN!=nJRFLS-bc95v&27kOIp zK5adT^7$v9;_gwiTxJq)rvLZY*e1_UgxWiM%N5z_UJ|eldcUiT+hcC0l)`|+HwIS(qm zrIWb(znD&RNp#XE1{=6iF+sU4gjuEg&g34P?k`ovrLj125+!=X6e>zcZ$0Gf9GEPQ zD^xBSs7X9CI(~jz*JANvPhvnXMBg#vx~<%hPlJE|JW6md?2%95!|og{q_#HH5c`yK zgL=~sxU7a11T$)b&_E^CuR7F8QQ6|K*B;@})DN0Dm$U7XBHAlf5?Z}+YVWKm021}i zHRrB2Rv~ml8BZttYfn$=8_r=;ahFh{E`6C1^*^thbo&>yEjo75aWmCwz&;TlH;&kO zV&AQIWaFYGVwn=@BfNa_CZ=e z@y1A_)m@p4r|wfD0-dEvn~N>dSWKN@Ssj<~%s1EFOKR8)tPKIBqDs%w^K`(FlHw$T z+zU)urHvZDPmnS00SZKfgyG)NO@^-07|Uug(wi-BuNhKfwW6?M1wdCr<90(ywCSTR zrf)Jw6sQWfnz) zWX0B0(H=HX>j#Wn92~W5{Ev|)NTU)sUDKJnY7qSFw`aTPdQ4fig&5RqC4P@Ja+Akk zXnG7FiMqEZeDP*4vJWnbNz^M?8cDg}0^J;$fJwnkjxsn~loA0ZVD64)4QAxFecfgJ zawG@7a|{f>2dnkorn9VKLfYV?0VZcWztg_je>eH?K6%}H&+vzDXB?w2$e}Od#-a1waPNl!b8c2o055sv+})!OUJ10foKG;~14J+?xsUaVgIMg71=$$RnsC*1CN>wgm6_S&-5hd5cpri|hO+7sZ3$53((^EVwhDeoe z(QaUvmEG~wrea%Tn&~KTzmHBIAbkVmYt%esplu zYF|NrZA<7jj~k0<+o4u7ffAr4FDbY09%(*yDOf0o=q$?E<|&@ob-uUDFIHYct=D}k zZ?wr#J)v5>gKyfi9cc$gi$T#SE7WBlc~zW6BEM&>NkZwhW#~;{ihTF6sXGg~{(DlH zU%K*$*+C=i5F{Oremh6-e#Xd1ACINc!G0ZZjpF@>6@$s|JgU+ zS4ICV*0-2eu6jjNUaBg_wyRJnWZh~GwsVUL({*(RFz#_YT2x6CYy=l;5Ik3@c>yCW zp8us?>+L%l9=-9lC=?c`-As2ZKl z`x}1K@9vN`8Q!wPv=QCquSCGxD)!q^fsAIm3bmZTs(VAfKrJNsKpg5Y zd2@tie0|AGfl{eIay>t(cm)5i4Rcbq7_PRj@V;#nLdHl-RA2kj*^tz#M-hQ1?1GVz z1E~7c>V!cMKzlWZmY4+Q{?B++ix+EN-q0I4(p%4MT@28M3X}+>G}aAu`0=ly+GP{i zH;epT9cOES`g*RcHRTDL9LMb0Nhs09!O1$c?~~qqOw`6)NAwev*SEYvh4RZBha;MA z1Ko31oD@%mPowHuhBu1@{tXx}+Ocwa6qN#fEoO!k(ppc6+HX(IquSf91?}iuWTxDJ z;@eqig=dlSvQWRax%}h7REq%1QUvw~@{6_JZ%rDd49K`Wg#yfG1^$Sv5TKQfCDO>I z4|d)ehJwBc#Z?x)!zYMx-)lmXjmT;VCn}HO->9C1zIqp* z)DqjQwSnu81qw&tC`_&ebd5NI8S@nz-z?BX`W`i9!g#39-@}qS?@uy4)9DqSajn+Qxu{3$ z(xO0n!U0f{uncBCu|wLrJE>a1W#=?jg6=L7V~c!T-75zg#~|rVb=#*OS-`h{+vhA^!o})I7n-MF5@0A{Qt+*YX zu4EjhZ`3(<9KQ$Poc7-dgR%4Zx?d$pNtf_sW;{Yxk5A{XBz^Ux!~2bI$^~UhN-iT2 z_Zd|=uTb&ci-zUAxiRg?F#c4faXO0fbVD`;?eMld$hx!yuFb5?UN(v0oXGGo_%S2% z(Z5?cK@4xCs}#SO`#o22v8*@n(xLSbQ_g@HCVmB6u~dM3L&t{EP<3;l9IO_E3GVFB z%31Q`5a_|vOh$u)sH&LQyj6^+>qo3(6msZdUG{jou>$}%1M6}<3w(>Ye~XrZ=?s;rJR0hGcUhS@N*D@%XX0kK!Ha5BL2F- z=m1WXuAYsd+Zh=>?H*IU^+*c>Hzg*Uy(gCriqv*Y+gx`A6FANE#jQ!gE>sdOh>Qwm ze-RyFZ#U{@>mw+eKAw$?;!Q()+?b($44r#k;b$Qr=X|56Mig`nizq)d zAKsx_UpkSlO(JsYQ-je4Y5}})UiGmPWsqvJFim*Nm0v!v)HkA+zF!g-z4=P2;dS6w zzH}#j94f z@J3N0%`VM~U!bEVwdv<)$8YOfeF#;1K{T4qsx0IMud6qk#!e2MIiy+N9uL0w3;xK+ zE^fn#NE>LIg%Q60^U0!v!JR}c%)9)OYlqDKeKyzN0>?6U+>2J+V1K;xh* zJD{CMZ|5e+hZ!z{>^^zDX~M#AE6)J~!*a9gGG)aC{f5}2q)QD?s?rs1)qJy?&hw7K z?i?BG-9PGv9=uZ@i0Y7Pu7MMf>&2twFH@eoM+>R0EZ?mRX;^ONSb6^MpSxNw2dn7b zjP2qpLEw4r7)V=B9d?;kt_7yp-;4~tc4I|qF&(-0q4m$};`b7?6;-19F0BqcQBUe0 z%t5+27XywY>egDchIi|~cQj5pW$e-rQury0-xfD|C=oNR8-pTk$BiIr>}I661)R^& z_1N0kVU3aY3LS!Q4dl%EQ%2KT-XZ?E@mH2?j{w2n5Fl)Aqd{Zhy#Usg*~B%CMsVPs zj=iL|9~jWMDiCx)yKy3f@qDWHu;}YF#qHV1MzE=`;s}actHCNh#mVx8K|o-nO~_Q? zjf#Eas1IXnt!=cY(Li1A$lpu_+Q;t!ztc%p!ovMb-^%}9))d+_dR0w($tLAm-f-7x zn(AELk$+#v0LNO3gnp*APfD~670}qu8=mdae9!e^Zyn^|^Zt?(T%uZWByN!?B25i; ztW8%io0{j1FtFPdcSb1vj%wYYN7f1wE)J1e};!)+T(@octJ`X?BN4WamC zN9F4V9biAw_pQSUUaf)tdb&}*tVIT)&E#s-CRo^C1f*8cuLu~ z@)V!syz=|{Su74%{qc@P^QfJ1bGIgn_s;odV)JgJb=2+aFf7k4G%4e%RUiZ3QIk#z ziSt!_*9sR)WrhU66&D#liE0#9g2>3+71ego#_&INW-x$EeP)1v++Qt+LW85cs`iHU zvl-_zTNyDri7sY)OAE(BCySESiVJm)bP*owmfLLI7e( z#cwkNJ!~BL{8v5_fhOX>G$Wm5rX3t=yCzapd zY~?!nebp128@OnO{$?Oy`A)AtF zjD6zx)e`w9x=HN$^F62V@I~{r`g28KY|8wya-D+&g0Lx2C}UcE>L2K}s+T4CSm>do zzUO6%fxg5An;l*6A@nq525t~ondS5t+YTSv_iVHt?vMNlGN~E+;x0epr6};MYq}-E zZ&3Pmdq~^1?a6G!Os90r7VT>DKHs^iF2E)r-~xT6yOunRPpt7Ya)`q?C3ZRYnZCne zf8+v(_L9IXG8WQ_+0&q=Gv*oJBNDI_ikdhb4~uH``WSW1L_Di)76-Jev5@K?T5Vv- zCRvla%A66-6Wv?iW`CuADW2dG-Mm?>1?g=+XZ6bC*R7&4VFe^mQO57&ukl(YmMj*4a8n{^(z|}j`>6-wQAP94R(elE z+k1vxr9B$$p<aT8*_`EOgH&%6ou>(87V0|O;1NCX3W6) z@hH%JcQ)kCYm399g;%%JKKb90Ls{h&yc=DW+FP55vwOahm?nEp^Wt`{MI&AD!BR}e zW2f|ZG`_)VSBwddetmPqOCEXW((-=z_!}qc=-qzLt#8F=P|efN##{ZK(Zmny%`A1N zcI&?ck#{A&h;-0;8mf(_fp3CvR#0>cfY$CxQUeoC8#KV&Iqd8SjM!78($c8QBrn_m z7(S(g+cmZki}QU8BUX~t^}?v;wxyy7898-& zf&gjfbp#bsul&@0Czj(EZ%n92cnja(U6rTVNIZ7@=ziLGH}SWU&NDL{PtWrH@%V=j zX`c_fw{7-ct!yUSpMb|s|62VB=)XMPu);TBWGn#kV<*_>+r(=S9x8wa9MDwsx`M-- ze4tuxQ7K7&qe&&uXBx2c07L&~$D6e4&{Y@=d1B=_yGT5tWeA)Otg=GvdkfKfc^C6i zO|3?IsXui5n$F=dEsdl^myGc3P&-(x4YPwtu7rHqVr(Cs2vkK*&f@-;&drqJQ%TXk z_j|M!>iY9sc2engG^Z2r^D?RRQ;b#8jahw|>uIV)Q=S`RHK z^y!BZAwz-ICSMEG%}Dr&bU4WHeh}ok%^@E%^oSiF>Diy?*z%*MX?J_F?ciTnQH{X) zBlgTFrQ`ckuB94tOmW3ZNGbt@gEMdREKkhE$_MwDu~r~KPM~BQ4i*uyirD}4QF10N z(EePtB$&HFr?bucIrO12C~Yh1SFY{){&D5lO6WwgUCMCG){Go0VZiq8{4>3$U#&`& z71JKQx>KsG;WM4X%4Kl(yy)k6)JDr#)BD01bBfzqr`kRDS$7@Ki6QOmHK*Nf)v+qu zkb(JsF5Q!(`WNdO!R!(1@2CrdxuLQ3MG?lg_4EWVS;CsH53T`_S|Ii?8E6-)~$aF zO_(=coVTm2Qp4-6U}xDpN0;9`c(C>%i_e07 zXTa3vhoeqli^DI!vF>nZ;22CvNt}9_|Bs@xjBBzDqxeRS?ruc7L%JJj5O5%%bc1wv zcS%cw(uj07$ms5rhJkeM-MioOabI@tx#K$5IsaR#l%;K*bETo-uwLPBhwIeKrk(wt z+UT2h6=TMyMNse@AK_|XnmFj!E1*Tiun8uaszLizSuSheGo&Y)^xemh^WL7CUDM^_ zms9Xp4SFjSBz2_8J?xCk_6s$SEA|9jk5Me0z;%ycnjTSXmWHQopJ%$^XGe)KL=YcL zXoN25P(#D4f0wiOPpSsO-BVJ$g8F?VCQa8}QHpbF5(4~%!0}(|ue-?{Z-ED(HRI{c zP|V9wmW7!4?C6j(>29Ix@A-6QGmW|^*%qtHz@40I^Vu797JM8gt^eM(pLab?`&yN4 zR0V4+jR_T5Zz*}8G9poH_C8mno271wzLunN8g>SBCa@7$^ z6S8oRm2CERih6#Aeecu+%c2)5qoXt+(W*6nSVP>;17yqn9?YHxBrgEOAAV|-US7Ju zN7LJ+Z8=^gtJ7XI5fl~_$AA=Mz05ljDF%9M$d9biRi)gx`6FB4-Rbb%#-#brb(kwC z$lij+e3;hUx@Vs+l1^5$Y!r*KD8wlU;UHhwxvVld&pJx<2W0ucxx?=2Q&4hY2t7Kt z1LxJ`S|qe>ENcO$Fz{V?>uVD}ZUd|!cglip%Bit_=d{5EQcMjzccVMG0ixFVLgo22 zpT`RUbV-b8-|zRBw%^dafY?fva7$3Yrhegt-70c|2vIE&g7SR9KXbEW3@bMEXW_ ztUV_~Z1Ye@3CC4}cU0{k=1ho;Iz z!&k4UaQ^V%^8U2J?W%^PK%1PY>stOtyhdiPtOJs@7L9{62!Mj@*8VBid*P$sqfNP% zM(L9|A?&C2PDhhE*NOE@Z5x_0T(tM@hvXZ`;LIpVd_+tB>}nH@#?#xon4zZ+lfhd-Yt#Y7chi z-MTH)=w!QyKXlCa=1=5xmdV8cljKobJcS@HpDWKADrR3By>L9PBhC3i0+~F%79klB zAoJUg?64?O`YoDKd{CWl-K-HSF2cU-1g!)0K8pBySnz-XZd4GR1A5i(xW5o2B$;5u zGIz#^kuX_33HH#VR%PNQq6@~L_tWDwW4%61ai=$4S8v)CTygr)+p07IWtRP|^89&y zO?uH5daX_yVGv9`$x{UT*6YhHM-rFDW8|K?JIRdD7NJRqkDp(z@#{(Vt2lD5XwG#& zbK+}l(ubn2I!Hk)N&zdDH?|AY!hj9z{T$#o84#UCN%X`^;!7L5$Y>IXB>4(jPoA3D4b$ARZoI8bN3Z})x_Fw>q}?TyoFX3=l6}71 zO3?0k_GO`}G;Icl9QcYI3~MUAvHCn@jrc1EN4&(1hqg;T4V~^HHUD`Jj)39E{V(g``+V*2QwJy%<>B{#^Fq*F9Z5zIq)O&tv!Xruxyd>_4;Xi;AQxcH?P z7m3f}O=8!DKL9@j$$#jwMiq^8!-{4-Ywn;M{ufw>%rSE9>km-)c6EzDzca?wO{xFM zeV#j$^OQgzz>UTZjXe|wz)*rG80f7n7r;lC(aNo_nQA{4Y~lKh?cKzu|BvtBlfa4( zyPI%G&PGE2RO_MUn;@x^;R8KoKY@fD&su{g_M2rK-9voL=1qk*4SS zxo^1P027`fW(7+5C|iN8%f#TAc&nDfQtXTmb;iM+#Z$5dVKnYQG7z6o?QBJi+y+w6 zCq-n3^E}UqpH{w0XqD-oslGX~E^TEqds1?Y6yPYgURf;WXL0|rxsh6pL=*RR$X{=k zRy_?5H4AY1;$n$kmv*SGvD-o-fkVO70+@s1SO+RvjMOPv1OV>PuAlt%SjC}Ml26OU zfFJM?^sCWeK4Cx~VKFsPEQggB&&%>(y9%5*;YlUO?Ln>y9a~>f8m$(^F(Zr`0`iRO zeHs&X?%}T~>`4u;8xRS^qGSc)`rPkkM{PiUzUsZLG3xM}XN8}kzzZs)RGw?S%^O~+ zw#{Hd#bl)7(#F?7O)mq(at%AS8yap174NGi*ZK$jPx1f*m4~puY8m7K!>7wtz8K<$x4{nCa z(v9ZcTq-h3<5@`M@ldIcP$Mw52Hr^fP(!As zWtI{`?Nf_VNk)U$vnrNyBqSneJz$cFj{xtdhX1indO$af@TrK|?H<$jXnTxmAIsya zl>u*0ONvro^QZ1qtsdTFQ<9M%-OMT!@G0=k)DOg!GGyWAu5OQC+pJG^t6_O0dp^ev zk-7_P$Hf?3*CeL&z(N+yIE1jtg3Rd#O{sxU+|4rz1;l5+-Z3b~SERe$f4~kB$;`e>q{bnKe zdov&w0}n~U4P?jIoc>53#I;a#xE*pRpdD3y(=P6P;L!Zp?~6<|xLv)G&){4KH=%c%Tdw^)a(z2^QzWxM#v z6A#Fn@|B4IRY!KK2!S$WnLUS#DR~A|eQel=sFZ&F=Fg&=wid99&!oYFX1?Sh zXWnPEkbzqSuOdOgDwM_GpHkv~wM#1XrS2Z}_;6%k_L{LYUsdL~jbrs%e42w7DEF*-+7mVTK(~1$4MmG$Drw%Xd zU6b#~gZ&Ke{YLf#;IlFJ7S*Y*&2=JJNk`XCK(35&5Ae*@buyD^8+9dUz?H(V4X*Y$ zg@5D$&hsDiIld+4!jteTXJtptD->@|77oU+Y3uh(8f>^_gxeE4%Nq z`vKkFci#ecozpfx;$~8=G_M;wOhpYyzi!PB*op=?j|(ia>)NCz>-gXY9n!u?8ZNPNFeHNTt4`wIQOPB@6in8CFeZ>clJ>_g4`V5}Au`VWi!_9%?{RUvOLN7_q= zP<|d1t2lFJwAW z3A3J60wa4xl(QGVx&Y^$wO@RwV%GIF^Vqz^S69f}?W#4y}1n_d2b?jm`v6Oyp!Bl%3=mDa?pNn#Ny z-tLXc&#_(RZ)18jd(0_qvquH1=OYY9p#rdm8ab!)8=q$SCnMqklUQkh@riz^pPbr= z6B^xyUiEyX89{2rhBf^AQNEt%Db>r%dGs+GjEy3-d1Zn2S(0w2RD@S1E`vlNQTLT5 zFUR#VQK*LZTo*ihviWGM!R@4 zt%;?f?6@j)NM!D7(DV$YS6?R!E-&H%)n}mF?Miy+6|EE+#Dg0PX+laT1)|29$$uHd zI9VW$de`6T%i=LH$}eW6Q&)}tJAem0rJW1Fj@-sKyL1g1bKcL{42xO#F@N&?lEmx@ z$Mu=0J2B-d2iR)_Dx&Dkm2Z#f<8c)_wVt&gE}~hU}`-x8=!Zs+@%&2V5q{v)@Tc^o(Iro zuQZUX8#~p~J{oG(2Gp$|ty$c;P6x|=oAEmSS&k2wvu#vVS5;MAnII{;pE>a9b!>&8 zk&1-$nKVswKyYw^Zrdw4vGynN1HI7 zbv1sn+rtZva0$rHhNnPT5)tD16T_uEeaLgZzo_OuJUJ*Hjj5$G2dAYI=qQrOjceF-0&yf0%Tee+tM^NNTDfmObT#SKwB+5?bqs& zX8HR0uLW4MUiI^lZmlPu2$koK?4SDtgq#z!OUq`OJBXD4r2&PGws96$m_z)r>_Z2%5A>U&IhrR#ud*>Cq zKnejm%}PE0Ux}eF7>!S3VSz0*_D_AyatrK!*EfqMlG1XKGngP2LZmgl<1s*&wvLyh zozFfFYx*A+t+xt<@+_gsZ;wY~uH^;fpr^;zwWh4aI2^L?Fq`hfzOz;g&s$u(e0kJI z$YVB7OTo2Cxh`ISU^ZG>NxlagEg^T?RxGxYVZ?3IFn@y2wVgj~wR7F~gIo*BEL_Z2 zuNl&>+)qwRP(Ln-+>*2;ZQ5V+VHNY}$BpE0Rr)v{B|9GF*v!nD`;CN)=p&aGc8Yst z&${}z%?UDy;N=DG25Pj-MvjCvb&LPZuQMuDML_fW{j0j1gC$0%Z+ohko)XwKY-__g z5`|aXqE^Rh-<|{5>CJpG`jnl#3DkYp?X-{~4b*+ls6{W4ERnpC^`D59Q|i+G-5b|> zVmm912l0NzWCuEvJQ85(9o+eJHvcxP_J1+v`ZA6*oAosd@cJ8`4z$&B!~2&oM4A4n zE|pjd9{a_Uc?lw&G@JcqU0qbNnCP>9KIvBReF0IjGk$M)q~kF%{E|xee$%m;#;9`s zoprTv80>2K)iLkM9c;Q3%f%VFVX?`>Jc9OP(boDMxix>bHNPs>g9sigg&@86tLwDn z3*n*hB6oE`(DG7b^FLKm%i&h`7D%eZNEPxv2HEWLNw3p8B7uvoCNct&XY>(_Z0#Yg zjq)qRv~b|M`v|Dh1LHEnUFhTm+KV>n|Blrr#-}*gr#QLc>A>}oBaFBLGsI%u{+&e% zLk8uAGKq$SUkhsHkxVz+%s;=T)2brj zP#X6+fZoVltv3y`D6Vmz3}Iu|;^hFa0`fzOyevaivU~ZVPz61e~->mE+XtZ7EdH!6UJBC-kQf0O~`Y z32o?emNKAu!dUGPhdE$kyB@{SRB5)LQ?lhW@<~RIlz|WRG^nD+jhI9Ykg?8Gm@czo zV>WL_9Zq0!Wy`+$8_gw!G?-lI1-o$_3T4s6EWF@)s`k$Q1 z7^b1}TAcO7)q>QV?CBm%+Bfm4jdy;*x?XQ;7k@7#0^&IIZofp>I4ce&zIA&hatJ(F zVhg|wLZeb<*)nILGl`Bmr6rUBMX95v1fPeK6nR1{0 zI=J*aS6)CY|AV)fhi6;X|1(p5X#5??i?~HsFkM-((k!7&RKw%T>nL}Bi14xxL)7Pc z4SlUWK0lGdk5{PUDQx;+ie4Jx#?{sg1HI z!p#+O$ef_Z*OSTNq}Z{cPSo@ORk`x_EE*qF=wj$uXOAsZX=-o+VJ*rh7gpzZgo^ zISoKnK5K7<&Mmll|LrC!<}&>F!1{l^KW{5>^-q&KFnKig%p#`b;yqw)Y01Fd$LA3r zAc=!Nm%t#bSeT1^9F)}K}|#r=~xaE8`fHD}(b7Y-FBwTnG8LAo$_ zhxQ43QN^+gB|D%x_8OI04kdvUVBawna7=A;A-Ns(>#mTzUPJ=eiAq`Qo zVKJDuf#-Di50&T`?H`GW#d?*0W&9)m?B~bs``is)f#ollEnoTQMa)0B!`o3GrxqUH zV2$KAOwqiZI$HQEV_L#+nC{MT=V{Ox4$#co+a#DCBUOsRHH@a~y%#K;&6q^E>oZ;J zKixR7qn$&+8BmnIFf|*YtR#jo@F4u}X+PpJ$XG zi{a1WN#X2S!Qxrr>REO#bK9rutZA!=uD^OwG|#v@k2z8=NJU@H3@0*|c{=Kff=9AI zL;3*h%#DiM@E(}+dL2nFA29dXc@pOe11Jb!#&|QK+l_-2KZG`H)<2sc)0h~*Ku(Yv zH8ZEEQ!#%W)Bx2ieQ2}edi~b9%l(F189$#alL3v7Pfbm2z1{EOpR0z@c9^J9$#DVK z`4%%mQUb7&NIsu7_#=@!Tm7>A_sT|v=_kqjCN8trqIJo|fC)_Irq;Ef3(|LDM~w=4inKCsYwmlM+S1W? zjB#9QBlqqdloHp`{ZFb3Dg!aQUKO0%5#{ihV@^pChD1#_N(4|TQzIeJjAgD22@({e zPtvHDs1V?NdKPY7z7`o=^7^|i0hEJ-o!i7|W2VIZ%2j#y?bh$(;V7C7qRXjd;hIEO zo6J2%g0FC9?*~ij@XeKNvcFdA8LrzlQe$pmll&C^O&;W~+hCNs>#bS|(=i+3@=1XPj zQ}0u>oXNQDAW4_v7cW*8&72kK|18k2raihzWpTnH?N+@A7v zkPp(@3}at>^!E-6TJwtlp!@=?%c$SFB-F>|m}5&(TYG+gg(z{Wi=)WC^|vm?<;WTM zbwv~QAw!IuZBmrv#v(N;O#xYI9J^gy^@N6VpKFGDGssY17fG(ft}#0|JKKjaNP{M# zst55ca`Bv@O01yLPa14f%DR3Y-if%Lj!}Px<@X1PJsnTQH4jv+k*uX1Ez9<8*koVn zAlA^o)DrvztI$3{zAAk)VrbYB#^fV*4rHR#|$e3rlC zLAH%C#@&enkLZueAp@LD${}up=p{JfG>;vwh3B0lk3%`Vf@=W(gY}+k{v=ic$F!LO z#9xn_SXAfdlP@A~0@NeW=cEhg4bV9^Oa;0ZrhXz+65=9!{X!W(K3wcQbd)J{!XD=& zN!>WA%$Fv@SD|H|xzXo0e6PMsB6>sVSZ$(Up=7GW2`IIRVUAH>YIfSp0_67lv0UH) zHDwN&@INCkE<(th1rsp8MG^p zOkH_FZkB3twP(lI;&mGX#a;vw&x&#+{5j*`rKicJj92WFZ9$Upw^Ed@B+WQlQqz@` zw#h}#F4>%v)eGJkvkU?Vv`250wM%SLyz^6$SQ!r+?FtubBLk+q;cW;XTlC}az6BoV z2+$SePG6ksSC&H$io=`U7s7!RURUC`q$RX`(++eX!eJ>&*#rT)3=Y{2OMwas!Gb0m z0^4DG8TT`=?$9vZ?h@@id`{&W-MjTGE}rd z3d3cH6iYaRTH$F)dPv25Pdv)?P(0&CjX=vLs^`j<9)*t&xfmbf_dJ2I1`g+1)a$1$ z2IMqeJ!uAMc<5h`?pQ$1%nUakWp6-e$6^eZ!_YEdcoG!bSgWyXzY7--{t=_ z0rv>7&fiXTjmY*E5QG(xZKx@NGstf|zsDh;X%=r;s^;ZyBlKBx! z2RwSxG}|M=8-LG8Tm{x#S@_1kp{KJ%B7g~1SQ2)<%-Yu_2zvDGp*_XP9BjZ6EIMQ0 zmIi0X{-Er0V)3h&`M4K#Cm36P;{HEpNm%LNJ#VW%cP%E$v5@W=+J_x@i&kbT@4|UA zy#WR%I}%80yq`SkbJ~6{s;MNL;S5SNI%Z}38eP`0%m*VtGv)qoQ`CnKL_+FOhfshR zdf7&0(6-@dTp*PBMs!3o1V#(@y$Jx86=5ia#RsW9B+*l*sj5ZNQPCF}?lBWJ&W~*@ zrjq+V1c{AGiU(C>5PF{OppwpZ!l5pwiZGEu?zqnS- z&qR)f5wsC#18eT0e1JM{#J?Noyo@HcJWrve;h_B@L_TXzn_e8`3og_o;!~fXNZlcm zKP8D=v@Z zc9oN3AwEYX-HW%^7@j*1ui!CFXM9i(3P1$(bnRtC9L+WuT3>d2{IO0NvJgqcqY9M! zR4qA_y?Nwei7HGQ6Qyn?4g1LSKn+M8d8A*Rt{eU4XB7vm%x0V(5vC+5Va$Eu3KQar zp-+nc`Ayp7Q=Mn*Diu2GY>>q}Cn1vsd0~4BOEa8?*2ps*v3$&qi@^jX3%a(cRFftX zvQy8=5=`O@v>#8bBF>xoE-e>3=Kb|)jA&`v<*&~Nl9DKZnwFiI@HHXe7Rrt*Iq&OL zwCxLx+14jhF+3^6z4jeDKpV?ILwZyfPSK|6>Nb85rbuWBZNNv2QGv{U-TX@S76e++ zs*MfYX^$^ru?FVa&k@;sebq%eYdnnlFZ~fz&@XzhPp(9UZteZ~ z4TiFl_1jS{+%!72HwR+g{S+HhNY3hT)98Z89qsz?VaE#ORP-NVmKEoCx4~=yWENUe zE@Wb9m+^qI&xb>Nl1kciR(I3S|5W!v+&6V65P_ri&Ox?XZZG^x@(jN~Udznf-R_}B z``pRR_5J<5dH1FyD&xj^-&x#OAt!B*-Fvs{d%J;5qh?1cxDw~F?mC%sceegi88$D; z&%^|iuxW0VzFZ~qLML-87}48#w}Q9A*3%X*_`A+cX^LPMgL zy#NmzzEE+OgNZyzDhi6qR9yBj+IDG_T4~%F?l!0_b&j;?V<+|Fiv+;SVc*ze8C4{X z=g+s;x&WT!prY|ETv!h`x?1|L6ISCVzdL^W2hEj-SUgMAHkb^HTr$`$zj@0Vy3yJ4 zFqGqb@X2#$!}naeeO@MofzeH&&st|7+gyWw4m~=Eq_(ZQVp? zVo@F!;D^X4TX;dU?Y;!w=*@|s=}W}T+>zVBC(pI$&ZoO|M&&AE8Gil-Muep}HZ!LI z!hfH)DiT!koMZc0Q+oH!AN{Vwy;P0YR4PyC6x^d4>+gH_ zdGpo((7pYg&cp)(+<>ZE@uA9~9)T&(4_{q!7xRC&s*vTF<=lz;wU57>D3x_7Z3HHL zy#a75fMnOtFe=qX0{zYe(~J`d$iC;Qz zIg4QxEN&3g?NF#O4Fb{`BjCdpMJVD3-yk#y4@bmP%n!v=*x35SICULaPD5{)W9Tz1 z3V@*MhXbm-?;ku8z=YxkQeq-81KuG;yU}&(O7*Y^`had3@f_N-|2C@9Onl&s*npVjQqIe?TEMEBP( zjt>(EVPYp9)5PfPZiNI5PH~4dB-x2)-duf3b)}7*dL7n>33ffxz=CT7{<5{aMx0Ea zTx&YLgU2!wz@3h~^rbA$Md`fME=`CdWfLSxE4^lF`B))5L}_|TKK?)WJ7w)|J`6sd z$o)29gD6GWV6{fd`LF=t9CjB1B$*1rFk1Vi7CZ_;$GJ0)9LLtb#MxO{(hP4h7Pr%^ zi;$^j)n=W{g6SRy#pKZtbzZ+Cb*@q7GBkwX;tx~%vg_3thr{2Up0nn4N17TCu!{)r zNFF4i+9SkQ3#f~ePSxHrAR9awQKC=yBIkm{@@8ZSvn|2PJE@$5%1rrj%rR58jZ@G&)V9LM$lppp&0H>70A2b6 zB5{QpiJ1rFfCO}a^X(ER0((J>R3YI~wygW4ru`y(GLSm|Awy#~+pY!}TIV;29v7cj zsQvTN$_P^CmLSO|QcFfLQ)0Htu3DYU$Wm@ok^b)IicL0p^=}sHFLsJx6|zGF0MKlk z!u>!W{CV&nk`W8sMAGv0%6tal6&V1eesUwTKb zG(BP0fHJV}l9VPNUZ<}|WCE|9M92Z=z^Y)5=Ukiy7p8OeO?ih%bJr`5AZF{W9*f zLqPLF+I8DlYv$vDQmI$nS21s=S-CjQti&n+sR^adRt_<4jvc_p%D?u3uLBA~08Q4$ zY357>mMX;6&6eZdDhH46KhGs-a8jP=7+B?tH+q_On+vDyx4z{#4t3sbRK6iY8-FyU zs?K$)9Tg1AK-lJHVTGCeH zQW??p&!>HHtzF*A4DwbT`JGA2>j3G}Q5n1ytev;}p{rI(MkWteTa#Rn^vg}q5x2p7 z4K46_uc~o29C1T&QNkpNrqOwNB=i!;hbxa~X=&N9%#$C1bAU5cj?0My*Uru)^M7(@ zTx5^&3(tT9c@B&qjjf&_z};yZYCi1L>asTfmA~fYZ(|f2QPrnz>Rkc?S~~Vwa<6;_ zw6;9#mFkbb%dAw94+3bEX9U;l(jylB@HD!ER#JWD483l9J669(ZAr1^2>C|GTYAt+ zH>Kzz!!MN)8yXtE-=}cuI~Q-CRnhgmS6z7k5@+SLFEy(IKpCO7`QIcZx8bRoPhDSH zyUxBD4o>8Wj`xthW5^J#0~i>_>w1BtteN`$Af$0U`G*kSO%t%E=I}ffEpfw^?vaKV z8K>&p4~m#WqDq#(fmqe*1EI#JD~%W~3@#JPR=Z@AKE%{_VZ;9?z~IZgEcp6!&CvyV z(8CH92cz4^{bC_JFFDomX%FdE+o|Vof%}=569WBy(BCuwKJ*dE1FKbnf+zxepq8fL)6tHWuz^tsGSFb~g`x=lo$Vf<;g$)Z{Y*8l7w9V|r|%FSx2R~&7_S(vq|_@lc08_7+A2hG zP_x)h6jvnkMT6O0aq;=X8Hb4 zOwJ74?|kOxN`hJX%bxH2f-c(C_UTif%LW6tK9=t#6DQJF!6O{#>LL#e#M)acb^)W+ z#&^@`_bAw@I8sZ_o2_;k9I%PoRQ0O!^#&5bbuR)mJnAyq`O|UXvTMzsv;yLHJ`v=8 z%fhQdUf;J*$b=;NSFACm5ws`^H>|%r{7Hwq+cC%YNm(1o>21(W<+SP5bWU5I98X)W z)QvorXD@3c{qvJM-d#5slrPJWzB;1^%a)#z*m=?;%t`tzA zPDXrP=*erA&FEzOX?3%m=2NxF&TA)^KD{F{~o zDuzDbkZ|mg=Z?eDVfQ#$A=J+P0%={pXMaiQ}aDCNw{0saK)p@!tUbmID6YzS@ zoteO&2&=PMOAgZtSoW-SRjq~d^y|7s%Aq44Uy)q}1Fym@#+;&6>iw3#+Dp2?W3fXN zgX_K?l4N0AK{yViQ#P=Mg<7MVP>0o~4>eEo?wQ}e7bz)BL6+n9YLeeO_;~K)l4Uk5 zrRd7j(XN~3n3q(ApT3Go8z?OQ`gk53c`z=^f|4v%sy%oQ#}2A;$`&t6b#6#C8lwg~ zv~tAfzub3Uk_0|vc#YO}Qo?IOMato2#9UcGS}Bm^j-pA-8c^y!&Pz*c~m*ldC zQ6kj85f?BZ@obe6`^)W1BvJ=XE*ZGtj_&@6)c{RCz-94Z9P>%_k+pZ|hT=mbI9+hv z=L(jAZ`=jvW*PYdW#|F8J;i$LCR*$DW|13`ohG{GxwGf?V>sp)OzqBJaRef9g}5$- z2*_#qVuEpJkcr}uZiQbh^FmF|OS8Z}=*pXzP053X4QIL6NTe^uBs#thoSvQtM=d`G z*ev!w!&cx+y*|x7;QMXdnC4GCS9$4|yfmSO{YO)h<0!)skNzfaS{_LN&GFMtw?A<4 zb%)$u_*Tdb?0}ohQC1PJA81Kjz5J2kg&F{B{mb)?PmZ!s?`HwHx=_1XNcG~&UX7B>#Mxn+-Lf6% zWE{ExZqgq~VipGpRBf|oUl~-1441^vzGQ4dwnEkl`)a!{x6ow|^59Zb5ybLKZ_OL zqFF02MM*P8ueboQnE35`e8LCb%gXkyPQwG_&VQzC z;aYO~{)6%kE-`%PomW8#!oXL_!KsMY?({>o)&d0ut)J<=Pr~(&4TvHQS##czHCMy_ zOtcldcrPXWuXP6zy~H8i@NGd!h%TPF`A(fSg&NghQ%==;@``y)t5mGa>!-}Tyxvm? zrf!PQTu&}qQOV}r;wtp!d5Z|UNlq(FBjB09Yr*yVu4@lYc!Xq{st0qw@14ND=UtcU zF!u9lxuiUy@^3?qlga5r_i-gir}3mY)MfOQR@e4}DyLyY{UzE!`jY4kzg_4PqQWFZdBSB*KH&?7Ozz=+wj zI>^b{9rk1_t8`InR6ZFPrk#)J=!M3$#XJiG_X9%kd{Ux%J90X>T;t**HGl@pRx-~D zzh%+rr__?0C7JS?TYvojxh=gaqiFt5exK&T-JUp}4i99}uWp#xBhC|a=eDGdq$Z%} zc6aCNZ~(P}(a(b6Pt4Ul+2Z87HnuYt9WRcz@oYr!{cB)gk9UsTJzs3E4drB@nEX21+U`oZq%ofn#u81I5?M`+xM`6b))QMmUuv8x<`m#oN8b-8aRFr&X{i> zO9ZQ95CO;mH^CJ2dBz|-N$JoGf_snZ;{4mG_ImYydAQf8Y3U4q-Z$~07C4lhj+#>t zZDrljSVx2egKbozDA#5_TCBlaJ_eaU*0^##S_R~JFxGgz3q)1JZ1cPLVUs8@m9)A> zJDl^*PlVYt#-8CtB1I)oeTa*9kvk$EM>z9@g#-!p7c^P*S$L(-%+C+Or8LB`Jd`=* zoteg)`cbhVIuLWUJq^B0v2X<3Q~SlwuP;0GLcOyj9|?0)w$=_;Zbl=iEV>^0i4Y@L zS+r-)JTUobAXa0{23GXJG($i&zMIWZ#ecl!aSd0`Bne<}x=OyUiwm&DqU%N}imYSP zPP)p(6jm9<6V9dh$Ng0^2E>~ZWhP3l)_6=M2>&(dD#(3LXdp1#Z!0SoXw9e0yzjSf z&Or1^bcG*7M?g3%Y6m4A&Hrx=+lHGkcrT6S^-$43pdRxjU=#D(m+qo~8C1kf()=LW;2{G7HvL*@SHCqohuL~2>DpE4 z@^$HEvwtw(7wVJ%8dhaKsKmd`qShq8H$*Kh_eTe}2Y!Y<*CZ zT8RSy2O&`CD-+RM2Zx!R#l|hC)T8MEUHn&^x0FPg-OPA--djU#Z0)$vmXp0NB(THrG_VC$mu2y9rEqjYNFnZB2gGKoX11sQ#lXa zo+%e2OHEB(>JIGoL_mnt=*Jd44;I0}X+r4@&b?AfIazs0V1waKdhPSMOkTeRJLqv3 zCb-)z6wDscSLoLJtdr|j3IOWfaK2R{NM)FFY@TxPgg=-FzdK+0E_g{=$+kUJrQO)L zG4}7j1=HgIM)+as)w7#HM;8PMB6}Vm-NMghAKp2P2i^aref700Sr9gWb7zwN%Gz#e0kHc@uSSeqLJfdUP<2%iqvCz7h)idyjLong-B~-!nm% zuC14$MTl4xl^TK|@@NY}2ddNnU*$<oGb*{dKOH zZ^oikFTxKvUGAiC^696ztakFJpnx;8?+03_j0WE7&%W@A1e|`Z8(A(#_yF_MdwVa_-t*>RrKV_XzIBi{^#}`6dGl0wc zZ$9k2AKGh1eJ7-&U$?1PyGW6ZVq_#i2yrin7DwH6&4g0k5di@`BCq&x z8>rvIdy_splb6*gTFP$!cAVWZR{0r?DTiiw=@1LAeAFw$Jt{5UpnRKT*5N)Eog=mx za0&Z?kN9q;pz)TbCYs;$heN(>Pbg#9&+lrq<6esT<@!6^m;()4VZq4wtIF=WkMs-A z%7Elf&ojOKosh12DZ+`B7ID*ljxuL6v#MxtF*cuhb9{Tm)5m^RWu4!KRFKpBq3hR| z%$07M*;yUy@d>Z$nnnf6VWEJh=pPFwUK+f=vCf#!!B^VUK{dbNB^?9%&?S8DFGd_x;M`X1^7ajmp{TmAf~pH z#{bi0X3sOHsJFVyrxZ|w;GN`X3j$IKnn>DUhWbAsbxrLi|1Cb}y%*r1#vk@_?q2lq zxJ6_**~YO8qqP6+43%B1$fzWpbhj0aOpNd|0^n=PFY9-8FJqVkF6Ls-jjVuz#iPPm zM_IPN?M~Q2q-aUJa4y5({T@!YpMiST5fN#I3jW>y{* zGnROUp12XSDcuRN>+7KLfj5)C)qHXWkYX+kjuPK4b?E zYBBfo;-#;M7^=s@xFWeuvkmZjXv#y6G|+^w0ZR#=h#z(BeQW642-`@u$AR>^tUMKP zG)mw?HLjt~k=b^0*5YOSkq8MrHz9P5f=uwIyn4?eL2u3wfkbI+3`jjALriUjx;R_Gx?&G8jfwtBWRO(Kb)!^gMu%e`_E2)_`zdr`K0R-t@- z2y)H8(lE5IL3LHUXE+z9QXK;iAQfm=%CI@mBg13c?!KHH5@xSGMx;X4)W>|MN)o}S zm(ZyBRl^=m%Kb}0oJKUXWEfsDSH{JrFKH9*KsX{p$1}Ym;3FMa`aw z#4>^qe>Zja|7>u@eD>%O@g4`J2cLP06#OSxmX~q!iHACt+l@&!PMu_b!L`Yzk1?~C zd?4(&TZaz8H4J}6+CT?XUZgVJpFyw21!|>BS{@nMC-2vGxR1fa`vWVJUVvNt4;(JOW`kSVo5aayK z@A>-{%I(yB#mw`Mca@t$_z)aQWB63wEP-3?92$H$_{G!6Xv~^IdXR((bIylK!x8&h zY}8rV;`!Aev{;ZR^DsEsp~|=$TZ=HXkxZaaRiCA_bGBSSG}NO#-otJ|D5y=G0RPzI zf5e8b$3|#k;9jxy+=(!d8#+GO&)~|l7|gx*C9~1~X^{7(_nrZp1dXmBtxr+%5w8l| z`o|5a;pRo8`dwRI%})Toc)VU^xbb2MhGFG;r8$aJAG0~#+l89Vpy*MHBrT+cAz&Wd z%*0Pc+{LF`_c=O>Op{wePH=C7MCy3}yFBqItNz`34_##XLvTMAfYMueQQ==Ib~zV= zG7j*{gr^QMh|r!E7taPN9xjhu_y)zh+;m0oyHP2jR9QCk-`}zNfLTV6AVX%Q5av>b zX@1QNT-~!CC#R@eJt~5m<<@!8Xq9Iao7aa1ekuEHW0**_uiy5^aikH`Bkg~=Z@v8p zX$yA@q@5TprANxW?LOD-)yI8jaTLg3nX$wk^;-ZHk z(XgR(biHch_!|mA8Kr2sw@EVKXyYXlmg{!$YmrZI>dbZ9CpS?CSg@P#CtcPLYkvLl z@a7GLmJ>fV+MY3_EAkJ!P;OisVOUUm1ia2>f^UeIWyal$0)z0 z^zFJib$vW?=Iummd<1xhJjK2a94es$6v-!!fFs0p@E9{rW1~+Ct&!L9e)^uR?n0ixbPQ&1}BZuo2yY~;+;zwj0crpoqceHgRVuz{6nyQ)$HO##D_<391{6x7;rp% zSxRb=va}}ZD>x*NbB@<}0z${u;})GVMY0Mg+sgYz*Rm#e5|a}D76iT-Bc%{SJ{Dg6A@kL}~@9#y{uU(x1niiCfnSM;Eqr{=xI*-tpp>asSD z^1=vLZ^le?G!Q+u>6LT>f@fTJ+q600_k;3!9?YCXn$PRk?6SbYz#KnuyrKn$AS0Vz zgUa8%Jf0|#e|uIe{^7`NYQtfv6@79~0l%TsQ&x|Oq5%ykQIM)4J*lWDw*;=wZ8~(G zwpGuj`8K^K+NFm(q4lzjVsGcPC3Q#<%W>q_BFv4O>8S&9H569pp0IJ)#^LbXN<9i?v{?+Rn`uRQF@Gp3%S}glG{KJ2)z9a zsdnV9GVQv*Nbm~SrNH#uTv%ugm`%eSC*VL12% z+2G&v#QAqkpAZ8HKII-aF@}g(3SQ(kfM|`rt+3;MHcxvc3~udUQWI<#qN6julVb9! zg$5{Z`u8P28}WUD6i91SRgYO=Et_QqNra1d^yxAT`zboTAXSD!mU=;Ktg~}hJCFPW zoMv#Q(uSnGb(#D>c9+I`KA!`F?D&e{!_2cXWAwELDY+l`WAc0be6+F9lpDfeRjNqd z<+A&$<=bO+>D>A4q1lJt+5TpUm1(aQ%&D7oA3aE{Tza0^Rf*)Fd@h}mr?@vA9LXeP zWQ|2Xn3{Ev|C=aGtC)GDlENB%&=VYA5w!hE7WW$&AadoPh!-tMxCg?GvI1Q%5vAN4 z(}_KK-O13Xb8e3v-?L2GASj%@kiJJe2BHf2sLzX9_0(8fP9Awr2N+xW-XZ}cjTd@u z7OJ;mG#DTHocd$pZ0ns>dgk_E>76_?L!5#AZNGwZ-3y8N+gk$(NU&ft)9fJn@0~p1 zB0M;JIA8}UyL`qV_TgwmpVF`N`?G{}c@Bix?1Q_EEgTyq9byuARjHu|y9xn^?3gx#?8_Gd#3$Z!X*-@`nMb)~dow)> z3y85FI532b&-ClHK-IkTc!<)`EEa+nG9}p?+YG}G2$(`O*hO>zT9`!DKx3K zr%?nyl4trA_8s$Dtd2}eaCFSh1gvqT^&NlIfAe@V_XCx_tkv>JXySDZ6)_Xn`^S61)?K=z2`<+^%UEy3u zJOO7N+}$j#dt|?T=eHkU1R_9G*Z8nJgJ|G}mixwsoGlF+ucw~Z@6~X6A$rsgQ;5wT zvsFgc4SJ%w7IDiyMu$lZ#Kl=b@`|VD!>h*AmT@^(m%){;!(4aGzH@+Wsn>>N4-vp# z{sXz6JMI3a>8hVi1$Sk)Jnt7J%OcZ`uvmt&J@hGFu+9~OYTiY&>oLMK=|ur^O@I4E zQefH~IjDD9CBj6c49vhaH>6^5Zl49(Cngw&{P)85=PP_^{xkFE3gyaVUE}6bxfrmx z{Ti2rj}_i3O=$;(59Oa-86ScjwcMZ%)d$C9yhP&~aPwqmHk?mWOj;3@B4ivE1ELxv zN7&t1ZMov{W)o?!4w~_z9S%Dzr`M0hxnCdq%aP*S8sS+`fCy|pkO1AupWl9`?;^XD zh^#$4=r^azI?$zpj|Bs&Op0y)ku_L`iBNC12mVLTI~hw|IdD*-0((Qml45elY8Ze4 z>at@G-u4t@OULbrn;(u09%*%x0+&53k^QJFsLy`CWo-1P;805J+ixc&TFYCv`9ES_ zr(fsVo_z+gL0{I-&jhV#F6xn{rE)!_8OcF>3NC2aM_x*aJ#cySR(OiYL?A^4 z&-=zI2Cq0RexRnqIp+vF6-&ifm)G4?QH4Mx!rGE?@W5%;oAbLg#YuNI4?GlEj*Dq9gM)3x-C9!v2@+4{Jq8N zSPB6E`?Q;B8ARFp9SI2dTkw3Dh08tMJ1Vw{0+T}=#?A@CGRikWwZ`X#*O{TphOzf| z8aU_cU3=6-8UWBX)RaPWXE?6C3(lPvjR>VRw57ejYmRu33cd5%*tuCWDVZKFsBi)T z1Q|pEdCOZj$XAX3os8^y=9xcphtc&xk`iYyE~}%ot*jM($6vp@?pm_T^~T7_d~3p$ zbc61k9oR#8|5z=VLuhFNvha|f3BBS4$@JS^U@qe@)1BZ;+iqA-Gwsb2%L@@~%g{Em z&RE%L_U54{4!+#+&cE>nD;!jV9DUBS_j5~zWt_Xb)CU!rUG39CWzm}a)_GVDM*5#S zS^l1YCavF{3*FcdEO2yMCB(m;>v_`}H(L;mRlv=jofQ*&t!qkj(;Ec$HadGakns$F z#y%=F5dfRVgtGXyhK(I>Ytl<)&|G$0;WU1%PgZnSJrx3dr`Y&zo=f#5==d5OoRm-x z2(p)l4g@Az#VeR4j{7<-Ay2mZIh)My3ZM9@)gjO9s?|YHSERV#tox3T`o|<=a2#YX zSRYx%@A`A2l+O7IO!M>g6O(7WeoOy2ixllNMjtQ*9DoH;5Znkt{YVreCDa|~zu-=` z&D?8t#0v`P$@U6rcbE!aCPhGtc7hAT>VF)U`Rr?1hV2Gm?>AgTD|Nn`wnzX^Jv2Se z?F`vRd22EFSS!TQ(e1#4E?ut?TX4T4NR{y%I^A8_jT{lTQulIJLM6Ux)10xle zEJ&8ne6P9m*MUStjwrFnQ6~1YuaYv$`YgyKG%7cZ#DV}`pXE5q2r!u=r7bQkje_4g zk(=2`JG9%Up~@Sq9nQ;DgDGE^mXe7N#eUxNWjYmBoZd72*u=vl;maR5sZnd%5zc)8 zZ508tGxIKDk_AxRfoE4Ah)q5FL)mik1?T~O)L$B!yj!-!q;-khNwzQq-9tLC(G1Ls zMhD_fKvz4S)|~Q%Q^{e?=Lc#<0=&Dh zGC6(U4SU5aYVHB%Z%U>m`&8^kBX~W8BLKX-|G))ZOCGG|1vDgFbwGi$Zur<;wrs^R z%70`atGao89R5U-W;`hRfP~ZQo0>byW~7BxJN?ysBu9m_#VBc7Kc9eQw3#LRWv-9w zay?U!WEa-JzAh>VfRUO-8WM&4*EsKn`IS}kf;1!_#5vSYiZm9RyjWk+5*WX0Cv_LO z^Vlg*qRgix;eO7x(zN(5YrMIO9d6ij$Y#1OIYK!dFxw(5GuD~eKuOwU(EIO_Xn6`` zQQlt73+D6BbI-&wYZ@LT4&US9&4C#eEnFw#EIF|nplHw~GG5;^D;eazwrqo%J7;we zfmM#Yl6zkRRnfI4j>J)X3TqqCYQMDfAh!1N^NWf}iy_S{mfgF>crTFc8iY;$_fT18 ze_Sin#G9uEnkQv7|9r?mVaWXYh{RvTt+}{iTM{2!z>dC#~C_xuJXax@hII*8S`3 zHrtVd(bwAj@9V2t!*qj1Zk%u}d|!~aHv;xzz~e_rl=8>-005YK^xeX>UapB^gd%4C z&V>uaY#K+`yK%dhjLCMBRT>2%x_)Jkh#Btb6Fj$OI1x$y3y!oa|z9jP9hw(CF!HMmJ7(DC%l-C^l7{ zyZNS#n0(`hIIqWO(YPRps8&gd-;v%VrAj1``x zXOLedTXV6~eFONQ*4C@XptRdmpBP9V3>KnW5RRDH@>o;b)?42fbxO0@L$V$TkEzZ@ z1;$XUPzcx_tTZM5dL(EW#*yvdZy@P z-}YV&$hnv(=A$be4%|U1k?*md=5}O+AZI78!+`aCT@{)(n}Ma8aaGunc~G6?c@|N8S`lGkY(KP;WZA z{|Aep{w?KdJpmei(ti}SB4AFzPUdpI7WBvT+9^{;D=+cU;@&+}6fDFB9OEbun_ndZi^5K^ zBT^;;zeVqBG;9T7$1m;pRo$Cy23phBYz7P_&XzBDZJWS?Ft?&wePBsf9C5AyBm|Mm z$fg)jfs~`_ANjrfoX|M*tUv;0{)4O85~M&2uF*uVJ*N%%m<0e;5xGva7gmlLij&tO zy4ONWC6yXfG0Bs9@h<)yrYypCs2|%Y^NCl}SYetRbxGcEyMoELY8M zR1NHiI$iJ{iDm$Yj!P2D#{AT=QqH8@-dQ%gels{F-8f4wYS zf01auq%s0BM5e@5!L!NP)BMo}Q@HQjoR8pP*M$M<{3zQkCNe|u8)92cQI7b%#b5t+S?YxhsH4MU z;Wk{bwv)x6DzELi*}^4&^kWGCgy`U}wk^z@&AZqLSLw)S74DEblm*FO?l=m_(k10W z@9T1yB2xHQrW%-7YSqn2^||MwV^f{HeZT4!D(a@heu*j3pIj?a&*OX7_Opf(u89;E z=_D3J-4O6(^f$m|JxER8=ooVDUY%XAh1kjTiM|UM+8=1#lDh)?vh0QgQ~O3np!1DL z?4fE5Q8#ObV*VhfZa=(=)Wi9?qOAQF-Fju|!pU24D;a?eTDI{_@wkBms;d~W5$XXYDst;)ZtWddaV_^MD0?LX{346ep;PT9S`y>s z;)w`IEZPvqoa(p_eT{%lO-`;QBqVr?n$>N^WgRkQ9lGkmD;QMGKlQJ90DvB&N=DJ~ zD$nz6l2ch3?c$7!qdKRH;s$N+pX-m(a1+yJ!t>c=NVDoR4Q4%_LjK~7+N-)oAYPmd z&5N?74&(WpT;8}G#eV%7Y>pRzj1U32LEpCL>nk30w(7x=@4JT%t%PkQU9O~RFm;Q+ zzKFgF_OMXa-XHa}Sn=f&>*hhNUW2`0q&wwVSqxANcC)r#no;GhTwb<`7O&&gd>=G) zUY2#3sW5Ez2ofp~3u+fcW?6{X?u)4?3)Zj7B28}sVm+Dj+LeyA)YirU^T;YF&&WcG z5s;ga0cGqFS5r4FHS{_@K3?EYm}NfV&KLQLV6x&nzb?9v>+zuWeVmv0iJVtL5{ zq)CXN^cM``d$k0S8O8{aJDO&{>5-`$yCr-5I4}qPC8)-<481NpgbGk>-JLRXePE9g zPVM)kFefvN>w1po>3U9g{P?KJb5kEUD|T*WXJdOtAGJKF`TiS4i063#K?neBSi_)U zn%0jB8SPVY%B5oI{+5S)zP#8i&Tz?A&abkWr-D15F2+-)1y-@r9V#3bkzFDZ+oZIA z9{#{W^?Gq*|NRCMRzO);`RQF|_rvu;78D9am^{UQ{lK@JJmz~yawEQ8MCRYPlRvX} z?xed}!z~Uc^n;Xm4v@w`3Cui%2%a7tZCTd8UZ_!gBzQS9lO~V?zXNT6{#4BiX=!N@ zIMs82Qe5XS2{`!E_mfXkTCy9xjZ>rv155@RZ<#PCcgo#W7DO*Hw*xmCNu)1ar5V&G zsv5O1ugf=;%fmCO&Ya}5$K|L&8#RZ7roh+2?fO4jcy}=w8+Kw9@YBgC(Akccx1l)i zU&vuWsE@+il}>eBJg&b+SPNqmpF4}Ly_yz8V|_b4Eg)e$DxEUWeVv%If1nB_;VS_g zZtWhd4+*W}V~>i8`p5k0#fv{t;I62fQKW|6J&mw|IA%zkTQd{}*ekTTbLf7*R;w*2 zQ8;mpyskm{tE_T9xmf+mNH>>DcW2FB(ZScE@KC2orxXKt9|+m=YJ^6ZUii83(@n;OP{j-gE7Gzzk~DIVBnA2_h~ZN5sNWqp2{#IL%#`a5(*)P|Kn z=uNtLU#n1`2RCGZ9yVZv2x@ulE&VLK{Uoa)NBksrRn|&poUvWZP=p#5kvl}5(MYy# zoNY$bp*jmFBYAW;=W2&E*EY~C?}!A}jDIQtx!^^81~cyI)aD;k{0-sB6;xAG`(Z9J z-n`TF_2{5q)K)P^w9}pXn~@O0^Oh^$;3Dv*sNV6)pi3@HAC7F~Sjz$j(|iKgB$5Y0 zaKi+iavI|M*CaUE*$tFOrD;(L+yac(3hL`wj4Leh+`!q|{oNmj^L>4NyF_jI3kwU= zH+e}_fGi|`1dl4jFjB3ESWs7&NR0_H@ruG3{spjNlHOR#Ro}H`Sa>;;O)1&tKz=ch zn}Zd^Ts#|(ma>}TU$P~0Kd*jiV0@=X0xb=B*R zj*jcFKg~9*igzQ{9C-*5bR&JpIHEz{fUv30^-w?EiUR;+T^)d z{J7Mb=KC0d*w<#wUfY|W-yIPC@5XrHh4jh&c7C|+`YZeCa*N$=_sdPtVS2Jg#nM1I zAxAYjl437yy39~1GN!#0u@`6^!9pmhN;|86CK8k#)h)XBaPF46Z#!*Q$B^DB3Q;a% zs3&flT4?q@1(|G#tFqoWbnD{o)|I-B#EhzULjEaROp^^C0sz=g92Jp>k4RKvP_^Xb;7};I>wnu67az9f;XCBH zJzMSI%lMGC$nhcs>#Jp#0#jq-8(Afh_R1}0%4DJzjv$+14HcoJP= zxW6pamuq;lF%}Be-7f1*?#6ndTRCX~pjZU}tignmabr2|Wk%7dPxdJpTOtvxwfoK! z9Y3O8AN-0G@!xAY5SV&lJp{(1f@KAMJQNHZbkCBZprF9q8$PavFVto}*0M@q=a7H% zSIfY_Ad}6O)-T(;@j7X;{%2z<=~s1gp+?8Ve%5-~2KWlitF=ZM1U~&9@SY&4USPu- zl*QNAghr#i=hH8QFYk8_Cj5#7Vs{YZNAgcs%Ui20Xa{CbC;%Rdx4y^Q z^!p5|y?Q8pKhnwLs;2@e@0sp*P83-4GUgaD_NxQ5_&|69mp6bP4+K9tdn#7v2M+@ZY}$ zD-}b3vAOzo*x171JN%Dz5D4=(muLIjpm~<8$_oAYP5uNz7xUOf*}96XWtgJ3MxjyoE1|96crPpAM5w1%}B=DY)X=x|0a+|OWbtqY6ujt7Q~+5 z&^iwG_SYr5cXl^7@Bh~P@0LhH_yxFSNz=@xE;I{t1)u;AxL2y8CkxBM6}Ip4Lm{wB zFn77Y`Ec~6YK-dzn$`y7p$xdwIv-(3$qddtjjXANov@^UnCM>z0VNXPPDBU~qz34R;Ex8*41JPp@Yo|H)o|_ZiYI77&Rf z{1LAIeGnzz<0W#?$BSia^L2bBew&*J;E?n9Q}yAt&UJ}yX|e8$2gA)1r+B$iIrTrL zN3E8pHu^yTRN~}oSP&`QW=c#7+-}Zu!8iaDyneA+5v=yf;JZmgHLL@fO_Y^d$Gm1N zbZYJFj4=0IOX&fHNPv%5KtMp>#Kc5x@sm$YY`_KGJ{&Ol=gT#!6_esQee#v?Iret% z-1VibV7>^SOe7(87gw?PW?Z{xLarCaS#bs*B5Cv8fQ&ALtL7<_lau#?Wz6$fCLw+z z>uBdnR}8ve4r_c%)5G&U-&a|zG0#e&YRoOw7!klteS7T|2S5*$@T^2<9fH=m}LVfEUbM0-6t>sF$l+hy4$V_@Qh7 literal 0 HcmV?d00001 diff --git a/jdm-core/src/main/resources/icons/icon-jdm-beta.png b/jdm-core/src/main/resources/icons/icon-jdm-beta.png new file mode 100644 index 0000000000000000000000000000000000000000..4417127480df34df4be937ae96f16a0f27f71d98 GIT binary patch literal 38173 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 Z{SQLXeyc-kJ&XVV002ovPDHLkV1jRUZRP*~ literal 0 HcmV?d00001 diff --git a/jdm-core/src/main/resources/icons/icon-jdm-turtle-bw.png b/jdm-core/src/main/resources/icons/icon-jdm-turtle-bw.png new file mode 100644 index 0000000000000000000000000000000000000000..edf9bdb4e2a212e1c89dbc951d6730b869266260 GIT binary patch literal 15951 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 Q5P@Szi_41@iRk_KKbV%yEdT%j literal 0 HcmV?d00001 diff --git a/jdm-core/src/main/resources/icons/icon-jdm-turtle.png b/jdm-core/src/main/resources/icons/icon-jdm-turtle.png new file mode 100644 index 0000000000000000000000000000000000000000..05a74533e173c23260e070ab1eee9d978d0be7a3 GIT binary patch literal 17913 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 literal 0 HcmV?d00001 diff --git a/jdm-dist/jdm-deb-slim/pom.xml b/jdm-dist/jdm-deb-slim/pom.xml index bc2ceeb..1f57170 100644 --- a/jdm-dist/jdm-deb-slim/pom.xml +++ b/jdm-dist/jdm-deb-slim/pom.xml @@ -101,6 +101,31 @@ root + + + ${project.basedir}/../../jdm-core/src/main/resources/icons/icon-jdm-turtle.png + file + + perm + /usr/share/pixmaps + jdiskmark.png + 644 + root + root + + + + + ${project.basedir}/src/deb/share/jdiskmark.desktop + file + + perm + /usr/share/applications + 644 + root + root + + diff --git a/jdm-dist/jdm-deb-slim/src/deb/share/jdiskmark.desktop b/jdm-dist/jdm-deb-slim/src/deb/share/jdiskmark.desktop new file mode 100644 index 0000000..0c30eb3 --- /dev/null +++ b/jdm-dist/jdm-deb-slim/src/deb/share/jdiskmark.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=JDiskMark +GenericName=Disk Benchmark +Comment=Java disk benchmark utility for read/write performance testing +Exec=/usr/bin/jdiskmark +Icon=jdiskmark +Terminal=false +Categories=Utility;System; +Keywords=disk;benchmark;performance;storage;speed; +StartupWMClass=jdiskmark diff --git a/jdm-dist/jdm-deb/pom.xml b/jdm-dist/jdm-deb/pom.xml index 30baf26..bdffb02 100644 --- a/jdm-dist/jdm-deb/pom.xml +++ b/jdm-dist/jdm-deb/pom.xml @@ -50,9 +50,49 @@ --java-options${jvm.run.options} --linux-shortcut --linux-menu-groupUtility + --icon${project.basedir}/../../jdm-core/src/main/resources/icons/icon-jdm-turtle.png + --resource-dir${project.basedir}/src/main/jpackage-resources + + + + patch-deb-desktop + verify + + exec + + + bash + + -c + + + + + diff --git a/jdm-dist/jdm-deb/src/main/jpackage-resources/template.desktop b/jdm-dist/jdm-deb/src/main/jpackage-resources/template.desktop new file mode 100644 index 0000000..6c2bfb0 --- /dev/null +++ b/jdm-dist/jdm-deb/src/main/jpackage-resources/template.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Name=APPLICATION_NAME +GenericName=Disk Benchmark +Comment=APPLICATION_DESCRIPTION +Exec=APPLICATION_LAUNCHER +Icon=APPLICATION_ICON +Terminal=false +Type=Application +Categories=DEPLOY_BUNDLE_CATEGORY +Keywords=disk;benchmark;performance;storage;speed; +StartupWMClass=jdiskmark +DESKTOP_MIMES diff --git a/jdm-dist/jdm-deb/src/main/jpackage-resources/template.postinst b/jdm-dist/jdm-deb/src/main/jpackage-resources/template.postinst new file mode 100644 index 0000000..c5e2e40 --- /dev/null +++ b/jdm-dist/jdm-deb/src/main/jpackage-resources/template.postinst @@ -0,0 +1,38 @@ +#!/bin/sh +# postinst script for APPLICATION_PACKAGE +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-remove' +# * `abort-configure' `in-favour' +# `removing' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + +package_type=deb +LAUNCHER_AS_SERVICE_SCRIPTS + +case "$1" in + configure) +DESKTOP_COMMANDS_INSTALL +LAUNCHER_AS_SERVICE_COMMANDS_INSTALL + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +exit 0 From 6b9f2a1a3dc86daf888c09481e6ca6cd3976dcb5 Mon Sep 17 00:00:00 2001 From: James Mark Chan Date: Thu, 21 May 2026 00:47:54 -0700 Subject: [PATCH 2/8] #128 turtle icon in ubuntu taskbar --- jdm-core/src/main/java/jdiskmark/App.java | 4 ---- jdm-dist/jdm-deb-slim/src/deb/share/jdiskmark.desktop | 2 +- jdm-dist/jdm-deb/pom.xml | 2 +- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/jdm-core/src/main/java/jdiskmark/App.java b/jdm-core/src/main/java/jdiskmark/App.java index c6e3d75..440c8ee 100644 --- a/jdm-core/src/main/java/jdiskmark/App.java +++ b/jdm-core/src/main/java/jdiskmark/App.java @@ -1,9 +1,5 @@ package jdiskmark; -import static jdiskmark.Benchmark.BenchmarkType; -import static jdiskmark.Benchmark.BlockSequence; -import static jdiskmark.Benchmark.IOMode.READ; -import static jdiskmark.Benchmark.IOMode.WRITE; import static jdiskmark.DriveAccessChecker.validateTargetDirectory; import picocli.CommandLine; diff --git a/jdm-dist/jdm-deb-slim/src/deb/share/jdiskmark.desktop b/jdm-dist/jdm-deb-slim/src/deb/share/jdiskmark.desktop index 0c30eb3..ba5508c 100644 --- a/jdm-dist/jdm-deb-slim/src/deb/share/jdiskmark.desktop +++ b/jdm-dist/jdm-deb-slim/src/deb/share/jdiskmark.desktop @@ -9,4 +9,4 @@ Icon=jdiskmark Terminal=false Categories=Utility;System; Keywords=disk;benchmark;performance;storage;speed; -StartupWMClass=jdiskmark +StartupWMClass=jdiskmark-App diff --git a/jdm-dist/jdm-deb/pom.xml b/jdm-dist/jdm-deb/pom.xml index bdffb02..4c65777 100644 --- a/jdm-dist/jdm-deb/pom.xml +++ b/jdm-dist/jdm-deb/pom.xml @@ -82,7 +82,7 @@ dpkg-deb -R "$DEB" "$WORK/pkg" DESKTOP=$(find "$WORK/pkg/opt" -name "*.desktop" | grep -v runtime | head -1) if [ -n "$DESKTOP" ]; then sed -i 's|^Name=jdiskmark$|Name=JDiskMark|' "$DESKTOP" - sed -i 's|^Categories=\(.*\)|GenericName=Disk Benchmark\nCategories=\1\nKeywords=disk;benchmark;performance;storage;speed;\nStartupWMClass=jdiskmark|' "$DESKTOP" + sed -i 's|^Categories=\(.*\)|GenericName=Disk Benchmark\nCategories=\1\nKeywords=disk;benchmark;performance;storage;speed;\nStartupWMClass=jdiskmark-App|' "$DESKTOP" echo "[patch] Result ($(basename $DESKTOP)):" cat "$DESKTOP" fi From 8001e45e42af29906567573172c2756b3ba9eadd Mon Sep 17 00:00:00 2001 From: James Mark Chan Date: Thu, 21 May 2026 01:15:37 -0700 Subject: [PATCH 3/8] #128 app icon and single title menu bar --- jdm-core/src/main/java/jdiskmark/Gui.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/jdm-core/src/main/java/jdiskmark/Gui.java b/jdm-core/src/main/java/jdiskmark/Gui.java index a91ec73..e647f37 100644 --- a/jdm-core/src/main/java/jdiskmark/Gui.java +++ b/jdm-core/src/main/java/jdiskmark/Gui.java @@ -109,6 +109,9 @@ public static void configureDarkLaf() { } else if (App.os.contains("Linux")) { UIManager.setLookAndFeel(new FlatDarkLaf()); } + // Enable FlatLaf custom window decorations (unified title bar + menu bar) + javax.swing.JFrame.setDefaultLookAndFeelDecorated(true); + javax.swing.JDialog.setDefaultLookAndFeelDecorated(true); } catch (UnsupportedLookAndFeelException e) { // /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. @@ -126,6 +129,8 @@ public static void configureDarkLaf() { public static void configureDarculaLaf() { try { UIManager.setLookAndFeel(new FlatDarculaLaf()); + javax.swing.JFrame.setDefaultLookAndFeelDecorated(true); + javax.swing.JDialog.setDefaultLookAndFeelDecorated(true); } catch (UnsupportedLookAndFeelException e) { // /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. @@ -149,6 +154,8 @@ public static void configureLightLaf() { } else if (App.os.contains("Linux")) { UIManager.setLookAndFeel(new FlatLightLaf()); } + javax.swing.JFrame.setDefaultLookAndFeelDecorated(true); + javax.swing.JDialog.setDefaultLookAndFeelDecorated(true); } catch (UnsupportedLookAndFeelException e) { // /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. @@ -229,6 +236,10 @@ public static void init() { mainFrame = new MainFrame(); + // Embed the menu bar into the FlatLaf custom title bar (VS Code style) + mainFrame.getRootPane().putClientProperty( + com.formdev.flatlaf.FlatClientProperties.MENU_BAR_EMBEDDED, true); + // Apply branding icon to the window title bar and taskbar javax.swing.ImageIcon icon = App.activeIcon.load(); if (icon != null) { From 9bdc4625b795ed1628975f94bde87a40ac17ab29 Mon Sep 17 00:00:00 2001 From: James Mark Chan Date: Thu, 21 May 2026 01:20:59 -0700 Subject: [PATCH 4/8] #128 test pipeline solution from sonnet --- jdm-dist/jdm-deb-slim/pom.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/jdm-dist/jdm-deb-slim/pom.xml b/jdm-dist/jdm-deb-slim/pom.xml index 1f57170..e1dbed9 100644 --- a/jdm-dist/jdm-deb-slim/pom.xml +++ b/jdm-dist/jdm-deb-slim/pom.xml @@ -105,10 +105,9 @@ ${project.basedir}/../../jdm-core/src/main/resources/icons/icon-jdm-turtle.png file + /usr/share/pixmaps/jdiskmark.png perm - /usr/share/pixmaps - jdiskmark.png 644 root root From 3dc4ad912104d81b83e042fcbf206e9ca10e7e6e Mon Sep 17 00:00:00 2001 From: James Mark Chan Date: Thu, 21 May 2026 02:27:23 -0700 Subject: [PATCH 5/8] #129 #128 shrink about img size by 1/2 --- jdm-core/src/main/java/jdiskmark/MainFrame.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/jdm-core/src/main/java/jdiskmark/MainFrame.java b/jdm-core/src/main/java/jdiskmark/MainFrame.java index 98991d9..08e30b6 100644 --- a/jdm-core/src/main/java/jdiskmark/MainFrame.java +++ b/jdm-core/src/main/java/jdiskmark/MainFrame.java @@ -839,7 +839,15 @@ private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN- }//GEN-LAST:event_exitMenuItemActionPerformed private void aboutMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_aboutMenuItemActionPerformed - javax.swing.ImageIcon icon = App.activeIcon.load(); + javax.swing.ImageIcon rawIcon = App.activeIcon.load(); + javax.swing.ImageIcon icon = rawIcon; + if (rawIcon != null) { + int w = rawIcon.getIconWidth() / 2; + int h = rawIcon.getIconHeight() / 2; + java.awt.Image scaled = rawIcon.getImage() + .getScaledInstance(w, h, java.awt.Image.SCALE_SMOOTH); + icon = new javax.swing.ImageIcon(scaled); + } JOptionPane.showMessageDialog(Gui.mainFrame, "JDiskMark " + App.VERSION, "About...", JOptionPane.PLAIN_MESSAGE, icon); }//GEN-LAST:event_aboutMenuItemActionPerformed From 9577395af0435d07703e7b341e5ab26a5726a5c0 Mon Sep 17 00:00:00 2001 From: James Mark Chan Date: Thu, 21 May 2026 02:36:26 -0700 Subject: [PATCH 6/8] #129 dynamic platform detection Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- jdm-dist/jdm-deb/pom.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/jdm-dist/jdm-deb/pom.xml b/jdm-dist/jdm-deb/pom.xml index 4c65777..e0bc247 100644 --- a/jdm-dist/jdm-deb/pom.xml +++ b/jdm-dist/jdm-deb/pom.xml @@ -74,7 +74,13 @@ -c &2 + printf ' %s\n' "${DEBS[@]}" >&2 + exit 1 +fi +DEB="${DEBS[0]}" WORK="${project.build.directory}/deb-repack" echo "[patch] Patching desktop entry in $DEB" rm -rf "$WORK" && mkdir -p "$WORK/pkg" From 09deac69fdabfb03f43ab7d1ca6831a76f06eba4 Mon Sep 17 00:00:00 2001 From: James Mark Chan Date: Thu, 21 May 2026 02:39:06 -0700 Subject: [PATCH 7/8] #128 make slim app name consistent Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- jdm-dist/jdm-deb/src/main/jpackage-resources/template.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jdm-dist/jdm-deb/src/main/jpackage-resources/template.desktop b/jdm-dist/jdm-deb/src/main/jpackage-resources/template.desktop index 6c2bfb0..d37986a 100644 --- a/jdm-dist/jdm-deb/src/main/jpackage-resources/template.desktop +++ b/jdm-dist/jdm-deb/src/main/jpackage-resources/template.desktop @@ -8,5 +8,5 @@ Terminal=false Type=Application Categories=DEPLOY_BUNDLE_CATEGORY Keywords=disk;benchmark;performance;storage;speed; -StartupWMClass=jdiskmark +StartupWMClass=jdiskmark-App DESKTOP_MIMES From e0aa5137f7eefa204cb4223c5c9398f8e2ad93ea Mon Sep 17 00:00:00 2001 From: James Mark Chan Date: Thu, 21 May 2026 02:42:44 -0700 Subject: [PATCH 8/8] #128 icon smoke test --- jdm-core/src/test/java/jdiskmark/AppTest.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/jdm-core/src/test/java/jdiskmark/AppTest.java b/jdm-core/src/test/java/jdiskmark/AppTest.java index 734bcc5..7472799 100644 --- a/jdm-core/src/test/java/jdiskmark/AppTest.java +++ b/jdm-core/src/test/java/jdiskmark/AppTest.java @@ -1,6 +1,8 @@ package jdiskmark; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.EnumSource; import static org.junit.jupiter.api.Assertions.*; /** @@ -23,4 +25,16 @@ void sharePortal_onStartup_isFalse() { assertFalse(App.sharePortal, "sharePortal must default to false — network activity requires explicit user opt-in each session"); } + + /** + * Every AppIcon enum entry must resolve to an actual classpath resource. + * This guards against icon renames or path typos that would cause the + * About dialog (and taskbar/title-bar) to silently display no icon. + */ + @ParameterizedTest + @EnumSource(App.AppIcon.class) + void appIcon_load_isNonNull(App.AppIcon icon) { + assertNotNull(icon.load(), + "Icon resource not found on classpath: " + icon.resourcePath); + } }