From e7c8543c188e8f04d5176ac7b6e36563216d0ccc Mon Sep 17 00:00:00 2001 From: Giovanni Fasano <46658414+Gvf63@users.noreply.github.com> Date: Mon, 14 Jan 2019 20:11:44 +0100 Subject: [PATCH 01/22] Update OpenBoard_it.ts improved translations --- resources/i18n/OpenBoard_it.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/resources/i18n/OpenBoard_it.ts b/resources/i18n/OpenBoard_it.ts index 4d55c401..2aa1c35d 100644 --- a/resources/i18n/OpenBoard_it.ts +++ b/resources/i18n/OpenBoard_it.ts @@ -753,7 +753,7 @@ Check Update - Cerca aggiornamenti + Controlla aggiornamenti Ctrl+H @@ -801,11 +801,11 @@ Ruled Light Background - Sfondo chiaro lineato + Sfondo chiaro a righe Ruled Dark Background - Sfundo scuro lineato + Sfondo scuro a righe Reset grid size @@ -1279,8 +1279,8 @@ Keeping this name will replace the document. Providing a new name will create a new document. Il nome %1 è già usato. -Conservando questo nome sostituirà il documento. -Dando un nuovo nome creerà un nuovo documento. +Conservando questo nome si sostituirà il documento. +Dando un nuovo nome si creerà un nuovo documento. @@ -1966,7 +1966,7 @@ Vuoi ignorare gli errori per questo host? has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well. - ha perso l'accesso al repository documenti "%1". Sfortunatamente l'applicazione deve essere chiusa per evitare di rivinare i dati. Gli ultimi cambiamenti potrebbero andare persi. + ha perso l'accesso al repository documenti "%1". Sfortunatamente l'applicazione deve essere chiusa per evitare di rovinare i dati. Gli ultimi cambiamenti potrebbero andare persi. Saving thumbnail of page %1 @@ -1978,7 +1978,7 @@ Vuoi ignorare gli errori per questo host? OpenBoard has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well. - OpenBoard ha perso l'accesso al repository documenti "%1". Sfortunatamente l'applicazione deve essere chiusa per evitare di rivinare i dati. Gli ultimi cambiamenti potrebbero andare persi. + OpenBoard ha perso l'accesso al repository documenti "%1". Sfortunatamente l'applicazione deve essere chiusa per evitare di rovinare i dati. Gli ultimi cambiamenti potrebbero andare persi. @@ -2001,7 +2001,7 @@ Vuoi ignorare gli errori per questo host? Swiss French - Franco Svizzero + Francese Svizzero From c57f7cafda6b276d4f29a186629478d6b34294f5 Mon Sep 17 00:00:00 2001 From: jrynik <47064600+jrynik@users.noreply.github.com> Date: Tue, 29 Jan 2019 19:03:51 +0100 Subject: [PATCH 02/22] Create Messages_sk.properties Slovak translation --- .../Magic Box.wgt/i18n/Messages_sk.properties | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 resources/library/interactivities/Magic Box.wgt/i18n/Messages_sk.properties diff --git a/resources/library/interactivities/Magic Box.wgt/i18n/Messages_sk.properties b/resources/library/interactivities/Magic Box.wgt/i18n/Messages_sk.properties new file mode 100644 index 00000000..bfe6885f --- /dev/null +++ b/resources/library/interactivities/Magic Box.wgt/i18n/Messages_sk.properties @@ -0,0 +1,19 @@ +sk.njin.i18n.document.title = Čarovná škatuľka + +sk.njin.i18n.toolbar.edit = Upraviť +sk.njin.i18n.toolbar.view = Zobraziť +sk.njin.i18n.toolbar.reload = Obnoviť +sk.njin.i18n.toolbar.help = Pomocník + +sk.njin.i18n.parameters.label.themes = Farebný motív +sk.njin.i18n.parameters.label.slate.themes = bridlica +sk.njin.i18n.parameters.label.pad.themes = tablet +sk.njin.i18n.parameters.label.none.themes = žiadny + +sk.njin.i18n.transformation.parameters.label.number = Počet kariet +sk.njin.i18n.transformation.label.usePicture = Obrázok +sk.njin.i18n.transformation.label.before = Predtým +sk.njin.i18n.transformation.label.after = Potom +sk.njin.i18n.transformation.row.label = Karta {0} + +sk.njin.i18n.transformation.label.drop = Ťahajte a tu pustite From 7aa098a4f7370b179aedf68c923c2ec37e3e382d Mon Sep 17 00:00:00 2001 From: jrynik <47064600+jrynik@users.noreply.github.com> Date: Sun, 20 Oct 2019 20:36:06 +0200 Subject: [PATCH 03/22] Update OpenBoard_sk.ts --- resources/i18n/OpenBoard_sk.ts | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/resources/i18n/OpenBoard_sk.ts b/resources/i18n/OpenBoard_sk.ts index 254d7331..ff154c8f 100644 --- a/resources/i18n/OpenBoard_sk.ts +++ b/resources/i18n/OpenBoard_sk.ts @@ -387,7 +387,7 @@ Stylus - Interaktívne pero + Dotykové pero Quit OpenBoard @@ -2679,19 +2679,19 @@ p, li { white-space: pre-wrap; } Creation date - + Dátum vytvorenia Update date - + Dátum úpravy Alphabetical order - + Podľa abecedy Sort Order - + Kritérium triedenia @@ -2822,7 +2822,7 @@ p, li { white-space: pre-wrap; } Proxy User: - Použ. m. na proxy: + Použ. meno na proxy: Pass: @@ -2838,7 +2838,7 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch - Zistiť, či sa pri spustení majú nahrať dáta z Open-Sankoré + Zistiť, či pri spustení možno nahrať dáta Open-Sankoré Use system keyboard (recommended) @@ -2850,23 +2850,23 @@ p, li { white-space: pre-wrap; } On Dark Background - Na tmavom pozadí + Na tmavom pozadí Opacity - Priehľadnosť + Priehľadnosť On Light Background - Na svetlom pozadí + Na svetlom pozadí - Swap first and second view displays - + Swap first and second view displays + Vymeniť obrazovku 1. a 2. zobrazenia Grid - + Mriežka From 6d262af1b82fc58f0192156da7bf1eeae1e55709 Mon Sep 17 00:00:00 2001 From: odo2063 Date: Sun, 3 Nov 2019 13:04:58 +0100 Subject: [PATCH 04/22] update proposal to lang DE 2 fixed my own typo --- resources/i18n/OpenBoard_de.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/resources/i18n/OpenBoard_de.ts b/resources/i18n/OpenBoard_de.ts index 0875d89b..513421b5 100644 --- a/resources/i18n/OpenBoard_de.ts +++ b/resources/i18n/OpenBoard_de.ts @@ -153,19 +153,19 @@ Line - Linie + Strichstärke Small Line - Kleine Linie + Dünner Strich Medium Line - Mittelgroße Linie + Mittelstarker Strich Large Line - Große Linie + Dicker Strich Quit @@ -801,11 +801,11 @@ Ruled Light Background - Hell linierter Hintergrund + Heller linierter Hintergrund Ruled Dark Background - Dunkel linierter Hintergrund + Dunkler linierter Hintergrund Reset grid size @@ -884,7 +884,7 @@ UBApplicationController Web - Internet + Browser New update available, would you go to the web page ? @@ -2176,7 +2176,7 @@ Miniaturansicht der Seite %1 wird geladen Compass - Kompass + Zirkel Protractor @@ -2620,7 +2620,7 @@ p, li { white-space: pre-wrap; } Line Width - Linienstärke + Strichstärke Medium From 92575d2b59be911f326dbf1385e528f261f21e28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Tue, 19 Nov 2019 09:23:54 +0100 Subject: [PATCH 05/22] =?UTF-8?q?added=20GETypoLibre=20improvements=20made?= =?UTF-8?q?=20by=20Neuch=C3=A2tel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customizations/fonts/GETypoLibre.otf | Bin 31084 -> 135480 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/customizations/fonts/GETypoLibre.otf b/resources/customizations/fonts/GETypoLibre.otf index 55c58658797501f665f6c009fb8e8cfcfbdf4491..e0df967b30320601266264a18c78660d8410c217 100644 GIT binary patch literal 135480 zcmbq)2V7Lg_wU?$+1<-hOxUb3i2*FJSFrc4*lX+}9TWuVo$b5q-NF`@A|Q&rAPX9? z#U5j9(U@3ctce;mCNU0pG5gNlT}*!e_x|tmf1igiciNdbb7tnuneQ2A&7VID`5+0R z(CqP(CI$ZF{bMhL1QJA49iB94{tVS%L4QOFA`wFECr_9-Y3BY}ZxFF%1VZG@$+Kt8 z3tDpc2SogO9-&WcljkiMcW!2OS43>nAvAu>ta*Kd;ufkK5hBI_{mO`hu%s8GD4^we z1O43CsIW+Jw8sG`yA6MXVj;uxF~1h-e*o#uu?eY}&5rLDLH`njJR1|jGLy(Pv!RF> z0s((bSVC09#+%WQu11K8PfAQlb*NAf@V^qu0}%ls{2g35s&8nU5q}{s>M`V?AF_*g za^D-5dR}m({2j;FQh!2{MkJRDKR`o0{(Bj8k?%-xMDexGmRx1dkX(b%Y{Z3#A`TNp zh=*uWOD=-+G}o6{0eoPtGLH*fKO8^reilqyI1`OQJ{|p_uXxm#dQ5DBLT4SKf(k}~ z@XrHs-a}u#>%TLa>W&jIYm7TiA_3a&j#H=yA#le%kPk7_9p|AD1k9APdp`0ad%EK^ z>P$*u_6ZM9D4PO*t~h}{Mv3k?iF{F+J5Hhb$nK7NppS_lcbtbZiDm9MAGIY#?l_I6 zkb^;3i6|b$p$HTOql$Ef5hx5L!(RkSMUNpCg;Jo5s}=4{wbqM-R3hZ2LOGh97#|lA z6&M*67!j5n7LjU9j!FrPj|)$B=0zqa#-&27$!H=pH6LZ6Bp?k$)893UCQl5UpOust zIGv+GXfAXcgVLZ|ju|vJDkd#H3?h?&ZVhzFeUqUE$953vgZjaD82tVBJ-EvIqamm_ z>JRmM16@Ce4TVM%*Q8ELOpb{P4C>P_a9H4f@B-=nLwfh`*E^_Rf2jN4cko|_@HsG- z46=!HvK$Cqacpw`hJ)Pa0kd5E-?_0+GZo~{4KW?cU1fcMp zaDyKRe}m8fG#LI3MCkLViEGlif<8lr3{MDK z9hI0G-3O*AsL#MYg9Z#94Ak5JTW9D$=7*ae_v}mr7Q*1Kbt%jQw$gy{Sact9qky$Q z)EEB#YrRPz5N;VILTzsL(8ScRRBqACj7p1$EliDy59}M*nl~vqE<7U10H7 z^c#8wTA&%V5c9~dsAGX21^Nee4D1rPt7Dsvehvq;!?hHMx|*9WH{0tX^vD!z}wv|d+#p0yX5Y|yYqj#bSL4?YPU{svi1KP5PY{XYi+1iySAp` zOL;i8BVRy!3cb92eA~SDzMtp=aoZ2uee^N<1hxOvKOnF}$4;F;>(aGb_Z~fa_3qQR zU;m)s0RsmO2I?Vb=&<1Uf0KBqniXpd`4T&*wWot{^w{UkQX3EY5~`Mr%PYq-UVC1g{}9N-0}%w_J$d3k>z*KCA_h0LL2uq8 z-n>t~@uQmBd9WQ@dbQ^>Z#2A55%Q~Q10kFZ5Pq2TJ{Rx%DI(@X`VmbWF(1~bH=G=8 zL5hK>6Y2$fdPHQvhEb!b2~-F*lbS~@qQa@Q zR6eDl^pu$@p(>~i)D~(dwU0VQU8ZhPcd19zQ|dSB71d1r?Lm3a9zGs^9_>APdJORx z=P}u1y2l)k&pnoUtn`TTSmlxEk?N76`#|e+G zJuZ5D=W*TRN00j+zj!?N_|v1=!@=Y6guFJq4|pH({CS;uJ$U_igLor&V|mkfOL#H7 zwY&^oE>FtS@ED$fXX06TCA@N8C9j%S!`s5!$*be-=N;r7;ho@};a%ii=3V7oEz8o*#JzdUp5h=Q+%ClIKj%&plUo zMtdfCW_n6IwVpQ5D$gyRwVq#i9`ii!dDZid=g*!mJ)4At&|4@Hek|-D>?Z6l93mVo zoFbejTp|n;#tPR8bA@uDPG}L93pWYtgpI;u!mowj3U3PU3!e&Kc_A;_>pib_ULC#q zcn$Iz<2A)=w%1~>NUzmi$zEAr60bt9BCis!YOkGM^!H`LUVnJC zc+=kRdAIWp^zP;z@87(ed?+8G&-*^@d;)yB`2_n6^BM0m)n|^+QlA)~M4t?w0w1-H$*0U`gU?Q% z{XR#1&iGvNx#n}v=ef^cJ`P`jZyVo_d`J3D^nTU_2L0;DU)m0JxslG?$o^|XQ$X4&&M*w}`$zQ&i%)e%!XmhdZB0eQ zB}b$sM8`*EzRQY?ivp84F6CWDOmbNIJBo0wkqBoH5fus3<7__iUrlqp{i|6n`L0PW z;c57sPTwoHO`$)m2>1YA%T9f&?yD!v%@Xz_}Wexae9gNah0P7}K~|Iu~Sc zK_(YuaX~g0a3cufXoI3$vfyI>!En&O84h~Ka1h6E5XWW^$3PIbGlICjg1EkdxW0n8 zZi2WTg1H`o-}MmupFITsyNBR+Jp^+-1aplCbBzac?FMu026Igg;F=upuE_!a+2nwK zH#y*4lLNRW2XIXe;948NwKjljZ6Md$K(2HkS2~a@9mthB3kJRGX3&3jGw9#l40_ki zAg-Z7T)Tt0*kG>7!CaGrxh4m51z}u47*`O+6@+mGVa@{QN(gh#YM680!kiNq=A5c< zjx3xb3+KqfIkIq$EZj*J?j#F$l7&0T!kuIh99aZM7QvB4aAXl2S%i};!buk4B#Us8 zML5YKIkHHOERrLO&W>Y3qhdl+R)t2b z3QbAmD7nBHgE;6U2q6u>p;1}fZwmZ6zo9A6WVTBT+`8=Vl*hYBs51|Q!{va0Tpy>x z071D@&g~BZbETZy9R$avKzQ5-gys4;H3|sGm2zqo5R@zBR3{)XR|=SGjW~}%5S}aT z>;(kIr9fz|kCPt|o-5_70z%|cAV}B8-JnyJtvT=VKm@Kl5Cj(i>2e>CF!ymvnTt3j z%|$@ku8*@eNS#Z8IKEedw^>HZAnDsp{>IVoIG*JOveCOgbEg<-BKgpa$vYX-tx zGZ4mg<7~#+Uu%@p`C%>@hPfmb<`PvH$BnbTlPy=&o#R}h9HC1X@NpNo2Jd9lN$Ogt zF53QXp4}@n%)Ri!+$)d!x?Ab*X577Y!eD{4mi&u%$aOOBUIAh52@iugcJ=*k0M6-d zZQ-A9Ys@_eZc5#h?qN8&=h_PYNAlsWQG~lBAMTPos2*pv))9oe1`zI&e0VGS&WNjz zaF@u#T_O*6u^isYu`}YX`0nG5xVQ~>vFK#X+4a999qyKNxLeZUZb^r`CCz=^jkzTq z?v^yzQtwK*SZggevu+88yCn=~%exv}thM$(-`1F$=l*V{-^n%NAGt=jx{T-xLA#F$u+_y*N9d=oe_7%cOQ4e#bbnvMJHpNT)~2T zH?jz~TqE3ajd05~!Yxu$^~*9f;f)8-I`SW;BVBThbjdZ+CD%xoT;bztDbgj^NS9nATbXr6+%;UAEz-qtq)WV! zF7ZaTvg?ev>%aTBBQ91WUE+1}=VbI>;*E5RH_|QMNVj++-QwlG?#A5WjdY6_%=&jF zT&%U0n`gIzh;)lN(k*5%R^HX*Vy#sFd|P8~-rZu3?C-jzft>sQSF}9z|A3bN2MGNi z2>_J{HK74Gi3Auc7I`8e@&Z`N2iyT|09<+>`5_Vd0Eq!+`Vh54AA!pNKs)3QkW&YM zM?0a;=rhy>z|C%`JL-XY0u0p~AmqMII64Rg1C%@v0Oi3Pk_V{zaDYH_(Ks|7O#no9 z5+KA=PzX3YrU8CG1I=*~0**o~9IB|kF39#8| z;w$0|@ilQ40JL+&dEx?bk+=j<+GXMj@f~rM_#QyDYs7Wp262Fi;{7(Eq{7Jkb{vuuzm}nxJi8lmGv=DEJ zzX=D4NP;9uiu53PB%c(JH0enS0krcbeMn!j4f!7VKIun_$PY*{*_Ql}Y)5`XeoTG> zpx&pXKN&y`Hbcy93;nL%cfSpYufkhx?YnGYbOgp`spQVw9Gl2nmuQUjo*mSjjBsV5Djkt`xj zq?xpkR&XTHH}{cWko(C-@&Le`hseX^5%NobJCBja$rI#BfIUx>Uy*0XuL1u2hCD}} zCocdDdWrm&yi8sJIP@y{J^2H94Pen5f>-Kg$V4}fWVQN5`?R9}E=`%^(wFf{;R+dW2lQfe8s zoLWJJQY)!20DvQ?NGghoredgADvnx3t)}9s1ZoYHNF@O{oJ^%qsZ<)3PGwM;R2G#@ z<&bLtnFrSncvuAp6dPzYP%z-|0(=}jLg4u!E+VoWB3B?X5s^AXUO-ekL`5R%8{{z) zdF(^HNr?9t@mC>14$ag+!(;l^1 zgWmH&?=_(JrO2-j@~cID_mOBN5vdJJh)zeU^s0h)|casOw(T^*hvUBU|yc@kV_{qdpSU=OpU$E9wh=>nhauJJhcS>X(7~?MD3` zqW)SGQ-fFBz085#g?#Kma9DKy{=8t@Goa2E|6 ziU!U?1Fs@*?F@Q|28+;ODH?JD4fQ}nqtVb;XxLmd+!qc17L6E$Mtp-t#-mY#(WpCU zbSE_W8#HDC8Y@6!SE6w<(70!4{9-h|9F4z)CXi@C6`Jr2P0U1-{L!RyX!0;L`Fk|E z1x+bKQ=X%cNhqWYh5U-9PC-+5qiLRKS`38TC(wLwl21bOv(fyGXhCnZ;2`?E zJNkSZS~wjo`T#8|M~gp4i=Uw-!Dz`Yv~)CDYDUWf&@wYx9*CANK+Er-71=1XGYV}% zD~F(!i_uC3h54bd11Rh{3Lk{R52Ns(QN$t?@iU722u03DQJZk>MiR<6 zk1~6pOf|~9h_XIKSr1Y6ER_8V%F(0T{wTK$YoxoQ;&VNcjq>#v)ZEQn5(A2&va2^$VmCAx#LT2$QyRX;=<3}|B|s#%9>9B9)7w7D`d(4sAz= zH=rZs=u0I!x*r`2MaNE};}kl651o*slOLgz)#y|=bm|~FeFlBC8J!t|&Rj!Zk3?Tf z&{+?3_AUCxfX;P8=W5V-gw9_^7Y3sX_2^q)dW7!Y zLieob-ad5yeRMwq-M@n#grEmU&_gfua1DC+6M8fNJ=%bN{t*4V75&l){jvc)_Ct>) z=;xQCZj(}&>t_+pHb+~=jc^5dUXl?H4gpNfL?b)ueT%Yfp99qf1sxM zsOchVo`afSqc>W_dLT9*wRoVG<*4O2dOIAwJ&peEkN)0@93LTvfj~k6#S+9E0!%To zA3<&+s15{GLwGD9JboZ}TM7Oqg8w%`w;?>+5}q3fVI$$?AiNU@pGAbv6~fm>_&SI- zXNdQD67Ovy-tR)ZznAcvMEIR1M574NN#cXf#0NS;EFi>YqU}!N!$9Ig1JRBo+GP?S zjU+zWLVUc2`1msM$z?GE{=O|QnmgbQMBVQC?bMOx4&p%J z)wUgkzAaxg^YIkIfjSJC>piMpMBkNKYYzWT2H&i+T=-!SNDgHdNyniM9vR;@`(U$AIi z$N8P4J(+pT{NkP`I-TrreDQ{K8ioeFY?uPguW00YfzAlL9=buH;tkcuzdZTs#Gl2# zGAEf6(qHHQIq$CpN7Aa*2Dwh5QYv&ZLm_QYe?NMEU;D7?fy`KDZ2F+6A))=pj?@%t z)LNNIX;xZvMgw$1f>l0sq=Oi+?S)o*d`4NIlhH<2#Cq-L z6&Ph|b-pU!Dz|EA+$Lst7oJka$ZRs&mrX5C$Fu7Q98yQ&rAlu8tO0lo9wV@t&9)MS zSr)*K!K3+Bg{45Ekjwnp(d=k}Os*)9SQJomG&_bbGb?QVzHi$*9GkbjcA(-9g~aYd zlrdOrR+$aPB2!V>#?ngL`qFB{CY?!NnPti~Nu_G3N~$Yh(rIl*R$P9LO2sJ5N{~o5 zJf)s^fM-(=@Dy<;q3_#I6yFdVzoCvR#Fb@b6_t5qS=o7cS=nWI6#>4i#NoJeZ;FFj zJ~4oBINoI6a}Xv$EoF`u+f-Jg(Mn@S^F^M~qP9tlk|L0ToMs(wFY(lJqr|3$;U}o- zn$zq=jvY6_>@HJ@vDY&^6{q6V9(XG2#d`H%r?RPR>N9pK_6n%;=rIhBz{~Nn+jzvY zXSdlA>@s%wFm^Y71yyCtxfpv&<;d$<-<) z%?jDsFaw4HkgBRgZ?Q7^!#8&xq2GQkkXU6POIE6=Z%(NvRQ33=ohnj@o7(ej&{DC? zDhXg;^N(M}o0di=D0wO#ZFUaAmd@8{34X8?15 z(T!2NY0Bkw|2+0)N)?d3P-I_w8y+$II%8Cdy7VwUvr( z7HdfWo{R|rH(Z;{0>dTnIKB;*Ux7j{@n^@ew*^OU<5Nu$MHXX`u2gE4neq#jGP>ox zmg_u~QmZh^4GNP62G~TfllcV}r$7@F^-YQOIH`e<)Z;&4suwB5Uo$7S?>)Bn*oKSD zRp$G&i{VGZj?ddZit#>a890OqgQCM%W(w0QF+GN~k>rLBOGS>&9ODK;6* z6}6kTZC}5udY5e{L%;knko}PTaA=1v0fU%H=dzy`T4mNeO}@G?U#BXWy?L2Eu71_Q ztV5jaS1KAXTaO-&u$It+I{$N zSkJ7Y$*&IoRu7NYUcwe5N>?;G{=Re!;b_rawMtx~Dz+HRwCGzL(&Y1u;lZM_7E7(t zfDsI+k2gHMnK7wN8k54HWN7v+A7-yWVwS_~{>YbSjbaB3XGhY(e5p(>ky_=&0hjp$ z*^oi(_(C}v~?5f$iYt!!XearzGd-Q(7Qmmj)Z`Q+~Sy8@nbKIuYwaN7bwCHhUUd-C0sKl7O z<;*fz%TIe@PyePV9*fF(qU+-~Ec=?dO8;{GhsTeujp^&pj9oTsLK?#)D^lfjO9zi$ zBX0Z>z|@!4ZP>YS$BydVHu}qQ-bQ(iLdWcu>`31bzhQN06ca`F9XYZu?BYn6;};E_ z3?+8_(t(16BOQ+Gf1RuoHQ{**vFO!R{nvZzZ}0e~>X8+{#}ui2k{l%Z`+qr|<2-+c1)*3G9+Z;a^Gd*p~-pt1_(=kUJs z#JA_Dm-sp8*K*LW#4MjDKNw+@7lw*=g zRG|I!PVJwTu{uAC)~K{j_0NW3e%*^YLfJHtD#ZqIQvjc{C^%~(pd|nnkwU^*69H^{ z4_6U)M70*d`hp@~_O{}jgZ%0|9NS%kgZ+NkbLZTGFYs^&>UIo?p5c{vpqN>^U#s0x zcv*e=(9y=j2M^g#9=xKx75VL|ucz;ru8Yz|NfR>Yu%!6#{BT8*Hc_9fPugcF+@id& z<>bj-e}08M#}=_3x^QVsavZ&S$;z|lcXt03R;=LrK9HNPs)~E(w(Fk6NBq{rHbPGe1$aMU$=;-HArn* z!|DTJo0c+*m=$Z+tXRD=XC5VwUGv%OeUjIUu2nQ z55H251sjjyK?Rsh#?`D9cVzQ>u!E-bWd{|pL-Z4?C)Z7yr-E*7Ct!+IW`$m+mufT$y2bcb z%>xCb$YIi%tTJ`ArdVQzq(#@5P!?*>=)0tqw?*`ACtn}MpL25=uvVSI%S)r;>7sFgAbJYyk zbGDcr$#u*Z%&u+b272F$(`&y5g)p#bxEMbc)SDX&wG3U%7aaygII?E|({I?A4pLfl zu(ag^ac7|~`zX7gU4ZX0MQvQY zeNS_@dcVA#cz!)-InkF76ymMA+LBEh^@Rp41GAj}Rl?OmJwxL@co^=7^*EL7iKnsC z19JHjnQ3|RlcZ`5m}LfOnc8aHTE4Tm&P2ED7ck?~!ZK3h%acoE4Dp85s;qQc^rcLy z&Nb%H)@2vfo58@%#~BUc&xE2c*({Z~3k>=!Sa2+NqWb09;h=blSLcXtGQU*4z-tX= z223w$kxH#rjADbP&FjRl0%p{&%tPk!wQJ9d=yRZBEH<06I6q(-U-Y=EQ1o(C?Ba3E zAe!~Z!a>*rRQWw6XmC6Jy&mL>6TyA}Te-2Wt}y_g`c_~owiK7hECm6R@b5ScEHz7s z(^6}h#$OQ~y<7@bK#A32tEpOF6M!eMzmMWeqxXghfB?ve<-O^pWNnL3z zwbj>E{>tEy^mW0Z2S%-6BNsfC0zgh69o+Gvv&UK zg-I)7lcN~+eP%T7$l!DaXa9-)pXt8SpN-u%(jc=a%D~JhGFnx|s~=210^;-6c4j9s zY!1U7#qW2(G;@q;+_vYmbzR9OLj}$D5=>=1mk-E|$d60z{7^z0?c$ZDl5Z;-ipuuf z-hYc$K*v3EyC^mze>i1UdH8kpqnF?j4q9(U8 z&5~T4qRz-m$jn>Agwk4eeDGlAAkPNIv_v75`ZI%r1~E-BkYSPfJEv?#fGFo!H=$_% zvF<|XvE?&CA~W}-|3zl!50~&z+E}bMDGf9`scDwD2Um+d(6U0@6PBSNtG+pRFOgG+ zSJ{7tx%oUxj0KN5bEWBL0oai;|0%E}qE<-2Dg|5DR#RQMG2md!6@H&lqx$q3dHr#T z+#=;Bhvh%%g=x4RTUxr;zi~8x754ivP7n|{9!OCAgL={9BQWzdg;nO#5_{eH=iJO+ z6C8f{9qwT)Hd^IowGM1ywMMBbn8)&>CeVe=Yk0+StHggQe|bzajPW|yYsEHeaq-5= zs!jflZ`Z-sV4=rptw!)(9&JsxK)mKPNoCkC-%VpJ+%h{7`&4w+SLoDrCeScSG#vl zb8wws!A=JX7z2`Q2c~Qn`){?PqfLCd_=2wXrwe$1-l#1GHOU<%iiND-%HGSEjKZv< zxRO-MA~=fZO?yj^G8bqZC)m8(eu!ZXd|h*%InAtBSE(wc8#?ViSf zrYC~a>}Wi+B@aXx%QvO*cm z7XwF68WrTF1A@LC55Ym(xn_j)-4yeBZa@r*+gtrTB}wx`P4u zEBuK7tX|>?rm-hWJY_!#kn%rcx~Gqh26IeWBq@@Ys4PW0%i%(3q2KlwBxh!%rlham z1mcuPrE=-Ay66M`x0=R?@qNKTOM?*%4+|d)o{a3-r_TtM59Vu5Hkf{0!vIG3tg5kj zR2`93&s~pkSeAGvv#Wgj=1tkVQ+G2Ln406)@oa-dV+PZw2sXN6Cfhk`!b*lt)@2nZ zuRC*XFBUVnD~+?cq580Gy24Pi+1%f_q5Ai~C+;tNv`n1Fq**e`>TCAu8j~~fGUVyp zkuyxW2fwbz&+7>+Xu$UxsP8}k4STl3o;ryO*+;zfYu76`gWBJ*??=4cVAX&=R2E6$ zgq^{5i`UB{>;*>1*?{W-0s1Rm4lNSa6$ux7sJ-9w;u>-o`TZ^u#k&wpnU_t zDhQ2?UJjrFr+ck6Rn=e>jC(tU4@)K4Kb^_0R96+2O3YG?q);W%ON%0F<2gHEl%f_? zZ8Cs0+-CZtUKEdiP>3%x7k1a5h9fnJnRC+r8>Z&OEj$w@gj*B_PW#iMU31y?QA1&G zOJs0NHZKy`3 z*%C2_9YE`vd+`{6Dy4ck1Nfg*t6~SVWXxm7(9InLOi^Kx#-KK;^a_TC6DEc;*5pq7 ztY$q-i<4=oS#ANQ*=~wGoC$_^*zwn!C>)>=?_qY7ZrQkfM|ETA*|HhyS8R{3N!^)m zXKpZiPQfhb&D<=|a=lE=sK&Cr6Q@mKl9^OnX64dDDVSt%2!khY!t}v|>#M4)TebB5 z!b1~l0(H_7naxmYFcxcVtFd^_jSyp)ZcR>VN-JAk;C)is6 z9Q(Ii6KH!5AJvDUdyKsCETE}G&=|94#qyY#6>zt=arb@hc;8r=ne5+EB4CBjIf&*G zb75D*Y5Ft443-~0DlaN8PP%Zz>h-Z-O7`ra)3%GV@=|ot%KU2MzRCuJZTp4&KQfG! z&0ZM|1KO#wH?OUO)lC@z;QgBaf~ng65Xb6Gg;u#iu2&Xn6v6E5{G?%U+HU9Xe~7O( ze{3|v(P>eE38FN>;$Uy_r^%wiIe6A)E-tRO8a4;uBm9*??Dua!(I_+=?x-wMm zQ(OEUgm!VcgIKpE8X#d7Y&JqQKZi0m1&VFzVnb00jf3z*9K=546&1kZHrk4eHkFNL z$2SRhYOBJi&?*2b*2o~IMZi-@3=$gvVsEEAh*y7|bfC2xrVwfeTIAnI-2m&rY|=nY{^1QVH>5}p*5x0IPji!zycWs5dP)0@H@Qb2Xpdkg>_a{#VTpX_vy12{Xj z+r247e$7GqFZDm~rkWH0^+=6cwNjP0IxjCBaIUoN@z?Tq*}|kW$Kw-Sz8lJ)|Mm`rsl3nk;F4& zXdP<<5l&%8FbPwF|hPzKAIX z0}?E6HQZ0yM@*bv7*e?Cy7qVGJFX72rC$Mey?{AvrxfpH>>D=k zrS*EAF3B8yK>L-Z_RLj0U0PHHZOq_z$%eTWN-q^ z5imNqt?QEZMr{md!kOrlwGqitxr><3VHyVs>pTX-K;zZB@$U}QsYFOfYq2jlI3B;I z@Ox_U5MehwLOc|z)VGM!o3_?osdA7W-T=LIO9>{<)IVyVZnpFg!;RP$&}0=@7%OAd zoh&+3yZJoBm`d|NoC>X4o<1icCA?6|0B)(H8LapTPv_~32cBs6Yj)TN(`dF-pe|UzewY`lhS`LxSfSZqFq^Bko-f%(v;75mMY1BTUT(<)(@?F}g6`FU zabheqt12Wl00or`ByjWgU;la^ZBl7Eh1npMU=s;m%oOWxEwPM(Z zpdKWND}vz$g&)Et&UMT1pC-sSvUC?%TO+3SIfYqDAbH#1H(J! zu2L+nj<;r2N;Yb03M(xoCHCD_PXHjNuL{1ndj`{$U+64_Cb^Mj%h-7Fa3Q8xTFkKB za=IiXD^(Je%pieFoZ3>b-q=u4&oGUz>b`}QP@~!f1`lSzMBFgN@ARIyy2pF3)r($V zQ;J6jMK4AQMXyJ}x3Vc-JQ{{rt*mWg&iFN)U2GTKz1*}-JVq!gs%xngkA=ePE#2zg zeDF0~F!z2aga*~M4m2-p%9(}s*gDb6ADT9c#|eY}9x4_+t}d)JuPZ&U&xG4C_&pfH z;RmNMf89QVNdtP+sqSU*lR{W8xF~7y&pgJ;T_M09s#eKqX*@4uPDCHrf?$|f)aF8q z0bB&kp4--qGddl*emQ?&oT|n&a7>qXl(I?X}POXWiCZi%2VYpWZUM)0-#-BRTrxP0XLi1 zZ@p;SO0yRQU`l|~%xv?=9Rbl~+cvB|07pw?Q?huxa9&GW@dTKUQsr(3d6)AdcCBh8 zPTL=XA<0*8d|&(yj{_CNS$29@l*)N*yXe6yK-PSjggG350rvR=_^VsDXWLn3AG0HC z8|)mLQxT?0R)Zqcv&H`nf0sD^iU8%9f5KnK&umH*PZav5z$$xcCyv%(@V~6GQ{RG7 zXtjdVw@hF>erVqbhCY30>6`%8D3CcXYF4X1HVRH3I`q|PKAVL32sh3KivOwW?ACe70HcDw=M)t6qU0!f!-|m zpRA%<=PEiNkeOx0aOd0NX57j372q1s;sC4{e0Av1=`)9x&HjI5?N-RS;r~ zz4d?24zrSB^*pJ|{rEc9jyr6}Q|+K*um;YHF1g}KLc7OgI2RAMh|-%n*5W62;wdar z9;a`)d%VrRDMzq*&(^(F#|?1TQs`+mnoST-fkod{wHu#+R|w;vBS3V|Guy6Q!9(?+ zC1f1151r0pJI786V`zB+b0`3R3l4RSnNvD)tx`o7NO;-V1(H+->{x?(qt>D@$w2YQ zRciU#Nz1?hc55BlTxbQgL!ZR$EfqXl&N_Jovze)|l!NKDO_0vaIRV2?mDdt@1~76K z8^xd_K(<-S)`o$rhtX^CMoz6+q*~}#sgTm_C+uWi*t|uP7e~pJY84~XNzGE5siL^L zs(R!4r3VteV(d(P)u!Ea{occuw%-Qh%A$mUpJ985Ltx-$)ows>h;wiS@>Yp2F*~nc z#Dk4iHMlOogwSZ@OIhz_J>c#pE8rl`@lOOcGdRW-aF6W$C!agUIjqB7ofDNO&tT|KX6=vJ_WYe`4N9w`xIiycN|jovNxpk#)hz7@dg$Vi zSrcLoKZA=mFsA&!94ee80Efy?9Ah5}*j_hRpZE7&3UJOxF2=a~rjxg$%z>TTPFBzP zBHaf2k%p=U6h1Bk%RTK(iVFn(GtysX(OZ3W~6=-X1M|*pug%IXnGo4P`Z9I5?*Z`L$DC?K%1>ETyHKfZQNgs zJ203B2kGI5mvDfoOb>vI^FfMAt&}7z8xS#`*5OCI5}6r{Q@AOzdcm9}OXkj8dgv>E z(BJ>_MLAY5{QT70{tZlh#g^@~b}n!JXRBt%4vrhKW#(xOt+$J3z~1|`r3*M!cKa1< z243%g)dx?n94K+alsbpw2?r6s4-Vt2cw9>t@mbY@AF4318TXF41#9{1v)HSomKHU+ z&^I-_uPRii!H^&$#$@eD-I`c&Y}1}&06N{Cc78ZRFJoe}5+h{beN+_`D%VUb1aG%i zZqa~;(rB>IJFf7o71pxi(u$2+D!{k*)uH)w=PX`4BS6L|lo|=G6#xdJv=)AuUl+A; z7A?u-O=szd{&_KU!K$PV_Z76EP8?Qb`?}O#Zm+%5_!C`H&9lzdhvyH?9UK)Br-uuv zwMm10i3b3Eb3^PdLA$Bnn>6B?@Yrq^NTM_T&_R60`CsDw8_WE19O$)wBfRK)4}T&y zn+uCI2D%6KeTLuT84UVj@I9N9S|u#5l`NnAfX8UH+5nBFP|c`0UIDTHPb=-#@%3ZPIC{onmBG&ND!rMQi-jAo9d19h5NjsV#X@5NGwtn z7>;v$^VAAPX@SRKr{D(61_FTJLkr7mY}(1{biXfmi|Y2Uf#MQor= zGFVqKMyH2I2L?KkFREiCk%|D(w}2<9tjbbZk*!FlgBL2=)WTe~LdGbyvh`YUT&he` zH7(`vAPsGaS+6MNuJc3O;(_OgsoXkw-C+uaeL*&JgfH9975X-0HZbY0Y8~WbZfLoJ zTE8Y1?q|(|-*}1V2}O-9umAQJZ)G-@mv5xOIUmKtZ3bas*mEOXu{sLCJqV{G__O~K zJTZN_r}hqPU^pB(^{-a0nUfUR4gA^NVDYQXGQG?o({S6mv8D8F33#;gT^{XH^#)CG zL6Njjs!>P{Qra4|I|(k{O$Tu>xU{28Q6*EWCf1HWa`qRTjvsB`4>t2tw&TvD+c(xV zC)){S9iCce+(lsp+fi&|wwq0dXydkma;1q@zzZH314o~sL}&fBXutgqp06v?TH)#i zUJ{LRC_8p_%qXy8slIq5UV@kXf`?-&;3#u6!aiBAC{b64W8v*86>18xB;e_X5Vv%zf$4{S6};m7~oUOZnYdbL0(YWf^B)xQWP zaDLR>itgY_aT1Jp<0H1H0A@7M7alm*V1ZR?k%Fs>p4*qFg2$b}UL(xp|FJ#XVXw0x zP$e8A<*~0tZ*bc;-r|MAJAZ%5(Yyv8-uwp-P6GU1ZC$PCH6HXvD7G?1MLG*@`h{mz z+4B7J7?na>KpXq=)JAEs|95SR8F=#MDp%Wb|7&^r-=A>(ynudQbNy(t>zWxm?zopw zgC8~4&6WeL-Y^-=jV?~!t^jYi%?t2|WaF%EcsARH^N7r5v)F8xN2Jc9>kxP)5RSv{ z;BmkG_7gn73uD6vv*Wsgt74l22~HT{*(0L-8{zTuF+`QXn@5GsXtL2S@UWNcFdiV2 z>SA-TNpDktl||wZ41YXx3AnmV09$I51#}m7Xg55Rr!0ZD0C4gbO3Vc`CfE=b{&)(B zUQ!I3pM3y!3qV*f)vGT*bD+#)$PbKZc!!aThcuOoEhZhv-=+!ON;zdHy;l)Bx?h;|W$5IecYnyo5UT6%|BMbwTalRLS@Ue>W&o)(v zmkBSoY~(1v1j>9jWlIDbu=B|6*jn&v`Q_OkZ`Id|ZsK-qfVh;|ZZRJ;fEI$?Bf1SQ zjg4|}U>??&^X^!7T!sVs|BMjb(Eh=kTL0CyZFEKDMr#c`|JagI5oS~rE3HNjA=22g zzFby2mqUp1)~3)=QEr52(U#~<(K}LigHpK7Xk|&TkCcqk3is!mWzr&>kufkPRbhrU zOR1D=6^v|spH4pp}2Z%cFcj?Z4rkeoZ#Tkc2zcuCZB2qtxz@LEfi zI8-RQy3&a>g~4I-}AU;hOS?EU9pt4(r|x7=zf5r@P179m{IvW{!wjjM@BXo3So zPVEKAqxoIG8vy4P-EAuOSO(b0Ygj5AHp11*!@hpiuJ#=csASwNdRz;vxz0|&aI3|j zA)QLOXdx>K9{`sWFxJ6Wc>aH6u(%MAY_QJZ?hP*tu3x|d!K^STjj-llwB8%>*u8`V z7HF?lhPnTmRYzTicjC*0S6a5dyG_2McnJr-r0&W;lG%L$tT76t;^I7}Wy?FF8tifP zg#FZ20tfy;;feTxxVoaEYJGM^dPa73MrK9!`T%x#FEM_==iIS2xf!12K7dCo@EVVM z#Da&jA8-`w*JrN-ikyrLj>3J@a1i&D0dU}F&UN28GI1twZ8b6$wTYhl7`Cg#BvDA@ zVDL-nivxIijYSFe!Wx)(xS2G<%_K7lwyN{m(sXn$wBkS?zY_!4YPk_n*W1~ z$_iBT|Dj5UIXqqmYWbb{^Q9f$5DkPC?Gi?8O9j{2mq3;eWVf=xoaK%c@U>yb_S9O@ zD;%CF7ByXE&R=MFxwZ4l8Bf5=^JM*VcwS_J=S4-*BBe?L&x`s`o7)KvLweM+hXLI4 zq8CNJ(B1We`k8g=8zFIRqrx8&dxjo3NWlv@gJFLkKSM5!g_fL7+q?kIYdagfw)Gy-LY#!Ji(^0}Q*-S}yTMHz3(#!MHBK994m#1< z4O2vGnqC2@&Rt*Cin*-+k}(s(>l3%V;LL`No40P?b?0ZzDP^^)D!)7%tdJGcszT?k z?m>%cV}+tM>t;8^T+%+)Hr%>|gJ=Wy*hNRPyGq2O6>&mQEj);qi&udy_hHldyC!Zx@AI6;`^GPfHD9tbQIBz+ONDV(8)P45c;s^>TT zZwCOJ{SRhf^Jo2MIR(3w*mF9E*k%3X!@d5i~J3eA3z5~SXk_uk#-8^{$_cE3$%>~?lUXT_l zqdU$SIgshj48ef@52Nv3eu>3gQUWh$0@(e0rbJu9lrT1(jR6PKL%t0>Y4AK2_Ub); z6(0T*Zu^`$!JJw8zo`4}z$mKi|9~tRHyV*~)#t+m6%`v`MWh8q1$|;blqS7~kV1fj z)ZO%CXVV+$A#_NkBPGFtCxA>5Rz3(`IyxDW;>)`iscMXxl{bI^``IzU-~y99n}h*hED(~7_FRYzaw zDo6aKyr8PGs(S5=-OG+JwM=dCx{dHy3D(~Gy^gL5fvwBOFU1q22li(e>!S6U9h=I+wnrDapmUGSezZiOHlY@TIv9-5S_gnXZT zY@Ov(Ie%(Q*nES-yA~*!VcH08BW@TCfbQ5m;8!>+>uzRZU0`irc4q@!Wr>ymCm8L^ z+_0e612F!dm+>XVZ8pB0zU@d0dYKYos2Q9m8QMnv$SwjDuF)ho znAndR={@atr07;?J8rk$!yjP!ro%;oin4)}i=~J=o^P>o%h;I)`Vu`yB{x`(IFn4nOHrk|P7ei+2l!|mz#!>frpUy1%eD@79{3UmcHCz9iRkROcrJGWU|t;(lU)E#spvGJkc$h zlw5$TlM|CN;{hbN!1Z~E^VX!LrN!qZ5KZB?_ z_-0a42L9$nuFr$yo9Xen? zN+eVJTmhLn5~jp+v%h5iz4Pel%KY71Hy)-E-_j(6CqyO2QQTH;m@Wz?FVd_3jA}p~ za(Z=Gl+M}U!T&e>BJ+LMgNyt#brf)xqQXhr?6pd+8!twSsr3x79P`4-Qi zL#J`Q)45*8f0fVOmv$_5-O-}6x%;x-XFjEV^eind%3oidpPy5ZlAn^FkZwqbHRuic zc&fj3kS-c_LWsy*KI^l$25ol1T;9{nE@D5^T@!ZlekD7Z2}^(NU1K#2=AmNwGTWyM^6sSVOKT+7@>GlGIUN&boG9*EKs4oZz*e8QaV?X(Lq=AiB4Z{p zrbzpAO_BDli)suLxh|bOf|mS=14@88{Ba$+k;L`VO_q<~W{3eob}VqUV|01k0@DZ(0bSN+EV^}WLf756Z{CA*N98k^uZ{+7k&8$E46vRZ?9ZnDC>g_I@$X% zI&ynp4LECTT;slkYfQ(mcNlb=nW{Bw%i(e=5YRV9b-1 zsSUB)BDTThzv)XyzA+^cj{Sh!)QB!)%5h(wa!em!7j4o3k2vefdBk)~mrP;@R`WWr z6ibULN&&LV0jC&$F@p^nmtaW5HvKWy7gLX)NNNnMu`IW-ackJ*vpRa2JF3|7x{`u> z;BhToBM^Ckk*;qDY_P1{(HEGebOSqA4>xUn!M1gBGa)!8G&um+6=7?_D@8IX5U1p9 zQm156O3o&AN+zWgY*Hnel%hjj@JW?)QaMK!ypcRjmfEnqHf9HYI^IdHeu-g<0_!iq z<)4f%hN<1V7-IEsD_f$j4b60%bt<{tZOl>hev0lGv#wwroCp&+5lQJuDKYUesc*oh zsJ#ZPQS>>Or8PgfG)voa_vzxnE=vFlE>UZ}2lbL!r5izaiH~e`-KDn#z`I&dTgmXZ zwKPnZBIzx3B))NR-GzE=4x?iY^y>Dn;6<7WAY2-NaOqm>vO&|=IqsNeg} zq3!!O9-%lR_ZsMPZ`KP7B&6mCK_rdzi1zo~LnbJ0kmj{9Ba>b=Q4s2)2u7vLK%8%m zSQs?T=S?Q4GV*X*0kG54!4(2e+H(JW^G`^a#fV_7^$oJf-mj@jeYs8QGnUU?4jh$C zJD}iNNxhn>&aEt>OePI*`U~<4ckFEXc?RGr%&C@q1jYBRLi>*OB_**nxA9 zGolusnge7%NCdIR;l!xA$%SB2158{(@c;H7! z5Bxpwz>g3g__Q8nb4$TzHHP~VKlBympoi$;LIWJE!g_;f7KRwWF040zVHjeNEJKKR zXaB((py6p;7B&$bmA$LM3Tl53sQm~@?c0x4q5fTsHN+rX1HvfrMPT4>0=6$1V?QioKP+QExs1_e;)1}xg4bV$x|m(gK#=rq1Bg1@Ad|J@ z1eEf2n83}_1Wt$(2=NmI&ktQDc=WqCa=kEe2ifydZ?QSC>N-3Bk^n24>Nt<7MX}Y0PUWQ$hsa?ihbf#0B zkJp(_Q4CihV2Kr=K3rF7Wegc-I6qEqF1P})dk_b*1U4W@9v8#rDlbBTSsNJ^9vTi* zgKj-#dhcfo*ai1V09<%Rz{`KrXydF#Sv|8fbmjCOkuO<6;{^HFF@uwm>jlUon{O7jd0v zeY2$!kg9yp*3AW=t(yzA9ivF(8XG-?tld&r-iwVrqQGt2KULSjY{=VCl|%5J#N5Qx zq?Cx*=(Obw1f|vCK)i%{W+%l5vAK?6qxc{;A%<;w!JLXE>*j4;d>Ud)tqU=2$_)D& zl48X*oNoZy)LWItWHws>0Y!A{Y|ZF$hm*u1@BY@W@rE<1p>C_SEnbqFX}Hb=YsD{fG*FsG&nC|GNV zryf(V|?qTXd8$0v3v@b0D~I4+5fhNJ_`%JgZj zx5+kN^or+K;~`=Shb4ssQ#GCkF75dhJ6ZRBW881t9JM*LkfK+O)YAJ#!IMFZ1KeS( zVbkp509!U&x9IpAL~T!|7C~p-A+p5^(X1$6%v z>;fFv_;me`5X>lsGCus*2nc0#dmmit28VCIv=@Y}khMebKv8xsD9HnLDi!eet^*g( zr0Q_kpsx@%*ch~rsbQ*%)|CK4Eur&K@i9rO#3)9J4`ck>q8NS3*-%-~Vx6(3v*%ew z(BfsIt8KLgw$)X{E0TE1JaMbVvrBQj;+)d(tQu@qLd4=?9Q#KfPzhPw=OSd0j=@2T zU7WvEJa*NH#l_u>SOi~*6tlQT8ax^KUbV1AdbRt*yW*%t4ZRn_Zuq#xsWO6Lkrtcl zX$_Yp10%!|0ro|ymY!V(ukmttj2CL@N^T0$frVwgi(_>a@Uu!VWhX&9aOJBK6=$(o zB03nWU!Ag)d4mbqs!CI|Cn+vDDVTPYVB2voqGdWcMUiX4yr%o{rsyiR(ydkZzXnm2 zBNXgN99hY;BjG9lYE?HPDtUG!j-GtRSc94%dU6aj7V7HQrQogG;t64+R}ec1Sr(nd zP8zu_8eV>&b~l06591>muX8mPe2m!VuRNX+B7@061>0+PawGVb`H02__F-{5NjD0f z^)Vt^_z?t4=6YULsN+s%dpSgv(VxJo=a+czq{{5`z9bkD^_GrIoMj^%nJVz$ ztObOlP)iOAJfl!f@^&EK@i`XAw@79j+ZXlio8XHII`4Q!{RKqvPoU&gsVmc0Oe~ty z7p;V;%-Z6$<>1YeUq6xh=!BIx%rH+GW=P57 z44s7;Qi?c3XJLkB-dPA?hM(8}2lje&H!M0P@0v#zZrDNvc|N6J4^eRC11red7h9m9 zdaiHm8@u6;`rja;@avwCI_IvA<@C>JJdFFtly&HF20hI*rd20bQ?#|LY)!$&jdG?@ zM09jaRLshKtG0z!@bQEcjwb}Ck=x;fYe+cZRL5|_l>D^)F%9$Ay*6yv4D4s^DVnd6 z&4NvqPrk~Zko;iunAlfW%?g8j_0utM)9JBw3QiOOx!!wvH3MNz{`^E`4S)+;R)ayl z4#R}$TA+y!CfQPK7Jm;te;^={c)4|q( zaso;Ww^2)XY=XZxYppM{kHcdOJ-D9zFuDGN!1kcDL2WbUM{V13p89N=4| zacWU8d~l7+$Qr{kP0ZY|3HqQ3+`}uT1u_uUlwwSv=y8zk-jK^s?_^dVJb^~QO`(fv zTvmskt4BU?FtIg*VjAc}mVvNcw}L_j7k3f2S_fGftN~&cfYXwHYn6Y{tl*`lYykeU zuL$_t!fb(LXw=@?4^QksJw*=oDe#*wi1`+p#Os7VIv~lA_nxP4sDg zqQX22*006#2QZBzT|u07#|?KC&i!`;m&;^*Kp|^|peaGpXne;LIHG*DOlX}wTtjoi_vz{+ zWUdDP%laj21w|=>bHTQpOR_WSovN#cNVw;84X{UTACW;nwh!|P^B_P!>R)k7V}1(Y zj}QvPM*=Bq5C|#S7I(b5YD4vw8p^r01Q_^9;7^k9xHYLYm)uZ>z;@UUI&g=e3wLU{AK6ZsF7%hZhSXkF^gi7# z*`o?JM0bOEYFeqNZh7RRt-{06{h@~6n~*`b4;J6acfh@e+rcrc%5UFBoEW>|B)QW_eY3~TzPN#>Bo{DyjvokZ z{gZe!PQa=9#`q2nu(LZ={t&3Qh#6NN{##m!vBU(|;?EbOzS*(+o6>D5HDOgj8(z)% z*X&tK1EsIthUf-wh~-=cl0c*6wn-yB+H#{(2w>af z8}~Uo-OoO#30<@(Vu>+?S)Ltn5aM{?6bF60;J_GW7Bhck@VuaTF;kdH6kWL=G>qC9 zA;knx&=x=-GP7;Xx^)yiIyoSLrBim#toGLde4o(RX}3hsOpr1hQpQH4^r=a#;@D~Ee%96Z*%~wuQ>a;5t|04H@iLj zN~Q-fQE{6ix2EJN(;Rh?J80Yl_tGD!%+^OO)6o`Vb;^3R$ydVUN5kY_QEGVAhh8Io z=-p-SB8TM+nmsps0W9ajwM&oU{bw{$X?dE&iiGln3VAlq&3|Vy&vVR&=S{ycYnkfw z>WyKWVyjZ#G90X|mzKH7a8PSK%+`^o>B|^~U*FXoG7S4jHx+Iy<>5vM*h<4b(g^U8 zE@oaTkN92C*jK2pONShM%?$dwH-AZS$8ko@yVX2ijk2Vg>iS3RWJ}tICmT327ygg* zsF;b9yW8<`hHrt7RkoOWO70LSxwwO1V_3)Bhn3YF<*pX(7NDP4o>1xJe@ZPKI0z~U zVw0U%R3NDKC%c%#|G4fs1T(ZQvN29<#(4fGx6D3yV`_3GgUSYLH-99=$r zq=Dd9@++PP7`=@^v&wt9J^-hF)@Q> z58qT0G<6u7GGKHJMku<56rhq!oURv(hnIx4!tjz=gqL2!YqdjID+Qtv0JJpaj9T=NMjhv0<13EJR`~c{U$baO=qY1%dRBTiwze5lVtHa&LOG>sY}55E_yD&k z4)CD;z|DsrehvxDfE{UfhWUA6bU_;o4!f)K^Aq`X5x}6@kN+bPH8mYlj$&a**A8AN81*q;(79Gm< zexSfYK(K;Tm8duwqLVXmn>5xB#IeGe5HuOTX%(7mDA~02EhmLdt5jxAHtp?FC+~}$ zz@`iO>|Y$9MGB}}QYWb?Axl?{oIrLP@dj*J>j%ZoR^>e%f>|MWdi7ewK(jggg z9M=6E*pTCFh8&u^L+pd|gUaeTYTBQF81dR)g^nN6%%(|bG$Se}> z0q2R(uQixi!IY+#Y+DNAAlq7xH-TQ<1j^e-?QHLpEkE!auq75D-a1YAtrKB}TW61C zKff*=l|3y>grlOkdF+qM0a*udDula+!xpq~Mx?t2EfUWN*M~nK_E(MkfXHLq!uXNH z0ZEmX@`Mzy5*3e83tq=liUR{`u(C>drI7QYyi%l1gs&8pa|zL{d!%k*FMb3)V^bTO zD|&-u9ot<4Qmew&1Q(eUebJ(3b9o=9fS;T$7^#EVi%mplyQt5W<0SfLV)K zx3X6f)_Vqfz32F#mD(0{AITPqRRD|qlF)WKv|R-PcKM)HG$SmY)RMvS2j3I}O?CaC z725)bq07Z`{-DjoYjsdqE5%8a?F8p*)y0Fh952-(eyQvaqd0cwOZ5muZe7uXR%+UQ zrJC5^ha`v5fF)q_^ij@?qhgZ7fpmH`ch##A1(*6}tPiY%({58!*fCqWdl580m3 z@;Ejj2rv~O4kzCtCSey*fYtnS<+OY6Dn0~|XMHHhBb4|sQ4E_Xqb_3rMVrHom_Oi} zxY4b+K5}UZQGeNRer(cGNwUgz;Pe&CYFq0OB)x{>Y&a+x9czSKRo-wN0Pk_Mp`S(% zOLYXR2S_?H+wea4_Y6n19qVyAL)K(nsQUoYoO~e9gVBJ(fXUHM^O8h-bC%FW2-58$ zAl6j|jRP9T9QZN!Bljexy`cU{+ZQ!rnsx*F4f2>?--y26 z9=QD^5%;~5qv=u2?N332$F=mx=8qs#N%INFN78%}{K?HN+Ky5-Q}?l!E^kJULt5AY zT6P%vRd))SjZ3Nv0QUFJdISXtU>Tw4CeAw+yA4g=j(*v3RBC^;xji4+{{#kXh8&Kw z&8K0&<`(>~j%iRy>0T{ch<<@K;rAWU-0!;kp!L4cIwa0-tY=5QkDjwN`!=oyH?*pK zAhakZFrQN8jAv;`OG`+LPuHgy^dXC0TQsBMV8J`ghgXw@vZxBCFtm!#LwTGzvFV+I zU!6Mtd)-lri%}#)r-W?i)=Mx&NJ?4R%s#-TLJhkPZ>vf7sn)v%D%c?_$PniE%u)2b zFvrdwW1$A8$Gy+{c6PSSeR0PTzNFnAf6GP0=(;Lb7pQ@WPP!HoJ>w4(-IJ|0(JzF$ zclv+?sqUS#DtkCnEtJ`#tc{SM1jKND4*Lk31jYF}`dZUL4D_Bfwv*F9^*~Y_kFSlV zQa;Zct-3B=dIuTG3r^lnJOrUdR}D- zQavvi`e)jX8Y}~C6F=F2gT+QS_v>YXijN{Gc6Rg2SRcq~v9iKg z*Zx3|nT{4_Djo>)Wqcs~_!?U(JYI??@=_h&1J7DMQ}hY0$;6RUp`0slY@yPR#{;v# z-kt*`n!q>E-U=rI&%0Y?n6AAD&SSOKWL6#(UIe4mDZoodY=DYR&M3eXUto&rs1?qP zncoMN6HsgsQcN24rg=F}ZOJH{k_?B&lx|L!9-@+iH zRKS;;;K|I64UG*7owV%Lpf@P?bC+ppVJ`p1&qMCvuL4itn!Y|xYWl9LDXf76X11cf z=d|9J@jNZd9VcmMe+&)P85=bI`SW&!oKA|mTYj)d(9c|O^-_OruLJEPnB^=fd#wzg?%G+nwvLdYk%v97i3*gxkKwF-jgR>^c=LSAzv93S9U8g)cc|aY z7VYdICU&H70cXqW@P#X>(+s7hyK!m z2BcOEc3qSDZ=36jUCy=LL388lbPg!}=PcuW$yB?_t!BI2$#PPMa<5Zk*Wv+NjN1?juWYGV0sm z?f{RQEuX`KXS6c0D~eHL=?_M^I_D**`P>aF-kS^+s44%1MN8Z(LG7>U&Zz_0|A1vL zR-^ui+0^nW8bk5*vEdRy!MY!{$2fzol_Y)*t+lL@O$i%9ddqT95Zx$AT@;kIGA3Y^ zVJWe4Ug_p|e}dt1Z`qq$_!@_*rxf=BM4K{A*_$d$OA1QT*Q6Ar6vZ-;On_m2#7xSc zyF=s6j*Q&C99OnR7HKBG2sN%j68(A|!iVB&%2cPNqyjZKWYRMKW$qX&KjQ_kua?ah zCV}GS=sA_)k{l6wL;F&P=C8Pn zHGHXk6n92KF<<-7# zSx@z*n=Zj%KLh>NjP=_xG2p+mhy1ce*>aG|-2NH4ewB5+q@X)_w3|Q*5`fPnCdrgc z`Aybj;(}0Wkzg2@Tkyuz$TyQs`KAJ;mF8bC*7Pezo!ZD70l-6K!gGw%T&H^$cjL5&x~|jxLbq%px`}AJy?p8Jlg!31 zKS57Ye0gwQGlW7}XxVG!S02eQv`>)(83qhw7?e3LY*n1oszu~r=g%yi%gg3f} zych4-3N_-yQwM_!!r1}ZpT=rIR{z^s`EN*4;j;dBw?^J%_?>79ToarR0dlBJF4X&` zywBM^0)>&c_v2rHFBdG?yV%UX{Sqo-Hg>CMdG`j5$4ttY%Z5y)muR-l+ZnPqmGWkv z#-~r7ltK2oBf~}zZ8_T9uh%}?X>^h)Jf6Ciu~^-jXQde?I@)|0s~5F{D@CQb&O+|Z zKH9Z7;L&Gp|H};%@_%0%xscT)*F@E2Lu$qykltXv91B_sRladX8G;1O#z+tp+!k@5 z&a-toQijKd1+_P`U%^%L2UHJk{u6TbH6stA_pOEFZ>FhCo$)AmV zqZ_|%ggUtA>jE1Q1&BL-XZp3j1dXAd5Pj2(u7h3dhk8j*&0nFEZzH6lLoY~Q{-)7{ z9TL0!+P$$gNh+$kaz;?`%QS%lr~PZ@Oo~0>xvsKuoe%V}t|EM;fz;E^E84rbVb;t= zi)Q(D+~7GD_2;&+htqOW@*wkLdO~_i0+UFQS}_qTRz%=0AM%5jry)Ke!7!^~(cZlc z4SRhcasMaW-Ds=za8^oYQeJ97Mt(+4E|X9F=DBb0yYJO~L)kJ`G<%|5D@7iZyBLgIMNla*T7{wkXa!`|jk5d@{4j>bQnh0Q| z>QcDuxv^$lU1d{oUB$k<3Q}n=x-?Nj;JMA7;mpLheU3w=y;Eoym64mCmjFp*(0}mi zTf$}HSVOL@Ajo089N$}l^Pv{sTS0dB7M~C!9^6r?JHUW6_&ehAj8p^8w|#OPJtf^# z|B8Yls+~Q}642X9fL>hm=Nx|CR9cqe4G9GraHfoq?%=qFKnCNu1)9Z!118RYz3fOq z3v(J`Z&7d1b6mEwH;lE6R1>1>(a)A!R30-Xc+7+gkC~lOjl{T(uV-%+5=f&-4RjWu zJT@;*hwvtIu`oZRju54~!17ZZA zd2}NvX+`xSsRa zN0HZ>I;?{+5&$*1!eEC&CVE!SCFtUY&L1C;F*m#L=$gio#+vhQoui7XH2MA+^Wuhq z8FgLfUn_!dfxBzRp7r4f;vUO553acGg}{$2(Ba4wP9R(9pW`%yzoIKbn@LL$_$@6?4#KlWv5T z4yy_)T9O_X6BG`rZ7h|}m1(AObijx?1LQ6$iVp0*yKU>o8&6T(hd7gDfe#&K7Lw4S zr#t@&ll)b4pn5l-&6>!0&hx$vePbHF29MPjM9g?eX1+R8?y)krPvB+SWJWretr^`4 zvo)jJh_Qlh7bN-*&>bZ>-ghyi2dNRV6Cfx=P6!qbxp`2TOj(U)+Z&({MI??q(@htT z?v<;TyGXzSR%N#XWjdo!&z5f70clUZ;~0%{?fHLs8$ zr*)^t8%_>LeY53NkU07$=$&TN4^!iXvjNIxCl{leIQ{chUwTh7x>NhP^(GyHlk%ut zXJDW4sk807LHmI&0PO=n3YF#4l3g&v-rxY%Ga4ZUN%V@>#|1B>*t^`ysm;-zuMC+t zK6YVjK>U=oft5=R8S1z0+mVH?V^BY;+H=dUx_ujJ*Dl<(vPrcPnDscf91?KT=TZ5) zI^?6}{IS-9Npjodvz#Y;9eJ#H-uEcHj^ysq_xRXY2;x+OXreZ93$u zr7w7({=(~s*WhE&9A1ocFzfqUV%u(40Z2tPb(yeNU|C*`uuRRnk78< zP)MgIJNv`U?Q`%>yc>94W^|91E;XY8T6%^VYn9<(wGfuUP%{{OrDp3ME)nNwK({(( zfe`S-huqnAUE_(MfZad z%WpWiyGI5vSE)LK6zDHVAu`+H^MO6kV6_rmQz1Skc17?OoZ?H?irbhcnXhsY1M z!e)W2!<`)!pEO~{{v$pp!>#1@4c}lDGDgY28l;)<=v+G` zP0{DNp{F?qt+L)x5>llTRgpBl$17-HI#-(8-@>9E4ELQGi~6J)f$?8yF8SAv1)rn~ zOl*ozwnkya1DoiinLEQhr&Mjxj)PF`y8$f+v%5XpofRQEDIj=35Uv^o=|dg)C5{T- zZqeu_JgM_ee^H^{{}UjFcycW$5U z<~2>No==-COR(_aUi_sQJ*uTYZHA`~7P9!hc}(m5FL^Js&h5jG8|Urw z&zcK>z3`8k4)i!&y6~jow~hFifp#su3D>*kCzmYvhxX~v6R;n67Cd?q%vu9_O55R2 ziff8Qc#Ah~%U16bD+_v5Kg|;t_`*>XUpY!v z`?6yiKbhaH-$Ln2C?VCZRTT}M)hX%Z0PVH+V35vG49XB1JbD^~G9aD5CX)s&*%A}J zRbay3PMGkJ?A0j~-f{}s9HzpAN6%8l=gFz?&^CY~ z)<5D@sqlZ|#sg}$J7L0G_KB+uATZ#=RJ>g&l55X*B^>xEY8-fA#&delmFZIt_*63G zd8MV4kY66KF>4%|A11+<7q2NVja?HN9UB)NSsYjDOBYoUT0AiS-?I*^M;#8dc=T>V zwu}qE+CI&2{C|b{zRUBuQKPuqm_gL&O*7xUl!Kl{cl$7Z8nZNjTv$gH;01hyJ*>kM ziz<#OEn8EJCmQWbpGgD4`w<9jAZ&N;hGcH&gpi0WZ~HK34_x}_W5Aaa#C5jkw@(L8 zSabUb`(+lYA}}tiBG{PiOJ14u__A5+-YNNr`ShAG+kas$A3usTrnJoTOrVx_!E8r> z#msK*=z;eEoLYh0jyQ4RO2RiLx6f{F-(^2=PRZ`L$^vMjk=l-^ zI3>INW1L|B=5R)Z-;Qeo(3NfN+dtQ(w?q{ z#RTY+ZT9s99O@LU$%CAne31aEBVsldN`0F^Y6s^uGdgu_;$$c<^!ohFu#BWFrn=0Z zwzQr&LwV1_H8PNEN_)LPX=m>^r<1DlP~iV5tp{fIE@o@w=Fp6D60#Q~>RIcRSD2TE_(AF4Yv_A_kHv?QQI8Yi#Y~76;aG&UBIVT>yn7F7^ zsYa8$MALtf=Eql$TDxX_u~au_Cp*f<@&kI@su~%m1W`Q8?-usoI>kn~20Xq)@(to_ zbJ(`xQyhg0J+Z(!TZN1Is5AK5e-Onj-(u<|n-)5jZ0Z(qp{bd$_t0~&D;`rBl|a<9 zTy!#|Ys=Cj!vGd42LLN5CptyNja*CZ~zVJUj)@KnD5FHjmT?0BE9!CioMw27$ zZl?Vh+`50Sl5__*Cinvg>rVaTqj@se0SF?K#ZmIP6ZnjejtL*T#kmvwjjKY#0>eVG z%QGvON;f!nMr_k=t=7mZ-pf(shUx<~JMl$n&NO7l=NROvD=EH04+U(5WyG;+mK>|= zurNXt2YnuS?~FFIJ1miU;_a^9J6AMc1D>zJZoYD$jep>Z?;d!@jm2NE?tB~kow#-` z0u3<=Z$2nPrdRS2+ z!#R7%0y-RxlaYtUi+NZv(tgSb0e57biKlG5iD5O^qhS87UZ&=HQ?Qeoue;l|@xbkl4SVErEdZ3P{XMBxe3A61VPzgM$>ug9i7^($`F4q@dd2tv<<3dFjzDR&NYkA z^=$U9e~`jlme+amOI2cBU=2i%K_W;#S&O_Vo;~?x-d^Fs)jeS*o046#h`8Mv2GDT7_l6K+t$h&YwbZHccF6ckp zKXEz3ym(`xF*!LYp8Bt{T6mEyEYis(ggMx%~#%LsMn^6;KYt@ue?5 zt7Y_+8MsaRI!@xdS|_U3tFw?uppJVSmP!MVSm438FlZXoja7IR6)cwOa#gS5XahEz z3>`_h*ptNvX>`ySwwc~=E;^;jG!*zN(ICEQGUCc~Ok9zRPldN~6TZN}0)TSvkS;#3 z0ZoOHQtT(90LAy6a})C_xGNRxD9?4v8YA~HqV+fmKnCtx^av)cpx766bVU|CnV$e^ ziD+c^Rq|HYTA1?;Oj~&qXe+Y0+K4L;u8r(_d21y=hP0HGQsCfKn{l_dj)5?T)Lh4x_%!u>zs zzX*3^$Rf<{VaFf9s9;BL;ffq1e-8oS#r6<$PDoKO{DJV&3j_%lq{w%%J$-J6r_auJ zb{$;5weroz;17(unQFPKMQ}&)+ZO06qvd09ix$&JU$D>)GA0i(o+V=&i~Tc9+EU~` zn8Pe9joOoyotc%9NukjwNn<4vf>E&tFmvQWJ)cpMXsDQey?%G-wJQV|f^b|hUffOp zsJNT>Np$?97AJhfTo=$#XbgVCTauNK#G&>Zx;^4+7!xE{uKb|sLmi_BU<4vgfk2?! z@NH^WmKsx!^p?}zo{>9^Nb^4KBrmz!}YuGST(@k&*(&~3Ji zp|+g7!`sB1yrr1uGo$S^e%!RcqpMBK$s5eBgpP2@Ey&CZ9DN}(uZzTu9&=8-BNakh!+q!b-C{!2)+ zm?*Bk84|^XG=B>mm}X8-8s+EWjdF=YU8L^Y)*abeRQT10wzY4@MB#a`AZ_61ozjNp z!?LusVR3N=()Mh!t3)@o^OOcQ8R@#pY;b9gnAzaMoIj!V)EvlcKwH%%q|9$%lhGYg zxVk*eK}eO9=AeEKPIC}a1!)d&`3a?mu)WX4Rx}dL0U|5@Fm27f2KCF$zhl!C*cMyPRp%5U(hc<};VrrpNj=d>2 z_;9v;wOxlS38i95C>2XWsaPa-$UQ(G+kVswCTaE`yeu*>$oGaqLnv z0bZJIJ5P*V0+zl5=pvyJvN<{ShxW^ZciJp1e3x-}v*Q?^HWI_rMq+r{6frz@Av|pk zAw15*S!5D$FRY4&*~fC&H;;FXEvf@sSwd8YU}fQ`4gy*WQ5`lzOSo|zV>`Mww8SV62SW?U zvSO5nGfT@M*28vDIkU8ckPo?~1s#FyAcTB4v9#pOCMBm>QpQ~wT6@eQwOFvRfLe@= ztbekLg$o!s#-f#_;1}CwWiyHtW|lxRhA?fQ8HY6E34x)-H!K=j=}P9JTATKU)^h+* zEw;0>&=O*3@on1~T2A?2HW|5NXbChh(a?I47+QA{DPdDoCMBfcg4w3z%+eAmVUnRW zo)}t6L8U3V9JW?PyF-zc23$J=0Y)^jfB*wF*Hf6^ArN4GA=bsK#3}_NOtP}Pgb3sj(Y^xmNdG>hw;=*~gg5Bs^1b;rD@-ic6cXDqiBomQ#M*XIWRgg>6=ss0 z6__OIrj^3JQ9$`N4U4)ot@gBuWCqEonn;YQeq^`c?TL4bc-Oe{0o%HDX;htT7K|z! zBl=G$2TUBpVv+>8W4PJgG0Zvls$Q{CC3#uFs8aE=s<|g+O5f3}DizHtY)(Cdr-yx( zqD_T;mP)6aWKpR&^Bg-;Zsr-HMMV!~`M$7&Pc)~dLtmIYA^AsDj48SEOxByaF-2wr z?zBVLofd}zq?RRXO75dlG^ZSQlVDAO0Y%ybzf}|VTj^z^RT@;z{Z_JF=V;*AJXq%q zfMyS1&OMpy0(1v zX$S%zUS&hBsxY)vg^{Z&IdWCREyU%ghgae9(`cD0dPQoHk&gJi)9G=e)Ym7ZXfW=p z#Rg-w;J#WgjMXB+SfkCBLcXsVElGS|qTw%tve1~FsGl6ea+nuRra07J0<>B%pyiJN zEq@GX`6~de%>TgLxL>VN0BFJQNP#I71iQ(h!W1dPjP8^JS`M?sJr8e{(5+UCZna`` zt5tz+jbkIRL`z%0fHKU`8-cf=Dw8XCtNwZ4oybQW+Hx%V4RuOnI9H23&Q*n~@Bq%V z=&_iCB`ZvUb>THd|CHfeogP|gQ9r|ril-Y=C4pX581$;*L9fkx4O$)|ck5@xmy8}ldFShj$T2`d(o zeOi>KJw8VIcuvc*zghee9P}V|#vK9=KwGf~Tj$(%ZlvSG9x7cL7Nv5>adhWtv1xG)rOi;1T~{zMUy%a#J$(`E$k(d-(}tF61%K zrI;<*Tl2P1lJ%u9`5YiEJW5r|OLc(tX7*XAJNc#-t%Zt?CVVnVe zg40Lf(`-YzcHop%^tNV_wF>83a-Go0xKlNylj@KzHKPK-PZg`;_@%r9v#0zg7 z8QRt9ag(%TKNffF@HWdte(vk=+?Q+VCtFdNmM(6^NYu1eoEm9ZD}Xz6K`W8KGA%LF zD)5h?jv1)e~+dhf!e1q8eWwZi1zf3y6jA5{0mr3WBh0X~GhC9Dp3B$Xr zj)al!iQ(p`yy2k4AzTp_mb*&mwHB>}B(1ogTA>^9YE)ukLc8LO`bgsBRT(r5mF#ih zT4);=2gTy7GoV#kI@o|)uQP}u#7MO}2pQSPjz-lFP}RfU-hh+V)Xc{7y^9<9Oce?T zc-Vlq@SZBtJ8WU`3FC-N{UBLWq-WQtlVoOU1NfkB_dlgD@%cFjTfz~&y`k|3uud69Zrp`TOwUBmfKLaIIyZGt^^n3r7#q)djReZ$*W z%SAF}Ok8B@5@xC?;Qyv#Mp5f8*v9)6%<)zXzJZN5lAq|%R`Gl|kG$k>|85(1A_ONG zcL2eGaW{(ZRxs{ti)e?!5h2?fceX7{_6o6-vn4oAwC#8}PS`9V*{8&Hw1?zK7k0MY zZPIT1K)fl3wn*5VVAWx44xfG-HusKb)kO)1A6M!HdzsC!g8}XO6mJx@Zd>h8ItpQw zj>7$B^$}3IBceSg^sBVz6t_w2bntrAWqT5>#2ChVj$#FE43QoLteLuKTq zQOh8zdcW9=wUJgxq!Fd1kF_+Pe&^`M_o@#jH_a;;UpjMg(0%a%aLN`kk*283=+(i~ z{X>^fHghf-e}~V*0fV&Jb71d*J$KAz&pF4~aDvXOv*#qR4eU9$!8W{Y6c(Mm)&y+> z7Tp{C1^f~gPz<)*9HXUPs+ch`_&!Bxo-U)M92x$U%}xY35A4JMVkhF@e!wzBL$R0` zimITVd_v+Ou+!4GZaDZ$r}A@pS(wx7m#@K`+(?k7nw%4+En296EP{oKr+t}#i!g1` zM4bjEs%W1o!9_A_!9KM&<6yRN=rTXqSA@ydqF8L7LNB#qC!&F>gc*f~T}ToPREtuQ zb%y_rB(I)shC{S=LWmX^(;x~krp0|Gx29deqeRnOfi*2^nln{hX_{%Tf~GOC_h|l0 z2`<612W@tyO44Sc%5?>l5;0trX)g){O#3*QX&*>Td%`FewZ9s4Dlz=_cY65Z>-7Q1 zG8)k7floSQ|I_F(B@3QT5FApqp?XV=JiWP!-s&PS(FNbzn$?l2Nz@yXqM2|evN*LW zt-z2Ip9cA844LuyOKL(JnGMXw;*zx#!@U3fm&g;{I2QE|xR^?D8c#!hBGkCdFYrOV zJwG#=D-VB6T|%^xo2`Msb-;N^841ErWDjynbn~>QZ=J8@yty15J-SMbrfB1~e_W>~ z8G)xrB$MriWRj?rt3xA}M`jjf6fwmrvC>yZmjAni_pAp1*Zup8z%?Z6PzsOA{yu(&F2sO+_Lh^&iN6ecNcTqmN=hpYOcC z9Szp#Rbq4C&j|@ZltOV&_CXhZ$AbplV`m9X&{C#)kGO$tM zOOiWT@gj9V@9}U{(R-CGTMvol*&;#q=y9%`;P+H3!S6|keSZvoV&s#i#(|EpJ@@(= z+#{*t;S5$MsH%wO4>PKf21GB-=C&5g(fjvobsFeoTd=4)WfdO+*>lgnH}WvDL`uD( z$ME#Qa2k3UL--Q=0U&%}KZs<~%dk00S&3_*lK8*VL*6m}m{9B6+8*QB_bp)r!EeS0 zzMmgP@cZ`?`|i~j`c5~9L{`84;`2yJWF@_m=aEXU@PN6)vDZTe4B_iN#Gc{|&{LCS zBq(8gp?#+l(;F;zI(AX#hk^WOr7rIFgDy-S?XSrfKEQ& zg28+!EhOycrWV-GqQUP9%O_pCHuzNr@nsu$6QrX>_7)7{t0frC|1}h&`CqmPv{U-a zR&gk5%+sz6ehlIRPT{7#?;59Y72o-HnXHhg3h1&VQI+6$aANY?dmd~i|EW5A<%SLa5}hSARlcP z{0+Gt!0PbhEmaJ}Ki?oQXWE_@Dn=euR70{Kr!)hpPjgiqVX-O2`t7dtjmWpq)c zw*l)EH_TM*YXIr0TB%|147f&CYV)?wz)CIQtyJRBFmty_Gm)FA_C#L0d8nGHB9m8c zr4lAD%h6IN_GYScIxktHZknmsr4WU!)UE&-0{yyUrDCr{D0jPU{DPGVE3Pn8l_X&z zE;r0n;+((>FIuVN;kIf}tclG^O;8IsLlJJut-&s5h)Er2oSWl8sN?AGmK91m1N#MxP{8TI2o>nS zw4D{I#Oj6iolXf-x7w^wI@pi&G84m9m>=wC03(0^;Eq)`E0_1NjL-h$R@-HpOeUQeoBD~ zQQ0AKws|Gty%*j1EtGHG?q2Zu^JGeg1c}+9aI#&NiFa8HE_JR5i*h^u+;Te*A;beJ z%FZ5qbJCykw7MUH-u_Qnp9BpM%Uu5-hM;G$P$@Z48^&EwB;Iue0^0Tw=oV*Kptz5^ z2tyx7)_WOjC-=k9#r{>1Ke1n6f0Tp!I#Y`nj=g4K=wjEMoq54Jb)-)m0E9-F$p9eJ z7Uw@o4(+)giY^`{8Ma5-$ADg&WjjB?R6N1E0nEGFP;@npMPG^EMCkDX$6^Z43=nCt zPySDnaU~)084GPmvGo>ADi*iMLst`^E^Z8!^m4X%Dq!87m38PcK;0EeCw1o9J`#5# z5N&tMy7iUCFS!#7E{RX1*h)LltyplSC1j6l*;`pyw{|xc{7<We?A~y04T-#2S?(Q-zeo|`n}{{kWN!_*fUv}E(dp5pG2|pD zd^AukGqp>wHg*;hF75^wmXJu3RfL7}O&=64c6%^My;XZtNQ9H*33v#c)HaL^JVa>; zIR}z#l5)=y5_zdY4jw>&tmYAyWds|*`EkK!p}!01W?#qB#%?r8`V-y!tHq9<`*024{BQh${Vgj$Bnv5rYyg#L|y|! z%wtW;+nj__LHsPU@FzTw7x9)sx~GkSXT z@VLw4S&u~?dXHj{_dI^+(XYpl9CxQd%N~F9ys78#o^SRv^{nW5py#ok z|Gw_I>*il)xGwj)-+J}xb$_pa^_tylXRr5reb?(R%|A8anlw$d=3UMAy?gc^*!#KO z^Lrb5f8g2IbDC$gXQStjo-Fk+^%`ZQ)=*oibJu%ZfA{rcuTQ^z>-8UA|C3g$eObFu ztJm(*eyVNNc6cRt{ouvj@Q)k(ZwS4i=Efm6M%;Mx#&b9R>V3WUJ>C<%1HD&xAMifq z-Fg#s(}bHUZ`#?XXP?{pJk}?q&-;BWH{X8qGdI6TcKFr;F3I+&ccYn{RvbwwT*?-roQA5x390{q#Q``iI{? za{uw$9mDQ;?T+9(V(zHD&Q706K8t*! zeb)N4`p)pp@LlJ7u>WiQi~8^H|J7ZO+%@K|DR(Wui@CeU-MYJ|#7oME|WbRWpJ~i;EbwhPSUmW`8(EmLB5dRXbOKc2bcnMa>_;hDM5Y<=dN;l9Hs4gX;HuOre&ygkx$kNt4$h37qL}``$;vlYgfkILd}LZOHH+(~Nl!M#mN1kT^6y=kms_+ZG1uVB`S*@bOp4RzB^CI3 zaoUXe7mN&rGSHKrm(GrS#Fu$+*zkcFlvg@4A!B;=mK~*snWGeY(6bQee?<&c(i;s$ zw{yd|*}hyjcQ4nU`=^iBGA1A=tt>q&BiodbmAf_@im{}XC2xqKqV%hiBBB3>O@3c6 ztxRjnPsoco%^aJ*^`)HH5@TL=VOC~QQsKfcNAG`>p}2d7a-Q6EzRc4H{61SkdBx`? z78d2@7OtzPSm(2cFiF7YyL}ln=DV+%H#COa z#6n;f7y2;YeQVZuF`M(NDvI*6i?Y@vS0v?z7$eh{=$D3vCMLv228B{yOi)5ZB=DFG zMtxRfPU7Z_N>fci&Du@51!d)%H-O;Mxvw>)5tRuWOq5rmK24t)o4vYt6&*J~#hqMI3X7lr1XL(jIsFQ4V+`7qpF z3%HvnjbBl`yl7e0%*-V#V+_#sx1NnT+p`)Os<1ceYdrfRa~Cr!X2G)HMGIeF{W3`X zp%Eh-2j^4n8~Rk!hp-eZ81NS)13E6z3Nk*Q6Aru8A>4GD{5$R?VO$a{mC~zFsnA z{X%NP{Dze~p}UFG&;0bmfzRJNvfppeBQx;VTa7!uI*A_R6TKy8CZ?q(P2zl}`#sN0 zX9Bk9-(Oq3Vbhix$|+6Vz!*$1E5jBoT@^)%^$+q4`MH~`Hdb%mQtH2B@kx*-Q=h#p zZ_Apd8a@C%HB+CvB4)P03kFX=%yN zbI&ZByeKm+BPEyFL7@qrUyVOL+-E+sFft^Vs_{H-^jXSFUPIm&7m@ezI>BuF{3G;aCS1NS;LHSAfhin4?}@n#m7r(d@lUUDJV&YIi(cELg-n5VSYF)%^qe)_10aR8cUi@?^LX;G^{i2WvcgN zug%O&Fb*pY?-@#^#opkWg#E^X_`LY^Bx6c?T1tAV zF~yWh6+FLh_Pa2Oc{xQV%j!+0hVS-%!!TJ~^z<2tiOEJis3qYB$^K50QIMPuH-srU z(P*Hu9@V5|lN%&EJKs0wJ551qeymT7DOLPs7T#ESxoHJynbbqb`vU5t$;`|wNX$*l zNj9b=QJ{-&(J(N1qcJTlJ(WqNjGjztMrvl7$;e=4Ji;HyPR=pr|79_xxsKGUI6A}^(KE@duyb9?Vp}Q8XozKi; z7KE)>5V|mS1~Uov`Q+kh8yBvhzkS6H7@z<2Ge7=#;LMRD`$rEROq6*p2n|NubmGuB zO$HI6AmT}_FyfT#L?a9{B@ISANRyIeO2#A3%`xSq=28AX@r#hCPlQD@t>|a)&+>L=XSU3|dGF1eH*e-5d3L-lTl7+r<8EqU-{B+r%2My4hfca>#TQB} zr{3UV`E9eu*&bJ2Ep=K!s~D5zeLbt=-FsYd@Xj6st)jM@C3dyUk2Uh@s5NURZk)O; zEHE^9+SEysW&VcQn`f>IN*|*qE`=aYUXi#mVYL)H*JR1rY)0v8XAbMzRUk>NV;=G9 z#^tN4#cL?!>!EK>pUUXa)NP)**^mx>TrKD1Enj|_^?EG2nTR-aI13ie@10%KzYBV& zxnW#X{*!~vEvBh*AM|EB*j)!~Ij{mr&Qzc4y$y-5^B zvV4Z-x{%dQ(SPD0Z=g(gW!LiSGDcA*GXBZt%HC?8BKJMvYMHO-Fwi3VK#TO2yQWP4 z{o0muNA?`waU>!=c;R{Ju!>yuUAEd0`ICd!thq z?OY;RRdVE2&!>Tk6JVJ0EO#GV`abiCNdS?w2fa``3MTAY)H@TGXl; zOT*(QP4W#G(eJ&^!IGum0yK5~+0#d2wt<+NB{+88)|g%Kzihd6{u?R8EWf#+)7<`Z z`$Y5~17%An;F3jE!9C@mjL2_}uHUzN^S<=V1$!e?B3FklpRq`+t&`>kMFvEV4T|uK z94T)+zv7zwQ~uxXwPeryJ-c^SN!Ro8CnwT>IuNyQQED=@y%yBA0vEvVcDum6zb*?bK9OtWQg^kBm4(}%G7GwUD1(TyDy}Qge zZNit)i=yJA7Rg+-j+wh^Zc4-|DRN18T=@Kmc?;((nzyCz>fv&G$Wu$(fn9oa^gDFV zH70AE>Cl5U2Ue!8+`IKtd9S=<`sVRVCoT<&nmlXlr0_tw0}Q&!rpWNF+3hi$gxtok zEoyNb)a{tvH~9 zt^Y?|(AHf)mBs!a{${UcL|RA=bZ8XmlU>uK_7+d0B#XKdTOp-BOGoVrItwB!%otod zx|i0Ow~kK@*)xx~J0F|7S+t{bA@g!ruzB+r zM1{rA+1+PFAGy0U(`**@mBL%Q~Q?k~B1EFavy z<;2=P`-9HP-^*t&$6*Y)T3#8oV*6NpSYel^(Jc0333_kTRPV&##XjrCW^zW4j*%8F zG0j~au_|J= z({g&eLeNCPt%-uZ@XmNEkL^s-8qf0Z?RxX-uyym-$!Rg^YqzD@noz6Db(RB;ExhKi zD-?ZD;h2?o2*2i6l%D5XdxFk|Zl97iKXG1CSZu`nIrF3EES@Xv?3L0x+QZh7i(h#! zROz3w2h}x-=WK50*eI@aiy&@gUso*&tQ_!qtA6j=a`IRjY*|`tNtSMMK*oGN0hgi#?FNLyamIzzWi-xi6fwOqnd>8j{DhON=-BRATsjXFBbHyz`J zfwZsOb=A}d3s*$1h*>G!o^c~>|BaQ~BX$>V$b(Rj13qR+E=tmWMX*S+(;=R za$)$Qh_r5>2ke|1H7#ap{Iry&$NK#QTSwBN%?DC99o+t*yaq$u*qIU2{W`rp_VwlV zawJ>UGfEhZ=_E(l$@vv@_2;i`8om9WN>|M#>wG`*$&B6~yYNa&_2{BP;dgmsU&)tCrnifn+Htl)@F4@HzQl$-0$Lg77D$ zuFKe-hC%0w9%*AP>UOh2kg9uX=hcx5U#WTj==M_j^%g%DpXXvP}>wagEbFZx(2? zy$NY?yJRWJDa+~CHyXIfP1|;;hM%ym?Svur;sxTD6}`!hkMW4y2|Y zaLYP*!JM45Bxz~Hk}$U}S@*N1VE$^!(xiyQaJMHtoJJ^401=5x;UuwP^_mTCS)H=) zw|9b%R~YxVaJ!s+(rMB(I0j6UXRL@^7nM9GDRe>T!l;PYaA~pkuAse`98wkMQL_K~ z*+(61cO>Q6MD$T3GiK1j`Da`^V{o5cd}9BAffGjf2m8p`rR6uXs>@kZ<*XThWVzms z`6~8P|1EFCMJ$=Oe37(tQG8-#Qoz4F4`X7^HM(YYXE}SOoc(cD>1tV$d{jQLW%sGX zl}k6qrAXO*%srco?l#+J_WNPI*9ENcKN7wh#C$MqG2BkFsz~e2sYgCM@xjj3!}pBK zjJ_3>c2#Sv&6(A}7WzpeyXI`6Z{zmqvnR#OSrxiAA$?U^T=Mp_>8E8mA$#OVUx&u5 z`||ZmtA2}%#k6YNj$?;!Z#peyzl+KriQl?zd0wxIFz>0VS4DQi?*h)dUXwrlA@+fs zXP9(o?Vb#qj;%Y~Pmq_yB*aL&7VVbP!8Xr8*w47#mm@1)p8dWoagFS;r~?C_J)8|S z&t4R_@rw$G6|xzebwE z&{8O1vTMxa*G#9;wqbmGczWmANYnch3Zrp#|w#B5aceHP*&ZiX|+L4ZaYLK5=(rvqfWk(jBapaPS__91jC-os6rwr0c9xl6+5z%^n-s_y~bd%8Y$ zFtY*;hrMlJ}OGGtJVaRb(TntW0I zHs2(k?G<0jXV0eJk)vayW1`{c5fhiNDg8`V<>WQel9eV~fA2`c6>5>B-4k0+ZJ#S; zSIh2bnmj&u?1Z2l7uWnMKgd@qSIg3*6i9O%$;nGs^gZl%E|0=))7Mo!8nY-b20~JO0(xDL4d!sHyUd zRSQ-}EelVWvoJg=GCX#Uw8$Igpl8+F#}DCKazEY$y*&|n`@AsMC*PPY(GA+QZ!Amo z-}v^n8{CQy`0XAs+|O@BSi-#Ir3nd36}RG5A;H3}`1gic#aus^KiiRZO3JQc?%7my z9Gp;cb@TWv!?Wq;+Ml<|ubVI0k*k|0W)I@Jxvs59%ZE8;fINMXBX+dcd0HM-!|u3C z=3tZ)?%KmV?eNeY@cQ)V-W0Bs=5vj&xb2rScCJ1wWxrw<7g|4LIQ}oSOApUpILV^^ zkVEvN>fD#->9bslx9@+=y_)53uY+lNt!1wnm=fI}+SB+d^S`lsS_9 zUmLI#oXaR^Xq1G9F$RbB<}yUzR``NEwF_}rR$V&Pb|I4JL$su8>q1nY<^0afc}IW_ zvHo0jwT$XF=$*knHpj|@ImwGxC9TDdl-g2C!q8?b=2OM{)B0hxtJeRtz?rl%dCjWT zYu5}t7<4+1^tCyn6pkXF3pW$}$9V_79|KQhd9j0Sl_ssJuiChl7&f; z3Gs1Dq-|fC5>pDJJB6R}aiBXD)QA>WpP6mo8qv&Y!2w;|?ddxIc&W6LhJ)q)X`!bI zPKemC+&}+rvv#{|`<8q4mrX3IdmJ70h2EUxGZY-w`Kc5BsULsPubW*lpKG1B)mGag zo#cQMQ9l+i&ht^~zx5De_c+&uNL^~~GPIiLHKS_RD>=f0rAy)3gu-YU%sn;ID)W3aTr z-i%Nlo-NqH>RAooAiH$^N-1GcY!dg7eRc_9e;lh(3T$&ic4${uC)c*Gln)z<8}PG8 zusjP<-S|pWSJ73db^tLNd=7U0XGedzII~GrExW%k3U@HP`$xX@az=1@=|^~b!Q`ak<4BSCC4!=^77%a^Yg)`8`J9lfmZO!NLKYG3ra zebI3RfZqE&HNE%>zGda`U=Z*pv*7jtKJ#H_{? zY%>_;@w>4lKGl$HyD_&*ctO7p{5-f2lZ5#+Ozo(|=89FY_j~r?dkMvOSxJXoXo-vN-Y{$>Tg?&wd4+;eY>)LkIoJ z3wZPM_aZOq+N2KRbxD218<2*GHzG|DZ-&E2+(}EsTj4O0)}$@s?Qj^02YCbW_QVVE zJ~$}pOZp++9|tAx;xLi{WDw$maTv)E;*Gcu@kji9G6C_4I2Z{g5s1&l!N@!kg?KcP z5sx8Bh$rJl15lRumMt&qeBYqPHBmc%h$t@g= z{6Zcgo<$xZ{+PZ(C@o7X5=LL8z&UlL)e)~j>mXj2HblG;ZHBlzZH0Ji`WE6HX)nZk z)82@CQ7^>%P~edErTq}^Pk}@FE`1mA0dxT31L-KlN7K=WkD+4__ol!n^`Vi7FQBIp z|AeCa^n3aM@jsXoVa&`b5y~pF#)vmz9T9(<4Mcnp3qtvgpdJR`RK!7?ow4uUPsGrv zi)VjQ)-Tv6fK&|}HF=yu7r4c0Rqo}_+Kbb`_x(l@37I_r6z@0SJ0?)08L7pHGqHeT zi<1(hBq>EolQQHLQkIk>A*wI5)9gYycaB*A=?PqWSn3OF@_r#8W$Ot8P^)O7*mZ0j7N=`#tX*F z#_Psg#(Ty`z#<`IaQ|rBx!RavykdN0DsO6G>T8-{iZksnoiW{Va&oHa)X{0AQ>asl z(??F1ogSLYn%&J_=5gj2^EPv)`KDx)s!JWD5z;Jag>*o=B>h>eOtGfLdKC*S7F}#h zvD3wVa%Rp|o!dJPbDrV6%z3}_Mdt^WQkKRRPs>=#Ldz!0Ny`lv;^OM!;WES}#3k7! z-Q`P{d&Nr>Z&rbgme^b3LWw&iT}sw3*|nr^ z$$2H$mprOaA1zr%sZ*tr_ezy0)v#3eQvRhPOKmK5ywvqlf0wR;-4X|to?1Gw^xo1J zO5Z8tQl@^Hu4R17%qz3L%u)Ob9H&A0N@L{>hF99ZlJUw7HSLL##>%>sjTR|oHz_H! z>^1dT++i%|QZBk&YPs_wwcIsvSNS&Ly8M1|U4e+}3Zd$ChPbZSR$Nz%5ZA8~as6t0 z^*Ten{;#;M6e6xGZ4uX%Ym4j31Jvt_;<}1aTvv%uulI`U*P4p!*G8(>YI$8th-=pv zk?(p>T)T}E*KQw)>#A+Ub=6Jcx>`+fU2TMVeN|jnFE6gEC#u&ferkA%>l%?Fzb5Zx z&;~VIsMmXyYh%shHE-1_QLCv)t<_1S)|yr8zqKpYjuWYMoJ4A!_H{DqT&c@@5xl8x zrjlx?N9u*v`%|RV7qu|f-_)RHgN_Xjh}4Dx7siJE4R1CwHku()8$A$jZCt zc!<;{>Ef+TZZ{pn?ZQM|2n|JK2+7pZC6l(b^4Gg@D1{isd(HZ9upZ8M=wT$>$2y0+OX!nVBM zLp|FjtKkYYJfMadYRLN|e%~WCd?Lbjkmo$TovRvps9^^+9HE9s)$oi6->9mF-64z*~xo_&`zNMSnQ8)K(-P}&Pxt(=$yXfY2)6MOro7-DA*Go6| zecjx#y1DP@<{sD0J)@g@PB-^6-Q4rKxu5IiUeL|`LO1tI-Q2Hqb1&)UUe?XMqMQ4J zZtiv6+?%?&zv<@Q*3G@6oBOA3ZkBHDBi-D`y17=pTuOCwxpwJLno)ypu1Po7teY$8 z=9bXSEvcJZN;kKRZtg3(xn*^8%jxD;(9Nx=oBOJ6ZYAB^D!RF^>E^oX=DO+TR@2R` zuA5s!H@Bv4Zf)J%I=Z=ab#v?K<~GpHZK#{uNH@2!Zf;ZE+-ADD?z*|nb#q(l=C;z! zZLOQzMmM*uZmzEOMJMY%J4H7)L^pT3Ztf1<+?~3)sk*s)baM~u<{r__{aQEofnF{w zCOUlz^U%%J)pD7y?z4f=zb|1FQ3m#lF0gfdM9#r(;)3gnu!hv6Jzz`eOS|LTi+01g z2knaU+w>irVc8)@>WNrq*jJSMVJT?}tB42kx{_X`Ker!|-gG3+z36*5_oTyc?m>s* z+>H*w`5ihK=Pq;*&YdajM5Gh9Mv*tUtx6diNU+1w!-!j@OT9OZmuJ}Nxa#S&Lwgk z={_RYk=~@_Qb+oW$aSRqh+IcHh{$!Mztq;nv&ik|09PW{5uTM?I$!r$M|c*`>b@Da zR{OM}JPT{5POd{di)S76QKD3i@GPDksQGRc;Fgc48SJkfw1c9VHiL!S6IO3u;s?uj zD1Of*f*c};$r17~ISR}4Y4QolgjM<%Jn;r?Pv4{+XefT?B%JQ2AJPN#6g^EZ({Je= zdY2iPkyT(7Sp(LPy~#ST{_I`$K65Zy1kduBfc81x7Gr)1sYY&ZMyV*u*-KM?jXeN& zaQlBzl${c8n<%4TOIRcFmYTvwZnteAn;h2=mUFd+4yYNn_5VLL|6<0hLq$+rUG$D^NC(C(K;TctHGWUxPx)BY zllW0??eHYNbc7Om(&0+jUYUX7oMWW3Rs1pZY+9?Du(WZjnu!jlpV7yx8op9An4~BP zuV+=9ok$7Fdp%x@xoYV(`UIZ`LcK9FMEv<&5$eomzkDIV8Tg*h-0=ClT)NWMYd*co zoG@21u*mAw9_4YyOpmq(1CZuJui)&<8sY5EOgQ_|IXLqg82Q{7>aSmyIrIuMu|^ED zY(+xt6#7`fy7WPs537r_Kc?h(ExyLtmxkcX>&{zqp3;h*Gy>P6R&S$??6*(|{Tj1c zbs3+REeamyGr@F4GVbb!mmUNBeb|M8BecW1bQ7zD3k7?)Z}E zSJaUN<1)gBRma(%{ugIIdLCzA>Vq?{357p^{nGo;^Yp*0I^OW|O3%kTKFkegf0~7} zA3ck+FYSr5D81IkqLo@b=~5HU=wKv9}oL-suRtmf3hm9Q<2q}kG3SR<5tc{25bYe)JnP=1XU(vG#Ok&O3RlHiUj;zg1_^ zZy00s86Wc$4Hxp+^*m!T#%(g7R>tk=e7wNt5TRi+u7`oL=?ovLinD&{L+NE$xEkR8qAESd zpRk35p>&*zDb5C*IaX~JDW0C!hC<<+SeU!GE<|C=$@?w??B%^MZsT9$x}N?WjgT)a zLtM(1g@0sK*c%#BcLl4;c#(2_%#W7E*;nye^;CRa1-9Ga3pQF2_B~P0>v(Tb@NE9C z^L~qa*YdNWK-qXNDsmeso}6z2SDoRt*@N^XqsbWf4UZ)msNEUz8To>Ii}&0lcgUaQ zF|kquHPI5ZBrOGB+;Z^5twbxs6W5K_gb!{#c;GgM|7~-4-)d**csmoc25;fxc+M5~ za+)p*%-C<&=1RNP!`YwmF^(TCr?l%$oZBmY%cA|XnvZB#fjjQ+RTQPq->!T-%RQ^@ zw<{mHi`=4YSN>HKemlGzsGuHgj;o@;jQw_Pf%fyE^>Oy6T$A^s<#F~^yvaQkAM}Dc zgJ@TQyIVz6`uy$6?MK|}ox=fUCB0_ec@5T+f~L{w5xVBASA88-P$55 zeg1ak^ACKDll^ubn3G$S?aIGu0?xJplY4>Lm)Wi#qUC&))m{F|dM`g^1(+{Zg7J1u z&S_UZf+8p>*X~8T3fyfiqSEL8`XGFluUE_8u2qpjl=X2Ylzuzvl!oL?2+ zff8_BQN?Sa94s=`aa|Lu0^KkNP#=Cfe4SM-tg>>)bxW+tt4rd@A`(s#FcUhLY=Abt z1p4@AScmsHJdqC4Zqy%o_Eq#?N zZ#EipZ{943y`{EWDWyaLGrU{^pCwSn7D`TO*cCmYX`G>3pJI(nX0jKiSlAM3}3SPcGvaPx@GXJ_rzABQBuzO(@FQ4=G zhMX1tN@HP>4hDDJCHKgE@__t7-=ST>1>I>6>IvQ+L^UjtD(lTr_U=KYQ$ z+t7b-Tc<5YuWo#;hU1!ZUq`)f3%!m@rrd8wE8i9}lG|P#zn$mWI8Denfmh*M{e}KYf1|hQ@7%)?Yq1|-&AP;jF=u9BF042!!Ai1HtTZdbUSVZfIjqv= z9+0oHN?6a{6pJ|BS##EcwZy9J)~pSCowa4{mjZa?PFJt$cK3q-A}L*J=}wyuqX&wB8&VS5|~$j9!`jriULCdIR} z7}oE1ghx&%+J%&)J>f-JMp?yQR$0GaPFcBM0WxtosYpk`^ZHd~&3+}U*7qfqX&?Z{JsdOr-N<-l7Q;p8R98z^U3-e<&;0YQE&+l+}G}WT>;h9wjGZkNu zy3jYSkmmF%Jhs{?EB!r`HU3^$-QSaVLjxH|xNl%Zthc|5T?>9Czmq>y3H}&0D~37= z8?;T%Uq`AFe6+cgxsE5x!cXoFY^o(;N38+dX=|jL6}#(ojg{01_8|TQ_W{5Yv=sRh zmz7{~Z44_bf8q@6v$t~WZ{ofGp`|H>ZMGI|LSI+zy2v#-jjhKCK6?DU+`__3@*6Ef z8LdKV)26ho^2B$F=2s!dieP(!kKOqb8^~??3Vn^%q0J~SqZ#9>tI!p5$ESStG5-c1 z74j!mV^@g}u%ARK_KrB9JRu`*YtG1rp$Dx9ZE+U-ch`{3(0BJ>kBNh@IUA@GHB*Ux zOpnstbPqiS&;3L6Bbq^v;5`+UzLk$p_>L7q$A6mc>Wnh|LQmsqjBLoEAAW|`9t-U@9(yD#rinC(Cex*K z8C?zzUrAHwD!LXL{d#Eh8|fCh6&mmkx|8mMxAGx+i{58rQ0{mCAw48l$NFD2lCT_| zgrVPc2A@2%@kmaeOp&hffX>k$7{(SxK?^JhwKb}3%zIjbXF77Pyyx9NBfuwk9QsFs zR_DEr;`xU&?=dSWp%a-^DyG!N@_`k{R^p?gA^1MucYu3YU}gx~9-ncWWxdUUthbRr z%bKd3FXKGe`aRy{1d5le4@ohA#hOiAtT#w;goAPa41|2g7H6EfPyM@OnnLqYgq9S$ zE7X7&?Evt|8QRIP!e}%`8*iDqo0ggWcJg%EW;U9A%?G5Z(&b`}i)A>EaLy?1TKry# zz9o*9tX;BUN%xW-B|Db%EIFX$NW9+@Wvxg|);Nqd-6471A%VRih1@aX^hRCynA012 ztT!}Scj&V2m@jk3XvSU9X`3Q!X1zq*tv5+?>z||rYSR*BYlZ99$Qy>|-UAp>$62V~ z4B~2CO{$@;uBe$SQm-KO5>g*3->-^$wPmP@YrS$bM1CWDuQ8wrpecawN5YThh_?W= z#67KW-5TK(d@~7OZGo>g#aD+AHBl zhRaa95YpCqnY6Q>BpwLg0KAEK2ZV1S>;&ix=!)y^fF5|(6W2Wv_OWJ=eh5b+eGDJ~ z5D16_WB`uiz7q&f0nQ+P7U4OB7XV)XF5>zdz-7GSTfp~t-wz0{BkxC~-vImz@Dt!? zz)hszLU;$^U4-`l_W=(8e*peO`hO5UMrgI3q{Moe8W5TQPKXx+I0GyI7eH}93FMUo zlme8-by&jic@gyMR>^*oIP>_B`cU@y|s0O^3kNIwENhWJUqB>?b7uOjU> z!ruW8tmhfEUSeulm==OwCfJq$)Mq6d@&hZ>y58@<7=E-l0nnn;1+LiiZ|Zv z4NmdK*Su9u@y6GZp;fq(_SRo8*W`}%WA3D*^%^WT?wAR72OV7`6;O(+D8*%boqyR& zl>!HYvimEj5z?(f#A1;mDHCW_tb1K#JLyU|x7TZ++e#-fDYr=>=)3e1%IdZJThcc%#fh zMwiWp6<%g{l-XUyiYRv@U_;17PFGq?aC&k_3!1FEo>E@^R!*_J1%>3##Wk0>yain$ z8?Pa^te_wCU#*c|UVSs~Q#e0(X-PgZ)LG20@sOX!EN}8 z2U?N$T9DrW8?D$dB3e(#ac+fa3fZ2EV;gO_t6auu{!@I%VjYbyjKmkhmAB{i5a-n| z@H*J1k!Ik`=71J}mex%47OR0Ni?s^g=!!Rbpv>NQt2fG=j52e~aDMf|8%0l>i|Y`T zK0@#Y&<7~iG0%E~XI*po6?J_ZVB^`Ih>wQNVhkje4{+~`TKa*${Skj3?;Z;{WZeYK z)t&r;@K@+FzXR@Czf>@O6Q#edp%z=4YWdw&)223R;k?89XD)FB9V)s4N-B6r@O!x& zoa9PR-j@9BHZ4R;i$a>@e{(ZPBzMps@9{aM)KGK`XSBElJ$7+xD6pTRe#s^+bH7pt zU*puCi+wG3dI0ktc&7(AQ>#~a;Y(f$=G#Muc@y<|3(yhqw}HJ*h`*1J>m7Ab8gGzkPIE=oFd10sX9Vt+i0OH zG_GC%FQoNF`%c04?t-?sOuq#@{gl(ryfnFe7^hI)3S9c;>VmmC7;j@P5jc))oW=3O zB`(2O$zpAbx3?v)f^REX7ozUazp(PMD)^upz9je|6K$S}FJz~_K30bcPTNoDer7lmNvLcLrDh zE`Z{I(tt9^dj(J)@d^kl0xBb31>tLes)$1Z(&~U(h}T9~2T&jJ1_&DhnjjAOM4=}` zf6JgP5w-%nj(A&y?Eo_np9z=+*b7JlqyvrtP693gfD`Cv8PLx%pqphd1}FzW*`SkU zKqt$9K9&J}ECae&26V9u=wTVq!!kezg2M)Y$_9bTR)EU*h+{ISjB80=8r>`ebj`Jj z5NP}7L2V(Rwh&Seaa+IN2-iZR2vI361W$y3;zIDH5YgL#YFi`T4xtC+475a0nl~uz z1}N;|ao2&n4@Mgo^XU74V+8=$Tmpsvdbb@fC1eQ@(w0O!UqT;H`Gh2*vM z6^=$lxg#@MFRGPVkP#?zZhu!$a#aRbay{-U@bwV*y7<&D+IlG=1B7O&l}fo^v&jJ4 z_{$4=64zk#M|oT`uxX9FPF!o`b>fE+4zQDlw{zM)?k{ z-ed%TDQB)xvz&2iRoEH``bUEPk)VGh=pPAeIt25Q1X74#-8g~uhG4}wfutd@%=YU)&aQ62eZ6w3p}N)LD#fqHnoClh8;b{C}SSXIh*`6Si^ zyixDZ+j<^SbsLTXf7Z>`6zc|&Y`uZ_O6@J6V2l}I-@u=U=gmdlNs+>1{Epl|>|^?D ze_pw_TQ682=Dhhl%JmVxf5WU#rssJY7X=f%_NJ1&EYiTdmj>wRq=TD~~AgZrD-z+u2>r#8x22Zs~5paE!t zTf-%ALL>A+O>tPj+0D@M&2jLVc~~_tS2z*2<;6JoI@}d_mLL3G7UeC@n1O7Ick%s$ z8A|g8;@rOOqEH$m9dMW-yWT=B-?x=QhVivoeD7AiYPKtKyW!xgoVz35L-7valvx6^ zmpxIwUXZg?*^RguY;fEIt{)Bqw9hfPpWE+U6dz(r0xV#Xidv3$56J*bGbUC6weF9A;Q-FQd%g;*emuy^8ejaTJ3E_Zs3q;4r{Se;se* z`xBdCW9Qz%e1GENu%zEY$}c!vphy3Tl-~&F%-?YohfV(u?z{_2rx{+;e93KkVITTUflYpD(w1BfS_cj(7=L3hAY3X~fIW zSC9@bY^0Q@<&jbWzIBxQWFw_At&Ef^>Q2d^Ia-xgMM^aanS$Adnn{U9%Z-#KvMQ#0r++{0&DO7ML*u#e4rc#s%i;a-n>VB5w$n8(6B*pCCbhhf(@ z&||Rkn=x~H5@+nuf%HohZHJvYzD1nR%ozAQ7ruzOEu`Ot-YkweVu~NfG zT(F8BR#raKMJ#-F3+WXhn_V!!g?)&yMhLaWijIazX^ge{20qt?J2Ah7^bV{8(mOJ& zabbP2D$0!gK;A{lK!#mOFxxd8cVdPM>0=?^U05IsM0yYl0)`@1{Ianfqh(Htr+n5xK`aV%B50QvR&yWz^VhPz?3~!ohd)4#s;K_>}Xx*e6`@ zx#&v-hf|fq1#fe%7W_;VE)|?9c#@K-I1JEnLU87MNELp|-Oc+1QaHcm?&*CNalvVP z4urw8`XW*|Ur`Ou*!J}1+(I>6K{Z@qMD98hX`l*KcwREqgc)lyRjn=hPuBC4+ zWmCRdL8WOeHB$}MQVn%dg(9g!kyN2Ys!$##&OmKcp)J1VtUltLdZ$i3f`F_ z2?X|;A_+trFopX?OE87+MSC!X*F~!^h08_TFom;43o(VKMLRKtj|JwP&|5KDU1=k} zUkq;zqUc~y^1z!6JT16T?9<-??IQY6$K0mnFphm2Z*jbfe#*v4Vqbj0Jsjgy=|=>v zsnR>xID_{HROtoyoNr~stJ11Ca|urssZJG1P8I1*6^Tt1nJlpUztT0AB>a!#gna#b zXXwL(T$+)zorm9k-rzI(Cy(IXiEAISfM zKDIs}PprR_lh$;46!}KHkOJreL0V!em4=3~QKK&+QFn|hPUhNdXrUey00LJhF8C>t~pdJx~?@H*a&vS~pn z8_Gv_S^uNJW7LIzUj@S;)VD8e;q$Ez>3GZq{u^yq4CS!Faiph^ion$qdI9B`MBc${ z(Q+DOP0nfi%GPA|Z&KB;46Jm8{AH|U{nJDoUa`AQ=hV(s%$L6++5i1Q1HLUlI*t>{*j^_^| z9)|b@e9MSYZ_xO)d4Dfxi?1-!eXZCaxZHlQ6j zezfpC(mAc%0`);p-z z9is{9PtcAT2&3`bH^_Tc`5ymf4lozA=M(EBwgCCfQSL13WcCE__zTY+L7cy{G49U? z%xL|CeTMW&XuDr=|8FQ0|3;v7W`1DRaqlPA2ZkmnS5w@Fy3jtj?*h_ih&mar;d`y{ zzWl)N;qL`rco}oP1w8Vyb3EAU%gbsjm#q#Q-!J1n?3(s!0RT^!u)CP)4PtP@KBI<2 z(C!03B%mi~&IJ$-cn5TRA8Dq7D2H)8pfhmt9j==ICv{MUWR&$Il$qCc z6970cRKPXlxe+1cw33eg;<18{!MNUuy#B~b!+YESR=n42y>DU&#{$M7?HKOchVC4jlg+?;PhG-wLjQ zXB&<=emQPAUi0A8hP%J;UK?JX;GG-~s6VeauP?7FucuN+)X!EoUN2s!XDRQ~%BojR xV}rcqG|{J*u_((28JUa6zXTqihQntqUt!u?4~Kcm_%~>s6t1m#IU)bE{||gX8j=72 literal 31084 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 From 83b57705312780d28df54eb053de907610c4facd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Tue, 19 Nov 2019 09:25:25 +0100 Subject: [PATCH 06/22] added 4 shapes with 'nofill' property --- resources/library/shape/nofill_octogon.svg | 1 + resources/library/shape/nofill_rhombus.svg | 1 + resources/library/shape/nofill_trapeze.svg | 1 + resources/library/shape/nofill_triangle_rect.svg | 1 + 4 files changed, 4 insertions(+) create mode 100644 resources/library/shape/nofill_octogon.svg create mode 100644 resources/library/shape/nofill_rhombus.svg create mode 100644 resources/library/shape/nofill_trapeze.svg create mode 100644 resources/library/shape/nofill_triangle_rect.svg diff --git a/resources/library/shape/nofill_octogon.svg b/resources/library/shape/nofill_octogon.svg new file mode 100644 index 00000000..f693ac97 --- /dev/null +++ b/resources/library/shape/nofill_octogon.svg @@ -0,0 +1 @@ +test4 \ No newline at end of file diff --git a/resources/library/shape/nofill_rhombus.svg b/resources/library/shape/nofill_rhombus.svg new file mode 100644 index 00000000..aa3a7956 --- /dev/null +++ b/resources/library/shape/nofill_rhombus.svg @@ -0,0 +1 @@ +losange \ No newline at end of file diff --git a/resources/library/shape/nofill_trapeze.svg b/resources/library/shape/nofill_trapeze.svg new file mode 100644 index 00000000..8bbe0dff --- /dev/null +++ b/resources/library/shape/nofill_trapeze.svg @@ -0,0 +1 @@ +trapeze \ No newline at end of file diff --git a/resources/library/shape/nofill_triangle_rect.svg b/resources/library/shape/nofill_triangle_rect.svg new file mode 100644 index 00000000..634616de --- /dev/null +++ b/resources/library/shape/nofill_triangle_rect.svg @@ -0,0 +1 @@ +triangle \ No newline at end of file From 937bf5aa400531c45b820434a1cb549bd162a870 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Tue, 19 Nov 2019 10:24:11 +0100 Subject: [PATCH 07/22] fixed not recognized css on rhombus --- resources/library/shape/nofill_rhombus.svg | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/resources/library/shape/nofill_rhombus.svg b/resources/library/shape/nofill_rhombus.svg index aa3a7956..57278dda 100644 --- a/resources/library/shape/nofill_rhombus.svg +++ b/resources/library/shape/nofill_rhombus.svg @@ -1 +1,3 @@ -losange \ No newline at end of file + + + From 54c800e467dde552270ad68a0965a94f9d00cee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Wed, 30 Oct 2019 16:04:22 +0100 Subject: [PATCH 08/22] workaround for QFontDialog issue locking current font (https://bugreports.qt.io/browse/QTBUG-79637) --- src/domain/UBGraphicsTextItemDelegate.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/domain/UBGraphicsTextItemDelegate.cpp b/src/domain/UBGraphicsTextItemDelegate.cpp index 71371df4..9691fa07 100644 --- a/src/domain/UBGraphicsTextItemDelegate.cpp +++ b/src/domain/UBGraphicsTextItemDelegate.cpp @@ -280,8 +280,6 @@ void UBGraphicsTextItemDelegate::contentsChanged() // will remain in the font list. void UBGraphicsTextItemDelegate::customize(QFontDialog &fontDialog) { - fontDialog.setOption(QFontDialog::DontUseNativeDialog); - if (UBSettings::settings()->isDarkBackground()) { fontDialog.setStyleSheet("background-color: white;"); } @@ -334,7 +332,11 @@ void UBGraphicsTextItemDelegate::pickFont() { if (mDelegated && mDelegated->scene() && mDelegated->scene()->views().size() > 0) { - QFontDialog fontDialog(delegated()->textCursor().charFormat().font(), static_cast(UBApplication::boardController->controlView())); + // https://bugreports.qt.io/browse/QTBUG-79637 + QFontDialog fontDialog(static_cast(UBApplication::boardController->controlView())); + + fontDialog.setOption(QFontDialog::DontUseNativeDialog); + fontDialog.setCurrentFont(delegated()->textCursor().charFormat().font()); customize(fontDialog); if (fontDialog.exec()) From c6fc24aa792de6d360041f7abb738bd5174595aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Wed, 20 Nov 2019 09:53:01 +0100 Subject: [PATCH 09/22] updated translations --- resources/i18n/OpenBoard_ar.ts | 8 ++++++++ resources/i18n/OpenBoard_bg.ts | 8 ++++++++ resources/i18n/OpenBoard_ca.ts | 8 ++++++++ resources/i18n/OpenBoard_cs.ts | 8 ++++++++ resources/i18n/OpenBoard_da.ts | 8 ++++++++ resources/i18n/OpenBoard_de.ts | 8 ++++++++ resources/i18n/OpenBoard_el.ts | 8 ++++++++ resources/i18n/OpenBoard_en.ts | 8 ++++++++ resources/i18n/OpenBoard_en_UK.ts | 8 ++++++++ resources/i18n/OpenBoard_es.ts | 8 ++++++++ resources/i18n/OpenBoard_fr.ts | 8 ++++++++ resources/i18n/OpenBoard_fr_CH.ts | 8 ++++++++ resources/i18n/OpenBoard_gl.ts | 8 ++++++++ resources/i18n/OpenBoard_hu.ts | 8 ++++++++ resources/i18n/OpenBoard_it.ts | 8 ++++++++ resources/i18n/OpenBoard_iw.ts | 8 ++++++++ resources/i18n/OpenBoard_ja.ts | 8 ++++++++ resources/i18n/OpenBoard_ko.ts | 8 ++++++++ resources/i18n/OpenBoard_mg.ts | 8 ++++++++ resources/i18n/OpenBoard_nb.ts | 8 ++++++++ resources/i18n/OpenBoard_nl.ts | 8 ++++++++ resources/i18n/OpenBoard_pl.ts | 8 ++++++++ resources/i18n/OpenBoard_pt.ts | 8 ++++++++ resources/i18n/OpenBoard_ro.ts | 8 ++++++++ resources/i18n/OpenBoard_ru.ts | 8 ++++++++ resources/i18n/OpenBoard_sk.ts | 12 ++++++++++-- resources/i18n/OpenBoard_sv.ts | 8 ++++++++ resources/i18n/OpenBoard_tr.ts | 8 ++++++++ resources/i18n/OpenBoard_uk.ts | 8 ++++++++ resources/i18n/OpenBoard_zh.ts | 8 ++++++++ resources/i18n/OpenBoard_zh_CN.ts | 8 ++++++++ resources/i18n/OpenBoard_zh_TW.ts | 8 ++++++++ 32 files changed, 258 insertions(+), 2 deletions(-) diff --git a/resources/i18n/OpenBoard_ar.ts b/resources/i18n/OpenBoard_ar.ts index 82a9b999..b7efd36f 100644 --- a/resources/i18n/OpenBoard_ar.ts +++ b/resources/i18n/OpenBoard_ar.ts @@ -2844,6 +2844,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_bg.ts b/resources/i18n/OpenBoard_bg.ts index 44d94cd3..d8a32193 100644 --- a/resources/i18n/OpenBoard_bg.ts +++ b/resources/i18n/OpenBoard_bg.ts @@ -2824,6 +2824,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_ca.ts b/resources/i18n/OpenBoard_ca.ts index 4fa465d4..2a899f0b 100644 --- a/resources/i18n/OpenBoard_ca.ts +++ b/resources/i18n/OpenBoard_ca.ts @@ -2824,6 +2824,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_cs.ts b/resources/i18n/OpenBoard_cs.ts index 3c4a0d57..05cbe5c8 100644 --- a/resources/i18n/OpenBoard_cs.ts +++ b/resources/i18n/OpenBoard_cs.ts @@ -2830,6 +2830,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_da.ts b/resources/i18n/OpenBoard_da.ts index fbca1004..dab79e57 100644 --- a/resources/i18n/OpenBoard_da.ts +++ b/resources/i18n/OpenBoard_da.ts @@ -2827,6 +2827,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_de.ts b/resources/i18n/OpenBoard_de.ts index 513421b5..3f94c7aa 100644 --- a/resources/i18n/OpenBoard_de.ts +++ b/resources/i18n/OpenBoard_de.ts @@ -2890,6 +2890,14 @@ p, li { white-space: pre-wrap; } Credits + + Documents Mode + Dokumentmodus + + + Display date column on alphabetical sort + Datumsspalte nur in alphabetischer Reihenfolge anzeigen + trapFlashDialog diff --git a/resources/i18n/OpenBoard_el.ts b/resources/i18n/OpenBoard_el.ts index e192db1b..240a9611 100644 --- a/resources/i18n/OpenBoard_el.ts +++ b/resources/i18n/OpenBoard_el.ts @@ -2824,6 +2824,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_en.ts b/resources/i18n/OpenBoard_en.ts index 2dde99a4..0a0728e3 100644 --- a/resources/i18n/OpenBoard_en.ts +++ b/resources/i18n/OpenBoard_en.ts @@ -2652,6 +2652,14 @@ p, li { white-space: pre-wrap; } version : … + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_en_UK.ts b/resources/i18n/OpenBoard_en_UK.ts index 2dde99a4..0a0728e3 100644 --- a/resources/i18n/OpenBoard_en_UK.ts +++ b/resources/i18n/OpenBoard_en_UK.ts @@ -2652,6 +2652,14 @@ p, li { white-space: pre-wrap; } version : … + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_es.ts b/resources/i18n/OpenBoard_es.ts index caa0aac1..b8408be0 100644 --- a/resources/i18n/OpenBoard_es.ts +++ b/resources/i18n/OpenBoard_es.ts @@ -2844,6 +2844,14 @@ p, li { white-space: pre-wrap; } Swap first and second view displays Intercambiar control de pantalla y vista de pantalla + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_fr.ts b/resources/i18n/OpenBoard_fr.ts index 55891996..6a2eb540 100644 --- a/resources/i18n/OpenBoard_fr.ts +++ b/resources/i18n/OpenBoard_fr.ts @@ -2907,6 +2907,14 @@ p, li { white-space: pre-wrap; } Swap first and second view displays Inverser les écrans élèves + + Documents Mode + Mode Documents + + + Display date column on alphabetical sort + Afficher la colonne des dates avec le tri alphabétique + trapFlashDialog diff --git a/resources/i18n/OpenBoard_fr_CH.ts b/resources/i18n/OpenBoard_fr_CH.ts index 6ab6f6e8..992ad7b4 100644 --- a/resources/i18n/OpenBoard_fr_CH.ts +++ b/resources/i18n/OpenBoard_fr_CH.ts @@ -2907,6 +2907,14 @@ p, li { white-space: pre-wrap; } Swap first and second view displays Inverser les écrans élèves + + Documents Mode + Mode Documents + + + Display date column on alphabetical sort + Afficher la colonne des dates avec le tri alphabétique + trapFlashDialog diff --git a/resources/i18n/OpenBoard_gl.ts b/resources/i18n/OpenBoard_gl.ts index 26937064..0b5f4a7e 100644 --- a/resources/i18n/OpenBoard_gl.ts +++ b/resources/i18n/OpenBoard_gl.ts @@ -2821,6 +2821,14 @@ p, li { white-space: pre-wrap; } Swap first and second view displays Intercambiar control de pantalla e vista de pantalla + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_hu.ts b/resources/i18n/OpenBoard_hu.ts index 187e2f74..24fc187c 100644 --- a/resources/i18n/OpenBoard_hu.ts +++ b/resources/i18n/OpenBoard_hu.ts @@ -2783,6 +2783,14 @@ p, li { white-space: pre-wrap; } Swap first and second view displays + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_it.ts b/resources/i18n/OpenBoard_it.ts index 25904864..986266ed 100644 --- a/resources/i18n/OpenBoard_it.ts +++ b/resources/i18n/OpenBoard_it.ts @@ -2885,6 +2885,14 @@ p, li { white-space: pre-wrap; } Swap first and second view displays Scambia lo schermo di controllo con quello di visualizzazione + + Documents Mode + Modalità Documenti + + + Display date column on alphabetical sort + Visualizza la colonna delle date con ordinamento alfabetico. + trapFlashDialog diff --git a/resources/i18n/OpenBoard_iw.ts b/resources/i18n/OpenBoard_iw.ts index 217ca318..efaeaec5 100644 --- a/resources/i18n/OpenBoard_iw.ts +++ b/resources/i18n/OpenBoard_iw.ts @@ -2816,6 +2816,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_ja.ts b/resources/i18n/OpenBoard_ja.ts index 909af809..326f9b83 100644 --- a/resources/i18n/OpenBoard_ja.ts +++ b/resources/i18n/OpenBoard_ja.ts @@ -2812,6 +2812,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_ko.ts b/resources/i18n/OpenBoard_ko.ts index 6e216bc4..8c620067 100644 --- a/resources/i18n/OpenBoard_ko.ts +++ b/resources/i18n/OpenBoard_ko.ts @@ -2835,6 +2835,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_mg.ts b/resources/i18n/OpenBoard_mg.ts index 3acb0e85..c81c05b9 100644 --- a/resources/i18n/OpenBoard_mg.ts +++ b/resources/i18n/OpenBoard_mg.ts @@ -2831,6 +2831,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_nb.ts b/resources/i18n/OpenBoard_nb.ts index 5e131100..82e4aad8 100644 --- a/resources/i18n/OpenBoard_nb.ts +++ b/resources/i18n/OpenBoard_nb.ts @@ -2821,6 +2821,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_nl.ts b/resources/i18n/OpenBoard_nl.ts index c42c52b9..f38f93d2 100644 --- a/resources/i18n/OpenBoard_nl.ts +++ b/resources/i18n/OpenBoard_nl.ts @@ -2820,6 +2820,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_pl.ts b/resources/i18n/OpenBoard_pl.ts index f83dfa2b..d3a75c08 100644 --- a/resources/i18n/OpenBoard_pl.ts +++ b/resources/i18n/OpenBoard_pl.ts @@ -2845,6 +2845,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_pt.ts b/resources/i18n/OpenBoard_pt.ts index f52fc51d..5be4c23f 100644 --- a/resources/i18n/OpenBoard_pt.ts +++ b/resources/i18n/OpenBoard_pt.ts @@ -2860,6 +2860,14 @@ p, li { white-space: pre-wrap; } Grid + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_ro.ts b/resources/i18n/OpenBoard_ro.ts index 61a3439d..ff9d406d 100644 --- a/resources/i18n/OpenBoard_ro.ts +++ b/resources/i18n/OpenBoard_ro.ts @@ -2831,6 +2831,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_ru.ts b/resources/i18n/OpenBoard_ru.ts index 7bdba4a3..69005cb9 100644 --- a/resources/i18n/OpenBoard_ru.ts +++ b/resources/i18n/OpenBoard_ru.ts @@ -2831,6 +2831,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_sk.ts b/resources/i18n/OpenBoard_sk.ts index 94b608e4..c259db3f 100644 --- a/resources/i18n/OpenBoard_sk.ts +++ b/resources/i18n/OpenBoard_sk.ts @@ -2865,13 +2865,21 @@ p, li { white-space: pre-wrap; } Na svetlom pozadí - Swap first and second view displays - Vymeniť obrazovku 1. a 2. zobrazenia + Swap first and second view displays + Vymeniť obrazovku 1. a 2. zobrazenia Grid Mriežka + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_sv.ts b/resources/i18n/OpenBoard_sv.ts index 2a16b201..230a63f1 100644 --- a/resources/i18n/OpenBoard_sv.ts +++ b/resources/i18n/OpenBoard_sv.ts @@ -2832,6 +2832,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_tr.ts b/resources/i18n/OpenBoard_tr.ts index 2b6686fd..08d28451 100644 --- a/resources/i18n/OpenBoard_tr.ts +++ b/resources/i18n/OpenBoard_tr.ts @@ -2819,6 +2819,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_uk.ts b/resources/i18n/OpenBoard_uk.ts index 4090dddc..8c06bb54 100644 --- a/resources/i18n/OpenBoard_uk.ts +++ b/resources/i18n/OpenBoard_uk.ts @@ -2817,6 +2817,14 @@ p, li { white-space: pre-wrap; } Swap first and second view displays Поміняйте перший і другий види відображення + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_zh.ts b/resources/i18n/OpenBoard_zh.ts index 627e797e..811b8223 100644 --- a/resources/i18n/OpenBoard_zh.ts +++ b/resources/i18n/OpenBoard_zh.ts @@ -2819,6 +2819,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_zh_CN.ts b/resources/i18n/OpenBoard_zh_CN.ts index 627e797e..811b8223 100644 --- a/resources/i18n/OpenBoard_zh_CN.ts +++ b/resources/i18n/OpenBoard_zh_CN.ts @@ -2819,6 +2819,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_zh_TW.ts b/resources/i18n/OpenBoard_zh_TW.ts index db8075ca..92ad5ddd 100644 --- a/resources/i18n/OpenBoard_zh_TW.ts +++ b/resources/i18n/OpenBoard_zh_TW.ts @@ -2813,6 +2813,14 @@ p, li { white-space: pre-wrap; } Check if Open-Sankoré data could be imported at launch + + Documents Mode + + + + Display date column on alphabetical sort + + trapFlashDialog From e3bfd85b31ff8f05b79f2aaa475b3bbe4e26b886 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Wed, 20 Nov 2019 10:10:08 +0100 Subject: [PATCH 10/22] changed version number to 1.5.4rc --- OpenBoard.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenBoard.pro b/OpenBoard.pro index d44699ac..ef75e0b7 100644 --- a/OpenBoard.pro +++ b/OpenBoard.pro @@ -11,7 +11,7 @@ CONFIG += debug_and_release \ VERSION_MAJ = 1 VERSION_MIN = 5 VERSION_PATCH = 4 -VERSION_TYPE = a # a = alpha, b = beta, rc = release candidate, r = release, other => error +VERSION_TYPE = rc # a = alpha, b = beta, rc = release candidate, r = release, other => error VERSION_BUILD = 0 VERSION = "$${VERSION_MAJ}.$${VERSION_MIN}.$${VERSION_PATCH}-$${VERSION_TYPE}.$${VERSION_BUILD}" From 05d672a8f8d5f943f08c4b81dfc123b08e5d736b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Tue, 3 Dec 2019 10:09:06 +0100 Subject: [PATCH 11/22] added two options to periodically delete old documents in trash --- resources/etc/OpenBoard.config | 2 + resources/forms/preferences.ui | 60 +++++++++++++----- src/core/UBApplication.cpp | 6 ++ src/core/UBPreferencesController.cpp | 11 ++++ src/core/UBSettings.cpp | 2 + src/core/UBSettings.h | 3 + src/document/UBDocumentController.cpp | 89 ++++++++++++++++++++++++++- src/document/UBDocumentController.h | 5 ++ 8 files changed, 162 insertions(+), 16 deletions(-) diff --git a/resources/etc/OpenBoard.config b/resources/etc/OpenBoard.config index 7a261d40..6e85db95 100644 --- a/resources/etc/OpenBoard.config +++ b/resources/etc/OpenBoard.config @@ -93,6 +93,8 @@ SortOrder=0 SplitterLeftSize=200 SplitterRightSize=800 ShowDateColumnOnAlphabeticalSort=false +emptyTrashForOlderDocuments=true +emptyTrashDaysValue=30 [IntranetPodcast] Author= diff --git a/resources/forms/preferences.ui b/resources/forms/preferences.ui index 602f7ead..6fdf3936 100644 --- a/resources/forms/preferences.ui +++ b/resources/forms/preferences.ui @@ -7,7 +7,7 @@ 0 0 825 - 748 + 767 @@ -552,7 +552,7 @@ Documents Mode - + @@ -567,24 +567,54 @@ - - - - Qt::Horizontal - - - QSizePolicy::Fixed + + + + Empty trash for documents older than - - - 40 - 20 - + + + + + + + + + days - + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + diff --git a/src/core/UBApplication.cpp b/src/core/UBApplication.cpp index 194ea6e4..60d8f26f 100644 --- a/src/core/UBApplication.cpp +++ b/src/core/UBApplication.cpp @@ -451,6 +451,12 @@ void UBApplication::closeEvent(QCloseEvent *event) void UBApplication::closing() { + if (UBSettings::settings()->emptyTrashForOlderDocuments->get().toBool()) + { + UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel; + documentController->deleteDocumentsInFolderOlderThan(docModel->trashIndex(), UBSettings::settings()->emptyTrashDaysValue->get().toInt()); + documentController->deleteEmptyFolders(docModel->trashIndex()); + } if (boardController) boardController->closing(); diff --git a/src/core/UBPreferencesController.cpp b/src/core/UBPreferencesController.cpp index b536ea1e..9ecceeec 100644 --- a/src/core/UBPreferencesController.cpp +++ b/src/core/UBPreferencesController.cpp @@ -138,8 +138,12 @@ void UBPreferencesController::wire() connect(mPreferencesUI->useSystemOSKCheckBox, SIGNAL(clicked(bool)), settings->useSystemOnScreenKeyboard, SLOT(setBool(bool))); connect(mPreferencesUI->useSystemOSKCheckBox, SIGNAL(clicked(bool)), this, SLOT(systemOSKCheckBoxToggled(bool))); + // Documents Mode preferences connect(mPreferencesUI->showDateColumnOnAlphabeticalSort, SIGNAL(clicked(bool)), settings->showDateColumnOnAlphabeticalSort, SLOT(setBool(bool))); connect(mPreferencesUI->showDateColumnOnAlphabeticalSort, SIGNAL(clicked(bool)), UBApplication::documentController, SLOT(refreshDateColumns())); + connect(mPreferencesUI->emptyTrashForOlderDocuments, SIGNAL(clicked(bool)), settings->emptyTrashForOlderDocuments, SLOT(setBool(bool))); + connect(mPreferencesUI->emptyTrashDaysValue, SIGNAL(valueChanged(int)), settings->emptyTrashDaysValue, SLOT(setInt(int))); + connect(mPreferencesUI->keyboardPaletteKeyButtonSize, SIGNAL(currentIndexChanged(const QString &)), settings->boardKeyboardPaletteKeyBtnSize, SLOT(setString(const QString &))); connect(mPreferencesUI->startModeComboBox, SIGNAL(currentIndexChanged(int)), settings->appStartMode, SLOT(setInt(int))); @@ -279,6 +283,8 @@ void UBPreferencesController::init() this->systemOSKCheckBoxToggled(mPreferencesUI->useSystemOSKCheckBox->isChecked()); mPreferencesUI->showDateColumnOnAlphabeticalSort->setChecked(settings->showDateColumnOnAlphabeticalSort->get().toBool()); + mPreferencesUI->emptyTrashForOlderDocuments->setChecked(settings->emptyTrashForOlderDocuments->get().toBool()); + mPreferencesUI->emptyTrashDaysValue->setValue(settings->emptyTrashDaysValue->get().toInt()); mPreferencesUI->startModeComboBox->setCurrentIndex(settings->appStartMode->get().toInt()); @@ -344,8 +350,13 @@ void UBPreferencesController::defaultSettings() mPreferencesUI->startModeComboBox->setCurrentIndex(0); mPreferencesUI->useSystemOSKCheckBox->setChecked(settings->useSystemOnScreenKeyboard->reset().toBool()); + mPreferencesUI->showDateColumnOnAlphabeticalSort->setChecked(settings->showDateColumnOnAlphabeticalSort->reset().toBool()); UBApplication::documentController->refreshDateColumns(); + + mPreferencesUI->emptyTrashForOlderDocuments->setChecked(settings->emptyTrashForOlderDocuments->reset().toBool()); + mPreferencesUI->emptyTrashDaysValue->setValue(settings->emptyTrashDaysValue->reset().toInt()); + } else if (mPreferencesUI->mainTabWidget->currentWidget() == mPreferencesUI->penTab) { diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index 557b3c65..5d5cb705 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -459,6 +459,8 @@ void UBSettings::init() useSystemOnScreenKeyboard = new UBSetting(this, "App", "UseSystemOnScreenKeyboard", true); showDateColumnOnAlphabeticalSort = new UBSetting(this, "Document", "ShowDateColumnOnAlphabeticalSort", false); + emptyTrashForOlderDocuments = new UBSetting(this, "Document", "emptyTrashForOlderDocuments", true); + emptyTrashDaysValue = new UBSetting(this, "Document", "emptyTrashDaysValue", 30); cleanNonPersistentSettings(); checkNewSettings(); diff --git a/src/core/UBSettings.h b/src/core/UBSettings.h index 5ba97c93..a5e6d109 100644 --- a/src/core/UBSettings.h +++ b/src/core/UBSettings.h @@ -415,6 +415,9 @@ class UBSettings : public QObject UBSetting* showDateColumnOnAlphabeticalSort; + UBSetting* emptyTrashForOlderDocuments; + UBSetting* emptyTrashDaysValue; + UBSetting* magnifierDrawingMode; UBSetting* autoSaveInterval; diff --git a/src/document/UBDocumentController.cpp b/src/document/UBDocumentController.cpp index 1bf2ebc9..bfef2848 100644 --- a/src/document/UBDocumentController.cpp +++ b/src/document/UBDocumentController.cpp @@ -762,6 +762,31 @@ bool UBDocumentTreeModel::removeRows(int row, int count, const QModelIndex &pare return true; } +bool UBDocumentTreeModel::containsDocuments(const QModelIndex &index) +{ + for (int i = 0; i < rowCount(index); i++) + { + QModelIndex child = this->index(i, 0, index); + if (isCatalog(child)) + { + if (containsDocuments(child)) + { + return true; + } + } + else if (isDocument(child)) + { + return true; + } + else + { + qDebug() << "Who the hell are you ?"; + } + } + + return false; +} + QModelIndex UBDocumentTreeModel::indexForNode(UBDocumentTreeNode *pNode) const { if (pNode == 0) { @@ -2054,7 +2079,6 @@ void UBDocumentController::setupViews() } } -//N/C - NNE - 20140403 void UBDocumentController::refreshDateColumns() { if (UBSettings::settings()->documentSortKind->get().toInt() == UBDocumentController::Alphabetical) @@ -2602,6 +2626,69 @@ void UBDocumentController::moveToTrash(QModelIndex &index, UBDocumentTreeModel* } //issue 1629 - NNE - 20131212 : END +void UBDocumentController::deleteDocumentsInFolderOlderThan(const QModelIndex &index, const int days) +{ + UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel; + + QModelIndexList list; + for (int i = 0; i < docModel->rowCount(index); i++) + { + list << docModel->index(i, 0, index); + } + + foreach (QModelIndex child, list) + { + UBDocumentProxy *documentProxy= docModel->proxyForIndex(child); + + if (documentProxy) + { + if (documentProxy->lastUpdate() < QDateTime::currentDateTime().addDays(-days)) + { + deleteIndexAndAssociatedData(child); + } + } + else + { + if (docModel->isCatalog(child)) + { + deleteDocumentsInFolderOlderThan(child, days); + } + } + } +} + +void UBDocumentController::deleteEmptyFolders(const QModelIndex &index) +{ + UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel; + + QModelIndexList list; + for (int i = 0; i < docModel->rowCount(index); i++) + { + list << docModel->index(i, 0, index); + } + + if (list.length() > 0) + { + foreach (QModelIndex child, list) + { + if (docModel->isCatalog(child)) + { + if (!docModel->containsDocuments(child)) + { + deleteIndexAndAssociatedData(child); + } + } + } + } + else + { + if (docModel->isCatalog(index)) + { + deleteIndexAndAssociatedData(index); + } + } +} + void UBDocumentController::emptyFolder(const QModelIndex &index, DeletionType pDeletionType) { // Issue NC - CFA - 20131029 : ajout d'une popup de confirmation pour la suppression definitive diff --git a/src/document/UBDocumentController.h b/src/document/UBDocumentController.h index c2afaa84..88ed74b2 100644 --- a/src/document/UBDocumentController.h +++ b/src/document/UBDocumentController.h @@ -187,6 +187,8 @@ public: bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); bool removeRows(int row, int count, const QModelIndex &parent); + bool containsDocuments(const QModelIndex& index); + QModelIndex indexForNode(UBDocumentTreeNode *pNode) const; QPersistentModelIndex persistentIndexForNode(UBDocumentTreeNode *pNode); // bool insertRow(int row, const QModelIndex &parent); @@ -414,6 +416,9 @@ class UBDocumentController : public UBDocumentContainer */ void moveToTrash(QModelIndex &index, UBDocumentTreeModel* docModel); + void deleteDocumentsInFolderOlderThan(const QModelIndex &index, const int days); + void deleteEmptyFolders(const QModelIndex &index); + QModelIndex mapIndexToSource(const QModelIndex &index); QModelIndexList mapIndexesToSource(const QModelIndexList &indexes); From a40d1ee2f0bda77f0f9e1f859e8255adc61f538d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Tue, 3 Dec 2019 13:50:31 +0100 Subject: [PATCH 12/22] return to standard script on main branch --- release_scripts/osx/release.macx.sh | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/release_scripts/osx/release.macx.sh b/release_scripts/osx/release.macx.sh index 08774744..5e5fc161 100755 --- a/release_scripts/osx/release.macx.sh +++ b/release_scripts/osx/release.macx.sh @@ -19,7 +19,7 @@ PROJECT_ROOT="$SCRIPT_PATH/../.." APPLICATION_NAME="OpenBoard" -BASE_QT_DIR=~/Qt/5.9.8/clang_64 +BASE_QT_DIR=~/qt/5.5/clang_64 # Executables QMAKE=$BASE_QT_DIR/bin/qmake MACDEPLOYQT=$BASE_QT_DIR/bin/macdeployqt @@ -201,30 +201,30 @@ $MACDEPLOYQT "`pwd`/$APPLICATION_NAME.app" cd - # make sure libs installed via homebrew 2.0 refer to in-app libs -notify "relinking libs ..." +# notify "relinking libs ..." # libavformat -install_name_tool "$APP/Contents/Frameworks/libavformat.58.dylib" -change /usr/local/Cellar/ffmpeg/4.1.4_2/lib/libavcodec.58.dylib @executable_path/../Frameworks/libavcodec.58.dylib -install_name_tool "$APP/Contents/Frameworks/libavformat.58.dylib" -change /usr/local/Cellar/ffmpeg/4.1.4_2/lib/libswresample.3.dylib @executable_path/../Frameworks/libswresample.3.dylib -install_name_tool "$APP/Contents/Frameworks/libavformat.58.dylib" -change /usr/local/Cellar/ffmpeg/4.1.4_2/lib/libavutil.56.dylib @executable_path/../Frameworks/libavutil.56.dylib +# install_name_tool "$APP/Contents/Frameworks/libavformat.58.dylib" -change /usr/local/Cellar/ffmpeg/4.1.4_2/lib/libavcodec.58.dylib @executable_path/../Frameworks/libavcodec.58.dylib +# install_name_tool "$APP/Contents/Frameworks/libavformat.58.dylib" -change /usr/local/Cellar/ffmpeg/4.1.4_2/lib/libswresample.3.dylib @executable_path/../Frameworks/libswresample.3.dylib +# install_name_tool "$APP/Contents/Frameworks/libavformat.58.dylib" -change /usr/local/Cellar/ffmpeg/4.1.4_2/lib/libavutil.56.dylib @executable_path/../Frameworks/libavutil.56.dylib # libavcodec -install_name_tool "$APP/Contents/Frameworks/libavcodec.58.dylib" -change /usr/local/Cellar/ffmpeg/4.1.4_2/lib/libswresample.3.dylib @executable_path/../Frameworks/libswresample.3.dylib -install_name_tool "$APP/Contents/Frameworks/libavcodec.58.dylib" -change /usr/local/Cellar/ffmpeg/4.1.4_2/lib/libavutil.56.dylib @executable_path/../Frameworks/libavutil.56.dylib +# install_name_tool "$APP/Contents/Frameworks/libavcodec.58.dylib" -change /usr/local/Cellar/ffmpeg/4.1.4_2/lib/libswresample.3.dylib @executable_path/../Frameworks/libswresample.3.dylib +# install_name_tool "$APP/Contents/Frameworks/libavcodec.58.dylib" -change /usr/local/Cellar/ffmpeg/4.1.4_2/lib/libavutil.56.dylib @executable_path/../Frameworks/libavutil.56.dylib #libswresample -install_name_tool "$APP/Contents/Frameworks/libswresample.3.dylib" -change /usr/local/Cellar/ffmpeg/4.1.4_2/lib/libavutil.56.dylib @executable_path/../Frameworks/libavutil.56.dylib +# install_name_tool "$APP/Contents/Frameworks/libswresample.3.dylib" -change /usr/local/Cellar/ffmpeg/4.1.4_2/lib/libavutil.56.dylib @executable_path/../Frameworks/libavutil.56.dylib #libswscale -install_name_tool "$APP/Contents/Frameworks/libswscale.5.dylib" -change /usr/local/Cellar/ffmpeg/4.1.4_2/lib/libavutil.56.dylib @executable_path/../Frameworks/libavutil.56.dylib +# install_name_tool "$APP/Contents/Frameworks/libswscale.5.dylib" -change /usr/local/Cellar/ffmpeg/4.1.4_2/lib/libavutil.56.dylib @executable_path/../Frameworks/libavutil.56.dylib # libhogweed -install_name_tool "$APP/Contents/Frameworks/libhogweed.4.dylib" -change /usr/local/Cellar/nettle/3.4.1/lib/libnettle.6.dylib @executable_path/../Frameworks/libnettle.6.dylib +# install_name_tool "$APP/Contents/Frameworks/libhogweed.4.dylib" -change /usr/local/Cellar/nettle/3.4.1/lib/libnettle.6.dylib @executable_path/../Frameworks/libnettle.6.dylib # libssl -install_name_tool "$APP/Contents/Frameworks/libssl.1.1.dylib" -change /usr/local/Cellar/openssl@1.1/1.1.1d/lib/libcrypto.1.1.dylib @executable_path/../Frameworks/libcrypto.1.1.dylib +# install_name_tool "$APP/Contents/Frameworks/libssl.1.1.dylib" -change /usr/local/Cellar/openssl@1.1/1.1.1d/lib/libcrypto.1.1.dylib @executable_path/../Frameworks/libcrypto.1.1.dylib # libvorbis -install_name_tool "$APP/Contents/Frameworks/libvorbisenc.2.dylib" -change /usr/local/Cellar/libvorbis/1.3.6/lib/libvorbis.0.dylib @executable_path/../Frameworks/libvorbis.0.dylib +# install_name_tool "$APP/Contents/Frameworks/libvorbisenc.2.dylib" -change /usr/local/Cellar/libvorbis/1.3.6/lib/libvorbis.0.dylib @executable_path/../Frameworks/libvorbis.0.dylib notify "Extracting debug information ..." $DSYMUTIL "$APP/Contents/MacOS/$APPLICATION_NAME" -o "$DSYM" From 6fb5b5bc8d1afdc1e2f0bb25c55aadb4631a0ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Tue, 3 Dec 2019 13:58:45 +0100 Subject: [PATCH 13/22] changed version number to 1.5.4rc2 --- OpenBoard.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenBoard.pro b/OpenBoard.pro index ef75e0b7..11039a06 100644 --- a/OpenBoard.pro +++ b/OpenBoard.pro @@ -12,7 +12,7 @@ VERSION_MAJ = 1 VERSION_MIN = 5 VERSION_PATCH = 4 VERSION_TYPE = rc # a = alpha, b = beta, rc = release candidate, r = release, other => error -VERSION_BUILD = 0 +VERSION_BUILD = 2 VERSION = "$${VERSION_MAJ}.$${VERSION_MIN}.$${VERSION_PATCH}-$${VERSION_TYPE}.$${VERSION_BUILD}" From f6152d2e5cf31fe37594b18ac27ab51459ca19c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Tue, 3 Dec 2019 15:09:56 +0100 Subject: [PATCH 14/22] don't try to delete the trashIndex itself --- src/core/UBApplication.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/UBApplication.cpp b/src/core/UBApplication.cpp index 60d8f26f..709aa678 100644 --- a/src/core/UBApplication.cpp +++ b/src/core/UBApplication.cpp @@ -455,7 +455,8 @@ void UBApplication::closing() { UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel; documentController->deleteDocumentsInFolderOlderThan(docModel->trashIndex(), UBSettings::settings()->emptyTrashDaysValue->get().toInt()); - documentController->deleteEmptyFolders(docModel->trashIndex()); + if (docModel->hasChildren(docModel->trashIndex())) + documentController->deleteEmptyFolders(docModel->trashIndex()); } if (boardController) From 1dadb212122b6cec32d3fec3898b5d50351df9db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Wed, 4 Dec 2019 13:02:39 +0100 Subject: [PATCH 15/22] just need to delete documents, as these methods are only used when closing OpenBoard. Fix bad indexes issues --- src/document/UBDocumentController.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/document/UBDocumentController.cpp b/src/document/UBDocumentController.cpp index bfef2848..ebbfe9b4 100644 --- a/src/document/UBDocumentController.cpp +++ b/src/document/UBDocumentController.cpp @@ -2644,7 +2644,7 @@ void UBDocumentController::deleteDocumentsInFolderOlderThan(const QModelIndex &i { if (documentProxy->lastUpdate() < QDateTime::currentDateTime().addDays(-days)) { - deleteIndexAndAssociatedData(child); + UBPersistenceManager::persistenceManager()->deleteDocument(documentProxy); } } else From 84fad66614075b6ff358f11d86832672f4ce0a31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Wed, 4 Dec 2019 15:35:44 +0100 Subject: [PATCH 16/22] update 'updated-at' metadata when moving a document to trash (as it is done on the metadata.rdf file) --- src/document/UBDocumentController.cpp | 2 +- src/document/UBDocumentProxy.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/document/UBDocumentController.cpp b/src/document/UBDocumentController.cpp index ebbfe9b4..c711385b 100644 --- a/src/document/UBDocumentController.cpp +++ b/src/document/UBDocumentController.cpp @@ -942,7 +942,6 @@ void UBDocumentTreeModel::moveIndexes(const QModelIndexList &source, const QMode fixNodeName(s, destinationParent); sourceNode->parentNode()->moveChild(sourceNode, destIndex, newParentNode); updateIndexNameBindings(sourceNode); - hasOneInsertion = true; } } @@ -1224,6 +1223,7 @@ void UBDocumentTreeModel::updateIndexNameBindings(UBDocumentTreeNode *nd) } else if (nd->proxyData()) { nd->proxyData()->setMetaData(UBSettings::documentGroupName, virtualPathForIndex(indexForNode(nd->parentNode()))); nd->proxyData()->setMetaData(UBSettings::documentName, nd->nodeName()); + nd->proxyData()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime())); UBPersistenceManager::persistenceManager()->persistDocumentMetadata(nd->proxyData()); } } diff --git a/src/document/UBDocumentProxy.cpp b/src/document/UBDocumentProxy.cpp index cebd7126..6f9aa711 100644 --- a/src/document/UBDocumentProxy.cpp +++ b/src/document/UBDocumentProxy.cpp @@ -260,7 +260,7 @@ QDateTime UBDocumentProxy::lastUpdate() { if(mMetaDatas.contains(UBSettings::documentUpdatedAt)) return UBStringUtils::fromUtcIsoDate(metaData(UBSettings::documentUpdatedAt).toString()); - return QDateTime().currentDateTime(); + return QDateTime::currentDateTime(); } bool UBDocumentProxy::isModified() const From 7d570b3a2e3447df4e8d2fdd8e35661c754ee9e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Mon, 16 Dec 2019 14:16:49 +0100 Subject: [PATCH 17/22] fixed a regression where an renamed document at import would display the previous name --- src/core/UBPersistenceManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/UBPersistenceManager.cpp b/src/core/UBPersistenceManager.cpp index 67fbbd14..df371c6d 100644 --- a/src/core/UBPersistenceManager.cpp +++ b/src/core/UBPersistenceManager.cpp @@ -229,7 +229,6 @@ QDialog::DialogCode UBPersistenceManager::processInteractiveReplacementDialog(UB , Qt::Widget); if (replaceDialog->exec() == QDialog::Accepted) { - mDocumentTreeStructureModel->addDocument(pProxy, parentIndex); result = QDialog::Accepted; QString resultName = replaceDialog->lineEditText(); int i = docList.indexOf(resultName); @@ -250,6 +249,7 @@ QDialog::DialogCode UBPersistenceManager::processInteractiveReplacementDialog(UB } } pProxy->setMetaData(UBSettings::documentName, resultName); + mDocumentTreeStructureModel->addDocument(pProxy, parentIndex); } replaceDialog->setParent(0); delete replaceDialog; From 9adb8e6643793c85926ac2a22a17ebcc8d01c9b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Mon, 13 Jan 2020 17:26:48 +0100 Subject: [PATCH 18/22] Due to perfomance issues at openboard start, in a network-attached storage context, I had to find some (dirty) optimizations in order to counter-balance the huge response time of the directory scans performed when creating the documents tree (very huge in slowest machines (HDD, low CPU, with a thousand documents)). The simplest solution (I found) was to let the opening of metadatas fail, and to prevent any scanning. This implied to introduce the page-count as a metadata. As this issue is not encountered with a standard use of OpenBoard (with local documents), no update operation (of every document) should be necessary out of the described context --- src/adaptors/UBMetadataDcSubsetAdaptor.cpp | 7 +++ src/core/UBPersistenceManager.cpp | 52 ++++++++++++---------- src/core/UBSettings.cpp | 1 + src/core/UBSettings.h | 1 + src/document/UBDocumentProxy.cpp | 12 ++++- src/document/UBDocumentProxy.h | 1 + 6 files changed, 49 insertions(+), 25 deletions(-) diff --git a/src/adaptors/UBMetadataDcSubsetAdaptor.cpp b/src/adaptors/UBMetadataDcSubsetAdaptor.cpp index 54ce6d51..9cbe55eb 100644 --- a/src/adaptors/UBMetadataDcSubsetAdaptor.cpp +++ b/src/adaptors/UBMetadataDcSubsetAdaptor.cpp @@ -125,6 +125,8 @@ void UBMetadataDcSubsetAdaptor::persist(UBDocumentProxy* proxy) // introduced in UB 4.4 xmlWriter.writeTextElement(UBSettings::uniboardDocumentNamespaceUri, "updated-at", UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTimeUtc())); + xmlWriter.writeTextElement(UBSettings::uniboardDocumentNamespaceUri, "page-count", QString::number(proxy->pageCount())); + xmlWriter.writeEndElement(); //dc:Description xmlWriter.writeEndElement(); //RDF @@ -224,6 +226,11 @@ QMap UBMetadataDcSubsetAdaptor::load(QString pPath) metadata.insert(UBSettings::documentUpdatedAt, xml.readElementText()); updatedAtFound = true; } + else if (xml.name() == "page-count" + && xml.namespaceUri() == UBSettings::uniboardDocumentNamespaceUri) + { + metadata.insert(UBSettings::documentPageCount, xml.readElementText()); + } metadata.insert(UBSettings::documentVersion, docVersion); } diff --git a/src/core/UBPersistenceManager.cpp b/src/core/UBPersistenceManager.cpp index df371c6d..73dacd31 100644 --- a/src/core/UBPersistenceManager.cpp +++ b/src/core/UBPersistenceManager.cpp @@ -164,36 +164,40 @@ void UBPersistenceManager::createDocumentProxiesStructure(const QFileInfoList &c { QString fullPath = path.absoluteFilePath(); - QDir dir(fullPath); + QMap metadatas = UBMetadataDcSubsetAdaptor::load(fullPath); - if (dir.entryList(QDir::Files | QDir::NoDotAndDotDot).size() > 0) - { - QMap metadatas = UBMetadataDcSubsetAdaptor::load(fullPath); - QString docGroupName = metadatas.value(UBSettings::documentGroupName, QString()).toString(); - QString docName = metadatas.value(UBSettings::documentName, QString()).toString(); - - if (docName.isEmpty()) { - qDebug() << "Group name and document name are empty in UBPersistenceManager::createDocumentProxiesStructure()"; - continue; - } + QString docGroupName = metadatas.value(UBSettings::documentGroupName, QString()).toString(); + QString docName = metadatas.value(UBSettings::documentName, QString()).toString(); - QModelIndex parentIndex = mDocumentTreeStructureModel->goTo(docGroupName); - if (!parentIndex.isValid()) { - return; - } + if (docName.isEmpty()) { + qDebug() << "Group name and document name are empty in UBPersistenceManager::createDocumentProxiesStructure()"; + return; + } - UBDocumentProxy* docProxy = new UBDocumentProxy(fullPath); // managed in UBDocumentTreeNode - foreach(QString key, metadatas.keys()) { - docProxy->setMetaData(key, metadatas.value(key)); - } + QModelIndex parentIndex = mDocumentTreeStructureModel->goTo(docGroupName); + if (!parentIndex.isValid()) { + return; + } - docProxy->setPageCount(sceneCount(docProxy)); + UBDocumentProxy* docProxy = new UBDocumentProxy(fullPath, metadatas); // managed in UBDocumentTreeNode + foreach(QString key, metadatas.keys()) { + docProxy->setMetaData(key, metadatas.value(key)); + } - if (!interactive) - mDocumentTreeStructureModel->addDocument(docProxy, parentIndex); - else - processInteractiveReplacementDialog(docProxy); + if (metadatas.contains(UBSettings::documentPageCount)) + { + docProxy->setPageCount(metadatas.value(UBSettings::documentPageCount).toInt()); + } + else + { + int pageCount = sceneCount(docProxy); + docProxy->setPageCount(pageCount); } + + if (!interactive) + mDocumentTreeStructureModel->addDocument(docProxy, parentIndex); + else + processInteractiveReplacementDialog(docProxy); } } diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index 5d5cb705..e7a91017 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -60,6 +60,7 @@ QString UBSettings::documentSize = QString("Size"); QString UBSettings::documentIdentifer = QString("ID"); QString UBSettings::documentVersion = QString("Version"); QString UBSettings::documentUpdatedAt = QString("UpdatedAt"); +QString UBSettings::documentPageCount = QString("PageCount"); QString UBSettings::documentDate = QString("date"); QString UBSettings::trashedDocumentGroupNamePrefix = QString("_Trash:"); diff --git a/src/core/UBSettings.h b/src/core/UBSettings.h index a5e6d109..c79e4f95 100644 --- a/src/core/UBSettings.h +++ b/src/core/UBSettings.h @@ -201,6 +201,7 @@ class UBSettings : public QObject static QString documentIdentifer; static QString documentVersion; static QString documentUpdatedAt; + static QString documentPageCount; static QString documentDate; diff --git a/src/document/UBDocumentProxy.cpp b/src/document/UBDocumentProxy.cpp index 6f9aa711..0bf6e565 100644 --- a/src/document/UBDocumentProxy.cpp +++ b/src/document/UBDocumentProxy.cpp @@ -56,7 +56,6 @@ UBDocumentProxy::UBDocumentProxy(const UBDocumentProxy &rValue) : mPageCount = rValue.mPageCount; } - UBDocumentProxy::UBDocumentProxy(const QString& pPersistancePath) : mPageCount(0) , mPageDpi(0) @@ -68,6 +67,17 @@ UBDocumentProxy::UBDocumentProxy(const QString& pPersistancePath) } +UBDocumentProxy::UBDocumentProxy(const QString& pPersistancePath, QMap metadatas) + : mPageCount(0) + , mPageDpi(0) +{ + init(); + setPersistencePath(pPersistancePath); + + mMetaDatas = metadatas; +} + + void UBDocumentProxy::init() { setMetaData(UBSettings::documentGroupName, ""); diff --git a/src/document/UBDocumentProxy.h b/src/document/UBDocumentProxy.h index cb507dec..dfff6908 100644 --- a/src/document/UBDocumentProxy.h +++ b/src/document/UBDocumentProxy.h @@ -49,6 +49,7 @@ class UBDocumentProxy : public QObject UBDocumentProxy(); UBDocumentProxy(const UBDocumentProxy &rValue); UBDocumentProxy(const QString& pPersistencePath); + UBDocumentProxy(const QString& pPersistencePath, QMap metadatas); virtual ~UBDocumentProxy(); From c69d63b26ba951e9909f0e01de84da2832c181f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Tue, 14 Jan 2020 15:39:10 +0100 Subject: [PATCH 19/22] changed release version to 1.5.4 --- OpenBoard.pro | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenBoard.pro b/OpenBoard.pro index 11039a06..af3a0901 100644 --- a/OpenBoard.pro +++ b/OpenBoard.pro @@ -11,8 +11,8 @@ CONFIG += debug_and_release \ VERSION_MAJ = 1 VERSION_MIN = 5 VERSION_PATCH = 4 -VERSION_TYPE = rc # a = alpha, b = beta, rc = release candidate, r = release, other => error -VERSION_BUILD = 2 +VERSION_TYPE = r # a = alpha, b = beta, rc = release candidate, r = release, other => error +VERSION_BUILD = 0 VERSION = "$${VERSION_MAJ}.$${VERSION_MIN}.$${VERSION_PATCH}-$${VERSION_TYPE}.$${VERSION_BUILD}" From 8f913a1ad5ec28de6b9894f0db61f283a1437f66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Wed, 15 Jan 2020 09:23:52 +0100 Subject: [PATCH 20/22] delete documents in trash older than x days now won't delete documents x days old --- src/document/UBDocumentController.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/document/UBDocumentController.cpp b/src/document/UBDocumentController.cpp index c711385b..03d676fb 100644 --- a/src/document/UBDocumentController.cpp +++ b/src/document/UBDocumentController.cpp @@ -2642,7 +2642,7 @@ void UBDocumentController::deleteDocumentsInFolderOlderThan(const QModelIndex &i if (documentProxy) { - if (documentProxy->lastUpdate() < QDateTime::currentDateTime().addDays(-days)) + if (documentProxy->lastUpdate().date() < QDateTime::currentDateTime().addDays(-days).date()) { UBPersistenceManager::persistenceManager()->deleteDocument(documentProxy); } From df301d00f5f42488cb6ca5c38eceef467d1464e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Wed, 15 Jan 2020 09:32:02 +0100 Subject: [PATCH 21/22] updated translations --- resources/i18n/OpenBoard_ar.ts | 8 ++++++++ resources/i18n/OpenBoard_bg.ts | 8 ++++++++ resources/i18n/OpenBoard_ca.ts | 8 ++++++++ resources/i18n/OpenBoard_cs.ts | 8 ++++++++ resources/i18n/OpenBoard_da.ts | 8 ++++++++ resources/i18n/OpenBoard_de.ts | 10 +++++++++- resources/i18n/OpenBoard_el.ts | 8 ++++++++ resources/i18n/OpenBoard_en.ts | 8 ++++++++ resources/i18n/OpenBoard_en_UK.ts | 8 ++++++++ resources/i18n/OpenBoard_es.ts | 8 ++++++++ resources/i18n/OpenBoard_fr.ts | 10 +++++++++- resources/i18n/OpenBoard_fr_CH.ts | 10 +++++++++- resources/i18n/OpenBoard_gl.ts | 8 ++++++++ resources/i18n/OpenBoard_hu.ts | 8 ++++++++ resources/i18n/OpenBoard_it.ts | 10 +++++++++- resources/i18n/OpenBoard_iw.ts | 8 ++++++++ resources/i18n/OpenBoard_ja.ts | 8 ++++++++ resources/i18n/OpenBoard_ko.ts | 8 ++++++++ resources/i18n/OpenBoard_mg.ts | 8 ++++++++ resources/i18n/OpenBoard_nb.ts | 8 ++++++++ resources/i18n/OpenBoard_nl.ts | 8 ++++++++ resources/i18n/OpenBoard_pl.ts | 8 ++++++++ resources/i18n/OpenBoard_pt.ts | 8 ++++++++ resources/i18n/OpenBoard_ro.ts | 8 ++++++++ resources/i18n/OpenBoard_ru.ts | 8 ++++++++ resources/i18n/OpenBoard_sk.ts | 8 ++++++++ resources/i18n/OpenBoard_sv.ts | 8 ++++++++ resources/i18n/OpenBoard_tr.ts | 8 ++++++++ resources/i18n/OpenBoard_uk.ts | 8 ++++++++ resources/i18n/OpenBoard_zh.ts | 8 ++++++++ resources/i18n/OpenBoard_zh_CN.ts | 8 ++++++++ resources/i18n/OpenBoard_zh_TW.ts | 8 ++++++++ 32 files changed, 260 insertions(+), 4 deletions(-) diff --git a/resources/i18n/OpenBoard_ar.ts b/resources/i18n/OpenBoard_ar.ts index b7efd36f..e2303aaf 100644 --- a/resources/i18n/OpenBoard_ar.ts +++ b/resources/i18n/OpenBoard_ar.ts @@ -2852,6 +2852,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_bg.ts b/resources/i18n/OpenBoard_bg.ts index d8a32193..7dfd16f1 100644 --- a/resources/i18n/OpenBoard_bg.ts +++ b/resources/i18n/OpenBoard_bg.ts @@ -2832,6 +2832,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_ca.ts b/resources/i18n/OpenBoard_ca.ts index 2a899f0b..3210a81e 100644 --- a/resources/i18n/OpenBoard_ca.ts +++ b/resources/i18n/OpenBoard_ca.ts @@ -2832,6 +2832,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_cs.ts b/resources/i18n/OpenBoard_cs.ts index 05cbe5c8..a9dcb497 100644 --- a/resources/i18n/OpenBoard_cs.ts +++ b/resources/i18n/OpenBoard_cs.ts @@ -2838,6 +2838,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_da.ts b/resources/i18n/OpenBoard_da.ts index dab79e57..20efe670 100644 --- a/resources/i18n/OpenBoard_da.ts +++ b/resources/i18n/OpenBoard_da.ts @@ -2835,6 +2835,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_de.ts b/resources/i18n/OpenBoard_de.ts index 3f94c7aa..2c135f5c 100644 --- a/resources/i18n/OpenBoard_de.ts +++ b/resources/i18n/OpenBoard_de.ts @@ -1320,7 +1320,7 @@ Wenn Sie einen neuen Namen wählen, wird ein neues Dokument erstellt. Copying page %1/%2 - Seite %1/%2 wird kopiert + Seite %1/%2 wird kopiert @@ -2898,6 +2898,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort Datumsspalte nur in alphabetischer Reihenfolge anzeigen + + Empty trash for documents older than + Dokumente aus dem Papierkorb löschen, die älter als + + + days + Tage sind + trapFlashDialog diff --git a/resources/i18n/OpenBoard_el.ts b/resources/i18n/OpenBoard_el.ts index 240a9611..9362e12a 100644 --- a/resources/i18n/OpenBoard_el.ts +++ b/resources/i18n/OpenBoard_el.ts @@ -2832,6 +2832,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_en.ts b/resources/i18n/OpenBoard_en.ts index 0a0728e3..c32ca8ee 100644 --- a/resources/i18n/OpenBoard_en.ts +++ b/resources/i18n/OpenBoard_en.ts @@ -2660,6 +2660,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_en_UK.ts b/resources/i18n/OpenBoard_en_UK.ts index 0a0728e3..c32ca8ee 100644 --- a/resources/i18n/OpenBoard_en_UK.ts +++ b/resources/i18n/OpenBoard_en_UK.ts @@ -2660,6 +2660,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_es.ts b/resources/i18n/OpenBoard_es.ts index b8408be0..eced19bd 100644 --- a/resources/i18n/OpenBoard_es.ts +++ b/resources/i18n/OpenBoard_es.ts @@ -2852,6 +2852,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_fr.ts b/resources/i18n/OpenBoard_fr.ts index 6a2eb540..e2b4673a 100644 --- a/resources/i18n/OpenBoard_fr.ts +++ b/resources/i18n/OpenBoard_fr.ts @@ -1330,7 +1330,7 @@ Un nouveau nom vous permettra de conserver l'ancien document. Copying page %1/%2 - Copie de la page %1/%2 en cours + Copie de la page %1/%2 en cours @@ -2915,6 +2915,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort Afficher la colonne des dates avec le tri alphabétique + + Empty trash for documents older than + Supprimer de la corbeille les documents de plus de + + + days + jours + trapFlashDialog diff --git a/resources/i18n/OpenBoard_fr_CH.ts b/resources/i18n/OpenBoard_fr_CH.ts index 992ad7b4..3ecc9336 100644 --- a/resources/i18n/OpenBoard_fr_CH.ts +++ b/resources/i18n/OpenBoard_fr_CH.ts @@ -1330,7 +1330,7 @@ Un nouveau nom vous permettra de conserver l'ancien document. Copying page %1/%2 - Copie de la page %1/%2 en cours + Copie de la page %1/%2 en cours @@ -2915,6 +2915,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort Afficher la colonne des dates avec le tri alphabétique + + Empty trash for documents older than + Supprimer de la corbeille les documents de plus de + + + days + jours + trapFlashDialog diff --git a/resources/i18n/OpenBoard_gl.ts b/resources/i18n/OpenBoard_gl.ts index 0b5f4a7e..65792fb7 100644 --- a/resources/i18n/OpenBoard_gl.ts +++ b/resources/i18n/OpenBoard_gl.ts @@ -2829,6 +2829,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_hu.ts b/resources/i18n/OpenBoard_hu.ts index 24fc187c..265f7e6d 100644 --- a/resources/i18n/OpenBoard_hu.ts +++ b/resources/i18n/OpenBoard_hu.ts @@ -2791,6 +2791,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_it.ts b/resources/i18n/OpenBoard_it.ts index 986266ed..3e28600e 100644 --- a/resources/i18n/OpenBoard_it.ts +++ b/resources/i18n/OpenBoard_it.ts @@ -1320,7 +1320,7 @@ Dando un nuovo nome si creerà un nuovo documento. Copying page %1/%2 - Sto copiando pagina %1/%2 + Sto copiando pagina %1/%2 @@ -2893,6 +2893,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort Visualizza la colonna delle date con ordinamento alfabetico. + + Empty trash for documents older than + Cancellare dal cestino i documenti di étà superiore a + + + days + giorni + trapFlashDialog diff --git a/resources/i18n/OpenBoard_iw.ts b/resources/i18n/OpenBoard_iw.ts index efaeaec5..34bf3138 100644 --- a/resources/i18n/OpenBoard_iw.ts +++ b/resources/i18n/OpenBoard_iw.ts @@ -2824,6 +2824,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_ja.ts b/resources/i18n/OpenBoard_ja.ts index 326f9b83..719c19c5 100644 --- a/resources/i18n/OpenBoard_ja.ts +++ b/resources/i18n/OpenBoard_ja.ts @@ -2820,6 +2820,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_ko.ts b/resources/i18n/OpenBoard_ko.ts index 8c620067..6cb8e454 100644 --- a/resources/i18n/OpenBoard_ko.ts +++ b/resources/i18n/OpenBoard_ko.ts @@ -2843,6 +2843,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_mg.ts b/resources/i18n/OpenBoard_mg.ts index c81c05b9..fd19d89f 100644 --- a/resources/i18n/OpenBoard_mg.ts +++ b/resources/i18n/OpenBoard_mg.ts @@ -2839,6 +2839,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_nb.ts b/resources/i18n/OpenBoard_nb.ts index 82e4aad8..544ef937 100644 --- a/resources/i18n/OpenBoard_nb.ts +++ b/resources/i18n/OpenBoard_nb.ts @@ -2829,6 +2829,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_nl.ts b/resources/i18n/OpenBoard_nl.ts index f38f93d2..11cffe75 100644 --- a/resources/i18n/OpenBoard_nl.ts +++ b/resources/i18n/OpenBoard_nl.ts @@ -2828,6 +2828,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_pl.ts b/resources/i18n/OpenBoard_pl.ts index d3a75c08..662564c5 100644 --- a/resources/i18n/OpenBoard_pl.ts +++ b/resources/i18n/OpenBoard_pl.ts @@ -2853,6 +2853,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_pt.ts b/resources/i18n/OpenBoard_pt.ts index 5be4c23f..408baa3e 100644 --- a/resources/i18n/OpenBoard_pt.ts +++ b/resources/i18n/OpenBoard_pt.ts @@ -2868,6 +2868,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_ro.ts b/resources/i18n/OpenBoard_ro.ts index ff9d406d..ef2e9ed9 100644 --- a/resources/i18n/OpenBoard_ro.ts +++ b/resources/i18n/OpenBoard_ro.ts @@ -2839,6 +2839,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_ru.ts b/resources/i18n/OpenBoard_ru.ts index 69005cb9..9ce21800 100644 --- a/resources/i18n/OpenBoard_ru.ts +++ b/resources/i18n/OpenBoard_ru.ts @@ -2839,6 +2839,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_sk.ts b/resources/i18n/OpenBoard_sk.ts index c259db3f..3f978d07 100644 --- a/resources/i18n/OpenBoard_sk.ts +++ b/resources/i18n/OpenBoard_sk.ts @@ -2880,6 +2880,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_sv.ts b/resources/i18n/OpenBoard_sv.ts index 230a63f1..82e35991 100644 --- a/resources/i18n/OpenBoard_sv.ts +++ b/resources/i18n/OpenBoard_sv.ts @@ -2840,6 +2840,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_tr.ts b/resources/i18n/OpenBoard_tr.ts index 08d28451..a3fbeffc 100644 --- a/resources/i18n/OpenBoard_tr.ts +++ b/resources/i18n/OpenBoard_tr.ts @@ -2827,6 +2827,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_uk.ts b/resources/i18n/OpenBoard_uk.ts index 8c06bb54..a0017478 100644 --- a/resources/i18n/OpenBoard_uk.ts +++ b/resources/i18n/OpenBoard_uk.ts @@ -2825,6 +2825,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_zh.ts b/resources/i18n/OpenBoard_zh.ts index 811b8223..30a60e82 100644 --- a/resources/i18n/OpenBoard_zh.ts +++ b/resources/i18n/OpenBoard_zh.ts @@ -2827,6 +2827,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_zh_CN.ts b/resources/i18n/OpenBoard_zh_CN.ts index 811b8223..30a60e82 100644 --- a/resources/i18n/OpenBoard_zh_CN.ts +++ b/resources/i18n/OpenBoard_zh_CN.ts @@ -2827,6 +2827,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog diff --git a/resources/i18n/OpenBoard_zh_TW.ts b/resources/i18n/OpenBoard_zh_TW.ts index 92ad5ddd..cfc85e68 100644 --- a/resources/i18n/OpenBoard_zh_TW.ts +++ b/resources/i18n/OpenBoard_zh_TW.ts @@ -2821,6 +2821,14 @@ p, li { white-space: pre-wrap; } Display date column on alphabetical sort + + Empty trash for documents older than + + + + days + + trapFlashDialog From c30b85376a66a1bae2fe9f8a37d0701723261be8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Wed, 15 Jan 2020 10:26:44 +0100 Subject: [PATCH 22/22] set emptyTrashForOlderDocuments default value to false --- resources/etc/OpenBoard.config | 2 +- src/core/UBSettings.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/etc/OpenBoard.config b/resources/etc/OpenBoard.config index 6e85db95..06c81ef6 100644 --- a/resources/etc/OpenBoard.config +++ b/resources/etc/OpenBoard.config @@ -93,7 +93,7 @@ SortOrder=0 SplitterLeftSize=200 SplitterRightSize=800 ShowDateColumnOnAlphabeticalSort=false -emptyTrashForOlderDocuments=true +emptyTrashForOlderDocuments=false emptyTrashDaysValue=30 [IntranetPodcast] diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index e7a91017..80e14677 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -460,7 +460,7 @@ void UBSettings::init() useSystemOnScreenKeyboard = new UBSetting(this, "App", "UseSystemOnScreenKeyboard", true); showDateColumnOnAlphabeticalSort = new UBSetting(this, "Document", "ShowDateColumnOnAlphabeticalSort", false); - emptyTrashForOlderDocuments = new UBSetting(this, "Document", "emptyTrashForOlderDocuments", true); + emptyTrashForOlderDocuments = new UBSetting(this, "Document", "emptyTrashForOlderDocuments", false); emptyTrashDaysValue = new UBSetting(this, "Document", "emptyTrashDaysValue", 30); cleanNonPersistentSettings();