# PaCkAgE DaTaStReAm CSWpkgutil 1 1255 # end of header 0707010023323b000081a400002713000027100000000154401f320000022c0000013800000c3900000000000000000000001300000000CSWpkgutil/pkginfoWORKDIR_FIRSTMOD=../build-isa-pentium_pro OPENCSW_OS_ARCH=i386 OPENCSW_OS_RELEASE=SunOS5.10 OPENCSW_BUNDLE=pkgutil OPENCSW_REPOSITORY=https://svn.code.sf.net/p/gar/code/csw/mgar/pkg/pkgutil/trunk@24191 OPENCSW_MODE64=32 OPENCSW_CATALOGNAME=pkgutil HOTLINE=http://www.opencsw.org/bugtrack/ CLASSES=none PSTAMP=bonivart@unstable10x-20141016214032 EMAIL=bonivart@opencsw.org VENDOR=http://pkgutil.net/ packaged for CSW by Peter Bonivart CATEGORY=application VERSION=2.6.7,REV=2014.10.16 ARCH=all NAME=pkgutil - Installs Solaris packages easily PKG=CSWpkgutil 0707010023323a000081a400002713000027100000000154401f32000005080000013800000c3900000000000000000000001200000000CSWpkgutil/pkgmap: 1 1255 1 f none /etc/opt/csw/pkgutil.conf.CSW 0644 root bin 4529 3893 1413488131 1 f none /opt/csw/bin/pkgutil 0755 root bin 106397 4514 1413488131 1 f none /opt/csw/etc/pkgutil.conf.CSW 0644 root bin 4529 3893 1413488131 1 d none /opt/csw/libexec 0755 root bin 1 d none /opt/csw/libexec/pkgutil 0755 root bin 1 f none /opt/csw/libexec/pkgutil/wget-i386 0755 root bin 164576 20108 1413488131 1 f none /opt/csw/libexec/pkgutil/wget-sparc 0755 root bin 224672 8936 1413488131 1 d none /opt/csw/share/doc/pkgutil 0755 root bin 1 f none /opt/csw/share/doc/pkgutil/license 0644 root bin 18007 29780 1413488430 1 f none /opt/csw/share/doc/pkgutil/readme 0444 root bin 19934 56011 1413488131 1 d none /opt/csw/share/man/man1 0755 root bin 1 f none /opt/csw/share/man/man1/pkgutil.1 0444 root bin 19228 33163 1413488132 1 d none /opt/csw/var/pkgutil 0755 root bin 1 f none /opt/csw/var/pkgutil/admin.CSW 0644 root bin 167 16130 1413488132 1 d none /var/opt/csw/pkgutil 0755 root bin 1 d none /var/opt/csw/pkgutil/packages 0755 root bin 1 d none /var/opt/csw/pkgutil/pkgask 0755 root bin 1 i checkpkg_override 855 14778 1413488430 1 i copyright 71 6693 1413488430 1 i depend 0 0 1413488432 1 i pkginfo 556 46168 1413488434 1 i postinstall 1024 19207 1399416302 1 i preremove 826 2408 1399416302 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!0707010023323b000081a400002713000027100000000154401f320000022c0000013800000c3900000000000000000000000800000000pkginfoWORKDIR_FIRSTMOD=../build-isa-pentium_pro OPENCSW_OS_ARCH=i386 OPENCSW_OS_RELEASE=SunOS5.10 OPENCSW_BUNDLE=pkgutil OPENCSW_REPOSITORY=https://svn.code.sf.net/p/gar/code/csw/mgar/pkg/pkgutil/trunk@24191 OPENCSW_MODE64=32 OPENCSW_CATALOGNAME=pkgutil HOTLINE=http://www.opencsw.org/bugtrack/ CLASSES=none PSTAMP=bonivart@unstable10x-20141016214032 EMAIL=bonivart@opencsw.org VENDOR=http://pkgutil.net/ packaged for CSW by Peter Bonivart CATEGORY=application VERSION=2.6.7,REV=2014.10.16 ARCH=all NAME=pkgutil - Installs Solaris packages easily PKG=CSWpkgutil 0707010023323a000081a400002713000027100000000154401f32000005080000013800000c3900000000000000000000000700000000pkgmap: 1 1255 1 f none /etc/opt/csw/pkgutil.conf.CSW 0644 root bin 4529 3893 1413488131 1 f none /opt/csw/bin/pkgutil 0755 root bin 106397 4514 1413488131 1 f none /opt/csw/etc/pkgutil.conf.CSW 0644 root bin 4529 3893 1413488131 1 d none /opt/csw/libexec 0755 root bin 1 d none /opt/csw/libexec/pkgutil 0755 root bin 1 f none /opt/csw/libexec/pkgutil/wget-i386 0755 root bin 164576 20108 1413488131 1 f none /opt/csw/libexec/pkgutil/wget-sparc 0755 root bin 224672 8936 1413488131 1 d none /opt/csw/share/doc/pkgutil 0755 root bin 1 f none /opt/csw/share/doc/pkgutil/license 0644 root bin 18007 29780 1413488430 1 f none /opt/csw/share/doc/pkgutil/readme 0444 root bin 19934 56011 1413488131 1 d none /opt/csw/share/man/man1 0755 root bin 1 f none /opt/csw/share/man/man1/pkgutil.1 0444 root bin 19228 33163 1413488132 1 d none /opt/csw/var/pkgutil 0755 root bin 1 f none /opt/csw/var/pkgutil/admin.CSW 0644 root bin 167 16130 1413488132 1 d none /var/opt/csw/pkgutil 0755 root bin 1 d none /var/opt/csw/pkgutil/packages 0755 root bin 1 d none /var/opt/csw/pkgutil/pkgask 0755 root bin 1 i checkpkg_override 855 14778 1413488430 1 i copyright 71 6693 1413488430 1 i depend 0 0 1413488432 1 i pkginfo 556 46168 1413488434 1 i postinstall 1024 19207 1399416302 1 i preremove 826 2408 1399416302 07070100233256000041ed00002713000027100000000254401f33000000000000013800000c3900000000000000000000000800000000install07070100233259000081a400002713000027100000000154401f30000000000000013800000c3900000000000000000000000f00000000install/depend0707010023325b000081ed000027130000271000000001536965ee0000033a0000013800000c3900000000000000000000001200000000install/preremove#!/bin/sh ETC1=$PKG_INSTALL_ROOT/opt/csw/etc ETC2=$PKG_INSTALL_ROOT/etc/opt/csw VAR1=$PKG_INSTALL_ROOT/opt/csw/var/pkgutil VAR2=$PKG_INSTALL_ROOT/var/opt/csw/pkgutil echo if [ "`cmp "$ETC1/pkgutil.conf" "$ETC1/pkgutil.conf.CSW"`" ]; then echo "/opt/csw/etc/pkgutil.conf modified, will not remove it." else echo "Removing unmodified $ETC1/pkgutil.conf." /bin/rm $ETC1/pkgutil.conf fi if [ "`cmp "$ETC2/pkgutil.conf" "$ETC2/pkgutil.conf.CSW"`" ]; then echo "/etc/opt/csw/pkgutil.conf modified, will not remove it." else echo "Removing unmodified $ETC2/pkgutil.conf." /bin/rm $ETC2/pkgutil.conf fi if [ "`cmp "$VAR2/admin" "$VAR1/admin.CSW"`" ]; then echo "/var/opt/csw/pkgutil/admin modified, will not remove it." else echo "Removing unmodified /var/opt/csw/pkgutil/admin." /bin/rm $VAR2/admin fi exit 0 07070100233257000081a400002713000027100000000154401f2e000003570000013800000c3900000000000000000000001a00000000install/checkpkg_overrideCSWpkgutil: file-with-bad-content /usr/local root/opt/csw/bin/pkgutil CSWpkgutil: discouraged-path-in-pkgmap /opt/csw/var/pkgutil CSWpkgutil: discouraged-path-in-pkgmap /opt/csw/var/pkgutil/admin.CSW CSWpkgutil: archall-with-arch-paths /opt/csw/libexec/pkgutil/wget-i386 CSWpkgutil: archall-with-binaries opt/csw/libexec/pkgutil/wget-i386 CSWpkgutil: archall-with-binaries opt/csw/libexec/pkgutil/wget-sparc CSWpkgutil: binary-wrong-architecture file=opt/csw/libexec/pkgutil/wget-i386 pkginfo-says=all actual-binary=i386 CSWpkgutil: binary-wrong-architecture file=opt/csw/libexec/pkgutil/wget-sparc pkginfo-says=all actual-binary=sparc CSWpkgutil: no-direct-binding /opt/csw/libexec/pkgutil/wget-i386 is not directly bound to soname libmd5.so.1 CSWpkgutil: no-direct-binding /opt/csw/libexec/pkgutil/wget-sparc is not directly bound to soname libmd5.so.1 0707010023325a000081ed000027130000271000000001536965ee000004000000013800000c3900000000000000000000001400000000install/postinstall#!/bin/sh ETC1=$PKG_INSTALL_ROOT/opt/csw/etc ETC2=$PKG_INSTALL_ROOT/etc/opt/csw VAR1=$PKG_INSTALL_ROOT/opt/csw/var/pkgutil VAR2=$PKG_INSTALL_ROOT/var/opt/csw/pkgutil echo if [ ! -f "$ETC1/pkgutil.conf" ]; then echo "Copying sample pkgutil.conf to /opt/csw/etc." cp -p $ETC1/pkgutil.conf.CSW $ETC1/pkgutil.conf else echo "/opt/csw/etc/pkgutil.conf already exists, will not copy pkgutil.conf.CSW to it." fi if [ ! -f "$ETC2/pkgutil.conf" ]; then echo "Copying sample pkgutil.conf to /etc/opt/csw." cp -p $ETC2/pkgutil.conf.CSW $ETC2/pkgutil.conf else echo "/etc/opt/csw/pkgutil.conf already exists, will not copy pkgutil.conf.CSW to it." fi if [ ! -f "$VAR2/admin" ]; then echo "Copying sample admin from /opt/csw/var/pkgutil to /var/opt/csw/pkgutil." cp -p $VAR1/admin.CSW $VAR2/admin else echo "/var/opt/csw/pkutil/admin already exists, will not copy admin.CSW to it." fi echo echo "NOTE!" echo "NOTE! Make sure to check out any changes in /etc/opt/csw/pkgutil.conf.CSW." echo "NOTE!" echo exit 0 07070100233258000081a400002713000027100000000154401f2e000000470000013800000c3900000000000000000000001200000000install/copyrightPlease see /opt/csw/share/doc/pkgutil/license for license information. 0707010023323c000041ed00002713000027100000000454401f32000000000000013800000c3900000000000000000000000500000000root0707010023323d000041ed00002713000027100000000354401f32000000000000013800000c3900000000000000000000000900000000root/etc0707010023323e000041ed00002713000027100000000354401f32000000000000013800000c3900000000000000000000000d00000000root/etc/opt0707010023323f000041ed00002713000027100000000254401f32000000000000013800000c3900000000000000000000001100000000root/etc/opt/csw07070100233240000081a400002713000027100000000154401e03000011b10000013800000c3900000000000000000000002200000000root/etc/opt/csw/pkgutil.conf.CSW# Configuration file for pkgutil # $Id: pkgutil.conf 448 2012-02-04 14:22:21Z bonivart $ # Master configuration file is placed in /opt/csw/etc. Place a pkgutil.conf # file in /etc/opt/csw if you want a local override setting-by-setting. # Nothing below is mandatory to change, pkgutil will use the default values # noted below for each option unless something is uncommented. # Catalog not cached # Tells your proxy server to disable caching during fetching # of the catalog and descriptions. # Default: true #catalog_not_cached=true # Catalog update interval # Number of days between automatic catalog updates. Special cases are -1 # if you want to disable automatic updates and 0 if you always want to # update the catalog. # Default: 14 #catalog_update=14 # Filter out CSWcommon from --deptree output # Set this to true if you don't want to see lots of lines with CSWcommon. # Default: false #deptree_filter_common=true # Exclude pattern # Space separated list of simple patterns that will exclude matching packages # when updating or installing. # Default: blank #exclude_pattern= # gpg homedir # The path to the gpg directory (instead of ~/.gnupg) when verifying the # catalogs integrity. # NOTE: we recommend you install the CSWcswpki package for # easiest handling of the keys # Default: blank #gpg_homedir= # Max package list length # During dependency calculation the recursive algorithm needs to be protected # against cyclic dependencies in the catalog (packages that list each other # as dependencies) or pkgutil will not stop until memory is exhausted. # Default: 100000 #maxpkglist=100000 # Mirror to use for downloads # See http://www.opencsw.org/mirrors for alternative mirrors. # NOTE: remember to include distribution (e.g. testing) at the end of the url. # NOTE: you can have multiple mirrors by defining multiple mirror lines. # Default: http://mirror.opencsw.org/opencsw/testing #mirror=http://mirror.opencsw.org/opencsw/testing # Support non-CSW packages # If you have your own packages that have a different prefix that you want # to use with pkgutil you must enable this otherwise pkgutil will skip every # package not prefixed by CSW. # NOTE: this also affects options like -c/C, however it's easy to filter the # output if wanted, e.g. "pkgutil -C CSW". # Default: false #noncsw=true # Options to use for pkgadd # You can set it to -S to skip displaying the license during install. # Solaris 10: If you wish to limit pkgutil to installing packages # only to the global zone, set it to -G. Note that pkgrm # does not have the same option. # WARNING: do not modify this unless you know what you're doing. # Default: blank #pkgaddopts=-G -S # Style of package list when installing/upgrading packages # 0 is the one used since the first version of pkgutil, it's space efficient # but less readable. 1 is the one introduced in v1.7, it's one package per # line which is easier to read. 2 is the same as 1 but also displays which # distribution a package comes from, e.g. unstable or stable. # Default: 2 #pkgliststyle=2 # Options to use for pkgrm # Solaris 10: If you wish to limit pkgutil to removing packages # only in the global zone, set it to -O nozones. # WARNING: do not modify this unless you know what you're doing. # Default: blank #pkgrmopts=-O nozones # Root path to use # WARNING: do not modify this unless you know what you're doing. # Default: / #root_path=/a # Show the current list of packages or not # You can choose to not show the list of current packages to get less output # when doing operations. # Default: true #show_current=true # How to handle soft errors from hooks that are called # A hook that exits with code 1 will cause pkgutil to stop. If this value is # true, exit code 2 will also cause pkgutil to stop. Exit code 2 is a non-fatal # error condition from a hook and it is a site dependent choice whether or # not to honour this condition. Set to true to enable. # Default: false #stop_on_hook_soft_error=false # Use of gpg, md5 # To enable use of gpg or md5, uncomment these # NOTE: it doesn't make sense to use md5 but not gpg so your options should be: # 1. both disabled, 2. gpg enabled, 3. both enabled. # Default: false, false #use_gpg=true #use_md5=true # Options to use for wget # You can also use any option from wgetrc with --execute, e.g. # "--execute http_proxy=http://proxy.foo.bar". # WARNING: do not modify this unless you know what you're doing. # Default: blank #wgetopts=-U pkgutil 07070100233241000041ed00002713000027100000000354401f32000000000000013800000c3900000000000000000000000900000000root/opt07070100233242000041ed00002713000027100000000754401f33000000000000013800000c3900000000000000000000000d00000000root/opt/csw07070100233247000041ed00002713000027100000000354401f33000000000000013800000c3900000000000000000000001500000000root/opt/csw/libexec07070100233248000041ed00002713000027100000000254401f33000000000000013800000c3900000000000000000000001d00000000root/opt/csw/libexec/pkgutil0707010023324a000081ed00002713000027100000000154401e0300036da00000013800000c3900000000000000000000002800000000root/opt/csw/libexec/pkgutil/wget-sparcELF;H4ih4 (44BBDD>>tL/usr/lib/ld.so.1ol !#$%')*+,-./13567:;=>?@CDFGIKLMNOPQRTUWY[\^_`acdfgiknpsuvwx{}~    "#%&')+,-/012679;<=?CDEHIJLMNOPRSUVWYZ\]_`abdefik  "&(02489<ABEHJSVXZ]behjlmoqrtyz|  !$(*.3458:>@ABFGKQTX[^cghj  p0  .Xp 8d Dh RTY` l@t  zL \L0 @  x "H      H # 4Xh E3\  Vl@ bP p1  x~D x,   ݸL ? h   d /DL DH L -8L ) 29T G,S_0 n  }Xd X 4 g   > BT  B ;H   #X+ 6H=Ep Y{ n?Hp ŀ p, A B`l h D$ 0$  @h "((t1 : OV@ ` jh y4 ) VP x ' (\ x DX P P( -@5<CT Q< j{ $ 0TD  L DX L Ԭ D&x 2t X, P%$ 34 <EQY`_Le@( r(yC   H  x  D< DhA  /TX A V.( d8o!P uc HH<@`  < Cx (  ì '#, 3@@ @@@ @Ԑ @AȒ@O'@@Ӑ @ @@͐ @Ԑ<@A@O L@@ @P@@ @Ԑd@A@N ؀ F@Ԑt@@ F؀Ԓ@AG 'ܒ@ +' Ԁ !@@ @̱@@{ @̵Ԑ@A_@N@@i @̙@@c F؀ F F@̊ @@T F؀Ԓ@@  @ +' Ԁ "(@@8 @h,@@2 @lԐd@A@Nu@{@i<t$MF @̉ ['܄"ܐ @̂ ]ܶ5"4'"@@ /@@Ԅ /(܈ I . /(I ( *I (F@@ FF@@xF؀@@? @`* 8'F؀Ԑ @@cܐ@ܶ   TF 9GԀ 7@@? @Ȑ@? @̐ԐL@@v@MՐ\@? @˱`@?{ @˵Ԑ@@_@M@?j @˚ @@@˝Ԑ@@G@M؀ `@ˁ@?K `` H @t@?> F` F"M@@!M/3 '@ˋ@ˈ`    ?#h'77Ֆ@˫FF@?$F"ՐP@?6F@W ?#h@tL / [,  L   ]I  ./") I  2I  ]) ) FF@?F"Ւ@?FcՐ @?m@    WF ;]Հ 7V@> @Ґؒ@> @֐FՐ@?@Lސ @> @ʺ$@> @ʾFՐP@?g@LƐ`@>r @ʢd` @? @ʥFՐ@?N@LcF@ʇ@>Q F@ʀ@>J FЄ`G' E` A` FЀ" `$2`$`$@> `$@ǔ !'܀ Հ Ւ@> @OȒ@> @SՐ@>@L\܁ ` @6@> ` ]' Ւ@= @  '  T  Հ &D5Հ 7(@=Ր @,@=ϐ @ Րd@>@Lt@= @x@= @Ր@>@K@= @א@=  @= @̐ܒ@=  ? ((0' %'G@ɽՐ@>g@KƐ@ɧ @`@ɰ @>䀤Ԡ    @ɍ,@=W  Ւ8@=L @      QՀ ieՀ b  " jՀ 7H@=  @PL@= @TՐ@=@K[@= @7@= @;Ր@=o@KB@< G@-Ք@= @ Ր@=ʒT@K'@<Ӑ @G@@=z @ @< @@< @֐ @=)@J @ؐ0@< "֐ <@=E@    d   E"9 7>P@ H2@D? א @:@ @9ؐ  @1?` 2@א$@:@H, *( *@[ @=4 G@8@:Z  *@e@  @:O@@e@$ *ӐӒ@ŵ ӐӒ@ŭ ڄ`Ӓ@Ŧ ڀ`Ԓ$@ş `(Ԑ,Ԓ<@ŗ ?@@ŋ F@F@F@FՐlՒ|@}!g [@žF@źB@Ŷ @Ų@Ů @Ū@Ŧ$,,$,,,,$,,$,,,@$$,$$,$F@[&F e@c\ e@D@9  "(@c"@@2@@  `  $``7  ;<`@S`$``$`@G"``$`$`@F"``$``$``"``$`$` L"L`2L@b"Lx@-2L"L ` $`@b  Ā @]e h@p @Ď|h@טh @9@Ī "'d 'ddd@F2``$`$`& 6(@Rΐ̀ " d% @R̀"T̀P@FZ" ,`" ,@C`ԀאP@8`@FL , @ad @@P  @``@"`Ԁא@8`@F+@ d @8Ā2`Ȁ2`@\ƒ dג#\ @8o@` . @RhdȄ$' @RadȄ$ Ԁ@8@̐4 @8G@A G@הD@8:  "``$` "$` "@ 㿠-$@`&``&``&`@Zd@b^`@þF"&@@Ìl@8E&@ V " &@@@ ɐ&F&F@ G@|ה@7  @c @7ޔ@Ç`&`㾀,0 0FF0`耠 ,@>,0F@7,0  0 #`'&2&&&@E32&`&`R "9($;<@QC,@ " @_$ @V@YÐ$@쀠"D  2@ @@fx2: @  @    "   @ ` @̐@ @7F   @,@@7<   @¸h @73  {`"l "P"z W`  @˜@6b q @@)@¸ "״   ?#`'@@ @耐 ת @m@ @6 D @d@ @6ސ @@ @@? G@cה@6ΐ ג@6 ' "%  2 @: @6  "   @)8 @6  2 P""  " `" @`T@" T  XT@"  @`  2  @\@@6r  " 2 耥`"@@W  אx@6@@@$@@U@ 6  `$`  0  0 6F F,06 @",,耠 ,@,0F@6T,0  0ג@$_'㿘3Fc"m خ׬@Pb`2[`@ @`$  ?#`L L /L  `@c`А@c"c@6c`@5@`  @8L @5`&@^ @U@ @U@J``  @8  6 "㿘`$`Y ""F'$F(" $"@_@@5_ @D2 $H12."  $ ? @$2 $?G@$@ؒ@5( ?2@% 0E2 `@ $@5  $` X@@O! "2 6~$`(@ @~ )F"@@B ؂@ ` ` ` $Hd ""耠`؂@Ԃ@ "~Id@]+d`@]"@VԐ@`@  '耠#dL?@@|@`@  @4 @ @4~@'Ԃ@@y`-j $ 2"耠2 ؐ@     ؂@Ô" ""`$`@@A֐@@` ؂@@4g``@ϐ ``@ǐ㿠  @  @ @$"$`$㿠 @  @ @`2 㿠@\/ (Ѷ&`9F (  '#ز  $ `,@\#$`$"& & H`( @AX& & H`( S`H  ˀ` ($ #`H 2#`(#؀`@3   ؐ@3`  `H( `H( `H( `H  F`P@^ ,   㿠 @ @@[`777ؠؒ @F؀ؒ,@ ؒ4 @3"ؒ<@2j FؐT@3M㿘% @H2@ @ؐ`@ @ 7@ @H22H@ 3 @x -, 4 @r`@w`*`- ,@`J0&I J9,`I  ( 0I 0I 9,`I   @ @7 @3ؐ5@0 䥒@$ 7@  @H2@ @  㿈7Y >   ?#h#`0#\   @# ؐ@ Y@ؐ 7@ԐA @H2@Ð @ 㿘ؐ @ .@ 7@ @H2@ 'H"I Hцa(2I  I  I (" I   &.@ђI ( @(I  ( 0.@I ( 2@I ,      &.@@O @K &㿘/ؐ/H@C 㸒@7 7@3 @+H2@" @ 㿘@ ㍒@  7@u @H52H@ 2@ @ 㿘9@_!ؐ@ V@Ր 7@ѐ> @H3@ @ 㿘@ +@ 7@ @H52H@ 1@ @ 㿘@ @x 7@t @lH52H@c 1@\ @X 㿘ؐW @R ǒ@F 7@B @:H5@1 @ؒ@ @9䀐 &`ؒ@0&`@(  &`ؒ@ &` &`@ 㿘ؐ @ p@ 7@X @H5@ڐ @5ؒ @1 `@`@X&`@ 㿘Ő@ 5@& 7@ @&H5 @& !G$! @ &!@& @ 㿠ؒ@ N  N ҆`(8 I㿠@h    ,`L x  L s L  L  L  rw`?(`?( @,`㿠@:  H 2I " . H 2N .N  L  ", L  2L 8#`P@8 #\G@ؖT @/T #h@Z#deѮ,<#tb\@ @Kd@?2'@ڐA'J - 7Fd" l"   '"$`@/Th`'"`@/Jt`'"`@/@ `'"`@/6`"! !!'''"#pؐ@/#p  '"#p@/#pغ?#l @Ր      a`C @:  & '$`L( L $  0@耤 '/`(L (2L  ؅,@.؄ #l䀧``L`" L`L` 0(L`( 0 0yؐ@.sm`L`    (K L`(- L``( 0L`(- L`:3 L` (`-`I  ( 0I (-`I : I ( -J  ( 0J (- " ؐ@.?؀ؒ@.4 c@ ,`@t$@   ,@ؒ @#t #lr@V? #x'􀠠"tؐ@.xt(ؒ$@>Sؒ(@8"N@c @U'@(< H / ("=@-֐H8䀡 H @ ("+@-Đ`&䀡 2#IH *2("@-x #l  @-, #p䀠 2 􀠠2 #l"l@-lJpGd2h@U #d#h@ $   $ '@U $  #h@ $ @ '@ڐ' '''' $   '''̀l&'Є l''Є?''@ h @"@-8䀠"@􀠠@@@X\@\d@؝Xؒ@ G@fؖ @,Д @Xr  9 (@U0`'7F'ؒ@,ؒ@@ ج @ @ذ@ @ Fئ d@ @آ@ @` " N`P"`   ؒlД@,'?''''''''@'쀠ْ@,ْ @n J  ٢@e J H< '!'' @, '@['!' @,r  '@T| @ %  % '@Tq $@ $@Ȑ@WR@㿠N  R ,",`D"`E" ` F"`W"`F    " @,,8 L 2L Pْ@ G@oٖ @+ٔ @W{  @z@Ws@s@Wl@l@We,l)zْ@)F#ِ@+L "HL ; HH;2H;"(@:ِ$@",@S#'䀠"L@+L  '#'耠"'@+ '#'"'@+'ْ@h 2/##@+@@VْL@O##@+v@#@+kِP@+bْd@- #ِh@+V@2٬t@ ̠  @  &*@ < 8 ( ($ْ@ @ #"'l#`@+&٦  @ @O`"L O`:  L L :2 L "L  @L "L L :  L L :2 L "#@ʐ #" '`ٔ#\@*ޚ'?''''''''@#'쀠ْ@*ɐْ@ ْ@ ْ @  #@*@ (_#'ٔ<@* '@R @ؔ &  &'@R &  @˔ & @@U#@*{x@@@㿠` ``*, ـ`%% T@ G@ٖX @* @+@$0 '  @~`@)  㿠7FTْ@Ő G@xٖ @) T`(5@D`(`,  @D`,  @y @v@R 77 7ْ@@Z  @U@Rْ@ْ@~@` `` @uْ@q@4` `` @hْL@d, 7D /ْ`@W`  @!`  l ( d@F   p @=`ْ|@7`@Ӑ@0` "ـ"@@@@@@@Ȓ@ @Z`ٴ ؐ@ H/  |$$( @ H  o$$(ْ@ܔ`  c$$(ْ@˔`  W$$(ڒ@` @U@VZ`@`2 ``@ 3$$(@]``7ڒ@@ST@@  /@ِ /@ِ /@ِ /@ڐ @ѐ:` @ ; +  "@ J  `* J @J*  ` 2  ?#:  㿐 . @ @ؔ    Ք  @ ,8/ɔ ,* ̒@ N  N  N  N  "  .  *  @ L  L  L  L  " ,   * @w L  L  L  L  " , ! ] * @T L  L  L  L  " , , : * @1 L  L  L  L  " , 7  * @ , Fڐ4@'Œ㿀@.;  ?#`@'@$ ?#`@@@@.*@@.'@.,''@ϔ  & @. @.@.''@ $ 9Đ͒ J ` J@  J`2J    J   *` @ &K 㿘!9'4##` (`` ?#`(ߔ# (#(`(Ԓ`Є# (ʔ# `%`$#㿠4 '4Ъ19# 2 # $$$&#N- $#N+$ #@ِD"$$##􀠠"#H`22" " "$ЀЅ(H-2 Ѕ(H Є$Ѐ&$Ѐ"%Ѕ(@T2Є$" "J $2$$$$Ѐ2 "ʢ?$Ё?(H-2Ѕ(H`  Ѕ(H-  Ѐ`(&#"(#Ѕ(H-2!#Ѕ(H-`"##  #\ HH= `L`L`=2``# ##$@@2@#$@ 2    #\ `2#`\4Ԁ@CXG<Ѕ(G@h@e##&#Є$Ё ? { Є$L`"7  `4\ 4Ԁ$Ѕ(H- @xG<Gh@i @G<Ѕ(HGh@X @###&# ?+Ѐ 4І$Ѕ(4 Ԁ@ېG<Ѕ(G@1h@##&#M:Ϣ ? :@##& "     4Ѕ(H- 4#H2/#4Ԁ#7Ѕ(H- @G<G#@h7@ G<Ѕ(HG#@ߐh7aL&#Є$Ё ?&#H’#H Є$N`:M4J :hJ :2##H 4# Є $&#4 &#H 4# Є $%&#Ѐ4Ԁ 4@5\G<Gh@4 M:2  ? : &#І$Ѕ(4 &#4Ԁ 4@@G<Gh@l4 ؁ ?2Ё?$Т (4 ́    њ В  ``G* *`  㿠@L " " $  ( 88$ $  @L($   (@ϒ 㿠@ @܁㿠   @R  * -   @ 2   㿠ؒ 2 㿠͒ ` $ "  $`  㿠@ 㿠   ( n(* &  88&  @L( (@\ @(& ,  " @ *    *@I㿠    @ * -`  ŀ 2  $ $  & $ $   㿠62   ( "    &  ,  @o * 2   %  2  㿠  (@ & 㿠   ("@"2* J ` J   *`" J@J *` 㿠@U " 㿠| |v XJ јc `J *`" J @J *` 㿠@l " 㿠| |K!㿘@J P&` P   O@$ `,@Jݒ&`$"& & H`( @0& & H`( P `H 2͢````H `@/"< ?"9 O "` "-``` `цaH(@ $``  `H(@2$` `(F"  ڐ@"P` @" 㿠N`"I N ђ N` 2I  I   J  I  " I  J : @>@ 㿠N Ѣ (@,L``( 0L`(,@ @L@"&`  㿠@J&`  "` J "J` " J` "J` J "J "J "J ""  "` "㿠 @  @ ,`@ ڒ@ܔ q 㿠2`  "  ( @-``?㿠 @  &   6& ڒ@  㿠@I|    ` ``%`%`@Ih,`%` `%`   ` @  &`ڒ@{ %`㿠@IE  " " @I? $ $  @i 㿠@ @㿠 #F & c"  ڐ@!  cڐ@!㿠 #\@\㿠%92`  $` &` @I.Fڨ8ڐ(@ ޒ``  ֐@ ѐ`&`@ ɑ<㿘@ ?'9kF" ڐ@@  $ ` @ݐl @ X@`2 @ϐG@y@@ F  @@ < z㿠 F4 44@! 2` ` `@   ڐڒ@!6F㿠@ -Ѥ @@? ?L`H ?  "` & L  ,ۀӮL #5$@ "MM("M M((L  ( 0L ((: ,L (2M,` ڒ@ `L ;" ,`" ,L (`, v` ڒ@Ô `L ;" ,`" ,L (`, Y` ڒ@ `L ;" ,`" ,L (`, <` ڒ@ `L ;" ,`" ,L (`, `*&Mڒ@k 2ML ;" ,`" ,L (2M, L ;  M,*L , @ ,``& @&,`@" @F% %@F@%% %@%7 @ ,``& @&,`@" @Fu% %@Fe@%% %@ )%HшH(H2H㿠 "  &@*   @  2      l(L㿠  N ц 쀤"  (!2 L "- $ (L! "L "L  "" '"  "z >"  sqo(2i ."f -"c _"`  ^ ( ." L-" L_"L MLI',"Lڅ,L 8<2L 63@L +-?L #-2 L -2L --L  - L U" ڒ$@o!,4ڒH@h!LXڒd@a!Ltڒ@Z!L@'  ' #''`'`!'!#'`' ''''$@ <   @J !2 J 2'􀠠/ @۴ L`(2`L`." `L`-"`L`_@`@L`(2`L`."`L`-"`L`_"`@"'L`(@ `@L`(@2`"L`>2l      L`'(@"L``@xL`(@2`L`/2L``@iL`(@"L``@^L`(@2`L`>2YL`>& L`(L`." `L`-"`L`_`@8L`(2`L`."`L`-"`L`_"`"(L`(@"L``@L`(@2`L`(L`.L`-L`_L`/~L`>zL`=2`@L`(@"L``@L`(@2`L`""+L`L`'&L`(@@L`>@`@L`(@@L`>2`@"'Ą '''8 L`'`@ H"L` L`   L`"`L`>" L``@L`ꀠL`2''Ģ`@ '' ' '' K ` -  & &- -` -  (@Cq' @C`(( (@''-` ($ i $ b$ Ȅ $  "`@*,'$'Ѐ`''$'ܐ   !  !  &'ܠ`''* '􀠠2@m' '''@`㿠@B T3:4&`1F `  #@#@ #@`#@ @S #@2#@` `2#  @7 `2 "`  `  &`,  @B 4ll " ` *`(  !4   ` %@ `@&     .@B~""`` ݬ '㿠4 ܤ@Ւ 4 ?``*?㿠    @   &  ,&  ( 㿠@6I  ` `(/F @ @G  @ @74 3F"m  @ @=1F# ۔ 0@ژ@7 # P@˔@8 @4Fېx@`@Aɐ  @  %.%  ( %  %.` ( -L`/ @-  "   - "'   ' ' 㿠4|?  & = 7.` (  `6%@2! @@2   &  ` ` "  & ے@i! 㿘۔#  *  * "@}@= &@A5&㿘۔ ې @p"  ے@i   㿘ې ۤ sѦ@Gmےy J ("I ,I  ( 0I (,I ;I  (@" J  J (@2 J ҆`UkJ ReJ L_J =[J  (@" H(@2 BB * " 9ے@Ӑ2ې *@Ē &Lۦ @ , @@$@&L㿠 ? ,4`ې$ے0@<"\,㿀@C G@Hۖ< @ -F/: "ېD@ߒ`'''''F'''􀠠2\\@"&耠@@C㿠:"?@??@ 㿠ې&`t@  ?N ѐ ( "I *`I  ( 0I ( *`I .TR I ( " J J J  ( 2J J 2>?";?`6J ?( "0?J ( ")?J ( ""?J  0( (J ( 0((J  0J    J 2 ? &`&`?㿠ې|@  L :" +L L ѐ(  L ("L (L  ( 0L ((L -G L (@ $`  L ("I (I  ( 0I ((I /2$ I (" $` I ("$`( I  ( 0I (($` 㿠@k &` &` 㿠@ ;@I?цa(@!  I?(@2! @>ϒ$` 㿠@ &` 㿠%: $`F-$F@A袘㿠.`):6`.`0  􀠀'@}F@&] $4 $% F۰@ ېے@@!iے@9!n4㿠:.` 6`.`0 & 2 D  }@F@Ȑ8s  㿠 " @*  " @$   @  & & & ~ 2',?'F||' # ####' ?'`$$$ $$$#2# (t0"@h @% :d"!ې@W #;  (0Ȕ 1 #`G7P# 7 X#("@(   ?@ ۶@(7\#7p# F@B   ?@ ۸@F!7@pt   ?@ #@t (@d p   ?@ # p@ (' ,' @u 쀠''耠''    @ Ģ @3 @ '@` $" `(("`($(#`,#    ېԴ @ @0   @B   ?@| ۴@) G7tG$ `    `@< ##@34##"#@ΐ##`"#@ǐ##"#@## "#@##`"#@##"#@##Ā F@#Fx#@#@@@@ @Ą@{Ȓ G ?@ Ѐ##`7`#7##7# # 7#`#`7##7# #7#F#Fx7#7 #7#`#d#\#h#p#l#t#|#x# @IF`ܐ<@`@ @ @@@h`7#7#@ @-'?'Ю @? % @   Ђ@̂@t < ̂@`H4 ܒ@M @}Ȓ@G ̂@@`@@@qd:ܐ@:" :@2  NF܀̂@@t``@;̐@``@3 ..Ẑ@`Ȃ@P$?2Ȃ@`H @\@;$F@;$FF؀ ܂@p` @܂@x` @ŵ@`H @0@:$ @D@:$̂@@`܂̂@`HF؀"  ܒ@I䀠F䀠2܂̒@}`X.䀐܂̒@`܂̒@}` ܂̒@}` {਀܂̒Ă@U`k܂̒Ђ@}` ޖ[܂@`ĔT@˖Ă@`A%<܂@`L@ﭖ" @`$ 􀠠܂̒@}`$ ܂̒@`0̂@@2`k@.ܒ@͐ 䀠"􀠠"Z # ! (0c!ZW"'@'Ґ@ސF:ܐ@@:" :@2(+@ ܒ@  цH(@H܄ '#@@h@c  5@P@[ @ 5 @'  !-!,!-!-%!.!,2 !,2.2*%@ؔ@̀2%%-),@ .@䀐ܒ@z,@b,@9 , ,@y %2o܀"n$8䀠"6$&2$@@ڐ $$ %@+@&@d:ܐ8@:"M ):@2H )N )$"0$@ݐH,@W @@@Ԑd:ܐ@~:" (:@2 ( (@M  䀠'?$T"G"C\2?@ؒ@` 䀠"h@=@W "@@= @ @u @o @8ݒ@ ݒ @* "'@'"$2$؀2C,@0ip",@07$,(,@;G@<,ݒ @ @-d:ݐ(@ג: :@x"m @5 ):G0 ):@f@g@h ` ,` ):` " @ Є #`@#\@&$  2-@אd" ݐ8@ "@2$@d" ݐH@k " @2؀@@?$ " @ 2 * $ @@@d:ݐ@0:"І *:@2ˆ * *@@@cd:ܐ@ :" /:@2 / /@<@57 @, @@.d:ܐ@ؒ:" :@2y@5"h @0 ܒ@ ͐ @G@@t ̂@@`@@@d:ܐ @:"6 !:@21 !7 !@ʐhG@@A @ɐd:ܐ@s:" 7:@2 7 7   Hے`@"i'ܐ ܒ8@$A H,,H,,pp,,H,,HH,H㾰' ' G'$$??"'``" '`): 2'`Ƨ` % '` @y * @.X@   '(@/&'(@/''('('@5'$ ?#h'(~耠/@7<+ @@ p $@8"@ݒ@ܐ2$" "@ " 4 ',Ā",($@ݐ@ D@02,' ',,2 @"D2' t   '  $@'O@6 ~" ~@1W 4@גȀ @Ԓ4@ݘ4 @ @~ `"$$'4"'@6"'D@ǐ2 'X< 2't''4 Ԁ  ' 4`2$̄$̐7((@5 ܪ@4'`& c92(~@&u~"@!ݒ@  @G@@ c ݐ"@ݒ@  @Ӑ @ O ɐ"@܀@H@ ; "܄ %@ސ %"҄ @Ԑ "Ȅ "@ʐ "`!  @@ Y @? @}В@ G =  $0 -Ѐ @^ @ S"z "@| " @LH @  @C|@  9~",~~2(~̀؀2 ~?" (&~~2~(  ,("~@5~ @" ̀°؀?W@0̐ @ r~@%d~~@̐ Д@ ^~@%PՐ~@Ր\В ̔#\@ K#\ݐ #`@ A$@%A  @3# @3"҄ "@Ԑ ""@̒ @ #\ݐ @ $@%  @2 @2z" "@ "@sԠG@~̒ @ ~@$ِ^~@^G@i̒#\ @ і~@$ÐH~"~ ,"@<В ̔#\@ #\ݐ #`@ $@$  @2 @2"9 "@; "@  "+ "@- "~ݐ@.ƒ ݠt @ s@@| @ hݒ@  ސ" %@ %@;㿘@e? '  & @]?.?'@|@R" ?   $ @J?.?  2J  `ѓ*`!@ `@" JJ `*`@ `@2J  J G2 JJ M2JJ T J +"JJ -2  J *    x'4 |@)``*?܁   $$4"J: `J@ + J * J: @J+ J * J: @J+ J ?J+  &J@ =+?+ @ =+?+?+ 㿘@J@G*  @  < ?8# `(ޠh@j ?#`@& #@1`p@V㿠@@+K@ L?籐L=?H?磐L"?H?H"LH" LL"2L2?@@1$&  ` :  6 ` `:  0*:  W* `  6 ` `  0*  W*`& `* 9:  &&' N 4 4̐6 @  i b  *`@`2:M`M`"M`M`= `M`M`=2`M`"%M`M``" M`@M`"2M`M``"M`M`" `M`M`"2`M`2`M`"M`M`, `M`M`,2`M`2`M`  "@ "@ "ɠ @  " " `" " "  " @  ?#`@@@ޒ @@  @ޒ @@Ӑ@@ @ڐ@Ő@הޒ @Ҕ@@̔@ѐ@̒ @ޒ @@@ޒ @ @@Ғ @@@@ @~@{@0#\ ޔ@@gޢ@א@Ԑޒ@Аޒ@̐"@M "@G @A㿠ސ@E N a(@21 N "- ސ @1 N a(@2 N " ސ(@ N a(@2  N    㿠ސ0@   ސ8ޒH@ ްPސ`@ ::` `;㿠4  R08, (@ː  6$?F㿠c P @!`$!T?$ @/\h$ @ $  $ ($ 8@/Sl$ @/Ox$ $ $ $!0$ $ @"$ @/$ $ #$ ؄$$ $!,$!8 $!@ 2$!<㿠@@@    @/ 㿠ޠ @ʐ J  @0\+G@/`@=@9@.Ӑޠ@j` @)  @08@ @G<Ghޒ@E@Ԑ @.ϑ㿘G/Ghޒ@0@ԐĠG@<@*-: %$@1 1@^@ @  @<@ @@ 2 @<@@1Ӓ%$@㿠 @/ 4R@rH @p\G<Gh@ɖ@@㿠ѠL "LL (@"LL L(@2LL#L( L_"L-2LL(2L_"L-"L(@$L=$ @-ؐ$``M _"  M -" M  (*M (^`?2L@` (@" LL(@2L="L@` (@ `L`(@2`@ H(@  H(@2 @-֐& ?㿠  ?@G<Gh@ * 4 b(4 㿐 @ y @zG<Gh@Ҙ t   77@@-* &@U  㿠ޒ@% N`1N` ޒ@" N`0N`" @7G<Gh@ & 㿠TPޒ @^G N`2N`? ޒ(@O"8 N`1N`"0 ޒ,@@") N`0N`"! ޒ0@1"?N`- N`1N`"?@8G<Gh@9 &  㿠@n?@ƐlG<Gh@ & 㿠ޒ@& 㿠@@,& 㿠:@:$=N`~9N`/5G 0@"N`H/2 N` (H/ N`/``M`/"`@@,0@\ /,@& @,E& 㿠N` @,~@0;& @0#& 㿠N`' @,l" `@^ $ ``H/2```(`2`@0 & @/& 㿠N` iN`n2N`N`f2 N`N`2N`& N`N`є( *`J   ( 0J  J ( *`/J "J J 'J цck "&g" *` "*` m"*` & &@@} & @@s 㿠N` N`є( *`J   ( 0J  J ( *`GJ "J J ?J цcm "2&d"*`h"*`#"*`w"*`ބ (& (@(& ( ((& ( (( &@E@   @<ؒ@ 㿠#Fbٔ2b  $ $  㿠N` !F#x"8$#x@B#x4$#x@@G<Gh@g %Fx @+x@(@@*x$xx@C@x@  (x) x( 㿠!G   F 㿘t2 F !??!?! !?!  㿠@ F@@G<Gh@ #Fc@c@*$c 㿠#Fb52b   $  㿠N` @  @*^F  @ihG<Gh@ J  "J`J`јa *  "J`* * J``" 0J`  J` *  *J`  "?? 㿠N " J N :"J N цa(@2J  J  J : J (@" J :  @L "   FcT cT@T㿠. :`0( ( "$ @ $ $ 㿠@{/:,,%-5̀%̇( (  ( @)$  $ JL@,$ BL̇((  (@@)v`$@ ($"L@ @)V $@@| ($ L@q,$L 2 %,,̄%̀6%́㿠N @  @nL`=!X = a\ Ga\`h㿠@8   F "F FԀ&Ѐ FԀЀ@j=T55Ȁ @P= P  =T@-5   @? -  @($ $     @($ $  d@% 5@ 5Ȁ @ = P 㿠b @ = P㿠!5"Ȁ =$"ȁP  $"ȁ=T"T㿐'L'P'T@'X=X1   F "F FԀЀFԀЀ  @b YL㿐'HF'L'P'T'X@=X  @C :H㿠8a8a@q= \\FG=`h \@x\@=  T@@ 㿠!=!\!\ @R!\$!\  $$  5? $rЁ㿠+5b<:): , ," 6 , ( ( @& 6 b̀,  ,b̈(( ( ḃ(( (@@㿠@)@:(Gh@ߒ@= \\@̠G@@۔ = X@= T5bЀ  "bЂǞ5Ѐ  :=!T : ":" (㿠ߒ@& ߒ@" ߐ@ @ 㿠@>G<@ߝ㿠@587@p@-lGX@@&@@!@@@}@@x@D@s@ (@n@H@i@`@d@@^ 4Plx  < t 8 p $@\ h (  D ` X T   8Tdp (D`| 4  Pl<`)G@? /% <  <2 <`% <% <9`5Ԓ{ ?v9܈ ?fd(4<Y@LRP\K`pDt=6/(4|!ung `4Y R K,0D<@=LP6X۔\/lԔp(|͔!Ɣ  $,0ے<Ԓy͒r4Ɛk4d4 ]4V4 O4(H48A4D:4P34X,4d%4yp4rx4k4d 4]4V4O4 G4@49ޔ42ה'4u&@@Ĕ444 44$4LLpd H"倠c"%c"倠k"0\"&倠r"倠vS0Ғ8%<̒HLƒX\hl| L2LN4G4@49424+4 $4x(4q04j<4cD4\X ?FG? G-FF"耠 -F """ " -FЀ2 І FԀ" %ЀFFԀF䀠+4F +4`Ц@FFF܀"@$pЀ F@a( ?#`$ `Ю(@ "`%(@#%`Ь%`&`Ъ -%F]F %F7p892L3 LH- LLHG`X$ %  9aLL9a@$  p @@0p  <   $  @$  H@ H@  @ @  Q "5F'ld3G'h"  @ " @  ,lhd@z ," h@$Gl"h@lw @ql" h@ak h"l@l @  2'l!F#F#F@ɔ`` F@ʐ#E F耠F#5GFȆ@.GFЀ9 FȆ@'@Ƞ@# F @7G@F@' G,F,F G@ fx   @  & j "" (@N Y7p@@@ST@P@L@@E@ @2 =@. q@8 <G@h@! d@+ <@L@@ @ <@  Ʀ@ސd@h@ <@  @ @@ 8F@@@ 8+4@@ <@@@ <@ِ 0F@L@Ӑ  㿠 9 b 9b9bp@@H X@    @  @Fd!=!`))G_+G %a $!`" )G@@$  ?,#9` @@x@)G@%a)G!S`"!K!   "   @  2 `"   @R`2,$ $&` # $`!  2 &`$㿠 ` @B@@@> $ @ ֐  @ $ $`J  J`*``J` 2J` 4X㿐 ''4@>#\@8G@G<Gh@5@#  +#`TGh90Ѵ ` H L (@  L  L (@2  2L L " L  L "L L (@ L  L (@2 L #L L "o L *"L L "2 L "(@L \2 V L "L L "2L  (@"L "L >L ,   2`- ")@  $`@  `9@  `b0` ``"` @G<@Z  EL @  9@ x $@t  @% 6   % @% 4@ % @Y#d#`#@ d B`ąB#\\h㿠 &@ b H & 㿠5G ? ?@   &  NXTL`2  ` @ؒ: 8   @.`  `$` `& ``@` 2` `@` %@$` $``` @`` $``6`k 㿠1G ??@ ` `2`` @: 8 \l ` 6` hd@ѐ    & `"`` @\`@X`9``@P``@` `@$9lw   @Б㿠GN  G Ip@Ր $G !? !  2 x@Ő G !? !  0 @ @G !? !  0 @ G !? !  @WGh@㿠@  @W 6$$ $@$ @_ @㿠  &  6   6 6 & #  "  # &  @  &  & 2& & @* @㿠 `   `  `&  @@  @ @@Y@@㿐   @!Ӑ@ 6  &   #`p` B ąB#\\`dD`d @ @ @ : 6#d #`d`DB#\\@ [,` `  > =(%`! 4( >( 6  ] (&( ](<:, @F $  ["$ [," ]!   <  > =  ( ( 2((뀠  ]( & @!(0@@F` ' @ #7`(#`8#\`@f\@+  D @~  $g  $c #dx d #`$h `D ąB#\\@gń < 8 , (($"""@Y < 8 -  ( $c  , P@~ T@~ c\@  d@~t@~@~  $   @~}   $$  : , ,  *,,@~\"<`d $@~T"N݄ [@~M" 㿠ǐ   㿠@~  F@~3F=  hFG@~h@~ =`@~ =hɑ@$f -6 㿠@$U -6 @~ؑ "  "  "  ?@ ?"  `Y㿠' $$ I4$H,` 㿠' `"@} && "  " 㿠@]  @} @}㿠@I " " " "  &   !F & #"#"#"    "&   &   & 㿠 `2  &  %F& `&``&`&  & "`` 0 @}N p "@ @P  z κ @  @9h9x'@  `!=!x""'!x{"'!xU@F'=\=p@g7  4 !F'"$"@ *$"" 䀢 "2 耈"䀈2 䀠 @2 @@|䀥 '' F"! " GF"" "F   "+ L!G''F  @ 8!G@L  `02$`" `0"`@"``@'@$`@``2 `@@!G  5@0F"   Ē @| @{ w@|q G@{Hj @@|"@|  @| ܔؖ@{؀@{ܔؖw28@@`@ Y " 6`" @{!TY `㿘 1F#`#TU@0" `#"#Hx#"``2#d2 `#"#4# `0 #"##Ϯ2 #"##",P`2'P`@{2!P ` 2P<" `02P @c` 2 P#"#`  #2` L"`$` @ 2 `$#"#` <̒{#H"*`@@{`h@z "`&`@`$2 `#"V#`$lO#`2 2`@{`" #"=#``6#";#`27#`@[` 2`@u @"@z`@֒ `` @ `@ϐ2##U@#" K   C 㿠@ w )@ q , @? @z $ Ę@^@\@z Ft<P@zF"qӐXl@z>"tА 㿠N  `N``N`N `  I  `J `J I " `2I  2I J 2I  "I J "I  2J /2" J /J  @y`?㿠@y =x@z@z 㿠=!xG!㿘)=!|!|2˄ %!|2!|} $!|G@y8y" !|L"!|Ȓ@y@yȐ@@ʄ!| ʮ@y@y@~@{l㿠'=||2, $|2% $ @T@QB@yO#=㿘%=||2 $|2| $| |R@yb@y`R㿠%=ppڐ $p ppɺ p@`@f$`@@㿘@ !=@`!t!t$!t!t ]    9F`s2 ##"K E գ / 0"`$ # L`" @$ $ #" `킔 0"$ $ #" s`  2 @q@ m  2 @b @Q@x@#dhd #`#\`\㿠#=a|a|"?@Ca|a|$a|?"?@:??$??􀠠@?@?$?㿠` N * $ $`  h@x  $ $`$ $`㿠@N`/"`@l &   $   &   (&  ( (@ &  (  ( 㿠  ,`    ` & ,` @ӑ(        "`"`"``   &   @x& & & p|@wҔ  㿘' '@  @wޔ   `є&@x 2 @@L`(@@`@ @L`(@2`@:L`#"@" LL(@"L# 񀤀@L(@@$ @L(@2$@֬@L`(2`L`-`@L`(2`L`-"`@L`(@`@ L`(@2`|@{FL`:v`L`(@ L(@2*  @wI `2$"J   G@w- "9`` 1Ȑ@w "#` @ `F뀒 Fu&`" ( (@y&&@v!(㿠@ G@v   `@O㿠 $    @v ` @&  @v @v㿠N N``" ҈ѐ쀢}`%8%J (1%J (*%J 0& J J 94J J  0J  7J 0& J J 94J J  0* 7* (8/% %8@ I (1@ I (*@ I 0& I I 94I I  0I  7I 0& I I 94I I  0* 7* (8/@  @2  J  I  `  㿠2  -   g   &  , ( F9 9  a 㿘@uǐ@ ?#`@u :-!=@!2!\ $!!   !X@_!P㿘@u@ ?#`@uR :,@=က2ခ ſ㿠@0@u>< &`  @ @u[" "`"@uR`&`"`?㿠@uE 㿠!=! !Pv U!$!E "!E"!@@㿠%E$$FDąB#\\$ $   Fh鑓, 鉒,  (@u($$㿠@Y F$ иЪ   ``3;20 = @uQ @$ ѐ`" ` @t ` F?bFЀ"x 쀠n@ \= G=;  % %Ҕ0 @u@t ` 2(?@ F"A@FЀ" 0 $ Ȁ Ā&?FЀ"``2 @㿐'@!997(`E#`#\`@t[\@@@?P㿘3 9`@#`#\` F\ȁ 9 D&  & FD   & Ą &@s!ɀ @s!À`㿠@s 㿠#,㿐#\  "@z\`&2&`@y@ؐ @s 耥XlF '' @ `  @ `  "P`@ `;@B#  @2p @s6$ 籔@'@А@sS 4@s%@) 眔@@s@ 4@sܐ @@@s0 4 ٦ / `+ ~􀤠%~t%~􀤠  ` @ܐ @sLT@s  %w􀠠"@r@ ~@r'@M@r@ ' Z @*` ( @:  @@rÐ@, @r  @@@)@r@r %@r|  @m@k@@r@r %@nt @V@@r@r```n"``` `  " &`&`@rV@!@ʐ& G@rGG2&@rAG0 0@r!G㿐     "@# " h&3F'5Gb' 02S@2T 6b耠" " ; "',"#@"v@q4 @r." @q( '"@qʐ"@qĐ $ 2'@O㿠@q  @q,KFЀ````@B#`#``` @   А?#`#`Fc c     c: @  * 㿠7  F ## $ ?#& @r+#@r(? ? 4??(@ , `??"8Ж`@r ?@rJ KҘ њ!J` %2J`J` "J`J` "J`J` *  !" J`J` *  !2J`J`*$` 0& J`J` 94J`J`" 0J` J`" 70& J`J`94J`J`"0*  * "7` *`J` 2J`*㿠N   ҐH H2H  @ h`N +!҆H % "HH 8 ) 0) 7)   670) )  H)  H2H!) p@p[ Ё㿠@ BJ %BJa *  !"J J *  !"C J 0& JJ 94JJ" 0J Ґ @J" 7`0& JJ`94JJ"`0*  `Ғ` * "`7 Ҕ! @ 2  @ 2  JҒ a @`"  J ` @   㿠N    "``L`$$$@(@  N V$Ң %z "L` "?L`AL``8 ,0,7, 670,,+L`L`0& L`L`94L`L` 0L` 7L`0& L`L`94L`L` 0( 7(`,L`,`L`$,@ok!㿠7$ $$@o`@o ` `2` ,7 `,("  J іa *  2 J` -"J` +2JJ *  2J -"J +"J :"J /J /"" J іa *  2 J` -"J` +2JJ *  2J -"J +"J :`?* 7"@* `(@* 7"@ * `,"㿠@oڐ J @" 㿠  :@o  "& $&@`@ &&@@n (@ x&@n (" 㿠y N N :N /L L:L/22L :/ Lшa(  I  (2   I /I @nx@  @n$ /(@ni@  @n㿠@o+@nWJ ` єcњaJ `*`@ `"J  ` @ *J`2J 㿈''  #``"  &` `7#\  ( `$( @n   #d`"ׄ  $` `M`:2`#h `"  $`  : L hђJ (  ,J  ( 0*J  L `"  $` L /  dL L ;2 L  TJ ?2 L  HJ #2 L  @mL h% `"Z  $` @ ! 0 @me 0`$ @ td$ $ $ ($ ,@ k$ @   @W $  @ Z$  `@ S$ ``@ L$ ` @ \2$ @ $  @ْ $ \"@m0@l#㿠 . 7`H4@l#K. 㿘@m  ?#`@m-ѐ@m / @ <$`@ &@ $`@  &㿠  " @l   " @l  @ @l  @㿠 " @l͐` /.`@@l " @l ;,``@@l   @l ?,``@lv㿠@ : ƒ,@㿠@l  H@ I $]"(& @l|#& @l{ @lx $@   @l< /-@@ $@l5@ (;"& @lZ& @lW @ & 㿠@lJ @ & 㿠@l> $@ & $㿠@l2 @l0 @l.  " @l(  " @l"  " (@l  (" ,@l ( ,@l ,@l @l  $@l 㿘@ 3 G@k@ L F"  H{   t Ѧ %@l  @L`(@`@ L`(@2`H(@  H(@2 6@ @1@kbm` ޖ@k@k@!  @ke $`$`$ @ 㿠  " /  @k\ @kZ`2 @kP%F@ ix ?#` ?#`@k< $x逤$@ka@k\@k $@kO @k@k N/   H/2 H/ @@k9x<F@j g@k%@ 3 G@j @jĐJ `  J`/"J`2J 㿘    H  -F-F- H /`?א &M@ L /"  L 2L @j  ?#`@j 9 H /`?9D"3 @ji @jf @    ?H#`.  H2 @ju  @j +  "M`@jB :,@ v M`H.2   HM` M`@j(@j% M ?#`/̖@jK@j " $H/"( $H $ @i @i@i@LԖ@j @jN@jK@iΐ㾠N 0`ҒJ` %  "J`J`` 8 * 0* 7*   670* *  J`* `J` *J``+" ("  ?*  N`!" " " N` F % 2/2 J`* `* *  J`* `J` *J`" :/* @)㿠%F   $H  $ 9`    H  t 2``H.`H"`@i1`@i.@Ȑ`@i^@i ``\ `耠 @#@& @U@i㿠"*:@ * : J`  "`@ 8J`   㿠N  /" @hڐ@L .2L L /"L L 2L L /  $ @h$L , .23L L .2/L L /L 2'L (L $ (L L?/ $L/2$L /   $@h$$L ,/2L L /L/"L  $@h$$L , "L L /  L L /2 L  L 㿠ޠSN`2N`@ ?$@`@h @h,N`#@hJ # @h- @Ő`@g@g,* /N`/2'N`N`/2#N`$@h5 /"J /2  @` "@gƔ@g”-N`/K $@h /  H/ $ @h /  %@ %@  %@"%@ 2%@@T` @g|"6-@gu- /    J?/    @) `@gQ`(".@gF.@l@㿠' " @gf㿠 7 ( `(( ( 7($`` (` ( , 9lU ,@g7@g4   @ G   @g# @@g @@@g@fޔ @g @fԔ @ :,@f@fƔ@ @(@f``@f`   :.`@ `  @ !-  `(@fΐ `,@f@f's (@f'9܀ 㿠 F  F㈀ @g$ ㌀ @g 0 " L " ː E@f۔$,#㿠  " 㿠@f<< ڷ   ` 2 2 @f$P @y @f`G@f% ڑ @{F耠@F@f|%G@e@f n@@f@@eG@e Z@ ?"y{q% @fr " _"1"SX@~@ 0 @, ? @h? =@e@e.@ P 0 @ ? @??D@e` |@2z ?"$  $ @e@e@ ٪@ee㿠N`/@N /R  N"NN@"NN@N2 NN/" NN@/"N N/  N@/  NN @H/`H2H@ @e,` @` ,@dД , @@e@d(- 㿘@d`   ?#`@e @d)7 )7 ?#`@d@d \  @d"   2 @e@dG@d @@ @a$  \$ % \㿘N " N   "'2N   &` $&&(@d@>@  @d`2` &&(@dӒ@dΒ㿘@p @dP ?М#`@d~   K #&    ` ""    *K  㿘G@ Ɛ@ ?+@d,`N  ?#`$@L F % 3?",`L,``,`,``L2L$@ ,`@ @c)$,`   7  7 7  7 ```d`h`l 㿘 %F2 '2  2. $' '@]N 㿠@c 㿠!F! !8 !$!㿠 @cDG< ׽@c- 㿠@d7㿠@d+ @d# Ґ 㿠@dÐ(㿠J цH(H2HJ *`:`*` :`  J  J 2J 㿠&@@bΔ,㿠FN BN   . Ѧ L , ,ڒ$`$ L(@"L(@2LL2L (h- $$ 㿘@b?' F(ᤄᤁ@bF 0@b㿐@b?' F(᳄᳁@b #\ #` l  F@@b㿠%F  @`$@cB +@b.t@b &@b&@b@c.G@c*HG@c#XG@ch@bސl@a @a 㿘''@c? G@b nx @bf#<(F֐@bN@a͐G@a C㿠@bՒ 2 @b4x" < " 㿠@aϐ@f<@aϐ@a 㿠 ې`㿘@a  ? /#`@aM /dM"MM/" MH`H/M" - @bb!?-`M 㿠@a /" @a]`@a" /,@@as㿠@aF"NN/" N! I /2N/2FF$$`$@”  `@    $@ ` `@    J "J J``"JK J @ J`  K `K J@ "J "  㿠 ")    H/  2㿠`FL /" F0 002    㿠@`@`  @J`J   ! "`"  6J` ?" 㿠 '   D   "   Ð   @`"    2   㿠@`."NN/"NN."N  H/H.2 N.  㿠 R R @` R`@_@ H ,$@`ٔ`  `@_Ր N -  N G@` H @`  X x@`k%     @` %    @_ % % "8"4`%  @8$  ,`7%    $@@_~  % 4`2 @_U @$%  "%   % % @_B@_a @__ 㿠  @`P @_R@_P @_N㿠  `@_C``2`@_=㿠`2` @_,     ` `(,(@^ג@_㿠 $ $ ``2`$`㿠~ $ $   "  `2 㿠 @^"    2   㿠 `@^`@^ 2`㿠 b9xR㿠@^ 㿠̐@ 㿠@^x@^v 㿠̲  㿠N 1F!Ǥ- -.!Ǥ`@^c*@_Z2`(  $ $ M@M`, &I M@"",  ,@@^ < 8 ( 2M`"M`,M`` ,M`,㿈@]㿠   @_`0( 8 ,@_` @ 4`@8$.$`I  J `@ )  * " &I . ̐w㿠   g@^=< :`   `@^3< :`  4`㿠  -.    0,``"( d@^g< :` 0,`(($0,``(#"z@^< :` 0,`( (($@]g< :` 0,`(($0,``( 1@]ےӇ< :` 0,`( (($z@]̒< :` 0,`( (($@]g< :` 0,`(($0,``(aB6@]< :` 0,`(( (($@]Ӈ< :` 0,`( (($z@]< :` 0,`( (($@]xg< :` 0,`(($0,``r(Є@U>-@]b< :` 0,`((!((($6@]O< :` 0,`(( (($@]>Ӈ< :` 0,`( (($z@]/< :` 0,`( (($@] g< :` 0,`(($0,``(&%f@] < :` 0,`( (!(($>-@\< :` 0,`((!((($6@\< :` 0,`(( (($@\ՒӇ< :` 0,`( (($z@\ƒ< :` 0,`( (($@\g< :` 0,`(($0,``(}xy@\k< :` 0,`( (!((($@\< :` 0,`( (!(($>-@\}< :` 0,`((!((($6@\j< :` 0,`(( (($@\YӇ< :` 0,`( (($z@\J< :` 0,`( (($@\;g< :` 0,`(($0,``5(沄y@\%< :` 0,`( ( ( ( (($@\k< :` 0,`( (!((($@[< :` 0,`( (!(($>-@[< :` 0,`((!((($6@[ْ< :` 0,`(( (($@[ȒӇ< :` 0,`( (($z@[< :` 0,`( (($@[g< :` 0,`(($0,`` (. @[< :` 0,`( (((!((( $y@[< :` 0,`( ( ( ( (($@[mk< :` 0,`( (!((($@[Z< :` 0,`( (!(($>-@[I< :` 0,`((!((($6@[6< :` 0,`(( (($@[%Ӈ< :` 0,`( (($z@[< :` 0,`( (($@[g< :` 0,`(($0,` ` ( .㿠@ @Z|㿘@[ & & 㿘@[v   @Z͒Ӈ<  :`  (!) ( 㿠N # H&2H <" H>" H"2H   2  H2Hː N "N( pN  & # 3 2 ; q u o t a m<  "+("" (&" (*J "(>" (#J (((( J  g<" l((( (((((  (((( ( J 2J (㿘FG @Zhh@ZԔ6 ?@㿘#FbH@Yΐ @Z $bH@Z#`h#dpDd` F …B#\\㿠@k??@@㿠@k? @k<??@@);Ok[WQ  /?"!,i9Ka~֝jבe  7CA f!*7ΑH^P}zdK5 _U^/%=kO[G)6F\I (QۚK5ަ5)n>5#F[uvT~>QwCBBBBQ00000000000000000000000000000000  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~connection_host_name == NULLconnect.cconnection_host_name != NULLconnect.cConnecting to %s[%s]:%hu... Connecting to %s:%hu... connected. Created socket %d. failed: %s. Closing fd %d Master socket fd %d bound. Closing fd %d Closing fd %d Created socket fd %d. Closing fd %d Closing fd %d Deleted old cookie (to be replaced.) Stored cookie %s %d %s %s %d %s %s %s res != 0cookies.cDiscarded old cookie. name_b != NULL && name_e != NULLcookies.cdomainpathexpiresmax-age%lfsecureError in Set-Cookie, field `%s'Syntax error in Set-Cookie at character `%c'. Syntax error in Set-Cookie: premature end of string. cdm: 1 2 3 4 5 6Attempt to fake the domain: %s, %s Attempt to fake the path: %s, %s p != NULLcookies.cocnt == countcookies.cCookie: pos == result_sizecookies.crCannot open cookies file `%s': %s TRUE%lu%s %s %s %s %lu %s %s Saving cookies to %s. wCannot open cookies file `%s': %s # HTTP cookie file. # Generated by Wget on %s. # Edit at your own risk. Error writing to `%s': %s Error closing `%s': %s Done saving cookies. bytecon != NULLftp.ccon->target != NULLftp.c!((cmd & DO_LIST) && (cmd & DO_RETR))ftp.c(cmd & (DO_LIST | DO_CWD | DO_RETR | DO_LOGIN)) != 0ftp.cuser && passwdftp.cLogging in as %s ... Error in server response, closing control connection. Closing fd %d Error in server greeting. Closing fd %d Write failed, closing control connection. Closing fd %d The server refuses login. Closing fd %d Login incorrect. Closing fd %d Logged in! ==> SYST ... Error in server response, closing control connection. Closing fd %d Server error, can't determine system type. done. ==> PWD ... Error in server response, closing control connection. Closing fd %d /Initial VMS directory not in the form [...]! Preprocessing the initial VMS directory old = '%s' new = '%s' done. ==> TYPE %c ... Error in server response, closing control connection. Closing fd %d Write failed, closing control connection. Closing fd %d Unknown type `%c', closing control connection. Closing fd %d done. ==> CWD not needed. changing working directory %s%s%sPrepended initial PWD to relative path: old: '%s' new: '%s' *ntarget == '/'ftp.cChanged file name to VMS syntax: Unix: '%s' VMS: '%s' ==> CWD %s ... Error in server response, closing control connection. Closing fd %d Write failed, closing control connection. Closing fd %d No such directory `%s'. Closing fd %d done. ==> CWD not required. ==> SIZE %s ... Error in server response, closing control connection. Closing fd %d done. ==> PASV ... Error in server response, closing control connection. Closing fd %d Write failed, closing control connection. Closing fd %d Cannot initiate PASV transfer. Cannot parse PASV response. Closing fd %d couldn't connect to %s:%hu: %s done. ==> PORT ... Error in server response, closing control connection. Closing fd %d Write failed, closing control connection. Closing fd %d socket: %s Closing fd %d Bind error (%s). Invalid PORT. Closing fd %d done. ==> REST %ld ... Error in server response, closing control connection. Closing fd %d Write failed, closing control connection. Closing fd %d REST failed; will not truncate `%s'. Closing fd %d REST failed, starting from scratch. done. ==> RETR %s ... Error in server response, closing control connection. Closing fd %d Write failed, closing control connection. Closing fd %d No such file `%s'. done. ==> LIST ... Error in server response, closing control connection. Closing fd %d Write failed, closing control connection. Closing fd %d No such file or directory `%s'. done. Lying FTP server found, adjusting. accept: %s %s: %s Closing fd %d Length: %s [%s to go] Length: %s [%s to go] (unauthoritative) %s: %s, closing control connection. Closing fd %d %s (%s) - Data connection: %s; %s (%s) - Control connection closed. Closing fd %d %s (%s) - Data transfer aborted. Closing fd %d r%s: %s %s File `%s' already there, not retrieving. (try:%2d)--%s-- %s %s => `%s' Closing fd %d %s (%s) - `%s' saved [%ld] %s URL: %s [%ld] -> "%s" [%d] Removing file due to --delete-after in ftp_loop_internal(): Removing %s. unlink: %s Closing fd %d .listingUsing `%s' as listing tmp file. unlink: %s Removed `%s'. Recursion depth %d exceeded max. depth %d. f != NULLftp.cRemote file no newer than local file `%s' -- not retrieving. Remote file is newer than local file `%s' -- retrieving. The sizes do not match (local %ld) -- retrieving. Invalid name of the symlink, skipping. Already have correct symlink %s -> %s Creating symlink %s -> %s symlink: %s Skipping directory `%s'. %s: unknown/unsupported file type. %s: corrupt time-stamp. Unrecognized permissions for %s. Will not retrieve dirs since depth is %d (max %d). %s%s%s/%sComposing new CWD relative to the initial directory. odir = '%s' f->name = '%s' newdir = '%s' Not descending to `%s' as it is excluded/not-included. Rejecting `%s'. %s: %s No matches on pattern `%s'. Wrote HTML-ized index to `%s' [%ld]. Wrote HTML-ized index to `%s'. Closing fd %d %s %s %s%s%s PASS--> %s --> PASS Turtle Power! --> %s USER331 s/key 331 opiekey PASS%d,%d,%d,%d,%d,%dPORTPASVTYPECWDRESTRETRLISTSYST VMSUNIXWINDOWS_NTMACOSPWD""SIZEtype=JanFebMarAprMayJunJulAugSepOctNovDecrb%s: %s total PLAINFILE; DIRECTORY; SYMLINK; UNKNOWN; implicit perms %0o; perms %0o; month: %s; day: %d; year: %d (no tm); time: %02d:%02d:%02d (no yr); -> link to: %s ... Ignoring `.' and `..'; trailing `/' on dir. trailing `@' on link. trailing `*' on exec. Skipping. rb%s: %s Name: '%s' -- :MYYYY/MM/DD HH:MM - %d/%02d/%02d %02d:%02d Timestamp: %ld Directory File, size %ld bytes wrong VMS permissons! JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECrb%s: %s file name: '%s' .DIRName: '%s' Directory File Getting additional line empty line read, leaving listing parser confusing VMS listing item, leaving listing parser second token: '%s' -day: '%s' -nonsense in VMS listing, skipping this line date parsed YYYY/MM/DD HH:MM:SS - %d/%02d/%02d %02d:%02d:%02d Timestamp: %ld ,)confusing VMS permissions, skipping line permissions: %s -> 0%o rb%s: %s Unsupported listing type, trying Unix listing parser. wb%s: %s %s%s%s@ ���Index of /%s on %s:%d���

Index of /%s on %s:%d


  %d %s %02d %02d:%02d         time unknown       File        Directory   Link        Not sure    %s  (%s bytes)-> %s
store is `%s' POSIXLY_CORRECT--%s: option `%s' is ambiguous %s: option `--%s' doesn't allow an argument %s: option `%c%s' doesn't allow an argument %s: option `%s' requires an argument %s: unrecognized option `--%s' %s: unrecognized option `%c%s' %s: illegal option -- %c %s: option requires an argument -- %c %s index >= al->faulty && index < al->counthost.cindex == al->faultyhost.ccount > 0host.cReleasing %p (new refcount %d). Deleting unused %p. Caching %s => %s Found %s in host_name_addresses_map (%p) Resolving %s... failed: %s. done. u->host != NULLhost.cHost not foundUnknown erroral->refcount == 1host.cltgtampquotnbspch == '\'' || ch == 0x22html-parse.cch == quote_charhtml-parse.cch == '-'html-parse.cch == '-'html-parse.caappletareabasebgsoundbodyembedfigframeiframeimginputlayerlinkmetaoverlayscripttabletdthhrefcodehrefsrcbackgroundhrefsrcsrcsrcsrchreflowsrcsrcsrcsrcsrcsrcbackgroundbackgroundbackgroundrelhttp-equivnamecontent%s: no base, merge will use "%s". %s: Cannot resolve incomplete link %s. %s: link "%s" doesn't parse. %s: merge("%s", "%s") -> %s %s: merged link "%s" doesn't parse. appending "%s" to urlpos. first != -1html-url.chrefhrefrelstylesheetshortcut iconnamehttp-equivrefreshcontentrobotscontentnonenofollowtagid != -1html-url.c%s: %s Loaded %s (size %ld). no-follow in %s: %d HTTP/bytesnoneKeep-AliveInvalidating fd %d from further reuse. Closing fd %d pc_last_host_ip == NULLhttp.cpc_last_host_ip != NULLhttp.cRegistered fd %d for persistent reuse. Closing fd %d *hs->local_file != NULLhttp.cReusing connection to %s:%hu. Reusing fd %d. Referer: %s Range: bytes=%ld- Wget/%sAuthorizationProxy-Authorization:%d*/*%s %s HTTP/1.0 User-Agent: %s Host: %s%s Accept: %s %s%s%s%s%s%s%s%s ---request begin--- %s---request end--- Failed writing HTTP request: %s. Closing fd %d %s request sent, awaiting response... End of file while parsing headers. Closing fd %d Read error (%s) in headers. Closing fd %d No data receivedMalformed status line(no description) %2d %s%2d %s %2d %sContent-LengthContent-TypeLocationLast-ModifiedSet-CookieWWW-AuthenticateAccept-RangesContent-RangeKeep-AliveConnection inhibit_keep_alive == 0http.cClosing fd %d Authorization failed. Unknown authentication scheme. BasicLocation: %s%s unspecified [following]Closing fd %d text/htmltext/html.htm.html.html The file is already fully retrieved; nothing to do. Closing fd %d Continued download failed on this file, which conflicts with `-c'. Refusing to truncate existing file `%s'. Closing fd %d Closing fd %d Length: (%s to go)ignoredunspecified [%s] Closing fd %d %s: %s Closing fd %d Closing fd %d Closing fd %d Warning: wildcards not supported in HTTP. File `%s' already there, will not retrieve. htmlhtm.orig (try:%2d)--%s-- %s %s => `%s' Cannot write to `%s' (%s). Unable to establish SSL connection. ERROR: Redirection (%d) without location. %s: %s ERROR %d: %s. Last-modified header missing -- time-stamps turned off. Last-modified header invalid -- time-stamp ignored. Server file no newer than local file `%s' -- not retrieving. The sizes do not match (local %ld) -- retrieving. Remote file is newer, retrieving. %d %s %s (%s) - `%s' saved [%ld/%ld] %s URL:%s [%ld/%ld] -> "%s" [%d] %s (%s) - `%s' saved [%ld] %s URL:%s [%ld] -> "%s" [%d] %s (%s) - Connection closed at byte %ld. %s (%s) - `%s' saved [%ld/%ld]) %s URL:%s [%ld/%ld] -> "%s" [%d] %s (%s) - Connection closed at byte %ld/%ld. %s (%s) - Read error at byte %ld (%s).%s (%s) - Read error at byte %ld/%ld (%s). %a, %d %b %Y %T%A, %d-%b-%y %T%a, %d-%b-%Y %T%a %b %d %T %Y%s:%s%s: Basic %s realmopaquenonce:::::Authorization: Digest username="%s", realm="%s", nonce="%s", uri="%s", response="%s", opaque="" BasicDigestNTLMBasicAuthorizationNTLMAuthorizationDigest.anonymous-wget@no_proxyHOMEWGETRC%s: %s: %s. .wgetrc%s/.wgetrcrb%s: Cannot read %s (%s). %s: Error in %s at line %d. %s: Error in %s at line %d. /opt/csw/etc/wgetrc/opt/csw/etc/wgetrc/opt/csw/etc/wgetrc%s: Warning: Both system and user wgetrc point to `%s'. %s: BUG: unknown command `%s', value `%s'. %s: %s: Cannot convert `%s' to an IP address. onoff%s: %s: Please specify on or off. alwaysonoffnever%s: %s: Please specify always, on, off, or never. %s: %s: Invalid specification `%s'. inf%s: Invalid specification `%s' %s: Invalid specification `%s' %s: Invalid specification `%s' %s: Invalid specification `%s' %s: %s: Invalid specification `%s'. %s: %s: Invalid progress type `%s'. %s: %s: Invalid specification `%s'. wget-log %s received, redirecting output to `%s'. w%s: %s; disabling logging. wget/opt/csw/share/localewgetUsage: %s [OPTION]... [URL]... GNU Wget %s, a non-interactive network retriever. Mandatory arguments to long options are mandatory for short options too. Startup: -V, --version display the version of Wget and exit. -h, --help print this help. -b, --background go to background after startup. -e, --execute=COMMAND execute a `.wgetrc'-style command. Logging and input file: -o, --output-file=FILE log messages to FILE. -a, --append-output=FILE append messages to FILE. -d, --debug print debug output. -q, --quiet quiet (no output). -v, --verbose be verbose (this is the default). -nv, --non-verbose turn off verboseness, without being quiet. -i, --input-file=FILE download URLs found in FILE. -F, --force-html treat input file as HTML. -B, --base=URL prepends URL to relative links in -F -i file. --sslcertfile=FILE optional client certificate. --sslcertkey=KEYFILE optional keyfile for this certificate. --egd-file=FILE file name of the EGD socket. Download: --bind-address=ADDRESS bind to ADDRESS (hostname or IP) on local host. -t, --tries=NUMBER set number of retries to NUMBER (0 unlimits). -O --output-document=FILE write documents to FILE. -nc, --no-clobber don't clobber existing files or use .# suffixes. -c, --continue resume getting a partially-downloaded file. --progress=TYPE select progress gauge type. -N, --timestamping don't re-retrieve files unless newer than local. -S, --server-response print server response. --spider don't download anything. -T, --timeout=SECONDS set the read timeout to SECONDS. -w, --wait=SECONDS wait SECONDS between retrievals. --waitretry=SECONDS wait 1...SECONDS between retries of a retrieval. --random-wait wait from 0...2*WAIT secs between retrievals. -Y, --proxy=on/off turn proxy on or off. -Q, --quota=NUMBER set retrieval quota to NUMBER. --limit-rate=RATE limit download rate to RATE. Directories: -nd --no-directories don't create directories. -x, --force-directories force creation of directories. -nH, --no-host-directories don't create host directories. -P, --directory-prefix=PREFIX save files to PREFIX/... --cut-dirs=NUMBER ignore NUMBER remote directory components. HTTP options: --http-user=USER set http user to USER. --http-passwd=PASS set http password to PASS. -C, --cache=on/off (dis)allow server-cached data (normally allowed). -E, --html-extension save all text/html documents with .html extension. --ignore-length ignore `Content-Length' header field. --header=STRING insert STRING among the headers. --proxy-user=USER set USER as proxy username. --proxy-passwd=PASS set PASS as proxy password. --referer=URL include `Referer: URL' header in HTTP request. -s, --save-headers save the HTTP headers to file. -U, --user-agent=AGENT identify as AGENT instead of Wget/VERSION. --no-http-keep-alive disable HTTP keep-alive (persistent connections). --cookies=off don't use cookies. --load-cookies=FILE load cookies from FILE before session. --save-cookies=FILE save cookies to FILE after session. FTP options: -nr, --dont-remove-listing don't remove `.listing' files. -g, --glob=on/off turn file name globbing on or off. --passive-ftp use the "passive" transfer mode. --retr-symlinks when recursing, get linked-to files (not dirs). Recursive retrieval: -r, --recursive recursive web-suck -- use with care! -l, --level=NUMBER maximum recursion depth (inf or 0 for infinite). --delete-after delete files locally after downloading them. -k, --convert-links convert non-relative links to relative. -K, --backup-converted before converting file X, back up as X.orig. -m, --mirror shortcut option equivalent to -r -N -l inf -nr. -p, --page-requisites get all images, etc. needed to display HTML page. Recursive accept/reject: -A, --accept=LIST comma-separated list of accepted extensions. -R, --reject=LIST comma-separated list of rejected extensions. -D, --domains=LIST comma-separated list of accepted domains. --exclude-domains=LIST comma-separated list of rejected domains. --follow-ftp follow FTP links from HTML documents. --follow-tags=LIST comma-separated list of followed HTML tags. -G, --ignore-tags=LIST comma-separated list of ignored HTML tags. -H, --span-hosts go to foreign hosts when recursive. -L, --relative follow relative links only. -I, --include-directories=LIST list of allowed directories. -X, --exclude-directories=LIST list of excluded directories. -np, --no-parent don't ascend to the parent directory. Mail bug reports and suggestions to . spideronnoparentondeleteafteronretrsymlinksonignorelengthonpassiveftponnoclobberonfollowftponcutdirsverboseoffdirstructoffaddhostdiroffremovelistingoffbindaddresshttpkeepaliveoffrandomwaitonbackgroundoncontinueondebugonhtmlextensiononforcehtmlonspanhostsonbackupconvertedonconvertlinksonrelativeonlyonmirrorontimestampingonpagerequisitesonserverresponseonsaveheadersonquietonrecursiveonGNU Wget %s %sCopyright (C) 1995, 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. %sThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Originally written by Hrvoje Niksic . verboseondirstructonhttpuserhttppasswdheaderdotstylehtmlifyexcludedomainsproxyuserproxypasswdbackupswaitretryfollowtagscookiesloadcookiessavecookiesprogresslimitraterefereracceptlogfilebasecachedomains%s: %s: invalid command ignoretagsglobincludedirectoriesinputreclevelverboseoffaddhostdiroffdirstructoffnoclobberonremovelistingoffnoparentonhttpkeepaliveoff%s: illegal option -- `-n%c' Try `%s --help' for more options. outputdocumentlogfiledirprefixquotarejecttimeouttriesuseragentwaitexcludedirectoriesuseproxy Try `%s --help' for more options. Can't be verbose and quiet at the same time. Can't timestamp and not clobber old files at the same time. %s: missing URL Try `%s --help' for more options. DEBUG output created by Wget %s on %s. Removing file due to --delete-after in main(): Removing %s. unlink: %s No URLs found in %s. FINISHED --%s-- Downloaded: %s bytes in %d files Download quota (%s bytes) EXCEEDED! .netrc%s/%sr%s: Cannot read %s (%s). %s: %s:%d: warning: "%s" token appears before any machine name accountdefaultloginmacdefmachinepassword%s: %s:%d: unknown token "%s" bardot %*s[ skipping %dK ] %5ldK ,dp->dots < opt.dots_in_lineprogress.c%3d%% %s %5ldK . %5ldK defaultbinarymegagigaInvalid dot style specification `%s'; leaving unchanged. percentage <= 100progress.c%2d%% 100% dlsz <= progress_sizeprogress.c %-11s %7.2f%s --.--K/s ETA --:--%d:%02d:%02d%02d:%02d ETA --:--p - bp->buffer <= bp->widthprogress.c TERMforceemacsdotEnqueuing %s at depth %d Queue count %d, maxcount %d. Dequeuing %s at depth %d Queue count %d, maxcount %d. %s: %s. Already downloaded "%s", reusing it from "%s". Not descending further; at depth %d, max. %d. url_parsed != NULLrecur.cRemoving file due to %s in recursive_retrieve(): Removing %s. Removing %s since it should be rejected. unlink: %s Deciding whether to enqueue "%s". Already on the black list. Not following non-HTTP schemes. It doesn't really look like a relative link. The domain was not accepted. Going to "%s" would escape "%s" with no_parent on. %s (%s) is excluded/not-included. htmlhtm%s (%s) does not match acc/rej rules. This is not the same hostname as the parent's (%s and %s). Not following %s because robots.txt forbids it. Decided to load it. Decided NOT to load it. orig_parsed != NULLrecur.cnew_parsed != NULLrecur.cRedirection "%s" failed the test. /index.htmlfile != NULLrecur.cApparently %s has been removed. Scanning %s (from %s) will convert url %s to local %s will convert url %s to complete Converted %d files in %.2f seconds. wgetj == cntres.c!EOL (p)res.cIgnoring malformed line %duser-agentallowdisallowIgnoring unknown field at line %dCannot open %s: %s%s path %s because of rule `%s'. /robots.txtLoading robots.txt; please ignore errors. deferring a %ld ms sleep (%ld/%ld) until later. sleeping %ld ms msecs >= 0retr.cbytes >= 0retr.c%s: %s. Could not find proxy host. Error parsing proxy URL %s: %s. Error in proxy URL %s: Must be HTTP. htmlhtmmynewloc != NULLretr.c%s: %s. %d redirections exceeded. %s: Redirection cycle detected. Removing file due to --delete-after in retrieve_from_file(): Removing %s. unlink: %s Giving up. Retrying. sleep_between_retrievals: norm=%ld,fuzz=%ld,sleep=%d p2 - newstr == newlenurl.cp2 - newstr == newlenurl.c/?@ftp://%shttp://%s:/;?#/;?#;?#?##*p == 0url.cerror_code >= 0 && error_code < ARRAY_SIZE (parse_errors)url.c%s: %s Loaded %s (size %ld). %s: Invalid URL %s: %s %s.%d%s.%d%s.%dRemoving %s because of directory danger! %s: %s%s/%s%s%s%s%s%s%s?%s/%s?;#scheme_str != NULLurl.cp - result == sizeurl.chttp_proxyftp_proxyConverting %s... nothing to do. Cannot convert links in %s: %s Unable to delete `%s': %s wbCannot convert links in %s: %s Something strange is going on. Please investigate.Skipping %s at position %d. TO_RELATIVE: %s to %s at position %d in %s. TO_COMPLETE: to %s at position %d in %s. %d-%d *s1 != '/'url.c../orig.origCannot back up %s as %s: %s %d; URL=%sto - newname == fsqlenurl.c%s: %s: Not enough memory. mallocreallocstrdup%02d:%02d:%02d%04d-%02d-%02d %02d:%02d:%02dwget-logforkContinuing in background, pid %d. Output will be written to `%s'. /dev/nullr/dev/nullw/dev/nullwutime(%s): %s Unlinking %s (symlink). Failed to unlink symlink `%s': %s %s.%d00<0H0T0`0l0x00000000000000 0,080D0P0\0h0t0000000000000~0{0x(0u40r@0oL0lX0id0fp0c|0`0]0Z0W0T0Q0N0K0H0E0B0? 0<09$06003<00H0-T0*`0'l0$x0!0000000 0 00000 0,080D0P0\0h0t000000000000000(040@0L0X0d0p0 C DH#  \ oo4oL55 ooH@ܐܘܠܨܸܰahatb b$b(b,b0b4b8b<b@bDbHbLdPdTdXd\d`dddhdldpdtdxd| $(,048<@AABEACEACTADADAADDAGOAIDAIMAIRALLALPAMAMYANANAANDANNANTANYAPEAPSAPTARCAREARKARMARTASASHASKATATEAUGAUKAVEAWEAWKAWLAWNAXAYEBADBAGBAHBAMBANBARBATBAYBEBEDBEEBEGBENBETBEYBIBBIDBIGBINBITBOBBOGBONBOOBOPBOWBOYBUBBUDBUGBUMBUNBUSBUTBUYBYBYECABCALCAMCANCAPCARCATCAWCODCOGCOLCONCOOCOPCOTCOWCOYCRYCUBCUECUPCURCUTDABDADDAMDANDARDAYDEEDELDENDESDEWDIDDIEDIGDINDIPDODOEDOGDONDOTDOWDRYDUBDUDDUEDUGDUNEAREATEDEELEGGEGOELIELKELMELYEMENDESTETCEVAEVEEWEEYEFADFANFARFATFAYFEDFEEFEWFIBFIGFINFIRFITFLOFLYFOEFOGFORFRYFUMFUNFURGABGADGAGGALGAMGAPGASGAYGEEGELGEMGETGIGGILGINGOGOTGUMGUNGUSGUTGUYGYMGYPHAHADHALHAMHANHAPHASHATHAWHAYHEHEMHENHERHEWHEYHIHIDHIMHIPHISHITHOHOBHOCHOEHOGHOPHOTHOWHUBHUEHUGHUHHUMHUTIICYIDAIFIKEILLINKINNIOIONIQIRAIREIRKISITITSIVYJABJAGJAMJANJARJAWJAYJETJIGJIMJOJOBJOEJOGJOTJOYJUGJUTKAYKEGKENKEYKIDKIMKINKITLALABLACLADLAGLAMLAPLAWLAYLEALEDLEELEGLENLEOLETLEWLIDLIELINLIPLITLOLOBLOGLOPLOSLOTLOULOWLOYLUGLYEMAMACMADMAEMANMAOMAPMATMAWMAYMEMEGMELMENMETMEWMIDMINMITMOBMODMOEMOOMOPMOSMOTMOWMUDMUGMUMMYNABNAGNANNAPNATNAYNENEDNEENETNEWNIBNILNIPNITNONOBNODNONNORNOTNOVNOWNUNUNNUTOOAFOAKOAROATODDODEOFOFFOFTOHOILOKOLDONONEORORBOREORROSOTTOUROUTOVAOWOWEOWLOWNOXPAPADPALPAMPANPAPPARPATPAWPAYPEAPEGPENPEPPERPETPEWPHIPIPIEPINPITPLYPOPODPOEPOPPOTPOWPROPRYPUBPUGPUNPUPPUTQUORAGRAMRANRAPRATRAWRAYREBREDREPRETRIBRIDRIGRIMRIORIPROBRODROERONROTROWROYRUBRUERUGRUMRUNRYESACSADSAGSALSAMSANSAPSATSAWSAYSEASECSEESENSETSEWSHESHYSINSIPSIRSISSITSKISKYSLYSOSOBSODSONSOPSOWSOYSPASPYSUBSUDSUESUMSUNSUPTABTADTAGTANTAPTARTEATEDTEETENTHETHYTICTIETIMTINTIPTOTOETOGTOMTONTOOTOPTOWTOYTRYTUBTUGTUMTUNTWOUNUPUSUSEVANVATVETVIEWADWAGWARWASWAYWEWEBWEDWEEWETWHOWHYWINWITWOKWONWOOWOWWRYWUYAMYAPYAWYEYEAYESYETYOUABEDABELABETABLEABUTACHEACIDACMEACREACTAACTSADAMADDSADENAFARAFROAGEEAHEMAHOYAIDAAIDEAIDSAIRYAJARAKINALANALECALGAALIAALLYALMAALOEALSOALTOALUMALVAAMENAMESAMIDAMMOAMOKAMOSAMRAANDYANEWANNAANNEANTEANTIAQUAARABARCHAREAARGOARIDARMYARTSARTYASIAASKSATOMAUNTAURAAUTOAVERAVIDAVISAVONAVOWAWAYAWRYBABEBABYBACHBACKBADEBAILBAITBAKEBALDBALEBALIBALKBALLBALMBANDBANEBANGBANKBARBBARDBAREBARKBARNBARRBASEBASHBASKBASSBATEBATHBAWDBAWLBEADBEAKBEAMBEANBEARBEATBEAUBECKBEEFBEENBEERBEETBELABELLBELTBENDBENTBERGBERNBERTBESSBESTBETABETHBHOYBIASBIDEBIENBILEBILKBILLBINDBINGBIRDBITEBITSBLABBLATBLEDBLEWBLOBBLOCBLOTBLOWBLUEBLUMBLURBOARBOATBOCABOCKBODEBODYBOGYBOHRBOILBOLDBOLOBOLTBOMBBONABONDBONEBONGBONNBONYBOOKBOOMBOONBOOTBOREBORGBORNBOSEBOSSBOTHBOUTBOWLBOYDBRADBRAEBRAGBRANBRAYBREDBREWBRIGBRIMBROWBUCKBUDDBUFFBULBBULKBULLBUNKBUNTBUOYBURGBURLBURNBURRBURTBURYBUSHBUSSBUSTBUSYBYTECADYCAFECAGECAINCAKECALFCALLCALMCAMECANECANTCARDCARECARLCARRCARTCASECASHCASKCASTCAVECEILCELLCENTCERNCHADCHARCHATCHAWCHEFCHENCHEWCHICCHINCHOUCHOWCHUBCHUGCHUMCITECITYCLADCLAMCLANCLAWCLAYCLODCLOGCLOTCLUBCLUECOALCOATCOCACOCKCOCOCODACODECODYCOEDCOILCOINCOKECOLACOLDCOLTCOMACOMBCOMECOOKCOOLCOONCOOTCORDCORECORKCORNCOSTCOVECOWLCRABCRAGCRAMCRAYCREWCRIBCROWCRUDCUBACUBECUFFCULLCULTCUNYCURBCURDCURECURLCURTCUTSDADEDALEDAMEDANADANEDANGDANKDAREDARKDARNDARTDASHDATADATEDAVEDAVYDAWNDAYSDEADDEAFDEALDEANDEARDEBTDECKDEEDDEEMDEERDEFTDEFYDELLDENTDENYDESKDIALDICEDIEDDIETDIMEDINEDINGDINTDIREDIRTDISCDISHDISKDIVEDOCKDOESDOLEDOLLDOLTDOMEDONEDOOMDOORDORADOSEDOTEDOUGDOURDOVEDOWNDRABDRAGDRAMDRAWDREWDRUBDRUGDRUMDUALDUCKDUCTDUELDUETDUKEDULLDUMBDUNEDUNKDUSKDUSTDUTYEACHEARLEARNEASEEASTEASYEBENECHOEDDYEDENEDGEEDGYEDITEDNAEGANELANELBAELLAELSEEMILEMITEMMAENDSERICEROSEVENEVEREVILEYEDFACEFACTFADEFAILFAINFAIRFAKEFALLFAMEFANGFARMFASTFATEFAWNFEARFEATFEEDFEELFEETFELLFELTFENDFERNFESTFEUDFIEFFIGSFILEFILLFILMFINDFINEFINKFIREFIRMFISHFISKFISTFITSFIVEFLAGFLAKFLAMFLATFLAWFLEAFLEDFLEWFLITFLOCFLOGFLOWFLUBFLUEFOALFOAMFOGYFOILFOLDFOLKFONDFONTFOODFOOLFOOTFORDFOREFORKFORMFORTFOSSFOULFOURFOWLFRAUFRAYFREDFREEFRETFREYFROGFROMFUELFULLFUMEFUNDFUNKFURYFUSEFUSSGAFFGAGEGAILGAINGAITGALAGALEGALLGALTGAMEGANGGARBGARYGASHGATEGAULGAURGAVEGAWKGEARGELDGENEGENTGERMGETSGIBEGIFTGILDGILLGILTGINAGIRDGIRLGISTGIVEGLADGLEEGLENGLIBGLOBGLOMGLOWGLUEGLUMGLUTGOADGOALGOATGOERGOESGOLDGOLFGONEGONGGOODGOOFGOREGORYGOSHGOUTGOWNGRABGRADGRAYGREGGREWGREYGRIDGRIMGRINGRITGROWGRUBGULFGULLGUNKGURUGUSHGUSTGWENGWYNHAAGHAASHACKHAILHAIRHALEHALFHALLHALOHALTHANDHANGHANKHANSHARDHARKHARMHARTHASHHASTHATEHATHHAULHAVEHAWKHAYSHEADHEALHEARHEATHEBEHECKHEEDHEELHEFTHELDHELLHELMHERBHERDHEREHEROHERSHESSHEWNHICKHIDEHIGHHIKEHILLHILTHINDHINTHIREHISSHIVEHOBOHOCKHOFFHOLDHOLEHOLMHOLTHOMEHONEHONKHOODHOOFHOOKHOOTHORNHOSEHOSTHOURHOVEHOWEHOWLHOYTHUCKHUEDHUFFHUGEHUGHHUGOHULKHULLHUNKHUNTHURDHURLHURTHUSHHYDEHYMNIBISICONIDEAIDLEIFFYINCAINCHINTOIONSIOTAIOWAIRISIRMAIRONISLEITCHITEMIVANJACKJADEJAILJAKEJANEJAVAJEANJEFFJERKJESSJESTJIBEJILLJILTJIVEJOANJOBSJOCKJOELJOEYJOHNJOINJOKEJOLTJOVEJUDDJUDEJUDOJUDYJUJUJUKEJULYJUNEJUNKJUNOJURYJUSTJUTEKAHNKALEKANEKANTKARLKATEKEELKEENKENOKENTKERNKERRKEYSKICKKILLKINDKINGKIRKKISSKITEKLANKNEEKNEWKNITKNOBKNOTKNOWKOCHKONGKUDOKURDKURTKYLELACELACKLACYLADYLAIDLAINLAIRLAKELAMBLAMELANDLANELANGLARDLARKLASSLASTLATELAUDLAVALAWNLAWSLAYSLEADLEAFLEAKLEANLEARLEEKLEERLEFTLENDLENSLENTLEONLESKLESSLESTLETSLIARLICELICKLIEDLIENLIESLIEULIFELIFTLIKELILALILTLILYLIMALIMBLIMELINDLINELINKLINTLIONLISALISTLIVELOADLOAFLOAMLOANLOCKLOFTLOGELOISLOLALONELONGLOOKLOONLOOTLORDLORELOSELOSSLOSTLOUDLOVELOWELUCKLUCYLUGELUKELULULUNDLUNGLURALURELURKLUSHLUSTLYLELYNNLYONLYRAMACEMADEMAGIMAIDMAILMAINMAKEMALEMALIMALLMALTMANAMANNMANYMARCMAREMARKMARSMARTMARYMASHMASKMASSMASTMATEMATHMAULMAYOMEADMEALMEANMEATMEEKMEETMELDMELTMEMOMENDMENUMERTMESHMESSMICEMIKEMILDMILEMILKMILLMILTMIMIMINDMINEMINIMINKMINTMIREMISSMISTMITEMITTMOANMOATMOCKMODEMOLDMOLEMOLLMOLTMONAMONKMONTMOODMOONMOORMOOTMOREMORNMORTMOSSMOSTMOTHMOVEMUCHMUCKMUDDMUFFMULEMULLMURKMUSHMUSTMUTEMUTTMYRAMYTHNAGYNAILNAIRNAMENARYNASHNAVENAVYNEALNEARNEATNECKNEEDNEILNELLNEONNERONESSNESTNEWSNEWTNIBSNICENICKNILENINANINENOAHNODENOELNOLLNONENOOKNOONNORMNOSENOTENOUNNOVANUDENULLNUMBOATHOBEYOBOEODINOHIOOILYOINTOKAYOLAFOLDYOLGAOLINOMANOMENOMITONCEONESONLYONTOONUSORALORGYOSLOOTISOTTOOUCHOUSTOUTSOVALOVENOVEROWLYOWNSQUADQUITQUODRACERACKRACYRAFTRAGERAIDRAILRAINRAKERANKRANTRARERASHRATERAVERAYSREADREALREAMREARRECKREEDREEFREEKREELREIDREINRENARENDRENTRESTRICERICHRICKRIDERIFTRILLRIMERINGRINKRISERISKRITEROADROAMROARROBEROCKRODEROILROLLROMEROODROOFROOKROOMROOTROSAROSEROSSROSYROTHROUTROVEROWEROWSRUBERUBYRUDERUDYRUINRULERUNGRUNSRUNTRUSERUSHRUSKRUSSRUSTRUTHSACKSAFESAGESAIDSAILSALESALKSALTSAMESANDSANESANGSANKSARASAULSAVESAYSSCANSCARSCATSCOTSEALSEAMSEARSEATSEEDSEEKSEEMSEENSEESSELFSELLSENDSENTSETSSEWNSHAGSHAMSHAWSHAYSHEDSHIMSHINSHODSHOESHOTSHOWSHUNSHUTSICKSIDESIFTSIGHSIGNSILKSILLSILOSILTSINESINGSINKSIRESITESITSSITUSKATSKEWSKIDSKIMSKINSKITSLABSLAMSLATSLAYSLEDSLEWSLIDSLIMSLITSLOBSLOGSLOTSLOWSLUGSLUMSLURSMOGSMUGSNAGSNOBSNOWSNUBSNUGSOAKSOARSOCKSODASOFASOFTSOILSOLDSOMESONGSOONSOOTSORESORTSOULSOURSOWNSTABSTAGSTANSTARSTAYSTEMSTEWSTIRSTOWSTUBSTUNSUCHSUDSSUITSULKSUMSSUNGSUNKSURESURFSWABSWAGSWAMSWANSWATSWAYSWIMSWUMTACKTACTTAILTAKETALETALKTALLTANKTASKTATETAUTTEALTEAMTEARTECHTEEMTEENTEETTELLTENDTENTTERMTERNTESSTESTTHANTHATTHEETHEMTHENTHEYTHINTHISTHUDTHUGTICKTIDETIDYTIEDTIERTILETILLTILTTIMETINATINETINTTINYTIRETOADTOGOTOILTOLDTOLLTONETONGTONYTOOKTOOLTOOTTORETORNTOTETOURTOUTTOWNTRAGTRAMTRAYTREETREKTRIGTRIMTRIOTRODTROTTROYTRUETUBATUBETUCKTUFTTUNATUNETUNGTURFTURNTUSKTWIGTWINTWITULANUNITURGEUSEDUSERUSESUTAHVAILVAINVALEVARYVASEVASTVEALVEDAVEILVEINVENDVENTVERBVERYVETOVICEVIEWVINEVISEVOIDVOLTVOTEWACKWADEWAGEWAILWAITWAKEWALEWALKWALLWALTWANDWANEWANGWANTWARDWARMWARNWARTWASHWASTWATSWATTWAVEWAVYWAYSWEAKWEALWEANWEARWEEDWEEKWEIRWELDWELLWELTWENTWEREWERTWESTWHAMWHATWHEEWHENWHETWHOAWHOMWICKWIFEWILDWILLWINDWINEWINGWINKWINOWIREWISEWISHWITHWOLFWONTWOODWOOLWORDWOREWORKWORMWORNWOVEWRITWYNNYALEYANGYANKYARDYARNYAWLYAWNYEAHYEARYELLYOGAYOKE?kkkkkkkkkkkkkkk\kll llll$l,l4l8lDlLlPlT lX l\ ld ll lp ltlxl|lllllllx(x8xHxXABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/xxx $lxhdXhdhdhd jk g(hd0Xhd<hdL$hdTj\hddhdpkH|pވ4lxސm|ޜ jިj޴k,l8lxDhd<lxhdkhhdq<$hd4r@<|hdLtkXkdkppk|hdߌ@lxߘ0l߬kHߴhdm|(kHkH\krdhd hdhdlxj$LkH4hdDliP`kXsdkpk|hdm|hdjs|k(lxhdhdHhdhd,kHhdhd hd, hd4o(<hdLjThd`slhdto(|o(bKckdxx$F0h8EHXm`l|pqrL$s4SDHPXNhvpVxAaBCPDeX ,g4<DP\GhI|ilnOoYQR T$t,U8@YLwTL$0PPX\`dP,|permanentnonpermanent.com.edu.net.org.gov.mil.intTRUEFALSETRUEFALSE/.abwb :JanFebMarAprMayJunJulAugSepOctNovDec(nil)HEADGETPragma: no-cache Connection: Keep-Alive */*ProxyHTTPabwbacceptaddhostdiralwaysrestbackgroundbackupconvertedbackupsbasebindaddresscachecontinueconvertlinkscookiescutdirsdebugdeleteafterdirprefixdirstructdomainsdotbytesdotsinlinedotspacingdotstyleexcludedirectoriesexcludedomainsfollowftpfollowtagsforcehtmlftpproxyglobheaderhtmlextensionhtmlifyhttpkeepalivehttppasswdhttpproxyhttpsproxyhttpuserignorelengthignoretagsincludedirectoriesinputkilllongerlimitrateloadcookieslogfileloginmirrornetrcnoclobbernoparentnoproxynumtriesoutputdocumentpagerequisitespassiveftppasswdprogressproxypasswdproxyuserquietquotarandomwaitreclevelrecursiverefererrejectrelativeonlyremovelistingretrsymlinksrobotssavecookiessaveheadersserverresponsespanhostsspidertimeouttimestampingtriesuseproxyuseragentverbosewaitwaitretryawbackgroundbackup-convertedcontinueconvert-linksdebugdelete-afterdont-remove-listingfollow-ftpforce-directoriesforce-hierforce-htmlhelphtml-extensionignore-lengthmirrorno-clobberno-directoriesno-host-directoriesno-host-lookupno-http-keep-aliveno-parentnon-verbosepassive-ftppage-requisitesquietrandom-waitrecursiverelativeretr-symlinkssave-headersserver-responsespan-hostsspidertimestampingverboseversionacceptappend-outputbackupsbasebind-addresscachecookiescut-dirsdirectory-prefixdomainsdot-styleexecuteexclude-directoriesexclude-domainsfollow-tagsglobheaderhtmlifyhttp-passwdhttp-userignore-tagsinclude-directoriesinput-filelevellimit-rateload-cookiesnooutput-documentoutput-fileprogressproxyproxy-passwdproxy-userquotarejectsave-cookiestimeouttriesuser-agentrefereruse-proxywaitwaitretryhpVqvdkKsxmNWrHSLcFbEY:G:g:T:U:O:l:n:i:o:a:t:D:A:R:P:B:e:Q:X:I:w:C:hpVqvdkKsxmNWrHSLcFbEY:G:g:T:U:O:l:n:i:o:a:t:D:A:R:P:B:e:Q:X:I:w:C:solaris2.8abwbSIGHUPSIGUSR1WTF?!.netrcloginpasswordmacdefaccountdotbarB/sK/sM/sG/s--delete-afterrecursive rejection criteriaAllowingRejectingB/sKB/sMB/sGB/s%7.2f %s%.2f %shttp://ftp://No errorUnsupported schemeEmpty hostBad port numberInvalid user name/index.html/index.html*password*11.8.2cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)limits.h 1.51 99/10/08 SMI@(#)limits_iso.h 1.1 99/08/09 SMI@(#)int_limits.h 1.6 99/08/06 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)socket.h 1.54 01/03/12 SMI@(#)uio.h 1.29 97/06/29 SMI@(#)netconfig.h 1.20 99/04/27 SMI@(#)in.h 1.31 00/10/28 SMI@(#)stream.h 1.86 00/10/23 SMI@(#)vnode.h 1.85 99/07/30 SMI@(#)t_lock.h 1.45 98/02/01 SMI@(#)machlock.h 1.21 00/04/27 SMI@(#)param.h 1.76 00/02/14 SMI@(#)mutex.h 1.20 98/02/01 SMI@(#)rwlock.h 1.9 98/02/18 SMI@(#)semaphore.h 1.5 98/02/01 SMI@(#)condvar.h 1.13 01/03/15 SMI@(#)cred.h 1.21 97/01/09 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)seg_enum.h 1.3 95/12/22 SMI@(#)poll.h 1.28 98/11/23 SMI@(#)strmdep.h 1.10 98/01/06 SMI@(#)model.h 1.20 97/09/22 SMI@(#)strft.h 1.2 00/10/23 SMI@(#)byteorder.h 1.14 98/04/19 SMI@(#)un.h 1.9 96/07/12 SMI@(#)if_dl.h 1.7 98/01/06 SMI@(#)netdb.h 1.25 01/05/08 SMI@(#)inet.h 1.18 01/01/16 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)socket.h 1.54 01/03/12 SMI@(#)uio.h 1.29 97/06/29 SMI@(#)netconfig.h 1.20 99/04/27 SMI@(#)in.h 1.31 00/10/28 SMI@(#)stream.h 1.86 00/10/23 SMI@(#)vnode.h 1.85 99/07/30 SMI@(#)t_lock.h 1.45 98/02/01 SMI@(#)machlock.h 1.21 00/04/27 SMI@(#)param.h 1.76 00/02/14 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)mutex.h 1.20 98/02/01 SMI@(#)rwlock.h 1.9 98/02/18 SMI@(#)semaphore.h 1.5 98/02/01 SMI@(#)condvar.h 1.13 01/03/15 SMI@(#)cred.h 1.21 97/01/09 SMI@(#)seg_enum.h 1.3 95/12/22 SMI@(#)poll.h 1.28 98/11/23 SMI@(#)strmdep.h 1.10 98/01/06 SMI@(#)model.h 1.20 97/09/22 SMI@(#)strft.h 1.2 00/10/23 SMI@(#)byteorder.h 1.14 98/04/19 SMI@(#)un.h 1.9 96/07/12 SMI@(#)if_dl.h 1.7 98/01/06 SMI@(#)inet.h 1.18 01/01/16 SMI@(#)netdb.h 1.25 01/05/08 SMI@(#)utsname.h 1.26 98/12/03 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)socket.h 1.54 01/03/12 SMI@(#)uio.h 1.29 97/06/29 SMI@(#)netconfig.h 1.20 99/04/27 SMI@(#)in.h 1.31 00/10/28 SMI@(#)stream.h 1.86 00/10/23 SMI@(#)vnode.h 1.85 99/07/30 SMI@(#)t_lock.h 1.45 98/02/01 SMI@(#)machlock.h 1.21 00/04/27 SMI@(#)param.h 1.76 00/02/14 SMI@(#)mutex.h 1.20 98/02/01 SMI@(#)rwlock.h 1.9 98/02/18 SMI@(#)semaphore.h 1.5 98/02/01 SMI@(#)condvar.h 1.13 01/03/15 SMI@(#)cred.h 1.21 97/01/09 SMI@(#)seg_enum.h 1.3 95/12/22 SMI@(#)poll.h 1.28 98/11/23 SMI@(#)strmdep.h 1.10 98/01/06 SMI@(#)model.h 1.20 97/09/22 SMI@(#)strft.h 1.2 00/10/23 SMI@(#)byteorder.h 1.14 98/04/19 SMI@(#)un.h 1.9 96/07/12 SMI@(#)if_dl.h 1.7 98/01/06 SMI@(#)inet.h 1.18 01/01/16 SMI@(#)pwd.h 1.19 96/03/12 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)stdarg.h 1.45 99/08/10 SMI@(#)stdarg_iso.h 1.1 99/08/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)signal.h 1.38 99/08/10 SMI@(#)signal_iso.h 1.1 99/08/09 SMI@(#)signal_iso.h 1.1 99/08/09 SMI@(#)signal.h 1.54 99/07/26 SMI@(#)locale.h 1.19 99/08/10 SMI@(#)locale_iso.h 1.1 99/08/09 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)md5.h 1.1 99/07/02 SMI@(#)md5.h 1.5 99/07/05 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)signal.h 1.38 99/08/10 SMI@(#)signal_iso.h 1.1 99/08/09 SMI@(#)signal_iso.h 1.1 99/08/09 SMI@(#)signal.h 1.54 99/07/26 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)libintl.h 1.12 97/08/20 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11@(#)alloca.h 1.15 99/03/11 SMI@(#)types.h 1.68 02/06/10 SMI@(#)isa_defs.h 1.20 99/05/04 SMI@(#)feature_tests.h 1.18 99/07/26 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.6 97/08/20 SMI@(#)select.h 1.16 98/04/27 SMI@(#)time.h 2.66 01/01/17 SMI@(#)time.h 1.39 99/08/10 SMI@(#)time_iso.h 1.1 99/08/09 SMI@(#)time_impl.h 1.5 99/10/05 SMI@(#)stdio.h 1.78 99/12/08 SMI@(#)stdio_iso.h 1.2 99/10/25 SMI@(#)va_list.h 1.12 99/05/04 SMI@(#)stdio_tag.h 1.3 98/04/20 SMI@(#)stdio_impl.h 1.8 99/06/10 SMI@(#)stdlib.h 1.47 99/11/03 SMI@(#)stdlib_iso.h 1.2 99/12/21 SMI@(#)wait.h 1.21 97/04/08 SMI@(#)resource.h 1.25 98/06/30 SMI@(#)siginfo.h 1.54 98/03/27 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.20 00/02/14 SMI@(#)string.h 1.24 99/08/10 SMI@(#)string_iso.h 1.2 99/11/09 SMI@(#)unistd.h 1.58 99/11/11 SMI@(#)unistd.h 1.37 98/10/28 SMI@(#)mman.h 1.38 99/05/19 SMI@(#)pwd.h 1.19 96/03/12 SMI@(#)limits.h 1.51 99/10/08 SMI@(#)limits_iso.h 1.1 99/08/09 SMI@(#)int_limits.h 1.6 99/08/06 SMI@(#)utime.h 1.8 92/07/14 SMI@(#)utime.h 1.9 97/08/12 SMI@(#)errno.h 1.16 99/07/26 SMI@(#)errno.h 1.20 00/02/14 SMI@(#)fcntl.h 1.14 97/12/05 SMI@(#)stat.h 1.2 99/05/19 SMI@(#)stat_impl.h 1.1 99/05/04 SMI@(#)fcntl.h 1.45 98/07/17 SMI@(#)assert.h 1.9 92/07/14 SMI@(#)ioctl.h 1.9 92/07/14 SMI@(#)termios.h 1.6 92/07/14 SMI@(#)termios.h 1.38 98/02/20 SMI@(#)ttydev.h 1.7 92/07/14 SMI@(#)libintl.h 1.12 97/08/20 SMIacomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11cg: Sun WorkShop 6 update 1 Compiler Common 6.1 2000/09/11acomp: Sun WorkShop 6 update 1 C 5.2 2000/09/11ld: Software Generation Utilities - Solaris Link Editors: 5.8-1.273.interp.hash.dynsym.dynstr.SUNW_version.rela.ex_shared.rela.cpp_finidata.rela.data.rela.bss.rela.plt.text.init.fini.exception_ranges.rodata.rodata1.got.plt.dynamic.ex_shared.cpp_finidata.data.data1.bss.symtab.strtab.stab.index.comment.shstrtab.stab.indexstr  t  \ \"##o44-B550 =B55  PB55  [B55$ eB55L o;H;HuCCP{DHDHDDDD JJ^VDDHH ( ,tt 6 hF 07070100233249000081ed00002713000027100000000154401e03000282e00000013800000c3900000000000000000000002700000000root/opt/csw/libexec/pkgutil/wget-i386ELF=4H4 (44^E^E`E`E\/h(G(G/usr/lib/ld.so.1a_  #%()*+-/1345678:;<>@ABDEFGHIJLOPQSTUWXYZ\^_`bdfhklnoprstvwxz{~    !"$&')+,./03678:;=?ABCDGIJLOPRSTVXY[] !"$&',.029=?CKMNRV[]acegijmquy|}  #%(*-12459<>@EFHKMNQUWZ\^x8 D{ f (f : OȢ X5 bxx;L (;8 <t 0& x= x: d 7X 5Q D M(@ \j i̼ sX8xt n < 8=:  }   ĻF # / ( 89Q -܍ @D R ZT< o<! { + B ` H;h=P :Q x<X= l6 ~a X9 -xDw 8B =b9 M@_;i w h(< : gW H:9X: 2 9  ` C e2 t; $7,Y <8 DhK@ Zaw g:n zV 4 A6  8; |V o7y 9h8Q\ $,As 5p Ip=} Sq `H8f / sc (:8f  # h9;\ `9 , =7L ;%<,h;3T E;OdG YE _:f` mv |$ \ ! 8% $H<@x (-s } 88 [ x{ ( 3 =\@ K U,A mf  =g 8<TK L  ? + V 6ı/ EC OH=T<[ jf( C ($ 7,    X;:; h<>" 8 ; 6 X< & " غ , 4 5 ( C l^ X 8^ 9e <l Y 8  PK >S (   ԣ Q x: 7 < 8  B ( 9 > x9F (T  [ :d =j Z s `E +s lXr 4w : < @' J ` 8  H>|  9" f  2 887 = @ 0 O h| X =W h ,F o (=u $ ; ; p  Q ` @ lE<  + h: h9 =o  Q  # / 5 3 C tv U ^E \ 0!a Z q (8x |[ 6" X[ ; \i) 49 : A g h7 ) Xi  ; $ X7+ => 9 j B 8 N 89T Y 7_ HC v 8~  8  ! va  , 8 H7 u `   tgN #7-(G 6YG F;M4h \hc? k9q8x\|(  9  c :H9<0 =9@) ؁z (& <9 6 40:X2 P;W7](Gf  y(9<5 X=x7y B 78h6 j dw L  :t<x* .958<?8:GܕW localtimecloseportrbuf_initialized_prbuf_uninitializepretty_print_addressftp_listurl_errorglobal_download_countgetpwuid__umoddi3strrchrfile_exists_pfreopenversion_stringget_urls_fileget_contentsioctlrewrite_shorthand_urlftp_get_listingfree_keys_and_valuesexitset_progress_implementationgen_md5_update_environslist_containsdatetime_strsepstringfreecount_characcept_domainmap_html_tagsopengetenvscheme_disablehttp_loopconvert_linksxrealloc_realhash_table_destroyxmalloc_realencode_stringstrncmpmemmovewtimer_elapsedretrieve_from_filehtml_quote_stringftp_pwdfile_non_directory_pgetopt_longinitializeftp_process_typehash_table_containsgmtimegettimeofday_finiinet_ntoafree_urlposstrpbrklog_set_save_contextprintwhatres_parse_from_filefprintfhash_table_putacceptportmaincookies_cleanupftp_last_resplineinet_addrwtimer_deletestring_set_containsopterrMD5Initftp_size_sch_tolowerrbuf_peekstrtokfflushstrtolcleanup_html_urlstatsufmatchdownloaded_filesuffixhas_wildcards_pread_file_freeconnectprogress_updatecleanupoptargmake_directorysave_cookiesstrcatremove_linkhash_table_map__udivdi3bindportmake_nocase_string_hash_tablefwriteretrieve_urlslist_appendredirect_requestgetsocknamerecursive_cleanupqsortmemcpysearch_netrctest_socket_openscheme_default_portlogprintfftp_responsewritexstrdup_realrandom_numbersymlinktimenetrc_listrbuf_read_bufferful_initoptoptfilenovsnprintfacceptablehost_cleanupheader_existsrandselectsleep_between_retrievalsbindtextdomainsignalgetuidres_retrieve_filesetlocaleuri_mergeireadmemsetgetopthash_table_newlookup_hostnumber_to_stringheader_strdupcalculate_skey_responseexec_nameMD5Finalconnect_to_manysetvalres_match_pathstrncasecmp_sch_istableload_cookiesres_parseurl_stringcalc_rateurl_full_pathurl_parseaddress_list_set_faultydownloaded_increaseslist_nreversemkdirconnect_to_oneread_filehash_table_removelogflushftp_parse_lsnumdigitlog_closentohsforktouchmake_string_hash_tabledownloaded_exceeds_quotamatch_tailno_proxy_matchselect_fdmmapmallocrotate_backupsprogress_handle_sigwinch__eprintflegiblebindstring_cmpwtimer_newaddress_list_get_boundsstrptimereadlinklogputssleep_mcountread_whole_lineperroratexitusleephttp_cleanupftp_indexgetproxyget_urls_htmladdress_list_releaseabortunlinksetsidprogress_schedule_redirectstrchrftp_typeftp_pasvset_connection_host_nameh_errnohash_table_countmkalldirsgen_md5_finishmktimesetsockoptrenameurl_set_fileaddress_list_match_alldownloaded_files_freesprintfset_cookie_header_cb__flsbufsrandtime_str_GLOBAL_OFFSET_TABLE_parse_linevalid_progress_implementation_pconvert_all_linksfgetcreallocskip_lwsheader_getftp_cwdsscanf__deregister_frame_infolog_initftruncaterbuf_initializereadfree_vecurl_skip_unameftp_loopdebug_logprintfiwritefgetsstring_hashgethostbynamevfprintfwtimer_allocate_lib_versiongen_md5_initaccdirhash_table_getconaddrurl_filenamewtimer_resetstrstrfputs_startgen_md5_context_sizelegible_very_longslist_prependregister_download_etext_iobprogress_finishaccepthttp_atotm_cleanupretr_rate_sch_toupperretrieve_treeurl_has_scheme_nunamestring_set_addrbuf_discardgettextunique_namefree_netrctextdomain__register_frame_infostrcmplog_set_flushftp_syststrdupdelimfopen_endhtonldetermine_screen_widthasctimehash_table_get_pairwtimer_granularityenvironregister_htmlerrnofrontcmpurl_set_dirhtonsregister_redirectionfork_to_backgroundmerge_vecsftp_retrrbuf_flush__fpstarthome_dirprogress_createisattyheader_processoptindherrmsgchmodlistenoptstring_set_freeres_cleanupfnmatchlstatfclosestrdupftp_restaccessrewindlog_request_redirect_outputres_get_specsftp_portutimeaddress_list_copy_one_PROCEDURE_LINKAGE_TABLE___iobbuild_cookies_requestprintfclose_DYNAMICres_register_specsmemchrxstrdup_lowermunmapsocketfile_mergeftp_loginstrerrorstrcasecmpslist_freeheader_extract_numberurl_scheme_getopt_internalurl_freeatoi_edatafstathash_table_clearstrcpyMD5Updatestrncpyurl_skip_schemelibmd5.so.1SUNW_1.1libsocket.so.1SUNW_0.7libnsl.so.1SUNW_0.7libc.so.1SUNW_1.1libmd5.so.1libsocket.so.1libnsl.so.1libc.so.1W '= cl (= { (= '= |EE$GD( "0DlEpEtE+xEEEE%EEEMEEUEGEPE}EEEeEE3EEEnEEhEEEEEEQErEE)EgF*FJF F9F=FFF[ F2$F=(Fw,F0FL4FO8FэYveD$+S6W;:vD;P舃 EPEPW5tՃt^EPVЃt@Mt B$A$EB$F$R=̩t/hEF$F$WrEVu5tX=̩tKv vFPPPv ~tPvv6h!e[^_ÐUWVSt.PEPuUtF$B$E>эYv赁D$+S6W;:vD;P؁ jEPW5t'uhh$hh7F$u!W5t蚄u{ Pu5tڃV=̩th9e[^_U,WVSE}]} tuh`hRhh藅Uzu;PM QqUBSWqMA e+u ubjhE PuH;UtPjSWpMucjhE PtuIUM;EUBtPSW.pMA_jhE Puu;+ߍC$+SWV3V=tUBBtM9AAjhE Py]tQtM;tI+ߍC$+SWV3EPhV:ED@u ؐ3{E@}fMf fMm}EUmtUBD@u1B(u!jhU Ru MA e[^_ÐU,WVS]E3uuuuEG> $XEE8@E<]%}"}=};},GEEG|E<]w}"t}=t};t },}t};t}=tEE8@GEEE8@f}t};uEE}=>EGEE8@}"u}EG};t}uGE1GEEb};t}u}`GEUEE8@tGEEGEkEE8@uZ덀}"uGEEGEG};}EE8@tEG EPEPEPEPEPd uM]+]C$+SEPV3VhlPji }tEG3}u F= uEaEP uEPh&;EPph Pj3e[^_ÐUSM8SACt ӐABuA<.uCtvACtӐABuA<.uWCtNACtӐABuA<.u/Ct&ACtӐABu9u 3[ÐU WVS]=̩th^St E PS%A=̩thU RS=̩th3Gw4 HSpt;.tNj.Si;=̩thxSE PptR=̩thJ;.t7эQ} эA;~+‹U |.t3=̩the[^_ÐUuu <ÐUVS]u jtS؃ t/vPu,=̩v3hAvqgCt5vP]u6=̩tYvshAv%gCF C{tSSSKt Se[^ÐU WVSE=tu 3}эYU RvD$+SMQV3:E PD3Pv V5tvtU9U}MEj.EPf`j.V؃uh"hchhzS5tvtU9U} MUEsO=Ee[^_ÐUWSU :/u,BӍCPRugu3e[_ÐUSU]t9Brz t}tru u3t]U WVSu] ppCp p /ЋDžue[^_ÐUWVS]hVj E PSEE H9E}~C E>^ swuIs w u4E@9E ~E H+E@PEPVQEMM E EE H9E|E e[^_ÐUSEU H@Z+؋B+u[ÐUWVS}u EESURVWE;~$+e]א}trjdtEEM9M}DEU@Et$jMQEPStE[$uߋUUM;|}u3`UR$+eEEM9M}|DžxEU@EtTxEPMQEPSft-U2;IL2ED2 x E[$uUUM;|E9Eth,h/hhEwURMQEhWj PUR8E M9M}5]M3~ҋ~ эDE Muы]KEDX EPfaE:U>BBBEE]M9ME||Sэq{ эyEEVRPuUM=AMWs P} E9E}UM;A AM| EE9EjUM A AAE;thChahhuEX[^_ÐU WVSU3ۃE +Pj:Rt?N;M s-F8Gt\PA;M sGu;M r E03e[^_ÐULWVS]hVS^Eu$5PSh`jpjtGEEEЀ:8B@tEċMĀ9B@u}Ċ<#t%E8@tEċEĀ8t F@uMĉM9t#E8@uEċ}Ā?t F@tEĉE9E|8t$E8@tEċMĀ9t F@uUĀ:t$E8@uEċ}Ā?t F@t;UEĀ8t#E8@tEċMĀ9t F@u}ĉ}?t#E8@uEċEĀ8t F@tMĉM9M9t"E8@tEċ}Ā?t F@uEĉE8t%E8@uEċMĀ9t F@tU9US:t#E8@tEċ}Ā?t F@uEĉE܀8t%E8@uEċ}Ā?t F@tEĉE9E8t$E8@tEċ}Ā?t F@uEĉEԀ8t%E8@uEċ}Ā?t F@tEĉE9E+UUȍUÙ8t$E8@tEċ}Ā?t F@uUċэ\ ;vCE8@tK;]v CF@u{EEPUR<]MAS}W)]UB MQ}W]UB}uu࿃uB MQu}WtUBPMy t}GuEP\U tIJ}PhEPt U9BrBR MQ}WEPdEURe[^_U WVS}u] te{tVC;trKs sPƒ{ tPs€?.uPWhVb0F t  [$u3e[^_ÐUVSutXPoD=̩tVhjjthV؃ u.5 PVh`PjShj!\PhSy0ShxSh`5tn C t+5PVh>Pj; S}+5bPVh)Pj =̩thAge[^ÐUVS]u S5tlS t^$V,u3e[^ÐUtt(jhbPm5t itUWVSu} E?t'*O[ \tJ9tPE%t/tAE!.;} t) /EuF8Et?.u;} tEt/t֊FEt?/tÀ?u?tFG?t*t݄]Eu \uEN?t[tE8uE$PWVbG?uXLEt.u;} 8Et /(օt,Bt%t<]ut:u[EFu\uF]u}t!:GF?3e[^_ÐUU:t#<*t /th"hhqhw^[F~t8/u.@8u]@=̩t.h@=̩tVShbރ=ĩuSh|jSUR-wh[t 7tnIhZjh`yPj0EP=̩tURhEP hZj9hPj!0UR:=̩tEPheUR hZjEp hPj UR=̩tEPhUR=ĩu*hF h Pj0 EԉEe }U :=t!=ĩuEp$hjU REp$]SH1]ătw txnughZjh`pPj0UR=̩tEPhURs=ĩuhFPj }=\T=ĩuhjuV]S(G]=($LhZjh`yPj0EP=̩URhhZjAhPj)0URB=̩tEPhmURRhZjhhZjhPj0fEfUƒjSV-E=EPy=̩tURhEPWPPSVY_Ph Pj  E=ĩuh蜿Pj }?=ĩuh@j]S%G]=5$hZjIh`!Pj10URJ=̩tEPhuueUROhZjhhZj5PhNj0UR贾=̩tEPhuURhZjE5lPhZPj 0u}: hZjhlͽPj0EP=̩tURh!uEP 迾=ĩuhSPjc }K}3=ĩuURh{j EP]S&\wt7=Ht{U tsE$h袼PjURȼ=̩tEPhuS( h8PjHE ot$=ĩuhPj }=t9=ĩu0}thZjڿUr$hjEp$]S"&t w tI?7u.IhZjqUr$h苼=ĩuhFPj/ h@ẼEԨ=ĩuh,jj]S*&wYLt 7t~9hZj衾h`yPj艾0UR袺=̩tEPhuSnhZj)hPj0UR*=̩tEPhUuES87hZj豽h:h@脹Pj聿 u諺=ĩuhF?PjO h@ẼU t8}t2}t,+E9Eu$=̩thvE Ẽ}}u@EP u*5Phj褾 Dt UBE$$=ةtU$#hE$c}tPU$޹5CPE$hj UR=̩tEPh9EPu}u0=u'V誹jV謹P賹f σ U tPJPh)Pj& }t0U +EPJPhPj hZjE Ẽ}tzURoJPh衶Pj螼 }t.E+EP;JPhmPjj hOPj_ EPj]SEPURE PVuE j=<E܃jUU +EPE؃ ue]ă=Dt E@t V蜷 V=uE}ux5ڵPU$hsPjp EP虵=̩tURhĻEPn}uP5YPUREPh@Pj0=ĩthZjEPUREP u腵}tUREPh`j耺hkePju UR莴=̩tEPh蹺URbE82tLP}tEPURh`jhӳPj P觴}uEԨuuÍe[^ÐU|WVS]hSbEu$5ʃPShjt3EEEPEt P'UREt PMQE.huV軅Euu=̩tEPht<]t<;tCt<;u;;u}ыu\CuCEPE=̩tPh軈{u"EE=̩t+h[E=̩thsEhj貄E=̩th6UR茂MQ`E u"=̩huV؃u+=̩thEPhURE=̩tMQh4{h jE=̩tPhHLuVԃEh j肃E u,=̩th` EP3ۍU܉UC 4dHMQ7uຫ*+ЍR+؉]hjP+E =̩thrhj赂EE3؃Sނ Ct=<:u;t4CS躂Ct<:u;tCS薂E=̩t'URWVMQEPElPh˅ UU܉}uMMuuEEEEEUREȃ=̩tPhKlhj豁hj袁 hj萁Eu*=̩thMQuVPẼ=̩tPVh ڄE}u3j aEEuuFF3EEԃj (UBEuuFEP~UR Et%P؃MQ~uVcEx[^_ÐU WVS}E ==t =t~hW؃u!5k}PWhj3oS/S~FЃ = w WzBj5W/j!h@|Pj谂 jWJe[^_ÐUWVS]Du?hwS=~u*5|PShjPTU B(POEM A,tP63ۃ}҅t+BPúzuP…tPEPh{W} UR{|tSk|hzhVH}hV:} M q qq h+{PV} hV}E p pp hzPV|0hV|}h/V|Uz tb P{؃s CHClPh2Vj|0{t ssh>hJVF|hR@zPV)| M=tr =t%3hf.hshhyPV{ Ep؃U r rWhV{M A 08/tyVj/| F/FE p hV[{U B 8tyVj/| F/FShV {M9uyVj/V| F/FShVzE8uyVj/| F/FhVzUu-rg PhxPVz *=u!MAuPhVSzyVj { F FS*yE@EZhVzWx =Du Vy V_ze[^_U WVSu] }Å}C2ED EeD E+ڍ;+Ћm+׸!EE[^_ÐUWVS]E ]fEU@E33EEjVURQ?~Ej jEP,H;t+{t{tC{uCC CË Cj j URH;t+{t{tC{uCC CË Cj jEPH;t+{t{tC{uCC CË Cj j!UR0H;t+{t{tC{uCC CË Cj j,EPH;t+{t{tC{uCC CË Cj j7URHC=̩tEPh{Ee[^_ÐU,WVS:$+} ҋ}эD $+܃E PSwMQS%x VVэAPS ]SVE3EEU3UUEEPUM~MߐV苎VjW蓎 MQV蟎E3EEU3UUESEMWh u ue[^_UUM :t;u B:u3ÐUVSu] M3;} 2B;|[^ÐU WVSuDuHu+C$+SWRHuh+PDuPR ShDu+HuPW^h+HuDuHue[^_UWVS]h=huhHuDuLuU<-uPuBU><+uPuE+hut Pu PuLut 8Z=PuusDuHu;t;ht"M Qh;tDuhhH h;E}U 8-uxtڡhHuh;EtcM 4uBPhHu9Dut@;tM Q@DuEHuhh;EuDu;Hut%hM :-uJu.=Puu hh3t -%@ЉLuhU 8-x-t }5LuEEEEFt<=uE!}u]MM EE tILu+PRQru؋+Lu;эA;u]UUE}t^}uX=ht,hM 45$h pPhPqLuэD Luq}hPh>MytF5h6=htoPM Dx-u+E05$h@ooPhPQq7M1M DP5$h6oPhPqLuэD Lu?Uz@;E}M hhn=ht(U t5$hnPhPpLuэD Lu?U::C:9LuэD Lu}tMU EPt@ 3UB }t1hM x-t LuPEP=htjhU x-u+5Lu5$hmPhPo05LuP5$h mPhPboLu@h?"LuLuVMQ/Lu:uht:u>=ht"V5$hAlPhPn5h?x:x:u:t hvhm:t hZh;EuB=ht"V5$h`ylPhP[n5h?E8:u:U hhLuÍe[^_ÐUjuuuu uÐUjjjuu uUSM3һ;sBFv[ÐU WVSu ]j7_EPG@}WG PGGPjwnǍe[^_ÐUS]s'lSl]ÐUWVS]{CEU R3s4׋[]>t/E\6U RU҃u;tF>u3u 3@e[^_ÐUWVS]{CEU R3s4׋[]>t/M\6E PU҃u;;tF>u3҅t)}tM}tBU 3e[^_ÐUWVS]{CEU R3s4׋[]>t6E\6U RU҃t;tF>u3%e[^_UWVSE@EUBM MPtUB@}MQS_ UBPjWlMyu]E;sT^tAPUЋM3q ׃9tET;tAȃ9uVQ;urURie[^_ÐUWVSu~FEVUE P3v׃;t?UTU3E PU҃tE US2;]tC؃;uF E USF9F ~ V|e[^_UWVSEpxU RЋM3q֋AE;t+|3U RMуu;tC؃;u3ۅu 3UBrJ L;tSڃ;tdEM;WMЋM3q փ9tET;9t ;tAȃ9uSQ;]tC؃;ue[^_ÐUS]CPjsBjC ]ÐU WVSEX@<;s2t%EPsVU ҃u;tuۃ;r΍e[^_ÐUE@ ÐUMt +A9uUu uf%Uh,hu=ÐUSM:tA9tڐ+A9u[ÐUu u g%UhhluUWVSu} EPjP3ۃEH;~EEP7uFV谔 ~H=u}Ѐ< uEuÍe[^_US]Suhh6hh$tRP1t(tsPt3]ÐUWVS} IMEU:uEI}xE|Au 7:8:u(]:OIx|Uu 78tu EEU<u3[^_ÐUE=t=t=t=u h hS]ÐUS] u+^{ thhshhS3]UTut(jhP%5TuTuU,WVS} ME@EtP;}s8B@tG;}s B@u9}v)UB8B@tM9}v ]CB@uuu)}E$+e}܃M;U<&tBUMMEu9u+UE8#un@E;%8G39us6LBEU9Us"u%8u8` CBv{E0u!x;ttAE8u<:v?E3u)x;ttAE8u>CEv;E6u%x;ttAE8u &CE~E:u!x;ttAE8u":vOE?u9x;ttBE8uCEM9Ms(u>;uFuEEECU9UC+}NjMAY;}ۃu;^tI~ uS6++SEp0VZU2B MY]CWuVPZ{EUB@ZӃM쐐;}ۃ;tQMy uS1u-SKEp0V ZU2B MY]CuVWPYECC@ƉC}t UE:t:B:ue[^_ÐU WVS]u+u t>t/эA;rVE PRYu̓;u3e[^_ÐU WVSEu E;Ax;u $!BB=5w$3 wE8u.t-t _KE8.-_-'t"thDhh]hjUA :Uu{ :Uhhh]hjf-thhh]hjFAk-uAZV-uIAD-thhh]hjA -u A.tǍe[^_ÐUWVSE u0UEEeEeEEeEEEEE+Pj;뛐>ASWEP/EtEjSWEPE%E8@t!8F;u%B@u搐/uLF;u%E8@t#8F;u%B@u搐>}>u%E8u.t -t_u-F;uR%E8u<.t<-t<_tԉu9u%E8@t#8F;u%B@u搐M8u<.t<-t <_tuUUU}}<=F;u%E8@t"8F;u%B@u搐<"t<'uf3ɉuF;uWuF;uF:tu uu琐>uӉu:F;uERuM8@u$<>t 8F;uB@u>>uu9u]]E}}tEPUR]S}jE@]ȍUUEU҉U+}};}ۃ;]t[}u[PEPE7[PUȍRPEPWR}E ]ȋ]]EUDjEPUREPEUDEPUREPURkUETUT ]] t}tFgEEЋEEԋUU؍~uЅ~&3ҋM]DEDEDIuEE܋UU}]SVEЃ;usuF}uukQEEEEEE}u UR3E PG 40Ou}tEG D0C;_|3e[^_ÐU WVSEP׬EUZZ=̩tMQr hWT}u*uVEp hMPjS3xjUR&=̩tԃMQuv hS뻐EPSK=̩tWURSMq hS jW豮u0=̩tWuv h@{SWM>WM=̩t6heDSj ؋3C3uN URuL+ʉKMQ D CE $S ЈS}uu>/tSUBtXZ MYYÍe[^_ÐU,WVSE3E9itG}U9iu}}uhhhhMEME ;HUR MEME P MITU}AM}|MU9iunE]ÐiusU B M4Lu%EPURM Q4%PEP G} U9itMME ;HPe[^_U WVS} uEPhGW?؃tNVuWjS t7H Ft PwKFt SPo S Fe[^_UWVSu EPhGVtejhdVEt1hSgKthSRKuEuuVEPWe[^_U WVSjhTE P0؃jhYE P hPJ3EPhLE P %8Ct|AB %CuB<;F;F@t BF@u<UB<RB<Lz=MF@t BF@uEPQE PjRzH x hSIjhLE P؃txhSIu^E@Wj,SItGэ| +PhSIu E@߀;ue[^_ÐUVSu] 6Ѓuhh\hhhSVRЍe[^ÐU,WVSu} V؃u'5GPVhj;M3=̩tsVhMEEEEu E}uE=XuuEPh5\u5Xus3w =̩tuVhM}tEUEtPRGS_Ee[^_UXut P G\ut P GU WVS]E jh@SG3%8AttBC%Au;.;CCE8u; uy;tu~qC%E8t\K%E8tGs%E8t2TЍ tu U CU e[^_ÐU WVS]E EjhFSFu;:uCS؀;t}8Vtm3ɋLBCGu;-uNCFtDEC3%FtLBC%Gu;/u CFu30EHC3 LBC%FuEHe[^_ÐUS] hLuFt ]U WVS]u j;S&EЃuэT ;vB8A@tJ;v BA@uRSe[^_UhQuDu E ÐU`udutPdu=̩t5huh`aIÐUVS]u =`ut>hu;PB=̩t5huhI[=duthhihhjusduuhhnhhf5luhu`u=̩tShHe[^ÐUVSE =`uf;luju؃tnS5du&S tM5huJKu?5huA=̩t5huhG#3e[^US]CtP BCt PACt PACCC]ÐUWVSDžtEu&U B,8uh(hihhDžDžxDžl=lt}t DžlDžpDžDžM AA AAAE|u U|lu!|A Pqj|p؃u B|rGj|A PSH jFSi }q=|p ph@?PjEhu=̩tRh_vEDžtMt DžoDžE P(t3эA$+RhxR@DžMt DžU Bt;P $+M qhP:@ Džܩt$эA$+RV@-tэA$+RhV?UB(B,jPPrWu`udDžtiteuhPR@%BMQ؃SP+0S=Dž}t<t u MQ(A,tthPR$DžEp菛MQ ;t8R$+Ep hRU>Džlu Dž=tjMqq q\t}tE0URТҋщ`+ӋEX)``ThtэD BЃtэT tэT tttэT tэT ڃtэ\ эQtэD ڋhtэD ?C@$+܋…uPRuPuPuPtuPuPuPhuPhQVPRhS;@=̩tSh` @t􋍤QX:t􋅠P<:tttR :􋍴Q :эAPSRG 5/9Ph8Pj> 􋍐Q8=̩tPh?=`ut;huuP7P}tPh;8Pj8>DžDžE RS>gDžDžDž d%PdPRЃ8hj~;h V7Pjf;0-8t P8t􋍜Q7􋅐P97=̩tRha==`ut; huu Ghj:56PhDu6Pjr<0I7t P37t􋅜P7􋕐RU6=̩tQh}<=`ut;huu!c=ȩtoэYFPRSPs6  /PU Bub8uha4P虹M Ahr4PzU B 58u!h4P7M A P#U B=̩}=ĩtQhjB:SPhj#:48=ĩtPRhj9u0=Ԩu'Phhu'PhhSM yu(Phh"lE xu&Phh==t$URh(Thu'PhhMt?PhphgtE u3Phtht_luTu#Ph,hQu(uPhh2 hj5t?u t-lthhAhhDžppt Q|B PrtextP2DžM Q􋅐P(1=̩tRhP7=`ut; huuxt7h60Pj4 f15 u351h`50PjE45 jh;1u"BE8@MzCDžxztP0Dž8=cwE=,uU zuM E xthJ/PU Buh'/Ph/Pj5􋍐Q9/=̩tPha5=`ut;huutP/t􋍜Qx/t"j hP/u E U"=Mj.U B,01؃t*hSh/tfhSS/tQM Q,:эYAP2#ЋM A,A,fDE =HM Q=;hJ-PjZ1U B M  t P.t􋅜P-􋕐R%-=̩tQhM3=`ut;huu)3U z$B,0h v,Pjs2tPE-t􋍜Q(-􋅐Pe,=̩tRh2=`ut; huu(sE @U ;Jt P,t􋅜Px,􋕐R+=̩tQh1=`ut;huu/U zt!=tM A=E=ĩh*Pj. =tXPXPj. tk+P,Ph^*Pj[0 5=Ԩt h h'*Pj4.tPhj0hj.t P*DžU%=M A t􋅜P}*􋕐R)=̩tQh/=`u;hu DU B,0w=ةtM A,0wU ztPM A,0*؃5(PU B,0hj. 􋍐Q(=̩tPh.=`ut;huu t􋍜Q)؋E xu0=u'SC*jSE*PL*c σ =ȩtSRjQ+E  PpPR3=tRM qQSPNtU B |ap􋍐Q'=̩tPh-=`utg;huuYR􋍐QI'=̩tPhq-=`ut;huu=Du S( S)=u M A t􋅜Po'U z t*H[^_UWVS]Dž(Dž$DžDžDž4=t(t=puuPCJpuU j*u6F'th%Pj) t ;t]4EPЖ]UR輖44u<uE EEEэqA$+܃=RtxE0h $Pj*U E0eЃ  MtRz Eo Dž,=Щƅ=ԩtGEV0S^%VZfDHPS& u ƅ$u&HPE0&u E$$t)Dž,UxDž(Dž0EUЉ 00Vw|j蹩 =jEP譚\\8Bu3UtPnVS蚛U+uF3e[^_ÐUWVSM] APW< wP0A$PW< wP0COy[^_ÐUWVS|uxutu];S蟲33kkSs} tut Gvǃu?CtO<=u;tFC;t@S5؃;"uCt#<"u;tCt<,u;t C;Vtut1=|ut} t}t }t}uDt PxutP|ut P3.$+܃S.S} эAPU R. Sjh.StuэAPR. Sjho.S}эAPURO. uVS[.VM̉MQ S.S}эAPUR. Sjh-S}эAPUR- VS-VM|Q$ S-Sj }W- Sjh-S|uxэAPRZ- SjhG-Sj |P5- VSD-V]S } ֋} щx=tu+=|u)x}+xD7P =xutэD PySUR5|u5tuM QhV80=xutCэ\hSL5xuS= h S,h"VƍX[^_ÐUVS]3jhSuCE8@uY{tSjh%SuCE8@u.{t(jh,SyuCE8@u{uƍe[^ÐU WVSu}3ۃjhV/uhWE P؃jh,VuhWE P-jh%VuuuWE PV}؋Íe[^_ÐUdut PhU WVS3R>[4kEPu}s{;~e[^_UW3Wh{mȨh}=L h(PTXlph tP蔔t 2}Uh-u"Pt@u3 P?ÐUWS3h؃tX;tSS:u75PS5$hhP+0j Sǒl;؅t=эAP'ShW StW蛖t W3e[_ÐUWVShEPbEu@5 PEP5$h_ PhPAuEPEPSkS u\uuu,WEP5$h PhP u u 0u,WEP5$h PhPs GEPC؃6uEP0e[^_U WVS:hthmy؅tLu$S5$h  PhP SS e[^_ÐU WVS];t-8B@tC;tB@ut#u#Ft CFu_t-tF@u =t3+@PNU ;s_t-t@G;rE 0=u U 2#F@t ֐CB@u;=tE 0 3gCF@t CB@u}ыUD P;v@F@tJ;v F@uBPS聏ЋEe[^_ÐUVS]u tXtTS=t@kVS k(VS5$h` PhP 3e[^ÐUWVS} uEEEEjW躩؃u-Wu5$hs PhPU 3gEPjS蕦SLfEfE tP jFЉEEBEBEB e[^_ÐUS] hS8 t ;1u{u OhS t ;0u {u3(u5$hPhPd 3 E]ÐUVS] u==h S t ;2u{uhS^ t ;1u{u}hS6 t ;0u {u3Xh S t;-u{1u{u +u5$h zPhP\ 3e[^ÐUS] SЃtE-Su5$h` PhP3]ÐUVSu ]h V@tSVut e[^ÐUS]t Pu 1]ÐUWVSu EEt PO=ut >~u~/tVUOEtэYFtU|/uKUt|/t>/uF>/tэPSURW;/ VD;PE8e[^_ÐUSE ]8tP֊P33袕]ÐUWVSE UU8teP茊ރt9>t4EэQ~E|/uDt;ũVU2^UE0Ue[^_ÐU WVSu EE3ۋ΀>iu~nu~fu ~>t3%8Gt\BA9t%Gu;tO9tyuD:=kt tQ=gt$=mt  7/'VEPh P3 Ee[^_ÐU WVS}u 3ҋ΀>t)8CtTPA9t Cu;9t y:=ht3=dt6d=mt =wt>T+d+Q+‹;+‹+"VWh P3 Ee[^_ÐUhu uu3*=t ÐU WVSu >u#ht PhVu0Vu5$h` PhP3htэY3ۃэD PRhVPэ\ h Ch hDe[^_ÐUhu uGt=u ÐUEPu uu3F}t;ب=u ЩUS] S!u.Su5$h PhPb3-tPJS]Uhبu u3u3$=بt=u ÐUS] ;tj SZt/Su5$h` PhP3S?ܩ]UWVSU3ۀ:t8 %8Ft\AB:t %Fu:u;u [^_ÐUS]ӊt&<:t'8A@uBt <:tA@t::u;tj S`u3]ÐUDt PUSU+$vtPtǃ$vǃ(v]ÐUWVSE EU)U=o=u o Poo+4u}~$E PUR$v(v8EPURSE(vo+EƠu$vtRэYE4FPRU$v؃EPURSJU$vlэYU<~YGP9U$vSVPE$v UREPSU$v$v(v"3URURP7E(vU z %u#oPo=~ oe[^_UWS];t=j Suэ| GWS߃;uÍe[_U=Ăt3ȂuPUVS]u tftru=uQ=ĨuH =t=PV=̂t V(=nt Ђe[^ÐUWVSu]8|=̂uEPE P|PJsFtEPE PWS>=u? ;|XS66^3PSk|PS t P=nt Ђh[^_ÐUat PЂUE;nt+un=ЂtnÐUÊ̂ÐUS]=Ău`tru!=uK=Ĩu? =t3EEE]EPpS,t鐋]ÐU VS=̩t?r=Ău1EEEu] SsVte[^ÐUUt? } t PRȂuG5/jȂPhP Pt ̂USȂt PkȂĂ̂3ۃSC~o]ÐUVSo!tytt=t C~3ې+Ë(vt VPC~3;ouЃ=t +Ë(vt VPVe[^ÐUSh 8S5Ԃh vPhPX h S'Ȃu;5PShK .PhPĂ Ŝ]ÐU=ouo2U=ou=̂t oEԂUh jh j h h h U5$h @PWÐU5th P/h@h P h@h` Ph@h` P h@h`Ph@hwPn h@h VPMh@h 8P/ h@h@Ph@h`P h@h PÐUWVSuDžXj/E 0_$uU @$94=f $)h#h"h#h#h#h#h#h#h#h $lh#h$Xh#h!$Dh#h+$05hh5$h=$h!h=$hA$h=$hK$h=$hV$5hhd$h=$hp$h#h~$h#h#|h#hy#hh#he#Th#h$@h#h$,h#h$ojIh#h$h#h$h#h$h#h"h#h!h#h$h#h$|h#h$hh#h`"Th#hJ"@5th$h %Phq%0h%Phq% h&qP jh#h!h#hA$5hh&5hh&{5hh:!g5hh&S5hh2!?5hh&+5hh&5hh&5hh!5hh9 5hh'5hh!5hh '5hh'5hh w5hh$'c5hhR O5hh!;5hh.'yDžX_5hh!5hh!5hh!tPpP5ht%tpu>j5h5$h6'PhPjpt 5hhO'5hhA! 5hhZ'5hhm'5hhs'h; =.$+h=$h!^h=$hK$Nh=$hA$>h#h!$.h=$hV$h#h#h=$hp$eP5$h|'P8h' 5$h'nPj C;5hh'5hh.'5hh'~5hh n5hh ^5hhk N5hhe >5hh'.5hhC 5hh'5hh'M@'h'5$h'`Pw jjhoh#E PV ==u=t0=بu'ب=u =u=ĨЃ=t3=Ĩt*h (P 0j2=Щt3=t*h`(^Px j+=huf=u]5$h(P2h' 5$h'Pj=̨tq=t5' $+3;}EhU 4JthU 4 oCh;|XP5=̩th(5th(<8-uxuD@(=Ht(RPЉDu5<jTxPRP(uE%=u @jj =th8Qjh8Qjjj hfjDž\"ރ>GDždDžh=بt+3F=t3\,lPjhPdP39\ =d;qts=̩th)dh0)2Pj/d t!5QPh>)j htPdtP;tL`P5 R>\`u$5hJ)lPji=بu#= 5=uRP{`)Pj$mPh)Pj t?t-5{zPh)Pj t PA=t=u?&3;}4MC;|\"t38[^_ÐUS]tH,u @,N,P2!h8QS]UXÐUuÐUu uuÐUuu xUWVSu =T5=؂u{؂t\эA$+h`,Shg,W8S xPWuW`>t U:[ tMtURPuߋtPstNEKCCt=6}t3>u.[ t;utCE8uCUX[^_U WVS}E 0t2{u'3s ss jhCCC E 0e[^_ÐUU:t BB:uÐUu' 0h-Su#0Zh-Su# "Sh ./PhP]U WVSu j2\؋39u~uEs0tPSP[ChZ.j jSsÍe[^_UVS]u3ɋCE CS~ ;~C0tB;CtCRs[C+C =ts VS~sWe[^US]U K~ C;~CuRS9s h-js S]UWVSE@EURM щUREjЋэA= } UJ+ȋX3ۋ}GEEE /}fUf fUm]Em=d~h\.h<h-h-zo=cPhn.MQu.}y.GEz.UU;MAEEE]E}f}f f}m]Um;~h.hNh-h-nE[@Eȅ~" }=G}J=E>@EE U BU+;|M]AM4]}W™C;}J K++ʋU[BU3;}} G}@;|͋E]@EUBMQhPh.]SWUэL M } tbEPtXEEPM QRP#E4t$h.]SUэL M0,..MBABfAB A M쐐]CaS/E 5 /+EEEUEų}f}f f}m]Mm +ڍ++Ⱥ4+++Ѕtc~.Mf.AM  } G}.M.AMc~ h.Q,~RVSh.]S RVh.}W|UэL &..MBABAB A M]KE+S;~h.hh-h-k 9Es} G}UBB;rMe[^_ÐUVS]jh(/j SjVe[^U WVSuh*/؃t//u =u4hPP tt-5/u=uhd-pi=,~0te[^_ÐUi=,~0thfjbUEU PǀUE8%ÐUEÐUUhBP2ÐUS]u-CǃhP3V~E ]ÐUVSuU u3+];v؅tSR)Íe[^ÐUEǀPUjS@@@ ÐUu7ÐU WVS}]jWSE ^UVF GPWƒ;G ~G =̩t5EPU Rh@/h=̩tw whZ/IGtp w?u7e[^_UVSuu3yC uFE SESEN=̩t5s3hx/=̩tv vhZ/S e[^ÐU\WVS]E"EPS/Eău&u3PSh/j/ẼjgEjjE0:RPURE E0UR_E܉EU؉UEԉEt{uP;cthu5bPQE =̩tPuh/u5g_EEببEPuEPEPuEЉب }t="uE%=uEtNt6URURuuP  u3uEPi^uEETM;|?t:=t;tB;uE =̩tRQh/T3EEPuu5=t}tW63߃ju-uh0hTh"0h*0dCuh}tCt\UREPuVSA t@E@PuOP0OPUR0EP] [uVV3W5 =uEPU=̩t'W0=tH0Ph0u=t h0 h0?Pj/tN>/u~tѿ3 %[^_ÐUVS]u uVu$S5[S V{3e[^ÐUuhs5\ÐUWVS}=uj%]=uj ]uV]SE P5^XtzuWuWtW5XteE P5Zu uE P WGPE PGP5Y SVW5Wt+W5:Zu u E PFPWFP5ZYe[^_ÐUVSu=uj[=uj[u 5lV؃uh3h=h"0h*0ZV5YWu%SEPVEP5Xe[^ÐUS]=ujZ=ujZEPEPS5-Vt1S5Xu uS]US] uj_ZSP^Vu#S5RS5Q]ÐU,WVS3@WE5QEVEEP5T؃u(=̩EPh3J=̩tSEPh3%jSEPxE؃Fu;Ct C{75(Tt/CVCC=̩t@V7h4+CuCC=̩t7h@4s[iEPEPY9uEP) E@EEPV؃EPU]E54 $Vh4jPjge[^_ÐUt$P8Q5R t$P Q5R t PP5OUVSUE ]u=u :*u2=u%jh4R赾ue[^ÐUS]E U;s8/u@RPdBEEEEEP‹S;~+u C҉SC@PsJAC@CUPUPUP]ÐUWVSEE9U}@ʃ8tE IuURP@3ɉME;}933EP|t7DD7DD7 E AU; |̋M9Mth4hh4h4UEpUzM Je[^_U C;|Gt P#We[^_ÐUWVSEE} M M]u  }}%uuEpһ8DSt]@%DCtK]C< wV ;P]C< wD;DPEPh7j URT}uEEEE3ۃ=pt.ww(t5w(؅0wA(؃uLh7\Pjl W}tUR@EPURSu*u+PSh@7Pj.~tVSh7ɭPjƳVA }tEPL@UR聮4VEPUREPEPWE VGu)jEPUREPEPW҆E =5ب}t بEPW E5ب}tOEtHuBPV:؃t0h7Sth7SuU }}uh7hh6h6EEt PHuEPB#u)u URV u]u>Puh7j W}tEP>UR¬u跬+u襬6O0E }ujyEE7P= E}~Sjh7iPjfV W}tUR=EPg6UR=touh7PjVx Wl}tEPw=UR謫u衫%6EP<URzEE WEtEUt=P7}t7EPUtu7} t EU Et PW}t2EP<}t EU.UR謪}t EUR荪Ee[^_UWVSE} tjjPa P"E =بtƒzt0EPjEPEP2 E=P1tp=̩th 8Muh^8譨Pj誮u' t!5ϨPhl8jz eEt PKEt P8[Ut&EECu6W=ƍe[^_ÐUE 9Eu hx8 h8ӧPjÐU=uXM  ;w u&;vÐUSt =t3!3ۋ™ ;w u 9v[ÐUSM=TttTtt~; A'Rӫft\=t~ P谫C@P?؃=̩tS+RPh8t Sk]UWVS}߀?E<%tECEtCEtCEҾ8DVtC%DFtE< w U ;PE< wD;DɈCG;f[^_ÐUWVSu3ҋހ;t=tC;uu +ډ]@P)ދ׃;tG=t3EC%BBH7< wH0BE$H7< wH0뼊CB+;Uth>hh>h>i>Ǎe[^_ÐUS]S;u PU)]UWVS3}];;%sU8C%E8tmC< wV ;PC< wD;D%=ut3=t utrGEC;?u}u E+]+}<{}@P'E];\;%{U8C%E8tmC< wW ;PC< wD;D%=ut3=t utrJ;EC%FFP7< wP0FE$P7< wP0FC< w CPC;PC< w CDC;DɈCF+u;uth>hh>h>;Ee[^_ÐU WVSE=XttQ`t3ۃXtэAPREPu >tE EXtue[^_ÐUVS]8VuAFu<-t<+t9:t3A9/u y/u+ˋ[^ÐUSM8St ACu<-t<+t<:%[ÐUE@\tÐUE@`tÐUS]h:>Sĥt8@t3+@]U WVSu tVj:EP=;}u 3t@EH+Ћ+ڃCPx$ЋEGSPR7UN+ EFP;$UVURPU t P}Ut Phe[^_ÐU WVSuVsuފCt<:t>W,+D/.эAP"#؃VhG>SÍe[^_ÐUWS]u SѣuэD e[_UVSU3ɀ:t&8:E=u URhEMIPE؃9]uodMQ|Eă}?:ujCh>W{؃;u E;s+ %E8tȋ}čDAЉEB;rڐ;/uC]h>S E؃ ]];;uC]܃h>SE؋؃;?uC]ԃh>SEЋ؃;#uC]̋эL Mȋـ;th>hh>h>5U9Ut4EPEP+EHPMQut 3<j0: ؋3 }{EPUR!CMĉK EC(EC, }WEP CP^ C$PC Pss }tURMQ C}tEPUR C}tMQEPl Cu{u uU9Uu(jS]M9Mt-}WE9EuURM Íe[^_ÐUE=vh>hKh>h>34|tÐU WVSUu эA$+RW茜Wj/W؃ uh>WSWVCPUe[^_ÐUWSU3ۋztӋztًztً[_ÐU WVSu E@Et+эY/FSEPV耚E@Et+эY;FSEPVHEPt"эA?FPRVe[^_U WVS]SGP VS7ƍe[^_U WVSEp襙Uz ?ur$@cэYUz$эqDPSEp WW;/D; VUr$P<D7W}؃;tWEx0jUR6Ue[^_ÐUVS]u s 軘VfC Se[^UVS]u s$胘V.C$ Se[^US]sOsD 37Ct P$Ct PCt PC(t PC,t Pԗs ŗs$躗 S讗]ÐU,WVSEP%Eu)5ۖPURh>j肜3=̩tMqEPh?؜EEU2uJM;uCE+Pj WԗЃuUB;s8A@tG;s A@u;vB8A@tJ;vBA@u;vRWtWP ؃Wx EPW؃u5uPWEPh?jU0W1 Wj QE3ҋEP }uE MUJEEUR$Ee[^_ÐUVS]t;st P6Ct P臕S{ރuƍe[^ÐUWVS5ة)Ћ}эD$+t+xPEP襖uE%=uo5ة~F^SEPh2?tPVEPh2?W WtPjEPh2?W轕WEPX[^_ÐUWSUэD 8/t;tH8/t;u;u8/t 3PRnxPW谕 uEE%=@uW3e=̩tWh@?}WwW؃t5PWhj?j辘 W蚓Íh[_ÐUU3ɀ:t B/uF=Mq q&؋щM}}ы}D9D$+܀:.uztEPRhq?S肓 URS胓MqZ}9G tHэA:Ur DP&8.uxt>;tKҋэD$+Vw?>/u>PShy?WĒ uVэAt |/uDUB$E?8tEҋ}эT }t}+BPO؃}W>>tw?PVhy?S0}th?S7EPS* ;ut V蹐Íe[^_ÐU WVS]tb=t8C%BBH7< wH0B$H7< wH0CBt +=v} tN+=wV?B] t6+=w>/u%B2BFBC CB t +=v׋+=wEWg[^_UWSU3=tRؿ+B$?8tȋB3҅t8tЃRQ؃u\=?.utKҋэPSS5hq?W# S߃=u=Hu=Щu =t&StStS[S蔎Ǎe[_ÐUS]h?S+Ë]ÐUUE M;v 8tH;w3ÐUWVSEE8/u@EUUэ4 .uwMQ/tuh]};vK;v{/tK;]v{/uE/u,F+EPEPSoC)E+u]nTE 8/3U3+Pj/Rtux/u PՐu t uu} t+]U4FPtSEPWЊ}W>Ej/SEP.t ;Etx/u CE@+]U4FP tSEPWY}tD/};URU RP-E EPE P=Ǎe[^_ÐU WVS]u V%PэAPVSe[^_ÐU,WVSEEUB@\tM싰XtRuEuh?hh>h>!UB(t9PEMA,t } t E?PwEӋExэD UKMUB ;EtPw\]}t(}M}t}MUR EэYSVURju}tX}эYSURV<}t):F}эYSURV @FMIMэYSURV܇EM9A t:Fq VVURuF+u;uth?h9h>h> }tEM;A(t PR}t} uMU;J,t Q/Ee[^_USE3=ts3xu-h?|uh?Q؅t;u34SthPh@艈?@Ë]ÐUE tuPC'%ÐU,WVS] EEEPh?FPjC3ҋÃtxtB@uuh?PjgURpEu25,PMQh@ʄPjNJ EPj=ԩttPURMQ}'=tP貄PEPh @9h;@MQEuA5wPEPh@Pj UR\M9F؋U;B|%=̩h@@C~u*=̩P0ht@MQ+PjW?F=t$^==,KvEP؃SE F uPURvWv MQEPvW5 =̩tURvS0h@J S裃MQ藃E EPd؃F uSEPvWv SURvW =̩tMQvEPh@蹈SE'h>URvW Gv׋M+A;}MQ+PjW蜅EP蝃UR MQEPhAj袇e[^_ÐUWVS}] ;/uS?/uhAh-h>h>E3ɐ9tt:u /t A搐<9/u</uAMҐ3]]<9t<9/uFA<9uv}э P3Ƀ;}#(A3ҋ(AfCDIu΃EPIP贂Ǎe[^_ÐU WVSuэYE} u&A$+VWo,AD;0A;'A$+VWI1A;5AfD;t[tV3uE}ueWVt/5PWVh7APj谅0j؃V4tCte[^_UWVSu} ]EE"<"t<'uEEF ySEPq CUCSuEPEPWV tSUE+PjR轂}tF ySEP CUCƍe[^_ÐU WVSuEP@ЋэD $+VEPhTASSEPE PEPe[^_ÐUWVSUu}M 3;s-<#t<&uu  3B;r3[^_ÐU WVS}=u Wj?W؃tp֋э\YC$+̋Ԁ>t u+;th_Ah$ h>h>ǃP1e[^_ÐUE=tr=t=t!ttt t3UVSu] u@tsSPEtbe=@uj@S5@Eu0VOEEPS,P5@3e[^ÐUuG}3ÐU@t(jhPm5@@US]jS5$hA{Pj j{USu؃u hAË]ÐUSEU tRPɀ R諀؃u hAQË]ÐUSu蚀؃u hA Ë]ÐUSuȋр9t:B:u]ÐUM 3U:t 8 u@B:uÐU WVSu] +ލCPSVW{;Ǎe[^_UWVS]Etu 33U<,uXEPWSVtUEBUC 8B@t CB@uUCuPWPSVUDǍe[^_Uu/{E=t.EPz0pphAh`{` ``ÐUuzE=t>EPZz2rrr B@PBlPhAho0{o ooÐUS3ۃ=uhA7~}hA}jlxtPPhBxP|t"5h@BxP|jx}h0haBhcB}h@hmBhcB} hPhmBhcB}]ÐUS]E UBERS}=u5,xPShoBj}]ÐUVS]3xPSHzucE%=uT=̩tSh~B~Syt(5wPShBIwPjF}ƍh[^ÐUju|ÐUxPuyuE%=@%3U WVS]u t9V] Ћ+R VShBWxS'WEtWUw3Ǎe[^_ÐUVSu3ېSCVate[^ÐU WVSU3эA$+RWx?/C;t t3p;uVrpe[^ÐU WVSu} ultetV3>t @<u3ۍ MtC<uDPVxUփPWRp Woƍe[^_ÐU WVSujރE PjGu{t v~u~Íe[^_ÐU WVSu] jSwǍe[^_ÐUU3ɅtBJʋЅuÐUVS]u t%V3nu  [u3e[^UVSut ^6nVn ue[^ÐUVSu] SVuhBS<PVe[^ÐUu uhÐUuKn3ÐUS]jhSvS]US] unSm3]ÐUjh<u(ÐU WVSEE8-u-@E}I%BR+3;}M FC;|3ۋE<t0VUUU+ЍR;ut,FUFCA<u[^_U$Su]SS9]UWVS}] uEjj VS0M9AMjj VS؋ uЋEE~$E]KD7ΊT7KF;M|E8e[^_ÐUSEU RP]SRS}hÐUVSu}޹gfff+~A+Ћ[^ÐUVSu] }-Fۃ c'T?B~bɚ;~"/D+Њ0Fiʚ;+ع;U+ʊ0F+ы++عk_k+ʊ0F+ы++عC+ʊ0F+ы++ع +ʊ0F+э+عh +ʊ0F+э+عMb+ʊ0F+э+غQ+Њ0F+غgfff+Њ0F+؀0F[^ÐUjÐUS؃SË]ÐUuiÐUVSuj]SnECFe[^ÐUWVSuj]SjnM+ȋ+u"u uC@;u˃@Pދπ;B=wq$B&AaAmApA;U&AAg;u[^US[Pq[sjiconnection_host_name == NULLconnect.c%s:%u: failed assertion `%s' connection_host_name != NULLConnecting to %s[%s]:%hu... Connecting to %s:%hu... connected. Created socket %d. failed: %s. Closing fd %d Master socket fd %d bound. Created socket fd %d. Deleted old cookie (to be replaced.) permanentnonpermanent Stored cookie %s %d %s %s %d %s %s %s res != 0cookies.c%s:%u: failed assertion `%s' Discarded old cookie. name_b != NULL && name_e != NULLdomainpathexpiresmax-age%lfsecureError in Set-Cookie, field `%s'Syntax error in Set-Cookie at character `%c'. Syntax error in Set-Cookie: premature end of string. TNNOlOO$P4PhPP-Q-Q.int.mil.gov.org.net.edu.comcdm: 1 2 3 4 5 6Attempt to fake the domain: %s, %s Attempt to fake the path: %s, %s p != NULLocnt == countCookie: pos == result_sizerCannot open cookies file `%s': %s TRUE%luFALSE%s %s %s %s %lu %s %s Saving cookies to %s. w# HTTP cookie file. # Generated by Wget on %s. # Edit at your own risk. Error writing to `%s': %s Error closing `%s': %s Done saving cookies. bytecon != NULLftp.c%s:%u: failed assertion `%s' con->target != NULL!((cmd & DO_LIST) && (cmd & DO_RETR))(cmd & (DO_LIST | DO_CWD | DO_RETR | DO_LOGIN)) != 0user && passwdLogging in as %s ... Error in server response, closing control connection. Closing fd %d Error in server greeting. Write failed, closing control connection. The server refuses login. Login incorrect. Logged in! ==> SYST ... Server error, can't determine system type. done. ==> PWD ... /Initial VMS directory not in the form [...]! Preprocessing the initial VMS directory old = '%s' new = '%s' done. ==> TYPE %c ... Unknown type `%c', closing control connection. done. ==> CWD not needed. changing working directory %s%s%sPrepended initial PWD to relative path: old: '%s' new: '%s' *ntarget == '/'Changed file name to VMS syntax: Unix: '%s' VMS: '%s' ==> CWD %s ... No such directory `%s'. ==> CWD not required. ==> SIZE %s ... ==> PASV ... Cannot initiate PASV transfer. Cannot parse PASV response. couldn't connect to %s:%hu: %s ==> PORT ... socket: %s Bind error (%s). Invalid PORT. ==> REST %ld ... REST failed; will not truncate `%s'. REST failed, starting from scratch. ==> RETR %s ... No such file `%s'. ==> LIST ... .No such file or directory `%s'. Lying FTP server found, adjusting. accept: %s abwb%s: %s Length: %s [%s to go] (unauthoritative) %s: %s, closing control connection. %s (%s) - Data connection: %s; %s (%s) - Control connection closed. Data transfer aborted. r%s k(kjkkkkikikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkXjvvvvvvvuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv0vxyyyyy,y,yy,yyyyyyy|yyyy(xyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyxFile `%s' already there, not retrieving. (try:%2d)--%s-- %s %s => `%s' %s (%s) - `%s' saved [%ld] %s URL: %s [%ld] -> "%s" [%d] Removing file due to --delete-after in ftp_loop_internal(): Removing %s. unlink: %s ԇԇԇԇԇԇԇԇԇԇԇԇԇ.listingUsing `%s' as listing tmp file. Removed `%s'. Recursion depth %d exceeded max. depth %d. f != NULLRemote file no newer than local file `%s' -- not retrieving. Remote file is newer than local file `%s' -- retrieving. The sizes do not match (local %ld) -- retrieving. Invalid name of the symlink, skipping. Already have correct symlink %s -> %s Creating symlink %s -> %s symlink: %s Skipping directory `%s'. %s: unknown/unsupported file type. %s: corrupt time-stamp. Unrecognized permissions for %s. Will not retrieve dirs since depth is %d (max %d). %s%s%s/%sComposing new CWD relative to the initial directory. odir = '%s' f->name = '%s' newdir = '%s' Not descending to `%s' as it is excluded/not-included. Rejecting `%s'. No matches on pattern `%s'. Wrote HTML-ized index to `%s' [%ld]. Wrote HTML-ized index to `%s'. %s %s%s%s PASS--> %s --> PASS Turtle Power! --> %s USER331 opiekey 331 s/key %d,%d,%d,%d,%d,%dPORTPASVTYPECWDRESTRETRLISTSYSTVMSUNIXWINDOWS_NTMACOSPWD"SIZEtype=DecNovOctSepAugJulJunMayAprMarFebJanrb%s: %s total PLAINFILE; DIRECTORY; SYMLINK; UNKNOWN; implicit perms %0o; perms %0o; month: %s; day: %d; year: %d (no tm); time: %02d:%02d:%02d (no yr); -> link to: %s ... Ignoring `.' and `..'; trailing `/' on dir. trailing `@' on link. trailing `*' on exec. Skipping. Name: '%s' -:MYYYY/MM/DD HH:MM - %d/%02d/%02d %02d:%02d Timestamp: %ld Directory File, size %ld bytes wrong VMS permissons! pxDECNOVOCTSEPAUGJULJUNMAYAPRMARFEBJANfile name: '%s' .DIRFile Getting additional line empty line read, leaving listing parser confusing VMS listing item, leaving listing parser second token: '%s' day: '%s' nonsense in VMS listing, skipping this line date parsed YYYY/MM/DD HH:MM:SS - %d/%02d/%02d %02d:%02d:%02d ,)confusing VMS permissions, skipping line permissions: %s -> 0%o Unsupported listing type, trying Unix listing parser. wb%s%s%s@ �Index of /%s on %s:%d�


  %d %s %02d %02d:%02d         time unknown       File        Directory   Link        Not sure    %s  (%s bytes)(nil)-> %s
store is `%s' POSIXLY_CORRECT--%s: option `%s' is ambiguous %s: option `--%s' doesn't allow an argument %s: option `%c%s' doesn't allow an argument %s: option `%s' requires an argument %s: unrecognized option `--%s' %s: unrecognized option `%c%s' %s: illegal option -- %c %s: option requires an argument -- %c );Ok[WQ /?!"i,9Ka~j e7 CA f!*7H}P^zKd5U_ %/^k=OG[)6FI\( QK55>n)#5Fu[~Tv>ԙwQ%s index >= al->faulty && index < al->counthost.c%s:%u: failed assertion `%s' index == al->faultycount > 0Releasing %p (new refcount %d). Deleting unused %p. Caching %s => %s Found %s in host_name_addresses_map (%p) Resolving %s... failed: %s. done. u->host != NULLHost not foundUnknown erroral->refcount == 1ltgtampquotnbspch == '\'' || ch == 0x22html-parse.c%s:%u: failed assertion `%s' ch == quote_charch == '-'!!t  Xhthtdtablescriptoverlaymetalinklayerinputimgiframeframefigembedbodybgsoundbaseareaappletalowsrcbackgroundsrccodehrefcontentnamehttp-equivrel%s: no base, merge will use "%s". %s: Cannot resolve incomplete link %s. %s: link "%s" doesn't parse. %s: merge("%s", "%s") -> %s %s: merged link "%s" doesn't parse. appending "%s" to urlpos. first != -1html-url.c%s:%u: failed assertion `%s' stylesheetshortcut iconrefreshrobotsnonenofollowtagid != -1%s: %s Loaded %s (size %ld). no-follow in %s: %d HTTP/bytesnoneKeep-AliveInvalidating fd %d from further reuse. Closing fd %d pc_last_host_ip == NULLhttp.c%s:%u: failed assertion `%s' pc_last_host_ip != NULLRegistered fd %d for persistent reuse. *hs->local_file != NULLReusing connection to %s:%hu. Reusing fd %d. HEADGETReferer: %s Pragma: no-cache Range: bytes=%ld- Wget/%sAuthorizationProxy-Authorization:%dConnection: Keep-Alive */*%s %s HTTP/1.0 User-Agent: %s Host: %s%s Accept: %s %s%s%s%s%s%s%s%s ---request begin--- %s---request end--- Failed writing HTTP request: %s. ProxyHTTP%s request sent, awaiting response... End of file while parsing headers. Read error (%s) in headers. No data receivedMalformed status line(no description) %2d %s%2d %sContent-LengthContent-TypeLocationLast-ModifiedSet-CookieWWW-AuthenticateAccept-RangesContent-RangeConnectioninhibit_keep_alive == 0Authorization failed. Unknown authentication scheme. Basic [following]unspecifiedLocation: %s%s text/html.htm.html The file is already fully retrieved; nothing to do. Continued download failed on this file, which conflicts with `-c'. Refusing to truncate existing file `%s'. Length: (%s to go)ignored [%s] abwb%s: %s Warning: wildcards not supported in HTTP. File `%s' already there, will not retrieve. htmlhtm.orig (try:%2d)--%s-- %s %s => `%s' Cannot write to `%s' (%s). Unable to establish SSL connection. ERROR: Redirection (%d) without location. %s: %s ERROR %d: %s. Last-modified header missing -- time-stamps turned off. Last-modified header invalid -- time-stamp ignored. Server file no newer than local file `%s' -- not retrieving. The sizes do not match (local %ld) -- retrieving. Remote file is newer, retrieving. %d %s %s (%s) - `%s' saved [%ld/%ld] %s URL:%s [%ld/%ld] -> "%s" [%d] %s (%s) - `%s' saved [%ld] %s URL:%s [%ld] -> "%s" [%d] %s (%s) - Connection closed at byte %ld. %s (%s) - `%s' saved [%ld/%ld]) %s (%s) - Connection closed at byte %ld/%ld. %s (%s) - Read error at byte %ld (%s).%s (%s) - Read error at byte %ld/%ld (%s). T $%a %b %d %T %Y%a, %d-%b-%Y %T%A, %d-%b-%y %T%a, %d %b %Y %T%s:%s%s: Basic %s nonceopaquerealm:Authorization: Digest username="%s", realm="%s", nonce="%s", uri="%s", response="%s", opaque="" DigestNTLMwaitretrywaitverboseuseragentuseproxytriestimestampingtimeoutspiderspanhostsserverresponsesaveheaderssavecookiesrobotsretrsymlinksremovelistingrelativeonlyrejectrefererrecursivereclevelrandomwaitquotaquietproxyuserproxypasswdprogresspasswdpassiveftppagerequisitesoutputdocumentnumtriesnoproxynoparentnoclobbernetrcmirrorloginlogfileloadcookieslimitratekilllongerinputincludedirectoriesignoretagsignorelengthhttpuserhttpsproxyhttpproxyhttppasswdhttpkeepalivehtmlifyhtmlextensionheaderglobftpproxyforcehtmlfollowtagsfollowftpexcludedomainsexcludedirectoriesdotstyledotspacingdotsinlinedotbytesdomainsdirstructdirprefixdeleteafterdebugcutdirscookiesconvertlinkscontinuecachebindaddressbasebackupsbackupconvertedbackgroundalwaysrestaddhostdiraccept.anonymous-wget@no_proxyHOMEWGETRC%s: %s: %s. %s/.wgetrcrb%s: Cannot read %s (%s). %s: Error in %s at line %d. /opt/csw/etc/wgetrc%s: Warning: Both system and user wgetrc point to `%s'. %s: BUG: unknown command `%s', value `%s'. %s: %s: Cannot convert `%s' to an IP address. onoff%s: %s: Please specify on or off. alwaysnever%s: %s: Please specify always, on, off, or never. %s: %s: Invalid specification `%s'. inf%s: Invalid specification `%s' %s: %s: Invalid progress type `%s'. awwget-log %s received, redirecting output to `%s'. %s: %s; disabling logging. /opt/csw/share/localewgetUsage: %s [OPTION]... [URL]... GNU Wget %s, a non-interactive network retriever. Mandatory arguments to long options are mandatory for short options too. Startup: -V, --version display the version of Wget and exit. -h, --help print this help. -b, --background go to background after startup. -e, --execute=COMMAND execute a `.wgetrc'-style command. Logging and input file: -o, --output-file=FILE log messages to FILE. -a, --append-output=FILE append messages to FILE. -d, --debug print debug output. -q, --quiet quiet (no output). -v, --verbose be verbose (this is the default). -nv, --non-verbose turn off verboseness, without being quiet. -i, --input-file=FILE download URLs found in FILE. -F, --force-html treat input file as HTML. -B, --base=URL prepends URL to relative links in -F -i file. --sslcertfile=FILE optional client certificate. --sslcertkey=KEYFILE optional keyfile for this certificate. --egd-file=FILE file name of the EGD socket. Download: --bind-address=ADDRESS bind to ADDRESS (hostname or IP) on local host. -t, --tries=NUMBER set number of retries to NUMBER (0 unlimits). -O --output-document=FILE write documents to FILE. -nc, --no-clobber don't clobber existing files or use .# suffixes. -c, --continue resume getting a partially-downloaded file. --progress=TYPE select progress gauge type. -N, --timestamping don't re-retrieve files unless newer than local. -S, --server-response print server response. --spider don't download anything. -T, --timeout=SECONDS set the read timeout to SECONDS. -w, --wait=SECONDS wait SECONDS between retrievals. --waitretry=SECONDS wait 1...SECONDS between retries of a retrieval. --random-wait wait from 0...2*WAIT secs between retrievals. -Y, --proxy=on/off turn proxy on or off. -Q, --quota=NUMBER set retrieval quota to NUMBER. --limit-rate=RATE limit download rate to RATE. Directories: -nd --no-directories don't create directories. -x, --force-directories force creation of directories. -nH, --no-host-directories don't create host directories. -P, --directory-prefix=PREFIX save files to PREFIX/... --cut-dirs=NUMBER ignore NUMBER remote directory components. HTTP options: --http-user=USER set http user to USER. --http-passwd=PASS set http password to PASS. -C, --cache=on/off (dis)allow server-cached data (normally allowed). -E, --html-extension save all text/html documents with .html extension. --ignore-length ignore `Content-Length' header field. --header=STRING insert STRING among the headers. --proxy-user=USER set USER as proxy username. --proxy-passwd=PASS set PASS as proxy password. --referer=URL include `Referer: URL' header in HTTP request. -s, --save-headers save the HTTP headers to file. -U, --user-agent=AGENT identify as AGENT instead of Wget/VERSION. --no-http-keep-alive disable HTTP keep-alive (persistent connections). --cookies=off don't use cookies. --load-cookies=FILE load cookies from FILE before session. --save-cookies=FILE save cookies to FILE after session. FTP options: -nr, --dont-remove-listing don't remove `.listing' files. -g, --glob=on/off turn file name globbing on or off. --passive-ftp use the "passive" transfer mode. --retr-symlinks when recursing, get linked-to files (not dirs). Recursive retrieval: -r, --recursive recursive web-suck -- use with care! -l, --level=NUMBER maximum recursion depth (inf or 0 for infinite). --delete-after delete files locally after downloading them. -k, --convert-links convert non-relative links to relative. -K, --backup-converted before converting file X, back up as X.orig. -m, --mirror shortcut option equivalent to -r -N -l inf -nr. -p, --page-requisites get all images, etc. needed to display HTML page. Recursive accept/reject: -A, --accept=LIST comma-separated list of accepted extensions. -R, --reject=LIST comma-separated list of rejected extensions. -D, --domains=LIST comma-separated list of accepted domains. --exclude-domains=LIST comma-separated list of rejected domains. --follow-ftp follow FTP links from HTML documents. --follow-tags=LIST comma-separated list of followed HTML tags. -G, --ignore-tags=LIST comma-separated list of ignored HTML tags. -H, --span-hosts go to foreign hosts when recursive. -L, --relative follow relative links only. -I, --include-directories=LIST list of allowed directories. -X, --exclude-directories=LIST list of excluded directories. -np, --no-parent don't ascend to the parent directory. Mail bug reports and suggestions to . waitretrywaituse-proxyrefereruser-agenttriestimeoutsave-cookiesrejectquotaproxy-userproxy-passwdproxyprogressoutput-fileoutput-documentnoload-cookieslimit-ratelevelinput-fileinclude-directoriesignore-tagshttp-userhttp-passwdhtmlifyheaderglobfollow-tagsexclude-domainsexclude-directoriesexecutedot-styledomainsdirectory-prefixcut-dirscookiescachebind-addressbasebackupsappend-outputacceptversionverbosetimestampingspiderspan-hostsserver-responsesave-headersretr-symlinksrelativerecursiverandom-waitquietpage-requisitespassive-ftpnon-verboseno-parentno-http-keep-aliveno-host-lookupno-host-directoriesno-directoriesno-clobbermirrorignore-lengthhtml-extensionhelpforce-htmlforce-hierforce-directoriesfollow-ftpdont-remove-listingdelete-afterdebugconvert-linkscontinuebackup-convertedbackgroundhpVqvdkKsxmNWrHSLcFbEY:G:g:T:U:O:l:n:i:o:a:t:D:A:R:P:B:e:Q:X:I:w:C:onnoparentdeleteafterretrsymlinksignorelengthpassiveftpnoclobberfollowftpcutdirsoffdirstructaddhostdirremovelistingbindaddresshttpkeepaliverandomwaithtmlextensionforcehtmlspanhostsbackupconvertedconvertlinksrelativeonlypagerequisitesserverresponsesaveheadersGNU Wget %s Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. %sThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Originally written by Hrvoje Niksic . httpuserhttppasswddotstyleexcludedomainsproxyuserproxypasswdfollowtagsloadcookiessavecookieslimitratelogfile%s: %s: invalid command ignoretagsincludedirectoriesinputreclevel%s: illegal option -- `-n%c' Try `%s --help' for more options. outputdocumentdirprefixuseragentexcludedirectoriesuseproxyCan't be verbose and quiet at the same time. Can't timestamp and not clobber old files at the same time. %s: missing URL solaris2.8DEBUG output created by Wget %s on %s. abwbRemoving file due to --delete-after in main(): Removing %s. unlink: %s No URLs found in %s. FINISHED --%s-- Downloaded: %s bytes in %d files Download quota (%s bytes) EXCEEDED! J KGGGGDDHDH KDD K E JHJXJhJHExJJE KJJ K K K K K K KGHD\DpDH KHDH KDH EI4J4EpEE\EJ K FJ F K K K K K K K K4FHF\FCCpFF0CDCXClCFCCFFCCCCC KFFF K D DtG K KG$G8GLG`G4DDIIIIIIIIIIIIIIIIIIIIIIIIIIIdITIIIIIIIIIIIIIItIIII4ISIGUSR1WTF?!SIGHUP.netrc%s/%sr%s: Cannot read %s (%s). loginpasswordmacdefaccount%s: %s:%d: warning: "%s" token appears before any machine name defaultmachine%s: %s:%d: unknown token "%s" VUlUUUUbardot %*s[ skipping %dK ] %5ldK ,dp->dots < opt.dots_in_lineprogress.c%s:%u: failed assertion `%s' %3d%%Y@ %s. defaultbinarymegagigaInvalid dot style specification `%s'; leaving unchanged. percentage <= 100%2d%% 100% dlsz <= progress_size %-11sG/sM/sK/sB/s %7.2f%s --.--K/s ETA --:--%d:%02d:%02d%02d:%02d ETA --:--p - bp->buffer <= bp->widthY@@@ TERMforceemacsEnqueuing %s at depth %d Queue count %d, maxcount %d. Dequeuing %s at depth %d %s: %s. Already downloaded "%s", reusing it from "%s". Not descending further; at depth %d, max. %d. url_parsed != NULLrecur.c%s:%u: failed assertion `%s' --delete-afterrecursive rejection criteriaRemoving file due to %s in recursive_retrieve(): Removing %s. Removing %s since it should be rejected. unlink: %s Deciding whether to enqueue "%s". Already on the black list. Not following non-HTTP schemes. It doesn't really look like a relative link. The domain was not accepted. Going to "%s" would escape "%s" with no_parent on. %s (%s) is excluded/not-included. htmlhtm%s (%s) does not match acc/rej rules. This is not the same hostname as the parent's (%s and %s). Not following %s because robots.txt forbids it. Decided to load it. Decided NOT to load it. orig_parsed != NULLnew_parsed != NULLRedirection "%s" failed the test. /index.htmlfile != NULLApparently %s has been removed. Scanning %s (from %s) will convert url %s to local %s will convert url %s to complete Converted %d files in %.2f seconds. @@wgetj == cntres.c%s:%u: failed assertion `%s' !EOL (p)Ignoring malformed line %duser-agentallowdisallowIgnoring unknown field at line %dCannot open %s: %sAllowingRejecting%s path %s because of rule `%s'. /robots.txtLoading robots.txt; please ignore errors. deferring a %ld ms sleep (%ld/%ld) until later. sleeping %ld ms @@GB/sMB/sKB/sB/s%7.2f %s%.2f %smsecs >= 0retr.c%s:%u: failed assertion `%s' bytes >= 0@@@0AP?A>>%s: %s. Could not find proxy host. Error parsing proxy URL %s: %s. Error in proxy URL %s: Must be HTTP. htmlhtmmynewloc != NULL%d redirections exceeded. %s: Redirection cycle detected. Removing file due to --delete-after in retrieve_from_file(): Removing %s. unlink: %s Giving up. Retrying. sleep_between_retrievals: norm=%ld,fuzz=%ld,sleep=%d CBBBBQ00000000000000000000000000000000  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~ftp://http://p2 - newstr == newlenurl.c%s:%u: failed assertion `%s' /?@ftp://%shttp://%sInvalid user nameBad port numberEmpty hostUnsupported schemeNo error:/;?#/;?#;?#?##*p == 0error_code >= 0 && error_code < ARRAY_SIZE (parse_errors)%s: %s Loaded %s (size %ld). %s: Invalid URL %s: %s %s.%dRemoving %s because of directory danger! %s: %s%s/%s/%s%s%sindex.html??;#scheme_str != NULL*password*p - result == sizehttp_proxyftp_proxyConverting %s... nothing to do. Cannot convert links in %s: %s Unable to delete `%s': %s wbSomething strange is going on. Please investigate.Skipping %s at position %d. TO_RELATIVE: %s to %s at position %d in %s. TO_COMPLETE: to %s at position %d in %s. %d-%d *s1 != '/'../orig.origCannot back up %s as %s: %s %d; URL=%sto - newname == fsqlen%s: %s: Not enough memory. mallocreallocstrdup%02d:%02d:%02d%04d-%02d-%02d %02d:%02d:%02dwget-logforkContinuing in background, pid %d. Output will be written to `%s'. r/dev/nullwutime(%s): %s Unlinking %s (symlink). Failed to unlink symlink `%s': %s %s.%d1,,,,,,,,,,,,,,,,,,,,,,,,,,?1.8.2(G6677.7>7N7^7n7~77777777788.8>8N8^8n8~88888888899.9>9N9^9n9~999999999::.:>:N:^:n:~:::::::::;;.;>;N;^;n;~;;;;;;;;;<<.<><N<^<n<~<<<<<<<<<==.=>=N=^=n=~===  P!   oo2o`x3@3oo`Et0#plhd`\XTPLHDAABEACEACTADADAADDAGOAIDAIMAIRALLALPAMAMYANANAANDANNANTANYAPEAPSAPTARCAREARKARMARTASASHASKATATEAUGAUKAVEAWEAWKAWLAWNAXAYEBADBAGBAHBAMBANBARBATBAYBEBEDBEEBEGBENBETBEYBIBBIDBIGBINBITBOBBOGBONBOOBOPBOWBOYBUBBUDBUGBUMBUNBUSBUTBUYBYBYECABCALCAMCANCAPCARCATCAWCODCOGCOLCONCOOCOPCOTCOWCOYCRYCUBCUECUPCURCUTDABDADDAMDANDARDAYDEEDELDENDESDEWDIDDIEDIGDINDIPDODOEDOGDONDOTDOWDRYDUBDUDDUEDUGDUNEAREATEDEELEGGEGOELIELKELMELYEMENDESTETCEVAEVEEWEEYEFADFANFARFATFAYFEDFEEFEWFIBFIGFINFIRFITFLOFLYFOEFOGFORFRYFUMFUNFURGABGADGAGGALGAMGAPGASGAYGEEGELGEMGETGIGGILGINGOGOTGUMGUNGUSGUTGUYGYMGYPHAHADHALHAMHANHAPHASHATHAWHAYHEHEMHENHERHEWHEYHIHIDHIMHIPHISHITHOHOBHOCHOEHOGHOPHOTHOWHUBHUEHUGHUHHUMHUTIICYIDAIFIKEILLINKINNIOIONIQIRAIREIRKISITITSIVYJABJAGJAMJANJARJAWJAYJETJIGJIMJOJOBJOEJOGJOTJOYJUGJUTKAYKEGKENKEYKIDKIMKINKITLALABLACLADLAGLAMLAPLAWLAYLEALEDLEELEGLENLEOLETLEWLIDLIELINLIPLITLOLOBLOGLOPLOSLOTLOULOWLOYLUGLYEMAMACMADMAEMANMAOMAPMATMAWMAYMEMEGMELMENMETMEWMIDMINMITMOBMODMOEMOOMOPMOSMOTMOWMUDMUGMUMMYNABNAGNANNAPNATNAYNENEDNEENETNEWNIBNILNIPNITNONOBNODNONNORNOTNOVNOWNUNUNNUTOOAFOAKOAROATODDODEOFOFFOFTOHOILOKOLDONONEORORBOREORROSOTTOUROUTOVAOWOWEOWLOWNOXPAPADPALPAMPANPAPPARPATPAWPAYPEAPEGPENPEPPERPETPEWPHIPIPIEPINPITPLYPOPODPOEPOPPOTPOWPROPRYPUBPUGPUNPUPPUTQUORAGRAMRANRAPRATRAWRAYREBREDREPRETRIBRIDRIGRIMRIORIPROBRODROERONROTROWROYRUBRUERUGRUMRUNRYESACSADSAGSALSAMSANSAPSATSAWSAYSEASECSEESENSETSEWSHESHYSINSIPSIRSISSITSKISKYSLYSOSOBSODSONSOPSOWSOYSPASPYSUBSUDSUESUMSUNSUPTABTADTAGTANTAPTARTEATEDTEETENTHETHYTICTIETIMTINTIPTOTOETOGTOMTONTOOTOPTOWTOYTRYTUBTUGTUMTUNTWOUNUPUSUSEVANVATVETVIEWADWAGWARWASWAYWEWEBWEDWEEWETWHOWHYWINWITWOKWONWOOWOWWRYWUYAMYAPYAWYEYEAYESYETYOUABEDABELABETABLEABUTACHEACIDACMEACREACTAACTSADAMADDSADENAFARAFROAGEEAHEMAHOYAIDAAIDEAIDSAIRYAJARAKINALANALECALGAALIAALLYALMAALOEALSOALTOALUMALVAAMENAMESAMIDAMMOAMOKAMOSAMRAANDYANEWANNAANNEANTEANTIAQUAARABARCHAREAARGOARIDARMYARTSARTYASIAASKSATOMAUNTAURAAUTOAVERAVIDAVISAVONAVOWAWAYAWRYBABEBABYBACHBACKBADEBAILBAITBAKEBALDBALEBALIBALKBALLBALMBANDBANEBANGBANKBARBBARDBAREBARKBARNBARRBASEBASHBASKBASSBATEBATHBAWDBAWLBEADBEAKBEAMBEANBEARBEATBEAUBECKBEEFBEENBEERBEETBELABELLBELTBENDBENTBERGBERNBERTBESSBESTBETABETHBHOYBIASBIDEBIENBILEBILKBILLBINDBINGBIRDBITEBITSBLABBLATBLEDBLEWBLOBBLOCBLOTBLOWBLUEBLUMBLURBOARBOATBOCABOCKBODEBODYBOGYBOHRBOILBOLDBOLOBOLTBOMBBONABONDBONEBONGBONNBONYBOOKBOOMBOONBOOTBOREBORGBORNBOSEBOSSBOTHBOUTBOWLBOYDBRADBRAEBRAGBRANBRAYBREDBREWBRIGBRIMBROWBUCKBUDDBUFFBULBBULKBULLBUNKBUNTBUOYBURGBURLBURNBURRBURTBURYBUSHBUSSBUSTBUSYBYTECADYCAFECAGECAINCAKECALFCALLCALMCAMECANECANTCARDCARECARLCARRCARTCASECASHCASKCASTCAVECEILCELLCENTCERNCHADCHARCHATCHAWCHEFCHENCHEWCHICCHINCHOUCHOWCHUBCHUGCHUMCITECITYCLADCLAMCLANCLAWCLAYCLODCLOGCLOTCLUBCLUECOALCOATCOCACOCKCOCOCODACODECODYCOEDCOILCOINCOKECOLACOLDCOLTCOMACOMBCOMECOOKCOOLCOONCOOTCORDCORECORKCORNCOSTCOVECOWLCRABCRAGCRAMCRAYCREWCRIBCROWCRUDCUBACUBECUFFCULLCULTCUNYCURBCURDCURECURLCURTCUTSDADEDALEDAMEDANADANEDANGDANKDAREDARKDARNDARTDASHDATADATEDAVEDAVYDAWNDAYSDEADDEAFDEALDEANDEARDEBTDECKDEEDDEEMDEERDEFTDEFYDELLDENTDENYDESKDIALDICEDIEDDIETDIMEDINEDINGDINTDIREDIRTDISCDISHDISKDIVEDOCKDOESDOLEDOLLDOLTDOMEDONEDOOMDOORDORADOSEDOTEDOUGDOURDOVEDOWNDRABDRAGDRAMDRAWDREWDRUBDRUGDRUMDUALDUCKDUCTDUELDUETDUKEDULLDUMBDUNEDUNKDUSKDUSTDUTYEACHEARLEARNEASEEASTEASYEBENECHOEDDYEDENEDGEEDGYEDITEDNAEGANELANELBAELLAELSEEMILEMITEMMAENDSERICEROSEVENEVEREVILEYEDFACEFACTFADEFAILFAINFAIRFAKEFALLFAMEFANGFARMFASTFATEFAWNFEARFEATFEEDFEELFEETFELLFELTFENDFERNFESTFEUDFIEFFIGSFILEFILLFILMFINDFINEFINKFIREFIRMFISHFISKFISTFITSFIVEFLAGFLAKFLAMFLATFLAWFLEAFLEDFLEWFLITFLOCFLOGFLOWFLUBFLUEFOALFOAMFOGYFOILFOLDFOLKFONDFONTFOODFOOLFOOTFORDFOREFORKFORMFORTFOSSFOULFOURFOWLFRAUFRAYFREDFREEFRETFREYFROGFROMFUELFULLFUMEFUNDFUNKFURYFUSEFUSSGAFFGAGEGAILGAINGAITGALAGALEGALLGALTGAMEGANGGARBGARYGASHGATEGAULGAURGAVEGAWKGEARGELDGENEGENTGERMGETSGIBEGIFTGILDGILLGILTGINAGIRDGIRLGISTGIVEGLADGLEEGLENGLIBGLOBGLOMGLOWGLUEGLUMGLUTGOADGOALGOATGOERGOESGOLDGOLFGONEGONGGOODGOOFGOREGORYGOSHGOUTGOWNGRABGRADGRAYGREGGREWGREYGRIDGRIMGRINGRITGROWGRUBGULFGULLGUNKGURUGUSHGUSTGWENGWYNHAAGHAASHACKHAILHAIRHALEHALFHALLHALOHALTHANDHANGHANKHANSHARDHARKHARMHARTHASHHASTHATEHATHHAULHAVEHAWKHAYSHEADHEALHEARHEATHEBEHECKHEEDHEELHEFTHELDHELLHELMHERBHERDHEREHEROHERSHESSHEWNHICKHIDEHIGHHIKEHILLHILTHINDHINTHIREHISSHIVEHOBOHOCKHOFFHOLDHOLEHOLMHOLTHOMEHONEHONKHOODHOOFHOOKHOOTHORNHOSEHOSTHOURHOVEHOWEHOWLHOYTHUCKHUEDHUFFHUGEHUGHHUGOHULKHULLHUNKHUNTHURDHURLHURTHUSHHYDEHYMNIBISICONIDEAIDLEIFFYINCAINCHINTOIONSIOTAIOWAIRISIRMAIRONISLEITCHITEMIVANJACKJADEJAILJAKEJANEJAVAJEANJEFFJERKJESSJESTJIBEJILLJILTJIVEJOANJOBSJOCKJOELJOEYJOHNJOINJOKEJOLTJOVEJUDDJUDEJUDOJUDYJUJUJUKEJULYJUNEJUNKJUNOJURYJUSTJUTEKAHNKALEKANEKANTKARLKATEKEELKEENKENOKENTKERNKERRKEYSKICKKILLKINDKINGKIRKKISSKITEKLANKNEEKNEWKNITKNOBKNOTKNOWKOCHKONGKUDOKURDKURTKYLELACELACKLACYLADYLAIDLAINLAIRLAKELAMBLAMELANDLANELANGLARDLARKLASSLASTLATELAUDLAVALAWNLAWSLAYSLEADLEAFLEAKLEANLEARLEEKLEERLEFTLENDLENSLENTLEONLESKLESSLESTLETSLIARLICELICKLIEDLIENLIESLIEULIFELIFTLIKELILALILTLILYLIMALIMBLIMELINDLINELINKLINTLIONLISALISTLIVELOADLOAFLOAMLOANLOCKLOFTLOGELOISLOLALONELONGLOOKLOONLOOTLORDLORELOSELOSSLOSTLOUDLOVELOWELUCKLUCYLUGELUKELULULUNDLUNGLURALURELURKLUSHLUSTLYLELYNNLYONLYRAMACEMADEMAGIMAIDMAILMAINMAKEMALEMALIMALLMALTMANAMANNMANYMARCMAREMARKMARSMARTMARYMASHMASKMASSMASTMATEMATHMAULMAYOMEADMEALMEANMEATMEEKMEETMELDMELTMEMOMENDMENUMERTMESHMESSMICEMIKEMILDMILEMILKMILLMILTMIMIMINDMINEMINIMINKMINTMIREMISSMISTMITEMITTMOANMOATMOCKMODEMOLDMOLEMOLLMOLTMONAMONKMONTMOODMOONMOORMOOTMOREMORNMORTMOSSMOSTMOTHMOVEMUCHMUCKMUDDMUFFMULEMULLMURKMUSHMUSTMUTEMUTTMYRAMYTHNAGYNAILNAIRNAMENARYNASHNAVENAVYNEALNEARNEATNECKNEEDNEILNELLNEONNERONESSNESTNEWSNEWTNIBSNICENICKNILENINANINENOAHNODENOELNOLLNONENOOKNOONNORMNOSENOTENOUNNOVANUDENULLNUMBOATHOBEYOBOEODINOHIOOILYOINTOKAYOLAFOLDYOLGAOLINOMANOMENOMITONCEONESONLYONTOONUSORALORGYOSLOOTISOTTOOUCHOUSTOUTSOVALOVENOVEROWLYOWNSQUADQUITQUODRACERACKRACYRAFTRAGERAIDRAILRAINRAKERANKRANTRARERASHRATERAVERAYSREADREALREAMREARRECKREEDREEFREEKREELREIDREINRENARENDRENTRESTRICERICHRICKRIDERIFTRILLRIMERINGRINKRISERISKRITEROADROAMROARROBEROCKRODEROILROLLROMEROODROOFROOKROOMROOTROSAROSEROSSROSYROTHROUTROVEROWEROWSRUBERUBYRUDERUDYRUINRULERUNGRUNSRUNTRUSERUSHRUSKRUSSRUSTRUTHSACKSAFESAGESAIDSAILSALESALKSALTSAMESANDSANESANGSANKSARASAULSAVESAYSSCANSCARSCATSCOTSEALSEAMSEARSEATSEEDSEEKSEEMSEENSEESSELFSELLSENDSENTSETSSEWNSHAGSHAMSHAWSHAYSHEDSHIMSHINSHODSHOESHOTSHOWSHUNSHUTSICKSIDESIFTSIGHSIGNSILKSILLSILOSILTSINESINGSINKSIRESITESITSSITUSKATSKEWSKIDSKIMSKINSKITSLABSLAMSLATSLAYSLEDSLEWSLIDSLIMSLITSLOBSLOGSLOTSLOWSLUGSLUMSLURSMOGSMUGSNAGSNOBSNOWSNUBSNUGSOAKSOARSOCKSODASOFASOFTSOILSOLDSOMESONGSOONSOOTSORESORTSOULSOURSOWNSTABSTAGSTANSTARSTAYSTEMSTEWSTIRSTOWSTUBSTUNSUCHSUDSSUITSULKSUMSSUNGSUNKSURESURFSWABSWAGSWAMSWANSWATSWAYSWIMSWUMTACKTACTTAILTAKETALETALKTALLTANKTASKTATETAUTTEALTEAMTEARTECHTEEMTEENTEETTELLTENDTENTTERMTERNTESSTESTTHANTHATTHEETHEMTHENTHEYTHINTHISTHUDTHUGTICKTIDETIDYTIEDTIERTILETILLTILTTIMETINATINETINTTINYTIRETOADTOGOTOILTOLDTOLLTONETONGTONYTOOKTOOLTOOTTORETORNTOTETOURTOUTTOWNTRAGTRAMTRAYTREETREKTRIGTRIMTRIOTRODTROTTROYTRUETUBATUBETUCKTUFTTUNATUNETUNGTURFTURNTUSKTWIGTWINTWITULANUNITURGEUSEDUSERUSESUTAHVAILVAINVALEVARYVASEVASTVEALVEDAVEILVEINVENDVENTVERBVERYVETOVICEVIEWVINEVISEVOIDVOLTVOTEWACKWADEWAGEWAILWAITWAKEWALEWALKWALLWALTWANDWANEWANGWANTWARDWARMWARNWARTWASHWASTWATSWATTWAVEWAVYWAYSWEAKWEALWEANWEARWEEDWEEKWEIRWELDWELLWELTWENTWEREWERTWESTWHAMWHATWHEEWHENWHETWHOAWHOMWICKWIFEWILDWILLWINDWINEWINGWINKWINOWIREWISEWISHWITHWOLFWONTWOODWOOLWORDWOREWORKWORMWORNWOVEWRITWYNNYALEYANGYANKYARDYARNYAWLYAWNYEAHYEARYELLYOGAYOKE?*L#LLL LLLLLLLL LLLLLGBG>3G>>> > G , > > >>>333dYTLscTABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/tuxu|ut1ix.^Hx.S̨x.Cԩx.;ة060* -$tx.Hx.x.x.0̩x.x.04$12000 2(1|4x.q,1g x.^|0YXx.R5Dx.<6.lx.#d0x00`0Ԩx.01  20Шx.200L0L6Tx.x.x.}1tȨl0e<0Vx.K\/DP0;6/0%0Ĩx.2x.l0,701x.x.8x.x.0ȩx.ĩx.ܨx.x.}3pЩx.jȨl0apx.Wt7Ox.J3@3#b#Ky#ck#ke#dX#D#9#'#x#x#F #h"E""m"""""""v"f"p`"qT"J"rA"L3"&"s"S "H"!N!v!V!A!a!!B!!C!!!P!D~!v!eb!XR!F!A!g:!2!&!!!G I i l   n O o  Y   Q Rs k Te tZ UR H YC w9 d- Z[ ] ^`-L__L`eP....6z6u6p6<P<>~>s>c>Q>XCGNU C crt1.sas: Sun WorkShop 6 99/08/16GNU C crti.sas: Sun WorkShop 6 99/08/16@(#)SunOS 5.8 Generic February 2000GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GCC: (GNU) 2.95.2 19991024 (release)as: Sun WorkShop 6 99/08/16GNU C crtn.oas: Sun WorkShop 6 99/08/16ld: Solaris Link Editors: 5.8-1.272.interp.hash.dynsym.dynstr.SUNW_version.rel.got.rel.bss.rel.plt.plt.text.init.fini.rodata.got.dynamic.data.ctors.dtors.eh_frame.bss.symtab.strtab.comment.stab.index.stab.shstrtab.stab.indexstr.stabstr     "!!o22- B@3@36 BX3X3 ? Bx3x3` H66M==rS  #YPP_p g`E`El(G(GuHH, {tttttttt89 t  c~0707010023324b000041ed00002713000027100000000454401f33000000000000013800000c3900000000000000000000001300000000root/opt/csw/share0707010023324c000041ed00002713000027100000000354401f33000000000000013800000c3900000000000000000000001700000000root/opt/csw/share/doc0707010023324d000041ed00002713000027100000000254401f33000000000000013800000c3900000000000000000000001f00000000root/opt/csw/share/doc/pkgutil0707010023324e000081a400002713000027100000000154401f2e000046570000013800000c3900000000000000000000002700000000root/opt/csw/share/doc/pkgutil/license GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. 0707010023324f0000812400002713000027100000000154401e0300004dde0000013800000c3900000000000000000000002600000000root/opt/csw/share/doc/pkgutil/readmePKGUTIL ======= Pkgutil, written in Perl and licensed under GPL, is a tool to make installation of packages in Solaris easier. It handles package dependencies so all required packages are installed before the desired package automatically. Configure --------- There's a configuration file in /opt/csw/etc/pkgutil.conf. The only thing you normally need to change there is the mirror location. If you have a pkgutil.conf file in /etc/opt/csw it will override the one in /opt/csw/etc on a setting-by-setting basis. If no pkgutil.conf is found in either of those two locations defaults are used. Official web sites ------------------ URL: http://pkgutil.net URL: http://sourceforge.net/projects/pkgutil Version history --------------- * v2.6.7. Released 2014-10-16 - bldcat: add cleanup of tmp dir for every package processed (Rob Wissmann) * v2.6.6. Released 2013-11-12 - Remove hardcoded paths to SVR4 package tools (Yann Rouillard) * v2.6.5. Released 2012-08-15 - Fix bug in sparse zone detection, should not trigger when only downloading (Dagobert Michelsen) * v2.6.4. Released 2012-02-21 - Fix bug in --cleanup (Laurent Blume) * v2.6.3. Released 2012-02-17 - Fix bug with using pkgcond on old Solaris versions (mikera) * v2.6.2. Released 2012-02-04 - Make wget quiet (Dago) - Fix bug in old (Perl 5.5.3 in Solaris 8) Getopt::Long not handling default values for --deptree (Raboo@IRC) - Recommend CSWcswpki in pkgutil.conf * v2.6.1. Released 2012-01-13 - Flush pkgserv cache before using /var/sadm/install/contents (Dago) - chkcat: algorithm for cyclic dependency checking improved, it's now so fast that option --nocyclic is deprecated (Dago) * v2.6. Released 2011-12-31 - Support site feature RELEASE. Cache names locally, if changed (testing starts to point to kiel instead of dublin e.g.) an alert is issued - Add --catinfo option, OpenCSW #4835 (Sebastian Kayser) - Warn about cswclassutils not in global zone when running in sparse zone (detect read-only /usr) - Change default mirror to http://mirror.opencsw.org/opencsw/testing - Add /usr/perl5/bin to PATH (Dago) - Default unlimited depth for --deptree (Sebastian) - Use -q as default for wget (Dago) - Document (on wiki) how to use pkgutil on Linux for downloading - Add /usr/bin path to locate wget to ease running on Linux - Fix typo in readme about rootpath option - bldcat: make --param very generic, every unrecognized foo:bar means it will be inserted into the catalog as a magic comment (# foo bar) - bldcat: add param option including timestamp and release name * v2.5.1. Released 2011-09-11 - Fix bug with how gpg is called (Ben Walton) * v2.5. Released 2011-09-06 - Package is now for Solaris 9 (code still runs on Solaris 8) - Package is now arch=all - pkgutil, bldcat and chkcat run through perlcritic and perltidy - Exit codes in pkgutil cleaned up. Use 0 for anything less than an error - pkgutil resets LD_LIBRARY_PATH (Dago) - Untaint: clear ENV variables, set PATH, almost all system calls split up - Reverse order of current, updated and new packages (Ben Walton) - Add option -R/--rootpath for consistency with Solaris pkg tools. Can be used with LU (Dago) - Add levels to --deptree - Add package dir option (-P/--pkgdir) so doesn't have to be /package (Mark Phillips) - Add note about multiple mirrors in pkgutil.conf - Add pkgrmopts in pkgutil.conf for specifying pkgrm options (Juraj Lutter) - Fix bug with "-o -" for streams (Dago) - bldcat: ignore i-deps when version specified in depend file (Dominic Cleal) - bldcat: change default work dir from /tmp to /var/tmp since it's safer (Mark Phillips) - chkcat: add --parse option * v2.4. Released 2011-05-15 - pkgutil: new option --cleanup. When invoked, scans for /var/sadm/pkg/*/install/obsolete. If it finds /var/sadm/pkg/CSWlibfoo/install/obsolete and nothing installed depends on CSWlibfoo, then CSWlibfoo gets removed from the system - Support key package (/etc/opt/csw/pki, /var/opt/csw/pki). Change default homedir (Ben Walton) - Parse option for download, incl. catalog and md5 (Maciej Blizinski) - Include distribution (e.g. unstable) with pkgliststyle 2 - Support absolute paths in --output (Dago) - Show last two parts of mirror path as distribution (e.g. dublin/core) - Change default pkgliststyle to 2 - Speed up option -l with glob - Silence "Checking integrity ..." when --parse is on (4693@OpenCSW) - pkgutil: eval 'PATH=/opt/csw/bin:$PATH exec perl -x -w $0 ${1+"$@"}' (PCA) - pkgutil: fix pkgask/response bug (3205333@SF) (Julian Clifton-Thompson) - pkgutil: fix a bug in --cleanup when using --yes or auto (admin not set) - Do not duplicate mirrors present in pkgutil.conf in both /opt and /etc (4693@OpenCSW) - Fix bug in hook support (Ben Walton) - bldcat: add -q/--quiet option - bldcat: improve support for non-CSW packages (3300709@SF) (Mark Heily) - chkcat: add -c/--nocyclic option to skip cyclic dependency checking, helps speed a lot - chkcat: suppress warning exit code 1 when using --erroronly - chkcat: multiple catalog files can be specified and checked as a set (Maciej Blizinski) * v2.3. Released 2011-02-12 - Add option --parse for machine parsable output. No headers are displayed and columns are separated by a tab. Works with -a/A/c/C and --describe - Add option -l/--list to list installed packages only with names - When an upgrade includes pkgutil, pkgutil is always completely upgraded before proceeding with the rest of the packages - Exit with status 0 when comparing a single pkg not in catalog (to help Puppet) - Do not prompt at pkgadd error when using --yes, exit immediately instead (Mark Bannister) - Add deptree_filter_common (pkgutil.conf option) missing from pkgutil -V output - Better handle packages not in catalog (Mark Bannister) - Add fuzzy matching as last resort when using -a - Redirect some messages to STDERR - Prefix debug messages with DEBUG - Fix bug with last resort wget (Claes Lindvall) - bldcat: play nice with old catalogs that are gpg signed (Mark Bannister) - bldcat: do not reuse info if filename changed (Mark Bannister) - chkcat: fix bug with gpg signed catalogs (Mark Bannister) * v2.2. Released 2010-10-21 - Add option --deptree to display dependencies in a similar way to ptree (3078744@SF) - Add option -A/--compare-avail to compare catalog with local packages (Mark Bannister) - Add auto mode install/remove (on the fly --yes) (Ben Walton) - New option (deptree_filter_common) in pkgutil.conf to filter out CSWcommon from --deptree output - Add long option name, --compare-diff, to -C (Mark Bannister) - Add list of downloaded packages when using -d (Dago) - Modify download list output (4530@OpenCSW) (Dago, Sebastian) - Add info about which catalog is being gpg checked (Mark Bannister) - Display number of loaded packages per catalog (when updating the catalog or using debug) (Mark Bannister) - Group install/remove output better (Dago) - Change default URL to http://mirror.opencsw.org/opencsw/unstable - User agent example in pkgutil.conf - Fix bug with exit-prompt (y not default) - More robust downloads - Recommend CSWcoreutils instead of obsolete CSWtextutils for MD5 support - Documentation fixes - bldcat: improve speed with --fast option (Dago) * v2.1. Released 2010-07-28 - Option to suppress list of current packages - Shows number of packages, e.g. 24 CURRENT packages - Faster checking if a package is installed - Safe file and dir creations in pkgutil, bldcat and chkcat - More complete support for alternate root path - Documentation fixes - Add mask to mkdir to restore compatibility with Perl 5.5.3 in Solaris 8 (Thomas Pawlikaniec) - Add pkgutil to signal handler output - Clean version fields from non-digits during compares (Mark Bannister) - Fix detecting end of REV list during compares (Mark Bannister) - Fix bug with packages containing dashes when using remove - Fix bug with -x, now uses pattern just like in pkgutil.conf - Add GNU stub to bldcat and chkcat - bldcat: add missing -W in perldoc/man page - bldcat: fix bug with trailing slash on package dir - bldcat: fix bug with package dir being included in filename (Mark Bannister) * v2.0. Released 2010-06-08 - Improve loop algorithm, improves speed (Joe Baro) - Non-root use now use ~/.pkgutil instead of current dir - Add support for alternate root path (4117@OpenCSW) - Add unrecognized option message (Sebastian) (4395@OpenCSW) - Change project-URL to pkgutil.net - Make descriptions file missing non fatal - Use wgetopts in pkgutil.conf for advanced wget options like proxy settings - Add support for the non-CSW option in pkgutil.conf to the remove feature (2907656@SF) - Fix for stream option (3008549@SF) - Fix number shown when removing during upgrades - Fix bug with exclude - Fix bug with -N - Fix bug with removed admin file when multiple instances are detected (Dago) - Fix that chkcat doesn't work with non-CSW - Improve documentation for bldcat and chkcat - Change default in bldcat to 9 fields - chkcat: check that CSWcommon and CSWgzip are uncompressed - bldcat: fix bug about skipping SUNW deps - chkcat: warn about SUNW deps - chkcat: error when number of fields not 8 or 9 * v1.10. Released 2010-03-10 - Add -p/--param option to override configuration options from pkgutil.conf (4045@OpenCSW) - Add pkgutil.conf option to not cache fetching of catalogs - Health check for gzip and wget binaries - Added signal handling - Making some output more consistent and copy/paste friendly - Display the full target path when using --extract (4154@OpenCSW) - Nicer exits should not leave stale lock files (3994@OpenCSW) - Fix bug with -V and --config combo (4116@OpenCSW) - Fix that option -N/--nodeps didn't work with -u/--update (4172@OpenCSW) - Fix uninitialized value bug (4296@OpenCSW) - Fix gpg bug with international LANG setting (4289@OpenCSW) - Add comment about -S to not show license during install (pkgadd option) - Fix release dates for v1.9.1 in readme and add link to Maciej's script in readme for pkgutilplus - Merge modified part of patch from Blastwave fork (check exit status from pkgadd) - Change missing dependencies from warning to error in chkcat - Add -W/--workdir option to bldcat to set workdir (Maciej) - Mirror-script added (to pkgutilplus) to create mirror structure, uses bldcat (Dagobert Michelsen) * v1.9.1. Released 2009-12-10 - cswpkgloghooks added as a dependency to pkgutilplus, adds logging of package maintenance actions - Maciej Blizinski's build_sun_catalog.py script added to pkgutilplus, it builds CSW catalogs from Sun packages - gpg homedir support (Maciej Blizinski) - Make -a/c/C and --describe case sensitive (2908177@SF) (David Everly) - Fix upgrade all bug (2907651@SF) (David Everly) - Fix bug with system calls (Bartosz Trudnowski) * v1.9. Released 2009-11-27 - Add --single (used with -c) to quickly check one package (Maciej Blizinski) - Add --force option to sync with mirror. You can install or update to the version on the mirror even if your local version is newer - Add exclude_pattern option to pkgutil.conf, use simple patterns to exclude packages from install/upgrade (Maciej Blizinski) - Remove all upgrade packages first (2890862@SF) (David Everly) - Add support for response (pkgask) files (2890896@SF) (David Everly) - Local package files can now be upgraded as well (Sebastian Kayser) - Enhance description of noncsw option in pkgutil.conf (3990@OpenCSW) (Sebastian Kayser) - Default maxpkglist (loop detection) value raised to 250000 to decrease risk of false alarm (Sebastian Kayser) - Fix -F bug (4039@OpenCSW) (Sebastian Kayser) * v1.8. Released 2009-10-30 - Simple pkgutil logging script included in pkgutilplus using the new hook mechanism - Added pre/postargproc hooks (Ben Walton) - Support I-dependencies (remove incompatible packages) when using new 9-field catalog - Added pre/postfetch hooks (Ben Walton) - Install local package files, e.g. "pkgutil -i foo.pkg.gz" (Trygve Laugstol) - Fix transform (extract) feature (3904@OpenCSW) - Transform renamed to extract to be more generic (Sebastian Kayser) - Extract and stream must now be used with download, e.g. "-d --stream" - Selecting target platform is now possible for --download and --extract, not just --stream (3914@OpenCSW) (Sebastian Kayser) - Catalog update interval user configurable via pkgutil.conf. Set to -1 for no automatic updates, 0 for every time pkgutil is run and 1+ for the number of days between updates. 14 would emulate current behavior (Trygve Laugstol) - Add support for catalog names in --listfile (3894@OpenCSW) (Sebastian Keyser) - Split package into core pkgutil and extension pkgutilplus (bldcat/chkcat, more to come) - Remove unused declaration causing noise when using -r (3903@OpenCSW) - Fix missing options in man/perldoc page - Add support for non-CSW packages to bldcat (2865123@SF) (David Everly) - Switch back to default 8 field catalogs for bldcat and chkcat - bldcat and chkcat doesn't require CSWperl, exit with helpful message if Digest::MD5 is missing (3917@OpenCSW) * v1.7. Released 2009-09-11 - Clarify text about config file priority (2835200@SF) (Ken Stailey) - Add config status to --syscheck option (2855094@SF) (Dagobert Michelsen) - Add protection against concurrent pkgutil processes (3831@OpenCSW) - New option -N (nodeps) to skip dependencies, you get only what you specified on the command line - New option --transform to download and transform (unpack) packages (Sebastian Kayser) - New option -L (listfile) to list files in packages. Also works on package files, you can even mix them on the command line - New option -F (findfile) to see which package a file belongs to - New option --describe to describe available packages - New feature: package hooks (Ben Walton) - Loop protection (against circular dependencies in the catalog) - Optional new presentation of the needed packages during install/upgrade, one package per line to enhance readability. Package list is now sorted as well. Set pkgliststyle to 1 in pkgutil.conf - Cyclic dependency detection added to chkcat - Support new catalog format with added field for incompatible packages. Use -f8 in bldcat and chkcat to use the old format * v1.6.1. Released 2009-06-05 - Fix -y bug when upgrading pkgutil (3701@OpenCSW) (Sebastian Kayser, Dagobert Michelsen) - Fix order of install to ,e.g., make sure that cswclassutils is always installed first/early (3702@OpenCSW) (Sebastian Kayser) * v1.6. Released 2009-05-29 - Fix -T bug (3689@OpenCSW) (Sebastian Kayser) - Fix -W bug (3688@OpenCSW) (Sebastian Kayser) - New option -C, same as -c but only shows different versions, no more piping to grep -v SAME (Ben Walton) - New option --trace to debug pkgadd/pkgrm operations (#3683) (Yann Rouillard) - Replaced some system commands with native Perl - New option --config for using custom configuration file (Don Jackson) - Fix size formatting - Skip showing pkgadd patch when using -V on 5.11 (Dennis Clarke) - Update credits in perldoc/man page - Perldoc/man page added to both bldcat and chkcat - chkcat now includes more tests (Derek Whayman) - chkcat exit values are 0 for OK, 1 for warning and 2 for error - New option -e (erroronly) added to chkcat to supress warnings - New option -q (quiet) added to chkcat to supress all output * v1.5. Released 2009-04-09 - Support multiple catalogs with multiple versions of each package and selecting specific versions (Derek Whayman) - Performance enhancements (Derek Whayman) - Fix catalog update issue when mirror catalog is old (Ivo De Decker) - Increased protection against broken/empty local package files (Sebastian Kayser) - Perldoc/man updates - bldcat skips dependencies to the same package - chkcat checks for packages that contain dependencies to themselves * v1.4. Released 2009-01-19 - Dependency calculations are now much faster - Support for local file repositories (Dennis Clarke) - Keyword "same" when using -c replaced with "SAME" (Dennis Clarke) - bldcat now skips SUNW packages as dependencies * v1.3.1. Released 2008-12-17 - Small packaging bug fixed. No code changes * v1.3. Released 2008-12-12 - New option -x (exclude) to exclude packages (Ihsan Dogan) - New option -s (stream) to build a custom package (Dagobert Michelsen) - New option -T (target) to set architecture and release for package stream (-s) - New option -o (output) names the package stream from -s (Dagobert Michelsen) - New option -W (workdir) to set another directory to use for downloads. Some operations are now possible without being root - Option -f (force) renamed to -y (yes) (Dagobert Michelsen) - Make config file more NFS/read-only friendly (Dagobert Michelsen) - Changed default mirror from unstable to current (Dagobert Michelsen) - Fixed bug which caused a warning to be displayed during some upgrades - Fixed that locally cached packages are also MD5 checked (Dennis Clarke) - PATH added to -V (syscheck) output - Wget and Perl binaries added to -V - Documented admin file in perldoc/man page - Several changes in bldcat to improve speed (Dagobert Michelsen) - bldcat supports the description file (Dagobert Michelsen) - chkcat in verbose mode benefits from the same speed fix as in bldcat - chkcat now checks for missing dependencies * v1.2.1. Released 2008-11-28 - Fixes compare bug with package names containing dashes * v1.2. Released 2008-11-12 - Temp site (-t) does no longer replace the mirror defined in pkgutil.conf. It instead is considered the primary location and the mirror defined in pkgutil.conf is considered the secondary. That means you can point -t to your own repository of packages that are built with dependencies to CSW and it will fetch all packages necessary regardless of their location - Better MD5 support for Solaris 8 and 9 - Arguments to -a and -c are now treated like filters so "pkgutil -a bind dhcp" equals "pkgutil -a | egrep -i 'bind|dhcp'" - Changed version info to be -v instead of -V - Added -V (syscheck) to show info about binaries and more that pkgutil needs to support all features - Perldoc/man page updated with configuration file info - Search for gzip in more places - fixed bug when reporting package missing in catalog (Dagobert Michelsen) - bundled wget binaries moved to /opt/csw/libexec/pkgutil - bldcat supports CSW_CATEGORY - bldcat now extracts data in a more dependable way - chkcat checks for duplicates in catalog - chkcat with option -v checks the catalog data against actual package files if they are located in the same directory as the catalog parsed * v1.1. Released 2008-10-24 - Added possibility to use both common name and package name - Added bldcat to build catalalogs from package files - Added chkcat to check catalogs for errors - Fix for packages that are not compressed (e.g. gzip) - Fix for size zero local files (failed package downloads) - Fix for gpg-checks when updating the catalog (Yann Rouillard) - Fix for version compare code rule #3 (Yann Rouillard) - Updated prototype for package (Dennis Clarke) * v1.0. Released 2008-10-07 - Initial release - Version compare method by James Lee and Dagobert Michelsen - Tested to work on Solaris 8 with default Perl 5.5.3 -- $Id: readme 463 2014-10-16 19:28:57Z bonivart $ 07070100233250000041ed00002713000027100000000354401f33000000000000013800000c3900000000000000000000001700000000root/opt/csw/share/man07070100233251000041ed00002713000027100000000254401f33000000000000013800000c3900000000000000000000001c00000000root/opt/csw/share/man/man1070701002332520000812400002713000027100000000154401e0400004b1c0000013800000c3900000000000000000000002600000000root/opt/csw/share/man/man1/pkgutil.1.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "PKGUTIL 1" .TH PKGUTIL 1 "2014-10-16" "perl v5.10.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" pkgutil \- install Solaris packages the easy way .SH "SYNOPSIS" .IX Header "SYNOPSIS" pkgutil [option]... [package]... .SH "DESCRIPTION" .IX Header "DESCRIPTION" Pkgutil, written in Perl and licensed under \s-1GPL\s0, is a tool to make installation of packages in Solaris easier. .PP It handles package dependencies so all required packages are installed before the desired package automatically. .PP A catalog is used to make this possible. The format is: .PP common_name\ version\ package_name\ file_name\ md5_hash\ pkg_size\ dependencies\ category .PP Example: .PP bind\ 9.4.2,REV=2008.07.09_rev=p1\ CSWbind\ bind\-9.4.2,REV=2008.07.09_rev=p1\-SunOS5.8\-sparc\-CSW.pkg.gz\ f68df57fcf54bfd37304b79d6f7eeacc\ 2954112\ CSWcommon|CSWosslrt\ net .PP In the example CSWbind has two dependencies separated by a pipe. Multiple categories can also be separated by pipe characters. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-i, \-\-install\fR" 5 .IX Item "-i, --install" Install package. Will install the specified packages with all their dependencies. You may specify an explicit version (e.g. amarok\-1.4.8,REV=2008.02.26) if desired, otherwise the latest version found is chosen. .IP "\fB\-u, \-\-upgrade\fR" 5 .IX Item "-u, --upgrade" Upgrade package. A special argument is \*(L"all\*(R" which will upgrade all installed packages if possible, no argument is the same as \*(L"all\*(R". If one or more packages are given as arguments only those will be upgraded. .IP "\fB\-r, \-\-remove\fR" 5 .IX Item "-r, --remove" Remove package. This will remove a package including all dependencies that are not in use by other packages. .Sp Note that this feature is experimental. Use with caution. .IP "\fB\-d, \-\-download\fR" 5 .IX Item "-d, --download" Download only. Same as install but stops after downloading the packages. .IP "\fB\-U, \-\-catalog\fR" 5 .IX Item "-U, --catalog" Update catalog. .IP "\fB\-a, \-\-available\fR" 5 .IX Item "-a, --available" Show available packages. .IP "\fB\-\-describe\fR" 5 .IX Item "--describe" Describe available packages. .IP "\fB\-c, \-\-compare\fR" 5 .IX Item "-c, --compare" Compare installed packages to current. .IP "\fB\-C, \-\-compare\-diff\fR" 5 .IX Item "-C, --compare-diff" Compare installed packages to current, show only different versions. .IP "\fB\-A, \-\-compare\-avail\fR" 5 .IX Item "-A, --compare-avail" Compare available packages to those installed. .IP "\fB\-e, \-\-email=address\fR" 5 .IX Item "-e, --email=address" Send e\-mail with available updates. E\-mail address as argument. Don't use with other options. .IP "\fB\-t, \-\-temp=site\fR" 5 .IX Item "-t, --temp=site" Temporarily use this site for download. Must be the complete url where to find the catalog and associated packages. May be specified multiple times. .IP "\fB\-s, \-\-stream\fR" 5 .IX Item "-s, --stream" Build a package stream for a certain architecture and \s-1OS\s0 release. All dependencies will be included in the stream and the needed command to install them in the correct order will be displayed. Must be used with \-d. .IP "\fB\-T, \-\-target=arch:rel\fR" 5 .IX Item "-T, --target=arch:rel" Specify architecture and \s-1OS\s0 release when downloading, e.g. i386:5.9 or sparc:5.10. If not specified defaults to architecture and release of the host running pkgutil. .IP "\fB\-o, \-\-output=file\fR" 5 .IX Item "-o, --output=file" File name for package stream. Used with \-s. A special argument is \*(L"\-\*(R" which sends the stream to standard output, see example below. The default name is the first package argument followed by architecture and \s-1OS\s0 release, for example \*(L"bind.i386.5.10.pkg\*(R". .IP "\fB\-x, \-\-exclude=pattern\fR" 5 .IX Item "-x, --exclude=pattern" Simple pattern that will exclude matching packages. This option can be specified multiple times. .IP "\fB\-W, \-\-workdir=path\fR" 5 .IX Item "-W, --workdir=path" Path to use for work directory. This can be used to run pkgutil as non-root, e.g. called from a web server. .IP "\fB\-P, \-\-pkgdir=path\fR" 5 .IX Item "-P, --pkgdir=path" Path to use for package downloads. This can be used to run pkgutil as non-root, e.g. called from a web server. Default is /package. .IP "\fB\-R, \-\-rootpath=path\fR" 5 .IX Item "-R, --rootpath=path" Path to use for root_path. This is used by Solaris pkg tools like pkgadd, pkgrm and so on. Setting this option overrides root_path in pkgutil.conf. Default is not set. .IP "\fB\-\-config=file\fR" 5 .IX Item "--config=file" Use this configuration file instead of the default ones. .IP "\fB\-y, \-\-yes\fR" 5 .IX Item "-y, --yes" Answer yes on all prompts. Skips prompt when multiple packares are to be downloaded. Makes pkgrm/pkgadd operations more silent and without prompts. Only makes sense with \-i and \-u. .IP "\fB\-f, \-\-force\fR" 5 .IX Item "-f, --force" Force updates regardless of version compare result, as long as local and mirror version is not the same an update is carried out. This can be used as a rollback from the testing mirror to current or from current to stable for example. .IP "\fB\-n, \-\-nomod\fR" 5 .IX Item "-n, --nomod" No modifications are made to the system. Stops before downloading catalog/packages. Use it to simulate if catalog needs updating or which packages will be downloaded. Only makes sense with \-i, \-u and \-U. .IP "\fB\-N, \-\-nodeps\fR" 5 .IX Item "-N, --nodeps" No dependencies, only what you specify on the command line will be used. Useful when using pkgutil as a download tool of specific packages or if you use the testing repo that might pull in unwanted packages. .IP "\fB\-D, \-\-debug\fR" 5 .IX Item "-D, --debug" Debug mode. Adds a lot of info about what's going on. Only use if you're having problems you think is a bug. .IP "\fB\-\-trace\fR" 5 .IX Item "--trace" Set trace mode (\-v) for pkgadd/pkgrm. .IP "\fB\-h, \-\-help\fR" 5 .IX Item "-h, --help" Show this help. .IP "\fB\-v, \-\-version\fR" 5 .IX Item "-v, --version" Show pkgutil version. .IP "\fB\-V, \-\-syscheck\fR" 5 .IX Item "-V, --syscheck" System check. This shows info about binaries and more that pkgutil needs to support all features. .IP "\fB\-l, \-\-list\fR" 5 .IX Item "-l, --list" List installed packages. .IP "\fB\-L, \-\-listfile\fR" 5 .IX Item "-L, --listfile" List files in packages. Works on both installed packages as well as on (uncompressed) package files. You can even mix them on the command line. .IP "\fB\-F, \-\-findfile\fR" 5 .IX Item "-F, --findfile" Find files in installed packages. .IP "\fB\-\-deptree=depth\fR" 5 .IX Item "--deptree=depth" Display dependency tree. Depth is the number of levels to show, minumum is 1. .IP "\fB\-\-extract\fR" 5 .IX Item "--extract" Will fetch and extract package content. Must be used with \-d. .IP "\fB\-\-single\fR" 5 .IX Item "--single" Single package check. This is much faster than checking all installed packages, note that using something like \*(L"\-c foo\*(R" still checks all packages, it just filters the output to only show lines containing foo. Must be used with \-c. .IP "\fB\-p, \-\-param=opt:val\fR" 5 .IX Item "-p, --param=opt:val" Override configuration option. All configuration options in pkgutil.conf can be overridden except the mirror option (use \-t for that). This can be useful if you temporarily want to disable gpg checks for example. .IP "\fB\-\-parse\fR" 5 .IX Item "--parse" Machine parsable output, no headers and all columns are separated by one tab. Use this together with scripts to get a reliable output format that is simpler to parse. .IP "\fB\-\-cleanup\fR" 5 .IX Item "--cleanup" Clean up obsolete packages. For example a renamed package that is not needed any more. .IP "\fB\-\-catinfo\fR" 5 .IX Item "--catinfo" Display information about the catalogs used, e.g. number of packages and local path. .SH "EXAMPLES" .IX Header "EXAMPLES" .SS "Example 1" .IX Subsection "Example 1" \&\f(CW\*(C`# pkgutil \-i CSWbind\*(C'\fR .PP Will install CSWbind with all required dependencies. .SS "Example 2" .IX Subsection "Example 2" \&\f(CW\*(C`# pkgutil \-e nobody@foo.bar\*(C'\fR .PP Will run silently and send an e\-mail (with mailx) to the given address if there's updated packages available. Run it from crontab once weekly. .SS "Example 3" .IX Subsection "Example 3" \&\f(CW\*(C`# pkgutil \-y \-o \- \-s bind | gzip > bind.pkg.gz\*(C'\fR .PP Will send a package stream including all dependencies needed for CSWbind to standard output which is piped to gzip. With \*(L"\-o \-\*(R" the normal output is sent to standard error and \*(L"\-y\*(R" is used to skip the confirmation prompt. .SS "Example 4" .IX Subsection "Example 4" \&\f(CW\*(C`# pkgutil \-T i386:5.10 \-s bind\*(C'\fR .PP Will make a package stream including all dependencies needed for CSWbind. The package stream will contain packages for the i386 architecture and Solaris 10 regardless of host used to run pkgutil. .SH "CONFIGURATION" .IX Header "CONFIGURATION" Pkgutil uses a configuration file, pkgutil.conf, that contains a few important settings. No modifications are mandatory though since pkgutil will happily run with the defaults. .PP There's a configuration file in /opt/csw/etc/pkgutil.conf. The only thing you normally need to change there is the mirror location. If you have a pkgutil.conf file in /etc/opt/csw it will override the one in /opt/csw/etc on a setting-by-setting basis. If no pkgutil.conf is found in either of those two locations defaults are used. .PP The settings that can be used are: .PP \&\f(CW\*(C`catalog_not_cached\*(C'\fR .PP Tells your proxy server to disable caching during fetching of the catalog and descriptions. Default is true. .PP \&\f(CW\*(C`catalog_update\*(C'\fR .PP Number of days between automatic catalog updates. Special cases are \-1 if you want to disable automatic updates and 0 if you always want to update the catalog. Default is 14. .PP \&\f(CW\*(C`deptree_filter_common\*(C'\fR .PP Filter out CSWcommon from \-\-deptree output. Useful since almost every package depends on CSWcommon, setting this option to true reduces the number of lines a lot without affecting the actual information much. Default is false. .PP \&\f(CW\*(C`exclude_pattern\*(C'\fR .PP Space separated list of simple patterns that will exclude matching packages when updating or installing. If you, e.g., never want cups related packages updated accidentally you can add the string cups here, this will exclude all package names that contain that string. Default is blank. .PP \&\f(CW\*(C`gpg_homedir\*(C'\fR .PP The path to the gpg directory (instead of ~/.gnupg or /var/opt/csw/pkgi if CSWpki is installed) when verifying the catalogs integrity. .PP \&\f(CW\*(C`maxpkglist\*(C'\fR .PP During dependency calculation the recursive algorithm needs to be protected against cyclic dependencies in the catalog (packages that list each other as dependencies) or pkgutil will not stop until memory is exhausted. This sets the maximum number of recursions before pkgutil stops. .PP \&\f(CW\*(C`mirror\*(C'\fR .PP This is the mirror that is used for downloading the catalog and packages. Try setting it to your nearest mirror to improve download speed. This option may be specified multiple times. .PP It also supports (in an experimental way) the file:// protocol for local/NFS mirrors. Example: \f(CW\*(C`mirror=file:///absolute/path/to/files\*(C'\fR .PP \&\f(CW\*(C`noncsw\*(C'\fR .PP Enable (default is disable) support for non-CSW prefixed packages. .PP Pkgutil also uses a file to configure pkgadd when the yes (\-y) option is used. This file is located in /var/opt/csw/pkgutil and is called admin. It's by default set up to fully automate installations but if you change something in this file it will be preserved during upgrades of pkgutil. Read more about the admin file with \*(L"man \-s4 admin\*(R". .PP \&\f(CW\*(C`pkgaddopts\*(C'\fR .PP Send options to pkgadd, one example is \-G that will only install the packages in the global zone for Solaris 10. A useful setting is \-S, that will not display the license during install. .PP \&\f(CW\*(C`pkgliststyle\*(C'\fR .PP Style of package list when installing/upgrading packages. 0 is the one used since the first version of pkgutil, it's space efficient but less readable. 1 is the one introduced in v1.7, it's one package per line which is easier to read. 2 is the same as 1 but also displays which distribution a package comes from, e.g. unstable or stable. .PP \&\f(CW\*(C`pkgrmopts\*(C'\fR .PP Send options to pkgrm, one example is \*(L"\-O nozones\*(R" that will only deinstall the packages in the global zone for Solaris 10. .PP \&\f(CW\*(C`root_path\*(C'\fR .PP Set alternate root path (\-R with pkg commands). Default is /. .PP \&\f(CW\*(C`show_current\*(C'\fR .PP Show the current list of packages or not. You can choose to not show the list of current packages to get less output when doing operations. Default is true. .PP \&\f(CW\*(C`stop_on_hook_soft_error\*(C'\fR .PP This option determines whether or not execution will be halted if a hook returns 2 as its exit code. Execution is always stopped if a hook returns 1. Set this to true to enable it. .PP \&\f(CW\*(C`use_gpg\*(C'\fR \&\f(CW\*(C`use_md5\*(C'\fR .PP These two can enable (default is disabled for both) checking the catalogs integrity (\s-1GPG\s0) and that each downloaded file is unchanged from the published one (\s-1MD5\s0). To use \s-1GPG\s0 you need CSWgnupg installed. \s-1MD5\s0 is supported by default in Solaris 10 and on Solaris 8 and 9 if you have CSWperl installed and have /opt/csw/bin first in your path. You can also install CSWcoreutils to get \s-1MD5\s0 support. .PP \&\f(CW\*(C`wgetopts\*(C'\fR .PP Send options to wget, for example to show more or less information during downloads. .SH "PKGASK RESPONSE FILES" .IX Header "PKGASK RESPONSE FILES" Pkgutil supports pkgask response files and will use them if you provide them. Create a pkgask directory in your work directory (normally /var/opt/csw/pkgutil) and put your response files there. .SH "SEE ALSO" .IX Header "SEE ALSO" http://pkgutil.net .PP http://sourceforge.net/projects/pkgutil .SH "TODO" .IX Header "TODO" Add unit testing. .SH "AUTHOR" .IX Header "AUTHOR" Peter Bonivart .SH "CREDITS" .IX Header "CREDITS" Mark Bannister .PP Joe Baro .PP Maciej Blizinski .PP Dennis Clarke .PP Ihsan Dogan .PP David Everly .PP Neil Houston .PP Don Jackson .PP Sebastian Kayser .PP Trygve Laugstol .PP James Lee .PP Juraj Lutter .PP Dagobert Michelsen .PP Yann Rouillard .PP Remko de Vrijer .PP Ben Walton .PP Derek Whayman .PP For more details, see the readme file. .SH "COPYRIGHT AND DISCLAIMER" .IX Header "COPYRIGHT AND DISCLAIMER" Copyright (C) 2008\-2012 Peter Bonivart. This program is free software; you can redistribute it and/or modify it under the terms of the \s-1GNU\s0 General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. .PP This program is distributed in the hope that it will be useful, but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of \s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the \s-1GNU\s0 General Public License for more details. .PP You should have received a copy of the \s-1GNU\s0 General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, \s-1MA\s0 02111\-1307 \s-1USA\s0. 07070100233253000041ed00002713000027100000000354401f33000000000000013800000c3900000000000000000000001100000000root/opt/csw/var07070100233254000041ed00002713000027100000000254401f33000000000000013800000c3900000000000000000000001900000000root/opt/csw/var/pkgutil07070100233255000081a400002713000027100000000154401e04000000a70000013800000c3900000000000000000000002300000000root/opt/csw/var/pkgutil/admin.CSWmail= instance=overwrite partial=nocheck runlevel=nocheck idepend=nocheck rdepend=nocheck space=nocheck setuid=nocheck conflict=nocheck action=nocheck basedir=default 07070100233245000041ed00002713000027100000000254401f33000000000000013800000c3900000000000000000000001100000000root/opt/csw/etc07070100233246000081a400002713000027100000000154401e03000011b10000013800000c3900000000000000000000002200000000root/opt/csw/etc/pkgutil.conf.CSW# Configuration file for pkgutil # $Id: pkgutil.conf 448 2012-02-04 14:22:21Z bonivart $ # Master configuration file is placed in /opt/csw/etc. Place a pkgutil.conf # file in /etc/opt/csw if you want a local override setting-by-setting. # Nothing below is mandatory to change, pkgutil will use the default values # noted below for each option unless something is uncommented. # Catalog not cached # Tells your proxy server to disable caching during fetching # of the catalog and descriptions. # Default: true #catalog_not_cached=true # Catalog update interval # Number of days between automatic catalog updates. Special cases are -1 # if you want to disable automatic updates and 0 if you always want to # update the catalog. # Default: 14 #catalog_update=14 # Filter out CSWcommon from --deptree output # Set this to true if you don't want to see lots of lines with CSWcommon. # Default: false #deptree_filter_common=true # Exclude pattern # Space separated list of simple patterns that will exclude matching packages # when updating or installing. # Default: blank #exclude_pattern= # gpg homedir # The path to the gpg directory (instead of ~/.gnupg) when verifying the # catalogs integrity. # NOTE: we recommend you install the CSWcswpki package for # easiest handling of the keys # Default: blank #gpg_homedir= # Max package list length # During dependency calculation the recursive algorithm needs to be protected # against cyclic dependencies in the catalog (packages that list each other # as dependencies) or pkgutil will not stop until memory is exhausted. # Default: 100000 #maxpkglist=100000 # Mirror to use for downloads # See http://www.opencsw.org/mirrors for alternative mirrors. # NOTE: remember to include distribution (e.g. testing) at the end of the url. # NOTE: you can have multiple mirrors by defining multiple mirror lines. # Default: http://mirror.opencsw.org/opencsw/testing #mirror=http://mirror.opencsw.org/opencsw/testing # Support non-CSW packages # If you have your own packages that have a different prefix that you want # to use with pkgutil you must enable this otherwise pkgutil will skip every # package not prefixed by CSW. # NOTE: this also affects options like -c/C, however it's easy to filter the # output if wanted, e.g. "pkgutil -C CSW". # Default: false #noncsw=true # Options to use for pkgadd # You can set it to -S to skip displaying the license during install. # Solaris 10: If you wish to limit pkgutil to installing packages # only to the global zone, set it to -G. Note that pkgrm # does not have the same option. # WARNING: do not modify this unless you know what you're doing. # Default: blank #pkgaddopts=-G -S # Style of package list when installing/upgrading packages # 0 is the one used since the first version of pkgutil, it's space efficient # but less readable. 1 is the one introduced in v1.7, it's one package per # line which is easier to read. 2 is the same as 1 but also displays which # distribution a package comes from, e.g. unstable or stable. # Default: 2 #pkgliststyle=2 # Options to use for pkgrm # Solaris 10: If you wish to limit pkgutil to removing packages # only in the global zone, set it to -O nozones. # WARNING: do not modify this unless you know what you're doing. # Default: blank #pkgrmopts=-O nozones # Root path to use # WARNING: do not modify this unless you know what you're doing. # Default: / #root_path=/a # Show the current list of packages or not # You can choose to not show the list of current packages to get less output # when doing operations. # Default: true #show_current=true # How to handle soft errors from hooks that are called # A hook that exits with code 1 will cause pkgutil to stop. If this value is # true, exit code 2 will also cause pkgutil to stop. Exit code 2 is a non-fatal # error condition from a hook and it is a site dependent choice whether or # not to honour this condition. Set to true to enable. # Default: false #stop_on_hook_soft_error=false # Use of gpg, md5 # To enable use of gpg or md5, uncomment these # NOTE: it doesn't make sense to use md5 but not gpg so your options should be: # 1. both disabled, 2. gpg enabled, 3. both enabled. # Default: false, false #use_gpg=true #use_md5=true # Options to use for wget # You can also use any option from wgetrc with --execute, e.g. # "--execute http_proxy=http://proxy.foo.bar". # WARNING: do not modify this unless you know what you're doing. # Default: blank #wgetopts=-U pkgutil 07070100233243000041ed00002713000027100000000254401f33000000000000013800000c3900000000000000000000001100000000root/opt/csw/bin07070100233244000081ed00002713000027100000000154401e0300019f9d0000013800000c3900000000000000000000001900000000root/opt/csw/bin/pkgutil#!/bin/sh #! -*- perl -*- eval 'PATH=/opt/csw/bin:$PATH:/usr/perl5/bin exec perl -x -w $0 ${1+"$@"}' if 0; # pkgutil - manages packages on Sun/Oracle Solaris systems # Copyright (C) 2008-2014 Peter Bonivart # $Id: pkgutil 463 2014-10-16 19:28:57Z bonivart $ # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. # # The author, Peter Bonivart, can be contacted by email at bonivart@opencsw.org use strict; use Cwd; use Getopt::Long; Getopt::Long::Configure qw( no_ignore_case bundling ); use Symbol qw( gensym ); # Unbuffered output $| = 1; # Signal handlers $SIG{HUP} = 'IGNORE'; $SIG{TERM} = $SIG{INT} = $SIG{QUIT} = \&signal_handler; # Untainting delete @ENV{qw(LD_LIBRARY_PATH IFS CDPATH ENV BASH_ENV)}; # Make %ENV safer $ENV{'PATH'} = '/usr/sbin:/bin:/usr/bin:/opt/csw/bin'; $ENV{'LANG'} = 'C'; # Ensure we always work from a directory that won't # be yanked out from under pkgadd/pkgrm. chdir('/'); my $debug = 0; my $pkgutilver = "2.6.7"; my $use_md5 = 0; my $use_gpg = 0; my $noncsw = 0; my $pkgliststyle = 2; my $maxpkglist = 100000; my @mirror; my $defaultmirror = ("http://mirror.opencsw.org/opencsw/testing"); my $workdir = "/var/opt/csw/pkgutil"; my $pkgdir; my $admin; my $logfile; my ( $line, $tmp, $wget, $yes, $force, $nomod, $gzip, $name, $ver, $pkgname, $filename ); my ( $size, $deps, $cat, $tmppkg, $tmppkg2, $trace, $hash ); my ( @exclude, %config, %pkg, %commonpkg, %pkgmirror, %catinfo, %state ); # Show available packages in catalog (-a/A) # mode - 0 = display available packages (-a) # 1 = compare available packages to those installed (-A) # parse - 0 = normal output, 1 = machine parsable output sub available { my ( $mode, $parse ) = @_; my $tmp; my $local_ver; unless ($parse) { # No header when --parse is being used if ( $mode == 0 ) { print "common package catalog size\n"; } else { print "package\t\t\t catalog\t\t installed\n"; } } my $hit = 0; foreach my $common ( sort keys %commonpkg ) { my $pkgname = $commonpkg{$common}; foreach my $remote_ver ( sort keys %{ $pkg{$pkgname} } ) { my ($size) = ( split /\s+/, $pkg{$pkgname}{$remote_ver} )[5]; if ( $mode == 0 ) { if ($parse) { $tmp = "$common\t$pkgname\t$remote_ver\t$size\n"; } else { $tmp = sprintf( "%-20s %-20s %-25s %9s\n", $common, $pkgname, $remote_ver, format_byte($size) ); } } else { $local_ver = check_pkg( $pkgname, 0 ); $local_ver = "SAME" if ( $local_ver eq $remote_ver ); $local_ver = "not installed" if ( $local_ver eq "notinst" ); if ($parse) { $tmp = "$pkgname\t$remote_ver\t$local_ver\n"; } else { $tmp = sprintf( "%-25s %-25s %-25s\n", $pkgname, $remote_ver, $local_ver ); } } if ( scalar(@ARGV) > 0 ) { foreach (@ARGV) { if ( "$pkgname-$remote_ver" =~ /$_/ || "$common-$remote_ver" =~ /$_/ ) { print $tmp; $hit = 1; } } } else { print $tmp; $hit = 1; } } } # Do fuzzy matching if nothing found unless ( $hit || $parse || $mode ) { print "\nNo exact matches found, doing fuzzy matching for first argument ($ARGV[0]) ...\n"; eval { require String::Approx; }; # Check for String::Approx if ($@) { myexit( "String::Approx required for fuzzy matching not found, install with pkgutil -i CSWpmstringapprox to enable.", "", 0 ); } else { my @match = String::Approx::amatch( $ARGV[0], %commonpkg ); if ( scalar(@match) ) { print "Suggestions: "; foreach (@match) { print "$_ "; } print "\n"; } } } myexit( "", "", 0 ); } # display catalog info sub catalog_info { foreach ( sort keys %catinfo ) { print "\n"; print "URL\t\t" . $catinfo{$_}{url} . "\n"; print "Release\t\t" . $catinfo{$_}{RELEASE} . "\n"; print "Creation time\t" . $catinfo{$_}{CREATIONDATE} . "\n"; print "Number of pkgs\t" . $catinfo{$_}{num_of_pkgs} . "\n"; print "File\t\t" . $catinfo{$_}{filename} . "\n"; print "GPG\t\t" . $catinfo{$_}{gpg} . "\n" if $use_gpg; } myexit( "", "", 0 ); } # check binary to avoid trying to use broken wget for example # bin - binary to check sub check_binary { my ($bin) = @_; print STDERR "DEBUG:Checking binary: $bin ... " if $debug; my $status = system("/bin/sh -c '$bin --version' >/dev/null 2>/dev/null"); print "" . ( ($status) ? "fail" : "OK" ) . "\n" if $debug; return 1 if $status; } # Check catalog # always - always update catalog # parse - pass through to silence gpg checks sub check_catalog { my ( $always, $parse ) = @_; foreach my $url (@mirror) { my $filename = mangle_url($url); my $age = 0; $age = -M $filename if ( -r $filename ); print STDERR "DEBUG:Catalog $url age in days: $age\n" if $debug; fetch_catalog( $url, $filename ) if ( ( $age > $config{catalog_update} && $config{catalog_update} != -1 ) || !-e $filename || $always ); gpg( $filename, $parse ) if $use_gpg; my $entries = read_catalog( $url, $filename ); # Once per file print "==> $entries package" . ( $entries > 1 ? "s" : "" ) . " loaded from $filename\n" if ( ( $age > $config{catalog_update} && $config{catalog_update} != -1 ) || !-e $filename || $always || $debug ); } } # Check if package is already installed and if so, which version # pkg - package to check for # mode - 0 = return full string, 1 = return only rev part sub check_pkg { my ( $pkg, $mode ) = @_; my ( $tmp, $exit_code, $retvalue ); my $root_path = $config{root_path} ? "-R $config{root_path}" : ""; my $test_path = $config{root_path} ? $config{root_path} : ""; if ( !-d "$test_path/var/sadm/pkg/$pkg" ) { $retvalue = "notinst"; print STDERR "DEBUG:$pkg not installed\n" if $debug; } else { $tmp = `pkgparam $root_path $pkg VERSION 2> /dev/null`; chomp $tmp; if ( $mode == 0 ) { $retvalue = $tmp; } else { ($retvalue) = ( $tmp =~ /REV=(.+)$/ ); } print STDERR "DEBUG:$pkg installed, version $retvalue\n" if $debug; } return $retvalue; } # Clean up obsolete packages (--cleanup) sub cleanup { my @legacy = list_obsolete(); print STDERR "DEBUG:" . scalar(@legacy) . " legacy: " . join( " ", @legacy ) . "\n" if $debug; my @deps = list_deps(); print STDERR "DEBUG:" . scalar(@deps) . " deps: " . join( " ", @deps ) . "\n" if $debug; my @obsolete; foreach my $pkg (@legacy) { push( @obsolete, $pkg ) unless ( grep { /^\Q$pkg\E$/ } @deps ); } my $pkgsep = ( $pkgliststyle ? "\n\t" : " " ); print scalar(@obsolete) . " OBSOLETE package" . ( scalar(@obsolete) > 1 ? "s" : "" ); if ( scalar(@obsolete) ) { print ":$pkgsep" . join( "$pkgsep", @obsolete ) . "\n"; rem_pkgs(@obsolete); } else { print "s.\n\n"; } myexit( "", "", 0 ); } # Compare current to available packages (-c/C) # mode - 0 = print full list, 1 = return list of old packages # 2 = return full list of old packages, 3 = same as 0 but only diffs # 4 = compare a single package (much faster, used with Puppet) # parse - 0 = normal output, 1 = machine parsable output sub compare { my ( $mode, $parse ) = @_; my ( @cswpkgs, @retlist ); my ( $local_ver, $remote_ver, $tmp ); my $root_path = $config{root_path} ? "-R $config{root_path}" : ""; unless ($parse) { # No header when --parse is being used print "package\t\t\t installed\t\t catalog\n" if ( $mode == 0 || $mode == 3 ); } if ( $mode == 4 ) { $cswpkgs[0] = "a " . parse_catalog( $ARGV[0], 2 ) . " a"; myexit( "Not in catalog", "", 0 ) if ( $cswpkgs[0] eq "a not in catalog a" ); } else { if ($noncsw) { @cswpkgs = `pkginfo $root_path`; } else { @cswpkgs = `pkginfo $root_path | grep CSW`; } } foreach my $pkg (@cswpkgs) { ($pkg) = ( $pkg =~ /\s+?(\S+?)\s/ ); $local_ver = check_pkg( $pkg, 0 ); $remote_ver = parse_catalog( $pkg, 1 ); $remote_ver = "SAME" if ( $local_ver eq $remote_ver ); if ( $mode == 1 ) { push( @retlist, $pkg ) if ( $remote_ver ne "SAME" && $remote_ver ne "not in catalog" ); } else { if ($parse) { $tmp = "$pkg\t$local_ver\t$remote_ver\n"; } else { $tmp = sprintf( "%-25s %-25s %-25s\n", $pkg, $local_ver, $remote_ver ); } if ( $mode == 2 ) { push( @retlist, $tmp ) if ( $remote_ver ne "SAME" && $remote_ver ne "not in catalog" ); } else { if ( scalar(@ARGV) > 0 && $mode != 4 ) { foreach (@ARGV) { if ( $pkg =~ /$_/ ) { print $tmp unless ( $mode == 3 && $remote_ver eq "SAME" ); } } } else { print $tmp unless ( $mode == 3 && $remote_ver eq "SAME" ); } } } } if ( $mode == 1 || $mode == 2 ) { return @retlist; } else { myexit( "", "", 0 ); } } # Deduplicate a list # list - list to deduplicate sub dedup { my @list = @_; my %deduped; my @tmplist; for my $pkg (@list) { unless ( exists $deduped{$pkg} ) { push( @tmplist, $pkg ); $deduped{$pkg} = 1; } } return @tmplist; } # Display package dependencies as a tree (--deptree) # depth - number of levels to show sub deptree { my ($depth) = @_; my ( @pkgarray, @rest, @j ); my $level = 0; my $true; foreach (@ARGV) { undef @pkgarray; $pkgarray[0] = $_; foreach (@pkgarray) { my $pkg = parse_catalog( $_, 2 ); # Get package name my $deps = parse_catalog( $_, 6 ); # Get dependencies unless ( $pkg eq "CSWcommon" && $config{deptree_filter_common} eq "true" || $level > $depth ) { for ( my $i = 0 ; $i < $level ; $i++ ) { print "- "; } print "$pkg\n"; } if ( $deps ne "none" ) { my @tmplist = split( /\|/, $deps ); unshift( @rest, @tmplist ); # Add deps to rest list $level++; # Increment level $j[$level] = scalar(@tmplist); # Nr of deps on this level } push( @pkgarray, shift(@rest) ) if ( scalar(@rest) > 0 ); $true = 1; while ( $true && $level > 0 ) { # How many levels do we need to back up? if ( $deps eq "none" && $j[$level] == 0 ) { $level--; } else { $true = 0; } } $j[$level]--; # Lower nr of remaining deps on this level } } myexit( "", "", 0 ); } # Describe available packages (--describe) # parse - 0 = normal output, 1 = machine parsable output sub describe { my ($parse) = @_; my $desc_file = mangle_url( $mirror[0] ); $desc_file =~ s|/catalog\.|/descriptions\.|; myexit( "No descriptions file available. Try pkgutil -U.", "", 1 ) unless ( -r $desc_file && -s _ ); my $DESC = gensym(); open( $DESC, "<$desc_file" ); while ( my $line = <$DESC> ) { chomp $line; $line =~ s/ - /\t/ if $parse; if ( scalar(@ARGV) > 0 ) { foreach (@ARGV) { print "$line\n" if ( $line =~ /$_/ ); } } else { print "$line\n"; } } close $DESC; myexit( "", "", 0 ); } # Email notifications when updates are available (-e) # email - address to send notications to sub email { my ($email) = @_; my $file; my $TMP = gensym(); eval { require File::Temp; }; # Check for File::Temp $file = "/tmp/pkgutil.$$.$^T" if ($@); # Use less safe method if File::Temp not available myexit( "Mailx not found on system!", "", 1 ) unless ( -x "/bin/mailx" ); my @update_list = compare(2); if ( scalar(@update_list) > 0 ) { if ( defined $file ) { open( $TMP, ">$file" ) or myexit( "Can't open $file", "$!", 1 ); } else { ( $TMP, $file ) = File::Temp::tempfile( DIR => "/tmp" ); } foreach (@update_list) { print $TMP $_; } chomp( my $host = `uname -n` ); my $subject = "$host: CSW updates available"; my @args = ("/bin/mailx -s \"$subject\" $email < $file"); system(@args); unlink $file; close $TMP; } myexit( "", "", 0 ); } # Extract downloaded packages (--extract) # pkglist - list of packages to extract (from install sub) sub extract_pkg { my (@pkglist) = @_; foreach (@pkglist) { # pkgtrans them one by one my $file = parse_catalog( $_, 3 ); print "Extracting $_ to $pkgdir/" . parse_catalog( $_, 2 ) . " ...\n"; my $status = system( "$gzip -c -f -d $pkgdir/$file | pkgtrans /dev/fd/0 $pkgdir all 2> /dev/null" ); myexit( "Could not extract $file (directory may already exist)", "", 1 ) if $status; } } # Fetch catalog # url - url to download from # filename - filename to use for local catalog sub fetch_catalog { my ( $url, $filename ) = @_; my $wgetopts = ""; my $status; $wgetopts .= " $config{wgetopts}" if $config{wgetopts}; $wgetopts .= " --execute cache=off" if ( $config{catalog_not_cached} eq "true" ); print "=> Fetching new catalog and descriptions ($url) if available ...\n"; myexit( "Option -n selected, stopping here.", "", 0 ) if $nomod; my $desc_file = $filename; $desc_file =~ s|/catalog\.?|/descriptions\.|; unlink "${filename}.tmp", "${desc_file}.tmp"; if ( $url =~ /^file:/ ) { # file method used, use cp my ($tmpcatsrc) = ( $url =~ /^file:\/(.+)$/ ); $status = system( "/bin/cp", "$tmpcatsrc/catalog", "${filename}.tmp" ); if ($status) { myexit( "\nFetching of catalog failed.", "", 1 ); } else { rename "${filename}.tmp", $filename; } $status = system( "/bin/cp", "$tmpcatsrc/descriptions", "${desc_file}.tmp" ); if ($status) { print "Warning: the descriptions file could not be fetched. The --describe option will not be available.\n" if $status; } else { rename "${desc_file}.tmp", $desc_file; } } else { # http/ftp used, use wget locate_wget() unless ( -x $wget ); # If wget disappeared locate alt. logoutput(); $status = system( "$wget", split( ' ', $wgetopts ), "-O", "${filename}.tmp", "$url/catalog" ); if ($status) { logfail(); myexit( "\nFetching of catalog failed.", "", 1 ); } else { logend(); rename "${filename}.tmp", $filename; } logoutput(); $status = system( "$wget", split( ' ', $wgetopts ), "-O", "${desc_file}.tmp", "$url/descriptions" ); if ($status) { logfail(); print "Warning: the descriptions file could not be fetched. The --describe option will not be available" if $status; } else { logend(); rename "${desc_file}.tmp", $desc_file; } } system( "/bin/touch", $filename ) if ( -w $filename ); } # Get wanted package and its dependencies # pkglist - packages to fetch # mode - 4 = stream silent sub fetch_pkgs { my ( $mode, @pkglist ) = @_; my $wgetopts = ""; my ( $file, $status ); my $FH = ( $mode == 4 ? *STDERR : *STDOUT ); if ( scalar(@pkglist) > 1 && !$yes ) { print scalar(@pkglist), " packages to fetch. Do you want to continue? ([y],n,auto) "; chomp( my $prompt = ); if ( $prompt =~ /^[nN]/ ) { myexit( "", "", 0 ); } elsif ( $prompt =~ /^a(uto)*/i ) { print "Turning on automatic mode as if --yes was passed.\n"; $yes = 1; } } $wgetopts .= " $config{wgetopts}" if $config{wgetopts}; my $i = 1; foreach my $pkg (@pkglist) { $file = parse_catalog( $pkg, 3 ); if ( -r "$pkgdir/$file" && -s _ != parse_catalog( $pkg, 5 ) ) { # Broken/empty files may be present print $FH "Removing non-matching local file for $pkg.\n"; unlink "$pkgdir/$file"; } if ( -r "$pkgdir/$file" ) { $i++; print $FH "A local copy of $pkg exists and is of matching size.\n"; } else { print $FH "=> Fetching $pkg (" . $i++ . "/" . scalar(@pkglist) . ") ...\n"; locate_wget() unless ( -x $wget ); # If wget disappeared locate alt. logoutput(); my $tried; foreach ( @{ $pkgmirror{$file} } ) { $tried = 1; unlink "$pkgdir/${file}.tmp"; if ( $_ =~ /^file:/ ) { my ($tmpcatsrc) = ( $_ =~ /^file:\/(.+)$/ ); run_hooks( "prefetch", "$tmpcatsrc/$file", $pkg ); $status = system( "/bin/cp", "$tmpcatsrc/$file", "$pkgdir/${file}.tmp" ); } else { run_hooks( "prefetch", "$_/$file", $pkg ); $status = system( "$wget", split( ' ', $wgetopts ), "-O", "$pkgdir/${file}.tmp", "$_/$file" ); } unless ($status) { run_hooks( "postfetch", "$_/$file", $pkg ); last; } } if ( $status || !$tried ) { logfail(); myexit( "\nFetching of $pkg failed. Try updating your catalog with pkgutil -U.", "", 1 ); } else { logend(); rename "$pkgdir/${file}.tmp", "$pkgdir/$file"; } } md5( $pkg, "$pkgdir/$file", $mode ) if $use_md5; } } # Find files in package (-F) sub find_file { my $contents = "/var/sadm/install/contents"; # Flush the pkgserv cache if ( -x "/usr/bin/pkgadm" ) { system("/usr/bin/pkgadm sync > dev/null 2>&1"); } foreach (@ARGV) { my $FILE = gensym(); open( $FILE, "<$contents" ) or myexit( "Can't open $contents", "$!", 1 ); while ( my $line = <$FILE> ) { chomp $line; my ( $file, $pkg ) = ( $line =~ /^(.+?)\s.+\s(.+)$/ ); ($file) = ( $file =~ /^(.+)=/ ) if ( $file =~ /=/ ); print "$file\t$pkg\n" if ( $file =~ /\Q$_\E/ ); } close $FILE; } myexit( "", "", 0 ); } # Format size in bytes to more human friendly format with suffixes # size - size in bytes sub format_byte { my ($size) = @_; my $suffix = "B"; if ( $size > 1024 ) { $size /= 1024; $suffix = "KB"; } if ( $size > 1024 ) { $size /= 1024; $suffix = "MB"; } if ( $size > 1024 ) { $size /= 1024; $suffix = "GB"; } return sprintf( "%1.1f %s", $size, $suffix ); } # Get which distribution a package is in # package - package to check sub get_dist { my ($package) = @_; my $file = parse_catalog( $_, 3 ); my @catalog = ( @{ $pkgmirror{$file} } ); #my ($dist) = ($catalog[0] =~ /^.*\/(\S+)\/[i386|sparc]/); # show last part my ($dist) = ( $catalog[0] =~ /^.*\/(\S+\/\S+)\/[i386|sparc]/ ); # show two last parts print STDERR "DEBUG:dist:$dist\n" if $debug; return $dist; } # Check signature on catalog # catalog - filename of catalog to gpg check # parse - silence output if set sub gpg { my ( $catalog, $parse ) = @_; my $line; my $gpg_signed_catalog = 0; if ( !-x "/opt/csw/bin/gpg" ) { myexit( "GPG not found! Install CSWgnupg (pkgutil -i CSWgnupg) or disable use_gpg in pkgutil.conf.", "", 1 ); } my $CATALOG = gensym(); open( $CATALOG, "<$catalog" ) or myexit( "Can't open $catalog", "$!", 1 ); while ( $line = <$CATALOG> ) { $gpg_signed_catalog = 1 if ( $line =~ /-BEGIN PGP SIGNED MESSAGE-/ ); last; } close $CATALOG; print STDERR "DEBUG:GPG catalog: $gpg_signed_catalog\n" if $debug; if ($gpg_signed_catalog) { print "Checking integrity of $catalog with gpg.\n" unless $parse; my $gpghomedir = ""; if ( $config{gpg_homedir} ) { $gpghomedir = "--homedir $config{gpg_homedir}"; } else { if ( check_pkg( "CSWcswpki", 0 ) eq "notinst" ) { $gpghomedir = ""; } else { $gpghomedir = "--homedir /var/opt/csw/pki"; } } my $status = system( "/opt/csw/bin/gpg", split( ' ', $gpghomedir ), "--verify", "$catalog" ); print STDERR "DEBUG:GPG signature: " . ( ($status) ? "Bad" : "Good" ) . "\n" if $debug; myexit( "Bad signature detected in catalog!", "", 1 ) if $status; rename( $catalog, $catalog . ".asc" ) or myexit( "Could not rename catalog!", "", 1 ); $status = system("/opt/csw/bin/gpg $gpghomedir $catalog.asc 2> /dev/null"); myexit( "Catalog signature is not correct!", "", 1 ) if $status; rename( $catalog . ".asc", $catalog ) or myexit( "Could not rename catalog!", "", 1 ); print STDERR "DEBUG:Status GPG: $status\n" if $debug; # Save catalog signer my $gpgoutput = `/opt/csw/bin/gpg $gpghomedir --verify $catalog 2>&1`; ( $catinfo{$catalog}{gpg} ) = ( $gpgoutput =~ /^gpg: .+ signature from (.+)$/m ); } else { myexit( "Catalog $catalog is not signed! Check your mirror settings or disable use_gpg in pkgutil.conf.", "", 1 ); } } # Initialize (note that this section is before options are parsed so # -D does not work here. Set debug to 1 at top of script) # conf - custom configuration # param - configuration overrides sub init { my ( $conf, @param ) = @_; my @conf_file; if ($conf) { @conf_file = ($conf); } else { @conf_file = ( "/opt/csw/etc/pkgutil.conf", "/etc/opt/csw/pkgutil.conf" ); } %config = ( "mirror" => [], "pkgaddopts" => "", "pkgrmopts" => "", "wgetopts" => "", "use_gpg" => "", "use_md5" => "", "pkgliststyle" => "2", "maxpkglist" => "", "noncsw" => "", "stop_on_hook_soft_error" => "", "exclude_pattern" => "", "gpg_homedir" => "", "root_path" => "", "deptree_filter_common" => "", "show_current" => "true", "catalog_not_cached" => "true", "catalog_update" => "14" ); foreach my $file (@conf_file) { if ( -r $file ) { # If conf file found, parse it print STDERR "DEBUG:Conf file: $file\n" if $debug; my $CONFIG = gensym(); open( $CONFIG, "<$file" ) or myexit( "Can't open $file", "$!", 1 ); while (<$CONFIG>) { chomp; # Remove newline s/#.*//; # Remove comments s/^\s+//; # Remove leading white s/\s+$//; # Remove trailing white next unless length; # Next if nothing left my ( $var, $value ) = split( /\s*=\s*/, $_, 2 ); unless ( exists $config{$var} ) { print "Unrecognized option (in $file): $var\n"; next; } print STDERR "DEBUG:Config:Found $var = $value\n" if $debug; my $r = ref( $config{$var} ); if ( !$r ) { $config{$var} = $value; } elsif ( $r eq 'ARRAY' ) { if ( grep { /^$value$/ } @{ $config{$var} } ) { print STDERR "Duplicate mirror definition skipped ($value).\n"; } else { push( @{ $config{$var} }, $value ); } } } close $CONFIG; } } # Configuration overrides using -p foreach (@param) { if (/mirror/) { print STDERR "Do not use -p for mirror, use -t instead!\n"; next; } my ( $var, $value ) = split(/:/); unless ( exists $config{$var} ) { print "Unrecognized option (using --param): $var\n"; next; } my $r = ref( $config{$var} ); if ( !$r ) { $config{$var} = $value; } elsif ( $r eq 'ARRAY' ) { push( @{ $config{$var} }, $value ); } } if ($debug) { foreach ( sort keys %config ) { print STDERR "DEBUG:$_: " . ( ( $_ eq "mirror" ) ? join( " ", @{ $config{$_} } ) : $config{$_} ) . "\n"; } } $pkgliststyle = $config{pkgliststyle} if defined $config{pkgliststyle}; $maxpkglist = $config{maxpkglist} if $config{maxpkglist}; $use_md5 = $use_gpg = $noncsw = 0; $use_md5 = 1 if ( $config{use_md5} eq "true" ); $use_gpg = 1 if ( $config{use_gpg} eq "true" ); $noncsw = 1 if ( $config{noncsw} eq "true" || $config{noncsw} eq "yes" ); } # Install local packages # pkglist - packages to install sub inst_loc_pkgs { my @pkglist = @_; my $pkgadd = "pkgadd"; my $pkgaddopts = ""; my $pkgrm = "pkgrm"; my $pkgrmopts = ""; my $pkginfo = "pkginfo"; my $pkgtrace = ""; my $file; $pkgaddopts .= " $config{pkgaddopts}" if $config{pkgaddopts}; $pkgrmopts .= " $config{pkgrmopts}" if $config{pkgrmopts}; $pkgtrace = "-v" if $trace; my $root_path = $config{root_path} ? "-R $config{root_path}" : ""; foreach (@pkglist) { my $pkgforce = ""; $pkgforce = "-a $admin -n" if ( $yes && -r $admin ); print "\n=> Installing $_\n"; $file = $_; if ( $_ =~ /\.gz$/ ) { # Not all packages are compressed my $status = locate_gzip(); ($file) = ( $file =~ /(.+)\.gz$/ ); if ( !$status ) { if ($yes) { `$gzip -c -f -d $_ > $file`; } else { `$gzip -c -d $_ > $file`; } } else { myexit( "\nGzip not found, please install CSWgzip.", "", 1 ); } } # Remove first if the package is already installed my $pkgname = `$pkginfo $root_path -d $file`; ($pkgname) = ( $pkgname =~ /\s(.+?)\s/ ); my $tmp = check_pkg( $pkgname, 0 ); if ( $tmp ne "notinst" ) { print "\n=> Removing currently installed $pkgname\n"; system( "$pkgrm", split( ' ', $root_path ), split( ' ', $pkgforce ), split( ' ', $pkgtrace ), split( ' ', $pkgrmopts ), "$pkgname" ); } # Install system( "$pkgadd", split( ' ', $root_path ), split( ' ', $pkgforce ), split( ' ', $pkgtrace ), split( ' ', $pkgaddopts ), "-d", "$file" ); # Check if pkgadd operation exited successfully if ( $? != 0 ) { # If failed pkgadd op and --yes used, exit immediately myexit( "Exiting pkgutil due to pkgadd error", $? >> 8, 1 ) if $yes; printf "\npkgadd failed with exit code: %d\n", $? >> 8; print "Exit from pkgutil and fix this issue first (recommended)? ([y],n) "; chomp( my $prompt = ); myexit( "Exiting pkgutil", "", 1 ) if ( $prompt !~ /^[nN]/ ); } if ( $_ =~ /\.gz$/ ) { # Not all packages are compressed unlink "$file" or myexit( "Can't delete $file", "$!", 1 ); } } myexit( "", "", 0 ); } # Install packages # batchmode - whether we're updating some of the packages or doing new # installs only (values: upgrade or install) # updlistlen - number of packages to update # pkglist - packages to install sub inst_pkgs { my $batchmode = shift; my $updlistlen = shift; my @pkglist = @_; my $tmp = ""; my $pkgadd = "pkgadd"; my $pkgaddopts = ""; my $pkgrm = "pkgrm"; my $pkgrmopts = ""; my $pkgtrace = ""; my $pkgask = ""; my %upg_pkglist; my ( $file, $name ); $pkgaddopts .= " $config{pkgaddopts}" if $config{pkgaddopts}; $pkgrmopts .= " $config{pkgrmopts}" if $config{pkgrmopts}; $pkgtrace = "-v" if $trace; my $root_path = $config{root_path} ? "-R $config{root_path}" : ""; run_hooks( "prebatch$batchmode", @pkglist ); # Handle pkgutil as a special case, always complete pkgutil upgrade # before proceeding with rest of list if ( scalar(@pkglist) > 1 ) { if ( my @tmplist = grep { /^CSWpkgutil-/ } @pkglist ) { print "\n=> Updating pkgutil first ...\n"; @pkglist = grep { !/^CSWpkgutil-/ } @pkglist; $updlistlen--; inst_pkgs( 'upgrade', 1, $tmplist[0] ); } } # Removing old version of all packages being upgraded my $i = 1; foreach ( reverse @pkglist ) { my $pkgforce = ""; $pkgforce = "-a $admin -n" if ( $yes && -r $admin ); my ($pkgname) = ( $_ =~ /^(.+)-/ ); $tmp = check_pkg( $pkgname, 0 ); if ( $tmp ne "notinst" ) { # A small sanity check myexit( "Batch hook 'install' was run, but we've found a package being upgraded. Bailing out.", "", 1 ) if ( $batchmode eq 'install' ); $upg_pkglist{$_} = 1; run_hooks( "preupgrade", $_ ); print "\n=> Removing old version of $pkgname (" . $i++ . "/" . $updlistlen . ") ...\n"; system( "$pkgrm", split( ' ', $root_path ), split( ' ', $pkgforce ), split( ' ', $pkgtrace ), split( ' ', $pkgrmopts ), "$pkgname" ); } } # Install all packages being upgraded/installed $i = 1; foreach (@pkglist) { my $pkgforce = ""; $pkgforce = "-a $admin -n" if ( $yes && -r $admin ); $file = parse_catalog( $_, 3 ); $name = parse_catalog( $_, 2 ); print "\n=> Installing $_ (" . $i++ . "/" . scalar(@pkglist) . ") ...\n"; if ( $file =~ /\.gz$/ ) { # Not all packages are compressed my $status = locate_gzip(); if ( !$status ) { if ($yes) { `$gzip -f -d $pkgdir/$file`; } else { `$gzip -d $pkgdir/$file`; } } else { myexit( "\nGzip not found, please install CSWgzip.", "", 1 ); } ($file) = ( $file =~ /(.+)\.gz$/ ); } # We may have already run preupgrade above. Running upgrade _and_ install # is invalid run_hooks( "preinstall", $_ ) unless ( defined $upg_pkglist{$_} && $upg_pkglist{$_} == 1 ); # Support response (pkgask) files $pkgask = ( -r "$workdir/pkgask/$name" ) ? "-r $workdir/pkgask/$name" : ""; print STDERR "DEBUG:pkgask: $pkgask\n" if $debug; # Install system( "$pkgadd", split( ' ', $root_path ), split( ' ', $pkgforce ), split( ' ', $pkgtrace ), split( ' ', $pkgask ), split( ' ', $pkgaddopts ), "-d", "$pkgdir/$file", "$name" ); # Check if pkgadd operation exited successfully if ( $? != 0 ) { # If failed pkgadd op and --yes used, exit immediately myexit( "Exiting pkgutil due to pkgadd error", $? >> 8, 1 ) if $yes; printf "\npkgadd failed with exit code: %d\n", $? >> 8; print "Exit from pkgutil and fix this issue first (recommended)? ([y],n) "; chomp( my $prompt = ); myexit( "Exiting pkgutil", "", 1 ) if ( $prompt !~ /^[nN]/ ); } unlink "$pkgdir/$file" or myexit( "Can't delete $pkgdir/$file", "$!", 1 ); if ( defined $upg_pkglist{$_} && $upg_pkglist{$_} == 1 ) { run_hooks( "postupgrade", $_ ); } else { run_hooks( "postinstall", $_ ); } } run_hooks( "postbatch$batchmode", @pkglist ); } # Install (-i) option # mode - 0 = install, 1 = download only, 2 = remove, 3 = stream, # 4 = stream silent, 5 = extract # deps - option --nodeps set or not # parse - option --parse set or not sub install { my ( $mode, $deps, $parse ) = @_; my $retvalue; my ( @tmppkglist, @revpkglist, @newpkglist, @instpkglist, @updpkglist, @curpkglist, @dlpkglist ); my $FH = ( $mode == 4 ? *STDERR : *STDOUT ); my ( %pkgvers, @pkglist, @excludelist ) ; # @pkglist is specifically in the correct order my $root_path = $config{root_path} ? "-R $config{root_path}" : ""; my $pkgrmopts = ""; $pkgrmopts = "$config{pkgrmopts}" if $config{pkgrmopts}; print $FH "Solving needed dependencies ...\n" unless ( $deps || $parse ); foreach my $tmppkg (@ARGV) { my $tmp = parse_catalog( $tmppkg, 2 ); my $vers = parse_catalog( $tmppkg, 1 ); if ( $tmp ne 'not in catalog' && ( $tmp =~ /^CSW/ || $noncsw ) ) { push( @pkglist, $tmp ); $pkgvers{$tmp} = $vers; } else { myexit( "Package $tmppkg not in catalog. Exiting.", "", 1 ); } } unless ($deps) { # Skip adding dependencies? (option --nodeps) my %finished; foreach my $tmppkg2 (@pkglist) { # N.B. This array grows and we keep looping until we've satisfied all # of the dependencies print STDERR "DEBUG:Loop #", scalar(@pkglist), " (limit $maxpkglist)\n" if $debug; my @tmpdeps; # Next two lines from Joe Baro reduces iterations next if $finished{$tmppkg2}; $finished{$tmppkg2} = 1; if ( $tmppkg2 ne "CSWcommon" ) { $retvalue = parse_catalog( $tmppkg2, 6 ); if ( $retvalue eq "not in catalog" ) { system( "pkginfo", split( ' ', $root_path ), "-q", "$tmppkg2" ); if ( $? == 0 ) { # Already installed...forgive its absence from the catalog print STDERR "Warning: $tmppkg2 not in catalog.\n"; next; } else { myexit( "Package $tmppkg2 not in catalog. Exiting.", "", 1 ); } } else { @tmpdeps = split( /\|/, $retvalue ); print STDERR "DEBUG:depmap: $tmppkg2 -> ", $retvalue, "\n" if $debug; } } else { next; } if ( $tmpdeps[0] ne "none" && $tmpdeps[0] ne "not in catalog" ) { foreach my $dep (@tmpdeps) { # There is no support for dependencies against a particular version, e.g. CSWzope-3.3.1, just CSWzope if ( !exists $pkgvers{$dep} ) { $pkgvers{$dep} = parse_catalog( $dep, 1 ); } push( @pkglist, $dep ) ; # Append to list, does not include deduplication } } next; } } print STDERR "DEBUG:pkglist ", join( ",", @pkglist ), "\n" if $debug; # Now reverse and deduplicate @pkglist. Need the last instance of each # package if reading @pkglist forwards my @tmprevpkglist = dedup( reverse @pkglist ); foreach (@tmprevpkglist) { push( @revpkglist, $_ ) if $pkgvers{$_}; # Not if excluded } if ( $mode == 2 ) { # If -r used if ( scalar(@revpkglist) > 0 ) { my @rmpkgs = (); foreach my $p (@revpkglist) { push( @rmpkgs, "$p-" . $pkgvers{$p} ); } remove( reverse @rmpkgs ); } } print STDERR "DEBUG:revpkglist: " . scalar(@revpkglist) . "\n", join( ",", @revpkglist ), "\n" if $debug; print STDERR "DEBUG:Loop #", scalar(@pkglist), " (limit $maxpkglist)\n" if $debug; unless ($deps) { print $FH "Solving dependency order ...\n" unless $parse; my @revpkglist2 = @revpkglist; my @revpkglist3; foreach (@revpkglist2) { if ( scalar(@revpkglist2) > $maxpkglist ) { print "Loop protection limit ($maxpkglist iterations) hit. There's probably a\ncyclic dependency in the catalog.\n"; print "Do you want to continue anyway? ([y],n) "; chomp( my $prompt = ); myexit( "", "", 0 ) if ( $prompt =~ /^[nN]/ ); @revpkglist3 = dedup(@revpkglist2); last; } my $dep = parse_catalog( $_, 6 ); if ( $dep eq "none" || $dep eq "not in catalog" ) { push( @revpkglist3, $_ ); } else { my $allhit = 1; foreach my $i ( split( /\|/, $dep ) ) { my $hit = 0; foreach my $j (@revpkglist3) { if ( $i eq $j ) { $hit = 1; last; } } if ( !$hit ) { # no hit, add last for re-processing push( @revpkglist2, $_ ); $allhit = 0; last; } } if ($allhit) { # all deps ok, add to final list push( @revpkglist3, $_ ); } } } print STDERR "DEBUG:revpkglist3: " . scalar(@revpkglist3) . "\n", join( ",", @revpkglist3 ), "\n" if $debug; @revpkglist = @revpkglist3; } # Clean list from command line exclude patterns foreach my $pattern (@exclude) { my @tmppkglist = grep { !/$pattern/ } @revpkglist; push( @excludelist, grep { /$pattern/ } @revpkglist ); @revpkglist = @tmppkglist; } # Clean list from exclude patterns in pkgutil.conf foreach my $pattern ( split( /\s+?/, $config{exclude_pattern} ) ) { my @tmppkglist = grep { !/$pattern/ } @revpkglist; push( @excludelist, grep { /$pattern/ } @revpkglist ); @revpkglist = @tmppkglist; } # Incompatible packages (I-dependencies) my @ideppkglist; foreach (@revpkglist) { my $retvalue = parse_catalog( $_, 8 ); push( @ideppkglist, split( /\|/, $retvalue ) ) if ( $retvalue ne "none" ); } # Clean the list from packages not installed my @ideppkglist2; foreach (@ideppkglist) { # Check if pkg is present first push( @ideppkglist2, $_ ) if ( check_pkg( $_, 0 ) ne "notinst" ); } @ideppkglist = @ideppkglist2; undef @ideppkglist2; # Which packages do we really need to download? if ( $mode == 0 || $mode == 2 ) { foreach (@revpkglist) { my $old = check_pkg( $_, 0 ); my $new = $pkgvers{$_}; if ( $old eq "notinst" ) { # New package needed push( @newpkglist, "$_-$new" ); } else { # Package already installed my $cmpval = verscmp( $new, $old ); if ( $cmpval == 1 || ( $cmpval != 0 && $force ) ) { # Older or --force push( @updpkglist, "$_-$new" ); # Updated package needed } else { push( @curpkglist, "$_-$old" ); # Package is current } } } } else { # If -s or --extract then just copy revpkglist to newpkglist foreach (@revpkglist) { push( @newpkglist, "$_-$pkgvers{$_}" ); } } my $pkgsep = ( $pkgliststyle ? "\n\t" : " " ); # Only present updated and current packages when doing install/upgrade if ( $mode == 0 ) { if ( scalar(@curpkglist) > 0 && $config{show_current} eq "true" ) { print scalar(@curpkglist) . " CURRENT packages:$pkgsep", join( "$pkgsep", sort @curpkglist ), "\n"; } if ( scalar(@updpkglist) > 0 ) { print "Install " . scalar(@updpkglist) . " UPDATED packages"; if ( $pkgliststyle == 2 ) { foreach ( sort @updpkglist ) { print "$pkgsep$_ (" . get_dist($_) . ")"; } print "\n"; } else { print $FH ":$pkgsep", join( "$pkgsep", sort @updpkglist ), "\n"; } } } # Different text for install/upgrade vs. the rest if ( scalar(@newpkglist) > 0 ) { print $FH ( $mode == 0 ) ? "Install " . scalar(@newpkglist) . " NEW packages:" : "Package list:" unless $parse; if ( $pkgliststyle == 2 || $parse ) { foreach ( sort @newpkglist ) { if ($parse) { # parse mode to display catalog name, catalog and md5 print parse_catalog( $_, 0 ) . "\t" . get_dist($_) . "\t" . parse_catalog( $_, 4 ) . "\n"; } else { print "$pkgsep$_ (" . get_dist($_) . ")"; } } print "\n" unless $parse; } else { print $FH "$pkgsep", join( "$pkgsep", sort @newpkglist ), "\n"; } } # Only present incompatible packages when doing install/upgrade if ( $mode == 0 ) { if ( scalar(@ideppkglist) > 0 ) { print "Remove " . scalar(@ideppkglist) . " INCOMPATIBLE packages:$pkgsep", join( "$pkgsep", sort @ideppkglist ), "\n"; } } # Show excluded packages if ( scalar(@excludelist) > 0 ) { print $FH scalar(@excludelist) . " EXCLUDED packages:$pkgsep", join( "$pkgsep", sort @excludelist ), "\n"; } # What packages do we need to fetch? # Make sure they are in correct order foreach my $i (@revpkglist) { my $hit = 0; foreach (@curpkglist) { my ($j) = ( $_ =~ /^(.+)-/ ); if ( $i eq $j ) { $hit = 1; print STDERR "DEBUG:i: $i j: $j hit: $hit\n" if $debug; last; } print STDERR "DEBUG:i: $i j: $j hit: $hit\n" if $debug; } my $tmp = "$i-$pkgvers{$i}"; push( @dlpkglist, $tmp ) unless $hit; } print STDERR "DEBUG:dlpkglist: " . scalar(@dlpkglist) . "\n", join( ",", @dlpkglist ), "\n" if $debug; # Print info before exiting if there's nothing to do myexit( "\nNothing to do.", "", 0 ) if ( scalar(@dlpkglist) == 0 ); # Print size of download if ( scalar(@dlpkglist) > 0 && $parse == 0 ) { foreach (@dlpkglist) { $size += parse_catalog( $_, 5 ); } print $FH "Total size: " . format_byte($size) . "\n"; } myexit( "", "", 0 ) if $parse; myexit( "Option -n selected, stopping here.", "", 0 ) if $nomod; if ( scalar(@dlpkglist) > 0 ) { fetch_pkgs( $mode, @dlpkglist ); } # Display a list of files when downloading if ( $mode == 1 ) { print "\nPackages downloaded to $pkgdir:\n"; foreach (@dlpkglist) { my $file = parse_catalog( $_, 3 ); print "$file"; $file = "$pkgdir/$file"; print " (OK)\n" if ( -s $file ); print " (empty)\n" if ( -z $file ); print " (missing)\n" if ( !-e $file ); } } extract_pkg(@dlpkglist) if ( $mode == 5 ); # --extract return @revpkglist if ( $mode == 3 || $mode == 4 ); # If -s used # Warn if cswclassutils is in the install list and we have a # read-only /usr/sadm/install/scripts dir if ( grep { /^CSWcas-/ } @dlpkglist ) { # CAS pkg in the list? if ( ! -w "/usr/sadm/install/scripts" && $mode == 0 ) { # /usr ro? myexit( "A class action script is about to be installed but\n" . "/usr/sadm/install/scripts is read-only so it will fail.\n" . "If you're running a sparse zone, please install/update the\n" . "class action scripts from the global zone. If you want to\n" . "proceed with this installation you have to exclude the\n" . "CAS package (use the -x option). Exiting.", "", 1 ); } } # Remove incompatible packages if ( scalar(@ideppkglist) > 0 && $mode == 0 ) { my $pkgrm = "pkgrm"; my $pkgtrace = ""; my $pkgforce = ""; if ( !$yes ) { print scalar(@ideppkglist), " incompatible package" . ( scalar(@ideppkglist) > 1 ? "s" : "" ) . " to remove. Do you want to continue? ([y],n,auto) "; chomp( my $prompt = ); if ( $prompt =~ /^[nN]/ ) { myexit( "", "", 0 ); } elsif ( $prompt =~ /^a(uto)*/i ) { print "Turning on automatic mode as if --yes was passed.\n"; $yes = 1; } } $pkgforce = "-a $admin -n" if ( $yes && -r $admin ); foreach (@ideppkglist) { print "\n=> Removing incompatible package $_\n"; system( "$pkgrm", split( ' ', $root_path ), split( ' ', $pkgforce ), split( ' ', $pkgtrace ), split( ' ', $pkgrmopts ), "$_" ); } } if ( $mode == 0 ) { # If -d not used, install if ( scalar(@dlpkglist) > 0 ) { inst_pkgs( scalar(@updpkglist) ? 'upgrade' : 'install', scalar(@updpkglist), @dlpkglist ); } } myexit( "", "", 0 ); } # List dependencies (part of --cleanup) sub list_deps { my $pkgdir = $config{root_path} ? "$config{root_path}/var/sadm/pkg" : "/var/sadm/pkg"; my %deps; chdir($pkgdir) or myexit( "Could not cd to $pkgdir", "", 1 ); foreach ( glob("CSW*") ) { if ( -r "$_/install/depend" ) { my $FILE = gensym(); open( $FILE, "<$_/install/depend" ); while (<$FILE>) { chomp; if (/^P\s+\S/) { my ($deptmp) = (/P\s+(\S+)/); $deps{$deptmp} = 1 if ( $deptmp ne $_ && $deptmp !~ /^SUNW/ ) ; # Skip if circular or SUNW } } close $FILE; } } my @deps = sort keys %deps; return @deps; } # List files in package (-L) sub list_file { my $contents = $config{root_path} ? "$config{root_path}/var/sadm/install/contents" : "/var/sadm/install/contents"; # Flush the pkgserv cache if ( -x "/usr/bin/pkgadm" ) { system( "/usr/bin/pkgadm" . ( $config{root_path} ? " -R " . $config{root_path} : "" ) . " sync > /dev/null 2>&1" ); } foreach (@ARGV) { if ( -r $_ && -f _ ) { # Argument is a package file if ( $_ =~ /\.pkg$/ ) { my (@tmp) = `pkgchk -l -d $_ all`; foreach (@tmp) { next unless ( $_ =~ /^Pathname:\s\// ); my ($file) = ( $_ =~ /^Pathname:\s(.+?)\s/ ); ($file) = ( $file =~ /^(.+)=/ ) if ( $file =~ /=/ ); print "$file\n"; } } else { print "Package file name ($_) must end in .pkg\n"; next; } } else { # Argument is a package name my $tmp; if ( $_ =~ /^[A-Z]/ ) { $tmp = $_; } else { $tmp = parse_catalog( $_, 2 ); } my $FILE = gensym(); open( $FILE, "<$contents" ) or myexit( "Can't open $contents", "$!", 1 ); while ( my $line = <$FILE> ) { chomp $line; my ( $file, $pkg ) = ( $line =~ /^(.+?)\s.+\s(.+)$/ ); ($file) = ( $file =~ /^(.+)=/ ) if ( $file =~ /=/ ); print "$file\n" if ( $pkg eq $tmp ); } close $FILE; } } myexit( "", "", 0 ); } # List obsolete files (part of --cleanup) sub list_obsolete { my $pkgdir = $config{root_path} ? "$config{root_path}/var/sadm/pkg" : "/var/sadm/pkg"; my @legacy; chdir($pkgdir) or myexit( "Could not cd to $pkgdir", "", 1 ); foreach ( glob("CSW*") ) { push( @legacy, $_ ) if ( -e "$_/install/obsolete" ); } return @legacy; } # List installed packages (-l) sub list_pkgs { my $pkgdir = $config{root_path} ? "$config{root_path}/var/sadm/pkg" : "/var/sadm/pkg"; chdir($pkgdir) or myexit( "Could not cd to $pkgdir", "", 1 ); foreach ( $noncsw ? glob("*") : glob("CSW*") ) { if ( scalar(@ARGV) > 0 ) { foreach my $arg (@ARGV) { print "$_\n" if ( $_ =~ /$arg/ ); } } else { print "$_\n"; } } myexit( "", "", 0 ); } # Find gzip sub locate_gzip { my @locations = ( "/opt/csw/bin", "/bin", "/usr/local/bin" ); foreach (@locations) { if ( -x "$_/gzip" ) { next if check_binary("$_/gzip"); $gzip = "$_/gzip"; last; } } print STDERR "DEBUG:gzip: $gzip\n" if $debug; return 1 if ( !$gzip ); } # Find wget sub locate_wget { my @locations = ( "/opt/csw/bin", "/usr/sfw/bin", "/usr/local/bin", "/usr/bin" ); my $libexec = "/opt/csw/libexec/pkgutil"; foreach (@locations) { if ( -x "$_/wget" ) { next if check_binary("$_/wget"); $wget = "$_/wget"; last; } } # Check for wget binary included in pkgutil package if ( !$wget ) { chomp( my $loc_arch = `uname -p` ); # Arch type sparc|i386 $wget = "$libexec/wget-$loc_arch" if ( -x "$libexec/wget-$loc_arch" ); } if ( !$wget ) { $wget = "$libexec/wget" if ( -x "$libexec/wget" ); } print STDERR "DEBUG:wget: " . ( $wget ? $wget : "-" ) . "\n" if $debug; return 1 if ( !$wget ); } # These three routines are used to capture the output of sub processes into a # log file. If the command completes successfuly, the log file is thrown away. # If the command fails, the log file is printed along with an error message by # calling logfail. sub logoutput { my ( $fh ); eval { require File::Temp; }; # Check for File::Temp if ( $@ ) { $logfile = "/tmp/pkgutil.$$.log.$^T"; } else { ( $fh, $logfile ) = File::Temp::tempfile( DIR => "/tmp" ); } open( OLDOUT, '>&STDOUT' ); open( OLDERR, '>&STDERR' ); open( STDOUT, "> $logfile" ); open( STDERR, "> $logfile" ); } sub logend { # Reference fh to silence warning select( OLDERR ); select( OLDOUT ); # Restore output. select( STDOUT); close( STDOUT ); open( STDOUT, ">&OLDOUT" ); close( STDERR ); open( STDERR, ">&OLDERR" ); unlink( $logfile ); } sub logfail { close( STDOUT ); open( STDOUT, ">&OLDOUT" ); close( STDERR ); open( STDERR, ">&OLDERR" ); open( LOG, "< $logfile" ) or die "pkgutil: Error, @_ - can't open log\n"; print ; close( LOG ); unlink( $logfile ); } # Make a filename from the URL - /es to _es # url - url to mangle sub mangle_url { my ($url) = @_; ( my $mangled = $url ) =~ s?\w+://??; $mangled =~ s?/?_?g; my $filename = "$workdir/catalog.$mangled"; return $filename; } # Check md5 on downloaded files # mode - 4 = stream silent sub md5 { my ( $pkg, $file, $mode ) = @_; my $md5; my $FH = ( $mode == 4 ? *STDERR : *STDOUT ); eval { require Digest::MD5; }; if ($@) { if ( -x "/opt/csw/bin/gmd5sum" ) { myexit( "Can't open $file", "$!", 1 ) unless ( -r $file ); $md5 = `/opt/csw/bin/gmd5sum $file`; ($md5) = ( $md5 =~ /^(.*\w) / ); } else { myexit( "\nMD5 support not available! Install CSWcoreutils to get MD5\nsupport. Another alternative is to install CSWperl and use\nthat for pkgutil. Do that by having /opt/csw/bin before\n/usr/bin in your path.", "", 1 ); } } else { my $FILE = gensym(); open( $FILE, "<$file" ) or myexit( "Can't open $file", "$!", 1 ); binmode($FILE); $md5 = Digest::MD5->new->addfile($FILE)->hexdigest; close $FILE; } my $md5cat = parse_catalog( $pkg, 4 ); print STDERR "DEBUG:$pkg md5 file: $md5\n$pkg md5 cat: $md5cat\n" if $debug; myexit( "MD5 for $pkg doesn't match catalog!", "", 1 ) if ( $md5 ne $md5cat ); print $FH "MD5 for $pkg matched.\n"; } # Do cleanup and exit with return code # msg - message to stderr # err - error ($!) # rc - return code when exiting sub myexit { my ( $msg, $err, $rc ) = @_; my $text = ( $msg && $err ) ? "$msg: $err" : "$msg"; $rc = 0 unless $rc; unlink $admin if ( $admin && -r $admin && $admin =~ /admin\.run$/ ); print STDERR "$text\n" if $text; exit $rc; } # Parse catalog # pkg - package to look for, can be both common name and true name # mode - what we want to return, field number from catalog sub parse_catalog { my ( $pkg, $mode ) = @_; my ( $retvalue, $name ); print STDERR "DEBUG:Parsing catalog ... looking for: $pkg (mode $mode)\n" if $debug; # Do we have an embedded version? my @p = split /-/, $pkg; my $vers = pop @p; my $tryname = join( '-', @p ); # First check the whole name without stripping off a "version" # e.g. CSWdovecot-devel if ( $pkg{$pkg} ) { # SysV, no version (e.g. CSWdovecot-devel) $name = $pkg; undef $vers; } elsif ( $commonpkg{$pkg} && $pkg{ $commonpkg{$pkg} } ) { # Common (e.g. dovecot_devel) $name = $commonpkg{$pkg}; undef $vers; } elsif ( $pkg{$tryname} ) { # SysV, version (e.g. CSWdovecot-devel-1.0.13,REV=2008.03.16) $name = $tryname; } elsif ( $commonpkg{$tryname} && $pkg{ $commonpkg{$tryname} } ) { # Common (e.g. dovecot_devel-1.0.13,REV=2008.03.16) $name = $commonpkg{$tryname}; } if ($name) { # Have we a version match? if ( $vers && exists $pkg{$name}{$vers} ) { my @tmpcatline = split( / /, $pkg{$name}{$vers} ); my $fieldsincatalog = scalar(@tmpcatline); if ( $mode == 8 && $fieldsincatalog < 9 ) { $retvalue = "none"; } else { $retvalue = ( split( / /, $pkg{$name}{$vers} ) )[$mode]; } } elsif ( !$vers ) { # We may have multiple versions in the catalog, take the highest # Note this won't work unless at least one has a REV in it my $highest = ( sort { verscmp( $b, $a ) } keys %{ $pkg{$name} } )[0]; my @tmpcatline = split( / /, $pkg{$name}{$highest} ); my $fieldsincatalog = scalar(@tmpcatline); if ( $mode == 8 && $fieldsincatalog < 9 ) { $retvalue = "none"; } else { $retvalue = ( split( / /, $pkg{$name}{$highest} ) )[$mode]; } } else { $retvalue = "not in catalog" if ( !$retvalue ); } } else { $retvalue = "not in catalog" if ( !$retvalue ); } print STDERR "DEBUG:Return value: $retvalue\n" if $debug; return $retvalue; } # Parse command line sub parse_cl { my ( $opt_install, $opt_upgrade, $opt_remove, $opt_download, $opt_avail, $opt_compare, $opt_compare_available, $opt_upd_cat, $opt_deptree, $opt_email, @opt_temp, $opt_help, $opt_version, $opt_syscheck, $opt_stream, $opt_target, $opt_output, $opt_workdir, $opt_config, $opt_compare_diffonly, $opt_listfile, $opt_findfile, $opt_describe, $opt_extract, $opt_nodeps, $opt_single, @opt_param, $opt_list, $opt_parse, $opt_cleanup, $opt_pkgdir, $opt_rootpath, $opt_catinfo ); usage() unless scalar(@ARGV); # This call gives hooks a chance to look at the unaltered argument list print STDERR "DEBUG:preargproc: " . join( ' ', @ARGV ) . "\n" if $debug; run_hooks( "preargproc", @ARGV ); $opt_parse = 0; GetOptions( "i|install" => \$opt_install, "u|upgrade" => \$opt_upgrade, "r|remove" => \$opt_remove, "d|download" => \$opt_download, "a|available" => \$opt_avail, "A|compare-avail" => \$opt_compare_available, "describe" => \$opt_describe, "c|compare" => \$opt_compare, "C|compare-diff" => \$opt_compare_diffonly, "config=s" => \$opt_config, "U|catalog" => \$opt_upd_cat, "e|email=s" => \$opt_email, "t|temp=s" => \@opt_temp, "y|yes" => \$yes, "f|force" => \$force, "s|stream" => \$opt_stream, "T|target=s" => \$opt_target, "o|output=s" => \$opt_output, "x|exclude=s" => \@exclude, "W|workdir=s" => \$opt_workdir, "n|nomod" => \$nomod, "D|debug" => \$debug, "trace" => \$trace, "h|help" => \$opt_help, "v|version" => \$opt_version, "l|list" => \$opt_list, "L|listfile" => \$opt_listfile, "F|findfile" => \$opt_findfile, "extract" => \$opt_extract, "single" => \$opt_single, "deptree:i" => \$opt_deptree, "N|nodeps" => \$opt_nodeps, "parse" => \$opt_parse, "p|param=s" => \@opt_param, "cleanup" => \$opt_cleanup, "catinfo" => \$opt_catinfo, "P|pkgdir=s" => \$opt_pkgdir, "R|rootpath=s" => \$opt_rootpath, "V|syscheck" => \$opt_syscheck ) || usage(); # If --deptree was given without an argument set it to 999 $opt_deptree = 999 if ( defined $opt_deptree && $opt_deptree == 0 ); print STDERR "DEBUG:pkgutil version: $pkgutilver\n" if $debug; print STDERR "DEBUG:perl version: $]\n" if $debug; # Simple options usage() if $opt_help; pkgutilver(0) if $opt_version; find_file() if $opt_findfile; $config{root_path} = $opt_rootpath if $opt_rootpath; print STDERR "DEBUG:root_path: $config{root_path}\n" if $debug; # Installing local packages if all args are package files if ( scalar(@ARGV) && ( $opt_install || $opt_upgrade ) ) { my $notalocpkg = 0; foreach (@ARGV) { $notalocpkg = 1 unless ( -r $_ && -s _ && $_ =~ /\.pkg(\.gz)?$/ ); print STDERR "DEBUG:$_ : $notalocpkg\n" if $debug; } unless ($notalocpkg) { print "Installing your local packages ...\n"; inst_loc_pkgs(@ARGV); } } init( $opt_config, @opt_param ) if ( $opt_config || scalar(@opt_param) ); list_pkgs() if $opt_list; pkgutilver(1) if $opt_syscheck; locate_wget(); locate_gzip(); if ($opt_workdir) { # Set/create optional working dir $workdir = $opt_workdir; } elsif ($>) { # If -W not used and non-root, use home dir $workdir = $ENV{HOME} . "/.pkgutil"; if ( !-d $workdir ) { # Create if non-existing my $status = mkdir $workdir, 0777; myexit( "Could not create $workdir", "$!", 1 ) unless $status; } print STDERR "DEBUG:username: " . getpwuid($>) . "\n" if $debug; print STDERR "You're not root and didn't set -W, using home dir.\n"; } print STDERR "DEBUG:workdir: $workdir\n" if $debug; if ($opt_pkgdir) { # Set/create optional package dir $pkgdir = $opt_pkgdir; } else { $pkgdir = "$workdir/packages"; } print STDERR "DEBUG:pkgdir: $pkgdir\n" if $debug; # Create runtime copy of admin to make sure we have one # available even during upgrade of pkgutil itself $admin = "$workdir/admin"; $admin = "/var/opt/csw/pkgutil/admin" unless ( -r $admin ); my $ADMSRC = gensym(); open( $ADMSRC, "<$admin" ) or myexit( "Can't open $admin", "$!", 1 ); if ( -r "$workdir/admin.run" ) { my @pslist = `/bin/ps -ef`; my $pkgutilinst = 0; foreach (@pslist) { $pkgutilinst++ if (/\bperl\s.*pkgutil\b/); } if ( $pkgutilinst > 1 ) { myexit( "Another instance of pkgutil is already running!", "", 1 ); } else { unlink "$workdir/admin.run" if ( -r "$workdir/admin.run" ); print STDERR "Stale lock file ($workdir/admin.run) removed\n"; } } my $ADMCPY = gensym(); open( $ADMCPY, ">$workdir/admin.run" ) or myexit( "Can't open $workdir/admin.run", "$!", 1 ); while (<$ADMSRC>) { print $ADMCPY $_; } close $ADMSRC; close $ADMCPY; $admin = "$workdir/admin.run"; # Read state file if available my $statefile = "$workdir/pkgutil.state"; if ( -r $statefile ) { # If state file found, parse it my $STATE = gensym(); open( $STATE, "<$statefile" ) or myexit( "Can't open $statefile", "$!", 1 ); while (<$STATE>) { chomp; # Remove newline my ( $var, $value ) = split( /=/, $_, 2 ); $state{$var} = $value; print STDERR "DEBUG:State:Found $var = $value\n" if $debug; } close $STATE; } else { print "DEBUG: no state file found\n" if $debug; } # Cleanup supports yes/auto so it needs to have $admin set cleanup() if $opt_cleanup; my $status = system( "/bin/mkdir", "-p", "$pkgdir" ); myexit( "Could not create $pkgdir", "$!", 1 ) if $status; # Get mirrors together @mirror = @{ $config{mirror} }; $mirror[0] = $defaultmirror unless @mirror; # If no mirrors configured # Prepend temp mirrors so they are selected first unshift( @mirror, @opt_temp ) if @opt_temp; my @supp_arch = qw(sparc i386); my @supp_rel = qw(5.8 5.9 5.10 5.11); my ( $ok_arch, $ok_rel ) = ( 0, 0 ); my ( $loc_arch, $loc_rel ); if ( $opt_target && $opt_download ) { if ( $opt_target =~ /.:./ ) { ( $loc_arch, $loc_rel ) = split( /:/, $opt_target ); } else { myexit( "$opt_target is not a correct arch:rel combo", "", 1 ); } } else { chomp( $loc_arch = `uname -p` ); # Arch type sparc|i386 chomp( $loc_rel = `uname -r` ); # OS version, e.g. 5.10 } print STDERR "DEBUG:arch: $loc_arch\nDEBUG:os rel: $loc_rel\n" if $debug; foreach (@supp_arch) { if ( $loc_arch eq $_ ) { $ok_arch = 1; last; } } foreach (@supp_rel) { if ( $loc_rel eq $_ ) { $ok_rel = 1; last; } } print "Architecture $loc_arch not supported.\n" unless $ok_arch; print "OS release $loc_rel not supported.\n" unless $ok_rel; myexit( "", "", 1 ) if ( ( $ok_arch + $ok_rel ) < 2 ); foreach ( my $i = 0 ; $i < scalar(@mirror) ; $i++ ) { ( $mirror[$i] ) = ( $mirror[$i] =~ q!^(.+\w)! ); $mirror[$i] .= "/" . $loc_arch . "/" . $loc_rel; } print STDERR "DEBUG:primary mirror: $mirror[0]\n" if $debug; if ( $opt_upd_cat || @opt_temp ) { check_catalog( 1, $opt_parse ); # Reread everything } else { check_catalog( 0, $opt_parse ); } # Running the hook now should pass only things that remain in ARGV, # which should be a list of package names my @norm_argv; foreach (@ARGV) { push( @norm_argv, parse_catalog( $_, 2 ) ); } print STDERR "DEBUG:postargproc: " . join( ' ', @norm_argv ) . "\n" if $debug; run_hooks( "postargproc", @norm_argv ); # Complex options catalog_info() if $opt_catinfo; list_file() if $opt_listfile; # Download and stream if both -d and -s selected stream( $loc_arch, $loc_rel, $opt_output ) if ( $opt_stream && $opt_download ); email($opt_email) if $opt_email; available( 0, $opt_parse ) if $opt_avail; available( 1, $opt_parse ) if $opt_compare_available; deptree($opt_deptree) if $opt_deptree; describe($opt_parse) if $opt_describe; compare( 3, $opt_parse ) if $opt_compare_diffonly; compare( 4, $opt_parse ) if ( $opt_compare && $opt_single ); compare( 0, $opt_parse ) if $opt_compare; # Download and extract if both -d and --extract selected install( 5, $opt_nodeps, $opt_parse ) if ( $opt_extract && $opt_download ); install( 0, $opt_nodeps, $opt_parse ) if $opt_install; install( 2, $opt_nodeps, $opt_parse ) if $opt_remove; # Remove instead of install install( 1, $opt_nodeps, $opt_parse ) if $opt_download; # Download only # Upgrade is a special case of install if ($opt_upgrade) { if ( scalar(@ARGV) == 0 || $ARGV[0] =~ /all/i ) { # Need to manipulate ARGV to match installed CSW packages # that need upgrading (use -c mode 1) print "Looking for packages that can be upgraded ...\n"; my @cswpkgs = compare( 1, 0 ); my $i = 0; foreach (@cswpkgs) { $ARGV[ $i++ ] = $_; } } install( 0, $opt_nodeps, $opt_parse ); } # Arguments but no options print "You need to select a valid option!\n" if ( !$opt_upd_cat ); } # Show version info (-v/V) # mode - 0 = print only version, 1 = system check sub pkgutilver { my ($mode) = @_; my $flag = 0; chomp( my $solver = `uname -r` ); chomp( my $solarch = `uname -p` ); my ( $pkgpatch, $pkgpatchinst ); if ($mode) { print "- System -\n"; print "Pkgutil\t\t$pkgutilver\n"; print "Arch\t\t$solarch\n"; print "Solaris\t\t$solver\n"; $pkgpatch = ( $solarch eq "sparc" ) ? "110934" : "110935" if ( "$solver" eq "5.8" ); $pkgpatch = ( $solarch eq "sparc" ) ? "113713" : "114568" if ( "$solver" eq "5.9" ); $pkgpatch = ( $solarch eq "sparc" ) ? "119317" : "119318" if ( "$solver" eq "5.10" ); if ( $solver ne "5.11" ) { chomp( $pkgpatchinst = `showrev -p | grep $pkgpatch | cut -d' ' -f2 | grep $pkgpatch | sort | tail -1` ); $pkgpatchinst = ($pkgpatchinst) ? "$pkgpatchinst installed" : "not found"; } else { $pkgpatch = $pkgpatchinst = "na"; } print "Pkg patch\t$pkgpatch ($pkgpatchinst)\n"; if ( -x "/opt/csw/bin/gpg" ) { print "GPG binary\t/opt/csw/bin/gpg\n"; } else { print "GPG binary\tnot found (suggestion: install CSWgnupg)\n"; } my $status = locate_gzip(); print "Gzip binary\t" . ( ($status) ? "not found (suggestion: install CSWgzip)" : $gzip ) . "\n"; if ( -x "/bin/mailx" ) { print "Mailx binary\t/bin/mailx\n"; } else { print "Mailx binary\tnot found (option --email not available)\n"; } if ( -x "/opt/csw/bin/gmd5sum" ) { print "MD5 binary\t/opt/csw/bin/gmd5sum\n"; } else { print "MD5 binary\tnot found"; print " (suggestion: install CSWcoreutils)" unless $flag; print "\n"; $flag = 0; } eval { require Digest::MD5; }; if ($@) { print "MD5 module\tnot found\n"; } else { print "MD5 module\t", Digest::MD5->VERSION, " (primary choice for MD5)\n"; $flag = 1; } print "Perl\t\t$]\n"; print "Perl binary\t" . `which perl`; $status = locate_wget(); print "Wget binary\t" . ( ($status) ? "not found (suggestion: install CSWwget)" : $wget ) . "\n"; print "PATH\t\t$ENV{PATH}\n"; print "\n- Configuration -\n"; print "catalog_not_cached\t$config{catalog_not_cached} (default: true)\n"; print "catalog_update\t\t" . ( ( $config{catalog_update} ) ? $config{catalog_update} : "not set" ) . " (default: 14)\n"; print "deptree_filter_common\t" . ( ( $config{deptree_filter_common} eq "true" ) ? "true" : "false" ) . " (default: false)\n"; print "exclude_pattern\t\t" . ( ( $config{exclude_pattern} ) ? $config{exclude_pattern} : "not set" ) . " (default: none)\n"; print "gpg_homedir\t\t" . ( ( $config{gpg_homedir} ) ? $config{gpg_homedir} : "not set" ) . " (default: none)\n"; print "maxpkglist\t\t$maxpkglist (default: 10000)\n"; print "mirror\t\t\t" . ( ( scalar( @{ $config{mirror} } ) ) ? join( "\n\t\t\t", @{ $config{mirror} } ) : "not set" ) . "\n\t\t\t(default: $defaultmirror)\n"; print "noncsw\t\t\t" . ( ($noncsw) ? $noncsw : "false" ) . " (default: false)\n"; print "pkgaddopts\t\t" . ( ( $config{pkgaddopts} ) ? $config{pkgaddopts} : "not set" ) . " (default: none)\n"; print "pkgliststyle\t\t$pkgliststyle (default: 0)\n"; print "pkgrmopts\t\t" . ( ( $config{pkgrmopts} ) ? $config{pkgrmopts} : "not set" ) . " (default: none)\n"; print "root_path\t\t" . ( ( $config{root_path} ) ? $config{root_path} : "not set" ) . " (default: /)\n"; print "show_current\t\t$config{show_current} (default: true)\n"; print "stop_on_hook_soft_error\t" . ( ( $config{stop_on_hook_soft_error} ) ? $config{stop_on_hook_soft_error} : "not set" ) . " (default: false)\n"; print "use_gpg\t\t\t" . ( ($use_gpg) ? "true" : "false" ) . " (default: false)\n"; print "use_md5\t\t\t" . ( ($use_md5) ? "true" : "false" ) . " (default: false)\n"; print "wgetopts\t\t" . ( ( $config{wgetopts} ) ? $config{wgetopts} : "not set" ) . " (default: none)\n"; } else { print "$pkgutilver\n"; } myexit( "", "", 0 ); } # Read catalog into hash # catalog - catalog to read # filename - filename to use sub read_catalog { my ( $catalog, $filename ) = @_; my @llst; my $i = 0; my @keywords = qw(CREATIONDATE RELEASE); # Add catalog info to hash my $url = mangle_url($catalog); $catinfo{$url}{url} = $catalog; $catinfo{$url}{filename} = $filename; # Initialize foreach (@keywords) { $catinfo{$url}{$_} = "-"; } my $CATALOG = gensym(); open( $CATALOG, "<$filename" ) or myexit( "Can't open $filename", "$!", 1 ); while ( my $line = <$CATALOG> ) { chomp $line; # Look for magic comments if ( $line =~ /^#\s\w/ ) { foreach (@keywords) { if ( $line =~ /^#\s.+\s.+$/ ) { my ( $key, $value ) = ( $line =~ /^#\s(.+)\s(.+)$/ ); if ( $key eq $_ ) { $catinfo{$url}{$_} = $value; } } } } if ( $line =~ /^\w/ ) { @llst = split( / /, $line ); if ( $llst[0] && $llst[1] && $llst[2] && $llst[3] && $llst[4] && $llst[5] && $llst[6] && $llst[7] ) { $pkg{ $llst[2] }{ $llst[1] } = $line; $commonpkg{ $llst[0] } = $llst[2]; push( @{ $pkgmirror{ $llst[3] } }, $catalog ); $i++; } } } # Compare state file and catalog releases print "DEBUG:Catalog release:$catinfo{ $url }{ RELEASE }\n" if $debug; $catinfo{$url}{RELEASE} = "-" unless defined $catinfo{$url}{RELEASE}; $state{RELEASE} = "-" unless defined $state{RELEASE}; if ( "$catinfo{ $url }{ RELEASE }" ne "$state{ RELEASE }" ) { unless ( $yes || "$catinfo{ $url }{ RELEASE }" eq "-" ) { print "The release level in the previous state file (" . $state{RELEASE} . ")\nand the current catalog (" . $catinfo{$url}{RELEASE} . ") differs.\nBe aware that many " . "packages may have changed.\nDo you want to continue? ([y],n) "; chomp( my $prompt = ); if ( $prompt =~ /^[nN]/ ) { myexit( "", "", 0 ); } } # Write the state file with the new release my $STATE = gensym(); open( $STATE, ">$workdir/pkgutil.state" ) or myexit( "Can't open $workdir/pkgutil.state", "$!", 1 ); print $STATE "RELEASE=$catinfo{ $url }{ RELEASE }"; close $STATE; } close $CATALOG; $catinfo{$url}{num_of_pkgs} = $i; return $i; } # Remove packages (-r) # pkgs - packages to remove sub remove { my @pkgs = @_; my $retval = ""; my $pkgrm = "pkgrm"; my $pkgrmopts = ""; my $pkgforce = ""; my $pkgtrace = ""; my ( $i, $depinuse, $skip ); my ( @cswpkgs, @deptmp, @rempkgs, @cswpkgstmp ); $pkgtrace = "-v" if $trace; my $root_path = $config{root_path} ? "-R $config{root_path}" : ""; $pkgrmopts .= " $config{pkgrmopts}" if $config{pkgrmopts}; print "Looking at installed packages ...\n"; if ($noncsw) { @cswpkgstmp = `pkginfo $root_path`; } else { @cswpkgstmp = `pkginfo $root_path | grep CSW`; } foreach my $pkg (@cswpkgstmp) { ($pkg) = ( $pkg =~ /\s+?(\S+?)\s/ ); $skip = 0; foreach (@pkgs) { $skip = 1 if ( $_ eq $pkg ); } push( @cswpkgs, $pkg ) unless $skip; } print "Examining dependencies for:\n"; foreach my $userpkg (@pkgs) { ($i) = ( $userpkg =~ /(\S+)-/ ); print " $i"; $depinuse = 0; foreach my $j (@cswpkgs) { $retval = parse_catalog( $j, 6 ); if ( $retval ne "none" && $retval ne "not in catalog" && $i ne $j ) { (@deptmp) = split( /\|/, $retval ); foreach my $k (@deptmp) { if ( $k eq $i ) { print STDERR "DEBUG:\n$i is in use by $j\n" if $debug; $depinuse = 1; last; } } } $depinuse ? last : next; } push( @rempkgs, $userpkg ) unless $depinuse; $depinuse ? print " (in use)\n" : print " (remove)\n"; } if ( scalar(@rempkgs) > 0 && !$yes ) { print scalar(@rempkgs), " package" . ( scalar(@rempkgs) > 1 ? "s" : "" ) . " to remove. Do you want to continue? ([y],n,auto) "; chomp( my $prompt = ); if ( $prompt =~ /^[nN]/ ) { myexit( "", "", 0 ); } elsif ( $prompt =~ /^a(uto)*/i ) { print "Turning on automatic mode as if --yes was passed.\n"; $yes = 1; } } $pkgforce = "-a $admin -n" if $yes; if ( scalar(@rempkgs) > 0 ) { run_hooks( 'prebatchremove', @rempkgs ); foreach (@rempkgs) { my ( $p, $v ) = ( $_ =~ /(\S+)-/ ); $retval = check_pkg( $p, 0 ); if ( $retval ne "notinst" ) { myexit( "Option -n selected, stopping here.", "", 0 ) if $nomod; print "\n=> Removing $p\n"; run_hooks( 'preremove', ($_) ); system( "$pkgrm", split( ' ', $root_path ), split( ' ', $pkgforce ), split( ' ', $pkgtrace ), split( ' ', $pkgrmopts ), "$p" ); run_hooks( 'postremove', ($_) ); } else { print "$p not installed\n"; } } run_hooks( 'postbatchremove', @rempkgs ); } else { print "Nothing to remove.\n"; } myexit( "", "", 0 ); } # Remove list of packages with pkgrm # pkgs - packages to remove sub rem_pkgs { my @pkgs = @_; my $pkgrm = "pkgrm"; my $pkgrmopts = ""; my $pkgforce = ""; my $pkgtrace = ""; $pkgrmopts .= " $config{pkgrmopts}" if $config{pkgrmopts}; if ( scalar(@pkgs) > 0 && !$yes ) { print scalar(@pkgs), " package" . ( scalar(@pkgs) > 1 ? "s" : "" ) . " to remove. Do you want to continue? ([y],n,auto) "; chomp( my $prompt = ); if ( $prompt =~ /^[nN]/ ) { myexit( "", "", 0 ); } elsif ( $prompt =~ /^a(uto)*/i ) { print "Turning on automatic mode as if --yes was passed.\n"; $yes = 1; } } $pkgforce = "-a $admin -n" if $yes; $pkgtrace = "-v" if $trace; my $root_path = $config{root_path} ? "-R $config{root_path}" : ""; if ( scalar(@pkgs) > 0 ) { run_hooks( 'prebatchremove', @pkgs ); foreach (@pkgs) { myexit( "Option -n selected, stopping here.", "", 0 ) if $nomod; print "\n=> Removing $_\n"; my $pkgver = check_pkg( $_, 0 ); run_hooks( 'preremove', ("$_-$pkgver") ); system( "$pkgrm", split( ' ', $root_path ), split( ' ', $pkgforce ), split( ' ', $pkgtrace ), split( ' ', $pkgrmopts ), "$_" ); run_hooks( 'postremove', ("$_-$pkgver") ); } run_hooks( 'postbatchremove', @pkgs ); } else { print "Nothing to remove.\n"; } } # Run hooks sub run_hooks { my $hook_name = shift; my @hook_args = @_; my $hook_dir = "/etc/opt/csw/pkg-hooks/$hook_name.d"; my ( $hook, $hookfile, $oldwd, $status, $code ); my @hooks_to_run; my @valid_hooks = ( 'prebatchinstall', 'prebatchupgrade', 'prebatchremove', 'preinstall', 'preupgrade', 'preremove', 'postbatchinstall', 'postbatchupgrade', 'postbatchremove', 'postinstall', 'postupgrade', 'postremove', 'prefetch', 'postfetch', 'preargproc', 'postargproc' ); myexit( "Invalid hook: $hook_name", "", 1 ) unless ( grep { /$hook_name/ } @valid_hooks ); if ( !-d $hook_dir ) { print STDERR "DEBUG:No $hook_name hook scripts\n" if $debug; } else { $oldwd = getcwd(); chdir($hook_dir) or myexit( "Could not cd to $hook_dir", "", 1 ); @hooks_to_run = glob("*"); print STDERR "DEBUG:Executing $hook_name hook scripts\n" if ( scalar(@hooks_to_run) && $debug ); foreach my $hookfile ( sort { $a cmp $b } (@hooks_to_run) ) { $hook = "$hook_dir/$hookfile"; if ( -x $hook ) { print STDERR "DEBUG:Running $hook\n" if $debug; # @hook_args is (in most cases) a list of # CSWfoo-1.2.3,REV=YYYY.mm.dd affected packages, but in other # cases, it might be single or multiple URL's of packages # being pulled down, etc system( "$hook", @hook_args ); $status = $?; $code = $status >> 8; print STDERR "DEBUG:Script $hook_name.d/$hookfile returned code: $code\n" if $debug; # This allows a hook to stop execution of any further # package actions if ( $code == 1 ) { myexit( "Hook $hook_name.d/$hookfile returned with code 1", "dying", 1 ); } elsif ($code == 2 && $config{'stop_on_hook_soft_error'} eq 'true' ) { myexit( "Hook $hook_name.d/$hookfile returned with code 2", "respecting configuration option stop_on_hook_soft_error", 1 ); } elsif ( $code > 2 ) { print STDERR "Hook $hook_name.d/$hookfile returned undefined code $code.\nContinuing anyway ...\n"; } } } chdir($oldwd); } } # Signal handler # signame - signal caught sub signal_handler { my $signame = shift; myexit( "\npkgutil caught a SIG$signame. Exiting.", "", 1 ); } # Build package streams (-s) # arch - architecture # rel - os release # output - file name for package stream sub stream { my ( $arch, $rel, $output ) = @_; my ( $FH, $mode, $transfile ); if ($output) { $FH = ( $output eq "-" ? *STDERR : *STDOUT ); $mode = ( $output eq "-" ? 4 : 3 ); } else { $FH = *STDOUT; $mode = 3; } if ($output) { if ( $output eq "-" ) { $transfile = "/dev/fd/1"; } else { if ( $output =~ /\// ) { if ( $output =~ /^\// ) { $transfile = $output; # Output given is an absolute path } else { myexit( "Relative output paths are not allowed", "", 1 ); } } else { $transfile = "$pkgdir/$output"; } } } else { $output = "$ARGV[0].$arch.$rel.pkg"; $transfile = "$pkgdir/$output"; } print STDERR "DEBUG:output: $output\ntransfile: $transfile\n" if $debug; my @install_order = install( $mode, 0, 0 ); # Download packages needed myexit( "", "", 0 ) if ( scalar(@install_order) == 0 ); # Empty list, nothing to do print STDERR "DEBUG:install order: " . join( ' ', @install_order ) . "\n" if $debug; foreach (@install_order) { # Delete package directories my $status; $status = system( "/bin/rm", "-rf", "$pkgdir/$_" ) if ( -d "$pkgdir/$_" ); myexit( "Could not delete $pkgdir/$_", "$!", 1 ) if $status; } foreach (@install_order) { # pkgtrans them one by one my $file = parse_catalog( $_, 3 ); print $FH "Transforming $_ ...\n"; my $status = system( "$gzip -c -f -d $pkgdir/$file | /bin/pkgtrans /dev/fd/0 $pkgdir all 2> /dev/null" ); myexit( "Could not transform $file", "$!", 1 ) if $status; } # pkgtrans all of them into one package stream print $FH "Transforming packages into stream ($transfile) ...\n"; my $status; $status = system( "/bin/touch", "$transfile" ) unless ( $output eq "-" ); myexit( "Could not create stream file", "$!", 1 ) if $status; my $transpkgs = join( " ", @install_order ); $status = system("/bin/pkgtrans -s $pkgdir $transfile $transpkgs 2> /dev/null"); myexit( "Could not transform packages into stream", "$!", 1 ) if $status; foreach (@install_order) { # Delete package directories my $status = system( "/bin/rm", "-rf", "$pkgdir/$_" ); myexit( "Could not delete $pkgdir/$_", "$!", 1 ) if $status; } # Print cmd needed to install print $FH "\nInstall commands in dependency safe order:\n\n"; foreach (@install_order) { print $FH "pkgadd -d $output $_\n"; } myexit( "", "", 0 ); } # Show usage info sub usage { print <, -1, 0, or 1 if p1 is less than, equal to or greater than p2 # Note that if neither has a REV code, -1 is *ALWAYS* returned. # p1rev, p2rev - versions to compare sub verscmp { my ( $p1rev, $p2rev ) = @_; # crev (new), irev (old), then 1 => upgrade my ( @p1list, @p2list ); my $p1tmp = ""; my $p2tmp = ""; my $update = 0; my $skip = 0; # 1st case: same strings => no upgrade $skip = 1 if ( $p1rev eq $p2rev ); # 2nd case: installed no REV, catalog REV => upgrade if ( !$skip ) { if ( $p1rev !~ /REV=/ && $p2rev =~ /REV=/ ) { $update = -1; $skip = 1; } elsif ( $p2rev !~ /REV=/ && $p1rev =~ /REV=/ ) { # Reverse case (installed REV, catalog no REV => "downgrade") $update = 1; $skip = 1; } } # 3rd case: installed REV, catalog REV => if newer, upgrade if ( !$skip ) { if ( $p1rev =~ /REV=/ && $p2rev =~ /REV=/ ) { if ( $p1rev =~ /rev=/ ) { ($p1tmp) = ( $p1rev =~ /REV=(.+)_/ ); } else { ($p1tmp) = ( $p1rev =~ /REV=(.+)$/ ); } @p1list = split( /\./, $p1tmp ); if ( $p2rev =~ /rev=/ ) { ($p2tmp) = ( $p2rev =~ /REV=(.+)_/ ); } else { ($p2tmp) = ( $p2rev =~ /REV=(.+)$/ ); } @p2list = split( /\./, $p2tmp ); for ( my $i = 0 ; $i < scalar(@p1list) ; $i++ ) { $p1list[$i] =~ s/[^0-9]//g; # Only digits $p2list[$i] =~ s/[^0-9]//g; if ( $i >= scalar(@p2list) ) { # p1list is longer than p2list $update = 1; last; } if ( $p1list[$i] != $p2list[$i] ) { if ( $p1list[$i] > $p2list[$i] ) { $update = 1; } else { $update = -1; } print STDERR "DEBUG:$i $p1list[$i] $p2list[$i] $update\n" if $debug; last; } print STDERR "DEBUG:$i $p1list[$i] $p2list[$i] $update\n" if $debug; } $update = -1 if ( !$update && scalar(@p2list) > scalar(@p1list) ); $skip = 1; } } # 4th case: installed no REV, catalog no REV => upgrade if ( !$skip ) { $update = 1 if ( $p1rev !~ /REV=/ && $p2rev !~ /REV=/ ); } return $update; } # Main init(); parse_cl(); myexit( "", "", 0 ); # POD start =head1 NAME pkgutil - install Solaris packages the easy way =head1 SYNOPSIS pkgutil [option]... [package]... =head1 DESCRIPTION Pkgutil, written in Perl and licensed under GPL, is a tool to make installation of packages in Solaris easier. It handles package dependencies so all required packages are installed before the desired package automatically. A catalog is used to make this possible. The format is: S Example: S In the example CSWbind has two dependencies separated by a pipe. Multiple categories can also be separated by pipe characters. =head1 OPTIONS =over 5 =item B<-i, --install> Install package. Will install the specified packages with all their dependencies. You may specify an explicit version (e.g. amarok-1.4.8,REV=2008.02.26) if desired, otherwise the latest version found is chosen. =item B<-u, --upgrade> Upgrade package. A special argument is "all" which will upgrade all installed packages if possible, no argument is the same as "all". If one or more packages are given as arguments only those will be upgraded. =item B<-r, --remove> Remove package. This will remove a package including all dependencies that are not in use by other packages. Note that this feature is experimental. Use with caution. =item B<-d, --download> Download only. Same as install but stops after downloading the packages. =item B<-U, --catalog> Update catalog. =item B<-a, --available> Show available packages. =item B<--describe> Describe available packages. =item B<-c, --compare> Compare installed packages to current. =item B<-C, --compare-diff> Compare installed packages to current, show only different versions. =item B<-A, --compare-avail> Compare available packages to those installed. =item B<-e, --email=address> Send e-mail with available updates. E-mail address as argument. Don't use with other options. =item B<-t, --temp=site> Temporarily use this site for download. Must be the complete url where to find the catalog and associated packages. May be specified multiple times. =item B<-s, --stream> Build a package stream for a certain architecture and OS release. All dependencies will be included in the stream and the needed command to install them in the correct order will be displayed. Must be used with -d. =item B<-T, --target=arch:rel> Specify architecture and OS release when downloading, e.g. i386:5.9 or sparc:5.10. If not specified defaults to architecture and release of the host running pkgutil. =item B<-o, --output=file> File name for package stream. Used with -s. A special argument is "-" which sends the stream to standard output, see example below. The default name is the first package argument followed by architecture and OS release, for example "bind.i386.5.10.pkg". =item B<-x, --exclude=pattern> Simple pattern that will exclude matching packages. This option can be specified multiple times. =item B<-W, --workdir=path> Path to use for work directory. This can be used to run pkgutil as non-root, e.g. called from a web server. =item B<-P, --pkgdir=path> Path to use for package downloads. This can be used to run pkgutil as non-root, e.g. called from a web server. Default is /package. =item B<-R, --rootpath=path> Path to use for root_path. This is used by Solaris pkg tools like pkgadd, pkgrm and so on. Setting this option overrides root_path in pkgutil.conf. Default is not set. =item B<--config=file> Use this configuration file instead of the default ones. =item B<-y, --yes> Answer yes on all prompts. Skips prompt when multiple packares are to be downloaded. Makes pkgrm/pkgadd operations more silent and without prompts. Only makes sense with -i and -u. =item B<-f, --force> Force updates regardless of version compare result, as long as local and mirror version is not the same an update is carried out. This can be used as a rollback from the testing mirror to current or from current to stable for example. =item B<-n, --nomod> No modifications are made to the system. Stops before downloading catalog/packages. Use it to simulate if catalog needs updating or which packages will be downloaded. Only makes sense with -i, -u and -U. =item B<-N, --nodeps> No dependencies, only what you specify on the command line will be used. Useful when using pkgutil as a download tool of specific packages or if you use the testing repo that might pull in unwanted packages. =item B<-D, --debug> Debug mode. Adds a lot of info about what's going on. Only use if you're having problems you think is a bug. =item B<--trace> Set trace mode (-v) for pkgadd/pkgrm. =item B<-h, --help> Show this help. =item B<-v, --version> Show pkgutil version. =item B<-V, --syscheck> System check. This shows info about binaries and more that pkgutil needs to support all features. =item B<-l, --list> List installed packages. =item B<-L, --listfile> List files in packages. Works on both installed packages as well as on (uncompressed) package files. You can even mix them on the command line. =item B<-F, --findfile> Find files in installed packages. =item B<--deptree=depth> Display dependency tree. Depth is the number of levels to show, minumum is 1. =item B<--extract> Will fetch and extract package content. Must be used with -d. =item B<--single> Single package check. This is much faster than checking all installed packages, note that using something like "-c foo" still checks all packages, it just filters the output to only show lines containing foo. Must be used with -c. =item B<-p, --param=opt:val> Override configuration option. All configuration options in pkgutil.conf can be overridden except the mirror option (use -t for that). This can be useful if you temporarily want to disable gpg checks for example. =item B<--parse> Machine parsable output, no headers and all columns are separated by one tab. Use this together with scripts to get a reliable output format that is simpler to parse. =item B<--cleanup> Clean up obsolete packages. For example a renamed package that is not needed any more. =item B<--catinfo> Display information about the catalogs used, e.g. number of packages and local path. =back =head1 EXAMPLES =head2 Example 1 C<# pkgutil -i CSWbind> Will install CSWbind with all required dependencies. =head2 Example 2 C<# pkgutil -e nobody@foo.bar> Will run silently and send an e-mail (with mailx) to the given address if there's updated packages available. Run it from crontab once weekly. =head2 Example 3 C<# pkgutil -y -o - -s bind | gzip E bind.pkg.gz> Will send a package stream including all dependencies needed for CSWbind to standard output which is piped to gzip. With "-o -" the normal output is sent to standard error and "-y" is used to skip the confirmation prompt. =head2 Example 4 C<# pkgutil -T i386:5.10 -s bind> Will make a package stream including all dependencies needed for CSWbind. The package stream will contain packages for the i386 architecture and Solaris 10 regardless of host used to run pkgutil. =head1 CONFIGURATION Pkgutil uses a configuration file, pkgutil.conf, that contains a few important settings. No modifications are mandatory though since pkgutil will happily run with the defaults. There's a configuration file in /opt/csw/etc/pkgutil.conf. The only thing you normally need to change there is the mirror location. If you have a pkgutil.conf file in /etc/opt/csw it will override the one in /opt/csw/etc on a setting-by-setting basis. If no pkgutil.conf is found in either of those two locations defaults are used. The settings that can be used are: C Tells your proxy server to disable caching during fetching of the catalog and descriptions. Default is true. C Number of days between automatic catalog updates. Special cases are -1 if you want to disable automatic updates and 0 if you always want to update the catalog. Default is 14. C Filter out CSWcommon from --deptree output. Useful since almost every package depends on CSWcommon, setting this option to true reduces the number of lines a lot without affecting the actual information much. Default is false. C Space separated list of simple patterns that will exclude matching packages when updating or installing. If you, e.g., never want cups related packages updated accidentally you can add the string cups here, this will exclude all package names that contain that string. Default is blank. C The path to the gpg directory (instead of ~/.gnupg or /var/opt/csw/pkgi if CSWpki is installed) when verifying the catalogs integrity. C During dependency calculation the recursive algorithm needs to be protected against cyclic dependencies in the catalog (packages that list each other as dependencies) or pkgutil will not stop until memory is exhausted. This sets the maximum number of recursions before pkgutil stops. C This is the mirror that is used for downloading the catalog and packages. Try setting it to your nearest mirror to improve download speed. This option may be specified multiple times. It also supports (in an experimental way) the file:// protocol for local/NFS mirrors. Example: C C Enable (default is disable) support for non-CSW prefixed packages. Pkgutil also uses a file to configure pkgadd when the yes (-y) option is used. This file is located in /var/opt/csw/pkgutil and is called admin. It's by default set up to fully automate installations but if you change something in this file it will be preserved during upgrades of pkgutil. Read more about the admin file with "man -s4 admin". C Send options to pkgadd, one example is -G that will only install the packages in the global zone for Solaris 10. A useful setting is -S, that will not display the license during install. C Style of package list when installing/upgrading packages. 0 is the one used since the first version of pkgutil, it's space efficient but less readable. 1 is the one introduced in v1.7, it's one package per line which is easier to read. 2 is the same as 1 but also displays which distribution a package comes from, e.g. unstable or stable. C Send options to pkgrm, one example is "-O nozones" that will only deinstall the packages in the global zone for Solaris 10. C Set alternate root path (-R with pkg commands). Default is /. C Show the current list of packages or not. You can choose to not show the list of current packages to get less output when doing operations. Default is true. C This option determines whether or not execution will be halted if a hook returns 2 as its exit code. Execution is always stopped if a hook returns 1. Set this to true to enable it. C C These two can enable (default is disabled for both) checking the catalogs integrity (GPG) and that each downloaded file is unchanged from the published one (MD5). To use GPG you need CSWgnupg installed. MD5 is supported by default in Solaris 10 and on Solaris 8 and 9 if you have CSWperl installed and have /opt/csw/bin first in your path. You can also install CSWcoreutils to get MD5 support. C Send options to wget, for example to show more or less information during downloads. =head1 PKGASK RESPONSE FILES Pkgutil supports pkgask response files and will use them if you provide them. Create a pkgask directory in your work directory (normally /var/opt/csw/pkgutil) and put your response files there. =head1 SEE ALSO http://pkgutil.net http://sourceforge.net/projects/pkgutil =head1 TODO Add unit testing. =head1 AUTHOR Peter Bonivart =head1 CREDITS Mark Bannister Joe Baro Maciej Blizinski Dennis Clarke Ihsan Dogan David Everly Neil Houston Don Jackson Sebastian Kayser Trygve Laugstol James Lee Juraj Lutter Dagobert Michelsen Yann Rouillard Remko de Vrijer Ben Walton Derek Whayman For more details, see the readme file. =head1 COPYRIGHT AND DISCLAIMER Copyright (C) 2008-2012 Peter Bonivart. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. =cut 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!