From 4a61063406560724c3bca4d3af8be92303cd91de Mon Sep 17 00:00:00 2001 From: David Voswinkel Date: Sun, 7 Jun 2009 17:26:09 +0200 Subject: [PATCH 1/2] added crc checks --- snes/fatfstest/Makefile | 8 ++--- snes/fatfstest/config.h | 2 +- snes/fatfstest/crc.c | 37 +++++++++++++++++++++ snes/fatfstest/crc.h | 4 +++ snes/fatfstest/debug.c | 48 ++++++++++++++++++++++++---- snes/fatfstest/debug.h | 1 + snes/fatfstest/diskio.c | 4 +-- snes/fatfstest/hook.asm | 2 ++ snes/fatfstest/main.c | 62 ++++++++++++++++++++++++++---------- snes/fatfstest/ressource.asm | 3 -- snes/fatfstest/ressource.h | 1 - 11 files changed, 138 insertions(+), 34 deletions(-) create mode 100644 snes/fatfstest/crc.c create mode 100644 snes/fatfstest/crc.h diff --git a/snes/fatfstest/Makefile b/snes/fatfstest/Makefile index 8c9c055..47705a9 100644 --- a/snes/fatfstest/Makefile +++ b/snes/fatfstest/Makefile @@ -28,7 +28,7 @@ LIBS=-L$(SDK)/lib/cl #-L$(SDK)/lib/c134 -OBJS=hook.obj StartupSnes.obj main.obj pad.obj PPU.obj debug.obj ressource.obj diskio.obj ff.obj +OBJS=hook.obj StartupSnes.obj main.obj pad.obj PPU.obj debug.obj ressource.obj diskio.obj ff.obj crc.obj APP=fatfs.smc GFX=debugfont @@ -66,11 +66,11 @@ hook.obj: hook.asm $(APP): $(OBJS) $(LD) -HB -M21 -V -T -Pff \ - -C3e8000,000000 -U000000,000000 \ + -C3e8000,1f0000 -U000000,000000 \ -Avectors=FFE4,7FE4 \ -Aregistration_data=FFB0,7FB0 \ - -Aressource=3f8000,8000 \ - -Ahook=0108000,0000 \ + -Aressource=18000,8000 \ + -Ahook=8000,0000 \ -N $(OBJS) $(LIBS) -O $@ ucon64 -snes -chk $(APP) 2>&1 >/dev/null diff --git a/snes/fatfstest/config.h b/snes/fatfstest/config.h index 6094016..c870802 100644 --- a/snes/fatfstest/config.h +++ b/snes/fatfstest/config.h @@ -15,7 +15,7 @@ #define SHARED_SIZE 512 -#define SHARED_ADDR 0x3f0000 +#define SHARED_ADDR 0x3d0000 #undef MMIO_DEBUG diff --git a/snes/fatfstest/crc.c b/snes/fatfstest/crc.c new file mode 100644 index 0000000..8c951a0 --- /dev/null +++ b/snes/fatfstest/crc.c @@ -0,0 +1,37 @@ +#include "data.h" + + +word crc_update (char far *data, word size) +{ + word i; + word j; + word crc=0; + for (j=0; j=33 && packet[i+j]<=126 ) + printfc("%c", packet[i+j]); + else + printfc("."); + } + printfc("|\n"); + } +} /* keep the linker happy */ int open(const char * _name, int _mode){ diff --git a/snes/fatfstest/debug.h b/snes/fatfstest/debug.h index c9ed2a1..e8ba412 100644 --- a/snes/fatfstest/debug.h +++ b/snes/fatfstest/debug.h @@ -5,4 +5,5 @@ void debug_enable(void); void printfs(word y,char* fmt,...); void printfc(char* fmt,...); void clears(void); +void printc_packet(unsigned long addr,unsigned int len,byte *packet); diff --git a/snes/fatfstest/diskio.c b/snes/fatfstest/diskio.c index 166aa45..bf811db 100644 --- a/snes/fatfstest/diskio.c +++ b/snes/fatfstest/diskio.c @@ -87,9 +87,9 @@ DRESULT disk_read ( byte retval; word i; - #ifdef MMIO_DEBUG + //#ifdef MMIO_DEBUG printfc("SNES::disk_read called sector=%li count=%i\n",sector,count); - #endif + //#endif if (drv || !count) return RES_PARERR; #ifdef MMIO_DEBUG printfc("SNES::disk_read drv ok\n"); diff --git a/snes/fatfstest/hook.asm b/snes/fatfstest/hook.asm index b6c81ab..4b959dc 100644 --- a/snes/fatfstest/hook.asm +++ b/snes/fatfstest/hook.asm @@ -3,3 +3,5 @@ HOOK SECTION HOOK: jsr >START brk + + diff --git a/snes/fatfstest/main.c b/snes/fatfstest/main.c index f6b2792..fd7f814 100644 --- a/snes/fatfstest/main.c +++ b/snes/fatfstest/main.c @@ -11,7 +11,7 @@ #include "ressource.h"; #include "PPU.h" #include "debug.h" - +#include "crc.h" /* @@ -23,8 +23,11 @@ o exec loaded file */ //#pragma section CODE=BANK2,offset $2:0000 -#define ROM_NAME "SUPER02.SMC" + +#define ROM_NAME "MRDO.SMC" +//#define ROM_NAME "TEST.TXT" #define BLOCK_SIZE 512 +#define BASE_ADDR 0x008000 padStatus pad1; @@ -37,7 +40,11 @@ FATFS fatfs[2]; /* File system object for each logical drive */ BYTE Buff[512]; /* Working buffer */ DWORD p1, p2, p3; -BYTE res; +DWORD addr; +DWORD crc_addr; +UINT crc; + +BYTE res,bank; WORD w1; UINT s1, s2, cnt; @@ -132,7 +139,11 @@ void wait(void){ //disablePad(); } - +void boot(void){ + #asm + jsl $008000 + #endasm +} void main(void) { word i,j; @@ -152,7 +163,7 @@ void main(void) { put_rc(f_mount(0, &fatfs[0])); -#if 1 +#if 0 printfc("SNES::main: Try to get free\n"); res = f_getfree("", &p2, &fs); if (res) @@ -232,14 +243,19 @@ void main(void) { put_rc(f_open(&file1, ROM_NAME, FA_READ)); - p1 = 1024 * 16; - p2 = 0; + p1 = 32768L * 8; + p2 = 0 ; + p3 = 0; + cnt = 0; + bank =0; + addr = BASE_ADDR; + crc_addr = BASE_ADDR; while (p1) { cnt = BLOCK_SIZE; p1 -= BLOCK_SIZE; - res = f_read(&file1, Buff, cnt, &s2); - printfc("SNES::main: read cnt=%i p1=%i p2=%i s2=%i\n",cnt,p1,p2,s2); - //printfc("SNES::main: read %x %x %x %x \n",Buff[0],Buff[1],Buff[2],Buff[3]); + res = f_read(&file1, (byte*)(addr) , cnt, &s2); + printfc("SNES::main: read cnt=%i p1=%li p2=%li s2=%i\n",cnt,p1,p2,s2); + //printfc("SNES::main: file %x %x %x %x\n",Buff[0],Buff[1],Buff[2],Buff[3]); if (res != FR_OK) { printfc("SNES::main: read failed\n"); put_rc(res); @@ -250,17 +266,31 @@ void main(void) { printfc("SNES::main: read cnt=%i s2=%i\n",cnt,s2); break; } - printfs(1,"%lu BYTES READ", p2); - + printfs(1 + bank,"BANK %X ADDR %LX",bank,addr); + /* for (i=0; i Date: Sun, 7 Jun 2009 17:26:37 +0200 Subject: [PATCH 2/2] add debug --- snesram.tmproj | 481 ++++++++++++++++++++++++++++-- tools/bsnes/cart/cart.cpp | 4 +- tools/bsnes/chip/fatfs/config.h | 4 +- tools/bsnes/chip/fatfs/diskio.cpp | 5 +- tools/bsnes/chip/fatfs/fatfs.cpp | 16 +- tools/bsnes/chip/fatfs/fatfs.hpp | 4 +- tools/ffsample/linux/Makefile | 3 +- tools/ffsample/linux/fftest | Bin 40212 -> 39040 bytes tools/ffsample/linux/main.c | 6 +- 9 files changed, 481 insertions(+), 42 deletions(-) diff --git a/snesram.tmproj b/snesram.tmproj index 72a28d8..0f8b05d 100644 --- a/snesram.tmproj +++ b/snesram.tmproj @@ -3,7 +3,7 @@ currentDocument - snes/fatfstest/integer.h + snes/fatfstest/pad.c documents @@ -35,6 +35,36 @@ firstVisibleLine 0 + poc/avr_sdcard/main.c + + caret + + column + 0 + line + 113 + + columnSelection + + firstVisibleColumn + 0 + firstVisibleLine + 106 + selectFrom + + column + 0 + line + 146 + + selectTo + + column + 0 + line + 113 + + poc/avr_sdcard/mmc.h caret @@ -77,33 +107,215 @@ firstVisibleLine 211 - snes/fatfstest/debug.c + snes/crc/crc.c caret column - 1 - line 39 + line + 27 firstVisibleColumn 0 firstVisibleLine 0 + snes/crc/debug.c + + caret + + column + 3 + line + 6 + + firstVisibleColumn + 0 + firstVisibleLine + 2 + + snes/crc/debug.h + + caret + + column + 10 + line + 0 + + firstVisibleColumn + 0 + firstVisibleLine + 0 + + snes/crc/main.c + + caret + + column + 0 + line + 49 + + firstVisibleColumn + 0 + firstVisibleLine + 20 + + snes/fatfstest/Makefile + + caret + + column + 23 + line + 72 + + firstVisibleColumn + 0 + firstVisibleLine + 29 + + snes/fatfstest/StartupSnes.asm + + caret + + column + 0 + line + 0 + + firstVisibleColumn + 0 + firstVisibleLine + 97 + + snes/fatfstest/config.h + + caret + + column + 28 + line + 17 + + firstVisibleColumn + 0 + firstVisibleLine + 0 + + snes/fatfstest/crc.c + + caret + + column + 0 + line + 0 + + firstVisibleColumn + 0 + firstVisibleLine + 0 + + snes/fatfstest/crc.h + + caret + + column + 0 + line + 0 + + firstVisibleColumn + 0 + firstVisibleLine + 0 + + snes/fatfstest/data.h + + caret + + column + 0 + line + 0 + + firstVisibleColumn + 0 + firstVisibleLine + 0 + + snes/fatfstest/debug.c + + caret + + column + 0 + line + 144 + + firstVisibleColumn + 0 + firstVisibleLine + 0 + + snes/fatfstest/debug.h + + caret + + column + 32 + line + 7 + + firstVisibleColumn + 0 + firstVisibleLine + 0 + + snes/fatfstest/dis + + caret + + column + 0 + line + 32759 + + firstVisibleColumn + 0 + firstVisibleLine + 32759 + snes/fatfstest/diskio.c caret column - 25 + 6 line - 39 + 91 firstVisibleColumn 0 firstVisibleLine - 13 + 72 + + snes/fatfstest/event.c + + caret + + column + 0 + line + 0 + + firstVisibleColumn + 0 + firstVisibleLine + 39 snes/fatfstest/event.h @@ -119,14 +331,56 @@ firstVisibleLine 0 + snes/fatfstest/ff.c + + caret + + column + 0 + line + 1281 + + firstVisibleColumn + 0 + firstVisibleLine + 153 + + snes/fatfstest/ff.h + + caret + + column + 18 + line + 56 + + firstVisibleColumn + 0 + firstVisibleLine + 42 + + snes/fatfstest/hook.asm + + caret + + column + 0 + line + 7 + + firstVisibleColumn + 0 + firstVisibleLine + 0 + snes/fatfstest/integer.h caret column - 2 + 28 line - 35 + 24 firstVisibleColumn 0 @@ -138,14 +392,28 @@ caret column - 13 + 0 line - 22 + 26 firstVisibleColumn 0 firstVisibleLine - 62 + 0 + + snes/fatfstest/myEvents.h + + caret + + column + 0 + line + 0 + + firstVisibleColumn + 0 + firstVisibleLine + 0 snes/fatfstest/pad.c @@ -161,19 +429,47 @@ firstVisibleLine 0 - tools/bsnes/cart/cart.cpp + snes/fatfstest/ressource.asm caret column 0 line - 95 + 14 firstVisibleColumn 0 firstVisibleLine - 44 + 0 + + snes/fatfstest/ressource.h + + caret + + column + 0 + line + 2 + + firstVisibleColumn + 0 + firstVisibleLine + 0 + + tools/bsnes/cart/cart.cpp + + caret + + column + 24 + line + 48 + + firstVisibleColumn + 0 + firstVisibleLine + 33 tools/bsnes/cart/cart.hpp @@ -189,35 +485,77 @@ firstVisibleLine 24 - tools/bsnes/chip/fatfs/diskio.cpp + tools/bsnes/chip/fatfs/config.h caret column 0 line - 0 + 21 firstVisibleColumn 0 firstVisibleLine - 24 + 0 + + tools/bsnes/chip/fatfs/diskio.cpp + + caret + + column + 58 + line + 102 + + firstVisibleColumn + 0 + firstVisibleLine + 65 + + tools/bsnes/chip/fatfs/diskio.h + + caret + + column + 28 + line + 50 + + firstVisibleColumn + 0 + firstVisibleLine + 0 tools/bsnes/chip/fatfs/fatfs.cpp caret column - 23 + 2 line - 69 + 56 firstVisibleColumn 0 firstVisibleLine - 43 + 17 tools/bsnes/chip/fatfs/fatfs.hpp + + caret + + column + 31 + line + 10 + + firstVisibleColumn + 0 + firstVisibleLine + 0 + + tools/bsnes/chip/fatfs/integer.h caret @@ -245,22 +583,121 @@ firstVisibleLine 0 + tools/bsnes/memory/memory.cpp + + caret + + column + 6 + line + 22 + + firstVisibleColumn + 0 + firstVisibleLine + 0 + + tools/bsnes/memory/memory.hpp + + caret + + column + 31 + line + 132 + + firstVisibleColumn + 0 + firstVisibleLine + 84 + + tools/bsnes/memory/smemory/smemory.cpp + + caret + + column + 20 + line + 9 + + firstVisibleColumn + 0 + firstVisibleLine + 0 + + tools/bsnes/memory/smemory/smemory.hpp + + caret + + column + 0 + line + 0 + + firstVisibleColumn + 0 + firstVisibleLine + 0 + + tools/ffsample/linux/main.c + + caret + + column + 18 + line + 385 + + firstVisibleColumn + 0 + firstVisibleLine + 229 + openDocuments snes/fatfstest/debug.c snes/fatfstest/pad.c snes/fatfstest/diskio.c + snes/fatfstest/ff.c + tools/bsnes/memory/memory.hpp + tools/bsnes/memory/memory.cpp + tools/bsnes/memory/smemory/smemory.cpp + tools/bsnes/cart/cart.cpp + tools/bsnes/memory/smemory/smemory.hpp + snes/fatfstest/data.h + snes/fatfstest/ff.h + snes/fatfstest/event.c + snes/fatfstest/StartupSnes.asm snes/fatfstest/main.c + tools/ffsample/linux/main.c + snes/crc/crc.c + snes/crc/main.c + poc/avr_sdcard/main.c + snes/crc/debug.h + snes/crc/debug.c + snes/fatfstest/crc.h + snes/fatfstest/crc.c + snes/fatfstest/Makefile + snes/fatfstest/hook.asm + snes/fatfstest/myEvents.h + snes/fatfstest/ressource.asm + snes/fatfstest/ressource.h + snes/fatfstest/dis snes/fatfstest/event.h snes/fatfstest/integer.h tools/bsnes/chip/fatfs/fatfs.hpp + tools/bsnes/chip/fatfs/diskio.h tools/bsnes/chip/fatfs/fatfs.cpp + snes/fatfstest/debug.h + tools/bsnes/chip/fatfs/config.h + snes/fatfstest/config.h + tools/bsnes/chip/fatfs/integer.h tools/bsnes/chip/fatfs/diskio.cpp showFileHierarchyDrawer windowFrame - {{0, 60}, {1110, 818}} + {{0, 52}, {1205, 826}} diff --git a/tools/bsnes/cart/cart.cpp b/tools/bsnes/cart/cart.cpp index 60ea832..4daf269 100755 --- a/tools/bsnes/cart/cart.cpp +++ b/tools/bsnes/cart/cart.cpp @@ -46,8 +46,8 @@ void Cartridge::load_end() { memory::stAram.map(stA.ram, stA.ram_size); memory::stBrom.map(stB.rom, stB.rom_size); memory::stBram.map(stB.ram, stB.ram_size); - - memory::cartrom.write_protect(true); + /* enable rom write */ + memory::cartrom.write_protect(false); memory::cartram.write_protect(false); memory::bscram.write_protect(true); memory::stArom.write_protect(true); diff --git a/tools/bsnes/chip/fatfs/config.h b/tools/bsnes/chip/fatfs/config.h index 77ac0d0..c9b48f0 100644 --- a/tools/bsnes/chip/fatfs/config.h +++ b/tools/bsnes/chip/fatfs/config.h @@ -14,8 +14,8 @@ #define MMIO_RETVAL 0x3016 -#define SHARED_SIZE 512 -#define SHARED_ADDR 0x3f0000 +#define SHARED_MAX_SIZE 512 +#define SHARED_ADDR 0x3d0000 #undef MMIO_DEBUG #undef FATFS_DEBUG diff --git a/tools/bsnes/chip/fatfs/diskio.cpp b/tools/bsnes/chip/fatfs/diskio.cpp index 3387932..ad6c529 100644 --- a/tools/bsnes/chip/fatfs/diskio.cpp +++ b/tools/bsnes/chip/fatfs/diskio.cpp @@ -96,10 +96,11 @@ DRESULT disk_read ( DWORD offset = sector * 512; int size = count * 512; - #ifdef MMIO_DEBUG + //#ifdef MMIO_DEBUG printf("DISKIO::disk_read: sector=%li count=%i addr=%p off=%li size=%i\n",sector,count,image_addr + offset,offset,size); - #endif + //#endif memcpy(buff,image_addr + offset,size); + printf("%x %x %x %x\n",buff[0],buff[1],buff[2],buff[3]); #ifdef MMIO_DEBUG printf("DISKIO::disk_read: done\n"); #endif diff --git a/tools/bsnes/chip/fatfs/fatfs.cpp b/tools/bsnes/chip/fatfs/fatfs.cpp index 3edde01..974c7fc 100644 --- a/tools/bsnes/chip/fatfs/fatfs.cpp +++ b/tools/bsnes/chip/fatfs/fatfs.cpp @@ -13,7 +13,7 @@ void FATFS::init() { sector = 0; count = 0; retval = -1; - scratch_buffer = (unsigned char*)malloc(SHARED_SIZE); + scratch_buffer = (unsigned char*)malloc(SHARED_MAX_SIZE); } void FATFS::enable() { @@ -38,17 +38,17 @@ void FATFS::reset() { } -void FATFS::fetchMem() { - for ( int i=0;iD5`bwD13%14Am@vCDXi9`colbL|NqOnh+ zna)mY*P`9(w%vE_wzdAMTM^N!O=31+m$p$^wJlwvqRwTl4<^=iWQ>Og`+# z?z`{r{rwW1nfu(2bI&>VeBFD`3_ttN-+p|AQfeGt`FIuK)l;BUD?an^nuk|7T(;;E z=PGB-YCPD#fGrIFU%} z`WiZKtj~pE$McgsSSCDJvZ#EKr==NX%LjZ~-UB813x}&JBcRd#g~P+gAInDY&x^C| z&riU(sjezpGZe<;W~HW}dGaU1Sl`%~1p%13c+3Ti38vkP2kEwd!)}dnx@}P`E#;m=mF;cy0_TtPS^ceda zgP#yId_;lK?l_NIHV-|Y*;uPumOQ=$?peX$iK1@5zX9dG34{Tr%$@p1061+DGT zLwG1kez;Vr*pd>Je7Q-ffg~qiH~7fCHA=;szlrz3UR@V&{<1t(V1mBMamN>P`r}Sf z%o#`@8+Qi$y8>~izb%k(1_o8a>E~Nu(C2Os3`TpOd)6~*AnoV4P7KO)w>{s=>Dedn z`}a5l#3}5GgnQ;0H8Z9qG{}odiz`pdj zLB|K|F|4IMGD(;G&$M6Y6h+_6Jel6}P!SK!5=#5g!{71|5RqP?f|hoF%RljPrO)jE zN&p$k^Y7}}v!tYmP6D`rufqLUaY^!s&m(eej}+~34ze}1OGD}o6%b&&EGTnLP88%{ z==3+O)bPf&Ifv30O8aCmH81dIPWE;9<%DzSV_)<3LwQ?&>~1eokwv4AE%G9I*END@ zp+Phqh*yANMX|-RPy?ia?m@$!8KAX5SNUQECCNP>4-VQjXzc}=LWNo|&fofN`xKf; z#@(YI_k?Dd;cj~=fcfZTEl@)2`s3grfS`5!#~9MBD$LWMJUxh~?ojC(T^Z_DrsTHg zcdJTW>$Z>UR*TFq^1fR&n5Q>$p5Brt+w*OCB8+$_Kxq{ulBjKiq_eW7Bk9XDq&y8B z$?SmNJClROGZIvM?`k-hxaRhV{Q=qd|ta*^Jyrv_CGgF`{TOsHN*d;X|ODfethz1H& z*j?>0r`O%yo9}Nqggz*Z^S7)+ca-v|BL@cYm*OHr^!$(a#Cr1D6UBj8Pe*cUUeEJ~ zYhup({>Pp7!KFg~|0f=w`pi^iM_Yek4*>#Aw>J+aCBQnMRRFYN&cU>w&w_;?hPL7$v?t~q zNR?>PAVRsgx0snff+|7r+)h{)FrYoJeLBg2c?f9+a{i8yd*}{@dj*37sV8KiiaL@< zHWo!mtoSC2XFSD@fSAx|A0=2J*|H=nMm#mpV%zj3Q{i!3zE+BWN`0 zR?uGlC}Z!UJ2iLM*K#lB(1U5QI7$1gSf~3s++P4<*wI^1*wf~`m7aiSd`gFkx9Agp z1KBjFjXL+$*}46#b0MdnJU=uu0HJJi-cFxvQQ6&(VbfsR(BgA@{Y2+&jmFz;fz+#% z3kPxo5%p62+Tje<{?;d@6YZUGgE_*QM_Z{4WsYEYq`A$PYO)hSK)n-f^Gb+fFy~-o0%wleS?<*%044ej3x)hA8)?%qp$FRiVhJM* zdC)kRzD5G3&*)AP{AAZ`%aFdM&^vZqtQnijf5t9e{`Y|c+3*P=U6DH@U$fm!BJeBP z3LGTbO~YU?qJ(K}ho5=4LW7@?*BPsT7qyay2(<|A=OB=Pr8rm*f{D-qb*r{yse0!^t0G93(> zFla#K!}MhYSq2#wU1se2%R^R72ctxR@{_s)Z$z<)L3kELFhEdD*ZLo?_%H#QX40h| z1a==bep{H`Z0xW{zWi@t1H4`KgMGzk3E>tBGVt$;DkogZ43YIOr7m11YGRG6$4@LOiMl>q;p z7fK)KcZQlqa0ct2Qundpv8{@lOuj& z-e3^iuDPGLR@kBsEXcNF#l+LDs))62FM^70=Yv6D_CcHTzK}iHZ9ftb6rznb=RF~j zW*>TGCFXRnGv){&e{0b|lAPHpuuijR0*c&w#aI9U$^^5Mf}=gF|S#D@&8VrA(XB%{CEI@|M}qRbO-h`pu@b>zRNK zsmWL|L{6LqlaZSV=Z*GYetHMQ?zNWonE6M`6wc*E@- z=N`_Bf}Gcyec0!)rpP^9U}}8vii2(^EEN#}P!I!V_qbh4t~N>oF)DJ~3&k#BnW<(i ze`|dORGV=l#7x%aUGS0+h*lDt2dR9gdHXxT$R&6m9|a-ryot$-vBLfw9C|0z1Y+O0 zYU@O_yyLcmL+|)^RlEcF&74Rk2jNMRN8I`ynT=b@1;NM$^ypTz<&4vaOnUjSnHTE$ z3iQVBFPd-St^XqPfj_X`MQvq_y507vm|o(*4k{TcPSF(|y@5h_98{caD}1J6imu=j zmR9Ng!mT zkDiuW_#_t@9uVpwgVO7SvB#Qb9uY|etvLD@_R##{C`B*GNkhAx=0K?9ZT)G^8oH>Rq8=a3{O;fpp=7x976J()#6dJu;M{(i{!8* zZH`S7W#`eh5?aE&dAWA@4D%NyX{pEzy@go}{4r0WYz_O9sR{R1PyeHI|6+7Q?6t0? zeOqRz=YY}eD$%9^q*oczd0^7TC4sf3JpjILvb4>4sd@WLgJOo6!TcyJVZW>L zP1Kf8!}b!^`Xxon+)gu``Zeq`wEv}qdlD>eyx=Zc9&Wb=V)@(vFw$-3oo?z;^h7lv z!;Y+wk{py$(55>$7c6T*Vpj9^E)~IwIfi_uVF`Qn#a`H$n{Z??r(x_T&66kd^l~0-a&H^DNTV2SxbMWL+_^MeX=23OdF zbKcyU=VfLdC!EEkDs?4<1GuQ@85$RD-(?C>A>yaCSG1^Rp~@E~e2RmoV6YvQYrFKY zjQNuD(1Y&wgDP5P2b`ucH?-*ipRv>kdAe@8trH4$U5TzEk=TI4i5`qChJD7;m4)!p zRyIx^LU8Imbej)%N|37u`!fJ(BXk`?Q1Vrq3HW8OZXm{+A%etC9U${<-=jwuf0P|B zAYss9R5j${5qckEdkbG=W02*`r*&fvUrx0^JbamE>pXl3TEN(DSOoqAx!_N7Cj8JD zJRl#C-LgJzm`UcC1BRHhGuHDYh51l)Cm!O?PMp{w_7~>k2xbbxmb}}y_kD3 z8%grbT;#}&r1!?>!4TbozxC_TKRw@YcR(!U+Re^Mci?ZmJ~JeHJ)lj4M%!~6Kw1GL zlp&7)GR$qyJqW%LZ2mq?b?~K6P*wvxqf^?jPyyeCq!|4 zZO*}F7+iwvrMpdE1Q&NOad+cV3@G@5Ac8|S6H&^!E6PRihW=eEZ9jy11z*e_)@33B zw{Ig(^xJ3&e0zujqQafcL4?b&485l?3`#ir;LYgy7%;+_J}PIC-t&}4QeOle38!7G zvqY5`#l9y?Th2E}OO z0=zLOYI9>yRCr_1LS|G5v|=oX25So^+QLb;FvS*5wuMt{VX72*^p3qpr&P${YAN=9 zu-^8J>IZKz)X(K3)i7QG2QjcL#zS`W@3;Lg|Bp<6f6IMxLxh8*M^aC4jIaz7Ctsb) zz@{JaNjnM}C-IDem$VXGpu#T|=4Ktw0rM<3>Uchi&w@S$%oijUWmJw>*_1flGzvi; z`eBXR7DIqB=D%YBVs;aN=>al#ABc+FeIP1w_kpPJ>;r)#*oRFNB@FDrozM|HVBHgv zY);{^k9$SS5rN(xclPT9iM*|+pq*6UgzYEID7T4q7h>A+j)aN9=*WGb11fdDMhZe2lc})g zg3OS4>)xay>DYK=Xfop}4Gs7lftVJTGssBdl`2ka)8wDKyVMzoWlyxmdA=plF9RBV>>doLc6*A&k$o3Q)G z2=}JJ25}V$IW!q}Zjsf)rt&0_3E52H;|_b^ygxOY@Siu5dM_f})wfbYI;GI2#O!9W z6@qTW&%AyOGyx?DW?y_I0%~NQ2<=9`k#_gts{}*zoCm?0 z6PV>}DS@3@r{tP7bHYyk#d<~K3G#$Qg|Xnl-HAou=iHJEws=z^(djb^wuTn&a8qgRD$i2^=})=yiA#uz342aQp3 zh%uTu_fOKFF$1(f!;KLSLq%p_5|WWHi_{}17G$#V6HSC5V@<^KXa6Zo(wvDVA}Ple z|6L{mnF+8E)Jj6IgSaGy-D5Q4Z~d8FC!-DHO^C8PK-H_t# zca}&DQU64=j?t*+HSyFWt|YlCIdY_~#o%?KY0;MzM--NgmS_@%&5)8l|D9(*sCE{B`tWF9XF*?>bt;(=Y$MXDkfsV#A@glE&{Vng= zHHT;F_qV)mA2ShA%g=Sye<^}^d)A-wTmN8Z8EP$g5hlSZbpjg(PxQCw z?&%LIyr(~z!v|k_E=&;b@6x!Rfw>ytLU%up0gb=Kh34wGVF2%M% z%)fxK=L~`Lr_j3~%A-Wi1BYOIHdPsioo36Q&1Nc1XNN_JW3N*{Hfgu?QzCNW$%_$xMenI3y_VnE&xOc1`= zIp+b+NWSZEiZhB#(RcO3Gp3eiEP>fR9fW;TsX5u|-0hRj1k|~`&=0r<6~1L0BT}U)IzSjM1!>fLAPpjd zD>#!j(gRIcRZI&WYNsX1!1nNE$ImmoiSlHeR#hK2Aeuc!<3@;)qtR%C&1RHkH&0f= z4h&s$?x{ufWx>yVjZ^gI>|P%fJ_mpzv!D1Gnu2WL3p%%+pdVR{Bo3orshe$o#C*v9 zGkFxv+uzTNEE<{L%J{!4_YDr#fa&95X8650WVhIvE^v|!Jtiw#&kf&g8WCRh zArlXq;Q;`}4b=xKI!^+4e7jEiSl0b??{K3@ zegn9($GPDLp*H7(w6nE(^T zNTNjit#FJxaUeR50U@{{S@X;VI2c2+(va=MHmWs6E`j_dd&eNFyc)K`1nX2Xgr5(j z?n2Lm^Ic)C(eNH>_!9?)_pOo@MqH_#IQ9zVnN!0l5 zFEf3K`vE$BoJtp%Q|Sj%Gi5u_W!XWDZr50%H!XWU*TXlD9xUW$Q9Pokp$f>IUrI4;8Yj8!)>%Jj<>Q&$6q-v+U~n%xKwW z_IXCj9-1A+MTj}(Xx7c?y{Hv8@^9Tp{F89 zPL5tV>gWH{6>}_4NWed9UdSEJ16l1{2mcqZV9r-tMLYQd_CNvm=W6ONJo}z)2?uN3 zmr+kq{#82ml%U`Wt_yF$k>JIfY}(iKV(_s!h?F3w9klN%F}49#9qO6Zqhn%L za@k+e%PEms8tWobWh2*Rqas?GMbzKQZz_$1>_1AxsvSVnNXS-#DZH`g@&O@HIH|CL zh)Pj9Ru-6EqIFW?=_RV?rDbX^Ew}f5O^~GX$`aL+%l)fgA^qAMV}}JH+nwRQ*z2CG zVK+{(Ii-(q55h^qoisCGPX%bPaBALuB&Xu<32BdVH|68DA8V^L+}Bj2B@-BnlesQC zpEwe2jG6EG9f*(dHWfV?to^ND7XL}xkZ|rslz@w7xARj(;~0Ym4e0Nm!S}~@Roo35 zVZ>m+7K7og(%(`nAki|qOU5@132Ag^EMMe}SM0VHy!|=itVI`WlW)wWz7Gu1hw5xh z-h6OGRA4s@J(8Ryn&1g%GrO7$$=T6p+}W+|APzI0B8W957xd8EJ{5CXxU*+IKvQh32yrG}O^TJG;p(@pGpdPyQ=$Nm_KQqrTr_51-#0cbcDj z_O8rtNa)kOljlM-Ap3}n?OqYdo|KZcXfeeic9JtvY@FR>8MBHIRU=s|5bEeXwvf7m z<2RGZh@!8f_efJ)fUoN4qIy1A*dvo5w`FdU{J{4NV2=>+>wFRSh*K~T=6>QFel-VQ zODciMI5dv?1O}oa!|o*0>8t1@Up!);`Od+H7xxsD1OYX9n;pI+JAA>^CVn@?09$Zt z(LN}*1 zX}ni}hh>(BCVCR{+%4brFvlGeMR9yj4B`)ml)PJ0e~54IdjAKpy@z_1VNFwyqAKB@ zCJ4h5VqTMwjTp5u;hv!zOrn&2LaLNSXpSyO7L|sP2o+l0DdJdtQt&xJpx+Kdgof`( z)u%5=xaa3gpr0fcOM{CeE9)ZZ5?6Vhw#-~D-7X@bqtc`0dpX+H7u$A_RESKW))Rn0 z!tH^{g{KnkKS-fH;eJ~RT?zMLDeO(S zk4s@+!u_!ndJ^tFDeOCA97woHDfA}X!%{eya3>HUCz)`MmO@{`ohF6; zggaXb17Kjhyp>*n38wtD30S6tdmdXs$(Kth6y-x@G2u4qbR8>{P*)@bAVTHo;ch3wm@X*O85wl@e8RjdE?;|l-wK>K zX%3ncvn0ZJuzZpk`MWvHN`VR?`%NW(ji-eBPk7g--rG<~_}|CL^pwQnJXE?*vs@K9-xO~1>%w|}%VltT>HG9!jlbmu;G`cS{+7eXz%SkcoS2%k zE8u_Th1iY)01636mTLVi;iU=`lN@^vrn00T4|0%dqS|f84Fob! z4!A0C`}PC;DnrxHQdeM_TuS$Rq$yn}2!ND!F4iBx(Tr8Lh<SmF=hpZhf5kMZAm8awUaL&xjL zEM@jUydXdCmBC*BR29b4%XkG58=s7M|J>IA;<%xGzX*BGU6|SUW)4O00lC-R7lVb= zV#QPw=noG=5A1Pv1~GHGbYxk$5ipPh4sWn?h)AFo%kf-lDYY_3^miT7^UjhM%{i?U z_e)D;ZhR$t+TJWeZNb{``1Xh29704B&O=j*l&>|WxJ5vSW7v@+a31)wV0G?vEq54=EOB@F3?$dlf z-hb!4?6iXqqL1H%=4JKqQv8S}_3GRBGSae1`0Y`Adi8A3=;=)Kn}zgkwtW?*^KU%; z=6p)2a-1zagFgIG&IYuf;#cYb2+t+&O9Ps<1)99t_EK0aD#bU&_%ne;tf|StEa34t zXf1^pr+P#$d+48x$|-z9q=_(3HfskEJj<*6I`OcnDiui85M?%=0dO>jus@ka=eMVXSokyp78{FV0(w zZL_$8@{$tBYA_ZlnG(CDWO955p+ka;I3l|gh;85KgPkR^Xc{erV--DPosk0 zCtRx812)?S|Ko`LzN70I2I``|+(KL?4U&FK9=r(l4`a-WP=r(?xC82W_S2ITL$f#b zlK){usKS~uvc@*H$6oe7d^n2$@6qg3apMM9OtkjeXCT9eF+Ub` z$hyJ|K&cbXUBo*NH(JB+K8bk$2yc5F3FNT}#G$b4Fkv?D)s$ypjKi<67#RN6Du|u! zV?yGVvfR3y$R8GRHxS&-e7dJlKoG1a;DyLOaW0uTvCV0nj779vc$|Xm>UbI^e4+iK z*p4Z~TaRRGYcRJ#e(kH1j4y%ch(_=cm|C(>Go$^J#yY0ece0 zLdC4by%``Fzx!K{W$)IA#D#nZ0cIn0vLWK-Q$fT#7?3;N=goBc(Xz+ci`9l`emQFe z&Cg%$TR4c2vI#%Evy-k8DtV^3OoTMlPwJMlbC0u+=n`lAb1;m))ZA*vKG4++mDAXwD+AO?`v(;k!wP{Y^)M7u@0S z5kF2gDkpY+GADk5izLg5j4S;|q^hMBab^a@{+9D}5v~vsb(RFPp@W=F2DW-vWf*k@ z7?m0Xm|Uvr`!rQ=N{crpt1vD9h8FM>Q&F-UvGSB*dOjPc9KFgqts5Il~rS3x0NPd?41@KI4NtK+E?02{CSBQUQ!2WLN zoUIj|}Bcj-=f4GUK z!Ch|e)Ix;8I;h}Rq;hG!+yL1pisYqrfob`nw0I{z)wFyKEwlo?Q#mh9mD_ufIfdRw zSDiaEa;Xu`Wy2@BquUKzz6&i(EfaXdc*--Cj2um&OyVj{qpQZMPW8az*Ez+k??=v8 zR%1%{19A-@C)}?akP8S>`;G*zFW@*h0Zq@y&g0(aG8ji!AzVau)g|$Yr$%);7P}Qc zm2r$0aN5fAihcB+(TQ>c^Az&+o8>gD$YOpXFvn_Y2K=+Z_Dk3>WXY*~k;K^<*5WA@ zBfU93{Udxol2Y9Xo+X?|$f+7a(Z#9Uf$&ZOZWJ3Y{HRKC?(iouoUQV61o#cV+}8VZ zTZ?jAZ_RDRCQg&14*{;rZ5^T$i_uE7cSGB=^J99U;DHk}6kLm0xb zORY;F7%Vf}3^jqoGWfOE-G7fidNHHyLbN07Y^fbe8@yE7$_hCS(h=O< zN!olb^s`4wxX?Hfq~PWYQD|>oC$9fRgTPUqgoBIRO6V`R1T^#S#BmGPZO`!-hp(#V z0^r5qp4dx&_}~E>%)*#=t+@L0`ql;)4}Uf_UlD4~9E}=W;Eq7eLSpq7Q1c!RXi3dS zI9L{HJOE(f@XdlxBFB3zilr%nI<@g@(THZTy!iS*^y(E^ntu{vt^@D9OT%U^O{xWN zSd?C!5R)Il&x#)y7r6}Yc@zYI_GS(O)s5Sw=SrH(@W1@ry4g@ZVuPf)>StK8>%B}^`&ab^0k+Soi%IJ@>S*X zxoUNJc#X4Y$(3r=>hRL#D;$27Eh=Az9+xj#v3yB*)uNS-TH>r)?krKxy5(!jGcBtZ zf6lqMTwSqddASoVTeG?xPv~R^E?Kkua)QG|s}?O@ffh4Gc_^5rX?)fMHcVZ*}dwZWxp!qXck%0tvXEUk+w)u z6GY!e-EU2OeI&SK`I=z$X8hw@SQ;6v(Q2GSm_x^I&@iPZfU-+tq_QCroKd&Fa;E7{ zh}qg%GN!&E(~5s6%hPPDAurLO2*@nq(t6S`dm=0A>#Fb%LZJ*+T)H?IsgG3F1*>Ws z!J;jd8>%x6l}(kkb^KSKW(!ZIZ?OM?CvzZ$`i=aH&gWZj`UQX(s}SXw%}siralxofD0aF}Vh3}AahkVx?#W#jz8<(n$6 zuMW0{NN={d3Y@h!0I*Oi&s~yD%aQyZ(O_lDrZ>R z;uWhezBDXNpaXVlxLJZl7|}B2TALg@wdM+%xYcWhS*Q_gk}*jZnlWuT7K$v+{lg&% zLj)D*{jv`)h3BGXrF?i5;HCH)`y1oH7zf5UFvfu~4vcYNj00mF7~{Yg2gW!s#(^;o zjB()qD-MKk7#wOwo@1L*i&4G~uU?dw;FEvL@VPFg%OkxH{NMN+X`->ZF%FDzV2lG} z92n!k7zf5UFvfu~4vcYNj00mF7~{Yg2mWdfFjw*vT=++jn~2O-DYv1_pT3xc`g>45 z-<0>E95Uq(QC@D!tC8@@FDkMBc9g@W%-=;|5(n$Qi{#J-Q=S-9>NZpU_NmAsH02vV zt<-&{e4s?B@0jw`=}P^JDR0JCO)h0A778+7t4toe`kQd5X$n=XMqo<{3#@#oo33HU7*xiru>y_l;Xee%>LJ2i(D&H z-jDKSru=Czfxnx}J}H#foASErl)8asWa4cE6Cx}ZAl;%_sXI)$80EiZ83}xIQNG)h z=b`-fDEpD67()4*EMqM5Gx&2mEHh8zVcVxgDgL51>lNxdQ69&H4*dU;>BBQ0CgTz& z&wS(`SVEcSKEGo?PM zRw?xlrhLbh;EySHq5ff0Ua?fE$4z)JmqFjxy@6)%TxY)Px+gk@^?JthdpJG z&^+1;%f`QEzEZZD?aAPF8KD@qma~1N)!W*mWwp2H$a9EmZqMJ8_>+0)ojBZikP1T#i8@Ak}3ysJl z)is;Yv|;0ocwyM4`ljmeR=}#?s=|#oZQh{5*H=fvCUa4Rw?sV;4b{?p!^Xi@m`B$!+0B-&uVvz;ec}um*qbXi;eiM- zRjzh(O}z>u!LhD>Yj{g#WFzUQ-f&~Mrcs3}qmg=0gOoWHZmO)StpaWu{i-M_CXl+? z&8W*J*Me)LuK`5c&*k;Yk(!E5k%rmloORy$n&aV3l^ZsK)s;xCRN=J|S1+(`|qva<0A(J!`#c&xUsevk7y}7Bjp&lz%1AZY5R|<9Y zjeuQ4zA!D5#X7xaHQ`M+0v*;Ee%6GU>&Oaznl?RYjpQw6sx*-`f(H9*iK+=l8X%am zA~oUYW~>8b1EmNU#DYN-xs_Z>hzS>3mc25f`_wX>GR#a!WtMT1h~2izNPVr6{8_9f z=7myVwWStP3?fS^RxMw5c4_H3V8k{qE#OkhH)+6zXy}U85aefiMvz|5BQy<}pOBV@ d+RYIxIHU&R&x&XSh(l;ZsrX5~lNq45{|A|k$h`mn literal 40212 zcmeHwe|%KM)%V?Gg9}79XjD{`#X<`f0s<;OHT+lw1xbOlXw@Yo83&L-F4HNwy8}O+4uWBGqZbl38?)% z@B4ZF;KJQIXXebAGiT16IrHP*-0od^mBZn%%#~y1T7-)4cDiQZ`M}*OWrpRkT-F3@ zoHf=Of+(iVXaNpx$$(6Gh;!o3Wg6facOV`2nSgmSjkI~o#k{!JG*}jI=C=w|dj9Q} zmG91T@m_@t_YSk9T&Cv$&4Y9g(s*|Q=1sm>2JgklvlwOb_5kK>(mwTOpaS4=m&v~Z z>GtybfytZs$@`R=>a|m9Dkj%d*9A8gHPshQQ)ysL(yzX*6d}bYX}WNa#61ePxz0hr zjhk{|I4aDj&-GF%#v|^%?6QXT^3AQ=JFu$paJkC{)#O4mMr**EcidO z;7hY$t+o4fyek$bh_7Lt}Mapwe1b8>p`JTeY=i z4Wv}#ud{0XwN3tjRnz46uO~q2Wr6x?tGuSZ$#2y+0EdNEH3}>1{DE>5M*cLjwPm1x z_0lB^7W$?Y%}9kPfgI62{to^xHx=(dh&L6{C}UxDHM&i%)uH1G1kSNu0?exqwqgjB zpK{D&2gLI#tJ(Md=1iB9X`6PK54L0HNsI(rG9==`OTH&=#woiWzo zvv<6(=nIw={mRi~G8sM;$ctTp*jOIek9C(@*6Po`_(Jm10n{`({wRK#Cpn%qtzt0V zjcm#BtZ^07;++Ds=2aA9yhC70po-=yzFlBSqRK<~A%Q88stJVe6_}E#no77uU`nWJ zCgBEwDXFSr!fOPk#Htn(E)kfLt12N}EHEWlwVLo$fhozVHH19^Q=(O@P`p53O17$j zuq7}hT(yyK-!Vjtr=+V|2zLuiiC47|?i84kuez6Thrn!ss;z{#3(S_NdWi5tfbmRS zm;CwW$R9#IeI=__R29das0DsL_35ffzi_%@ZveUf-i%APWy`z@khFru(X*-$*f|PK zHMtN!y9aXGS0`t^(ln-h2McLm;CPrA$-*#`75c1K8vnE}j}#oCz0S|x^g?^H)xPT! z#0ULQuWQ?A;D$Q_XY6Dg0z>yZ$1yJ1`Qi)r3Qj@P>xy`fM!oqF??B?rsCU4<193;& z3PRqaj*xf25!zf}xwmwLY6~2#9l_tf_<}uOVgz&UNoUAFej^iE6|&#ULDaI54fT<7 z5s0{VSnlULg$V>YA}>$e9XSy3_J=n2TkiWh3`@Z7h`6g4DYhpdB3e8Nbwwe-aJRk#UIeSy+1lZ5eMo`ri>InchkHlo{zc>RVIP1t z5Lq2nPC7R132n}|0`pItHQ&zVxSMp#D=rfS(NY&1V!Hm4AGO@!@1l-~hivEOy2CXFDjr6u-K4<%#gi08SEyqu zh`C^yEkl$PcfX%Zf=FHw;`dpl3{H{Y_YmAyJaq*gp^i)TSt>AXpH(I?)Aw1dZ(gAw zH!^ruI(W7O1>qbCGE@7#qYy?QT3pbUBN6AOA}V*sTsrc+ROIfMK|J3UH%jA;HgWkn z;(}C!joO8&$TYPvwm3yCT2e@cY&zCqbS$z;D;T6T_C~3|zT#m@^2Ja_BDyGKyI6k+ zMD*^{_M^*6iyk#C3RQ754;LwnhPrQnvi1-qUTm21NMDdXv!f&8jfFPHa@?(d0}evD z?$%PEBjj+0he(!u_cNW5PDe+3VL_yGcWjKK^W}j`Xo>q7?@xT;`3Dw{K3M>rZ1cXII5*8npTxRC-EMO7w&LLJwu1N>LQrX^z0#ksm-^={t6)#W!7_(Bas(q~G!3I^61f@y z7L*Do+NIkh>g_v;9v&4v{jTqB{ej%>!0o1AZOBp+IKFL>0iK zfM^0MalNs>97EFt-hqA6LuK$Xu!TV{COt%B_(RG&ymfiOG_z(B;CFKM*O?z`)x zH>Iq$N)ctww}Ku4;h%{c6u{`+KgZkGxCD-ruvDDMO0Lv}qqc+QUil_&(VwHp*96Tw z3Og95ESS@aZrP8XL0=Dyk@Wfdy#uVgfc?#+0?3NLsN!t({;KGoxCntyqR3=m2n!CH zLhesd34Y5^q4+69)EPaGE|qD9?PC7mrFwg5UlKQpr}J@zBwkAzw>1lQs`xbnkp)Vw znc}C@ktKfGeXTXlP;EXvglO^TPz=sm{sy)_xU>?m5*Ve5Vc86o|KLes@PRI$J?96 zcvIvD&YaPbaY9=SWb6#AQT*E}1kL8|ZYPJo#B!1>fn-I%^jF{dCv}tzC4*#v$`fzJ z4_R!c%`zq^!7^ObG*lzzMCQFj1r!p!^knXSC6-bO+_2yBGX{qc6aCL zq(T$~7NBY|X${P9#{nCX$bof2O$I6{p};U9Q4sDB*6F3jmqCW0HvoF{FGd1XNcQd) zEye^$cOfI+0r%Z>f>5&1;iQ>#6wjTCS1rv@%rUl;)Sr?L1c@pQaKcY>(!1I64u#5| zDZNd#E0Gan6Z1BmUF$%<`|i1dgYM0y5I#1apokbWU3Y###?k{O%&G{7#GnFJ{0bFg zD|C`3SnRYri~WD2Lla18z>pNy37qzPWS~%1vzv-a$>2bhdX8pq;iP@u_pHQ1B{&X} zDr7J8_N+p`EKM%d7ED4zV>;5}eNShk>}Px5+wcVGES6HK|C8K1yzfPRJ@JLek;wc> zqJ{msyHg8OOidtDx__u12?tg8NTdc@z7}`4y^JtmjX3vJs5EHL#Fw7fFW^cR` z)j;KwxtcTNRaUsk-1~TMq^B!y2 ze9YpQ(@(`ntV6sZdL`zMNPROf4ZlSJ$|M=;rjCzQrPH!W`%@E zq6G2BRcNGC2%^&!3S6AU@9(7_$RHh5)(Ymp9p>1XG74Thq z9@jem=k0VwW~hot6(IHGn}Lh)YXwG=D7p>p4JElK%~{|v^5PCFALDrP%{KCDQ*r`5 zmk0FH%=VM+fBZ%Dyy8(rNVlpa&XdIcc5RVTYNw}|#ZJ`|jUYHxpjG7zBt44GOOM|{ zscp8h?n5cYvBByPn!IqI^`-=L0cH?X!Wso7FwC+xtQE%~)MoFWlgWMF_hEO58XUnqpa~Y;cur}txQhV&X;8Ph$ zMdLYDQgL%WXy3452=e443K3q@JOaPBY;YmQf#n$wr;>YeORGJAn1Fc-ghL9m~E6U84B`x9WzikpYw_l6D57H`ty-cgEi zqmL_zeR?Hv;I!L*D1D#n4Rbw#&meuDRYU}o##TyPaa?KBR2g9Q!<8}Ywq3@)u)b|2 zkO|Dq7!)aP-0s)W7Z7owir^F(qXi-^FcB^tF0Dx`apD_Ytc zVO=Hnm<{98#zc(Nihqb48?){St6+ zWRF-w(EhZ^E7lMZr6xiugNRjz7@fq@E)I4JU`f$9CB=BOmE;Ogi~+S1iS8%&h&PFx zSEfkmidgK11n)zjTZ6tL>7$Rhn2@WHut=PrRrw%)MGgWu=6NDE_5X~$c`84 z@MYKPW>X1MtD8)Osnw0TR@ALX$+!fpOjoqn!}cKOh{}wxRfUsxAWXn7JZ_j*4D?;_ zH>thY9s0Gn6yT~XRiX@$L(<%TLgZ)(ZWMEukB9ySe$yDjb^H!`Vo9_;D zdjyp7xZRXVE03E|CbJT~Y*m>kMNc-eRMgPUd5w+p%iLkEP?9E>zq4p^SIH32G`ag^ zqBKqJP-&W~d1$lqxR;ehj$2+PuO`Q>F%zZ9ar-QT90pyq_9U>Wjq|ZK%qH?0Fhp>v z=3xfh&z!{vFwr%KXb&>FY#_4iK-7Cck5(`mTrR_^p$j8|jBT{Cr!(|S@er(l9pxI} zz)+Nwn54!&Dgw>*49686AV1>V!r?D#fhyEn6)lA*Ff5`gWBGJvTj|sOZS<&6rAs={ zqxT~WL+*bXE~oeDQ1^wf`>uBH-cW~=BS5=%Cu_1$d@8ZYf#LMsO1H5;3K1|0t*0^vI3+mirV`)62Bk)P8qKuSZaWTkD%Y+XjD2{88SG>Oce2#t3@p`{`rzPWXU2WkC4vA8Q4s&Q#w~Wq{w9aR`=t}Z>nu4<*rTH{bC3JZb`;DASquk% zocqJbB+g?{4kM(i@`9*03{aO^&vR_J5Lloz1bd|~wIJL^%dRT(6bi)bFBu#h2Wn@< zzoeLomJURuC^U>PlU45L|Hy77>#HZACgPiKs#ts)#OL4|BQ{d8q#?b)-TJtyD)?o( zUUxxDQ51-nwWk^CpMu$n22~$6ia{C0gH=cvcn+YIp<7&Fh7s+dU5@1Ac+4#NAc2$A ze2er@-5fF5@n~bq#CCUs;okU6lU_VTRG}E;D#%?4hDe+b8D}^>ksFl!Ko-=-v1z{7 ze+r6dKGH27g;lcvw}~J=p_+uwe z2Ej{~<>oowf@ZJ;jqHss>m@^UJ&B&$xL=A>F%UbYk5O*HZ|QLMI%rcBRdHE4*+)l( zDk~SZklnp^qPIZKnuR;DxN+QynCjnX^ON`QMY4Bh@84bVVKVI!(W?I4B?|iYto{v) z%l_RZ{rfkj&*qayum|?@XYFx^ZbQO;uPk228x2yrV;?eFpVhH<+B-HzHjslD)f%~M zDyEi{DYpmzpq7BxM%XDW7_|RyQb@9l-TGIQi;!dR9;qsv19ner1G>Zp{9f^&Z3Cbo z|EA{WU4CM1R7I{gA``=9*ZeHQGawZ{iQ!Sz)Q7^fwXhi;@f`*;JXGb6V0eHI504f} zG971lV#e?cz3hYPUT+Kw)ulIWczVU~^u>FO+K3JCu}F3urHoA<-X`py@j;xt`ES^S zKCIBBZ9-pk86vW50yf}b5@1P1CfJFb@_%HjgbKxBsu(%M&hwtYQ#^AqZy`O!{TBXTl$g*@iG*4p^g~Qy3$LzoW~sJBUpcD?-Lv14u8+IknR8; zdeW)!!qzKRNa-JPJa~J$v7=mL@}&Nu!nVmK}$M!U3#7-J&Dt3`x(AL?`_ARe`V^|DdG zvH)Y!6wXRTD6H5&;IP5m2|qY%GoV?+oRYiwa>NsqA-sV!5gxbFp0#Pp*Ixr+JuF&k z#z5J?V)iJxs3SAzO19Z0lk?LjWVu@JGCrc&6I+b9!BpWNvRj%toV=>6J~h}roa{A& zK|T(qG*M(Jqsftlr9#SPj{vh$TAh>^j5BMeVbGIxPfl^&t=DKvY#bu72rzz_SX>8R z7Y82nf)w_GJ5gg>#4K-TE*dYb~Bv&m#xOClMXL0s3GVCE~c{e-(scAsAd9%Y6!a?+8qCx;>Rw!zyxws0BtZfW-PS--|KK!NJ zQh2yZ%Kai@=mCz8Op!G=%AF`QQDWE7-G*{P25pAr&({-!z-n?}uYyx#FNY;hHnd-@ zECIx(ob5i)A&~Ow+cMh@?TnCQc)@Se`HVhtSKKf(&#g@EF#m^ zozT7IHbCk$|Ix`(fIje*IoFZ)Ow5zE>5GVOYabxQ(#e1^=l~(cgYzkEJZ3^vvciL2 zdn9A!2n&xqsv|R4DrGxXY+z;1m6?%pGs0q=OS`yAL`IGfk8?HPJ@p3lSL6LwB#s4L z^hdQofZYvDne{G)?7IbU0s>M0b8~sD3A++AF#2G(#Y%hx~zF|>yzccB4y0p3lG|7?Qto7EdJ(%O@MMl$p|{M`G^(dDGWP%mSQjQIZz?H`@2kbXON5OSQ=+#^bW1m z@XE{f60?tk zz41jUo1@3UUNMf7)6p_l*3+t9nN}63#MH70W>k0mURXMr=O!kLN2ew-q)xu1Jfg>c zEvz9$H)Gr^qGU}UzVb^V4(Jo3G7*Ai9tB5g=0t!s;A=F&r7TGg1 zHLCcZohiu#xkR2}y$cj?q!>5@iQ49w#hGkxWu{R9&at6w?NAi9e|n;aHAM`A-mdu9 zMUVwxk>cP}&cx2zvjJ|CiN;w7%x6(0EB-lyk4}!wW}LBMH1_))!P%)p+681@_FQ>p zu>2RvWF>@-_qO_RETj+nyQ-X7IC*?1{xmue4W&~~1s6(HrPSaLIym46V+ihYf>XruVU7hqNM78)pc&JviJdm~VmU3?f=j?P zf}zCDCeii25hAdnr1Hx)3L?@3huR6Is~f}7m}5DiTAYZH7Zs+-I4%;xstM1~tA^YzA5gg>nnqzE4t4F*KWOZ}uT)X!`s+&K+W`0%H^Q0H+rQ@yfc3?`6?~ZyO zP%3eNxS#(WrDt%tw7oT6CQXdRKp922l(Ch)J-$TZQRmc%!YvslOP9RZB>zv0F5DHs zT93Uju5aHS+T0_@Znuhwcm`}y)kiBasCqrldX3!ASzS-W`!v$UgtvPoVcwy1h2;QE z>DEM(P8;}5DlN#dhSj23mJ?@?OyU~In$#ainQSXK1uR(sOjHiqb_~}1DoqI+0AhW= za6sZ9E|7)BZ_OCPN`98IomJA*j}O|^J5x<9wds@QQ=>h031X4bN8>Xwe~_leSogRR ziEKaJB_5z^Q`9a-rvv*4PWGBu#QSJG37KM<+z5;ny;6J{UQr2-NnHajYLy%vlv0>=q~BGJz~dzWq8udf$JeGCUK9C zNgh0P66J^>&Y0mBs=CiAh;=}HBi_S^XfFX@hdF6P5LWiEnKS}~Z*^Et8Uexj0g{O; zAk4zLbT0UdUA9~>=3VJrPy<4?bPxG7{OMW-_6m=ojQ708Ddmse)AcKJVLB;sz0MHx69m7!YhH_DOhPJENUn z21n`EQR=`cB$>Cr(g{|m7Ks;<$rkV1q=JzMN4MYJ@O8b(xlyJ{s-4ftY}{+%rp51* z3LTW*t=s4Sf4dkFur7aBRac!S>U}h$S3bL2_e#8_P(jo)mTfm(bl{Q> zN{Y&Fx5m=#mdPAbb-U(vT3D#J-s%-&@|XWk$({$4VRx}@*&}B|W3;=8;uin*Pf$p! zVR%cob5ky|d+f`I5mU?qq1*r2Ikt1?fi@h-IjEXfOwKvFZdeg39Z2tX^>p9>_1+3| z?tQgX3EdEWr^Z0X6wqLFs``rm`U&VI7|ZsV`+uri z@s3_SyN`J9k?OYDsw+10K)TY~Qb*x*csmh3E~AGa zaM(Q@DQ$_LDJFF`qZ04H(X%@RbKSxZm!5l{9WZ%P?9EXxkO_`gu_*{eZ1+kwe&<0Wxx=^12>qxm^K`bCoX(Q)*$Lpj z%2P<%I{gOHih7X_ZS%fLsXwhnY#aG87`t2fHWM(j=aYy??G5wwSiqUP!iY$n0FXCi zqorF-={JfycQAyrgOu4}NXv@LNtsf}TP75(`Nck7FdqopAr-jbLyHB(I?lBA>j(A(5_;25SUilmqRDGWT4CsmzH zsXq;To+pj1LV}TyJ{PoY4G!`!Qx($Gq1a)8%i(Ohg2T8<7{Dul1HvcRIE0#F)e~>( z-L{`I2&}K6a_U6?fFtn~;!xdvsiWI7X)sakcC`vHD*eWUJNyC|Vls-p07au|;$cL& zcjP@Q#eO;Cs>qoR1BChFijaiB+5hYbp99ekksqXvQJ9z7R(p&`{!xCgKjX$!tiZ}a0yC)XqT}?UzCE) z>h|jW-i{j)z2CdnCyxVF@;KNakIq}gMDFDxC0L!ALN%3l(sn%;O%!mPBr@kOu0RX)2*MtFme>?iQ3>h zCYYMz`yqc$z3%GbiF=hC{BI!*Px&Y)yEvyr&3BUe?S?wOvV!k_;8QQj&mTqi_{^tQ ze(H|inR%9F#*SVLmEn!=sqe$YV81B6pOHosG!VXmO8Vr^WOAqHT-6F25yN&}{JxHi zgdYHb=obFEcjWL>DB%Kx@fjGE6nc(eMc{HBxZSM+Yw?NjRJ?&l9hwiJREw9JquSnY0|1A88NjzE*UbwdiMaEC7kh4%1$ND;jk zTIBy4#PD+<=Scd!$E9B^>B0P{$R`peMs$n(3N`cxC}rxfrzj|Nm!xkRg=630hmoP> zIsW1$EcXt9wGO;S3IFyP_>^D6rc6|5OP$yh3e=c?B<7RA-1!iR3-|lOw~{EX#AVSf z3@ZtN1s50b%<@9wU6T^(DA4kftOa*G$6Wj*MDz3Uv%$h(0-A{I6wo_p=%}eOt2Y4+ zL%XK*S?Y2+>+%aA4o0Z^Uy9K8ZG<}8rP81wT^pQO92>Vla_~6L&XB?1D1*m#q`5%m zhrqwd%yE{PSF6nDxu20_c00x5@Lmx3TqXhC;8HqfokHLoA>a->g;Apt=mn!mU?K>_ z$5g|$-N}lGY#2FMwx9o#)egQGzh80@&Ap?A*?6o#sauBKoWnNw z&!-2mM9+f*F;7Nd$`Zkoa<|SB>Ly~$?IRUw>1-@B(K;A&MZ#RbbCNp67o!6~HLfCC zH-oMC?*UU(+q8hUNqTVD{xH+nQ=$^0oZ2(&5juW8 zj~du*(aZ3X(>>uDa=Yd!aO;uMD1yw=rfY7j6L5Q`PG_fX7d|rc{~f1)(XRg{x33=0 z?GJwlZX2bvY3|k)NKe@)+Cd8w7BYqwqE5w*{s2@a5o_?yTNY_|K^CFs_29eh@lQ9Me;Q)gB!v z9^Kw>Ooum)QUT0a#cK(VVrI#J#S*M2V`v|3kCHb-!bhPiQTgQteb{5ekbz>=xN%TR zPvpjNqa%TFqawGCD~xU-X~?A@x`h;}y3sAniI8!XR#97jxE)LI`^Dp=CQG35;T9SS zWVTZbC1*(A!)HjV>la4Z8(G%BWZ<3V>la49fc1sMbaXT z#xT*)ep5NoiHZG^Fb}0^vhRNlAlRD05_OBbmrS?H17tI(s1&aCh`LiQC-Srj?V8Lx%iHTbGjM-PmHu zFdu=Dwn|@!*LxDv&6J6h#1_!VD)P#V%-Vy6CMlT8Pz)yu=7F^l3m~c{^<3Xk5eW}) zq}d`|ZBe5RW7HwAA2A|g8;n%ZHu1(N-nHL@crOBPgNgT2d`^Ml%|UuJEUhDscYJS3 zuAu>U^Z81uoNOu9LorOSsN5eyrj+c7WjY-@^qDfXkLxc%`{MpSGDk98$^1+T!sw(X z1-2@S^YeNyx{I3mr6pYiNypDa=E3AJ896A2cTry2?@0Tkr|a}rkgi;Q6b=PB&hKh{ z^nZb#{YwKc1!C zI{k~1e$R0%Z`0{@NLRd6PTqAI7t4pLuBW~ag|%>*j)l6%;G?1s(`Ooto0XcH=LFnL z*Xh;?xH(g&cjNe(;)a|ISHV#Cm1%?q79C2AQ%08wajwD8_}3&Q)dkUQD9 z&NRC=4|@c%&(!9nLL^h0Rk>_1jIYz#vC5D!#f@xyDitvv!rr~v*1~Rq7n9pJ@S}Q% zCR|LyE)b>-Pw_>|q*G4l$r^ zwJWzCBQp!+kS>zV7@gxdN0Kp;1Z$L^4u5rRbPFA~c4eZD8{iGccm3RuFe@P(dQ&dF zc4>m}B^j@%^97-sFt(VbPb|-;rlrGCN3ArfK|af>b$;7k^TjU{G91hX6lbR%OqcI| zQ}wLVu_)3W4uA!U`3FMIK)(hQ2{#CPlpfDf3W)dn2BSG0G!={Di83SJ`5X*$=wO)n zgJHhbGYHK=d*_b^!-V-F=SoY(1fiBuVA86rMt{ua7wnqqKeCOYGtfRjMi?Rz%m?Jz z;M9SQ=%^Bd7gSZCxS)Np!-Na-YB;015tDdMb#KK~SFbtgj!@4AO+JK1`zZ#8d)2-m zH=R=Nx9{^N9C5Z7W@I-)VM7NT-{zAF%#~ay{LHsOzFxJ8WggEGQg z1dE-E%24|y6Ed@3a5DtL`3ul^%#nQq7fIVvJCTY#D9v#>=`LebDKp?D4Mk?rxB`H( zzE3)`My&Q&h!I;4_8#7fJ&|qv!S_>xAJc`8RXlDY-5&wV@LP>|Q|InuQfCdec@x;P zOXz(-mq_bq3lB^V!3X;s34FUnMAhbf4|wlsJW4fMS_r|mmExQrjwIuIVmQ8pt>+$A zHy*){&I#`<^%a61RwYr7jZ%4?f*$}=?|Al0Rk($SxMeZERKR(nNGjFN$fgB%A1hdh z3Pwv+PJSL*FWzwf745L^K~&${gYwWa=KISZ$anN)eB)ra;v2hQn(u)W--sjMY+CTm zeX&9KK1jZA1ZQY)m2-FQvZLf&?;7)c+5EvcpCA&?R}!Zny#4ac21vYHB>vUGIqw#U z-%5tn37MS0WSo=94J_iBz~GJ0ki0%Hbq)%}N9X49+bP_x23Zia5(|KE5fR?`CN;O9 zazFm;h)Eoe#4DKiTa~!q@*s~%#aRJi4X0SJORp~M1Y%<_@NwJUU%<{_Y&o*s@xs?W z4o9#zKQ`w97>=KeO5!)f---KoCv(Edz_?4^Q7T}h1(~3!llMJEtk6EktYeM85ADtW z?9INLUWkq!heA;v{}#x$eEcy7erWj2pDJbUgHSKfNNb=CY;yr)kStP}r?pE|Q< zwa4;|pE_-|)l^|k> zTkgAR$x<($CG%G;2F9o7FI}?8cisGDUTcx}x+UI4mUs1%m8()I%NJbZUAW5n%!(ze zyuOkZ%U1yclF7Je#gb2x916N_{(_}Q(M9-HUcYjccbT>9+N)Oj<}X;jg1J^LS>|0{ zy2@%SpEthRbJYsp_$K-q*%#_?Jj=iyl#76zQ$MU-#V~87zZ}r)@ioC=)}qGhX1}MY`WF9e z4i3p)Lp1`ICzh|Cj zd~n!;P2gzC!kS=Hz~9IyFmYY5b}fMVN)K?G6yA#Z`haKAk`*3*U7)cVDkQlTQ%zGy zGdpj&qA8dlN)-8XNS+BbYs)5TbW%*mPLe$Jjj7bKK$$JsL|fMQphpyWlE`Q+>rga| zk@Ynd{zir&ifb2m0`-Bi8c#)a6GYTdR_;$Flr`gzDwVCRK@4?je7X4tnM^@%Q9qPl za5jHD<7a`Qhgvv(23i)qXhPG(N#ie>ifAccl{Jj1i>e!uXn{ED2G%!h0#sB~WQm9rz4H2oYJUZbK(+ZlU2m!UFzeY)r|X87ovwfW+UctP z#fQJYap-v5C7|KzR`J)p;&ffzg)p9Wx*HBFxcfDy>zBV#;d2po+wfutzXH5(fYyH@ z?d{(?UCV#xbp7cMP8VBz>eQm<%CZ3Z3I3{Y9srHoD2kQc~Rb>?wjq}Dgp!ZZt z0%;&pW*vprXPSNT@Lur6QWTe!URx>btm@rf&!+~7SfZNbvz z3$OJ_5-W1*IwgTq5;!G+QxZ5Ofm0GVC4o~CI3kA$7B)A8)WpZMhxbrt@${6CH*>kIF6$_M;+hMX?EbYaZ|%taS|=!CB( zGe2MOqHwf)US2d;EhFqx`<6*+(Fz~e?Oi{ z-275V{Nyt_#RK@^7DokIn>QnK9Ih|&k;6ZIZsj;nTc95EByGsOl9o3Hk6dRS{eBf`w_~Uh#$wfck?$d*NL~lhOkI$8}1zITKqa4pI`*8 zDQkn(H5KZ&V#+%HvH8igh8tn@o%;7XAV=n0y7l9^6v`wGC6s%S)P? zuDPY8sOf*aOvgya_z`Cg&mD38h>?yn90f2%IpeJ1!>>RTgsy{VE2j!V#51hi5wnNS z8NTGqEAw+;vW9%zT0$*yjI;`dln%*to$ng&Iuq}>4HEM)#O7ERFwODah|}@Qzqv$% z>9DG?`%qL4$g-Zqonvjp?{R4VcB@%MMN^tKHC6Z8=l+V&D@dFM- zYx8nwxpPN2#!eYK?}oAK)=im`lLvONMV^<#j+5JK>9m|7h%XVAv0F9>%VqEvjvbrhKrY0vqvcLc#ZW^QYIE0ARo@u!1nZir*VXweJnRc9ilMCTS5uG0 zVfo3x|0tpxL|;?1%B#v6O>3o#A|LuPV<9ED4>!g2Hty_n3g9qqR(rsfZWT3cstuH_ z#WT>To>eA71-{viu_f+%Eq!Us+>W-8w(12-px@3j%4lx~{U` zq?N5*+vsmLP)&6mSWvkj5);(qjDSDH^L*e?52@@k;FHV%U>^%aN0G)JixVe;w-|Vf zk>CMrE;UkE)}@GGpC>)~I90&o*R>hPi+H>*!Ht(C>WN1mh<~Jg9KzXna}Y;AhIEM8G4ue64~Cwf!lSQt6bT%&h{rL{;B7*fys{kjn@4~^ z{>()@UhHHBkA3Gb@Ya}0B8_;wZ@1wUW3XskK52&h0|86T2%WZS}w!uF95N8mb(UcYg#O8E)`8*9{oIoC+V4s zc*|@NCip54OqjUa@35>A2J~fQ{uW?6o^>bopAC{N?Oj`#$>V|d9a}~d2Zor&Bkm_Po=NiDWm&}rz|+*1b0*5z zTx)G|axM6fyl5|QrB7f&)!5lTy zS8j%-BtAXc^p$H}m$@o|K+3!D;<9DU50?!uBzlFe%br62*a4fJt~7c{!{z ztl5B#yc`(OuLj&;W?N_+spqx;O$x;a!`JD{a!%2xmdpg0QynBOz(i-33yVQ(={1S=0Aex^?+~Ia5tXM z0Hz$69>enuz!#u`g!=(oUvRn(Y4~3N4@KdhpldNb5An0V=)~8*6+9B~o_pc90*~nz z0&e@V)77B!)4mM+htoA*r(Xtm)>oV^+Fs&ciRWGSrRmXM8gakV1s7k^KZR$(R;O#P z&VK{o!+?kC^mTat?rTn0nNDv6e8tz{59svU@O=FnSXa?-6wh0~i8U7u-;d`XAB10^ z^FIXm*>5>rPrwwAzsCUc4^^4={sCbA5iVL9w*L;mRo}r3UFZKPU~{p3_5nWUC8z5r zI{jCG4*~XT_z2+3f9`Zq&MfZ@z*7%8U0>610x-X}vK6oc_Mji|i%2)^`5xd;;4BX< z8T02T69`E4kKurMS{Z1_e~wiE*z|Wt&e_(-0h|6|<&3m0&w}|yb7MaoIfd3rz{Wm! zK<{S2N1k)K_*d!9K>5@YbI}@Y%z~*m#n5l^OMHG@(%3`7{Mfj;JP16I1@9pY`^fef z33#KM&{nL2n{0V+G@)BMH_+sRrpy4XO<|6%D0COG2)Gq>< z?~aqrk@7Tk=~vx_%PsS!OycuWB%6wKmQY_i>pn9 z{|NY%Kc@Nn8{pL_pEO72oMZ7NO>>d{NH97|+qaQ9XIK{kE8v*kjK{^tY#|FZ9L1z?b6W*MK-wv35Az3IufBYKY zA!y%Tz@)zoa3JP%{Y=A;XXQTt_=a6h7wrh~e+{_sF{i5=av=N)V7~lm>eCIF<>4Xx z{1pMdb8p~x5qRvUP8a(%^XH-?toyOkwO+%g1AYJp^pRcoJ%b%ZUzFcPfcdG0HK4=# zPRL514VVY~O?lp|^iKo+#CM&pKWqMP0=ymlf%7x+Qw`WIuLi(ZKjn1ME-`%rU~`e5 zy8$11HZ9LD13n0Q_*tY8|7(E12Yq0kGjdM1wga97dvzNcjOjlDZ2YA&FoXRGV1Bu2 zBk))@K6SxB+1KVea-DG;oz#8Q;cCx_~m;zYC02WSzG*rlLr7TSP{df&R5 z`n6>>K3SRYl?69iSaoQq@dt2<^0LdOU1~AGS6#7@(B+maXZR|DwY8f}Io|6QNikQg zzm?CX3G|e?Xq)SobQgTJI~bYP4$WoBh5G)pZs1 z8?2^Hb>-GNf54{?<5~^Dbhyzks90pGuEY8q4vP9gKmZ=yoyJ3oI78ToQvB;BP{-vO z#$d&!LIOMosRQe(d4yO4q-xutCucWu+TTHXsX3Sq;}Zn+^S)jg} z8UjVJ$5-M2t2B#dM(W_Bh%>Qjr0KcniQ1KCrq!;8CWuVsG^|w#C97}pTMd35xV7VE zEt-~WXNi0#QJBYy>zmT8beVbQ+qAJ|7k@20uuoUwqSc!Qg!dL zfYih1m*rSA2(6EQWA$;W2U6gnQulWBu*+s%Rzx$^Q0@y<1?$!qt=%Xc-jd#ENk4~v KRpBKH>;D2EO{R(f diff --git a/tools/ffsample/linux/main.c b/tools/ffsample/linux/main.c index f6021ab..ebee906 100644 --- a/tools/ffsample/linux/main.c +++ b/tools/ffsample/linux/main.c @@ -354,9 +354,9 @@ int main (void) break; case 'o' : /* fo - Open a file */ - if (!(&ptr, &p1)) break; + //if (!(&ptr, &p1)) break; while (*ptr == ' ') ptr++; - put_rc(f_open(&file1, ptr, (BYTE)p1)); + put_rc(f_open(&file1, ptr, (BYTE)FA_READ)); break; case 'c' : /* fc - Close a file */ @@ -383,7 +383,7 @@ int main (void) p2 += s2; if (cnt != s2) break; } - s2 = Timer; + s2 = Timer + 1; printf("%lu bytes read with %lu bytes/sec.\n", p2, p2 * 100 / s2); break;