diff -u adasockets-1.8.4.7/debian/changelog adasockets-1.8.4.7/debian/changelog --- adasockets-1.8.4.7/debian/changelog +++ adasockets-1.8.4.7/debian/changelog @@ -1,3 +1,55 @@ +adasockets (1.8.4.7-4ubuntu1) feisty; urgency=low + + * Merge from debian unstable. + * Set build dependency to gnat-4.1 + + -- Richard Bailey (3-Oct-2006) Sat, 09 Dec 2006 17:09:08 -0400 + +adasockets (1.8.4.7-4) unstable; urgency=medium + + * Corrected architecture for new gnat -- it's not `any'. + * Changed build-depends to include version >= 4.1 on gnat. + * Modified doc/Makefile.in to stop it removing some .texi sources on + clean. Removed nasty hack using `orig' directory and replaced by + previous fix to doc/Makefile.in. Also use `dpkg-buildpackage + -idoc/adasockets.info' + * Added tetex-bin to build-depends: needed to make .ps and .pdf + documents. + * Documentation directory reorganised. + * Assorted suggestions from Ludovic Brenta (thanks!): + * libadasockets-dev: .ads and .adb files are now in + /usr/share/ada/adainclude/adasockets. + * libadasockets-dev: .ali files are now in + /usr/lib/ada/adalib/adasockets. + * adasockets-config.in also modified. Will not remove this file + as requested by bug 383434 because it might be useful to users still. + * Added Debian-specific GNAT project file named + /usr/share/ada/adainclude/adasockets.gpr. Examples directory + has new Makefile and .gpr file. + * No longer need to explicitly handle .ali file permissions, + letting dh_fixperms deal with them. + * The example files are now excluded from compression by dh_compress. + closes: #383429. + * GNAT 4.1 has a new ABI. + * New library package, name is libadasockets1; + new soname libadasockets.so.1; + new shared library file name libadasockets.so.1.0.0. + * -dev package is renamed: it conflicts with and replaces + libadasockets0-dev. + * Associated changes within debian/ directory. + * Modified configure.ac/configure for LIBVERSIONINFO. + * Closes: #383430. + + -- Phil Brooke Mon, 2 Oct 2006 12:35:45 +0100 + +adasockets (1.8.4.7-3) unstable; urgency=medium + + * Fixed FTBFS by changing (build-)depends to gnat (closes: #377986). + * Change to newer gnat means that architecture can be `any'. + * Bumped standards-version to 3.7.2. + + -- Phil Brooke Wed, 26 Jul 2006 18:58:59 +0000 + adasockets (1.8.4.7-2ubuntu1) edgy; urgency=low * Remove gnat (<< 3.16) from Build-Depends and the Depends of @@ -252,0 +305 @@ + diff -u adasockets-1.8.4.7/debian/control adasockets-1.8.4.7/debian/control --- adasockets-1.8.4.7/debian/control +++ adasockets-1.8.4.7/debian/control @@ -2,16 +2,15 @@ Maintainer: Phil Brooke Section: devel Priority: extra -Standards-Version: 3.6.2 -Build-Depends: gnat (>= 3.15p), debhelper (>= 4.0.0), texinfo +Standards-Version: 3.7.2 +Build-Depends: gnat-4.1 (>= 4.1), debhelper (>= 4.0.0), texinfo, tetex-bin -Package: libadasockets0-dev -Architecture: i386 sparc powerpc kfreebsd-i386 -Depends: gnat (>= 3.15p), libadasockets0 (=${Source-Version}) +Package: libadasockets-dev +Architecture: alpha amd64 hppa i386 ia64 kfreebsd-i386 s390 sparc powerpc +Depends: gnat-4.1, libadasockets1 (=${Source-Version}) Section: libdevel -Provides: libadasockets-dev -Conflicts: adasockets -Replaces: adasockets +Conflicts: adasockets, libadasockets0-dev +Replaces: adasockets, libadasockets0-dev Description: bindings for socket services in Ada This package provides a binding for socket services to be used with GNAT (the GNU Ada compiler). One can use it to write clients and servers that @@ -20,8 +19,8 @@ This package provides the Ada programmer with headers and libraries used to build Ada programs that use sockets services. -Package: libadasockets0 -Architecture: i386 sparc powerpc kfreebsd-i386 +Package: libadasockets1 +Architecture: alpha amd64 hppa i386 ia64 kfreebsd-i386 s390 sparc powerpc Depends: ${shlibs:Depends} Section: libs Description: bindings for socket services in Ada diff -u adasockets-1.8.4.7/debian/rules adasockets-1.8.4.7/debian/rules --- adasockets-1.8.4.7/debian/rules +++ adasockets-1.8.4.7/debian/rules @@ -29,11 +29,6 @@ dh_clean # And now do a few bits of restoring and tidying.... rm -f doc/stamp-vti src/b~split.adb src/b~split.ads src/sockets-constants.ads support/adacompiler - cp -f debian/orig/doc/* doc - # And also nuke doc/adasockets.pdf. Otherwise, dpkg-source gets - # unhappy about the changed file. It happily ignores the deletion, - # though. - rm -f doc/adasockets.pdf install: DH_OPTIONS= install: build @@ -41,23 +36,29 @@ dh_testroot dh_clean -k dh_installdirs - $(MAKE) DESTDIR=`pwd`/debian/libadasockets0-dev install - dh_installdocs -plibadasockets0 README - rm -rf debian/libadasockets0-dev/usr/man - dh_installman -plibadasockets0-dev man/adasockets-config.1 - dh_installexamples -plibadasockets0-dev examples/*.adb - dh_installchangelogs -plibadasockets0 NEWS - dh_movefiles --sourcedir=debian/libadasockets0-dev - mv debian/libadasockets0-dev/usr/share/doc/libadasockets0-dev \ - debian/libadasockets0-dev/usr/share/doc/libadasockets0 + $(MAKE) DESTDIR=`pwd`/debian/libadasockets-dev install + dh_installdocs -plibadasockets1 README + rm -rf debian/libadasockets-dev/usr/man + dh_installman -plibadasockets-dev man/adasockets-config.1 + dh_installexamples -plibadasockets-dev examples/*.adb debian/Makefile debian/examples.gpr + dh_installchangelogs -plibadasockets1 NEWS + dh_movefiles --sourcedir=debian/libadasockets-dev + mv debian/libadasockets-dev/usr/share/doc/libadasockets-dev \ + debian/libadasockets-dev/usr/share/doc/libadasockets1 # Right, the info directory should be /usr/share/info, not /usr/share. - install -d -g root -m 755 -o root `pwd`/debian/libadasockets0-dev/usr/share - mv `pwd`/debian/libadasockets0-dev/usr/info `pwd`/debian/libadasockets0-dev/usr/share - # The .ali files need to be read-only. - chmod 444 `pwd`/debian/libadasockets0-dev/usr/lib/adasockets/*.ali - # Suppress some lintian warnings. - install -d -g root -m 755 -o root `pwd`/debian/libadasockets0-dev/usr/share/lintian/overrides - install -m 644 debian/lintian-overrides.libadasockets0-dev `pwd`/debian/libadasockets0-dev/usr/share/lintian/overrides/libadasockets0-dev + install -d -g root -m 755 -o root `pwd`/debian/libadasockets-dev/usr/share + mv `pwd`/debian/libadasockets-dev/usr/info `pwd`/debian/libadasockets-dev/usr/share + # Debian Ada policy directories. + mv `pwd`/debian/libadasockets-dev/usr/lib/adasockets/*.ads `pwd`/debian/libadasockets-dev/usr/share/ada/adainclude/adasockets + mv `pwd`/debian/libadasockets-dev/usr/lib/adasockets/*.adb `pwd`/debian/libadasockets-dev/usr/share/ada/adainclude/adasockets + mv `pwd`/debian/libadasockets-dev/usr/lib/adasockets/*.ali `pwd`/debian/libadasockets-dev/usr/lib/ada/adalib/adasockets + rmdir `pwd`/debian/libadasockets-dev/usr/lib/adasockets + # All documentation out of the adasockets directory. + mv `pwd`/debian/libadasockets-dev/usr/share/doc/adasockets/* `pwd`/debian/libadasockets-dev/usr/share/doc/libadasockets1 + rmdir `pwd`/debian/libadasockets-dev/usr/share/doc/adasockets + # Debian specific gpr file. + cp -f debian/adasockets.gpr `pwd`/debian/libadasockets-dev/usr/share/ada/adainclude + # This single target is used to build all the packages, all at once, or # one at a time. So keep in mind: any options passed to commands here will @@ -82,8 +83,8 @@ # dh_installchangelogs dh_strip dh_link - dh_compress - dh_fixperms --exclude .ali + dh_compress -X.adb -X.ads + dh_fixperms dh_makeshlibs dh_installdeb # dh_perl reverted: --- adasockets-1.8.4.7/debian/libadasockets0.files +++ adasockets-1.8.4.7.orig/debian/libadasockets0.files @@ -1 +0,0 @@ -usr/lib/libadasockets.so.* reverted: --- adasockets-1.8.4.7/debian/libadasockets0-dev.links +++ adasockets-1.8.4.7.orig/debian/libadasockets0-dev.links @@ -1 +0,0 @@ -usr/share/doc/libadasockets0 usr/share/doc/libadasockets0-dev reverted: --- adasockets-1.8.4.7/debian/lintian-overrides.libadasockets0-dev +++ adasockets-1.8.4.7.orig/debian/lintian-overrides.libadasockets0-dev @@ -1 +0,0 @@ -libadasockets0-dev: non-standard-file-perm reverted: --- adasockets-1.8.4.7/debian/orig/doc/adasockets.ps +++ adasockets-1.8.4.7.orig/debian/orig/doc/adasockets.ps @@ -1,5136 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software -%%Title: adasockets.dvi -%%Pages: 36 -%%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 -%%DocumentFonts: CMBX12 CMR10 CMSY10 CMBXTI10 CMTI10 CMTT10 CMBX10 -%%+ CMCSC10 CMSS10 CMSL10 CMTT9 CMTI9 CMR9 -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -o adasockets.ps adasockets.dvi -%DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2004.11.26:1257 -%%BeginProcSet: texc.pro -%! -/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S -N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 -mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 -0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ -landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize -mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ -matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round -exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ -statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] -N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin -/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array -/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 -array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N -df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A -definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get -}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} -B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 -1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx -0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx -sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ -rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp -gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B -/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ -/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ -A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy -get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} -ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp -fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 -{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add -chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ -1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} -forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn -/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put -}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ -bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A -mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ -SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ -userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X -1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 -index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N -/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ -/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) -(LaserWriter 16/600)]{A length product length le{A length product exch 0 -exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse -end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask -grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} -imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round -exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto -fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p -delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} -B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ -p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S -rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end - -%%EndProcSet -%%BeginProcSet: texps.pro -%! -TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 -index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll -exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 -ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ -pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get -div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type -/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end -definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup -sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll -mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ -exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} -forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def -end - -%%EndProcSet -%%BeginFont: CMR9 -%!PS-AdobeFont-1.1: CMR9 1.0 -%%CreationDate: 1991 Aug 20 16:39:59 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 44 /comma put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 76 /L put -dup 77 /M put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -readonly def -/FontBBox{-39 -250 1036 750}readonly def -/UniqueID 5000792 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 -87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F -D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 -92A36FADB679CF58BAFDD3E51DFDD314B91A605515D729EE20C42505FD4E0835 -3C9D365B14C003BC6DD352F0228A8C161F172D2551CD1C67CD0B1B21DED53203 -046FAFF9B1129167921DD82C5964F9DDDFE0D2686875BD075FC81831A941F20E -C5CD90040A092E559F6D1D3B0E9BB71733595AE0EA6093F986377A96060BF12A -A1B525CD9FA741FE051DD54A32BECD55A868DD63119A4370F8322CCBEC889BC2 -A723CB4015FC4AA90AE873EA14DE13382CA9CF0D8DFB65F0ABEDFD9A64BB3F4D -731E2E1C9A1789228FF44116230A70C339C9819676022AB31B5C9C589AE9094B -09882051AD4637C1710D93E8DD117B4E7B478493B91EA6306FDB3FA6D738AAB1 -49FBB21A00AC2A999C21445DE3177F21D8B6AAB33869C882613EA6B5EC56476B -5634181ECBF03BFEDB57F079EACE3B334F6F384BDF9D70AEBD592C8ECF21378B -54A8B5DBF7CB9282E16AA517E14843909339B5E7C55B038BF3BB493F3B884A1C -C25F9E8FB912CBE23199AD9D2C3E573727701BA301526C66C3617B9514D6F11F -11930B1D97C17816C85B1BFD9B973A191B33CC3B391815AC46268691C741B2D4 -48A840F1128D9B2F9CF07D0709FE796B23A836417BF7B5B12D67F74453C82F5F -25F7B30701D6F6D4F4DC623C0C27D6A6FBECC7312A3CD10932FC7C10851C3C52 -24B75DEA8A648B7F34F5711DB0E843C914E25663C510185BC37BDB7593C1C259 -21D8DDAD33982C336BF272BAB2F48E68217403FE9F54877B243614A87E64784D -2796EE4179FBF96123D1BEE3EF89D682B427BA4F12A1318A57F18BE5DD903815 -261410810249D07D66AB520B2EC1EA22EAF5F93A516E3C1072664B9B833F41DA -24DE14ABCE809631CF1935DFE3DB66D52AA52DB5D09A7AD40377C71EFD08A57B -D834FCBEA790EF2F74CDB513D723D1CFBCFE2896DB2773C68FB3E0E0016095C3 -57D63BCA186B0333D59495EACB48547994098A6AAE37D95528FB851650FF4D37 -5F241E946CCFCAD095890D730C72083460CE87F3AD80B26C772A40870FCB92E5 -BD517E2297471A8C84B604CA36F41F0223A0DB0E9C9444E0AB5427B090FCC60E -5DA993C5D2262F4554EDC952A8AE4893F4882C3FFFCFF40810A7BADABFEBDDA4 -FB2DB33000EF19D9558116EA68E97B516C54992AF451E716EF290AB6097A6525 -FC7CC7C2213A1AFB45E2EFE063F6ABC7838C2F184C986637A01BA25CEFA00EDC -CA63B3F5914E0ED7E92ED6A13621AA3D0DD2EB764BE48295D43C717D5855CD27 -549DA820D6274ADEFBE145385A66C2FF68F9C00D8F02C175892B7BC3FF60635D -81C407CB9C5C6A3B3F5A1107A3FE8421EA0565086B66BDECC41D0F46E4925176 -F87FB85EEE4AD37673402AFE6CB9085280F9E7F4CC0A2368E04D7C2779BFD157 -65B195468CD92CC1EB41441A20F64EAB75E24B605FC8C3176BD5351B13BCB127 -E24093EA4C40B2D5B38B0F79F4F7F39715C40AFCE52273C43ED334B42D3D1204 -6578FB8DB511943A9CABC7671FE040B3F444C8DFD328F4976470DA8EB9CB1883 -1CE99BBF8297686DE9FA8863BD22B74BC32A97F8448A4A4886DD4FD3EF9C5BE1 -FC7988ED06A2196217BAD4CFF12D4EC8A67BDDB7B599F56728FB0FD425C7E1CA -C859542062E6678590895DF7F5B5EA2A4FF7B44E009D728FB832246D870C6784 -02765547A7F385468DCDA1090F9DAF439A3203400727E5E2841161DE7FD75DC3 -72D7C2C3F136B47C05C407770494E7031B50790F28C26C1D50259C4599EED065 -1C78B64E40C3D1D48818085E1FCD256B64C7F71BA6B578A57D020FC1C6672F61 -AA217C090F5CA2C834F19034C895DE2AED16B3B6661F65FAC650731A8E49919A -D13A3785463160041D966B16D664A204503CA969A0B5EF49548BDBF89965A218 -AA21AA4489BAC9AE55EEE0513533009DC19042A8FAACE6F0A9B03BB1860A8BC6 -FA3AE5E0A9D68F8E8D52EADD231EBB75314E7F69B497377C586E66FFF6A5970F -C9ED769816162F4C14C06B5CEA6EEA950FE1236CBC27794EB5799F1E7D48B950 -D605BD84636801F5A683A7A8E5C125A2BE5B323E9B3733B5BE75DE323D860CD1 -17F328FD799D903C3417D793CC8AF3987E5B33C0A5ED29D1014F2E5217F848A3 -E06B94B0BBFEA242C245AD9999CA235B2D5A396F9A1CDB15F2726BB15AEB9131 -D3E6E4C8C622354D60E70B8F5AF5F1B3B862FD6E7AC1414404C5BC737609E542 -A0B19D5883386B6F90DAE7267152D695385653BA452C6FBF869A399B2E61CFFE -95088ED5A253C8F81AF836F7F6D3B1283065D548DB46515B385E66985D652280 -FE9B1845E091E14CCE26A9E241625C575168EB973F27DF1C3281E19C644C00A9 -05CBEB3C5014D6C9B18122E742EDE9179ECF2516D22CF8EAE7C2C065946A82F2 -FFEB825D62592F222EE36877266AB5322F07814C331389E7E54D72E50D04C269 -7438721315DD22C665853102C302F926A06F7130031E06B4C94AFCB0ACF8F6A2 -813AE899B0881E010389BED2124A0EB51E61E162897DC503B1A2935E317C9BDE -554A21913DB245C55B1987C8B05B19A8A11C112C43F5A44BB776355FF07CDF7E -98110C001F4C3089A9CF7B8D3B1AC0E2C0C758C0A69FC731C9DCDC3537B4601B -45496E7DD079E25FB77A014036C50618D8EEF4AEC0544DF917E23D71B63E7602 -1D9DAD61A2970E58EE87551D58A959D4FD86ED6FFCF2B8042A31FB56171EBB20 -847A3B3E73536BB99978073696A9E6F847ECD7AB42CBC934774D5BE685971932 -6EFB86D469BC7BE4F9B209796CA9FBEB92436DF8DFB636BEC891286D5C61A582 -5FFB984E591160E4D39CC244905A02D3D8346F045A158909AD5A84DCAC1558F9 -52734F94F9FFFFFDBCEFC0AFCF02E972179AC3A653E101CD784C34CF05B85408 -91248A951FD6C7DB80D8E9A9ED73D3A04BE3395F9DF29E80AD649589C5DE074D -FE008A5B2C1BBA8D64ADED9BA560615A4606581693B2AFA9A27BCFA362842C67 -1C7FEB4AC20A3F6641FE60A81AA8461CCF06002F902DBEF90F24146CEDFEE341 -24306D00DC53BAE67934E75681BC79B55B7C94E687B3D2271B1F773ABF5A8D61 -77E9E31CFB6F3A128BE48B7A96DEDC3E46B3B94576423FD7EE99D4BC8EBEE4B2 -8049C6FC83B8C3C338076F25AEFE4ACFC8667BA182D489D14A8D9EF9BAE628F3 -90459D9982800274FA5AD9CADBB380217E42681D40206FEB653AC24604DB89A5 -71E340997A2532CB06196D607953C79F89EF3DBE4C3EE8B4941A906CC33A9D8B -ABBB10942D0FD20A04ACCB7920C30DEB0E351DB7FE88EC1826F0715C0CC6C647 -910E69D5EF12D64917031AA0A81A5182D9A6DF3EA4B8CF108F73074D00C2308B -5E9EA5353727CFA0C495AEDB37B9C3A4A9BEE48786C6FE5661299EC8786C93C5 -CF2A2B65507FBC64E8B6BE89F4F755A0571E735E07139FD8CFB00105E222E1C4 -597BD0B32557AFAE470484BF3E09600F069F4409214CE88B6D3A374004E84699 -FA2C1B8F47DBED79D40AFFDAD17B8E5B27149EA07C97A62D3818EA7EA9C2D253 -972113BB4FA67AFA8817279DB0B41E20EEEFD7526556D5554BFC468B4ECCA22B -A623C049F71D9D84FC345DD1407EC938E4E77FEAB36B82E6D3B9BEDC172B20DA -D9DEAFB706D2E0DB0B862B34CC7A2744375B19C5D22C585409959C8DD70E97C6 -2B3E01352FE230F836D3D5B859BF74B127FE56AFA2F8D1F1414FE48B71FE45FF -56B4630C084B035B9537D05F8AFD2F715C6126ACA8B3CEB3684CAD0D9D994668 -6F0620EBF94B9BC5110548FFBA75E373971E0AC6CF4C8D280FC76A848D279EF6 -950860EFD116653500255FC0086C9C2F0CA45676C4A73D30C9C28785B8AE8D65 -22C944848B217CF72149A540952EB45627976ACFC0A5688630066C94821785AC -7CB5D25B0785A3FEF518CF965FEE7C25B24C1AAD2F3F48BB65389BC21B1C662C -40444FD32AE15E7DF318F319BDBB69DCDAA5E67F3450436FD082BBCE1B253C58 -75E44BA7AE91EAA5CDC4A73BE53F788F5A8DCC19EA74CCF036B32211EBBB6F8D -19BECF8C78ADD648E8EC9293614E0C1F22D8F9F46214619BB9AA15B165D6F834 -CEB0029A79679A9E7FA55CA2ECB184438F3E09B3E6F8940F1B42284E3F3937F5 -AFF704B32124478CE4DCE31226EBFA69A801F360A0CE6AE7B1543DC30DE9CE92 -8A80EEC5BA4D8D10238CCC45F363DC2C6966760A65EE9AA548772A8C72A71D82 -227E9165BF151D9E2100696CBB5294E66A734F5EBCFEB7DE2E1407D348BBC329 -9FB2651824ED5E2195DDD3A7AD0A467360F5BA43B42D4578003201A1ACC791D0 -69DA7CD6A1E4AB865CB03707D7E72BDA0F4BFBCBA2F5E59F2E6AE9DC79C29036 -11478FED7E3265F5B49EA40B0F41D97AFB3159504D94E5E5A5C0745369161526 -E9136AFB4C30DFA265A21F85FA4EA64515E23B84DE721897186B2633EF115B56 -DB6F922069873683709955E6C3AAFD8AC4C0345FBD0E2CF72337AAE53789F139 -B2A8FC847CC8C9C4B7027DF3953455B2154A0169F172F884C9EB7D00CB91AF7E -36214E3C05051E58B75F19625EF77F0D851B05F8EAE17A5EBB376E3B65F16F70 -DB77FA55F3D58B613CA7EE8C761924A3450DBEF7EE613BAE087C8AC70DB68F7E -83646F815181C3E601831FCFEA87242A6533545B76F05708AF1A632A5BB19BB9 -3BE13222370C2DAE55008C0D76EB8A8D52BD03E3F083D20CF613BA05ACBBA2D9 -D6889E50DD1B9E4F8208F37247BAC073A92FC8ECE66DD6A4BDDFB4FA62E13C05 -D7DD37C340E0E2D67654B5774E2BBE831C13F007E2BD6A00229AE825F27B786D -4D8E8FE6C6782C3B52673BC9278F99250CDF1AADD984904E3934B1D128E9F2AC -B90D1C49F33544F4E2E88EF61BD3BB37E4439B050977026D6AD6A538E2B56384 -8317DFEB9D2112890EF937D6B2B87EFD4758B0129501CB83CE97B4013FF0829D -76EBAA42DF8EE3A46359A95EE4D6703C639197BA3549AD2453F71E48AA368D69 -DC37C0B9817EA4AF21B09D743AE247993B2A986B191AE874107885915104D327 -BB1C244659275A2248088A39C0D272296AE9BE4B29109E292AE52CFA3BF593A2 -4974AC31C79A76C154C4755DE464A7B2AB0216A4A656033F2F870B5AD02A22E2 -5EC8A81CEF6AF89B548E9013357FF7111A94771B9C1BAB573B926B12F8636DD8 -B012B47DC0BADD3BE442DA6885D238395D8755522E235DCA1B989E5CB04A1E70 -C95C40A973FA3AF60C955AC9F4EF1DB0347B39E09C6FE7E81804BDF5025D0127 -DD907B1775DC615264671245EC76896649C48C51B5FE0F455FF4BFB535393DE5 -E6CFBD57B2C04AD94EE0B0ADECC548A3627BCD2BBD1A6BA0F8F7314A9D07B0F9 -08A4487D958A9EC28B25D70DA9CDA3A6108BE77FBF1D29D2609EC7407BAD8F69 -068B253FA30404A43E2E62CAEFE2D2618F49F4C97CC1B7F1B5F7A5C8997B27BC -E2DE77F890716ACCCB3F1DDC4F2B71D257486D3EEE3323130483E0266C9DE0A0 -2777D5EAA791EEC955F34CDEEF6B02AC99E78DFB4F1C97DB1B3F80840F39886B -3C9FA20808367D0751CEF149DA3DC222AD7A37E3719A3C8DC35BC78D6B9C85D6 -B5E8CE06624D0E29F0FB5F8FA1DBC7C767809218CF99CDF27788580409F1E501 -FD7BCAD2FC7E249B0CA82431E849188396B72DC87A741F4228ECEA99B47DA5D4 -B11ADB6AC81641DEEAF4138A3A36C8A046C48231496DF6685B4978A2C40E2ECC -B8BD5EA289D52BC0613512BA627230C50342A8E5A15D25A4200074C6F40AB6F4 -8370B1A76943A3BE3BA9FB2968DD8B00E1412CBEA8151EB57CFBA4A7A377A9CD -65E3A20FD87B1B6D8C13AA21D9A9FF3A95614B870C6FBB8065FB92FA48AEF6AD -2CE44729AE2E5711D5ADA50FE1E9136686CAECAA3FA6E21C11E41B03AAB26B5F -E0B1A7D96E706EC67D1CB06505A689A8570163D9A20365E4B6B82E876208B04C -F076DF3C18878EAD223FBC75BDE40746392F24B08389999647FFCDB96A2ED6CE -0EFC8EE1A3C19075302C10F33426D816B56DD5037952F111FBAEB7C47CD58900 -2292753723A32DD30D80D6570FF690EC933992075F43521DA034DC8437E16725 -9C6C2BBDE2EEFC9455B55EB45708F05B883FBDB475E1E6D0FB530BA02FB27CD9 -9D03D9312E75F2ACB9136C77E4679FD8132FDF565C8B906E5518A0C7B19F6630 -6B2391745644F3B2390EB85936FD6584C4DFD66AB72CAEE39DDB128BB10756C5 -46838C1883929B73EC438EC291FEAA965D0855170FC102C4B815EC4C16800A36 -97FB54F17FDF925CCF527D8071A6774E15DDD9DB8BB03153F3DB7779F57465DA -72C28ABEDD0074455771809955BE438BDDE665A75E27442D14DF04B9FB83506F -42EA92CA5AD0FEA3790F9598806942E77AC8E93F6B21135B3EFA7E615F446FAD -56F9746ADCD429717FBF2502A4FF22105BF3001A917E5410C403AC7BF4E606F3 -7E95434A0EBDDFFC383F0FBF448881F95FE95491035D520C11D9D008B070BB0C -B731FB220B6AB2173E4891551FEA25499A1CA0541093A46F39A0AC24273B28C3 -FF432EF9925BE199787EA02B8DA49FA655BCEFE7D0E52249A9DDD2CB13F5B274 -ABF91EB26425182B0E6AB00C79D2D16B68D4A058BA900611A620DBE6646B783D -0DB5DDC5A4E2B21D4771E29BB8EAB32D8D6B0A3AD26C71E6F57A6898C9A5FC20 -32125543A4FDE29D1BDBB77D055A6ECF8646DFDF9C5BCD088BBFDEC3B480B356 -9573215DC9F569DB95B498C7801CFD64715C5EBCBDADB6653B9E69DE0D0E16D1 -933C7988D2351691EEFC2D5B7FA2FFC5BBF2B71E7A2107EA1BDAA294AB259680 -81A52E3AAF726F5FF2F0128C4A5EB6F0B9B182C24A2D288051DF164AC11989DC -79ECBC30460A2D6D0BA636BC8BE0AC9DA8FACDE640BC9E2CEE7A291B93551D53 -6EA1FF7A00ECA8BEE0FECF16A76E20AD379BF371452DB6ECC7C30DC7BE8DF95E -50E63F565F0631B047B7198DC3F8C17BEB140B4416CA280B25E1C2D0F0017B46 -C136F26335A10CD98679A60DA09A34CD1B34281F7DE7ED6840F65A309E0E2E22 -5CEF0ECC9C5967CA0AA81D225E27DCE5D98795896E748E6DAF4CE510174A115D -0053462A7556C23C8BCC5BEA5D539B6EC357F2A8CF5A2ADC4E1873E4DDB49AF8 -72F658CCDCB406A4B41242A5FF9D02391B9C046BC3838CE4404678FD1345F73E -A0633BDDF33AA530DC563C45EF941F11082141D2D12BB191493A781E560B1A24 -CBA7EDC0E0446171EFF99F752C4397A7D41293E9CE7CD736EBD390126806E34C -A523E3359A262E3469BDEBAC661BF2E8575AA38B81CAB783D11A35888841A617 -7059A6EEB0F586AA53C1E21659C18813FB800BAE470A2CD80E931AF4CDE867FF -5CD01E80A088C685AF58CCD28F1898431384D0FA03C82FBE75224A4C4681722E -91D90E7D5259684B96E9AA3561452452D088C64494A8F04704F1CA82EDF19423 -8F27F79E8973D388FA75AB64A197B69FBC0642A01CCBA558B9D603C1DD9CEEC0 -AAC55C1189198577D7D25CDD710E22CFD1BE2BD979BBFFD7FD14FDADB27AB927 -A5609C122555650F5FBB7172E950AF6DE6E353CD912C8EAA73D8097A6399652F -B25FFD308607CC902092406C1F7DF6849A79B0BACEAC0E610096ECADCDBF7CD5 -DB156645272B3CB12BA14C7B153A3CAC0C653E81A765518C09A0B0C060CAD86E -F423AC77B6EE64BB7020831A5B7BE2672FA1B2A0C902DBF417F559764C47EDC7 -EF6CA4D4CB0C8D2C9000367490B86FE061FA0C2C14DC13662A7490F8C24FF2AB -F1C3416AE08F3764A5F47C45B75E885F9C80CC1B474753A6DDF634486F269FED -1A8DA454EF9673CCDC667E9AD5F94ED879A97874A5FEF06301767D17E6240944 -2F0C55696E9F61AED27818C8BB32B357314A0CC15C5FE87021244A98AC20033F -7F863A49C719DBE4265C3D1B1D558F1395175EBE44658720D685E1105A8230BC -F21A94A8AE7726C06CC718E8C92D9BDA23431FDEB7A791426A1A86C9034BECDD -19601903AD5706D3985AD9B2AD9AE9D799D83FEC423ED092776BB35DC527EC82 -AB3EBC989256FBE64303E102445AE2C4FC1C9389E9C1380BD63905AE1556A4D9 -8015B7D4C93DBAC4F71CF60BF827129A546428D1E3F165481E0238D8A03F285D -99DB6A6952BA2A3C6BFCB4C7F181C2FCFEE96628431CB628211EE0E065ED000E -F48A56ABF315C2A8C4AC980F42EC3C5E9D14135B0235382DCF877E0D1C46F99A -4C22FAF99DF7D20AE1BDEB55EFDC06780CAA14A5E7CCFB4C4508D161B82D2D5A -12AC6C6B5B70C0E1A915CBCFEFC965D0434E004C8BAA47EB4FA60A5D21C36D44 -0BEFC2B5FFDF25882251A59E48415E30FA82A77B6CC6CA947EA87EB30AA78DC3 -AF87565341395DB25B1A3575E7724EF0653EB39D7BF1B56435FAF2C79A9398CA -93D8ABA45168A1F8EFA4C4040EDAC4B57649A1F9D1A66AF3DC1578A0E29023BA -83F393CC946E33EBAC7F08029C49352DE8DD7F3402F47846F07A4E51104C50DE -FBF351CF14C06FBE0D08A6500F6C90320787A5B987CE7319298CB2B83707684B -8A37C76A08CC2EBDBE34C9EBAA18E8B96E381823F3B0863F873FDD479973E539 -6823F0B497F37C1500724ADD1099A692AB6C9B599F403F8762CFB973F85A6E53 -E0F80C6D95C9063BA498A8E87E3B2232D0CE6024ADD5CCF38DEB439EE17C4592 -8269F086709F2C30FCF02943315B2AA08AE0BB92F578E31DAE9EF4463EDAE3CC -B68EB89A75D7F06624358BD3DE44F13FA072296DAC2BADA452F848D25E2A5F04 -C036A33B7977D7BE59A06668E3FA6866595407CB2B1E92CF7D27059B8AAE6021 -C88D84D4C923478DE1FEFF4009F5887E9DE5EF8D2B0E2B41772C15902D7C0EBF -3BBA2B726F62F1477F6CD2F2A0AFE9157ED1AC1B9C436C041B238DA6EFD4611E -F3897EE9235F76296EC382AAD0D2E5AF8F4141B26004CED39BA792D23FE47003 -893FD49299B20E916921BEF8F50080938AB303E8B4ABD8CEEF975731D0F0A4C5 -351FD30531F48CDEA8D1C66C8BB08A4D1F9C09CB2220DFC2B5A6F5D406D2773D -751A87A5BA5424B071882451C1BD6DA3E09EE4C8779563F1CA9D3CE8E88F9C62 -227817F3505844378655557E564657DDE73BA43CD19966C9309AD35BA21DC608 -2FD911C1D609E1125BD61B3B3FB28AECE6B76C6815E9139274FEAA2E79CF30C5 -C2961F397B34CA903A196EDF4BF5BC05404CEA35205C69BD3E7749B48F373CCF -9B06DBEF1F4B119AD9D4071F4EE32859EE53C2CC21F4C89C60A626F41B77240A -E85CF2CEFB15B081D76CA559EBD6BC2A9ABABBD4EF01D344666696513EB51EA3 -A9B6832A7EBF1FA9EBC09213D863F3B39866CDB24C89A405CA3568C92990B2A5 -A9607D811C5D57B5C7834AA55ACE295A4EAAEEBA8F6796B6CF703A72C69A3E06 -65DDCB95F0B0E7B2C823D979BDFA93857D5FAF5389B0A7CCE8727F8272EA6F42 -A8330930E77679E25DC2AEB08AE6DD1BCEC9BFB44F54D23A2EDE1C4685A51072 -877C5D998F6E2A832E4FDD57B2F917142BBC32DA4F5F45904398C9B9CA7E24C6 -6E31D88EA68B6580642CE8FBF05AA403003B5E0EB128BA48EE11109EF0851E65 -0DE684C3C9F4B6B707B86955B3369758FAF1599DBCFDB560A91B22A6CCA782E2 -E7CE85E35D7D42AD5ABB503405AE3A54174A5D3F0328A59D45B8863C2451847A -697FD05B98E616D34347C48A2A49821E5CF0E7715E6909AF87790BD06A0EEE3B -4F8F632CE5F86EB929876FD299C1C72D7F99818CFE4A57D601AAB3CA1813766B -97FDB757C781002DE5B12205124259DA8875B09218A9615AB1F5EA3BB00A7486 -938C0A70EA5CF9CA156C21EEBA2056B97D23EA4B581E711712DD8FA95D48EA39 -9E81CA4B62B1CEBCC619752D1167A594BB84F4F06F0EE53C146E04B229B20D44 -1C3495089E796E001A7EB1A577FD7317A11D1B5BA134B3C00EC6A9291C61FC4D -E4398EDFAB6D2DE81CB2BAA7DBC258BD7BC34A77ACF1072E88C02F5EB4170375 -1BD6D89DDDBF9856A60ED99ED463BAED7BB4ED69AD1391003F5C33478707DFEE -B7CE94A2F7A1ABC58BCD19D618527D30FFDD5B0D939557614E66ED30825DF907 -2E6C1E3FAEE692F4342C0DB41A6D805ECB76CEAD79547CB824B5852D7999E3F4 -D2C39B9FAADE41A3FFF0526D5EA905C5BBF0976C8FBA4E18701AD9D21A454D58 -D3BFD66E7C28F2E68ABA143C44674F327E9F97DC67B84587F07A140AF92FA7E6 -5178277C1DE9E15829B362076FD7E1676A941C5624E2232A344A820E52FF3AA0 -E68005F17AFB5619C55A8B9BCC7336C902C0403F85EC54785A2844EA532CC7B3 -C86CD201DE5FD9AD825E0CF13621089C0E418C2E45A72C0A476321240A19B41C -26BA16C87AEAC4299A6C76EE4A3205E3FA2E47631FECB1B14811ADC8C928D187 -9D6F85500BD11D1A054EB7B3241EDA8F03FCB8B66DF6D3C422846027531CBCBD -514667B744DA48C0E2F823AFF5DB572A96A3495BD8A7A24D8A12193B7F16676D -5DF0C8BE50B971ED6DDECA266F93DE850812D4FFB5FA5B4CCA8209700A71CBC2 -D39B0AA6A285491F8CB69C780498E3A9AE988C2C1ACA328CFD6DBAD79B1F58AD -FB8CB8CDA2A8D03D2EF98D24B73B5244EDB4B2988F06F8EC1A2B8A32B6FBBD5D -EDD4DB5B9D6DC9D7064CA95CD04D47222696D20B96F13F8CF5098AE6BD5256DD -901D249F26731A9203C6ABF7AE950BD0DF7495A9096CAFC23DBA6C8655EE133A -ECEB19DE948A8C1C7C8C88347DB88D16AC6B98DEB22F6D16F720DDEB8E80C902 -7FDA8F7F4CA4ACCB22FCCC7814A19CFFF3ABADCD09728CC4EEAE9EAE7163ACFC -032CE7EC4BE2FCA2EA16D6593B16457E0449A75AC6D15006E450F291383F4587 -128F6B3F08BE1052ADB32F60E24CA7BB7E91681CFF465D97154C02C7725BCDB0 -098A073769E5C12383D08A3C1856112B78B52D3E77189F1EC69700DEE97FE734 -F94C4AC07871006A0CCFB25ED383D916768875D10848AE8144FD82F48C898BD5 -910E04AE357D1B6E120EEF3001737EB9D951DF17E346A0FA5477FFB573DD7A19 -1A6355914EBB694601FB3590675481CD4619686A85B81247D88252C0CCA42E81 -92B1878F561E41CF73848512C5A253BDB59F4088F1B5D534859D4992C5EE3615 -EA8C56E0FAB46A899AAC8CBAFB385DF744C017D7976DB010DD7682FD21A08D31 -972BE03B2ADD2BE047ECAEFC452E1E3F2860B6298BDEFA3300280A6F4239B993 -B188208A3184CD6AA69277D1EA6C4EB3AEFFDA67594E444362C6B493FF6470EB -ABD219A945CC07AD292E7A37543A6B2B8DCEDA9B28333AB921E154FD766F8A2B -34447BC847217CFF88D4FB162937544D85D3B11AE6E3D98C321861343392633A -3979A383F5FD2F2623D6938045BB58CF22BC9E7E156626DE39331AD399F07493 -A0FD458636AFE080B6DF2473C41D52CDFA64B13D98BF9A03B9E88A00765D3A76 -55A5C85E8C2478D1BB4D0C12585FD3B5ABE9A375DF66D6843959E53C8F6D4292 -6FC531D5C02F2AD7ADB47BC7F5C9CEEBE5D80E208494448598796969B3C08087 -6B12E318FFA1FF9F11B0C3D4DFB3C5E0A129643CB9EE051DC99DBB01F36E5B24 -6118105A2BA0AC20444B7E366BF98CD8271798351149EE98F3713C6991D8A4B4 -CFF5FB7B0B94BF07F9C2027F4B8DDB9AB80BF9E58B079814C93941FDFADDBA42 -C4922A697110B02A6C8596E468B722BBA0F3FC0C297ABFE31E39A4645C94FCD5 -A8B931694AFDA7F4FB060F59946B528241DF0323F1C877B4FB822A035CF1E2EF -808D617539ED4808BAB00E9B3FA6D736145F1D195EA67319BD7152CDB574F4B6 -20A1D5BC4B6EB78F7DD6E5BF637640DFA6D42DE0252D3670888ABC6FB6F19BF4 -BFC8BFA734A9FEAFF0199CB9617125C6757253A5100A300670426E9486975840 -8F4F337EEAABAA8DD8D56FE70598B558A4F86DEE08EC2766732C8DC49DFEF32F -3A9AB957AA651AE30F03E3C44A02B70B9DB27C3F3A5198B237C51BAE3A6C5B23 -8245EB16F45C120997EAA71FD0F6FBD786C616CA30D53B7B0088B6BD46994AA1 -9D5F6EBD05D0BD845EB1B8F07D494354D1127C3AD45B6F2BAAB4C51839463922 -0FCAEF4C50460C1792AC0C9E6969DECBDCC236E7DF320AFDD36BC15341381BE6 -58046FD36DB42A9D2A54FCA18C7AF294DC2F208D1506217F302A06DA6BF596EF -64FAEFD2B4964F2245F57C1207EB6698D875DEB4F8CB2ADF8DDBE223C600BA06 -CF7562B9422E4CF8F829E4FFDE1943983F46E7D9D764411E7D5F544F73D40670 - -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTI9 -%!PS-AdobeFont-1.1: CMTI9 1.0 -%%CreationDate: 1991 Aug 18 21:08:07 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTI9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMTI9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 46 /period put -readonly def -/FontBBox{-35 -250 1148 750}readonly def -/UniqueID 5000827 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9E3948FFB3DF7BFF10C9BDA4EFE5F68A8CB1526990D1357AE6D2F7C2D2EF8496 -4E47B39E6712EB8908A3265E5FAB40567E866C244814449F1E993AAB422C3F1D -DFA8C7118584F2E5197FD4BFA3A8AE9E953C6CD4672C0FF51E41C3A919749C1A -F06650DF4C5E17492164BDBCDF22609A74BFA7F69960A64B9F949FFC2A807458 -8579366C4F41BDE1FDFBCC4845FA19BBB6963D65EE8532549274BAEBDFF24FA6 -03235D1BE37C06B1938AF369DA75BF38DDBC87A1FF445EAA16E1895ABE9506B9 -211955753E447865D33CEF007391D2666A046277A30A49804FFCED3FEA5EB2C3 -E52EE14A9F75241EA10C91974CDA6236EB840FD44D6DDE4D9B3266C3B99BD38B -D835BCA8CB819C073480FB972CC028D218F6A1D344CE1B63F4FBF2C826F412E1 -6E0B05A26125865A14FD7B7030B478BB8BC6BC395335C3BA940E1C348267F4F9 -0AF97BBEE253511940F1048E175D3569F7D05A28851B6F50765FEB6C9654FEDC -1BF52F535DB5BB90C1BD5D2EBF75E0AEBE82B20507F3C28A03746781018D4EB2 -298E4F2C27ACF73FA73EBE43F014BB575AAD516C0407B29E1653375135ECB74D -C91372F06FA8EF37C31AF3FA48AE65318EAA6C34830A5377ABB2DFA5DA53A574 -433484BA1466709A4B186761655C8E482833B697673E847C691079E7F1DCB8D6 -1AD91101D757B83E2090337D525AEECB028FB3C9F6A6E6AD2F322CFDC5A833E6 -1CE4EDBF41FD34FD61630581D222F854A76C2EA9FD72796A7C9CC1F6C2FCCD16 -E95CA05826A4ECFADA6A5FB83C41A7131E52BA6585DD6DD78515D8F7327DFC6F -9404F89293D6ACB433CD0802C43F0E74C6C4766A23A6AE3788FE6CAE82E1A104 -BAEC8BEFDEFE4F292F625E60362F3886F602CE4121BF0AAD93526314BCBB5971 -40091A7BBF7EFB3BA355B88C897D9C70C841DE41309348751EDFFA8675215988 -49CB1599834A01EC6CD4FD813AFF97A614F56975775D5F48E9C1A9CE532FAEB1 -4EBE20C3FA87CFE03664C428BFC5C894668E507950005BD8C2BCA8998C1FB92C -4E6B791BA05B79F332EB8AF5B0F851B8B7EE372EC0861B09C007CDF43F82D0B7 -35446F682A0DA7F4112CDABE4F922EACFCB7B8C88BF550B60957E7 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTT9 -%!PS-AdobeFont-1.1: CMTT9 1.0 -%%CreationDate: 1991 Aug 20 16:46:24 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /CMTT9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 46 /period put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 95 /underscore put -dup 97 /a put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 121 /y put -readonly def -/FontBBox{-6 -233 542 698}readonly def -/UniqueID 5000831 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D1E -2931CE5F5D18C658602059F07BE66E6EFC9239D7AB2FB8A4CBD41675B8ECF279 -650C29E53B14AC0E392A664848C1844B1CECBB2D5CFB72D0916B675C9A9A1E35 -F12696A6F628473C604A95376468E06E295AD6F76CEB939D94113532050B9D5A -D2F41A9EFB9424D986612313B89EFE9C8A71313340B248F6853B1EDBF02B7F9E -F447220FE131D7D54CFB8AA1281DBAEA73E665BACB1F164552CC0CEDB63BD4B1 -4A9AE8AC6FA02242DBE8DA46B64B6BFC11762F0784F216FC8B9120D688D1705A -438B14F5E5DEAF2A98408B3B64620DE3732A4DAE6D08D5D97E34C75DAE19EABD -BA0796165C1151BCBFB1DF8D29A63A8300DBDB9E3323CB82D0337598B83F4F2B -A97CF5196D4D1CEC1EDB8966E548C0D9C194C932319610FB43EA1B86322FE641 -AB48770FF13BD475A7267E142388563D1A400419C585B22A9886074687BEDF74 -D905BE8EE440BA2ABF28EAB673399B7F129B9729DD5564C681954621903B84BB -CAF89AC5ADB2932472DF29ADA2BDBDB4D05F65F28F5F4C529613D61858E0074A -082A852710A62A147C966F2B85B51B0BE85F11D2057C66FDD61F6C5755367980 -9F4DE680601D4DA41B46F8D2148450000413C27AA39B586B74B977B25F0FD3C0 -4BA1EBFAFDBEC531EA1210365091671CE3C86A6D4BC591C37DCC02570042575A -9D24252D6E01A8603753934D7EA5CAC1BE4E5AD2BA047DE8F3983B23A8A1511F -B08D373B69E5076CE4300137B8805EBCC0AAB89BBB312A77835795E3C069322D -42C893A30AD739E2BDD299679B158F7493764F2321E3965141B5ED1C6F4765ED -F46D391A646B30C90002B1C461AEE79E5F094CACCA656CEA3DB921CC5205F328 -A2C69F817061D6C60B121EEE844CA5008F23DF0B6D5269554FD9AC6F4735434D -CCEA3036D9E26CED006906D5B1A7540FFB62434F9FAE72D048EFAEEB84649883 -361F96EBCD16E00E16FA549D83FE60D29E61DB1C071F8F61EAD82BAF44A8855E -109981433B48CAA042DE01C8909ED2E800A58DAD160AD3E65A4B4F6DA85A99F0 -CB083F161E8AAAACF3414185AC782B782DE57BFD39B93BEEEDA5C2D0B0754540 -8D1A13890A2B41F81295F4EB07E414DB0F1F89E5F28FED53543DD7E519EF1A50 -7C0A3BF8E547C807F80E1BBF70B1023003F6B48D4A0EF52F3841156A954E51BB -850355B02625912703BB3796D046A92B13407EDCE6606794E9C7E46A5BDC117E -6D94CC516DAEAD319412EE368BF088CEA460609C32272BE7CE20AF208C70183D -F187F3A4C9457815F47A6580BA8BD08816C923863DC41A3F9A025BBF083F73AD -52565F1E90C4E0DE88C9D6EAFB5C3B0615F6F47C1E9C66BDE2CA1A1B8968BF14 -E9E96B3067CEF5439CDD737286EF7657B4A38F60955B1088ECC8E55E860C75B7 -F0AF0EA2B7B8654BE2B92A94C6A39667BEEF8A4989F08A7361EF9612DDDBC27D -9F233EF4F42595339079D959DB72A04DF55C635477EF84A87970D8F5CBCB7E71 -456BBC47CDF2C09EC528156D555D37A1B5B75BEBCF18813C3287BF69519D122C -6D613471D027C519942B2BD3E6B2B5F22C0279696FD060C8C7FB7B65E29AF416 -E1A6BB3442B5AC01A9A088DF930C9FA8A8BA78A093F49BB4144C34C7B0AADDD1 -F1AB1FA3F6E67FE0A301AF7D562E5F30006B3C4CBBB586CFB20D7DE1DD79738F -77E9F394E771C11D50B6D3C311CDCD1FFD953A2CFA334BE6B21045A0E23223BE -D6A279AE4D2237613E2AF0B78CD27B1242CC21372BEFF784C508EB83FDEE5E88 -86BFF8F53F2479D5FAEE2EC9ADA2547CB7BF43358F0B8E8F0E8808EF69DB2527 -1A5AFE11904841B4B14925330FA0AA558EA1367A1A03E386E746C96A8130F3BC -0A41688B5A9B4142B1F5658BC61870470353F177D434FB17C67C13408DF51016 -2E73EF75FA462A5187492DD007F9EE5DD2117EE5E223540D3774252F9FDAA23D -43B4A253A1285848850FBF177795F312A45C74218BCC27052BFFB9044AB9EDA4 -6569B8890773287E67581A187D0EE1207E04F2F8FD9975D6AB4B4494C63E6860 -1D61AF06B60FFE075E0243E0ACCDEA4E55069225C31308E6FF0D1094295A925A -FDAFD23C1DFEB7EF186B7A2A105B3CF7427A27FB130DCD0FF1B237CC52D59F12 -A86E2824D5C0BF221E76FF1B3BDD2BC01B4A54DF038AD1C6CE3024C8FCB2279C -D5B2F21289CCA81337401EA030712F14DB10CEA5E704032BFEFE0D299D602FA4 -4965F292D517CB285C2DAFBB0CEDA7D874BD2E943C096438694DFCF083E1A04D -7EF9307945237F8E941BE90BB1D4DC0B0325223A77EB6C14F6643762CA03D7F7 -B76FEF92C891CFE06AB54959DF65D8F9B5416D7F5BE3ECB71C83B7ECECADFC35 -53B901E32446039A63470C9C4F40560957FFCAE5F0EFCE947CC4108CD851F228 -081A7BD1378AC117C94414DF44586485665D9DED5B2FAE48034ECC6CC18419B0 -1DB1105A6A3A73572D1C5C77521718284B370B9EF8B12EFE6DBDCC70D2964B57 -D338745D837579E546AA1220BB8D135319865B5809C0FCD28D33981B4FC729F7 -9A18E52763CBF975D3822F3882C3900BF6FC1DE2895A7872CFC9FCFB1C7C8198 -1694929C7A42413A66DAE14693A54A66CA1AD3F634BE9DDD50158CF56FA47718 -13B084E5453458D871C4001ED85E0A2104DFE2095CBBDB4AB13B8EF78A9594E2 -F4FFA3CB82CC7EF92009990B83015EA809FD8F814D098E2031204D869516152C -4963F0C99605A2CD74E2F59FC44F51DF555ED649799ADD768BF7E1D91AEACEC5 -4739811CEF5C6D6D356D0D705ECD8A8E8DCDF0CAAE7726EB4261599EB126B817 -B3621393ED0C20F56E5CD1BDF038A2582F723D9C6FD069E1117B1F499BC7137F -277DC554BF29607DCC27F68991D03F89E8630AE3294775D5C4691124851DB005 -F58272B14B84AD1B032B334EF6D82F39670ACE2A5FA5ED2A8577B4DFE339B86C -533575908D84C3D821EB8E50E22663A2DDF194E76D1911B146396099B4CD9B84 -D682B05B637F73759CB92E8B0660A299DECD24A39A811E880CE9D8BD48CEDBBC -07142CBC3F0F1D72C35958F01FA09A2D0F797E881CA3CFE81B73E8556402AE76 -B4D6CFBE32D0D552E030638C02F5371643A64594B3FF310BA93341BEEEA9CBAB -CA1D82A3037D5E8C1E82E81BD682EF0167E0542872A08B45C3F9C0A8CA733910 -CB96D80DC8F2AE5AABBCFE74A3E4EAD4D65DE521BC3D2857CDEBB8C3E9EC6D62 -84ACD256955DCED373578EED3565122B594FDFACAA572BA63256FADE003CC5A6 -3E7457FC623C62C48A9A6F8F4AF8B9965D3F001C249FCE0E240F9F90F7BD570E -6FEF64A2BF533A49BCB400456840E6233403D49E8838FF88DAE8B34EB6EBFF3C -AAD19D49D64898FDBE07F4CD4CF3CC6EF404165F5E04EF5AC3A89D1FF7788EB7 -6826694681B437230CAF069B55F7474075D445F3F9CF8C7D44BEC0344F23BAEF -331EFE1940BC054D212CC3B4CEE20CF4AF484265F9391F6331E15EDF38988278 -65ADD8F53F0C56ADC2B328B6F5B2BD3485EB156443DB3FC6823755076A2F6855 -BDEAD048A68E4307710157A44B2CF2085699C0669AE8D9F583E5A3167FC4411E -89DB34E988DDA3203B9C5F7CB611DD02762EA23909B7C78466722527281423D3 -EA2853756ED3CE296F9ACF767A8484203B685733E9628AED98606AC90BE7B03C -570050E3BB977F807928016368324F2EEC931840E5A69D8E8F04D8C04C7244D3 -D967CB59A1013D5369DB27DA56111A23179B932DCB45337D26703B6BAFD9145C -B9132DC68BEE69373D8FEE2593DB873207AF2549544156E841E8FC987A99476C -4B254DB874200AD0B8E0A3ACC1CA08891A021274DB8BC843B6E8658B06F9F614 -C30E1E0E84C45A3ED18EDE10AD2F4210B9CBD3C24F7C16A8135B54374FB1B537 -0BF6B8B5C349EF0B7B3DDDD18EC6BE13967CB7332E7CC56F3326564A4D8B01B8 -6CBCD33310E1C03CEE05066431227803BBEECD07D175DF225D16B2EE09056BAE -234BBEEB8E705B99B0A94E20E5368A86F9105FBBECB3DE76CC1551C90FC64874 -C66B19ED7D042C690FD77B3A66D85A7840FA57D9F6A2C873147FECECDCAA1A78 -5C5769285BB3E119D9A86190858B2519316F1504B916EDB8436045181B2676DB -FE8A3808DB2C6E5B3B340924B42AAB4DEAD9C03DF40FEA91B3B77D020F4C08BF -9CF3B7909A71B36CCC2D1E4D82FBD55E117DB0522C8D035A9B0B961494A3B3FB -E77DCE6E464DA9158E79F3EAC96BA2CED6D9E1CC43DDF6365BD14551CD835C5A -7F7146A61284D0EE95AB54016F8074F4D41379DD754C2209465A1B0FAE82D729 -AB1398B6D29355496B0490B32273006723A6822F350EF90AA3F6B463F07E511B -F5502CF274C613A88F9EC6DA9BC785EB3F419AD35054CF72866A022FCEAA20C7 -EDF990A7EA759AD533CD1665B045FE97BB463665F8803CAC88B8BA42EB7C2609 -A810BABFF4B29C12DCB16BF79B955E7E19926529236F26BDFA770E75E9BBA42F -89D4A2E62F2120C95653C28F4959D6E9CD8A8ABA6F31ACE2C142496BE94BA6B0 -FC68C564FEDA9E81CD4000ACF9300D9061EC9B18E8F321EA3DF8367C70BD265E -8D4DB7F06B3EC7A4246653F3FE00B200E80B70AD55A771BD156FEEB01C5D8993 -C399F253FD21C28DCB9C95DE0CA8ED711D35D0819D1AAD4321FA491906926DF5 -DEA84C97D2B4AD8021AEA06121E98C2DDB828E77B6898252896931B36AC665EE -6AB3F4F3CF5D9E6649527719DE48A97C9086036DBC84025F9DF004C0D1C15ADA -A9FFFA38E60F4717BB5107EC6E4DE0DEAE1B74492CC6620D54165E2EDF40C442 -EF1087036FEDDBE65F11387D441D031AF171E7A69785939CAFC05BFBAF1EB34E -1474F5375F22EE46FBC116497DCBC23A859FC6EF953A69EE822BA85031172AF2 -4738439B1223972BD6F39FEA4BCE1F1039C3F9BD33C0259915482993F555CBD0 -A7DFFF9A83B281CE7BFA39AEE23D1FED5D95B5636905E0FD28C4EADE2C15C357 -68AC6758CCDAB6635ACAD0CEEE6C0CFF5CAB7FCBEC033107A93D05F3C125A222 -3516C274EBF4539CD986646E1B69F05EAA710C3740311A598D9F49BEAD6992F0 -6D0F83C9EC4B03209E737EDC549E7FA2B69DCB4099486940422D7FA092D28E4C -6F655775BA2B50EEF1C72037EFDF4065A38C752E17841AE95E60AAD00373770D -310C071D9C54A34A6FA03805ED6987CB55A7439026C5899BF4B9281D2456DAC4 -BEA100CB3B367835B3909F8A3995719E9BC81888D924AE564176F2104110F359 -C437FD05550B9CD5DF873D1F52D27CA1EFD8526F03E0A4F6E603B966D1B8B0F4 -41DC7C69A562FC9831296FC0EACD4AEED7F597214A8BD416EC38069EF53F8378 -192360BB61400CBBE02F17D79EC7AC4F9B1EBFD9EFBD9F81F761701AE8E9EDC8 -096EC376C9F3127736DE7D33B828CD043CAC80FDF577DE19DF03DD622BE3E52F -EA772287FCDF867A50EA6BC28AD81B730FD62E31183FEB9FBB1ACDBA3255A13C -4A255D4894508C217E6F59D8CB4206FAAC2D035F50509E8AA00778C5164EDC14 -7243DEF12A885850EFAD90C8C35B38D730DD18910A1BE4A2B33C515DF05A55FE -48FD1BE8188B011C6875A3658052D60EE179AAAA0A87827A13D4F1465CD2749A -61E27C0DB6F015D0CBE30E17B194667494D979DA19ECCF663BBDC9BAA9F3A3A1 -D6C0C777B40C4B5094E7F4C6798AC414C696051A86E0B97D775EA73244423866 -17709B7A051756BBF920946A5BCB1F290C826122BDF3D86CE54A48EAA0A0F846 -71D1F2F0DE9535A4CCFB315141DC4A3B90661E21BED975B45A486BC65C157318 -2DB11A5283D5C33903972B7099D456BCA50B03B4AD1D826418AFB754A4CB545C -18647F4F1B3B9D0C5D20ABAFA2002642840B33EE3B516A3A08C33A8B19DB32FC -24408844086699E0658658E35C91557C9004B82C565090DF28BEC132D55AA3C6 -0A7C997CEAF0DC9C3583DE6A3E10A886384D36AA312242B9006BFDB98BCA3A4C -8919F442456838283D020AA5EC406A857B31D40302856B9A793C2ACD15E5E8A1 -71514A5A2FDD90D24392FD8EF60C4ED4E10E79F6FE663E639B2418D618510F4C -3F016DF420724010F06EDB31D46815B45DD96BBFE4DF9FFD25C57A601351CC6C -C2573785E779C67D15C6835DBBC050783B2AF2E801BFA41808F59C0D9E5C7A67 -25FEE8AFA11336A9783D02E5E7C576BBACE15BA2933FDDD98105D7ABFB8B566C -051D1B9805A7FAB659B449BE7DECA496ED53E6A941E57451A1EC7B8609CB5E3D -7CFACF3E851DA69C411E770E48298AE4F8C3179FB09CF280337C25C843F11549 -2CEA4CED5A7FCABFF31CBB4E2F3C4578046CA67938C5B342BE0D4AAC7B612FE9 -275AF9351B1E36D02B2417A6B1BEDFC8075B60DA24FBE17DD5212188CE049BD5 -FE548D22050600E28086237BF3136157404A3157FBB3CFE50FCEE57079E93A59 -EDF72C288E4DD8C2113E43C1F669D517F79EC6E47AACEB220049DD392C037FBD -557A9B8B9014E26B2FE74846C9965CA1161D3D80DEC3617371D633D7E27B8EDD -13278B8F29BEA0C0F79D9E85D0D916044E584BD569C75FC60FE21EC3152DE5A8 -0B3BF40070707FE4A3BD7A08810A19D82267CC114638C82A3377DD4C104AF0D8 -EEE2759E41D1892C5DC8785B9A5CDA3AFE9B6E9F73731648E743FC652CDBA90F -E0371E6E46D625DC3A9B2FE0E4A388D310DEE406767118D692D090A9CB42E75D -10D17A81D59D04BDDD53E0505528A8FA948A70395D8295663DB023BF46723F09 -D3B3B9ADA57D88BABCC5628764E4B411854B734584EBEDE431AEB078AC3E1AB1 -1EEA55DCF74210C579546EE5BB1525979F7EBB8053AE0028D411F9A9081873CC -C7028714E8DCA7ACF0F5285F11CFFB3408215407B6D77A50EC5700F49DCE87DD -1DD9B9B17B03D6EDFCB7342685779ED383C487829775D2EAB2F42BC4B1F9489A -B9617507BB86F7FAA250F3802296FDF554EFE37557A1F4772F3412AEEFF1B309 -A0E5F549E6719FCCB9379CC47BDBBAC9C919F7864D10CA07A63901048E10C191 -DBB1A299462EF5BBDBC875B3DF9386A1A726A9555D6CA30C7D68A89471D7E378 -3A07A8CFBA8F4BD84AE5E0F1B69C681A187FBEBB6694FD4DA9E64643D8B0531C -29F41030D54EA6861235C06253FEB2ED5E7C54C8C177AD9E79F4328C54CAA1F7 -F34257DED9A1BDC5FA875C315A2F8B80FD4D367DEC5AB6B41C4782FD9D040667 -4696BDFC28C82A55AF0354BFEF85BF4D3949F21C14CAAA41508B88AB764D6017 -3A90942FB7D9829C1DAE881E1A7490E16D1E863E84CB2AF1A11FC400011AC756 -643A87A7FEE01D4FB85732E701214855DFFD61BE4C88CE8A5BFEC1A87F6A39CA -83439CACA34F005EDA254155787DDE0917013945AF98CF1BBC39B5B45A607279 -8A9E54D5744371477C7F217644636AF972B681194C82CAAB3EAFAA941443B8BB -71F27DC1F19AFF2CCC7D4F59B40CBB8B7079F9C20C0014660D873EEA20E58092 -9607CB4A850C2659E7F5BE97D68CB6487599919FE84AE2131323E60BB6C86E8E -B95E4C8641536FA3150DD52BC46A843B44D05D733A0DCDD737F7EAD454DC0195 -F913E992A38441BE48E1D68190E1658898C733470BC2A06184926CED05EFD796 -463389E7BBCC9CBA7EB4E91CEACE35F1D278BD792FA71FB72FC2E407C9AB2228 -937612BBC419F38BF0E13EE500AD1C2BBC0C6CEF2270AA57ABD85E3DA158112D -36213116A5799B186482EF8F650171604D0DCB3C6B8A706DE3BF63B6997B7F5A -C72B57BB18B47DC7BA31B82E0099514C67F34427D2E531E0C24ED7A909C938CF -DF7BD8DE60257FBC7C1433796F0245E7A623FC9D537EF8397AF4FB69E8050704 -43B6051F8EDD0CC8E7A52677305F8A8BE67B2C84638B4E8DCD744E42802CD6CB -2C24FEA4D4D7101C708BEA4A31B4F6D195847BFDCFE83B4AEDC39126427DE91E -640603865D08E0CB7FA7E7DB9EFFF9AAE488423D87D231442E8363B7F91DCEAA -65F29B7AC150C4B3F9F7C8A1771FE874E843D19C3A6EC8701B8CEA3DD7F9F55C -488E66EC2BCF4E47BF3AD8113ED6F00D6352D55FD38F612E0C0285D0CC1F7C26 -36FAB413D631E9B67FC94AE6997773AF9463DDD268773FDAD8F544E92025D26B -26530D837DCABAE850E333F5AF627A9017C23651347E8BDC5F885EBF4A40E396 -7F2745B7ABD8E9CE50D122E5A5FD5F548B03C2AA191779B30EE24CB675C6D119 -9AD6628126A132A6A8F8148379712BB8C6BA3EA0CB7C9DCA3719800A41D7BA27 -68DFB50967F920CFE8CCDA3A7245A2496B623BA75BF3855749609B48101570C7 -8A9691F81853E495EE4CE909C93326C0FCEE85E2E53B72BC0E06AC005F5E26D9 -67A59BFC15382FF5B2F598DE6803544F95FD20777D7401361A791EC79D2F7113 -1BA0AEDD322FD824A02DCD5EC63AAD69A2761D059275A80127F437936243D9D1 -9403F72AD765626B2AFADB4BF71E3C79EA87937D68ECA8315D7D3A399FCC87ED -E1C3636EEDE9488C194962C084DDB08D179CFD62616EEEECFC75995FEEB82CCC -A7F009A89C9A5D881F9D140A9F92E9FD1B786BAA5A798A4EAE22C9039DEC0804 -7B6F5C21ADEC9040EE173D854D1A2F04EEEBC71A12AB3C755CEA427D0148742F -3422A9D995F11E0D194D30CADFA672CEBCAC994DC1D1FFF473BCC03C00FCAD32 -2500E0B8BE2573482AFDBF3228BB14A8A2DD7026BCBE24F2CC21A584E83D4630 -7FEB7230710AB25B8F511866362F0FB983F519F3506FAFC5BD2E1981CFA332AA -B7D78F4B1085AEF414EB3C5C31D28A735FC874884DB709CD8A1C1A30033C1035 -702A6E95526DFF2D62AD925D37827158C255A8808B5A478FC35D7D97E9F4A550 -ADC2C5C61C5207D2B68EA68CF127E7294C168FAC76EBF7484A425740C22DF44D -76C1555D35A81AC5F184C3426F76051905B95CE8B601C2857A3AC937E26B7031 -B7A5605B203FF105B8DA5545286DDA1D83041D2A5C813FDEBB4CB9E868A5F5CE -9570F4C4B94B70B44D4B361925D9ED42A7B56ED1DB23FAEF6B4F13C1CF1D9FDC -E6D768653FA72B2AC3242983B1C324327128E12563B77A35DE7FA0BBDFF01949 -2DDCC506BBD47139DD31B565961AB6C43D522B109A0A713AA077A2DA3C802D4A -BECEDCD16427546A4190D673596CCF8FC4212867726FCC66E2C0DDB2B2D31B0A -533A9FF709231A203D2E6CC5AF954DBC8489132625811C7A0E672BC2692449D3 -77182C3F23B85C36416E2C1F56E7559D4F58892B1384C37BB43503EDB261E2E4 -502BC2F1B30296FA739FD01C7140DF93055B275F52472917D48EB1444ECF075F -FDC8D956E9AC21EAE493A38C7A9894602EFE4F156C9FA5BEB6A5CB04F2040C7F -AF5A5ECBB1B2A5DE3D323F8459CEC4D6AB23FEE5E0004BC90A86488D480FC95B -9F1AB8C3018C5538484CF7EE1318B26C8F3861CB62B343E5C55C79443DBAD2B2 -00F1E925FBCB5CA7D97B9F1FB37938DC337032553594B4E85FE6389CD7652E73 -D370AED16AEF182A9B0ADB69064AF391FC9554650B3B9233A23010F7B251ED0F -6ED069E0F28E1564E493983AE3C8D4A75C1961C4A845E324D14664AC64107DD0 -F8A049D5E4A5D15F33E9A336FE779F4AC1FE51109EC8FB04C5647282DF605153 -E5115F307E66ADA7BA06E2978A8ED9EFDCC2B07B584E69AF15F355782A81B07C -7AA959A48B0D3FD7725C2131733600F560294A7066C831BE6FDD3519D404C9F8 -3EB303DA64D4E96F7ABD4F50D8C1BD6466E0F3878B2F5CB877A4BE52768C84A1 -78310899F11C63C35FB93455C8A18C4127EE6209D8C49C90BFB3BE9E2728521F -33D5F61021928C927777A78B7F9C89FF596B9DC54B6924F5DD1F46E913B99275 -8FE1CB48D34D6143A4D1C6FD51A49826FCCFA913CDC6F35C65AE1C955B573C64 -08F87F36AADC7E2B0A7E94412E985DCB1FD12DFBDB4F86C9D61512 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSL10 -%!PS-AdobeFont-1.1: CMSL10 1.0 -%%CreationDate: 1991 Aug 20 16:40:20 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSL10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -9.46 def -/isFixedPitch false def -end readonly def -/FontName /CMSL10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 71 /G put -dup 72 /H put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 83 /S put -dup 84 /T put -dup 97 /a put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -readonly def -/FontBBox{-62 -250 1123 750}readonly def -/UniqueID 5000798 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9429B9D40924DC059325D9D4CC0344F3F997A99E6CC0676735EBCD685AAC9142 -08DAFEC78BB41AFC2F1C219910BDF41D6279284EF600B69776CA15BC8A34347C -30783C52AFA60FBE3E353E2AE354CF87B558776A22C776C7A0B5AB5CE1F941EF -C2D9CAC37294BF407A671F10E4743BF842143F4F7DFEE643BA3BBD8BB9E3F24A -BCCF7F0ADF8BA500620C81033EAE8C4EF2C1DEF13AC575F1B3BBB66F093D3B78 -5412B82B67FFA087AF57182B2230F9F2137180CA58A7D9B2C822FF04BE6CD01D -43B2CA7058C7B953F6D9B5D6E91ECBAA5CDE1159B0E59C83DBAD96D6C8C8BAB1 -374EF652D10C0F3EE7104472C98DD3572AAF2D45A70BF7061447E21EE3C3BF23 -DF39C2D1B35B42CD5297BEBE6BC94F7C9DC6E61EC67E4F677256FED9064BD3E4 -B51A71B1D27CA4E5AA9E1D8080E6DAB5310711EEF87C40859FA935B19524AE83 -63B163FA8397BDFF443227FEDF7DB27DC35D89FB1C5E435DA0619A5C88AFC73B -89A2DF5E767C5B536BC7167A840A0C32BD57A14DE69A7D0D819AC36FF32F908A -5070F32983BB007437E3500799DF5E0AD3710A4C0000F0098D5BE99F2EB9C1C2 -C444FD9552D0DCA098A94B3BF176F511CEE13DB7EFFAED7C47B5ADCF8D4700F5 -7B6DF50EE617C00966B9A2828882804DB7477F4A8CF5345B7F3568B4F72BCE73 -2E2AA5BC4B4C70E21F3AD9AFC3B8605A00D67EF9ED1F4D13DDAA920D45B43CE0 -0941BF17CF05D2B777C11D4D844AB20C0693D1DDF00B27D9E1AA2D98A4A06CC6 -D342AD8F644F4787B66CA7D861E7CE13FCDA85C1B0C9F94009768EA89838EBA2 -7818F40A3BEBE680F349D11F1B9709EDE324B13E63EB7C3FC3F1F767289DAA9B -51894BA4656210FD4F58ACD6B1E103DE5FBC718DAA64F29D9DB24683BE15CA45 -9E3C7285445E86A2025424D06F29C58FC3668CE2A0B14E658F740501F1ADCDB2 -07601EE17FA9C65D59B388CFA32B765A973E8DDA57503DB1F638DD925AB539C3 -947BAB3275391EB932BCB7FB24FC39DEE5A801D32F9541D6C55887EA8D57BB8C -92736E3B792C6F86D7AC277B2A83A319E661B9A6D918085C3558CFB4D3EFFDF8 -36A48DC4B9625381812BEA838D5A31993F1B3849E1F9643958BDC154223C32E7 -68EB8FBFD94B371384F3A27E4FB753D0958DB3A208E62572D6CFC46493CBAB26 -352D1B37FB11D045700B0F2EFAF1DCB8BCCA297A88C81EF667A5E9858531A53B -5E51F66FC26F864FD6D386C7355D7E81BAA89C7AF8A831DF457F7826341BCC15 -1F92DEC430E945B976062887FE23D37AA25E2973D295CAF7E5C463DDDF9B3D17 -F2995A63CD8229054CE979293EA9D0293E9FEC537F562DCCAE281E3CBFD07CDF -3ABC62B3C32F0AC59B09700648D4CB1B4FAFDB9A3843BDF909D4487E98B33C64 -AEBB66ADE45551D202FEC4196E55FD689087803BB03D2FC4A11B993E6C67FADA -62FA9190A921AC75842980270965A5C2C7D86C5B600CC0D601D61E8A84B79DFE -9FC388DA6B8FF7B8EB031ACB57742C2E45B2E6B65F9C8B7A5C0952AC82CEEDD8 -72A8334D5A8E976C675C578FC389C8079AF2D63A23F1977469B539C49FD4ACDE -D797D0197E3329F9F3A37F0BD78AD71C14BC001FC57D77DE4FCD983D3EF504CA -92AC6DF0335966CFA1AF88089DAB3AA5C1EEB01A4E404D272D9E3A917C1CF3CA -3857C94ABA83E6D4B53E32F58F605F09F1DC2510F458514E6FC684F24A25AA86 -1A0B2D877648714958DA7BF14BEE45A3E59A896286C4D482EDCCE95179668FD2 -BC4AECF7E4766C92AE98161F10FCAA38520399713A293709B72D1D82AE2915B1 -7614165D3213E63D1190941605FD2E52974A71F7D33017587AB058F96DEA8F03 -6F78C315F7226E0172622155615BB14B362807EFA7BA8BC234E27E0AC0CF1F30 -1084BED533939ABF4957E35690F9F0CA474D41A240D67A786BE9AB1EBF87F73A -D0AEE78B2500D4DDB887093E1403677D2C3E441B863DCEC27D50B042F9FB6115 -E7279B0ACFABB1552F74F857A449B4E3D6F194F0AB2BB6A5FA78DC275F8FC7BA -3E81855CC4F79D332A8BE9DFD610952B6A6C86F07477289724227EB3D58546F0 -3FEC095D96F11F3CFA4521DD5B2D9966228F7FA812FC920672D22FDAB7EC0556 -5E4CA7137DC9580DDC4A776B5006F11ACE2F763A3553BF7FBED7D5D8D7396AE3 -15CC2C1EA02FC89D9B66B7647BCBBC0E8E695EE369D5EA2B85E1FE40F422B0A9 -36CA4A79245B139BC5F351A28CD95E8D247F73B822C109FA520CCB109A3C11BC -DF3A5605E7A7AF927C56EB0299B5B924278C9B867F44D0AF488B6A8EE97A458E -B620E38184177D88C7F0A2122155383628111EA978BA82C12F8E7A243479459E -F69442577C3B513B2F03EA4EB3EFCDCD5760DE4AD62AB0EAC3C3A103FEF1DB13 -9998F37669CA1F8FE46FD39F7B38F7823E71976D5006EC5A95B0C4CDACAD1EF0 -A7612EA60C305B87BD12B2B06C06AB8126EA648480593B012A5ACEEBE4B4CF9D -C179ACC8267F46983CC2668C377487BFFEF9A4A98F473C6E1C20D530ED0B7ABF -7BEBC6FA104397A20B65B951F058F3555B2DBB0DF3005655328C849815047913 -2B4520D68C5C8072034F496DC6B71E489B1531D1A44A468A314BFE01757D1642 -1E5DDE1DBC62E5F3F8034726CBFD4CF14A6CFF231FB2CE4F64BF4FF039CA52EE -65ECD7ED434EBF376C714EAB939BC7B19103C76CB2E41737EBB64364EB507678 -9217D7D6631B6B6B2BC07B602B42A4237B6BF2C09C7C75381328A27AF10000C9 -09CA5323D9CF0CFB950AA30731851433EC96AB337F6973B9BA14F0198B70BD8C -36DAD331179641FE7272A63B2BF12BB7DABBC1FAD132685C3E7CAEB705A3B4C5 -1673D8D3BA77EDE38BA91574347D3C73D6DE4729003F355A7D4092BC85C00F1F -3AE5E07E0EA3AF06227D67045A5FB0C0F3558417153AE4397E50E4DC4C3BE34F -ECCD6585403C0D14A885F004FEFBBC4407589459158A10365463C79154F09CB3 -589B73EBF8DCD12A406D241C3323B995888EF3D684D4EBA0CA981B05267CD2C6 -50252B60189978910BA3AF1624CE47AD17DC27F0CCFBD81BF533FE9678551530 -FCC59944DFD856B08D8DEB2F32816112AB727ED0A914C2977405D8568B5B6E06 -932D0BB6EAEBE6B7E7C3C0C00DC880B60E5E949C097D2629D7650DCE93307C37 -970DE26099E3B4CF1F5A9DEE90410456CCCFA3B5EA83CD6EB348C294AF33A0E4 -18ECC11743EF8DD591007BE8C982B691362F973564F8DEE73F850504C3A3C8AA -5C2E984DB98F8B65CD8E87ECFDD7AD764DBFF7FB16FC190D5D588F4C6E81DEA8 -01546CC08CBE8005F93DC9E8BE406DF2F3B2D043335737D6F46B5AB099C1EFC8 -8CEC2915C627831EA43812B294FAE316CAB32367A9E880393E3D22119CF04556 -896C3D01EE42AE99775A9F02E3FBBE68E809D8B30204719AC68D39EDF070F1A4 -66278823DA19B78C5E8D68D89E640CB198DC696D373D345849AEB1689B7FF53F -D07130B1923A87A4A60E8DE7360830C7E2F9C5ED39FD6E145F631C1A7BFC598F -EA9DBC5DAB4FD366A2FB2ED476223307E39A87E2FB0A0F5A2331056A4D57C58A -CAF40920E6E1AE19E86C27C07D6C2343BE0784CB4F37D028E449E0100B79EB4D -4B921E832020CB728D62134312452810CCCAE606AA4F603629673AF039BC7DBD -835F7A8B920707EA6DCE08101AF9BC8B663D061B63B8359C4A3B09C7BEBC33A3 -5DADC499863856FB3EAC9936644768B3038174976E259DE47ACB53B3B9BC4033 -7ECA8E3FE8B8682B3509FED1B066CDC65C819E0D4A6F585E25902B1FA99C09CB -470C4206A373C33C241778AEA6AA62AAC91BECDEF476E539EFBDFF77B856E0E5 -30A1F655FEAF4343C61081BFC60D6C51DA6615CC60483633AD3BC0495F9EF290 -EEEAB69BA64ACDA5335331A17BB8D10F3C37CF3B5775B3CBA6451567BA6300D2 -D8939463EB288DADB7146DFABDC12F4DF8EF638A7CF2ABDF1E9668483D6BEE69 -AE2325998120273492E6E3E371574EC82A5C6413B7F73BBC0EC840BB456942EB -6F3CC3206B55CD66C7A3ADCC4F2827107D1954DEE7957D2831CBCBD7CE05C4B5 -0FA7EA760DC6DFCDDC0DBBE57E7608D860784229FFA78BF409F1BA8FD4A6D0BC -C6176E3943B950AE3996B76A49ABA54544D1C35536D0902798E39D7C7C588E26 -F83D9E04403C2527BEF34D0425F27EA0872CAE96AA866B2126769767E36100F0 -E17BD5C1FEDF53A5F9151E3BC0B8F170135EF39E682AF8428B41D585A7D3EA61 -E6B8B53F02DEBDF4FFC101531C534B5C88EF4FFE57BD99F67790847E6F6F61DE -664A3DE4DF0D7DC2FA232D14EE0D1B69B94FBD6174A6A4C6280E9E39E1727E75 -5258692FD74ADFC8A5F28114D42DE68F5DFD3686A27D418976AB6BE898852F04 -3A973F66F8F83F8CE436E92B8C72907FC89A8A07125327835C6ED3D5AD5F9506 -885D2F08327E293AA72B1DAC3D42B70E89FEA9300478EEC4F18BAB15C60ED2D4 -A23254904142A30A9FCA311F0171EDDA5B1F2F5A86DD8BE506577B221BC9626A -F9C7870ADFE83CAC38D9201EC26AEE460A0A358CBA1AC23721CB5EE8FACDD86E -67C720DC297B6FE5EF6EA8DE1C22BFFBAF757FD1709CE1FBABB7CD17EA197758 -5CD6D0EF0A152AE26EF9F9AA2C6DC84B9E128A4456F7F77F73BE1D98BFE81162 -17829602D131F49FD9EEAF84F3D7B2C9DB276988A03EA87A2B64807AD4857A55 -A7269F922E6F004334C7C4DED76F764C55C930CC3604063260F2A8AA96596518 -E54D0B5AFA8505177EB482CF717C2554DC9ACE76CE9FBD0589829D68FA4C5ACC -B1E1B9B368C64989352ADCEDEA5E3F71141DAA575872104C7614B3FED2CBE653 -9E434F9CF45FBADA8159602F8EFB50581CDCA1CD8547470D1D4728EB61CEFD12 -842A24733E2A6003E61F3F731A58E30B715C87B568F0595CA1DEE342E89396C9 -E50B3844B8EA60FFCD97314C47909D38874AD74C1BC10AFBE04253C1226C6565 -D9C45A1AE1480407CED1F467EEFF433A2F2FEBF7A31769EBF42D6843DD5CD2A3 -29C0D7A15F815FD34E8B96CF562DDE9499753CCE3E57826241D0AB04B9FB184C -2B990D8C45CA30B8AEC5AB11B15D6802E2F405D9238E6F5C7EB42F8A5A745208 -B4651CA21F8187CE08D0A5039BBB6B5F43CF19620E0AF8F28E94F749B5739B29 -545AC51636804447598754AE669A38BE3FB304AD1F214C921488DB081D392827 -7AE44E46CDBF3630C92104D113EB876837C000BC57C5139A8843B0674C392201 -03545AB4829B4A2635949B013011EB6E4AAB3AF0580E89A9975B8B6292CA662C -456EB52D88B5ADE9E83E9DA1DBBC8499A6D29072F5265AA1BC075525C396F5C0 -C5772255AC75949CB1576D5700FB547F4F64F7FDCF956F83BB3A19646A2EBF31 -CA2BCACDC6607D6344FA0BBF4E45F62F13EA8EBD843952F203B9B6D6A1E7162E -70ADA801369DFC6E4A49DF899F4565B426D866FC7CD2E79DAC21F898C7700DFA -2B126FB491E5D4DB5DF87A754E9D3FBD79191F72900726A74B77120098D4A442 -E740CE609B4FDC5CC744C07D77FD0A8CB0BD3B27CBDCAFCB9E4FE275C6A83F10 -7A5E9DC1C1D2ECAD78C475F16CF44CD6A488D5D269DD6C47B0957AB9F4FD56B1 -969CB44F26359C4B3DB91F68B940F461B653B5F9B99D9DC4352DE8BE29396B40 -2D99AF34B156C864310B8690DB4565D3319C4495C1DCA5C72531DB414DF4F9F6 -304F63292BC87B0A788F9C49576FEB83A049886746364E1D41891140F11D8F05 -98D2D27B6B7AE1C7830C8DB42FFEFE10C185ABA7F82C7C66E6E90F34C2C647D7 -F0B4A424342254A1FCAFF978089E6556EDF83C4653B01E70BE5DC5464E7EFC37 -A6A183CF82C4271460FED184E6F0023FAA8DBF202FCA907210494A3EEA5B6C29 -530B9AF10309B26E8F2274B1AF98D49739FDFA085846A6C56B7F02E359CDDC1C -751DE0B259422A8C7042776F00A76EBDD6A13CAE558528687EA055891249BDF3 -5658BD9214E6FC479447A57B40BE47F44A2914E1FF7B3EC1D152D1EBD36B579F -1E7B99A80E4B64147ED2E9B391076A6BA7079D20C46A54F93E4BBABA6B302C3F -9570FF91ABABBE5B5B93412A8A965E2518C2B2875997B2DC555622A508CEDF9D -948F314B1A977679DBED94F421ABA5A0D5B60E74CF6A26FEA6AD4F57C93D750B -37ED5A36A22E2B5C27C45BEFF6B011CB5AEE2CFB53A668ABABF7A2DB4150E9F4 -90EF3020EA11AB1CAF5B3E681AAC703E2D4810CCA8A561E7E100DA3EE8A2DEB5 -74EA56ABE73A6138B657004D2347D3500BB0DD10E3AA23CF5201DF14891B97B9 -BD30FE8CD81B5E67BF83FEF217AC798FBCC0BEA7E7746BDF0509063BB28A7853 -F2643AA6CE0778F8B94B37F3F2E15E68AA2B08EEE2D7D2FFF844DB2C7F8C6CAB -C01F30968BA88AF90DD949FCDAD0E1C6DD6DB071B89CDEFACC67DCF02D52F5C4 -93881AA7AAD3DF00055DC703E11394A143097CC33BA207903897A0BC8767DB1E -BDF9C48F5B56AC96AFB36FFF6F520BD9B875F7D78206F550F8701E75B3811A89 -A9807903D31127EDF2369ABA4EB015818E41ABD76511E83D9AD49D05EB6BFD99 -5C0484A610F575B23FEB74F0F2EB263652A42A86C92868714A969DDF99C4E7FF -50E880571D666B1711C197338D7FE52663512295E3987BDB7864172C8032343E -5AA5953C89C4FB1DF5C1FD69F93F139516E14D35A98E19C4FB43F34C9643FFA9 -5F23FB1078F7C2F7AA721976C6C0A4D7E844208558C3DE3AB8A440EF068734FF -FA3FD55EC469DED7C25FB04D355F8B3D3E07F0A9C615E257052A072772D8E3A1 -BF961288B58E482210A65D074C821F259D34AD7A426EE84A8000EB7999DD39B1 -5F50B08C221D9F5F608CF3372ED7F28EBB525479279A215F76EC42B1DE4D4EA1 -1BABBC4FFB9C25A9290F618047A216E05B2EA8927B845360B453B63F9669D6DB -AE9EF5EF76DFE5B1FB74654D95A95E30846A6B6D95F79CFF7F46B9AAB868ECA5 -E5FB3AE21369466A391C2B594A55B0A89A2C2FAFD3D70339C6B9501E8E1DB633 -FF71AD203CC22A6B5424C6C67F745ACA617E77F95224F7AA135CBC78286BB389 -D0B92DBCE5B62A612B8EAC47F2F263B321E21D88B4582B84823CAE5FF63D569B -D1A381D9EF442C668C293617818FE59A2AB6139A55EEADF7E57E75E2047A217B -F374B1E8A53A1392D102C57EAB27423432E5F46FC56BAE8D78B0D6B9F3F922D4 -3BCE1AF3B22889B71DB132753F4DB970BEE44AB3875EE9774F19BAF2D56EA196 -C05954188521256240004485AB97B37F10EED91B70108432BE2017F78A10A8FA -8C699FB48D964695BFC63882DBF18F67411E0B718F17D168CB9F9F1B1C49C6A1 -61FE7976C130F8BFA39FDF8BB095C704996D6FAB580F81F2CF136B16B7C8ACD6 -AFE6ADA6471F387CA25A2B5465E637D895C66A4737D4C51E703F88A20D70EAB4 -ACB5B504F7A47B14D66CE2346B360FC54762723815951CD89CD87054B80ED211 -2E4A88DB6BD2C6DFAF0373547743B8B4AC7B8ED08ECAF09BC6F001E778E4012D -C2FA46D2FA08DC20B68478D6DB1614923C4E755EDFBB8575507D4CBFFF35CEB4 -161B1A3C25C239E692BF804753B813024A25C66ED01E09A025F125606A46F5D8 -29C3DB9AD4ACBA4328403174798DB9AE22FEF04EAB7DE92429C4E1EA1B3D0E21 -BCBE9E722C90E97EC048BFC601CDF98C80B4B3106BB71F28781592ADD552E4FD -EF3F0FFD0480F1E1A662DAD440C47507566336E9CF60B29B4264D190E8C478A6 -CE4C0C0B764ABEBB3C4E22879149126E4968AFC6E3E8829E9FB6191C02143686 -B2A8AF82750606169F59F921A88E73EB6F643B8539CAC307D5A80656E32BDA89 -22CCFACF9EF297560BABE10008E62EF3C66507E89BF9A5AF2F925C18B443BA73 -B7DE06A87FB3135D219544C933511689564E5755FDF5EF26EF8849AC98249031 -1445FFDCE94D89E6B2CB2FA0408B1D74AFA925E41A7E5DCD81EAE24F18C96629 -5FAFDF2143D1DA8DD7F50CFDBE87E2438E8A4FA0800935E0DBBD0C3EB23CDA09 -4ACB0E4208D2109F48B30147122DFE4F39C39E0AC17CA416A2D1398D75D50DF7 -B9141D65BF6A03F5EDCAE4EF14F2A00D3C6F228637DBFFD76C6F3F2B52B944DA -59C7E78EEA9757417AFE32BB1BA57E8EC850FDFE9737F821FA8FBDA2990A3754 -33B0D4BC4747B61D46C99D1D8504FA164A29521BFC4D759E235295D52CACFD07 -3A1D5D30EB3198B878A78A7A864F837258C937661C0F51AA7952251AF291B76C -D7F793BB13D4ACDADDD909C4F029B0B3D3389E58EFC437BD2367DE24B1C55BE4 -82FF4E3B1991DFAABF4F69B3CE6B466BF53FBA164D5110BCE78FE59A62A04B28 -52D2F7BAB4069564795D3BBDC31750D2FE68856BE6A1128B1217E15E56C1863D -E5BF451A6345DB1DA7E9154B7808A2D2FD4823B80BA10CFEA69A6903764D5284 -356D45C78C22AC9A15E3EFCA6E212AC0AFD75A7E1D33AB9E7A7840D94313B649 -478D5288595E41CF39FC65364E684E391EC1876AAD52F831D5EDFC3D6A003E1F -F99637DD68C8C52F694DF8ACE26018B4331B8BB893C2DF2D9CE384C7857FDA6D -5F4DEA9364F3C2ECF9B096FD2E537E88DAF01ACF4995444D91953C9B0369F1D2 -B2B9AF702A8B4E47C6F048A2678450722DCF8DBF9B9FF7183EABCC02C7E1640E -16C90340531C319D995D37F5A0F9D200851542596C2FB299CD029742928E4E82 -732190DB1D38DBD51A6905DB490DFE4DA68569BAEF9146D0EDE67379416435C8 -D8C6D268D9C34216E64897240CF3C71C1049280722B025B220109DC6C0C770A2 -AFB11A3FA8B81EEE7161F6AB101B5444435C2D9EDA9516A276EAEB44602D0B5B -3ED92B1C7B62DAC2B2F72F085D62494A215D549E33167F328E56EA752DBA15AE -A99219B1CA4EB74C57B9A615784BA0B5392EDBB74171C586795F6F71E5DE2042 -A840DA60F3F16DC1EFE0443A0992353B429A4EBFCF44627594A285BDF7B55A70 -09B9DBF77726742EFC9FE55E94B206644E4BA00B9563A53E73DF85BF1238BA2C -9F6DE135922E4308E7131E5DF70ABB5D18EFA4C6109681730160D8376A7FD863 -505B078852A931D7A4BB08379E5CB1C28D91042E668B270041345E5F3EBCA278 -A215475E4A4DC3FA9BA7205827C3064CF85F67B09D8E841FDFA5AF7272F38049 -CB4824BA88BD2B56BE2118437513BEF4224927018ABA1CBF6ECA88B2CEC7E928 -8BEB462109750CAE0213B4F3B5B9E52F7EEBE29F67A79DC04C3A78FA9C595FBB -DB6AB915A9CC96A16835231F62F19ACA85CC9A30CA172CB7276C267A06112739 -98C090749E465BBBC224AFB3D375A8D5FA09AB835F837B691998260252998DFF -DFB2B6302C7C9C3CBA6A0E8D89D9CC82B0FC2FD0809BC42CC01A5C51D2C80C3A -A65A29F242BE4A30B81DE685B613481FD841E08AB3F872FA35740593327F16E0 -EEB3CFD769EA1B27DF649D3A946530CDC9D8304E4BD0D4DDD21F4B05EA941364 -AB2CB7F0F31D840DEDB7655755914095F85C8198C8C49324D18AEFC9E020077E -0EE4E13B9D9C99906E84AE7088468B8CFF4DC367CD1A41C86178387C1FC4FAC8 -41E22F2F58C6A5B7FEF9435FB46C6B1E952CD914902CB6F64899D9654E3D8A98 -8F2476D03A9ED80A88A3E8E658652AB9768C1CC8C85AD9538475D606C14965E0 -6E45BCB6C1F39B9265C3DC3C03F31B70BC10E5737034575233C07AF9740765ED -18908AAA0C0DC77A6EDA75B05292547600988E15B2A78D94872A85F8FE43038E -010C7ABB0349CDC5CEAB435B04F612E5E097A2BFD6A1CF39C0943718CB4550F6 -056EB2247184F814232419410A704D5C756402D500F6F3F3E7795397025A5CFD -EA939BF02540769E23F1F44A21C8A02D2C3CC74D064597F131FC73502572A54D -BFB93C1BE14EBCCFB6537770BBE697D7158675525475FF88F16C43E1FD21BD9B -28EF0CE2074A4A36C3CEB5F3F6041C7FB7494154480CF107F7CE1EAE698F2CC7 -431EA8CF3AAB3075C62BEC2AEBFC8E38481992AFE733B2CDE7930A3175276C36 -6CD2B9A8DDD12CD919E6B9D20C2153BDB7C5FA1F4ABD3ED3CFC86C5478CFCD3E -036F85545046E71B66D2DE7B559215D5FE447ECF1C59743E0E116A4CC6C0A4B3 -94C9E5C7B0B3BC6FC4394A8473ABCFDECE4C10C9C16F067BE329EB40A0A7D174 -CEE93EACEE839B02F80B99B785C8CC436CC36C1FA38F33F79BB1BE929AC30CD2 -9F0C06AA6336BD57CDE5B7BEF53CF74FF280BCD27C0C9AB5B304E34024F3DD37 -6508B8D6E797483D8C8EF10DFA177E1B80F453FE5AED5E58D053C6E0248B979E -F5D2C5979D2137DC778F9589F85AB643C387036843059F98DE61F764F525B34C -D450C409D65FF3ED942D236233A8B90C3AF6844F1968402C20754C3F0D137E3E -FBFDDEC17D579152A768D175BF840DDB7D5C180023557A23BCEC04419F6A86F1 -7FD1EAD8BB0CBE9BD7DF70E68258BCD6F606DB3A6C03B40A627E756877F11B06 -327CDAE6F4B74B1186ADB99F6A17E9068C904C4071EB2C270DEC9A08B84258E8 -271E7E77136E570E8E8CDF9FC368B29AF9F513F9CC03E77F7769F0C28F9DB011 -0BC375206252BC33C7D01CD5A020D73CD3D7087BABCAA2E3008081B4FEC4D64D -025FCC0362F706310757468EF9A5D2ADF939E2E1F80EB0A147964C2508A1126E -26BAAB9382D16F9CF944D6A0F7008F6A5ED6668128D07B6FFC366CF31FDBBD81 -379AA57CDB519CAAD31F6D60544E53CC0ACE37EECC87BD6AAE4F4F06BDA2FBFD -4997C45C41FE294C6B0AB203557583FBEFBC9F51580E0D83D7F4876AD40BCEA7 -C944796EF27EF3C0906F7271F9A2BA6E1066F9C3966A42C6830EA7A896635329 -2E5414C0B346D72C711DAA94D23F8DCB39F2A7A27869E2788FA78C6F5A7647EC -21C9E02AEE -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSS10 -%!PS-AdobeFont-1.1: CMSS10 1.0 -%%CreationDate: 1991 Aug 20 17:33:34 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSS10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMSS10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 40 /parenleft put -dup 41 /parenright put -readonly def -/FontBBox{-61 -250 999 759}readonly def -/UniqueID 5000803 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF7158F1163BDCEEA888D07B439DBD4E8B4C9 -D198C03874B5E6F8FBF4922065A92BC3E66D05DE53971CB1424510E892442858 -D69CE1F76E4DA76C87C763A4B2FE36321E54B1328C9155B8ED6361855A151723 -3386AEA3D042B8D89C8C0E9A33E5DF3B466F7BB8C2C8A4ED4CDAFF55FC6D3EE6 -0AF2CEBFC1AC3A6E6692F8BB81F82D86BAE85016AD62FCB05467082C2E5AD348 -44D1439C2B59F65590E57CA0DE481A7A34E79931B1513C4C30156170409A4BB8 -46D412D1DAF88AD30722F12DBCA1CCC6B4BCC28D06B0D29149DDEC520C8FBA13 -6B82E2E1790F00B216282FF122EF0D47B70A1B29514DDF7C0435ED238C14BDF5 -6DA243117FBEF7398F97EB95597707ED63C6797EBA1B46EA19ABB1DABDA171B3 -16CD500F5D64CBFBE4F9CBC3E66A34427D3C4D0C432710289381F9BFD91B4FF4 -1E3A896C3EEA2F3105C218877D6C0C6B763760FA364D00065E1CAE9DCB5676ED -286A9ED0D1C946DCA6A2A670EE0936FB4706CC62E234CFEED34AA615C48D2872 -A087F30990C85E64BA68F3D5C117123467DB411C9F2D6F6858CC70C1E352C477 -713097321B4C4FD4C5CDE305415F998E7245908EEDE6E056A736EA77BD8C639C -3A79FFD0B74B3D28F0494A115F2841CF8A8827AB5608F96FD8998A5F40FB3DFE -3AA0C7696DE4E1D18DC0D6E84B943175FC38FFC42A9C0CBB13A908978C98BFE5 -034F88480F32B9DEB2FD228FF6CB0B89B045AB02020C82E3F5716DC640613185 -9F597CE262729BC52132F43922B9E28BB71A30AC8709634561B22D13C4FAFE0A -12C4451969226B220038AD8DDA990A4E2CAD53DBEAB698898BBD3046234EB4EA -901287E71CB41296C431383AB85F18882F65BE36923F6C0FD6FADAC5B42FDB68 -64C06E047434FA7A659EF7F3D1AA8E547939FBF9C2ED7AC829F03CA59AFFBFA5 -A7AD2E0FC7BBE619961AE1785D09444B333993199FFED007382B54DDAEBE21E0 -1E75E0AB6D309DBE53BC7BB9F95D342F51798574D70B95021FA40163A86BE6C9 -342536A5730837C522D5314B1289D9B7E4EDD108BE7F35A20AB2A16608F6F007 -6DDD702A5A9BA1325CE2C1CD020DF677872135CF04F4E4F1E9AA6B494E2BC22F -107C331A7E80718B030A1103804D144802E3B03EF7CB083BCCDEAC7B43F1B4F5 -C1BF6016741B741CF7E12B4BF95221A72CC9F4657264771AA69C73DA1DA29102 -65D01A0E61F3024E672AFCCBE13CD0B7F54AE1418B72E357A0BABB4D03073B1D -F4EB54F899AD4A41A9F94DC200880A0DB99D67235A2451B25F710C29A882865B -A922E56E9FC16756014FA5CBDB1C32750BD6835A70EB715CEA19A8872041905E -8C660BACDCA26C8247D6B3C10FA5DC240E433E479AC6AFCF57CF96697FF46BE6 -44748E -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMCSC10 -%!PS-AdobeFont-1.1: CMCSC10 1.0 -%%CreationDate: 1991 Aug 18 17:46:49 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMCSC10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMCSC10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 68 /D put -dup 69 /E put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 97 /a put -dup 99 /c put -dup 101 /e put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 120 /x put -dup 121 /y put -readonly def -/FontBBox{14 -250 1077 750}readonly def -/UniqueID 5000772 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A30EB76029337 -900ECFB1390CA5C0C3A04528044F266BA17BE487C79B94FAC6D6484684C5BFEA -87BCCC77D40AD11552035E95E3007126418ED49B68468B38A14E88E68A267B98 -076F1C9769A5AFBC285E5B158EAC9F926F1D6C0B8F1D57D9C31D25AE27123518 -9D2CD92E5689E0213089BD268DA5E47525CB8EABAA4B78A15AEA34705889AB3A -FFB8953B5B3482E52BFA0940630ADF8C0AC2177D907324299EE980E850F203CD -B627962F43D5A678C44243CDE97853BDC6AB45FD5C09AD274DAF89929F583CC9 -CCC24BDFC68B92111055ABA5F26D2DC67C70906F71C2957701D65AE746A60C30 -40E6CB24B97FCDAD0487AE38A201FBF0E41BABD2181981A71940F1E707F91E5D -C8CA50CB16D8702D188E56D014D92F76CE0B52ABDB9110E32438D2BBF3E6A40B -7B005F10BB437812CAC6ED2996F7606DC962C4FDE207FF322782C343DF44CEC5 -FF06A55C630C20E9AE1B0D1C5673753C43BA0767D65D1B451CC6380D8BB3C4DC -81E8FD8AA79BE993218686F29D3CD925566DD587F541A0DA1B1CC3BCEA2E6C7D -5E1016F6917A871F1BBAD96AF9E867735017119A381FCF33EB2D3E1E7093FD90 -CDB0CED4818CFD9E201A03430CEC713620BE0D3254158931FB657C6AD4B2482A -0E7D070D7497892E9E942DF58E88CAF0C8221BF36BF7C435BF2C683A4A2EF4CB -E85820A8AD3486155A40143011BA9D76297F46DEF69ECA4596D6E4CAABF84091 -22A96A4BC78A8DD072FEB759A68A44BE1164638B6D952147EE3C628F9A022060 -1D1941E73310943FA782532ABCCC88593FD63E7E2CECF6665C04DB48D641ABD3 -AE1BB468638681E96394B9E7BED1D13E534B897DB90EA6EC706BAAE06BE2FEFF -1DFA5258113E9B4CD2D36655973864574E0E8D6291E48A8C62203F679B7ED838 -6F7CBD523C2943ECA994CACE604A28D65565494B9CA37601AC907265984EAD5A -F413BD11509A59F32BB262B5FD5BB31240CA4F944735A6BF3C34034672834F04 -BE2A8FA32E7E3309DF659DAB98601A6AB2BE3C3D6F65D361579D4E852529241C -F8CDBF83134B576298DB1D5DBB12778B60957E6912770B38D0EA7C70BC257DE8 -5C672E411824DDE4F7D83A8F77B66962AE8B3369D17F59E4517EEF7BD7F08C6D -029132175BDC7710FC6137BC0FE412AE3CCBA5E28DE0CC93EB8DB325DEDA39AE -4CE27160897725A09DB9FFD853E3C7853550789689AD9E87763AAFBD1598F099 -18AA8A9C2EFF02E754B30F739E07B602BDAC921D5A665D34133C476661AB5759 -C9D5C395312F27124E3350D2C9690F82BE92286ED5FB850E464F81FE12E21252 -122510ED3CC0DCBBABF4C6D36A3F0927B44CB754A78F89AB8046EC1B10F78000 -283141A7C5588A146703604875046AA426F6845AD476E31B7167F198584F06A4 -0C2B7F2359228279E38B05A3238BDF8526B9A6A71E0E7B0A69A438E10AE34BCE -70E604FB79AF76C35D273D32410FADD09B7FDC0C4EAE7A476D8AAC154BFDCE31 -F7A510D5950AC2F98136F0DEDF0CAD1264B0CA1FAE250BF9948DAC1E1731E65C -7E2D66439606F99B734A2063B7C035233FF561EB8DA6743B655BFED53A17447C -A5B8FF7EBE0735D7E4EE431C7FF3852AAAD5C59CC8AE6DE8F6F47BAF9FDE4A26 -4582981D11A6F353CADF39E47AA797A9F78D20C93FB88D95C9ECF32FCC9EB5AB -A2577B24D87203B5BE28FF4F4DDDE88C24E3C14BEAC5BF009CD8376A31B86881 -8EEF4F44A82AAEB95F306881F1B2D10EF915439693BAD117106E6753D00CE4AE -7EBA563D68B758ED2B60D7CD0A5E98A80485D39789638A26FE8E5074C0E9DB69 -9CAE1D91D77BD5310935DD6895CBFBD41C0BD70CB47C0D9F24CCD859B11B93E1 -898375CF84FFF15665121BA941ACAF2D436691D7BC411353CF1F1D7B328827A9 -6FA3E5BCADE1E03CF83C27E6A602108A412D8180548693B800F7E4370421AF95 -6D686943BA451F93076905FF51082BFA1D8C2C91AFB68794393AEC71CED13EB0 -75A3D326C329806DB42E714536C26CD50EE4312759E15B143B15D20F024911E9 -7DAB23203B279C1D1AB69A2C2E661591515BA3C88BAB4746DA77456BE7E27317 -48AFD5169D19D1926DA014AD9744D4AB37F4F7984D4BFA4756B983F06961D0DB -723AC7C3AD6952B73DEC525D01153DF8AEA712F1CB3FE3D413A85C2D8021EA52 -C6CCC1AAD85FD104BD0D4DB6B304B2A2CE438B6F5041F3A2991A1E99E8973E8A -A5566762DAA100AED438DF1AD21FFE78D406A35936FC805E84C04BF4E7E9CD8D -109C83CB119503E85C43B9DC69B5522E4C87922045C71396328BE2AE283423EF -DB4487A27C697467083397BF72536E3D2AB67A5A50D035C4A64C129B78F75D9B -39525939EC41DADF259B760BCBB3052FA492B276AF8F1733B146F010932A75B5 -36754BD8DBE9BFF2CD626686C57282C2591DE2E4EDD298155BB0A4497F597073 -A417BBFC29F933DF52AFAB411F67CAC7DA907199FF40E74FC656FD2C6052C15F -F1FAD00F3C5EA342C8699DCC86E4AE9E66568CD0974AF92A132EB0AED4AB4667 -A1D54F0FDE38F5D047611D79B93F48DD6F9822A192508F59D036A4A496986998 -FA29C164B5D13EFDB25FC62C98870251BB35A668100041F1F41F94964811930E -FCA0E1A4DB97E722098336B52C980C4A0C1E8F79A400D3EAB2867184198F09E6 -0CB3E0F24005DAB2D14BC6741D498DF7048DBD160BEF436FDA76A54BD7F31E26 -F25E409D04011741A2C73F93B3E4725CDA5CB1152239AE7B8121B54076DC5A95 -4D89B3AEA9C9D219B1C61CE6CA5EF83EF2E69A41411051A4A5C308C290B0E82E -2B67D8E587EA6B270875DA2D246D58BDE878B9A1DB46B320E5C7226F42B859D6 -846C1EE1671C1599CEDC9117835ADE4E0F33EFE7C0ADC5B859ECEDAF35C3F5AF -8CD0E5F67570B960A6095B3EA7DAD3777D68DDBA148E578FD16451841EF1BDD4 -4AE52295AE9349AFE3C01683D5EA526C3453A9D895571B2C986CF69A5684157B -2D0965975F329BB72F74C0CC6278FC7CDA0F252CDDAA180A74CBFC99746DFE89 -0D3ED93967294B98EB686C432CEDF85369524DE24B18B517A9C3532801015651 -255E1B1A2F9368DBC3CA275B08B7ADA80D8F20302D6018D14F94B1E73759CBB8 -D09351403ED3E769410F504C393985E8BC06F094AE6519286C81DB55F780D01D -2C56950ACC2337AE183FD82AFA2C4C91F437D07D72157D83C3AD8C738B272FF8 -B6011465EF9E15536C0335EAC9E7DA47DB932E1DF3C879DE246F97EA0D3A4458 -C5EA042021F2F506D38246469415E053E79AEFE44662977961442E6C0E0FF3CB -64993F0468F2CD771A71CCD7AAD136EE3C787FF41BBB15AAD067FDD1747B6429 -25BE486874FD656C261400E6624A4A94362D1E5AFACF4693BCB9613E678C43FC -184D2F7803C9D83E255B70729F3540C56530C5A3DF4875FA94D52365F81334E1 -8635F7F1841876F7DEACB80A1F68D984C06CFBB1BF00616ADA43AACB4BE6CFB6 -0D52784E65AB66DC7112B763CE5E81F63F2A420D892A13D3F8FF31FCB9269998 -F89DAF3A5CF5515F3D1CCF9A28B1B1580D53285F40BE3C3DD7ECE18599C4FCAB -3D898DFE758F5515F7DFE29BC9D4EAA43CE9AED7FE02A07725D2696B509E3421 -9343B0E8DC836BFB96B9A699B6AAACDF120251A4C704CCE9DED1B697E32F51D1 -FA2C9162B0AB90E2C43541B491163F8B096FAAF92FEE6E9AB9C22030D8F01D52 -D9F702471CFB89EB74E0B2D22161B7C8EE341C594E7681FA54A77FECA19C4B11 -5CBDF397D68C7C677650A19B0540CA188EE9AFACCFC2FC5D03FE7B8A18740F96 -CA979DF4B11190E546B5C3DFB857C7767641CB1CC685BCAF02257AA90482A9BB -4D572F62AAE260E2C2495ED06ACF63A1C9E014528180B12AF3D00E27B2F97FBC -513438E637033E5149EDF1BFB1EA10C45C3F17B14E0B1527090BF2B73B17833D -5FF43AC4012B981680548F2463D36C8E9AF8D8910317BBBF2DC29FA9FFFC3AD1 -435CF699E5F6023914D04F53BDF78DE02517CDB63169F56FAA3E7A9B0E578919 -810070832D79D26F548562B2DE677A8D884DB456EBC269F32B198898A4B8FF79 -0E04FEB4ECEA5AF0D1B493494237880B2B886EB7FB136CDDD112771C551DA6AB -BF97F0FB96D8537C5C228380EAB41DA2E85B36E4DAE632771E98CDCE02FC9A75 -FFD567B2C6B45C81446FE2156A63CA9F15BD0F03A5DA754A3FAC1C5B3C921E68 -646FA12C1F68C197E921F084658D7154859EBD9C5C920B296E00751C1BCCC949 -9DD51D6F8786A8865F3102065EE28C4F722D9B98AA97CE2F5794823C6A3FB986 -52FD72789EEA7BA4866026A10918F52B03C622F2542C7543050DDDA665606BF3 -8DEE14376093FAAA098DF9785A67D19F63A37AC7F2298A994EB48A326DFCED3F -FC691F896C29835C1FAE75CFE3676E3BB9C1092A004560758E420EE847EE6ED7 -33D40A0B48A6498820021709EBAEDB6106134901980AF499AECC0907CC0E3D47 -64AABAE58E720F25ACCBC177E7480B310BC1DBDED0FEF0E8D2D9B2A30610798D -FB951F3E8BA556FF9AADD38450E20C5B12BA28C40F526F556973C0161874F980 -018912B185BB826FA05A682827EBC8C62ABE4B10724D50908AF40BD72235799E -DAA75B6D241002CC27EBC276E782ABEB8A90AB3BBC48E18C3A0F1CE39B83FCDD -DD8156D6F1646F8E4ECBE341B0D35705B1DB772FF8FA400A9670E07F7777FB40 -992CB2C50A3EE35646EC91C8999C88AB0F6ECF681B9DD3CA687A364BBAB4FD3A -4C9A8EDEC9A7DDB1DAD0C64F9E7EFA1828486ED4F4E57B088B3A1D69A2A1769B -EB8FAD8232E082EE8E852796F4BA98676B1ACD728DE70D40CF1CCBF9EB8D82C4 -D122CDAC183BEE10B16FA767B683CE5AFEED3DEF27303E9C8434AEBB5C6161C0 -D642902542ED5ED248C7395E61612E084FD5D265B0C13A1A8B2DB5B5316457DF -CD6FAB47F6FD470FE63AAC19856BF4ABD9C4FADBF029119803809C57964AD9C0 -43AA2E8EF9EC375CEF787C455DA710EBEE9B659F2E132E7DA26D5E09A36D7374 -2B6390CD4D00DCB41D92DAC28CFE492B28ED29067BDC38A19AA0EEEA5E32AD4F -BE3E5863ABA95E089D703AC5EB61F0FB095649DACF14DEF2E36E764554C482CB -61D406E67D0846C9454D4EE6AE98306196E828C148DE41A47A376F6E8BA8FC38 -853769A63206F46CF7ED87CE8C4264FC10A68C518CE30A82E16C6742137B15BA -D970CA3EA230CF6196DF01C1F0AC851C1BA041B5D2619DDFB3672FE439235A07 -34005AF08AA7D867D18DD75BE1012822EF387EA99875D2D8650346F756A7B38C -AC5A6692C1965162F5CC0A8BFC7E092A666D2CA06186F8C00E061A8D98E8E2A0 -DB5B5FE8E8FAD66544AC8AD3638717021A5E704A5DE0CE6031532BB670362009 -BFF840360D47A960898EC370112FD0E911BC1AE391BD3304C42034E274264118 -78555A6396E3005547D726F8888B89476C83E98C1489B4DD8BF2804FC510767E -8512693A2888404DF61C1773109580CCC5FFF098361519F25302E2E354B344E2 -A7F16BB462F4E26F7C2935FD6D179070622C8B4A92C40A081982DEC025A3558E -C56321891590AD5327EB70A03C4926CE687729F5CC4C953CDDF1420706EF5E80 -BB33A7FEAC10639C6D01573245CFE94B0498293FC7AEE5920C70F49608BF4B66 -1F5B13CC365248EF74ED2046F3005F8044F39A702472C9A311A90BB52E7BA7E9 -DB74E366C26BB25ECA4E818248DDC3CD3D6FB202CC28E0196505AA5FCD5B69C2 -45EFD726B53FE103B880A24C41E9856B53695F3EC3B6DE1ADB1EAC482E17E335 -8B83C7627E529F3E5C5E9C7419FABB0619539A584A58514FFB42175E78AFB801 -40DCCBE5F70D82C247715835C0D7C447C5A57207D2C12116ECCF8E4C5179D830 -D5346814CDD2CDA9FE5FDA6674773E65123C18017027FAAE3F0E1C665DE2BF9B -8E8383F345A46BCE1EEB2CA260C7E5412DD930D8ECD2ECE8549B613091F33144 -C5ADA9662880F2C5D07C -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMBX10 -%!PS-AdobeFont-1.1: CMBX10 1.00B -%%CreationDate: 1992 Feb 19 19:54:06 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBX10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMBX10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 85 /U put -dup 86 /V put -dup 97 /a put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 121 /y put -readonly def -/FontBBox{-301 -250 1164 946}readonly def -/UniqueID 5000768 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82 -7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378 -77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18 -2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91 -FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F -DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68 -7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4 -9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176 -CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D -6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6 -E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E -8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E -3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99 -EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4 -0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9 -4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF -1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910 -757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E -0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665 -6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED -E067598E1B8B781EB59569E3D0D54D8EFAE0F3EDE26279776ABA15341E42E636 -6E02817082BE6FE0B04249A4840C11F95F8ADEFF72173E9A5F2AB2F62C427E5B -DC010E18641EAC906A5EF0F9BC2108062134A7F10956219C5847C0D82F0E8663 -12D963E012DF0DD899911EC5D8096F80B49CA3444CF1294FBFAB57DFACC9D01C -46F3BA2F3D1C14EC30CBF83E5729F1C074D4F1665405CF54722827FBC24AEF08 -F6DD0BC6A79A2DB1FF539454E8F5D1A42D40CCFBC093AFD3E57973A009095CEA -B91FAFD236C47F453B38DB0067907A28EB5E9ADE87A2181F1D6DE4E183631716 -C21F0F952E0666AC74371F8B5C888DC44FBA5607435A619684F502CF625663C7 -94B0DAA79BE8E129E7F5C5AD1B7495C1BC9B1C759867467F55148C7FF2F914D8 -95218C4C3C2D2DB3482C21EA050F23D6A7A056B172EB210276CDB3B1DCA47A9E -8B03B9BADC72F42D28ACE31D0633A0A1B22254F37EBF0433F0EF1CFEBC1CC653 -E3EE6D197AAF36E7F871AE76A67986E81B67FDA59F9B0CF210C7ED7D696AC130 -748A803C64D211C6FC54BFA3A7FD94B0B54968E027E480CD0643275FC723BF56 -75B0EBA2E2731351BF689F46408D57BCCBD9566501256B58E653AA0B7567E024 -80AEC3AA619960C0D3D21113BB0352C897F8444E1767B102D88050521577DC38 -6FFEB2753BD3C35317738826822127DC3D50FC0D3DB048CC30A10DFF384A1369 -FF255E6AED7A0A9E18497BD332F0DCFF198F9BE2D660F139C70DEF78DD68B5A2 -1E570F118AC4DFD36898DDF32147FBA8FBB98E9E282FD44699D0AF067BFF547E -9035FBF6E4D18AE1419122ED11A72070CA86871B801F32C67272136C05016688 -D08D82E88DBA951BFEDB85CEC980717717DB055E4F39D8569EF2BA2C1FC2D8F1 -4E4EABF708DF3413C163B6D864F77A9504310826B0F2624A70447FC44BDB516C -6C2E5C62B5850B543F66E4671CD3C0B5BF54A9FABEB2764CB28EEEB6A6EECAE8 -4DC7B31AA8D2DAAD953978829758F7A5067BAD459186755A1928D2FF55D3CBB5 -2BD58FDF257DF0AD3DAF65B3DA5D89D8FDB4F1B6269854BB3F271F2DD86AAD6E -BD2BC01221F7E1FC346D7C264C50987BE296ACB3272B08A947317C2370E3B442 -9AC496473C154228384557612E0D645AD8CBAB98C046C6EF71ECEF12E9486285 -F9AAFFECAEA4338320FCEEA78FCEBEA6003301365DCCD21B40FEB6FA43692D00 -25FF9F87C6EAE45E1582A4D687AA7D9429800AF274AF99DF6CF36648CB71F4C5 -3E435FE94E2F227CD90499233B4C77781213A2F87A4DCBB2FD2D10123C1F7258 -70E1EDE211D04D8F00C91C6711E16CAC2B2868FA4FE134A8307F26970886BA70 -58FF59A8D8B4AA2C76834C0905CD4603636729834407E738ADBE8AE3408EBB6A -4EAAF4BB617187C56F1559FCB6BC33FD5BFA4099DF90436E9B714D7A7E9CDA86 -B3581FEF19E5A8CAC733780A110FD1FA1B6F68C99A5E65CFE03954779CC2C703 -FACED2867468605EB6768041B6812F46F403A430B0E903394AC10AD528F012DF -4825543D756BCEB846C4C16CA60F21D41E71DC1C8B4A538D5619E789D35DD768 -A86C355E536645594FF21BA892898A96E6EB44705D90849076C5494A6CAFA9DF -DDC1F143B8ED878F34DD6ECD74EAC75C2F8FC595CBC4D6ED195CC1144C6F2279 -DC493BFA29C0CDA22196289F953932CCE1DB84AD28781E19C2EE562AE7516710 -61BB990CA6915FF557E0145782109223D015DD0DF7DB61B4A43FA07DA1D03FBD -913B9070A90B7B8175F3A593A30CFC10A272BDDFD88D1575B85185272F59030E -ADDB70D73B071977C4D2659DC7874A059FDECD0E8947F36FD4449C5D902ABBF4 -49239ADD1E23B801F108FE740B4D689683383BE78604309D76C16BE530F11A18 -81688EC71649D86FE5FE7729B58EC9D4CBEBC6F3CB873955B7CDB3D278824509 -E3EEBCE606FF344BE1142C7B69131A434685F1AABE4142F11361F3A09EA04910 -812F86281858C506486CDB9F5BE45FEA54A890C6F03E9482959101C909ACF333 -A1F664126AF65E786D5D60ABA6D940C358A67851510822D0B777B396455307B8 -587CA0B8E5D7BFFB42374C9F3D0BB7AB6704043FA9B27AF66CEB08AF329D98E9 -D9C208CBDF317FF843819B677845F4AFAEF02BC4AB81A8BCB2BF697AC4F55BE7 -1E9CC989E00DAD7C43D4524FB3E5AE936D1E269A392085FAB446C53DC311E0CD -7A0D7F174739C71BE96EC20CFC297658D03C016003089EE79EB233CF8954927D -834112746277DF1E209E78EEAE2FA9852036584CC5CE1DBE4BB562D5437A7CCB -86926A222D48A85058ED30D54D41DC62ED03E32BBF729BE51EA49CB40A7D2DEF -52ADFF48EEE055687D9A9CBB34C0FD58EB9E0D77379363A659B062ABF7831F16 -76FC9451DD8CA6314171E58912D9B6DA20C9917BAB945430BA3306664AE47113 -CE6BCB34C07579E55D25333835A662DE07ED0C93FD1B6CF641207454A9AAB7AF -5E964322C895BCF0FFBEBC0743F22A15F849123AED8ADE68CF4BE8B40430D691 -B3E8F6F794A6C1F22D8E0B54FDB6935B8BFECC9B88FB924340B12744E44A8B70 -C3926651D5E1B45322EA9579DE1976394B2B790AC86BC153C4A992A23A9B9B03 -80C3F9B668AF21192F83EDD8F6C2CDDD35B203EB6CCE2B2AB3D594E20FE26882 -8AC908F2ADD6B3E89C594B0D5EE6F1A66FA0ECD291607FF003369326C2AEF8A4 -E632EE07359D43DB51FFFAF2F44FDD835505BD4BF82AA591D314F69416223963 -82226CB20A885CE48332D51760891E777056D9537BDCA1D76CE26E440868BAC8 -F831E62EEF1C5A338C887C4E697BD86BA0A62065445F9ABEE827EEEBAA384C2D -0FFB3FB7CE398EE9A7AB71BEFEB2E9040FF9C8CD5F6902BE565BCFBA328BC3F9 -4882EF593B635F80C7A370ED202305958E6D1F3CBAC589C49A037B9298810BAF -727DEDFB01407126B697880F793B2DD2B70912F8BA55CAE8A3990A38FBDF8AA5 -8F7A2916E4FA05C78B7D648B5B643237B490EBF5BDB593352271A03DB1CB118E -926FC73FB40006969E2C2D53E4B676CC3FF38014F9AA2A4487EEDFFC9C84D973 -799FC53726EE9262D3C1CA0C67AAE79FDB33343F40A8D46190A7E856DA406FA6 -A12EE52F09F41F4B257569D2F0FAA258FCC0A24AB411FE2B594C1D113BA35107 -D1E0E119FECE281F9C583E7A4632DB5E6349305E08D828654489F02ACFEAFA49 -782B40021FCCE7697A6A23625F984C2D1C34A2076A4A444691D61BFAF7A00E44 -864DCB35C795B490ED1F36B37317E41398B54E31D5FD00101EAC46E426484F55 -DCB41BD3BFCE07B0A0FCB437F111146DCEA3528D8E0ABBCEAACFD70B5ED6C402 -38752B0226C53798325D361026B84BDC58DC7E5465EC2255DF6E73CAFEEF709D -D53F9E7E7BAE9D43F1C616DA1D3CE8DC4F94E200B03B327139CEFC8640D06C0F -96568BCF5CE7F7DA77574FC2D1D6FDAEF17BBA87D01618401C92AA1FB8E2AE43 -FCAB28A0BDDA90CE8344F05436D9A8515DDC991901D79BCD8F42A8637FB64524 -230C3BF29AEB73D21C8A0E758E9D628A9D199316A97E6C98C15B8A698FA90454 -1B5B413B0ED4D759A60D6B396D9D231E12D95006E76AB14D3B4120707292C663 -DB6B798BBF95AE26BF29F37AB917A869BFE976E423452AA07437F3D72A794EC5 -5A4BAEEF690EFC3036A216E4EFFF3856001BAD4834C62CC64C0AAF74BB9E0173 -C05A7C039D7A24484981F8311B9CF61FB26C1C0A21FD80C3F464E5A33B09CF9E -17001C832AE30C1741936111786E545095D994CDC13BEA3B2AB63DA9494EEDC0 -35DAAF6D81C6899671AC1C9D91E510C92160E7A3F748C3D5A70F0BC3B311C31C -17A7ED7FC069E1984A15136ECC1C6E3D0538829E9075EE4FE2BFD460EBB9CD92 -36783A243E3D3865713A758653B562A3CD0BDCD9727C02FDD94031017832EF59 -352509AC6976B069E1BEF7BEE299B90BEEA86521FB6271F0596C3A99FE3B7E3A -9E1DBFFD6DE503DC82A2CDB9AD24C22D31ADACA33E4DDE6C5D57D1E4EAF1313C -97CCE2D00C131CD5CB6D57A4A56B45D4B1C2CE373EDD21D7A3EB6B38EC442E05 -4E54F18A407D7E8FD58142BD45E92EE04D234C2CAA3875BE190ED9E683683778 -F82BC895C3ADE359A758A44761B54ECB81863E228D185EC545F0B5901F1F4883 -6BFDAED958BC196A10471B9598283BE71830AEBA4325F90059FE899CDD26B852 -09A28D1BA15700EEEE3744E8E9975D46143E58A20C484EECE17A639090EED451 -D6852B9414BEB2B5F6A4E211329E859CDC32161FC71C9F65B73140E055638250 -786D255DC03D2F3259D3E0B848CBA04672AC0F4FC171A5CEE3E5CCA5440CCF5E -319EC25320844BF1B346A14C42D9F0554D4E29F37F425015B6035AC65424A96E -8E0947E2FDABC4F0550A0572807BCFF5D98A690435A2A5A96F018E5A2715DC3F -0A0F637B0BCDE69B3CBE1D8EFD5F2C40E76C8B038B57FF86DD047DD17646B264 -04A0D78C42E25C4D2C0DD8322AA8F8016EFB6EB1751A829F3962471A19161DCF -C0A17D3DB672107BD72EFCDC55BD908082DE9CA67C1729725509151495D3E5A1 -C62208E392462CE0652A638878CF6B076B98D4F44D3205A2F78D962E6B56B476 -5CCC6A582C8CBBA75E9A73D0BC57DFFDA335A9EC3558825E0CDCCBF4F378D14D -D18E860A133C22B925BEEE3A2F14EC03643F9E50E4828C1255671DA5327BDBE8 -87DC45881F19CEF2A4053BA9A90145A2F58BAEF8373B8AA879BF0D9AA8A771CF -7AF7656C766436D44A36867BC77359316D1C22A98E2E569953B338683199E504 -F33413CF34016D8D46C0D464DB37429DC2D07BE3B6E38F68C5367C80D0935282 -BC99FFE9E910D13A75BA6F2A624A3D15BF013FE6D9331398DD18E3B5C9D3A6FC -7B075F8FE290EA8C99E7BC443FBC3AEBD1F5022BAD0B2EFDEA235F2BAD8FA75D -F41E1C6AF03435F56D57F00E39DEFDE882A16BCE2038E4AD1C45FC5528CC8F02 -A0B469CB41426D2D894151742655D22D9EC76BC74F2A1A13470F7EDAB63E1834 -822B1F6114A7A0A713F5F6BC55B81C177B629E728DD8A8E58D10302E4BC94990 -DCD3019E2754C943B76CF0326273C64D14D570461A3C27332E20C3EB8DED536C -658FB60239746BF0298E9BF726360CFE6FBF8EEE4CBC28B98FB7FB8519AF6446 -4DAC6E77B6F7EBBB8EFD74EB78329BE8BB8154FA14A3C00ED3DCAE21406FCFA3 -25102022F0BD28E483E32C37C3F5F11C519C67C86EA39ADABD0104A01DC322F6 -14490BDC630317A768C17C667922CF443B5CAE7F20C90B153C706B35E8E2EE51 -5E6267D909DBDC50FCD1F6EA07E4CA49F5A68D7591201DA51F373DDE781D22AC -3B8D55B346738349857ECEADE80BC604118B601A7540EE69599450A6ABD49C55 -5E5FAEDA3BB7A425973949DD5A4CAA35D79DA5EC14ED3D0192C4ACD4A896F202 -D5790546D88468C312DDCFCE0E5E11FB0CACD12E1E71227C7C61C9C33FC80EB0 -AAA1E95A29E532326721D2C8240486DBEBCBEDC2848012E8A61C4A06C6061EA7 -061C4426DE572A1590F802429481189B93584F447752030903DFD816A83EAB2F -9244CF363A989A7AC442D67E797B133EF89341669F8A811B6B97CAC4F7D05A9D -D82800633FDFB5036B7F4254E02FAFFFEC3F528AC15DE2235016611EE1E4764E -F3949389549A398D708A2CD0AD524404742E94323DE89E6EAE37A21B78E70BAE -E16CE56E1F2E794B0EBCCE053E4904777E6E16914255775BED691E5D6A240193 -A86640AD3865B1235C9C872605CDE8BBBDAB5DBB291E2E6ACA6AE2A151BA792A -A9E7232E02D5599915158D233C98B9C2C2D7A979666B8481674D2B40CEBF02D9 -6980EB9DFAF9DEB3287D44BDDAEFAEFBDDCE381D2B5E779CD818FB2F78F3F969 -AA65A92515DE704546F0237F14D15A98F0215E32BB46798B55D0CAA729B59446 -A7DE223F6C1CC76D3B0A334A72FB1B601DD93B8AA4F3AE8A01226A066CCBF83F -CAD88FD250D63032B9E52A80BBEDCDBA715CF6BE460EA012A805BC625E5EE146 -78BF452244B8E93B8D189B06D52B80870D71EE7DE429173B75776F9BDF5ABB31 -6797CB94B0E05708BD4088A87C16CB52E254985EE9DDA8638C53C60BC5952C7C -B78736CDAF6F619CD3DE22705BA254A65F45598698771C1ABD2530B94E78766C -5CD0FA99ED2B7086FD3B0E55B744E5159950C7F7219CED6D1BBFF4BCC3144263 -0BEE29F65EF126EB023FAC4832A253DF3EF1AE3076DCB0DC7EF0436113BF4963 -F1DDA6B79E3A4489DF2D744B5326F9602EA5D667DDE5BAAEDEE6A673B609308F -8CBE6858DF1CF7ADB084EBA387CCE77F1052B7B785AC95026A3291F6152D3201 -7DED01705181C7918CA8E7A6C42EEF071FD7D891FB208AE0BB8FAD9E1AD322EE -4BF7D55EDE81ED3B512D45B9ECAB32A3DD01B2B9D95EBB6E863B7850CFF57EBF -13DDD368A39936A18A7E0CEEC40380EE1B8EB9DF0AE338DC41B0662B7AF005DF -C28CD3537A42DB10E9C1521886511C6B82C6E33A93673817A9AC70B8456ED349 -040E46391B548CAD74D288990BD3DBBF52ECF5DFA37E070038EB62341F27FD53 -6D74AA63992E8B75C3E81BFD1CD6A31A001C4C0D00F205E33D1FAE99362994AB -A77249B770D810D30892F066081DB6929B8AEEBD0E83D27AE4592970502B18AB -1A9DA8BA7A8B3FC923F5F33BEE59A42408273D23D437F2B23878A3B0853BD44F -060E7ABA8B9D32351CFFE1B2EFE76E8ADE70E11819A26A338A42DE3ADAAC319D -E3C25BE804E950DEC4B9473BA28A372880FF0FA068FA8CE93619C8D22DA156C6 -11DCCD6A54E777AC7BFA135D9246967AA7962FCC51F66B2CDB343641F82FCE18 -8CC424611420E4125B443ACAA510AF2A1A32CC58B06D09A5D4847E018DC491DE -21035C0594EC7B02229B08EF92DA96A58A8ED38ADD32310742803F659BBD5117 -909C727831AD21D998C2D539F3C8DBB4FC18DF2A5C942D5D74BFF616ABD5E804 -37B8D3D91D7BA9DB8BB901C660693CEA050596DD7AB415D27EC8B0229EF3DE86 -B91B4A3E292327DC937D35D83B9301660DF33D1141B608D0F87C259FF42623F1 -C2A6F9F2A42C7D316CC8F2702E76272AD4748BFA8F7FB9B5C189BF6020585F9F -0E825D794438664F4E68DCBCEC4F8E1DDD4C27E7150826DF8E0AABFD91E76951 -9473E98AC03B86EBC049753C2BF4A0278D84D32B8D08D4BBB30B49F531036722 -9DB58C34FE2B9A9F44C44B4B7FB30A71148562FFD121D2F047623C038D01E2E4 -D1902346CBC6B44384433E91D3D5969D30868C089B486D86ABA382C2E5A438AC -18C95E33F290EC268555AFA26BBCEF30EA70BFED612D0F4020C96486F3066642 -0B46434193CDB742CAEAEDDEED295638D68485F15CDBB4739ADA2061E9FF6BCC -AE62C7103BBD36C0556C01DB609C657FDA1BA6FDE32AA8C278E60A0A6C9EAEC8 -18264AF3A0CA6EC197BA4041AA70B7326404A4D3958E504A690DFCD08574EEBC -4C2D9D4F646ECBC6FD1F7EB3C5DFABBCA1B3107DF8C343FC7918C2FE11A4141F -949CEEB5D55E83270DC8E6B1CC81115B53C305801D3487293240697EB57C1546 -7F9BD59B2107ACC81B8048835D740737AAD4CE8D8D18D9EEE3FBE028865235B8 -9C79020424147A2EDF6943927924549CE3CA01086FB5DBD35882B82340A54F51 -8D7AEE2B5C4BCCDBBFB7CCA9FFA36B8D740CAB3717DD2728661F3ECDC0EFA95A -EF8F1B22839EAA5CE2DDD09CE531599860D0B40731231E4D3B58C9BA9C619311 -D5B5785959AF16DC31F1E9993284214CE9CEFA0352B766F7D42D22C6E84D2146 -C65EDF68422436AC8CA295438E365B393A2B4B7F448D7CEC064E426684BCD0E1 -AD2AB7551CD9D41D99E25B6F0BA69703DB307DEEBE1DE05CA1E8859BD1914EF7 -B59ABC9925E3EF421C299C0DA38899B4D9BCF7D8965C8A8F78FD6ECA059B7D43 -ACC38C3D7B7DD760E1B9506502A404E22F0CF4AB75103E4B25536C0424953C79 -690E01644DDA800DAA2F5B6B6306852C8426EED09966ED73BDF359CD0DF68C77 -E50101712A7419772DA0FB7EA03F32DE87C85788416B7744ED2FDADD790B2A2D -85E38C09A6478A60C4A128535B09425D60E524EBC11ECF3FF964E06C8F3742C1 -C440AB06CE6D15EE68A7753D2AB1EBD758834F8BFA5E3D5D1A375F4C7AAD4676 -A07CA74F16F73BEC12391FB840E840079023C66E957D95ABA8148A2CB67D8D97 -5D4089E106A9608B92C2FF2B3E6574C8D41F5369A8AF518A9F9C4251DFA6C575 -D601B8BFCB406E7852728DB5ABFB3742657BCDDF765A053C9AC7E4806421BE05 -282A216A96A6F3F5C5C479AEA26E73D5DEE034A17FD55202F25BA1810A9FE064 -71DAB26A912E79F47CE5E205BA91D5FEFFF57750A00A6A898B79BDE7D2E3B509 -31914A486AF5411A18BE1A398E888320347E28BDC5E21E86D9AC8ADACEE63006 -9A779455596120D25CD8481810ADE7C885488BD73E5F2CE86D9BB40AE6847762 -9BA3660C8276693490EDFAC76D0A0D29028EF24187383AF6E50DD5761B547761 -8787223AE019FAADF4D39F8A0EA2BA1DCF352A4F9F15C978E237ACC938EEB3D3 -F988916800E91C36B025E0A45CE91D273C7791B2D2B205E952622D6E20C48640 -0B4C9D8B9023D4AF785A31084C46B973F726109397F1369D01E5E72788528160 -5A5D517F7E7D2F5BE154DB56ECDEDDF0E706F13755A37FF85361920C493523E0 -9F8D187DAE118630967F4BBC2680D92CEC1E5B15F559CB5BC0C51DCA0424A5EF -9278F1E46B2E562A292B3581F57703029DF61FA28410890A60FE84F7C6ACDACF -B2DBA0F2D8F88133509F751DC7826DE8ADBC6D8C1AE0B479B7B1A03B88C0CAB9 -C50735458C4627E4F2B3B8602D89D635B1E89C332FF370EB86D94038403D0949 -4A5BC0AFA09D76AA26A2782C710CC079AE6A860D4C9DE70C64A4DCB28CC8BF78 -E4C46B76AB898BF9BA25E0DEF44E2D14AE72FDDB26FC257A6AD61FF47B164A9F -7EED017A00F402FE09AEDBCAA6780DD00CC452DD0C08CB29F181143E203D5A3A -62F576AAD93AF61B845E1B79F3DB3682B20F2C6DC4718F1B6DC9F829B21E79FC -279BAA57E5C00D3BA09468C50066C495D3950F8800C7FB61FC553FFC4895B95F -3645B295D33A11B21513EA37BC62AF0F8AB67EE383FC4DBCE7044DA4DCA5B99E -D2294C8B46D42AC1FFAAA610E9471EB56657667B0947EAB1812C98F5F5E5D107 -A1B8241E31A69DD6109727CDCC479F8E27138BE14A82AE9F6455C106A8BB4933 -8B5D750601B3F49A6715D9C77A4907A5095AC0E0AD934557F03FA978FFE13EB1 -EA23AF556181AB7538C45914F484CB33595E8BFE6ADB059F25B9D7A61C709343 -7E6E55957CF5D7B028B0B57F337FA607D79351BE9520CDDE42CC0B5A25F49F40 -A377057F61A2FD8514702CC0FB45E5BDE18C829BBB6FA300B3E9ADA6AB2CC595 -6145AF885C69CB4F9974C746C4B2FA5AC721618E77B2821D5BB67B2D9BD9BDC0 -956D21E8C9E42996CC0454A69849AB611D74DB4CB2C3427A86D68B7738DE7A0F -EEC1C72A0CA07D5EEA343914B0E4FF2286C066928A8BF88D0E1505429E771365 -DA6E42109CDD8C04AADCEEF4879F53FFBC1211F4783B650EE131B7B6AF682B73 -F5DB6095264B8ABD6F3451F16135442886BD69F9EE7E5AC7437540EAF63177C0 -22BCEE2FAFE821909E05A977F69A53CC56863206264E282FC21235B0A8D72A58 -179074C54FAA512AB264FA377AE6E734321EBB2800CB6AB8F33FAF8E640F84E7 -E9D414CF81DD3009A3AE404737CE0189127C1FCDD99C405770EEFCC556BFA88C -B9B1871EBE165AF5375DA6AEFBDAC3C305D341F3DCD45E6B14F40317266E1558 -3C4324F5C32CED15C642AF0EDE1751CE7BCFA460124D0C669F74501309843DCB -4EC6E85AFF310803AEAACE242750F60DE3A13165B787E387C873D423571D0C9F -666E0827B75F5E56C0FBCEBD1083E16C3E2367BF68A18ED847B5A24442CF001A -E52E3A64C851F91006AA42E52374EFB5D94F8BCA4011CA5411D2816C9B2B2E2F -30BC4D54819704C129FE8D574241FC3D6D52D24D4F823A71F1B700599CC219E2 -07302B31C5FAA4D9E7889C0A7BDEEC1B8C0F4F35B0982E677A1F041E4CC49503 -65F043A369D4641E90F31F61B6502A5C171D73473AF144D5B3311DF3542A9209 -800343BE022B3447B8C65651D3839B25AAAF6B480233FB0A026467AA2CD3ABCA -1E08212C6809E7B736A30CB9704F8EAFD4E59804A5DCBC33570938A6A55D8BF5 -7A09C64D7AC58B7FC4B0DBEF59D2614E7CB991D0EC11765B2893D81D9F7F547B -218F0B0A5DC7AB7AD8462B66B76B0E68480851CAB1EA200EDB3A42D6F62B47FB -2D59BF9F3D9662EB858EEF6FB9D743C4E3CF11A0E58E4709BFE3F21DAA2C9939 -AFBA0C941334ADE5BF1B58C22F9BEACEB549BF0E585F33B6FCA39A58B4E9F93C -CA985C9A0E542F7A5A31C52149E1C85F9CEA4C602E1DD421B16A805191AC473F -16D125B0A66039E8D721DB3E4666242574503F87FCCCF046354DCF274214A023 -D400B184F62834CC0A4953419C65B89AF51F5C3F50122D54C503D228BAD2DB48 -4E377C51A8FF5DDC7A0568A06F15BA8FADBD3D135F0DECE17C5261C17C5261C1 -7C45F6923EAE13264B19E6862A290312D6E4A04B91647058B0FFBEC519652586 -B5231AF6F2FF680366507BCB1045D32D374C3FF858B1CB1E6F80F3C96CE15E79 -0677AE6C2DDD10A6D713E3D235960CE00CA39DDDAB9CC5D71DB36C -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTT10 -%!PS-AdobeFont-1.1: CMTT10 1.00B -%%CreationDate: 1992 Apr 26 10:42:42 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /CMTT10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 34 /quotedbl put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 42 /asterisk put -dup 43 /plus put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 59 /semicolon put -dup 60 /less put -dup 61 /equal put -dup 62 /greater put -dup 64 /at put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 89 /Y put -dup 91 /bracketleft put -dup 93 /bracketright put -dup 95 /underscore put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -readonly def -/FontBBox{-4 -235 731 800}readonly def -/UniqueID 5000832 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 -38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF -D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 -EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 -A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 -F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 -4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA -6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E -A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B -E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F -1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 -452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF -8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 -5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA -DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 -BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 -741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 -E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 -E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 -D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE -C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DC -FF798F2ABFC4F3539392985C4CB324B00072295FC160818BB0355FDC4F12E39B -984826450553E3D271F03D8DC2D12A92A4D32034FD16DA13B876D88C8C097384 -46D8D7E41CA1A8979F9B07EC3337E70CBBE3A377235B04C79BBBDB66CE1C1A41 -89DAB7CE91F2FC0CAF6DDAD09992D56F72299068192610EE3DE5DB7CF6366B4C -D74F414484DCCDBA449BFAADA39D0F27574E604E31CB513B18E3821A33076151 -C2BCB6E957C77A0AECA48C587ABB5E8C7624D56B32F80BBCFDC874AAD6EA5119 -C9B06886F08CC7DE5400E0F52B07483FD4BAF26C1556CA27B259F845681D61D0 -2D28B185C9F052844D9A5F91CF19210CBFB21B55CDC8C684448E9B5A1D249E15 -56632979760E2CC7075DF794E06EAC2C8E770828837AEBDFF1A5EAE67338CA7D -F0A477DA679EAC876B6E0F0300ED4D9097E654F197198FD861ECAD138AD5B484 -A28E3CFBEB4CA387F488BDA739EBD767BA225E1E0E7CF5D75C85B4DE5437481B -011B4B5C9590CB8309079CDE324CE4C2EBC40CD2A6B6F20AF0CA05B89586EB58 -4210AED367DCB3FC3A5845CC77126DF2DAEA475CCB4D94EA9CDFEBFAB137AB61 -D03EE9555BA9C6065EF9ADD376F6ED4971D546608D763570B9ABD3F692D505A6 -49543687AB7A8CD379693F71C6C859796B12E9C834E18DB0FC0063D502AEF1F6 -F5324EBC13AB3FEB378BBF9BA3A9CA9F2DC6C03E2D2102C5F245242F736450A3 -2BDC1E924E1C6F28DDFC3900CDEFC793B94EAFBAB1D8974A95B424C6F9D71EE6 -AB1414BEC47E836BEEAE29C8AA3A1BB09067CBABDE9701D65075D75A43BE26D2 -B0153E6EA2226BDCC9DD52FC8ACD2437BFFA60C48B558A3481CF70EB9B4810DD -9DDC306C60835972912D1C8B91E37BFBA6D073403B7112D28DAFF0C7EC8C5AEF -2222EBFA58B67472EBF5CE8986EE3681AB1CA8D16D9A2D6E64C3EA177A19D756 -655231063A387F1BC3EA15A1670867D9025A82421D1DAE6A674D9909398E1199 -49738C66FFDF170D54A748C8F10E22CFF8F0AB6B0C6EE870B589D3E3D9E548FE -405D01D18D8D883151034AB0973A3E52B2394C2DB707DFBFB26BB937B4F16FEE -5FD39DCBF8FF3B1A6258B0860829C1923ED50520680FC6AA3409F9BCC0E571A6 -9F9EE2C2838982303318BA603014762E1354039D59AA3A0D6B503AD545050663 -7BF58018253C2E99CBD1868FE34CD15C0F9ACC04AE1DCFA5B0ECFC5DF9D80D15 -4FE32B45F60849CC39E90EC7E3EB6BAE330B78F76E67E7E4AB2E70847A505DBC -0903309EBD4D546D0FF51F0FBE48BFEB6D3412668CD8F42903B84193BEA615D3 -5E20B02D4D69689AFA18076283A535A99ED827314753D6401230AEAB22FCCCC0 -BBC91F373AD6B78DB928266D946BE394B12434C6794DBCC8B90E570D6A846C89 -FA90F1EC1115A69F4E8CA60EACBEC14CFF8B58FACDD4721B32845D1FCB5521FB -A6AD6564F4AC801CE7E4F831F654144B842473B8CFE25A33968B1A1743ADFD7E -FD1F3F8AE2BD2E81A82F5874F6AA43B81F231FBE52A7E5FBD7701272CF9B3E03 -5048F8833B12FD08F4007D93BB242F00D57330E68D3E964274F81ED10CFA7CFB -C21A3B8E8F156A0388906C164C32931EDACF4CECC24820CCDC1095D0DF60BEC8 -921507FB9DFD2AE653CB73666595792F2C1E389A80BB587DD5E2335348354643 -E17B7427772258C222C9534061117EBEC43520F2C3C8EA0BA8DA0C1244F0A15B -406382A443E30724AE7C066D6316D609FFA065458C4D530FE5F48B0134C5E5E9 -AF85015264BC2A15FE0BBC8609D8F3FB3012948F0BA2617B351834345A457B7D -58EE6C6A5545149DC0D149D6A899E0F38B37F174D947214446D2E93882033CB9 -B89502C77D0FD31032D623E7A662A1A1210D32B231E48951110EB7712F0D8C07 -C98FEA15D0CD4B49C44D26E5EE655DE31B55826282BEC6EB7905C7215E07ECF5 -C9FB5AF33DE7DA4BDA49D216AC0A605541CF11D4F2ABC182FA8972FD216FB99E -022534719E6E7D59E9DFCC3B030EA98EC7C225A66D715DA17BA481816DEDC452 -74D3A1EDE66ECEFF88B6308A0C91000012B550341EF4533D75ABA18DB3FD4335 -F3F1A45567C7BDBB6371E6856BBFE2E83FBC940623ECC93C69CDBCD60224F782 -AA1980A99E42642B7F6E79E0F0593DBDA272B64208BBA0EBE24A86782F84271F -CDEF52F94B2D38164A8A19BA740A4AB77B7CE2651F9E307549C93397CE5FA23E -1481A5C59FA9EBA40DC9E7CA4469285955B29993BA836EB28B7E24F4F7ED68B4 -A4E78EFC1AA222E616FB2C3983E7B4524756B31B6E87051BE10AD770C5771D52 -E79E368900CC6B983D4950C1DFA1CA81EFF74EB09757545D904FDA5A4F6068B8 -B8F653237C7CAA3E507A96AC85A9A2856BB1A39A71B4FA5CBCE0F8D510D1ADAB -E8A78EFC1B73AF3E39A9530BEED66372C6C993D82A7823D2ADC74FAAECA4EFE6 -4219E6587FB1FFD35DBEDE27B09CBD7803754272500B62C6B929C155126079EB -FF6620165D897892A8C12D09985777FF581DACF7D7E46F980F29447CBA2E4881 -6B9582A7DD581E228AD0DDCDFFDE8E721202F9073E0F05F8D2A0E23F2AFBDBB0 -C84E0BEAEBAF60BBBB9C2E12903F3E57083EB14AE824EDA7785AB79A78320671 -522F92D6589CB713751D384A90432C25FF71D2E05F068685B80D10535F05FC70 -A6AE2EE06FE647408B724FC71876DEC07E0929F85476922AD81A9658EBFC6014 -E9423DC780E685EC5A36FA306036BE34637E88703C8C35F8024A8679AB0D6827 -D7AC1EDAB6B124A2C12C89CD4D4265D6E21808CEB41F0B5D6F9B1DB65DF0DE07 -B7533355D309E42705B0721506F533BE3ACD605B090027C2C0BA115EEB39CF1E -2BDBAA2D8249C52F7BF2653D1EB7CD0FF8BA3FF8268AAFA9E7D61AFC30AADEDD -798672C328D56AB90DE568C53DDE7C1B1928162F36D83A89042C614733488E9E -95C9DC4CB00A7AABBD2BA70510018DF7D082374B2DC2CA2C2F462088202FD2D8 -10A5C3E91A78EC6094A4DEBF08BECBB6F740541A1F846B4F6B9E64F79AA24D77 -4A7333E30D53599237FCAD75ACE82234F758606E2ACF27EA05A24AA49E5FABB4 -8891BB64E71DED340DFE49A66E7E3742B7117D2B40A4D5D3990B08B8D6A48E1C -A629320145CFA10EE14D282FFC7CBA82C425207B6E7F0E4CA61703A43F9CFCF9 -C1BDA4E407844A76661075F32DC40846BC35A6164BDA3FCB0BF29FEE7E31C019 -F9C553383433CCBB3EE80FCA8D82A6EE54BBD56B93A1C80EA12A9ABCF0163314 -4207DC727380A10C07869F43AC9EC987FFD62D2A923350E5E2F7FDD8719E0627 -C5964CF8B3084C4099AC2D0D3666559FF978F73C169881423116C71AF3BF251E -FF00E44BCE6C9537B848085DF9EECDB854036678EBA79E3720755FB70503305E -6F216CC61A29D8E7293AB15E6CB4C83868C550EA69B10389FDD4E633458D1AE8 -4C68D3952A49D46E05E735CB4136C6B5BDCBC5633399B66FBF115185BBB76F29 -F3E7C61208D5AC34F2376E8A6B0C2F0834DA388F07E8140092760D3DC2A9373F -7FED1883382CAAA76D856E5882B3E3C23E3712BCF5FB3B8179C10733FD0BDAA9 -1FE790C0C798111849466B6F0EA6677B8BD68D23C73829CB26159B67525278E2 -7D02FBC9F34133710EE2AAD09014DCA22CF3E17D651C6F855950E5560F9D89AC -0CD4D61E259DF7A7625266AB830F10ABBAB3EF15DD88DACD61B4B93156FC953F -5023A014DCD601191B38639C9BF0F6D7F5A1A6070E9E1769E6EC03AFDCC091CF -F324C9B408A195897E910DF299DA0E86EFE8732FB798369D930E4CC2B438D6E1 -25D172CAAF27F3E9C6E1BFED8E861A65AC87DD3A2DBE6800A92E318F090A52EF -D3D533FB23D54A36F624C7DAC4F7E0DADC56D4EC2B74A7E77E69E1F4EDEBC5C8 -E7845480F98BD4F4D9D786B16919617552DA7C1990815937753C43019BEEBC5C -34FCD22DF17569A7690DAED31C6F00BF6408703CED6C9EDDD37EA5DAAC1E2ABA -4502371A74A73733BF5484FA48E7A512FFC3C3787B07BEF26B23BF08ECAF6940 -55D9EBB565FD0DC0434C1912335461AC84D7B2B7074E4BB855B3CF689CC04B24 -D433B65EFD4C6461699B20661376C1589046149F6C7ACA3AA4311F7719AD6824 -AEFBA0AA22C590423D3AA3439C35E7FC35C7CDEC3386011CD0B7EBCEF27FBF6A -D3F75C7E5F8935059398C508EFF66FDDDD5CDD629461C791A5BC287708F9133D -6242A56C7E2BA7FFAA9C2B89103549FC5B142D8D104FB1CCE8E1D18AE357A2A6 -276C9A3702E1F6146B98BA838F57D482BE31AD50C5B476F8DA10E1ED70B30525 -CADFF064275EE9573EA78BBDDFEC1FCCCC4B5504B4F42356C50B4ACCCB3075CF -F1C1326032AD527D3EBB874A9C81B6C969F05EED6BBC034DFA31C7A360218949 -82148F4A996CD146816FAD27E7D57CFD32B503312C0F0E8E0AF68CCBF2070536 -7C5118B72E738A5E3874CFB154FF8782EC7E635F36ABE21685E1ED8D51FDA167 -904D6CB8364FCA44EC1B95C7F36E23C521C76C0E07C8CE39D5E906DBD9966D94 -8E91D79043D1CEA90D8AFC61340CBFDFDAB58BE6C8ADD4C9B1C812551CB2D3B4 -352257473FA98552B1D223D4D891E2AC21FDDE6E0A572E4154488371B645CA70 -1F57AB86EBEECADB5C0F0A331DF6CD43C82F7616D0F62A0AC79F484C4FB54D8A -E50AD0DFDC8D0420E244D0D3A1A97B9DF9CE53C7D11677F87E8FE5C60778DB71 -00DEBB800BEB924A72B8B208A2C72B1E160D6521138DAD9D9E7654B4BFE8C8B5 -8474B37C43B830942609B0C315F48BEE2F77F4BAA45E02F2887CEEFA50295CC5 -CDB41EB23379A059080C3AE79BEBA91FEB26568676BFF103A24979B8CEF097B6 -7DE0585AF7A2448835A6DD8FCAE43458411B20400B3A0ACD29FE060C1941BF3F -C071C0D62D45A17E78E13CE6050EE81FB920DA34931E8B538A3A519DD237C187 -5E5B8C648D44E01BCF62E8C6E160CB19F37AA2F593E76B532951F6F43C4E93E0 -20E69F7474637B9E73C54E17501413B9FA413C7F6EF6E69E32E1632DE31F43DF -ADE69C32F984DDBA96D2CCE6BD25A67F76B4E90C19D28DDAE7B537F353ADF122 -AC4473632D2844E09A6AD4B3C13946C05B3136647E2D1D07A634B930670077A7 -918384AAD3874D5111C223062FA09306E64E36F9780CDE7DF50E674F96AFBD87 -E8E1441A1B6B024B923E2D7A6FE4114C2B41324AE261F79DDB3263537D5FAC15 -A7DE46EE4210CE53EBC8BDC84004343C4BD0B20ACD4925444D65B9BFEFB31507 -1C57ACC8A8A76291E83408A883A4092698D2A573C2F9F0846A3005F233EB692D -9EEE9F0A69254FAB4F5FC92DA53B879F9C5A7986997092841BEA5A400440FD54 -1C21B1BE5C78003C986257ECBEF27A2662F96CEBC77D07413632D499A70F4594 -E3E82B64C78482122530C5FC67719A375A112141D9D5BDFAEDAF682A48236C48 -43ABAD278163B9736545FE159276295FADF5943BACF2E67B697ED818358872AF -48FDB1A22E04CA49A83DE881198FE8D1F984CD788998D7C71E04EEE0A2FF34DE -88C7AAC573D97C4261CC79F65184BEF4457BEC8D233F5CCC5631C2C1847567AB -850130B1147BA7093CDBF296A02D75BA72B661BC71F0A5ADA77C57FE081D3D2D -7A45B696DF3F7A31FC7883CC7B221AB091CA1BD605BC1528F0CEDED044A6758E -E3D0586CC1E09053A85AE3803C81B47D109BF30207D32727C5D34AC984CC8814 -6A5E6351035F1781FE5476EC795D22173DDDAB7B7DCD82DE9295027681E2A153 -349A3DEC87A68131E6346FA147470497EF54D30E6C621EFB8418C052E341B959 -E99D3FF0B64EE1C3579E20E13A3D24EE9599E57B4CDC35FDA3568DBA781AB0B1 -9711FE05AECED137B2E0C7A6C1C4BB03D052E3A65DC6FAEAF7D8490827F6FA8D -81C19482114D0751632DCE8B977B13241A90372BC4040B26A86A027A892FE20C -8FC5ECC4676A2A9C72F6AD1E756419B5F8AC0AFF098DF61F927D2EB7E0427189 -D3F1A49703AD2EF07BE07D40FD14CFD2911ABF43E9634DA9E3B3211E5233F541 -B602360EFF93193D1B6912DBCB9DCD0AC48B517CEE07FEE9543871567B8AE739 -D4E03C6B35BA34B73DFC2F5865364A751C87A0B1F492B3A204FA63BBA3242B97 -DEE1266496E172849450E5D65CEB0217C95082D4860DFF5F426F96A09BD37A4A -3FA59ECDC702DF758565640FD2B9C84F56BA90008B1DF32091F4E64EFBAF06F7 -6C5435FD481ACE2A4DA8D564AFCBF0DB67D483FD86176B06CA24A2DC8F98DF28 -FE404F9037DA2D1D7C7FDC2E11A8918E3E398DC732D350DA23B9D9B96D25791B -AD6DE954FEE1E2736732D101F817562F900B122EB1733D6F2E1D2C096561EB17 -9C74207B309B781EBEC145900B970B095881DE87042F6FE9C5545531FD5C3C92 -7236B4C8D9A03EA371564A7926B66145B88BE00209B63C29128722F1C7C978D1 -F27D6E47DACB903B4A5C3C6D941C240ED5AC9985D3D60CA480C4EAC796265550 -71E222EC54F520A9416EFFAC4B89289DDF06F761C053A5E1BBBAB71906220B9A -E8FF39E80A3CD2517AC2B37DD45DEECFED2C78B765CA8718BD4CA6E981C44B50 -4D7F161F85390C8BCFDF81A4573CF26B1CB74406265A0BDEBE70DA90C9C3DEEE -76A8CE03857BDD74CECB44AD411F19534E036AE89E8AC101D66DBBBC61E09BF8 -89110637C2B44A5A2FDC4EC73B730292E2474D3166EC822909978CAD79F7A227 -35DFB7F62449BBDA8F11810D9D5F53EC725B5E5D21723E4B27982261A6ABF9AC -F9E75CA9FCACA6033F650BCCF3066B4806CBE7C2C20100E6D6220021158922CE -653E9183470590366789EFA8B75F84D647BC2F221FDCF6E163BC3CCB7CF331D4 -B9E212A78D66302D8706124CFEB7A500C8CBBAD188E7B1F4BC02B19903178FD3 -BECD7DF7C221AF25F4C4F5A176963F8BFE149E78B9E1C709B4A8BCC9ED531F8D -7BC7FF48DE7CDAFFEA04815D73D653C8B7FDD89A05438BBE368855857F368A59 -3E1105883563E102D83056A889C32AA144B75DFDDC67AC074F8B1548C6B9B18C -28E9E876E02CE9A1B023DEE140E1D51EBA4F8E04C476B91C71A8678049D44ACE -2E2AA0CD701FD8DBF651B5DA974CFD4A0ACB101B5F135DD5465F2E9C5026261B -33B6991603D0BDD648A3125AEE5995540668191A90106DDE333F431B32EFC8B1 -64E0FE172C294B0DE3A45E2DF9DC728539173C7616A80DF7B6ADA6683D8310EC -17966C7E5B14E124354803E9E806E235FC11F53B4909D3AA7381A1776A953554 -67C2135F66E434C4D8D071E052E4AD99F55C6ADAA969CFFB51D669C82AB11530 -34FB01B63E5995E8E388F6E28F59FDEC05F8F57D4FDB618479FCBC07A3B6E1E3 -A1285C628703E6B90398D9164FA9F5C9EE55FBCCA400601D7E90B07906B44E51 -A6A305453EB68AB0A26840AC55E9522174C33C0220EEC2E539E32160FD73AFB5 -E64E570BCB24D2258A072BBC930361BE4CCF05370A40C5E0326BA6CA961BC2EE -5975B5882B33864ED88DFF97C3770DFAAC3F8353B5FC48DD987B88724F8D8484 -D472BDFF014A3CAF0D98409D6C6A15305B330E65D48571138C50A1E50C321865 -B602D00726AFD64AB431D30452AD7A422D00B13536AFF6EB6D3ED9BC95D24A41 -D7EFD4C4F8D02EF7386570E3CB9A9F7DB04D2435E54D171A1AD9948FB501B163 -4DE9EED0BF598A130510F506082840D926B513EDEFC69391F3B00C8321E32A1D -40F1CE353C5217287BFA318569B31CAFA875282911B2F9D5A02DB888684754FA -CE11D3F1648A4B855209937FAB320AC37D252A8CE16828F878F3B89423B0561F -0350C00D33E38789F6348B23E995C67F525CC43EBA4BE56BA333F371F49AB675 -125DF34B3E745DD7BE4A0829724CCD082A8C9524D4D4BE3DC767242D40F9F3F8 -C1422CFEE86F56FB6B784EA70F2692938EC940506F70FDB43287404BDFB41BAA -2FF1BC69F841A0CF021BD0249DDDF515D60DC54C2021518C8DEA23ED03BBEBD1 -0BBF1B06A3E0ED3792573DE2FEA020904CBEE24B5EE5F8D1078AD448BC95DC28 -F0CECE12E0708BCA23378C23C362BC30699CDBDAB6A414E64440999B86DFDD10 -33AA136F400A8A714F845E894ED96E2AEF472850D41C1DF8F9A8867546DE325A -643714999713B300F500E865CF9BC9039658EF192B083625EA6A52DC7CF3E653 -20ABDD631DA3A555081F3A8BADBF9CC0461946EEBE2CFCD1DBC7C495A2AFFBF0 -E07C2A6FD6BC4A12E6FF83079F70AE5CCD282AC7BAD1FB7C1C38E9D785D822EE -524C5D6D09C33EE73E6B182E27F5348A7D81125796B6631F0793882BA8E1C769 -5ACD5282A91AF86D26A8D83E014EC3019583A63B855F8EB3E9EDE4CEB4B8B47E -7E7C0C519F68C43F8445714A3D369A7A840622D077AD56C116409BC9F931341F -7D6CECE7D03C2E0A2A8B24E1C2313BEEA9FC0A617AB40A00F13FF448E62EADB0 -144469B09E81A1A099FA53A567F89ED65ECAAA31BC67464D5FA6F0485B8BE7A0 -89E0A8E7310FE76FE641CD3EAACEA42CA1789524A118F84CA613F769DB636B11 -D652BF3E7681E6261EBFC23799916D436FF963DB2C7D2786DE255E9B24161B3F -1D3E1F160B0D75F305E966F5616B8B20959EE41BB2045F35DEF8A4F2885E99A2 -6FE4555B3744BF7730DB560D1EE86B93963DF2646A2B330FB6E05E93122C5365 -0DB03F5E1813521B22645BFE265D4C610AC4A043A55B9EAB85C957674F671941 -643F2919B448069F4B3C17A7D71C714C65B9BEC25B96A98C48D84EEA18E42340 -3C75D2B556888357FC06A77E3050001E1337FB066257C54E11CC24F1672C4D98 -CB9E1815DE01B92FC985143FDE69C5F19640B02679FAB6605CC02BAB35CC8EE6 -C5C3F56A730492033064E9089D45753B1F0B3C5D364BA0114FCC11A622A34DE5 -019CDFC925137AA0AC0E3F07A3E1DE1E26AA3C1F9E3F44D4404E08EA827AA2FC -98042CD4A55DEFE2FD20AC20325E227A1DC19CE7E96FA6B02CAA1FC33B3C8A25 -AA1B36268619326AC00ABD659FDFFA0DBD137ACCAF7AAC5A84F03912B9C05966 -976C4684817B8C06BED26B257F50F88E90CD7B15D3D5014665AD33442753E049 -2F2DB4E973FE4C36B055DDE497D2E11C8B2259766FBB571364797DFC401D251C -FDA59896E5CCA0881C80D90DD2329326BE7AEC57FDD5D895F62CE53FDFFDDBC4 -7F5EECE1D185716D4B23A1CE345EA1C15E2ACFBB02EDB20DB263568F2B52BB7C -D61504EAFDB270F640BEDCE40D08E7C1E012CDC4E562D3036EB70364542D5C88 -A5065F9EDC06EEC0A8336432AC4847DBE181EB206C9C399FB0CD305ECDC17FBB -A93F3584CF543B516AF35997651731F8A2E510186D2D145DB1448F288541809A -0F1CF3BD3584DC5A6940E86E42C86C6B99EAA528EBAA5A3F36F27775E3400B5D -12796A94B445C8734321BE11A3036CA7B993CC5613014543362860DEB925347B -B78979AC9C99269C9EADBDFE9BF8E61256E077BAC6EB7C1A3532134068E5F6D8 -0A4D0FC1D70C002CCF393E4789B221FB2079E8CF742AF0BFC348B173EF5F90F0 -994CB1135185BA29F83045BF0CF2B20CE9EDB9317015122E4EB9181B55E5ABB0 -AD94485A370AB661AF83111D1830B164BC185E819E4B7AA8D3D0A486F86F542F -89F96A9AB81BB6A83129D1666D7DEA9956451E4ECAC84E1FC3DD9475AF28266C -3471871253CC3D00D8D13B5A16E0E9DB801E5FFEF56C0E6F0D797967DC33CA7D -C74816219E6A8921198137C335A8BCA797B7D28643D303671765AA13AA72C51B -B87AABF61B9ACDD583929E10BB76D84A1BEC91AB14B0953FE17337E1060FF2CC -04318CFC81AB11D3745535D123312BA9406459EB196B2D3C76B07C7105B6295F -742462425934FCA9AB865073858A4445C3C04A6C1F8774DAAA1F621D1F4569E9 -8D98FACE5F0A1B21E59B6BF60472C8564DB8C9964775113D165C63CF45B135A5 -9AD6CDDB4F3D983C6AFD01503C0F079497161F37EEEE8204478D26C1F58276D5 -6CA4DE955896E5D157C6C8C442AEF807C2E82D265778E4DF46FC983130EDF3A2 -3DD0E875E58BCEBC90CCFEB6936299057ED1E7DD0EC52691EED77D2C28319D7F -916C9396EDE330EB208044C736CE913CC4FE877F47A74F1E7305D1B4D90AAC47 -3AE4F89116F278125C19DF2ED43180019021BC0B28B41B4FC3C9D3569DDD8357 -6E17489E4687CA7A6501E101ED9F99E2F2DA8C7D730B65EBAC0E4B0F7E8864D0 -B07E9AF907CDD84EA7C4A2F39CE3921A583E6774B4CA46E663D55BA7C54EF8A3 -90DF648C0563125C6F21917D7E4156E817B7182E4BAA3C493E7E39A801E3E450 -EF6ABA7DEB9530071A90B9430E414BFD66221D32CAD1FA9844CB9F14299ED106 -6E820C29C5F044C5A11D3CF2F68B490B8075DAC05FE3DB73965E6A78509669C6 -F00C779D29D9531FECE27E91717B26B9CDEDA3F347D7DB030C26FD3C38DD6C0E -59BEFC0E10CCACE091BEE6D87ED080893C6D294A3FC27254623A18F7F193A588 -595B51DFCFA0F760AF516CB41FC1E01B2F03DF013BEF76558698C606D04F98C6 -FD8213FA4BEED67C3008AFCEB9E3126AB7F35A36FA14046AF41B52F67642D06F -136F58E81497C94B9B694E0E5CAEA10F33520DC6E08CDFE2908A2977911F0CB2 -1A3F3CFA09A0615589B5C2B74A0A3B529A8FBE1D2D56C236D1358BD9445BA13D -B6B86FC3F1370037C7C023F08DACC421739EEA7D1401D1844A80D4BB42B47F1A -C7CDCAE094E9AAFA28408C468154CFF293533E56D69D617EE758B4CDFF542AB8 -8ADFDB3579CE71D78C25FE16F1195B68C0703CB9DC1AFC8B51447F8C434474C0 -697D767901E615AC725719D6764E96FB221F4B8FB024491A9FFA0C15A3370864 -0F804922718A9760BCCF1D94683E290E8EE29453E08E06738C03B98AB9725B88 -F81EEC88FBDAE8255CD1E83090EFFDF11CB5373D86B8F44C602423915A53E034 -10CCC640EDCB99C1DFFDAFB72106B10A60994EF10274551F6F41CD9F761D204B -366A62F8A79590FB11AC9D6810490F225B93F874CF3C2F654ED365100C85B2F8 -1B029828A415534BA71BA1EFC8CB10ED03B813BDF386708A2F8C898262B78D72 -0125B2F64804EE36A88F798115268F3CD102859793CE1B9D435F846E0F87B3A1 -3DFBDD965A6B71A12C14A1F5B2998CC70C7AC2C1CD707E5DC2C7B9A6CEC9CA13 -8519580BFA842426539DA84B2F9E991133D5CB67CD30D7839FD81B79CA977121 -5407808504528FDBCA84DAF3A9B42FB95EC8356CEEF35D5AD46C704DFAC133D2 -59DC0072C335150CFF5B3BAEE1B2301D85C41C9073B3AADE4986A4B0BE1966E7 -FFBB0F25DBD050A6B2EEE79FCC56C03814E3BAEAD6ABFA2E072CA04E2A026260 -A6E1E682599FC372113398ED45F94D0D911B556EEB492EB7F10DD688D6C9476E -906067253F1701F7DB57E8C544308F4D29CAC55A53B42A10334C12E524804577 -08ED3C4ADF611178262E09B756F6F181829A8A90481AF68FF86AF992CB12A839 -26072696C8EDB0F9A30099DDA952DFCC9BD5D7974DB2ACDB3A9D4C5B098018A2 -05D7E0C3BC6B655A5A42959A4FDEA497D6404F723261F9AED6ACA48953CE890C -3BDBF78740CFCF1018DD9C5C941DE0BDBF7D9DB091CE5F94D96441D1FCD18277 -6DD688C3DAEABEAB32CD97CF308FEAD0FBC2949C7128FFD87A53B85E9F2D2291 -10BBA3E09B6CAF436E08D3C04D10355F694B630C12B63646A7FDB35CA3AD12A9 -19F3D781B11361F8B7EAD2968440329A1CBA1935BAB78C9A7456F2F73CA47F9D -854DFC0BC3154600CC8841993E471972B32A70AAB7F5DABD9237ABECFBF90BDA -93D8FC00A6099467E94C184A1056D0EC155FACA6EE580DF07D35A1B080345196 -958F4CDF8EB843633C45CE9A2EF59EF81B268B819BAC2E3F28128BB2FCE13841 -513EEA45DE1C4E27AC3CC3AD8A977913A29767AA8213CB8A7D2A84C2E205BD8D -299A236AD91F287997959D9752FF98F0EFECA5210B2307DD960E0BB74F489D01 -D27D7E250507A8B416841424A1E9C299C3D70158150921BF107833EB2E01251C -0E49E75D796205DE72DE8E8A35971FBAE558F26C37A287D02621E3C8F9D2B359 -DE02EF46BDF75C35D17BFC846E87344899EBA9DA0089505AF1B5BD9F1B279F63 -6DB1C55DAD8D33C7D2756058A4FE89646CD3EFD57A20FEED464A4EC63DA38444 -52222E554CFEEFBA98541B2D0734DBB56C3BDD628AE702E469ED244748717FFF -4408A556AF006704937435218BC47F608B0189A681B9159A779B0FAF12C3AD0D -198AEDE51F5AF9DC3B3795017A0C5A7051C4CBB08ED900F78A1532DF0F978127 -03F70594D57EF6406B96C616BE6B3B5AEC8FA52AA28C4507A6ACE78AB3E1E10B -975C23C49D78BB7C3E9683E9DB69AEE6951A3709B0D34E0810EB90DC3737DC02 -382A8BB9AD36ED8B0DED5072899A63BA64803CD41011F2021F12C3D309C3CA82 -08B3749AAAA376BE4420BC50388C6CD904D08B9709D302EFC0036C55AFDB6FA7 -D80652F6D5F45FB2C378C0D0255EDBC68EB76D16AA37D7D00BFC56FDC77F44D8 -D2F5FF6084C4A8EF08FC26CB671D580DAEE14C61BB5FEE36CB885A40E3491143 -F9FC89F0294D1C0CE0F40AC5A44CC3A7B2E3AE60120F11BD1FA96731DE42A81B -E2411E8FAA1C0BBDF49608551A828AA92C2A11F29460DCA4B2B8057862D98E5B -D6C7DC1C3F1117BA85D4EC50D87ED4AB2732157454D7D32D7AA496C1DB0B4D54 -B4E42BBC809BCC322A7B45E4ECF0F1E1DE8D7F91666EF9CFE776702BC18E7402 -2EFF795806458C8F7D1E9FB2E11FD9BC800EDDDEA599483ED8DD71DD9FA7113F -9E060EED494626677E9DF73741B80E004A670C82F130A6570D294B7C120B0DCD -49635512AEBF97DD8630E97FFEFA79CE3EB1F021080AA6257FB92877297BD6AC -13573BE42828F895CBB38C4D337CD46FADD0C24155123C490C538BAC12BB2F28 -8CA1CC7F74696BC9D02F42159B44F543D2022B554412BD6994A2D615FDE9C9B1 -8C706BFDDFDB7F18672D4513E17FB47789262C11173E27080453439BB78706B7 -2660C616EF7A150D74340F6E56EF3FE4351B689CDFF87F9A2F1AF03938BA7DE9 -A82E7260EC7BC5A8A41A81B28E0443B7A8F299AEF9457ED85039BB41265DA81B -4BFCDE85EDD281261BD35D33758AA992ED46B89C72B9CD58D8A59338399755CE -F3F575883D8F6D1DF6EF075022B2CA21FDC8253FFA70F8CA1D22B18BEC8821E6 -FAB570C64954AD900DD64D11D7B1F1CE3D222B93CE1CC330015E2376DA018B55 -BD4EDFC4803AE69103156ECCAC55E1E9299F5E80ADF52FCB90206EFFF354B24D -49CBBD74301A00F4AA14C1366089396FCF42E9911CD6D4C05F68CB5079173D8F -FCABFBDC68E6EA44C68096B212F975FAE0C17262FEE4BBFCCAF012ED28E50411 -A0FA3BC0C23FA64B59907ACB06171D58CA58D3D6D2964AED3AA0283E951D7062 -4E60A5A1C873DA08F5FD9E77C663B8E7542D711B16A8EB6DDDB87806335DB1AA -C112D9CB42E2887ECC90585BB040BB32DBA71C0087D66CE48F1644FCCAB8DA18 -D9908852A98A12E561442306E54BD75EE5E27B06DE03E077929FC98C097508B0 -DCC3D58AAA7E184D5A190004C5D04EE16300C2D1288ABB528B42E6882CC7F090 -1089907BADC9B442ABC1EBE9FAC63BD3DAEC48981BECCB3C2C7B7EDBF1F4EEBE -A0AD6E0BFB00F131F5F3D9AD1E9784A1494A9C7504C67A231822B8E964C4D21E -A93130B66F6B207C5251AC2783F0B74836713B61AD80B703293DCC1D2BA54078 -88247075AE55CDE1DC93F38F79301749A55D03AD78C9147BD626583C3C6FF52A -46AE713DD55136861B57D223D9417B10C974B237502643FEF8824E5FF8A40542 -F4BA8AECB7D59AC507487F13173663C9C8BFC32F3FE78FD575ED16F86DB4BFD9 -1D8CA231C9E983E63D84887C6F7C01553619B5B24DDE17C8C2A0BA51EF059B8E -28650A40C56AEF796A9D177AB89EA0E003F507333F649C552355ABC74A6D0DE4 -4324AA45A4723A5A49580412C6F85B8246E2FD3BF6FA4E4836559368D2DF9849 -79EFE69E2FB6BB115DE0E3C4E77B1C0E77A1F818CEE8CAE69EAC5FFF2C7E4D92 -CCD0A83B88C194016EFC5CD881FF51CC6E439A570F2E499EB2ABC6E7694713FD -40C420187172EEFE9951947DBE400BF2745335E4CDD0ABE7E5CC98C943108458 -B304EEF95E377F43DD6F43C864E2F4120CAE403A5E283B43716F057E75CEF1ED -E2977D33896834B3F542E532B9D674BEF466CAD5194DAEDE0326A083A3A5A288 -CF80D46B28C46D044AEF7F8B5C6712AE623415550DA890B55C6845C4E96742A5 -09B1B45486330371D533F1FFE5FD46ADEA1A65CF218389F94F4EED65FF4D7266 -BEA38D96EFA4926005980FD35FEEDAF94209300699B1AEA69805340C6A306F24 -8E27CCDA932EC31A38B35BEC7FF0C0A4AC97DB2481CC0DAE9932556758DF0B0E -7D8D10614FCF6FFA95D2C2319E8DC0DEBAD22AE69F4F47DE51A889FB40337885 -A5DB3C477BE1B2810D053A5532FA9AEE24E107F2FEB4AAF0ED8D0283BDBE523B -8F8CC22901CD09CDF776707E8D48F1A5E137D6D7D2F5D81C8FA328E3DAB08BF0 -E03180BBFC3BC670851D9E3CDAB76E63C6970EA3CF4DCBD1F11C3653DFA1CCD2 -08F4B95143996843C421C29C2C17464A90F94F94A558E4636D2FB93A3B34150E -6853C8D7564D4D75586F7B62817F5638247EE1B9651EBD715EDAADF8C034F8A2 -0418C5A5E3AF1FD4B7F95B7CB9B11560423C8834AA5C0D60208D85CD9AD69C49 -61CA410DE4DDE55D69643DD6FD03E0E9FDB7CDDDB005E24D283A165C03DD3B8E -C9EAED3F20F6B0A7E8E6488336C711750022F764B76D990B4BB740238A387E24 -E3A84B1B3F384D490703C55BB0990E7D7E8E9B17FDBDFB0D6FA3AE2CB7974FCD -638F7B07ADDF4499D93FD3F4D07C4018BD29491F3531B17716A02558843D0BD9 -D6EF85E8DAB66BA32E1C47BDBCD1EE457804E4DC0F66BDCFB7F0E6D019869479 -4A08E9FD84B0FA3640F2849F3716F1E0381D66AECD84AB3D1E396A8CD712253C -C454A5D022DE14126697D9F045F0D025FA1BA4319464FEB54012302EB2BEFF58 -DE6EAC7964214BB4607D5896C19D2677D730941D9A9508A1086CE46EACEACAED -A1E39538DEC2722862493A30A44435E71739E8E1583CD358C6E98DE434FF1453 -1A211E6EDA6A051656408E911F414BA447A45DD3945DA2F10E27F56650CC0BF0 -6C1D330D51C74D54A91BC6FF9BEF9FE7F2D07002A2BE6B38612FF17FDD3154A5 -1B6EC51D095E3766BA6F900C218121C04C0F15EEE30FE3221E334EAFA47B09C9 -094C820B70FBFFECC0445ED34896BF6F378EA6E6453643B57B7599071D5D90E0 -143659089374D0408B3E17D403535207397605BCEF8145525F5E027714147E76 -DB48AB06BCD838036AADB8B4941ACD6315DA3C02F24438E69C7EDB74303E7C4E -AE146A002AE579C8D10DBEABEF8A8EFCC8202F8185C0CDAC2F50DB37A9E87ED5 -53D22B9548E0AB904D16FC5F8BFC767D8D9BBB1A317A12D349BF93F6497CC0D2 -69F0265446B7770C496100CAC4C302AC4DAEC8ABFEF88A087A55CCC26936A15A -BBC6A728ACFDDE852C3B9E3B0986F4A591F8D318E76885CBDCCF285D507884A7 -5680BE5FDA98A473E798A3F588BBDF3CBA73F5C4404FFE1797B54E7A01C1C26A -CF38BD639DD3FF9BA58B892341B0237194ABA92FE33781F9A9A54D2AB86B7451 -84F126F1545409B23A820CB6DD46C96D207ECF30CA22EF0999B8C7B0D05A149B -FEEDF48DD8FB1E4FFB71B87D77FC595A5571AC40901B1685E49F151DD9BAC5B5 -341CC284B4C803A52B5F26A5BE4CDED1EFBD3CB4D2318F59E163FF380B8EF305 -C60BB73D36D1DA74FF7BE01D18F27572E38DF8CCC542BC25662533A72BBB2A3C -D47F7B8FA64CE5DB1E8CB467358C048DEEEF01450B6AB2199D6941ACA8231A4C -12DAC7441D22FD17E0595B7170706FB5F52BA8A35E3B667A0971C8B8487FE642 -95B74D3E8B56D70EFDE1083D7B04F7532F77F9373BAC63771B161EB5C7318A83 -E8F3B45B102023870A94B0C51060BCEBD6D02158780F379A0CD693DEDE4220C5 -57DFFFD91E47BD9E9211659019FB3D7B5E10409CDE481B969A18A78FA35098D1 -061B6CB5FECFEFFFC2DFF525C7DBFC01BA94C70E8976407D21F1E0E863411EDF -E54C3742A86D1CCE4F4843267C86719F15408E7E928A927088B159432BCB3364 -01D63480CF4D2F72AC4F7FC250F9D911FD3D7DF74CDA10083EF86C70EBCD7754 -C5240B8BB57E6198C57A7207EEFA156F9E0ED543FD310D -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMBX12 -%!PS-AdobeFont-1.1: CMBX12 1.0 -%%CreationDate: 1991 Aug 20 16:34:54 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBX12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMBX12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 40 /parenleft put -dup 41 /parenright put -dup 45 /hyphen put -dup 46 /period put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 57 /nine put -dup 63 /question put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -/FontBBox{-53 -251 1139 750}readonly def -/UniqueID 5000769 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712 -B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99 -AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26 -7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF -20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390 -B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D -68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809 -D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E -26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D -F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26 -77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299 -BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E -C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8 -30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5 -148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C -E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D -E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23 -337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598 -0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6 -472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E -A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26 -331BDED95DB0237E9B61C5470AD852E6E29B5F064A79F48EA78F195038F76D90 -67664F6C545BA4EAC2DFA0464518A9776AC2212220A0C2603D59C767911B7F37 -052AE2578560881AA4B5187BE0F81264FB3B5E054CD93708475E0A4C4CE51F7B -727003FCA11444D71D23CB0F4AF7FF5EF0BD7B162EA1C5AAE64C88F0503312C9 -974D0FE461582E645DD53D047F16D21A5E69108BA2ADE87A1E3134D3D4AE30BF -F550422FB4E024847BE5B93EDB6C37137AB8BAFAA371A70EAE3F195DFE449530 -287B90654E6DB26DE212BEB06B1E5A10D972EC954CF8A53F16C9808755E19D07 -E8D8D6FF4CE8D1A5C0BA787699D46916182BCE502CDC4815B00AF4ECA2F88A10 -C597EC0138177F1A5CA166BDF95E6B510AB0500EFEC8D244D32F603009DD06B9 -2A56AEACE5A332035073186AAC85406972C6961F6925EB3F64772301ECC98CD2 -5DAAF6A680B172C4BACEC29CDF5625FB95FEEA7DAB75703D62E4AA202684353F -304B94B87144E6AA41117C5BCE913861D88079C1375D3CCEC541F5CB1339EFC6 -77BD23EA5E0C23EAF374DFC16F83A6C9AEE3D8236A24EAA9C22F62DC4BE0D785 -F957E39100BAD2013E8C990CB55A92F34588F5E473957F75FBA2EBD1521D6AD7 -392833C979DC874E9582AEDA61C7269CD51402E3FAC73B691845DDEE0919677B -9DD0D81782C35E5E68D67237C0C20C344DC95C8FD603C126D1BFD346BCDA6B35 -E46ACF56F8EC252A4460A0CB273F61F8F34E5969356E3894331528939F10E33B -DED07BD5C348844DE01D41C40AADDAE5CBF9449D098A3B20AD2769CE9258FAE9 -83269D39AE444665F868C7CCE8C66E18BCB9744F5E73140FAB91B0C8601D89A4 -60B1E4E23F34C901D26DF7E4B7E85C42A843CAB3BB8BCE9B13D2BBB6F51AB579 -982A5F039E0929CA6CFEF3A4D0EF03953E58669B578604016A9E6C270E9632EE -951F437607287EA4C9B556468BE16FF03C702A1A7CA6645E20677C951A798268 -92017688D274A69494C4AC56B7815EB2E4CAEAB0BAAEB593CE74271CC2785568 -9553B431D67A3242AB7E8947297BEEA6C316A839D76A8A97DD43A1E75DFFF7CD -DF6D161EB7B0CFFED674C28CC9FEB32735AC91B80C7B562452772094450B007B -81A0F7D4420C4B26608BFCC4831C01CB0ACD390BDF76B65F3835165AD9F167BF -E72FD9686BF737D114C0EF3B7E45AD8B9F1DB43D56078900A8587F8642ECFBE8 -FFF0B01A6782655A637FDF3A593A600FF05B555100540E7A96EB4BD107AF6646 -7C197E7858501E19537D0BE53978015168173F0634FC40C13A6A4A651F92E420 -5C2DFD0DF5552491964F43D7FD82E418BB152E4B81F73729CC7AC2A995A60EFF -1A59408FEF420EBA8BD16EF4E11CC001C25314103851E74913DB1BCFFF014930 -C0AD9BD8AEC899EE7BAEC3E1ECB35DCF9F7FEB8C6BB08F9FDC7F4C7E4F6AA9EA -872BD810CF42F796290088789E72356FA7128BC025D9EAEF459AF44BD891CB65 -E5434C3CB83D0B66FE1FB083191810A0C38AB2BA20C5DBB8F105D4DD02EC29BA -7CAD30CBD3BEBD4019057E5486049290603A970CCA3B3D990989B8D9D44148F5 -D3A4A9EA0240D3C6E779D9269F4612EBCA740EEF78623B8D0661E7EF4BEE4BF1 -328C1648A5DD765C15485078650F791566B2D6A57D43A4B4D05A1AA178283243 -B8FE6589A1D95332FE347C41965946C4150994C556A90935E73F4E606A9CAD7B -4334620770810E673CBF50630A01B3A0773562CCE0448A88AD43C24D418EE784 -0772328AD4E95EBD1EB671C3CC638CCA319CEEFC22D42DAC322B9FE21A38FBB7 -17E0E6FEA2EC99762953BC2DD357DC248E2CE686762490A00D3ABE3CAF61B043 -021DD6AD8B3DFB0868D9EE8CF4F583828BC9AB086533234DFCEE933962342398 -717B348F8277E85F888234C56B5202043B76E8D3641C73BA83BCEC0D655D20AE -A73CF8EAB6D5E4BD920480AD7A184202E30300F54A37CDE6AEF566BC72E108F3 -6993BCA117AD5D53A1DB1FAD122C528ECE5A759937E939845ADF63356BFD5A72 -7F424991D1BB7214BBEEE3BDF89EF5F856E09A2FEBF5E7F74704F96B714A859D -2FA2A1E11304CF6F008DF8DF7B1E2FF52CF8DD395F011E4C2F4F3D34C0662A55 -CEEAA974EE5CBFEEED1E96C36D7A3400D46115CC2A018887F7D45DAA3458D5A5 -AF3C2419E8990E8E59840B1B25E240B2F51C64C37FB56FE559A431C21B1D3DC5 -45DD88DBB2AF46A2BE67073C04773B4A712C24E10F3D8FA894729DE99F534DCB -51799F39B03F8B548C678AA9757BB5C3526AA66F8196F2BB0DD5D2C5D556DB71 -95008432E665E9F63C8FB24CCA6C491CE5747375513F084037E959E97AEF8555 -CBCD722F0E2C734F477C7C3942BEE02E7ED19E022E11DF6DBC2D37BC25A62F66 -B76F8E5F5E5FE25CDCDF3E89D82EA8D33EC06B88792C89894EED3FDA65B462E0 -92329D3621B309CBAA7E15B28AB0D471AF35BB35D6EB41887BB57B385D38FE0C -139369676471659DDD370687B2A7BEED7DB09F33EEB6E43DC502AE92E4B9CF46 -AAF13079DA6F87D8F3C349E25697326626B4575C005ABD963716FEE5988CBE63 -05654AE7E66906BFC3EF5B808DC366495C4A6795AF5109C31A12CA3C66857635 -1291AE82C4EBA51A5C85E1C5B5494842DB04834D372BCA6BD38ADAB56500FF47 -01AC4ABE2CB4E32845BF15D3BA207BE554CBE98342B9CF05DB5714CD704A422B -984D355326AAFF5F5FE10A8AF6D1E0E5203EC7F73F6DCFCA7FDCA8A13C574FE7 -3F25E6BBA7B4CE97E973887308ABA6846A25CF3A1F4389B24FD71D416C625378 -809C2C71D0380C8E8D670BF7A92ADCE9A91A961559C3AF9E0656CA61F9BF86E7 -084C517AD0192E40D3C39EE0B00E8EE7CF64CB95E53508B5DB9C03466E2ECF68 -B72EA1E08E0D07AD3054303E308463152BD40EF98BEF5A2FB4004778BFDB7855 -9B4775F04BF1B1E307175B53D3920CC2A7219C93B42AFB7B729C5C14098BAF76 -4FAAC7E3B5108C423B409E5F044B9F5F1207ED1652C3063ACE6F5CB7E55E678A -52D879068C0A29CBDD1B5AF95BFEB0D3A712A5B63C6752B75D1825C9194EB9C2 -C7A5F9870C67C50B1D7E90C1137120DE0945A0CC1E2F5CFF7633CD00A249AA27 -C06415C46AB0E0A04DB9C862534E655E75B26B4C9F1F25619605533432CF9881 -7B42DA8C5C8F24C9BFE208076A23CD6BAC6306CF9D3265890FF21D47A6B008C2 -178DB1A83E039FB1CBE0FB5DE04EE855F9899F5E2C075CBF0784E720E6D5B219 -181DB45BBFD3E7C247B81C7FBE40C9520E8A900CF68EC398BCA89612C4D1D15E -492DE64404203AF9EFD21FD964B18F7E13F868825A57106537E80B4CED35C667 -5EF0BBE709FE17E6A63554E8165541A93A6220D4EDBF2C7A1FA6E0201C51709E -1F2DB482C06940316018829E3A779293F1CD61B260CA47FF4548B3D6F70EF8C1 -D6980147EA7831C6BF561235F6D4845026D4B40ED4653468DA959712CC14EBA5 -987BBDBAD3F6DBFA928980EEE40CB4F8BED5A837BB2B30CBAC935198127481D1 -5FEF581900A919BBDAA46CCAD5B1CA11F10B1088ED42418EC6879BA7A219488F -67096476FD20EF1670BE76C9FACC1926735B04BA1862E00E06A8B068E3E43461 -FC8F8093A625608DF49B5313E97B42E29277C949D962465C4806198F11722CA6 -EB30C73C3F4E4776FD0DD664E32FE24D887BF72ABAD43A244E8B184E602088DA -D0A0254C31E10B907207C309717CD89B077443FEE07CA4622001F540E65FAA1C -ABC5F052BD228003B9A88E931904EB1718ABCF42AD3D2B4F0A80098F01F7F21C -48216A9C82A24F21FBADB9F3FB1ED50731E6F66B0EC51BE635691DBF59257DAA -899EB222E707B35B45E44A6CD7523B8A605D939CA8FBA86233526DF43DF9E8AB -1532D4F355D6470AC421F86F06C91D0921536E6507FF66581A6DFE85353E31F8 -0605DD2512E79AA96D195D39729C50F60B60CAC0A242CA866388BF3A8BE5B5CA -2CA74B5DCA9CD5240EFF4343DBFCB4690F2CA18312D82648ED9E7F1ED78BABAF -6753826BAA094657949EBDDE8C73746B8CF478983605D848858E5F513733398E -B9B2AB40F22B54DDF178F43F858D1B14937900A970CFA03222F6B01C20FD978F -8ADE670484AEEC29ADE4867495C63CF53687F5F5D0A0E4251ED655353D241104 -65FB70AA42F35B288377C396793D06F5B95E6F63C7109C2D2A699A23B1BB4E8F -1EA4196814AA0FA6240AA87ED941FBED684DCF54D783F96FE308F392F1AED0BA -38E0C3920E984CBA37A4AE2719C2BE1A7616A4794D7CCC579AF99D09C061BD08 -B87B48EA7EC61316893904744B2FE7D634D6750FB624027D9DA2A4C5E12888B9 -328E59C167228E20CB80DC802C647A4EA145FA3EA16E674F0C9FE3BC6ECCE5C3 -28463CB48F397262C111725DC39D21DA1C22ECA85C42042440272A6C1BCBCCEF -5E15AD63869F1650638048310F2D3DD7E7FDCB61A1BA0C2C29654FDB10C14FB2 -74768FC432151166DDA8B9E08A9EED4FA84F0EC5B8BCF903CE89B2A0E461FE1E -FF37AAEB8E4C275D74F05991128BCAD1E0AAFB09F27E1A718EB67E8E1B975B42 -34C156C4F4489D6C54C921024EB6005249CD57EB18C3B647A2D67B6957A599B3 -2BDCD22DEF65DE4BE80AC5AC7674DCBBD5038D11D50E2C391D74E4B0E39FC8B6 -0D4827BEF623901A488564A6A86C192F98150892888D4E2155E01C58A4817493 -3C5F5D505D800661B0BCAD60B799E833E731C508A6CBADB91A1CC3E09036274A -B348E348C8D792825254DC18910A1BA06C9BF8059ACC235215C2299BEDCA4DEE -35DE3315B019CB2276EC00F911C46EB1F95EB5990E0CC979500ABA51C964893F -5EDB3CC0651B2A21F1B40A6FD375C62EE088D94AF20A5EA46A84F35C6083BE59 -AEA6EBDE3F10185D7E8F1DBB04149AB09A5248F4309367EB703987557190BEE3 -49C9FC03E63BDB15E2CFF44EF7D2DD1EF51383DC1D479312EAC3655AF6C76141 -A90685608980AF6E480214615F62F511B865DC247033A9413DC594CFD0444DCB -904267BA5680B68E6F50787FF2116DB0899450EEB793DB9E880C583B23DA7E30 -DC5D55423D9E3254070A2734C66CC5AE182ADF688B98B2C03A0227AEED1587D1 -12536F37B458D940E3D5863CD213A4503DF7DCD4BDB7F887F859F4A499816833 -813818A5ADE1DEC6F86688579F36F589713E7FC8A712C149EB7238BFA890C085 -85C62B77FFD21B505CBDC2A10123EBBE00EAC677E2FB70F1F77EC5A63EE2F63B -C11DA6338ECA5E3DB23FFD291D392FF23BB1A47312FA5B5A126F93874EC61B4F -60CA8EBDB03F6A11D254D21E76298DBBC120E8396983B779C476D4A6A2A6A353 -F5582D768AE5EB4624BA660DDEF69D7376245AD35A1FF2306BB342601B4378EB -8C34733E910AA63FF66BB7E99666F30DD80111F57F78A3A7E01B7DBFDF87BE72 -502B94B5AD28590FD05BF3AE5FA728801EF25550FBDE1357D04041E9CC382B7D -DEA9E662A8E85E80165D29987405EB6F4F8D6DC33902BA04E6EEC6AD8247F218 -C93ECCA1E878CC92B49C69B2AAF3360B5A08237AA93AD1B8F25E45788EC6427D -A8B584FC89E70A5A214EC7C602A502A7B9E9494178EE980AA02E57FBF456F5F4 -A6AF5C90D0CC3467B869E5DF5782FDED2E4C8E7A8BEAB0EF5E31FC4271E4E71B -ADD2A9AB92F1377973A2B627DFE5A514CC35CA33D7E70BC13E9705BDC004EAB1 -7C8DF298CE668302804C3808DBA0E381C69E95D82C070278926245678D32505C -3472F5347D3F1BADB6E66C313F3B16A897E3B00A838E19BAD1B9DAE21375A0B7 -573CCDD2468ABFB16AC68D21CB7B36E518BD78427B353B4D78AEEF55CE386CD7 -574BAB1D3B953B8DDB0091CF67BC148A0C0971FC071DB8F4106CA2F2DD1E3855 -1EEFC50998BF220EE31C69BD443F5C720B69E11690B20E6AEA6E77852B0B2437 -8272639122A05F104E57A4340298D720CEA96C27A136C1A2AC6B719D3D6FB3C9 -BB97156199E3D5F84317892433E71223E6829795A7233C4C1FC568678F858877 -2A0F486031DFC53219C6F114323DAAE21021D5B153FD7F280C7D12058D1C595E -05F82BC39B856D5C89BF6B76EA5B002AE679E24FCE6EDAA69C77082CD2E2D837 -27B81461293576AF595DF9ACB43BAF4A326A1C2A41FA6B26DBF042C959D54FE8 -B431AC2A6F463556AD06C7537A6F0868A2252CF8476A2BF88B732C60FF2D6F1A -6E054D97A62D0874BCC55EFCF028EE8D2482143593784350CD32680E7A87A59C -E88A24295457C05A0F8F8BDC388488546D08997AB0C392F47B6A8E90243861A7 -59C727391AA718A87864FFF221BE2F1C6B4BEA7CA29E2E9FB673C88EE2BD7109 -694AC63FCFB60E04B05BAE5E9E60D474345286781A9B836ECF2FA5EF10D5C35E -DB46F03A517A8EE91BB0078D1F73954024C0D0B057FD32E7EFDA7DB2BE890952 -5FD4FEA14D0BE265002775F32057AE3A2B2164EBCA0E7A7AE9CD4BFD3B3EC0E8 -AF0821BD308922ACC6312C85C914C7E1140FFDBCB7F9167E9DCD4CDD9D315C2A -EAAAB69BC9A9EA615A246260C60A45CAEAC3B5129B76567639BAF1522640D76F -BE8AFE3B48CFC3D2755564834947A66E57FCF20795E1BB4E18134CE88366C5D4 -F397BD636E90D47CCEAE2F8D812E3E848BD584ADD4D6C3D26C6813533C84180B -99048D05A598ED60C357907076794C620B44C6AA7B18B59EE1B3C2317A432D35 -1660C44430FB973662A72F7050AD5729413E1AD9959CE64BB59E3F953D592FE2 -EA23C6285DC4A944F0B840BDF41D9D1E62EBE15A310EE88BF3837C6264AE28BD -35FDA673E730495CD765EE273233D1127817DECEDE367291E53315DBB6EA4C8E -94281FFEA9165A95FE049CA6B2E8FBCF97E0E1D693244ABB7D5F39C20F2E1AFC -B51E420769B59DFDC066F464E6BBAA93FD5B5C007491FB1243A1441A6CDBF94F -5F6D5ABCB76E2489F44D89F39E4B39343B48E7763FBD88454B98B03614DADCDE -CA84A3B5B1B2AFB7441FF626A0D91ADAED0E7F5522F553DBA042908B694E77E8 -DB74B04D5AC9008A5E0C510C5EB70220D9F06C5F3484A96688D72B4FBAFA5778 -23FAB38BCDC1DFF2F33975852039B12636FAD86D9868221B57302F54D76B40ED -F2D15EB0002D31647397DAFE2CF5D95A1329766F64F872BCC70E917F687A7685 -0F292C244B501D36FBA7E51B9EC7EA1E21543DD63D3B4171AEB8AADF314D6E07 -DAE198C15BCDD3793A555AF5785039691FE83CA1DFEF2738C71B67F83AB9F7C6 -04150D6959F217396DD8DE186BAC99200A57CED9EE7034EDFB8F9FC008CAE859 -19757AD793507EC18A50926D1FDD9856F6DFCAFE1A162B449B231EEA8A391CE5 -AA55ECF0721AD309404DE54F1167823E55A9C04CA858E840A41FF1FE80728306 -E791C608DFCD0ABD370D7B6B4AEDAB9B995303416EC2F73179C6D1498AB9901C -5D2AE25F16D1A6FD58F904E8BA5702CF3CB17AF1CB3E47F4919DCAFDDB4DEDF3 -4648F033BA1658F98CC99A961E034D53605C2B3FFFCC19344B3099733B6AA779 -5C6F525EE776E5DC9FBB052E822693F803CF402D81CF55632672F109FCC4FCBC -E06FB228D7AA666DB52CCCEE35DFB7C716DB9AA389E78DAD4C04B44362F269A1 -EB3D8CDA8FCFD613FE21953DDAA5F387A8287D84F3EA698FE223E0F004FCC392 -977CDFD3DF6B70CC3232D3C32B9846C433AC57BB58D2038CC425CC9340D75CEC -F86310E5EA77B0966866FD9FFBE0277C017A666A4123B87ACB7789ED73B445CA -0FF2EBDECF293B2AC50922CD2E3A151406BCDE838E79F754090769C25216974E -68287E0BEB08B780D23E90EBD3655DF43ABC8773377646B65FAD803B2ED56194 -B4905944A7B46346C909E03DC062CB8606A1232089AE4D325FB588B72F897193 -50D867B5FA87002859BE1AFF16FD837A46D673F50855A559192BE82CE39AD8FB -95A006DC25BF97BE205BBD2331B8F6681E8BE7E326F2383C3C3E008C65719F15 -6C91C86C3DA67B12919F3D6D9CD08FCA440BF4569333615408FEF6363183833C -9AA363591D9CAB43B9BBDA9E36AC040A946B2886433A34BEF225B2520C2E6DAE -EDD88E1035A67EC3E305885C5AC9F435655E653E5D816B1B34EFE77BBC78F5A7 -5D724093E8FA7A1D51A6F3A86767E19064D710D39A1F9B6E11159DA54F82FFFD -5E6FABCFD0A67EB9A17A68BFD0876689E88B45F974440D8A3B08C39E6DF2D8FD -A4279D2096DD6F3BAACDAAE23A250B5852F85147A401F083653B46A848819508 -DF8A8DACBD287C036B87462F3682BDE21651F1A8DF800DFD09CF2F23C79A646E -FC4608279CED4C8847A2121D0DA7D45BB991DEA9E03D45A30B1F056147C7C345 -613DE72C2D3D10BECD676AECCF9FDF513D31317767418459E4E886EAC0C529B4 -33D69F43BBE85B3E4A8C71F669F8EEF951CEB9411B78C9EC2269370632CB8D18 -0B9A9E70040DF7232BA3CB5B27FEE8D3417CCDD8C8929338CD93B9C57E51269E -C37E2C9A2831963A46278453AAFDFF79A3164F29EB139B9DBE494A46377E667C -C98B97582E56E21549B2D5790A5DDC5DA1031CC2007E06716B4F512BDC0659B6 -BE9977A668F2847DE131664656F7923AB45B963AE3970BF37187A221953CAD37 -2CF05D955FFAAA3EEC6A0B2561CD8664D032CE816AA193FCC4B6167627A15C3B -DCFE2CAD5E5AC92061766F724B25A02C37778F250515E4549AC79465D6EBEB93 -68473B578F3DF4D5992694B3486DD38DB4F6A87F7A41476953CF01A8396FD9A0 -0F331F221ED0F7B7A89072F08A277F5F8A646532F4A01D845D886FE1417666AB -62609124BFC796626BB243E5D1D67F0E9C39EEEDF0517398B1BCD3ABA14580D4 -CAAA18CF83D09ABD0475DCD53BD443764DC012303AC60B46E0C665B317BF9378 -AEA3944B9F97E48CF62B6D637F633777CE6835B84CDEFB5AEE16B10B10BCC5F6 -9BC609055A0EE2228C64F6779D80067BE806D08BE35DF760EDF2EB69FA046A23 -B7E5C8513C8AE67D77B0E2C6D6AD695A16B2D758B73B4622EA1901229408CBDB -BD8B49038DEA23E2F51622546B6716DA95290BD3272309BA4EFC18ED28268008 -4B6F0866C95599770C46D56FFBFF268E3F8F0A08AFDAC304473ECE8A2604E737 -6A545EDFE48E33690C6933199CF7DE4DF8669195FC11B3D87E9734680ADA6A69 -F346DF72F65DD58057ACB95F2F0CB852ACD378D82E4AF988D8E7F34556B44A0B -DF71066A3355EA3E6687B5FB1BF83B38B3D3F5AAE5CA1CCD311561505C2D2628 -C7468A7D1BDC495A5C766513FC3CE2D4560F41FF0E08EA28BB0F12B8741BAE4D -65D16B529B71F549DDAD70C9E62E0EDEABA53D4DC796802EB7BCAA55807B9D70 -D0E8FBAD43A62DE7991A1B864FBED77888362E5A581C32DE3534F51E5CBF82FE -6FEF2221DB720AF31687F57ACB883C40FA1D6E25658EB4254404C148938955C2 -5650E1FC3C069475CACE1A07F2A468AB06D36553DC9E6A1EED0A75486FA81B9C -0D0E838A5497344EA8563791725D3DB9D315CCD4454B35DE24E47BFEA5654953 -33A1119303A39E0BD4F04BE8624F5BA4F0270DE6040CE041D34A4729871EE67F -BA6CF38B4FB129D3B3F61A5B74907A964AAD0F85185327A121E18637F34496A5 -4CA612D9C11BBDEECBD06EE34C299EFD812F570AB60CC3F6612B999AD3FA1D35 -FD901D2C3B50793A9F92431F13E97CEAACD640197DE029669F081BD8767E581A -B42FC45206A033A65DBFB7AA65DDF76F06F3344F01769D0EF5A3964C660A27D8 -A980FDF187F259C195DF431C2CFF98C2F79FC48CA0C0AF05F20DE4E362056B73 -3415B0ADD3F5F8BE6D6C8F8C34B570D4CDB87426A3524099E2A48C71E2121799 -6DD286E46E43002F7111E0CDF339146F9D281A0FB837CB478B97F7DD307E95A8 -D597661CF1E0B7B4D03CBDF4ED03B3F2487F749AF76F0203A20343298E0A818E -9275C9F90FA563F29622B3C637A136EF76A2EF043B8AB275193E88A779900163 -039E5FBF6C7A94BF2E0AA1F0AF8D4A22E9362392999ECBFC30D59DA22F19C49E -1228408F3A0EAD8B7CB0D19D8619EBC73077172BB8593A48C03B3834EE119FDD -37E7D186A3429D6A9AB7B4542069A93C4FADDA999CE695C063E38A31B6239279 -E2389A1FDB5605E6BD64D7206FFE280DC04B9252A9FBDFF92032DE7BC1EA6AD0 -5CBEAA8FFF70BE7A920D5C0650883D51C11B5173F3DE042CB7D6F2227B2EDC35 -024F4A3E2A07AC1C48B992611E76FF2490129A6D52003FF76B02343228CFA829 -C598882936239224EDD37860C56916092EE7483A774F1457FB9EA188FB73D7DE -2E059C25739C45C918E541FCE7B58ECCC183DBAE4C65F169B0889F02DFE5241F -5E6BD4538F389FABA25D7E1C63088A834E7F5BF11D0B94BCB9DFF569D9C103B5 -4B6162A972ED85A12DF4956742B428F8E2DAC7F0E551E7273C6FB820A681C9DE -57BE4856F63BC6F640B9540BBC430910AA9B263A827492E6DE61BBA536FCC121 -4DCD0788F50A04BA0FBF13C06BDA80D88F1E010770E4CBE9BE4F1C58277984A9 -D45D6AAA67DC81D49B5B97280F9C2B60048AFCB77CF3786F020636D545E26536 -4EDBE9AB1822B40E3EA520425B452BBCEB6F5E15ABD6AD9265E334E117C8FC28 -2F9053A0E57853B4A7D767FEE7E132D917093A588F2952B946F298E06B54671C -454FC7B962B3BD708BB3400D10808DD90906DC19ACDF8EA3FB8825C9778D9E38 -EBCD8C5E6488894D4DAF2E8A87FE45573780F2D8824638CFC6A13E038D61AFB9 -BACB3A79E098F7781CE858FDBD3BE2E44AA7D7FC5D9D07EB22FD8C5023B9AE0B -26EDD99705E991F7C802661ABC9E4FAAFA2F2D4B5652EC1F0D69B4793F84A9B9 -E9FA0538F8DE1CAAAFBB078E6ED8C1DD390ACEC2F0AE0ABC612454474C130970 -451EC835EDE0325FB3458B78726FD719A901DB29F24844DF0FC16CC155E459DB -70CB5538CC74F2663005AB7F54B796CC1DA783052A57801C57C223F5190687E8 -3320B5A5BBEDD8C3973AE641814DA6EB3E39C6A6D695F77E674859D6B80C4E7E -B3BEEEFB12D1F944AA4CD0F4FE39723B38B7784E7F08C72C4EF74C56CF1AD52F -B6C724CE1E72752B4853651EFCA6F5F115A2B33602AB029EAF34A288AF2D6CD9 -36301AD72C497268AD4265E30BFE3C7E2EDFF709AC70246E228D99A982AF5847 -C24011E38CB6ABE722FF1AB8EB3ECEAF9B51DC92AE9EF1CBD8F4295185A1CC3C -5366FE3324A4CE58B57D0AE7CEF43CAA0573DEEF7E2AD65CA20032878BA206E4 -41E143F3C7F6A2158C37C11604577147F6D31FD5D4A895B38EF40362CEB76807 -417A743009FB3EB7874096A5B07098EB5B29F22925ED944AABFCDA873422449A -5B27797163BD556300412E9ED6D6771F61E3649743FAB4705DA70B133200EBEE -CB0DAA5F922E082140E75634EF2737E83D095D260D7B068184A30DF95DAB8638 -20CE21971ACE8588BAEF38633F9108A80AFC07D52E46910DAE0C18E67FA72AA8 -4FB0A1ED91004A844153C24C639D4C4AC7F058009DBC3CC3594349A0CE841645 -6CB31BD5C29E8531BDB865ECF1F124BA5291BD992B81C279F82D66D52E67A7BF -8F6A5A54689AFDD93C6E72C394BAB3F16445A9CD65666C82BA5BA1CC553FA3B6 -BB99AEAB69C91FEA42531C14C361E8E642C0A443CF8AB6C7BFA8FF4DEAA4B9E9 -6124D87D5B9C810184FFB8667EBD9A52879B7BA948ECE33A451FE9751C0D51B6 -7DD9B6F171A635ACD11DAC8E3BBE9F84979A4F5925BA32B2F03DF959147E7079 -E758CF835B58D5956E83655882FBD88CD3B730E19AFC1FE6336B30C8AC920A35 -EBB55624CB1D114EDF2BFDFB5A449766344AE2E56391989FAABBC662F0ED0DF4 -D7A3112635E835E8A3FBFA21C16E5012A95DBD54196FA8F2954886D54059FBD4 -3E64AB3586D625A5ACCBB20E302F692D1AD3F0D6A5C3D8C1E868782E418696F9 -0F1E06641763C440D528C74403419C192C72DF7B76F1B2EAF35D9708DFBA1275 -EFB6084F517DEF66840FE13014F0ED167BD2D3A2D89CB9AC175624F861A04C9A -A2D6DA7AFE2ACB8CDA8597CF593BE3660273047621D35DDE2E4191C6A4F2C82C -A5092803AE176B2411DB6353A886142E40B4958C506B2C6483DBE2F7CC5626F2 -FA5A9D38C384D073034453B6430BDEB938DCF6BC8553169EC0EE6B9C7E0CFDFE -53483B4E53A8E68192D1474583E84C3346EF205F144868B92726D6C98016215D -6E89AD4356788E20218BA96F545343E7F744A7CB770FF88E94E926E561BBA267 -B123575D74 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTI10 -%!PS-AdobeFont-1.1: CMTI10 1.00B -%%CreationDate: 1992 Feb 19 19:56:16 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMTI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 46 /period put -readonly def -/FontBBox{-163 -250 1146 969}readonly def -/UniqueID 5000828 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F -21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6 -06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF -55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5 -B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86 -0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9 -1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961 -7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A -7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402 -356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B -19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2 -C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F -244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B -AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95 -592943209E846E55B4CB54F6658CBA3C0B29796D69D0435D5431ABECF3448C15 -98CA2F36F3659E29AEB79355EC2ADF835CF0886C21B766B9DEBC3950B5B3B496 -2E06D980A8C60305B273232D4604F12632FB4F1B2F9703952C823C098543AED1 -CFB4ECF259A11985F0C944A57B5AFD853374FCF12305601200C2A393E2FC77FD -F78C2BEB83AB223A89D9E231D1BB561CE1F4D3312049F31CD544C39354493803 -D47CF45482054818E8621801A97461EC7BF53C6AF1C38AC90B38342D51C4615C -59D45B92606D0479F43149F2579DEF5A20B4D7D10528E9750ADFC4C7DDD73DA8 -432297E60ABBB72A637231049425393426F66BFC0851FE504E589F13351187A9 -D784ACC207B1F46537BAA5F2EBF637EB8DFD9D24982E2631F6D3A2DA47B4E9EA -0C899DEF82A7DEB0ACDCE6043F36CE1F74BF1B00A1EE0765F497A67B95BE1871 -A8B3263B03D41ED8BD6B03CA5983912E094E2AE47DFDBF -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMBXTI10 -%!PS-AdobeFont-1.1: CMBXTI10 1.0 -%%CreationDate: 1991 Aug 18 17:46:30 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBXTI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMBXTI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 46 /period put -readonly def -/FontBBox{-29 -250 1274 754}readonly def -/UniqueID 5000771 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D004B836D34E88C20EEB527CE1124209388A2DF -E27A8DF298A2693A9D529916AA0B2176E6ED237F69D84A8FEEB36861D1847207 -BE2BD61C6A412FFFEDFF13AFEC32AC7735BCCE5965F5966418A62ECB99112AB3 -3BC938EC590FF6922659125EB67E260BF02885E49BA6019E696D33F0B53606A2 -F515E0C45F323311613A94B838491BAB9FE230C5CC79D22925E3D882799F2707 -C32975A494F0F9513E4D8332E7E54470D9721FBD345CDBB48286F2F19CC6D66E -BB631DD6476A509167A49CA525A72CA50E82C1D08C2B372DB54C5949C753B632 -2009B761EB90492ACD3CBE6A35CE1B66F3BC4D8DC36827CE4261A703328451D1 -879438479917C1647772999171DCCF1491A1C9086E0C6393506768F8757BD81D -141C46EB9BF507EEC29962A0072B6C5D8C8588F3D68886CD2606DD3BD2FECCEF -63245494E93EEA12AAFB06110E54ADC444C7E7619627A48A464394E5DE06EB46 -4C76A2FF010318BBE48B3776C826A265C66515717F7F2E943C60EBAB23D96B5B -FD514A1C4E79BB3D3D2DEB936F90CD3FABF7B09FF7F564AB5CF4AF6A40E869FD -395885A88F4A138B3CA6943A2D430BBE43D91F7F17621CAF52FB7161DA3B2003 -82244FB6EE792DCA1722C03392C296C029A2DCC5BAAB3EA03F8DEB039DC83AE1 -763AAB84776A2CCFFAE9EAF0BFDAE417E8BE682D237FFEDAF224AC09C9665019 -165CE32F5349E857177D94AD6396570932E1657ADE4D3FF57A3419946CCD210E -57E5A1D91CF708395942527D127606350924D71BC21C6F969288B1C8CA3404ED -E6219985F7301A20621368F74747EAD38990A4C9F2B62913B8FDB93657409FF5 -178DAA7C97C35EAFA47778CE03E863303582D8A9900EF4F8DA879DED54BACD7A -4A50C18AA2ED906FC4DC073B1E6CA1E3855AD5B7698EF4A96B77DBE19A12382A -CFA8717DE230CB6182F2250885B8E90AC42A66484A7B527061B223A6D1CC72D4 -890359E7E04690BFFA99FAB5CC9999F0873A9DBE49E33F79E483FAD72313DF9A -7B7D926461988C23CCE9F71AB7BB63BDB2B10B3F78176380AFFC154825C9BDCE -82303FBFC3B59E070438984C28D12E8655BBBF049125BF56DD2B0DE8C0450E55 -82832DA59EBEB001AAD86F2317460DD7ED264611B9043614221ECF -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSY10 -%!PS-AdobeFont-1.1: CMSY10 1.0 -%%CreationDate: 1991 Aug 15 07:20:57 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.035 def -/isFixedPitch false def -end readonly def -/FontName /CMSY10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 13 /circlecopyrt put -dup 15 /bullet put -readonly def -/FontBBox{-29 -960 1116 775}readonly def -/UniqueID 5000820 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 -7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 -A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 -E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A -221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A -27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF -5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 -0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 -DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A -71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 -4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C -515DB70A8D4F6146FE068DC1E5DE8BC57036431151EC603C8BCFE359BBD953AD -5F3D998D8365AF76D4CF6A06FB66E1CBCFDB3A67D8880377CD677B9705EE853A -D849F88A828E244FA5816B7D081D4D1975A56D771790C21AE05809BEE6613452 -953F26C39CE61F0E134BC35404FE2F0B7D244D9A6F66E4D817D1C65024013AD3 -5F242EDE94633B8E20EA42B07F83BA649F12B784B2AAFA542BC597C6C2C9AE9C -39D60FBA6CD16AADB5DFDABF22F37E244DF3987FBFA55031CFCD46ADF03650CE -D6CDFFD87BF7407FFB63F3FE4C29FE753896101B2CEAB9007B66E29D6A5B85D3 -FF91F888E445677157A5996FC7A3BD19BAF3A3BCF33F0719B992A0F013B1F0A1 -82E42DF6F651071FB407F448DFF37653E2A0569BDD8EABC3280B3582745DB98B -644E5B341F531B0D81ED85F815B993C2B8B34CDDC6AE97606F6B3B1C5427F174 -362FAB82B935087B568E6F526347058C406E878F1CC2DD05C26D35565347C5A5 -7575891BB4 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMR10 -%!PS-AdobeFont-1.1: CMR10 1.00B -%%CreationDate: 1992 Feb 19 19:54:52 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 12 /fi put -dup 13 /fl put -dup 14 /ffi put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 59 /semicolon put -dup 63 /question put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 89 /Y put -dup 91 /bracketleft put -dup 93 /bracketright put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -readonly def -/FontBBox{-251 -250 1009 969}readonly def -/UniqueID 5000793 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 -87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F -D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 -92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C -295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 -409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C -4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF -2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E -0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E -B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 -24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B -43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF -D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 -5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC -96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 -7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 -0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 -B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D -AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 -97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 -FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5 -20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4 -0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD -F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20 -3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122 -A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379 -5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA1566B96E221864A -45A24ADAEC63F61C9FD18376D3984449A1F998C318A8FE36D0D5020E18A49625 -0F3BB603BA1F3E66FF412F6A32433FF8BD2968D79CE4273AD0E0CDDA5153C2BF -F8A46A2244F9394A49D339F763F5A7411A3C29336B21CCB01723705AF589B078 -3763035411FE36AB5D744E81379106890688CB5BC41184548B7FEBA08DE7288E -E6570FEA20C51FACE8E8F824BB61A4A038AB817C47B87391611B77928B2565A9 -3B27A573C05D36ED01D8F27CB2C793370FA9B90021B5696280A55F2CB6117B64 -293EAE0EA5A243F56FD007773CA35DF71B3D28643C25210CCE25F37A5095D6E5 -9CAFD99DD1DB0D7EAD454C13464DF6FF5DD42339797AE5AE467084550FC00139 -6EE818C6365007B2FD6E26285B832CFE6EA7E99665A224C9813C036CED262639 -3FB39C1F05FF8F31D2DEF37BB9B883334F51EA124581B786A3D5FE6424B19872 -AE7CB657C8D9528934B990B94FA4A6D61BC9D2CA9B4E95A22CBAA066043F44D1 -AF32F545B9E123536914A7FD7FE96F12039EC25128C810BFF546AABC609DF57F -E19D511F324E32956177C4376D191C691B9F0B21FA84BAF3DCBBA536CD710A80 -1DCD4C83C02E69A140E1A4CFFA3B012398F21DDD96ED8060DB98EE133F430022 -41BA1DA473F1C99F0D6CDBD35188DAF712AC83E0EDE08EFC3CA2B4A21EE55692 -CF22799274A5CFAE84C89C937AEECF9CC71A328015B63C1730FA68A18871E174 -D035568A73346EBE4EBCAE410A4F2505370A0ECB487FB40FD823065AC56CE66A -9D8440C5B3F74B855EDAECE69835137D4D76FC0FEBA53998F57EEF25C7E3D9A9 -21BFDBD66C84D8AF7D8A3B79FAA9DA2963FD47689E519FBB2B7793CE6DE04A5C -203539BF94A5A700E65B5A5DD37B051EA4348BDC4CA39909ABDF8C4102A58FD6 -661206115F7EF6C29E12408BADB83AD40071F53B501C15601338467BED90B659 -2708D01CD77E109ABA63C19FE12606511639C5D9D5522C80692D1CA874E17B9C -753AEEF13718DD36A008B2D39D618F4F766174423AE972CB619634766A5DA025 -F9682D9E2A3C752D0F6F18B0D58319FCA606BD6DBC4F83D19DCAC84A6165B460 -AC1A0057B12E2023F175E6A51FC12A4852043F6F2F2625ECFF6E866293531437 -1C060C9383278C81B8DF68BEED88C49F86B7617C5B938457D19FA336C616D2AB -0A430B489EAE7998EAB74FC8C037550E12EF9AC540FD37473DB1A44B1747A4C7 -4687624D806FAC32A53BD65A333DA3732ADA2774D6621BB59BDAECA5637F1F41 -CD2AAEA8DB9774C2730DBDE3A2F9499C719A0E9D59FF37C4F4E6E54D5EC402C8 -6599488AE21DD119CA2BF54EDB306B26351D0CC4C82040835580087C60327110 -9F8A1277DDBBD25823AD30F0E960604BFF9CE454C5C841119F73535F3093FBD6 -8E47B1357BA56E3D906EC70D68E85465479539187B56EC67A64DE38FC444950E -A82B014254689B676BD02A3068ED7ED5D4C9CA1839ACD730A17965771D6E68AA -A7D9405079A9BCD1DEC8BA88523A25D759E94628E12C1F3D072CE9CB0306E3AA -EE6808E5524CF2504C416AC0A442C3DA9DA55A90300DCD489ED3671748DDCAB1 -99E86A34BAA751C636C2309A11AB2042FDCC2A9F7849B417335CFEBD2AFAAC02 -A5E32DEE3966AA31DAE1EC99A043EBFF4915A4D66321657AE10191D87302B5F3 -B7F0D10EFC991E3806639859BE48C2421620DBFCF52DB6171981744B53E32D0C -6425A50E9449F75A080ED0A706D92B6A05EC89D32404A6788072426D6A015695 -7DB512EECF89EFF27387055427873336FB4CE65D94F68DED1A5F04D72F2127DE -7B74735A618CC8642D854D00A9F65F5A17C430F35D0737651DF82F0992FBA6B3 -7CCB055B3C9C1C38FA75BAB14BEE86BBDEE127639766E3A7EB747FA079C6ED94 -0260C9DCE91B1E61F6DE495F90E2FDC783CEA3AADD7EF57A76C833C5793A4E6D -78E728EF165BF1EC8846A305FD8F609608F241E4F1EF411D4A8FA5BCDC4162DC -BF17C00AD226A3AA86E60331B9FC836CDB4A7A6365324BF72D351B480479E659 -3443CBB891DF2795C837ED83A0D9AFF192797D6EB4BC28A8846B99E63BDF4739 -C628C84E5C27EA3D0D8C85A4FE6E67A7F740761A69099AAF27E110A801DBCCA3 -DF222094AE110AA478E6CB50B8C314CD9A91EB28075EAB7CE4CDCEAF38B40CAE -86F7E7381311D3BD59D9A4DA58AEFFA30B42FFAF14B5A76A77E8436EA59026A6 -41D4D8ADFF516D46DC4EF567A0D75366E9C22BE5C2FF00E640BF6CEC7B0247C3 -2944F7DE7079E519ADD0FB6C4F80CD071C6EE55F1CED44FF5A7E22A296161EF4 -2A5E302CB8AE54A85AB6035D92C1D84E47367D072099CB877EE16595380BCC6C -5EF5A660021846E59E28045DAB319848BEC74E979BCC700F56B4BA17D96B2EC7 -4EB7EBBD2895DE9849513CF4973A0405E1C2904672C1BF61EA5B43938A4CAA3D -C0288D8A9B92C1B7C44359A935BCC0742B769B8413247009B9272F2FF751534F -907419FC38270E06B31306E74D1FF6D1BA1067883F43C71E8FACAE334AF760B8 -2EBD64E0545817108DE606F9ACF3739F1939F1EA9C4B3E2206D74CD9CC3FBF70 -C95196D26B40838E008C03650DA2CB0F7AD0D3BD02DF05A83672DD466D0DD645 -D27432A0C6879F68D0C070A91D05D8CFA4D4D24BF05D596A88B80C0D1FD2C949 -FDD3D32C6DCE3B8EA252D00F55271D1E954221470C63A07F63FA5478E83700E4 -AB3F93D7C53BA3D5A8EDE1A1846EB51FFD2DE87D33DCA9BFACB4A3AE96D5D579 -2807FE96E033257027BA18F6009764B0619A50FE7BF8CBBBF3DD55BBF2A4751E -20FE8F18E93C44235D45F0DCAEEBA2CF7573867FA5C41344556EC614C3BF2268 -F2409567409A39E1095B3EE268142F32C35F20C6F60A021FFB39CB434A2CDD6B -DF022EBD1E59A1E00B99ABCD139198EED8C671C4931A45E3DD79D1983D2ADDFE -FE873C72B6F43B76464C115B552E343157EDE2AD0AF99AB14A53B4E7F80E065A -74EF03B41699976CEE41F867AEDD7B1364BC9E0C13E436705AE10AABD3A24CCE -2C4A636D506378572A4E46CD6579123E8038B89F8CFA32F8CCD728AAA597AF59 -CFFE38D20A3BBBD90A85D63AF67402AF7272A07EDD47E6E41D501F81064333E1 -3EEE1F06E57A1FC0E5AFCDCFACE10C7BDA5D5939C4F97804E1598B718A77687F -8349C04ED598F7D41115A787D62F71D90E559F621E3B6C902EA186F7E537C5A6 -054AEC43EC22A9362DAAA1B0FA8996B946839602F9A7A1EB4E08B4579D249253 -7D3AC25BE50E6620F7B0950B96752A70DAAE6290BAE5773EBCA3150FD2F5AC65 -68A90833A844BF8A68CE1A3C53056908FFB822D7AA3017CFC4F8C181320502E5 -0367BAA12DC6B313CB338C56A7DA29A9D151264EE25BEB66DCFA45959139E82D -87B56575333FC04EC0387F69402AFEE34BDCE5F6CA3098CB21DFB6DC623DAA75 -E8F0CD2B90A0F3FC96278FB19402E8A9FA34CC9746079539A6FE05E790C06C2E -78DB96F78BDCD0CD466E27E0635246B451A001A487B4E8240EEBEA894C33D579 -6A7B03D6EA929710D2452AC3E7CC56421A8097C153C319134341182FD0461AE9 -338F60651EEF4E7D51427378572C228A9C4E9FBA199423994A76DD0CDADE9366 -1DC78454642D522E85C5F90A971E797E126AAB8434AB54672B5800406E46BB4E -996A8D4D012788FBDF500AF14A4BD3D6C7C35C89D646CDC66E692F4602C7B5BF -281B24DFC29C854711AB0F15231AF0A110FDEF452F4FDFE6F6CD9C80E310F081 -312C28A421E14C97E3EE7AE39D54B5C181AC99FD7F58F2B36E4017E001EE41B9 -946CD3825862B57E58F76C345BD6117387DDE6B0E71236AE1A62E5AEA7C150BD -D3A459CCF3BE6278C6BBC8C06EC38390D4102248D431E6CA1D6266F09FE86DBC -35C4C48663C6B5D517326D31029C1F089BBF0F58D24C19B18CA547BB210ADB2D -E346EF82530DB783AB35AC465165B0E78AF37CA5CDC2EFA0385F0EBAD45D2832 -C30235F4CCE56436AC14EE60046FEC9E68C4D17DF8AA4F01258C73B4099114DD -92EDA9871234B05284BDE964F20A9E8C2FE52E4A4C690423FE5EEE95FEF37EF8 -BC802E5D7B27AB35CA0965764D61E18EE85D1F09256A6C066C007E9C23D6BDA7 -AC49E3DE456F610A1D711733EDFACB506BAFB60E7932CE7793D79764FA725EBB -3BD820A81FBDD3511820D87BE542B00923C46BDB18348DD44E86C0ACC80E20DC -CF543E4EE12F250D09B56482F06B67121B3BA070E50D1F1A07BC583E433C770A -9AAA5A30849ED1362FE5F2BDDCECFB8B516926FA4C954407D224185F9A272B38 -B84543156D99F3CD9457098502DC6CFEE4A91DCB860F0D3B355DBAE08DDE9152 -95CCC516BAC1089BDE27B04AE9AC65195631B943359A7D03BF2B5D8C442A3533 -FC3452BECF0418A5BC73757DF8EADC3A06A64BB5C20630E0512B33F68399CE6A -43F236F30C277ACDE2EBBF0CCB0799DA4CEAB7C9216041A20F1DE8AA9179AD80 -4CB0FB948B1910C7A2ACF0A55C8934E5E98E7CE97BE5FC5FF241360FE2E110DD -C8EE6EBA82289BAA79F005D408E90DE40A6D03348D4FF980CE38B0B5C6183DB9 -7796E03CDFF70C51EAEED8C7D8DAB3847B202FEEE092C2E131EBD0773A7935B1 -FE8CC504ABCD02D1E97FA6DDB173D470BE20E64FA11B2841CD95D97FD91B1B50 -D9BC231274E816B85D06449276B3EF0392E66E7E939EEA79EDED4BE9F14EEF78 -D87F1F8D4F9F6420D0C76BFC800B421DB30C3496FEFBD1E36341EC0518A6B558 -916C02F8EC7CB1EC9A71996091591F77C77963662D55AE28AE948E510DB138C9 -5A37095A8FB9C8C2083D1816330EC4F3912F04C681D448937911D3FD8D98CC6F -1D66D1F75C2C0164FEAE5B2FEF630253A72E04B00758A5944D614B8149378776 -E29CA0DFCE7ED4AEAF5BB9C409F26DF17691DEF7B1EC8FC204C087D0ADC42638 -EA87FAE733FC8F7F6972DE6FCED44750045523E2F2B054DE8C128CDA6E3CCEB7 -A4F96C5CC9BB2223B60F5C20D17002FFBDA0353B29EDFDFE18273BD62A5D312B -C93F9911024E2F1C4629970E670B9B2F0753AC250CDAF6169434990AEC0A147E -6C325DF72A085D559AE30E2614E4E8F6E1F07AC18F968694051E118E6C8E023B -4916234BA0923DE3B1364734FBF4EA534ADD6B719EBE127932BEEAD5CA76EEBE -D2EF7ACCC98E3F4824B92758F764AE53B1E1A04EF7B43E8D89EC20EC25D57988 -5E5FB3AE7B4A890BFD063ECD57703787163B9ACD7154AF19CD5A0713F506CCEE -FC1BB6DAD0F167461AB3335CA8B78D19B7E975142A312DCE8FAC1BE7C7AA8C36 -4690C2D05340D3EB635DB9EE30B5137998321573DD650DDF807553A3A1608DED -EC4F21C64FF805C8224EDBCDB2F7E64883E6218D77578FC768339569227DE4B5 -F4773812D6018B7CA18082DC96B36CDF4FB0AFC4C7636C3A67E419452DD9D995 -4D144682F1C61A673A1B6BC9F58570430CFD237855E02338B18171263FC5E2BB -D1699E56857903D90FBECFCB2B3239E027507CD9A554EDFE4DFA740CF5217D79 -83FF1A9140599411F56B4AB83E311C3057F5DD3EBA4C0B3AFC20538FB645CE4F -A77CE8CED2483AED0ED3CDEA2EDC0AD8156D2D9DEA844CF42EA7CB6B3BF1CF49 -AD1E385E2D35E342C864EDDF63912B90AAAB2F0968F66884675FB715F4726A96 -C67EE6A0796A6473B305861561742F1BE3894C66211643418C3587435C54F90A -590FAC7A4B1060619095FEDCFCBEBAC09389AA3F0F7FFBAFC5D72BF9CC2C02A6 -698A52C0F2F964698645845B5B047F2A32C4CD4B5434ED0CFD502CB63D3035B4 -346D200CE05A35F948EF1F1D72A87F7AEED217FB26D649B4A2272DB7B1AB9D60 -E91A7DAD00C00D37817B6ADDA24A7B79E7B7A2F85ECFF2B731BAC4BC03023150 -A7CBA409360DF4B4A0042984727241E7753273F26F0DD9A5801C1E348745C1D5 -C88FA090742389A705E002ECBDC1C79A5180BB9E660FCEC9FD6D96D3813F1E8C -B8E15C4138C4C0EE778BB145308CA34470BC4944460A379D56CC94692C3E8291 -7BB611BEFBB5319BEE7BE840A4FEF7C05466AA3579F2CB6086FB4462DC891680 -C4FE39645555F49E41F7452257C0DB98F517D80CBE6A1C2618CF5585A9010145 -B7765D00B5825DCC82090AB3E2774A65EBF10296F7E51D0CAC902171009BEB18 -0D5FF53F535F61BED5C185D04D75CF1E160C167F42CFDC42778BFBC7F890CE15 -2CF6968D66927ABC2AE248982CBAA92ADDE3B61652E0BCBDEE1C0BC7191DF3DF -28C5C6A711716839B133AB4CBD6A3319CDFDCCA10A8FA401069C39DA6C02D9ED -09C28DD98C9FF64B60ADEDFB2C77869A0D8EFB0F6345075C58B3A74B6B5BF0E1 -CA82C684A0991CA69ED87560D61FBF1DAB1CD1B858E3EBBBB0CC504F0939B992 -9A98B172715770AD9AA6EB235686A518096376886BA31ACC73A18553713ACBF3 -8ADC736C3EEEE892145A5C7ABD0288E4F0B12D27761E72D00615A14C2040A904 -3E8E9813D547F0483FB4EF57FEE332FB0FBC847C59E7E7CE09C9434C4F6F9C36 -362D7D16F64A7A52796A0E97BBF5C73520A43138DD5DAF3B9FD8E4C45E92A989 -E7155F9EE91C0D3F1BE43C371E98BF264B28EB7F2DCD8F3CEF5996E787204916 -475238CEA6891286B731F1F7EF98DF6F2BC6A8E6C4392C398CBBB7C6B76FBB19 -9A097321326447A19FDE2499756E132B453B96134CA2E76E2CB1475A613F1880 -D211A3A2E4E43AFB837160244858C7D06E02B6457E8E2C77555317464B472AA2 -44EAB5B3B2429BE954F12AF74CB63E10196A4DE6EFD8CFE6AECCF1AF2749B1BC -4A651F72A09FD737CF5B377506F979E5A488AAC218B0B3ED59DC05183EDA91F4 -A3AAD391381C57D04F5F348C62146C161EFE169E8E658850604916AA80C30D8F -A1B6363D2C9F51163222E4911C6227F906F4E29591FA1ADBE69EB375E8F0DB60 -9E64768DF77B9E05CA7A7D3AC92491CBA4CA1ACA5B766A6F5BEA49499138FCFE -F8862FAC84EE9FB51EB7CCFD7EE811EDAF284635366D4119389EA6C18CF6F867 -DA5657FCEFDCF52ED2D2AD049F7EB0F9CB1FF80D03DBA6CCE1DB4417A07E8320 -A88569B30DDF112B6E1C83FC8723D7048621713629F89380340ADBD8549FA44E -485549607768D2DB3C631372824AE6FF67EDA74776B60E6EA5E76519F123C064 -5E3B872D3A2998076D9150DC6E418C734EDE4704A6F75E84AA18FAD1AD80F5D6 -7F6D866CFDC3D901E5256F5E41CE60D8ECC4B87BE58F2E47C37451B373899872 -FE16278491290D74563FF2644B99565A78BCB92D7219D6F0640498AEF480D363 -748DFABEEAA2A109A01A2572361BA5A080488FA40BFEAB0D621F9D3FD21A43CF -33E664944F03DE255AECFD1091ABB3AF0AA2657C81F7CADE104E55623FAB068B -E9FE974534A23AF8F6CA79D1DDB95E75F352FC685882F1081FAC7A9D0FD2E4BF -6F6A4F56DB1B60E549C5271635EE4A7643390C3FDD65CD87EA41F7792661D8C7 -E40ECCEDB81CED8DA1B79AAFAF0B41CEDA3BDFD7CC3810BEEB20520532A26F0A -B21538A32D9013083502A17A4734FA075A8C39C5430099771132C4BB123D2045 -B4517CC95A72FD3B8E509DA3CED8DE7B55710498704E89D8C5CA8D5978D478C9 -1D08040EDD88226E364698F12C7977931D164538131C7E026163238F6CEA378D -62C129CB71A9558A428D56B4093510CE70329AB78A4643BE603DAC8C6E9A5683 -8AAC661EC3BCC1D3E2797BD1531CCFFB991C6882287A58E3076553D5111B2B35 -C1A44A3793D6CEDB9251B4E9BA1223C23E912C3448570DE0E0D44A55A7D037C2 -6BE4D52D21E964750669903A69C4FC1B4EBB4A8D526919A9864ECEE3626F8ABF -8658F436939F9B1B098636FD6E556B80E31ACF5E4F6E767CF1F6E4C872ED172F -E594CE786172424FC7B68E00F87E0E31802A4519F1C4FA145D492659B0B33F4C -FB4BA1A9817EF2AB4034FE54816A68254EF2979D56D149CFC083994851745A14 -63F41B8C8C1D23DF97A8EF5DAEE36231FAA773C6A327ACFD998234967C870537 -C308D583797181C3A3474F43297133B550507A950A2F79BD92C2AB542837CDE3 -8FBB459385CC434C7A87A4090C679E0BA1F5D29324414D37A772E8565A521D28 -5747A22D28457E510715BEE36FA93F5348B0FC8FFD650BD683DCCC3730892074 -03BA30732199226FC26D036E0FE7B2C4F4F665F59D7B36140122933F99F3A6EC -EE127D13BB1A1D00284763FAEB63F813293BE85073AE83ED1E15CB1BC9BE8C4B -30E9B0C151DBAF786D8D4647CFE83B144BC3C3164AB834A30ABB11BFE7D7C315 -7BED8774C7B168853ED07576F66A47B5A1EE1FB128F5E3D7481D6EA8207D46F1 -465466C604CC05495E12E5C06B56584F131CFC45901B9F34E60C3D2D1F3C4A95 -B51FC37779E20F7BCDE688E72EC293CD40A7211AF5C7622195EFCBFF15BCFADB -DDE4B9E963C506677D433BFC6B83596D3EEF3CEBFF6E10ACC48490FA5F2D36C1 -8BF93084D94E1F207BAD56BDD01B54712BDBE19CFDF449B96BEFB1EE017CA360 -EC8A0FA48929DB30C4C2C58C20598CA7B033FDEBCF2AC62F7D3ED73B499E7BAB -B0541E76261B64C6C691DDBAA0B0FFBBDB544188B152038A022DCE2FEE56FCD4 -A82332C04A58C2309B73C6CFAF0C54D2730960DF72DD347B5AFF03967E931D75 -6F2042F1AB34AE3FB12C88548366B03A25F89DEB987D57EF583CE96A2B00E905 -BC6A9A2094410D807BF2B50412137E7A99C7C4FCB2DBEC6D0F56AF7C87257A87 -DFC84868A3CF05959E1AF55406A9DE2E6A325CE43CB0B38BF068D0EFC92ED9F8 -D07BE5223D1F72C375F1A7681B3C2682635A89245F6276B41C4226EAEF31D9B3 -85C8E663F7C24C7874C0D1777563341514CB915937C1E6F0D4FD617853C5EC9B -60A9AC659C6E2720FDEB8BE5451EFFAC92EFC12C87380F549C058739E60535B3 -C37DAD40040F6A425D0AB7C56DBD7B0DAE218B3D3C99CDAB4A344F5AC13D5FA3 -6A972D23F757BC515FB8A51B8D264B067B8B2BD165600B73DA7221EC9EE3B984 -80F7DEE15F9A22B3032A0A866044DBCBAC8C5745D920E5559F1F7E40DF2494E1 -48BD0E71F57AF05C2D3BBE9E41E6988D10A10C2A1DFF328CDC5649CC5AF20899 -EC79C2FAA0C95AC01D4E85FB4757F0E7BE0E638C884F05EA8056D0E400E54485 -34BCB26CA03C0F9FA3BCA8A0E596D405A1FE1F0E53C4856BCAE0F1627F9BFA36 -30F59E2D601D5B2587645554C3DEFA5271FC6B3487842E1E829E3024E7DC326E -EEDDA356A30BF062E50EA835D6E1DB0670A9F5D6143F51957484D43CA42A489A -0ED3A97467C9239150DC9B7BB173C6A9AC59C8F0DF16EABEC59A310956B34C35 -17C31967069E204EC78B0C64F723B1E2E58693B5E507271779961C8A3B03E12D -8EFBA4ED77ECDF10DE48EA323F21BA0B94588B691C12ECDD037F554E175727C4 -FD285306463C7BAD828A20592BE7EC09BC930B59DD815B522883A3EF4A1010E5 -88BD9EDCBF051ACA4DB9774D410CB47C937C2EE52D7426A453BC65EE96F599A4 -9D50924AA5ADE524196054FD22563B524349F466E6D9F076A251C190795CD4AE -26BDC83C5505392C951B2F31BB98EF6337691FD04750F395039659A61E5F3C46 -C06B4AFB73D1AC7CAD169014E0F27937F5B36B6644A3F8193DE73B5A948BD6B6 -4CD692C1DB8FCCBFC3B6FAA774D016ECD39DBF290EF940141A0F7A28DAB11627 -1596178DFE82EAD3FE233BE92F9A81ECB27C8B35F727B2BB7D661E2961703A33 -F88B6CBC15AE9C25B4E6CC9889CA52052B11B01D7C9E770AFF5C95B88804D048 -3E2DB31F3910B394A775EBF26B1B0183D707969E9A8757FDE1E42646355DCEA7 -33528E35FE7F9EDD2D51DDC743F7F346EB6F950BA7DFB90757B0624592BEBF1D -543BEC9D274E6ACB89013374140E785A7586FBF102356928026FAAB3A4A50AA7 -523BB613FDBA34B981F6EBC39FF77955F905398A705DF422E63525BDE90AFB64 -11EA562439827DAA7303AA56F03F55AD75960B7A9DC93721A60F427FA1B5DDE2 -81C65B41B91F26C98FBB4E121F978BDC96F7AF345352E6F05E63A2A0735514CF -2D2829EFE8E44E38BEF9E1E1B8ABD921ABBA5F8F6A1A58DD9DCC6F03C9C7C030 -B8F07BF2D73E99F1DEF8ED256D0A47199438BCB625E34B700343290CCA17463D -86FE12CA0A5D6EA45E5B0C532CE1B50FB1AFBCD57B5801A4652F5D56D9EFF9D2 -3178E1654474894CF6C912B6C5610B394DBF56E32ABA10336793A873BC1C416A -5EB5568EED431BF8F973E98C2EB4B78871FB9E54A534278DDF6E4F996DA2CDBC -4A893D6954795B923BDAC7903B8379664EABD9C8333DD7BA4051E3A0BCCD2CB0 -BEC22027F12E998B81EFD9A331F44E05A1D3462A1B11E280127B7B8725944782 -D4BB3F29850A63A93859AE180AFF33C52196E293D60FE3C8EE25F91949D95D52 -12E13EF1A0D73553E64114DE9610D22A8BFE537D63310B4D310F027D66686D67 -F934BD7EB225132687925942D211B114D0CDC65635B38838B5E724DA44573D34 -B60F94CC7BFACAF671D3FA92CB143EEF5DD5C622892448C57C8CC8235FA60A63 -73041A574D1692AC59C67B2867A13F5385F7471CEF0A10058F1D007316753A57 -4243D50F98DE2379EB7E40345B3C924C2915B8511AE80C3A12422DBA50CCE442 -0257398F4350D77CB361F8B8658A6936D9535F05618DDD6FC898F01EC1AA9AA6 -0139170BA0D36A14953311337DE32317D5464DB8A2E0C795E604ABBDF78909F3 -979EB86BA4B494230E4AF2937349B8BE83481C5D8257D8E4FA7272B401DD9278 -D27A2ACA70B5C29834D59A0EB1B15FEE4AF92EE439E4DEDC75A0E40C73623465 -B5219545BF6A2614BAA4A644C0A40C881D6DA9C00F8C172D7AC0470D61840B46 -60BF26A71AB611FFB79D7948B01B23D94FD206936383A51392D7781EA1D85744 -822782D8AC243C91A57050454CC104F6B54E096AFE6CF126E83A57F13E7C7F45 -7746A50339F4D6C08E8E1F16F8D8BD42C3D23D801CD9F018626718657DCB2C30 -350E8258C2B7106E65064A573D025E4F6F541821511DA089D50471AC53F5E884 -50A5BE31423F4B8AA9192CC37EDC2B0FB1C3FA28C425B3098CFF44F3A1EA1673 -517EC21971888CBE4E93FC27ECDDADC935FF9CECB5B806E53930212AE68050B4 -2412D4E9345729F1BAE5D547ED42E17E1BC4CF99EAD425C71AB33B021AB9F435 -F1A89367D5AAA182930278BCCFCB7E1D0C4ECD4D0BCE73C8E64BBE90AB78D990 -CF7D36C45015BAFA5D0F544EE6261E401039C9BF37B406848194FFA047FB97AC -1837C0B2DE7139417E5C308002D732E5EE72AD10F8AE37BA63A61781C6F72C1C -B4EC16CA792C936E47C79ED43D7B4EFF0675366D335952FE8667C1C924FEE74D -C06CB56369C2730F39F807AE5CD9199EFFDF5B816F25BAAC3EB8E2FB4388D477 -9DC33259C6B63EC7D90641D93E9345DB9045696C2357F3C19FA49A1AE2D6A71C -D016CC9FF021B49D5110DFCC7B8BE8F6317811C796D646820CCC37738707C93D -39A64AF1F7D05F9802CD0E8B021AD500887D851FA49349B4FE1D8840CC4CBED0 -5D28FC59E98BD4989731DAAB33BCFD43F77F276BB13127E63C1E87D4B8550112 -B5C14BA680F6BDBD83D150063778EEE909764D6B2374331E5B9DB7CF33CF58DB -3E92F1B0CD8329779501CB94FE9149B28509B22470CD1011F05724B0E2830C5A -FB963E52B1EB346EB33EEFFD98449A16D1D6CE50BF0D460361F12D09CAA87E03 -81842C3346A7E4684FC78C1C7879E9744FE938AE3F6BA56534D99EE0248FFD86 -F4DF4660C36A2A8AF6D74AFE2975B47297316F1703C13A6912D78C46E026945E -D468AF657365E9F161FCDAED208920E1B1CE060E79F46235F897B6880102F78D -E1BB95DD4A925766EC7C56A07A7C3A1C8C6F36181E8AA61E33C57FD5819F5B2E -5A923A1DE298108E40ED8274CDFDC97DEE024782CBC25E487420DF81B4881E78 -1DD5AEACF41B123A7ED7BF97B897BAD12D97C61B44FFA6502A0A87C852BB1376 -7569B1031CB097DDD264742BC15ECAF92FA63AB0AE8275D4510E65C9987D3198 -4AFA791C7D7A8036F29B2ADF4125EC69B5F13A991EF4AD92E72DA3DAB1C5DB8B -2A6E070E7D10F99071C7F5E89AF731837E77BCF20747CB33BB11C6F1CADA6803 -901E6140F19FCBAE6C2CFF94D94C37BC7D1448F2275C1EEE1F1D8690B7E307E4 -D71005F1D641844D898C4AEA01E0B7CF57DE8DAAE429DCFFAA266B4149B80F53 -FA7E51FD28D80B8F8B32B37EF8B34C332CA2D2617AEC7F1FD2F3342B07890817 -EB3910A796DF5813B4EF168CD775D4AFE575006894B0ABF37E3DF2F2A2A9C723 -1287E4E9F7AC9B3C2DE44DCB733343235B91846A509B70AFF9BC49A28CA14B29 -1117B01A46B45FD86CD3330A5C1330B8A5D9BF67ADCCBDF8F8D5CC142326A713 -31B595F59F5A00AC11E5C7F54FE79D0861DD28863B536AC73CB744DB27664439 -C4AD353AC6E9FA84948066E3CBE55814F00A563E3B7BC90498181E2EC1C17E44 -E146E674107B27072EBB5880B26D9F9AC907E53A94069E44976E58BB86A807EB -A560D1C283D6797BB39199A3258F09FF9F538FB49272F8F2EECD8234CBCFA8D0 -EB0C3B724F91FD13649F77A01D5E7D68E76FF7B31E30A42D7FBAB8739B05145F -A5981D1FB70BC31447B3081FD3E621712CB8A13D5F728A70280300091EEA6DA5 -0B86C462AB9BF2E4B45504268A84690EE455C669EF499D0C3B41ACA8FEEA4C99 -96B06E5F625CF694FF807D6690007320233E4952C69260A8CF9742587A89EA11 -7DAEBBA5EDE0F6CB00334BC1EE8C64285B961978AEDF6FA784A68160D48E02E8 -0C9E56E4DB910D1C8946780E6000F17BAD80534398F81791C0973FB925A9D09D -48DF444F77A48DDFA6996707303C982CDA4838EAB7F590CE4743E9F3C42298D2 -5D63A79B1CF23F8F74E1F6701413A58D11DFFB57E015A7D2C0F9E8D27ADD5DF1 -2B3F1798E788B5995B7576F2F9B1D7D864D3A69FF23FDDFC90E51CD647F24CEB -0DDF8F383EDDAC76B04FD48818D736AE1E7F3A1767EDD3F46CD67041CA4DB314 -C9724A0804796E284A83D5562F069EC52CCBDEF5095B7CFB5D2FA9139273E16A -F273789B1CBDC3F9E83204094D5983510094117500F820BFAA2D2424CB49D16E -CBB18BA43D0AAB46687A60E745AC9F5F99E5B4413F066575609C6EAD669ECF7E -B38FFEC343B9670DF8AA7A990A189B48F05C38D60F448967044B5F729F97A52E -FC21DDE1AC1C82C817D2F624B717B2F6E2DB63EA844B6AFE22D7878348C08896 -085F9FC3321058B47AEBB6C3A901912DB004EE542CA93592924F81B5923AA78E -ABA008E8ACCE865888B7EC55B13BC78FA357EFA20A1F0FBF1C164768CC4CDF44 -6938DDE304ABCA6BC8CBB666058631203840E7FE84BEAFCEDFC58C2912AA1D3D -9E32118AA7FEDD7357B7B28612D8D2075239A3043F97ECCA7FCA66BEFE1F4A7A -1980B638C5B1B1EA892D2B75DE11E84B0A10ABB084CBE4DBAD076A678F7A71E3 -5AFA671DEB20085697FE593029BD12B4ABD5D3DA8D31AD9919FE6B19A129FF17 -DAA8D3AF044F5D5D7CB870FDB68C5586EDE210B9DE8B8A8C9C9B42FEF9891F65 -180951229179DC499437E7CC5D7DBA28988694001F8C337D49C71E9447E1ADF5 -6C33C057A2B33D678D17CC4BE07F683EF95760C68B7E053A7CCDFB26882660C9 -504BA5AB1B762E5CB9BCDE937215D321DF026F4797585BE649D763E88A75080B -E8710941F21C868F05F25B1369767746BC3F3CF652971A3CE1B98D98F1FCC82B -6A725E3A2352E76E12DAB090929E2773E6509BBAAC001467275802E8AA78BDCA -4D9EB8CF0879C92530E8189BD7A2C860635D134C3D5657B22CCADE14F9A481DD -012682C1B8E2819201F3D6D83E4B1C781193D14E7090C3C7F559362334DE8F28 -D2BF7288E350237BE84AC86C55252A6468D4CDCC171BA17CA646878D3DA57FF4 -91ABD552E6EB2623B0EEA06884D015608BC00F8739D1275763BE56C97CBFC17E -AC5AADF2D41A7DCA687B7739303C79F901937E78059CF4C689719B6F7335EB97 -69A94C4B631F50673A8DB3AF831221AE5A69547D1D000D4F31E747EE0F132807 -E4A14CBD16C68B0E35603F486D09ED4CF0DD95F6E51EC96617CC54BC6FB2C1EA -A3D7F79581C3BD275EA275BFA88C06361FBF3E0ECC3AE9103178B6116572AD7B -3831BB204FD65A38DB5678D8C72E25C798142AE858E1BFDFDA50F8F6D36AC6BD -FA563958D1838640489F6FAF30C0ED8D634C1FBB437380223275E0C1A7BFFD2B -67FDFA6C86BF31441F18AF1C6A4F02C5ED6CCB478B71836A9412388033CB0D69 -0FEF63B54C5161027003512B76B2D70DE8188AC783EA01F12B9930848C702D30 -2A36F86B9F5D5BAB95EC18D52B58306982B6566402E23C78153FF24A0C8958AA -B98467155949908747F99ED86401E6F0622EAC62D7DD8FCC76C5B4B4FD96C789 -7D6177854EA231588E42EDEFF38E66F76D2A84FA382E12BDCBC07AAE26F885FF -194FA656D705D2A539303C6F229A25602749F32FF2B7174320CDCCC5D1D309AC -5715C501ADB08B413712871F2D250500E200A457FFBCF26BFF7D7A43943C03AC -EE72284AC19AD6BDE6AC2475200EE38B087B2C9BE62C85E98768DEB373140131 -E856046576DA55E69E17ADDE5C2604BCFFD097F857F38CC9A232754444900D89 -D9BE964BCA916B2E26B4A9DBF8232E8FA265DEA3AE5949FC1D4C14F1D8A2F564 -C23423AE63C72C1FB13474887243C5184BB15FBC36F232380112FC99F3C30F6C -342475DE2221530CC8D53FBEA6DCCF65E493ECBE64C94BEFB80F533FA78E21E1 -28A51D288D6F6967002DB0ADDF98F16245F44481C79C758690A1CAB4E11FA52B -1B45CE00429307BFD63E47DB5E61656368AB0AFFF939A2F3312BC1E936029F5B -41C8A71E60D230EBBA7C5634719851AEE6AA2A6DF277D33468B83B54B792109F -13D107DEB5510D12CC91D8E4EF998E06C3D491AD87DE5FE2ECD4568F999983DD -FBE767119B3CCC81E11412AB633CD95C612C2D533F66B88CB32343E24576C25C -E6802595B2BC508D3BF05FFE1A528138CBF9FC4041457011C74D8F1B98D12C37 -409BD283521B10E163E832ED09A88283638D68E48CA67DEE64020C73627FC2D5 -4D83EA0DAF2BEA0EBCC7503EEC0AAA7A26647291B0B11E12EFE6EEFB307918BB -B4CF76E3C2CBADA8940353B607C32A229D962D5EA6C118113D693B35BA29566A -B4987DA22112F032CC47B497C4526680E64E422CC1168DB1BF1F01421FB05C01 -8ACEBF2EB09A747E2EA6BCBA4C91DFEB1B73399AA6B02956D5865B715111E5A0 -065ADD760429EAD755FA583798A2B689D6E4B5DD13DF94C7D27EAB62B0BA2541 -6EC93E60CBC31DB3E476D22A03FE2C63C24DF4908F962C6F750849ED0B408463 -1ED19A2CB8B713F05415292B1DE83242718D5E34BC2C3E6BC9E921E7A3416427 -90A1FC951C1F241F12C5A78BFFB1352E0E3EE8995CECC41EC2587E95F0D1890C -03E8ACE2703BB5479998FF9FDB782FCB8BDD93A8F9FCC0FF78047D126586389E -EDD1C0DDFB2F4AA4A4F92FA9FBBF6E7306688216302CF01B888EAB6BF625F48F -B314259BC95E737EB2D696B9DFFF046B144908F92B326F6B7182949E41ED3D43 -691586CBC9C3A31E708B7E56D64A8AE2E35FA5E5D9B9967FAA56F743E7883534 -7A93AF64A8D31AD8B8EEC15BC6B0D249274BB276B838A3A206683CDB1F12F1BE -B6804393D87D68BF458D3960AE2B76E1F6E0E3F74304F00449D3719B2F35181E -9A996906CE7F247B3DF57A5FB637EE0C7B35AE91D5BFE03B40E39F671B3B52E3 -1ADC6239070B8ED5DC2961F9C1001DAD109544D0DFF294EF2165C3FDDC571DBC -E766F187B81D9EEC6313D9A6010358A180BCE2C063FC580AEEF0718804CF3325 -8A69771159238B29A3E959C05E38A9DC5939DAA5E783C19868D199F3C991E2D0 -62DC5350F2A5C5DA66AF2F8A5C687707524745428D6E7D8B8D24DD15196F7830 -DE63E95D168DFFDC112031F29AA5E765ECE79B8A0CE1F96148A9C2455A4947F1 -D007263A8ABD2330C62563886DA76F7CD87638C365B043A93E87EE98F2D27C5B -BC93B0CC11A666AA6ED0F95A9891938016ECFA4EF16260D28995EE47504B17E6 -7F1DCEBEE1C56F473D8CF286DFB9526DB732B12B2105C613E1C777B58FC7F52B -8624B82F45180D446419361725705E3A9006271D8C9068F5522EF78D5CCC445F -47EF499D5911A3665B24CC87E506BBA233D6F3C4F5225BA5B8FC06D0C86D1FB8 -F95FA5E76EB1DE3154760CA228ACD5AE6B05C112C1A81469A16AFD08E90341EA -2823613A21DBA8CFC9C5B470987A4350512FC5618E2C658537E102EE3C06AD4C -8462E4A9A8AD7F09CAB3CF7DB17E4E866EDC2E9079596FCE7C37FDB0BE98DA7B -1BCEE24B17E3E2B9784FDDD1EDCEA9278AED38263A53C2794BB7786C1BB562C5 -528910591E938EC93F03B68C778285626FA2903F4EDDEA811A1506C7A54AE9B0 -B7E7967BF4A28DE6708A2BE277C0638C919ECF957250B6552FF939A330AF274D -F310EF7998A8AC86B74A9EF60A4322A681B81CBBC14B41473A082B261E736360 -BB164F94A1F024DDF2127667BE95143C8F2FBC53F986D8630124150570FF290F -6BCEC76265E5BE94B1128CC1BD9D9339582385E6F14F0B0B432C9F59D1EB8D6E -CEE837937A4B71A12A8CFC9C1AA9EF3FDFD71614F310E50516F0CF6BF5A36505 -3C5270397145C6E1638F7E10EA433A1340E5A37D9DDDECDD069DF24EDFCDA059 -28753746323B9CB0EE82A04F86750F36444D95C13E0D627DE5A8A2C64E2678B5 -94693CF6A615907673907EBAC541C1739B69B3CAFB3FCF8AA42D7B50E44D017D -417DB62E4D310F918667FEC8B2929DA904FB3FA135EA5ED25ADA9A2EBCB26222 -F7CF0464CCC67641550CEC8041E1843C6E597502E7797B2A5A2C0C370E241C8F -A6C45B6D2F6BCEE594D2101E27747A33B51FFBFE4B0659263BB49EFD52A8277D -33DAE63725EE2B419E9AE12E32B8E8F2B2B4414AB988ABF2DD310C4CE9DD2AE2 -351DE42586443A19A2FACA7B4B318DFD913A23A32B535E2E0D7D8989769FA718 -3F0BA53571916F16FBAEEAC5B121F01E5E3F7E6CD9D39CAD84AD6CBC5C17F524 -173F2A95B075972E6D3B96941C8F195ED59AEA0F26B8569855D860DEA60D5D02 -238292A5E8EFAE83542C9B56FFCA6812F24C8725F69CBA0AD3C66EB4EDD38AAC -4337C73BB998D5BCBB2E6FC9F19158A166831AF3635055EAA1014DEA1B6D1ADA -08ACA143B20421C3B64F9B4EA66E24DDB2695320B062FD6855EED521CA21BF09 -BBBF3B823FFFE3C05590AF9EDE4BF6424EA5C2A7EAC644884F81A5CD474824C8 -BDCF578A4657DC0BEA2AF7D18AC1175CD3C1A2591EF04FF6C7FD7164123EBA4D -645536283838B58C73465712D64A8B72C16C0C0C673ECDB5492D6C7873B7950F -DC6F2FE3026B485993A137098C25AB18569636D9B13C493874175B801C5FBDC1 -B47A376F33DECD9661611F49639A08E1B3F795936D69EC15FBEC9FCBE27ACE05 -079F48790BE8125413935F30DCA510D67E1B22D194CC1BC37CDF962ACC5936BC -BBE0116949F2BD6948EA5AD013D1EE5F7D43EC9D2353B0B4B28182F182DEF07E -1194C50287CA714F13174AB05C8039976AEF887B5BE31C8C32A69669B150F9A5 -B141702B599AD475AC67C1FB47715D3835607F7D031D848FC81EC56F98404EA9 -127914E462FC0730094D15CC7C91E64B6FABA6548F33E4F3C861CBFFCE6A821C -C6943660A34D8987DBB773F5FDD049FF35A07B02E123B519F0F7C5CCD98B7AE9 -A02B3DD408B7D104FD948E1236B3E441674665E1C771E608FBF022EEBD0299F4 -E7A0124E682C9C62BB1C006790B3E6222ADC8A1AE1A1329C313EFB57EC84C647 -783EC7AE1DACCC8BC930001C99A83DE5D4D08C310C6127D497B43EFA53B1F81C -DC9BD68F471F867B23739E7AA28D30194B0D5317363659FD150E29E7772A9237 -FBCC77BF1B3DF36EA73FA28F96DDD9358E7ABF548F2028953241FAFA0FED3752 -554B3FE7DFB62512B7B06B7EF2647519455D807554447AA44324071C9CCA419E -F0C46FFD7F5B449ECA6DFAB353CC68EDC2B0088C6A210632830A15F3269B5EE4 -BEE60F0DA14BFEA47D2037CE675E927635F557C3FCAC72E86D3EED76C775DD23 -F6179847F14D6610FEB46955BA80DFCA275D1F38A52C5D14A5B6D8006102C770 -7E4403FE193F53FE01257E719D68D5CE40998F5459A237270DB56D917F5864FC -8394901137601E1446007478B0E2F11470DF485FC5E8DA76071E3CD9DFBA4DCB -1CB37DB923AB176BFA0B6AF8CCD81AE6BAF740D624BCF19FCF42557047DD9FFC -BEF916AD3317F07CC9A2CF905873FF1B44B64418D5EDF4F00EDAF815923A51CE -D937859981C4F2D80EC453E26C1DB9B624E308E63A438AF9849E75E23B3219BC -37597E9DEE70EC70047AFD2BA3D6DFBAEA39160AE763D187B0EBD2D68687640C -6CC72FBF8C6C611DD1C7421E47D02164D498563C04DEF61101EE19358B572F1E -4C1D58C540A72967A6E389EA2B95F70AA52CE8FE766DE185B3FAF40911056AA7 -54E5C0DFAC0D810F2D81868E650F71F86143AB13E820228A397ECC70F890229B -3795985566C4E13BCA04D129F8E475146A44D99C4AF3B4BF405AB0CD00884EE0 -A53CCFD9D73C60530581C62186CC522707ABE23BACFC11CFE9B031C91B826DCB -F1016E7EC3A16208A1B9ADD7F6FB97919380B5ED99D4B3191C94321E831B3C2D -219F98DA7D2B0187358D7BEF51BEBCC21025B8E0FE2D4B076E5BDA10BD6B2C03 -0B1A2A3FAD780DFCF53DA3B88901F06184CE9AFA9CA77459F1151040C1C541C5 -E1B595393F6B36F3714BF932E140B36FC82D4CBCAC24D1A9DD51626832ACF3A4 -F4ECFA6ECD78093E352D4CC43C513C3AEE3A831E03B459C7EB025044824F9C83 -A40E3B55DC12884479DE0290BE8106266AAA3D0B5EF37323F246BC4F27B9BFB3 -B312A4499DA15C4A9D0BA788 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -TeXDict begin 39158280 55380996 1000 600 600 (adasockets.dvi) -@start /Fa 136[55 41 43 30 30 30 41 43 38 43 64 21 41 -1[21 43 38 23 34 43 34 43 38 11[58 55 43 57 1[52 2[70 -48 2[28 58 60 50 52 59 55 54 58 7[38 38 38 38 38 38 38 -38 38 38 3[21 44[{}49 74.7198 /CMR9 rf /Fb 209[24 46[{}1 -74.7198 /CMTI9 rf /Fc 134[39 1[39 39 39 39 39 39 1[39 -39 39 39 39 39 1[39 39 39 39 39 39 39 1[39 1[39 8[39 -39 39 39 39 1[39 39 39 39 39 39 1[39 39 39 39 39 39 39 -39 39 18[39 46[{}43 74.7198 /CMTT9 rf /Fd 133[40 48 48 -66 48 51 35 36 36 1[51 45 51 76 25 48 1[25 51 45 28 40 -51 40 1[45 12[66 51 1[71 62 71 68 83 57 3[68 71 2[69 -66 1[68 65[{}36 90.9091 /CMSL10 rf /Fe 214[35 35 40[{}2 -90.9091 /CMSS10 rf /Ff 134[56 56 1[56 56 54 42 55 1[51 -58 56 68 47 2[27 3[51 1[54 1[56 13[56 73 1[67 10[67 75 -68[{}21 90.9091 /CMCSC10 rf /Fg 134[60 1[83 60 64 45 -45 47 1[64 57 64 95 32 60 1[32 64 57 35 53 64 51 1[56 -10[87 88 1[64 86 1[78 86 90 109 69 2[43 90 90 72 75 88 -83 81 87 53[67 11[{}40 99.6264 /CMBX10 rf /Fh 134[52 -3[52 52 1[52 1[52 52 52 4[52 2[52 52 52 52 99[{}12 99.6264 -/CMTT10 rf /Fi 134[65 65 89 65 68 48 48 50 1[68 61 68 -102 34 65 1[34 68 61 37 56 68 55 1[60 10[93 94 1[68 92 -1[84 92 96 116 74 2[46 96 96 3[89 87 93 12[61 61 61 61 -2[34 41 3[48 48 28[72 11[{}46 109.091 /CMBX12 rf /Fj -133[48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 1[48 -48 48 48 48 48 48 48 48 48 48 1[48 1[48 1[48 1[48 48 -48 48 48 48 1[48 48 48 48 48 48 1[48 48 48 48 48 48 48 -48 48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 48 48 48 4[48 34[{}76 90.9091 /CMTT10 -rf /Fk 209[28 46[{}1 90.9091 /CMTI10 rf /Fl 209[43 46[{}1 -119.552 /CMBXTI10 rf /Fm 135[85 2[90 63 64 66 1[90 81 -90 134 45 85 1[45 90 81 49 74 90 72 90 78 9[167 1[124 -112 90 120 3[126 153 3[60 5[117 115 122 1[76 8[81 81 -81 81 81 81 2[45 46[{}39 143.462 /CMBX12 rf /Fn 240[45 -1[91 13[{}2 90.9091 /CMSY10 rf /Fo 135[71 1[71 75 52 -53 55 1[75 67 75 112 37 71 1[37 75 67 1[61 75 60 75 65 -9[139 102 103 94 75 100 1[92 1[105 128 81 2[50 105 106 -85 88 1[97 96 102 1[64 5[67 1[67 67 67 67 67 67 67 2[37 -46[{}48 119.552 /CMBX12 rf /Fp 133[40 48 48 66 48 51 -35 36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 -51 45 25 2[25 1[25 1[68 1[93 68 68 66 51 67 71 62 71 -68 83 57 71 47 33 68 71 59 62 69 66 64 68 1[43 3[25 25 -45 45 45 45 45 45 45 45 45 45 45 25 30 25 2[35 35 25 -24[76 51 51 53 11[{}77 90.9091 /CMR10 rf /Fq 138[108 -75 76 79 2[97 108 161 54 102 4[59 88 108 86 1[94 13[108 -17[146 65[{}16 172.154 /CMBX12 rf end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%PaperSize: A4 - end -%%EndSetup -%%Page: 1 1 -TeXDict begin 1 0 bop 150 1318 a Fq(AdaSo)5 b(c)-5 b(k)g(ets)65 -b(reference)h(man)-5 b(ual)p 150 1385 3600 34 v 2557 -1481 a Fp(for)30 b(AdaSo)s(c)m(k)m(ets)i(v)m(ersion)e(1.8.4.7)3242 -1589 y(16)i(Ma)m(y)f(2004)150 5091 y Fo(Sam)l(uel)46 -b(T)-11 b(ardieu)p 150 5141 3600 17 v eop end -%%Page: 2 2 -TeXDict begin 2 1 bop 150 4480 a Fp(Cop)m(yrigh)m(t)602 -4477 y(c)577 4480 y Fn(\015)30 b Fp(2002-2004)k(Sam)m(uel)d(T)-8 -b(ardieu)150 4615 y(P)m(ermission)32 b(is)h(gran)m(ted)g(to)f(mak)m(e)i -(and)d(distribute)h(v)m(erbatim)h(copies)g(of)f(this)g(man)m(ual)h(pro) -m(vided)f(the)150 4725 y(cop)m(yrigh)m(t)g(notice)f(and)f(this)g(p)s -(ermission)g(notice)h(are)g(preserv)m(ed)f(on)h(all)g(copies.)150 -4859 y(P)m(ermission)38 b(is)h(gran)m(ted)f(to)h(cop)m(y)g(and)f -(distribute)g(mo)s(di\014ed)f(v)m(ersions)h(of)h(this)f(man)m(ual)g -(under)f(the)150 4969 y(conditions)42 b(for)g(v)m(erbatim)h(cop)m -(ying,)j(pro)m(vided)41 b(also)i(that)g(the)f(en)m(tire)h(resulting)f -(deriv)m(ed)g(w)m(ork)g(is)150 5078 y(distributed)29 -b(under)g(the)i(terms)f(of)h(a)f(p)s(ermission)g(notice)h(iden)m(tical) -h(to)g(this)e(one.)150 5213 y(P)m(ermission)j(is)h(gran)m(ted)f(to)h -(cop)m(y)g(and)f(distribute)f(translations)i(of)g(this)f(man)m(ual)g -(in)m(to)h(another)f(lan-)150 5322 y(guage,)f(under)d(the)h(ab)s(o)m(v) -m(e)i(conditions)f(for)f(mo)s(di\014ed)f(v)m(ersions.)p -eop end -%%Page: -1 3 -TeXDict begin -1 2 bop 3725 -116 a Fp(i)150 299 y Fm(T)-13 -b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fo(1)135 b(What)45 -b(is)g(AdaSo)t(c)l(k)l(ets?)40 b Fl(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h -(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)85 -b Fo(1)150 911 y(2)135 b(Installing)46 b(AdaSo)t(c)l(k)l(ets)31 -b Fl(.)19 b(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h -(.)f(.)h(.)f(.)h(.)f(.)75 b Fo(3)150 1181 y(3)135 b(Using)45 -b(AdaSo)t(c)l(k)l(ets)13 b Fl(.)20 b(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.) -h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)57 -b Fo(5)449 1318 y Fp(3.1)92 b(Compiling)30 b(an)h(Ada)f(application)15 -b Fk(.)h(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)45 b Fp(5)449 -1427 y(3.2)92 b(Setting)31 b(up)e(unicast)i(so)s(c)m(k)m(ets)10 -b Fk(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40 -b Fp(5)449 1537 y(3.3)92 b(Setting)31 b(up)e(m)m(ulticast)j(so)s(c)m(k) -m(ets)12 b Fk(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)41 -b Fp(5)449 1646 y(3.4)92 b(Sending)29 b(and)h(receiving)i(data)11 -b Fk(.)k(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41 -b Fp(6)748 1756 y(3.4.1)93 b(Ra)m(w)30 b(data)h(manipulation)26 -b Fk(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Fp(6)748 1866 -y(3.4.2)93 b(String-orien)m(ted)31 b(exc)m(hanges)e Fk(.)15 -b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)58 b Fp(6)150 2108 y Fo(4)135 b(So)t(c)l(k)l(ets)45 -b(pac)l(k)-7 b(age)12 b Fl(.)20 b(.)g(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f -(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.) -56 b Fo(7)748 2245 y Fp(Accept)p 1027 2245 28 4 v 34 -w(So)s(c)m(k)m(et)32 b(\(pro)s(cedure\))18 b Fk(.)c(.)h(.)g(.)g(.)g(.)g -(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)48 b Fp(7)748 2355 y(Bind)30 b(\(pro)s(cedure\))12 -b Fk(.)i(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)42 b Fp(8)748 2464 y(Connect)30 b(\(pro)s(cedure\))f -Fk(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -59 b Fp(8)748 2574 y(Get)31 b(\(function\))24 b Fk(.)15 -b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)54 b Fp(9)748 2683 y(Get)p 899 2683 V -34 w(Char)29 b(\(function\))16 b Fk(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Fp(9)748 2793 y(Get)p -899 2793 V 34 w(Line)30 b(\(pro)s(cedure\))16 b Fk(.)e(.)h(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)45 b Fp(10)748 -2902 y(Get)p 899 2902 V 34 w(Line)30 b(\(function\))e -Fk(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.) -56 b Fp(11)748 3012 y(Getso)s(c)m(k)m(opt)33 b(\(pro)s(cedure\))12 -b Fk(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)42 -b Fp(11)748 3122 y(Listen)30 b(\(pro)s(cedure\))d Fk(.)15 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 -b Fp(12)748 3231 y(New)p 927 3231 V 33 w(Line)30 b(\(pro)s(cedure\))23 -b Fk(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)53 -b Fp(12)748 3341 y(Put)30 b(\(pro)s(cedure\))11 b Fk(.)j(.)h(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40 -b Fp(13)748 3450 y(Put)p 901 3450 V 32 w(Line)30 b(\(pro)s(cedure\))15 -b Fk(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)45 -b Fp(13)748 3560 y(Receiv)m(e)32 b(\(pro)s(cedure\))21 -b Fk(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -50 b Fp(14)748 3670 y(Receiv)m(e)32 b(\(function\))11 -b Fk(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)40 b Fp(14)748 3779 y(Receiv)m(e)p 1050 3779 -V 35 w(Some)30 b(\(pro)s(cedure\))d Fk(.)15 b(.)g(.)g(.)g(.)h(.)f(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)57 b Fp(15)748 3889 y(Send)29 b(\(pro)s(cedure\))10 -b Fk(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)g(.)g(.)39 b Fp(15)748 3998 y(Set)p 879 3998 V 33 -w(Bu\013er)30 b(\(pro)s(cedure\))12 b Fk(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)h(.)f(.)g(.)g(.)g(.)g(.)41 b Fp(16)748 4108 y(Setso)s(c)m(k)m(opt)32 -b(\(pro)s(cedure\))23 b Fk(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)52 b Fp(16)748 4218 y(Sh)m(utdo)m(wn)29 b(\(pro)s(cedure\)) -17 b Fk(.)d(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 -b Fp(17)748 4327 y(So)s(c)m(k)m(et)32 b(\(pro)s(cedure\))20 -b Fk(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -h(.)49 b Fp(17)748 4437 y(Unset)p 983 4437 V 33 w(Bu\013er)30 -b(\(pro)s(cedure\))24 b Fk(.)15 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)54 b Fp(18)150 4679 y Fo(5)135 b(So)t(c)l(k)l(ets.Multicast)46 -b(pac)l(k)-7 b(age)23 b Fl(.)e(.)e(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f -(.)g(.)h(.)f(.)h(.)f(.)68 b Fo(19)748 4816 y Fp(Create)p -1015 4816 V 33 w(Multicast)p 1423 4816 V 35 w(So)s(c)m(k)m(et)32 -b(\(function\))24 b Fk(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)53 b Fp(19)748 4926 -y(Create)p 1015 4926 V 33 w(Multicast)p 1423 4926 V 35 -w(So)s(c)m(k)m(et)32 b(\(function\))24 b Fk(.)15 b(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)53 -b Fp(20)p eop end -%%Page: -2 4 -TeXDict begin -2 3 bop 150 -116 a Fp(ii)2390 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)150 83 y Fo(6)135 b(So)t(c)l(k)l(ets.Naming)47 -b(pac)l(k)-7 b(age)41 b Fl(.)20 b(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g -(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)86 b Fo(21)748 220 y Fp(Address)p -1071 220 28 4 v 31 w(Of)30 b(\(function\))23 b Fk(.)15 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)52 -b Fp(21)748 330 y(An)m(y)p 917 330 V 33 w(Address)29 -b(\(function\))11 b Fk(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)41 b Fp(22)748 439 y(Get)p 899 439 V 34 w(P)m(eer)p -1108 439 V 33 w(Addr)29 b(\(function\))15 b Fk(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)44 b Fp(22)748 549 y(Get)p 899 549 -V 34 w(P)m(eer)p 1108 549 V 33 w(P)m(ort)31 b(\(function\))f -Fk(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)58 -b Fp(22)748 658 y(Get)p 899 658 V 34 w(So)s(c)m(k)p 1117 -658 V 33 w(Addr)29 b(\(function\))10 b Fk(.)16 b(.)f(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)40 b Fp(23)748 768 y(Get)p 899 768 -V 34 w(So)s(c)m(k)p 1117 768 V 33 w(P)m(ort)31 b(\(function\))25 -b Fk(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h -(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 -b Fp(23)748 878 y(Host)p 937 878 V 33 w(Name)31 b(\(function\))23 -b Fk(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)52 -b Fp(24)748 987 y(Image)31 b(\(function\))19 b Fk(.)d(.)f(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)48 -b Fp(24)748 1097 y(Info)p 910 1097 V 32 w(Of)p 1041 1097 -V 32 w(Name)p 1302 1097 V 34 w(Or)p 1443 1097 V 32 w(IP)30 -b(\(function\))10 b Fk(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40 -b Fp(24)748 1206 y(Is)p 822 1206 V 32 w(IP)p 949 1206 -V 33 w(Address)29 b(\(function\))17 b Fk(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)46 b Fp(25)748 1316 y(Name)p 982 1316 -V 33 w(Of)30 b(\(function\))23 b Fk(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)52 b Fp(25)748 1425 y(V)-8 -b(alue)31 b(\(function\))e Fk(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h -(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)57 b Fp(25)150 -1668 y Fo(App)t(endix)44 b(A)134 b(Con)l(tributors)21 -b Fl(.)g(.)e(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.) -g(.)h(.)66 b Fo(27)150 1938 y(App)t(endix)44 b(B)134 -b(Resources)45 b(on)g(the)h(In)l(ternet)13 b Fl(.)20 -b(.)f(.)h(.)f(.)h(.)f(.)58 b Fo(29)150 2208 y(Index)37 -b Fl(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h -(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) -h(.)f(.)g(.)h(.)f(.)82 b Fo(31)p eop end -%%Page: 1 5 -TeXDict begin 1 4 bop 150 -116 a Fp(Chapter)30 b(1:)41 -b(What)31 b(is)f(AdaSo)s(c)m(k)m(ets?)2245 b(1)150 299 -y Fm(1)80 b(What)54 b(is)f(AdaSo)t(c)l(k)l(ets?)275 533 -y Fp(AdaSo)s(c)m(k)m(ets)30 b(is)f(a)g(set)g(of)g(free)g(soft)m(w)m -(are)h(Ada)f(pac)m(k)-5 b(ages)31 b(allo)m(wing)g(Ada)d(programmers)h -(to)g(use)g(the)150 643 y(so-called)39 b(BSD)f(so)s(c)m(k)m(ets)h(from) -f(their)f(fa)m(v)m(ourite)i(programming)f(language.)63 -b(AdaSo)s(c)m(k)m(ets)39 b(has)f(b)s(een)150 752 y(designed)29 -b(and)g(tested)h(with)f(the)g(GNA)-8 b(T)30 b(free)g(soft)m(w)m(are)h -(Ada)e(compiler,)h(but)f(should)f(b)s(e)h(p)s(ortable)g(to)150 -862 y(other)i(compilers)f(quite)h(easily)-8 b(.)275 996 -y(Starting)41 b(from)g(release)i(3.14,)j(the)c(GNA)-8 -b(T)42 b(compiler)g(started)g(to)g(in)m(tegrate)h(a)f -Fj(GNAT.Sockets)150 1106 y Fp(pac)m(k)-5 b(age.)64 b(Ho)m(w)m(ev)m(er,) -41 b(this)d(pac)m(k)-5 b(age)39 b(is)f(GNA)-8 b(T)38 -b(sp)s(eci\014c)f(and)g(con)m(tains)h(at)g(this)g(time)g(less)g -(features)150 1215 y(than)j(AdaSo)s(c)m(k)m(ets.)73 b(A)m(t)42 -b(some)f(p)s(oin)m(t,)i(AdaSo)s(c)m(k)m(ets)g(ma)m(y)e(use)f -Fj(GNAT.Sockets)e Fp(as)j(its)g(underlying)150 1325 y(so)s(c)m(k)m(ets) -32 b(structure.)275 1460 y(AdaSo)s(c)m(k)m(ets)c(philosoph)m(y)e(is)h -(to)h(help)e(the)h(Ada)g(programmer)g(b)m(y)f(pro)m(viding)h -(easy-to-use)i(ob)5 b(jects.)150 1569 y(Sp)s(ecial)31 -b(care)g(has)f(b)s(een)g(tak)m(en)h(to)g(ensure)f(that)h(p)s -(erformances)e(do)i(ho)m(w)m(ev)m(er)g(remain)g(go)s(o)s(d.)p -eop end -%%Page: 2 6 -TeXDict begin 2 5 bop 150 -116 a Fp(2)2395 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)p eop end -%%Page: 3 7 -TeXDict begin 3 6 bop 150 -116 a Fp(Chapter)30 b(2:)41 -b(Installing)31 b(AdaSo)s(c)m(k)m(ets)2232 b(3)150 299 -y Fm(2)80 b(Installing)53 b(AdaSo)t(c)l(k)l(ets)275 533 -y Fp(Installing)42 b(AdaSo)s(c)m(k)m(ets)h(on)e(a)h(Unix)g(or)f(Op)s -(enVMS)f(mac)m(hine)j(is)e(as)h(simple)f(as)h(t)m(yping)g(a)g(few)150 -643 y(commands.)h(Once)31 b(y)m(ou)h(got)g(the)f(latest)i(v)m(ersion)f -(of)f(AdaSo)s(c)m(k)m(ets)i(\(see)f(App)s(endix)e(B)h([Resources)h(on) -150 752 y(the)37 b(In)m(ternet],)i(page)e(29\),)i(uncompress)d(and)g -(un)m(tar)g(it)h(and)f(go)h(to)h(the)e(top-lev)m(el)j(directory)e(of)g -(the)150 862 y(distribution.)275 996 y(Y)-8 b(ou)25 b(m)m(ust)f -(con\014gure)h(the)g(AdaSo)s(c)m(k)m(ets)h(distribution)e(b)m(y)h -(using)f(the)h Fj(configure)d Fp(command,)k(suc)m(h)150 -1106 y(as)31 b(in:)390 1235 y Fj(./configure)45 b -(--prefix=/users/sam/ada)o(sock)o(ets)275 1369 y Fp(If)36 -b(y)m(ou)i(w)m(an)m(t)g(to)g(install)g(AdaSo)s(c)m(k)m(ets)g(under)e -(the)h(`)p Fj(/usr/local)p Fp(')e(hierarc)m(h)m(y)-8 -b(,)40 b(y)m(ou)e(do)f(not)g(need)150 1479 y(to)46 b(sp)s(ecify)f(the)h -(`)p Fj(--prefix)p Fp(')d(option.)87 b(Mak)m(e)47 b(sure)d(y)m(ou)i(ha) -m(v)m(e)h(write)e(p)s(ermission)g(on)g(the)g(target)150 -1588 y(directories.)275 1723 y(Once)34 b(AdaSo)s(c)m(k)m(ets)h(is)f -(con\014gured,)h(y)m(ou)f(can)g(compile)h(and)f(install)h(it)f(b)m(y)g -(using)g(the)g Fj(make)f Fp(com-)150 1832 y(mand:)390 -1961 y Fj(make)47 b(install)275 2095 y Fp(The)31 b(GNU)h(mak)m(e)h -(program)e(is)h(recommended)f(but)g(not)h(mandatory)-8 -b(.)45 b(On)31 b(y)m(our)h(system,)g(it)g(ma)m(y)150 -2205 y(b)s(e)e(installed)h(under)e(the)h Fj(gmake)f Fp(name.)p -eop end -%%Page: 4 8 -TeXDict begin 4 7 bop 150 -116 a Fp(4)2395 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)p eop end -%%Page: 5 9 -TeXDict begin 5 8 bop 150 -116 a Fp(Chapter)30 b(3:)41 -b(Using)30 b(AdaSo)s(c)m(k)m(ets)2379 b(5)150 299 y Fm(3)80 -b(Using)53 b(AdaSo)t(c)l(k)l(ets)150 615 y Fo(3.1)68 -b(Compiling)46 b(an)f(Ada)g(application)275 801 y Fp(AdaSo)s(c)m(k)m -(ets)29 b(comes)f(with)g(an)f Fj(adasockets-config)c -Fp(application)29 b(that)f(can)g(b)s(e)f(used)g(to)i(retriev)m(e)150 -911 y(installation)46 b(parameters)f(while)f(using)g -Fj(gnatmake)e Fp(to)j(compile)g(y)m(our)f(Ada)h(application.)83 -b(The)44 b Fj(-)150 1021 y(-cflags)e Fp(parameters)i(tells)h -Fj(adasockets-config)39 b Fp(to)44 b(output)f(the)h(path)g(to)g(the)g -(Ada)g(pac)m(k)-5 b(ages)150 1130 y(sources,)31 b(while)f -Fj(--libs)f Fp(asks)h(for)g(the)h(path)f(to)h(the)g(Ada)f(library)-8 -b(.)390 1253 y Fj(gnatmake)46 b(`adasockets-config)c(--cflags`)k -(mainprog)485 1357 y(-largs)h(`adasockets-config)42 b(--libs`)150 -1597 y Fo(3.2)68 b(Setting)46 b(up)e(unicast)h(so)t(c)l(k)l(ets)275 -1783 y Fp(Unicast)34 b(so)s(c)m(k)m(ets)g(are)g(used)e(ev)m(erywhere)i -(on)f(the)g(In)m(ternet,)h(for)f(sur\014ng)e(the)j(w)m(eb,)g(sending)e -(elec-)150 1893 y(tronic)f(mails)g(or)f(accessing)i(remote)f(\014les.) -41 b(They)30 b(come)h(in)f(t)m(w)m(o)i(\015a)m(v)m(ours:)150 -2041 y(TCP)286 b(TCP)32 b(is)g(a)h(connected)g(mo)s(de,)g(in)f(whic)m -(h)h(pac)m(k)m(ets)h(are)f(sen)m(t)g(in)f(a)h(reliable)h(and)e(ordered) -630 2150 y(w)m(a)m(y)-8 b(.)41 b(Ev)m(erything)29 b(sen)m(t)f(at)h(one) -g(end)e(will)i(ev)m(en)m(tually)h(arriv)m(e)f(in)e(the)i(same)f(order)g -(at)h(the)630 2260 y(other)c(end,)g(the)g(underlying)f(op)s(erating)h -(system)f(tak)m(es)j(care)e(of)g(retransmitting)g(missing)630 -2369 y(pac)m(k)m(ets)32 b(and)e(reordering)g(out-of-order)h(ones.)150 -2517 y(UDP)281 b(UDP)26 b(is)f(a)h(non-connected)f(mo)s(de.)39 -b(A)25 b(pac)m(k)m(et)j(sen)m(t)d(on)g(a)h(UDP)g(so)s(c)m(k)m(et)h(ma)m -(y)f(or)f(ma)m(y)h(not)630 2627 y(arriv)m(e)32 b(at)h(the)f(other)g -(end.)44 b(This)31 b(is)g(a)h(m)m(uc)m(h)g(ligh)m(ter)h(proto)s(col)g -(when)d(reliabilit)m(y)k(is)e(not)630 2736 y(needed)k(as)h(the)g(op)s -(erating)g(system)g(do)s(es)g(not)g(ha)m(v)m(e)h(to)f(use)g(large)g -(bu\013ers)f(to)h(reorder)630 2846 y(pac)m(k)m(ets.)k(Also,)29 -b(this)e(generates)i(less)e(tra\016c)h(as)f(no)g(ac)m(kno)m(wledgmen)m -(ts)i(need)e(to)h(b)s(e)e(sen)m(t)630 2955 y(b)m(y)k(the)h(k)m(ernels.) -275 3103 y(The)f(pac)m(k)-5 b(age)33 b Fj(Sockets)c Fp(de\014nes)h(a)i -Fj(Socket_FD)c Fp(tagged)33 b(t)m(yp)s(e.)43 b(An)30 -b(instance)i(of)f(this)g(t)m(yp)s(e)g(\(or)h(of)150 3213 -y(an)m(y)i(of)f(its)h(descendan)m(ts\))g(represen)m(ts)f(an)g(incoming) -h(or)g(outgoing)g(so)s(c)m(k)m(et.)52 b(Tw)m(o)34 b(di\013eren)m(t)f -(kinds)g(of)150 3322 y(so)s(c)m(k)m(ets)f(can)f(b)s(e)e(created:)42 -b(unicast)31 b(\(one-to-one\))i(and)d(m)m(ulticast)i(\(man)m(y-to-man)m -(y\).)150 3562 y Fo(3.3)68 b(Setting)46 b(up)e(m)l(ulticast)j(so)t(c)l -(k)l(ets)275 3749 y Fp(Multicast)30 b(so)s(c)m(k)m(ets)f(are)g(used)f -(for)g(group)f(comm)m(unication)j(o)m(v)m(er)g(the)e(In)m(ternet.)41 -b(T)-8 b(o)28 b(use)g(m)m(ulticast)150 3858 y(so)s(c)m(k)m(ets,)c(y)m -(ou)d(m)m(ust)g(b)s(e)f(connected)h(to)g(a)g(m)m(ulticast)h(net)m(w)m -(ork)g(and)e(use)g(a)h(m)m(ulticast-enabled)h(op)s(erating)150 -3968 y(system)42 b(\(suc)m(h)f(as)h(most)g(Unices,)j(Lin)m(ux)c(or)h -(ev)m(en)g(recen)m(t)h(Windo)m(ws)e(v)m(ersions\).)75 -b(Unless)42 b(y)m(ou)g(are)150 4077 y(connected)36 b(to)h(the)f(m)m(b)s -(one)f(\(m)m(ulticast)i(bac)m(kb)s(one\))f(or)g(ha)m(v)m(e)h(setup)e(a) -h(priv)-5 b(ate)36 b(m)m(ulticast)h(net)m(w)m(ork,)150 -4187 y(y)m(ou)31 b(will)f(only)h(b)s(e)f(able)h(to)g(use)f(m)m -(ulticast)i(on)e(y)m(our)g(lo)s(cal)i(net)m(w)m(ork.)275 -4316 y(A)f(m)m(ulticast)i(so)s(c)m(k)m(et)g(is)e(somewhat)h(similar)g -(to)g(a)g(UDP)f(so)s(c)m(k)m(et;)j(in)d(particular,)h(pac)m(k)m(ets)i -(ma)m(y)e(b)s(e)150 4425 y(lost)f(or)g(misordered.)275 -4554 y(Y)-8 b(ou)30 b(can)h(create)g(a)g(m)m(ulticast)g(so)s(c)m(k)m -(et)h(using)e(the)g(function)g Fj(Create_Multicast_Socket)24 -b Fp(in)30 b(the)150 4663 y(pac)m(k)-5 b(age)27 b Fj(Sockets.Multicast) -p Fp(.)35 b(This)24 b(function)h(returns)f(a)i Fj(Multicast_Socket_FD) -20 b Fp(ob)5 b(ject,)27 b(whic)m(h)150 4773 y(deriv)m(es)k(from)f -Fj(Socket_FD)p Fp(.)275 4902 y Fj(Create_Multicast_Socket)22 -b Fp(tak)m(es)31 b(care)f(of)g(the)f(whole)h(setup)f(of)g(y)m(our)g(m)m -(ulticast)i(so)s(c)m(k)m(et.)42 b(Y)-8 b(ou)150 5011 -y(do)39 b(not)h(need)g(to)g(call)h(an)m(y)f(additionnal)g(subprogram)e -(b)s(efore)h(using)g(it.)69 b(In)38 b(particular,)43 -b Fj(Create_)150 5121 y(Multicast_Socket)17 b Fp(will)23 -b(tak)m(e)g(care)g(of)f(registering)h(the)f(m)m(ulticast)i(so)s(c)m(k)m -(et)f(to)g(the)f(op)s(erating)h(system,)150 5230 y(so)k(that)g(the)f -(latter)i(can)f(tell)g(the)g(connected)g(routers)f(to)h(propagate)h -(the)e(subscription)g(to)h(the)f(m)m(b)s(one)150 5340 -y(as)31 b(needed.)p eop end -%%Page: 6 10 -TeXDict begin 6 9 bop 150 -116 a Fp(6)2395 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)150 299 y Fo(3.4)68 b(Sending)45 -b(and)f(receiving)i(data)275 491 y Fp(In)21 b(AdaSo)s(c)m(k)m(ets,)26 -b(data)d(can)g(b)s(e)f(sen)m(t)h(and)e(receiv)m(ed)j(in)e(three)h -(di\013eren)m(t)g(w)m(a)m(ys:)37 b(ra)m(w,)25 b(string-orien)m(ted)150 -601 y(and)30 b(stream-orien)m(ted.)150 825 y Fi(3.4.1)63 -b(Ra)m(w)39 b(data)h(manipulation)275 1018 y Fp(Ra)m(w)i(data)i(is)e -(manipulated)g(using)g(the)h(prede\014ned)e Fj(Ada.Streams.Stream_Elem) -o(ent_)o(Arra)o(y)150 1127 y Fp(Ada)27 b(t)m(yp)s(e.)39 -b(This)26 b(corresp)s(onds)f(to)i(an)g(arra)m(y)g(of)f(b)m(ytes,)i(or)f -(an)f Fj(unsigned)i(char)i(*)c Fp(in)g(the)h(C)f(program-)150 -1237 y(ming)k(language.)150 1461 y Fi(3.4.2)63 b(String-orien)m(ted)41 -b(exc)m(hanges)275 1654 y Fp(String-orien)m(ted)23 b(exc)m(hanges)g -(pro)m(vides)f(the)g(programmer)g(with)g Fj(Ada.Text_IO)d -Fp(lik)m(e)k(subprograms.)150 1763 y(Most)43 b(In)m(ternet)f(proto)s -(cols)g(are)h(line-orien)m(ted)g(and)e(those)h(subprograms)f(are)h(p)s -(erfectly)g(suited)f(to)150 1873 y(implemen)m(t)31 b(those.)275 -2007 y(When)h(sending)g(data,)j(the)e(classical)i Fj(CR)29 -b(+)h(LF)j Fp(sequence)g(will)g(b)s(e)f(sen)m(t)i(at)f(the)g(end)f(of)h -(eac)m(h)h(line.)150 2117 y(When)29 b(receiving)i(data,)f -Fj(CR)f Fp(c)m(haracters)i(are)e(discarded)g(and)g Fj(LF)g -Fp(is)g(used)f(as)i(the)g(end-of-line)f(mark)m(er.)275 -2252 y(The)34 b Fj(Get)g Fp(function)g(is)h(tied)g(to)h(the)f(size)g -(of)g(the)g(op)s(erating)g(system)g(bu\013er.)53 b(It)35 -b(is)g(b)s(etter)g(to)g(use)150 2361 y Fj(Get_Line)c -Fp(to)k(get)f(a)g(full)f(line.)51 b(The)33 b(line)h(can)g(b)s(e)f(as)h -(long)g(as)f(the)h(length)g(of)g(the)g(Ada)f(bu\013er.)49 -b(The)150 2471 y(Ada)30 b(bu\013er)g(can)g(b)s(e)g(adjusted)g(b)m(y)g -(using)g(the)h Fj(Set_Buffer)c Fp(and)j Fj(Unset_Buffer)d -Fp(pro)s(cedures.)275 2605 y(When)32 b(using)f(string-orien)m(ted)j -(exc)m(hanges)g(with)e(datagram)h(proto)s(cols)g(suc)m(h)f(as)h(UDP)-8 -b(,)33 b(setting)h(a)150 2715 y(bu\013er)d(using)h Fj(Set_Buffer)e -Fp(for)i(the)g(receiving)i(so)s(c)m(k)m(et)g(is)e(mandatory)-8 -b(.)47 b(If)32 b(y)m(ou)g(don't,)h(the)g(receiving)150 -2824 y(so)s(c)m(k)m(et)f(will)f(lo)s(ose)g(data)g(and)f(will)h(b)s(e)e -(unable)h(to)i(reconstitute)f(the)g(string.)p eop end -%%Page: 7 11 -TeXDict begin 7 10 bop 150 -116 a Fp(Chapter)30 b(4:)41 -b(So)s(c)m(k)m(ets)32 b(pac)m(k)-5 b(age)2460 b(7)150 -299 y Fm(4)80 b(So)t(c)l(k)l(ets)52 b(pac)l(k)-9 b(age)275 -526 y Fp(The)38 b Fj(Sockets)f Fp(pac)m(k)-5 b(age)40 -b(con)m(tains)g(all)g(the)f(de\014nitions)f(and)h(subprograms)e(needed) -h(to)i(build)e(a)150 635 y(simple)30 b(unicast)h(clien)m(t)h(or)e(serv) -m(er.)3137 862 y(So)s(c)m(k)m(ets.So)s(c)m(k)m(et)p 3715 -862 28 4 v 36 w(FD)-3724 b Fh(type)39 b Fg(So)s(c)m(k)m(et)p -731 862 35 5 v 41 w(FD)45 b Fj(is)30 b(tagged)f(private;)390 -972 y Fp(The)23 b Fj(Socket_FD)f Fp(tagged)j(t)m(yp)s(e)f(is)g(the)g -(ro)s(ot)g(t)m(yp)s(e)g(of)g(all)g(so)s(c)m(k)m(ets.)40 -b(It)24 b(gets)h(initialized)h(b)m(y)d(calling)390 1081 -y([So)s(c)m(k)m(et)32 b(\(pro)s(cedure\)],)f(page)g(17.)150 -1301 y Fi(Accept)p 532 1301 37 5 v 43 w(So)s(c)m(k)m(et)40 -b(\(pro)s(cedure\))150 1516 y Ff(Purpose)100 b Fp(Accept)32 -b(an)e(incoming)h(connection)150 1672 y Ff(Pr)n(ototype)2990 -1876 y Fp(So)s(c)m(k)m(ets.Accept)p 3586 1876 28 4 v -36 w(So)s(c)m(k)m(et)-3243 b Fh(procedure)41 b Fg(Accept)p -1497 1876 35 5 v 39 w(So)s(c)m(k)m(et)1045 1985 y Fe(\()p -Fd(So)s(c)m(k)m(et)34 b Fj(:)c(Socket_FD)n(;)g Fd(New)p -2135 1985 28 4 v 33 w(So)s(c)m(k)m(et)k Fj(:)c(out)f(Socket_FD)n -Fe(\))p Fj(;)150 2212 y Ff(P)-8 b(arameters)630 2322 -y Fd(So)s(c)m(k)m(et)389 b Fp(in)360 b(Initialized)630 -2431 y Fd(New)p 809 2431 V 33 w(So)s(c)m(k)m(et)182 b -Fp(out)305 b(Incoming)30 b(so)s(c)m(k)m(et)i(ob)5 b(ject)150 -2588 y Ff(Description)630 2697 y Fp(This)31 b(pro)s(cedure)g(creates)i -(a)g(new)e(so)s(c)m(k)m(et)j(corresp)s(onding)d(to)h(an)g(incoming)h -(connection)630 2807 y(on)i(TCP)f(so)s(c)m(k)m(et)j Fd(So)s(c)m(k)m(et) -p Fp(.)56 b(All)35 b(the)h(comm)m(unications)g(with)f(the)g(p)s(eer)f -(will)h(tak)m(e)i(place)630 2916 y(on)30 b Fd(New)p 935 -2916 V 33 w(So)s(c)m(k)m(et)p Fp(,)i(while)f(the)f(program)g(can)h -(accept)h(another)f(connection)g(on)f Fd(So)s(c)m(k)m(et)p -Fp(.)630 3049 y Fd(New)p 809 3049 V 33 w(So)s(c)m(k)m(et)j -Fp(m)m(ust)d(not)f(b)s(e)g(initialized)j(b)s(efore)d(calling)i(this)f -(pro)s(cedure,)f(or)g(m)m(ust)h(ha)m(v)m(e)630 3159 y(b)s(een)g -(cleaned)h(up)e(b)m(y)h(calling)i Fj(Shutdown)p Fp(,)d(in)h(order)g(to) -h(a)m(v)m(oid)h(a)e(\014le)h(descriptors)f(leak.)630 -3292 y Fj(Accept_Socket)20 b Fp(will)k(blo)s(c)m(k)h(un)m(til)f(an)g -(incoming)g(connection)h(is)f(ready)g(to)g(b)s(e)f(accepted.)150 -3449 y Ff(Example)870 3576 y Fj(declare)1013 3680 y(Sock)238 -b(:)47 b(Socket_FD;)1013 3783 y(Incoming)f(:)h(Socket_FD;)870 -3887 y(begin)1013 3991 y(--)g(Create)f(a)i(TCP)f(socket)f(listening)f -(on)i(local)g(port)f(4161)1013 4095 y(Socket)g(\(Sock,)g(PF_INET,)g -(SOCK_STREAM\);)1013 4198 y(Bind)h(\(Sock,)f(4161\);)1013 -4302 y(Listen)g(\(Sock,)g(3\);)1013 4406 y(--)h -(One-connection-at-a-time)42 b(server)k(\(3)h(may)g(be)g(pending\))1013 -4510 y(loop)1156 4614 y(--)h(Wait)e(for)h(a)h(new)e(connection)f(and)i -(accept)f(it)1156 4717 y(Accept_Socket)f(\(Sock,)h(Incoming\);)1156 -4821 y(--)i(Do)f(some)f(dialog)g(with)h(the)g(remote)f(host)1156 -4925 y(Do_Some_Dialog)e(\(Incoming\);)1156 5029 y(--)k(Close)e -(incoming)f(socket)i(and)f(wait)h(for)g(next)g(connection)1156 -5132 y(Shutdown)f(\(Incoming\);)1013 5236 y(end)h(loop;)870 -5340 y(end;)p eop end -%%Page: 8 12 -TeXDict begin 8 11 bop 150 -116 a Fp(8)2395 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)150 299 y Ff(See)i(also)86 b -Fp([Bind)30 b(\(pro)s(cedure\)],)h(page)g(8,)630 408 -y([Listen)g(\(pro)s(cedure\)],)f(page)h(12,)630 518 y([Sh)m(utdo)m(wn)e -(\(pro)s(cedure\)],)i(page)g(17,)630 628 y([So)s(c)m(k)m(et)h(\(pro)s -(cedure\)],)f(page)g(17.)150 835 y Fi(Bind)42 b(\(pro)s(cedure\))150 -1041 y Ff(Purpose)100 b Fp(Asso)s(ciate)32 b(a)f(lo)s(cal)g(p)s(ort)f -(to)h(a)g(so)s(c)m(k)m(et)150 1189 y Ff(Pr)n(ototype)3365 -1376 y Fp(So)s(c)m(k)m(ets.Bind)-3243 b Fh(procedure)41 -b Fg(Bind)k Fe(\()p Fd(So)s(c)m(k)m(et)34 b Fj(:)c(Socket_FD)n(;)1045 -1486 y Fd(P)m(ort)j Fj(:)d(Natural)n(;)g Fd(Host)j Fj(:)d(String)f(:=)h -("")o Fe(\))p Fj(;)150 1692 y Ff(P)-8 b(arameters)630 -1801 y Fd(So)s(c)m(k)m(et)389 b Fp(in)360 b(Initialized)31 -b(so)s(c)m(k)m(et)i(ob)5 b(ject)630 1911 y Fd(P)m(ort)470 -b Fp(in)360 b(Lo)s(cal)31 b(p)s(ort)f(to)h(bind)e(to)630 -2020 y Fd(Host)461 b Fp(in)360 b(Lo)s(cal)31 b(in)m(terface)h(to)f -(bind)e(to)150 2168 y Ff(Description)630 2278 y Fp(This)34 -b(pro)s(cedure)g(requests)h(a)g(lo)s(cal)h(p)s(ort)e(from)h(the)g(op)s -(erating)g(system.)54 b(If)35 b(0)g(is)g(giv)m(en)630 -2388 y(in)29 b Fd(P)m(ort)p Fp(,)h(the)g(system)f(will)g(assign)h(a)f -(free)h(p)s(ort)e(whose)h(n)m(um)m(b)s(er)f(can)h(later)h(b)s(e)f -(retriev)m(ed)630 2497 y(using)22 b([Get)p 1036 2497 -28 4 v 34 w(So)s(c)m(k)p 1254 2497 V 33 w(P)m(ort)h(\(function\)],)h -(page)f(23.)39 b(Also,)25 b(most)d(op)s(erating)h(systems)f(require)630 -2607 y(sp)s(ecial)31 b(privileges)g(if)g(y)m(ou)f(w)m(an)m(t)i(to)f -(bind)e(to)i(p)s(orts)e(b)s(elo)m(w)i(1024.)630 2736 -y(If)21 b Fd(Host)k Fp(is)d(not)g(the)g(empt)m(y)g(string,)i(it)f(m)m -(ust)e(con)m(tain)i(the)f(IP)g(address)f(of)h(a)g(lo)s(cal)h(in)m -(terface)630 2845 y(to)34 b(bind)d(to,)k(or)d(a)i(name)f(whic)m(h)f -(resolv)m(es)i(in)m(to)g(suc)m(h)f(an)f(address.)48 b(If)32 -b(an)h(empt)m(y)g(string)630 2955 y(is)d(giv)m(en)i(\(the)f(default\),) -g(the)f(so)s(c)m(k)m(et)j(will)d(b)s(e)g(b)s(ound)e(to)k(all)f(the)f(a) -m(v)-5 b(ailable)33 b(in)m(terfaces.)150 3103 y Ff(Ex)n(ceptions)630 -3213 y Fj(Socket_Error)615 b Fp(Requested)30 b(p)s(ort)g(or)g(in)m -(terface)i(not)f(a)m(v)-5 b(ailable)150 3361 y Ff(See)33 -b(also)86 b Fp([Listen)31 b(\(pro)s(cedure\)],)f(page)h(12,)630 -3470 y([So)s(c)m(k)m(et)h(\(pro)s(cedure\)],)f(page)g(17.)150 -3678 y Fi(Connect)41 b(\(pro)s(cedure\))150 3884 y Ff(Purpose)100 -b Fp(Connect)31 b(a)f(so)s(c)m(k)m(et)j(on)d(a)h(giv)m(en)g(host/p)s -(ort)150 4032 y Ff(Pr)n(ototype)3228 4219 y Fp(So)s(c)m(k)m -(ets.Connect)-3243 b Fh(procedure)41 b Fg(Connect)j Fe(\()p -Fd(So)s(c)m(k)m(et)34 b Fj(:)c(Socket_FD)m(;)1045 4328 -y Fd(Host)j Fj(:)d(String)o(;)g Fd(P)m(ort)j Fj(:)d(Positive)n -Fe(\))p Fj(;)150 4534 y Ff(P)-8 b(arameters)630 4644 -y Fd(So)s(c)m(k)m(et)389 b Fp(in)360 b(Initialized)31 -b(so)s(c)m(k)m(et)i(ob)5 b(ject)630 4753 y Fd(Host)461 -b Fp(in)360 b(Host)31 b(to)g(connect)g(to)630 4863 y -Fd(P)m(ort)470 b Fp(in)360 b(P)m(ort)31 b(to)g(connect)g(to)150 -5011 y Ff(Description)630 5121 y Fp(This)24 b(pro)s(cedure)f(connects)j -(an)e(initialized)i(so)s(c)m(k)m(et)h(to)e(a)g(giv)m(en)h(host)e(on)h -(a)g(giv)m(en)g(p)s(ort.)39 b(In)630 5230 y(the)28 b(case)g(of)g(a)f -(TCP)g(so)s(c)m(k)m(et,)j(a)e(real)g(connection)g(is)g(attempted.)41 -b(In)26 b(the)i(case)g(of)g(a)g(UDP)630 5340 y(so)s(c)m(k)m(et,)k(no)f -(connection)g(tak)m(es)h(place)f(but)f(the)h(endp)s(oin)m(t)e(co)s -(ordinates)j(are)e(recorded.)p eop end -%%Page: 9 13 -TeXDict begin 9 12 bop 150 -116 a Fp(Chapter)30 b(4:)41 -b(So)s(c)m(k)m(ets)32 b(pac)m(k)-5 b(age)2460 b(9)150 -299 y Ff(Ex)n(ceptions)630 408 y Fj(Connection_Refused)327 -b Fp(The)29 b(connection)j(has)e(b)s(een)g(refused)f(b)m(y)h(the)h -(serv)m(er)630 518 y Fj(Socket_Error)615 b Fp(Another)30 -b(error)g(o)s(ccurred)g(during)f(the)h(connection)150 -670 y Ff(Example)870 795 y Fj(declare)1013 899 y(Sock)47 -b(:)g(Socket_FD;)870 1002 y(begin)1013 1106 y(--)g(Create)f(a)i(TCP)f -(socket)1013 1210 y(Socket)f(\(Sock,)g(PF_INET,)g(SOCK_STREAM\);)1013 -1314 y(--)h(Connect)f(it)h(to)h(rfc1149.net's)c(mail)i(server)1013 -1417 y(Connect)g(\(Sock,)g("mail.rfc1149.net",)d(25\);)1013 -1521 y(--)k(Do)h(a)f(mail)g(transaction)d(then)j(close)f(the)h(socket) -1013 1625 y([...])870 1729 y(end;)150 1881 y Ff(See)33 -b(also)86 b Fp([So)s(c)m(k)m(et)32 b(\(pro)s(cedure\)],)f(page)g(17.) -150 2093 y Fi(Get)41 b(\(function\))150 2303 y Ff(Purpose)100 -b Fp(Get)31 b(a)g(string)f(from)g(a)h(remote)g(host)150 -2455 y Ff(Pr)n(ototype)3409 2649 y Fp(So)s(c)m(k)m(ets.Get)-3242 -b Fh(function)41 b Fg(Get)j Fe(\()p Fd(So)s(c)m(k)m(et)34 -b Fj(:)c(Socket_FD'Class)l Fe(\))1045 2759 y Fj(return)f(String;)150 -2974 y Ff(P)-8 b(arameters)630 3083 y Fd(So)s(c)m(k)m(et)389 -b Fp(in)360 b(Initialized)31 b(and)f(connected)h(so)s(c)m(k)m(et)i(ob)5 -b(ject)150 3235 y Ff(Return)33 b(v)-8 b(alue)630 3345 -y Fp(Some)30 b(c)m(haracters)i(that)f(ha)m(v)m(e)h(b)s(een)d(receiv)m -(ed)150 3497 y Ff(Description)630 3606 y Fp(This)38 b(function)g -(receiv)m(es)i(some)f(c)m(haracters)h(from)e(a)g(remote)i(host.)65 -b(As)38 b(so)s(on)g(that)h(at)630 3716 y(least)32 b(one)e(c)m(haracter) -i(is)f(a)m(v)-5 b(ailable,)33 b(the)d(curren)m(t)g(reception)i -(bu\013er)d(is)h(returned.)630 3847 y(There)24 b(is)g(usually)g(little) -i(gain)f(in)f(using)g(this)g(function)g(whose)g(b)s(eha)m(viour)g(is)g -(comparable)630 3956 y(to)32 b(the)f(one)g(of)g([Receiv)m(e)i -(\(function\)],)f(page)g(14.)43 b(Other)31 b(functions)f(suc)m(h)h(as)g -([Get)p 3524 3956 28 4 v 34 w(Char)630 4066 y(\(function\)],)43 -b(page)d(9,)j(or)c([Get)p 1749 4066 V 34 w(Line)h(\(function\)],)j -(page)d(11,)j(allo)m(w)e(more)f(structured)630 4175 y(programming.)630 -4306 y(Ho)m(w)m(ev)m(er,)i(this)37 b(function)h(ma)m(y)g(b)s(e)f(used)g -(to)h(a)m(v)m(oid)h(lo)s(osing)g(c)m(haracters)g(when)d(calling)630 -4416 y([Unset)p 890 4416 V 33 w(Bu\013er)e(\(pro)s(cedure\)],)i(page)f -(18,)h(if,)g(for)e(some)g(reason,)i(the)f(remote)g(host)f(ma)m(y)630 -4525 y(ha)m(v)m(e)e(sen)m(t)e(some.)150 4677 y Ff(Ex)n(ceptions)630 -4787 y Fj(Connection_Closed)375 b Fp(P)m(eer)31 b(has)f(closed)h(the)f -(connection)i(b)s(efore)e(sending)g(an)m(y)g(data)150 -4999 y Fi(Get)p 357 4999 37 5 v 44 w(Char)41 b(\(function\))150 -5209 y Ff(Purpose)100 b Fp(Get)31 b(a)g(c)m(haracter)h(from)e(a)h -(remote)g(host)150 5361 y Ff(Pr)n(ototype)p eop end -%%Page: 10 14 -TeXDict begin 10 13 bop 150 -116 a Fp(10)2350 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)3179 299 y(So)s(c)m(k)m(ets.Get)p -3647 299 28 4 v 35 w(Char)-3245 b Fh(function)41 b Fg(Get)p -1282 299 35 5 v 40 w(Char)k Fe(\()p Fd(So)s(c)m(k)m(et)34 -b Fj(:)c(Socket_FD'Class)l Fe(\))1045 408 y Fj(return)f(Character;)150 -667 y Ff(P)-8 b(arameters)630 777 y Fd(So)s(c)m(k)m(et)389 -b Fp(in)360 b(Initialized)31 b(and)f(connected)h(so)s(c)m(k)m(et)i(ob)5 -b(ject)150 946 y Ff(Return)33 b(v)-8 b(alue)630 1056 -y Fp(One)30 b(c)m(haracter)i(sen)m(t)f(b)m(y)f(the)h(remote)g(host)150 -1225 y Ff(Description)630 1335 y Fp(This)f(function)g(receiv)m(es)i -(exactly)g(one)f(c)m(haracter)g(from)f(the)h(remote)g(host.)150 -1504 y Ff(Ex)n(ceptions)630 1614 y Fj(Connection_Closed)375 -b Fp(P)m(eer)31 b(has)f(closed)h(the)f(connection)i(b)s(efore)e -(sending)g(the)g(c)m(haracter)150 1783 y Ff(See)j(also)86 -b Fp([Get)32 b(\(function\)],)f(page)g(9,)630 1893 y([Get)p -806 1893 28 4 v 34 w(Line)f(\(function\)],)i(page)f(11,)630 -2002 y([Get)p 806 2002 V 34 w(Line)f(\(pro)s(cedure\)],)h(page)g(10,) -630 2112 y([Receiv)m(e)i(\(pro)s(cedure\)],)d(page)h(14,)630 -2221 y([Set)p 786 2221 V 33 w(Bu\013er)f(\(pro)s(cedure\)],)h(page)g -(16.)150 2465 y Fi(Get)p 357 2465 37 5 v 44 w(Line)41 -b(\(pro)s(cedure\))150 2698 y Ff(Purpose)100 b Fp(Get)31 -b(a)g(whole)g(line)f(from)g(a)h(remote)g(host)150 2867 -y Ff(Pr)n(ototype)3203 3096 y Fp(So)s(c)m(k)m(ets.Get)p -3671 3096 28 4 v 36 w(Line)-3245 b Fh(procedure)41 b -Fg(Get)p 1334 3096 35 5 v 40 w(Line)k Fe(\()p Fd(So)s(c)m(k)m(et)34 -b Fj(:)c(Socket_FD'Class)l(;)1045 3206 y Fd(Str)36 b -Fj(:)30 b(in)g(out)g(String)n(;)g Fd(Last)j Fj(:)d(out)f(Natural)n -Fe(\))p Fj(;)150 3464 y Ff(P)-8 b(arameters)630 3574 -y Fd(So)s(c)m(k)m(et)389 b Fp(in)360 b(Initialized)31 -b(and)f(connected)h(so)s(c)m(k)m(et)i(ob)5 b(ject)630 -3684 y Fd(Str)523 b Fp(in)30 b(out)199 b(String)30 b(to)h(\014ll)630 -3793 y Fd(Last)472 b Fp(out)305 b(Last)30 b(index)g(used)g(in)g(the)h -(string)150 3962 y Ff(Description)630 4072 y Fp(This)26 -b(pro)s(cedure)g(receiv)m(es)j(one)e(line)h(from)e(the)h(remote)h -(host.)40 b(A)27 b(line)h(consists)f(in)m(to)h(zero)630 -4182 y(or)e(more)h(c)m(haracters)h(follo)m(w)m(ed)g(b)m(y)e(an)h -(optional)g(CR)f(and)g(b)m(y)g(a)h(LF.)g(Those)f(terminators)630 -4291 y(are)31 b(stripp)s(ed)e(b)s(efore)h(the)g(line)h(is)f(returned.) -630 4431 y(This)g(pro)s(cedure)f(blo)s(c)m(ks)i(un)m(til)f(one)h(full)f -(line)h(has)f(b)s(een)f(receiv)m(ed.)150 4600 y Ff(Ex)n(ceptions)630 -4710 y Fj(Connection_Closed)375 b Fp(P)m(eer)31 b(has)f(closed)h(the)f -(connection)i(b)s(efore)e(sending)g(a)h(whole)f(line)150 -4879 y Ff(See)j(also)86 b Fp([Get)32 b(\(function\)],)f(page)g(9,)630 -4988 y([Get)p 806 4988 28 4 v 34 w(Char)f(\(function\)],)h(page)g(9,) -630 5098 y([Get)p 806 5098 V 34 w(Line)f(\(function\)],)i(page)f(11,) -630 5208 y([Receiv)m(e)i(\(pro)s(cedure\)],)d(page)h(14,)630 -5317 y([Set)p 786 5317 V 33 w(Bu\013er)f(\(pro)s(cedure\)],)h(page)g -(16.)p eop end -%%Page: 11 15 -TeXDict begin 11 14 bop 150 -116 a Fp(Chapter)30 b(4:)41 -b(So)s(c)m(k)m(ets)32 b(pac)m(k)-5 b(age)2414 b(11)150 -299 y Fi(Get)p 357 299 37 5 v 44 w(Line)41 b(\(function\))150 -524 y Ff(Purpose)100 b Fp(Get)31 b(a)g(whole)g(line)f(from)g(a)h -(remote)g(host)150 688 y Ff(Pr)n(ototype)3203 908 y Fp(So)s(c)m(k)m -(ets.Get)p 3671 908 28 4 v 36 w(Line)-3245 b Fh(function)41 -b Fg(Get)p 1282 908 35 5 v 40 w(Line)j Fe(\()p Fd(So)s(c)m(k)m(et)35 -b Fj(:)30 b(Socket_FD'Class)-5 b(;)1045 1017 y Fd(Max)p -1226 1017 28 4 v 34 w(Length)30 b Fj(:)g(Positive)e(:=)i(2048)o -Fe(\))1045 1127 y Fj(return)f(String;)150 1373 y Ff(P)-8 -b(arameters)630 1483 y Fd(So)s(c)m(k)m(et)389 b Fp(in)360 -b(Initialized)31 b(and)f(connected)h(so)s(c)m(k)m(et)i(ob)5 -b(ject)630 1593 y Fd(Max)p 811 1593 V 33 w(Length)157 -b Fp(in)360 b(Maxim)m(um)30 b(returned)g(line)g(length)150 -1757 y Ff(Return)j(v)-8 b(alue)630 1867 y Fp(A)30 b(line)h(without)g -(the)f(CR)g(and)g(LF)g(separators)150 2031 y Ff(Description)630 -2141 y Fp(This)h(function)h(receiv)m(es)i(one)e(line)g(from)g(the)g -(remote)h(host.)46 b(A)32 b(line)h(consists)f(in)m(to)h(zero)630 -2250 y(or)26 b(more)h(c)m(haracters)h(follo)m(w)m(ed)g(b)m(y)e(an)h -(optional)g(CR)f(and)g(b)m(y)g(a)h(LF.)g(Those)f(terminators)630 -2360 y(are)31 b(stripp)s(ed)e(b)s(efore)h(the)g(line)h(is)f(returned.) -630 2497 y(This)37 b(function)g(blo)s(c)m(ks)h(un)m(til)g(one)g(full)g -(line)g(has)f(b)s(een)g(receiv)m(ed.)64 b(The)38 b(line)g(length)g(is) -630 2606 y(limited)28 b(with)f(the)h(v)-5 b(alue)27 b(of)h(the)f(Max)p -1959 2606 V 34 w(Length)g(argumen)m(t,)i(to)f(a)m(v)m(oid)h(exhaustion) -e(of)h(the)630 2716 y(secondary)i(stac)m(k.)150 2880 -y Ff(Ex)n(ceptions)630 2990 y Fj(Connection_Closed)375 -b Fp(P)m(eer)31 b(has)f(closed)h(the)f(connection)i(b)s(efore)e -(sending)g(a)h(whole)f(line)150 3154 y Ff(See)j(also)86 -b Fp([Get)32 b(\(function\)],)f(page)g(9,)630 3264 y([Get)p -806 3264 V 34 w(Char)f(\(function\)],)h(page)g(9,)630 -3374 y([Get)p 806 3374 V 34 w(Line)f(\(pro)s(cedure\)],)h(page)g(10,) -630 3483 y([Receiv)m(e)i(\(pro)s(cedure\)],)d(page)h(14,)630 -3593 y([Set)p 786 3593 V 33 w(Bu\013er)f(\(pro)s(cedure\)],)h(page)g -(16.)150 3827 y Fi(Getso)s(c)m(k)m(opt)41 b(\(pro)s(cedure\))150 -4052 y Ff(Purpose)100 b Fp(Retriev)m(e)32 b(a)f(so)s(c)m(k)m(et)h -(option)150 4217 y Ff(Pr)n(ototype)3110 4436 y Fp(So)s(c)m(k)m -(ets.Getso)s(c)m(k)m(opt)-3240 b Fh(procedure)41 b Fg(Getso)s(c)m(k)m -(opt)k Fe(\()p Fd(So)s(c)m(k)m(et)34 b Fj(:)c(Socket_FD)m(;)1045 -4545 y Fd(Lev)m(el)35 b Fj(:)30 b(Socket_Level)d(:=)j(SOL_SOCKET)m(;) -1045 4655 y Fd(Optname)35 b Fj(:)30 b(Socket_Option)m(;)g -Fd(Optv)-5 b(al)34 b Fj(:)c(out)f(Integer)n Fe(\))p Fj(;)150 -4902 y Ff(P)-8 b(arameters)630 5011 y Fd(So)s(c)m(k)m(et)389 -b Fp(in)360 b(Initialized)31 b(and)f(b)s(ound)e(so)s(c)m(k)m(et)33 -b(ob)5 b(ject)630 5121 y Fd(Lev)m(el)438 b Fp(in)360 -b(Proto)s(col)31 b(lev)m(el)630 5230 y Fd(Optname)276 -b Fp(in)360 b(Option)30 b(name)630 5340 y Fd(Optv)-5 -b(al)375 b Fp(out)305 b(Option)30 b(v)-5 b(alue)p eop -end -%%Page: 12 16 -TeXDict begin 12 15 bop 150 -116 a Fp(12)2350 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)150 299 y Ff(Description)630 -408 y Fp(This)i(pro)s(cedure)f(retriev)m(es)j(options)g(applicable)f -(to)h(a)f(so)s(c)m(k)m(et.)52 b(Please)35 b(see)g(y)m(our)e(op)s(er-) -630 518 y(ating)e(system)g(man)m(ual)g(for)f(usable)g(lev)m(els)i(and)e -(options.)630 652 y(Tw)m(o)23 b(lev)m(els)i(are)f(de\014ned:)36 -b Fj(SOL_SOCKET)20 b Fp(\(the)k(default\))g(and)e Fj(IPPROTO_IP)p -Fp(.)36 b(The)23 b(options)630 761 y(are)43 b Fj(SO_REUSEADDR)p -Fp(,)f Fj(SO_REUSEPORT)p Fp(,)g Fj(IP_MULTICAST_TTL)p -Fp(,)e Fj(IP_ADD_MEMBERSHIP)p Fp(,)630 871 y Fj(IP_DROP_MEMBERSHIP)p -Fp(,)26 b Fj(IP_MULTICAST_LOOP)p Fp(,)g Fj(SO_SNDBUF)h -Fp(and)j Fj(IP_RCVBUF)p Fp(.)630 1004 y(Note)39 b(that)e(unlik)m(e)h -(their)f(C)g(language)i(coun)m(terpart,)h Fj(Getsockopt)34 -b Fp(and)j Fj(Setsockopt)630 1114 y Fp(do)25 b(not)f(require)h(an)f -(extra)i(parameter)f(represen)m(ting)g(the)f(length)h(in)g(b)m(ytes)g -(of)g(the)f(option)630 1224 y(v)-5 b(alue.)41 b(AdaSo)s(c)m(k)m(ets)32 -b(no)m(ws)e(the)h(righ)m(t)g(size)g(for)f(ev)m(ery)h(option.)150 -1381 y Ff(See)i(also)86 b Fp([Setso)s(c)m(k)m(opt)32 -b(\(pro)s(cedure\)],)f(page)g(16.)150 1603 y Fi(Listen)41 -b(\(pro)s(cedure\))150 1819 y Ff(Purpose)100 b Fp(Establish)30 -b(a)h(listen)g(queue)150 1976 y Ff(Pr)n(ototype)3312 -2182 y Fp(So)s(c)m(k)m(ets.Listen)-3243 b Fh(procedure)41 -b Fg(Listen)j Fe(\()p Fd(So)s(c)m(k)m(et)34 b Fj(:)c(Socket_FD)n(;)1045 -2292 y Fd(Queue)p 1303 2292 28 4 v 32 w(Size)36 b Fj(:)30 -b(Positive)e(:=)i(5)p Fe(\))p Fj(;)150 2521 y Ff(P)-8 -b(arameters)630 2631 y Fd(So)s(c)m(k)m(et)389 b Fp(in)360 -b(Initialized)31 b(and)f(b)s(ound)e(so)s(c)m(k)m(et)33 -b(ob)5 b(ject)630 2741 y Fd(Queue)p 888 2741 V 32 w(Size)204 -b Fp(in)360 b(Requested)30 b(slots)h(in)f(the)h(listen)g(queue)150 -2898 y Ff(Description)630 3008 y Fp(This)26 b(pro)s(cedure)g -(establishes)h(a)h(listen)f(queue)g(after)g(a)g(TCP)f(so)s(c)m(k)m(et)j -(as)e(b)s(een)f(initialized)630 3117 y(and)k(b)s(ound.)38 -b(Eac)m(h)31 b(slot)g(in)f(the)h(queue)f(can)g(hold)g(one)h(incoming)g -(connection)g(that)g(has)630 3227 y(not)37 b(b)s(een)g(accepted)h(y)m -(et.)63 b(Note)38 b(that)g(most)g(op)s(erating)f(systems)g(ignore)h -(queue)f(sizes)630 3337 y(larger)31 b(than)f(\014v)m(e.)150 -3494 y Ff(See)j(also)86 b Fp([Accept)p 934 3494 V 34 -w(So)s(c)m(k)m(et)32 b(\(pro)s(cedure\)],)f(page)g(7,)630 -3604 y([Bind)f(\(pro)s(cedure\)],)h(page)g(8,)630 3713 -y([So)s(c)m(k)m(et)h(\(pro)s(cedure\)],)f(page)g(17.)150 -3935 y Fi(New)p 398 3935 37 5 v 44 w(Line)41 b(\(pro)s(cedure\))150 -4151 y Ff(Purpose)100 b Fp(Send)29 b(a)i(CR/LF)f(to)i(a)e(remote)i -(host)150 4308 y Ff(Pr)n(ototype)3176 4514 y Fp(So)s(c)m(k)m(ets.New)p -3672 4514 28 4 v 35 w(Line)-3245 b Fh(procedure)41 b -Fg(New)p 1372 4514 35 5 v 40 w(Line)1045 4624 y Fe(\()p -Fd(So)s(c)m(k)m(et)34 b Fj(:)c(Socket_FD'Class)l(;)g -Fd(Coun)m(t)j Fj(:)d(Natural)e(:=)i(1)o Fe(\))p Fj(;)150 -4854 y Ff(P)-8 b(arameters)630 4963 y Fd(So)s(c)m(k)m(et)389 -b Fp(in)360 b(Initialized)31 b(and)f(connected)h(so)s(c)m(k)m(et)i(ob)5 -b(ject)630 5073 y Fd(Coun)m(t)400 b Fp(in)360 b(Num)m(b)s(er)29 -b(of)h(CR/LF)h(sequences)f(to)i(send)150 5230 y Ff(Description)630 -5340 y Fp(This)e(pro)s(cedure)f(sends)g(one)i(or)f(more)h(CR/LF)f(com)m -(binations)i(to)f(the)f(p)s(eer.)p eop end -%%Page: 13 17 -TeXDict begin 13 16 bop 150 -116 a Fp(Chapter)30 b(4:)41 -b(So)s(c)m(k)m(ets)32 b(pac)m(k)-5 b(age)2414 b(13)150 -299 y Ff(Ex)n(ceptions)630 408 y Fj(Connection_Closed)375 -b Fp(P)m(eer)31 b(has)f(prematurely)g(closed)h(the)g(connection)150 -566 y Ff(See)i(also)86 b Fp([Put)30 b(\(pro)s(cedure\)],)h(page)g(13,) -630 675 y([Put)p 808 675 28 4 v 33 w(Line)f(\(pro)s(cedure\)],)g(page)i -(13.)150 896 y Fi(Put)41 b(\(pro)s(cedure\))150 1112 -y Ff(Purpose)100 b Fp(Send)29 b(a)i(string)f(to)h(a)g(remote)g(host)150 -1269 y Ff(Pr)n(ototype)3408 1474 y Fp(So)s(c)m(k)m(ets.Put)-3243 -b Fh(procedure)41 b Fg(Put)k Fe(\()p Fd(So)s(c)m(k)m(et)34 -b Fj(:)c(Socket_FD'Class)l(;)1045 1583 y Fd(Str)36 b -Fj(:)30 b(String)o Fe(\))p Fj(;)150 1812 y Ff(P)-8 b(arameters)630 -1922 y Fd(So)s(c)m(k)m(et)389 b Fp(in)360 b(Initialized)31 -b(and)f(connected)h(so)s(c)m(k)m(et)i(ob)5 b(ject)630 -2031 y Fd(Str)523 b Fp(in)360 b(String)30 b(to)h(send)150 -2189 y Ff(Description)630 2298 y Fp(This)f(pro)s(cedure)f(sends)g(the)i -(con)m(ten)m(t)h(of)f Fd(Str)36 b Fp(o)m(v)m(er)c(an)e(outgoing)i(or)e -(incoming)h(so)s(c)m(k)m(et.)150 2455 y Ff(Ex)n(ceptions)630 -2565 y Fj(Connection_Closed)375 b Fp(P)m(eer)31 b(has)f(prematurely)g -(closed)h(the)g(connection)150 2722 y Ff(See)i(also)86 -b Fp([New)p 834 2722 V 33 w(Line)31 b(\(pro)s(cedure\)],)f(page)h(12,) -630 2832 y([Put)p 808 2832 V 33 w(Line)f(\(pro)s(cedure\)],)g(page)i -(13,)630 2941 y([Send)d(\(pro)s(cedure\)],)i(page)g(15.)150 -3162 y Fi(Put)p 357 3162 37 5 v 44 w(Line)41 b(\(pro)s(cedure\))150 -3378 y Ff(Purpose)100 b Fp(Send)29 b(a)i(CR/LF)f(terminated)h(string)g -(to)g(a)g(remote)g(host)150 3535 y Ff(Pr)n(ototype)3202 -3740 y Fp(So)s(c)m(k)m(ets.Put)p 3672 3740 28 4 v 35 -w(Line)-3245 b Fh(procedure)41 b Fg(Put)p 1333 3740 35 -5 v 41 w(Line)j Fe(\()p Fd(So)s(c)m(k)m(et)34 b Fj(:)c(Socket_FD'Class) -l(;)1045 3850 y Fd(Str)36 b Fj(:)30 b(String)o Fe(\))p -Fj(;)150 4078 y Ff(P)-8 b(arameters)630 4188 y Fd(So)s(c)m(k)m(et)389 -b Fp(in)360 b(Initialized)31 b(and)f(connected)h(so)s(c)m(k)m(et)i(ob)5 -b(ject)630 4298 y Fd(Str)523 b Fp(in)360 b(String)30 -b(to)h(send)150 4455 y Ff(Description)630 4564 y Fp(This)38 -b(pro)s(cedure)g(sends)g(the)i(con)m(ten)m(t)g(of)g Fd(Str)45 -b Fp(plus)38 b(a)h(CR/LF)g(com)m(bination)i(o)m(v)m(er)f(an)630 -4674 y(outgoing)32 b(or)e(incoming)h(so)s(c)m(k)m(et.)150 -4831 y Ff(Ex)n(ceptions)630 4941 y Fj(Connection_Closed)375 -b Fp(P)m(eer)31 b(has)f(prematurely)g(closed)h(the)g(connection)150 -5098 y Ff(See)i(also)86 b Fp([New)p 834 5098 28 4 v 33 -w(Line)31 b(\(pro)s(cedure\)],)f(page)h(12,)630 5208 -y([Put)f(\(pro)s(cedure\)],)h(page)g(13,)630 5317 y([Send)e(\(pro)s -(cedure\)],)i(page)g(15.)p eop end -%%Page: 14 18 -TeXDict begin 14 17 bop 150 -116 a Fp(14)2350 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)150 299 y Fi(Receiv)m(e)39 b(\(pro)s(cedure\)) -150 521 y Ff(Purpose)100 b Fp(Receiv)m(e)33 b(ra)m(w)d(data)h(o)m(v)m -(er)h(a)f(so)s(c)m(k)m(et)150 683 y Ff(Pr)n(ototype)3257 -897 y Fp(So)s(c)m(k)m(ets.Receiv)m(e)-3241 b Fh(procedure)41 -b Fg(Receiv)m(e)j Fe(\()p Fd(So)s(c)m(k)m(et)34 b Fj(:)c -(Socket_FD'Class)l(;)1045 1007 y Fd(Data)i Fj(:)e(out)g -(Ada.Streams.Stream_Elem)o(ent_)o(Arr)o(ay)-6 b Fe(\))p -Fj(;)150 1248 y Ff(P)e(arameters)630 1358 y Fd(So)s(c)m(k)m(et)389 -b Fp(in)360 b(Initialized)31 b(and)f(b)s(ound)e(or)j(connected)g(so)s -(c)m(k)m(et)h(ob)5 b(ject)630 1467 y Fd(Data)451 b Fp(out)305 -b(Incoming)30 b(data)h(bu\013er)150 1629 y Ff(Description)630 -1739 y Fp(This)k(pro)s(cedure)h(receiv)m(es)i(data)e(from)g(a)h(b)s -(ound)d(UDP)j(so)s(c)m(k)m(et)h(or)e(a)h(connected)g(TCP)630 -1848 y(so)s(c)m(k)m(et.)43 b(It)30 b(will)h(blo)s(c)m(k)g(un)m(til)f -(the)h Fd(Data)h Fp(reception)f(bu\013er)e(has)i(b)s(een)e(totally)k -(\014lled.)150 2011 y Ff(Ex)n(ceptions)630 2120 y Fj(Connection_Closed) -375 b Fp(P)m(eer)31 b(has)f(closed)h(the)f(connection)i(b)s(efore)e -Fj(Data'Length)d Fp(b)m(ytes)1821 2230 y(w)m(ere)j(receiv)m(ed)150 -2360 y Ff(See)j(also)86 b Fp([Get)p 806 2360 28 4 v 34 -w(Line)30 b(\(function\)],)i(page)f(11,)630 2469 y([Get)p -806 2469 V 34 w(Line)f(\(pro)s(cedure\)],)h(page)g(10,)630 -2579 y([Receiv)m(e)i(\(function\)],)e(page)g(14,)630 -2688 y([Receiv)m(e)p 957 2688 V 35 w(Some)g(\(pro)s(cedure\)],)f(page)h -(15.)150 2918 y Fi(Receiv)m(e)39 b(\(function\))150 3140 -y Ff(Purpose)100 b Fp(Receiv)m(e)33 b(ra)m(w)d(data)h(o)m(v)m(er)h(a)f -(so)s(c)m(k)m(et)150 3302 y Ff(Pr)n(ototype)3257 3517 -y Fp(So)s(c)m(k)m(ets.Receiv)m(e)-3241 b Fh(function)41 -b Fg(Receiv)m(e)j Fe(\()p Fd(So)s(c)m(k)m(et)34 b Fj(:)c(Socket_FD)m(;) -1045 3626 y Fd(Max)37 b Fj(:)30 b(Ada.Streams.Stream_Element)o(_Cou)o -(nt)24 b(:=)30 b(4096)o Fe(\))1045 3736 y Fj(return)f -(Ada.Streams.Stream_Elem)o(ent_)o(Arra)o(y;)150 3977 -y Ff(P)-8 b(arameters)630 4086 y Fd(So)s(c)m(k)m(et)389 -b Fp(in)360 b(Initialized)31 b(and)f(b)s(ound)e(or)j(connected)g(so)s -(c)m(k)m(et)h(ob)5 b(ject)630 4196 y Fd(Max)469 b Fp(in)360 -b(Maxim)m(um)30 b(data)h(length)150 4358 y Ff(Return)i(v)-8 -b(alue)630 4468 y Fp(Receiv)m(ed)32 b(ra)m(w)f(data)150 -4630 y Ff(Description)630 4739 y Fp(This)k(pro)s(cedure)h(receiv)m(es)i -(data)e(from)g(a)h(b)s(ound)d(UDP)j(so)s(c)m(k)m(et)h(or)e(a)h -(connected)g(TCP)630 4849 y(so)s(c)m(k)m(et.)42 b(Only)29 -b(one)g(system)g(call)i(will)e(b)s(e)f(p)s(erformed;)h(this)g(function) -f(will)i(return)e(what-)630 4959 y(ev)m(er)h(data)g(has)g(arriv)m(ed.) -40 b(Note)30 b(that)f(in)f(GNA)-8 b(T)29 b(the)g(secondary)g(stac)m(k)h -(ma)m(y)f(b)s(e)e(used)h(to)630 5068 y(store)j(the)g(data)g(and)e(ma)m -(y)i(result)g(in)f(stac)m(k)i(storage)f(exhaustion.)150 -5230 y Ff(Ex)n(ceptions)630 5340 y Fj(Connection_Closed)375 -b Fp(P)m(eer)31 b(has)f(closed)h(the)f(connection)i(b)s(efore)e -(sending)g(an)m(y)g(data)p eop end -%%Page: 15 19 -TeXDict begin 15 18 bop 150 -116 a Fp(Chapter)30 b(4:)41 -b(So)s(c)m(k)m(ets)32 b(pac)m(k)-5 b(age)2414 b(15)150 -299 y Ff(See)33 b(also)86 b Fp([Receiv)m(e)33 b(\(pro)s(cedure\)],)d -(page)h(14,)630 408 y([Receiv)m(e)p 957 408 28 4 v 35 -w(Some)g(\(pro)s(cedure\)],)f(page)h(15,)630 518 y([Get)p -806 518 V 34 w(Line)f(\(function\)],)i(page)f(11,)630 -628 y([Get)p 806 628 V 34 w(Line)f(\(pro)s(cedure\)],)h(page)g(10.)150 -853 y Fi(Receiv)m(e)p 568 853 37 5 v 43 w(Some)41 b(\(pro)s(cedure\)) -150 1071 y Ff(Purpose)100 b Fp(Receiv)m(e)33 b(ra)m(w)d(data)h(o)m(v)m -(er)h(a)f(so)s(c)m(k)m(et)150 1231 y Ff(Pr)n(ototype)3012 -1442 y Fp(So)s(c)m(k)m(ets.Receiv)m(e)p 3631 1442 28 -4 v 36 w(Some)-3244 b Fh(procedure)41 b Fg(Receiv)m(e)p -1531 1442 35 5 v 40 w(Some)1045 1551 y Fe(\()p Fd(So)s(c)m(k)m(et)34 -b Fj(:)c(Socket_FD'Class)l(;)1045 1661 y Fd(Data)i Fj(:)e(out)g -(Ada.Streams.Stream_Elem)o(ent_)o(Arr)o(ay)-6 b(;)1045 -1771 y Fd(Last)33 b Fj(:)d(out)f(Ada.Streams.Stream_Element)o(_Of)o -(fset)-7 b Fe(\))p Fj(;)150 2006 y Ff(P)f(arameters)630 -2116 y Fd(So)s(c)m(k)m(et)389 b Fp(in)360 b(Initialized)31 -b(and)f(b)s(ound)e(or)j(connected)g(so)s(c)m(k)m(et)h(ob)5 -b(ject)630 2225 y Fd(Data)451 b Fp(out)305 b(Incoming)30 -b(data)h(bu\013er)630 2335 y Fd(Last)472 b Fp(out)305 -b(Index)29 b(of)i(last)g(elemen)m(t)h(placed)f(in)m(to)g -Fd(Data)150 2495 y Ff(Description)630 2605 y Fp(This)k(pro)s(cedure)h -(receiv)m(es)i(data)e(from)g(a)h(b)s(ound)d(UDP)j(so)s(c)m(k)m(et)h(or) -e(a)h(connected)g(TCP)630 2714 y(so)s(c)m(k)m(et.)46 -b(As)31 b(so)s(on)g(as)h(at)g(least)g(one)g(b)m(yte)g(has)f(b)s(een)g -(read,)g(it)h(returns)e(with)i Fd(Last)h Fp(set)f(to)630 -2824 y(the)f(index)f(of)g(the)h(latest)h(written)e(elemen)m(t)i(of)e -Fd(Data)p Fp(.)150 2984 y Ff(Ex)n(ceptions)630 3093 y -Fj(Connection_Closed)375 b Fp(P)m(eer)31 b(has)f(closed)h(the)f -(connection)i(b)s(efore)e(sending)g(an)m(y)g(data)150 -3253 y Ff(See)j(also)86 b Fp([Get)p 806 3253 28 4 v 34 -w(Line)30 b(\(function\)],)i(page)f(11,)630 3363 y([Get)p -806 3363 V 34 w(Line)f(\(pro)s(cedure\)],)h(page)g(10,)630 -3473 y([Receiv)m(e)i(\(function\)],)e(page)g(14,)630 -3582 y([Receiv)m(e)i(\(pro)s(cedure\)],)d(page)h(14.)150 -3808 y Fi(Send)41 b(\(pro)s(cedure\))150 4026 y Ff(Purpose)100 -b Fp(Send)29 b(ra)m(w)i(data)g(o)m(v)m(er)g(a)g(so)s(c)m(k)m(et)150 -4186 y Ff(Pr)n(ototype)3364 4396 y Fp(So)s(c)m(k)m(ets.Send)-3244 -b Fh(procedure)41 b Fg(Send)j Fe(\()p Fd(So)s(c)m(k)m(et)34 -b Fj(:)c(Socket_FD)n(;)1045 4506 y Fd(Data)i Fj(:)e(out)g -(Ada.Streams.Stream_Elem)o(ent_)o(Arr)o(ay)-6 b Fe(\))p -Fj(;)150 4742 y Ff(P)e(arameters)630 4851 y Fd(So)s(c)m(k)m(et)389 -b Fp(in)360 b(Initialized)31 b(and)f(connected)h(so)s(c)m(k)m(et)i(ob)5 -b(ject)630 4961 y Fd(Data)451 b Fp(out)305 b(Data)32 -b(to)f(b)s(e)e(sen)m(t)150 5121 y Ff(Description)630 -5230 y Fp(This)22 b(pro)s(cedure)f(sends)h(data)h(o)m(v)m(er)h(a)f -(connected)h(outgoing)g(so)s(c)m(k)m(et)g(or)f(o)m(v)m(er)h(an)e -(incoming)630 5340 y(so)s(c)m(k)m(et.)p eop end -%%Page: 16 20 -TeXDict begin 16 19 bop 150 -116 a Fp(16)2350 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)150 299 y Ff(Ex)n(ceptions)630 -408 y Fj(Connection_Closed)375 b Fp(P)m(eer)31 b(has)f(prematurely)g -(closed)h(the)g(connection)150 567 y Ff(See)i(also)86 -b Fp([Put)30 b(\(pro)s(cedure\)],)h(page)g(13,)630 677 -y([Put)p 808 677 28 4 v 33 w(Line)f(\(pro)s(cedure\)],)g(page)i(13.)150 -900 y Fi(Set)p 329 900 37 5 v 44 w(Bu\013er)41 b(\(pro)s(cedure\))150 -1117 y Ff(Purpose)100 b Fp(Install)31 b(a)g(line-orien)m(ted)h -(bu\013er)d(of)h(the)h(so)s(c)m(k)m(et)h(ob)5 b(ject)150 -1276 y Ff(Pr)n(ototype)3153 1484 y Fp(So)s(c)m(k)m(ets.Set)p -3601 1484 28 4 v 35 w(Bu\013er)-3245 b Fh(procedure)41 -b Fg(Set)p 1308 1484 35 5 v 40 w(Bu\013er)1045 1594 y -Fe(\()p Fd(So)s(c)m(k)m(et)34 b Fj(:)c(Socket_FD'Class)l(;)g -Fd(Length)h Fj(:)f(Positive)e(:=)i(1500)n Fe(\))p Fj(;)150 -1826 y Ff(P)-8 b(arameters)630 1936 y Fd(So)s(c)m(k)m(et)389 -b Fp(in)360 b(Initialized)31 b(and)f(connected)h(so)s(c)m(k)m(et)i(ob)5 -b(ject)630 2046 y Fd(Length)366 b Fp(in)360 b(Size)30 -b(in)g(b)m(ytes)h(of)g(the)f(newly)h(installed)g(bu\013er)150 -2204 y Ff(Description)630 2314 y Fp(This)42 b(pro)s(cedure)g(puts)h -(the)g(so)s(c)m(k)m(et)i(ob)5 b(ject)44 b(in)f(bu\013ered)f(mo)s(de.)79 -b(If)43 b(the)g(so)s(c)m(k)m(et)j(w)m(as)630 2424 y(already)34 -b(bu\013ered,)g(the)g(con)m(ten)m(t)i(of)e(the)g(previous)f(bu\013er)g -(will)h(b)s(e)g(lost.)52 b(The)33 b(bu\013ered)630 2533 -y(mo)s(de)21 b(only)h(a\013ects)h(c)m(haracter-)h(and)d(line-orien)m -(ted)i(read)f(op)s(eration)g(suc)m(h)f(as)h([Get)h(\(func-)630 -2643 y(tion\)],)i(page)f(9,)g([Get)p 1371 2643 28 4 v -34 w(Char)e(\(function\)],)j(page)e(9,)i(and)c([Get)p -2734 2643 V 34 w(Line)i(\(function\)],)i(page)e(11.)630 -2752 y(Other)g(reception)h(subprograms)e(will)i(not)g(function)f(prop)s -(erly)f(if)i(bu\013ered)e(mo)s(de)h(is)h(used)630 2862 -y(at)31 b(the)g(same)f(time.)630 2996 y(The)35 b(size)h(of)g(the)f -(bu\013er)g(has)g(to)h(b)s(e)f(greater)i(than)e(the)g(biggest)i(p)s -(ossible)e(pac)m(k)m(et)i(sen)m(t)630 3106 y(b)m(y)30 -b(the)h(remote)g(host,)g(otherwise)g(data)g(loss)f(ma)m(y)h(o)s(ccur.) -150 3265 y Ff(See)i(also)86 b Fp([Unset)p 890 3265 V -33 w(Bu\013er)31 b(\(pro)s(cedure\)],)f(page)h(18.)150 -3488 y Fi(Setso)s(c)m(k)m(opt)41 b(\(pro)s(cedure\))150 -3705 y Ff(Purpose)100 b Fp(Set)31 b(a)f(so)s(c)m(k)m(et)j(option)150 -3864 y Ff(Pr)n(ototype)3131 4072 y Fp(So)s(c)m(k)m(ets.Setso)s(c)m(k)m -(opt)-3241 b Fh(procedure)41 b Fg(Setso)s(c)m(k)m(opt)j -Fe(\()p Fd(So)s(c)m(k)m(et)34 b Fj(:)d(Socket_FD)m(;)1045 -4181 y Fd(Lev)m(el)k Fj(:)30 b(Socket_Level)d(:=)j(SOL_SOCKET)m(;)1045 -4291 y Fd(Optname)35 b Fj(:)30 b(Socket_Option)m(;)g -Fd(Optv)-5 b(al)34 b Fj(:)c(Integer)n Fe(\))p Fj(;)150 -4524 y Ff(P)-8 b(arameters)630 4633 y Fd(So)s(c)m(k)m(et)389 -b Fp(in)360 b(Initialized)31 b(and)f(b)s(ound)e(so)s(c)m(k)m(et)33 -b(ob)5 b(ject)630 4743 y Fd(Lev)m(el)438 b Fp(in)360 -b(Proto)s(col)31 b(lev)m(el)630 4852 y Fd(Optname)276 -b Fp(in)360 b(Option)30 b(name)630 4962 y Fd(Optv)-5 -b(al)375 b Fp(in)360 b(Option)30 b(v)-5 b(alue)150 5121 -y Ff(Description)630 5230 y Fp(This)34 b(pro)s(cedure)g(sets)h(options) -g(applicable)h(to)g(a)f(so)s(c)m(k)m(et.)56 b(Please)36 -b(see)g(y)m(our)e(op)s(erating)630 5340 y(system)d(man)m(ual)f(for)g -(usable)h(lev)m(els)h(and)d(options.)p eop end -%%Page: 17 21 -TeXDict begin 17 20 bop 150 -116 a Fp(Chapter)30 b(4:)41 -b(So)s(c)m(k)m(ets)32 b(pac)m(k)-5 b(age)2414 b(17)630 -299 y(Tw)m(o)23 b(lev)m(els)i(are)f(de\014ned:)36 b Fj(SOL_SOCKET)20 -b Fp(\(the)k(default\))g(and)e Fj(IPPROTO_IP)p Fp(.)36 -b(The)23 b(options)630 408 y(are)43 b Fj(SO_REUSEADDR)p -Fp(,)f Fj(SO_REUSEPORT)p Fp(,)g Fj(IP_MULTICAST_TTL)p -Fp(,)e Fj(IP_ADD_MEMBERSHIP)p Fp(,)630 518 y Fj(IP_DROP_MEMBERSHIP)p -Fp(,)26 b Fj(IP_MULTICAST_LOOP)p Fp(,)g Fj(SO_SNDBUF)h -Fp(and)j Fj(IP_RCVBUF)p Fp(.)630 651 y(Note)39 b(that)e(unlik)m(e)h -(their)f(C)g(language)i(coun)m(terpart,)h Fj(Getsockopt)34 -b Fp(and)j Fj(Setsockopt)630 761 y Fp(do)25 b(not)f(require)h(an)f -(extra)i(parameter)f(represen)m(ting)g(the)f(length)h(in)g(b)m(ytes)g -(of)g(the)f(option)630 870 y(v)-5 b(alue.)41 b(AdaSo)s(c)m(k)m(ets)32 -b(no)m(ws)e(the)h(righ)m(t)g(size)g(for)f(ev)m(ery)h(option.)150 -1027 y Ff(See)i(also)86 b Fp([Getso)s(c)m(k)m(opt)33 -b(\(pro)s(cedure\)],)e(page)g(11.)150 1247 y Fi(Sh)m(utdo)m(wn)41 -b(\(pro)s(cedure\))150 1461 y Ff(Purpose)100 b Fp(Sh)m(utdo)m(wn)29 -b(a)i(so)s(c)m(k)m(et)150 1618 y Ff(Pr)n(ototype)3162 -1821 y Fp(So)s(c)m(k)m(ets.Sh)m(utdo)m(wn)-3244 b Fh(procedure)41 -b Fg(Sh)m(utdo)m(wn)1045 1931 y Fe(\()p Fd(So)s(c)m(k)m(et)34 -b Fj(:)c(in)g(out)g(Socket_FD)m(;)g Fd(Ho)m(w)39 b Fj(:)30 -b(Shutdown_Type)d(:=)j(Both)n Fe(\))p Fj(;)150 2158 y -Ff(P)-8 b(arameters)630 2268 y Fd(So)s(c)m(k)m(et)389 -b Fp(in)30 b(out)199 b(So)s(c)m(k)m(et)31 b(ob)5 b(ject)32 -b(to)f(sh)m(utdo)m(wn)630 2377 y Fd(Ho)m(w)469 b Fp(in)360 -b(Direction)32 b(to)f(sh)m(utdo)m(wn)150 2534 y Ff(Description)630 -2643 y Fp(This)40 b(pro)s(cedure)f(sh)m(utdo)m(wns)h(either)h -(direction)h(of)f(the)g(so)s(c)m(k)m(et.)73 b Fd(Ho)m(w)49 -b Fp(can)41 b(tak)m(e)i(the)630 2753 y(v)-5 b(alue)31 -b(`)p Fj(Send)p Fp(',)f(`)p Fj(Receive)p Fp(')f(or)h(`)p -Fj(Both)p Fp('.)150 2909 y Ff(See)j(also)86 b Fp([So)s(c)m(k)m(et)32 -b(\(pro)s(cedure\)],)f(page)g(17.)150 3129 y Fi(So)s(c)m(k)m(et)40 -b(\(pro)s(cedure\))150 3344 y Ff(Purpose)100 b Fp(Create)31 -b(a)g(so)s(c)m(k)m(et)h(of)f(the)f(giv)m(en)i(mo)s(de)150 -3501 y Ff(Pr)n(ototype)3298 3704 y Fp(So)s(c)m(k)m(ets.So)s(c)m(k)m(et) --3241 b Fh(procedure)41 b Fg(So)s(c)m(k)m(et)k Fe(\()p -Fd(So)s(c)m(k)m(et)34 b Fj(:)c(out)f(Socket_FD)n(;)1045 -3814 y Fd(Domain)i Fj(:)f(Socket_Domain)d(:=)j(PF_INET)n(;)1045 -3923 y Fd(T)m(yp)j Fj(:)d(Socket_Type)d(:=)j(SOCK_STREAM)m -Fe(\))p Fj(;)150 4150 y Ff(P)-8 b(arameters)630 4260 -y Fd(So)s(c)m(k)m(et)389 b Fp(out)305 b(So)s(c)m(k)m(et)31 -b(ob)5 b(ject)32 b(to)f(initialize)630 4369 y Fd(Domain)334 -b Fp(in)360 b(Proto)s(col)31 b(family)630 4479 y Fd(T)m(yp)483 -b Fp(in)360 b(Kind)29 b(of)h(so)s(c)m(k)m(ets)150 4635 -y Ff(Description)630 4745 y Fp(This)i(pro)s(cedure)g(initializes)k(a)d -(new)g(so)s(c)m(k)m(et)i(ob)5 b(ject)33 b(b)m(y)g(reserving)h(a)f -(\014le)g(descriptor)g(to)630 4855 y(the)j(op)s(erating)g(system.)57 -b(F)-8 b(or)37 b(bac)m(kw)m(ard)f(compatibilit)m(y)i(with)d(older)h(v)m -(ersions)g(of)g(this)630 4964 y(library)-8 b(,)34 b Fj(AF_INET)d -Fp(is)i(still)h(accepted)g(as)f(a)g(v)-5 b(alue)34 b(but)e(should)g(b)s -(e)g(replaced)i(as)f(so)s(on)g(as)630 5074 y(p)s(ossible)h(with)g(the)g -(prop)s(er)f Fj(PF_INET)p Fp(.)50 b(Using)34 b Fj(SOCK_STREAM)e -Fp(for)i(the)g Fd(T)m(yp)i Fp(argumen)m(t)630 5183 y(will)31 -b(create)h(a)e(TCP)g(so)s(c)m(k)m(et)i(while)e(a)h Fj(SOCK_DGRAM)d -Fp(will)j(create)g(a)g(UDP)g(one.)150 5340 y Ff(Example)p -eop end -%%Page: 18 22 -TeXDict begin 18 21 bop 150 -116 a Fp(18)2350 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)870 299 y Fj(declare)1013 403 -y(Sock)47 b(:)g(Socket_FD;)870 506 y(begin)1013 610 y(--)g(Create)f(a)i -(TCP)f(socket)1013 714 y(Socket)f(\(Sock,)g(PF_INET,)g(SOCK_STREAM\);) -1013 818 y(--)h(Perform)f(some)h(operations)e(on)i(socket)1013 -922 y([...])1013 1025 y(--)g(Shutdown)f(the)h(socket)f(in)h(both)g -(directions)1013 1129 y(Shutdown)f(\(Sock,)g(Both\);)870 -1233 y(end;)150 1392 y Ff(See)33 b(also)86 b Fp([Sh)m(utdo)m(wn)29 -b(\(pro)s(cedure\)],)i(page)g(17.)150 1616 y Fi(Unset)p -471 1616 37 5 v 45 w(Bu\013er)41 b(\(pro)s(cedure\))150 -1834 y Ff(Purpose)100 b Fp(Deinstall)32 b(the)f(line-orien)m(ted)h -(bu\013er)d(of)i(the)f(so)s(c)m(k)m(et)i(ob)5 b(ject)150 -1993 y Ff(Pr)n(ototype)3049 2203 y Fp(So)s(c)m(k)m(ets.Unset)p -3601 2203 28 4 v 35 w(Bu\013er)-3245 b Fh(procedure)41 -b Fg(Unset)p 1441 2203 35 5 v 40 w(Bu\013er)1045 2312 -y Fe(\()p Fd(So)s(c)m(k)m(et)34 b Fj(:)c(Socket_FD'Class)l -Fe(\))p Fj(;)150 2546 y Ff(P)-8 b(arameters)630 2656 -y Fd(So)s(c)m(k)m(et)389 b Fp(in)360 b(Initialized)31 -b(and)f(connected)h(so)s(c)m(k)m(et)i(ob)5 b(ject)150 -2815 y Ff(Description)630 2925 y Fp(This)31 b(pro)s(cedure)f -(deinstalls)i(the)f(bu\013er)g(previously)g(installed)h(b)m(y)f([Set)p -3166 2925 28 4 v 33 w(Bu\013er)g(\(pro)s(ce-)630 3034 -y(dure\)],)26 b(page)g(16.)39 b(If)25 b(an)m(y)g(data)h(is)f(still)h -(presen)m(t)f(in)g(the)g(bu\013er,)g(it)g(will)h(b)s(e)e(lost.)40 -b(T)-8 b(o)25 b(a)m(v)m(oid)630 3144 y(this)30 b(situation,)i(the)e -(bu\013er)g(can)g(b)s(e)g(\015ushed)f(b)m(y)h(calling)i([Get)g -(\(function\)],)f(page)g(9.)p eop end -%%Page: 19 23 -TeXDict begin 19 22 bop 150 -116 a Fp(Chapter)30 b(5:)41 -b(So)s(c)m(k)m(ets.Multicast)34 b(pac)m(k)-5 b(age)2012 -b(19)150 299 y Fm(5)80 b(So)t(c)l(k)l(ets.Multicast)51 -b(pac)l(k)-9 b(age)275 532 y Fp(The)29 b Fj(Sockets.Multicast)d -Fp(allo)m(ws)32 b(the)e(creation)i(of)f(IP)f(m)m(ulticast)i(so)s(c)m(k) -m(ets.)2325 764 y(So)s(c)m(k)m(ets.Multicast.Multicast)p -3422 764 28 4 v 38 w(So)s(c)m(k)m(et)p 3716 764 V 35 -w(FD)-3724 b Fh(type)39 b Fg(Multicast)p 883 764 35 5 -v 40 w(So)s(c)m(k)m(et)p 1250 764 V 40 w(FD)45 b Fj(is)30 -b(new)565 874 y(Socket_FD)e(with)h(private;)390 983 y -Fp(The)39 b Fj(Multicast_Socket_FD)34 b Fp(tagged)41 -b(t)m(yp)s(e)e(deriv)m(es)h(from)f(the)h Fj(Socket_FD)d -Fp(t)m(yp)s(e.)67 b(It)40 b(gets)390 1093 y(initialized)32 -b(b)m(y)e(calling)i([Create)p 1515 1093 28 4 v 34 w(Multicast)p -1924 1093 V 35 w(So)s(c)m(k)m(et)g(\(function\)],)f(page)g(20.)150 -1316 y Fi(Create)p 516 1316 37 5 v 43 w(Multicast)p 1070 -1316 V 44 w(So)s(c)m(k)m(et)40 b(\(function\))150 1533 -y Ff(Purpose)100 b Fp(Create)31 b(an)f(IP)g(m)m(ulticast)i(so)s(c)m(k)m -(et)150 1692 y Ff(Pr)n(ototype)2191 1900 y Fp(So)s(c)m(k)m -(ets.Multicast.Create)p 3175 1900 28 4 v 37 w(Multicast)p -3587 1900 V 35 w(So)s(c)m(k)m(et)-3243 b Fh(function)1045 -2010 y Fg(Create)p 1389 2010 35 5 v 40 w(Multicast)p -1908 2010 V 39 w(So)s(c)m(k)m(et)44 b Fe(\()p Fd(Group)33 -b Fj(:)d(String)o(;)1045 2119 y Fd(P)m(ort)j Fj(:)d(Positive)n(;)g -Fd(TTL)f Fj(:)h(Positive)f(:=)g(16;)1045 2229 y Fd(Self)p -1194 2229 28 4 v 33 w(Lo)s(op)k Fj(:)d(Boolean)e(:=)i(True)o -Fe(\))1045 2338 y Fj(return)f(Multicast_Socket_FD;)150 -2571 y Ff(P)-8 b(arameters)630 2681 y Fd(Group)391 b -Fp(in)360 b(IP)30 b(address)f(of)i(the)f(m)m(ulticast)i(group)e(to)h -(join)630 2790 y Fd(P)m(ort)470 b Fp(in)360 b(P)m(ort)31 -b(of)f(the)h(m)m(ulticast)h(group)e(to)h(join)630 2900 -y Fd(TTL)456 b Fp(in)360 b(Time-to-liv)m(e)33 b(of)d(sen)m(t)h(pac)m(k) -m(ets)630 3009 y Fd(Self)p 779 3009 V 33 w(Lo)s(op)267 -b Fp(in)360 b(Should)29 b(the)h(so)s(c)m(k)m(et)i(receiv)m(e)h(the)d -(pac)m(k)m(ets)i(sen)m(t)f(from)f(the)h(lo)s(cal)g(host?)150 -3168 y Ff(Return)i(v)-8 b(alue)630 3278 y Fp(The)30 b(new)g -(initialized)i(m)m(ulticast)g(so)s(c)m(k)m(et)150 3437 -y Ff(Description)630 3546 y Fp(This)20 b(function)g(creates)j(an)d(IP)h -(m)m(ulticast)h(so)s(c)m(k)m(et)h(attac)m(hed)f(to)g(a)f(giv)m(en)g -(group,)i(iden)m(ti\014ed)630 3656 y(b)m(y)30 b(its)h(class)g(E)f(IP)g -(address)g(and)g(p)s(ort.)630 3790 y(Be)25 b(careful)g(when)e(c)m(ho)s -(osing)i(the)g(TTL)e(parameter)i(of)f(y)m(our)h(IP)f(m)m(ulticast)h(so) -s(c)m(k)m(et.)41 b(Most)630 3900 y(IP)29 b(m)m(ulticast)i(routers)e(do) -g(implemen)m(t)h(threshold-based)f(\014ltering)g(and)g(will)h(not)f -(let)h(IP)630 4009 y(m)m(ulticast)23 b(pac)m(k)m(ets)h(lea)m(v)m(e)g(y) -m(our)e(organization)i(if)d(the)h(TTL)f(on)h(the)f(last)i(router)f(is)f -(smaller)630 4119 y(than)30 b(16.)150 4278 y Ff(Example)870 -4406 y Fj(declare)1013 4510 y(Sock)47 b(:)g(Multicast_Socket_FD;)870 -4614 y(begin)1013 4717 y(--)g(Create)f(a)i(multicast)d(socket)h(on)h -(group)g(224.1.2.3)e(port)i(8763)1013 4821 y(Sock)g(:=)g -(Create_Multicast_Socket)41 b(\("224.1.2.3",)k(8763\);)1013 -4925 y(--)i(Perform)f(some)h(operations)e(on)i(socket)1013 -5029 y([...])1013 5132 y(--)g(Shutdown)f(the)h(socket)f(in)h(both)g -(directions)1013 5236 y(Shutdown)f(\(Sock,)g(Both\);)870 -5340 y(end;)p eop end -%%Page: 20 24 -TeXDict begin 20 23 bop 150 -116 a Fp(20)2350 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)150 299 y Ff(See)i(also)86 b -Fp([Send)29 b(\(pro)s(cedure\)],)i(page)g(15,)630 408 -y([Sh)m(utdo)m(wn)e(\(pro)s(cedure\)],)i(page)g(17.)150 -633 y Fi(Create)p 516 633 37 5 v 43 w(Multicast)p 1070 -633 V 44 w(So)s(c)m(k)m(et)40 b(\(function\))150 850 -y Ff(Purpose)100 b Fp(Create)31 b(an)f(IP)g(m)m(ulticast)i(so)s(c)m(k)m -(et)150 1010 y Ff(Pr)n(ototype)2191 1219 y Fp(So)s(c)m(k)m -(ets.Multicast.Create)p 3175 1219 28 4 v 37 w(Multicast)p -3587 1219 V 35 w(So)s(c)m(k)m(et)-3243 b Fh(function)1045 -1328 y Fg(Create)p 1389 1328 35 5 v 40 w(Multicast)p -1908 1328 V 39 w(So)s(c)m(k)m(et)44 b Fe(\()p Fd(Group)33 -b Fj(:)d(String)o(;)1045 1438 y Fd(P)m(ort)j Fj(:)d(Positive)n(;)g -Fd(Lo)s(cal)p 2011 1438 28 4 v 34 w(P)m(ort)j Fj(:)d(Natural)n(;)g -Fd(TTL)f Fj(:)h(Positive)e(:=)i(16)p Fe(\))1045 1548 -y Fj(return)f(Multicast_Socket_FD;)150 1782 y Ff(P)-8 -b(arameters)630 1891 y Fd(Group)391 b Fp(in)360 b(IP)30 -b(address)f(of)i(the)f(m)m(ulticast)i(group)e(to)h(join)630 -2001 y Fd(P)m(ort)470 b Fp(in)360 b(P)m(ort)31 b(of)f(the)h(m)m -(ulticast)h(group)e(to)h(join)630 2110 y Fd(Lo)s(cal)p -850 2110 V 34 w(P)m(ort)221 b Fp(in)360 b(Lo)s(cal)31 -b(p)s(ort)f(n)m(um)m(b)s(er)f(to)i(use)630 2220 y Fd(TTL)456 -b Fp(in)360 b(Time-to-liv)m(e)33 b(of)d(sen)m(t)h(pac)m(k)m(ets)150 -2379 y Ff(Return)i(v)-8 b(alue)630 2489 y Fp(The)30 b(new)g -(initialized)i(m)m(ulticast)g(so)s(c)m(k)m(et)150 2648 -y Ff(Description)630 2758 y Fp(This)i(function)h(creates)h(an)f(IP)f(m) -m(ulticast)j(so)s(c)m(k)m(et)g(attac)m(hed)f(to)g(a)f(giv)m(en)h -(group,)g(iden-)630 2868 y(ti\014ed)i(b)m(y)g(its)g(class)h(E)f(IP)f -(address)g(and)h(p)s(ort.)63 b(If)37 b(Lo)s(cal)p 2684 -2868 V 34 w(P)m(ort)h(is)g(0,)j(a)d(free)g(p)s(ort)g(will)630 -2977 y(automatically)33 b(b)s(e)d(c)m(hosen)h(b)m(y)f(y)m(our)g(op)s -(erating)h(system.)630 3112 y(This)38 b(function)h(should)f(b)s(e)g -(used)g(when)g(y)m(ou)i(w)m(an)m(t)g(to)f(send)f(pac)m(k)m(ets)j(to)f -(a)f(m)m(ulticast)630 3221 y(group)30 b(without)g(receiving)i(an)m(y)e -(pac)m(k)m(et)j(y)m(ourself.)150 3381 y Ff(Example)870 -3509 y Fj(declare)1013 3613 y(Sock)47 b(:)g(Multicast_Socket_FD;)870 -3717 y(begin)1013 3821 y(--)g(Create)f(a)i(multicast)d(socket)h(on)h -(group)g(224.1.2.3)e(port)i(8763)1013 3924 y(Sock)g(:=)g -(Create_Multicast_Socket)41 b(\("224.1.2.3",)k(8763\);)1013 -4028 y(--)i(Perform)f(some)h(operations)e(on)i(socket)1013 -4132 y([...])1013 4236 y(--)g(Shutdown)f(the)h(socket)f(in)h(both)g -(directions)1013 4340 y(Shutdown)f(\(Sock,)g(Both\);)870 -4443 y(end;)150 4603 y Ff(See)33 b(also)86 b Fp([Send)29 -b(\(pro)s(cedure\)],)i(page)g(15,)630 4712 y([Sh)m(utdo)m(wn)e(\(pro)s -(cedure\)],)i(page)g(17.)p eop end -%%Page: 21 25 -TeXDict begin 21 24 bop 150 -116 a Fp(Chapter)30 b(6:)41 -b(So)s(c)m(k)m(ets.Naming)32 b(pac)m(k)-5 b(age)2079 -b(21)150 299 y Fm(6)80 b(So)t(c)l(k)l(ets.Naming)52 b(pac)l(k)-9 -b(age)275 567 y Fp(The)25 b Fj(Sockets.Naming)c Fp(pac)m(k)-5 -b(age)28 b(con)m(tains)f(t)m(yp)s(es)e(and)g(help)s(er)g(functions)g -(needed)g(to)i(manipulate)150 676 y(In)m(ternet)k(host)f(names)g(and)g -(addresses.)2903 944 y(So)s(c)m(k)m(ets.Naming.Address)-3723 -b Fh(type)39 b Fg(Address)45 b Fj(is)30 b(record)595 -1054 y(H1,)g(H2,)f(H3,)h(H4)g(:)g(Address_Component;)565 -1163 y(end)g(record;)390 1273 y Fp(This)36 b(t)m(yp)s(e)h(represen)m -(ts)g(an)g(IPv4)g(address)f(with)g Fj(H1)g Fp(b)s(eing)h(the)g(\014rst) -f(o)s(ctet)i(and)f Fj(H4)f Fp(the)h(last)390 1382 y(one.)k(F)-8 -b(or)31 b(example,)g(137.194.161.2)36 b(is)30 b(represen)m(ted)h(b)m(y) -f Fj(H1=137,)e(H2=194,)h(H3=161,)f(H4=2)p Fp(.)2640 1650 -y(So)s(c)m(k)m(ets.Naming.Address)p 3615 1650 28 4 v -34 w(Arra)m(y)-3724 b Fh(type)39 b Fg(Address)p 809 1650 -35 5 v 41 w(Arra)m(y)45 b Fj(is)30 b(array)f Fe(\()p -Fj(Positive)f(range)565 1760 y(<>)p Fe(\))i Fj(of)g(Address;)390 -1869 y Fp(Help)s(er)g(t)m(yp)s(e)2411 2137 y(So)s(c)m(k)m -(ets.Naming.Address)p 3386 2137 28 4 v 34 w(Comp)s(onen)m(t)-3725 -b Fh(type)39 b Fg(Address)p 809 2137 35 5 v 41 w(Comp)s(onen)m(t)44 -b Fj(is)30 b(Natural)565 2247 y(range)f(0)h(..)g(255;)390 -2356 y Fp(Help)s(er)g(t)m(yp)s(e)2774 2624 y(So)s(c)m(k)m -(ets.Naming.Host)p 3615 2624 28 4 v 36 w(En)m(try)-3725 -b Fh(type)39 b Fg(Host)p 641 2624 35 5 v 41 w(En)m(try)46 -b Fe(\()p Fj(N_Aliases,)28 b(N_Addresses)f(:)565 2734 -y(Natural)p Fe(\))i Fj(is)h(new)f(Ada.Finalization.Controll)o(ed)24 -b(with)29 b(record)626 2843 y(Name)g(:)h(String_Access;)626 -2953 y(Aliases)e(:)i(String_Array)d Fe(\()p Fj(1)k(..)e(N_Aliases)p -Fe(\))p Fj(;)626 3062 y(Addresses)f(:)i(Address_Array)c -Fe(\()p Fj(1)31 b(..)e(N_Addresses)p Fe(\))p Fj(;)565 -3172 y(end)h(record;)390 3282 y Fp(The)h Fj(Host_Entry)d -Fp(t)m(yp)s(e)k(holds)f(a)g(set)h(of)g(names)f(and)g(IP)f(addresses)h -(asso)s(ciated)i(with)e(a)h(host.)390 3391 y(Eac)m(h)f(host)f(can)h(ha) -m(v)m(e)h(sev)m(eral)f(IP)f(address)g(as)h(w)m(ell)g(as)g(sev)m(eral)g -(aliases.)2683 3659 y(So)s(c)m(k)m(ets.Naming.String)p -3583 3659 28 4 v 35 w(Access)-3723 b Fh(type)39 b Fg(String)p -713 3659 35 5 v 41 w(Access)45 b Fj(is)29 b(access)g(String;)390 -3769 y Fp(Help)s(er)h(t)m(yp)s(e)2714 4036 y(So)s(c)m(k)m -(ets.Naming.String)p 3614 4036 28 4 v 35 w(Arra)m(y)-3724 -b Fh(type)39 b Fg(String)p 713 4036 35 5 v 41 w(Arra)m(y)45 -b Fj(is)30 b(array)f Fe(\()p Fj(Positive)f(range)h(<>)p -Fe(\))565 4146 y Fj(of)h(String_Access;)390 4255 y Fp(Help)s(er)g(t)m -(yp)s(e)150 4502 y Fi(Address)p 588 4502 37 5 v 45 w(Of)42 -b(\(function\))150 4736 y Ff(Purpose)100 b Fp(Get)31 -b(the)g(IP)f(address)f(of)i(a)g(host)150 4907 y Ff(Pr)n(ototype)2772 -5139 y Fp(So)s(c)m(k)m(ets.Naming.Address)p 3747 5139 -28 4 v 34 w(Of)-3245 b Fh(function)41 b Fg(Address)p -1499 5139 35 5 v 40 w(Of)1045 5248 y Fe(\()p Fd(Something)e -Fj(:)30 b(String)n Fe(\))1045 5358 y Fj(return)f(Address;)p -eop end -%%Page: 22 26 -TeXDict begin 22 25 bop 150 -116 a Fp(22)2350 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)150 299 y Ff(P)-8 b(arameters)630 -408 y Fd(Something)226 b Fp(in)360 b(Host)31 b(name)f(or)h(IP)f -(address)150 573 y Ff(Return)j(v)-8 b(alue)630 683 y -Fp(IPv4)30 b(address)150 847 y Ff(Ex)n(ceptions)630 957 -y Fj(Naming_Error)615 b Fp(No)30 b(information)h(a)m(v)-5 -b(ailable)33 b(for)d(this)g(name)h(or)f(address)150 1122 -y Ff(See)j(also)86 b Fp([Name)p 889 1122 28 4 v 34 w(Of)30 -b(\(function\)],)h(page)g(25.)150 1356 y Fi(An)m(y)p -380 1356 37 5 v 43 w(Address)42 b(\(function\))150 1582 -y Ff(Purpose)100 b Fp(Sp)s(ecial)31 b(address)e(represen)m(ting)i(an)m -(y)f(address)g(on)g(the)h(lo)s(cal)g(host)150 1746 y -Ff(Pr)n(ototype)2706 1966 y Fp(So)s(c)m(k)m(ets.Naming.An)m(y)p -3527 1966 28 4 v 36 w(Address)-3246 b Fh(function)41 -b Fg(An)m(y)p 1302 1966 35 5 v 40 w(Address)150 2213 -y Ff(Return)33 b(v)-8 b(alue)630 2323 y Fp(Equiv)j(alen)m(t)31 -b(to)g Fj(INADDR_ANY)d Fp(in)i(the)h(C)f(programming)g(language)150 -2557 y Fi(Get)p 357 2557 37 5 v 44 w(P)m(eer)p 644 2557 -V 44 w(Addr)41 b(\(function\))150 2783 y Ff(Purpose)100 -b Fp(Retriev)m(e)32 b(IP)e(address)g(of)g(remote)h(host)150 -2947 y Ff(Pr)n(ototype)2627 3167 y Fp(So)s(c)m(k)m(ets.Naming.Get)p -3430 3167 28 4 v 36 w(P)m(eer)p 3641 3167 V 34 w(Addr)-3246 -b Fh(function)41 b Fg(Get)p 1282 3167 35 5 v 40 w(P)m(eer)p -1550 3167 V 41 w(Addr)1045 3277 y Fe(\()p Fd(So)s(c)m(k)m(et)34 -b Fj(:)c(Socket_FD)n Fe(\))1045 3386 y Fj(return)f(Address;)150 -3633 y Ff(P)-8 b(arameters)630 3743 y Fd(So)s(c)m(k)m(et)389 -b Fp(in)360 b(Connected)30 b(so)s(c)m(k)m(et)i(ob)5 b(ject)150 -3908 y Ff(Return)33 b(v)-8 b(alue)630 4017 y Fp(P)m(eer)31 -b(address)150 4182 y Ff(See)i(also)86 b Fp([Get)p 806 -4182 28 4 v 34 w(P)m(eer)p 1015 4182 V 34 w(P)m(ort)31 -b(\(function\)],)g(page)g(22,)630 4291 y([Get)p 806 4291 -V 34 w(So)s(c)m(k)p 1024 4291 V 33 w(Addr)e(\(function\)],)j(page)f -(23.)150 4526 y Fi(Get)p 357 4526 37 5 v 44 w(P)m(eer)p -644 4526 V 44 w(P)m(ort)41 b(\(function\))150 4751 y -Ff(Purpose)100 b Fp(Retriev)m(e)32 b(p)s(ort)e(used)f(b)m(y)i(remote)g -(host)150 4916 y Ff(Pr)n(ototype)2656 5136 y Fp(So)s(c)m(k)m -(ets.Naming.Get)p 3459 5136 28 4 v 36 w(P)m(eer)p 3670 -5136 V 34 w(P)m(ort)-3244 b Fh(function)41 b Fg(Get)p -1282 5136 35 5 v 40 w(P)m(eer)p 1550 5136 V 41 w(P)m(ort)1045 -5245 y Fe(\()p Fd(So)s(c)m(k)m(et)34 b Fj(:)c(Socket_FD)n -Fe(\))1045 5355 y Fj(return)f(Positive;)p eop end -%%Page: 23 27 -TeXDict begin 23 26 bop 150 -116 a Fp(Chapter)30 b(6:)41 -b(So)s(c)m(k)m(ets.Naming)32 b(pac)m(k)-5 b(age)2079 -b(23)150 299 y Ff(P)-8 b(arameters)630 408 y Fd(So)s(c)m(k)m(et)389 -b Fp(in)360 b(Connected)30 b(so)s(c)m(k)m(et)i(ob)5 b(ject)150 -591 y Ff(Return)33 b(v)-8 b(alue)630 700 y Fp(P)m(ort)31 -b(used)f(on)g(the)g(remote)i(host)150 883 y Ff(See)h(also)86 -b Fp([Get)p 806 883 28 4 v 34 w(So)s(c)m(k)p 1024 883 -V 33 w(P)m(ort)31 b(\(function\)],)g(page)h(23,)630 992 -y([Get)p 806 992 V 34 w(P)m(eer)p 1015 992 V 34 w(Addr)d -(\(function\)],)i(page)g(22.)150 1262 y Fi(Get)p 357 -1262 37 5 v 44 w(So)s(c)m(k)p 650 1262 V 44 w(Addr)41 -b(\(function\))150 1514 y Ff(Purpose)100 b Fp(Retriev)m(e)32 -b(IP)e(address)g(of)g(lo)s(cal)i(host)150 1696 y Ff(Pr)n(ototype)2618 -1951 y Fp(So)s(c)m(k)m(ets.Naming.Get)p 3421 1951 28 -4 v 37 w(So)s(c)m(k)p 3642 1951 V 33 w(Addr)-3246 b Fh(function)41 -b Fg(Get)p 1282 1951 35 5 v 40 w(So)s(c)m(k)p 1554 1951 -V 42 w(Addr)1045 2061 y Fe(\()p Fd(So)s(c)m(k)m(et)34 -b Fj(:)c(Socket_FD)n Fe(\))1045 2170 y Fj(return)f(Address;)150 -2461 y Ff(P)-8 b(arameters)630 2571 y Fd(So)s(c)m(k)m(et)389 -b Fp(in)360 b(Connected)30 b(so)s(c)m(k)m(et)i(ob)5 b(ject)150 -2753 y Ff(Return)33 b(v)-8 b(alue)630 2863 y Fp(Address)29 -b(of)i(lo)s(cal)g(in)m(terface)h(used)150 3045 y Ff(See)h(also)86 -b Fp([Get)p 806 3045 28 4 v 34 w(So)s(c)m(k)p 1024 3045 -V 33 w(P)m(ort)31 b(\(function\)],)g(page)h(23,)630 3155 -y([Get)p 806 3155 V 34 w(P)m(eer)p 1015 3155 V 34 w(Addr)d -(\(function\)],)i(page)g(22.)150 3425 y Fi(Get)p 357 -3425 37 5 v 44 w(So)s(c)m(k)p 650 3425 V 44 w(P)m(ort)41 -b(\(function\))150 3676 y Ff(Purpose)100 b Fp(Retriev)m(e)32 -b(p)s(ort)e(used)f(b)m(y)i(lo)s(cal)g(host)150 3859 y -Ff(Pr)n(ototype)2647 4114 y Fp(So)s(c)m(k)m(ets.Naming.Get)p -3450 4114 28 4 v 37 w(So)s(c)m(k)p 3671 4114 V 33 w(P)m(ort)-3244 -b Fh(function)41 b Fg(Get)p 1282 4114 35 5 v 40 w(So)s(c)m(k)p -1554 4114 V 42 w(P)m(ort)1045 4223 y Fe(\()p Fd(So)s(c)m(k)m(et)34 -b Fj(:)c(Socket_FD)n Fe(\))1045 4333 y Fj(return)f(Positive;)150 -4624 y Ff(P)-8 b(arameters)630 4734 y Fd(So)s(c)m(k)m(et)389 -b Fp(in)360 b(Connected)30 b(so)s(c)m(k)m(et)i(ob)5 b(ject)150 -4916 y Ff(Return)33 b(v)-8 b(alue)630 5025 y Fp(P)m(ort)31 -b(used)f(on)g(the)g(lo)s(cal)i(host)150 5208 y Ff(See)h(also)86 -b Fp([Get)p 806 5208 28 4 v 34 w(P)m(eer)p 1015 5208 -V 34 w(P)m(ort)31 b(\(function\)],)g(page)g(22,)630 5317 -y([Get)p 806 5317 V 34 w(So)s(c)m(k)p 1024 5317 V 33 -w(Addr)e(\(function\)],)j(page)f(23.)p eop end -%%Page: 24 28 -TeXDict begin 24 27 bop 150 -116 a Fp(24)2350 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)150 299 y Fi(Host)p 410 299 37 -5 v 45 w(Name)40 b(\(function\))150 511 y Ff(Purpose)100 -b Fp(Get)31 b(the)g(name)f(of)h(the)f(curren)m(t)h(host)150 -665 y Ff(Pr)n(ototype)2773 863 y Fp(So)s(c)m(k)m(ets.Naming.Host)p -3614 863 28 4 v 36 w(Name)-3244 b Fh(function)41 b Fg(Host)p -1331 863 35 5 v 41 w(Name)150 1083 y Ff(Return)33 b(v)-8 -b(alue)630 1192 y Fp(Name)31 b(of)g(the)f(curren)m(t)g(host)150 -1346 y Ff(Description)630 1456 y Fp(This)38 b(function)g(returns)f(the) -h(name)g(of)h(the)f(curren)m(t)h(host.)64 b(Dep)s(ending)38 -b(on)g(the)h(lo)s(cal)630 1565 y(con\014guration,)31 -b(it)g(ma)m(y)g(or)f(ma)m(y)h(not)g(b)s(e)f(a)g(fully)g(quali\014ed)h -(domain)f(name)g(\(F)m(QDN\).)150 1781 y Fi(Image)41 -b(\(function\))150 1993 y Ff(Purpose)100 b Fp(Mak)m(e)32 -b(a)f(string)f(from)g(an)g(address)150 2147 y Ff(Pr)n(ototype)2980 -2345 y Fp(So)s(c)m(k)m(ets.Naming.Image)-3241 b Fh(function)41 -b Fg(Image)k Fe(\()p Fd(Add)34 b Fj(:)c(Address)n Fe(\))1045 -2454 y Fj(return)f(String;)150 2674 y Ff(P)-8 b(arameters)630 -2784 y Fd(Add)475 b Fp(in)360 b(IP)30 b(address)150 2938 -y Ff(Return)j(v)-8 b(alue)630 3047 y Fp(String)30 b(represen)m(tation)h -(of)g(the)g(IP)f(address)150 3201 y Ff(See)j(also)86 -b Fp([V)-8 b(alue)32 b(\(function\)],)f(page)g(25.)150 -3417 y Fi(Info)p 369 3417 37 5 v 45 w(Of)p 543 3417 V -45 w(Name)p 902 3417 V 44 w(Or)p 1088 3417 V 44 w(IP)41 -b(\(function\))150 3629 y Ff(Purpose)100 b Fp(Get)31 -b(addresses)f(and)g(names)g(of)h(a)g(host)150 3783 y -Ff(Pr)n(ototype)2403 3981 y Fp(So)s(c)m(k)m(ets.Naming.Info)p -3217 3981 28 4 v 35 w(Of)p 3351 3981 V 32 w(Name)p 3612 -3981 V 34 w(Or)p 3753 3981 V 32 w(IP)-3245 b Fh(function)1045 -4090 y Fg(Info)p 1251 4090 35 5 v 42 w(Of)p 1414 4090 -V 41 w(Name)p 1749 4090 V 41 w(Or)p 1923 4090 V 41 w(IP)46 -b Fe(\()p Fd(Something)39 b Fj(:)30 b(String)n Fe(\))1045 -4200 y Fj(return)f(Host_Entry;)150 4420 y Ff(P)-8 b(arameters)630 -4530 y Fd(Something)226 b Fp(in)360 b(Host)31 b(name)f(or)h(IP)f -(address)150 4683 y Ff(Return)j(v)-8 b(alue)630 4793 -y Fp(Corresp)s(onding)29 b(host)h(en)m(try)150 4947 y -Ff(Description)630 5056 y Fp(This)g(function)g(extracts)h(all)h(the)e -(names)g(and)g(addresses)g(from)g(the)g(naming)h(service.)150 -5210 y Ff(Ex)n(ceptions)630 5320 y Fj(Naming_Error)615 -b Fp(No)30 b(information)h(a)m(v)-5 b(ailable)33 b(for)d(this)g(name)h -(or)f(address)p eop end -%%Page: 25 29 -TeXDict begin 25 28 bop 150 -116 a Fp(Chapter)30 b(6:)41 -b(So)s(c)m(k)m(ets.Naming)32 b(pac)m(k)-5 b(age)2079 -b(25)150 299 y Fi(Is)p 251 299 37 5 v 44 w(IP)p 425 299 -V 44 w(Address)42 b(\(function\))150 514 y Ff(Purpose)100 -b Fp(Chec)m(k)31 b(if)f(giv)m(en)h(string)g(is)f(a)h(v)-5 -b(alid)31 b(IP)f(address)150 670 y Ff(Pr)n(ototype)2674 -874 y Fp(So)s(c)m(k)m(ets.Naming.Is)p 3400 874 28 4 v -35 w(IP)p 3530 874 V 33 w(Address)-3246 b Fh(function)41 -b Fg(Is)p 1182 874 35 5 v 42 w(IP)p 1345 874 V 42 w(Address)1045 -984 y Fe(\()p Fd(Something)e Fj(:)30 b(String)n Fe(\))1045 -1093 y Fj(return)f(Boolean;)150 1321 y Ff(P)-8 b(arameters)630 -1431 y Fd(Something)226 b Fp(in)360 b(String)30 b(to)h(c)m(hec)m(k)150 -1587 y Ff(Return)i(v)-8 b(alue)630 1697 y Fp(`)p Fj(True)p -Fp(')30 b(if)g Fd(Something)38 b Fp(is)31 b(an)f(IP)g(address)150 -1917 y Fi(Name)p 471 1917 37 5 v 44 w(Of)42 b(\(function\))150 -2132 y Ff(Purpose)100 b Fp(O\016cial)31 b(name)g(of)f(the)h(host)150 -2289 y Ff(Pr)n(ototype)2859 2492 y Fp(So)s(c)m(k)m(ets.Naming.Name)p -3745 2492 28 4 v 36 w(Of)-3245 b Fh(function)41 b Fg(Name)p -1388 2492 35 5 v 40 w(Of)46 b Fe(\()p Fd(Something)38 -b Fj(:)30 b(String)o Fe(\))1045 2602 y Fj(return)f(String;)150 -2829 y Ff(P)-8 b(arameters)630 2939 y Fd(Something)226 -b Fp(in)360 b(Host)31 b(name)f(or)h(IP)f(address)150 -3096 y Ff(Return)j(v)-8 b(alue)630 3205 y Fp(Name)31 -b(of)g(the)f(host)150 3362 y Ff(Ex)n(ceptions)630 3472 -y Fj(Naming_Error)615 b Fp(No)30 b(information)h(a)m(v)-5 -b(ailable)33 b(for)d(this)g(name)h(or)f(address)150 3628 -y Ff(See)j(also)86 b Fp([Address)p 978 3628 28 4 v 32 -w(Of)30 b(\(function\)],)h(page)g(21.)150 3849 y Fi(V)-10 -b(alue)40 b(\(function\))150 4063 y Ff(Purpose)100 b -Fp(T)-8 b(ransform)29 b(a)i(string)f(in)m(to)i(an)e(address)150 -4220 y Ff(Pr)n(ototype)2998 4424 y Fp(So)s(c)m(k)m(ets.Naming.V)-8 -b(alue)-3241 b Fh(function)41 b Fg(V)-10 b(alue)44 b -Fe(\()p Fd(Add)33 b Fj(:)d(String)o Fe(\))1045 4534 y -Fj(return)f(Address;)150 4761 y Ff(P)-8 b(arameters)630 -4871 y Fd(Add)475 b Fp(in)360 b(T)-8 b(extual)31 b(represen)m(tation)g -(of)g(an)f(IP)g(address)150 5027 y Ff(Return)j(v)-8 b(alue)630 -5137 y Fp(Corresp)s(onding)29 b(Address)150 5294 y Ff(See)k(also)86 -b Fp([Image)31 b(\(function\)],)h(page)f(24.)p eop end -%%Page: 26 30 -TeXDict begin 26 29 bop 150 -116 a Fp(26)2350 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)p eop end -%%Page: 27 31 -TeXDict begin 27 30 bop 150 -116 a Fp(App)s(endix)29 -b(A:)h(Con)m(tributors)2460 b(27)150 299 y Fm(App)t(endix)52 -b(A)81 b(Con)l(tributors)275 533 y Fp(AdaSo)s(c)m(k)m(ets)39 -b(has)f(b)s(een)g(originally)h(dev)m(elopp)s(ed)g(b)m(y)f(Sam)m(uel)g -(T)-8 b(ardieu)38 b(who)g(still)h(main)m(tains)g(it.)150 -643 y(Ho)m(w)m(ev)m(er,)31 b(the)d(follo)m(wing)i(p)s(eople)e(ha)m(v)m -(e)h(made)g(crucial)g(con)m(tributions)f(to)h(AdaSo)s(c)m(k)m(ets,)i(b) -s(e)c(they)h(new)150 752 y(co)s(de,)j(bug)f(\014xes)g(or)g(p)s(orting)g -(to)h(new)f(op)s(erating)h(systems:)225 887 y Fn(\017)60 -b Fp(Dmitriy)31 b(Anisimk)m(o)m(v)g(\()p Fj(anisimkov@yahoo.com)p -Fp(\))225 1021 y Fn(\017)60 b Fp(Alan)31 b(Barnes)f(\()p -Fj(barnesa@aston.ac.uk)p Fp(\))225 1156 y Fn(\017)60 -b Fp(Juanma)30 b(Barranquero)g(\()p Fj(lektu@terra.es)p -Fp(\))225 1290 y Fn(\017)60 b Fp(Bobb)m(y)31 b(D.)g(Bry)m(an)m(t)g(\()p -Fj(bdbryant@mail.utexas.edu)p Fp(\))225 1425 y Fn(\017)60 -b Fp(Sander)29 b(Co)m(x)i(\()p Fj(sander.cox@philips.com)p -Fp(\))225 1559 y Fn(\017)60 b Fp(Sune)29 b(F)-8 b(alk)32 -b(\()p Fj(sune.falck@telia.com)p Fp(\))225 1694 y Fn(\017)60 -b Fp(Guillaume)31 b(F)-8 b(oliard)32 b(\()p Fj(guifo@wanadoo.fr)p -Fp(\))225 1828 y Fn(\017)60 b Fp(Lauren)m(t)30 b(Guerb)m(y)h(\()p -Fj(guerby@club-internet.fr)p Fp(\))225 1963 y Fn(\017)60 -b Fp(Da)m(vid)31 b(J.)g(Kristola)g(\()p Fj(David95037@aol.com)p -Fp(\))225 2097 y Fn(\017)60 b Fp(Dominik)31 b(Madon)g(\()p -Fj(dominik@acm.org)p Fp(\))225 2232 y Fn(\017)60 b Fp(P)m(ascal)32 -b(Obry)d(\()p Fj(p.obry@wanadoo.fr)p Fp(\))225 2366 y -Fn(\017)60 b Fp(Nicolas)32 b(Ollinger)f(\()p Fj -(Nicolas.Ollinger@ens-lyon)o(.fr)p Fp(\))225 2501 y Fn(\017)60 -b Fp(Stphane)30 b(P)m(atureau)g(\()p Fj(spaturea@meletu.univ-valenc)o -(ienn)o(es.f)o(r)p Fp(\))225 2635 y Fn(\017)60 b Fp(Thomas)30 -b(Quinot)g(\()p Fj(thomas@cuivre.fr.eu.org)p Fp(\))225 -2770 y Fn(\017)60 b Fp(Preb)s(en)29 b(Randhol)h(\()p -Fj(randhol@pvv.org)p Fp(\))225 2904 y Fn(\017)60 b Fp(Maxim)31 -b(Reznik)g(\()p Fj(max1@mbank.com.ua)p Fp(\))225 3039 -y Fn(\017)60 b Fp(Sam)m(uel)31 b(T)-8 b(ardieu)30 b(\()p -Fj(sam@rfc1149.net)p Fp(\))275 3198 y(If)d(y)m(ou)h(feel)g(that)h(y)m -(ou)f(ha)m(v)m(e)h(b)s(een)e(forgotten,)j(please)e(send)f(me)h(a)g -(mail)h(so)f(that)g(I)g(can)g(\014x)f(it)h(in)g(the)150 -3308 y(next)j(v)m(ersion.)275 3442 y(See)f(App)s(endix)f(B)i -([Resources)f(on)h(the)f(In)m(ternet],)i(page)f(29,)g(for)f(ho)m(w)h -(to)g(con)m(tribute.)p eop end -%%Page: 28 32 -TeXDict begin 28 31 bop 150 -116 a Fp(28)2350 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)p eop end -%%Page: 29 33 -TeXDict begin 29 32 bop 150 -116 a Fp(App)s(endix)29 -b(B:)i(Resources)f(on)h(the)f(In)m(ternet)1950 b(29)150 -299 y Fm(App)t(endix)52 b(B)81 b(Resources)52 b(on)h(the)g(In)l(ternet) -275 533 y Fp(The)29 b(latest)j(v)m(ersion)f(of)g(AdaSo)s(c)m(k)m(ets)h -(can)e(alw)m(a)m(ys)i(b)s(e)e(found)f(at:)1019 643 y -Fj(http://www.rfc1149.net/de)o(vel/)o(adas)o(ock)o(ets)275 -777 y Fp(There)g(is)i(a)g(mailing-list)h(that)f(y)m(ou)g(can)f(use)g -(to)h(discuss)f(problem)g(or)g(suggestions)h(at:)900 -887 y Fj(http://www.rfc1149.net/l)o(ists)o(/inf)o(o/a)o(daso)o(cket)o -(s)275 1021 y Fp(Please)41 b(use)f(the)h(mailing-list)h(for)e -(questions)h(and)f(discussions.)70 b(Ho)m(w)m(ev)m(er,)45 -b(y)m(ou)c(can)f(send)g(me)150 1131 y(patc)m(hes)31 b(b)m(y)g(priv)-5 -b(ate)30 b(mail)h(\()p Fj(sam@rfc1149.net)p Fp(\).)p -eop end -%%Page: 30 34 -TeXDict begin 30 33 bop 150 -116 a Fp(30)2350 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)p eop end -%%Page: 31 35 -TeXDict begin 31 34 bop 150 -116 a Fp(Index)3286 b(31)150 -299 y Fm(Index)150 614 y Fo(A)150 758 y Fc(Accept_Socket)22 -b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 -b Fa(7)150 860 y(Accepting)26 b(a)g(new)f(connection)d -Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)47 b Fa(7)150 962 y Fc(Ada.Streams.Stream_Element_Ar)q(ray) -13 b Fb(.)18 b(.)13 b(.)f(.)38 b Fa(6,)27 b(14,)f(15)150 -1065 y Fc(Ada.Streams.Stream_Element_Co)q(unt)f Fb(.)13 -b(.)f(.)g(.)h(.)f(.)45 b Fa(14,)26 b(15)150 1167 y(AdaSo)r(c)n(k)n(ets) -f(presen)n(tation)7 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33 b Fa(1)150 -1269 y Fc(Address)8 b Fb(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b Fa(21)150 1371 y -Fc(Address_Array)18 b Fb(.)d(.)d(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)43 b Fa(21)150 1473 y Fc(Address_Component)12 b Fb(.)k(.)c(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)37 b Fa(21)150 1575 y Fc(Address_Of)24 -b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 -b Fa(21)150 1677 y Fc(AF_INET)8 b Fb(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b Fa(17)150 -1779 y Fc(Any_Address)23 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)46 b Fa(22)150 1881 y(Assigning)27 -b(a)f(lo)r(cal)h(p)r(ort)14 b Fb(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)40 -b Fa(8)150 2197 y Fo(B)150 2341 y Fc(Bind)14 b Fb(.)f(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)40 b Fa(8)150 2443 y(Binding)26 b(a)g(so)r(c)n(k)n(et)13 -b Fb(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 -b Fa(8)150 2545 y Fc(Both)13 b Fb(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 -b Fa(17)150 2848 y Fo(C)150 2992 y Fa(Closing)27 b(a)f(so)r(c)n(k)n(et) -20 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)45 -b Fa(17)150 3094 y(Comparaison)28 b(with)e Fc(GNAT.Sockets)9 -b Fb(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 -b Fa(1)150 3196 y Fc(Connect)9 b Fb(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b -Fa(8)150 3298 y(Connecting)26 b(a)g(so)r(c)n(k)n(et)9 -b Fb(.)k(.)f(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fa(8)150 -3400 y Fc(Connection_Closed)27 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)48 -b Fa(9,)27 b(10,)g(11,)f(13,)h(14,)g(15,)f(16)150 3502 -y Fc(Connection_Refused)11 b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -37 b Fa(9)150 3604 y(Con)n(tributing)12 b Fb(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)38 b Fa(27,)26 b(29)150 3706 y Fc(CR)19 -b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)45 b Fa(10,)27 b(11,)f(12)150 3808 y Fc(Create_Multicast_Socket)8 -b Fb(.)17 b(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 -b Fa(5,)27 b(19,)f(20)150 3910 y(Creating)h(a)f(m)n(ulticast)g(so)r(c)n -(k)n(et)17 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)42 -b Fa(5,)27 b(19,)f(20)150 4012 y(Creating)h(a)f(serv)n(er)21 -b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)48 -b Fa(8)150 4114 y(Creating)27 b(a)f(so)r(c)n(k)n(et)13 -b Fb(.)g(.)f(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)40 b Fa(5,)26 b(17,)h(19,)f(20)150 4216 y(Creating)h(a)f(TCP)h -(so)r(c)n(k)n(et)14 b Fb(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)40 b -Fa(5)150 4318 y(Creating)27 b(a)f(UDP)f(so)r(c)n(k)n(et)11 -b Fb(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)37 b Fa(5)150 4421 y(Creating)27 -b(a)f(unicast)g(so)r(c)n(k)n(et)12 b Fb(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 -b Fa(5)150 4736 y Fo(E)150 4880 y Fa(Establishing)27 -b(a)f(listen)g(queue)c Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fa(12)150 5196 y -Fo(F)150 5340 y Fa(Finding)26 b(AdaSo)r(c)n(k)n(ets)f(on)h(the)f(In)n -(ternet)15 b Fb(.)c(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)41 -b Fa(29)2025 614 y Fo(G)2025 751 y Fc(Get)15 b Fb(.)e(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)41 b Fa(9)2025 849 y Fc(Get_Char)7 b Fb(.)14 b(.)e(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 -b Fa(10)2025 947 y Fc(Get_Line)17 b Fb(.)d(.)f(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)43 b Fa(10,)27 b(11)2025 1046 -y Fc(Get_Peer_Addr)18 b Fb(.)d(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)43 b Fa(22)2025 1144 y Fc(Get_Peer_Port)18 b Fb(.)d(.)d(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 b Fa(22)2025 1242 y Fc(Get_Sock_Addr)18 -b Fb(.)d(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 -b Fa(23)2025 1341 y Fc(Get_Sock_Port)18 b Fb(.)d(.)d(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)43 b Fa(23)2025 1439 y Fc(Getsockopt)24 -b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 -b Fa(11)2025 1537 y(Group)25 b(comm)n(unication)8 b Fb(.)13 -b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)34 b Fa(5)2025 1832 y Fo(H)2025 -1969 y Fa(Handling)25 b(a)h(new)g(connection)18 b Fb(.)13 -b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)44 b Fa(7)2025 2067 y Fc(Host_Entry)24 b Fb(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 -b Fa(21)2025 2165 y Fc(Host_Name)25 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fa(24)2025 2448 -y Fo(I)2025 2584 y Fc(Image)11 b Fb(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b -Fa(24)2025 2682 y Fc(Info_Of_Name_Or_IP)10 b Fb(.)17 -b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fa(24)2025 2780 y(Installing)26 -b(AdaSo)r(c)n(k)n(ets)19 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 -b Fa(3)2025 2879 y Fc(IP_ADD_MEMBERSHIP)26 b Fb(.)13 -b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)48 b Fa(12,)27 b(16)2025 2977 y Fc(IP_DROP_MEMBERSHIP)e -Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)47 b Fa(12,)27 b(16)2025 3075 y Fc -(IP_MULTICAST_LOOP)f Fb(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48 b Fa(12,)27 -b(16)2025 3174 y Fc(IP_MULTICAST_TTL)g Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49 -b Fa(12,)27 b(16)2025 3272 y Fc(IPPROTO_IP)15 b Fb(.)f(.)e(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)40 b Fa(12,)27 b(16)2025 -3370 y Fc(Is_IP_Address)18 b Fb(.)d(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)43 b Fa(25)2025 3653 y Fo(L)2025 3789 y Fc(LF)19 -b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)45 b Fa(10,)26 b(11,)h(12)2025 3887 y Fc(Listen)10 -b Fb(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)35 b Fa(12)2025 3986 y(Listen)26 b(queue)c -Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 -b Fa(12)2025 4281 y Fo(M)2025 4417 y Fa(Manipulating)26 -b(so)r(c)n(k)n(et)g(options)8 b Fb(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)34 b Fa(11,)27 b(16)2025 4515 -y(Mb)r(one)13 b Fb(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fa(5)2025 4614 y(Multicast)27 -b(so)r(c)n(k)n(ets)20 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)47 b Fa(5)2025 4712 y Fc(Multicast_Socket_FD)25 b -Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)47 b Fa(5,)26 b(19)2025 5007 y Fo(N)2025 -5143 y Fc(Name_Of)8 b Fb(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fa(25)2025 5242 -y Fc(Naming_Error)25 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 -b Fa(22,)26 b(24,)h(25)2025 5340 y Fc(New_Line)7 b Fb(.)14 -b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -32 b Fa(12)p eop end -%%Page: 32 36 -TeXDict begin 32 35 bop 150 -116 a Fp(32)2350 b(AdaSo)s(c)m(k)m(ets)32 -b(reference)f(man)m(ual)150 299 y Fo(P)150 421 y Fc(PF_INET)8 -b Fb(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)34 b Fa(17)150 512 y Fc(Put)14 b Fb(.)f(.)f(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39 -b Fa(13)150 603 y Fc(Put_Line)7 b Fb(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)32 b Fa(13)150 -848 y Fo(R)150 969 y Fa(Ra)n(w)26 b(data)g(manipulation)d -Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)49 b Fa(6)150 1061 y Fc(Receive)21 -b Fb(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45 -b Fa(14,)26 b(17)150 1152 y Fc(Receive_Some)c Fb(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)45 -b Fa(15)150 1244 y(Receiving)26 b(data)10 b Fb(.)j(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)36 b Fa(6,)26 b(9,)h(10,)g(11,)f(14,)h(15,)g(16,)f(18)150 -1335 y(Rep)r(orting)g(a)g(bug)16 b Fb(.)c(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)41 b Fa(29)150 1427 y(Represen)n(ting)25 -b(IP)h(addresses)7 b Fb(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)34 b Fa(24,)26 b(25)150 1518 y(Retrieving)g(so)r -(c)n(k)n(et)f(options)12 b Fb(.)h(.)f(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)37 b Fa(11)150 -1775 y Fo(S)150 1897 y Fc(Send)24 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)50 b Fa(15,)26 -b(17)150 1988 y(Sending)f(data)14 b Fb(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 -b Fa(6,)26 b(12,)h(13,)f(15)150 2080 y(Sending)f(patc)n(hes)c -Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 -b Fa(29)150 2171 y Fc(Set_Buffer)24 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fa(16)150 2263 y -Fc(Setsockopt)24 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)47 b Fa(16)150 2354 y(Setting)26 b(so)r(c)n(k)n(et)f -(options)12 b Fb(.)h(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)38 b Fa(16)150 -2446 y Fc(Shutdown)7 b Fb(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)32 b Fa(17)150 2537 y -Fc(SO_RCVBUF)16 b Fb(.)e(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)42 b Fa(12,)26 b(16)150 2628 y Fc(SO_REUSEADDR)12 -b Fb(.)j(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)38 b Fa(12,)26 -b(16)150 2720 y Fc(SO_REUSEPORT)12 b Fb(.)j(.)d(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)38 b Fa(12,)26 b(16)150 2811 y Fc(SO_SNDBUF)16 -b Fb(.)e(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)42 -b Fa(12,)26 b(16)150 2903 y Fc(SOCK_DGRAM)e Fb(.)13 b(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fa(17)150 -2994 y Fc(SOCK_STREAM)23 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)46 b Fa(17)150 3086 y Fc(Socket)23 -b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) -h(.)47 b Fa(5,)26 b(17)150 3177 y(So)r(c)n(k)n(et)f(sh)n(utdo)n(wn)9 -b Fb(.)j(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b -Fa(17)150 3268 y Fc(Socket_Error)14 b Fb(.)h(.)d(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)40 b Fa(8,)26 b(9)150 3360 y Fc(Socket_FD)18 -b Fb(.)c(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)45 -b Fa(5,)26 b(7)150 3451 y Fc(Sockets.Accept_Socket)7 -b Fb(.)17 b(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 b Fa(7)150 3543 y Fc(Sockets.Bind)23 -b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)46 -b Fa(8)150 3634 y Fc(Sockets.Connect)16 b Fb(.)f(.)e(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)42 b Fa(8)150 3726 y Fc(Sockets.Get)24 -b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 -b Fa(9)150 3817 y Fc(Sockets.Get_Char)13 b Fb(.)j(.)d(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)39 b Fa(10)150 3908 y Fc(Sockets.Get_Line)28 -b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)50 b Fa(10,)26 b(11)150 4000 -y Fc(Sockets.Getsockopt)10 b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 -b Fa(11)150 4091 y Fc(Sockets.IP_ADD_MEMBERSHIP)11 b -Fb(.)18 b(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)37 -b Fa(12,)26 b(16)150 4183 y Fc(Sockets.IP_DROP_MEMBERSHIP)10 -b Fb(.)18 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 -b Fa(12,)26 b(16)150 4274 y Fc(Sockets.IP_MULTICAST_LOOP)11 -b Fb(.)18 b(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)37 -b Fa(12,)26 b(16)150 4366 y Fc(Sockets.IP_MULTICAST_TTL)12 -b Fb(.)18 b(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 -b Fa(12,)26 b(16)150 4457 y Fc(Sockets.IPPROTO_IP)f Fb(.)13 -b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)47 b Fa(12,)26 b(16)150 4548 y Fc(Sockets.Listen)16 -b Fb(.)g(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 b -Fa(12)150 4640 y Fc(Sockets.Multicast.Create_Mult)q(icas)q(t_Soc)q(ket) -322 4731 y Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)44 b Fa(5,)27 b(19,)f(20)2025 299 y Fc -(Sockets.Naming.Address_Of)18 b Fb(.)g(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b Fa(22)2025 392 -y Fc(Sockets.Naming.Any_Address)17 b Fb(.)h(.)12 b(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)43 b Fa(22)2025 486 -y Fc(Sockets.Naming.Get_Peer_Addr)15 b Fb(.)i(.)c(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fa(22)2025 579 y Fc -(Sockets.Naming.Get_Peer_Port)15 b Fb(.)i(.)c(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)40 b Fa(23)2025 673 y Fc -(Sockets.Naming.Get_Sock_Addr)15 b Fb(.)i(.)c(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)40 b Fa(23)2025 766 y Fc -(Sockets.Naming.Get_Sock_Port)15 b Fb(.)i(.)c(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)40 b Fa(23)2025 860 y Fc -(Sockets.Naming.Host_Name)25 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)46 b Fa(24)2025 954 -y Fc(Sockets.Naming.Image)7 b Fb(.)17 b(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 -b Fa(24)2025 1047 y Fc(Sockets.Naming.Info_Of_Name_Or)q(_IP)7 -b Fb(.)18 b(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fa(24)2025 -1141 y Fc(Sockets.Naming.Is_IP_Address)15 b Fb(.)i(.)c(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fa(25)2025 1234 y -Fc(Sockets.Naming.Name_Of)27 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fa(25)2025 -1328 y Fc(Sockets.Naming.Value)7 b Fb(.)17 b(.)12 b(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 -b Fa(25)2025 1421 y Fc(Sockets.New_Line)13 b Fb(.)j(.)c(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)39 b Fa(12)2025 1515 y Fc(Sockets.Put)23 -b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)46 -b Fa(13)2025 1608 y Fc(Sockets.Put_Line)13 b Fb(.)j(.)c(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)39 b Fa(13)2025 1702 y Fc(Sockets.Receive)15 -b Fb(.)g(.)e(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40 b Fa(14)2025 -1795 y Fc(Sockets.Receive_Some)7 b Fb(.)17 b(.)12 b(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 -b Fa(15)2025 1889 y Fc(Sockets.Send)22 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b Fa(15)2025 1982 y Fc -(Sockets.Set_Buffer)10 b Fb(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 -b Fa(16)2025 2076 y Fc(Sockets.Setsockopt)10 b Fb(.)17 -b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fa(16)2025 2169 y Fc(Sockets.Shutdown) -13 b Fb(.)j(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fa(17)2025 -2263 y Fc(Sockets.SO_RCVBUF)26 b Fb(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48 -b Fa(12,)27 b(16)2025 2356 y Fc(Sockets.SO_REUSEADDR)18 -b Fb(.)f(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)44 b Fa(12,)27 b(16)2025 2450 y Fc(Sockets.SO_REUSEPORT)18 -b Fb(.)f(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)44 b Fa(12,)27 b(16)2025 2543 y Fc(Sockets.SO_SNDBUF)f -Fb(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)48 b Fa(12,)27 b(16)2025 2637 -y Fc(Sockets.Socket)10 b Fb(.)15 b(.)d(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)36 -b Fa(5,)26 b(17)2025 2731 y Fc(Sockets.SOL_SOCKET)f Fb(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)47 b Fa(12,)27 b(16)2025 2824 y Fc(Sockets.Unset_Buffer)7 -b Fb(.)17 b(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 b Fa(18)2025 2918 y -Fc(SOL_SOCKET)15 b Fb(.)f(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -40 b Fa(12,)27 b(16)2025 3011 y Fc(Stream_Element_Array)12 -b Fb(.)17 b(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)38 b Fa(6,)26 b(14,)h(15)2025 3105 y Fc(Stream_Element_Count)18 -b Fb(.)f(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)44 b Fa(14,)27 b(15)2025 3198 y Fc(String_Access)18 -b Fb(.)d(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 -b Fa(21)2025 3292 y Fc(String_Array)22 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b Fa(21)2025 3385 y(Suggesting)26 -b(a)g(feature)e Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)49 -b Fa(29)2025 3654 y Fo(T)2025 3780 y Fa(TCP)27 b(so)r(c)n(k)n(et)22 -b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -48 b Fa(5)2025 4036 y Fo(U)2025 4162 y Fa(UDP)25 b(so)r(c)n(k)n(et)20 -b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -46 b Fa(5)2025 4256 y(Unicast)26 b(so)r(c)n(k)n(ets)16 -b Fb(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 -b Fa(5)2025 4349 y Fc(Unset_Buffer)22 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b Fa(18)2025 4605 y Fo(V)2025 -4731 y Fc(Value)11 b Fb(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b Fa(25)p eop -end -%%Trailer - -userdict /end-hook known{end-hook}if -%%EOF reverted: --- adasockets-1.8.4.7/debian/orig/doc/sockets-multicast.texi +++ adasockets-1.8.4.7.orig/debian/orig/doc/sockets-multicast.texi @@ -1,130 +0,0 @@ - -The @code{Sockets.Multicast} allows the creation of IP multicast -sockets. - -@deftypefn Sockets.Multicast.Multicast_Socket_FD type Multicast_Socket_FD is new Socket_FD with private; -The @code{Multicast_Socket_FD} tagged type derives from the -@code{Socket_FD} type. It gets initialized by calling -@ref{Create_Multicast_Socket (function)}. - -@end deftypefn - -@menu -* Create_Multicast_Socket (function):: - Create an IP multicast socket -* Create_Multicast_Socket (function):: - Create an IP multicast socket -@end menu - -@node Create_Multicast_Socket (function) -@unnumberedsubsec Create_Multicast_Socket (function) -@cindex Creating a socket -@cindex Creating a multicast socket - -@table @sc -@item Purpose -Create an IP multicast socket -@item Prototype -@deftypefn Sockets.Multicast.Create_Multicast_Socket function Create_Multicast_Socket (@w{@var{Group} : String}; @w{@var{Port} : Positive}; @w{@var{TTL} : Positive := 16}; @w{@var{Self_Loop} : Boolean := True})@*@w{return Multicast_Socket_FD;} -@end deftypefn -@fnindex Sockets.Multicast.Create_Multicast_Socket - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Group} @tab in @tab IP address of the multicast group to join -@item @var{Port} @tab in @tab Port of the multicast group to join -@item @var{TTL} @tab in @tab Time-to-live of sent packets -@item @var{Self_Loop} @tab in @tab Should the socket receive the packets -sent from the local host? -@end multitable - -@item Return value -The new initialized multicast socket - -@item Description -This function creates an IP multicast socket attached to a given -group, identified by its class E IP address and port. - -Be careful when choosing the TTL parameter of your IP multicast -socket. Most IP multicast routers do implement threshold-based -filtering and will not let IP multicast packets leave your -organization if the TTL on the last router is smaller than 16. - - - -@item Example -@example -declare - Sock : Multicast_Socket_FD; -begin - -- Create a multicast socket on group 224.1.2.3 port 8763 - Sock := Create_Multicast_Socket ("224.1.2.3", 8763); - -- Perform some operations on socket - [...] - -- Shutdown the socket in both directions - Shutdown (Sock, Both); -end; -@end example - - -@item See also -@ref{Send (procedure)},@*@ref{Shutdown (procedure)}. - -@end table - -@node Create_Multicast_Socket (function) -@unnumberedsubsec Create_Multicast_Socket (function) -@cindex Creating a socket -@cindex Creating a multicast socket - -@table @sc -@item Purpose -Create an IP multicast socket -@item Prototype -@deftypefn Sockets.Multicast.Create_Multicast_Socket function Create_Multicast_Socket (@w{@var{Group} : String}; @w{@var{Port} : Positive}; @w{@var{Local_Port} : Natural}; @w{@var{TTL} : Positive := 16})@*@w{return Multicast_Socket_FD;} -@end deftypefn -@fnindex Sockets.Multicast.Create_Multicast_Socket - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Group} @tab in @tab IP address of the multicast group to join -@item @var{Port} @tab in @tab Port of the multicast group to join -@item @var{Local_Port} @tab in @tab Local port number to use -@item @var{TTL} @tab in @tab Time-to-live of sent packets -@end multitable - -@item Return value -The new initialized multicast socket - -@item Description -This function creates an IP multicast socket attached to a given -group, identified by its class E IP address and port. If -Local_Port is 0, a free port will automatically be chosen by -your operating system. - -This function should be used when you want to send packets -to a multicast group without receiving any packet yourself. - - - -@item Example -@example -declare - Sock : Multicast_Socket_FD; -begin - -- Create a multicast socket on group 224.1.2.3 port 8763 - Sock := Create_Multicast_Socket ("224.1.2.3", 8763); - -- Perform some operations on socket - [...] - -- Shutdown the socket in both directions - Shutdown (Sock, Both); -end; -@end example - - -@item See also -@ref{Send (procedure)},@*@ref{Shutdown (procedure)}. - -@end table - - reverted: --- adasockets-1.8.4.7/debian/orig/doc/sockets-naming.texi +++ adasockets-1.8.4.7.orig/debian/orig/doc/sockets-naming.texi @@ -1,397 +0,0 @@ - -The @code{Sockets.Naming} package contains types and helper functions -needed to manipulate Internet host names and addresses. - -@deftypefn Sockets.Naming.Address type Address is record@*@w{ }H1, H2, H3, H4 : Address_Component;@*end record; -This type represents an IPv4 address with @code{H1} being the first -octet and @code{H4} the last one. For example, 137.194.161.2 is -represented by @code{H1=137, H2=194, H3=161, H4=2}. - -@end deftypefn - -@deftypefn Sockets.Naming.Address_Array type Address_Array is array (Positive range <>) of Address; -Helper type - -@end deftypefn - -@deftypefn Sockets.Naming.Address_Component type Address_Component is Natural range 0 .. 255; -Helper type - -@end deftypefn - -@deftypefn Sockets.Naming.Host_Entry type Host_Entry (N_Aliases, N_Addresses : Natural) is new Ada.Finalization.Controlled with record@*@w{ } Name : String_Access;@*@w{ } Aliases : String_Array (1 .. N_Aliases);@*@w{ } Addresses : Address_Array (1 .. N_Addresses);@* end record; -The @code{Host_Entry} type holds a set of names and IP addresses -associated with a host. Each host can have several IP address -as well as several aliases. - -@end deftypefn - -@deftypefn Sockets.Naming.String_Access type String_Access is access String; -Helper type - -@end deftypefn - -@deftypefn Sockets.Naming.String_Array type String_Array is array (Positive range <>) of String_Access; -Helper type - -@end deftypefn - -@menu -* Address_Of (function):: - Get the IP address of a host -* Any_Address (function):: - Special address representing any address on the local host -* Get_Peer_Addr (function):: - Retrieve IP address of remote host -* Get_Peer_Port (function):: - Retrieve port used by remote host -* Get_Sock_Addr (function):: - Retrieve IP address of local host -* Get_Sock_Port (function):: - Retrieve port used by local host -* Host_Name (function):: - Get the name of the current host -* Image (function):: Make a string from an address -* Info_Of_Name_Or_IP (function):: - Get addresses and names of a host -* Is_IP_Address (function):: - Check if given string is a valid IP address -* Name_Of (function):: Official name of the host -* Value (function):: Transform a string into an address -@end menu - -@node Address_Of (function) -@unnumberedsubsec Address_Of (function) - -@table @sc -@item Purpose -Get the IP address of a host -@item Prototype -@deftypefn Sockets.Naming.Address_Of function Address_Of (@w{@var{Something} : String})@*@w{return Address;} -@end deftypefn -@fnindex Sockets.Naming.Address_Of - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Something} @tab in @tab Host name or IP address -@end multitable - -@item Return value -IPv4 address - - -@item Exceptions -@multitable {XXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @code{Naming_Error} @tab No information available for this name or address@exindex Naming_Error -@end multitable - - - - - -@item See also -@ref{Name_Of (function)}. - -@end table - -@node Any_Address (function) -@unnumberedsubsec Any_Address (function) - -@table @sc -@item Purpose -Special address representing any address on the local host -@item Prototype -@deftypefn Sockets.Naming.Any_Address function Any_Address -@end deftypefn -@fnindex Sockets.Naming.Any_Address - -@item Return value -Equivalent to @code{INADDR_ANY} in the C programming language - - - - -@end table - -@node Get_Peer_Addr (function) -@unnumberedsubsec Get_Peer_Addr (function) - -@table @sc -@item Purpose -Retrieve IP address of remote host -@item Prototype -@deftypefn Sockets.Naming.Get_Peer_Addr function Get_Peer_Addr (@w{@var{Socket} : Socket_FD})@*@w{return Address;} -@end deftypefn -@fnindex Sockets.Naming.Get_Peer_Addr - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Connected socket object -@end multitable - -@item Return value -Peer address - - - - -@item See also -@ref{Get_Peer_Port (function)},@*@ref{Get_Sock_Addr (function)}. - -@end table - -@node Get_Peer_Port (function) -@unnumberedsubsec Get_Peer_Port (function) - -@table @sc -@item Purpose -Retrieve port used by remote host -@item Prototype -@deftypefn Sockets.Naming.Get_Peer_Port function Get_Peer_Port (@w{@var{Socket} : Socket_FD})@*@w{return Positive;} -@end deftypefn -@fnindex Sockets.Naming.Get_Peer_Port - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Connected socket object -@end multitable - -@item Return value -Port used on the remote host - - - - -@item See also -@ref{Get_Sock_Port (function)},@*@ref{Get_Peer_Addr (function)}. - -@end table - -@node Get_Sock_Addr (function) -@unnumberedsubsec Get_Sock_Addr (function) - -@table @sc -@item Purpose -Retrieve IP address of local host -@item Prototype -@deftypefn Sockets.Naming.Get_Sock_Addr function Get_Sock_Addr (@w{@var{Socket} : Socket_FD})@*@w{return Address;} -@end deftypefn -@fnindex Sockets.Naming.Get_Sock_Addr - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Connected socket object -@end multitable - -@item Return value -Address of local interface used - - - - -@item See also -@ref{Get_Sock_Port (function)},@*@ref{Get_Peer_Addr (function)}. - -@end table - -@node Get_Sock_Port (function) -@unnumberedsubsec Get_Sock_Port (function) - -@table @sc -@item Purpose -Retrieve port used by local host -@item Prototype -@deftypefn Sockets.Naming.Get_Sock_Port function Get_Sock_Port (@w{@var{Socket} : Socket_FD})@*@w{return Positive;} -@end deftypefn -@fnindex Sockets.Naming.Get_Sock_Port - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Connected socket object -@end multitable - -@item Return value -Port used on the local host - - - - -@item See also -@ref{Get_Peer_Port (function)},@*@ref{Get_Sock_Addr (function)}. - -@end table - -@node Host_Name (function) -@unnumberedsubsec Host_Name (function) - -@table @sc -@item Purpose -Get the name of the current host -@item Prototype -@deftypefn Sockets.Naming.Host_Name function Host_Name -@end deftypefn -@fnindex Sockets.Naming.Host_Name - -@item Return value -Name of the current host - -@item Description -This function returns the name of the current host. Depending on -the local configuration, it may or may not be a fully qualified -domain name (FQDN). - - - - -@end table - -@node Image (function) -@unnumberedsubsec Image (function) -@cindex Representing IP addresses - -@table @sc -@item Purpose -Make a string from an address -@item Prototype -@deftypefn Sockets.Naming.Image function Image (@w{@var{Add} : Address})@*@w{return String;} -@end deftypefn -@fnindex Sockets.Naming.Image - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Add} @tab in @tab IP address -@end multitable - -@item Return value -String representation of the IP address - - - - -@item See also -@ref{Value (function)}. - -@end table - -@node Info_Of_Name_Or_IP (function) -@unnumberedsubsec Info_Of_Name_Or_IP (function) - -@table @sc -@item Purpose -Get addresses and names of a host -@item Prototype -@deftypefn Sockets.Naming.Info_Of_Name_Or_IP function Info_Of_Name_Or_IP (@w{@var{Something} : String})@*@w{return Host_Entry;} -@end deftypefn -@fnindex Sockets.Naming.Info_Of_Name_Or_IP - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Something} @tab in @tab Host name or IP address -@end multitable - -@item Return value -Corresponding host entry - -@item Description -This function extracts all the names and addresses from the -naming service. - - -@item Exceptions -@multitable {XXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @code{Naming_Error} @tab No information available for this name or address@exindex Naming_Error -@end multitable - - - - - -@end table - -@node Is_IP_Address (function) -@unnumberedsubsec Is_IP_Address (function) - -@table @sc -@item Purpose -Check if given string is a valid IP address -@item Prototype -@deftypefn Sockets.Naming.Is_IP_Address function Is_IP_Address (@w{@var{Something} : String})@*@w{return Boolean;} -@end deftypefn -@fnindex Sockets.Naming.Is_IP_Address - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Something} @tab in @tab String to check -@end multitable - -@item Return value -@samp{True} if @var{Something} is an IP address - - - - -@end table - -@node Name_Of (function) -@unnumberedsubsec Name_Of (function) - -@table @sc -@item Purpose -Official name of the host -@item Prototype -@deftypefn Sockets.Naming.Name_Of function Name_Of (@w{@var{Something} : String})@*@w{return String;} -@end deftypefn -@fnindex Sockets.Naming.Name_Of - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Something} @tab in @tab Host name or IP address -@end multitable - -@item Return value -Name of the host - - -@item Exceptions -@multitable {XXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @code{Naming_Error} @tab No information available for this name or address@exindex Naming_Error -@end multitable - - - - - -@item See also -@ref{Address_Of (function)}. - -@end table - -@node Value (function) -@unnumberedsubsec Value (function) -@cindex Representing IP addresses - -@table @sc -@item Purpose -Transform a string into an address -@item Prototype -@deftypefn Sockets.Naming.Value function Value (@w{@var{Add} : String})@*@w{return Address;} -@end deftypefn -@fnindex Sockets.Naming.Value - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Add} @tab in @tab Textual representation of an IP address -@end multitable - -@item Return value -Corresponding Address - - - - -@item See also -@ref{Image (function)}. - -@end table - - reverted: --- adasockets-1.8.4.7/debian/orig/doc/sockets.texi +++ adasockets-1.8.4.7.orig/debian/orig/doc/sockets.texi @@ -1,1006 +0,0 @@ - -The @code{Sockets} package contains all the definitions and -subprograms needed to build a simple unicast client or server. - -@deftypefn Sockets.Socket_FD type Socket_FD is tagged private; -The @code{Socket_FD} tagged type is the root type of all -sockets. It gets initialized by calling @ref{Socket (procedure)}. - -@end deftypefn - -@menu -* Accept_Socket (procedure):: - Accept an incoming connection -* Bind (procedure):: Associate a local port to a socket -* Connect (procedure):: Connect a socket on a given host/port -* Get (function):: Get a string from a remote host -* Get_Char (function):: Get a character from a remote host -* Get_Line (procedure):: - Get a whole line from a remote host -* Get_Line (function):: Get a whole line from a remote host -* Getsockopt (procedure):: - Retrieve a socket option -* Listen (procedure):: Establish a listen queue -* New_Line (procedure):: - Send a CR/LF to a remote host -* Put (procedure):: Send a string to a remote host -* Put_Line (procedure):: - Send a CR/LF terminated string to a remote host -* Receive (procedure):: Receive raw data over a socket -* Receive (function):: Receive raw data over a socket -* Receive_Some (procedure):: - Receive raw data over a socket -* Send (procedure):: Send raw data over a socket -* Set_Buffer (procedure):: - Install a line-oriented buffer of the socket object -* Setsockopt (procedure):: - Set a socket option -* Shutdown (procedure):: - Shutdown a socket -* Socket (procedure):: Create a socket of the given mode -* Unset_Buffer (procedure):: - Deinstall the line-oriented buffer of the socket object -@end menu - -@node Accept_Socket (procedure) -@unnumberedsubsec Accept_Socket (procedure) -@cindex Accepting a new connection -@cindex Handling a new connection - -@table @sc -@item Purpose -Accept an incoming connection -@item Prototype -@deftypefn Sockets.Accept_Socket procedure Accept_Socket (@w{@var{Socket} : Socket_FD}; @w{@var{New_Socket} : out Socket_FD}); -@end deftypefn -@fnindex Sockets.Accept_Socket - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized -@item @var{New_Socket} @tab out @tab Incoming socket object -@end multitable - - -@item Description -This procedure creates a new socket corresponding to an incoming -connection on TCP socket @var{Socket}. All the communications -with the peer will take place on @var{New_Socket}, while the -program can accept another connection on @var{Socket}. - -@var{New_Socket} must not be initialized before calling this -procedure, or must have been cleaned up by calling -@code{Shutdown}, in order to avoid a file descriptors leak. - -@code{Accept_Socket} will block until an incoming connection is -ready to be accepted. - - - -@item Example -@example -declare - Sock : Socket_FD; - Incoming : Socket_FD; -begin - -- Create a TCP socket listening on local port 4161 - Socket (Sock, PF_INET, SOCK_STREAM); - Bind (Sock, 4161); - Listen (Sock, 3); - -- One-connection-at-a-time server (3 may be pending) - loop - -- Wait for a new connection and accept it - Accept_Socket (Sock, Incoming); - -- Do some dialog with the remote host - Do_Some_Dialog (Incoming); - -- Close incoming socket and wait for next connection - Shutdown (Incoming); - end loop; -end; -@end example - - -@item See also -@ref{Bind (procedure)},@*@ref{Listen (procedure)},@*@ref{Shutdown (procedure)},@*@ref{Socket (procedure)}. - -@end table - -@node Bind (procedure) -@unnumberedsubsec Bind (procedure) -@cindex Binding a socket -@cindex Assigning a local port -@cindex Creating a server - -@table @sc -@item Purpose -Associate a local port to a socket -@item Prototype -@deftypefn Sockets.Bind procedure Bind (@w{@var{Socket} : Socket_FD}; @w{@var{Port} : Natural}; @w{@var{Host} : String := @w{}""}); -@end deftypefn -@fnindex Sockets.Bind - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized socket object -@item @var{Port} @tab in @tab Local port to bind to -@item @var{Host} @tab in @tab Local interface to bind to -@end multitable - - -@item Description -This procedure requests a local port from the operating -system. If 0 is given in @var{Port}, the system will assign a -free port whose number can later be retrieved using -@ref{Get_Sock_Port (function)}. Also, most operating systems require -special privileges if you want to bind to ports below 1024. - -If @var{Host} is not the empty string, it must contain the -IP address of a local interface to bind to, or a name which -resolves into such an address. If an empty string is given (the -default), the socket will be bound to all the available -interfaces. - - -@item Exceptions -@multitable {XXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @code{Socket_Error} @tab Requested port or interface not available@exindex Socket_Error -@end multitable - - - - - -@item See also -@ref{Listen (procedure)},@*@ref{Socket (procedure)}. - -@end table - -@node Connect (procedure) -@unnumberedsubsec Connect (procedure) -@cindex Connecting a socket - -@table @sc -@item Purpose -Connect a socket on a given host/port -@item Prototype -@deftypefn Sockets.Connect procedure Connect (@w{@var{Socket} : Socket_FD}; @w{@var{Host} : String}; @w{@var{Port} : Positive}); -@end deftypefn -@fnindex Sockets.Connect - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized socket object -@item @var{Host} @tab in @tab Host to connect to -@item @var{Port} @tab in @tab Port to connect to -@end multitable - - -@item Description -This procedure connects an initialized socket to a given host on -a given port. In the case of a TCP socket, a real connection is -attempted. In the case of a UDP socket, no connection takes place -but the endpoint coordinates are recorded. - - -@item Exceptions -@multitable {XXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @code{Connection_Refused} @tab The connection has been refused by the server@exindex Connection_Refused -@item @code{Socket_Error} @tab Another error occurred during the connection@exindex Socket_Error -@end multitable - - - - - -@item Example -@example -declare - Sock : Socket_FD; -begin - -- Create a TCP socket - Socket (Sock, PF_INET, SOCK_STREAM); - -- Connect it to rfc1149.net's mail server - Connect (Sock, "mail.rfc1149.net", 25); - -- Do a mail transaction then close the socket - [...] -end; -@end example - - -@item See also -@ref{Socket (procedure)}. - -@end table - -@node Get (function) -@unnumberedsubsec Get (function) -@cindex Receiving data - -@table @sc -@item Purpose -Get a string from a remote host -@item Prototype -@deftypefn Sockets.Get function Get (@w{@var{Socket} : Socket_FD'Class})@*@w{return String;} -@end deftypefn -@fnindex Sockets.Get - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized and connected socket object -@end multitable - -@item Return value -Some characters that have been received - -@item Description -This function receives some characters from a remote host. -As soon that at least one character is available, the current -reception buffer is returned. - -There is usually little gain in using this function whose behaviour is -comparable to the one of @ref{Receive (function)}. Other -functions such as @ref{Get_Char (function)}, or -@ref{Get_Line (function)}, allow more structured programming. - -However, this function may be used to avoid loosing characters -when calling @ref{Unset_Buffer (procedure)}, if, for some reason, -the remote host may have sent some. - - -@item Exceptions -@multitable {XXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @code{Connection_Closed} @tab Peer has closed the connection before sending any data@exindex Connection_Closed -@end multitable - - - - - -@end table - -@node Get_Char (function) -@unnumberedsubsec Get_Char (function) -@cindex Receiving data - -@table @sc -@item Purpose -Get a character from a remote host -@item Prototype -@deftypefn Sockets.Get_Char function Get_Char (@w{@var{Socket} : Socket_FD'Class})@*@w{return Character;} -@end deftypefn -@fnindex Sockets.Get_Char - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized and connected socket object -@end multitable - -@item Return value -One character sent by the remote host - -@item Description -This function receives exactly one character from the remote host. - - -@item Exceptions -@multitable {XXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @code{Connection_Closed} @tab Peer has closed the connection before sending the character@exindex Connection_Closed -@end multitable - - - - - -@item See also -@ref{Get (function)},@*@ref{Get_Line (function)},@*@ref{Get_Line (procedure)},@*@ref{Receive (procedure)},@*@ref{Set_Buffer (procedure)}. - -@end table - -@node Get_Line (procedure) -@unnumberedsubsec Get_Line (procedure) -@cindex Receiving data - -@table @sc -@item Purpose -Get a whole line from a remote host -@item Prototype -@deftypefn Sockets.Get_Line procedure Get_Line (@w{@var{Socket} : Socket_FD'Class}; @w{@var{Str} : in out String}; @w{@var{Last} : out Natural}); -@end deftypefn -@fnindex Sockets.Get_Line - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized and connected socket object -@item @var{Str} @tab in out @tab String to fill -@item @var{Last} @tab out @tab Last index used in the string -@end multitable - - -@item Description -@ctindex CR -@ctindex LF -This procedure receives one line from the remote host. A line -consists into zero or more characters followed by an optional CR -and by a LF. Those terminators are stripped before the line is -returned. - -This procedure blocks until one full line has been received. - - -@item Exceptions -@multitable {XXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @code{Connection_Closed} @tab Peer has closed the connection before sending a whole line@exindex Connection_Closed -@end multitable - - - - - -@item See also -@ref{Get (function)},@*@ref{Get_Char (function)},@*@ref{Get_Line (function)},@*@ref{Receive (procedure)},@*@ref{Set_Buffer (procedure)}. - -@end table - -@node Get_Line (function) -@unnumberedsubsec Get_Line (function) -@cindex Receiving data - -@table @sc -@item Purpose -Get a whole line from a remote host -@item Prototype -@deftypefn Sockets.Get_Line function Get_Line (@w{@var{Socket} : Socket_FD'Class}; @w{@var{Max_Length} : Positive := 2048})@*@w{return String;} -@end deftypefn -@fnindex Sockets.Get_Line - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized and connected socket object -@item @var{Max_Length} @tab in @tab Maximum returned line length -@end multitable - -@item Return value -A line without the CR and LF separators - -@item Description -@ctindex CR -@ctindex LF -This function receives one line from the remote host. A line -consists into zero or more characters followed by an optional CR -and by a LF. Those terminators are stripped before the line is -returned. - -This function blocks until one full line has been received. The line -length is limited with the value of the Max_Length argument, to avoid -exhaustion of the secondary stack. - - -@item Exceptions -@multitable {XXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @code{Connection_Closed} @tab Peer has closed the connection before sending a whole line@exindex Connection_Closed -@end multitable - - - - - -@item See also -@ref{Get (function)},@*@ref{Get_Char (function)},@*@ref{Get_Line (procedure)},@*@ref{Receive (procedure)},@*@ref{Set_Buffer (procedure)}. - -@end table - -@node Getsockopt (procedure) -@unnumberedsubsec Getsockopt (procedure) -@cindex Manipulating socket options -@cindex Retrieving socket options - -@table @sc -@item Purpose -Retrieve a socket option -@item Prototype -@deftypefn Sockets.Getsockopt procedure Getsockopt (@w{@var{Socket} : Socket_FD}; @w{@var{Level} : Socket_Level := SOL_SOCKET}; @w{@var{Optname} : Socket_Option}; @w{@var{Optval} : out Integer}); -@end deftypefn -@fnindex Sockets.Getsockopt - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized and bound socket object -@item @var{Level} @tab in @tab Protocol level -@item @var{Optname} @tab in @tab Option name -@item @var{Optval} @tab out @tab Option value -@end multitable - - -@item Description -@ctindex Sockets.SOL_SOCKET -@ctindex Sockets.IPPROTO_IP -@ctindex Sockets.SO_REUSEADDR -@ctindex Sockets.SO_REUSEPORT -@ctindex Sockets.IP_MULTICAST_TTL -@ctindex Sockets.IP_ADD_MEMBERSHIP -@ctindex Sockets.IP_DROP_MEMBERSHIP -@ctindex Sockets.IP_MULTICAST_LOOP -@ctindex Sockets.SO_SNDBUF -@ctindex Sockets.SO_RCVBUF -@ctindex SOL_SOCKET -@ctindex IPPROTO_IP -@ctindex SO_REUSEADDR -@ctindex SO_REUSEPORT -@ctindex IP_MULTICAST_TTL -@ctindex IP_ADD_MEMBERSHIP -@ctindex IP_DROP_MEMBERSHIP -@ctindex IP_MULTICAST_LOOP -@ctindex SO_SNDBUF -@ctindex SO_RCVBUF -This procedure retrieves options applicable to a socket. Please -see your operating system manual for usable levels and options. - -Two levels are defined: @code{SOL_SOCKET} (the default) and -@code{IPPROTO_IP}. The options are @code{SO_REUSEADDR}, -@code{SO_REUSEPORT}, @code{IP_MULTICAST_TTL}, -@code{IP_ADD_MEMBERSHIP}, @code{IP_DROP_MEMBERSHIP}, -@code{IP_MULTICAST_LOOP}, @code{SO_SNDBUF} and -@code{IP_RCVBUF}. - -Note that unlike their C language counterpart, @code{Getsockopt} -and @code{Setsockopt} do not require an extra parameter -representing the length in bytes of the option value. AdaSockets -nows the right size for every option. - - - - -@item See also -@ref{Setsockopt (procedure)}. - -@end table - -@node Listen (procedure) -@unnumberedsubsec Listen (procedure) -@cindex Establishing a listen queue -@cindex Listen queue - -@table @sc -@item Purpose -Establish a listen queue -@item Prototype -@deftypefn Sockets.Listen procedure Listen (@w{@var{Socket} : Socket_FD}; @w{@var{Queue_Size} : Positive := 5}); -@end deftypefn -@fnindex Sockets.Listen - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized and bound socket object -@item @var{Queue_Size} @tab in @tab Requested slots in the listen queue -@end multitable - - -@item Description -This procedure establishes a listen queue after a TCP socket as been -initialized and bound. Each slot in the queue can hold one -incoming connection that has not been accepted yet. Note that -most operating systems ignore queue sizes larger than five. - - - - -@item See also -@ref{Accept_Socket (procedure)},@*@ref{Bind (procedure)},@*@ref{Socket (procedure)}. - -@end table - -@node New_Line (procedure) -@unnumberedsubsec New_Line (procedure) -@cindex Sending data - -@table @sc -@item Purpose -Send a CR/LF to a remote host -@item Prototype -@deftypefn Sockets.New_Line procedure New_Line (@w{@var{Socket} : Socket_FD'Class}; @w{@var{Count} : Natural := 1}); -@end deftypefn -@fnindex Sockets.New_Line - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized and connected socket object -@item @var{Count} @tab in @tab Number of CR/LF sequences to send -@end multitable - - -@item Description -@ctindex CR -@ctindex LF -This procedure sends one or more CR/LF combinations to the peer. - - -@item Exceptions -@multitable {XXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @code{Connection_Closed} @tab Peer has prematurely closed the connection@exindex Connection_Closed -@end multitable - - - - - -@item See also -@ref{Put (procedure)},@*@ref{Put_Line (procedure)}. - -@end table - -@node Put (procedure) -@unnumberedsubsec Put (procedure) -@cindex Sending data - -@table @sc -@item Purpose -Send a string to a remote host -@item Prototype -@deftypefn Sockets.Put procedure Put (@w{@var{Socket} : Socket_FD'Class}; @w{@var{Str} : String}); -@end deftypefn -@fnindex Sockets.Put - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized and connected socket object -@item @var{Str} @tab in @tab String to send -@end multitable - - -@item Description -This procedure sends the content of @var{Str} over an outgoing -or incoming socket. - - -@item Exceptions -@multitable {XXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @code{Connection_Closed} @tab Peer has prematurely closed the connection@exindex Connection_Closed -@end multitable - - - - - -@item See also -@ref{New_Line (procedure)},@*@ref{Put_Line (procedure)},@*@ref{Send (procedure)}. - -@end table - -@node Put_Line (procedure) -@unnumberedsubsec Put_Line (procedure) -@cindex Sending data - -@table @sc -@item Purpose -Send a CR/LF terminated string to a remote host -@item Prototype -@deftypefn Sockets.Put_Line procedure Put_Line (@w{@var{Socket} : Socket_FD'Class}; @w{@var{Str} : String}); -@end deftypefn -@fnindex Sockets.Put_Line - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized and connected socket object -@item @var{Str} @tab in @tab String to send -@end multitable - - -@item Description -This procedure sends the content of @var{Str} plus a CR/LF combination -over an outgoing or incoming socket. - - -@item Exceptions -@multitable {XXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @code{Connection_Closed} @tab Peer has prematurely closed the connection@exindex Connection_Closed -@end multitable - - - - - -@item See also -@ref{New_Line (procedure)},@*@ref{Put (procedure)},@*@ref{Send (procedure)}. - -@end table - -@node Receive (procedure) -@unnumberedsubsec Receive (procedure) -@cindex Receiving data - -@table @sc -@item Purpose -Receive raw data over a socket -@item Prototype -@deftypefn Sockets.Receive procedure Receive (@w{@var{Socket} : Socket_FD'Class}; @w{@var{Data} : out Ada.Streams.Stream_Element_Array}); -@end deftypefn -@fnindex Sockets.Receive - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized and bound or connected socket object -@item @var{Data} @tab out @tab Incoming data buffer -@end multitable - - -@item Description -@tindex Ada.Streams.Stream_Element_Array -@tindex Stream_Element_Array -This procedure receives data from a bound UDP socket or a connected -TCP socket. It will block until the @var{Data} reception buffer -has been totally filled. - - -@item Exceptions -@multitable {XXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @code{Connection_Closed} @tab Peer has closed the connection before @code{Data'Length} bytes@* -were received@exindex Connection_Closed -@end multitable - - - - - -@item See also -@ref{Get_Line (function)},@*@ref{Get_Line (procedure)},@*@ref{Receive (function)},@*@ref{Receive_Some (procedure)}. - -@end table - -@node Receive (function) -@unnumberedsubsec Receive (function) -@cindex Receiving data - -@table @sc -@item Purpose -Receive raw data over a socket -@item Prototype -@deftypefn Sockets.Receive function Receive (@w{@var{Socket} : Socket_FD}; @w{@var{Max} : Ada.Streams.Stream_Element_Count := 4096})@*@w{return Ada.Streams.Stream_Element_Array;} -@end deftypefn -@fnindex Sockets.Receive - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized and bound or connected socket object -@item @var{Max} @tab in @tab Maximum data length -@end multitable - -@item Return value -Received raw data - -@item Description -@tindex Ada.Streams.Stream_Element_Count -@tindex Ada.Streams.Stream_Element_Array -@tindex Stream_Element_Count -@tindex Stream_Element_Array -This procedure receives data from a bound UDP socket or a connected -TCP socket. Only one system call will be performed; this -function will return whatever data has arrived. Note that in -GNAT the secondary stack may be used to store the data and may -result in stack storage exhaustion. - - -@item Exceptions -@multitable {XXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @code{Connection_Closed} @tab Peer has closed the connection before sending any data@exindex Connection_Closed -@end multitable - - - - - -@item See also -@ref{Receive (procedure)},@*@ref{Receive_Some (procedure)},@*@ref{Get_Line (function)},@*@ref{Get_Line (procedure)}. - -@end table - -@node Receive_Some (procedure) -@unnumberedsubsec Receive_Some (procedure) -@cindex Receiving data - -@table @sc -@item Purpose -Receive raw data over a socket -@item Prototype -@deftypefn Sockets.Receive_Some procedure Receive_Some (@w{@var{Socket} : Socket_FD'Class}; @w{@var{Data} : out Ada.Streams.Stream_Element_Array}; @w{@var{Last} : out Ada.Streams.Stream_Element_Offset}); -@end deftypefn -@fnindex Sockets.Receive_Some - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized and bound or connected socket object -@item @var{Data} @tab out @tab Incoming data buffer -@item @var{Last} @tab out @tab Index of last element placed into @var{Data} -@end multitable - - -@item Description -@tindex Ada.Streams.Stream_Element_Array -@tindex Stream_Element_Array -@tindex Ada.Streams.Stream_Element_Count -@tindex Stream_Element_Count -This procedure receives data from a bound UDP socket or a connected -TCP socket. As soon as at least one byte has been read, it returns -with @var{Last} set to the index of the latest written element -of @var{Data}. - - -@item Exceptions -@multitable {XXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @code{Connection_Closed} @tab Peer has closed the connection before sending any data@exindex Connection_Closed -@end multitable - - - - - -@item See also -@ref{Get_Line (function)},@*@ref{Get_Line (procedure)},@*@ref{Receive (function)},@*@ref{Receive (procedure)}. - -@end table - -@node Send (procedure) -@unnumberedsubsec Send (procedure) -@cindex Sending data - -@table @sc -@item Purpose -Send raw data over a socket -@item Prototype -@deftypefn Sockets.Send procedure Send (@w{@var{Socket} : Socket_FD}; @w{@var{Data} : out Ada.Streams.Stream_Element_Array}); -@end deftypefn -@fnindex Sockets.Send - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized and connected socket object -@item @var{Data} @tab out @tab Data to be sent -@end multitable - - -@item Description -@tindex Ada.Streams.Stream_Element_Array -@tindex Stream_Element_Array -This procedure sends data over a connected outgoing socket or -over an incoming socket. - - -@item Exceptions -@multitable {XXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @code{Connection_Closed} @tab Peer has prematurely closed the connection@exindex Connection_Closed -@end multitable - - - - - -@item See also -@ref{Put (procedure)},@*@ref{Put_Line (procedure)}. - -@end table - -@node Set_Buffer (procedure) -@unnumberedsubsec Set_Buffer (procedure) -@cindex Receiving data - -@table @sc -@item Purpose -Install a line-oriented buffer of the socket object -@item Prototype -@deftypefn Sockets.Set_Buffer procedure Set_Buffer (@w{@var{Socket} : Socket_FD'Class}; @w{@var{Length} : Positive := 1500}); -@end deftypefn -@fnindex Sockets.Set_Buffer - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized and connected socket object -@item @var{Length} @tab in @tab Size in bytes of the newly installed buffer -@end multitable - - -@item Description -This procedure puts the socket object in buffered mode. If the -socket was already buffered, the content of the previous buffer -will be lost. The buffered mode only affects character- and -line-oriented read operation such as @ref{Get (function)}, -@ref{Get_Char (function)}, and @ref{Get_Line (function)}. Other -reception subprograms will not function properly if buffered mode -is used at the same time. - -The size of the buffer has to be greater than the biggest -possible packet sent by the remote host, otherwise data loss may -occur. - - - - -@item See also -@ref{Unset_Buffer (procedure)}. - -@end table - -@node Setsockopt (procedure) -@unnumberedsubsec Setsockopt (procedure) -@cindex Manipulating socket options -@cindex Setting socket options - -@table @sc -@item Purpose -Set a socket option -@item Prototype -@deftypefn Sockets.Setsockopt procedure Setsockopt (@w{@var{Socket} : Socket_FD}; @w{@var{Level} : Socket_Level := SOL_SOCKET}; @w{@var{Optname} : Socket_Option}; @w{@var{Optval} : Integer}); -@end deftypefn -@fnindex Sockets.Setsockopt - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized and bound socket object -@item @var{Level} @tab in @tab Protocol level -@item @var{Optname} @tab in @tab Option name -@item @var{Optval} @tab in @tab Option value -@end multitable - - -@item Description -@ctindex Sockets.SOL_SOCKET -@ctindex Sockets.IPPROTO_IP -@ctindex Sockets.SO_REUSEADDR -@ctindex Sockets.SO_REUSEPORT -@ctindex Sockets.IP_MULTICAST_TTL -@ctindex Sockets.IP_ADD_MEMBERSHIP -@ctindex Sockets.IP_DROP_MEMBERSHIP -@ctindex Sockets.IP_MULTICAST_LOOP -@ctindex Sockets.SO_SNDBUF -@ctindex Sockets.SO_RCVBUF -@ctindex SOL_SOCKET -@ctindex IPPROTO_IP -@ctindex SO_REUSEADDR -@ctindex SO_REUSEPORT -@ctindex IP_MULTICAST_TTL -@ctindex IP_ADD_MEMBERSHIP -@ctindex IP_DROP_MEMBERSHIP -@ctindex IP_MULTICAST_LOOP -@ctindex SO_SNDBUF -@ctindex SO_RCVBUF -This procedure sets options applicable to a socket. Please -see your operating system manual for usable levels and options. - -Two levels are defined: @code{SOL_SOCKET} (the default) and -@code{IPPROTO_IP}. The options are @code{SO_REUSEADDR}, -@code{SO_REUSEPORT}, @code{IP_MULTICAST_TTL}, -@code{IP_ADD_MEMBERSHIP}, @code{IP_DROP_MEMBERSHIP}, -@code{IP_MULTICAST_LOOP}, @code{SO_SNDBUF} and -@code{IP_RCVBUF}. - -Note that unlike their C language counterpart, @code{Getsockopt} -and @code{Setsockopt} do not require an extra parameter -representing the length in bytes of the option value. AdaSockets -nows the right size for every option. - - - - -@item See also -@ref{Getsockopt (procedure)}. - -@end table - -@node Shutdown (procedure) -@unnumberedsubsec Shutdown (procedure) -@cindex Closing a socket -@cindex Socket shutdown - -@table @sc -@item Purpose -Shutdown a socket -@item Prototype -@deftypefn Sockets.Shutdown procedure Shutdown (@w{@var{Socket} : in out Socket_FD}; @w{@var{How} : Shutdown_Type := Both}); -@end deftypefn -@fnindex Sockets.Shutdown - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in out @tab Socket object to shutdown -@item @var{How} @tab in @tab Direction to shutdown -@end multitable - - -@item Description -@ctindex Send -@ctindex Receive -@ctindex Both -This procedure shutdowns either direction of the socket. @var{How} -can take the value @samp{Send}, @samp{Receive} or @samp{Both}. - - - - -@item See also -@ref{Socket (procedure)}. - -@end table - -@node Socket (procedure) -@unnumberedsubsec Socket (procedure) -@cindex Creating a socket - -@table @sc -@item Purpose -Create a socket of the given mode -@item Prototype -@deftypefn Sockets.Socket procedure Socket (@w{@var{Socket} : out Socket_FD}; @w{@var{Domain} : Socket_Domain := PF_INET}; @w{@var{Typ} : Socket_Type := SOCK_STREAM}); -@end deftypefn -@fnindex Sockets.Socket - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab out @tab Socket object to initialize -@item @var{Domain} @tab in @tab Protocol family -@item @var{Typ} @tab in @tab Kind of sockets -@end multitable - - -@item Description -@ctindex PF_INET -@ctindex AF_INET -@ctindex SOCK_STREAM -@ctindex SOCK_DGRAM -This procedure initializes a new socket object by reserving a file -descriptor to the operating system. For backward compatibility with -older versions of this library, @code{AF_INET} is still accepted as -a value but should be replaced as soon as possible with the proper -@code{PF_INET}. Using @code{SOCK_STREAM} for the @var{Typ} -argument will create a TCP socket while a @code{SOCK_DGRAM} will -create a UDP one. - - - -@item Example -@example -declare - Sock : Socket_FD; -begin - -- Create a TCP socket - Socket (Sock, PF_INET, SOCK_STREAM); - -- Perform some operations on socket - [...] - -- Shutdown the socket in both directions - Shutdown (Sock, Both); -end; -@end example - - -@item See also -@ref{Shutdown (procedure)}. - -@end table - -@node Unset_Buffer (procedure) -@unnumberedsubsec Unset_Buffer (procedure) -@cindex Receiving data - -@table @sc -@item Purpose -Deinstall the line-oriented buffer of the socket object -@item Prototype -@deftypefn Sockets.Unset_Buffer procedure Unset_Buffer (@w{@var{Socket} : Socket_FD'Class}); -@end deftypefn -@fnindex Sockets.Unset_Buffer - -@item Parameters -@multitable {XXXXXXXX} {in out X} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} -@item @var{Socket} @tab in @tab Initialized and connected socket object -@end multitable - - -@item Description -This procedure deinstalls the buffer previously installed by -@ref{Set_Buffer (procedure)}. If any data is still present in -the buffer, it will be lost. To avoid this situation, the buffer -can be flushed by calling @ref{Get (function)}. - - - - -@end table - - reverted: --- adasockets-1.8.4.7/debian/orig/doc/adasockets.info +++ adasockets-1.8.4.7.orig/debian/orig/doc/adasockets.info @@ -1,1870 +0,0 @@ -This is adasockets.info, produced by makeinfo version 4.6 from -./adasockets.texi. - -START-INFO-DIR-ENTRY -* adasockets: (adasockets). AdaSockets reference manual -END-INFO-DIR-ENTRY - - Copyright (C) 2002-2004 Samuel Tardieu - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, provided also -that the entire resulting derived work is distributed under the terms -of a permission notice identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions. - - -File: adasockets.info, Node: Top, Next: What is AdaSockets?, Prev: (dir), Up: (dir) - -* Menu: - -* What is AdaSockets?:: -* Installing AdaSockets:: -* Using AdaSockets:: -* Sockets package:: -* Sockets.Multicast package:: -* Sockets.Naming package:: -* Contributors:: -* Resources on the Internet:: -* Index:: - - --- The Detailed Node Listing --- - -Using AdaSockets - -* Compiling an Ada application:: -* Setting up unicast sockets:: -* Setting up multicast sockets:: -* Sending and receiving data:: - -Sending and receiving data - -* Raw data manipulation:: -* String-oriented exchanges:: - - -File: adasockets.info, Node: What is AdaSockets?, Next: Installing AdaSockets, Prev: Top, Up: Top - -What is AdaSockets? -******************* - -AdaSockets is a set of free software Ada packages allowing Ada -programmers to use the so-called BSD sockets from their favourite -programming language. AdaSockets has been designed and tested with the -GNAT free software Ada compiler, but should be portable to other -compilers quite easily. - - Starting from release 3.14, the GNAT compiler started to integrate a -`GNAT.Sockets' package. However, this package is GNAT specific and -contains at this time less features than AdaSockets. At some point, -AdaSockets may use `GNAT.Sockets' as its underlying sockets structure. - - AdaSockets philosophy is to help the Ada programmer by providing -easy-to-use objects. Special care has been taken to ensure that -performances do however remain good. - - -File: adasockets.info, Node: Installing AdaSockets, Next: Using AdaSockets, Prev: What is AdaSockets?, Up: Top - -Installing AdaSockets -********************* - -Installing AdaSockets on a Unix or OpenVMS machine is as simple as -typing a few commands. Once you got the latest version of AdaSockets -(*note Resources on the Internet::), uncompress and untar it and go to -the top-level directory of the distribution. - - You must configure the AdaSockets distribution by using the -`configure' command, such as in: - - ./configure --prefix=/users/sam/adasockets - - If you want to install AdaSockets under the `/usr/local' hierarchy, -you do not need to specify the `--prefix' option. Make sure you have -write permission on the target directories. - - Once AdaSockets is configured, you can compile and install it by -using the `make' command: - - make install - - The GNU make program is recommended but not mandatory. On your -system, it may be installed under the `gmake' name. - - -File: adasockets.info, Node: Using AdaSockets, Next: Sockets package, Prev: Installing AdaSockets, Up: Top - -Using AdaSockets -**************** - -* Menu: - -* Compiling an Ada application:: -* Setting up unicast sockets:: -* Setting up multicast sockets:: -* Sending and receiving data:: - - -File: adasockets.info, Node: Compiling an Ada application, Next: Setting up unicast sockets, Prev: Using AdaSockets, Up: Using AdaSockets - -Compiling an Ada application -============================ - -AdaSockets comes with an `adasockets-config' application that can be -used to retrieve installation parameters while using `gnatmake' to -compile your Ada application. The `--cflags' parameters tells -`adasockets-config' to output the path to the Ada packages sources, -while `--libs' asks for the path to the Ada library. - - gnatmake `adasockets-config --cflags` mainprog - -largs `adasockets-config --libs` - - -File: adasockets.info, Node: Setting up unicast sockets, Next: Setting up multicast sockets, Prev: Compiling an Ada application, Up: Using AdaSockets - -Setting up unicast sockets -========================== - -Unicast sockets are used everywhere on the Internet, for surfing the -web, sending electronic mails or accessing remote files. They come in -two flavours: -TCP - TCP is a connected mode, in which packets are sent in a reliable - and ordered way. Everything sent at one end will eventually arrive - in the same order at the other end, the underlying operating - system takes care of retransmitting missing packets and reordering - out-of-order ones. - -UDP - UDP is a non-connected mode. A packet sent on a UDP socket may or - may not arrive at the other end. This is a much lighter protocol - when reliability is not needed as the operating system does not - have to use large buffers to reorder packets. Also, this generates - less traffic as no acknowledgments need to be sent by the kernels. - - The package `Sockets' defines a `Socket_FD' tagged type. An instance -of this type (or of any of its descendants) represents an incoming or -outgoing socket. Two different kinds of sockets can be created: unicast -(one-to-one) and multicast (many-to-many). - - -File: adasockets.info, Node: Setting up multicast sockets, Next: Sending and receiving data, Prev: Setting up unicast sockets, Up: Using AdaSockets - -Setting up multicast sockets -============================ - -Multicast sockets are used for group communication over the Internet. To -use multicast sockets, you must be connected to a multicast network and -use a multicast-enabled operating system (such as most Unices, Linux or -even recent Windows versions). Unless you are connected to the mbone -(multicast backbone) or have setup a private multicast network, you -will only be able to use multicast on your local network. - - A multicast socket is somewhat similar to a UDP socket; in -particular, packets may be lost or misordered. - - You can create a multicast socket using the function -`Create_Multicast_Socket' in the package `Sockets.Multicast'. This -function returns a `Multicast_Socket_FD' object, which derives from -`Socket_FD'. - - `Create_Multicast_Socket' takes care of the whole setup of your -multicast socket. You do not need to call any additionnal subprogram -before using it. In particular, `Create_Multicast_Socket' will take -care of registering the multicast socket to the operating system, so -that the latter can tell the connected routers to propagate the -subscription to the mbone as needed. - - -File: adasockets.info, Node: Sending and receiving data, Prev: Setting up multicast sockets, Up: Using AdaSockets - -Sending and receiving data -========================== - -In AdaSockets, data can be sent and received in three different ways: -raw, string-oriented and stream-oriented. - -* Menu: - -* Raw data manipulation:: -* String-oriented exchanges:: - - -File: adasockets.info, Node: Raw data manipulation, Next: String-oriented exchanges, Prev: Sending and receiving data, Up: Sending and receiving data - -Raw data manipulation ---------------------- - -Raw data is manipulated using the predefined -`Ada.Streams.Stream_Element_Array' Ada type. This corresponds to an -array of bytes, or an `unsigned char *' in the C programming language. - - -File: adasockets.info, Node: String-oriented exchanges, Prev: Raw data manipulation, Up: Sending and receiving data - -String-oriented exchanges -------------------------- - -String-oriented exchanges provides the programmer with `Ada.Text_IO' -like subprograms. Most Internet protocols are line-oriented and those -subprograms are perfectly suited to implement those. - - When sending data, the classical `CR + LF' sequence will be sent at -the end of each line. When receiving data, `CR' characters are -discarded and `LF' is used as the end-of-line marker. - - The `Get' function is tied to the size of the operating system -buffer. It is better to use `Get_Line' to get a full line. The line can -be as long as the length of the Ada buffer. The Ada buffer can be -adjusted by using the `Set_Buffer' and `Unset_Buffer' procedures. - - When using string-oriented exchanges with datagram protocols such as -UDP, setting a buffer using `Set_Buffer' for the receiving socket is -mandatory. If you don't, the receiving socket will loose data and will -be unable to reconstitute the string. - - -File: adasockets.info, Node: Sockets package, Next: Sockets.Multicast package, Prev: Using AdaSockets, Up: Top - -Sockets package -*************** - -The `Sockets' package contains all the definitions and subprograms -needed to build a simple unicast client or server. - - - Sockets.Socket_FD: type Socket_FD is tagged private; - The `Socket_FD' tagged type is the root type of all sockets. It - gets initialized by calling *Note Socket (procedure)::. - - -* Menu: - -* Accept_Socket (procedure):: - Accept an incoming connection -* Bind (procedure):: Associate a local port to a socket -* Connect (procedure):: Connect a socket on a given host/port -* Get (function):: Get a string from a remote host -* Get_Char (function):: Get a character from a remote host -* Get_Line (procedure):: - Get a whole line from a remote host -* Get_Line (function):: Get a whole line from a remote host -* Getsockopt (procedure):: - Retrieve a socket option -* Listen (procedure):: Establish a listen queue -* New_Line (procedure):: - Send a CR/LF to a remote host -* Put (procedure):: Send a string to a remote host -* Put_Line (procedure):: - Send a CR/LF terminated string to a remote host -* Receive (procedure):: Receive raw data over a socket -* Receive (function):: Receive raw data over a socket -* Receive_Some (procedure):: - Receive raw data over a socket -* Send (procedure):: Send raw data over a socket -* Set_Buffer (procedure):: - Install a line-oriented buffer of the socket object -* Setsockopt (procedure):: - Set a socket option -* Shutdown (procedure):: - Shutdown a socket -* Socket (procedure):: Create a socket of the given mode -* Unset_Buffer (procedure):: - Deinstall the line-oriented buffer of the socket object - - -File: adasockets.info, Node: Accept_Socket (procedure) - -Accept_Socket (procedure) -------------------------- - -PURPOSE - Accept an incoming connection - -PROTOTYPE - - Sockets.Accept_Socket: procedure Accept_Socket - (SOCKET : Socket_FD; NEW_SOCKET : out Socket_FD); - -PARAMETERS - SOCKET in Initialized - NEW_SOCKET out Incoming socket object - -DESCRIPTION - This procedure creates a new socket corresponding to an incoming - connection on TCP socket SOCKET. All the communications with the - peer will take place on NEW_SOCKET, while the program can accept - another connection on SOCKET. - - NEW_SOCKET must not be initialized before calling this procedure, - or must have been cleaned up by calling `Shutdown', in order to - avoid a file descriptors leak. - - `Accept_Socket' will block until an incoming connection is ready - to be accepted. - -EXAMPLE - declare - Sock : Socket_FD; - Incoming : Socket_FD; - begin - -- Create a TCP socket listening on local port 4161 - Socket (Sock, PF_INET, SOCK_STREAM); - Bind (Sock, 4161); - Listen (Sock, 3); - -- One-connection-at-a-time server (3 may be pending) - loop - -- Wait for a new connection and accept it - Accept_Socket (Sock, Incoming); - -- Do some dialog with the remote host - Do_Some_Dialog (Incoming); - -- Close incoming socket and wait for next connection - Shutdown (Incoming); - end loop; - end; - -SEE ALSO - *Note Bind (procedure)::, - *Note Listen (procedure)::, - *Note Shutdown (procedure)::, - *Note Socket (procedure)::. - - - -File: adasockets.info, Node: Bind (procedure) - -Bind (procedure) ----------------- - -PURPOSE - Associate a local port to a socket - -PROTOTYPE - - Sockets.Bind: procedure Bind (SOCKET : Socket_FD; - PORT : Natural; HOST : String := ""); - -PARAMETERS - SOCKET in Initialized socket object - PORT in Local port to bind to - HOST in Local interface to bind to - -DESCRIPTION - This procedure requests a local port from the operating system. If - 0 is given in PORT, the system will assign a free port whose - number can later be retrieved using *Note Get_Sock_Port - (function)::. Also, most operating systems require special - privileges if you want to bind to ports below 1024. - - If HOST is not the empty string, it must contain the IP address of - a local interface to bind to, or a name which resolves into such - an address. If an empty string is given (the default), the socket - will be bound to all the available interfaces. - -EXCEPTIONS - `Socket_Error' Requested port or interface not available - -SEE ALSO - *Note Listen (procedure)::, - *Note Socket (procedure)::. - - - -File: adasockets.info, Node: Connect (procedure) - -Connect (procedure) -------------------- - -PURPOSE - Connect a socket on a given host/port - -PROTOTYPE - - Sockets.Connect: procedure Connect (SOCKET : Socket_FD; - HOST : String; PORT : Positive); - -PARAMETERS - SOCKET in Initialized socket object - HOST in Host to connect to - PORT in Port to connect to - -DESCRIPTION - This procedure connects an initialized socket to a given host on a - given port. In the case of a TCP socket, a real connection is - attempted. In the case of a UDP socket, no connection takes place - but the endpoint coordinates are recorded. - -EXCEPTIONS - `Connection_Refused'The connection has been refused by the server - `Socket_Error' Another error occurred during the connection - -EXAMPLE - declare - Sock : Socket_FD; - begin - -- Create a TCP socket - Socket (Sock, PF_INET, SOCK_STREAM); - -- Connect it to rfc1149.net's mail server - Connect (Sock, "mail.rfc1149.net", 25); - -- Do a mail transaction then close the socket - [...] - end; - -SEE ALSO - *Note Socket (procedure)::. - - - -File: adasockets.info, Node: Get (function) - -Get (function) --------------- - -PURPOSE - Get a string from a remote host - -PROTOTYPE - - Sockets.Get: function Get (SOCKET : Socket_FD'Class) - return String; - -PARAMETERS - SOCKET in Initialized and connected socket object - -RETURN VALUE - Some characters that have been received - -DESCRIPTION - This function receives some characters from a remote host. As - soon that at least one character is available, the current - reception buffer is returned. - - There is usually little gain in using this function whose - behaviour is comparable to the one of *Note Receive (function)::. - Other functions such as *Note Get_Char (function)::, or *Note - Get_Line (function)::, allow more structured programming. - - However, this function may be used to avoid loosing characters - when calling *Note Unset_Buffer (procedure)::, if, for some reason, - the remote host may have sent some. - -EXCEPTIONS - `Connection_Closed'Peer has closed the connection before - sending any data - - - -File: adasockets.info, Node: Get_Char (function) - -Get_Char (function) -------------------- - -PURPOSE - Get a character from a remote host - -PROTOTYPE - - Sockets.Get_Char: function Get_Char (SOCKET : Socket_FD'Class) - return Character; - -PARAMETERS - SOCKET in Initialized and connected socket object - -RETURN VALUE - One character sent by the remote host - -DESCRIPTION - This function receives exactly one character from the remote host. - -EXCEPTIONS - `Connection_Closed'Peer has closed the connection before - sending the character - -SEE ALSO - *Note Get (function)::, - *Note Get_Line (function)::, - *Note Get_Line (procedure)::, - *Note Receive (procedure)::, - *Note Set_Buffer (procedure)::. - - - -File: adasockets.info, Node: Get_Line (procedure) - -Get_Line (procedure) --------------------- - -PURPOSE - Get a whole line from a remote host - -PROTOTYPE - - Sockets.Get_Line: procedure Get_Line (SOCKET : Socket_FD'Class; - STR : in out String; LAST : out Natural); - -PARAMETERS - SOCKET in Initialized and connected socket object - STR in out String to fill - LAST out Last index used in the string - -DESCRIPTION - This procedure receives one line from the remote host. A line - consists into zero or more characters followed by an optional CR - and by a LF. Those terminators are stripped before the line is - returned. - - This procedure blocks until one full line has been received. - -EXCEPTIONS - `Connection_Closed'Peer has closed the connection before - sending a whole line - -SEE ALSO - *Note Get (function)::, - *Note Get_Char (function)::, - *Note Get_Line (function)::, - *Note Receive (procedure)::, - *Note Set_Buffer (procedure)::. - - - -File: adasockets.info, Node: Get_Line (function) - -Get_Line (function) -------------------- - -PURPOSE - Get a whole line from a remote host - -PROTOTYPE - - Sockets.Get_Line: function Get_Line (SOCKET : Socket_FD'Class; - MAX_LENGTH : Positive := 2048) - return String; - -PARAMETERS - SOCKET in Initialized and connected socket object - MAX_LENGTH in Maximum returned line length - -RETURN VALUE - A line without the CR and LF separators - -DESCRIPTION - This function receives one line from the remote host. A line - consists into zero or more characters followed by an optional CR - and by a LF. Those terminators are stripped before the line is - returned. - - This function blocks until one full line has been received. The - line length is limited with the value of the Max_Length argument, - to avoid exhaustion of the secondary stack. - -EXCEPTIONS - `Connection_Closed'Peer has closed the connection before - sending a whole line - -SEE ALSO - *Note Get (function)::, - *Note Get_Char (function)::, - *Note Get_Line (procedure)::, - *Note Receive (procedure)::, - *Note Set_Buffer (procedure)::. - - - -File: adasockets.info, Node: Getsockopt (procedure) - -Getsockopt (procedure) ----------------------- - -PURPOSE - Retrieve a socket option - -PROTOTYPE - - Sockets.Getsockopt: procedure Getsockopt (SOCKET : Socket_FD; - LEVEL : Socket_Level := SOL_SOCKET; - OPTNAME : Socket_Option; OPTVAL : out Integer); - -PARAMETERS - SOCKET in Initialized and bound socket object - LEVEL in Protocol level - OPTNAME in Option name - OPTVAL out Option value - -DESCRIPTION - This procedure retrieves options applicable to a socket. Please - see your operating system manual for usable levels and options. - - Two levels are defined: `SOL_SOCKET' (the default) and - `IPPROTO_IP'. The options are `SO_REUSEADDR', `SO_REUSEPORT', - `IP_MULTICAST_TTL', `IP_ADD_MEMBERSHIP', `IP_DROP_MEMBERSHIP', - `IP_MULTICAST_LOOP', `SO_SNDBUF' and `IP_RCVBUF'. - - Note that unlike their C language counterpart, `Getsockopt' and - `Setsockopt' do not require an extra parameter representing the - length in bytes of the option value. AdaSockets nows the right - size for every option. - -SEE ALSO - *Note Setsockopt (procedure)::. - - - -File: adasockets.info, Node: Listen (procedure) - -Listen (procedure) ------------------- - -PURPOSE - Establish a listen queue - -PROTOTYPE - - Sockets.Listen: procedure Listen (SOCKET : Socket_FD; - QUEUE_SIZE : Positive := 5); - -PARAMETERS - SOCKET in Initialized and bound socket object - QUEUE_SIZE in Requested slots in the listen queue - -DESCRIPTION - This procedure establishes a listen queue after a TCP socket as - been initialized and bound. Each slot in the queue can hold one - incoming connection that has not been accepted yet. Note that most - operating systems ignore queue sizes larger than five. - -SEE ALSO - *Note Accept_Socket (procedure)::, - *Note Bind (procedure)::, - *Note Socket (procedure)::. - - - -File: adasockets.info, Node: New_Line (procedure) - -New_Line (procedure) --------------------- - -PURPOSE - Send a CR/LF to a remote host - -PROTOTYPE - - Sockets.New_Line: procedure New_Line (SOCKET : Socket_FD'Class; - COUNT : Natural := 1); - -PARAMETERS - SOCKET in Initialized and connected socket object - COUNT in Number of CR/LF sequences to send - -DESCRIPTION - This procedure sends one or more CR/LF combinations to the peer. - -EXCEPTIONS - `Connection_Closed'Peer has prematurely closed the connection - -SEE ALSO - *Note Put (procedure)::, - *Note Put_Line (procedure)::. - - - -File: adasockets.info, Node: Put (procedure) - -Put (procedure) ---------------- - -PURPOSE - Send a string to a remote host - -PROTOTYPE - - Sockets.Put: procedure Put (SOCKET : Socket_FD'Class; - STR : String); - -PARAMETERS - SOCKET in Initialized and connected socket object - STR in String to send - -DESCRIPTION - This procedure sends the content of STR over an outgoing or - incoming socket. - -EXCEPTIONS - `Connection_Closed'Peer has prematurely closed the connection - -SEE ALSO - *Note New_Line (procedure)::, - *Note Put_Line (procedure)::, - *Note Send (procedure)::. - - - -File: adasockets.info, Node: Put_Line (procedure) - -Put_Line (procedure) --------------------- - -PURPOSE - Send a CR/LF terminated string to a remote host - -PROTOTYPE - - Sockets.Put_Line: procedure Put_Line (SOCKET : Socket_FD'Class; - STR : String); - -PARAMETERS - SOCKET in Initialized and connected socket object - STR in String to send - -DESCRIPTION - This procedure sends the content of STR plus a CR/LF combination - over an outgoing or incoming socket. - -EXCEPTIONS - `Connection_Closed'Peer has prematurely closed the connection - -SEE ALSO - *Note New_Line (procedure)::, - *Note Put (procedure)::, - *Note Send (procedure)::. - - - -File: adasockets.info, Node: Receive (procedure) - -Receive (procedure) -------------------- - -PURPOSE - Receive raw data over a socket - -PROTOTYPE - - Sockets.Receive: procedure Receive (SOCKET : Socket_FD'Class; - DATA : out Ada.Streams.Stream_Element_Array); - -PARAMETERS - SOCKET in Initialized and bound or connected - socket object - DATA out Incoming data buffer - -DESCRIPTION - This procedure receives data from a bound UDP socket or a connected - TCP socket. It will block until the DATA reception buffer has been - totally filled. - -EXCEPTIONS - `Connection_Closed'Peer has closed the connection before - `Data'Length' bytes - were received - -SEE ALSO - *Note Get_Line (function)::, - *Note Get_Line (procedure)::, - *Note Receive (function)::, - *Note Receive_Some (procedure)::. - - - -File: adasockets.info, Node: Receive (function) - -Receive (function) ------------------- - -PURPOSE - Receive raw data over a socket - -PROTOTYPE - - Sockets.Receive: function Receive (SOCKET : Socket_FD; - MAX : Ada.Streams.Stream_Element_Count := 4096) - return Ada.Streams.Stream_Element_Array; - -PARAMETERS - SOCKET in Initialized and bound or connected - socket object - MAX in Maximum data length - -RETURN VALUE - Received raw data - -DESCRIPTION - This procedure receives data from a bound UDP socket or a connected - TCP socket. Only one system call will be performed; this function - will return whatever data has arrived. Note that in GNAT the - secondary stack may be used to store the data and may result in - stack storage exhaustion. - -EXCEPTIONS - `Connection_Closed'Peer has closed the connection before - sending any data - -SEE ALSO - *Note Receive (procedure)::, - *Note Receive_Some (procedure)::, - *Note Get_Line (function)::, - *Note Get_Line (procedure)::. - - - -File: adasockets.info, Node: Receive_Some (procedure) - -Receive_Some (procedure) ------------------------- - -PURPOSE - Receive raw data over a socket - -PROTOTYPE - - Sockets.Receive_Some: procedure Receive_Some - (SOCKET : Socket_FD'Class; - DATA : out Ada.Streams.Stream_Element_Array; - LAST : out Ada.Streams.Stream_Element_Offset); - -PARAMETERS - SOCKET in Initialized and bound or connected - socket object - DATA out Incoming data buffer - LAST out Index of last element placed into DATA - -DESCRIPTION - This procedure receives data from a bound UDP socket or a connected - TCP socket. As soon as at least one byte has been read, it returns - with LAST set to the index of the latest written element of DATA. - -EXCEPTIONS - `Connection_Closed'Peer has closed the connection before - sending any data - -SEE ALSO - *Note Get_Line (function)::, - *Note Get_Line (procedure)::, - *Note Receive (function)::, - *Note Receive (procedure)::. - - - -File: adasockets.info, Node: Send (procedure) - -Send (procedure) ----------------- - -PURPOSE - Send raw data over a socket - -PROTOTYPE - - Sockets.Send: procedure Send (SOCKET : Socket_FD; - DATA : out Ada.Streams.Stream_Element_Array); - -PARAMETERS - SOCKET in Initialized and connected socket object - DATA out Data to be sent - -DESCRIPTION - This procedure sends data over a connected outgoing socket or over - an incoming socket. - -EXCEPTIONS - `Connection_Closed'Peer has prematurely closed the connection - -SEE ALSO - *Note Put (procedure)::, - *Note Put_Line (procedure)::. - - - -File: adasockets.info, Node: Set_Buffer (procedure) - -Set_Buffer (procedure) ----------------------- - -PURPOSE - Install a line-oriented buffer of the socket object - -PROTOTYPE - - Sockets.Set_Buffer: procedure Set_Buffer - (SOCKET : Socket_FD'Class; LENGTH : Positive := 1500); - -PARAMETERS - SOCKET in Initialized and connected socket object - LENGTH in Size in bytes of the newly installed - buffer - -DESCRIPTION - This procedure puts the socket object in buffered mode. If the - socket was already buffered, the content of the previous buffer - will be lost. The buffered mode only affects character- and - line-oriented read operation such as *Note Get (function)::, *Note - Get_Char (function)::, and *Note Get_Line (function)::. Other - reception subprograms will not function properly if buffered mode - is used at the same time. - - The size of the buffer has to be greater than the biggest possible - packet sent by the remote host, otherwise data loss may occur. - -SEE ALSO - *Note Unset_Buffer (procedure)::. - - - -File: adasockets.info, Node: Setsockopt (procedure) - -Setsockopt (procedure) ----------------------- - -PURPOSE - Set a socket option - -PROTOTYPE - - Sockets.Setsockopt: procedure Setsockopt (SOCKET : Socket_FD; - LEVEL : Socket_Level := SOL_SOCKET; - OPTNAME : Socket_Option; OPTVAL : Integer); - -PARAMETERS - SOCKET in Initialized and bound socket object - LEVEL in Protocol level - OPTNAME in Option name - OPTVAL in Option value - -DESCRIPTION - This procedure sets options applicable to a socket. Please see - your operating system manual for usable levels and options. - - Two levels are defined: `SOL_SOCKET' (the default) and - `IPPROTO_IP'. The options are `SO_REUSEADDR', `SO_REUSEPORT', - `IP_MULTICAST_TTL', `IP_ADD_MEMBERSHIP', `IP_DROP_MEMBERSHIP', - `IP_MULTICAST_LOOP', `SO_SNDBUF' and `IP_RCVBUF'. - - Note that unlike their C language counterpart, `Getsockopt' and - `Setsockopt' do not require an extra parameter representing the - length in bytes of the option value. AdaSockets nows the right - size for every option. - -SEE ALSO - *Note Getsockopt (procedure)::. - - - -File: adasockets.info, Node: Shutdown (procedure) - -Shutdown (procedure) --------------------- - -PURPOSE - Shutdown a socket - -PROTOTYPE - - Sockets.Shutdown: procedure Shutdown - (SOCKET : in out Socket_FD; HOW : Shutdown_Type := Both); - -PARAMETERS - SOCKET in out Socket object to shutdown - HOW in Direction to shutdown - -DESCRIPTION - This procedure shutdowns either direction of the socket. HOW can - take the value `Send', `Receive' or `Both'. - -SEE ALSO - *Note Socket (procedure)::. - - - -File: adasockets.info, Node: Socket (procedure) - -Socket (procedure) ------------------- - -PURPOSE - Create a socket of the given mode - -PROTOTYPE - - Sockets.Socket: procedure Socket (SOCKET : out Socket_FD; - DOMAIN : Socket_Domain := PF_INET; - TYP : Socket_Type := SOCK_STREAM); - -PARAMETERS - SOCKET out Socket object to initialize - DOMAIN in Protocol family - TYP in Kind of sockets - -DESCRIPTION - This procedure initializes a new socket object by reserving a file - descriptor to the operating system. For backward compatibility with - older versions of this library, `AF_INET' is still accepted as a - value but should be replaced as soon as possible with the proper - `PF_INET'. Using `SOCK_STREAM' for the TYP argument will create a - TCP socket while a `SOCK_DGRAM' will create a UDP one. - -EXAMPLE - declare - Sock : Socket_FD; - begin - -- Create a TCP socket - Socket (Sock, PF_INET, SOCK_STREAM); - -- Perform some operations on socket - [...] - -- Shutdown the socket in both directions - Shutdown (Sock, Both); - end; - -SEE ALSO - *Note Shutdown (procedure)::. - - - -File: adasockets.info, Node: Unset_Buffer (procedure) - -Unset_Buffer (procedure) ------------------------- - -PURPOSE - Deinstall the line-oriented buffer of the socket object - -PROTOTYPE - - Sockets.Unset_Buffer: procedure Unset_Buffer - (SOCKET : Socket_FD'Class); - -PARAMETERS - SOCKET in Initialized and connected socket object - -DESCRIPTION - This procedure deinstalls the buffer previously installed by *Note - Set_Buffer (procedure)::. If any data is still present in the - buffer, it will be lost. To avoid this situation, the buffer can - be flushed by calling *Note Get (function)::. - - - -File: adasockets.info, Node: Sockets.Multicast package, Next: Sockets.Naming package, Prev: Sockets package, Up: Top - -Sockets.Multicast package -************************* - -The `Sockets.Multicast' allows the creation of IP multicast sockets. - - - Sockets.Multicast.Multicast_Socket_FD: type Multicast_Socket_FD is - new Socket_FD with private; - The `Multicast_Socket_FD' tagged type derives from the `Socket_FD' - type. It gets initialized by calling *Note Create_Multicast_Socket - (function)::. - - -* Menu: - -* Create_Multicast_Socket (function):: - Create an IP multicast socket -* Create_Multicast_Socket (function):: - Create an IP multicast socket - - -File: adasockets.info, Node: Create_Multicast_Socket (function) - -Create_Multicast_Socket (function) ----------------------------------- - -PURPOSE - Create an IP multicast socket - -PROTOTYPE - - Sockets.Multicast.Create_Multicast_Socket: function - Create_Multicast_Socket (GROUP : String; PORT : Positive; - TTL : Positive := 16; SELF_LOOP : Boolean := True) - return Multicast_Socket_FD; - -PARAMETERS - GROUP in IP address of the multicast group to join - PORT in Port of the multicast group to join - TTL in Time-to-live of sent packets - SELF_LOOP in Should the socket receive the packets - sent from the local host? - -RETURN VALUE - The new initialized multicast socket - -DESCRIPTION - This function creates an IP multicast socket attached to a given - group, identified by its class E IP address and port. - - Be careful when choosing the TTL parameter of your IP multicast - socket. Most IP multicast routers do implement threshold-based - filtering and will not let IP multicast packets leave your - organization if the TTL on the last router is smaller than 16. - -EXAMPLE - declare - Sock : Multicast_Socket_FD; - begin - -- Create a multicast socket on group 224.1.2.3 port 8763 - Sock := Create_Multicast_Socket ("224.1.2.3", 8763); - -- Perform some operations on socket - [...] - -- Shutdown the socket in both directions - Shutdown (Sock, Both); - end; - -SEE ALSO - *Note Send (procedure)::, - *Note Shutdown (procedure)::. - - - -File: adasockets.info, Node: Create_Multicast_Socket (function) - -Create_Multicast_Socket (function) ----------------------------------- - -PURPOSE - Create an IP multicast socket - -PROTOTYPE - - Sockets.Multicast.Create_Multicast_Socket: function - Create_Multicast_Socket (GROUP : String; PORT : Positive; - LOCAL_PORT : Natural; TTL : Positive := 16) - return Multicast_Socket_FD; - -PARAMETERS - GROUP in IP address of the multicast group to join - PORT in Port of the multicast group to join - LOCAL_PORT in Local port number to use - TTL in Time-to-live of sent packets - -RETURN VALUE - The new initialized multicast socket - -DESCRIPTION - This function creates an IP multicast socket attached to a given - group, identified by its class E IP address and port. If - Local_Port is 0, a free port will automatically be chosen by your - operating system. - - This function should be used when you want to send packets to a - multicast group without receiving any packet yourself. - -EXAMPLE - declare - Sock : Multicast_Socket_FD; - begin - -- Create a multicast socket on group 224.1.2.3 port 8763 - Sock := Create_Multicast_Socket ("224.1.2.3", 8763); - -- Perform some operations on socket - [...] - -- Shutdown the socket in both directions - Shutdown (Sock, Both); - end; - -SEE ALSO - *Note Send (procedure)::, - *Note Shutdown (procedure)::. - - - -File: adasockets.info, Node: Sockets.Naming package, Next: Contributors, Prev: Sockets.Multicast package, Up: Top - -Sockets.Naming package -********************** - -The `Sockets.Naming' package contains types and helper functions needed -to manipulate Internet host names and addresses. - - - Sockets.Naming.Address: type Address is record - H1, H2, H3, H4 : Address_Component; - end record; - This type represents an IPv4 address with `H1' being the first - octet and `H4' the last one. For example, 137.194.161.2 is - represented by `H1=137, H2=194, H3=161, H4=2'. - - - - Sockets.Naming.Address_Array: type Address_Array is array (Positive - range <>) of Address; - Helper type - - - - Sockets.Naming.Address_Component: type Address_Component is Natural - range 0 .. 255; - Helper type - - - - Sockets.Naming.Host_Entry: type Host_Entry (N_Aliases, N_Addresses : - Natural) is new Ada.Finalization.Controlled with record - Name : String_Access; - Aliases : String_Array (1 .. N_Aliases); - Addresses : Address_Array (1 .. N_Addresses); - end record; - The `Host_Entry' type holds a set of names and IP addresses - associated with a host. Each host can have several IP address as - well as several aliases. - - - - Sockets.Naming.String_Access: type String_Access is access String; - Helper type - - - - Sockets.Naming.String_Array: type String_Array is array (Positive - range <>) of String_Access; - Helper type - - -* Menu: - -* Address_Of (function):: - Get the IP address of a host -* Any_Address (function):: - Special address representing any address on the local host -* Get_Peer_Addr (function):: - Retrieve IP address of remote host -* Get_Peer_Port (function):: - Retrieve port used by remote host -* Get_Sock_Addr (function):: - Retrieve IP address of local host -* Get_Sock_Port (function):: - Retrieve port used by local host -* Host_Name (function):: - Get the name of the current host -* Image (function):: Make a string from an address -* Info_Of_Name_Or_IP (function):: - Get addresses and names of a host -* Is_IP_Address (function):: - Check if given string is a valid IP address -* Name_Of (function):: Official name of the host -* Value (function):: Transform a string into an address - - -File: adasockets.info, Node: Address_Of (function) - -Address_Of (function) ---------------------- - -PURPOSE - Get the IP address of a host - -PROTOTYPE - - Sockets.Naming.Address_Of: function Address_Of - (SOMETHING : String) - return Address; - -PARAMETERS - SOMETHING in Host name or IP address - -RETURN VALUE - IPv4 address - -EXCEPTIONS - `Naming_Error' No information available for this name or - address - -SEE ALSO - *Note Name_Of (function)::. - - - -File: adasockets.info, Node: Any_Address (function) - -Any_Address (function) ----------------------- - -PURPOSE - Special address representing any address on the local host - -PROTOTYPE - - Sockets.Naming.Any_Address: function Any_Address - -RETURN VALUE - Equivalent to `INADDR_ANY' in the C programming language - - - -File: adasockets.info, Node: Get_Peer_Addr (function) - -Get_Peer_Addr (function) ------------------------- - -PURPOSE - Retrieve IP address of remote host - -PROTOTYPE - - Sockets.Naming.Get_Peer_Addr: function Get_Peer_Addr - (SOCKET : Socket_FD) - return Address; - -PARAMETERS - SOCKET in Connected socket object - -RETURN VALUE - Peer address - -SEE ALSO - *Note Get_Peer_Port (function)::, - *Note Get_Sock_Addr (function)::. - - - -File: adasockets.info, Node: Get_Peer_Port (function) - -Get_Peer_Port (function) ------------------------- - -PURPOSE - Retrieve port used by remote host - -PROTOTYPE - - Sockets.Naming.Get_Peer_Port: function Get_Peer_Port - (SOCKET : Socket_FD) - return Positive; - -PARAMETERS - SOCKET in Connected socket object - -RETURN VALUE - Port used on the remote host - -SEE ALSO - *Note Get_Sock_Port (function)::, - *Note Get_Peer_Addr (function)::. - - - -File: adasockets.info, Node: Get_Sock_Addr (function) - -Get_Sock_Addr (function) ------------------------- - -PURPOSE - Retrieve IP address of local host - -PROTOTYPE - - Sockets.Naming.Get_Sock_Addr: function Get_Sock_Addr - (SOCKET : Socket_FD) - return Address; - -PARAMETERS - SOCKET in Connected socket object - -RETURN VALUE - Address of local interface used - -SEE ALSO - *Note Get_Sock_Port (function)::, - *Note Get_Peer_Addr (function)::. - - - -File: adasockets.info, Node: Get_Sock_Port (function) - -Get_Sock_Port (function) ------------------------- - -PURPOSE - Retrieve port used by local host - -PROTOTYPE - - Sockets.Naming.Get_Sock_Port: function Get_Sock_Port - (SOCKET : Socket_FD) - return Positive; - -PARAMETERS - SOCKET in Connected socket object - -RETURN VALUE - Port used on the local host - -SEE ALSO - *Note Get_Peer_Port (function)::, - *Note Get_Sock_Addr (function)::. - - - -File: adasockets.info, Node: Host_Name (function) - -Host_Name (function) --------------------- - -PURPOSE - Get the name of the current host - -PROTOTYPE - - Sockets.Naming.Host_Name: function Host_Name - -RETURN VALUE - Name of the current host - -DESCRIPTION - This function returns the name of the current host. Depending on - the local configuration, it may or may not be a fully qualified - domain name (FQDN). - - - -File: adasockets.info, Node: Image (function) - -Image (function) ----------------- - -PURPOSE - Make a string from an address - -PROTOTYPE - - Sockets.Naming.Image: function Image (ADD : Address) - return String; - -PARAMETERS - ADD in IP address - -RETURN VALUE - String representation of the IP address - -SEE ALSO - *Note Value (function)::. - - - -File: adasockets.info, Node: Info_Of_Name_Or_IP (function) - -Info_Of_Name_Or_IP (function) ------------------------------ - -PURPOSE - Get addresses and names of a host - -PROTOTYPE - - Sockets.Naming.Info_Of_Name_Or_IP: function Info_Of_Name_Or_IP - (SOMETHING : String) - return Host_Entry; - -PARAMETERS - SOMETHING in Host name or IP address - -RETURN VALUE - Corresponding host entry - -DESCRIPTION - This function extracts all the names and addresses from the naming - service. - -EXCEPTIONS - `Naming_Error' No information available for this name or - address - - - -File: adasockets.info, Node: Is_IP_Address (function) - -Is_IP_Address (function) ------------------------- - -PURPOSE - Check if given string is a valid IP address - -PROTOTYPE - - Sockets.Naming.Is_IP_Address: function Is_IP_Address - (SOMETHING : String) - return Boolean; - -PARAMETERS - SOMETHING in String to check - -RETURN VALUE - `True' if SOMETHING is an IP address - - - -File: adasockets.info, Node: Name_Of (function) - -Name_Of (function) ------------------- - -PURPOSE - Official name of the host - -PROTOTYPE - - Sockets.Naming.Name_Of: function Name_Of (SOMETHING : String) - return String; - -PARAMETERS - SOMETHING in Host name or IP address - -RETURN VALUE - Name of the host - -EXCEPTIONS - `Naming_Error' No information available for this name or - address - -SEE ALSO - *Note Address_Of (function)::. - - - -File: adasockets.info, Node: Value (function) - -Value (function) ----------------- - -PURPOSE - Transform a string into an address - -PROTOTYPE - - Sockets.Naming.Value: function Value (ADD : String) - return Address; - -PARAMETERS - ADD in Textual representation of an IP address - -RETURN VALUE - Corresponding Address - -SEE ALSO - *Note Image (function)::. - - - -File: adasockets.info, Node: Contributors, Next: Resources on the Internet, Prev: Sockets.Naming package, Up: Top - -Contributors -************ - -AdaSockets has been originally developped by Samuel Tardieu who still -maintains it. However, the following people have made crucial -contributions to AdaSockets, be they new code, bug fixes or porting to -new operating systems: - - * Dmitriy Anisimkov () - - * Alan Barnes () - - * Juanma Barranquero () - - * Bobby D. Bryant () - - * Sander Cox () - - * Sune Falk () - - * Guillaume Foliard () - - * Laurent Guerby () - - * David J. Kristola () - - * Dominik Madon () - - * Pascal Obry () - - * Nicolas Ollinger () - - * Stéphane Patureau () - - * Thomas Quinot () - - * Preben Randhol () - - * Maxim Reznik () - - * Samuel Tardieu () - - If you feel that you have been forgotten, please send me a mail so -that I can fix it in the next version. - - *Note Resources on the Internet::, for how to contribute. - - -File: adasockets.info, Node: Resources on the Internet, Next: Index, Prev: Contributors, Up: Top - -Resources on the Internet -************************* - -The latest version of AdaSockets can always be found at: - - - There is a mailing-list that -you can use to discuss problem or suggestions at: - - - Please use the -mailing-list for questions and discussions. However, you can send me -patches by private mail (). - - -File: adasockets.info, Node: Index, Prev: Resources on the Internet, Up: Top - -Index -***** - -* Menu: - -* Accept_Socket: Accept_Socket (procedure). -* Accepting a new connection: Accept_Socket (procedure). -* Ada.Streams.Stream_Element_Array <1>: Raw data manipulation. -* Ada.Streams.Stream_Element_Array <2>: Receive_Some (procedure). -* Ada.Streams.Stream_Element_Array <3>: Send (procedure). -* Ada.Streams.Stream_Element_Array <4>: Receive (function). -* Ada.Streams.Stream_Element_Array: Receive (procedure). -* Ada.Streams.Stream_Element_Count <1>: Receive (function). -* Ada.Streams.Stream_Element_Count: Receive_Some (procedure). -* AdaSockets presentation: What is AdaSockets?. -* Address: Sockets.Naming package. -* Address_Array: Sockets.Naming package. -* Address_Component: Sockets.Naming package. -* Address_Of: Address_Of (function). -* AF_INET: Socket (procedure). -* Any_Address: Any_Address (function). -* Assigning a local port: Bind (procedure). -* Bind: Bind (procedure). -* Binding a socket: Bind (procedure). -* Both: Shutdown (procedure). -* Closing a socket: Shutdown (procedure). -* Comparaison with GNAT.Sockets: What is AdaSockets?. -* Connect: Connect (procedure). -* Connecting a socket: Connect (procedure). -* Connection_Closed <1>: New_Line (procedure). -* Connection_Closed <2>: Get (function). -* Connection_Closed <3>: Get_Char (function). -* Connection_Closed <4>: Get_Line (procedure). -* Connection_Closed <5>: Get_Line (function). -* Connection_Closed <6>: Receive_Some (procedure). -* Connection_Closed <7>: Put (procedure). -* Connection_Closed <8>: Put_Line (procedure). -* Connection_Closed <9>: Receive (procedure). -* Connection_Closed <10>: Send (procedure). -* Connection_Closed: Receive (function). -* Connection_Refused: Connect (procedure). -* Contributing <1>: Resources on the Internet. -* Contributing: Contributors. -* CR <1>: New_Line (procedure). -* CR <2>: Get_Line (function). -* CR: Get_Line (procedure). -* Create_Multicast_Socket <1>: Create_Multicast_Socket (function). -* Create_Multicast_Socket <2>: Setting up multicast sockets. -* Create_Multicast_Socket: Create_Multicast_Socket (function). -* Creating a multicast socket <1>: Create_Multicast_Socket (function). -* Creating a multicast socket <2>: Create_Multicast_Socket (function). -* Creating a multicast socket: Setting up multicast sockets. -* Creating a server: Bind (procedure). -* Creating a socket <1>: Create_Multicast_Socket (function). -* Creating a socket <2>: Socket (procedure). -* Creating a socket <3>: Create_Multicast_Socket (function). -* Creating a socket: Setting up unicast sockets. -* Creating a TCP socket: Setting up unicast sockets. -* Creating a UDP socket: Setting up unicast sockets. -* Creating a unicast socket: Setting up unicast sockets. -* Establishing a listen queue: Listen (procedure). -* Finding AdaSockets on the Internet: Resources on the Internet. -* Get: Get (function). -* Get_Char: Get_Char (function). -* Get_Line <1>: Get_Line (procedure). -* Get_Line: Get_Line (function). -* Get_Peer_Addr: Get_Peer_Addr (function). -* Get_Peer_Port: Get_Peer_Port (function). -* Get_Sock_Addr: Get_Sock_Addr (function). -* Get_Sock_Port: Get_Sock_Port (function). -* Getsockopt: Getsockopt (procedure). -* Group communication: Setting up multicast sockets. -* Handling a new connection: Accept_Socket (procedure). -* Host_Entry: Sockets.Naming package. -* Host_Name: Host_Name (function). -* Image: Image (function). -* Info_Of_Name_Or_IP: Info_Of_Name_Or_IP (function). -* Installing AdaSockets: Installing AdaSockets. -* IP_ADD_MEMBERSHIP <1>: Setsockopt (procedure). -* IP_ADD_MEMBERSHIP: Getsockopt (procedure). -* IP_DROP_MEMBERSHIP <1>: Setsockopt (procedure). -* IP_DROP_MEMBERSHIP: Getsockopt (procedure). -* IP_MULTICAST_LOOP <1>: Getsockopt (procedure). -* IP_MULTICAST_LOOP: Setsockopt (procedure). -* IP_MULTICAST_TTL <1>: Setsockopt (procedure). -* IP_MULTICAST_TTL: Getsockopt (procedure). -* IPPROTO_IP <1>: Setsockopt (procedure). -* IPPROTO_IP: Getsockopt (procedure). -* Is_IP_Address: Is_IP_Address (function). -* LF <1>: Get_Line (function). -* LF <2>: Get_Line (procedure). -* LF: New_Line (procedure). -* Listen: Listen (procedure). -* Listen queue: Listen (procedure). -* Manipulating socket options <1>: Setsockopt (procedure). -* Manipulating socket options: Getsockopt (procedure). -* Mbone: Setting up multicast sockets. -* Multicast sockets: Setting up multicast sockets. -* Multicast_Socket_FD <1>: Sockets.Multicast package. -* Multicast_Socket_FD: Setting up multicast sockets. -* Name_Of: Name_Of (function). -* Naming_Error <1>: Info_Of_Name_Or_IP (function). -* Naming_Error <2>: Address_Of (function). -* Naming_Error: Name_Of (function). -* New_Line: New_Line (procedure). -* PF_INET: Socket (procedure). -* Put: Put (procedure). -* Put_Line: Put_Line (procedure). -* Raw data manipulation: Raw data manipulation. -* Receive <1>: Shutdown (procedure). -* Receive <2>: Receive (function). -* Receive: Receive (procedure). -* Receive_Some: Receive_Some (procedure). -* Receiving data <1>: Get_Line (function). -* Receiving data <2>: Receive_Some (procedure). -* Receiving data <3>: Get_Char (function). -* Receiving data <4>: Get_Line (procedure). -* Receiving data <5>: Set_Buffer (procedure). -* Receiving data <6>: Receive (function). -* Receiving data <7>: Get (function). -* Receiving data <8>: Unset_Buffer (procedure). -* Receiving data <9>: Receive (procedure). -* Receiving data: Sending and receiving data. -* Reporting a bug: Resources on the Internet. -* Representing IP addresses <1>: Value (function). -* Representing IP addresses: Image (function). -* Retrieving socket options: Getsockopt (procedure). -* Send <1>: Shutdown (procedure). -* Send: Send (procedure). -* Sending data <1>: Sending and receiving data. -* Sending data <2>: Send (procedure). -* Sending data <3>: Put_Line (procedure). -* Sending data <4>: New_Line (procedure). -* Sending data: Put (procedure). -* Sending patches: Resources on the Internet. -* Set_Buffer: Set_Buffer (procedure). -* Setsockopt: Setsockopt (procedure). -* Setting socket options: Setsockopt (procedure). -* Shutdown: Shutdown (procedure). -* SO_RCVBUF <1>: Getsockopt (procedure). -* SO_RCVBUF: Setsockopt (procedure). -* SO_REUSEADDR <1>: Getsockopt (procedure). -* SO_REUSEADDR: Setsockopt (procedure). -* SO_REUSEPORT <1>: Setsockopt (procedure). -* SO_REUSEPORT: Getsockopt (procedure). -* SO_SNDBUF <1>: Setsockopt (procedure). -* SO_SNDBUF: Getsockopt (procedure). -* SOCK_DGRAM: Socket (procedure). -* SOCK_STREAM: Socket (procedure). -* Socket <1>: Setting up unicast sockets. -* Socket: Socket (procedure). -* Socket shutdown: Shutdown (procedure). -* Socket_Error <1>: Bind (procedure). -* Socket_Error: Connect (procedure). -* Socket_FD <1>: Sockets package. -* Socket_FD: Setting up unicast sockets. -* Sockets.Accept_Socket: Accept_Socket (procedure). -* Sockets.Bind: Bind (procedure). -* Sockets.Connect: Connect (procedure). -* Sockets.Get: Get (function). -* Sockets.Get_Char: Get_Char (function). -* Sockets.Get_Line <1>: Get_Line (function). -* Sockets.Get_Line: Get_Line (procedure). -* Sockets.Getsockopt: Getsockopt (procedure). -* Sockets.IP_ADD_MEMBERSHIP <1>: Setsockopt (procedure). -* Sockets.IP_ADD_MEMBERSHIP: Getsockopt (procedure). -* Sockets.IP_DROP_MEMBERSHIP <1>: Getsockopt (procedure). -* Sockets.IP_DROP_MEMBERSHIP: Setsockopt (procedure). -* Sockets.IP_MULTICAST_LOOP <1>: Setsockopt (procedure). -* Sockets.IP_MULTICAST_LOOP: Getsockopt (procedure). -* Sockets.IP_MULTICAST_TTL <1>: Setsockopt (procedure). -* Sockets.IP_MULTICAST_TTL: Getsockopt (procedure). -* Sockets.IPPROTO_IP <1>: Getsockopt (procedure). -* Sockets.IPPROTO_IP: Setsockopt (procedure). -* Sockets.Listen: Listen (procedure). -* Sockets.Multicast.Create_Multicast_Socket <1>: Create_Multicast_Socket (function). -* Sockets.Multicast.Create_Multicast_Socket <2>: Setting up multicast sockets. -* Sockets.Multicast.Create_Multicast_Socket: Create_Multicast_Socket (function). -* Sockets.Naming.Address_Of: Address_Of (function). -* Sockets.Naming.Any_Address: Any_Address (function). -* Sockets.Naming.Get_Peer_Addr: Get_Peer_Addr (function). -* Sockets.Naming.Get_Peer_Port: Get_Peer_Port (function). -* Sockets.Naming.Get_Sock_Addr: Get_Sock_Addr (function). -* Sockets.Naming.Get_Sock_Port: Get_Sock_Port (function). -* Sockets.Naming.Host_Name: Host_Name (function). -* Sockets.Naming.Image: Image (function). -* Sockets.Naming.Info_Of_Name_Or_IP: Info_Of_Name_Or_IP (function). -* Sockets.Naming.Is_IP_Address: Is_IP_Address (function). -* Sockets.Naming.Name_Of: Name_Of (function). -* Sockets.Naming.Value: Value (function). -* Sockets.New_Line: New_Line (procedure). -* Sockets.Put: Put (procedure). -* Sockets.Put_Line: Put_Line (procedure). -* Sockets.Receive <1>: Receive (procedure). -* Sockets.Receive: Receive (function). -* Sockets.Receive_Some: Receive_Some (procedure). -* Sockets.Send: Send (procedure). -* Sockets.Set_Buffer: Set_Buffer (procedure). -* Sockets.Setsockopt: Setsockopt (procedure). -* Sockets.Shutdown: Shutdown (procedure). -* Sockets.SO_RCVBUF <1>: Setsockopt (procedure). -* Sockets.SO_RCVBUF: Getsockopt (procedure). -* Sockets.SO_REUSEADDR <1>: Getsockopt (procedure). -* Sockets.SO_REUSEADDR: Setsockopt (procedure). -* Sockets.SO_REUSEPORT <1>: Setsockopt (procedure). -* Sockets.SO_REUSEPORT: Getsockopt (procedure). -* Sockets.SO_SNDBUF <1>: Setsockopt (procedure). -* Sockets.SO_SNDBUF: Getsockopt (procedure). -* Sockets.Socket <1>: Socket (procedure). -* Sockets.Socket: Setting up unicast sockets. -* Sockets.SOL_SOCKET <1>: Setsockopt (procedure). -* Sockets.SOL_SOCKET: Getsockopt (procedure). -* Sockets.Unset_Buffer: Unset_Buffer (procedure). -* SOL_SOCKET <1>: Getsockopt (procedure). -* SOL_SOCKET: Setsockopt (procedure). -* Stream_Element_Array <1>: Send (procedure). -* Stream_Element_Array <2>: Receive_Some (procedure). -* Stream_Element_Array <3>: Raw data manipulation. -* Stream_Element_Array <4>: Receive (procedure). -* Stream_Element_Array: Receive (function). -* Stream_Element_Count <1>: Receive_Some (procedure). -* Stream_Element_Count: Receive (function). -* String_Access: Sockets.Naming package. -* String_Array: Sockets.Naming package. -* Suggesting a feature: Resources on the Internet. -* TCP socket: Setting up unicast sockets. -* UDP socket: Setting up unicast sockets. -* Unicast sockets: Setting up unicast sockets. -* Unset_Buffer: Unset_Buffer (procedure). -* Value: Value (function). - - - -Tag Table: -Node: Top795 -Node: What is AdaSockets?1369 -Node: Installing AdaSockets2254 -Node: Using AdaSockets3234 -Node: Compiling an Ada application3521 -Node: Setting up unicast sockets4139 -Node: Setting up multicast sockets5430 -Node: Sending and receiving data6747 -Node: Raw data manipulation7101 -Node: String-oriented exchanges7488 -Node: Sockets package8567 -Node: Accept_Socket (procedure)10510 -Node: Bind (procedure)12294 -Node: Connect (procedure)13472 -Node: Get (function)14728 -Node: Get_Char (function)15837 -Node: Get_Line (procedure)16616 -Node: Get_Line (function)17679 -Node: Getsockopt (procedure)18896 -Node: Listen (procedure)20114 -Node: New_Line (procedure)20897 -Node: Put (procedure)21537 -Node: Put_Line (procedure)22179 -Node: Receive (procedure)22883 -Node: Receive (function)23814 -Node: Receive_Some (procedure)24934 -Node: Send (procedure)26036 -Node: Set_Buffer (procedure)26680 -Node: Setsockopt (procedure)27803 -Node: Shutdown (procedure)29007 -Node: Socket (procedure)29555 -Node: Unset_Buffer (procedure)30834 -Node: Sockets.Multicast package31473 -Node: Create_Multicast_Socket (function)32189 -Node: Create_Multicast_Socket (function)33874 -Node: Sockets.Naming package35443 -Node: Address_Of (function)37948 -Node: Any_Address (function)38473 -Node: Get_Peer_Addr (function)38794 -Node: Get_Peer_Port (function)39275 -Node: Get_Sock_Addr (function)39772 -Node: Get_Sock_Port (function)40271 -Node: Host_Name (function)40766 -Node: Image (function)41196 -Node: Info_Of_Name_Or_IP (function)41578 -Node: Is_IP_Address (function)42219 -Node: Name_Of (function)42637 -Node: Value (function)43135 -Node: Contributors43533 -Node: Resources on the Internet44863 -Node: Index45406 - -End Tag Table reverted: --- adasockets-1.8.4.7/debian/orig/README +++ adasockets-1.8.4.7.orig/debian/orig/README @@ -1,28 +0,0 @@ -This is a nasty hack: something horrid is going on in the upstream -makefile, and I haven't made sense of it yet. Until I do, there are a -number of files that get mangled: - - doc/adasockets.info - is modified. So we keep the original here for restoration during - a clean operation. - - doc/adasockets.ps - doc/sockets-multicast.texi - doc/sockets-naming.texi - doc/sockets.texi - are all blown away by the upstream clean. So we also restore - those. - - doc/stamp-vti - src/b~split.adb - src/b~split.ads - src/sockets-constants.ads - support/adacompiler - are not blown away as they should be. So we do that in the clean - target of debian/rules. - -Of course, all this could be intentional and I might not have -understood what's going on. However, the build fails without this -fix. :-( - -This orig directory needs refreshing on each upstream revision. only in patch2: unchanged: --- adasockets-1.8.4.7.orig/src/adasockets-config.in +++ adasockets-1.8.4.7/src/adasockets-config.in @@ -4,13 +4,10 @@ # AdaSockets. # -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ VERSION=@VERSION@ -CFLAGS="-I$libdir/adasockets -L$libdir/adasockets" -LIBS="-L$prefix/lib -ladasockets" +CFLAGS="-I/usr/share/ada/adainclude/adasockets/ -I/usr/lib/ada/adalib/adasockets -L/usr/lib/ada/adalib/adasockets" +LIBS="-ladasockets" case "x$1" in x--version) only in patch2: unchanged: --- adasockets-1.8.4.7.orig/configure.ac +++ adasockets-1.8.4.7/configure.ac @@ -6,7 +6,7 @@ # Package description # AM_INIT_AUTOMAKE([adasockets],[1.8.4.7]) -LIBVERSIONINFO=0:0:0 +LIBVERSIONINFO=1:0:0 AC_SUBST(LIBVERSIONINFO) LT_INIT # only in patch2: unchanged: --- adasockets-1.8.4.7.orig/doc/Makefile.in +++ adasockets-1.8.4.7/doc/Makefile.in @@ -180,7 +180,7 @@ --subblock=exc=excname,excdesc \ --template=adadoc -CLEANFILES = *.defs ${adasockets_TEXINFOS} +CLEANFILES = *.defs docdir = ${DESTDIR}${prefix}/share/doc/adasockets all: all-am only in patch2: unchanged: --- adasockets-1.8.4.7.orig/debian/libadasockets1.files +++ adasockets-1.8.4.7/debian/libadasockets1.files @@ -0,0 +1 @@ +usr/lib/libadasockets.so.* only in patch2: unchanged: --- adasockets-1.8.4.7.orig/debian/adasockets.gpr +++ adasockets-1.8.4.7/debian/adasockets.gpr @@ -0,0 +1,13 @@ +project Adasockets is + Version := "1"; + for Library_Dir use "/usr/lib"; + for Library_Name use "adasockets"; + for Library_Kind use "relocatable"; + for Library_Version use "libadasockets.so." & Version; + for Source_Dirs use ("/usr/share/ada/adainclude/adasockets"); + for Object_Dir use "/usr/lib/ada/adalib/adasockets"; + Linker_Switches := "-ladasockets"; + package Linker is + for Default_Switches ("Ada") use (Linker_Switches); + end Linker; +end Adasockets; only in patch2: unchanged: --- adasockets-1.8.4.7.orig/debian/libadasockets-dev.dirs +++ adasockets-1.8.4.7/debian/libadasockets-dev.dirs @@ -0,0 +1,2 @@ +usr/share/ada/adainclude/adasockets +usr/lib/ada/adalib/adasockets only in patch2: unchanged: --- adasockets-1.8.4.7.orig/debian/Makefile +++ adasockets-1.8.4.7/debian/Makefile @@ -0,0 +1,23 @@ +# By default, compile all of the demo programs: + +EXAMPLES=listener multi stream_listener stream_sender tcpreplay value + +all: $(EXAMPLES) + +$(EXAMPLES): FORCE + gnatmake -Pexamples + + +# "FORCE" just forces the depending rule to always be run. +# In particular, we always want to invoke gnatmake, which then checks to see if +# anything needs recompiling. + +FORCE: + + +clean: + rm -f $(EXAMPLES) *.o *.ali + + +# An alternative is to use commands of the form +# gnatmake `adasockets-config --cflags` $example -largs `adasockets-config --libs` \ No newline at end of file only in patch2: unchanged: --- adasockets-1.8.4.7.orig/debian/libadasockets-dev.links +++ adasockets-1.8.4.7/debian/libadasockets-dev.links @@ -0,0 +1 @@ +usr/share/doc/libadasockets1 usr/share/doc/libadasockets-dev only in patch2: unchanged: --- adasockets-1.8.4.7.orig/debian/examples.gpr +++ adasockets-1.8.4.7/debian/examples.gpr @@ -0,0 +1,9 @@ +with "adasockets"; +project Examples is + for Main use ("listener", + "multi", + "stream_listener", + "stream_sender", + "tcprelay", + "value"); +end Examples; only in patch2: unchanged: --- adasockets-1.8.4.7.orig/configure +++ adasockets-1.8.4.7/configure @@ -1911,7 +1911,7 @@ -LIBVERSIONINFO=0:0:0 +LIBVERSIONINFO=1:0:0