From 76b1f794a4256f21c0fd4a0570ede2c21a3a3ae5 Mon Sep 17 00:00:00 2001 From: Giacomo Radaelli Date: Mon, 10 Apr 2023 14:18:38 +0200 Subject: [PATCH] Aggiornato Prodotti --- NetBeans Projects/Prodotti/Prodotti.jet | 1 + NetBeans Projects/Prodotti/Prodotti.png | Bin 0 -> 27587 bytes .../Prodotti/nbproject/build-impl.xml | 88 ++++++++++++------ .../Prodotti/nbproject/genfiles.properties | 6 +- .../nbproject/private/config.properties | 0 .../nbproject/private/private.properties | 8 +- .../Prodotti/nbproject/private/private.xml | 10 +- .../Prodotti/nbproject/project.properties | 10 +- .../Prodotti/nbproject/project.xml | 1 + .../Prodotti/src/prodotti/Alimentari.java | 37 +++++--- .../Prodotti/src/prodotti/DataFormattata.java | 41 ++++++++ .../Prodotti/src/prodotti/DataNumerica.java | 39 ++++++++ .../Prodotti/src/prodotti/ListaSpesa.java | 36 ++++--- .../Prodotti/src/prodotti/NonAlimentari.java | 11 ++- .../Prodotti/src/prodotti/Prodotti.java | 37 +++----- 15 files changed, 235 insertions(+), 90 deletions(-) create mode 100644 NetBeans Projects/Prodotti/Prodotti.jet create mode 100644 NetBeans Projects/Prodotti/Prodotti.png create mode 100644 NetBeans Projects/Prodotti/nbproject/private/config.properties create mode 100644 NetBeans Projects/Prodotti/src/prodotti/DataFormattata.java create mode 100644 NetBeans Projects/Prodotti/src/prodotti/DataNumerica.java diff --git a/NetBeans Projects/Prodotti/Prodotti.jet b/NetBeans Projects/Prodotti/Prodotti.jet new file mode 100644 index 0000000..4dc9527 --- /dev/null +++ b/NetBeans Projects/Prodotti/Prodotti.jet @@ -0,0 +1 @@ +{"diagram":"ClassDiagram","nodes":[{"methods":"+ applicaSconto()\n+ toString() : String","name":"NonAlimentari","x":540,"y":440,"attributes":"- materialePrincipale : String","id":2,"type":"ClassNode"},{"methods":"+ getCodiceBarre() : int\n+ getDescrizione() : String\n+ getPrezzo() : double\n+ applicaSconto()\n+ toString() : String\n+ equals(o : Object) : boolean\n+ hashCode() : int\n# setPrezzo(nuovoPrezzo : double)","name":"Prodotti","x":370,"y":120,"attributes":"- codiceBarre : int\n- descrizione : String\n- prezzo : double","id":0,"type":"ClassNode"},{"methods":"+ applicaSconto()\n+ toString() : String\n# setDate(oggi : DataFormattata)","name":"Alimentari","x":290,"y":430,"attributes":"- scadenza : DataNumerica","id":1,"type":"ClassNode"}],"edges":[{"Generalization Type":"Inheritance","start":2,"end":0,"type":"GeneralizationEdge"},{"Generalization Type":"Inheritance","start":1,"end":0,"type":"GeneralizationEdge"}],"version":"3.5"} diff --git a/NetBeans Projects/Prodotti/Prodotti.png b/NetBeans Projects/Prodotti/Prodotti.png new file mode 100644 index 0000000000000000000000000000000000000000..f258f364f868200c5eb2644ef4d972a76d674c57 GIT binary patch literal 27587 zcmeFZS6q|Z*Dk7pfP&JbcS2D?B!pfSLjY+DanVFdfB@3FNL4@rgx*3IP(-Cj5kYBU z=m7+jUX(6Xi1c=5Tqv2zsr}BVV0E_d55v zm98xJ?xk_}m7N;168|w@uPyvamkcZ$)-6wvcR$#wKhg@JQAVRsB7tEv$`m~gYIyK( zaRoXUPY8`x3{F_=M%a0+fc1oI+rIpwAT6{oA1Y2am_C=;_Ri5xcOd@pR9ePBNF?|o z_(_Dt;A@LECGbC{JFeDi9v-X)8o;$EVzDX+qyQYse*f#kwhS5f`1<{st8F&f{>gqD zUkvDAy4R76Ea9m%O|K^c_V{5ayc()I%aJsSHVvm~2%Z;*J)=t%OiryGus1TndfhT) zvx&)!Suc-<8ybnhX`+$W@BxJM3BJJXk6iIe2j6v2hnh$MVY>2G@HQ78a~*BB(81!u ziE}KUog8)V*3y<=gZHU7PuFgZ!)D6-*V_aSEqYG!p?E`neQ7r*xJ=pnEumXUDOJom zBJkc=Vbx?rn~8g8(y0H|*kR6XPM>L7cO|I_KX;c2_ihE7c5C0cOz+EkDlKu?aGGCF zULa4g7b5jteq$hZ?{k6Gi)YDVB{9;I6h}Yb75t5lR@gLj4>&qJ2;M_=rX^*#HnX5U z60|?Z;50*it(U%1F;)vJ`eA9RWK7C^7C+s8$5|pThn(|1w-2FHD#2`jk_jR1@+Dw@ zttFwnOSWUlcd4{xxXM{?^UB-N_zbUMyV+Wy!q>`j(7hiYsS`>qTLhkGJ-Fxg3y(OlE$iYnA1B?cGX8HMc6~rRiX_%EXN^I(Qn+B7k_m z8p>pDssUiiG)$qI! z=qs*?lOfet5&En3M*%Y#_nI(?^7{BCSJJM@2$nehCC?qMs(f4_H1^LS670m!CkUV@ zIQL9oQwTOkt4#}}{AvvWf0XW6X*5&ijIxTx3~Y_M$H*LZm>u@kH1Dgm`0Rdvo<4BL zxz_U;=D)pGpDuLD9}_*OTd3 zGu1yDDcR!W77Fq(Zy^Mar7#0ipC;)HyxeL{n@-@a-c&WVQU}S%6`o4LL%fQG0rO9m zSc|^*J>LsE=RM|`A`_jGLz(wVFxyY8`s*Xg_?|pf!304ar>Qg@!TUqjDJ%mAFZ7-Z zFx~ZtyEI4K`*io>_bczFm&&^(1C@5?^V*^Jr=q0dp_a|e1VN`myFJCj?WuOyr|%KF ze=b_cMY7)$0Jh-I()}O!*r8^v8S$yYu8+|hqM3@*v;uEQ6{Sr<%N6zeoG4!i{^!Q# z>*6p~!6~K>Uew<~=d1j)<9!#A2-(C{|5e}FqjaZtm#UX5M`~a%=N^)Csu68ad8S+Y zC4s+I$+`T#X7|&?24eP}mQ!9=ZS~3aTMrLZ6TkS+B}_$JC?9dIAA_f^UQ}gwg_q5y z*{4zbAl~P)gUt~^4dGJwdW+IwkJ6jI9dO$_{ku|OElQusdOyTwg@&Z(${a5Xj;=fv zW~1Mmu)knX|MDr6=kGJ>0^Krm>U5}pWW;SQ>)to+o7t_>zsR6a3u3@H$xm zyLJfMJz_Z33qmejd(f;&MGfYRT+q*Wg)(WsE{U-d6S9_$&qAG`BwP7G~?ijgr6( zY8K`z!y#CcNUMwyr}ss)g@5ZC@ymcS-sv+fJ0-u;(QPBZO8?JE*37~}d0!KBFvwm* z|BWx5^Bti*dRr@FL~Hi>p-(Hb9QC0$vCLKxtC+aJH_H}1eh3uAH(2T0H? zt5aFDggK;AwLH_{*SQWB6Bs_-J2z*A(5yfP@61`bQKaWj}} zpIc@+_6D9Xz>CVz`F!E%9f*E3XEKZ_!dW)>p!TN6u4N;FMRdXwoXodFVJuG1lJsvj zM|0d63LBy-QJzgnHoo`5sxjnDlI4AlT_l;E^~aa5itn|%6C;G3bO98mfJQXS`)k9) zq=T(-UuP}kWBNAP#li%?otcy*|3KjM@VudE^hsxAIk7S8qN$MEZa@`^1?DM5P`ssByB%& z!xkD3#=AaLyQA_DQ8&R=6oj0mpj;fNqSj0_u^ICmC{o8`SM%h@TLKoS!_M_bKGS_g zqLz&P0NhF9&+mOLpMz^y*p7|3CKZ%~b!jHWEGxrzrMmg!C(lk*E0LNXjb0q0nG#(b zc(ZSDwyLg}WEvq2{UPCyW{Iqw%j3>IKYLV#W|eTH)HiXBj|xh;R#n@-%FD9M{`9js zN19qK#MIT49#0E7FJhD@0v5sIc8ja5?2$2E>Rn!MjMCvCT-}1RoOS>oUU_`nkRTw; zz4AK-0l^{nKS$tKF!;ayIF%QNzkA{e{1xv%zpz6=eZd}d9y_MXOTgi^nfflztghTf zC+d8)>L2O^ksQiZW^vx|BjWxQDMd@xsBO($5Csz>pi~rNIm#MrhEC-WimiM*U5ytm zGUWJnOmiXi9!^u7{Et;a6!7QT#l8&fA-kkoh%GhT{&a&{ix@FkW&3YJGb`^lXhtyf zz7mz?X;hTy3_9Hhe?Q+}bf>KGtPr;KKvI_6rN5bHmT z9(;e+iFD@5>Z}c15M8bwvuS_tEJjH~k;;t+u|sOOM%$!=uKb_LKW=mAxbjwG6AK_YP;$bqTxm||5_rmb+4z_ z*x_8VpLXW5Cqh!o3}KL#dCj(7hYwE?sUc65xua!fndwhYD35+9svLf~J{->|1=YgS zaK;DGU8Zzs>7I|HeR2*#MIpF4w;Nyr7rX18?b53*nA#IV`4Dra^b0K(Hf4;g{SU~)?uy3q|U%uRNm2486ox0A1|FewBzI1cHh-ngCUzHhyFq%M?A_a9o(Ky zA58P+xbLbJh;$@&T9{v$H?zrl*gg~1Fn+!g$#VX}Qy-a?s;SF!gVEWy#WNPkNKw%d z{={HdPS+)P-%aNb_BzvNHZ_SLcecBsAab2%_(2oC-WeY+LRY?i?9o39p(q;V3HSuf zOxZVO-4QHNDb=h>4X>&5DqfY;4Z~Xm+YdnMu$&z~{9+H;>?<|qp$ECg7-)r1gi&ra z?R~dZ&JB|0eW%iB0?C8nLrQTN;gN&AtrB*Ua3i1N6<=V0H6(_zoVV}=30oB5aV9L! zQb3^tI0{F6G!~-X)9A;zGGFxtB$g;VGfWv`#uUwkzB8O*l#Hcy{e&2*kjF;pP6_g ztLfaA@TssUdQA}8^l zbf^Cqwl`#$5SG-^tZs>kh{->3>^n&;3>t;(!d+NGO*1wf8@2y$GYAqlNoelT^XmRP z`zjN;_Qx(X4r>i2vhnAk|M@R4HFyqp?O9!E7ZSnR@F?SM=qd8m_p5cY%qPRk-GZ%W z_&SEU+I5l<7sbd!*2_YRRc7a4UDA2Cx-z}T?fTsxGL(aiup8cXG%HnammB-Kzk{i~ z@BwXS_&-6iKr*&8>-#|c;hXS!wH9scWyS?J3~2@*<|&UsIvc)IJ^77NVzzLUJd|?A zn)2=|Rw#s3ah3n)z~xtk@h11bg*xI2hrw{iF}HvYetkXlAr}`7Eu@mWl<~mw%QP9m zJ^tBpcZZI?P)?15&%jFr-UJ5eS=!rN9zoz=zF_Jx`C~>3S^YkodNiiE{WW+wdS-@9 zqeDHpQt7IaQ4x5#nY*v_p==5dJj&Vx(kp1oYru2Ej$?fa=-zaKj%GCMR_u1mx?AwG z89t4X?3C<6ePy4a^9Ai*Kv~WMxiVXg_HW(ugF=?iX0qfD0GluG zGaaWoj5aDTg}Wc02r#O2P+`q_J8C>!dpvF04;oxJYHlRcR<;?op71PA5CzsF$9|28 zXWD<7*YdD~35IaKFE&{t=Cx$#j^9GzUo!P%9Ip*B+(?Zt#8%~Z(habk>%Ws&0R9|* z48>_u^l<+Flzb7foBu^(_a8agVox5}5G&sQO;VPGb6EKNqU~9V>B6ehO~sw*glQbT zjyTK9wg@fdPxVI!tA}>E^v9{Bcs#ae@cWbR1^%W1J2O^4=X=_|KhMq@^&@n)wQvP4 zWyg2C88E%m#_r#zCB^@C%q!g+u^|s4=~>gE)(8H;%JXyi{dgE?Y_SBsC$P~Kc(iBM zcYSkl;3|ul6*|yZ>-HVNoNo1fu4B((46H~)mFv|0SkE>{-sABgHEILNwcgOy#(F!MCGs8g9dO&-sDzc5(X_%9Qr_oVacKPfk&m`K}y^<<~`vk3x|K*o{G^Kf3R3I9U)Y#_F!`Y;o(2$Qn2fd!-gXA$ zwUVi?FLgu=0dy&Lf5}D(cBBOC6A?MH!h4vcI5uNg+NNTZvI@bgxAo~LIpW;^Oa58_ z^4Aa3ZGze2-N+6Z5LzVw*9IN>mBC`k226b&^#myx8fR8N`lbA>O0g|fw{}iXN)d~k z11?yzbTaJZ#vZWHUzDs|7DIe@H{aH0IskKpc&%?_oish47bDryt0?&U+Jj700X!qA znrGHdAMA9yJ>K4K6o58uXN3yQWlbrSA7P=!H>Q_b$?yAjD{NK3%+>--A(!ni9CDII zo?rgf5~QZ!M>bug5+yMOS#1*GE-Y`vwWMx$q0MJ5(?F)Xtl!w4<>XtJm_m+IILwwV zH3eh0sM~aFd$kCf{}c`ep#zwxdHU30-CrEF;7~W?uw)$kk0NfUv4ZDi&}Ivl5}F+9 z4>n)1TV~O@k{r3yegESD9M-4Xl61-PC~+U_W>W%K6YW%a8HG@ocxDBo>sB|!nf-S% ztw1s!zaDzBZvZ5(2_O<_sY!{8;@85@TkR7X>H=|S+N3@C`6t1cix1^&nr-j>`1+wO zUPHtV5!_H~X=;6Yqc8jLGstymz+&CuLv!|N3z;M64ys~1=F-b~F+6+lUcf1;f-QZw@4 zOBRRjfvvgKgkNc?n4J*XMj^hAn$|u@?Vn|ku?k>#mbIJ`Hl zlZLXrd5DyL?3TurBu%Vn&N^rNdK1;fseM9sNrsKZg$SQc>-NM;v(9N)Xs&WYLEl3X za{WzM+DjF@vS*?VYQO(&U6LIN|0^&4&vSJJ**qWmM$L!Ybj0!P-7*l%F$OuaU9_<0RhZZMP*q-SNQ3Q}(y~wAOn_TztDeiUuVE@8oSwaDGIc3? z>kg;?&mKwlFzMQ=#c>*m&8Y)5mW&p6$b21(sH0gyG&60M-+Eiu&=CpGFrX?9#u(Pw zuZ_yCt$rukFW7_5-3;8(ad3F)Cf|!$F5qwU|KQ{Qh8BRSIq^1t@z&HzOdF%r1ElUtcL$T>r$_Oj?Be(h zyPFgx`~RZt4?j`kG}^)o-0xjY&32kE8G2XYFKsw7qw2bi>ww28(OPPYZcx6jY*XqL zW!_;DY#4uyS%jG6Tg&^FA4g9wRPZmOPW0-Q;iz;J5D?+VS@J$^W#9AD(;D7887CG~ z^(eVCweU}bdir(O`YpX^N_Th zohK)#=>xnJfCK49pE_H^EKRn6`w^X?cf}!^%yUY8ogES>ou;Wm!n84#7!Q~1w??I| z&jl&g0cC-|n7~g7Ak|zM#11ZL+OLZURa{xKX+V@jzo_nJIrpsyE>~P5 z?@wZOG~xK<{HP7T+u1E8kNLmo;c0t<1L<56e2Y6jDyGZ71~`n~WQ%(C8&bKXjBi!b zvO$=@W$h*}ij`f}Xlj{m^zFud zrcBw_h$R4PA5EM-|x zYeU*YAorNN(Ml1hq9(HbMz<2DSpgWp)(}}`^Ka!!yrpc9V#(Z%F|j5NpZ(%(*B8f5 zm+~gw28O5Lkzr)cI#y@$9d>Rsn$=?P-m9Vv?|o_^l+#k9I21ysnCk?)I^xcJhVDC# z3_=!?AQt}VTZ?EW-_CGxVjg?jv#StoM=BLlMVa2D;uG#2( zJq^3lI3H;=Oy~)Rof5#MGHw&VJr{M^} zcPcJtS*oI*+LeAv)fLDz(zod*h`z-#_}2llEfoTb5A27D5qOHCJ1<71iay4!`F)OL zle&czFy;Wogu`RPc`RK9iu z>+E-z{q1kmfwr@sxL=i%!-FrtC}i^Zc(({kG-eR$w;E-^Q0Ki8W2X}6>U-Vs@$8G0g;BJ1jIBfKX_`f;xWfn`-OkwQ8 zh4;q-j}DSH{;mnrHC4mASZ;L&IiQ0^av&MfP5_aRbzMwiURd(sjQ)1FRYBL=BPb~E zrg2Nm*94>CBBktD?3!h;yfa49mGm2I(&WzDeNpqh@-E5W-7Q>UEH&w_wH)rLaw}DN_3t%) z`wC+)F&nG?THh^60R>&Q{MwHBv^5LENvMDErLHJ)))kMBm}8!Y?K9b9vd_FgRwLoHEF7CuKGYwo z?U$I~&&M2jh5JY-Bh&LMGOq{c*}Zmx(7)64IGnIhM$+BBreRpW!j8y7=5^hjCOulOIu;%b~(*pRFt8l$_$gn4P<}KACq35yPj&%`>|<{ zNG{O|?(Z8LS;w%;lxYn)U~-8`c05Cp85NDPX0l1b+|p3F4G3|z;LSFT-bO@nsl1Z9 z5KEg9Ulj?z#dGsap1K*nY(eL9^dCq;NGzKLrH~sw>e|AAz>n@5=ak(=PpK(u3z6FG z-SBBsE~Q&+yGjN)FDR5dyrx?%LPkaimE#K#jw-2fIrmw-Rnp)3(48?8=&Q;@xaaZ2 zl{v18-&BMl6g((MKkz5>@?`BB2IZ7pNz{^Mo+Nu$wMY0hamst*~+sC5`CvFL? zX5C{b2aInznztA`^Ci3B+%eZdi`4f}ghgIO<&;@`F3=V5rwQ&04F-xPmTvp4} zGyIgDsb3Pzs6@Mw3pWN${WtzjXl(9E4P6Q6qQO*P=XlQxtP+|q-7)7Gu4>MT0yZU1 z63O^dNmuSqZeGZUoQ1v8$8*1OKt$B-EG6n`w~cbOYv|t&fHuekHw{diTUMZ@-;HC8 zws2-4v0G3#t3Rm9^uMUezhma&@S$X*N$aVeP5Ve*#or-NQ{k&w*y81#Cb;XrhpjlP zyKsmQ89sTu^cVP1$`!Kz{N$Hd<~YowZm7EYhMZ(wZq%*&z} zd3^`ChwOT}1VBx)KJ|apneOc=j8ireUs=xClx) zB(5MLI<2V%j(zfBj>EkPFD27^-NpHNcEGzcKQ&rt-;wvWa5JLQLUmI&sx*bDDZD)a z0GqZB*kb2XBzK(Z54>RSAU95wQpp?w{3Ly#>PHDkl4rAu76S@|b055R8JTN^#E4V& zsJQ#wdl++#meMuTvmZ*h zX+i*T7{xeA%cX&H^Y(3*sY`jv$gYPBb-R(AI#2I)R`g7~5N3sm?msgv!XHA$vgLB z7=!@~NOqpxHblrnSOd>&P3sxlV@$EdNkdN>^63^%%8C?yhM}zeMu-~cy}2(S2t(Zi zP|BCDIgi1aH1 zADl)oZFQHZ8l1C|Ag7I7@aadBKMTj#dOR!?Z1w3`=`K_s0$KjtD!ytK){3#~Ae5HKK zWCMVIb=QP{c*8n0=(*`ad68cuS=1HnX<>I5J%yo*tiSIE z4Xhm}Z);Hz$B)7ui0(kWFUThIqwX8f#bu+{MRI)auQf4s7IcRCNU%$kwOf8hXiLhO zsmS18-31`>EHI7OBllJQ+xl6laSo@%V3NN%JY(Ea(c5vc>f-e(Al1-J1C%9#kDT4* zTG`6G#Y*~ekfZfTtHo9lfi`hYOpc`yvbjbtThTurAbul!LslZxr4(Z%?*0^HvpCCW znP$GHe9u|z?7pAe|D0@URW>dSK${tUvKo9g&<0 zHK%FI+KR0b^Pmn2<8#`oT7l@ZzqLvVlRE%2x7dUv7Zg6bR`SD1E?m^y;p6gn}?-F zM=bxk%?TYn=v#mOx1IrX{cZUA@iad3qQ1<+EaPCN;S{$eViixnB>=!+!ef}CwT94T z&q%YE^Q8Cd0a2|~{~i_54qFZr+S0vHBcAxCl7Z(iJg|4^uCAIy+yUkNQp%3z- zufCh-Esq_U{fmC)*kpjvoJK%)o(L~uF3y|KvNvi#FY^@Af6JSnJ_)s~*D)3meb49! zU_0216T1c6yt-r~|Kx5;(Yg8e9 zlZP~SLna=tmUU0$sZ#63U{Eg%G~=#OwTChqUz7n*WE2JL6kjdo;%~)37S@w5JJng% z^6-W4){3KMB1RGI_OL-z5P`q`Xu0>y`)`?ku)Jmb87AwsCSfp*$!b7&SDX>kY%s$K zUu|%{7&8bKi^+tGsXcpkfZ+#~(`|n##%KNkTYi%Uyx0b65`+~a!kMnT>-cp1vRwmN z-T2ifHbezVkjs7Z>~jSgRrx?wp~xcXU|9CES3_{(V8uI%$s!qBoyQG=t@Vht!hm8i zA(YA-Z63Ww2k}|k-LV3w6#{()vmUQ!D|BG#B6Lyy_&E9?XKxjy_N+cB!WvPlJh4P& zbL3Qg`oZ!7$TD-Bpze7Cgu;wPWK-diJW?_+&CKAd(v2*vg>3C~yvAkZY=1efkZ{c6 zUEo1s*XD1V1s-@3SYZ%%DZG!7=#fSLN75~TB;Vfr2z=bVTlu3P>R)zy_{?+mO9Tst zoV#x2jSpum0kBcjj%RL%B+s3o`?W&b-G3EfPflXa42S``HQY$>_%;zij7}S}>ABp5 zrk+P+QRZJKwO^aeHn|vI`}9K`SAA;0lbw~OM55pDBmRmjzWa1?f2x5H3e6M^kz0Bl z>{>Nwm7s;Oe7ty~H%=bubDleA-|p)`(h(Ji0nS7BU7plcMYCU%r9QR}SCIOY(Nl_$7 z%2Ay+K}MxWV0wq-gtFiJm8>!H{|<*Fpq68dggX$`Xz}yR!unozoAOAn!}AFLBmafqf*594W9 z{%!OAMXByy$D0fQ3h2TT-sh?Kz%DOO9e>A(9~4F8fz{Wj?(K}G(H^grP&kXoN=Q2r z>ZL1xv`=UQA}i-d2W5|=-Z(ftNRx+J`ZGU_m5bnlo^GXk4b)?41$!JSNd5naMu#c5 zt@RwAqXi+#dKcik=B^UmaY9+~D^njczTVaiOWT%#*_zamRe;(VYXQvKA34RJdr z=SEms0jJY*bPyG%{2-j!!U|sTfRq&d`1&C%MLj_vmBwI{GESAb$tsTNd+Z? z9g%Xpn7~K{1FYs!_-waAd~@jBAV8n+r9>!tt5kFs2x25OPP>%PRV{D(X!plhi19x< zt9#9*ZSKI!9TG@W9r}#IXj*{{iGau5^%`oTkSx8tM)oFT0lJ92iZYr=E$rr~y1IaB z2s$}icOMaOTm01V7V+XRPpYv5hiPiOug5!&X@`*KyaC+bawx>{rT1`n<*;iPsAZ)Q z@=njyT2v7>Ww1Udz2o#+3zrl}M5n1EPd_iR(Y;4TtOQp}+XIRED@Hg-dY-I8<)2^jzvmT^*wZtK(Xg)=ECK5&9LpH&Y1hN=MH z^3p(wS-StU1A*z50SRw|!fV^1u);xh%jq~2if`TpMD7DrZ~Pg#8_@P zjs?YQwmoPVgoi2%SKk&w={?t$;NYppt$nh5`oXqo`GWeU4`BDO=${$E;nBKh@Ly}pBjVA#028E5Gz)a_@@P83EchuS5p>;QTmgd< zcNywzPi*V~a*S*d>VZEPRsMAn_V?UKG`xSSLV0mZKyeNu2-$sF`_VDn6v2|Iz`^{; zsuYP(y{6iHk*tsJLwKs-S`+>>?Z;``V5a9$cx;|4&luICPqfUg=UK&DCo+kuw_m&^ zsteBmlZq{6fMun~2uN|4H*tQfm<>+7qJd8~3)r!Rz*e$J^Wf@d{@GG%e;eg&x$P}} zD1GN6P(+}DX30E%o>`jX>v`?hrn83ge&01+4Y?P^qI~za*OJ7AL!ufhBmq@vnPwRh zdWjNx1B)dzJ|v-Mw|FrRxO+&hytUX|V*mmIkJd?tSspf-#_X`0Y*sUkF7~yi8}JIU zc0X>zsBN1>`r1UJeNPFYKJ#}w2eXY79Ia%qY z6uEC8mdm4ikJYF9v2Cnu*cRj>5mK=80qP@+zw(y+CdFvxd9B54$n8aJI);|#bB@hm?ebaj-2 zLO7^q;hF)74@p8d{641ln6^ABa5;yNrN~Yn>=i8eNG|`KIh@8W+vfSlxh!EIkG%Wo z1uSMp;EHDxrYj~ojh106%&x217{2XF^NqzvzvgIOoc1B$QPa6j-f?{M_p?zpr>YOw z?`5sNl5mo(!@mvgexZ=;-UgyIgXl1#=}^k;+U>IPUja^{GlIA~;YL>sVU|6j_wxFj zt<=iGZE=rv*^Qp7{1!YJtK*qFh2JlgE%&EMoW+s>Fk7`e`m#Xb;sSW?UD|8#<=-wu z9e*N$DPLw_rk1wBm86f`J-&FS*c4Eq46qg)P;!YJ8z=+~jOQKi|2u&PvD^=Bh#Q42 zFOuec4Gm6L^Ug>T*~-c&lhaIyVAx3Agt<)>a;6ZW${`DTPC;bhtmJ$PUPNsO*efjq*B zV(5%u#$T663@>VFDsjvAgM8~A!Vx~n9Ul^kjo4)FxilL3#Y0{m)>2$On3ug^e!bP)K@~1)C8p9!kxWT30!lNi79yELN9DFCKT~@uH<-4+>KDKKCs=rjrPUAr zq489RXE@ALMo^oV5__f=-lBsepA_ruNob8{H-&q0pC!%oDUipV8z2a~UaLZ*KPX!v z9H*s5h@!AGk&uVBbXHyn8m|d|Z+d4M=oGW=2#~AZhh!L-xT^G)+vq^zLtgNvoo-yb z@!E>l%4$r<^l22ydFck+J<@cqP~Yi8H3m!7bW*|m3}UqY*?PDZ-F1v_f-rWvBo|_B z8Ep$#g5sJ=J88ed?J9^!BQx!-OXqU+KDE(1^mmeW7Ayk7m@>IV4NaqFL~}NrMpN=B z1FuT&&Dk$lOGri{TS-qEi;*p+wVL2mgZdx=WrjlYuiK~$^0O=VHt&crC$LPqAa3ae)BSCPMmJ@B{UKAIQW89_- zj+rN5hS9C(bJo{!RAE%TkyYktkiV|JP`@w0B!mLq$tE=2vFJ^|*oT<#H)`TX!mW+? zn4svdk*RFnv0{#+*Tapbjx}%q@<=i6#1wCT&A2{#{Yf0XCbsLrbZcB2I7N3;1Cfci zQHELZ+)m4Qsw8h9Ib=(KaHz1_As@3O*e4itqMRxXp?RjQ;i%9NC-}j0PT3pyQSNti z<-frVy-Fg6NtB8h4B|zRD6#0O zz*{vHSc|b* zieN&b(X;~U8B&NSR%`a_YP7*56h75hlBJQiC9c92BIn32;Haq8;T{ScHX)@x8M$vh0BP5wT`9_f7b0FaUkEr~L@bpF|yHm{?0(R>ZoOJct z=(-Ia8%G3|QMgAZh}8@NFaqF9QR{dA*5eet*VvRLb7j2aV)r9a*K^UO+(QhkxsgP+ z8TE04>tRLKLl1djYVOMvi;JU+Q{UC-mt7^~rA*9Z)H(2kV>ZqJ)1& z1t>sBdSfK@e5<9TrpY?s3%lCw85KrEZ&fvz0ew;%u>z+ikMM+ZiM0w5jNYppZxsnj z4^&-$C&5aZh~h9;cv@so@w(!nWwG}?R=>Gdop%KP(Q|^N%eJ9#x$$&nXfu?DJeBQs zib|)42u_XfY%7tDeKZS_yI~)Lxz|AFhaHTIqKK?N(}*{gO!qMdo9no%U7?Gkdin2o z2)top$5sDyDa`FlcbuxN^V`UJ*W*t{4RzBZ>O>~F=~iRKpn^tFUx0B5Sx;_i%QD%E zOtSON(YGnSa%eQD{_tpsCb#f_(f3HWqB7@g(BAdiMo%5j%y2-E?bB@uLUY>LieriP zZS8NGCvClf*z;-)SJ?_R)G|CMRQo~Q&MXWnvg}V+9kPe3NY=M$@Ci70{Z-Ch$!biG z)yJat#9EH982gW*DrB-}(O>>|ppXd4?so4!geyqzUzrN~_$(g7LwZqITHW9$H6fwA z?DP*G?tIB+XyX;SYNQ`68t{z{6>&i*QGFOlSEl^h%QESDHrnPw!^K`X$nr@2CHn0J zjW$l$Q7M)iNGS7Ea1Z_L;Or-rk>^;&3*2;Q+T|*NR0X?!1$(RQ(YYKGdq0tV+t)O~ zrFY&s<(Hou%f5njraVg9D!&7l%)Z_tWHBRie`GI=r=Sbfg}sT zB1u0`L}G(-e6WQzRyphzM#NeiB3_G+s?_7HN#MU-d77R-ll!}k$>>2%c2`W-L?imK zEf*%&3j`F96_K18%bYHWMEfZ7W;9dJ+DX?@pmlR!?FQP+D}3zMpIiOkv5>xe0gI;n zks3YGG?wkHV>cbT(Rlj-*n9)iJ21=fe`f2%uHp96LeaaaFzvzhMCCtQK!i#Jw8Zkx zxkYmXY=1*d1#a%-nzyxUFt*bI#MGk>^O!p?3gg8zpmp`^UFg z_a}!9_1!hHBXus8Oh3v$c8A7jK3&BfTi^{&RIEc}Z} zPcwexQwh5!c>OH1tjeLc99wopjg^Uzkg8!awx`rQK26j@`PmJv#YDh5<-Myo(Qp_r zVnlahNSVAv5tpuOmxZnFS-z2JpN1VWvA?FOaeE&WANFDmSgL2nvOP~&Xk+5eLBt{h zvwb`tUpl9keFrgoSmXPWp+?{5Dz7;>z>CH?yV`r>f9c?l-XW6>t^zi^fE>`$z~_lR z8`MteQd%AG(l;&pD_T_G^QDn^6sqE>=gpil=p1wospXYiae#S5tTA=RKN^bNx8{La zCS&8;c4Kdxf5ARAP`hk$qq_e@iLPeU{b(@&`tA`rF(QZlj~6gp5HzoVPD;gr4>*&p zCqvfN#@nfxDJQt>QB-$@Zco@vumxm5&Avwf(XX&y{f$3c3~pIzJ|>#!0T8UBM0le9 zIg0nAdt^Sb*!aMVdu5*$mbr>pI0c^{mtgBmlMwP$$~^bNfZ6A(LR)L>-t&*7nqK`> zwreVl46s}8TsRhT1CI{#O-;yS3r*}95v%~5^Iivlg~4X%N(m#h<0VXy8s8?p_LbCP z@$p>yFxR{1;y_cRmJxAnO+!}B`JM6BNbdxW<)=o9_dhhs3xJ}E6S=?p0yb3F`PFxB3|{xrVOrp4Ys!6IHndF_STn78m8m2 z$NuOx1eJSbKUWY|X{+_Gk&eTDIX|9?twb|jG^WHA4A*%64(yFu%sXkF2)SXM@NPH}XEjeMqTb5m$DMs*d{@S%ZAavlgS3tynvz=$QGoC)rjHkjzj! zP#)dL3l%!S%6u*g)A97#^R+emTVQZv;kdf~8KRz~O=D~dI9cuYTegceQI+uYT*tUq z#XU{AJ*y=`Jm9x=4SeDIpv+e@Z_0o#Puwx;ZQPYzK-x)VkAMnLjM1QicJY-Xg<)Ce zyemEVws*_`gZnX3C2zvaKpCk|gXyw$*nfbVE+|@)L|A_eqjn}#L%Y>YC49SpjCFj) ze^}N#PphYrbqq)Gt5$}A)C?)fno-$2Dta~G#|Lsp#kWS~D1H+1^A6s{mCZvABlpPC zW)$B8IH@OIo+!8l((jd3$zO_JAh&foG_c`YxIU3hth-4LKA-PAQHL7mKUc=N3M!nm zBu>#ph1V&~03h~C%NGN)ObnY;F|WSe2+-cfVYrk`Gvf*<{R4@)iSgN46Ht&-`;;gu z27kFbBspxGCt30q6xCXRqEx9l${t-l)UTnaIl4eZyu8Yo>va4H&}d%>#T5dKI(G&H zM!B)rB%pSv0A*ad7yc;0<00hE_>F&Wz$u||9ULY>0dniPf1S)2*XvtE`X5H z)(4Dq@&67^O#J`X%VO_hOEnxZK?4iSmUP^3B6hvl7r1g(8QK4p*wAA5<{%I#7kTYf z*uC;*12X@Krz+Rg@T?i%K8EeRhoAf*WQ@lC$dm>8;Qg^&Za&nxXj~yX$Q>j>)lwW* zLi(TLr9rSuDqu+P2Ov3+5U3DSxKS|p19150C|se*|NY_rU7Y{%x)!i+Jpti@#3r8QM5d zg>p3&YKai@-E@H1Vm|Sqio%b7Y(*5qI|uIFA%0%BJxOVK@4}yvNuhh4&H)MgK#He! z`183^>JBX2$o}`NcGhA7g`xCh;YQU!p5_ju9s)o`i(CiO!443+5BT_lo+}S*B)RT> zHv$%q*zpD2D9<3GYT0AKq3^klv%3R;;x$3HgyLx%rM*<2S}@i00ckQ1vKaYwbagke z%3bL;Eb~CPGw4^d8NjeEp77t>l*p82qt!F+#oyP?T2P-%A`TLL+8QI z)rpCJeyDPN+$Riyy>ahZ`oZCq2hh!X zzq)Wtekw7mw*oz5B#v|d?ddiOG_?b4jupCY08QWr=ir@>f5S;~K2Uo861!dr%7ok% z1v>eY4S9_m-+aOE5XI7Ep!J6U*awsJbz*f4yE`5_o5Ec}evUP<21r!ZfqVkLNGy^; z-6qOqSxeKL>vk}6W4fvw*6nlbA!o-y1y+P%3FvY&do^F>$O!HW)PRY>T#l+peaK?* z`{M7PSYC*}{C33QH3+7-`h#E!YFTz>H-PhWG_7B2W@F&l0hFRK?R%mwiQVRNvpxK3 zQ4Nt>sL2A~>?}zVhe051#P%KQtOTAp;mSee>>EIhZh}G@2hGUCH~;xe5{jVZX|U0@ zda3(LpqBs^P5sq-+oy!((%NtYOQhqn1as2R5zBR`8<;>Xevv`nkmpSelj(g>9-$d! zha~gc25m9^as$k6s`|Yyiwd%0>;brz#WgMU$;2`&wA+tgTk!R{(!q=G_$^Q$ZCPfy z_klXVd=uJus{UiQum7(;K6c1WP(x^N*b-t}(&hy~_ovBQlaW{T#}oL8@*ZtQGe1|@ zmXvwJ2}`GGcF@X)h@y}y4FgMZ^L3j@?a$tPn75XPH0m`q0kX{zFuoXz{Wf3Pe)$#l zXza~hEHx--`|x?)4=Q)?v#;}r*ivTZz{?}7lLZ?%^#(M2`FA7uiFqc+&fB_;D-efd zVue#uG*=u!Zog)L2Wq*E`SkVY2hXjEz@urP!O{fDibcFve$red3unT_cC!@zA|{TX z6XU>c=2Sfs9|utt_*Eoj|9j5$po_svQX33tU&1=z$F*60FvWGG1}=n%C7D&J*mNyG zt5SqaA2)awURqlXJbFK5)1d%D(0I@ksHLj)&X!-j{7QFS_D@KV-kFuHs^zJrllT;% z>N08rZ6dHWy9=*o{h~=UNF7)_ni-Fba}@$e60n{e`_C@jy~L{xQ;eMG2QLf9Ih)g! z@4lvW7$nwRvgmoW+VxHrcO=)T}coo7h zT|}bgcg(zEL(Mj^`~w%VHN2`Zt}r6;Qvbe8%B9oFFDxXjSWl9RPL>VZdp(<147ihk zJwr=d|4<#j@G)X&t8Po7Jd55&fISgVONI@9+Azg=)DbdQv1&420Rv}sji0h>06Vm8 zx<9X~^fIFy&^M_^JCP@5#|S{Qg)}Yacrc%Xpn8!WOsyzwWMA|KuP|soxzr@@YY?$A z^mc8JtR+l zGw6>U+wU5VN!0W5;A*#m&vCkQ=EF=a12kc< zca04Xy1)`}qo$gpU`O<%C+YKMmfucDeqi1QH*TsLDziRJ#w%EppfDE`xSuy@XO)LJm{Ii45LG%~6x${8w>w=CD^Y>f{~~5 zgf-CtK6X9+tuvu5{7&208$07`qtd>w#e=qnC9I?$d;He}3d(%zizG6!Ym33;G`YX- z4Cv$ZW5l>GoQ1x&ki^d8wa*>zJCFCMHlVQEBplqU#NzAy8!ra!wbCVvIuHA_<%;NH zt6){2Tqho!+0KcvXT+QLYm_uxA@}dnSaB~~{iE`Q>@)ZJ1Ewv?^1C*aQYPdA;C*S+TRP&M1g+-+?g+v0KPVb+pqcG(H_M^Dwx6r;bXPIz zx=umingaHz4OVVeiU-mZ!G}RsGYDIdY8opngta^Qm(y6x zh6@ ztjNF+eCZ2tTcEndZEON-IKNUrn@n%Zy<(K< z0TkKu^}wz`1LDzJ`}4DLY|*y_5$)68V~XyOYtjya;lWuOmO;nxe~Ad|k7mzN1lDQk zqYm5-k3LXEt3aJGamJyXJyS>mj;nyIq<$BTIVM9Qb_yI9e1kEYQ52(@D5-7u3fmUR z;{F&;{^=?tvl zK~3$CwabfMY#jJ70fxb9^lXk_b>DEz7Ax>9M8dY*U!h?w$DM*uI~YxwRzB8~IUtbzJqWC(f`eCJcEm7Kp$T45SYGGtQJz9Y|r+FLS zCWG4S2L?8}$lJ`)KRln$W3AzRpm&H2YyuQTkAObB zWA}0(m60XEN++QqO79ejBGpVq@#RVw1`)MUuo+dUK0y=bNIntl4H%XCaoWKQlW7HW zjjN6{*y&re1=>kz-qhpstdJ3o@o~MyYfGFl$XsQRGPA55X)W$0yJ|B9hO;<9+ z!86h1*iKsj?zdooP`hmIam! z7#t`9B{Zz*X&$p(7ui??W&nvH=~wDT6T! z=~|eJHCbbzu>Ej|pXld&ie~Y4tA1JWl8Pw-IFWUkS-Cr3HBMllc@CLKd^{EJKff1Y zNxorAY-HfkA@U|tgx;xr?G!UQC+b@fg?i<)8pXG9t2G0ve)o-^#8T#F$iZ{|JC=f7 z(B^2&-0Qn>)W*FMCdN|jQ}#5XzdD#USD^Lqh!5hjq4|$<-Y-*ZaW!LDieAF{Ds69* zTB7al6BoUUGD<%(;n?$3zbw?wY*D*sty$Ik7INpf4dFb<)cOtP*ROWevI6rg zsx}?0=TyTQLwe^dhl-dF>(tc8Du;KjdB<98+cizcQ_NFM_u(CG2r>J@%ps zhu3g88s*;+*<)>x6!v?!)+nNdvAtk9_Qy}E$4l}c2YuLx%ENxC(46Hwow^Hji{h!~ z`7@JLCaG#Sg0IE|eIq>oz0V|@W>LU;8;b?Jdsn_MnieXih`irBE}Jq#ptMRwvEiuN zr8uJmuEQNcLBQ%R_A%F*tz)d>>F&E)iFaNGRw`K3w=gNNwm#`Q?)hzc9O)~1lV&rt z>fX8UExU;CEtX~(L%fGS7jidyU_iJM{jB^34Teqnn&%ggHBVD$&*o|AtHu?5+#oiNYX9jlKN7D-lLX{?UDQ0LGzlhlwQ<5L3=!5*N8W`h<{bQE ze-H3*J<#5ir#vqg2_mvIY#|@}Iz!LX{-`Mvox8T<<{Bb!o~e3@!H;oX)N}XHeC6cN zA8W!|eG4P(Y@*zv3ZS+oBX=1jV9+e6bw{kP_J@*63>bu7W?-VML`2YSG;4~Mc~op0cj&s zP1HJ4(`Ql(;p*&r3yk~QrAv%1LKzyTqL(`lBO{F4J?yBb-*6ehzQt*)Ux4{gs@?Ci zdsDelRXnKe`b2@4LG;-fJwjJ)T#$$B9IZ{TIIVF@kPWu`d;Cn{=eYJQ<1J3?5Q#8y0EN7QWU`vPIeMnfvQTa*eTVW?_|^+yjZeUda%6tHS|YcP z<2SDJafU%WDSBsK#Rv|EuTKD{xcfWBK@RU;$i+Ta+FU z>9Vr$b}*EKX#UFVbXA3~LqT5Pc)3r&286+YYM6WjHkfiFB901TfbZUapzPmeIk+#f zbzF_^Ned_QST8DGMl9wTG#mD-{9D4fwh^smQ0@=wIkLsQOI}F4$m|1#d(Lk&Ez-3X zMqk@%LLOKtaQ`l^i-5H0WCDLS9NR`1rwc^Qp3IJp6&{pfpEN^7UKUVe?gIvdf4kKb zklm;!0C2E(E6q~yoV`w8&K5E)b?dEn9bT#^n>3|iYBI(l{WOZdu>PUR%h`FxRF z>tler*_BSwNHmoryN;L~9H-G!B$Oxdg!2A;plisy8_dv{J4Mi6TR8sl9G5jBdmu z{TYDPl{51|?iHX!m3v+MOYYV9pXzOl%Ki`&&{gto{!!5rkfv)k@U~okRK(KpOw|c!G5qS;LQY0*hu*B69)PH#@J^UM0)}?gB+RV?D#+#fS&d*6}OPus(9F9np zjYcHn71?pLm}@Z8JYn~q`t5#S15WrmqCwgMGdEh(5Jwa|*!;(&Svpb0kV|ACE$YgE zqDxEle-&N3dA`}DUx_iZkVmN{o;QKUFh7&IKLQlgXJBF~vqs7vX4h`(odQpl@Ry1U zKt3f2ch!GXT#(3L`qCP=hEBm#!Yx8pMV^G5DN>&wBJh_=i)i$2L6WTfjDzLTAVuiW ze(37qgRQh=X61Q*(UY+@p@`Y-M3N`-e1R5=SOs_scjhYSP07HTb#aY5^8l@VpO&jz zTsk#y`8(Jb@LO$GK56DpNV@xD%*E)mw{BK4=t_3Vq_v;3Rbcz8qlED>$rGOb44N~j z$BjH0CiuNaa7(ea+M6=F3?!~r!$ce+Y>k{0F1j}al03qi$ZNJiZ)CLvMUZZtAm6=n z_VPApUgP(jaW~ZuK0&b5lhZwiGV$feCEV1=b}YtkOXw{P#}gs7j5`-Z4>pWvVGS_Rq2Xhj}Gbnvm_|?+?582QJBFQYAJ?fxylx8fHDTd^%>40Yclr z&trL0#PQygxs#$#=-2}<;P-?=jX-vURn`wU!OVvU?b&_tTcZ9EmmhvV(ZRX z{t5eVK_YDO%Hq(r!%vLCZeprCQ+2r|WxdS}*pBD}E1HWN&Qq6qd5+?D=PsSKZ>HP8 z99fg%mJ~a2?LA=SO{}H}tgBNQCucDvnf(Nj%fzivow3pG=f;`i?R1aK%++aQSvU(E zy`dF>IK*KauTO+aB@#zMVszg zykagrv$p$>X&70nqo*+1F~SyNx74sCA0y}q3;fga64_rhk&Ic$OVp%IzC zp|~+93QwysZ?2 zOPrIPJidT6b+ubYdxxdUC*xt;6TtQ39jwsTsXfE|oETh~lqP@d`|{CUmqH*P(SPBx zX`b0iu%O1f9pP+h5O~F~Vv&e@+2Vo8kKn7kDWR2$tc*KS-AnDsNc`Zf1S<8j;b`;E z@TC$+E}kfF4GBF8Qf~kLX5eHJ+|8TV+LPrylNS6QP>G* z@$*8DE~DObDc-d)B*f5o4jL6n@ACmF?$n=DLd*9ypF*ohl;^+o#~D~rD7g24wJWHo z)#kJclmNCAblzaTR{^cdnP|IbM9C6Pny}Eg`>d%WF)F2`Lcn^zF9~6j#BW&?M*5!- zWxWfx?9=5@m-IZ{B?@d!`lu$~GVQwZH4>XQB`f!8zdp_8hH1yV=&KLh;V)YPHsfxj zD(W5i2P?ZekXYU?%8&g7!@%?ryhZ>c=ZUiqSX~C)rgTD?%R$o zev?gKCjlrZlSW-fUq+717lURK)4~w+aGo14#Ub3qNRYW)2e!pZNNSbo@skP>-3wVZ zNW?XRqchjW0wioscz7hjZt#M|*4cqk3t}e>S8@(GlDqf1I$^ioWYQZ;%e*?#_=5V) zKJ>66-`j7~*v56hYkMu-FVyg=;w=~%KpGxYJi_PeyariA=cm+B>ewYD0^}YL%LjC! zQQva)HFc;l`e3>N;0)-$?6QMR+@NlPdFq}@B#92rmMO9EVmRW_0ob^KK%51^VqZHE z_j#tOqPCS~N0!ghl@K7}pk%qbui>;uXAb&hM5g&zhM)=$ZO0hy5#RARibw%c%vb$_AL=pUpCd^00|^hSMUarn+OL4o#fR#HJ~mnz)WD_RRcJRqlGaFKctgDbQUL5}{-%TPN742}u?^0-74eMFfw~r^~sxN&( zbRm?zWtsd4+d`IjEw>i2(?`6HD5xVN`5!}b`ChcygtLxgnf2h)qu zz2h7_SB30uudAhBafv!LX8f+L_*nSE-a@xpgwAQzZPFjn(81U}?+Xt2>og{1$3QN)v_>O`Mph z7m%MB)GUaD=-VRQ>FX3@Gx`Oi=C&yU9_(?Yk9Qp*7lLiSdh4=;@AW3emNVj99uIrg z<#H4U$MTyBL8_{Yz6#L|$;o-ID6mTs^H@GulkdZFudC%j!sz zyD_!4v3&n$bBVaO<}hgI`)@TpcoDHCIFD7IALwPZ?taLZR>&bj4XPLxPzx-BP@UGs zB7btMpEolhT}hoCA%f9GfX)%IHd-OTqkz!+#8w#32xGNBV~1?pdy^d8OZ3&p`DJ5V zVu|wkH7o)u@4cf$JYKwqt*d>tjIfr>_9`n*S}2)k=GofWMZ5uE|EYq9{H7lVCqjHl z*i>%bFh|=0Rx~#zOVqjLB!P6Cs;Xd%90TH$^bFu3Hy>m+HfR#^ESFak_coQ?J}#;P zigzPB;d$G0!>85JQaHgG%T<4PO{P?X3Rb+)Dnj)nM(CNg)33OlX@s{;rS{iuW@|O~ z-WXLL+?Y{@NJUb%EFEuD^k8 zKK`JLMnau#8*pD=3ouh}?Y3aeWkm<>B4e$EuvVG>UE%#T)_Kjo(GthlK}H{aznGT< z{Px1UHFMJqz=RkN&>Q$SHvno4SLavkONLKYFUK8oJf}OL#x#CxhkqmD$9U(2`RQw{ zt{<-s3qWF{V-MX~%uo3lK0f^~C`TO{X_1OgsJceR-*l6g``i^JRmyMj^`8XvZ%crR z&Wylt;h=SL0GxkMoDZg3zemLf(~-a9{oj+JzenD&GGH)$MG|)^`XgoBX@;-d74t3j zJOwn`jy}{Su{bbH@@#el9+OYw@R+Pqa_=dnWX{#8x%3KvJOOi6f;oz4ddhSa7(QdaN-@M#;UxeKk+P>uR~A2(rZK_os{v9BE3rv_m=C5>KPkc)?fBq^n8A%G!blMcEBX ZK_2TNh-jLFALlxBQO6irtY!D`{{W?|ED`_! literal 0 HcmV?d00001 diff --git a/NetBeans Projects/Prodotti/nbproject/build-impl.xml b/NetBeans Projects/Prodotti/nbproject/build-impl.xml index fb6628c..a90096a 100644 --- a/NetBeans Projects/Prodotti/nbproject/build-impl.xml +++ b/NetBeans Projects/Prodotti/nbproject/build-impl.xml @@ -119,7 +119,43 @@ is divided into following sections: - + + + + + + + + + + + + + + + + + + + + + + + + + + Must set platform.home + Must set platform.bootcp + Must set platform.java + Must set platform.javac + + The J2SE Platform is not correctly set up. + Your active platform is: ${platform.active}, but the corresponding property "platforms.${platform.active}.home" is not found in the project's properties files. + Either open the project in the IDE and setup the Platform with the same name or add it manually. + For example like this: + ant -Duser.properties.file=<path_to_property_file> jar (where you put the property "platforms.${platform.active}.home" in a .properties file) + or ant -Dplatforms.${platform.active}.home=<path_to_JDK_home> jar (where no properties file is used) + @@ -242,20 +278,6 @@ is divided into following sections: - - - - - - - - - - - - - - @@ -343,7 +365,7 @@ is divided into following sections: - + @@ -394,7 +416,7 @@ is divided into following sections: - + @@ -436,7 +458,7 @@ is divided into following sections: - + @@ -515,7 +537,7 @@ is divided into following sections: - + @@ -543,7 +565,7 @@ is divided into following sections: - + @@ -619,7 +641,7 @@ is divided into following sections: - + @@ -850,6 +872,9 @@ is divided into following sections: + + + @@ -899,7 +924,7 @@ is divided into following sections: - + @@ -933,7 +958,7 @@ is divided into following sections: - + @@ -965,7 +990,7 @@ is divided into following sections: - + @@ -1199,7 +1224,7 @@ is divided into following sections: To run this application from the command line without Ant, try: - java -jar "${dist.jar.resolved}" + ${platform.java} -jar "${dist.jar.resolved}" @@ -1301,8 +1326,8 @@ is divided into following sections: - - + + @@ -1495,16 +1520,19 @@ is divided into following sections: + + + - + - + - + diff --git a/NetBeans Projects/Prodotti/nbproject/genfiles.properties b/NetBeans Projects/Prodotti/nbproject/genfiles.properties index c371171..19157ee 100644 --- a/NetBeans Projects/Prodotti/nbproject/genfiles.properties +++ b/NetBeans Projects/Prodotti/nbproject/genfiles.properties @@ -1,8 +1,8 @@ -build.xml.data.CRC32=2fdcd13d +build.xml.data.CRC32=24751a7c build.xml.script.CRC32=7d6b168c build.xml.stylesheet.CRC32=f85dc8f2@1.106.0.48 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=2fdcd13d -nbproject/build-impl.xml.script.CRC32=fc1dc10f +nbproject/build-impl.xml.data.CRC32=24751a7c +nbproject/build-impl.xml.script.CRC32=6509df98 nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.106.0.48 diff --git a/NetBeans Projects/Prodotti/nbproject/private/config.properties b/NetBeans Projects/Prodotti/nbproject/private/config.properties new file mode 100644 index 0000000..e69de29 diff --git a/NetBeans Projects/Prodotti/nbproject/private/private.properties b/NetBeans Projects/Prodotti/nbproject/private/private.properties index a2ad8bd..721cc40 100644 --- a/NetBeans Projects/Prodotti/nbproject/private/private.properties +++ b/NetBeans Projects/Prodotti/nbproject/private/private.properties @@ -1,2 +1,8 @@ compile.on.save=true -user.properties.file=/home/giacomo/.netbeans/17/build.properties +do.depend=false +do.jar=true +do.jlink=false +javac.debug=true +javadoc.preview=true +jlink.strip=false +user.properties.file=/home/gicorada/.netbeans/17/build.properties diff --git a/NetBeans Projects/Prodotti/nbproject/private/private.xml b/NetBeans Projects/Prodotti/nbproject/private/private.xml index 1a110b8..f99e863 100644 --- a/NetBeans Projects/Prodotti/nbproject/private/private.xml +++ b/NetBeans Projects/Prodotti/nbproject/private/private.xml @@ -3,10 +3,12 @@ - file:/home/giacomo/NetBeansProjects/Prodotti/src/prodotti/Alimentari.java - file:/home/giacomo/NetBeansProjects/Prodotti/src/prodotti/Prodotti.java - file:/home/giacomo/NetBeansProjects/Prodotti/src/prodotti/NonAlimentari.java - file:/home/giacomo/NetBeansProjects/Prodotti/src/prodotti/ListaSpesa.java + file:/media/gicorada/Scuola/Anni%20Severi/22-23/Informatica/java-scuola/NetBeans%20Projects/Prodotti/src/prodotti/NonAlimentari.java + file:/media/gicorada/Scuola/Anni%20Severi/22-23/Informatica/java-scuola/NetBeans%20Projects/Prodotti/src/prodotti/ListaSpesa.java + file:/media/gicorada/Scuola/Anni%20Severi/22-23/Informatica/java-scuola/NetBeans%20Projects/Prodotti/src/prodotti/DataFormattata.java + file:/media/gicorada/Scuola/Anni%20Severi/22-23/Informatica/java-scuola/NetBeans%20Projects/Prodotti/src/prodotti/Prodotti.java + file:/media/gicorada/Scuola/Anni%20Severi/22-23/Informatica/java-scuola/NetBeans%20Projects/Prodotti/src/prodotti/Alimentari.java + file:/media/gicorada/Scuola/Anni%20Severi/22-23/Informatica/java-scuola/NetBeans%20Projects/Prodotti/src/prodotti/DataNumerica.java diff --git a/NetBeans Projects/Prodotti/nbproject/project.properties b/NetBeans Projects/Prodotti/nbproject/project.properties index be08150..1f503c5 100644 --- a/NetBeans Projects/Prodotti/nbproject/project.properties +++ b/NetBeans Projects/Prodotti/nbproject/project.properties @@ -1,9 +1,10 @@ annotation.processing.enabled=true annotation.processing.enabled.in.editor=false -annotation.processing.processor.options= annotation.processing.processors.list= annotation.processing.run.all.processors=true annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output +application.title=EsPasqua +application.vendor=gicorada build.classes.dir=${build.dir}/classes build.classes.excludes=**/*.java,**/*.form # This directory is removed when the project is cleaned: @@ -32,6 +33,7 @@ dist.jar=${dist.dir}/EsPasqua.jar dist.javadoc.dir=${dist.dir}/javadoc dist.jlink.dir=${dist.dir}/jlink dist.jlink.output=${dist.jlink.dir}/EsPasqua +endorsed.classpath= excludes= includes=** jar.compress=false @@ -44,8 +46,8 @@ javac.modulepath= javac.processormodulepath= javac.processorpath=\ ${javac.classpath} -javac.source=11 -javac.target=11 +javac.source=17 +javac.target=17 javac.test.classpath=\ ${javac.classpath}:\ ${build.classes.dir} @@ -75,7 +77,7 @@ main.class=prodotti.ListaSpesa manifest.file=manifest.mf meta.inf.dir=${src.dir}/META-INF mkdist.disabled=false -platform.active=default_platform +platform.active=Zulu_17.0.6_10 run.classpath=\ ${javac.classpath}:\ ${build.classes.dir} diff --git a/NetBeans Projects/Prodotti/nbproject/project.xml b/NetBeans Projects/Prodotti/nbproject/project.xml index 4a17984..3bbe7d5 100644 --- a/NetBeans Projects/Prodotti/nbproject/project.xml +++ b/NetBeans Projects/Prodotti/nbproject/project.xml @@ -4,6 +4,7 @@ EsPasqua + diff --git a/NetBeans Projects/Prodotti/src/prodotti/Alimentari.java b/NetBeans Projects/Prodotti/src/prodotti/Alimentari.java index 67d8475..199842f 100644 --- a/NetBeans Projects/Prodotti/src/prodotti/Alimentari.java +++ b/NetBeans Projects/Prodotti/src/prodotti/Alimentari.java @@ -1,30 +1,41 @@ package prodotti; -import java.util.Date; - - - /** - * - * @author giacomo + * Classe che rappresenta Prodotti alimentari + * @author radaelli11353 */ public class Alimentari extends Prodotti { - Date scadenza; + private DataNumerica scadenza; + static DataNumerica oggi; - public Alimentari(int codiceBarre, String descrizione, double prezzo, Date scadenza) { + public Alimentari(int codiceBarre, String descrizione, double prezzo, DataNumerica scadenza) { super(codiceBarre, descrizione, prezzo); this.scadenza = scadenza; } + + //Necessario per impostare data di oggi a tutti gli Alimentari + public Alimentari() { + super(0, "", 0); + } + + /** + * Metodo che aggiorna la data del giorno attuale + * @param oggi Nuova data + */ + public void setDate(DataFormattata oggi) { + Alimentari.oggi = (DataNumerica) oggi; + } @Override public void applicaSconto() { - //condizione da implementare - if(true) { + int delta = scadenza.getDifference(oggi); + if(delta > -10 && delta < 0) { setPrezzo(getPrezzo() - getPrezzo()* 0.2); } } - - - + @Override + public String toString() { + return "Alimentari[" + getDescrizione() + ", " + getPrezzo() + "€, scade il " + scadenza.stringaFormattata() + ", codice a barre " + getCodiceBarre() + "]"; + } } diff --git a/NetBeans Projects/Prodotti/src/prodotti/DataFormattata.java b/NetBeans Projects/Prodotti/src/prodotti/DataFormattata.java new file mode 100644 index 0000000..d139013 --- /dev/null +++ b/NetBeans Projects/Prodotti/src/prodotti/DataFormattata.java @@ -0,0 +1,41 @@ +package prodotti; + +/** + * Classe che rappresenta una data senza fornire metodi per la formattazione + * @author radaelli11353 + */ +public abstract class DataFormattata implements Comparable { + private int giorno; + private int mese; + private int anno; + + public DataFormattata(int giorno, int mese, int anno) { + if(giorno >= 1 && giorno <= 31) this.giorno = giorno; + else throw new IllegalArgumentException("Il numero del giorno non è valido"); + if(mese >= 1 && mese <= 12) this.mese = mese; + else throw new IllegalArgumentException("Il numero del mese non è valido"); + this.anno = anno; + } + + protected int getGiorno() { + return giorno; + } + + protected int getMese() { + return mese; + } + + protected int getAnno() { + return anno; + } + + @Override + public int compareTo(DataFormattata o) { + if(this.anno != o.anno) return this.anno - o.anno; + if(this.mese != o.mese) return this.mese - o.mese; + return this.giorno - o.giorno; + } + + + public abstract String stringaFormattata(); +} diff --git a/NetBeans Projects/Prodotti/src/prodotti/DataNumerica.java b/NetBeans Projects/Prodotti/src/prodotti/DataNumerica.java new file mode 100644 index 0000000..b365b8f --- /dev/null +++ b/NetBeans Projects/Prodotti/src/prodotti/DataNumerica.java @@ -0,0 +1,39 @@ +package prodotti; + +/** + * Classe che rappresenta una data numerica + * @author radaelli11353 + */ +public class DataNumerica extends DataFormattata { + + public DataNumerica(int giorno, int mese, int anno) { + super(giorno, mese, anno); + } + + @Override + public String stringaFormattata() { + int g = getGiorno(); + int m = getMese(); + int a = getAnno(); + + String res = (g<10) ? "0"+g : ""+g; + res += "/"; + res += (m<10) ? "0"+m : "" + m; + + return res + "/" + a; + } + + /** + * Restituisce i giorni di differenza tra le due date + * @param o Altra data + * @return Differenza tra i giorni, Integer.MIN_VALUE se mese o anno diverso (per il problema del numero variabile di giorni al mese + */ + public int getDifference(DataNumerica o) { + //Provvisorio, per il problema del numero di giorni variabile. + //Non dovrebbe influire con l'esecuzione richesta da Alimentari, altrimenti andrebbe riscritto + if(getAnno() != o.getAnno() || getMese() != o.getMese()) return Integer.MIN_VALUE; + + return compareTo(o); + } + +} diff --git a/NetBeans Projects/Prodotti/src/prodotti/ListaSpesa.java b/NetBeans Projects/Prodotti/src/prodotti/ListaSpesa.java index e7a0b36..2a1eb51 100644 --- a/NetBeans Projects/Prodotti/src/prodotti/ListaSpesa.java +++ b/NetBeans Projects/Prodotti/src/prodotti/ListaSpesa.java @@ -2,35 +2,49 @@ package prodotti; import java.util.ArrayList; import java.util.Scanner; -import java.util.Date; /** - * - * @author giacomo + * Classe di test per Prodotti + * @author radaelli11353 */ public class ListaSpesa { public static void main(String[] args) { ArrayList listaSpesa = new ArrayList<>(); Scanner in = new Scanner(System.in); - System.out.println("Hai la tessera fedeltà?"); - boolean tessera = (in.next().equalsIgnoreCase(sì)) ? true : false; + //Metodo provvisorio per sistemare la data in tutti gli Alimentari + DataNumerica oggi = new DataNumerica(12, 2, 2023); + Alimentari a = new Alimentari(); + a.setDate(oggi); - System.out.println("Inserisci il numero di prodotti"); + + System.out.print("Hai la tessera fedeltà? (S/n) "); + boolean tessera = in.next().equalsIgnoreCase("s"); + + System.out.print("Inserisci il numero di prodotti: "); int n = in.nextInt(); for(int i = 0; i < n; i++) { - String tipoProdotto = in.next().toLowerCase(); - if(tipoProdotto.equals("alimentari")) { - System.out.println("Inserisci i dati del prodotto nel formato:\nCodiceBarre\ndescrizione\nprezzo\nscadenza"); - listaSpesa.add(new Alimentari(in.nextInt(), in.nextLine(), in.nextDouble(), new Date())); + System.out.print("Alimentari (a) o non alimentari (n)? (a/n) "); + char tipoProdotto = in.next().toLowerCase().charAt(0); + if(tipoProdotto == 'a') { + //System.out.println("Inserisci i dati del prodotto nel formato:\nCodiceBarre\ndescrizione\nprezzo\nscadenza"); + listaSpesa.add(new Alimentari(1234, "Prova alimentare", 10.00, new DataNumerica(10, 2, 2023))); + } else if(tipoProdotto == 'n') { + //System.out.println("Inserisci i dati del prodotto nel formato:\nCodiceBarre\ndescrizione\nprezzo\nmateriale principale"); + listaSpesa.add(new NonAlimentari(4321, "Prova non alimentare", 100.00, "vetro")); } } - double prezzo; + double prezzo = 0; + System.out.println("Elementi nella lista:"); for(Prodotti p : listaSpesa) { + if(tessera) p.applicaSconto(); prezzo += p.getPrezzo(); + System.out.println(p); } + + System.out.println("\n--- Prezzo finale: " + prezzo + "€ ---"); } } diff --git a/NetBeans Projects/Prodotti/src/prodotti/NonAlimentari.java b/NetBeans Projects/Prodotti/src/prodotti/NonAlimentari.java index 16df36e..593ca53 100644 --- a/NetBeans Projects/Prodotti/src/prodotti/NonAlimentari.java +++ b/NetBeans Projects/Prodotti/src/prodotti/NonAlimentari.java @@ -1,8 +1,8 @@ package prodotti; /** - * - * @author giacomo + * Classe che rappresenta Prodotti non alimentari + * @author radaelli11353 */ public class NonAlimentari extends Prodotti { String materiale; @@ -18,5 +18,12 @@ public class NonAlimentari extends Prodotti { setPrezzo(getPrezzo() - getPrezzo()* 0.1); } } + + @Override + public String toString() { + return "NonAlimentari[" + getDescrizione() + ", " + getPrezzo() + "€, fatto di " + materiale + ", codice a barre " + getCodiceBarre() + "]"; + } + + } diff --git a/NetBeans Projects/Prodotti/src/prodotti/Prodotti.java b/NetBeans Projects/Prodotti/src/prodotti/Prodotti.java index c3f4dca..cbbbfd1 100644 --- a/NetBeans Projects/Prodotti/src/prodotti/Prodotti.java +++ b/NetBeans Projects/Prodotti/src/prodotti/Prodotti.java @@ -2,14 +2,13 @@ package prodotti; import java.util.Objects; - - /** - * Class Prodotti + * Classe che rappresenta Prodotti generici + * @author radaelli11353 */ public class Prodotti { - private int codiceBarre; - private String descrizione; + private final int codiceBarre; + private final String descrizione; private double prezzo; public Prodotti(int codiceBarre, String descrizione, double prezzo) { @@ -19,29 +18,33 @@ public class Prodotti { } /** - * Get the value of codiceBarre - * @return the value of codiceBarre + * Ritorna il valore di codiceBarre + * @return valore di codiceBarre */ public int getCodiceBarre () { return codiceBarre; } /** - * Get the value of descrizione - * @return the value of descrizione + * Ritorna la descrizione + * @return descrizione */ public String getDescrizione () { return descrizione; } /** - * Get the value of prezzo - * @return the value of prezzo + * Ritorna il prezzo + * @return prezzo */ public double getPrezzo () { return prezzo; } + /** + * Modifica il prezzo + * @param nuovoPrezzo Prezzo nuovo + */ protected void setPrezzo(double nuovoPrezzo) { prezzo = nuovoPrezzo; } @@ -53,21 +56,11 @@ public class Prodotti { prezzo = prezzo - prezzo * 0.05; } - - /** - * - * @return String - */ @Override public String toString() { - return "Prodotto[descrizione: " + descrizione + ", prezzo:" + prezzo + ", codice a barre:" + codiceBarre; + return "Prodotto[" + descrizione + ", prezzo:" + prezzo + ", codice a barre:" + codiceBarre + "]"; } - - /** - * @param o - * @return boolean - */ @Override public boolean equals(Object o) { if(o == null) return false;