|
|||||||||||
|
Re: devel/jdk status?
From: Kurt Miller <truk(at)optonline.net>
Date: Fri Jun 27 2003 - 22:46:56 EDT From: "Niklas Hallqvist" <niklas@copper.appli.se> > This helps a bit with native java on ELF, at least I get to main now, I tried your library_mquery.c patch and the linker_md.c patch and I still segfault before main in jdk/1.2 javac_g. I'm building from source, current as of today plus your library_mquery patch. Since I wasn't sure of the impact of your patch, I followed the minifaq mquery syscall change build order as described here: http://www.openbsd.org/faq/upgrade-minifaq.html#3.3.2 Is there any special build order I need to follow for your library_mquery.c patch? -Kurt
Here's my current ktrace:
1701 javac_g NAMI "/usr/libexec/ld.so" 1701 javac_g EMUL "native" 1701 javac_g RET execve 0 1701 javac_g CALL issetugid 1701 javac_g RET issetugid 0 1701 javac_g CALL mprotect(0x20004000,0x1000,0x1) 1701 javac_g RET mprotect 0 1701 javac_g CALL mmap(0,0x1000,0x3,0x1002,0xffffffff,0,0,0) 1701 javac_g RET mmap 2080378880/0x7c001000 1701 javac_g CALL __sysctl(0xcfbeaad0,0x2,0xcfbeaac8,0xcfbeaacc,0,0) 1701 javac_g RET __sysctl 0 1701 javac_g CALL __sysctl(0xcfbeaad0,0x2,0xcfbeaac8,0xcfbeaacc,0,0) 1701 javac_g RET __sysctl 0 1701 javac_g CALL open(0x20002527,0,0) 1701 javac_g NAMI "/var/run/ld.so.hints" 1701 javac_g RET open 3 1701 javac_g CALL fstat(0x3,0xcfbea558) 1701 javac_g RET fstat 0 1701 javac_g CALL mmap(0,0x5136,0x1,0x2,0x3,0,0,0) 1701 javac_g RET mmap 2080382976/0x7c002000 1701 javac_g CALL close(0x3) 1701 javac_g RET close 0 1701 javac_g CALL open(0x7c005a11,0,0) 1701 javac_g NAMI "/usr/lib/libc.so.30.0" 1701 javac_g RET open 3 1701 javac_g CALL read(0x3,0xcfbe9a64,0x1000) 1701 javac_g GIO fd 3 read 4088 bytes "\^?ELF\^A\^A\^A\0\0\0\0\0\0\0\0\0\^C\0\^C\0\^A\0\0\0P5\^A\0004\0\0\0\
<snip>
"\0\0\0\0D\^E\0\0" 1701 javac_g RET read 4096/0x1000 1701 javac_g CALL mquery(0,0x80000,0x5,0,0x3,0,0,0) 1701 javac_g RET mquery 36864/0x9000 1701 javac_g CALL mquery(0x20009000,0xe000,0x1,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 536907776/0x20009000 1701 javac_g CALL mquery(0x20017000,0x9000,0x3,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 536965120/0x20017000 1701 javac_g CALL mquery(0x20020000,0x2000,0x3,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 537001984/0x20020000 1701 javac_g CALL mquery(0x20022000,0x1000,0x3,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 537010176/0x20022000 1701 javac_g CALL mquery(0x20023000,0x30000,0x3,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 537014272/0x20023000 1701 javac_g CALL mmap(0x9000,0x80000,0x5,0x12,0x3,0,0,0) 1701 javac_g RET mmap 36864/0x9000 1701 javac_g CALL mmap(0x20009000,0xe000,0x1,0x12,0x3,0,0x80000,0) 1701 javac_g RET mmap 536907776/0x20009000 1701 javac_g CALL mmap(0x20017000,0x9000,0x3,0x12,0x3,0,0x8d000,0) 1701 javac_g RET mmap 536965120/0x20017000 1701 javac_g CALL mmap(0x20020000,0x2000,0x3,0x12,0x3,0,0x95000,0) 1701 javac_g RET mmap 537001984/0x20020000 1701 javac_g CALL mmap(0x20022000,0x1000,0x3,0x12,0x3,0,0x96000,0) 1701 javac_g RET mmap 537010176/0x20022000 1701 javac_g CALL mmap(0x20023000,0x30000,0x3,0x1012,0xffffffff,0,0,0) 1701 javac_g RET mmap 537014272/0x20023000 1701 javac_g CALL close(0x3) 1701 javac_g RET close 0 1701 javac_g CALL open(0xcfbea658,0x4,0x25f) 1701 javac_g NAMI "/usr/ports/devel/jdk/1.2/w-jdk-1.2.2/build/bsd/bin/../lib/i386/green_thread s" 1701 javac_g RET open 3 1701 javac_g CALL fstat(0x3,0xcfbea588) 1701 javac_g RET fstat 0 1701 javac_g CALL fcntl(0x3,0x2,0x1) 1701 javac_g RET fcntl 0 1701 javac_g CALL getdirentries(0x3,0x7c00139c,0x400,0x7c001388) 1701 javac_g RET getdirentries 512/0x200 1701 javac_g CALL getdirentries(0x3,0x7c00139c,0x400,0x7c001388) 1701 javac_g RET getdirentries 0 1701 javac_g CALL lseek(0x3,0,0,0,0) 1701 javac_g RET lseek 0 1701 javac_g CALL close(0x3) 1701 javac_g RET close 0 1701 javac_g CALL open(0xcfbea658,0x4,0x1) 1701 javac_g NAMI "/usr/ports/devel/jdk/1.2/w-jdk-1.2.2/build/bsd/bin/../lib/i386/classic" 1701 javac_g RET open 3 1701 javac_g CALL fstat(0x3,0xcfbea588) 1701 javac_g RET fstat 0 1701 javac_g CALL fcntl(0x3,0x2,0x1) 1701 javac_g RET fcntl 0 1701 javac_g CALL getdirentries(0x3,0x7c00139c,0x400,0x7c001388) 1701 javac_g RET getdirentries 512/0x200 1701 javac_g CALL getdirentries(0x3,0x7c00139c,0x400,0x7c001388) 1701 javac_g RET getdirentries 0 1701 javac_g CALL lseek(0x3,0,0,0,0) 1701 javac_g RET lseek 0 1701 javac_g CALL close(0x3) 1701 javac_g RET close 0 1701 javac_g CALL open(0x20005980,0,0x1000) 1701 javac_g NAMI "/usr/ports/devel/jdk/1.2/w-jdk-1.2.2/build/bsd/bin/../lib/i386/classic/libj vm_g.so" 1701 javac_g RET open 3 1701 javac_g CALL read(0x3,0xcfbe9a64,0x1000) 1701 javac_g GIO fd 3 read 4088 bytes "\^?ELF\^A\^A\^A\0\0\0\0\0\0\0\0\0\^C\0\^C\0\^A\0\0\0`\M-?\0\0004\0\0\0\
<snip>
"S\0\0\0\M-"\^A\0\0" 1701 javac_g RET read 4096/0x1000 1701 javac_g CALL mquery(0,0x82000,0x5,0,0x3,0,0,0) 1701 javac_g RET mquery 561152/0x89000 1701 javac_g CALL mquery(0x20089000,0x9000,0x1,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 537432064/0x20089000 1701 javac_g CALL mquery(0x20092000,0x3000,0x3,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 537468928/0x20092000 1701 javac_g CALL mquery(0x20095000,0x1000,0x3,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 537481216/0x20095000 1701 javac_g CALL mquery(0x20096000,0x1000,0x3,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 537485312/0x20096000 1701 javac_g CALL mquery(0x20097000,0x3000,0x3,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 537489408/0x20097000 1701 javac_g CALL mmap(0x89000,0x82000,0x5,0x12,0x3,0,0,0) 1701 javac_g RET mmap 561152/0x89000 1701 javac_g CALL mmap(0x20089000,0x9000,0x1,0x12,0x3,0,0x82000,0) 1701 javac_g RET mmap 537432064/0x20089000 1701 javac_g CALL mmap(0x20092000,0x3000,0x3,0x12,0x3,0,0x8a000,0) 1701 javac_g RET mmap 537468928/0x20092000 1701 javac_g CALL mmap(0x20095000,0x1000,0x3,0x12,0x3,0,0x8c000,0) 1701 javac_g RET mmap 537481216/0x20095000 1701 javac_g CALL mmap(0x20096000,0x1000,0x3,0x12,0x3,0,0x8c000,0) 1701 javac_g RET mmap 537485312/0x20096000 1701 javac_g CALL mmap(0x20097000,0x3000,0x3,0x1012,0xffffffff,0,0,0) 1701 javac_g RET mmap 537489408/0x20097000 1701 javac_g CALL close(0x3) 1701 javac_g RET close 0 1701 javac_g CALL open(0xcfbea658,0x4,0) 1701 javac_g NAMI "/usr/ports/devel/jdk/1.2/w-jdk-1.2.2/build/bsd/bin/../lib/i386/green_thread s" 1701 javac_g RET open 3 1701 javac_g CALL fstat(0x3,0xcfbea588) 1701 javac_g RET fstat 0 1701 javac_g CALL fcntl(0x3,0x2,0x1) 1701 javac_g RET fcntl 0 1701 javac_g CALL getdirentries(0x3,0x7c0019ac,0x400,0x7c001998) 1701 javac_g RET getdirentries 512/0x200 1701 javac_g CALL getdirentries(0x3,0x7c0019ac,0x400,0x7c001998) 1701 javac_g RET getdirentries 0 1701 javac_g CALL lseek(0x3,0,0,0,0) 1701 javac_g RET lseek 0 1701 javac_g CALL close(0x3) 1701 javac_g RET close 0 1701 javac_g CALL open(0x20005980,0,0x1000) 1701 javac_g NAMI "/usr/ports/devel/jdk/1.2/w-jdk-1.2.2/build/bsd/bin/../lib/i386/green_thread s/libhpi_g.so" 1701 javac_g RET open 3 1701 javac_g CALL read(0x3,0xcfbe9a64,0x1000) 1701 javac_g GIO fd 3 read 4088 bytes
"\^?ELF\^A\^A\^A\0\0\0\0\0\0\0\0\0\^C\0\^C\0\^A\0\0\0p;\0\0004\0\0\0t\
<snip>
"\^P\0\0\0?\v\0\0" 1701 javac_g RET read 4096/0x1000 1701 javac_g CALL mquery(0,0x13000,0x5,0,0x3,0,0,0) 1701 javac_g RET mquery 1093632/0x10b000 1701 javac_g CALL mquery(0x2010b000,0x2000,0x1,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 537964544/0x2010b000 1701 javac_g CALL mquery(0x2010d000,0x1000,0x3,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 537972736/0x2010d000 1701 javac_g CALL mquery(0x2010e000,0x1000,0x3,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 537976832/0x2010e000 1701 javac_g CALL mquery(0x2010f000,0x2000,0x3,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 537980928/0x2010f000 1701 javac_g CALL mmap(0x10b000,0x13000,0x5,0x12,0x3,0,0,0) 1701 javac_g RET mmap 1093632/0x10b000 1701 javac_g CALL mmap(0x2010b000,0x2000,0x1,0x12,0x3,0,0x13000,0) 1701 javac_g RET mmap 537964544/0x2010b000 1701 javac_g CALL mmap(0x2010d000,0x1000,0x3,0x12,0x3,0,0x14000,0) 1701 javac_g RET mmap 537972736/0x2010d000 1701 javac_g CALL mmap(0x2010e000,0x1000,0x3,0x12,0x3,0,0x14000,0) 1701 javac_g RET mmap 537976832/0x2010e000 1701 javac_g CALL mmap(0x2010f000,0x2000,0x3,0x12,0x3,0,0x14000,0) 1701 javac_g RET mmap 537980928/0x2010f000 1701 javac_g CALL close(0x3) 1701 javac_g RET close 0 1701 javac_g CALL __sysctl(0xcfbeaad0,0x2,0xcfbeaac8,0xcfbeaacc,0,0) 1701 javac_g RET __sysctl 0 1701 javac_g CALL open(0xcfbea658,0x4,0) 1701 javac_g NAMI "/usr/ports/devel/jdk/1.2/w-jdk-1.2.2/build/bsd/bin/../lib/i386/green_thread s"
1701 javac_g RET open 3
1701 javac_g CALL fstat(0x3,0xcfbea588)
1701 javac_g RET fstat 0
1701 javac_g CALL fcntl(0x3,0x2,0x1)
1701 javac_g RET fcntl 0
1701 javac_g CALL mmap(0,0x1000,0x3,0x1002,0xffffffff,0,0,0)
1701 javac_g RET mmap 2080407552/0x7c008000
1701 javac_g CALL getdirentries(0x3,0x7c008004,0x400,0x7c001f90)
1701 javac_g RET getdirentries 512/0x200
1701 javac_g CALL getdirentries(0x3,0x7c008004,0x400,0x7c001f90)
1701 javac_g RET getdirentries 0
1701 javac_g CALL lseek(0x3,0,0,0,0)
1701 javac_g RET lseek 0
1701 javac_g CALL close(0x3)
1701 javac_g RET close 0
1701 javac_g CALL open(0x7c005716,0,0x1000)
1701 javac_g NAMI "/usr/lib/libm.so.1.0"
1701 javac_g RET open 3
1701 javac_g CALL read(0x3,0xcfbe9a64,0x1000)
1701 javac_g GIO fd 3 read 4088 bytes
"\^?ELF\^A\^A\^A\0\0\0\0\0\0\0\0\0\^C\0\^C\0\^A\0\0\0P"\0\0004\0\0\0\
<snip>
1701 javac_g GIO fd 3 read 8 bytes "\M-f\^B\0\0@Z\0\0" 1701 javac_g RET read 4096/0x1000 1701 javac_g CALL mquery(0,0x11000,0x5,0,0x3,0,0,0) 1701 javac_g RET mquery 1171456/0x11e000 1701 javac_g CALL mquery(0x2011e000,0x4000,0x1,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 538042368/0x2011e000 1701 javac_g CALL mquery(0x20122000,0x1000,0x3,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 538058752/0x20122000 1701 javac_g CALL mquery(0x20123000,0x1000,0x3,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 538062848/0x20123000 1701 javac_g CALL mquery(0x20124000,0x1000,0x3,0x10,0xffffffff,0,0,0) 1701 javac_g RET mquery 538066944/0x20124000 1701 javac_g CALL mmap(0x11e000,0x11000,0x5,0x12,0x3,0,0,0) 1701 javac_g RET mmap 1171456/0x11e000 1701 javac_g CALL mmap(0x2011e000,0x4000,0x1,0x12,0x3,0,0x11000,0) 1701 javac_g RET mmap 538042368/0x2011e000 1701 javac_g CALL mmap(0x20122000,0x1000,0x3,0x12,0x3,0,0x14000,0) 1701 javac_g RET mmap 538058752/0x20122000 1701 javac_g CALL mmap(0x20123000,0x1000,0x3,0x12,0x3,0,0x14000,0) 1701 javac_g RET mmap 538062848/0x20123000 1701 javac_g CALL mmap(0x20124000,0x1000,0x3,0x12,0x3,0,0x14000,0) 1701 javac_g RET mmap 538066944/0x20124000 1701 javac_g CALL close(0x3) 1701 javac_g RET close 0 1701 javac_g CALL mprotect(0x11e000,0x10508,0x7) 1701 javac_g RET mprotect 0 1701 javac_g CALL mprotect(0x2011e000,0x3480,0x3) 1701 javac_g RET mprotect 0 1701 javac_g CALL mprotect(0x11e000,0x10508,0x5) 1701 javac_g RET mprotect 0 1701 javac_g CALL mprotect(0x2011e000,0x3480,0x1) 1701 javac_g RET mprotect 0 1701 javac_g CALL mprotect(0x9000,0x7f5e0,0x7) 1701 javac_g RET mprotect 0 1701 javac_g CALL mprotect(0x20009000,0xdf00,0x3) 1701 javac_g RET mprotect 0 1701 javac_g CALL mprotect(0x9000,0x7f5e0,0x5) 1701 javac_g RET mprotect 0 1701 javac_g CALL mprotect(0x20009000,0xdf00,0x1) 1701 javac_g RET mprotect 0 1701 javac_g CALL mprotect(0x89000,0x81660,0x7) 1701 javac_g RET mprotect 0 1701 javac_g CALL mprotect(0x20089000,0x8200,0x3) 1701 javac_g RET mprotect 0 1701 javac_g CALL mprotect(0x89000,0x81660,0x5) 1701 javac_g RET mprotect 0 1701 javac_g CALL mprotect(0x20089000,0x8200,0x1) 1701 javac_g RET mprotect 0 1701 javac_g CALL mprotect(0x10b000,0x12580,0x7) 1701 javac_g RET mprotect 0 1701 javac_g CALL mprotect(0x2010b000,0x19a9,0x3) 1701 javac_g RET mprotect 0 1701 javac_g CALL mprotect(0x10b000,0x12580,0x5) 1701 javac_g RET mprotect 0 1701 javac_g CALL mprotect(0x2010b000,0x19a9,0x1) 1701 javac_g RET mprotect 0 1701 javac_g CALL __sysctl(0xcfbeaa30,0x2,0x3c003ba0,0xcfbeaa2c,0,0) 1701 javac_g RET __sysctl 0 1701 javac_g CALL __sysctl(0xcfbeaa30,0x2,0x3c003ba4,0xcfbeaa2c,0,0) 1701 javac_g RET __sysctl 0 1701 javac_g CALL __sysctl(0xcfbeaa30,0x2,0x3c003ba8,0xcfbeaa2c,0,0) 1701 javac_g RET __sysctl 0 1701 javac_g CALL __sysctl(0xcfbeaa30,0x2,0x3c003bac,0xcfbeaa2c,0,0) 1701 javac_g RET __sysctl 0 1701 javac_g CALL __sysctl(0xcfbeaa30,0x2,0x3c003bb0,0xcfbeaa2c,0,0) 1701 javac_g RET __sysctl 0 1701 javac_g CALL __sysctl(0xcfbeaa30,0x2,0x3c003bb4,0xcfbeaa2c,0,0) 1701 javac_g RET __sysctl 0 1701 javac_g CALL __sysctl(0xcfbeaa30,0x2,0x3c003bb8,0xcfbeaa2c,0,0) 1701 javac_g RET __sysctl 0 1701 javac_g CALL __sysctl(0xcfbeaa30,0x2,0x3c003bbc,0xcfbeaa2c,0,0) 1701 javac_g RET __sysctl 0 1701 javac_g CALL __sysctl(0xcfbeaaa0,0x2,0x20051ec0,0xcfbeaa9c,0,0) 1701 javac_g RET __sysctl 0 1701 javac_g CALL open(0xcfbea58c,0x4,0x4e0) 1701 javac_g NAMI "/usr/ports/devel/jdk/1.2/w-jdk-1.2.2/build/bsd/bin/../lib/i386/green_thread s" 1701 javac_g RET open 3 1701 javac_g CALL fstat(0x3,0xcfbea4bc) 1701 javac_g RET fstat 0 1701 javac_g CALL fcntl(0x3,0x2,0x1) 1701 javac_g RET fcntl 0 1701 javac_g CALL getdirentries(0x3,0x7c00868c,0x400,0x7c008678) 1701 javac_g RET getdirentries 512/0x200 1701 javac_g CALL getdirentries(0x3,0x7c00868c,0x400,0x7c008678) 1701 javac_g RET getdirentries 0 1701 javac_g CALL lseek(0x3,0,0,0,0) 1701 javac_g RET lseek 0 1701 javac_g CALL close(0x3) 1701 javac_g RET close 0 1701 javac_g CALL open(0xcfbea58c,0x4,0x1) 1701 javac_g NAMI "/usr/ports/devel/jdk/1.2/w-jdk-1.2.2/build/bsd/bin/../lib/i386/classic" 1701 javac_g RET open 3 1701 javac_g CALL fstat(0x3,0xcfbea4bc) 1701 javac_g RET fstat 0 1701 javac_g CALL fcntl(0x3,0x2,0x1) 1701 javac_g RET fcntl 0 1701 javac_g CALL getdirentries(0x3,0x7c00868c,0x400,0x7c008678) 1701 javac_g RET getdirentries 512/0x200 1701 javac_g CALL getdirentries(0x3,0x7c00868c,0x400,0x7c008678) 1701 javac_g RET getdirentries 0 1701 javac_g CALL lseek(0x3,0,0,0,0) 1701 javac_g RET lseek 0 1701 javac_g CALL close(0x3) 1701 javac_g RET close 0 1701 javac_g CALL open(0xcfbea58c,0x4,0x1) 1701 javac_g NAMI "/usr/ports/devel/jdk/1.2/w-jdk-1.2.2/build/bsd/bin/../lib/i386" 1701 javac_g RET open 3 1701 javac_g CALL fstat(0x3,0xcfbea4bc) 1701 javac_g RET fstat 0 1701 javac_g CALL fcntl(0x3,0x2,0x1) 1701 javac_g RET fcntl 0 1701 javac_g CALL getdirentries(0x3,0x7c00868c,0x400,0x7c008678) 1701 javac_g RET getdirentries 512/0x200 1701 javac_g CALL getdirentries(0x3,0x7c00868c,0x400,0x7c008678) 1701 javac_g RET getdirentries 0 1701 javac_g CALL lseek(0x3,0,0,0,0) 1701 javac_g RET lseek 0 1701 javac_g CALL close(0x3) 1701 javac_g RET close 0 1701 javac_g CALL open(0xcfbea58c,0x4,0x1) 1701 javac_g RET open -1 errno 2 No such file or directory 1701 javac_g CALL open(0xcfbea58c,0x4,0x1) 1701 javac_g NAMI "/usr/lib" 1701 javac_g RET open 3 1701 javac_g CALL fstat(0x3,0xcfbea4bc) 1701 javac_g RET fstat 0 1701 javac_g CALL fcntl(0x3,0x2,0x1) 1701 javac_g RET fcntl 0 1701 javac_g CALL getdirentries(0x3,0x7c00868c,0x400,0x7c008678) 1701 javac_g RET getdirentries 1024/0x400 1701 javac_g CALL getdirentries(0x3,0x7c00868c,0x400,0x7c008678) 1701 javac_g RET getdirentries 1024/0x400 1701 javac_g CALL getdirentries(0x3,0x7c00868c,0x400,0x7c008678) 1701 javac_g RET getdirentries 1024/0x400 1701 javac_g CALL getdirentries(0x3,0x7c00868c,0x400,0x7c008678) 1701 javac_g RET getdirentries 1024/0x400 1701 javac_g CALL getdirentries(0x3,0x7c00868c,0x400,0x7c008678) 1701 javac_g RET getdirentries 1024/0x400 1701 javac_g CALL getdirentries(0x3,0x7c00868c,0x400,0x7c008678) 1701 javac_g RET getdirentries 1024/0x400 1701 javac_g CALL getdirentries(0x3,0x7c00868c,0x400,0x7c008678) 1701 javac_g RET getdirentries 1024/0x400 1701 javac_g CALL getdirentries(0x3,0x7c00868c,0x400,0x7c008678) 1701 javac_g RET getdirentries 0 1701 javac_g CALL lseek(0x3,0,0,0,0) 1701 javac_g RET lseek 0 1701 javac_g CALL close(0x3) 1701 javac_g RET close 0 1701 javac_g PSIG SIGSEGV SIG_DFL code 1 addr=0x0 trapno=1 1701 javac_g PSIG SIGSEGV SIG_DFL code 0 addr=0x0 trapno=0 1701 javac_g NAMI "javac_g.core"Received on Fri Jun 27 23:04:06 2003 This archive was generated by hypermail 2.1.8 : Wed Aug 23 2006 - 13:45:02 EDT |
||||||||||
|
|||||||||||