From a822f36a9cc28e1b6995e1b9d6c46e90b2aaa43b Mon Sep 17 00:00:00 2001 From: James Ahlborn Date: Sun, 14 Sep 2014 02:18:45 +0000 Subject: [PATCH] add some unit tests for calc fields git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@874 f203690c-595d-4dc9-a70b-905162fa7fd2 --- src/test/data/V2010/calcFieldTestV2010.accdb | Bin 0 -> 712704 bytes .../jackcess/impl/CalcFieldTest.java | 128 ++++++++++++++++++ .../jackcess/impl/JetFormatTest.java | 3 +- 3 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 src/test/data/V2010/calcFieldTestV2010.accdb create mode 100644 src/test/java/com/healthmarketscience/jackcess/impl/CalcFieldTest.java diff --git a/src/test/data/V2010/calcFieldTestV2010.accdb b/src/test/data/V2010/calcFieldTestV2010.accdb new file mode 100644 index 0000000000000000000000000000000000000000..e8ee9c3ecad93814985d738812ca0df323da4b3e GIT binary patch literal 712704 zcmeF42VfLM+s9|`EtX{iv>FbU0;D0an$jo03L@A_I^ z8=wOAuIMYT`q>qGA>aR*y}gzTfe946#;hP^@b8~Wz%YuUF$ADDn|d^Q zd30;ED#{=M5+DH*AOR8}0TLhq5+DH*AORBiD+$DX)6h`2rD2yhoAE(}=+oJu)NDL+ z@8?p^8WZ?B*8IzhRS_yy*$^zdLR160Y*rF)ccjP))0PBbklaQ`{4!Q49T2KzcmiU- zRw`6dI4}%@bV$)wrwCV}W`K-Qc?YyXfJ0J*xJ8*MIzvXd1cbw3rZ6*){d$L?Q)t0n zc}T7ik|GMid{ZbhAO^y`1HMK%bc$#c(K|rOp#z*y&pSX;Xst9mow-M=Fv&dFUBE=7 zRO;(km%3&}c#t?Obt9z?yhKSJT2zDz@(GZV+a(XXI}ekURD)Bcs47*7zhYIWYE_I% zRrxsPs{-sb@NMVvDMrj{oJ**;?{u|P6}f!FRk|vNdl6E0fV)bkD8+fD%7%XhQaaQm z#CNDnwH&$2XPR0Gnbio7(dSu6SEQCfQn8BEK2s1{g?vKYQo>b^TA{VBMye@DE4o!e zj!5sIrXnwKSE>@E%*0*^Ejs!6=c&aAsYc9DHBGHT4#jFUS^)+`ZOUk9_`0DXw((~S zSV~ioZ^j8YDxC(Y0>(De$0Cii2~QfS5vg2V!Sa0-K@NvLl`!|_3DaICzfO(HZ1D|K z4x|p!`PuMk#~!6Z@fn6aMmg~rExU@uXB2j)3dd&zcC;ychF~|J`6nO$O)zXL-K$>@e=p(B^BJ9mrGVXIc9=)g&bRXU6@ z=ol8LC2&c1Ryu>hDi6n0PbY0IIyVgsh5EBtf7a;F4{a!sboHY?u_v7-Mbk*MLq7aE zVvTcx6mBFy0wh2JBtQZrKmsH{0wh2JB(Ogcuo+)OiC$57GVT4;(dz$OI_KeeJ04() zw+@2QfT0ZstO&3Rko2BTyZMY+h79yG{~$kO07<8xN(V!*_lQ9do=UqO?fV9VAfkSV z?s<-FK15e)hoJ);Zesv5V9MZ~JoDFM4F1pKMN}J%G1THu#uWW9oV zc(`4vA1H^qA9wpd$PRZus7}C$g7s)NF~I1AJjkxbD20q;$fIWPwz_e8llkj(6iB4NaKF@mGDX}uNO^zpV$=&j>SMbE!P_x{Cvy%4SQd}LjHM-CpQy_&X)t(W zrJ1A$A{OaSS9&|r$ZQe5Y49S0l_o$w4y1|kNn;Hf=>ZEr3k$13>Q)sXOe-oMeqp=A zde%5+DH*AOR8}0TLjA1CfAX{2&(ZdTXQS|4WGe(s`q^z}eOLR@B<4 z?5MD)XCmt&M@9Y^aaTlHL?6G0{#IHZNq_`MfCNZ@1W14cNZ{{AKtH0`!$Q^XVR|NS zoH7x-%mKk{3jwiNp;tIu~-c(c` z;v$_xCBY#ldUmsVamd$CJCZDiWFSxAB~FqK#HX1|g5(5yoZH6%i5?GxBAsj!ncHp= zs5=MI>vA$GGBUEVa?8p}GN$L2Ne#ue@dRaNl({?&(=)HAbfFomt?99_D5q+^D^5Gp zt2B3hM#b!+g0h*jOU$@7E1;yPw8HdiZ+ewwmCi14d3A7kEiZ!vtw~4Iry?WM%0h{c zQI|Kso|&6DB5T~JaY^G-Gsoqnk4w)Pl`$r1+=$HF)Z7un^2QCYOWCxT&Ss*8Wy{OV zvX)g8m7=&h@L>PIWed&ByLbnKNfo#Hh$!W=4oikJP~Iv z^d;QaH>j*6H_Jrd#}iPHu`qXGMu}FctGD-2B^d>|(@Tr0O0qI4a;F!S&UV#mx4^MX z$=w47RumOw9+{ivYPxZaBAKDHb4(#UJmKES93Jn*Rk?0`f<4}ize^$Bfn`NirTFsd zvi39s^p|CX_UR=)wmNC|IhoqWZu*o}EnJvUx_ov)UXk|hWO`SX<(B5;=FLWBXzzo> z+pg0WWCWrolD$JrMS2HLR^}hu7vUkhb@gIo5+DH*AOR8}0TLjA)+XRE9*S(LTWxcM z#>6GnV=nYvaJ05!l-DW*>P#uU6OV(cMx^`;z$I7Cj6I7CjcI7Ci}IPfk;Y^XRo!VxBp zgWw1k$H8z!h@&eUk>cnMN0c~vz~K}}FF2ybfu2Kbj5zwj5i5>E;pi+5jL^m&ERNxD zbP>lGIJ$}>365^!NQI-jI3~dnCys15dWa(zj-KL}0Y@)!6u{9(9E;#Ed!umZQ3*k( zM@gi}wz_kbY_T}uMgk;20wh2JBtQZrKmsH{0{b@s!{{1qX=r!Z|6Augk^l*i011!) z36KB@kN^pg011%5Kb!y_bGGJ|)EdGTwnT`-*c#TTH?7uhSw4_{2V-k?Z_1NYq z%VAg!o8_>J1EvApe@adwH(^$Kzy{(fjG3$ z0lqx*ETe;Y+UP)hw9$b$w9x^~2j*#`195Z~f#NvWa&!>~EEMKxdjwc0%sWJUV4*O- ztL5lsIl7AjHVgCPEJqK^p&$FBT=TW9fjG3SfjG3Sf#`g=7y^hRUL4SHzP3IPM;pth ztvI0J{C1Y3z2)d24j4hqORyY?mSeCuU=}ei({f~4j%;zjP-0%X<(ObOCW_-=1f^Jx zRLhYj4j5C+OR^lvmSem)x+7?;^<%Q4h)3=;)d_zS;nX`5FTp`c(xq<9Yh!18Keb9T9QpcS^*e z-#!sXjLVE=UJuLB({l7u+(>`~NPq-LfCNZ@1pZD04C5T9Rh}TP`Ts0G9!Y=%NPq-L zfCNZ@1W14cNPq-LV6PL<^UUq_T>sV?I*d4{<8NI;7LEi+fCNZ@1W14cNPq-LfCNZ@ z1W16-|JepefCNZ@1W14cNPq-LfCNZ@1ol4ychG7kpKyh011!)36KB@ zkN^pgz~700!}x3`{eS7(v43|U*LUOIywqoaUcS#V-R#sK$aPNLNq_`MfCNZ@1W14c zNPq-LAP@nE@##+b|1#x!ORNe4@1_Dffj{5A2+G3t0 zKmsH{0wh2JBtQZrKmsK2*AXy`0(TF;pSnM~C^{ngKIZ~wjPuc`IZ?kxo)pTq;g=jvs#LjJ zrYck=e6Q)8q#FN?Q*kOnH7FG;D{;AmpY+ZUE&TgW%wr(od1|RDR)t#d7%WQW|2N7b zI83Q}EWH&Ss{Ra0J zp<1oda>(-ktM#aacRcn$r4%Sxi_8`w<7!n3SMy3r1*}w!|CW1{!YXO53JAGni{`ZB z)J;J0wPW=t`zR%UgM9uDGsPyMUa>%%OYE)xHpS*_ zF^}O`;m^W9RhL4LSEE*?MAvlouTweqs#mN9=Muc*%F8a2dbN(>2(bkF)~k0tO;V{k zn+(Hjy?lOa~db7eU612e<% zyOE)QOGU~2|HgYVNNSWp_>a3@qClwp{*@NIYy|)f5SXNu}Yy!=(VetJas>WzH_>H^uA&wqdl1|ss3}i>dn){s)nJ4SK|F~+9D4$mbxeoP0))#|A|J{u1x)|HN)N^m zT#NuLI->r%wPtCpBeYc0@f|5f$x`uIf{Tq@9g83|S*fIsvm}OcwKdHDjlaN6PP+rry8X0uhwG8l9T|Lx@wyX6on_YIaE&s>mhG zDx7r`&9We<2qfhKEtdd)t>oNGGs7)x&a-AQt)mD_*IHF*L5HcvfBij0MC^L(O`x~h zp!Zireq!ZIB3dS?#(!S71brbHn&N)r>wHs7>xfli>#Zxi+-FpPq!fK6F08BIF2)xi z8I>eofI_tx;l*fJwT&*j=4Dv!L7tG>#~Q1C8Ghr+cvmu>+#($1cVIleZE`C*E8w3yQ>@ACm#OEAteW^D`*t7vZ)ePNcLwrawJ*Ft8JNET z^0Qc~>!b$IRy4n>QeE|y{7YU zhe~?R^^@I9uRuCv5RKmrtD>wUeCu~sQO)!UMAxPTTR%tzxO&QcjQ|*e+a>?ML=ROV z+O$AVw@5_o^yb25q((uIx(_PO#yt@PyLa*Lv|^*wpvn${caSWDu6NZI(Xh)VNvti9 zJ6z-l|_ACx|Re%5ccchi)3J$1ZFefuuAT+8%to(H+a>43YHa`@Ncx83TYivMcd z)}p`-4XUAGg#MhZKXK~%x1q4@fT0`qGlhpvgCe_QG&Hog-0-{@ZadPnM@$G;XGjvA z1~eKP>v#&`lvgn2sbLo-o}K`r)U# z2=_m7+1xp?F0Pn?xrMtzg`ugKJ4ZT5fCNZ@1W14cNPq-LfCNZ@1a^r4=l|a&OpHVV zBtQZrKmsH{0wh2JBtQZruvZBrwMK4ntsx|)HH5fjw2HJA32_)5o#qpHw=!;re%k9k zqvJp%P*<-FH0BIKoAOR8}0TLhq5+DH*AOR8}fz~6y{(tMS+#e-L{~s^Av;V(8 zRt|L{0TLhq5+DH*AOR8}0TLjAy-0xl|Gfx%A7mx{e@yJf{{KE;&n!uR1W14cNPq-L zfCNZ@1V~_iB49Jlmx%;1y|FpVo28p)BELT_NtlQE|HQ-NsXE~dyUllQKbam-HbaGD z;%%7=R;HfhjBO?rev$wQkN^pg011!)36KB@kN^pgz`i127)84OFZtWlqtVOVXZuPc z=1T%3KmsH{0wh2JBtQZrKmsH{0wmDd1X}w1zcU{4W48x>{%_;+|JJT3$|C_1AOR8} z0TLhq5+DH*AOR8}fjuC==l^>Ek4Z^@1W14cNPq-LfCNZ@1W14cNZZa*wN36KB@kN^pg011!)36KB@kidaKfY1LA zjC!J$BtQZrKmsH{0wh2JBtQZrKmsJNCj?sh{67xQ|FMSze*PcI_x}|)5+DH*AOR8} z0TLhq5+DH*AORBCe+cmT|Nc`K)Pw{`fCNZ@1W14cNPq-LfCNZ@1pX=lEq(sq6VLy# zM+biXAH(PWe^rH1E(wqT36KB@kN^pg011!)36KB@w15Dg|F-}dlaK%jkN^pg011!) z36KB@kN^pgzyU^JH=h3+%J3AfH=h4vkMTVJZ-YRajxc6k7@z-pP|-yKBtQZrKmsH{ z0wh2JBtQZrKmz-m0H6Qw^D3YMBtQZrKmsH{0wh2JBtQZrKmsK2mlJ5|^Z!10{*OJ} z^ZY-|;d%bQ!w6S1RK6-#%T%#yX!y&E!3;=%1W14cNPq-LfCNZ@1W14cNPq-(LV(Zz zcLIk&BtQZrKmsH{0wh2JBtQZrKmsK2Hz8m%E_O;$^6_rJ=UF};?z_s@X~jnUQh#=^ za;RWWq5B~U_6SL1$DdOA`G1TR!yy4dNMi=rbwDW2wZ(urm4J7O9Y(06aQLNAD%4D2 z({l@WQbeg8Mx;k!Pe9Hmn3X`Kt5O&r6suGiA=F}T0nVJG)~| zLwfPa)2S=eQm@$4)GC}8E2lg5bTw6F0)hiXg0RC70-tv5G<~od1dk*@0wh2JBtQZr zKmsH{0wh2J`;>rTOw|2<$JnUeqskN^pg011!)36KB@ zkN^pg0131L0h_TtQp6{tB}O?Fpw@oLJgO#vi= zx!FSH_~aCaX*|%_6aZELqKW5;ziB)m#sS)R!0u-XpkNB%G9Iw(5X=+~%XlEDk%5BC zctDIAye${j!PY@%9s=71a|@Oj%C;1ls|9X*f_-CQ&|77}B4HJ57pB7gphi_;dWC9L zsNEjjR)>hjMnl8Wh6Y8&QIBDE5h8I#o%un{Yc zd>mJSTOnLx`%$et98l+wk^l*i011!)36KB@kN^pg015mB z1nOHuW>RYiiE9lZ`;QF$2zpP|X%!*v7v}dwn>`R>7=3~=XC!Az_J$f}J@wubZJ3q> zNPq+TBc9SKNNsq-Tn@-ZTAy0V%zDbv`olqD#sa{P&d$D>K`DaMTAskA3XT?;ij3&p$SA zA9Ll_?pr=R_R4R5y=?oRNyy~jvZL;qq3YGQHpjhh6%PrS5(-PCdw&Ug@)gHP_qk`uoD_N%2!zZrP%*0hU0&KtU@G`QFHE>T;ay|b)g+)#l zSKADYS(1L^85}wzY)N66O zGY|Q4UE!7_$Gs=Y^|oKL3xSU%mR*}hWtp09n z-ty-b&+fMQg*#R){myyPNuQ00QQvk6R!PzQyFEPfr!y|RIXY$DX|`WudLQ)R$F=>Z zob|EYbKPrE%_azVBO{^Xu`;tCI%3 zH|l{i3Ma3$7f_zubV%RplT*&fuAH?s?C!Y(CMD(nG9c^I4?pN}^Cy!d=7lZj zn)=A2TVD9~hxh6Z`nl&T-%lKR?z|H##@u^L^;^fy?l!wk_W?`KD!d@!%(CMx2EUX&$)N#W$1%FWY)Uy%aNBy$8e$?6ZaqUk^ST=C> zr4Rn^_JISBcy!1!V=w$J>F}z7Mbnn0oKX7aO*5~F==J`bK4HVIz30sMCog;^{oO^q zt~|y0zH#!Y88^N0=9t>Ntta08@zVRB{MWW;MpZvH`Sl+nfBPczwYPtN}Px`#gaeDH|K!fEw=pK3qVlka@z;pwICEiM`SNJ!4d zw?*`xQoZSd-k1Mo``?ZE^&1oa`1Ia?2mN}~8IPSk_QW5UjXZhr3bGrssB?3eF;ZS%;xw$e&z+Yen0e=$zOk0kyU=_?rdkFNP)TJo0*(u=0YTz}&j)$WGZ<1@0yOnBszHwx4P=Pm!FHnwv0x4-=CIP=o* zzSFOI^7ygy;xhiY|JKBspT6zB=$4$YkSo_dK6CM{GpGG}<`c_)8L;k^jc>fLtoq|S zN6nkxJN%FjpAT#M)pci08`$&D#}D85)CrS^KK_Nh$a&M@(>l$WH?IBn#~j`;?3XuZ z{A<-qMMpi_y{2?=_=|n7c;v|$AI_Qj(nSeRwH?y-x-Yk#^q( z&VxT*_Q1mh@4XPxVOHL_;kQ)$)U&Yj@PA*o@`8$Eh89lxW6bi^>mM$BZuw*HoHRB0 z%DWyIu=$dPFE(v>>Z^NKWZiO4P$%Q@G{PYYw^Pt>+dWR&d_G7JYHX z3j<%t95}9eM|5PUV@A8*rmX65PtS)BGin_dcmM9N-VrBHx%$(CpD+34w_B#Z`o(K! zuYUWHv&)LB{%_>->mPWuZ%t5eVUO-d^hx_*@`ZV8iq8$c=flT44C;2#qVVrKz3_bd zZoeKkcKQdW^iQ|H+M)QuSvlWc^JmB7hQ^+pam7)OZ|L&%^CjP|ziWQNUD+kKbSpeI zBKCrZ-Y9wPq(^Q#^w$v&SN6=kvCHx$JJPb|zZc)W-Svf+d_3#$Z{O|p%Ziu2Ic{*; zq77YbCmg=6?N^_@`{as&PbSYjz1<^crne34^xiMmuehoAMH81SPCma|POqcxym-^l zZY9tCa>u5Pqo=G0zWnvuYcCn}{Y7Kn+E6q6nmg8B7&BmX?9ALBb5}01_YbbSX8KhZ zzmay3{f&3V6?N=3=Z7J8{_slPj*s%Y4XPac{lbCUkNoxd@UeG%G->gjrO$y3y(W#Yp;S{T@qi} zJm|;NHwOHA?p+JkJ$~s&Ki&H6*>A4?aKz$|tIs<4!MTOk|2F8;xBoNm&T#`0R=$4U z=XvoxoSp7nlXymESlU$|9r;k(4&MxG_j2^NFL!$Sho649@u?oCEbR7H_kuOAznFAd zY(w`$W^exGjYH>7`16 zv(hSNJbF&ima6PoM|S$xPx1W^|0MLm8E=HW`TA=o=b!V#V_iB=zG=&mH8V$sS5_XD z((RP**L_#g>DuMJ9$34oX2ONNzwUHe-ADay{qGw`^%?Q~t=prES8h&sq`sCmDR$z3 zRmUzZpLx+E>(@SV_2G{ldET6l&%1R@cDMT;UpKujA@S;O(&MsUe&Dl{pYL(|DZzb* zTy*$^-;X-so+aJ4WrkGu*tFzcTmOX3%S!LR@SsDEIoa8+_Z#7-y*K-;tB$(r_^-N6 z>9loJ?Ms;-A3Skm#lnP6W&geWo#C(USU3KsbN*L%eVfCoF1=^Ukim(ky}SO?{9}K{=ZN0|K*wU`Tt*zm>G}&36KB@kN^pg011!) z36Q`6LBM9r&~yA>17m+#oUJ3Yz7o4UAokv}LzMi<0(*M>zXU|VE}QGn$bE$NQA)4P zXS&0%(wp^GL8uwvwf>(K-+%o-sHHd8ih*{|YJRQ&tN|ywJ3OoTSpkM#%`Zr==I5O` zqDqQj{JGZu(riHzCKl(@O+muMp-(&u z@agmtCbg<-)-TK?)UFW`S*EX3BVUUkmUx7AcI;4;8wrpA36KB@kN^pg011!)36MZ5 z5HJkGX^9E(TmR4U=aB?RfCNZ@1W14cNPq-LfCNb3pF<$2HHsS78bbD9u{%%pt+IAs zs|XRD@K6<z|+UeAM&*-gwl;ejB%LxM@T2hCUnKUw^^+dFwl`fA_ibpPTet zo9DJXd+xInp55`x`e#mhCheI&p1$|#W1k-R^lwky{nX;85}x|{KX?A8qF7NMP#oKdkYY3n)W zu^N$m^{_Yyh2DO8l=vqCE~mYQvm(An6M#-B)iB@^O7V+@A=5a1WG>;Ok(u|(d!#o~| zWG%T?qE()w^H*4SO-Rgvpcb~uNBVDtfT2$FIJ*&xW?JO~I{9_u%;T&^$(uuoR(X#W zF?pGJoCy)lqeR=eTPK@(ka?VeWGz97R(ZP?blY3zaXJLG0A+~EKKr@vKLE-j(l_ek zGzjWus3hB9IIsn7p(9`v7_WMI-PP2EsIi|vrA2g%dR`y%kQ}!_^&-aHe1&;K9;ZgZ z{!eZYtlK0AJnTP@YC(4$`l3Egg_MV&o8i*U7r1$+<)_m*Qy zWLr|)6q6~PujJJ4sd@MqO4>`{*=?sU;SuF}$p(f}8 zFM}|Tpa6HUjRlGQ@px4ZAq7&Wx)6QP0J`~evU0YL5;LGdUoGn>5v}j4cl*fG-;-)rD_H>iDS(iS&T9(3uaZi#F~7Y&oyQPmiMC21 z5qBjE=^^JJ1BoxYT=&NNA~K9y9GNqcGZ8A|05APje-oXff;&mQb0Yx~Ac6gmz>E18 z%XP9rUKE;?I=1IA@ySDmrVSpSIxuC}$h3i2BQ|AVa$0=az{HW`M-CsHm^fm@(3InP zMulhRR}_!!nUY^#m|j|3UNo(^rWU>vi_4d$R8`g%udEem@$i~aTwPOIRhd#%u{6K7 zw4l6raN^jWgGWMCVtl+rNXeQow&#e15rc=N4<9;wu=kG8)G6a32T{{fhNTZn86I!$ z2$_(AWP?W}3`mK zAYl+*IqRiHVoyO&VJ?0%<%e#9{xv-wxy*%s4t^lB@R_ZSN9?(9Ptw1)Ir!Z*eayS2 zxvsmX;fNzXX=*s+r{W$u6Y^)^_NWH;IQh8Ci9@K|Fv?OpajyH1IQ)Ju#b3Ghl{dvo zabHr2Sl(MV!{RUm@ze2_0_~Gg+JSg$D;@5Ua3$b80eKA6afFk}Az8$oaTp3-iM!EZ>QK!>${=xTu$MsVIFRxzBQ)3N zECIxYUmo;G!QUW+WG2=Ic(7bjsqeSE4OTEy-C9Lafg8&f1T>(;1GN=}4QQ zoH)w5S#98MhrI({p0r+1l=lkz4P7wZfj12IY%{zo-R0hnmoY`EVT2<8J(JJWe+L39 z(K70F>xeQUl-+pp5IM1_U`KLcVR223-7#Z)^3VT`Q9+KGrIiW8{&T#`IXE$-&gC37 zWF?$-M^=8}z4yc@ha?$xdoP!3_#JRXIehLyJ{uT=??X*(QB`^I+J#7~Qj>G8I59@y zn_w7Yph4sI87#Lz0XFm7)5&H-XlI*U$C0rRv;7Qc38WCfV8r+rr1%!b1kwRvPU>gWH7J+VmTGm3%cLZ5d;1 z;f@ZyNuI$OnYO5;p zYdhga4L=%22W9V3Zv(e+wv1GDQ!*|^$&ah>`|4pjpFAWvWn@}HYJKv+q2rTN2i6Cx z;R8nuOB*~8*YNZqDXA%GDM`tRBaZ7;7?g|)b=9Kk{E9gIE|(YA#PwT=ALK*l;%2a- z%2sI)o10ZySdHK0s*>8cyv4Zq78lLUNl(XpOIpH^xydPM$@Qs&QZqAqg|xvnwWPGL zI4%J{ukmrZ1*w|2qWs$Y0^Fh$#}!vDLMe;matf9d7vkqVv$UW(zk1b~>PTfopZJkd zZBMj^ZXX(Bi*OjZQRw#v+-#1}n7E{Rym{{L2pFB7`ym0>{C|l`9QZ9tG{k{nutb|U z@P$pZivvS5i4JjKXfH8H92g=@3>F857;z1P14EUGq2j>TJ~2!j7*0(L7YBx76C=cd z!Q8}1abS2jF-ja5YEE>D1H;;h(c-`$d18z>Fvy-5D~?Ms@YO>cm%-6f9GAn!l5skiW>=#011!)36KB@kN^pg011%5?h|krA4E3Q|4%}f4HL*Uf7tzOnPM*y zke;*d@?)6J90c$k0MKXdQ2>4B9tzNB?(qP9<{lK#XYP>!edZn>&}Z&30)6HlD9~r_ zu>pPN9w5*o67DeyJ<{MFD$r+_VhEszlt>RXxW^pynR|3Wk3P7EA@uNqdz?X^xknWA znI2XUnQi35J^rB2^dN-dMgk;20wh2JBtQZrKmsH{0)Gnv4r6GO{eOA#i~l6~MEA-j zAF5u?;Dy=faRvweVNW8y+CNmDDaXLgZGRvjom!(VYhg}iMroPUnE3=BUR7lkMGL2w z7FCs){`z6PQJ0fZk&%&=m0MO;k}*Bk4ARf~&7jPTGMA@*?r+rP6_qYDV`)1Aqi*)X z++}4Yxml*Ce)4bBEiB5Zn(s=etqb5)w!F;D2#S;PkwBN<<&+ zr$+~jy3*W|qS6XexHecY>dLZ8XP3CVw8er^cT}dCNZT#g0_BB785LPGwP-yI5n7ia zrAA6COLMFtRD?m3BXhG%<+SNSMBOl*RF6GG)aA@B)u~_;R38$I5fqoHLu6g%{Gv=9 zQ;$o;N|`K4Qx1{ZaeLJ)lz67GL#(?5<^V?B06Vl8VE0a~?IhYr);e7;B<4l}BtQZr zKmsH{0wh2JBtQa96R;V1GXI9U9zA&P_1~mR;k{+cQhC8*IIefRjiwCjyRzw(_RNU# zo~Xum5*qQ|te^0{qwi%TzlIb78tjyv#QP zFS?cEWjS|-?#wfAbhmfu_I zuRq6zH8v9O{`3pjt(K_y5zsz6nfc*S9 z`Npz%`o}Vq&DFlR1fZ+Rc_0B2AOR8}0TLhq5+DH*Ab~w0U>Fl+B2T>q`>g+G`SM5t zBtQZrKmsH{0wh2JBtQZrKmxlwGkN^pg z011!)36KB@kN^pgz~7&M&Ga)p$0X}p4ov0!th5y`s_BgzvAOQ|p zR=_KToQJ9jYPy=FQsJJ2iTXm7HJO~#?aIRBeoGND4HNXqRDE`3gW9rjS~-&gKS_WD zNPq-LfCNZ@1W14cNPq8KkJ-F5+DH*AOR8}0TLhq5+DH*AOR8} z0e=GZ{vNw{-qLhF;#(}lFm8{IcZo98V_STr@`MCPfCNZ@1W14cNPq-LfCNZ@1V~`t z69`dl+YaCGd-=AcNxjDDV?LC6$WTdPgH7#Hwc`_=KoB z!#FB(j2Tx&q5psMmf>4|*nIcq%FP2df41rRO$D2}Z+h>=b&;+pJdgkhkN^pg011!) z36KB@kU;Ab2vWlmPu}!F(9M(2ym5%asBDX%3@!|S{SsvIx!Cg98wf{z=O+PZp_ zUEVYvf*ww9-Mg{jUFGhLMWh85akWyXuN<*!B2oj3xJ;?e3y1HTh?Kx0E>>#oRl{~o z#Q4A>&R6RFYlrTdh~&T`)+kkU)sS5ikrY_O4NC2ZxXiXoHF88?5vY+3eJ|ZL5#t(( zSb`VE)kR8We!gzkM93@QzD=u}h&WHFH!62ggmj{PMZ6)e%b%=Nm(wHk>-5dG&e4HI z6e#uQ;@=~73FoN5B7o@67k>*R!e(^V@Be=Q@#YKo@)Ex1{eL+1mK}o8f)G85Ad0AD zM8PgmWtS~n(wm!SE&wzI!*4DC8Htb$ukcF>&s+dja@QmQ{&NAiMfuMK;1*@hP~e@p zE016$vV8+0G0#CME+w_Nm{empBpvR2wMf-8noS@^O;J_wFGbu^xGGhg%0nu-3>E71 zMJflEr6sO&nUTOVfPvjqEB$o2e`*dQ2+^$ z011!)36KB@kN^pg011!)36OwEKwe=nZRk_fG8mcH!oa*j+tf>!zMJZdzYZ`@57vhA zA!@#vK#am=x2(kFm3}9pc_J=1BT58omngoGW;l!>XA+_W+H8(i8Q%ybntpqUKwZ7A z{_#p2XfWdqap0AW@zQ#@kpKyh011!)36KB@kN^pg015n42-pl~l$7;zbO+_F^9Zpur)NSYiP)BXjtm!wgLDA5M7$R&Q>pIm3wZ1CezrFW+Gxr z8qeGUQe}EjNa}Kuoa}UN0Yorchc%GoKktA!kAse;^o$!xaJyuha}uOtC~H@^&QMvH zTVWLj!i4W~%)F3~`4)jfFY28Va z+^#)vv{Z;;yd0J4$~Qv28hu0bs_4w@s30TLhq z5+DH*AOR8}0TS3(1Uzqsi_NyIAvOa?u?3cQ&8@e@<&E1M8Vriv0M@1R@nq01_6P39_*C7GF2 zVFk!$B8xQHWotIFM37xJ0kTsyB!cX+iLLccBU{GU61mAbumUB5waExZK*^G|WvXp) zZX&Y7c+B1Zx8zz!y#F5)msF1x=r|F8#pFOcy59d!*YE$M4Wx&=CIU#;69J$(rQ0kY zyXA0Ljv&hsY&k;2ffkz{YB}VK&W!{}fCNZ@1W14cNPq-LfCNZje<#5H|NdS>d#0cC z(xuyP&Hrb1`=tY~yZsm`O4r?f3~ieip61VVhM|vXSuJ3;KFI{r+#xJLfKA5?5MbA46cS(= zY+%wp5!HD9za56oBS>3o1P~RhMR)>gA;WwAKd0ARb23w3C??1&#QcAii03==-)_z7 z2ZNU-n1rsOp;mv!=+7E_+JG?=IAkurdW}q6c9{v#Z^I;iNH70(q{(unIbEj_7Vgcm z`EY<2HWRt4qC8=`-XzSb9h=l{Dt6b*ef}iO@=x1^+4h>7!*3dR=BNU-1he-QVunS| z&nNZ7jRZ)51W14cNPq-LfCNZ@1pZ0_od55yq)XW(KmsH{0wh2JBtQZrKmsH{0{fmo zTx+OcJ@4KlS=Q_Z`$7mF^+ru{WgOFJ{=YKkIA^SLThxP5XGG15iswv#dsIbCOadf8 z0wh2JBtQZrKmsIiU=c7Um$NKp#Zr0^_Gs+pOl&fFUN|g_W$L^t-^j6uRDfOVq??T_ z9m`zo(&cJ4vSgo)J#tqfOZL*^ld1ojl`PqdMR548M3(H6u;V@9<|Rw^W3Wr-w^=nL z`{CFHXtR+e`*`eP5#4NL$zE#FGymUCYEZJ5h+)Y~J(#nG*r}1oPwoARuq)qpeJ~-v6I$P5U?5n)Yw9 zHSOPIYudlb*0g_-Yafj-K{U9Qyr#aaa=yPL8nhinJV2mcwZ|RKW6_Q14m~6AHz*%{~v=?X8#{UTW0?s z17c?XAH!&7{~v>IX8#{Uc4q${1AS)yAH#!Y{~v>jX8#`@{K>lij{(fdy8n-1&&j&~ zk72gS?Emk@x@T4-KmsH{0wh2JBtQZrKmsJ-O~7VM)qS!X;3;##b#?{n$>F>rX3GqG zVxi#La?q{B-sC)gdUC$T^ZcD?rU*FCpWp0yp=z31rIuobI81oQjRZ)51W14cNPq-L zfCNZ@1W14cNMH{L7)Fu%nXFAc8ok_owg*C)lmtkC1W14cNPq-LfCNZ@1W14cNT4YK ztumM3?g}xC*MelS1ljti$F>~3W%QQsH{ZOudh_9%zuk1>rum!tZrb+Z^)JqSvF(fR zy|C_uIWNS%u;Kahp3i35}9qz_6r zW%82*NPq-L;BP_T1guq>{$uU7q(_FD$172+DQYTK^UP3bDg`!MGR+a@1yP5oeyX?X zfWJ1FK1k+6TA}Kd%FxL#``$cW(J1)}RpAy9uZ8%ESfbQKE#ktB=J9ffC{m@WTF>Jn zIrmm^s*7LFWmd9N^2}tHA>snej5A&(4O59~ke{HlluFn6Kl7(~yc7|W zv5ILiRxzz{2~1V_Sk*LNPj1wdpfi+OI;|5>p0~n0{tJS9_1GE8)0L{y$xqHRkLwyG zZw}?jN>ykPQ7@XuOCX|ol&4wA&Yff?yBNt@g7QqI%5?sReq!cbn;`J=JA|H$(uuoR(YQm zaq^Mo@ob1_9wl1ky*k;yUNnzukgO#r(JJrJg6KOnDA6k0wS5987oTSyA$d2x z;Ppzi)yW^6V;)g8e#x6diB=h_MZEHyc|`T>0!p+>GkUji<`HaLgc9VUb^fbYn#WTi zsD-UEHuMpooVdt5p3;a#Gp#a4C%+`#Jfe;5CQ77mY7t9Tn8%YKVwYNFlulOvnR#4| zWG!r!ky_AC$>#Ay2xW_d4+gygKLr^CLS5lNko-yCS)v!5yD6WQS9B*}UCtM3%XUw@jQUn?t$Y3y_mA zypFDA!M(%KZxYzF5DBo7yHeP7Oy3k*ltaIi;0efws8CE{$e+f;%Eo?f%hhX;16n!S2@i;drm|5$L`9T6CKmsH{ z0wh2JBtQZrKmsK2wBtQZrKmsH{0wh2JBtQZr zaKI9XYYokJ*WNy0o|toe&$pHdF^s#Tb6uGm>OXw@f6ps|5=ejqNPq-LfCNZ@1W14c zNPq-Lp!Ep^X_NU{wHU_iE44dEmEf;bzmgaSbM?hAau-8)D^8;7k5?s~FtK;2?hd1) z)9U~GD`y$!`}_0!z#-sT|1a;r(U_W&011!)36KB@kN^pg011!)3H%iV*#G}4sO~>9 z+5g{v>Vle(011!)36KB@kN^pg011%5z9e8XG9o4aJM8A%b2z{(z%!}euRE^$N~VL& zj#bf^m)SkX-%LcoF41L|P0!$GI%Ph-0CWBs=A3_eGP{e<+hOP#{AA8Qn^%BL2B-sM z&Of^u@T7>Ha@wC}fXw;l@Jg{T!Zm%MIY*(M3{a=I>Daz1NM_Uv#?*zuI)$mM1GD~x zNI(bzLcH=&<$aZ10zwf#)GJ`+b$!jb3&SM7SAb}yMTH}NxST25lkyp1b7dZZ_}GEO z46sdcCrR4s#_=ws^M0StYX_O7Y7w+rhS-*`_k58rHZ)9WXgIH-AyQBLh^ZUbG&DFJ_=+3}`br&t$xi2f z)L#kFQ?wI(gxX~2w+dBnlP?-}&eo_=@`D6OfCNZ@1W14cNPq-LpoIhs;~e*Fe?ji~ z|88{qwNNaRkpKyh011!)36KB@kN^pg011#lYY=GJWOsf!x61qNts=zXr&)_mTO`CV zjt~fIx9MB3;+Hq0v#e+)C!o01W14cNI(c=O-)q&VDnY4y1}q0 z8wNv@RGi9%8Beh`v5C`$Nkus82eTe)rko~O|ceX)mk$#f)aBrDW4dbiHusUWj?eO-L1M2?K*4oumWw&C8b>i z>0)dqbvg*86t;yh9-9Vf%Md2SrQAg*r5JOGSz9sK7D1OjUTq)_CTUWORa!5pQIm_z zq~z3wT2*R^GAVac6Ct%mnKLhyL!vOw#8C{=YE+j1^sU+~LJ3UXp1PTdltoCn7&A5b zhxyl=N2_j);?B@zlNuclj*Y|fG*xM}5*}g5HwNa1*kBWi+e!0|QrrgI5*(=vht2J8 zIK&XsjBj88W7FM6sqi3}HpXKK;z4RCj*?1do3dhtz%A0klwk`M7aRt5Wk}3$S4;_w zkWlfAbR~&XMtBr#0-KuT3d-7@h`R#fVU1~zh7oDHmJs6-E7D@&eiJdo-PX&$9o(WA zFB|4s+191N(=`2?A1@ocY~TyS%ZB^10T}hl{PkFh-xaw-Fn@8(-?b(9Whlh8y}eL# zVGGmt_PG4Xbthg62**#6*eT0xLL`3Jm+7Aa`Kfl|N6osGsMJ5)9zi|zMX$5|aW6+U zo*y^MW*N5N;RY<#C+JIm5w5%KqpkkGT|F4RB>GUU0U$uRkpKyh011!)36KB@kN^pg z011$Q5a^HHd=5~p4nu$6>R^uz=o^69F!<%6k1r1eWSF^9i!le&Yt`7Dgar_m2)~&a zXIQ02o<*PWdc0f4t;aSQf<%VVC2WREphL}d-W~aRcp}ClxRC$}kN^pg011!)30MT= z*|Abd|)#A#A9jR5ta_YT_ ziKPxWEKcI+v+SxBi;JrpMHN+>xG!$T7}+ZLSa~qm#MTG?Vj)wkI{_JREykVv*Z_V3 z1emA-1o(RGf|@>cE2$&nePzg*cijdGcclCyZjr4iYIM-NaWE*3RLyTZ!tGY-X zuNDBoXmyagZkNTvphKx|-)b@%76qtyo%9)#y7V-%)qqVQ~`I^jTV6TDhpC zw79&;Uqw+n%HPvG7lohr!^}5846B~A@D(z4`ZbKHm*mZS4Xq+Jk&{$ay?59z_w{RJ zi|(o_9WPM0E4`HYi6Ld9y~VlQW>s~m-_iAS+l$AHp7YX`2OWi=Q;Y>hs?pVmG=5O8 zt2@*+>I~ReO~HfbuI{SB*H9zb7BNi}YuGWqdRbv{!;YExt126Py_`CR4njRiMC~!5 zs&;XH1)M&c=qnf30Grg&^qX!?2oNM*qL7fAggR0?tt0bN+)N!QSJ_0g-)80H;~n}* zLsNC6;{^(L36L_+uIZ8HBhNfB>!^*I^?z$0sLlF(!_T)&?SzmzV-~(j9gHC3E45kO zs4i8jVO2H>#spnpePCWHiyg)vQC9!oU$o5;YBnJM0G=N(1YGm~&r#w)+nZyE0~WD! zY~nzxnq$r1c)*m2ijn{ckN^pg011!)36KB@kN^qnJ^{nn5{(zO^k%57wEf?GgiJvK zBtQZrKmsH{0wh2JBtQZrKmz-kKoFLDQ|eIcx!A=fAyv;tkPmaIHaPEY7$t6FsVVBK z=;hIc(Nm(wM)!}t*Ljt5jq_-y-T7_Q`%%wFJs6b~H884k)U}c4MjjWrByxMihY_11 z9*Ibah>z$R5gze#czt+9_?++w;V*?f7IsV6#bI$_QDMJ@t`1!qIxqB-kXJ*V44D)% zEaZvc+k)2x_Y95>{v+t*pz5FnL7zEZcRb~o>=@xV#BqoHQu}H4So;p!7q(hkzAfAK zrtyq%w=v4-YqZnmBq+mQygAeuBm&s(QVUUSo|YnHazuy){(SA#!)w!`h^!@tgc@UoBZ{-g4k5esuNX3tvj#*Tp} zZ+fZEk5_+M^x4zz{1E!kxr2s2{`#%4_l0)*F74Y#ze;|nYQ>^=Z&i*Ce#*&6wV!gP*Irl795eU12#X!nG+dYW^3Q=}>xXGLJQ^CJy??7Luf43C zm95urReWRREU&$+oRzJYa&o66Km69Oe6&N~Jc-xdRL(0~OF4Ljz~a}hT47=D?}ZY? zIQM=tG_&=&Ke9Bjih#Q)+`&cr@wL46GG8lOOF8fruN`=U;M(ryT_3!HEWVAsyb@Zm z_Hq%dY`q#Q>^aT$;L+Fe^3vDx+ROS{*?Q@VidL6I zqS{BP+Vw<;Fp7D6gYcDG&*~)FVmvVRu)n7TwYcDG&+4?CbuX}p;!BNwe z*Iri6%GQgVJf`wf&hpyJ%30ZZDTfZX|L~*fwbuvzBwLvu!Am*xuKkrWz4p3tlC58- z2>m2~<-}_r43|o_e#<|J_s7h&<*2g*sde#%XPho5rdwGWh&Z2go=g@>PV;sYp-7C4CB&h83&imP`7R|UHl{g5+DH*AOR8} z0TLhq5+DH*AORBCM+8DtQ2MY9zn5=IvfnsX9~VLsXQ)aFA8e|$00X(>F~8pe%)~eq zOQdF~G|b324VM0T?l**uQ=?Q*tRUP5#^g2_l+_u=m0tb-JK6s?N%E5fNPq-LfCNZ@ z1W14cNPq-LfCTm>fe;nib)@e5Z;v;}0K_y7HZAoYt$h3bE3m*|tQkl5{)egFzWx8h zoTf36h-n`^P8MR|Mgk;20wh2JBtQZrKmsH{0wh2JJ_PV~5&D*RFJ5n1ShIc=*0RsW z6m!e*2s&RcMn3@y(O0QudX@X;VoXEK9K3h71Pfsns#?g}{S==3CSkI>=F-<-LA)Zh zK|O;d3@<>=PE7gHuzSTy(KG55RH*?a5Cot!}7H zFXI=`#x+4>F^z2jm0Wmf0L?lUW(>cif_nl#L7pri*v`x)ILQBtwfwT zIFs*R4NN{PDLL>d(*B*`C*L&5B_Fv>K}<M~F1?7#&&; z|7rNfFU2tuvE*2&8)uCBOs)kL@b~ywDa5B%ORa^mN|jmx4W}XIO89!pE`Fk&H;>hN zRtWz6}g#<`|1W14cNPq-LfCNZ@1W4cjClI1OyMMHP z3!vbWG5T1D67?}uQiN+J0N-~2Ec^cvYKV&WfB*j+um1m)?EfF&O@r!_011!)36KB@ zkN^pg011!)2^^3FLe$l#4ADLO9-oiX#|0<{EcWZI;)n&awqnLH8RpmW_Cbwn9zfIJ zJ73$MivfH#W&})EgM8or?;351va3h2{$GOo-16s<1W14cNPq-LfCNZ@1W14cNPq-L zAgQ$ww2GkJ72+`BoCU2_0?OI%2-H<%WX{hW5t6&Cq^Ptaq^u-2Yj)o3tc;4;MFlc! zbc(I6B6nel4$$Y;>hY{d5wN5 zrsK0xxMtl8@|$%pSZ3}MeS`f1+|%)y`uI-A7jP~>QAP*&&rm4m?O;<;i$9qjt^ku* z)@u8T7}r#K`R?iO+IUTuXH9w622WTJNy5qIOq<3YIwG`_zR$+3zWteoX(r@y- zaIcB+!qrT~E<(PGm228N6uil4?@%Krngw@Fd*@1HZ#s<~X;!<^)a#>QmFm|`z%x~z zJ4`#|!xN^XMtYSu0pvKTo|_aMBtQZrKmsH{0wh2JBtQZruN#vASx{~Rv+|1aG> z`(8h4KmsH{0wh2JBtQZrKmsH{0wh2JtwJEQHKfQ>@;%<__gDf1?5+^QxZD}<$~Z_p zw&nOOL$`dn`TotVp$lb@011!)36KB@kN^pg011!)36Q{^5tyP>YV5R{ZAn!X=J9CA zlO@lqv52^7u-;q6VG;8VUUS{8P-iHWqLZEUfq7ho$O~MP20@>G?BDe}@_oITAg zXqZaWQ|5JmPdH4%L$Ff$8l}c-L6I}f<4Oo>ZuY%Eg6fq@crgzJ*&c2lS3r=j9@gaj zhpB$5w{L+$RL06dI{6>(CFA8^r z36KB@kN^pg011!)36KB@kN^qnPXt2Lg&QZP|5&>%=`15#A1{Y`(*Ga0>;3;rz54&R zvj4w7)h~4+0TLhq5+DH*AOR8}0TLhq68I+)2vMixnZ5n1HfHJG{$;@63{^>kT)q9~ zOc}BVdfCNZ@1W14cNPq-LfCNZ@1oka~5cSB= zOx^px_F!`q;7Tae(@;r=4>mRP9RslX|0C286|Z`F_x~M6oO98>Ee&)33klTKD`l^% z$<3WRe|cHP{EX7&268*KUtr%|jdy5MVgqH>RNR1iHP*mS??5>Ol+;AQ{Xqnj7f@iJ zm{K-JUFPiR1yu_xa?2_-+#^iiy!k~L6>iUQr;ZKiZF-gzl~kc}W>=WiGe)HP`P`{2tBZZ$y7$Y*LZwK61W14cNPq-LfCNZ@1pd|p3}ZuBwyT7l)$7rB zMV}m<9o;^9gY$G}rqk|xB;Lgd1{raQIp_GQ?u|2X_YEh%kUCuC49xatsh<> z4aUo(b`@e*1p$)esimq|6}qDLR&k!_GZ1~6%15$tL`l%{_?QI=F!;zTvblh>ps6Hh>nlJ8O|Tje9l z)M1Po;SrO%3u4S2Dq)EGwECq$BMIjbJi)vNsW+3nJx&^^j(1$?D^Uy7cr>8#sN@t_ z9Vh;Od)ES_RdJ>J{xkD4&J5!?B8~$Y2ILL$7!_TOlz(#)=wZZJ{7UtC^Z-9(#{Zz@6h%JMcRWf2ZO840SA?9EW%m{{;L^ zg^hAM?tB%`sr*ZH78jr{qB4(3a7Hb3HA+h@>Iy_!r<>nbL3piByi~2g^G>viwVF^0 zyip#67HGmIajF3w?UDF2BwmWDTa99L>HMkaQ9*`#keIE`(@mIKe=7fB9*NHYp!DxF zpmbT-?}$(eg)j7j(77l~H!7as&JY^nL8t?q5P?i_j`B!+E-I6no~aG8W{;pe(j)nK z$hj8^Nyh<&I~by8Ee~r>1-S8~W56+aKA!Vf%{hZQHB2|6$vvZC7lYxvgQ_ zt4}`g_$L|5EiYw!yrp zt}O0OI^Pz#FKHWOcL%As>;p}&YKQ6T8a;)kc{}&1qcJZZ7UxouZpvE7i}3YdJx;DJprDnpHf) z#6A~v4efQQ6w#Z((63R)GDqj5tet8VQmunH5vL}u#^H@JDlSKzI<^wqD2S^Wh~I@b z&=PH^-b<0uk4b)sxC+!%h(J2_89;Ns7Eo5`m|svw;a?Q9N)4?H`JaojlG*zTCqE>8 zj7g>&!0BwxtsE-VhZVJkmk#hub=wYpdUU7*>%!9~C|^sb(eW>L_&t{zcr^ zsG7ptd9;aarUlgoAywvuairK5iZ!ZEg|TCflkqL;m9SC|OG=wa=sE(YsU4Q&SGQo2 z?fTn-DNX-cFr}D@I`wP86gydy$v)+7!IYx^EtpdIw_u9x*MceL?zCV^mn=7aq9>*L zNZ5iYCbycnJ(O#~l&X9ScGD(atTtAobPG<#Pqs*R3#QmH$I18>^{@p~d}j*|g4+`I z|34S|f2tw51OY)n5D)|e0YN|z5CjAPK|l}?1O$Q44uJvcyJr|{|K5j;wg1gvroLL8 zIw7?7|EgMu^`RN?oRL2NkL~}-#lcCo{r?>a`Tu^A|3AC>m7E0uK|l}?1Ox#=KoAfF z1OY)n5D)|e0Y+eey8hfXdZ+*Ni_99pt#}0O{?#0VY)anMdQVmf55(Ga@$p60*`9H={LV|!GAP5Kof`A|(2nYg#fFK|U2m*q@XN$l9 zwej*x^(w%S7PAWQLohT6e*Y$hmH_EB0G9vh=!q$|{{K4(`Tq`)|3BNBmD~jZK|l}? z1Ox#=KoAfF1OY)n5D)|oP6P(1aerE+CH)7#-K)QE0uXfxeLp$-qd&UnkWTWo(i`pr z;PW%9@r*nG%!5@xJG>>P^#3XO|2srREzx?|ytj%7bSt|CzH(Mo|_f`A|(2nYg#fFK|U z9Iyyfp=49=H$5!jw6^P?da3H3vu?Qg?GI|dGVBJrU3JudRs5#+wNt|=TGjH{-#4DK z0FKWuhFkScH5HGhg^yp^*m2d|%h%8OWpnM1Ccgdj@&WYBqDl_mRo@2%Uet*gD`%?nG> zVb|BO`)HGIP%rn2dd^i@U07f_xggyNu}t-4!)TSE(L$*mFAYEV;oM!6;yBLdST-F zuMb}M;+$Jf-nHd#>xbOy;-V5!yZUM>7~8ls?3|q2>;*H1TvC74gt_-$+w{HF4-|K} zs8KsteNPn9PSKfy;VS;jD_5W@s?!uY!bBrp{GMY-h+x&KlfotHRrYo;s zHRAN|Ppv-u)LqX{a8WZgwJB9ovDpN{mnTxB%wo z0V~&EL zQjz@MtL6VehCx^X%$?t+=A$`YjT3WbtMl~X0YhO{Ku4OaRLk(qXCuzn2e5Q1_fu-U zS0L_SxFnz>TIg_)wTaYq`WS;Q-0Q^idL3(-4$s69Dvj3fvyr+!Iw)l>=v)fQRC|{o zOb5ZN1&@@=D^_J>jpIn#Z)=nETp5OczO~kN0dxy_!(IuPR!vH zIGgCyI1nau?9KU_OQs zOF_k)6-q6dI9aVZtVeokrTnxJEsvh`;110pm!kyK-b^o{`lQ3iy3wj;;CngZb>h?1 z?E;`nCzK8f&n=~AWb9+|9i(fbH|zx*m-xR7R48sYcwL8fJ4^TGM%^Ch_@uQsW`&Sk zh0>mec*(v*{rxiBYtYpH31K?urxWP3==MP^>vDA=?(`sJW+%%*aRu6Ly8jW5)P5;m z7kcp-$n|u6zzgBo68=6HVTxtA?Tns}#5<@Pc`rq3ici#51C2BW)Jta}4Yi{Ah(-N# zA-;QnXZ+-R{5Cz^JR6#LM&&0&sSeE3CcGgo({p`#o2)=xtCNt^%;VQb6yscD8irRN@hcX)?DEm?Qf0Jr^AWSMoU(XDx%r4zX@Q7R*_VswY$_iS zs?>y#a`h3L(&7@O@)4D2ShCNjQ_4p?$`^|$Zy%8;i4_f#e3GD2K4MT-{Goh(L?5@H zLaFV`Rm1tIeMFq}u#zsdPwu7C`-n0w5ysA!e!EIuu9f!lh4V$W&fLYR1Y|5U5bx8U%|KbqEndlMcm@;t)he=e@ zUxSGNQ&*aF@Y|2a6&_{nB}6c-CnG0(W^;k3HP>bi!(7Mj`*u`sD;9AVWlFSIwW`th z8=)rZPxEV$V;;0vPg;fpn;M3}9_ko|`_SqsoS70OCqRzb8Pz>c%I?zzs>f$F=Bwu5 zQqI>NCOKc4;W_iA$<^*p#e(`G$^T#lg>RuAEteo52nYg#fFJ+_!YNG2MTRXpUJE{( zqCq$wpp8(46#)#>t$0prJ7W{WbsTds4#_5=o(AGd9uRFw&SyX@Oa_Hd`Y|Fus!Koz z<DT$cqgOq*}JCTn(f4Z?wCg~K6)}q6N*DH zt$jnY--^#>y<|p9XxUT0v0{WO7!2r>Qq^KL8I#bq2>2>4vn`bF%QAab6_qtvRY`dk zt57IiOQv+wQ97PlPl-wya4BuExojytSw&r7rIs2&o%*sCTqi>duts+%o`Tzgb+<0U zC5gVllk@&eWqHzj3MRfh<;_l;<0)?)Lt(E4^b3lhFooU~Bx+<L_=+0zU`F==DQ6mtrX5o)ko@j84A4vy^CmlnAUGwQ9q;?xLDtze%7D2 z2sO=DblIBmIVjb|ScC_|Xrc|7Cdz#}>U#Fd2$v{V2-t(yjc0qN^8HGe&xnuq(n^Ca zTQ%0bd$h)Y%M^7qd%dP?nLHT-PY{2pqtT+f$$TT`YPsmy5@OWrp=Gn1L9P5EQX&&mL`SM#w99p zE!pc=T%s-n_F9Sls!L>=jB7D!fi6>rqfCoR48JtcmM>{kclJsdmo&h-!CosV>;G>| z>i;*2{$KR}qW>5Dzp?ib{lDn{L!||#LTrGrCyUN{04r^`u|Fd=y@sbP+ zpqLTivXvq(%ZRL~Y0}z?4Od!LhL{xgr%T_Mmz%w6}A)BhI}`v1YA z|F_?-@>>uP1O$PD4gu)$F!Glc(nar|Q7!I)A`VI+Hso_?Trw&n(fiYOpcSz26um#x zoUw&~=>0|SKSh-_Gb*E^rk6jP7m3~K(c+0)l`b zAP5|E2++pia{m9W-Z|}0A0?bcU{y?gw*LP*f*HHdDo@hCI2I;@45n;Kg1>; zOobvOFPGs3JwL5Fi1z!$R8C7KO@#BPP!w00n2wLpiCw0c-ly&VZ)o@4@&A{sp|~_` zpu)cL?0reD`lfbH-UO2pOYHSBQ9(MGS4#yvO;hLyliK@)@^~O0g!wX3%#pn#$3>6& zA<;{208)_I%w=z6aZ$kf1}JPQWQ|+S45|1SxUh%3d_$M^kea=v!^M+!WdNR%II}H$ zTsnIrg^QBGXA``>t--&p$Qqw|nz`)l4lXKOI@fN4m{LeE`pRoT6v0i2efIen$1qQM zMlMV%VkZpbaYgMqj~2gye2iv@KKUhd8P9M}@#Tr)mFg*6hxQVIs}AWN`6YC%XJEA> z^#5n%|Iq*6_r?BS?El67U+n+I{+~QRivPdt4%&pS`t#=hPwf9`Mi5`FiBT+Y#9|$# z@DasWtc+=xyu|*W4;DyH?+rFSB2=jfAyM%Wo6_PErScJ#vLX_t^bwEp#Ui5MBN8RC zibWwx?IQ+d#UD!PBl@@n6-sSiuKtss+DF966G!Zv>9;HQQt5p}8J7s-n|HZZ>Laqa zMHLqZB*bf>IrR{ldh!3q?q~Mh{}ekziAN?L-C{=r2c7>vvHwrKJLHETAP5Ko z2R#DNAYgVS_W$YgwE&6U1-LI9aV6GN#QxtLX+bTJjgZCfU&5cCYYHoV|H95Ge*Ylz ziTyu@a5m<4t;evPwY?g|uXyqM=NN_fg-p|<1JCc@!D#<)&j0&R+y969|C>brFZzGc z|BL=#^#7v&&-FFSd(}U0`hVM`Tm1it|35m^lunjo^J<#j`j}QHwbPU)d%5(p*;Jzc z&pQ%5iIwR8{o0r4|3&|=z3cO_C!+s{?ms>Z#kF|K?sX12{r|42`24>DjaG6A0)l`b zAP5{Z2#Btq4n(#EK2`*Yu0P@YY7hJy_QTn~!`!{#Bb4JVgsUwk|J^U6tso_EF0S{$0RKJMDtpI$7cg&C*5Tq4@;r_AG5{Qso|zNB?}syd<{ zu6oI)68rx=ktm6k*#Ae(DhjyTm)QS{{lD1%Cyzv(DE9wBVI1roD#*#ucmx946Vieo zV*ek#OC=x(2m*q@L5G0Y|BLlwFx#yuDM#y6SFZTb1;h3gI*0A z*Prs0q($Yx`1@%3k1)Xu8ji+18-|KFvSz)8$HwOEZ;i%Oi%w^&WabN3S5Vl@s= z_b>Z@5Dzv%x}XSgIL`hU^?_l9l3mdIUpFLM4L z2@NaZS#n*7nwU`hV-)AwLBHK|l}?1fV*Rv;M^YpXmQ1w_l#73iRq2q=K3u=ssV@ zB1tc_JM+{U(naF`U_5P5GgKG;@#c+Q)vf(XT>>4Ey**{cJvDS5b+S#JtUUk#s_m7%=<9lOke)#*UhggrE>*O*CMNpVRMGH+w(=QDWioAur zh>{1Y1)ohSZwUalr**BsXpu^q_>=bRc=*K1c*C++8<=m=|BL=#^#93C^V~B;|BqKp z{yR$i|Karv`+wvAulXNO5dVJ!h+KkzARq_`0)l`ba6lvA|$HeNZqCB>Lk-q9#lk%lEvh z5PR_37VGgkZYhvpxddyK}$1&U69({ert?TAJJ7)T@X)Y51>W8ZD z3G|{~H6I2ROF=R21@v9Gp)i<+*yewFzD zTca*jm!bBPhB0#t;L681h7osL*ek`fLXy!}sdk-5i{H*Y^KSTa{m`znuX}6EKX16> zlZRa`f#|EgO@(%pZ4FAdR>kg0xTi$Sgn>Ms=y9o@(jKPw@&8A7b@g3a;WnxX0%QL_ zPRswH|G$3~`+u?j7yEy){}=mzvHutQf2SBH{{OZOKjAN~i4cpGv6yORD~~she6{w0 zs<{t*>%!l?zMyfEEA6b5t#mlciN0LZrM%o;n7IDygBQLy=a!RqZTZ{!A@{m+%ckvs z62Cjl≺)MIkK^MT{l_E}pZgd_<^H6GF<+M{G)qOO(n-RLY7-l+s5$$`^}>f{#d) z#44UpQ|dKUW4B$<{9OC`mgTn}w&ksNT=g>(Q}H#Jkf&3=-2KvB@4j)Don3xn?g{4ddxpFU+-ba*ii7>u-musayB8yv8adALGymp$O zdPw#u)zJMGC;&?mSeii7S)=sQ8(FUewWJxQKpj6F7(PYJV!aM;ok`(C<8WmI!nE*! z`;~{q;bLPPr+ByyKQfbu!!*c5J_0u@!i0l$1f@nQRWqTC-9E*c=n+Tk|FN94X9iVl za8$#FQubCiRC>jcsJr{n<0#w|)+1H)QB=`MLn-ZAFW>gyKD32E)#I~T@sP*)+QTI0 zn`@v&9{olU0~8pI09txbF-8^CYPwYz8$K(HL!g2pji*T9Tm1i_2ILY11OY+dU`8OE zrVPW7M#Bt^8svOSPjp6v8Uc+tfDT&{y%(a08_F5ht>~m4o$Qn(?q#XM_tce{V3Zg_uzHo*`BHE z{R(ZG_paE>Ck?u6)mTpHfeyDb+tKVbnX+Z_WQ;o6Q2n+Y6lFeHwL{I?1p@%F{}=oJ ze$NKP{+~J(>;L~DssI16=>J9kFZzGc|BL=#^#AU~?u7ih8;j2Am2sXKN7610ObbaV zr?p$OiI`Ta8`QM6w7D%MtiWUy^H3EODNrn`+5zh0s+#Tf=TUk)1>Lhvy3?lI6vM}i zTlD{;{~vZkav6zQPWE!?XS1p7Wf+%6x}0X!UgU7mNUo(AUPb>e`hWW^Df)k`gDBDe zKU!CN$D0@O8qNtYw4iWC@x9OI0#Bnh0?Y!GYK)ww#0rIWy(lI6e_D+b{l6L2DRb?M)UgN?6g?-stQd9I-z_ zA14^>YtOY35mTb9l2_i_g5tO-vClqxDZ^DV<|)s~1=C7$MBzNH$ggD{tq8y5B>k$CHDVf|1b9cV*fAp|6>2|)~+S=*SleKCief~#KOm2J3CuovHu^tYtEgw9`PD& zbz`#%@&D&~4aq%0KoAfF1cA>Z0%HG9?ghmE-}@i(EN5TrdGNIL75jg&|BpP&MOM!C zX#?C)+r<8ViaHs-Rji1&2?r#wPe;C0dr|wwijy%iNjf78i?OoKkZY}dZqof%x zx(|YQ09S@e4bIUzi~YZ{*QmI!cOgJwmj{BVmLkvhj(v4V9Qi2yto;A&Z}$J@{J(pW z`v0Gb{$KR}qW>5Dzv%x(|DQYJvj2L~|G%((!>Fxi|6udrJFlEH=y{h0HP%k2wfLg{ zPa9B+{{OjEZBM-ap{osv|3BU$ZI)Pl%%HR8&y?23^f_OHZ*q@6T^jiO)S~}i_Uw>D zADg>*^WDv(Uz~citEJ2Nf8k*!Bjx-*>SyBrFFs?%x%jaMQ?X!IRmZ{^9RxED%%pdj zT!MfgAP5Ko2Mq$E{}=tg5j;t~LZ=*y{@+)RghRe-hG3EG%kU`It0rSN{TiA|;s0Q~ zKN^&6Jm0PTdtH(^8IVQaI2tc z&@=dB7yQ}nA=C9cZCd8c%kfypn1rKQkHvd&QI5Ss?9s5u=lqENp9YRUwxw6fcxe7f z<6g9a2m<5(@8jCr3*!HeTDn|eyI1gQyB;HtM%C5 zThB`$8aXX|>~nA=Z7o)P*A>hGlI&q>;)&&rNMPx%Q@V^vX3{fUJ_aRBhut6W`a|qt z%+QKIT`F#Ry5OB{le1K~OmTV>%A-P0U1efAK29g>GR5?iIw@qt#{mV=>FTSghz(Jg zi;zh4l~Ysne;Q6SbsQIi;9F zNGSTsD;N1mOH=3w)A$@-X?WOFC}qUL9Qhn%N&S$#t)&mN za^k|4z0sYI)xS=)3V!_8StzwrKDa)w{{OoAuB~vJvvA2w`Qp#K7DO@Jl-OsVk8zAa z{Mw2s+tJ3+-k$^L&rEq%G#SDt7@DQ(+o*SpQ7!c6CCe!224*Ghd< zmTpnS#Q`btwP``>A*}Zc)i75tPyjngV4V)@^_qlje=Tk*GV-tErvt;Mh*_-H;jJ?% zd}ti5Y(SU{4{*QousB?7jN=p!*WpKI5^-z|GLetK&5AJLU>!lhU!$s-08fBZ)p4+q zCp-Bm;lDUUaVC1iIi^e;!eJ7X^w(g5Hzx7hkH;0ZzPHCDlvZyEI{`pb*yVk14>q71 zgoXhX+H=PHel*4-La1c_e~8XLfIl$uzp?)h<^O*d`CsIJk^e>h7x`c0|IcX5Uq};E zE%7PEGm~j;X>}V-7Ak0tMU$-}1&T#gJ3xJ0RkOYRJW6k;pnJAScUqN8F?`IpMgFHl zkzCRP&ns<-T;%^7ZhrfN+OG_|At}>Rds9l}|5JB8Kf%?Sl30oSZ(2+8(#ZCxnc(P$Hb@MXFfp-31eKGd`*FtX-xdZ`0KoAfF1OXrb zsTxCHWyuBlEjnHcKARkSUyV|Ato9MqiszlG8|PIma>QJ$%$ZemY*Hl;#I`1v2jW~8 zb+jzdpHr`>njh6AfM*>PHYsv26SgwAEE9X+tPA|JKE-i{QAR^TPP^XF?6=~xxx~i7 z7F`8{Gj5tDLkZP}MHF*hRTY=n7E1SJnfu|OELl}aefDTwx|U4orlWMMTGOX@=~KA^ zE~TwDFI!4aR#6v9d;> z#r|LH|Hb}4cV5Ig>L7sTm9|#~(UECE0or~Nr-H&b1S${+##1CRM1*qB!=zx}+5g)v z-NgPsyH6sv-RIq*B}yrZr5inDbgTjf4XWoKedmGvr_i^KDn1lFZ=&Ve=qz08zS>Ne#7$`iR}MJ3u(v< zb-Yw`pxOWLs*3IZ3u6CozhC9IARq_`0tYk#J_5Pe_-B+ud!Ue`6_HV9jl^d~L~Q(5 zs-> expectedRows = + createExpectedTable( + createExpectedRow( + "id", 1, + "data", "foo", + "calc_data", "1_foo")); + + assertTable(expectedRows, t); + + db.close(); + } + } + + public void testReadCalcFields() throws Exception { + + for(TestDB testDB : TestDB.getSupportedForBasename(Basename.CALC_FIELD)) { + Database db = open(testDB); + Table t = db.getTable("Table1"); + + List rows = new ArrayList(); + for(Row r : t) { + rows.add(r.entrySet().toString()); + } + + List expectedRows = Arrays.asList( + "[ID=1, FirstName=Bruce, LastName=Wayne, LastFirst=Wayne, Bruce, City=Gotham, LastFirstLen=12, Salary=1000000.0000, MonthlySalary=83333.3333, IsRich=true, AllNames=Wayne, Bruce=Wayne, Bruce, WeeklySalary=19230.7692307692, SalaryTest=1000000.0000, BoolTest=true, Popularity=50.325000, DecimalTest=50.325000, FloatTest=2583.2092, BigNumTest=56505085819.424791296572280180]", + "[ID=2, FirstName=Bart, LastName=Simpson, LastFirst=Simpson, Bart, City=Springfield, LastFirstLen=13, Salary=-1.0000, MonthlySalary=-0.0833, IsRich=false, AllNames=Simpson, Bart=Simpson, Bart, WeeklySalary=-0.0192307692307692, SalaryTest=-1.0000, BoolTest=true, Popularity=-36.222200, DecimalTest=-36.222200, FloatTest=0.0035889593, BigNumTest=-0.0784734499180612994241100748]", + "[ID=3, FirstName=John, LastName=Doe, LastFirst=Doe, John, City=Nowhere, LastFirstLen=9, Salary=0.0000, MonthlySalary=0.0000, IsRich=false, AllNames=Doe, John=Doe, John, WeeklySalary=0, SalaryTest=0.0000, BoolTest=true, Popularity=0.012300, DecimalTest=0.012300, FloatTest=0.0, BigNumTest=0E-8]", + "[ID=4, FirstName=Test, LastName=User, LastFirst=User, Test, City=Hockessin, LastFirstLen=10, Salary=100.0000, MonthlySalary=8.3333, IsRich=false, AllNames=User, Test=User, Test, WeeklySalary=1.92307692307692, SalaryTest=100.0000, BoolTest=true, Popularity=102030405060.654321, DecimalTest=102030405060.654321, FloatTest=1.27413E-10, BigNumTest=2.787019289824216980830E-7]"); + + assertEquals(expectedRows, rows); + + db.close(); + } + } + +} diff --git a/src/test/java/com/healthmarketscience/jackcess/impl/JetFormatTest.java b/src/test/java/com/healthmarketscience/jackcess/impl/JetFormatTest.java index c5028cc..4f86896 100644 --- a/src/test/java/com/healthmarketscience/jackcess/impl/JetFormatTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/impl/JetFormatTest.java @@ -47,7 +47,8 @@ public class JetFormatTest extends TestCase { COMPLEX("complexDataTest"), UNSUPPORTED("unsupportedFieldsTest"), LINKED("linkerTest"), - BLOB("testOle"); + BLOB("testOle"), + CALC_FIELD("calcFieldTest"); private final String _basename; -- 2.39.5