%!PS-Adobe-2.0
%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
%%Title: mpi_libraries.dvi
%%Pages: 8 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: tex.pro
/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 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 /IE 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 IE N end dup{/foo setfont}2
array copy cvx N load 0 nn put /ctr 0 N[}B /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 dup definefont
setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup
length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{
ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B
/ch-image{ch-data dup 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 /sf 0 N /CharBuilder{save 3 1 roll S
dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}
imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 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}N /eop{clear SI restore
showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N
/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
moveto}B /delta 0 N /tail{dup /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{clear SS restore}B end
%%EndProcSet
%%BeginProcSet: special.pro
TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs
792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP false N /BBcalc false N
/p 3 def}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{
@scaleunit div /vsc X}B /@hsize{/hs X /CLIP true N}B /@vsize{/vs X /CLIP true
N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X}
B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X /BBcalc true N}B
/magscale true def end /@MacSetUp{userdict /md known{userdict /md get type
/dicttype eq{md begin /letter{}N /note{}N /legal{}N /od{txpose 1 0 mtx
defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{
itransform moveto}}{transform{itransform lineto}}{6 -2 roll transform 6 -2
roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll
itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array
astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{
PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR
pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if
yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270
rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get
ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not
and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip
not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}
ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy
TR .96 dup scale neg S neg S TR}if}N /cp{pop pop showpage pm restore}N end}if}
if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{
DVImag dup scale}if}N /psfts{S 65536 div N}N /startTexFig{/psf$SavedState save
N userdict maxlength dict begin /magscale false def normalscale currentpoint
TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx
sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx
psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N
/erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{psf$llx psf$lly
psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll
S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end
psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave
normalscale currentpoint TR @SpecialDefaults}N /@setspecial{CLIP{newpath 0 0
moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR
hsc vsc scale ang rotate BBcalc{rwi urx llx sub div dup scale llx neg lly neg
TR}if /showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{grestore
clear SpecialSave restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B
/li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1
setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY
moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix
currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix
setmatrix}N end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 2 82 df<03FFFF0003FFFFC0003E03E0003C00F0
003C00F0007C00F0007C00F0007800F0007800F000F800E000F801E000F001C000F0038001F00F
0001FFFE0001FFF00001E0000003E0000003E0000003C0000003C0000007C0000007C000000780
0000078000000F800000FFF80000FFF800001C1C7E9B1B>80 D<0003F800001FFE00007C0F8000
F003C003C003C0078001E0070000E00E0000F01E0000F03C0000F03C0000F0780000F0780000F0
780000F0F00001E0F00001E0F00001E0F00003C0F00003C0F0000780F0000700703C0F00787E1E
0038E63C003CC3F0001FC3E00007FF800001FF010000030100000303000003060000038E000003
FC000003FC000003F8000001F0001C247E9B21>I E /Fb 72 126 df<60F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F06000000000F0F0F0F00419779816>33 D<03870003870003870003870003870003
87007FFFC0FFFFE0FFFFE0070E00070E000F1E000F1E000E1C000E1C000E1C00FFFFE0FFFFE07F
FFC01C38001C38001C38001C38001C38001C380013197F9816>35 D<3803807C0380FE0780FE07
80EE0F00EE0F00EE0E00EE1E00FE1E00FE3C007C3C0038780000780000700000F00000F00001E0
0001E00001C00003C00003C0000783800787C00F0FE00F0EE00E0EE01E0EE01E0EE03C0EE03C0F
E03807C038038013207F9C16>37 D<03C0000FE0001FF0001EF0001C70001C70001C70001CF7E0
1DF7E01FE7E01FCF000F8F001F8E003F1E007F1E007F9C00F7FC00F3FC00E1F800E1F9C0F0F1C0
F1F9C07FFFC07FFFC01F0F0013197F9816>I<00E001E007C007800F001E003C00380078007000
70007000F000E000E000E000E000E000E000E000F000700070007000780038003C001E000F0007
8007C001E000E00B217A9C16>40 D<E000F0007C003C001E000F000780038003C001C001C001C0
01E000E000E000E000E000E000E000E001E001C001C001C003C0038007800F001E003C007C00F0
00E0000B217C9C16>I<01C00001C00001C00001C00071C700F9CF807FFF001FFC0007F00007F0
001FFC007FFF00F9CF8071C70001C00001C00001C00001C00011127E9516>I<01C00001C00001
C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF8001C00001C00001C00001C00001
C00001C00001C00001C00011137E9516>I<387C7E7E3E0E1E3CFCF860070B798416>I<FFFF80FF
FF80FFFF8011037E8D16>I<70F8F8F8700505788416>I<000380000380000780000780000F0000
0F00001E00001E00003C00003C0000780000780000F00000F00001E00001E00003C00003C00007
80000780000F00000F00001E00001E00003C00003C0000780000780000F00000F00000E00000E0
000011207E9C16>I<03E0000FF8001FFC001E3C00380E00780F00700700700700E00380E00380
E00380E00380E00380E00380E00380E00380F00780700700700700780F003C1E001E3C001FFC00
0FF80003E00011197E9816>I<0380038007800F801F80FF80FF80F38003800380038003800380
0380038003800380038003800380038003807FFC7FFC7FFC0E197C9816>I<0FF0001FFC007FFE
00783F00F00F00F00780F00380F00380000380000380000780000700000F00001E00003C000078
0000F00003E00007C0000F00001E03803C0380FFFF80FFFF80FFFF8011197E9816>I<70F8F8F8
70000000000000000070F8F8F8700512789116>58 D<387C7C7C380000000000000000387C7C7C
3C1C3C38F8F0600618799116>I<000380000F80001F80007E0000FC0003F00007E0001F80003F
0000FC0000F80000FC00003F00001F800007E00003F00000FC00007E00001F80000F8000038011
157E9616>I<7FFF00FFFF80FFFF80000000000000000000000000000000FFFF80FFFF807FFF00
110B7E9116>I<E00000F80000FC00003F00001F800007E00003F00000FC00007E00001F80000F
80001F80007E0000FC0003F00007E0001F80003F0000FC0000F80000E0000011157E9616>I<1F
E03FF87FFCF83EF00EF00EF01E007C00F801F003E003C003800380038003800300000000000000
000007800780078007800F197D9816>I<00E00001F00001F00001B00001B00003B80003B80003
B800031800071C00071C00071C00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C
07001C0700FF1FE0FF1FE0FF1FE013197F9816>65 D<FFF800FFFE00FFFF001C0F001C07801C03
801C03801C03801C07801C07001FFF001FFE001FFE001C1F001C03801C03C01C01C01C01C01C01
C01C01C01C03C01C0780FFFF80FFFF00FFFC0012197F9816>I<03F18007FF800FFF801F0F803C
0780780780780380700380F00000E00000E00000E00000E00000E00000E00000E00000F0000070
03807803807803803C07801F0F000FFE0007FC0003F00011197E9816>I<FFF800FFFE00FFFF00
1C0F001C07801C03C01C01C01C01C01C01E01C00E01C00E01C00E01C00E01C00E01C00E01C00E0
1C00E01C01C01C01C01C03C01C07801C0F80FFFF00FFFE00FFF8001319809816>I<FFFFC0FFFF
C0FFFFC01C01C01C01C01C01C01C01C01C00001C00001C1C001C1C001FFC001FFC001FFC001C1C
001C1C001C00001C00E01C00E01C00E01C00E01C00E0FFFFE0FFFFE0FFFFE013197F9816>I<FF
FFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001FFC001FFC001F
FC001C1C001C1C001C00001C00001C00001C00001C00001C0000FFC000FFC000FFC00013197F98
16>I<03F3000FFF001FFF003F1F003C0F00780F00780700700700F00000E00000E00000E00000
E00000E07FC0E07FC0E07FC0F00700700700780F00780F003C0F003F1F001FFF000FFF0003E700
12197E9816>I<FFFEFFFEFFFE0380038003800380038003800380038003800380038003800380
038003800380038003800380FFFEFFFEFFFE0F197D9816>73 D<FFC000FFC000FFC0001C00001C
00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C
00401C00E01C00E01C00E01C00E0FFFFE0FFFFE0FFFFE013197F9816>76
D<FC07E0FE0FE0FE0FE03A0B803B1B803B1B803B1B803B1B803BBB803BBB8039B38039B38039B3
8039B38039F38038E38038E380380380380380380380380380380380FE0FE0FE0FE0FE0FE01319
7F9816>I<FE3FE0FF3FE0FF3FE01D07001D87001D87001D87001DC7001DC7001CC7001CC7001C
E7001CE7001CE7001C67001C67001C77001C77001C37001C37001C37001C1700FF9F00FF9F00FF
8F0013197F9816>I<1FFC003FFE007FFF00780F00F00780E00380E00380E00380E00380E00380
E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780F00780780F007FFF00
3FFE001FFC0011197E9816>I<FFF800FFFE00FFFF001C0F801C03801C03C01C01C01C01C01C01
C01C03C01C03801C0F801FFF001FFE001FF8001C00001C00001C00001C00001C00001C00001C00
00FF8000FF8000FF800012197F9816>I<1FFC003FFE007FFF00780F00F00780E00380E00380E0
0380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E0E380E1E380F0
F780787F007FFF003FFE001FFC00001C00001E00000E00000F00000700000700111F7E9816>I<
FFE000FFF800FFFC001C1E001C0F001C07001C07001C07001C07001C0F001C1E001FFC001FF800
1FFC001C3E001C1E001C0E001C0E001C0E001C0E701C0E701C0FF0FF8FF0FF87E0FF83C014197F
9816>I<0FF3001FFF007FFF00781F00F00F00E00700E00700E00000F000007800007F80003FF8
000FFC0000FE00000F00000780000380000380E00380E00380F00780F81F00FFFE00FFFC00CFF8
0011197E9816>I<FFFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0E0E000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE000F
FE000FFE0013197F9816>I<FF8FF8FF8FF8FF8FF81C01C01C01C01C01C01C01C01C01C01C01C0
1C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01E03C01E03C00F07800F8F80
07FF0003FE0000F8001519809816>I<FF1FE0FF1FE0FF1FE03803801C07001C07001C07001C07
000E0E000E0E000E0E000E0E00060C00071C00071C00071C00071C0003180003B80003B80003B8
0001B00001F00001F00000E00013197F9816>I<FE0FE0FE0FE0FE0FE07001C07001C07001C030
018038038038038038038038E38039F38039F38039B38019B30019B30019B30019B30019B30019
B3001913001B1B000F1E000F1E000E0E0013197F9816>I<7F3F807F3F807F3F800E1E000E1C00
073C0007380003B80003F00001F00001E00000E00001E00001F00003F00003B80007B800071C00
071C000E0E000E0E001C0700FF1FE0FF1FE0FF1FE013197F9816>I<FFF0FFF0FFF0E000E000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000FFF0FFF0FFF00C20789C16>91 D<FFF0FFF0FFF00070007000700070007000
700070007000700070007000700070007000700070007000700070007000700070007000700070
0070FFF0FFF0FFF00C207F9C16>93 D<FFFF80FFFF80FFFF8011037E7E16>95
D<1FE0007FF8007FFC00783C00301E00000E00007E000FFE003FFE007FCE00F80E00E00E00E00E
00F01E00F83E007FFFE03FFFE01FC3E013127E9116>97 D<FE0000FE0000FE00000E00000E0000
0E00000E00000E7E000FFF800FFFC00FC7E00F01E00F00F00E00F00E00700E00700E00700E0070
0F00F00F00E00F81E00FC7C00FFFC00FFF800E7E001419809816>I<03FC0FFE1FFE3E1E780C70
00F000E000E000E000E000F00070077C073E1F1FFE0FFC03F010127D9116>I<007F00007F0000
7F0000070000070000070000070007E7001FFF003FFF003E3F00780F00700F00F00700E00700E0
0700E00700E00700F00F00F00F00781F007E3F003FFFF01FF7F007E7F014197F9816>I<07E01F
F83FFC7C3E781FF00FF007FFFFFFFFFFFFE000F000F007780F7E1F3FFE0FFC03F010127D9116>
I<001F00007F8000FF8001E78001C30001C00001C000FFFF00FFFF00FFFF0001C00001C00001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF007FFF007FFF001119
7F9816>I<03E7C00FFFE01FFFE01E3CE03C1E00380E00380E00380E003C1E001E3C001FFC003F
F8003BE0003800003C00001FFE003FFF807FFFC07807C0F001E0E000E0E000E0E000E0F001E07E
0FC03FFF801FFF0007FC00131C7F9116>I<FE0000FE0000FE00000E00000E00000E00000E0000
0E7E000FFF000FFF800FC7800F03800F03800E03800E03800E03800E03800E03800E03800E0380
0E03800E0380FFE7F8FFE7F8FFE7F81519809816>I<03C003C003C003C000000000000000007F
C07FC07FC001C001C001C001C001C001C001C001C001C001C001C001C0FFFFFFFFFFFF101A7D99
16>I<FE0000FE0000FE00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E1F000E3E00
0E7C000EF8000FF0000FF8000FFC000FBC000F1E000E1F000E0F800E0780FFCFF0FFCFF0FFCFF0
1419809816>107 D<FFC000FFC000FFC00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF80
FFFF80FFFF8011197E9816>I<FBC780FFEFC0FFFFE03E7CE03C78E03870E03870E03870E03870
E03870E03870E03870E03870E03870E03870E0FE7CF8FE7CF8FE7CF81512809116>I<FE7E00FF
FF00FFFF800FC7800F03800F03800E03800E03800E03800E03800E03800E03800E03800E03800E
0380FFE7F8FFE7F8FFE7F81512809116>I<03E0000FF8001FFC003C1E00780F00700700E00380
E00380E00380E00380E00380F00780700700780F003C1E001FFC000FF80003E00011127E9116>
I<FE7E00FFFF80FFFFC00FC7E00F01E00F00F00E00F00E00700E00700E00700E00700F00F00F00
E00F81E00FC7C00FFFC00FFF800E7E000E00000E00000E00000E00000E00000E0000FFE000FFE0
00FFE000141B809116>I<07E7001FF7003FFF007C3F00781F00F00F00F00F00E00700E00700E0
0700E00700F00F00F00F00781F007C3F003FFF001FF7000FC70000070000070000070000070000
0700000700007FF0007FF0007FF0141B7E9116>I<FF1FC0FF7FE0FFFFE007F1E007E0C007C000
078000078000070000070000070000070000070000070000070000FFFC00FFFC00FFFC0013127F
9116>I<1FEC3FFC7FFCF03CE01CE01CF8007FC03FF007FC003EE00EE00EF00EF83EFFFCFFF8CF
F00F127D9116>I<070000070000070000070000070000FFFF00FFFF00FFFF0007000007000007
0000070000070000070000070000070100070380070380070780078F8003FF0003FE0000F80011
177F9616>I<FE3F80FE3F80FE3F800E03800E03800E03800E03800E03800E03800E03800E0380
0E03800E03800E07800F0F800FFFF807FFF803F3F81512809116>I<FF1FE0FF1FE0FF1FE01C07
001E0F000E0E000E0E000E0E00071C00071C00071C00071C0003B80003B80003B80001F00001F0
0000E00013127F9116>I<FFBFE0FFBFE0FFBFE038038038038038038038038038E38019F30019
F30019B3001DB7001DB7001DB7001DB7000F1E000F1E000F1E0013127F9116>I<7F3FC07F3FC0
7F3FC00F1C00073C0003B80003F00001F00000E00001E00001F00003B800073C00071C000E0E00
FF3FE0FF3FE0FF3FE013127F9116>I<FF9FE0FF9FE0FF9FE01C07000E07000E0E000E0E00070E
00071C00071C00039C00039C0003980001B80001B80000F00000F00000F00000E00000E00000E0
0001C00079C0007BC0007F80003F00003C0000131B7F9116>I<7FFFC07FFFC07FFFC0700F8070
1F00703E00007C0000F80001F00003E00007C0000F80001F01C03E01C07C01C0FFFFC0FFFFC0FF
FFC012127F9116>I<003F8000FF8001FF8001E00001C00001C00001C00001C00001C00001C000
01C00001C00001C00003C000FF8000FF0000FF0000FF800003C00001C00001C00001C00001C000
01C00001C00001C00001C00001C00001E00001FF8000FF80003F8011207E9C16>I<FE0000FF80
00FFC00003C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001E00000FF
80007F80007F8000FF8001E00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0003C000FFC000FF8000FE000011207E9C16>125 D E /Fc 22 122 df<7FF0FFE0FFE00C037F
890E>45 D<0E1F1F1E1E00000000000000007878F8F87008127D910C>58
D<0FFC000FFC0FFC000FFC00FC001F8000FC001F8000FC00378000DE00378000DE006F8001DE00
6F80019E00CF00019E00CF00019E018F00018F018F00018F031F00038F031F00030F061E00030F
061E0003078C1E0003078C1E000307983E000707983E000607B03C000607B03C000603E03C0006
03E03C000603C07C001E03C07C00FFE387FFC0FFC387FF80261C7E9B26>77
D<1FFFFFF03FFFFFF03C0781F038078060700780606007806060078060600F8060C00F0060C00F
0060000F0000000F0000000F0000001F0000001E0000001E0000001E0000001E0000001E000000
3E0000003C0000003C0000003C0000003C0000003C0000007C00001FFFE0001FFFE0001C1C7C9B
1E>84 D<03FFFF8007FFFF0007E01F0007803E0007007C00060078000600F8000E01F0000C03E0
000C07C0000007C000000F8000001F0000003E0000007C0000007C000000F80C0001F00C0003E0
180003C0180007C018000F8038001F0030003E0070003E00F0007C03F000FFFFE000FFFFE00019
1C7E9B19>90 D<07F8000FFE000F1F000E07000E0700000700000F0007FF001FFF003F0F007C0E
00F80E00F00E60F01E60F03E60F87EC07FEFC03F8F0013127E9115>97 D<3F00007F00000F0000
0E00000E00000E00000E00000E00001E00001C00001C00001CFE001FFF801F87803E03C03C03C0
3801E03801E03801E03803E07803E07003C07003C0700780700780780F00FC3E00EFFC00C7F000
131D7C9C17>I<01FE07FE0F8F1E0E3C0E3C00780078007800F800F000F0007800780E7C0C3E1C
1FF807E010127E9112>I<0001F80003F80000780000700000700000700000700000F00000F000
00E00000E001FCE007FFE00F87E01E03E03C01C07C01C07801C07801C07803C0F803C0F00380F0
0380F00380780780780F803C3F801FFFE00FE7E0151D7E9C17>I<01F807FE0F1E1E0F3C0F7C07
7FFF7FFF7800F800F000F0007000780E7C0C3E3C1FF807E010127E9112>I<007E7801FFFC03C7
DC0783C00F03C00F03C00F03C00F03C00F0780078F000FFE000DF8001C00001C00001C00001FFE
000FFF803FFFC07C03C07001E07001E0F001C0F001C07807C07C1F803FFE000FF800161B809115
>103 D<07E0000FE00001E00001C00001C00001C00001C00001C00003C000038000038000039F
C003FFE003F1E007C0E00780E00780E00700E00700E00701E00F01E00E01C00E01C00E01C00E01
C01E03C01E03C0FF8FF0FF9FF0141D7F9C17>I<01C003E003E003E003C0000000000000000000
0000001F801F8007800780070007000700070007000F000E000E000E000E000E001E00FF80FF80
0B1D7F9C0C>I<07E00FE001E001C001C001C001C001C003C00380038003800380038007800700
07000700070007000F000E000E000E000E001E001E00FF80FF800B1D7F9C0C>108
D<1F9FC1FC001FFFF7FF0007F0FF0F0007C07C0700078078070007807807000700700700070070
070007007007000F00F00F000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E001E01
E01E00FF8FF8FF80FF8FF8FF8021127F9124>I<00FC0003FF000F07801E03C03C01C03801C078
01E07801E07801E0F003C0F003C0F003C0700380700780780F003C1E001FF80007E00013127E91
15>111 D<0FCFE00FFFF803F8F803E07C03C03C03803E03801E03801E03803E07803E07003C07
003C0700780700F80781F00FC3E00EFFC00E7F000E00000E00001E00001E00001C00001C0000FF
8000FF8000171A809117>I<1FBE1FFE07EF07CE078E07800700070007000F000E000E000E000E
000E001E00FFC0FFC010127F9110>114 D<0600060006000E000E000C001C003C00FFE0FFE01C
003C0038003800380038003800780070C070C070C070C071C073807F003E000B1A7C9910>116
D<FC1F80FC1F803C07803C0780380700380700380700380700380F00780F00700E00700E00700E
00701E00703E0070FE007FFF803F9F8011127C9117>I<1FE3FC3FE7FC03C3E001C38001C70000
EE0000EC0000780000700000780000F80001DC00039E00070E000E07001E0780FF1FF0FF1FF016
127F9116>120 D<0FF1FE0FF1FE03C07801C06001C06001C0C001C1C001C18000E38000E30000
E60000E60000EC00007C0000780000780000700000700000600000600000C00070C000F18000C7
0000FE00007C0000171A809116>I E /Fd 37 125 df<FFE0FFE0FFE0FFE00B047F8A10>45
D<7CFEFEFEFEFE7C07077D860D>I<00600001E0000FE000FFE000F3E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E0007FFF807FFF80111B7D9A18>49 D<07F8003FFF00787F80F81FC0FC
0FC0FC0FE0FC0FE0FC07E07807E0000FE0000FE0000FC0001F80003F00003E00007C0000F00001
E00003C0600780600F00601C00E03FFFC07FFFC0FFFFC0FFFFC0FFFFC0131B7E9A18>I<07F800
1FFF003C3F807C1FC07C0FC07E0FC07C0FC03C1FC0001F80003F80007F0003FC0003F800003F00
001F80000FC0000FE0000FE0780FE0FC0FE0FC0FE0FC0FE0FC0FC0F81FC0783F803FFF000FF800
131B7E9A18>I<000380000780000F80001F80001F80003F80007F8000EF8001CF80038F80070F
80060F800C0F801C0F80380F80700F80E00F80FFFFF8FFFFF8000F80000F80000F80000F80000F
80000F8001FFF801FFF8151B7F9A18>I<003FF00001FFFE0003E01F000F8007C01E0001E01C1F
C0E0387FF07070FC783861F8381861F01F18E1F01F1CC3E01F0CC3E01F0CC3E01F0CC3E01F0CC3
E01F0CC3E01F0CC3E01F0CE1F01F0C61F01F0C61F83F1870FC7FB8387FFFF01C1FC7E01E000000
0F80007C03E007F801FFFFC0003FFC001E1D7D9C25>64 D<001FF06000FFFCE003FC1FE00FE007
E01FC003E01F8001E03F0000E07F0000E07F0000E07E000060FE000060FE000000FE000000FE00
0000FE000000FE000000FE000000FE0000007E0000607F0000607F0000603F0000E01F8000C01F
C001C00FE0078003FC1F0000FFFC00001FF0001B1C7D9B22>67 D<001FF81800FFFE3803FC0FF8
07F003F80FC000F81F8000783F8000787F0000387F0000387E000018FE000018FE000000FE0000
00FE000000FE000000FE000000FE007FFFFE007FFF7E0001F87F0001F87F0001F83F8001F81F80
01F80FE001F807F003F803FE07F800FFFE78001FF818201C7D9B26>71 D<FFFFFFFF07E007E007
E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0
07E007E0FFFFFFFF101C7F9B12>73 D<FFE003FFFFF003FF0FF800300FF800300DFC00300CFE00
300CFF00300C7F80300C3F80300C1FC0300C0FE0300C07F0300C07F8300C03FC300C01FC300C00
FE300C007F300C007FB00C003FF00C001FF00C000FF00C0007F00C0003F00C0003F00C0001F00C
0000F0FFC00070FFC00030201C7E9B25>78 D<003FE00001FFFC0003F07E000FC01F801F800FC0
1F0007C03F0007E07F0007F07E0003F07E0003F0FE0003F8FE0003F8FE0003F8FE0003F8FE0003
F8FE0003F8FE0003F8FE0003F87E0003F07E0003F07F0007F03F0007E03F800FE01F800FC00FC0
1F8003F07E0001FFFC00003FE0001D1C7D9B24>I<FFFFF800FFFFFE000FC03F800FC01F800FC0
0FC00FC00FE00FC00FE00FC00FE00FC00FE00FC00FE00FC00FE00FC00FC00FC01F800FC03F800F
FFFE000FFFF8000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000
0FC000000FC00000FFFC0000FFFC00001B1C7E9B21>I<07F8601FFFE03E0FE07803E07001E0F0
00E0F00060F80060F80000FE0000FFF0007FFE007FFF803FFFC01FFFE007FFE0007FF00007F000
01F00001F0C000F0C000F0E000F0E001E0F001E0FE07C0FFFF80C3FE00141C7D9B1B>83
D<7FFFFFE07FFFFFE0781F81E0701F80E0601F8060E01F8070C01F8030C01F8030C01F8030C01F
8030001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000
1F8000001F8000001F8000001F8000001F8000001F8000001F800007FFFE0007FFFE001C1C7E9B
21>I<FFFC01FF80FFFC01FF800FC000180007E000300007E000300007F000700003F000600003
F800E00001F800C00001FC00C00000FC01800000FC018000007E030000007E030000007F070000
003F060000003F8E0000001F8C0000001FCC0000000FD80000000FD800000007F000000007F000
000007F000000003E000000003E000000001C000000001C00000211C7F9B24>86
D<0FFC003FFF003E1F803E0FC03E07C01C07C00007C003FFC01FFFC07F87C07F07C0FE07C0FC07
C0FC07C0FE0FC07E3FE03FFBF80FE1F815127F9117>97 D<FF0000FF00001F00001F00001F0000
1F00001F00001F00001F00001F00001F00001F3FC01FFFF01FE1F81F80FC1F007C1F007E1F007E
1F007E1F007E1F007E1F007E1F007E1F007E1F00FC1F80FC1FE1F81CFFF0183FC0171D7F9C1B>
I<03FC001FFF003F1F007E1F007E1F00FC0E00FC0000FC0000FC0000FC0000FC0000FC0000FC00
007E01807F03803F87001FFE0003F80011127E9115>I<000FF0000FF00001F00001F00001F000
01F00001F00001F00001F00001F00001F007F9F01FFFF03F0FF07E03F07E01F0FC01F0FC01F0FC
01F0FC01F0FC01F0FC01F0FC01F0FC01F07C01F07E03F03F0FF01FFFFE07F1FE171D7E9C1B>I<
03FC000FFF003F0F803E07C07E03C07C03E0FC03E0FFFFE0FFFFE0FC0000FC0000FC00007C0000
7E00603F00E01FC3C00FFF8003FE0013127F9116>I<07F9F01FFFF83E1F787C0FB87C0F807C0F
807C0F807C0F807C0F803E1F003FFE0037F8007000007000007800003FFF803FFFE01FFFF07FFF
F0F801F8F000F8F00078F00078F800F87E03F03FFFE007FF00151B7F9118>103
D<1E003F007F007F007F003F001E0000000000000000000000FF00FF001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E>105
D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0FF81F0F
F81F03801F0F001F1E001F3C001F78001FF8001FFC001FFE001F3E001F1F001F1F801F0F801F07
C01F03E0FFC7FCFFC7FC161D7F9C19>107 D<FF00FF001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B
1D7F9C0E>I<FF1FE0FF00FF7FF3FF801FF1FF8FC01FC0FE07C01F80FC07C01F00F807C01F00F8
07C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00
F807C01F00F807C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF1FE0FF7FF01FF1F81FC0F81F80
F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7
FF18127F911B>I<01FC000FFF801F07C03E03E07C01F07C01F0FC01F8FC01F8FC01F8FC01F8FC
01F8FC01F87C01F07C01F03E03E01F07C00FFF8001FC0015127F9118>I<FF3FC0FFFFF01FE3F8
1F80FC1F00FC1F00FE1F007E1F007E1F007E1F007E1F007E1F007E1F00FE1F00FC1F81FC1FE3F8
1FFFF01F3FC01F00001F00001F00001F00001F00001F0000FFE000FFE000171A7F911B>I<FE3E
00FEFF801EEF801FCF801F8F801F87001F00001F00001F00001F00001F00001F00001F00001F00
001F00001F0000FFF000FFF00011127F9114>114 D<1FF87FF87078E018E018F000FF80FFF07F
F83FF80FFC007CC03CE01CE01CF878FFF8CFE00E127E9113>I<030003000300070007000F000F
003F00FFFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C1F9C0FF803F0
0E1A7F9913>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F01F81F01F81F87F80FFFFF03FCFF18127F911B>I<FFC1FCFFC1FC1F00601F
80E00F80C00FC0C007C18007C18003E30003E30001F60001F60001FE0000FC0000FC0000780000
780000300016127F9119>I<FFC7FCFFC7FC1F81800F838007C70003EE0001FC0001F80000F800
007C0000FE0001DF00039F00070F800607C00C03E0FF07FCFF07FC16127F9119>120
D<FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C18003E30003E30001F60001F60001FE
0000FC0000FC00007800007800003000003000006000706000F8E000C0C000E380007F00003E00
00161A7F9119>I<FFFFFFFFFFFEFFFFFFFFFFFE2F02808B30>124 D E /Fe
38 122 df<E0F0F0F030307060E0C0040A7D830A>44 D<FF80FF80FF80090380870C>I<F0F0F0
F004047D830A>I<07C01FF03838701C600C600CE00EE00EE00EE00EE00EE00EE00EE00EE00E60
0C701C701C38381FF007C00F157F9412>48 D<03000F00FF00F700070007000700070007000700
0700070007000700070007000700070007007FF07FF00C157E9412>I<007000F000F001F003F0
077006700E701C70187030707070E070FFFEFFFE007000700070007003FE03FE0F157F9412>52
D<0FE01FF07878701CE01CE00EE00EE00EE00EF01E703E3FFE1FEE020E001C001C703C703870F0
3FE01F800F157F9412>57 D<F0F0F0F0000000000000E0F0F0F030307060E0C004147D8D0A>59
D<00FE3007FF700FC3F01F01F03C00F07C0070780070780030F00030F00000F00000F00000F000
00F00000F000307800307800307C00703C00601F00E00FC3C007FF8000FE0014177E9619>67
D<FFFFE0FFFFE01C01E01C00601C00701C00301C0C301C0C301C0C001C1C001FFC001FFC001C1C
001C0C181C0C181C0C181C00181C00381C00301C00701C00F0FFFFF0FFFFF015177F9618>69
D<FFFFE0FFFFE01C01E01C00601C00701C00301C0C301C0C301C0C001C1C001FFC001FFC001C1C
001C0C001C0C001C0C001C00001C00001C00001C00001C0000FFC000FFC00014177F9617>I<FE
0003F8FF0007F81F0007C01F0007C01B800DC01B800DC019C019C019C019C019C019C018E031C0
18E031C018F061C0187061C0187061C01838C1C01838C1C01838C1C0181D81C0181D81C0180F01
C0180F01C0FF0F0FF8FF060FF81D177F9620>77 D<FC01FEFE01FE1F00301F00301F80301BC030
19C03019E03018F030187030187830183C30181E30180E30180F301807B01803B01803F01801F0
1800F01800F0FF0070FF003017177F961A>I<FFFC00FFFF801C03C01C01E01C00F01C00F01C00
F01C00F01C01E01C03C01FFF801FFE001C0F801C03801C01C01C01C01C01C01C01E01C01E01C01
E31C01F3FF80FFFF807E18177F961A>82 D<0FCC3FFC787CF03CE01CE00CE00CF000F8007F003F
F01FF801FC003C001E000EC00EC00EE00EF01CF83CFFF8CFE00F177E9614>I<FF81FEFF81FE1C
00301C00301C00301C00301C00301C00301C00301C00301C00301C00301C00301C00301C00301C
00301C00301C00700E00600F00E00783C003FF8000FE0017177F961A>85
D<FF07FC7F80FF07FC7F801C01E00E001C01E00C001C03E00C000E037018000E037018000E0370
18000E0638380007063830000706383000070C1C3000038C1C6000038C1C6000039C1E600001D8
0EC00001D80EC00001D80EC00001F007C00000F007800000F007800000E0038000006003000021
177F9624>87 D<1FC03FF038F8103800781FF87FF8F838F038E03BE03BF8FB7FFE3F9C100E7F8D
12>97 D<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001DFE001FFF001F0F
801C03801C03C01C01C01C01C01C01C01C01C01C03C01E03801F0F801BFF0018FC001217809614
>I<0FF01FF87C387010F000E000E000E000E000F00078187C381FF00FE00D0E7F8D10>I<007E00
007E00000E00000E00000E00000E00000E00000E00000E000FEE003FFE007C3E00700E00F00E00
E00E00E00E00E00E00E00E00F00E00701E007C3E003FFFC00FCFC012177F9614>I<0FC03FF078
707038FFF8FFF8E000E000E000F00070187C381FF00FE00D0E7F8D10>I<03E007F00F701E701C
001C001C001C001C00FF80FF801C001C001C001C001C001C001C001C001C001C00FF80FF800C17
80960B>I<0FBF3FFF38E3707070707070707038E03FE07F8070007FF03FFC7FFCF03EE00EE00E
F01E783C3FF80FE010157F8D12>I<FC0000FC00001C00001C00001C00001C00001C00001C0000
1C00001CFC001FFE001F0F001E07001C07001C07001C07001C07001C07001C07001C07001C0700
FF9FE0FF9FE01317809614>I<3C3C3C3C00000000007C7C1C1C1C1C1C1C1C1C1C1CFFFF081780
960A>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C7F801C7F801C7C
001CF0001DE0001FC0001FE0001EF0001CF8001C78001C3C001C1E00FF3FC0FF3FC01217809613
>107 D<FC00FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
001C001C001C00FF80FF80091780960A>I<FCFC3F00FFFEFF801F0FC3C01E0781C01C0701C01C
0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7F8FF9FE7F81D0E808D
1E>I<FCFC00FFFE001F0F001E07001C07001C07001C07001C07001C07001C07001C07001C0700
FF9FE0FF9FE0130E808D14>I<07C01FF03838701C600CE00EE00EE00EE00EE00E701C38381FF0
07C00F0E7F8D12>I<FDFE00FFFF001F0F801C07801C03C01C01C01C01C01C01C01C01C01C03C0
1E07801F0F801FFF001CFC001C00001C00001C00001C0000FF8000FF80001214808D14>I<FDF0
FFF81F381E101E001C001C001C001C001C001C001C00FF80FF800D0E808D0E>114
D<3FC07FC0F1C0E0C0F000FF007FC03FE003E0C0E0E0E0F1E0FFC0DF800B0E7F8D0E>I<180018
001800180038007800FF80FF8038003800380038003800380038C038C038C03DC03F801F000A14
7F930E>I<FC3F00FC3F001C07001C07001C07001C07001C07001C07001C07001C07001C0F001E
1F001FFFE007E7E0130E808D14>I<FE3FFE3F381C1C181C180E300E300E700760076003C003C0
03C00180100E7F8D13>I<FE3FFE3F381C1C181C180E300E300E700760076003C003C003C00180
01800300E300E600FE00780010147F8D13>121 D E /Ff 1 4 df<0C000C008C40EDC07F801E00
7F80EDC08C400C000C000A0B7D8B10>3 D E /Fg 76 124 df<003F1F8001FFFFC003C3F3C007
83E3C00F03E3C00E01C0000E01C0000E01C0000E01C0000E01C0000E01C000FFFFFC00FFFFFC00
0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0
000E01C0000E01C0000E01C0000E01C0007F87FC007F87FC001A1D809C18>11
D<003F0001FF8003C3C00783C00F03C00E03C00E00000E00000E00000E00000E0000FFFFC0FFFF
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C07F87F87F87F8151D809C17>I<003FC001FFC003C3C00783C00F03C00E01C00E01C00E
01C00E01C00E01C00E01C0FFFFC0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF87FCFF8151D809C17>I<003F83F00001
FFDFF80003E1FC3C000781F83C000F01F03C000E01E03C000E00E000000E00E000000E00E00000
0E00E000000E00E00000FFFFFFFC00FFFFFFFC000E00E01C000E00E01C000E00E01C000E00E01C
000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E0
1C000E00E01C000E00E01C007FC7FCFF807FC7FCFF80211D809C23>I<7070F8F8FCFCFCFC7C7C
0C0C0C0C1C1C181838387070F0F060600E0D7F9C15>34 D<70F8FCFC7C0C0C1C183870F060060D
7D9C0C>39 D<01C00380038007000E000C001C001800380038007000700070007000E000E000E0
00E000E000E000E000E000E000E000E000E000E000E00070007000700070003800380018001C00
0C000E0007000380038001C00A2A7D9E10>I<E0007000700038001C000C000E00060007000700
038003800380038001C001C001C001C001C001C001C001C001C001C001C001C001C001C0038003
80038003800700070006000E000C001C00380070007000E0000A2A7E9E10>I<70F8F8F8781818
18383070E060050D7D840C>44 D<FFE0FFE0FFE00B0380890E>I<70F8F8F87005057D840C>I<00
030003000700060006000E000C001C0018001800380030003000700060006000E000C000C001C0
01800380030003000700060006000E000C000C001C001800180038003000700060006000E000C0
00C00010297E9E15>I<07E00FF01C38381C781E700E700EF00FF00FF00FF00FF00FF00FF00FF0
0FF00FF00FF00FF00FF00F700E700E781E381C1C380FF007E0101B7E9A15>I<030007003F00FF
00C700070007000700070007000700070007000700070007000700070007000700070007000700
07000700FFF8FFF80D1B7C9A15>I<0FE03FF878FC603EF01EF81FF80FF80F700F000F001F001E
003E003C007800F001E001C0038007000E031C0338037006FFFEFFFEFFFE101B7E9A15>I<0FE0
3FF8387C783E7C1E781E781E001E003C003C00F807F007E00078003C001E000F000F000F700FF8
0FF80FF81EF01E787C3FF80FE0101B7E9A15>I<001C00001C00003C00007C00007C0000DC0001
DC00039C00031C00071C000E1C000C1C00181C00381C00301C00601C00E01C00FFFFC0FFFFC000
1C00001C00001C00001C00001C00001C0001FFC001FFC0121B7F9A15>I<301C3FFC3FF83FE030
003000300030003000300037E03FF83C3C381E301E000F000F000F000FF00FF00FF00FF01E703E
787C3FF80FE0101B7E9A15>I<01F807FC0F8E1E1E3C1E381E781E78007000F080F7F8FFFCFC1C
F81EF80FF00FF00FF00FF00FF00F700F700F781E381E1E3C0FF807E0101B7E9A15>I<6000007F
FF807FFF807FFF80600700C00600C00E00C01C0000380000300000700000600000E00000C00001
C00001C00003C00003800003800003800007800007800007800007800007800007800007800007
8000111C7E9B15>I<07E01FF83C3C381E701E700E700E780E7C1E7F3C3FF81FF00FF01FFC3DFC
787E703FF00FE00FE007E007E007F00E781E3C3C1FF807E0101B7E9A15>I<07E01FF83C38781C
781EF00EF00EF00FF00FF00FF00FF00FF01F781F383F3FFF1FEF010F000E001E781E781C783C78
7878F03FE01F80101B7E9A15>I<70F8F8F870000000000000000070F8F8F87005127D910C>I<70
F8F8F870000000000000000070F8F8F878181818383070E060051A7D910C>I<00060000000F00
00000F0000000F0000001F8000001F8000001F8000003FC0000033C0000033C0000073E0000061
E0000061E00000E1F00000C0F00000C0F00001C0F8000180780001FFF80003FFFC0003003C0003
003C0007003E0006001E0006001E001F001F00FFC0FFF0FFC0FFF01C1C7F9B1F>65
D<FFFFC0FFFFF00F00F80F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00780FFF
F00FFFE00F00F80F003C0F001E0F001E0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F00
7CFFFFF8FFFFC0181C7E9B1D>I<003FC18001FFF18003F07B800FC01F801F000F801E0007803C
0003807C0003807800038078000180F0000180F0000000F0000000F0000000F0000000F0000000
F0000000F000000078000180780001807C0001803C0003801E0003001F0007000FC00E0003F03C
0001FFF000003FC000191C7E9B1E>I<FFFFC000FFFFF0000F007C000F001E000F000F000F0007
000F0003800F0003C00F0003C00F0001C00F0001E00F0001E00F0001E00F0001E00F0001E00F00
01E00F0001E00F0001E00F0001C00F0001C00F0003C00F0003800F0007800F000F000F001E000F
007C00FFFFF000FFFFC0001B1C7E9B20>I<FFFFFCFFFFFC0F007C0F001C0F000C0F000E0F0006
0F03060F03060F03060F03000F07000FFF000FFF000F07000F03000F03000F03030F03030F0003
0F00060F00060F00060F000E0F001E0F007CFFFFFCFFFFFC181C7E9B1C>I<FFFFF8FFFFF80F00
780F00380F00180F001C0F000C0F000C0F030C0F030C0F03000F03000F07000FFF000FFF000F07
000F03000F03000F03000F03000F00000F00000F00000F00000F00000F0000FFF800FFF800161C
7E9B1B>I<003FC18001FFF18003F07B800FC01F801F000F801E0007803C0003807C0003807800
038078000180F0000180F0000000F0000000F0000000F0000000F0000000F000FFF0F000FFF078
000780780007807C0007803C0007801E0007801F0007800FC00F8003F03F8001FFFB80003FE180
1C1C7E9B21>I<FFF3FFC0FFF3FFC00F003C000F003C000F003C000F003C000F003C000F003C00
0F003C000F003C000F003C000F003C000FFFFC000FFFFC000F003C000F003C000F003C000F003C
000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00FFF3FFC0FFF3
FFC01A1C7E9B1F>I<FFF0FFF00F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F000F00FFF0FFF00C1C7F9B0F>I<1FFF1FFF0078
007800780078007800780078007800780078007800780078007800780078007800780078F878F8
78F878F8F8F1F07FE01F80101C7F9B15>I<FFF800FFF8000F00000F00000F00000F00000F0000
0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00180F00180F0018
0F00180F00380F00300F00700F00F00F01F0FFFFF0FFFFF0151C7E9B1A>76
D<FF8000FF80FFC001FF800FC001F8000FC001F8000DE00378000DE00378000DE00378000CF006
78000CF00678000CF00678000C780C78000C780C78000C780C78000C3C1878000C3C1878000C3C
1878000C1E3078000C1E3078000C1E3078000C0F6078000C0F6078000C0F6078000C07C078000C
07C078000C07C078001E03807800FFC387FF80FFC387FF80211C7E9B26>I<FF00FFC0FF80FFC0
0FC01E000FC00C000FE00C000DE00C000DF00C000CF80C000CF80C000C7C0C000C3C0C000C3E0C
000C1E0C000C1F0C000C0F8C000C078C000C07CC000C03CC000C03EC000C01FC000C00FC000C00
FC000C007C000C007C000C003C001E001C00FFC01C00FFC00C001A1C7E9B1F>I<003F800001FF
F00003E0F80007001C000E000E001C0007003C00078038000380780003C0700001C0F00001E0F0
0001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0780003C0780003C038000380
3C0007801E000F000E000E0007803C0003E0F80001FFF000003F80001B1C7E9B20>I<FFFF80FF
FFE00F00F00F00380F003C0F001E0F001E0F001E0F001E0F001E0F001E0F003C0F00380F00F00F
FFE00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000FFF000FF
F000171C7E9B1C>I<FFFF0000FFFFE0000F00F0000F0038000F003C000F001E000F001E000F00
1E000F001E000F001E000F003C000F0038000F00F0000FFFE0000FFFC0000F03F0000F00F0000F
00F8000F0078000F0078000F0078000F0078000F0078000F0078000F007C300F007E70FFF03FE0
FFF00FC01C1C7E9B1F>82 D<07F1801FFD803C1F80700780700380E00380E00180E00180F00000
F80000FE00007FE0003FFC001FFE000FFF0000FF80000F800007C00003C00001C0C001C0C001C0
E001C0E00380F00780FE0F00DFFE00C7F800121C7E9B17>I<7FFFFFC07FFFFFC0780F03C0700F
01C0600F00C0E00F00E0C00F0060C00F0060C00F0060C00F0060000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F000003FFFC0003FFFC001B1C7F9B1E>I<FFF0FFC0FFF0FFC00F001E00
0F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C
000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F001C000780
18000780380003C0700001F0F00000FFC000003F80001A1C7E9B1F>I<FFE01FF0FFE01FF01F00
07800F0003000F800700078006000780060007C00E0003C00C0003C00C0001E0180001E0180001
E0180000F0300000F0300000F870000078600000786000007CE000003CC000003CC000001F8000
001F8000001F8000000F0000000F0000000F0000000600001C1C7F9B1F>I<FFE0FFE1FFFFE0FF
E1FF1F001E007C0F001E00380F003F00300F003F003007803F00600780678060078067806007C0
6780E003C0C3C0C003C0C3C0C003C0C3C0C001E1C3E18001E181E18001E181E18000F181E30000
F300F30000F300F30000FB00F700007E007E00007E007E00007E007E00003E007C00003C003C00
003C003C00001C0038000018001800281C7F9B2B>I<7FFFF07FFFF07E01F07803E07007C07007
C0600F80600F00601F00603E00003E00007C0000F80000F80001F00001F00003E03007C03007C0
300F80300F00701F00703E00603E00E07C01E0F807E0FFFFE0FFFFE0141C7E9B19>90
D<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0FEFE07297C9E0C>I<18183C3C383870706060E0E0C0C0C0C0F8F8FCFCFCFC7C7C38380E0D7B
9C15>I<FEFE060606060606060606060606060606060606060606060606060606060606060606
06060606FEFE0729809E0C>I<1FE0003FF8003C3C003C1E00180E00000E00001E0007FE003FFE
007E0E00F80E00F80E00F00E60F00E60F81E607C7E607FFFC01FC78013127F9115>97
D<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001CFE001FFF
801F87C01E03E01C01E01C00F01C00F01C00F01C00F01C00F01C00F01C00F01C01E01E01E01E03
C01F87C01BFF8018FE00141D7F9C17>I<07F80FFC3E3C3C3C78187800F000F000F000F000F000
F000780078063C0E3F1C0FF807F00F127F9112>I<001F80001F80000380000380000380000380
00038000038000038000038000038007F3801FFF803E1F807C0780780380F80380F00380F00380
F00380F00380F00380F00380F003807807807C0F803E1F801FFBF007E3F0141D7F9C17>I<07E0
1FF83E7C781C781EF01EFFFEFFFEF000F000F000F000780078063C0E3F1C0FF807F00F127F9112
>I<00FC03FE079E071E0F1E0E000E000E000E000E000E00FFE0FFE00E000E000E000E000E000E
000E000E000E000E000E000E000E000E007FE07FE00F1D809C0D>I<07E7C01FFFC03C3DC0781E
00781E00781E00781E00781E00781E003C3C003FF80037E0007000007000007800003FFC003FFF
007FFF807807C0F003C0E001C0E001C0F003C0F807C07C0F801FFE0007F800121B7F9115>I<FC
0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001CFE001DFF001F
8F801F07801E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
0380FF9FF0FF9FF0141D7F9C17>I<3C007C007C007C003C00000000000000000000000000FC00
FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80FF80091D7F9C0C
>I<01C003E003E003E001C00000000000000000000000000FE00FE000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E0F0E0F1E0F3C0FF807E000B25
839C0D>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C
7FC01C7FC01C3E001C3C001C78001CF0001DE0001FE0001FF0001FF0001E78001C7C001C3C001C
1E001C1E001C0F00FF9FE0FF9FE0131D7F9C16>I<FC00FC001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80FF
80091D7F9C0C>I<FC7F07F000FDFF9FF8001F87F87C001F03F03C001E01E01C001C01C01C001C
01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00
1C01C01C001C01C01C00FF8FF8FF80FF8FF8FF8021127F9124>I<FCFE00FDFF001F8F801F0780
1E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0
FF9FF014127F9117>I<03F0000FFC001E1E00380700780780700380F003C0F003C0F003C0F003
C0F003C0F003C07003807807803807001E1E000FFC0003F00012127F9115>I<FCFE00FFFF801F
87C01E03E01C01E01C01F01C00F01C00F01C00F01C00F01C00F01C00F01C01E01E01E01E03C01F
8FC01FFF801CFE001C00001C00001C00001C00001C00001C0000FF8000FF8000141A7F9117>I<
07F1801FF9803F1F803C0F80780780780380F00380F00380F00380F00380F00380F00380F80380
7807807C0F803E1F801FFB8007E380000380000380000380000380000380000380001FF0001FF0
141A7F9116>I<FDF0FFF81F781E781E301C001C001C001C001C001C001C001C001C001C001C00
FFC0FFC00D127F9110>I<1FB07FF0F0F0E070E030F030F8007FC07FE01FF000F8C078C038E038
F078F8F0FFF0CFC00D127F9110>I<0C000C000C000C000C001C001C003C00FFE0FFE01C001C00
1C001C001C001C001C001C001C301C301C301C301C301E700FE007C00C1A7F9910>I<FC1F80FC
1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C07801C
0F801E1F800FFFF007F3F014127F9117>I<FF0FE0FF0FE01C07801C07000E06000E06000E0600
070C00070C00071C0003980003980003F80001F00001F00000E00000E00000E00013127F9116>
I<FF3FCFE0FF3FCFE03C0F07801C0F03001C1F03000E1B06000E1B86000E1B86000E318E000731
CC000731CC000760CC0003E0F80003E0F80003E0F80001C0700001C0700001C070001B127F911E
>I<7F8FF07F8FF00F0F80070F00038E0001DC0001D80000F00000700000780000F80001DC0003
8E00030E000707001F0780FF8FF8FF8FF81512809116>I<FF0FE0FF0FE01C07801C07000E0600
0E06000E0600070C00070C00071C0003980003980003F80001F00001F00000E00000E00000E000
00C00000C00000C000F18000F18000C700007E00003C0000131A7F9116>I<7FFC7FFC783C7078
60F061E061E063C00780078C0F0C1E0C1E1C3C187818F078FFF8FFF80E127F9112>I<FFFFF0FF
FFF01402808B15>I E /Fh 41 122 df<FFFCFFFCFFFCFFFCFFFC0E057F8D13>45
D<00180000780001F800FFF800FFF80001F80001F80001F80001F80001F80001F80001F80001F8
0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
0001F80001F80001F80001F8007FFFE07FFFE013207C9F1C>49 D<03FC001FFF803C1FC0700FE0
FC07F0FE03F0FE03F8FE03F8FE01F87C01F83803F80003F80003F00007F00007E0000FC0000F80
001F00003E00007C0000F80001F01801C0180380180700180E00381FFFF03FFFF07FFFF0FFFFF0
FFFFF0FFFFF015207D9F1C>I<01FF0007FFC01F07E01E03F03F03F83F01F83F81F83F01F83F03
F80E03F80003F00007F0000FE0001F8001FF0001FF000007E00003F80001FC0000FC0000FE0000
FE7C00FEFE00FEFE00FEFE00FEFE00FCFE01FC7803F83E07F01FFFE003FF0017207E9F1C>I<00
00E00001E00003E00003E00007E0000FE0001FE0001FE00037E00077E000E7E001C7E00187E003
07E00707E00E07E00C07E01807E03807E07007E0E007E0FFFFFEFFFFFE0007E00007E00007E000
07E00007E00007E00007E000FFFE00FFFE17207E9F1C>I<1800601E03E01FFFE01FFFC01FFF80
1FFF001FFC001BE00018000018000018000018000019FE001FFF801F0FC01C07E01803F00003F0
0003F80003F80003F87803F8FC03F8FC03F8FC03F8FC03F8FC03F06007F0780FE03C1FC01FFF00
07FC0015207D9F1C>I<003FC001FFE003F07007C0F80F81F81F01F83E01F83E01F87E00F07C00
007C0000FC0800FCFFC0FDFFF0FF81F8FF00F8FE007CFE007CFE007EFC007EFC007EFC007EFC00
7E7C007E7C007E7E007E3E007C3E00FC1F01F80FC3F007FFC000FF0017207E9F1C>I<60000078
00007FFFFE7FFFFE7FFFFE7FFFFC7FFFF87FFFF0E000E0E000C0C001C0C00380C00700000E0000
0E00001C00003C0000380000780000780000F80000F00001F00001F00001F00001F00003F00003
F00003F00003F00003F00003F00003F00001E00017227DA11C>I<000070000000007000000000
F800000000F800000000F800000001FC00000001FC00000003FE00000003FE00000003FE000000
06FF000000067F0000000E7F8000000C3F8000000C3F800000183FC00000181FC00000381FE000
00300FE00000300FE00000600FF000006007F00000E007F80000FFFFF80000FFFFF800018001FC
00018001FC00038001FE00030000FE00030000FE000600007F000600007F00FFE00FFFF8FFE00F
FFF825227EA12A>65 D<0007FE0180003FFFC38000FF01E78003FC007F8007F0001F800FE0000F
801FC0000F801F800007803F800003807F000003807F000003807F00000180FE00000180FE0000
0000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00
0000007F000001807F000001807F000001803F800003801F800003001FC00007000FE0000E0007
F0001C0003FC00380000FF01F000003FFFC0000007FF000021227DA128>67
D<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F0003F0007F0001F8007F0000FC007F000
07E007F00007E007F00007F007F00003F007F00003F007F00003F007F00003F807F00003F807F0
0003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F007
F00003F007F00003F007F00007E007F00007E007F0000FC007F0001F8007F0003F0007F0007E00
07F003FC00FFFFFFF000FFFFFF800025227EA12B>I<FFFFFFFCFFFFFFFC07F000FC07F0003C07
F0001C07F0000C07F0000E07F0000E07F0000607F0180607F0180607F0180607F0180007F03800
07F0780007FFF80007FFF80007F0780007F0380007F0180007F0180007F0180307F0180307F000
0307F0000607F0000607F0000607F0000E07F0000E07F0001E07F0003E07F001FCFFFFFFFCFFFF
FFFC20227EA125>I<0003FF00C0003FFFE1C000FF80F3C001FC003FC007F0001FC00FE0000FC0
1FC00007C01F800003C03F800001C07F000001C07F000001C07F000000C0FE000000C0FE000000
00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000FFFFCFE000F
FFFC7F00001FC07F00001FC07F00001FC03F80001FC01F80001FC01FC0001FC00FE0001FC007F0
003FC001FC003FC000FF80FFC0003FFFE3C00003FF00C026227DA12C>71
D<FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
0003F80003F80003F80003F80003F80003F800FFFFE0FFFFE013227FA115>73
D<FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
F0000007F0000007F0001807F0001807F0001807F0001807F0003807F0003807F0007007F00070
07F000F007F001F007F007F0FFFFFFF0FFFFFFF01D227EA122>76 D<FFF000000FFFFFF800001F
FF07F800001FE006FC000037E006FC000037E006FC000037E0067E000067E0067E000067E0063F
0000C7E0063F0000C7E0061F800187E0061F800187E0060FC00307E0060FC00307E0060FC00307
E00607E00607E00607E00607E00603F00C07E00603F00C07E00601F81807E00601F81807E00601
F81807E00600FC3007E00600FC3007E006007E6007E006007E6007E006003FC007E006003FC007
E006001F8007E006001F8007E006001F8007E006000F0007E0FFF00F00FFFFFFF00600FFFF3022
7EA135>I<FFFFFE0000FFFFFFC00007F007F00007F001F80007F000FC0007F0007E0007F0007F
0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FC0007F001
F80007F007F00007FFFFC00007FFFFC00007F01FF00007F007F80007F003F80007F003FC0007F0
01FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0607
F001FE0E07F000FF1EFFFF807FFCFFFF800FF827227EA12A>82 D<7FFFFFFF807FFFFFFF807E03
F80F807803F807807003F803806003F80180E003F801C0E003F801C0C003F800C0C003F800C0C0
03F800C0C003F800C00003F800000003F800000003F800000003F800000003F800000003F80000
0003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F800
000003F800000003F800000003F800000003F800000003F800000003F8000003FFFFF80003FFFF
F80022227EA127>84 D<FFFF800FFEFFFF800FFE07F00000C007F80000C003F800018003F80001
8001FC00030001FC00030001FE00070000FE00060000FF000600007F000C00007F800C00003F80
1800003F801800003FC03800001FC03000001FE03000000FE06000000FF060000007F0C0000007
F0C0000007F9C0000003F980000003FD80000001FF00000001FF00000000FE00000000FE000000
00FE000000007C000000007C00000000380000000038000027227FA12A>86
D<FFFF0FFFF01FFEFFFF0FFFF01FFE0FF000FF0000E007F0007F0000C007F0007F0000C003F800
7F80018003F8003F80018003FC003F80038001FC003FC0030001FC003FC0030000FE007FE00600
00FE006FE0060000FF006FE00600007F00C7F00C00007F00C7F00C00007F80C7F81C00003F8183
F81800003F8183F81800001FC383FC3000001FC301FC3000001FE301FC3000000FE600FE600000
0FE600FE6000000FF600FFE0000007FC007FC0000007FC007FC0000003FC007F80000003F8003F
80000003F8003F80000001F0001F00000001F0001F00000000F0001E00000000E0000E00000000
E0000E000037227FA13A>I<07FE001FFF803F0FC03F07E03F07F03F03F01E03F00003F00003F0
01FFF00FFFF03FE3F07F03F07E03F0FE03F0FC03F0FC03F0FC07F0FE0FF07F1FF83FFDFF0FF0FF
18167E951B>97 D<FF800000FF8000001F8000001F8000001F8000001F8000001F8000001F8000
001F8000001F8000001F8000001F8000001F8000001F8FE0001FBFFC001FF07E001FC03F001F80
1F801F801F801F800F801F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F
800FC01F800F801F801F801F801F001FC03F001FF0FE001E7FF8001C1FE0001A237EA21F>I<01
FF8007FFE01FC3F03F03F03E03F07E03F07C01E0FC0000FC0000FC0000FC0000FC0000FC0000FC
0000FC00007E00007E00003F00303F80701FE1E007FFC001FF0014167E9519>I<0003FE000003
FE0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000
007E0000007E0001FE7E0007FFFE001FC3FE003F00FE003E007E007E007E007C007E00FC007E00
FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E007C007E007E007E003E00FE
003F01FE001F83FE000FFF7FC001FC7FC01A237EA21F>I<01FE0007FF801F87E03F03E03E01F0
7E00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC0000FC00007E00007E00003F0018
1F80380FE0F007FFE000FF8015167E951A>I<003F8001FFC003F7E007E7E007E7E00FC7E00FC3
C00FC0000FC0000FC0000FC0000FC0000FC000FFFC00FFFC000FC0000FC0000FC0000FC0000FC0
000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0
007FFC007FFC0013237FA211>I<FF800000FF8000001F8000001F8000001F8000001F8000001F
8000001F8000001F8000001F8000001F8000001F8000001F8000001F87F0001F9FFC001FF8FC00
1FF07E001FE07E001FC07E001FC07E001F807E001F807E001F807E001F807E001F807E001F807E
001F807E001F807E001F807E001F807E001F807E001F807E001F807E00FFF1FFC0FFF1FFC01A23
7EA21F>104 D<1F003F803F803F803F803F801F000000000000000000000000000000FF80FF80
1F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80FFF0FF
F00C247FA30F>I<FF800000FF8000001F8000001F8000001F8000001F8000001F8000001F8000
001F8000001F8000001F8000001F8000001F8000001F80FF801F80FF801F8078001F80F0001F81
E0001F83C0001F8700001F8E00001FBE00001FFF00001FFF00001FFF80001F9FC0001F8FE0001F
87E0001F87F0001F83F8001F81F8001F80FC001F80FE00FFF1FFC0FFF1FFC01A237EA21E>107
D<FF80FF801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80
1F801F801F801F801F801F801F801F801F801F801F801F801F801F80FFF0FFF00C237FA20F>I<
FF87F80FF000FF9FFC3FF8001FBC7E78FC001FF07FE0FE001FE03FC07E001FC03F807E001FC03F
807E001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E00
1F803F007E001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E001F803F
007E00FFF1FFE3FFC0FFF1FFE3FFC02A167E952F>I<FF87F000FF9FFC001FF8FC001FF07E001F
E07E001FC07E001FC07E001F807E001F807E001F807E001F807E001F807E001F807E001F807E00
1F807E001F807E001F807E001F807E001F807E001F807E00FFF1FFC0FFF1FFC01A167E951F>I<
00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007E
FC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE0017167E951C>I<FF8FE000FF
BFFC001FF0FE001FC03F001F803F801F801F801F801F801F800FC01F800FC01F800FC01F800FC0
1F800FC01F800FC01F800FC01F800FC01F801F801F801F801F803F001FC07F001FF0FE001FFFF8
001F9FE0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000FFF0
0000FFF000001A207E951F>I<FF1F80FF7FC01F77E01FE7E01FC7E01FC7E01F83C01F80001F80
001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8000FFF800FFF8
0013167E9517>114 D<0FFB003FFF007C1F00780700F00300F00300F80000FF0000FFF8007FFC
007FFE001FFF000FFF80007F80C00F80C00F80E00780F00780F80F00FC1F00FFFE00C7F8001116
7E9516>I<00C00000C00000C00000C00001C00001C00003C00007C0000FC0001FC000FFFF00FF
FF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC1800F
C1800FC1800FC1800FC1800FE38007E70003FF0000FC0011207F9F16>I<FF83FE00FF83FE001F
807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E00
1F807E001F807E001F807E001F807E001F80FE001F80FE001F81FE000FC3FE000FFF7FC003FC7F
C01A167E951F>I<FFF01FE0FFF01FE00FC007000FC006000FE00E0007E00C0007F01C0003F018
0003F8180001F8300001F8300000FC600000FC6000007EC000007EC000007FC000003F8000003F
8000001F0000001F0000000E0000000E00001B167F951E>I<FFF07FC0FFF07FC00FC01C0007E0
380007F0700003F8E00001F8C00000FD8000007F0000007F0000003F0000001F8000003FC00000
3FE0000067F00000E3F00001C1F8000381FC000700FE000E007E00FF81FFE0FF81FFE01B167F95
1E>120 D<FFF01FE0FFF01FE00FC007000FC006000FE00E0007E00C0007F01C0003F0180003F8
180001F8300001F8300000FC600000FC6000007EC000007EC000007FC000003F8000003F800000
1F0000001F0000000E0000000E0000000C0000000C00000018000078180000FC380000FC300000
FC60000069C000007F8000001F0000001B207F951E>I E /Fi 51 124 df<0001FC3C00060E67
000C0EC7001C0DC6001C01C0003801C0003803800038038000380380003803800070038007FFFF
F800700700007007000070070000E0070000E00E0000E00E0000E00E0000E00E0001C00E0001C0
1C0001C01C0001C01C0001C01C0003801C00038038000380380003803800030038000700300007
00700006006000C6606000E470C000C8618000703E00002025819C19>11
D<18303C783C783C78040804080810081010202040408081000D0C799C15>34
D<183C3C3C0404080810204080060C779C0D>39 D<183878380808101020404080050C7D830D>
44 D<FFC0FFC0FFC00A037D890F>I<3078F06005047C830D>I<00020006000C001C007C039C00
38003800380038007000700070007000E000E000E000E001C001C001C001C00380038003800380
0780FFF00F1C7C9B15>49 D<003C0000C3000101800201800201C00441C00441C00841C00841C0
0841C01083801083801107000E0600000C0000180000300000C000010000060000080000100100
1002002002004006007E0C00C7F80083F80080E000121D7C9B15>I<09C04017E0801FE0803C61
00302700601A00400600400400800C0080080000180000100000300000600000600000600000C0
0000C00001C0000180000380000380000300000700000700000700000E00000E00000C0000121D
799B15>55 D<003C0000C6000183000303000603000E03000C03801C03801C03001C0300380700
380700380700380F00380E00181E00181E000C6C00079C00001C00001800003800003000006000
E0C000E0C0008180008600007C0000111D7B9B15>57 D<0007F00000180C000060020000800100
010000800200008004078080081840401070204010E01C4020C01C4021C0384043803840438038
4043803840870070808700708087007080830071008300E1008381E20081C6620040783C004000
0000200000002000000018000E000601F00001FF00001A1D7A9C20>64 D<0003F020001E0C6000
3002E000E003C001C001C0038001C0070000C00E0000801E0000801C0000803C0000803C000000
780000007800000078000000F0000000F0000000F0000000F0000000F0000400F0000400F00004
00F0000800700008007000100038002000180040000C0180000706000001F800001B1E7A9C1E>
67 D<01FFFE00003C0780003801C0003801C0003800E0003800E0007000F00070007000700070
007000F000E000F000E000F000E000F000E000F001C001E001C001E001C001E001C001C0038003
C003800380038007800380070007000E0007001C0007003800070070000E01C000FFFF00001C1C
7D9B1F>I<01FFFFC0003C01C0003800C000380080003800800038008000700080007000800070
20800070200000E0400000E0400000E0C00000FFC00001C0800001C0800001C0800001C0800003
810000038000000380000003800000070000000700000007000000070000000F000000FFF00000
1A1C7D9B1B>70 D<01FFCFFE003C01E0003801C0003801C0003801C0003801C000700380007003
80007003800070038000E0070000E0070000E0070000FFFF0001C00E0001C00E0001C00E0001C0
0E0003801C0003801C0003801C0003801C00070038000700380007003800070038000F007800FF
E7FF001F1C7D9B1F>72 D<01FFC0003C0000380000380000380000380000700000700000700000
700000E00000E00000E00000E00001C00001C00001C00001C00003800003800003800003800007
00000700000700000700000F0000FFE000121C7E9B10>I<01FFE0003C00003800003800003800
00380000700000700000700000700000E00000E00000E00000E00001C00001C00001C00001C000
0380080380080380080380100700100700300700600700E00E03C0FFFFC0151C7D9B1A>76
D<01FE0007F8003E000780002E000F00002E001700002E001700002E002700004E002E00004E00
4E00004E004E00004E008E00008E011C00008E011C00008E021C00008E021C0001070438000107
043800010708380001071038000207107000020720700002072070000207407000040740E00004
0780E000040700E0000C0700E0001C0601E000FF861FFC00251C7D9B25>I<01FC03FE001C0070
003C0060002E0040002E0040002E00400047008000470080004700800043808000838100008381
00008181000081C1000101C2000101C2000100E2000100E2000200E40002007400020074000200
74000400380004003800040038000C0018001C001000FF8010001F1C7D9B1F>I<01FFFC00003C
070000380380003801C0003801C0003801C0007003C0007003C0007003C00070038000E0078000
E0070000E00E0000E0380001FFE00001C0000001C0000001C00000038000000380000003800000
03800000070000000700000007000000070000000F000000FFE000001A1C7D9B1C>80
D<01FFF800003C0E00003807000038038000380380003803800070078000700780007007800070
0F0000E00E0000E01C0000E0700000FFC00001C0C00001C0600001C0700001C070000380700003
80700003807000038070000700F0000700F0400700F0400700F0800F007880FFE0790000001E00
1A1D7D9B1E>82 D<000F8400304C00403C00801801001803001803001806001006001006000007
000007000003E00003FC0001FF00007F800007C00001C00001C00000C00000C02000C02000C060
0180600180600300600200F00400CC180083E000161E7D9C17>I<1FFFFFC01C0701C0300E00C0
200E0080600E0080400E0080401C0080801C0080801C0080001C00000038000000380000003800
00003800000070000000700000007000000070000000E0000000E0000000E0000000E0000001C0
000001C0000001C0000001C0000003C000007FFE00001A1C799B1E>I<FF83FF0FF03C007001C0
38007001803800F001003800F0020038017002003801700400380270040038027008001C047008
001C047010001C087010001C087020001C107020001C107040001C207040001C207080001C4071
80001C407100001C807200001D807200001D007400001E007400001E007800001C007800001C00
700000180070000018006000001000600000241D779B29>87 D<FFC00FE00E0007800E0006000F
000400070008000700180007801000038020000380400003C0800001C1800001C1000001E20000
00E4000000EC000000F80000007000000070000000E0000000E0000000E0000000E0000001C000
0001C0000001C0000001C00000038000003FF800001B1C789B1F>89 D<060C0810102020402040
408040808100B160F9F0F9F070E00E0C759C15>92 D<03CC063C0C3C181C3838303870387038E0
70E070E070E070E0E2C0E2C0E261E462643C380F127B9115>97 D<3F00070007000E000E000E00
0E001C001C001C001C0039C03E60383038307038703870387038E070E070E070E060E0E0C0C0C1
C0618063003C000D1D7B9C13>I<01F007080C08181C3838300070007000E000E000E000E000E0
00E008E010602030C01F000E127B9113>I<001F80000380000380000700000700000700000700
000E00000E00000E00000E0003DC00063C000C3C00181C00383800303800703800703800E07000
E07000E07000E07000E0E200C0E200C0E20061E4006264003C3800111D7B9C15>I<01E007100C
1018083810701070607F80E000E000E000E000E000E0086010602030C01F000D127B9113>I<00
03C0000670000C70001C60001C00001C0000380000380000380000380000380003FF8000700000
700000700000700000700000E00000E00000E00000E00000E00001C00001C00001C00001C00001
C000038000038000038000030000030000070000C60000E60000CC00007800001425819C0D>I<
00F3018F030F06070E0E0C0E1C0E1C0E381C381C381C381C383830383038187818F00F70007000
7000E000E0C0C0E1C0C3007E00101A7D9113>I<0FC00001C00001C00003800003800003800003
80000700000700000700000700000E78000E8C000F0E000E0E001C0E001C0E001C0E001C0E0038
1C00381C00381C00383800703880703880707080707100E03200601C00111D7D9C15>I<018003
80010000000000000000000000000000001C002600470047008E008E000E001C001C001C003800
3800710071007100720072003C00091C7C9B0D>I<0FC00001C00001C000038000038000038000
0380000700000700000700000700000E0F000E11000E23800E43801C83001C80001D00001E0000
3F800039C00038E00038E00070E20070E20070E20070E400E06400603800111D7D9C13>107
D<1F800380038007000700070007000E000E000E000E001C001C001C001C003800380038003800
7000700070007000E400E400E400E40068003800091D7C9C0B>I<3C1E0780266318C04683A0E0
4703C0E08E0380E08E0380E00E0380E00E0380E01C0701C01C0701C01C0701C01C070380380E03
88380E0388380E0708380E0710701C0320300C01C01D127C9122>I<3C3C002646004687004707
008E07008E07000E07000E07001C0E001C0E001C0E001C1C00381C40381C403838403838807019
00300E0012127C9117>I<01E007180C0C180C380C300E700E700EE01CE01CE01CE018E038E030
E06060C031801E000F127B9115>I<07870004D98008E0C008E0C011C0E011C0E001C0E001C0E0
0381C00381C00381C00381800703800703000707000706000E8C000E70000E00000E00001C0000
1C00001C00001C00003C0000FF8000131A7F9115>I<3C3C26C2468747078E068E000E000E001C
001C001C001C0038003800380038007000300010127C9112>114 D<01F006080C080C1C18181C
001F001FC00FF007F0007800386030E030C030806060C01F000E127D9111>I<00C001C001C001
C00380038003800380FFE00700070007000E000E000E000E001C001C001C001C00384038403840
388019000E000B1A7D990E>I<1E0300270700470700470700870E00870E000E0E000E0E001C1C
001C1C001C1C001C1C003838803838801838801839001C5900078E0011127C9116>I<1E06270E
470E4706870287020E020E021C041C041C041C0818083808181018200C4007800F127C9113>I<
1E01832703874703874703838707018707010E07010E07011C0E021C0E021C0E021C0E04180C04
181C04181C081C1C100C263007C3C018127C911C>I<070E0019910010E38020E38041C30041C0
0001C00001C000038000038000038000038000070200670200E70400CB04008B080070F0001112
7D9113>I<1E03270747074707870E870E0E0E0E0E1C1C1C1C1C1C1C1C38383838183818381C70
07F00070007000E0E0C0E1C0818047003C00101A7C9114>I<038207C20FEC0838100800100020
0040008001000200040008081008383067F043E081C00F127D9111>I<FFFFC012017C8B15>I
E /Fj 38 122 df<7CFEFEFFFFFF7F030707060E1C3C787008107C9F0F>39
D<7CFEFEFEFEFE7C07077C860F>46 D<00700000F0000FF000FFF000F3F00003F00003F00003F0
0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0
0003F00003F00003F00003F00003F00003F000FFFF80FFFF80111D7C9C1A>49
D<07F8003FFE00787F807C1FC0FE1FC0FE0FE0FE0FE0FE07E07C07E0380FE0000FE0000FC0001F
C0001F80003F00003E00007C0000F80001F00003C0600380600700600E00E01FFFE03FFFC07FFF
C0FFFFC0FFFFC0FFFFC0131D7D9C1A>I<03FC000FFF801F1FC01F0FE03F87E03F87E03F87E03F
8FE03F8FE01F0FC0001F80003F0001FE0001FE00001F800007E00007F00003F03C03F87E03F8FF
03F8FF03F8FF03F8FF03F8FF07F07E07E03E0FE01FFF8003FE00151D7E9C1A>I<0001C00003C0
0007C00007C0000FC0001FC0003FC00077C00067C000C7C00187C00387C00707C00E07C00C07C0
1807C03807C07007C0E007C0FFFFFEFFFFFE000FC0000FC0000FC0000FC0000FC0000FC001FFFE
01FFFE171D7F9C1A>I<3803803FFF803FFF803FFF003FFC003FF8003F80003000003000003000
0030000033F8003FFE003E3F80381FC0300FC0000FE0000FE0000FE07C0FE0FE0FE0FE0FE0FE0F
E0FE0FC0FC0FC0701F803C3F001FFE000FF000131D7D9C1A>I<0FFC003FFF007C1F80F80FC0FC
0FC0FC0FC0FC0FC0FC0FC0781FC0003F80003F00007C0000780000F00000E00000C00000C00000
C00000C00000C00000C00000000000000000000000000003E00007F00007F00007F00007F00007
F00003E00012207D9F19>63 D<0000E000000000E000000001F000000001F000000001F0000000
03F800000003F800000007FC00000007FC0000000FFE0000000CFE0000000CFE000000187F0000
00187F000000307F800000303F800000703FC00000601FC00000601FC00000C01FE00000C00FE0
0001FFFFF00001FFFFF000018007F000030003F800030003F800060003FC00060001FC000E0001
FE00FFE01FFFE0FFE01FFFE0231F7E9E28>65 D<000FFC06007FFF8E01FE03DE03F800FE0FE000
7E1FC0003E1F80001E3F80000E7F00000E7F00000E7F000006FE000006FE000000FE000000FE00
0000FE000000FE000000FE000000FE000000FE0000007F0000067F0000067F0000063F80000E1F
80000C1FC0001C0FE0003803F800F001FF03E0007FFF80000FFC001F1F7D9E26>67
D<FFFFFE0000FFFFFFC00007F007F00007F001F80007F000FC0007F0007E0007F0003F0007F000
3F0007F0001F8007F0001F8007F0001F8007F0001FC007F0001FC007F0001FC007F0001FC007F0
001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001F8007F0001F8007F0001F8007
F0003F0007F0003F0007F0007E0007F000FC0007F001F80007F007F000FFFFFFC000FFFFFE0000
221F7E9E28>I<FFFFFFE0FFFFFFE007F007E007F001E007F000E007F0006007F0007007F00030
07F0003007F0603007F0603007F0600007F0600007F1E00007FFE00007FFE00007F1E00007F060
0007F0600007F0600007F0600007F0000007F0000007F0000007F0000007F0000007F0000007F0
000007F00000FFFFC000FFFFC0001C1F7E9E21>70 D<000FFC0600007FFF8E0001FE03DE0003F8
00FE000FE0007E001FC0003E001F80001E003F80000E007F00000E007F00000E007F00000600FE
00000600FE00000000FE00000000FE00000000FE00000000FE00000000FE007FFFE0FE007FFFE0
FE0000FE007F0000FE007F0000FE007F0000FE003F8000FE001F8000FE001FC000FE000FE000FE
0003F801FE0001FF07FE00007FFF3E00000FFC0600231F7D9E29>I<FFFF80FFFF8007F00007F0
0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000FFFF
80FFFF80111F7F9E14>73 D<FFFFC000FFFFC00007F0000007F0000007F0000007F0000007F000
0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
000007F0000007F0000007F000C007F000C007F000C007F001C007F001C007F001C007F0038007
F0038007F0078007F01F80FFFFFF80FFFFFF801A1F7E9E1F>76 D<FFF000007FF8FFF80000FFF8
07F80000FF0006FC0001BF0006FC0001BF0006FC0001BF00067E00033F00067E00033F00063F00
063F00063F00063F00061F800C3F00061F800C3F00061F800C3F00060FC0183F00060FC0183F00
0607E0303F000607E0303F000603F0603F000603F0603F000603F0603F000601F8C03F000601F8
C03F000600FD803F000600FD803F0006007F003F0006007F003F0006003E003F0006003E003F00
06003E003F00FFF01C07FFF8FFF01C07FFF82D1F7E9E32>I<FFFFFE00FFFFFF8007F00FE007F0
03F007F001F807F001F807F001FC07F001FC07F001FC07F001FC07F001FC07F001F807F001F807
F003F007F00FE007FFFF8007FFFE0007F0000007F0000007F0000007F0000007F0000007F00000
07F0000007F0000007F0000007F0000007F0000007F00000FFFF8000FFFF80001E1F7E9E24>80
D<03FC180FFFB83F07F87C00F87C0078F80038F80038F80018FC0018FE0000FF0000FFF8007FFF
807FFFC03FFFE01FFFF00FFFF803FFF8003FFC0003FC0001FC0000FCC0007CC0007CC0007CE000
78F000F8F800F0FF03F0EFFFC0C1FF00161F7D9E1D>83 D<FFFF003FF8FFFF003FF807F0000380
07F000030007F800070003F800060003FC000E0001FC000C0001FE000C0000FE00180000FF0018
00007F003000007F003000003F806000003F806000003FC0E000001FC0C000001FE1C000000FE1
8000000FF180000007F300000007FB00000003FE00000003FE00000003FE00000001FC00000001
FC00000000F800000000F8000000007000000000700000251F7F9E28>86
D<FFFF1FFFC0FFE0FFFF1FFFC0FFE00FE001FC000E0007F001FC000C0007F001FE000C0007F800
FE000C0003F800FE00180003F800FF00180003FC00FF00380001FC01FF80300001FC01BF803000
00FE01BF80600000FE031FC0600000FF031FC0E000007F031FE0C000007F060FE0C000003F860F
E18000003F8E0FF18000003FCC07F18000001FCC07F30000001FD803FB0000001FF803FF000000
0FF803FE0000000FF001FE00000007F001FC00000007E000FC00000007E000FC00000003E000F8
00000003C0007800000001C00070000000018000300000331F7F9E36>I<07FC001FFF803F0FC0
3F07C03F03E03F03E01E03E00003E001FFE00FFFE03FC3E07E03E0FC03E0F803E0F803E0F803E0
FC07E07E1FE03FFDFE0FF0FE17147F9319>97 D<FF0000FF00001F00001F00001F00001F00001F
00001F00001F00001F00001F00001F00001F1FC01FFFF01FE1F81F807C1F007E1F003E1F003F1F
003F1F003F1F003F1F003F1F003F1F003F1F003F1F003E1F007E1F80FC1FE1F81CFFF0183FC018
207E9F1D>I<03FE000FFF801F8FC03F0FC07E0FC07C0FC0FC0780FC0000FC0000FC0000FC0000
FC0000FC0000FC00007E00007E00603F00E01FC3C00FFF8003FE0013147E9317>I<0007F80007
F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F803FCF80FFFF81F87
F83F01F87E00F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F87C00F87E01
F83E03F81F87F80FFEFF03F8FF18207E9F1D>I<01FF0007FFC01F87E03F01F07E00F07E00F8FC
00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007E00003E00183F00381FC0F007FFE001
FF8015147F9318>I<003F8000FFC001FFE003E7E007E7E007C7E007C3C007C00007C00007C000
07C00007C000FFFC00FFFC0007C00007C00007C00007C00007C00007C00007C00007C00007C000
07C00007C00007C00007C00007C00007C00007C0003FFC003FFC0013207F9F10>I<03FE7C0FFF
FE1F8FDE1F07DE3E03E03E03E03E03E03E03E03E03E01F07C01F8FC01FFF801FFE001800001C00
001E00001FFFC01FFFF00FFFF83FFFFC7C00FEF8003EF0001EF0001EF0001EF8003E7C007C3F01
F81FFFF003FF80171E7F931A>I<FF0000FF00001F00001F00001F00001F00001F00001F00001F
00001F00001F00001F00001F1FC01F7FF01FF1F01FC0F81F80F81F80F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE3FFFFE3FF18207D9F1D>I<
1E003F007F007F007F003F001E00000000000000000000000000FF00FF001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B217EA00E>I<FF00FF001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F00FFE0FFE00B207E9F0E>108 D<FE1FC0FE7FF01EF1F01F
C0F81F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F8FFE3FFFFE3FF18147D931D>110 D<01FF0007FFC01F83F03E00F83E00F87C007C7C
007CFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F83E00F81F83F007FFC001
FF0017147F931A>I<FF1FC0FFFFF01FE1F81F80FC1F007E1F007E1F003F1F003F1F003F1F003F
1F003F1F003F1F003F1F007F1F007E1F007E1F80FC1FE3F81FFFF01F3FC01F00001F00001F0000
1F00001F00001F00001F0000FFE000FFE000181D7E931D>I<FE3F00FEFF801EEFC01FCFC01F8F
C01F8FC01F07801F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00
00FFF000FFF00012147E9316>114 D<0FF63FFE781EE00EE006F006F800FFC07FF87FFC1FFE03
FF003FC00FE007E007F00FFC1EFFFCCFF010147E9315>I<01800180018003800380038007800F
803F80FFFCFFFC0F800F800F800F800F800F800F800F800F800F800F860F860F860F860F860FCC
07FC01F80F1D7F9C14>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F81F01F81F03F81F87F80FFEFF03FCFF18147D931D>I<
FFE07F80FFE07F801F001C000F8018000F80180007C0300007C0300003E0600003E0600001F0C0
0001F0C00001F9C00000F9800000FF8000007F0000007F0000003E0000003E0000001C0000001C
0000001800000018000078300000FC300000FC600000C0E00000E1C000007F8000001E00000019
1D7F931C>121 D E /Fk 1 122 df<03C003C003C003C003C003C003C003C003C0018001800180
FDBFFFFFFFFFFDBF0180018003C003C003C003C003C003C003C003C003C003C003C003C003C003
C003C003C003C003C003C003C003C00180018001800180018001800180102E7DA217>121
D E /Fl 45 122 df<003E00000000FF00000001E700000001C380000001818000000381800000
038180000003818000000381800000038380000003830000000387000000038E00000003CE0000
0001DC00000001F807FF8001F007FF8001E000FC0001E000700003F000600007F000E0000E7800
C0001C7801C000383C038000783C030000701E070000F00F060000F00F0E0000F0079C0000F003
F80000F001F00300F801F003007800F807007C03FC06003F0F3F1C001FFE0FFC0007F803F00021
257EA326>38 D<70F8FCFC7C0C0C0C1C18183870E0E0060F7C840E>44 D<70F8F8F87005057C84
0E>46 D<018003800F80FF80F38003800380038003800380038003800380038003800380038003
800380038003800380038003800380038003800380038003800380FFFEFFFE0F217CA018>49
D<03F8000FFE003C3F00380F807007C06007C0E003E0F803E0F803E0F801E0F801E07003E00003
E00003C00007C00007C0000F80000F00001E00003C0000780000F00000E00001C0000380000700
600E00601C00603800E07000C0FFFFC0FFFFC0FFFFC013217EA018>I<03F8000FFE001E1F0038
0F807007C07807C07C07C07807C07807C00007C00007C0000780000F80001F00003E0003FC0003
F800001E00000F000007800007C00003E00003E07003E0F803E0F803E0F803E0F803E0E007C070
07C0780F803E1F000FFE0003F80013227EA018>I<007E0001FF8003C3C00703C00E03C01E03C0
3C03C0380000780000780000780000702000F3FC00F7FF00FE0F80FC0780F803C0F803C0F801E0
F001E0F001E0F001E0F001E0F001E07001E07001E07801E07801C03803C03C03801E07800F1F00
07FE0003F80013227EA018>54 D<6000007000007FFFE07FFFE07FFFE06001C0E00180C00380C0
0700C00600000E00000C00001C0000380000300000700000700000E00000E00000E00001E00001
E00001C00001C00001C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00013237DA118>I<03F8000FFC001F1E003C07003807807803807003C0F003C0F001C0F001C0
F001E0F001E0F001E0F001E0F001E0F003E07803E07803E03C07E03E0FE01FFDE007F9E00081E0
0001C00003C00003C0000380780780780700780F00781E00787C003FF8000FE00013227EA018>
57 D<000180000003C0000003C0000003C0000007E0000007E0000007E000000FF000000CF000
000CF000001CF800001878000018780000383C0000303C0000303C0000601E0000601E0000601E
0000C00F0000C00F0000C00F0001FFFF8001FFFF8001800780030003C0030003C0030003C00600
01E0060001E0060001E00E0000F01F0001F0FFC00FFFFFC00FFF20237EA225>65
D<FFFFF800FFFFFE0007800F80078007C0078003E0078001E0078001F0078001F0078001F00780
01F0078001F0078001E0078003E0078007C007800F8007FFFF0007FFFE0007801F80078007C007
8003E0078001F0078000F0078000F8078000F8078000F8078000F8078000F8078000F8078001F0
078003F0078003E007800FC0FFFFFF00FFFFFC001D227EA123>I<000FF030007FFC3000FC1E70
03F0077007C003F00F8001F01F0001F01F0000F03E0000F03C0000707C0000707C0000707C0000
30F8000030F8000030F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
00307C0000307C0000307C0000303E0000703E0000601F0000E01F0000C00F8001C007C0038003
F0070000FC1E00007FFC00000FF0001C247DA223>I<FFFFF000FFFFFE0007801F00078007C007
8003C0078001E0078000F0078000F8078000780780007C0780003C0780003C0780003C0780003E
0780003E0780003E0780003E0780003E0780003E0780003E0780003E0780003E0780003C078000
3C0780007C0780007807800078078000F0078001E0078003E0078007C007801F00FFFFFE00FFFF
F8001F227EA125>I<FFFFFFC0FFFFFFC007800FC0078003C0078001C0078000C0078000E00780
00E007800060078060600780606007806060078060000780E0000781E00007FFE00007FFE00007
81E0000780E0000780600007806000078060180780601807800018078000300780003007800030
0780003007800070078000F0078001F0078007E0FFFFFFE0FFFFFFE01D227EA121>I<FFFFFFC0
FFFFFFC007800FC0078003C0078001C0078000C0078000E0078000E00780006007800060078060
600780606007806000078060000780E0000781E00007FFE00007FFE0000781E0000780E0000780
600007806000078060000780600007800000078000000780000007800000078000000780000007
80000007800000FFFE0000FFFE00001B227EA120>I<FFC00003FFFFE00007FF07E00007E007E0
0007E006F0000DE006F0000DE006F0000DE006780019E006780019E006780019E0063C0031E006
3C0031E0063C0031E0061E0061E0061E0061E0061E0061E0060F00C1E0060F00C1E006078181E0
06078181E006078181E00603C301E00603C301E00603C301E00601E601E00601E601E00601E601
E00600FC01E00600FC01E00600FC01E006007801E01F807801E0FFF0783FFFFFF0303FFF28227E
A12D>77 D<FF800FFFFFC00FFF07E001F807E0006007F0006006F0006006F80060067C0060063C
0060063E0060061E0060061F0060060F8060060780600607C0600603C0600603E0600601F06006
00F0600600F86006007C6006007C6006003E6006001E6006001F6006000FE006000FE0060007E0
060003E0060003E0060001E01F8001E0FFF000E0FFF0006020227EA125>I<000FE000007FFC00
00F83E0003E00F80078003C00F0001E00F0001E01E0000F03E0000F83C0000787C00007C7C0000
7C7800003C7800003CF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800
003EF800003E7C00007C7C00007C7C00007C3C0000783E0000F81E0000F00F0001E00F8003E007
C007C003E00F8000F83E00007FFC00000FE0001F247DA226>I<FFFFF000FFFFFC0007803F0007
800F8007800780078003C0078003C0078003E0078003E0078003E0078003E0078003E0078003C0
078003C00780078007800F8007803F0007FFFC0007FFF000078000000780000007800000078000
00078000000780000007800000078000000780000007800000078000000780000007800000FFFC
0000FFFC00001B227EA121>I<FFFFE00000FFFFF8000007803E000007800F0000078007800007
8007C000078003E000078003E000078003E000078003E000078003E000078003E000078007C000
078007800007800F000007803E000007FFF8000007FFF000000780F8000007803C000007801E00
0007801E000007800F000007800F000007800F000007800F800007800F800007800F800007800F
800007800F818007800FC180078007C380FFFC07E700FFFC03FF00000000FE0021237EA124>82
D<07F0600FFE601E1FE03807E07003E07001E0E000E0E000E0E00060E00060F00060F00000F800
007C00007F00003FF0001FFE000FFF8003FFC0007FC00007E00001E00001F00000F00000F0C000
70C00070C00070E00070E000F0F000E0F801E0FC01C0FF0780C7FF00C1FC0014247DA21B>I<FF
FC0FFFFFFC0FFF078001F807800060078000600780006007800060078000600780006007800060
078000600780006007800060078000600780006007800060078000600780006007800060078000
60078000600780006007800060078000600780006007800060078000E003C000C003C001C001E0
018001E0038000F80700007C1E00001FFC000007F00020237EA125>85 D<FFF000FFC0FFF000FF
C00F80003E000F80001C000780001800078000180003C000300003C000300003C000300001E000
600001E000600001F000E00000F000C00000F000C00000F801C00000780180000078018000003C
030000003C030000003C030000001E060000001E060000001F0E0000000F0C0000000F0C000000
0F9C0000000798000000079800000003F000000003F000000003F000000001E000000001E00000
0001E000000000C0000022237FA125>I<1FF0003FFC003C3E003C0F003C0F0000070000070000
0F0003FF001FFF003F07007C0700F80700F80700F00718F00718F00F18F81F187C3FB83FF3F01F
C3C015157E9418>97 D<03FE000FFF801F07803E07803C0780780000780000F00000F00000F000
00F00000F00000F00000F000007800007800C03C01C03E01801F87800FFF0003FC0012157E9416
>99 D<0000E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E0
0000E00000E003F8E00FFEE01F0FE03E03E07C01E07800E07800E0F000E0F000E0F000E0F000E0
F000E0F000E0F000E07000E07801E07801E03C03E01F0FF00FFEFE03F0FE17237EA21B>I<01FC
0007FF001F0F803E03C03C01C07801E07801E0FFFFE0FFFFE0F00000F00000F00000F00000F000
007800007800603C00E03E01C00F83C007FF0001FC0013157F9416>I<003E00FF01EF03CF038F
070007000700070007000700070007000700FFF8FFF80700070007000700070007000700070007
00070007000700070007000700070007007FF87FF8102380A20F>I<0000F003FBF807FFB80F1F
381E0F003C07803C07803C07803C07803C07803C07803C07801E0F001F1E001FFC001BF8001800
001800001C00001FFF000FFFC03FFFF07C01F0700078F00078E00038E00038E00038F000787800
F03F07E01FFFC003FE0015217F9518>I<0E0000FE0000FE00001E00000E00000E00000E00000E
00000E00000E00000E00000E00000E00000E00000E3F800EFFE00FE1E00F80F00F00700F00700E
00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FF
E7FFFFE7FF18237FA21B>I<1E003E003E003E001E00000000000000000000000000000000000E
00FE00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC0
FFC00A227FA10E>I<01C003E003E003E001C00000000000000000000000000000000001E00FE0
0FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E0F1E0F1C0F3C0FF803E000B2C82A10F>I<0E0000FE0000FE00001E00000E
00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0FFC0E0FFC0E07E00E
07800E07000E1E000E3C000E78000EF8000FFC000FFC000F1E000E0F000E0F800E07800E03C00E
03E00E01E00E01F0FFE3FEFFE3FE17237FA21A>I<0E00FE00FE001E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E00FFE0FFE00B237FA20E>I<0E3FC0FF00FEFFF3FFC0FFE0F783C01F807E01
E00F003C00E00F003C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E0038
00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E0FFE3
FF8FFEFFE3FF8FFE27157F942A>I<0E3F80FEFFE0FFE1E01F80F00F00700F00700E00700E0070
0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FFFFE7FF
18157F941B>I<01FC0007FF000F07801C01C03800E07800F0700070F00078F00078F00078F000
78F00078F00078F000787000707800F03800E01C01C00F078007FF0001FC0015157F9418>I<0E
3FC0FEFFE0FFE1F00F80F80F007C0E003C0E003E0E001E0E001E0E001E0E001E0E001E0E001E0E
003E0E003C0E003C0F007C0F80F80FE1F00EFFE00E3F800E00000E00000E00000E00000E00000E
00000E00000E0000FFE000FFE000171F7F941B>I<0E7EFEFFFFEF1F8F0F0F0F000F000E000E00
0E000E000E000E000E000E000E000E000E000E00FFF0FFF010157F9413>114
D<1FD83FF87878F038E018E018F018F8007F807FE01FF003F8007CC03CC01CE01CE01CF03CF878
FFF0CFE00E157E9413>I<060006000600060006000E000E000E001E003E00FFF8FFF80E000E00
0E000E000E000E000E000E000E000E000E0C0E0C0E0C0E0C0E0C0F1C073807F803E00E1F7F9E13
>I<0E0070FE07F0FE07F01E00F00E00700E00700E00700E00700E00700E00700E00700E00700E
00700E00700E00700E00F00E00F00E01F00787F807FF7F01FC7F18157F941B>I<FFC3FEFFC3FE
1E00F80E00700E00E00700C00700C00700C003818003818003C38001C30001C30000E60000E600
00E600007C00007C00007C0000380000380017157F941A>I<7FC1FF7FC1FF0781F80381E001C1
C001C18000E300007700003E00003C00001C00003E0000770000670000C38001C1C00380E00780
F01F80F8FFC1FFFFC1FF181580941A>120 D<FFC3FEFFC3FE1E00F80E00700E00E00700C00700
C00700C003818003818003C38001C30001C30000E60000E60000E600007C00007C00007C000038
00003800003000003000007000006000006000F0C000F1C000F380007F00003E0000171F7F941A
>I E /Fm 2 16 df<018001C0018001806186F99F7DBE1FF807E007E01FF87DBEF99F61860180
018001C0018010127E9215>3 D<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7F
FE3FFC1FF807E010107E9115>15 D E /Fn 14 117 df<FFFFFEFFFFFEFFFFFE01FF0001FF0001
FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001
FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001FF0001
FF0001FF0001FF0001FF0001FF0001FF0001FF00FFFFFEFFFFFEFFFFFE17297FA81A>73
D<FFFFFE0000FFFFFE0000FFFFFE000003FE00000003FE00000003FE00000003FE00000003FE00
000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE
00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003
FE00000003FE0001C003FE0001C003FE0001C003FE0001C003FE0003C003FE00038003FE000380
03FE00078003FE00078003FE000F8003FE000F8003FE001F8003FE007F8003FE01FF00FFFFFFFF
00FFFFFFFF00FFFFFFFF0022297DA829>76 D<FFFF0000003FFFC0FFFF0000003FFFC0FFFF8000
007FFFC003FF8000007FF00003FF8000007FF00003BFC00000EFF00003BFC00000EFF000039FE0
0001CFF000039FE00001CFF000038FF000038FF000038FF000038FF000038FF000038FF0000387
F800070FF0000387F800070FF0000383FC000E0FF0000383FC000E0FF0000381FE001C0FF00003
81FE001C0FF0000381FE001C0FF0000380FF00380FF0000380FF00380FF00003807F80700FF000
03807F80700FF00003803FC0E00FF00003803FC0E00FF00003803FC0E00FF00003801FE1C00FF0
0003801FE1C00FF00003800FF3800FF00003800FF3800FF000038007FF000FF000038007FF000F
F000038007FF000FF000038003FE000FF000038003FE000FF000038001FC000FF000038001FC00
0FF000038000F8000FF000FFFE00F803FFFFC0FFFE00F803FFFFC0FFFE007003FFFFC03A297DA8
41>I<FFFFFFF800FFFFFFFF00FFFFFFFFC003FE003FE003FE000FF003FE0007F803FE0007FC03
FE0003FC03FE0003FE03FE0003FE03FE0003FE03FE0003FE03FE0003FE03FE0003FE03FE0003FE
03FE0003FC03FE0007FC03FE0007F803FE000FF003FE003FE003FFFFFF8003FFFFFE0003FE0000
0003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00
000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE000000FFFF
F80000FFFFF80000FFFFF8000027297DA82F>80 D<FFFFF87FFFF807FFF0FFFFF87FFFF807FFF0
FFFFF87FFFF807FFF003FE0001FF00001C0003FE0001FF00001C0001FF0001FF8000380001FF00
00FF8000380001FF8000FF8000780000FF8000FFC000700000FF8000FFC000700000FFC000FFE0
00F000007FC001FFE000E000007FE001FFE000E000003FE003FFF001C000003FE0039FF001C000
003FF0039FF003C000001FF0070FF8038000001FF0070FF8038000001FF80F0FFC078000000FF8
0E07FC070000000FFC0E07FC0700000007FC1E07FE0E00000007FC1C03FE0E00000007FE1C03FE
1E00000003FE3801FF1C00000003FE3801FF1C00000001FF7801FFB800000001FF7000FFB80000
0001FFF000FFB800000000FFF000FFF000000000FFE0007FF000000000FFE0007FF0000000007F
C0003FE0000000007FC0003FE0000000003FC0003FC0000000003F80001FC0000000003F80001F
C0000000001F80001F80000000001F00000F80000000001F00000F80000000000E000007000000
44297FA847>87 D<03FFC0000FFFF0001F81FC003FC0FE003FC07F003FC07F003FC03F803FC03F
801F803F8000003F8000003F80001FFF8001FFFF8007FE3F801FE03F803FC03F807F803F807F00
3F80FE003F80FE003F80FE003F80FE007F80FF007F807F00FFC03FC3DFFC1FFF8FFC03FE07FC1E
1B7E9A21>97 D<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE00000000FE0
0000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
E00000000FE3FE00000FEFFFC0000FFF07F0000FFC03F8000FF001FC000FE000FE000FE000FE00
0FE0007F000FE0007F000FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F
800FE0007F800FE0007F800FE0007F800FE0007F000FE000FF000FE000FE000FF000FE000FF001
FC000FF803F8000F9E0FE0000F0FFFC0000E03FE0000212A7EA926>I<003FE00001FFFC0007F0
7E000FE03F001FC01F803F800FC03F800FC07F000FC07F0007E0FF0007E0FF0007E0FF0007E0FF
FFFFE0FFFFFFE0FF000000FF000000FF000000FF0000007F0000007F8000003F8000E03F8001E0
1FC001C00FE007C003F81F8001FFFE00003FF8001B1B7E9A20>101 D<00FF81F007FFF7FC0FE3
FF7C1F80FCFC3F80FE7C3F007E787F007F007F007F007F007F007F007F007F007F007F007F003F
007E003F80FE001F80FC000FE3F8001FFFF00018FF8000380000003C0000003C0000003E000000
3FFFFC003FFFFF001FFFFFC00FFFFFE007FFFFF03FFFFFF07E000FF87C0001F8F80001F8F80000
F8F80000F8F80000F8FC0001F87E0003F03F0007E01FE03FC007FFFF0000FFF8001E287E9A22>
103 D<0F801FC01FE03FE03FE03FE01FE01FC00F800000000000000000000000000000FFE0FFE0
FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE0FFFEFFFEFFFE0F2B7DAA14>105 D<FFC0FF0000FFC3FFC000FFC787E0000FCE07F0
000FDC03F8000FF803F8000FF003F8000FF003F8000FF003F8000FE003F8000FE003F8000FE003
F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
03F8000FE003F8000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF8021
1B7D9A26>110 D<FFC7F0FFCFFCFFDC7E0FD8FF0FF8FF0FF0FF0FF0FF0FF0FF0FE07E0FE0000F
E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000F
E000FFFF00FFFF00FFFF00181B7E9A1C>114 D<03FE701FFFF03E03F07801F07000F0F00070F0
0070F80070FE0000FFF000FFFF007FFFC03FFFE01FFFF007FFF800FFFC0007FC0000FCE0007CE0
003CF0003CF0003CF80078FC0078FF01F0FFFFC0E1FF00161B7E9A1B>I<007000007000007000
00700000F00000F00000F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F000
07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F03807F038
07F03807F03807F03807F03807F03803F87001FCF000FFE0003FC015267FA51B>I
E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin
%%EndSetup
%%Page: 1 1
bop 582 233 a Fn(W)-6 b(riting)22 b(Libraries)g(in)h(MPI)1344
211 y Fm(\003)206 353 y Fl(An)o(thon)o(y)16 b(Skjellum)p Fk(y)77
b Fl(Nathan)17 b(E.)f(Doss)83 b(Purushotham)16 b(V.)f(Bangalore)p
Fk(y)588 437 y Fl(Computer)h(Science)f(Departmen)o(t)p Fk(y)30
b Fl(&)209 495 y(NSF)16 b(Engineering)g(Researc)o(h)f(Cen)o(ter)h(for)g
(Computational)g(Field)f(Sim)o(ulation)667 553 y(Mississippi)g(State)i(Univ)o
(ersit)o(y)821 611 y(PO)f(Bo)o(x)g(6176)664 669 y(Mississippi)g(State,)g(MS)g
(39762)328 832 y Fj(Abstract)-7 935 y Fi(MPI)22 b(is)f(the)g(new)g(de)h
(facto)f(standar)n(d)h(for)f(multic)n(om-)-57 984 y(puter)h(and)h(cluster)f
(message)h(p)n(assing.)42 b(This)22 b(short)g(p)n(a-)-57 1034
y(p)n(er)13 b(describ)n(es)h(the)g(issues)g(underlying)g(the)g(development)g
(of)-57 1084 y(p)n(ar)n(al)r(lel)h(libr)n(aries)f(with)h(MPI.)h(We)g
(motivate)g(the)f(ne)n(e)n(d)i(for)-57 1134 y(p)n(ar)n(al)r(lel)g(libr)n
(aries,)g(and)h(explain)h(why)e(c)n(ommon)i(message-)-57 1184
y(p)n(assing)j(systems)f(do)h(not)f(supp)n(ort)h(them.)38 b(We)22
b(describ)n(e)-57 1233 y(adde)n(d)e(fe)n(atur)n(es)g(ne)n(e)n(de)n(d)g(to)f
(supp)n(ort)h(libr)n(aries,)f(and)h(what)-57 1283 y(these)g(fe)n(atur)n(es)f
(ar)n(e)g(c)n(al)r(le)n(d)g(in)h(MPI.)g(We)g(mention)g(addi-)-57
1333 y(tional)12 b(fe)n(atur)n(es)f(of)h(MPI)h(that)f(supp)n(ort)g(libr)n
(aries,)e(but)i(which)-57 1383 y(ar)n(e)h(b)n(eyond)h(the)g(sc)n(op)n(e)f(of)
h(this)f(initial)f(p)n(ap)n(er)i(on)f(this)g(topic.)-7 1434
y(We)29 b(pr)n(ovide)g(guidelines)g(in)f(terms)g(of)h(\\do's")g(and)-57
1483 y(\\don)l('ts")13 b(for)f(would-b)n(e)g(MPI)g(libr)n(ary)f(writers.)16
b(We)d(pr)n(esent)-57 1533 y(a)23 b(line)n(ar)g(algebr)n(a)g(libr)n(ary)f(in)
h(skeletal)g(form)g(on)g(a)h(two-)-57 1583 y(dimensional)31
b(virtual)e(top)n(olo)n(gy,)34 b(including)d(c)n(o)n(de)g(fr)n(ag-)-57
1633 y(ments.)k(We)21 b(summarize)f(by)h(mentioning)f(r)n(elate)n(d)g(work,)
-57 1683 y(and)f(c)n(omment)g(on)g(futur)n(e)f(c)n(o)n(de)h(development)h(of)
e(p)n(ar)n(al)r(lel)-57 1733 y(libr)n(aries)d(under)j(MPI,)f(as)g(wel)r(l)f
(as)h(p)n(orting)g(e\013orts)g(of)g(ex-)-57 1782 y(isting)e(c)n(o)n(des)g(to)
g(the)g(system.)-57 1943 y Fh(1)56 b(In)n(tro)r(duction)-7
2045 y Fg(MPI)10 b(is)f(the)h(new)g(de)g(facto)g(standard)f(for)h(m)o
(ulticom)o(puter)-57 2095 y(and)18 b(cluster)i(message)e(passing)g([1)o(].)32
b(Besides)20 b(p)q(ortabilit)o(y)-57 2145 y(and)d(higher)g(p)q(erformance,)g
(one)h(of)e(the)i(primary)d(motiv)n(a-)-57 2195 y(tions)c(for)g(MPI)g(is)g
(to)g(supp)q(ort)h(parallel)e(libraries,)h(and,)g(con-)-57
2245 y(sequen)o(tly)m(,)16 b(to)f(supp)q(ort)i(the)f(creation)g(of)g
(large-scale)f(m)o(ul-)-57 2294 y(ticomputer)e(soft)o(w)o(are.)-7
2345 y(W)m(e)f(describ)q(e)h(basic)g(issues)g(in)f(the)g(dev)o(elopmen)o(t)g
(of)f(par-)-57 2395 y(allel)18 b(libraries)i(using)f(MPI.)h(W)m(e)f(motiv)n
(ate)f(the)i(need)g(for)-57 2445 y(parallel)f(libraries)g(as)h(suc)o(h,)h
(and)f(explain)f(wh)o(y)g(common)-57 2495 y(message-passing)h(systems)g(do)g
(not)g(supp)q(ort)h(them)e(w)o(ell.)-57 2544 y(W)m(e)12 b(describ)q(e)i(the)f
(kind)e(of)h(message-passing)g(features)h(that)p -57 2583 389
2 v -11 2609 a Ff(\003)7 2621 y Fe(W)m(ork)f(supp)q(orted)e(b)o(y)i(the)g
(NSF)h(Engineering)d(Researc)o(h)h(Cen)o(ter)-57 2661 y(for)i(Computationa)o
(l)e(Field)h(Sim)o(ulation,)f(Mississippi)h(State)g(Univ)o(er-)-57
2700 y(sit)o(y)m(.)j(Revision)9 b(1.1;)i(Marc)o(h)g(10,)g(1994.)1013
832 y Fg(are)16 b(needed)h(to)f(supp)q(ort)h(libraries,)e(what)h(MPI)g(calls)
f(suc)o(h)1013 882 y(features,)e(and)e(ho)o(w)g(they)h(are)g(related)g(to)g
(one)g(another.)17 b(W)m(e)1013 932 y(men)o(tion)g(additional)g(features)j
(of)e(MPI)h(that)g(supp)q(ort)h(li-)1013 982 y(braries,)14
b(but)f(whic)o(h)g(are)h(b)q(ey)o(ond)g(the)g(scop)q(e)h(of)d(this)i(initial)
1013 1031 y(pap)q(er)g(on)g(this)g(topic.)1063 1083 y(W)m(e)28
b(pro)o(vide)h(guidelines)f(in)g(terms)h(of)f(\\do's")g(and)1013
1133 y(\\don'ts")9 b(for)h(w)o(ould-b)q(e)g(MPI)g(library)g(writers.)17
b(Giv)o(en)10 b(MPI)1013 1183 y(features)22 b(for)f(library)g(safet)o(y)m(,)i
(MPI)e(library)g(writers)h(will)1013 1232 y(b)q(e)f(able)e(to)h(exp)q(ect)i
(reliable)e(message-passing)f(b)q(eha)o(vior)1013 1282 y(without)g
(sacri\014cing)g(p)q(erformance.)35 b(F)m(urthermore,)20 b(MPI)1013
1332 y(pro)o(vides)f(a)g(higher)g(lev)o(el)g(of)f(abstraction)i(than)f
(common)1013 1382 y(message-passing)11 b(systems,)h(whic)o(h)g(will)f(help)h
(library)f(writ-)1013 1432 y(ers)19 b(dev)o(elop)g(more)f(e\016cien)o(t)h
(and)f(understandable)i(co)q(des)1013 1482 y(sim)o(ultaneously)m(.)26
b(MPI)18 b(w)o(as)f(designed)h(to)f(supp)q(ort)i(prim-)1013
1531 y(itiv)o(es)e(that)h(w)o(ould)e(map)g(e\016cien)o(tly)i(to)f(the)h
(existing)f(and)1013 1581 y(exp)q(ected)e(high)d(p)q(erformance)g(message)h
(passing)g(hardw)o(are)1013 1631 y(of)g(m)o(ulticomputers)f(and)i(gigabit)e
(cluster)k(net)o(w)o(orks.)j(MPI)1013 1681 y(library)f(writers)i(will)d(b)q
(e)i(able)g(to)f(access)j(suc)o(h)f(hardw)o(are)1013 1731 y(capabilities)13
b(in)g(p)q(ortable)h(co)q(de.)1063 1782 y(T)m(o)19 b(concretize)j(the)f
(discussion,)h(w)o(e)f(presen)o(t)g(a)f(linear)1013 1832 y(algebra)15
b(library)f(in)h(sk)o(eletal)g(form)f(on)h(a)g(t)o(w)o(o-dimensional)1013
1882 y(virtual)e(top)q(ology)m(,)e(including)i(co)q(de)h(fragmen)o(ts.)j
(These)e(ex-)1013 1932 y(amples)10 b(are)h(simpli\014ed)f(from)f(other)j(w)o
(ork)f(w)o(e)h(ha)o(v)o(e)f(done)g(in)1013 1982 y(the)g(area)f(of)f(scalable)
h(libraries,)h(so)f(they)h(represen)o(t)h(realistic)1013 2031
y(implemen)o(tatio)o(ns.)17 b(W)m(e)d(think)g(that)g(this)h(extended)g(exam-)
1013 2081 y(ple)d(will)e(pro)o(v)o(e)j(instructiv)o(e)f(to)g(those)h(who)f
(are)g(planning)f(to)1013 2131 y(dev)o(elop)k(distributed)i(data)e
(structures)j(for)d(mathematical)1013 2181 y(libraries)e([6].)1063
2232 y(W)m(e)21 b(summarize)f(b)o(y)h(men)o(tioning)f(related)i(w)o(ork,)h
(and)1013 2282 y(commen)o(t)18 b(on)h(future)i(co)q(de)f(dev)o(elopmen)o(t)f
(of)g(parallel)g(li-)1013 2332 y(braries)10 b(under)h(MPI,)f(as)f(w)o(ell)h
(as)g(p)q(orting)f(e\013orts)i(of)e(existing)1013 2382 y(library)k(co)q(des)i
(to)f(the)g(system.)1013 2545 y Fh(2)56 b(Motiv)m(ation)1063
2650 y Fg(This)25 b(section)i(motiv)n(ates)c(the)k(need)f(for)g(parallel)e
(li-)1013 2700 y(braries.)32 b(It)19 b(sets)h(exp)q(ectations)f(for)f(what)h
(libraries)f(need)p eop
%%Page: 2 2
bop -57 117 a Fg(to)17 b(w)o(ork)f(e\013ectiv)o(ely)i(in)e(a)h(distributed)g
(memory)d(en)o(viron-)-57 166 y(men)o(t,)c(and)i(explains)e(wh)o(y)h(common)e
(message-passing)i(sys-)-57 216 y(tems)h(do)h(not)g(supp)q(ort)g(libraries)g
(w)o(ell.)k(MPI's)c(solutions)f(to)-57 266 y(these)j(needs)h(are)e
(discussed.)-57 363 y Fj(2.1)52 b(Wh)o(y)17 b(P)o(arallel)h(Libraries?)-7
460 y Fg(P)o(arallel)9 b(libraries)h(are)g(needed)i(to)e(encapsulate)h(the)f
(p)q(on-)-57 510 y(derous)k(details)f(asso)q(ciated)h(with)f(distributed)h
(realizations)-57 560 y(of)f(k)o(ey)h(algorithms.)i(The)e(programmer)e
(needs:)-15 638 y Fm(\017)20 b Fg(p)q(ortable,)14 b(reusable,)g(high)f
(qualit)o(y)g(co)q(des,)-15 719 y Fm(\017)20 b Fg(easily)13
b(a)o(v)n(ailable,)f(reliable)h(co)q(des,)-15 799 y Fm(\017)20
b Fg(higher)14 b(lev)o(el)g(p)q(ortabilit)o(y)e(in)o(terfaces,)-15
880 y Fm(\017)20 b Fg(the)12 b(abilit)o(y)e(to)h(hide)h(co)q(ding)f
(complexities)g(from)f(other)26 930 y(programmers)i(and)i(users.)-57
1008 y(Libraries)e(ensure)h(consisten)o(t)g(qualit)o(y)d(of)h(suc)o(h)h(pro)q
(cedures,)-57 1058 y(and)j(pro)o(vide)g(a)h(\\higher)f(lev)o(el")g(of)f(p)q
(ortabilit)o(y)h(than)g(MPI)-57 1108 y(itself)k(can)g(or)f(should)h(pro)o
(vide.)33 b(Libraries)19 b(prev)o(en)o(t)h(eac)o(h)-57 1158
y(programmer)10 b(from)g(rep)q(eating)i(the)g(basic)g(w)o(ork)g(of)f
(de\014ning)-57 1207 y(consisten)o(t)j(data)f(structures,)i(data)d(la)o(y)o
(outs,)g(and)h(metho)q(ds)-57 1257 y(that)f(implemen)o(t)d(k)o(ey)j
(algorithms)d(\(suc)o(h)k(as)f(matrix)e(op)q(era-)-57 1307
y(tions\).)17 b(Since)c(the)g(b)q(est)h(libraries)e(come)f(with)h(sev)o(eral)
h(v)n(ari-)-57 1357 y(ations)g(on)h(parallel)e(systems)i(\(di\013eren)o(t)h
(data)f(la)o(y)o(outs,)e(dif-)-57 1407 y(feren)o(t)j(strategies)h(dep)q
(enden)o(t)g(on)e(size)h(of)f(system,)f(or)i(t)o(yp)q(e)-57
1456 y(of)10 b(\015oating)g(p)q(oin)o(t\),)h(this)g(to)q(o)g(needs)h(to)f(b)q
(e)g(hidden)g(from)f(the)-57 1506 y(user.)-57 1603 y Fj(2.2)52
b(What's)17 b(Missing?)-7 1701 y Fg(The)j(follo)o(wing)d(features)k(are)g
(missing)d(from)g(common)-57 1751 y(v)o(endor)c(and)g(p)q(ortabilit)o(y)e
(systems:)-15 1829 y Fm(\017)20 b Fg(con)o(texts)15 b(of)e(message)h(passing)
g(\(isolation\),)-15 1909 y Fm(\017)20 b Fg(collectiv)o(e)25
b(comm)o(unication)d(functionalit)o(y)m(,)k(de\014ned)26 1959
y(with)14 b(pro)q(cess-group)h(scop)q(e,)-15 2040 y Fm(\017)20
b Fg(virtual-top)q(ology)12 b(naming)f(of)j(pro)q(cesses.)-57
2118 y(The)e(subsequen)o(t)i(paragraphs)e(elab)q(orate)g(on)f(eac)o(h)i(of)e
(these)-57 2168 y(topics,)j(and)f(wh)o(y)h(libraries)g(need)g(these)i
(features.)-57 2275 y Fd(2.2.1)48 b(Comm)o(unication)12 b(Con)o(texts)j(|)g
(Isolation)-57 2351 y Fg(In)25 b(the)h(sequen)o(tial)g(F)m(ortran)f(and)g(C)g
(en)o(vironmen)o(ts,)j(it)-57 2401 y(is)c(reasonably)g(easy)h(to)f(create)i
(libraries,)g(b)q(ecause)g(the)-57 2451 y(stac)o(k-orien)o(ted)j(pro)q
(cedural)g(programmi)o(ng)c(mo)q(del)i(has)-57 2501 y(w)o(ell-de\014ned)17
b(conditions)e(ab)q(out)i(reasonable)f(v)o(ersus)i(erro-)-57
2551 y(neous)12 b(programs.)k(Ho)o(w)o(ev)o(er,)c(in)f(the)h
(distributed-memory)m(,)-57 2600 y(message-passing)f(en)o(vironmen)o(t,)g(it)
g(is)h(di\016cult)f(to)g(write)h(li-)-57 2650 y(braries)i(with)e(either)i(v)o
(endor)f(or)g(common)d(p)q(ortabilit)o(y)i(sys-)-57 2700 y(tems.)20
b(This)15 b(seemingly)e(strong)j(indictmen)o(t)d(is)i(bac)o(k)o(ed)g(up)1013
117 y(as)k(follo)o(ws:)28 b Fi(Ther)n(e)20 b(is)f(no)i(r)n(e)n(asonable)f
(way)g(for)g(libr)n(aries)1013 166 y(to)15 b(isolate)g(themselves)h(fr)n(om)e
(the)i(on-going)g(p)n(oint-to-p)n(oint)1013 216 y(message)f(p)n(assing)g(pr)n
(esent)g(in)g(a)g(running)h(applic)n(ation.)1063 266 y Fg(Message)21
b(tags,)h(the)f(sole)f(means)g(for)g(designating)f(re-)1013
316 y(strictions)c(on)f(message)g(deliv)o(ery)m(,)g(are)h(insu\016cien)o(t)f
(for)h(iso-)1013 366 y(lation.)23 b(F)m(or)15 b(instance,)i(more)e(than)h
(one)g(library)f(\(or)h(in)o(v)o(o-)1013 415 y(cation)g(of)h(the)g(same)g
(library\))f(could)h(use)h(the)f(same)f(tags.)1013 465 y(Systems)g(that)g
(lac)o(k)g(source)i(selectivit)o(y)e(ha)o(v)o(e)h(to)f(use)h(tags)1013
515 y(to)12 b(create)i(deterministic)e(collectiv)o(e)h(op)q(erations;)g(in)f
(suc)o(h)h(a)1013 565 y(situation,)k(collectiv)o(e)h(and)f(p)q(oin)o(t-to-p)q
(oin)o(t)f(messages)i(can)1013 615 y(b)q(e)d(misqueued)f(unless)h(the)g
(system)f(reserv)o(es)j(tags)d(for)g(this)1013 664 y(purp)q(ose.)26
b(Finally)m(,)14 b(wildcard)i(receipt-selectivit)o(y)i(on)e(tags)1013
714 y(destro)o(ys)c(an)o(y)e(promise)f(of)h(real)h(protection)g(that)g(tags)f
(could)1013 764 y(otherwise)15 b(a\013ord.)1013 870 y Fd(2.2.2)48
b(Collectiv)o(e)13 b(Op)q(erations)1013 947 y Fg(Collectiv)o(e)i(op)q
(erations,)g(suc)o(h)h(as)g(reduce,)g(broadcast,)g(and)1013
997 y(so)k(on,)h(are)g(not)f(de\014ned)h(in)f(all)e(common)g(systems,)j(and)
1013 1047 y(when)e(de\014ned)g(are)f(most)f(often)i(only)e(a)o(v)n(ailable)f
(o)o(v)o(er)i(the)1013 1096 y(full)f(set)j(of)e(pro)q(cessors)k(\(or)d(pro)q
(cesses\))i(allo)q(cated)e(to)f(the)1013 1146 y(user.)30 b(Libraries)18
b(need)h(to)e(w)o(ork)h(on)f(di\013eren)o(t)i(collections)1013
1196 y(of)g(pro)q(cesses,)k(and)c(to)g(ha)o(v)o(e)g(a)o(v)n(ailable)e
(collectiv)o(e)j(op)q(era-)1013 1246 y(tions)15 b(that)h(only)f(impact)g(the)
h(pro)q(cesses)j(that)c(care)i(ab)q(out)1013 1296 y(the)c(collectiv)o(e)g(op)
q(eration;)g(unin)o(v)o(olv)o(ed)f(pro)q(cesses)k(w)o(an)o(t)c(to)1013
1345 y(remain)i(unin)o(v)o(olv)o(ed.)20 b(F)m(urthermore,)15
b(the)h(collectiv)o(e)f(op)q(er-)1013 1395 y(ations)f(ha)o(v)o(e)h(to)g(w)o
(ork)g(reliably)m(,)e(and)i(without)f(race)i(condi-)1013 1445
y(tions.)1013 1551 y Fd(2.2.3)48 b(Virtual-T)l(op)q(ol)o(ogy)13
b(Naming)1013 1628 y Fg(Libraries)k(don't)g(w)o(an)o(t)g(to)g(describ)q(e)i
(p)q(oin)o(t-to-p)q(oin)o(t)c(com-)1013 1678 y(m)o(unication)9
b(in)j(terms)f(of)g(hardw)o(are-dep)q(enden)o(t)j(names;)d(in)1013
1727 y(fact,)19 b(man)o(y)d(algorithms)g(are)j(more)e(natural)h(if)f(describ)
q(ed)1013 1777 y(in)g(terms)h(of)f(p)q(oin)o(t-to-p)q(oin)o(t)f(calls)h
(relativ)o(e)h(to)g(a)f(virtual-)1013 1827 y(top)q(ology)j(naming)f(sc)o
(heme.)41 b(Virtual-top)q(ology)19 b(naming)1013 1877 y(migh)o(t)12
b(re\015ect)j(ro)o(w)f(or)g(column)e(parallelism)f(in)i(matrix)f(op-)1013
1927 y(erations,)i(for)f(instance)i([5)o(].)1063 1977 y(So,)k(w)o(e)g(ha)o(v)
o(e)f(established)i(three)g(k)o(ey)e(areas)i(that)e(will)1013
2026 y(supp)q(ort)d(the)f(creation)g(of)g(libraries:)1054 2101
y Fm(\017)21 b Fg(Safe)14 b(comm)o(unicati)o(on)d(space)k(\(isolation\),)1054
2181 y Fm(\017)21 b Fg(Supp)q(ort)d(for)f(collectiv)o(e)g(op)q(eration,)h
(not)f(just)h(p)q(oin)o(t-)1096 2230 y(to-p)q(oin)o(t;)c(group)g(scop)q(e)i
(is)e(needed)i(for)f(collectiv)o(e)f(op-)1096 2280 y(erations,)1054
2359 y Fm(\017)21 b Fg(Abstract)12 b(names)f(for)g(pro)q(cesses)i(are)f
(based)g(on)f(virtual)1096 2409 y(top)q(ologies,)h(or)i(at)g(least)g
(rank-in-group)f(names.)1013 2505 y Fj(2.3)52 b(MPI's)16 b(Supp)q(ort)i(for)f
(Libraries)1063 2600 y Fg(In)12 b(MPI,)f(the)i(features)g(that)f(implemen)o
(t)d(the)k(imp)q(ortan)o(t)1013 2650 y(concepts)18 b(discussed)g(in)d(the)i
(previous)g(section)f(are)h(as)f(fol-)1013 2700 y(lo)o(ws:)p
eop
%%Page: 3 3
bop -15 117 a Fm(\017)20 b Fd(Pro)q(cess)15 b(Groups)d Fg(de\014ne)j(an)f
(ordered)h(collection)f(of)26 166 y(pro)q(cesses,)19 b(eac)o(h)e(with)f(a)g
(rank.)25 b(Pro)q(cess)18 b(groups)f(de-)26 216 y(\014ne)22
b(the)g(lo)o(w-lev)o(el)f(names)g(for)g(in)o(ter-pro)q(cess)j(com-)26
266 y(m)o(unication.)d(F)m(or)15 b(p)q(oin)o(t-to-p)q(oin)o(t)f(message)i
(passing,)26 316 y(pro)q(cess)i(groups)e(de\014ne)g(the)h(rank)f(of)f(sender)
i(and)f(re-)26 366 y(cipien)o(t.)42 b(F)m(or)22 b(collectiv)o(e)f(comm)o
(unication,)f(pro)q(cess)26 415 y(groups)14 b(de\014ne)h(the)g(set)f(of)g
(participan)o(ts.)-15 512 y Fm(\017)20 b Fd(Virtual)k(T)l(op)q(ologies)d
Fg(are)j(the)f(\014nal)g(link)f(in)h(the)26 561 y(naming)15
b(pro)q(cess)k(for)e(libraries,)g(pro)o(viding)f(an)h(alter-)26
611 y(nativ)o(e)11 b(to)g(simple)f(rank)i(naming)d(for)i(libraries.)17
b(Carte-)26 661 y(sian)d(and)g(general)h(graph)f(top)q(ologies)g(are)g(supp)q
(orted.)26 711 y(The)h(user)g(can)g(also)e(de\014ne)j(his)e(or)g(her)h(o)o
(wn)f(top)q(ology)26 761 y(strategies.)-15 857 y Fm(\017)20
b Fd(Con)o(texts)f Fg(pro)o(vide)i(the)g(abilit)o(y)f(to)g(ha)o(v)o(e)h
(separate)26 907 y(safe)h(\\univ)o(erses")g(of)f(message-passing)g(for)g(pro)
q(cess)26 957 y(groups)10 b(in)f(MPI.)g(\(A)h(con)o(text)g(is)g(a)f(concept)i
(made)d(up)i(of)26 1006 y(a)g(pro)q(cess)h(group)f(and)g(other)h
(information,)c(it)j(do)q(es)g(not)26 1056 y(sp)q(ecify)16
b(an)f(implemen)o(tation.)o(\))21 b(W)m(e)15 b(talk)g(ab)q(out)g(con-)26
1106 y(texts)g(in)e(MPI,)h(but)g(they)h(are)f(actually)f(implemen)o(ted)26
1156 y(with)h(comm)o(uni)o(cators.)-15 1252 y Fm(\017)20 b
Fd(Comm)o(unicators)15 b Fg(encapsulate)20 b(con)o(texts,)f(groups,)26
1302 y(and)14 b(virtual)g(top)q(ologies)g(in)g(an)g(ob)r(ject)h(that)g(pro)o
(vides)26 1352 y(the)h(appropriate)g(scop)q(e)h(for)f(all)e(comm)o(unication)
f(op-)26 1402 y(erations)24 b(in)g(MPI.)g(Comm)n(unicators)e(bind)h(pro)q
(cess)26 1451 y(groups)13 b(and)g(con)o(texts)h(together)f(to)g(form)e(a)i
(safe)g(com-)26 1501 y(m)o(unication)f(space)j(within)e(the)h(group.)-7
1594 y(In)22 b(summary)m(,)e(the)i(use)h(of)e(separate)i(comm)o(uni)o(cation)
-57 1644 y(con)o(texts)d(b)o(y)g(distinct)f(libraries)g(\(or)h(distinct)f
(library)g(in-)-57 1694 y(v)o(o)q(cations\))11 b(will)f(insulate)i(comm)o
(unicatio)o(n)d(in)o(ternal)i(to)h(the)-57 1744 y(library)d(execution)i(from)
e(external)h(comm)o(unication)d(\(group)-57 1793 y(safet)o(y\).)18
b(This)13 b(allo)o(ws)f(the)h(in)o(v)o(o)q(cation)f(of)h(the)g(library)f(ev)o
(en)-57 1843 y(if)j(there)j(are)f(p)q(ending)f(comm)o(unicatio)o(ns,)e(and)i
(a)o(v)o(oids)g(the)-57 1893 y(need)h(to)e(sync)o(hronize)i(eac)o(h)f(en)o
(try)g(in)o(to)f(and)g(exit)h(from)d(li-)-57 1943 y(brary)h(co)q(de.)-57
2052 y Fj(2.4)52 b(Additional)20 b(MPI)c(features)h(for)g(libraries)-7
2162 y Fg(MPI)d(also)g(pro)o(vides)g(sev)o(eral)h(other)g(features)h(whic)o
(h)e(are)-57 2212 y(useful)g(for)g(building)e(scalable)i(libraries:)-15
2305 y Fm(\017)20 b Fg(Duplication)27 b(of)h(comm)o(uni)o(cators)e(allo)o(ws)
h(libraries)26 2355 y(to)f(get)h(additional)d(comm)o(unication)f(space)28
b(easily)m(.)26 2404 y(\(Go)q(o)q(d)15 b(implemen)o(tati)o(ons)e(ma)o(y/will)
e(cac)o(he)17 b(suc)o(h)f(ad-)26 2454 y(ditional)11 b(comm)o(unicatio)o(n)f
(space,)k(resulting)e(in)g(signif-)26 2504 y(ican)o(t)i(p)q(erformance)f(b)q
(ene\014ts.\))-15 2600 y Fm(\017)20 b Fg(Systematic,)13 b(aligned)h
(subsetting)h(of)f(comm)o(uni)o(cators)26 2650 y(allo)o(ws)f(comm)o
(unicating)e(SPMD)k(pro)q(cesses)i(to)d(de\014ne)26 2700 y(hierarc)o(hies)h
(of)e(comm)o(unicating)e(sub-groups.)1054 117 y Fm(\017)21
b Fg(Cac)o(hing)f(of)g(attributes)h(on)f(comm)o(unicators)e(allo)o(ws)1096
166 y(users)12 b(to)f(de\014ne)h(new)g(op)q(erations)f(that)g(ha)o(v)o(e)g
(the)h(same)1096 216 y(conceptual)19 b(prop)q(erties)i(as)d(built-in)g(MPI)h
(collectiv)o(e)1096 266 y(op)q(erations.)25 b(This)16 b(is)g(imp)q(ortan)o(t)
e(for)i(extending)g(ser-)1096 316 y(vices)e(not)g(an)o(ticipated)g(b)o(y)f
(MPI.)1013 483 y Fh(3)56 b(Guidelines)20 b(for)f(Library)f(W)-5
b(riters)1063 592 y Fg(In)15 b(this)g(section,)g(w)o(e)h(bulletize)f(imp)q
(ortan)o(t)e(ideas)i(for)g(li-)1013 642 y(brary)i(writers)h(based)g(on)f(our)
g(previous)h(exp)q(erience)h(with)1013 692 y(the)j Fc(Multicomputer)e(T)m(o)q
(olb)q(o)o(x)i Fg(and)f Fc(Zip)q(co)q(de)j Fg([8].)39 b(Pro-)1013
742 y(grammers)11 b(who)j(ha)o(v)o(e)f(tried)h(to)f(write)h(libraries)f(with)
g(com-)1013 792 y(mon)g(systems)i(will)f(appreciate)h(the)h(simplicit)o(y)c
(of)j(writing)1013 842 y(message-passing)e(co)q(de)i(with)e(MPI.)1013
951 y Fj(3.1)52 b(Do's)1054 1060 y Fm(\017)21 b Fg(De\014ne)13
b(p)q(ersisten)o(t)g(distributed)g(structures,)h(based)f(on)1096
1110 y(comm)o(unicators,)1054 1206 y Fm(\017)21 b Fg(Duplicate)11
b(comm)o(unicators)e(for)i(safe)g(comm)o(unication)1096 1256
y(space)k(when)f(en)o(tering)h(calls)e(to)h(parallel)e(libraries,)1054
1351 y Fm(\017)21 b Fg(Use)15 b(MPI-de\014ned)g(virtual)f(top)q(ology)f
(information)e(to)1096 1401 y(mak)o(e)h(algorithms)g(easier)i(to)g
(understand,)1054 1497 y Fm(\017)21 b Fg(Augmen)o(t)16 b(virtual)h(top)q
(ology)g(tec)o(hnology)g(as)g(needed)1096 1547 y(\()p Fi(e.g.)p
Fg(,)c(top)q(ology)g(hierarc)o(hies,)h(as)g(in)f(section)i(4\),)1054
1643 y Fm(\017)21 b Fg(Use)11 b(attribute)g(cac)o(hing)f(when)h(adding)e
(additional)f(col-)1096 1693 y(lectiv)o(e)14 b(op)q(erations)g(to)g(a)f(comm)
o(unicator.)1013 1802 y Fj(3.2)52 b(Don'ts)1054 1911 y Fm(\017)21
b Fg(Publish)11 b(ho)o(w)h(they)g(use)g(the)g(message)g(resources)i(\()p
Fi(e.g.)p Fg(,)1096 1961 y(tag)f(allotmen)o(ts\),)1054 2057
y Fm(\017)21 b Fg(Sync)o(hronize)d(excessiv)o(ely)g(at)f(the)g(en)o(try)h
(and)f(exit)g(of)1096 2107 y(parallel)c(calls,)1054 2203 y
Fm(\017)21 b Fg(Guaran)o(tee)k(that)g(comm)o(unicators)d(b)q(e)j(\\quiescen)o
(t")1096 2253 y(b)q(efore)14 b(they)h(can)f(do)g(collectiv)o(e)g(op)q
(erations,)1054 2348 y Fm(\017)21 b Fg(Restrict)13 b(the)g(library)f
(programmi)o(ng)d(mo)q(del)i(to)h(single)1096 2398 y(in)o(v)o(o)q(cation)g(p)
q(er)j(pro)q(cess)h(tec)o(hnology)m(,)1054 2494 y Fm(\017)21
b Fg(Restrict)c(the)f(library)f(programming)d(mo)q(del)j(to)g(non-)1096
2544 y(o)o(v)o(erlapping)d(pro)q(cess)k(group)e(assumptions,)1054
2640 y Fm(\017)21 b Fg(W)m(rite)15 b(libraries)h(that)f(w)o(ork)h(only)f(o)o
(v)o(er)h(\\all")e(pro)q(ces-)1096 2690 y(sors)g(\(pro)q(cesses\))j(of)d(a)f
(user's)i(allo)q(cation.)p eop
%%Page: 4 4
bop -57 117 a Fh(4)56 b(A)19 b(2D-Grid)g(V)-5 b(ector)19 b(Class)h(Library)-7
219 y Fg(In)g(this)h(section)g(w)o(e)g(dev)o(elop)f(a)g(\\v)o(ector")h
(library)e(for)-57 269 y(linear)e(algebra)h(on)g(a)f(t)o(w)o(o-dimensional)e
(logical)h(top)q(ology)-57 319 y(and)21 b(demonstrate)f(t)o(w)o(o)h(v)n
(arian)o(ts)f(of)g(\\dot)g(pro)q(duct")h(for)-57 369 y(aligned,)13
b(distributed)h(v)o(ectors.)-57 471 y Fj(4.1)52 b(V)l(ector)17
b(La)o(y)o(out)-7 574 y Fg(In)d(a)g(2D)g(logical)f(grid,)g(v)o(ectors)j(ma)o
(y)c(either)k(b)q(e)f(column)-57 624 y(or)h(ro)o(w)g(v)o(ectors.)25
b(W)m(e)16 b(assume)g(that)g(eac)o(h)g(ro)o(w)g(\(resp,)i(col-)-57
674 y(umn\))10 b(v)o(ector)h(is)g(replicated)g(o)o(v)o(er)g(eac)o(h)h(ro)o(w)
e(\(resp,)j(column\))-57 724 y(of)g(a)h(logical)e(grid.)18
b(Figure)c(1)g(sho)o(ws)g(ho)o(w)g(t)o(w)o(o)f(ro)o(w)h(v)o(ectors)-57
773 y(migh)o(t)e(b)q(e)j(distributed)g(in)f(a)g(grid.)20 b(Eac)o(h)14
b(v)o(ector)i(is)e(brok)o(en)-57 823 y(in)o(to)h(t)o(w)o(o)h(pieces)h(and)f
(distributed)h(along)d(the)j(columns)e(of)-57 873 y(the)d(grid.)17
b(Eac)o(h)12 b(pro)q(cess)i(ro)o(w)d(has)h(a)g(cop)o(y)f(of)h(b)q(oth)f(v)o
(ectors.)-34 933 y
14800896 14652873 1151180 24240578 27307060 50355937 startTexFig
-34 933 a
%%BeginDocument: fig/vector-layout.eps
/MAV 300 dict def
MAV begin
/useClip true def
/top 0 def
/left 1 def
/bottom 2 def
/right 3 def
/CM 6 array def
/CTM 6 array def
/CTMR 6 array def
/MTC 6 array def
/blimit 1500 def
/bcnt 0 def
/rbox 8 array def
/segbox 8 array def
/bbox1 4 array def
/c1 3 array def
/c2 3 array def
/d 3 array def
/delta 3 array def
/mycurrentrgbcolor 3 array def
/ulx 0 def
/uly 1 def
/llx 2 def
/lly 3 def
/urx 4 def
/ury 5 def
/lrx 6 def
/lry 7 def
/sp [0 0] def
/ep [0 0] def
/bbox 4 array def
/pbox 4 array def
/scrnProc currentscreen 3 1 roll pop pop def
/currentcolorscreen where {
begin
currentcolorscreen
end
3 1 roll pop pop
4 2 roll pop pop
5 -2 roll pop pop
6 -2 roll pop pop
/kProc exch def
/bProc exch def
/gProc exch def
/rProc exch def
} if
/Max {2 copy gt {pop}{exch pop} ifelse} bind def
/Min {2 copy lt {pop}{exch pop} ifelse} bind def
/cellPenW 72.0 /currentcolorscreen where
{begin currentcolorscreen end pop pop
10 1 roll pop pop 8 1 roll pop pop
6 1 roll pop pop Max Max Max }
{currentscreen pop pop} ifelse div 2.0 div def
/rect {
/saveobj save def
R PC PF LC SS
saveobj restore
} bind def
/R {
newpath
pbox astore pop
0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate
/objectCord mstore def
pbox right get 2 div
dup pbox left get exch sub
pbox left 3 -1 roll put
dup pbox right 3 -1 roll put
pbox bottom get 2 div
dup pbox top get exch sub
pbox top 3 -1 roll put
dup pbox bottom 3 -1 roll put
translate
CTM currentmatrix pop
57.3 mul rotate
RT
} bind def
/SaveScreenBW {
currentscreen
/scrnProc exch def
/scrnAngle exch def
/scrnFreq exch def
} bind def
/RestoreScreenBW {
scrnFreq scrnAngle MAV /scrnProc get setscreen
} bind def
/SetFreqAngleBW {
currentscreen
3 1 roll
pop pop
setscreen
} bind def
/SaveScreenColor {
currentcolorscreen
/grayProc exch def
/grayAngle exch def
/grayFreq exch def
/bProc exch def
/bAngle exch def
/bFreq exch def
/gProc exch def
/gAngle exch def
/gFreq exch def
/rProc exch def
/rAngle exch def
/rFreq exch def
} bind def
/RestoreColorScreen {
rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen
} bind def
/SetFreqAngleColor {
currentcolorscreen
3 1 roll pop pop
4 2 roll pop pop
5 -2 roll pop pop
6 -2 roll pop pop
4 1 roll
6 1 roll
8 1 roll
10 1 roll
setcolorscreen
} bind def
/initmsaverestore {
userdict begin
/mdict 10 dict def
mdict begin
/mindex -1 def
/mstacksize 25 def
/mstack mstacksize array def
/incmindex {
/mindex mindex 1 add def
} bind def
/decmindex {
/mindex mindex 1 sub def
} bind def
/checkmindex {
mindex 0 lt {
(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore'
) print flush
stop
}
{
mindex mstacksize ge {
(%ERROR: msave/mrestore stack overflow: Offending command 'msave'
) print flush
stop
} if
} ifelse
} bind def
/mpush {
incmindex
checkmindex
mstack mindex
3 -1 roll put
} bind def
/mpop {
checkmindex
mstack mindex get
decmindex
} bind def
end
end
} bind def
/msave {
mdict begin
matrix currentmatrix mpush
end
} bind def
/mrestore {
mdict begin
mpop setmatrix
end
} bind def
/msavelevel {
mdict begin
mindex 1 add
end
} bind def
/mstore {
matrix currentmatrix
} bind def
/AutoSizeY {
0 0 pl
dup 3 1 roll
4 -1 roll
add
pl exch pop
exch sub
} bind def
/pl {
transform
0.25 sub round 0.25 add exch
0.25 sub round 0.25 add exch
itransform
} bind def
/pll {
transform
round exch
round exch
itransform
} bind def
/pr {
dtransform
round exch
round exch
idtransform
} bind def
/m {
pl moveto
} bind def
/l {
pl lineto
} bind def
/c {
pl curveto
} bind def
/rm {
pr rmoveto
} bind def
/rl {
pr rlineto
} bind def
/ar {
5 -2 roll pl
5 2 roll
arc
} bind def
/an {
5 -2 roll pl
5 2 roll
arcn
} bind def
/MakePatternFont {
/FontDict 20 dict def
FontDict begin
/FontName exch def
/Encoding exch def
/FontMatrix [1 0 0 1 0 0 ] def
/FontType 3 def
/FontBBox [ 0 0 1 1 ] def
/PatternDict exch def
/RenderPattern {
patternDict exch get
exec
} bind def
/BuildChar {
exch begin
1 0 0 0 1 1 setcachedevice
Encoding exch get RenderPattern
end
} bind def
FontName FontDict definefont pop
end
} bind def
/SnapToPattenGrid
{
exch
dup 0 lt {
1 index sub
} if
1 index
div truncate
mul
} bind def
/FillPatternString {
dup length
1 sub
0 1 3 -1 roll {
2 index
2 index
3 -2 roll
put
} for
pop pop
} bind def
/AutoSizeY {
0.0 exch dtransform
round
idtransform exch pop
} bind def
/AutoSizeX {
0.0 dtransform
exch
round
exch
idtransform pop
} bind def
/AutoCellSize {
AutoSizeY
exch
AutoSizeX
exch
} bind def
/CheckPath {
false
{ pop pop pop true exit}
{ pop pop pop true exit}
{ pop pop pop pop pop pop pop true exit}
{ pop true exit}
pathforall
} bind def
/PatternFill { % patternCharacter
/patternString 1 string def
/cm mstore def
patternMatrix setmatrix
1 1 AutoCellSize
dup 0 eq { pop 1} if
exch
dup 0 eq { pop 1} if
exch
/patternSize exch 24.0 mul def
/PatternSizeX exch 24.0 mul patternString length mul def
/flaterror 0 def
patternString FillPatternString
gsave
flaterror 1 add setflat
flattenpath
pathbbox
grestore
psy add flaterror add psy SnapToPattenGrid
exch psx add flaterror add psx SnapToPattenGrid
3 -1 roll flaterror sub psy SnapToPattenGrid
4 -1 roll flaterror sub psx SnapToPattenGrid
4 2 roll pll
4 2 roll pll
/llxsnap exch def
/llysnap exch def
/urxsnap exch def
/urysnap exch def
gsave
useClip true eq {clip}{eoclip} ifelse newpath
/PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont
llysnap patternSize urysnap {
llxsnap exch moveto
llxsnap PatternSizeX urxsnap {
pop
patternString show
%currentpoint am
} for
} bind for
grestore
cm setmatrix
} bind def % End 'PatternFill'
/DefaultPatternFont {
/cm mstore def
patternMatrix setmatrix
1 1 AutoCellSize
dup 0 eq { pop 1} if
exch
dup 0 eq { pop 1} if
exch
/psy exch iSizeY mul def
/psx exch iSizeX mul def
/patternDict 64 dict def
patternDict begin
/NotDef {} def
/LiteDiagLines {
iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY]
{pat}
imagemask
} bind def
end
/CustEncoding 256 array def
0 255 1 {
CustEncoding exch /NotDef put
} bind for
CustEncoding 65 /LiteDiagLines put
patternDict CustEncoding /PatternFont MakePatternFont
/pathSegProc {
strokepath
CheckPath {
65 PatternFill newpath
} if
} bind def
cm setmatrix
} bind def
/XRound {
dup
3 -1 roll
exch mul round
exch div
} bind def
/RoundMatrix {
/i 0 def
dup {
100000.0 XRound
1 index
exch i exch put
/i i 1 add def
} forall
} bind def
/GetBoxesRatio {
3 -1 roll sub
7 1 roll
exch sub
6 1 roll
3 -1 roll sub
5 1 roll
exch sub
4 1 roll
3 -1 roll div
3 1 roll
exch div
exch
} bind def
/T {792 exch sub} bind def
/sx 0 def
/sy 0 def
/ex 0 def
/ey 0 def
/lw 0 def
/siz 0 def
/U {gsave 0 setlinecap
/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def
fontkind plain eq
{
lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke
}
{
currentdict /outlineFontSize known outlineFontSize 0 gt and
{
fontkind outline eq
{
/sy sy 0.0119444 siz mul sub def
/ey ey 0.0119444 siz mul sub def
gsave
1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke
grestore
lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto
strokepath 0.0119444 siz mul setlinewidth stroke
} if
fontkind shadow eq fontkind outlineshadow eq or
{
/sy sy 0.0358332 siz mul sub def
/ey ey 0.0358332 siz mul sub def
lw setlinewidth
lw 2 div sx add sy
lw 2 div sub moveto
lw 2 div ex add ey
lw 2 div sub lineto stroke
gsave
1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke
grestore
lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto
strokepath 0.0119444 siz mul setlinewidth stroke
} if
} if
} ifelse
grestore} bind def
/plain 1 def
/outline 2 def
/shadow 3 def
/outlineshadow 4 def
/fess {
currentdict /outlineFontSize known {
/outlineFontSize 2 index def
} if
findfont exch dup /siz exch def scalefont setfont
} bind def
/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def
/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def
/S {
fontkind plain eq {neg moveto show} if
fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if
fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if
fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if
} bind def
/F {
/fontkind exch def
fontkind plain eq {fess} if
fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if
fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if
fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if
} bind def
/makeoutlinedict 15 dict def
/makeoutlinefont
{
makeoutlinedict begin
/uniqueid exch def
/strokewidth exch def
/newfontname exch def
/basefontname exch def
/basefontdict basefontname findfont def
/numentries basefontdict maxlength 1 add def
basefontdict /UniqueID known not
{/numentries numentries 1 add def} if
/outfontdict numentries dict def
basefontdict
{
exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse
}forall
outfontdict /FontName newfontname put
outfontdict /PaintType 2 put
outfontdict /StrokeWidth strokewidth put
outfontdict /UniqueID uniqueid put
newfontname outfontdict definefont pop
end
}def
/UID {
findfont dup /UniqueID known
{/UniqueID get 1 add}
{pop 1}
ifelse
} def
/OLF {
dup
/Outline
1000 62 div
4 -1 roll
UID
/outlineFontSize 5 index def
makeoutlinefont
/Outline findfont exch scalefont setfont
} def
/CopyEncoding {
findfont
/Encoding get
dup length array
/tarrayz exch def
tarrayz 0
3 -1 roll
putinterval
tarrayz
} bind def
/Re-encode {
dup length array copy
/eap 0 def
exch {
dup type /integertype eq {
/eap exch def
} {
1 index
exch
eap exch
put
/eap eap 1 add def
} ifelse
} forall
} bind def
/EncodeFont {
findfont dup
length dict
begin
{ 1 index /FID ne
{ def }
{ pop pop } ifelse
} forall
/FontName exch def
/Encoding exch def
FontName currentdict
end
definefont pop
} bind def
/clip2pathbbox {
/magicNum linewidth 2 div 1 2 sqrt div mul def
pathbbox
/urymn exch magicNum add def
/urxmn exch magicNum add def
/llymn exch magicNum sub def
/llxmn exch magicNum sub def
newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto
closepath clip newpath
} bind def
/Line {
MAV /LC get length 0 ne
{
gsave
newpath
MAV /ArrowType get length 0 eq
MAV /SD get length 0 eq and
{2 setlinecap /UseClip {clip2pathbbox} def }
{0 setlinecap /UseClip {} def } ifelse
0 792 translate
1 -1 scale
CTM currentmatrix pop
/yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def
MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and
{xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto}
{xStart yStart moveto xEnd yEnd lineto} ifelse
linewidth setlinewidth SD strokepath
CheckPath {LC PF ArrowType} if
grestore
}
{pop pop pop pop pop} ifelse
} bind def
/CompensateForStroke {
sin currentlinewidth mul
exch
cos currentlinewidth mul
dup 0 translate
4 -1 roll exch 2.0 mul sub
3 1 roll
2.0 mul sub
} bind def
/arrowdict 10 dict def
arrowdict begin
/SwallowTail {
newpath
0.0 0.0 moveto
1.0 -.5 lineto
.666 0.0 lineto
1.0 .5 lineto
closepath
} bind def
/Triangular {
newpath
0.0 0.0 moveto
1.0 -.5 lineto
1.0 .5 lineto
closepath
} bind def
/OpenTri {
newpath
1.0 0.5 moveto
0.0 0.0 lineto
1.0 -0.5 lineto
} bind def
/ClosedTri {
newpath
1.0 0.5 moveto
0.0 0.0 lineto
1.0 -0.5 lineto
closepath
} bind def
/SlashBar {
newpath
0.5 -.5 moveto
-.5 0.5 lineto
} bind def
/Dot {
newpath
0.5 0.0 moveto
0 0 1 0 360 arc
closepath
} bind def
/ExtSlashBar {
newpath
1.0 -.5 moveto
0.0 0.5 lineto
} bind def
end
/ScaleArrowHead {
0 0 4 -2 roll
0 0 1 1
8 -4 roll GetBoxesRatio
scale
} bind def
/DrawArrowHead {
gsave
[] 0 setdash
currentpoint translate rotate
{
4 copy
gsave
initmatrix
100 200 translate
msave
ScaleArrowHead pop
arrowdict exch get exec
mrestore
strokepath
0 0 3 index 3 index
pathbbox 8 4 roll
GetBoxesRatio
4 2 roll
grestore
3 index 1.0 exch sub
6 -1 roll
{
2 index mul
0 translate
}{
pop
} ifelse
msave
ScaleArrowHead scale
arrowdict exch get exec
mrestore
strokepath
} {
msave
ScaleArrowHead
arrowdict exch get exec
mrestore
} ifelse
CheckPath {
LC PF
} if
grestore
} bind def
/SR {
pbox left get pbox top get moveto
pbox right get pbox top get lineto
pbox right get pbox bottom get lineto
pbox left get pbox bottom get lineto
closepath
} bind def
/RR1 {
pbox top get pbox bottom get sub abs
pbox left get pbox right get sub abs
2 copy lt {
Min
2 div dup dup dup
pbox left get add pbox left 3 -1 roll put
pbox right get exch sub pbox right 3 -1 roll put
pbox left get pbox bottom get moveto
pbox right get 0 3 -1 roll 90 -90 arcn
pbox left get 0 3 -1 roll -90 90 arcn closepath
} {
Min
2 div dup dup dup
pbox bottom get exch sub pbox bottom 3 -1 roll put
pbox top get add pbox top 3 -1 roll put
pbox left get pbox bottom get moveto
pbox left get add pbox top get
2 index
180 0 arc
dup pbox left get add pbox bottom get
3 -1 roll 0 180 arc
closepath
} ifelse
} bind def
/RR2 {
dup dup dup dup dup dup dup dup
pbox top get add pbox top 3 -1 roll put
pbox left get add pbox left 3 -1 roll put
pbox bottom get exch sub pbox bottom 3 -1 roll put
pbox right get exch sub pbox right 3 -1 roll put
pbox bottom get add pbox left get exch moveto
pbox right get pbox bottom get 3 -1 roll 90 0 arcn
pbox right get pbox top get 3 -1 roll 0 270 arcn
pbox left get pbox top get 3 -1 roll 270 180 arcn
pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath
} bind def
/StripFromFront {
dup length
2 index sub
3 1 roll
exch 3 -1 roll
getinterval
} bind def
/MakePathArray {
/k 0 def
{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall
k array
/k 0 def
{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def}
{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def}
{{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def}
{{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def}
pathforall
}bind def
/MakeFlatPathArray {
/k 0 def
{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall
k array
/k 0 def
{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def}
{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def}
{ pop pop pop pop pop pop}
{}
pathforall
}bind def
/FractionalLine {
2 index sub
.00001 mul
exch
3 index sub
.00001 mul
4 -1 roll add
3 1 roll
add
} bind def
/calcLineLength {
exch
4 -1 roll
sub
dup mul
3 1 roll exch
sub
dup mul
add sqrt
} bind def
/InitTotalLineLength {
/oldY exch def
/oldX exch def
theDash aload pop currentLineLength add setdash
} bind def
/AccumeLineLength {
3 copy pop
2 copy
oldX oldY
4 2 roll calcLineLength
/segmentLength exch def
/currentLineLength currentLineLength segmentLength add def
/oldY exch def
/oldX exch def
} bind def
/DecumeLastLineLength {
/currentLineLength currentLineLength segmentLength sub def
} bind def
/DrawFlattendSegment {
/pointCount 2 def
dup 0 lt { pop 0 } if
fpc
3 1 roll
2 index
1 index
gt {
2 copy get
dup length
dup 3 eq {
pop
dup 0 get
exch 1 get
2 copy InitTotalLineLength
m
} {
} ifelse
} {
pop 1 index
} ifelse
dup 1 add
3 index
exch sub
dup 10 gt { pop 10} if
{
1 add
2 copy
get aload pop
AccumeLineLength
exec
} repeat
3 1 roll pop pop
DecumeLastLineLength
} bind def
/IncFPC {
fpc add
/fpc exch def
} bind def
/DrawFlatPathArray {
fpc
0 {
dup 2 index
1 sub
lt {
flatPathArray exch
newpath
1 sub DrawFlattendSegment
gsave
pathSegProc
grestore
newpath
}
{
pop pop
exit
} ifelse
} loop
} bind def
/RecordFirstSubSegment {
closepathArray 0 pathArray 0 get
put
closepathArray 1
pathArray 0 get aload pop pop
pathArray 1 get dup length 3 eq {
aload pop pop
} {
newpath
0 0 moveto
aload pop exec
/segmentArray flattenpath MakeFlatPathArray def
segmentArray 1 get aload pop pop
} ifelse
FractionalLine {lineto} 3 array astore
put
} bind def
/AppendClosePath {
closepathArray 0 get 2 {lineto} put
flatPathArray fpc closepathArray 0 get put
1 IncFPC
flatPathArray fpc closepathArray 1 get put
1 IncFPC
} bind def
/RecordCurrentDash {
/theDash
currentdash 2 array astore def
/currentLineLength 0 def
} bind def
/PatternStroke {
0 setlinecap
RecordCurrentDash
/saveFlat currentflat def
.5 setflat
/pathArray MakePathArray def
/closepathArray 2 array def
/pathLength pathArray length def
/flatPathArray 513 array def
/currentLineLength 0 def
/fpc 0 def
pathArray pathLength 1 sub get
length 1 eq {
/usingClosepath true def
RecordFirstSubSegment
/pathLength pathLength 1 sub def
} {
/usingClosepath false def
} ifelse
0 1 pathLength 1 sub {
pathArray exch get
dup length 3 eq {
fpc 1 add 512 ge {
DrawFlatPathArray
fpc 2 ge {
flatPathArray flatPathArray fpc 2 sub get 0 put
flatPathArray flatPathArray fpc 1 sub get 1 put
/fpc 2 def
}{
/fpc 0 def
} ifelse
} if
flatPathArray exch fpc exch put
1 IncFPC
} {
dup length 7 eq {
newpath
/nToStrip 0 def
fpc 1 gt {
flatPathArray fpc 2 sub get aload pop pop m
flatPathArray fpc 1 sub get aload pop exec
/nToStrip 2 def
} {
fpc 1 eq {
flatPathArray fpc 1 sub get aload pop exec
/nToStrip 2 def
} if
} ifelse
aload pop exec
/segmentArray flattenpath MakeFlatPathArray def
/segmentArray nToStrip segmentArray StripFromFront def
segmentArray length fpc add 512 lt {
flatPathArray fpc segmentArray putinterval
segmentArray length IncFPC
} {
DrawFlatPathArray
fpc 1 gt {
flatPathArray flatPathArray fpc 2 sub get 0 exch put
flatPathArray flatPathArray fpc 1 sub get 1 exch put
/fpc 2 def
}{
/fpc 0 def
} ifelse
segmentArray length 512 lt {
flatPathArray fpc segmentArray putinterval
segmentArray length IncFPC
} {
segmentArray length
/exitLoop false def
0
{
2 copy sub
dup 500 gt {
pop 500
} {
/exitLoop true def
} ifelse
segmentArray 2 index 2 index getinterval
flatPathArray fpc 3 -1 roll putinterval
dup IncFPC
add
exitLoop {
exit
} {
DrawFlatPathArray
fpc 1 gt {
flatPathArray flatPathArray fpc 2 sub get 0 exch put
flatPathArray flatPathArray fpc 1 sub get 1 exch put
/fpc 2 def
}{
/fpc 0 def
} ifelse
} ifelse
} loop
} ifelse
} ifelse
} if
} ifelse
} for
fpc 0 gt {
usingClosepath {
AppendClosePath
} if
DrawFlatPathArray
} if
saveFlat setflat
} bind def
initmsaverestore
/tctm matrix currentmatrix def
tctm RoundMatrix setmatrix
/patternMatrix mstore def
10 setmiterlimit
2 setlinecap
newpath
/RT {13.500 RR2} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.020 setcmykcolor end} {0.979 0.979 0.979 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 27.000 18.000 0.000 0.000 396.000 396.000 rect
save
[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
/hungarumlaut/ogonek/caron]
StandardEncoding Re-encode /_NewCenturySchlbk-Roman /NewCenturySchlbk-Roman EncodeFont
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 42.000 72.000 0.000 0.000 21.000 123.631 rect
gsave
133.815 52.500 T translate
0.0 rotate
1 1 scale
18.000 (_NewCenturySchlbk-Roman) plain F
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(R) -61.500 5.000 S
(o) -48.505 5.000 S
(w) -39.505 5.000 S
( ) -25.504 5.000 S
(V) -20.503 5.000 S
(e) -7.508 5.000 S
(c) 1.491 5.000 S
(t) 9.480 5.000 S
(o) 16.480 5.000 S
(r) 25.480 5.000 S
( ) 33.470 5.000 S
(-) 38.471 5.000 S
( ) 44.460 5.000 S
(X) 49.461 5.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 168.000 63.000 0.000 0.000 41.000 302.295 rect
gsave
214.147 188.500 T translate
0.0 rotate
1 1 scale
18.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(D) -150.500 -5.000 S
(i) -136.499 -5.000 S
(s) -130.830 -5.000 S
(t) -122.498 -5.000 S
(r) -115.497 -5.000 S
(i) -107.508 -5.000 S
(b) -101.839 -5.000 S
(u) -91.833 -5.000 S
(t) -80.837 -5.000 S
(i) -73.837 -5.000 S
(o) -68.168 -5.000 S
(n) -59.168 -5.000 S
( ) -48.173 -5.000 S
(o) -43.172 -5.000 S
(f) -34.172 -5.000 S
( ) -28.182 -5.000 S
(X) -23.181 -5.000 S
( ) -10.512 -5.000 S
(a) -5.511 -5.000 S
(n) 4.495 -5.000 S
(d) 15.490 -5.000 S
( ) 25.821 -5.000 S
(Y) 30.822 -5.000 S
( ) 43.492 -5.000 S
(R) 48.493 -5.000 S
(o) 61.487 -5.000 S
(w) 70.487 -5.000 S
( ) 84.488 -5.000 S
(V) 89.489 -5.000 S
(e) 102.484 -5.000 S
(c) 111.484 -5.000 S
(t) 119.473 -5.000 S
(o) 126.474 -5.000 S
(r) 135.474 -5.000 S
(s) 143.463 -5.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(O) -96.016 15.000 S
(v) -82.015 15.000 S
(e) -72.352 15.000 S
(r) -63.352 15.000 S
( ) -55.362 15.000 S
(2) -50.361 15.000 S
( ) -40.355 15.000 S
(x) -35.354 15.000 S
( ) -25.690 15.000 S
(2) -20.689 15.000 S
( ) -10.683 15.000 S
(L) -5.682 15.000 S
(o) 6.323 15.000 S
(g) 15.323 15.000 S
(i) 24.986 15.000 S
(c) 30.655 15.000 S
(a) 38.645 15.000 S
(l) 48.651 15.000 S
( ) 54.320 15.000 S
(G) 59.321 15.000 S
(r) 73.322 15.000 S
(i) 81.311 15.000 S
(d) 86.980 15.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 72.000 63.000 0.000 0.000 72.000 144.000 rect
/ArrowType{ } def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 135.000 144.000 135.000 72.000 Line
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 105.000 87.662 0.000 0.000 27.666 22.675 rect
gsave
99.000 118.833 T translate
0.0 rotate
1 1 scale
18.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(X) -10.837 2.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(1) 1.831 9.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 105.000 159.662 0.000 0.000 27.666 22.675 rect
gsave
171.000 118.833 T translate
0.0 rotate
1 1 scale
18.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(X) -10.837 2.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(2) 1.831 9.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 42.000 234.000 0.000 0.000 21.000 123.631 rect
gsave
295.815 52.500 T translate
0.0 rotate
1 1 scale
18.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(R) -61.500 5.000 S
(o) -48.505 5.000 S
(w) -39.505 5.000 S
( ) -25.504 5.000 S
(V) -20.503 5.000 S
(e) -7.508 5.000 S
(c) 1.491 5.000 S
(t) 9.480 5.000 S
(o) 16.480 5.000 S
(r) 25.480 5.000 S
( ) 33.470 5.000 S
(-) 38.471 5.000 S
( ) 44.460 5.000 S
(Y) 49.461 5.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 72.000 225.000 0.000 0.000 72.000 144.000 rect
/ArrowType{ } def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 297.000 144.000 297.000 72.000 Line
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 105.000 249.662 0.000 0.000 27.666 22.675 rect
gsave
261.000 118.833 T translate
0.0 rotate
1 1 scale
18.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(Y) -10.837 2.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(1) 1.831 9.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 105.000 321.662 0.000 0.000 27.666 22.675 rect
gsave
333.000 118.833 T translate
0.0 rotate
1 1 scale
18.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(Y) -10.837 2.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(2) 1.831 9.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 261.000 90.000 0.000 0.000 144.000 144.000 rect
/ArrowType{ } def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 162.000 405.000 162.000 261.000 Line
/ArrowType{ } def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 234.000 333.000 90.000 333.000 Line
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 285.000 95.822 0.000 0.000 27.666 60.354 rect
gsave
126.000 298.833 T translate
0.0 rotate
1 1 scale
18.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(X) -29.677 2.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(1) -17.007 9.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
( ) -7.001 2.000 S
(/) -2.000 2.000 S
( ) 3.000 2.000 S
(Y) 8.001 2.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(1) 20.670 9.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 285.000 167.822 0.000 0.000 27.666 60.354 rect
gsave
198.000 298.833 T translate
0.0 rotate
1 1 scale
18.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(X) -29.677 2.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(2) -17.007 9.000 S
( ) -7.001 9.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(/) -2.000 2.000 S
( ) 3.000 2.000 S
(Y) 8.001 2.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(2) 20.670 9.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 357.000 95.822 0.000 0.000 27.666 60.354 rect
gsave
126.000 370.833 T translate
0.0 rotate
1 1 scale
18.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(X) -29.677 2.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(1) -17.007 9.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
( ) -7.001 2.000 S
(/) -2.000 2.000 S
( ) 3.000 2.000 S
(Y) 8.001 2.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(1) 20.670 9.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 357.000 167.822 0.000 0.000 27.666 60.354 rect
gsave
198.000 370.833 T translate
0.0 rotate
1 1 scale
18.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(X) -29.677 2.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(2) -17.007 9.000 S
( ) -7.001 9.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(/) -2.000 2.000 S
( ) 3.000 2.000 S
(Y) 8.001 2.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(2) 20.670 9.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 285.000 32.539 0.000 0.000 21.000 42.921 rect
gsave
54.000 295.500 T translate
0.0 rotate
1 1 scale
18.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(P) -20.960 5.000 S
( ) -8.954 5.000 S
(=) -3.953 5.000 S
( ) 6.953 5.000 S
(0) 11.954 5.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 357.000 32.539 0.000 0.000 21.000 42.921 rect
gsave
54.000 367.500 T translate
0.0 rotate
1 1 scale
18.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(P) -20.960 5.000 S
( ) -8.954 5.000 S
(=) -3.953 5.000 S
( ) 6.953 5.000 S
(1) 11.954 5.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 231.000 103.541 0.000 0.000 21.000 44.916 rect
gsave
126.000 241.500 T translate
0.0 rotate
1 1 scale
18.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(Q) -21.958 5.000 S
( ) -7.957 5.000 S
(=) -2.956 5.000 S
( ) 7.950 5.000 S
(0) 12.951 5.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 231.000 175.541 0.000 0.000 21.000 44.916 rect
gsave
198.000 241.500 T translate
0.0 rotate
1 1 scale
18.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(Q) -21.958 5.000 S
( ) -7.957 5.000 S
(=) -2.956 5.000 S
( ) 7.950 5.000 S
(1) 12.951 5.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 294.000 288.162 0.000 0.000 81.000 126.953 rect
gsave
351.639 334.500 T translate
0.0 rotate
1 1 scale
18.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(X) -63.337 -25.000 S
( ) -50.667 -25.000 S
(a) -45.666 -25.000 S
(n) -35.660 -25.000 S
(d) -24.665 -25.000 S
( ) -14.333 -25.000 S
(Y) -9.333 -25.000 S
( ) 3.336 -25.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(V) -63.337 -5.000 S
(e) -50.342 -5.000 S
(c) -41.342 -5.000 S
(t) -33.353 -5.000 S
(o) -26.353 -5.000 S
(r) -17.353 -5.000 S
(s) -9.363 -5.000 S
( ) -1.031 -5.000 S
(a) 3.969 -5.000 S
(r) 13.975 -5.000 S
(e) 21.964 -5.000 S
( ) 30.964 -5.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(R) -63.337 15.000 S
(e) -50.342 15.000 S
(p) -41.342 15.000 S
(l) -31.011 15.000 S
(i) -25.342 15.000 S
(c) -19.673 15.000 S
(a) -11.684 15.000 S
(t) -1.677 15.000 S
(e) 5.322 15.000 S
(d) 14.322 15.000 S
( ) 24.654 15.000 S
(f) 29.655 15.000 S
(o) 35.645 15.000 S
(r) 44.645 15.000 S
( ) 52.634 15.000 S
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(E) -63.337 35.000 S
(a) -50.342 35.000 S
(c) -40.336 35.000 S
(h) -32.347 35.000 S
( ) -21.352 35.000 S
(R) -16.351 35.000 S
(o) -3.356 35.000 S
(w) 5.643 35.000 S
grestore
/ArrowType{
1.000 setlinewidth
243.000 306.000 moveto
/Triangular 14.099 7.049 false 396.898 DrawArrowHead
} bind def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 244.600 307.199 279.000 333.000 Line
/ArrowType{
1.000 setlinewidth
243.000 360.000 moveto
/Triangular 14.099 7.049 false 323.152 DrawArrowHead
} bind def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 244.599 358.799 279.000 333.000 Line
restore
end
%%EndDocument
-34 933 a
endTexFig
-57 1953 a Fg(Figure)h(1:)17 b(This)c(\014gure)f(sho)o(ws)h(the)g(la)o(y)o
(out)e(of)h(t)o(w)o(o)g(ro)o(w)g(v)o(ec-)-57 2002 y(tors)i(o)o(v)o(er)g(a)g
(2)f(x)h(2)f(logical)f(pro)q(cess)k(grid.)h(Column)12 b(v)o(ectors)-57
2052 y(are)19 b(laid)e(out)i(in)f(an)g(analogous,)g(fashion,)g(orthogonal)f
(to)-57 2102 y(the)d(ro)o(w)g(v)o(ectors.)-57 2248 y Fj(4.2)52
b(Creating)18 b(a)g(Logical)i(Grid)-7 2350 y Fg(MPI)c(pro)o(vides)h(a)f(set)i
(of)d(routines)i(whic)o(h)g(can)f(b)q(e)h(used)-57 2400 y(to)e(create)h
(virtual)e(top)q(ologies.)21 b(In)15 b(this)g(\014rst)g(example,)f(w)o(e)-57
2450 y(sho)o(w)j(ho)o(w)g(a)g(library)g(writer)h(migh)o(t)d(create)k(a)e
(logical)f(2D)-57 2500 y(grid)9 b(structure)i(without)e(using)g(the)h(top)q
(ology)e(routines)i(pro-)-57 2550 y(vided)k(b)o(y)g(MPI.)-7
2600 y(Here)g(is)e(the)i(p)q(ersisten)o(t)g(data)f(structure)h(needed)h(to)d
(cre-)-57 2650 y(ate)j(a)g(logical)e(grid)h(along)g(with)g(a)h(simple)e
(function)i(to)f(ini-)-57 2700 y(tialize)f(a)h(grid.)1013 117
y Fb(/*)21 b(from)g(tbx_library.h)e(*/)1013 166 y(typedef)h(struct)h
(tbx_2d_grid)1013 216 y({)1056 266 y(int)h(P,)f(Q;)43 b(/*)22
b(global)e(shape)h(*/)1056 316 y(int)h(p,)f(q;)43 b(/*)22 b(position)e(*/)
1056 415 y(MPI_Comm)h(grid_comm;)1056 465 y(MPI_Comm)g(row_comm;)1056
515 y(MPI_comm)g(col_comm;)1013 565 y(})g(TBX_2D_GRID;)1013
664 y(/*)g(from)g(tbx_grid.c)f(*/)1013 714 y(TBX_GRID)g(*tbx_build_grid\(M)o
(PI_Co)o(mm)f(comm,)1558 764 y(int)i(P,)g(Q\))1013 814 y({)1056
864 y(TBX_2D_GRID)f(*grid;)1056 914 y(int)152 b(my_rank;)1056
963 y(int)g(p,)22 b(q;)1056 1063 y(/*)g(Make)f(new)g(grid)g(*/)1056
1113 y(grid)g(=)h(NEW_CLEAR_ITEM\(TB)o(X_2D_)o(GRID,)c(1\);)1056
1163 y(MPI_Comm_dup\(comm,)g(&\(grid->grid_comm\)\);)1056 1262
y(/*)k(Determine)e(row)h(and)g(column)g(position)f(*/)1056
1312 y(MPI_Comm_rank\(grid-)o(>grid)o(_comm)o(,)f(&my_rank\);)1056
1362 y(p)j(=)g(my_rank)e(/)i(Q;)1056 1412 y(q)g(=)g(my_rank)e(\045)i(Q;)1056
1511 y(/*)g(Split)f(comm)g(into)f(row)i(and)f(col)g(comms)g(*/)1056
1561 y(MPI_Comm_split\(grid)o(->gri)o(d_com)o(m,)e(p,)i(q,)1383
1611 y(&\(grid->row\)\);)1056 1661 y(MPI_Comm_split\(grid)o(->gri)o(d_com)o
(m,)e(q,)i(p,)1383 1711 y(&\(grid->col\)\);)1056 1810 y(/*)h(Fill)f(in)g(my)h
(position)e(and)h(grid)g(size)g(*/)1056 1860 y(grid->P)195
b(=)22 b(P;)1056 1910 y(grid->Q)195 b(=)22 b(Q;)1056 1960 y(grid->p)195
b(=)22 b(p;)1056 2009 y(grid->q)195 b(=)22 b(q;)1056 2109 y(/*)g(Return)e
(the)i(newly)e(built)h(grid)g(*/)1056 2159 y(return)g(\(grid\);)1013
2209 y(})1013 2305 y Fj(4.3)52 b(V)l(ector)17 b(Structure)g(and)h(Creation)
1063 2401 y Fg(V)m(ectors)12 b(are)h(de\014ned)g(b)o(y)e(the)i(follo)o(wing)c
(data)i(structure.)1013 2451 y(As)19 b(a)f(distributed)h(ob)r(ject,)h(they)f
(con)o(tain)f(lo)q(cal)g(informa-)1013 2501 y(tion)12 b(including)f(global)g
(and)i(lo)q(cal)e(lengths,)i(lo)q(cal)f(real)g(data)1013 2551
y(storage,)f(and)g(a)g(t)o(yp)q(e)h(\014eld)f(that)g(indicates)h(if)e(they)i
(are)f(ro)o(w-)1013 2600 y(or)g(column-distributed.)16 b(In)c(addition,)e
(the)j(data)e(structure)1013 2650 y(is)h(based)h(on)e(a)h(logical)f(grid)g
(top)q(ology)g(data)h(structure,)i(and)1013 2700 y(a)d(data)g(distribution)g
(top)q(ology)m(.)k(The)d(former)f(encapsulates)p eop
%%Page: 5 5
bop -57 117 a Fg(comm)o(unicators,)10 b(the)i(latter)g(encapsulates)i
(functions)e(that)-57 166 y(map)f(global)f(indices)j(to)f(lo)q(cal)g(indices)
g(and)h(vice)f(v)o(ersa.)18 b(See)-57 216 y(Figure)c(2.)-57
299 y Fb(/*)21 b(from)g(tbx_library.h)e(*/)-57 399 y(#define)h(TBX_ROW)h(0)
-57 449 y(#define)f(TBX_COL)h(1)-57 548 y(typedef)f(struct)h(tbx_dvector)-57
598 y({)-13 648 y(int)g(length;)85 b(/*)22 b(full)f(length)f(of)i(vector)e
(*/)-13 698 y(int)h(local_length;/*)d(local)j(vector)g(length)f(*/)-13
747 y(int)h(type;)195 b(/*)21 b(row)g(or)h(column)e(type)h(*/)-13
847 y(double)f(*data;)108 b(/*)21 b(vector)g(data)g(*/)-13
947 y(TBX_2D_GRID)e(*grid;)42 b(/*)22 b(logical)e(grid)h(*/)-13
996 y(TBX_DISTRIB)e(*dis;)64 b(/*)22 b(how)f(to)g(map)h(data)f(*/)-13
1096 y(/*)g(functions)f(working)g(on)i(vectors)e(*/)-13 1146
y(double)g(\(*dot\))h(\(struct)f(tbx_dvector)g(*x,)h(*y\);)-13
1196 y(/*)g(...)g(*/)-57 1295 y(})h(TBX_DVECTOR;)-57 1378 y
Fg(The)f(follo)o(wing)c(function)j(is)h(the)f(constructor)i(for)e(a)g(dis-)
-57 1428 y(tributed)15 b(v)o(ector.)-57 1504 y Fb(/*)21 b(from)g
(tbx_dvector.c)e(*/)-57 1604 y(/*)-35 1654 y(*)i(length)g(=)h(total)e(length)
h(of)g(vector)-35 1704 y(*)g(type)65 b(=)22 b(row)f(or)g(column)g(vector?)-35
1754 y(*)g(grid)65 b(=)22 b(grid)e(which)h(vector)g(belongs)f(to)-35
1803 y(*)h(dis)87 b(=)22 b(distribution)d(functions)-35 1853
y(*)218 b(\(how)20 b(coefficients)g(map\))-35 1903 y(*/)-57
1953 y(TBX_DVECTOR)-35 2003 y(*new_dvector\(int)e(length,)j(type,)96
2052 y(TBX_GRID)f(*grid,)g(TBX_DISTRIB)g(*dis\))-57 2102 y({)-13
2152 y(TBX_DVECTOR)f(*vec;)-13 2202 y(int)217 b(local_length;)-13
2301 y(/*)21 b(Create)g(a)g(new)g(vector)g(*/)-13 2351 y(vec)g(=)g
(NEW_CLEAR_ITEM\(TBX_)o(DVECT)o(OR,1\))o(;)-13 2451 y(/*)g(figure)g(the)g
(local)f(length)h(-)h(i.e.,)e(how)i(*/)-13 2501 y(/*)f(many)g(coefficients)e
(\(and)i(which)g(ones\))43 b(*/)-13 2551 y(/*)21 b(map)g(to)h(this)e(process)
370 b(*/)-13 2600 y(local_length)19 b(=)i(\(*dis)g(->)h(local_length\)\()335
2650 y(grid,)f(dis,)g(length,)f(type\);)1056 117 y(/*)i(Fill)f(in)g(the)g
(vector)g(structure)f(*/)1056 166 y(vec->length)151 b(=)21
b(length;)1056 216 y(vec->local_length)e(=)i(local_length;)1056
266 y(vec->data)195 b(=)1122 316 y(NEW_CLEAR_ITEM\(d)o(ouble)o(,loca)o(l_len)
o(gth\);)1056 366 y(vec->type)g(=)21 b(type;)1056 415 y(vec->grid)195
b(=)21 b(grid;)1056 465 y(vec->dis)217 b(=)21 b(dis;)1056 565
y(/*)h(assign)e(values)h(to)g(default)g(fns)g(*/)1056 615 y(vec->dot)g(=)g
(ddot_strided;)1056 664 y(/*)h(...)f(*/)1013 714 y(})1036 801
y
14800896 18353106 1151180 10031718 32594862 49171865 startTexFig
1036 801 a
%%BeginDocument: fig/vector-structure2.0.eps
/MAV 300 dict def
MAV begin
/useClip true def
/top 0 def
/left 1 def
/bottom 2 def
/right 3 def
/CM 6 array def
/CTM 6 array def
/CTMR 6 array def
/MTC 6 array def
/blimit 1500 def
/bcnt 0 def
/rbox 8 array def
/segbox 8 array def
/bbox1 4 array def
/c1 3 array def
/c2 3 array def
/d 3 array def
/delta 3 array def
/mycurrentrgbcolor 3 array def
/ulx 0 def
/uly 1 def
/llx 2 def
/lly 3 def
/urx 4 def
/ury 5 def
/lrx 6 def
/lry 7 def
/sp [0 0] def
/ep [0 0] def
/bbox 4 array def
/pbox 4 array def
/scrnProc currentscreen 3 1 roll pop pop def
/currentcolorscreen where {
begin
currentcolorscreen
end
3 1 roll pop pop
4 2 roll pop pop
5 -2 roll pop pop
6 -2 roll pop pop
/kProc exch def
/bProc exch def
/gProc exch def
/rProc exch def
} if
/Max {2 copy gt {pop}{exch pop} ifelse} bind def
/Min {2 copy lt {pop}{exch pop} ifelse} bind def
/cellPenW 72.0 /currentcolorscreen where
{begin currentcolorscreen end pop pop
10 1 roll pop pop 8 1 roll pop pop
6 1 roll pop pop Max Max Max }
{currentscreen pop pop} ifelse div 2.0 div def
/rect {
/saveobj save def
R PC PF LC SS
saveobj restore
} bind def
/R {
newpath
pbox astore pop
0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate
/objectCord mstore def
pbox right get 2 div
dup pbox left get exch sub
pbox left 3 -1 roll put
dup pbox right 3 -1 roll put
pbox bottom get 2 div
dup pbox top get exch sub
pbox top 3 -1 roll put
dup pbox bottom 3 -1 roll put
translate
CTM currentmatrix pop
57.3 mul rotate
RT
} bind def
/SaveScreenBW {
currentscreen
/scrnProc exch def
/scrnAngle exch def
/scrnFreq exch def
} bind def
/RestoreScreenBW {
scrnFreq scrnAngle MAV /scrnProc get setscreen
} bind def
/SetFreqAngleBW {
currentscreen
3 1 roll
pop pop
setscreen
} bind def
/SaveScreenColor {
currentcolorscreen
/grayProc exch def
/grayAngle exch def
/grayFreq exch def
/bProc exch def
/bAngle exch def
/bFreq exch def
/gProc exch def
/gAngle exch def
/gFreq exch def
/rProc exch def
/rAngle exch def
/rFreq exch def
} bind def
/RestoreColorScreen {
rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen
} bind def
/SetFreqAngleColor {
currentcolorscreen
3 1 roll pop pop
4 2 roll pop pop
5 -2 roll pop pop
6 -2 roll pop pop
4 1 roll
6 1 roll
8 1 roll
10 1 roll
setcolorscreen
} bind def
/initmsaverestore {
userdict begin
/mdict 10 dict def
mdict begin
/mindex -1 def
/mstacksize 25 def
/mstack mstacksize array def
/incmindex {
/mindex mindex 1 add def
} bind def
/decmindex {
/mindex mindex 1 sub def
} bind def
/checkmindex {
mindex 0 lt {
(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore'
) print flush
stop
}
{
mindex mstacksize ge {
(%ERROR: msave/mrestore stack overflow: Offending command 'msave'
) print flush
stop
} if
} ifelse
} bind def
/mpush {
incmindex
checkmindex
mstack mindex
3 -1 roll put
} bind def
/mpop {
checkmindex
mstack mindex get
decmindex
} bind def
end
end
} bind def
/msave {
mdict begin
matrix currentmatrix mpush
end
} bind def
/mrestore {
mdict begin
mpop setmatrix
end
} bind def
/msavelevel {
mdict begin
mindex 1 add
end
} bind def
/mstore {
matrix currentmatrix
} bind def
/AutoSizeY {
0 0 pl
dup 3 1 roll
4 -1 roll
add
pl exch pop
exch sub
} bind def
/pl {
transform
0.25 sub round 0.25 add exch
0.25 sub round 0.25 add exch
itransform
} bind def
/pll {
transform
round exch
round exch
itransform
} bind def
/pr {
dtransform
round exch
round exch
idtransform
} bind def
/m {
pl moveto
} bind def
/l {
pl lineto
} bind def
/c {
pl curveto
} bind def
/rm {
pr rmoveto
} bind def
/rl {
pr rlineto
} bind def
/ar {
5 -2 roll pl
5 2 roll
arc
} bind def
/an {
5 -2 roll pl
5 2 roll
arcn
} bind def
/MakePatternFont {
/FontDict 20 dict def
FontDict begin
/FontName exch def
/Encoding exch def
/FontMatrix [1 0 0 1 0 0 ] def
/FontType 3 def
/FontBBox [ 0 0 1 1 ] def
/PatternDict exch def
/RenderPattern {
patternDict exch get
exec
} bind def
/BuildChar {
exch begin
1 0 0 0 1 1 setcachedevice
Encoding exch get RenderPattern
end
} bind def
FontName FontDict definefont pop
end
} bind def
/SnapToPattenGrid
{
exch
dup 0 lt {
1 index sub
} if
1 index
div truncate
mul
} bind def
/FillPatternString {
dup length
1 sub
0 1 3 -1 roll {
2 index
2 index
3 -2 roll
put
} for
pop pop
} bind def
/AutoSizeY {
0.0 exch dtransform
round
idtransform exch pop
} bind def
/AutoSizeX {
0.0 dtransform
exch
round
exch
idtransform pop
} bind def
/AutoCellSize {
AutoSizeY
exch
AutoSizeX
exch
} bind def
/CheckPath {
false
{ pop pop pop true exit}
{ pop pop pop true exit}
{ pop pop pop pop pop pop pop true exit}
{ pop true exit}
pathforall
} bind def
/PatternFill { % patternCharacter
/patternString 1 string def
/cm mstore def
patternMatrix setmatrix
1 1 AutoCellSize
dup 0 eq { pop 1} if
exch
dup 0 eq { pop 1} if
exch
/patternSize exch 24.0 mul def
/PatternSizeX exch 24.0 mul patternString length mul def
/flaterror 0 def
patternString FillPatternString
gsave
flaterror 1 add setflat
flattenpath
pathbbox
grestore
psy add flaterror add psy SnapToPattenGrid
exch psx add flaterror add psx SnapToPattenGrid
3 -1 roll flaterror sub psy SnapToPattenGrid
4 -1 roll flaterror sub psx SnapToPattenGrid
4 2 roll pll
4 2 roll pll
/llxsnap exch def
/llysnap exch def
/urxsnap exch def
/urysnap exch def
gsave
useClip true eq {clip}{eoclip} ifelse newpath
/PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont
llysnap patternSize urysnap {
llxsnap exch moveto
llxsnap PatternSizeX urxsnap {
pop
patternString show
%currentpoint am
} for
} bind for
grestore
cm setmatrix
} bind def % End 'PatternFill'
/DefaultPatternFont {
/cm mstore def
patternMatrix setmatrix
1 1 AutoCellSize
dup 0 eq { pop 1} if
exch
dup 0 eq { pop 1} if
exch
/psy exch iSizeY mul def
/psx exch iSizeX mul def
/patternDict 64 dict def
patternDict begin
/NotDef {} def
/LiteDiagLines {
iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY]
{pat}
imagemask
} bind def
end
/CustEncoding 256 array def
0 255 1 {
CustEncoding exch /NotDef put
} bind for
CustEncoding 65 /LiteDiagLines put
patternDict CustEncoding /PatternFont MakePatternFont
/pathSegProc {
strokepath
CheckPath {
65 PatternFill newpath
} if
} bind def
cm setmatrix
} bind def
/XRound {
dup
3 -1 roll
exch mul round
exch div
} bind def
/RoundMatrix {
/i 0 def
dup {
100000.0 XRound
1 index
exch i exch put
/i i 1 add def
} forall
} bind def
/GetBoxesRatio {
3 -1 roll sub
7 1 roll
exch sub
6 1 roll
3 -1 roll sub
5 1 roll
exch sub
4 1 roll
3 -1 roll div
3 1 roll
exch div
exch
} bind def
/T {792 exch sub} bind def
/sx 0 def
/sy 0 def
/ex 0 def
/ey 0 def
/lw 0 def
/siz 0 def
/U {gsave 0 setlinecap
/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def
fontkind plain eq
{
lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke
}
{
currentdict /outlineFontSize known outlineFontSize 0 gt and
{
fontkind outline eq
{
/sy sy 0.0119444 siz mul sub def
/ey ey 0.0119444 siz mul sub def
gsave
1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke
grestore
lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto
strokepath 0.0119444 siz mul setlinewidth stroke
} if
fontkind shadow eq fontkind outlineshadow eq or
{
/sy sy 0.0358332 siz mul sub def
/ey ey 0.0358332 siz mul sub def
lw setlinewidth
lw 2 div sx add sy
lw 2 div sub moveto
lw 2 div ex add ey
lw 2 div sub lineto stroke
gsave
1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke
grestore
lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto
strokepath 0.0119444 siz mul setlinewidth stroke
} if
} if
} ifelse
grestore} bind def
/plain 1 def
/outline 2 def
/shadow 3 def
/outlineshadow 4 def
/fess {
currentdict /outlineFontSize known {
/outlineFontSize 2 index def
} if
findfont exch dup /siz exch def scalefont setfont
} bind def
/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def
/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def
/S {
fontkind plain eq {neg moveto show} if
fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if
fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if
fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if
} bind def
/F {
/fontkind exch def
fontkind plain eq {fess} if
fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if
fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if
fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if
} bind def
/makeoutlinedict 15 dict def
/makeoutlinefont
{
makeoutlinedict begin
/uniqueid exch def
/strokewidth exch def
/newfontname exch def
/basefontname exch def
/basefontdict basefontname findfont def
/numentries basefontdict maxlength 1 add def
basefontdict /UniqueID known not
{/numentries numentries 1 add def} if
/outfontdict numentries dict def
basefontdict
{
exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse
}forall
outfontdict /FontName newfontname put
outfontdict /PaintType 2 put
outfontdict /StrokeWidth strokewidth put
outfontdict /UniqueID uniqueid put
newfontname outfontdict definefont pop
end
}def
/UID {
findfont dup /UniqueID known
{/UniqueID get 1 add}
{pop 1}
ifelse
} def
/OLF {
dup
/Outline
1000 62 div
4 -1 roll
UID
/outlineFontSize 5 index def
makeoutlinefont
/Outline findfont exch scalefont setfont
} def
/CopyEncoding {
findfont
/Encoding get
dup length array
/tarrayz exch def
tarrayz 0
3 -1 roll
putinterval
tarrayz
} bind def
/Re-encode {
dup length array copy
/eap 0 def
exch {
dup type /integertype eq {
/eap exch def
} {
1 index
exch
eap exch
put
/eap eap 1 add def
} ifelse
} forall
} bind def
/EncodeFont {
findfont dup
length dict
begin
{ 1 index /FID ne
{ def }
{ pop pop } ifelse
} forall
/FontName exch def
/Encoding exch def
FontName currentdict
end
definefont pop
} bind def
/clip2pathbbox {
/magicNum linewidth 2 div 1 2 sqrt div mul def
pathbbox
/urymn exch magicNum add def
/urxmn exch magicNum add def
/llymn exch magicNum sub def
/llxmn exch magicNum sub def
newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto
closepath clip newpath
} bind def
/Line {
MAV /LC get length 0 ne
{
gsave
newpath
MAV /ArrowType get length 0 eq
MAV /SD get length 0 eq and
{2 setlinecap /UseClip {clip2pathbbox} def }
{0 setlinecap /UseClip {} def } ifelse
0 792 translate
1 -1 scale
CTM currentmatrix pop
/yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def
MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and
{xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto}
{xStart yStart moveto xEnd yEnd lineto} ifelse
linewidth setlinewidth SD strokepath
CheckPath {LC PF ArrowType} if
grestore
}
{pop pop pop pop pop} ifelse
} bind def
/CompensateForStroke {
sin currentlinewidth mul
exch
cos currentlinewidth mul
dup 0 translate
4 -1 roll exch 2.0 mul sub
3 1 roll
2.0 mul sub
} bind def
/arrowdict 10 dict def
arrowdict begin
/SwallowTail {
newpath
0.0 0.0 moveto
1.0 -.5 lineto
.666 0.0 lineto
1.0 .5 lineto
closepath
} bind def
/Triangular {
newpath
0.0 0.0 moveto
1.0 -.5 lineto
1.0 .5 lineto
closepath
} bind def
/OpenTri {
newpath
1.0 0.5 moveto
0.0 0.0 lineto
1.0 -0.5 lineto
} bind def
/ClosedTri {
newpath
1.0 0.5 moveto
0.0 0.0 lineto
1.0 -0.5 lineto
closepath
} bind def
/SlashBar {
newpath
0.5 -.5 moveto
-.5 0.5 lineto
} bind def
/Dot {
newpath
0.5 0.0 moveto
0 0 1 0 360 arc
closepath
} bind def
/ExtSlashBar {
newpath
1.0 -.5 moveto
0.0 0.5 lineto
} bind def
end
/ScaleArrowHead {
0 0 4 -2 roll
0 0 1 1
8 -4 roll GetBoxesRatio
scale
} bind def
/DrawArrowHead {
gsave
[] 0 setdash
currentpoint translate rotate
{
4 copy
gsave
initmatrix
100 200 translate
msave
ScaleArrowHead pop
arrowdict exch get exec
mrestore
strokepath
0 0 3 index 3 index
pathbbox 8 4 roll
GetBoxesRatio
4 2 roll
grestore
3 index 1.0 exch sub
6 -1 roll
{
2 index mul
0 translate
}{
pop
} ifelse
msave
ScaleArrowHead scale
arrowdict exch get exec
mrestore
strokepath
} {
msave
ScaleArrowHead
arrowdict exch get exec
mrestore
} ifelse
CheckPath {
LC PF
} if
grestore
} bind def
/SR {
pbox left get pbox top get moveto
pbox right get pbox top get lineto
pbox right get pbox bottom get lineto
pbox left get pbox bottom get lineto
closepath
} bind def
/RR1 {
pbox top get pbox bottom get sub abs
pbox left get pbox right get sub abs
2 copy lt {
Min
2 div dup dup dup
pbox left get add pbox left 3 -1 roll put
pbox right get exch sub pbox right 3 -1 roll put
pbox left get pbox bottom get moveto
pbox right get 0 3 -1 roll 90 -90 arcn
pbox left get 0 3 -1 roll -90 90 arcn closepath
} {
Min
2 div dup dup dup
pbox bottom get exch sub pbox bottom 3 -1 roll put
pbox top get add pbox top 3 -1 roll put
pbox left get pbox bottom get moveto
pbox left get add pbox top get
2 index
180 0 arc
dup pbox left get add pbox bottom get
3 -1 roll 0 180 arc
closepath
} ifelse
} bind def
/RR2 {
dup dup dup dup dup dup dup dup
pbox top get add pbox top 3 -1 roll put
pbox left get add pbox left 3 -1 roll put
pbox bottom get exch sub pbox bottom 3 -1 roll put
pbox right get exch sub pbox right 3 -1 roll put
pbox bottom get add pbox left get exch moveto
pbox right get pbox bottom get 3 -1 roll 90 0 arcn
pbox right get pbox top get 3 -1 roll 0 270 arcn
pbox left get pbox top get 3 -1 roll 270 180 arcn
pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath
} bind def
/StripFromFront {
dup length
2 index sub
3 1 roll
exch 3 -1 roll
getinterval
} bind def
/MakePathArray {
/k 0 def
{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall
k array
/k 0 def
{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def}
{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def}
{{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def}
{{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def}
pathforall
}bind def
/MakeFlatPathArray {
/k 0 def
{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall
k array
/k 0 def
{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def}
{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def}
{ pop pop pop pop pop pop}
{}
pathforall
}bind def
/FractionalLine {
2 index sub
.00001 mul
exch
3 index sub
.00001 mul
4 -1 roll add
3 1 roll
add
} bind def
/calcLineLength {
exch
4 -1 roll
sub
dup mul
3 1 roll exch
sub
dup mul
add sqrt
} bind def
/InitTotalLineLength {
/oldY exch def
/oldX exch def
theDash aload pop currentLineLength add setdash
} bind def
/AccumeLineLength {
3 copy pop
2 copy
oldX oldY
4 2 roll calcLineLength
/segmentLength exch def
/currentLineLength currentLineLength segmentLength add def
/oldY exch def
/oldX exch def
} bind def
/DecumeLastLineLength {
/currentLineLength currentLineLength segmentLength sub def
} bind def
/DrawFlattendSegment {
/pointCount 2 def
dup 0 lt { pop 0 } if
fpc
3 1 roll
2 index
1 index
gt {
2 copy get
dup length
dup 3 eq {
pop
dup 0 get
exch 1 get
2 copy InitTotalLineLength
m
} {
} ifelse
} {
pop 1 index
} ifelse
dup 1 add
3 index
exch sub
dup 10 gt { pop 10} if
{
1 add
2 copy
get aload pop
AccumeLineLength
exec
} repeat
3 1 roll pop pop
DecumeLastLineLength
} bind def
/IncFPC {
fpc add
/fpc exch def
} bind def
/DrawFlatPathArray {
fpc
0 {
dup 2 index
1 sub
lt {
flatPathArray exch
newpath
1 sub DrawFlattendSegment
gsave
pathSegProc
grestore
newpath
}
{
pop pop
exit
} ifelse
} loop
} bind def
/RecordFirstSubSegment {
closepathArray 0 pathArray 0 get
put
closepathArray 1
pathArray 0 get aload pop pop
pathArray 1 get dup length 3 eq {
aload pop pop
} {
newpath
0 0 moveto
aload pop exec
/segmentArray flattenpath MakeFlatPathArray def
segmentArray 1 get aload pop pop
} ifelse
FractionalLine {lineto} 3 array astore
put
} bind def
/AppendClosePath {
closepathArray 0 get 2 {lineto} put
flatPathArray fpc closepathArray 0 get put
1 IncFPC
flatPathArray fpc closepathArray 1 get put
1 IncFPC
} bind def
/RecordCurrentDash {
/theDash
currentdash 2 array astore def
/currentLineLength 0 def
} bind def
/PatternStroke {
0 setlinecap
RecordCurrentDash
/saveFlat currentflat def
.5 setflat
/pathArray MakePathArray def
/closepathArray 2 array def
/pathLength pathArray length def
/flatPathArray 513 array def
/currentLineLength 0 def
/fpc 0 def
pathArray pathLength 1 sub get
length 1 eq {
/usingClosepath true def
RecordFirstSubSegment
/pathLength pathLength 1 sub def
} {
/usingClosepath false def
} ifelse
0 1 pathLength 1 sub {
pathArray exch get
dup length 3 eq {
fpc 1 add 512 ge {
DrawFlatPathArray
fpc 2 ge {
flatPathArray flatPathArray fpc 2 sub get 0 put
flatPathArray flatPathArray fpc 1 sub get 1 put
/fpc 2 def
}{
/fpc 0 def
} ifelse
} if
flatPathArray exch fpc exch put
1 IncFPC
} {
dup length 7 eq {
newpath
/nToStrip 0 def
fpc 1 gt {
flatPathArray fpc 2 sub get aload pop pop m
flatPathArray fpc 1 sub get aload pop exec
/nToStrip 2 def
} {
fpc 1 eq {
flatPathArray fpc 1 sub get aload pop exec
/nToStrip 2 def
} if
} ifelse
aload pop exec
/segmentArray flattenpath MakeFlatPathArray def
/segmentArray nToStrip segmentArray StripFromFront def
segmentArray length fpc add 512 lt {
flatPathArray fpc segmentArray putinterval
segmentArray length IncFPC
} {
DrawFlatPathArray
fpc 1 gt {
flatPathArray flatPathArray fpc 2 sub get 0 exch put
flatPathArray flatPathArray fpc 1 sub get 1 exch put
/fpc 2 def
}{
/fpc 0 def
} ifelse
segmentArray length 512 lt {
flatPathArray fpc segmentArray putinterval
segmentArray length IncFPC
} {
segmentArray length
/exitLoop false def
0
{
2 copy sub
dup 500 gt {
pop 500
} {
/exitLoop true def
} ifelse
segmentArray 2 index 2 index getinterval
flatPathArray fpc 3 -1 roll putinterval
dup IncFPC
add
exitLoop {
exit
} {
DrawFlatPathArray
fpc 1 gt {
flatPathArray flatPathArray fpc 2 sub get 0 exch put
flatPathArray flatPathArray fpc 1 sub get 1 exch put
/fpc 2 def
}{
/fpc 0 def
} ifelse
} ifelse
} loop
} ifelse
} ifelse
} if
} ifelse
} for
fpc 0 gt {
usingClosepath {
AppendClosePath
} if
DrawFlatPathArray
} if
saveFlat setflat
} bind def
initmsaverestore
/tctm matrix currentmatrix def
tctm RoundMatrix setmatrix
/patternMatrix mstore def
10 setmiterlimit
2 setlinecap
newpath
/RT {13.500 RR2} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/backfill {/setcmykcolor where
{begin gsave 0 0 0 0 setcmykcolor fill grestore end}
{gsave 1 1 1 setrgbcolor fill grestore}
ifelse} def
/fillpat <7F7F7FFFFFFFFFFFFFFFFFFFF7F7F7FFFFFFFFFFFFFFFFFF> def
/iSizeX 24 def
/iSizeY 24 def
/PF { /pat fillpat def DefaultPatternFont backfill 65 PatternFill } def
1.000 0 45.000 18.000 0.000 0.000 594.000 477.000 rect
/RT {13.500 RR2} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.020 setcmykcolor end} {0.979 0.979 0.979 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 135.000 27.000 0.000 0.000 475.000 459.000 rect
/RT {13.500 RR2} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.110 setcmykcolor end} {0.889 0.889 0.889 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 162.000 45.000 0.000 0.000 81.000 423.000 rect
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 171.000 54.000 0.000 0.000 27.000 54.000 rect
save
[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
/hungarumlaut/ogonek/caron]
StandardEncoding Re-encode /_NewCenturySchlbk-Roman /NewCenturySchlbk-Roman EncodeFont
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 177.000 60.263 0.000 0.000 17.000 41.473 rect
gsave
81.000 185.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) plain F
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(l) -20.236 4.000 S
(e) -15.827 4.000 S
(n) -8.827 4.000 S
(g) -0.275 4.000 S
(t) 7.240 4.000 S
(h) 12.685 4.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 207.000 162.000 0.000 0.000 27.000 297.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 213.000 291.477 0.000 0.000 17.000 29.045 rect
gsave
306.000 221.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(d) -14.022 4.000 S
(a) -5.987 4.000 S
(t) 1.795 4.000 S
(a) 7.240 4.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 207.000 54.000 0.000 0.000 27.000 90.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 213.000 59.855 0.000 0.000 17.000 78.288 rect
gsave
99.000 221.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(l) -38.644 4.000 S
(o) -34.235 4.000 S
(c) -27.235 4.000 S
(a) -21.021 4.000 S
(l) -13.238 4.000 S
(_) -8.829 4.000 S
(l) -1.829 4.000 S
(e) 2.579 4.000 S
(n) 9.579 4.000 S
(g) 18.131 4.000 S
(t) 25.647 4.000 S
(h) 31.092 4.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 105.000 360.531 0.000 0.000 17.000 124.937 rect
gsave
423.000 113.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(L) -61.968 4.000 S
(o) -52.630 4.000 S
(c) -45.630 4.000 S
(a) -39.416 4.000 S
(l) -31.634 4.000 S
( ) -27.224 4.000 S
(p) -23.335 4.000 S
(a) -15.299 4.000 S
(r) -7.516 4.000 S
(t) -1.302 4.000 S
( ) 4.141 4.000 S
(o) 8.031 4.000 S
(f) 15.031 4.000 S
( ) 19.690 4.000 S
(v) 23.579 4.000 S
(e) 31.095 4.000 S
(c) 38.095 4.000 S
(t) 44.309 4.000 S
(o) 49.754 4.000 S
(r) 56.754 4.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 171.000 297.000 0.000 0.000 27.000 45.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 177.000 296.501 0.000 0.000 17.000 45.996 rect
gsave
319.500 185.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(t) -13.998 4.000 S
(y) -8.553 4.000 S
(p) -1.037 4.000 S
(e) 6.998 4.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 171.000 234.000 0.000 0.000 27.000 45.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 177.000 234.412 0.000 0.000 17.000 44.174 rect
gsave
256.500 185.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(g) -13.087 4.000 S
(r) -5.571 4.000 S
(i) 0.642 4.000 S
(d) 5.051 4.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 78.000 306.714 0.000 0.000 17.000 178.571 rect
gsave
396.000 86.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(V) -88.785 4.000 S
(e) -78.678 4.000 S
(c) -71.678 4.000 S
(t) -65.465 4.000 S
(o) -60.020 4.000 S
(r) -53.020 4.000 S
( ) -46.806 4.000 S
(t) -42.916 4.000 S
(y) -37.471 4.000 S
(p) -29.955 4.000 S
(e) -21.920 4.000 S
( ) -14.920 4.000 S
(-) -11.030 4.000 S
( ) -6.371 4.000 S
(r) -2.482 4.000 S
(o) 3.731 4.000 S
(w) 10.731 4.000 S
( ) 21.621 4.000 S
(o) 25.510 4.000 S
(r) 32.510 4.000 S
( ) 38.724 4.000 S
(c) 42.614 4.000 S
(o) 48.828 4.000 S
(l) 55.828 4.000 S
(u) 60.237 4.000 S
(m) 68.789 4.000 S
(n) 81.234 4.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 54.000 158.500 0.000 0.000 17.000 184.296 rect
gsave
250.648 62.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(G) -92.000 4.000 S
(r) -81.110 4.000 S
(i) -74.896 4.000 S
(d) -70.487 4.000 S
( ) -62.451 4.000 S
(t) -58.562 4.000 S
(o) -53.117 4.000 S
( ) -46.117 4.000 S
(w) -42.227 4.000 S
(h) -31.337 4.000 S
(i) -22.786 4.000 S
(c) -18.376 4.000 S
(h) -12.163 4.000 S
( ) -3.611 4.000 S
(v) 0.278 4.000 S
(e) 7.794 4.000 S
(c) 14.794 4.000 S
(t) 21.008 4.000 S
(o) 26.453 4.000 S
(r) 33.453 4.000 S
( ) 39.666 4.000 S
(b) 43.556 4.000 S
(e) 51.339 4.000 S
(l) 58.339 4.000 S
(o) 62.748 4.000 S
(n) 69.748 4.000 S
(g) 78.300 4.000 S
(s) 85.816 4.000 S
grestore
/ArrowType{
1.000 setlinewidth
63.000 171.000 moveto
/Triangular 14.099 7.049 false 270.019 DrawArrowHead
} bind def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 62.999 169.000 63.000 99.000 Line
/ArrowType{
1.000 setlinewidth
126.000 207.000 moveto
/Triangular 14.099 7.049 false 270.019 DrawArrowHead
} bind def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 125.999 205.000 126.000 126.000 Line
/ArrowType{
1.000 setlinewidth
432.000 207.000 moveto
/Triangular 14.099 7.049 false 270.019 DrawArrowHead
} bind def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 431.999 205.000 432.000 126.000 Line
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 78.000 29.917 0.000 0.000 17.000 138.164 rect
gsave
99.000 86.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(T) -68.582 4.000 S
(o) -59.244 4.000 S
(t) -52.244 4.000 S
(a) -46.799 4.000 S
(l) -39.016 4.000 S
( ) -34.607 4.000 S
(l) -30.718 4.000 S
(e) -26.308 4.000 S
(n) -19.308 4.000 S
(g) -10.757 4.000 S
(t) -3.240 4.000 S
(h) 2.203 4.000 S
( ) 10.755 4.000 S
(o) 14.645 4.000 S
(f) 21.645 4.000 S
( ) 26.303 4.000 S
(v) 30.193 4.000 S
(e) 37.709 4.000 S
(c) 44.709 4.000 S
(t) 50.923 4.000 S
(o) 56.368 4.000 S
(r) 63.368 4.000 S
grestore
/ArrowType{
1.000 setlinewidth
324.000 171.000 moveto
/Triangular 14.099 7.049 false 270.019 DrawArrowHead
} bind def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 323.999 169.000 324.000 99.000 Line
/ArrowType{
1.000 setlinewidth
270.000 171.000 moveto
/Triangular 14.099 7.049 false 270.019 DrawArrowHead
} bind def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 269.999 169.000 270.000 72.000 Line
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 105.000 69.917 0.000 0.000 17.000 185.848 rect
gsave
162.842 113.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(L) -92.582 4.000 S
(e) -83.244 4.000 S
(n) -76.244 4.000 S
(g) -67.692 4.000 S
(t) -60.176 4.000 S
(h) -54.731 4.000 S
( ) -46.179 4.000 S
(o) -42.290 4.000 S
(f) -35.290 4.000 S
( ) -30.631 4.000 S
(l) -26.741 4.000 S
(o) -22.332 4.000 S
(c) -15.332 4.000 S
(a) -9.118 4.000 S
(l) -1.336 4.000 S
( ) 3.072 4.000 S
(p) 6.962 4.000 S
(a) 14.998 4.000 S
(r) 22.781 4.000 S
(t) 28.994 4.000 S
( ) 34.439 4.000 S
(o) 38.329 4.000 S
(f) 45.329 4.000 S
( ) 49.988 4.000 S
(v) 53.877 4.000 S
(e) 61.393 4.000 S
(c) 68.393 4.000 S
(t) 74.607 4.000 S
(o) 80.052 4.000 S
(r) 87.052 4.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 616.000 27.495 0.000 0.000 17.000 141.008 rect
gsave
98.000 624.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(O) -70.004 4.000 S
(p) -59.114 4.000 S
(e) -51.078 4.000 S
(r) -44.078 4.000 S
(a) -37.864 4.000 S
(t) -30.082 4.000 S
(i) -24.637 4.000 S
(o) -20.228 4.000 S
(n) -13.228 4.000 S
(s) -4.676 4.000 S
( ) 1.803 4.000 S
(o) 5.693 4.000 S
(n) 12.693 4.000 S
( ) 21.245 4.000 S
(v) 25.135 4.000 S
(e) 32.651 4.000 S
(c) 39.651 4.000 S
(t) 45.864 4.000 S
(o) 51.309 4.000 S
(r) 58.309 4.000 S
(s) 64.523 4.000 S
grestore
/ArrowType{
1.000 setlinewidth
71.000 583.000 moveto
/Triangular 14.099 7.049 false 90.006 DrawArrowHead
} bind def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 71.000 585.000 71.000 619.000 Line
/RT {13.500 RR2} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.110 setcmykcolor end} {0.889 0.889 0.889 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 385.000 179.000 0.000 0.000 198.000 288.000 rect
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 466.000 206.000 0.000 0.000 27.000 99.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 472.000 218.467 0.000 0.000 17.000 74.064 rect
gsave
255.500 480.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(d) -32.532 4.000 S
(o) -24.496 4.000 S
(t) -17.496 4.000 S
(_) -12.051 4.000 S
(s) -5.051 4.000 S
(t) 1.428 4.000 S
(r) 6.873 4.000 S
(i) 13.087 4.000 S
(d) 17.496 4.000 S
(e) 25.532 4.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 466.000 314.000 0.000 0.000 27.000 99.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 472.000 309.691 0.000 0.000 17.000 107.616 rect
gsave
363.500 480.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(d) -40.308 4.000 S
(o) -32.272 4.000 S
(t) -25.272 4.000 S
(_) -19.827 4.000 S
(n) -12.827 4.000 S
(o) -4.275 4.000 S
(s) 2.724 4.000 S
(t) 9.204 4.000 S
(r) 14.649 4.000 S
(i) 20.863 4.000 S
(d) 25.272 4.000 S
(e) 33.308 4.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 466.000 413.000 0.000 0.000 26.000 54.000 rect
gsave
440.000 479.000 T translate
0.0 rotate
1 1 scale
24.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(.) -16.169 7.000 S
( ) -9.501 7.000 S
(.) -2.833 7.000 S
( ) 3.833 7.000 S
(.) 10.501 7.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 394.000 206.000 0.000 0.000 27.000 99.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 400.000 210.567 0.000 0.000 17.000 89.865 rect
gsave
255.500 408.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(n) -40.432 4.000 S
(e) -31.881 4.000 S
(w) -24.881 4.000 S
(_) -13.991 4.000 S
(d) -6.991 4.000 S
(v) 1.044 4.000 S
(e) 8.560 4.000 S
(c) 15.560 4.000 S
(t) 21.774 4.000 S
(o) 27.218 4.000 S
(r) 34.218 4.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 430.000 206.000 0.000 0.000 27.000 99.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 436.000 210.049 0.000 0.000 17.000 90.901 rect
gsave
255.500 444.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(d) -40.950 4.000 S
(s) -32.915 4.000 S
(t) -26.434 4.000 S
(y) -20.989 4.000 S
(_) -13.473 4.000 S
(d) -6.473 4.000 S
(v) 1.562 4.000 S
(e) 9.078 4.000 S
(c) 16.078 4.000 S
(t) 22.291 4.000 S
(o) 27.736 4.000 S
(r) 34.736 4.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 502.000 206.000 0.000 0.000 27.000 99.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 508.000 214.836 0.000 0.000 17.000 81.327 rect
gsave
255.500 516.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(m) -36.163 4.000 S
(a) -23.718 4.000 S
(x) -15.936 4.000 S
(_) -8.420 4.000 S
(s) -1.420 4.000 S
(t) 5.060 4.000 S
(r) 10.505 4.000 S
(i) 16.718 4.000 S
(d) 21.128 4.000 S
(e) 29.163 4.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 502.000 314.000 0.000 0.000 27.000 99.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 508.000 316.060 0.000 0.000 17.000 96.879 rect
gsave
364.500 516.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(m) -43.939 4.000 S
(a) -31.494 4.000 S
(x) -23.712 4.000 S
(_) -16.196 4.000 S
(n) -9.196 4.000 S
(o) -0.644 4.000 S
(s) 6.355 4.000 S
(t) 12.836 4.000 S
(r) 18.281 4.000 S
(i) 24.494 4.000 S
(d) 28.904 4.000 S
(e) 36.939 4.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 502.000 413.000 0.000 0.000 26.000 54.000 rect
gsave
440.000 515.000 T translate
0.0 rotate
1 1 scale
24.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(.) -16.169 7.000 S
( ) -9.501 7.000 S
(.) -2.833 7.000 S
( ) 3.833 7.000 S
(.) 10.501 7.000 S
grestore
/RT {13.500 RR2} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.110 setcmykcolor end} {0.889 0.889 0.889 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 385.000 44.000 0.000 0.000 198.000 108.000 rect
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 466.000 53.000 0.000 0.000 27.000 90.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 472.000 85.814 0.000 0.000 17.000 24.370 rect
gsave
98.000 480.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(d) -9.740 4.000 S
(o) -1.704 4.000 S
(t) 5.295 4.000 S
( ) 10.740 4.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 394.000 53.000 0.000 0.000 27.000 90.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 400.000 78.172 0.000 0.000 17.000 39.655 rect
gsave
98.000 408.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(c) -19.327 4.000 S
(r) -13.113 4.000 S
(e) -6.899 4.000 S
(a) 0.100 4.000 S
(t) 7.882 4.000 S
(e) 13.327 4.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 430.000 53.000 0.000 0.000 27.000 90.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 436.000 74.154 0.000 0.000 17.000 47.690 rect
gsave
98.000 444.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(d) -23.345 4.000 S
(e) -15.309 4.000 S
(s) -8.309 4.000 S
(t) -1.829 4.000 S
(r) 3.615 4.000 S
(o) 9.829 4.000 S
(y) 16.829 4.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 502.000 53.000 0.000 0.000 27.000 90.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 508.000 82.183 0.000 0.000 17.000 31.633 rect
gsave
98.000 516.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(m) -13.371 4.000 S
(a) -0.927 4.000 S
(x) 6.855 4.000 S
( ) 14.371 4.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 1.570 543.000 76.000 0.000 0.000 26.000 54.000 rect
gsave
103.000 556.000 T translate
-90.006 rotate
1 1 scale
24.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(.) -16.169 7.000 S
( ) -9.501 7.000 S
(.) -2.833 7.000 S
( ) 3.833 7.000 S
(.) 10.501 7.000 S
grestore
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 616.000 198.814 0.000 0.000 17.000 284.371 rect
gsave
341.000 624.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(F) -141.685 4.000 S
(u) -132.347 4.000 S
(n) -123.796 4.000 S
(c) -115.244 4.000 S
(t) -109.030 4.000 S
(i) -103.585 4.000 S
(o) -99.176 4.000 S
(n) -92.176 4.000 S
(s) -83.624 4.000 S
( ) -77.144 4.000 S
(t) -73.254 4.000 S
(h) -67.809 4.000 S
(a) -59.258 4.000 S
(t) -51.475 4.000 S
( ) -46.030 4.000 S
(i) -42.140 4.000 S
(m) -37.731 4.000 S
(p) -25.286 4.000 S
(l) -17.251 4.000 S
(e) -12.842 4.000 S
(m) -5.842 4.000 S
(e) 6.602 4.000 S
(n) 13.602 4.000 S
(t) 22.154 4.000 S
( ) 27.599 4.000 S
(v) 31.489 4.000 S
(e) 39.005 4.000 S
(c) 46.005 4.000 S
(t) 52.218 4.000 S
(o) 57.663 4.000 S
(r) 64.663 4.000 S
( ) 70.877 4.000 S
(o) 74.767 4.000 S
(p) 81.767 4.000 S
(e) 89.802 4.000 S
(r) 96.802 4.000 S
(a) 103.016 4.000 S
(t) 110.799 4.000 S
(i) 116.244 4.000 S
(o) 120.653 4.000 S
(n) 127.653 4.000 S
(s) 136.205 4.000 S
grestore
/ArrowType{
1.000 setlinewidth
332.000 583.000 moveto
/Triangular 14.099 7.049 false 90.006 DrawArrowHead
} bind def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 332.000 585.000 332.000 619.000 Line
/ArrowType{
1.000 setlinewidth
200.000 481.000 moveto
/Triangular 14.099 7.049 false 180.012 DrawArrowHead
} bind def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 198.000 481.000 133.000 481.000 Line
/ArrowType{
1.000 setlinewidth
200.000 409.000 moveto
/Triangular 14.099 7.049 false 180.012 DrawArrowHead
} bind def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 198.000 409.000 133.000 409.000 Line
/ArrowType{
1.000 setlinewidth
200.000 445.000 moveto
/Triangular 14.099 7.049 false 180.012 DrawArrowHead
} bind def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 198.000 445.000 133.000 445.000 Line
/ArrowType{
1.000 setlinewidth
200.000 517.000 moveto
/Triangular 14.099 7.049 false 180.012 DrawArrowHead
} bind def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 198.000 517.000 133.000 517.000 Line
/RT {13.500 RR2} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.110 setcmykcolor end} {0.889 0.889 0.889 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 251.500 46.000 0.000 0.000 117.000 423.000 rect
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 263.500 56.000 0.000 0.000 26.000 178.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 268.500 59.973 0.000 0.000 17.000 173.656 rect
gsave
146.802 277.000 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(d) -86.526 5.000 S
(i) -78.490 5.000 S
(s) -74.081 5.000 S
(t) -67.601 5.000 S
(r) -62.156 5.000 S
(i) -55.942 5.000 S
(b) -51.533 5.000 S
(u) -43.750 5.000 S
(t) -35.198 5.000 S
(i) -29.753 5.000 S
(o) -25.344 5.000 S
(n) -18.344 5.000 S
( ) -9.792 5.000 S
(c) -5.903 5.000 S
(o) 0.310 5.000 S
(u) 7.310 5.000 S
(n) 15.862 5.000 S
(t) 24.414 5.000 S
( ) 29.858 5.000 S
(f) 33.748 5.000 S
(u) 38.407 5.000 S
(n) 46.958 5.000 S
(c) 55.510 5.000 S
(t) 61.724 5.000 S
(i) 67.169 5.000 S
(o) 71.578 5.000 S
(n) 78.578 5.000 S
grestore
/ArrowType{
1.000 setlinewidth
65.000 235.000 moveto
/Triangular 14.099 7.049 false 90.006 DrawArrowHead
} bind def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
/SS {setlinewidth SD stroke} def
1.000 65.000 237.000 65.000 264.000 Line
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 298.000 56.000 0.000 0.000 26.000 178.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 303.000 64.769 0.000 0.000 17.000 167.089 rect
gsave
148.314 311.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(d) -76.696 4.000 S
(i) -68.661 4.000 S
(s) -64.252 4.000 S
(t) -57.771 4.000 S
(r) -52.326 4.000 S
(i) -46.112 4.000 S
(b) -41.703 4.000 S
(u) -33.921 4.000 S
(t) -25.369 4.000 S
(i) -19.924 4.000 S
(o) -15.515 4.000 S
(n) -8.515 4.000 S
( ) 0.036 4.000 S
(p) 3.926 4.000 S
(a) 11.961 4.000 S
(r) 19.744 4.000 S
(a) 25.958 4.000 S
(m) 33.741 4.000 S
(e) 46.185 4.000 S
(t) 53.185 4.000 S
(e) 58.630 4.000 S
(r) 65.630 4.000 S
(s) 71.844 4.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 262.500 274.500 0.000 0.000 27.000 186.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 267.500 286.699 0.000 0.000 18.000 163.204 rect
gsave
368.302 276.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(g) -80.800 4.000 S
(l) -73.284 4.000 S
(o) -68.875 4.000 S
(b) -61.875 4.000 S
(a) -54.092 4.000 S
(l) -46.309 4.000 S
(-) -41.900 4.000 S
(t) -37.241 4.000 S
(o) -31.796 4.000 S
(-) -24.796 4.000 S
(l) -20.138 4.000 S
(o) -15.729 4.000 S
(c) -8.729 4.000 S
(a) -2.515 4.000 S
(l) 5.267 4.000 S
( ) 9.676 4.000 S
(f) 13.566 4.000 S
(u) 18.225 4.000 S
(n) 26.776 4.000 S
(c) 35.328 4.000 S
(t) 41.542 4.000 S
(i) 46.987 4.000 S
(o) 51.396 4.000 S
(n) 58.396 4.000 S
(:) 66.948 4.000 S
restore
save
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 267.500 286.699 0.000 0.000 18.000 163.204 rect
gsave
368.302 276.500 T translate
0.0 rotate
1 1 scale
14.000 (Symbol) plain F
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
( ) 70.837 4.000 S
(m) 74.337 4.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 298.500 272.622 0.000 0.000 27.000 186.000 rect
restore
save
[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
/hungarumlaut/ogonek/caron]
StandardEncoding Re-encode /_NewCenturySchlbk-Roman /NewCenturySchlbk-Roman EncodeFont
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 303.500 278.529 0.000 0.000 18.000 175.790 rect
gsave
366.424 312.500 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) plain F
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(l) -86.970 4.000 S
(o) -82.561 4.000 S
(c) -75.561 4.000 S
(a) -69.347 4.000 S
(l) -61.564 4.000 S
(-) -57.155 4.000 S
(t) -52.496 4.000 S
(o) -47.052 4.000 S
(-) -40.052 4.000 S
(g) -35.393 4.000 S
(l) -27.877 4.000 S
(o) -23.468 4.000 S
(b) -16.468 4.000 S
(a) -8.685 4.000 S
(l) -0.902 4.000 S
( ) 3.506 4.000 S
(f) 7.396 4.000 S
(u) 12.054 4.000 S
(n) 20.606 4.000 S
(c) 29.158 4.000 S
(t) 35.372 4.000 S
(i) 40.817 4.000 S
(o) 45.226 4.000 S
(n) 52.226 4.000 S
(:) 60.778 4.000 S
grestore
restore
save
gsave
366.424 312.500 T translate
0.0 rotate
1 1 scale
14.000 (Symbol) plain F
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
( ) 64.667 4.000 S
(m) 68.167 4.000 S
12.000 (Symbol) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(-) 76.234 0.000 S
(1) 82.820 0.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 334.250 57.075 0.000 0.000 26.000 151.000 rect
restore
save
[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
/hungarumlaut/ogonek/caron]
StandardEncoding Re-encode /_NewCenturySchlbk-Roman /NewCenturySchlbk-Roman EncodeFont
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 338.750 56.000 0.000 0.000 17.000 154.976 rect
gsave
133.488 347.250 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) plain F
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(d) -71.867 5.000 S
(i) -63.831 5.000 S
(s) -59.422 5.000 S
(t) -52.942 5.000 S
(r) -47.497 5.000 S
(i) -41.283 5.000 S
(b) -36.874 5.000 S
(u) -29.091 5.000 S
(t) -20.539 5.000 S
(i) -15.095 5.000 S
(o) -10.685 5.000 S
(n) -3.685 5.000 S
( ) 4.865 5.000 S
(s) 8.755 5.000 S
(t) 15.235 5.000 S
(a) 20.680 5.000 S
(t) 28.463 5.000 S
(e) 33.908 5.000 S
( ) 40.908 5.000 S
(d) 44.797 5.000 S
(a) 52.833 5.000 S
(t) 60.616 5.000 S
(a) 66.061 5.000 S
grestore
/RT {SR} def
/SD {} def
/SS {setlinewidth SD stroke} def
/LC { /setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
} def
/PC { /setcmykcolor where
{begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse
} def
/PF {gsave fill grestore} def
1.000 0 334.250 227.500 0.000 0.000 26.000 231.000 rect
/RT {SR} def
/LC {} def
/SS {pop} def
/PF {} def
/PC {} def
0.000 0 338.750 233.981 0.000 0.000 17.000 221.641 rect
gsave
344.802 347.250 T translate
0.0 rotate
1 1 scale
14.000 (_NewCenturySchlbk-Roman) fess
/setcmykcolor where
{begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse
(d) -110.518 5.000 S
(i) -102.483 5.000 S
(s) -98.073 5.000 S
(t) -91.593 5.000 S
(r) -86.148 5.000 S
(i) -79.934 5.000 S
(b) -75.525 5.000 S
(u) -67.742 5.000 S
(t) -59.191 5.000 S
(i) -53.746 5.000 S
(o) -49.337 5.000 S
(n) -42.337 5.000 S
( ) -33.785 5.000 S
(i) -29.895 5.000 S
(n) -25.486 5.000 S
(i) -16.934 5.000 S
(t) -12.525 5.000 S
(i) -7.080 5.000 S
(a) -2.671 5.000 S
(l) 5.111 5.000 S
(i) 9.520 5.000 S
(z) 13.929 5.000 S
(a) 20.662 5.000 S
(t) 28.445 5.000 S
(i) 33.890 5.000 S
(o) 38.299 5.000 S
(n) 45.299 5.000 S
( ) 53.851 5.000 S
(f) 57.740 5.000 S
(u) 62.399 5.000 S
(n) 70.951 5.000 S
(c) 79.503 5.000 S
(t) 85.717 5.000 S
(i) 91.161 5.000 S
(o) 95.571 5.000 S
(n) 102.571 5.000 S
grestore
restore
end
%%EndDocument
1036 801 a
endTexFig
1013 2055 a Fg(Figure)f(2:)30 b(This)20 b(\014gure)h(sho)o(ws)g(the)f
(structure)j(of)c(a)h(dis-)1013 2105 y(tributed)14 b(v)o(ector.)1013
2251 y Fj(4.4)52 b(Dot)18 b(Pro)q(duct)g(F)l(unctions)1063
2351 y Fg(High-qualit)o(y)j(libraries)i(will)g(ha)o(v)o(e)g(to)h(pro)o(vide)f
(more)1013 2401 y(than)14 b(one)f(v)o(ersion)h(of)g(a)f(function)g(that)h(w)o
(ould)f(p)q(erform)g(ef-)1013 2451 y(\014cien)o(tly)k(o)o(v)o(er)h
(di\013eren)o(t)g(conditions)g(\(w)o(e)g(call)e(suc)o(h)j(a)e(set)1013
2501 y(of)e(metho)q(ds)h(a)g Fc(p)q(oly-algorithm)p Fg(\).)22
b(F)m(or)15 b(example,)g(here)j(w)o(e)1013 2551 y(pro)o(vide)e(t)o(w)o(o)g
(dot)h(pro)q(duct)h(functions)e(\(strided)i(and)e(non-)1013
2600 y(strided\).)31 b(The)19 b(strided)f(v)o(ersion)h(has)f(a)f(reduced)j
(compu-)1013 2650 y(tational)14 b(load)g(at)h(the)h(exp)q(ense)i(of)c(more)h
(comm)o(unicatio)o(n.)1013 2700 y(Con)o(v)o(ersely)m(,)10 b(the)i
(non-strided)f(v)o(ersion)g(is)f(computationally)p eop
%%Page: 6 6
bop -57 117 a Fg(more)9 b(in)o(tensiv)o(e)h(but)h(few)o(er)g(messages)f(are)h
(needed,)g(b)q(ecause)-57 166 y(the)i(algorithm)d(exploits)i(data)h
(redundancy)m(.)18 b(The)13 b(most)e(ef-)-57 216 y(\014cien)o(t)f(function)f
(is)g(determined)h(b)o(y)f(comparing)f(issues)i(suc)o(h)-57
266 y(as)j(message)f(latency)h(and)f(bandwidth,)g(and)g(\015oating)g(p)q(oin)
o(t)-57 316 y(p)q(erformance,)i(all)f(with)h(reference)i(to)e(the)h(size)g
(of)f(the)h(v)o(ec-)-57 366 y(tor,)f(and)f(the)i(logical)d(grid)h(dimensions)
g Fa(P)6 b Fg(,)13 b Fa(Q)p Fg(.)-57 472 y Fd(4.4.1)48 b(Non-Strided)-57
549 y Fg(The)13 b(non-strided)h(function)e(w)o(orks)h(indep)q(enden)o(tly)h
(in)e(pro-)-57 598 y(cess)22 b(ro)o(ws)e(\(resp,)j(columns\))c(for)h(ro)o
(w-distributed)g(\(resp,)-57 648 y(column-distributed\))k(v)o(ectors.)53
b(First,)27 b(the)f(lo)q(cal)e(con-)-57 698 y(tribution)g(to)g(the)g(dot)g
(pro)q(duct)h(is)f(computed)g(in)g(eac)o(h)-57 748 y(pro)q(cess,)36
b(and)30 b(then,)k(a)c(\\com)o(bine")f(function,)k(called)-57
798 y Fb(MPI_Allreduce\(\))12 b Fg(sums)i(the)h(partial)f(sums,)g(lea)o(ving)
g(the)-57 847 y(dot)f(pro)q(duct)h(in)e(eac)o(h)i(pro)q(cess.)19
b(The)14 b(collectiv)o(e)e(comm)o(uni-)-57 897 y(cation)i(o)q(ccurs)h(indep)q
(enden)o(tly)g(in)e(ro)o(ws)h(\(resp,)h(columns\).)-57 973
y Fb(/*)21 b(from)g(tbx_dvector.c)e(*/)-57 1023 y(double)i(ddot_nostride\(T)o
(BX_DV)o(ECTOR)d(*x,)j(*y\))-57 1072 y({)-13 1122 y(int)86
b(i;)-13 1172 y(double)20 b(local_sum)g(=)i(0.0;)-13 1222 y(double)e(sum)h(=)
h(0.0;)-13 1322 y(/*)f(Check)g(for)g(compatible)f(types)g(*/)-13
1371 y(if)h(\(x->type)f(!=)h(y->type\))-13 1421 y({)43 b(/*)21
b(erroneous)f(*/)i(})-13 1521 y(/*)f(Sum)g(up)h(my)f(portion)f(of)i(the)f
(vector)f(*/)-13 1571 y(for)h(\(i)g(=)h(0;)f(i)h(<)f(x->local_length;)e
(i++\))30 1620 y(local_sum)h(+=)h(x->data[i])f(*)i(y->data[i];)-13
1720 y(/*)f(Get)g(row)g(or)h(column)e(sum)h(based)g(on)h(type)f(*/)-13
1770 y(if)g(\(x->type)f(==)h(TBX_ROW\))30 1820 y(MPI_Allreduce\(&loc)o(al_su)
o(m,)e(&sum,)i(1,)74 1869 y(MPI_DOUBLE,MPI_S)o(UM,x-)o(>grid)o(->row)o(_comm)
o(\);)-13 1919 y(else)30 1969 y(MPI_Allreduce\(&loc)o(al_su)o(m,)e(&sum,)i
(1,)74 2019 y(MPI_DOUBLE,MPI_S)o(UM,x-)o(>grid)o(->col)o(_comm)o(\);)-13
2119 y(/*)g(Return)g(the)g(result)f(*/)-13 2168 y(return)g(\(sum\);)-57
2218 y(})-57 2324 y Fd(4.4.2)48 b(Strided)-57 2401 y Fg(The)17
b(strided)h(v)o(ersion)e(of)g(dot)h(pro)q(duct)g(relies)h(on)e(the)h(fact)-57
2451 y(that)10 b(there)h(is)f(data)g(replication.)16 b(Hence,)c(only)d(a)h
(fraction)g(of)-57 2501 y(eac)o(h)j(sum)f(need)i(b)q(e)f(computed)f(in)g(an)o
(y)h(pro)q(cess.)19 b(Ho)o(w)o(ev)o(er,)-57 2551 y(giv)o(en)h(striding,)g
(the)h(comm)o(unication)c(required)k(to)f(form)-57 2600 y(the)j(global)e(sum)
h(requires)i Fb(MPI_Allreduce\(\))c Fg(to)i(w)o(ork)-57 2650
y(o)o(v)o(er)15 b(all)f(pro)q(cesses)k(sp)q(eci\014ed)f(b)o(y)e(the)g
(logical)f(grid,)g(rather)-57 2700 y(than)g(indep)q(enden)o(tly)h(in)e(ro)o
(ws)h(or)g(columns,)e(as)i(ab)q(o)o(v)o(e.)1013 117 y Fb(/*)21
b(from)g(tbx_dvector.c)e(*/)1013 166 y(double)h(ddot_stride\(TBX_DVE)o(CTOR)e
(*x,)k(*y\))1013 216 y({)1056 266 y(int)87 b(i,)21 b(stride;)1056
316 y(double)g(local_sum)f(=)h(0.0;)1056 366 y(double)g(sum)g(=)h(0.0;)1056
465 y(/*)g(Check)f(for)g(compatible)e(types)i(*/)1056 515 y(if)h(\(x->type)e
(!=)h(y->type\))1056 565 y({)87 b(/*)22 b(erroneous)e(*/)43
b(})1056 714 y(/*)22 b(Sum)f(up)g(the)h(local)e(part)h(*/)1056
764 y(if)h(\(x)f(->)h(type)f(==)g(TBX_ROW\))1122 814 y(for)g(\(i)g(=)h
(x->grid->p;)d(i)j(<)g(x->local_length;)1231 864 y(i)f(+=)h(x->grid->P\))1187
914 y(sum)f(+=)h(x)f(->)h(data[i])e(*)i(y)f(->)h(data[i];)1056
963 y(else)1122 1013 y(for)f(\(i)g(=)h(x->grid->q;)d(i)j(<)g
(x->local_length;)1231 1063 y(i)f(+=)h(x->grid->Q\))1187 1113
y(sum)f(+=)h(x->data[i])d(*)j(y->data[i];)1056 1212 y(/*)g(Get)f(the)g(sum)g
(of)h(all)f(parts)g(*/)1056 1262 y(MPI_Allreduce\(&loca)o(l_sum)o(,)e(&sum,)i
(1,)1100 1312 y(MPI_DOUBLE,)f(MPI_SUM,)g(x->grid->grid_co)o(mm\);)1056
1412 y(/*)i(Return)e(result)h(*/)1056 1461 y(return\(sum\);)1013
1511 y(})1013 1668 y Fh(5)56 b(The)18 b(Example)g(Revisited)1063
1767 y Fg(In)i(this)g(section)g(w)o(e)g(revise)h(the)g(\\v)o(ector")f
(library)f(for)1013 1816 y(linear)e(algebra)h(on)f(a)h(t)o(w)o(o-dimensional)
d(logical)h(top)q(ology)1013 1866 y(and)10 b(demonstrate)g(t)o(w)o(o)f(v)n
(arian)o(ts)h(of)f(\\dot)h(pro)q(duct")g(for)g(dis-)1013 1916
y(tributed)17 b(v)o(ectors.)26 b(This)16 b(time,)f(w)o(e)i(use)g(the)g
(MPI-de\014ned)1013 1966 y(cartesian)f(top)q(ologies)f(to)g(help.)23
b(As)16 b(b)q(efore,)g(in)f(a)g(2D)g(logi-)1013 2016 y(cal)d(grid,)g(v)o
(ectors)i(ma)o(y)d(either)i(b)q(e)g(column)e(or)i(ro)o(w)f(v)o(ectors.)1013
2065 y(Ev)o(erything)g(else)g(describ)q(ed)i(in)d(the)h(\014rst)h(example)d
(remains)1013 2115 y(the)k(same.)1013 2214 y Fj(5.1)52 b(Creating)18
b(a)g(Logical)i(Grid)1063 2312 y Fg(MPI)28 b(pro)o(vides)h(a)f(set)i(of)e
(routines)h(whic)o(h)g(can)f(b)q(e)1013 2362 y(used)i(to)f(create)h(virtual)f
(top)q(ologies.)63 b(The)29 b(function)1013 2412 y Fb(MPI_Make_cart\(\))23
b Fg(is)j(used)h(for)e(cartesian)i(top)q(ologies.)1013 2462
y(The)12 b(structure)h Fb(tbx_2d_grid)c Fg(is)i(unc)o(hanged)h(from)e(b)q
(efore.)1013 2512 y(Ho)o(w)o(ev)o(er,)17 b(the)f(function)g
Fb(tbx_build_grid\(\))d Fg(mak)o(es)i(use)1013 2561 y(of)h(the)g(MPI)h
(cartesian)g(virtual)f(top)q(ology)f(functions,)h(and)1013
2611 y(is)e(somewhat)f(di\013eren)o(t.)p eop
%%Page: 7 7
bop -57 117 a Fb(#define)20 b(N_DIMS)h(2)-57 216 y(/*)g(from)g(tbx_grid.c)f
(*/)-57 266 y(TBX_GRID)g(*tbx_build_grid\(MP)o(I_Com)o(m)f(comm,)553
316 y(int)i(P,)h(Q\))-57 366 y({)-13 415 y(TBX_2D_GRID)41 b(*grid;)-13
465 y(int)173 b(my_rank;)-13 515 y(int)239 b(p,)21 b(q;)-13
565 y(int)64 b(dims[N_DIMS],)19 b(/*)j(hold)f(dimensions)f(*/)96
615 y(local[N_DIMS],)e(/*)k(local)f(position)42 b(*/)74 664
y(period[N_DIMS];)18 b(/*)k(aperiodic)e(flags)h(*/)-13 764
y(/*)g(Make)g(new)g(grid)g(*/)-13 814 y(grid)g(=)g(NEW_CLEAR_ITEM\(TBX)o
(_2D_G)o(RID,)d(1\);)-13 914 y(/*)j(Generate)f(a)i(new)f(communicator)e(with)
52 963 y(virtual)h(topology)g(added:)h(*/)-13 1013 y(dims[0])f(=)i(P;)f
(dims[1])f(=)i(Q;)-13 1063 y(period[0])e(=)h(period[1])f(=)i(FALSE;)-13
1113 y(MPI_Make_cart\(c)o(omm,)c(N_DIMS,)j(dims,)g(period,)292
1163 y(TRUE,)f(&\(grid->grid_comm\)\);)-13 1262 y(/*)h(map)g(back)g(to)g
(topology)g(coordinates:)e(*/)-13 1312 y(MPI_Comm_rank\(g)o(rid->)o(grid_)o
(comm,)f(&my_rank\);)-13 1362 y(MPI_Cart_coords)o(\(grid)o(->gri)o(d_com)o
(m,)h(my_rank,)335 1412 y(N_DIMS,)i(&local\);)-13 1461 y(p)g(=)h(local[0];)
-13 1511 y(q)f(=)h(local[1];)-13 1611 y(/*)f(Split)g(comm)g(into)g(row)g(and)
g(col)g(comms)g(*/)-13 1661 y(MPI_Comm_split\()o(grid-)o(>grid)o(_comm)o(,)e
(p,)i(q,)313 1711 y(&\(grid->row\)\);)-13 1760 y(MPI_Comm_split\()o(grid-)o
(>grid)o(_comm)o(,)e(q,)i(p,)313 1810 y(&\(grid->col\)\);)-13
1910 y(/*)g(Fill)g(in)g(my)h(position)e(and)h(grid)g(size)g(*/)-13
1960 y(grid->P)194 b(=)22 b(P;)-13 2009 y(grid->Q)194 b(=)22
b(Q;)-13 2059 y(grid->p)194 b(=)22 b(p;)-13 2109 y(grid->q)194
b(=)22 b(q;)-13 2209 y(/*)f(Return)g(the)g(newly)f(built)h(grid)g(*/)-13
2258 y(return)f(\(grid\);)-57 2308 y(})-57 2458 y Fh(6)56 b(Related)18
b(W)-5 b(ork)-7 2551 y Fg(T)m(o)13 b(\014nd)h(out)g(more)e(ab)q(out)i(MPI,)g
(see)h(the)f(do)q(cumen)o(t)f([1])-57 2600 y(a)o(v)n(ailable)18
b(on)i Fd(netlib)p Fg(.)35 b(A)20 b(quic)o(k)g(w)o(a)o(y)g(to)g(access)i
(this)e(is)-57 2650 y(to)15 b(send)g(a)g(mail)d(message)i(to)h
Fi(netlib@ornl.gov)j Fg(con)o(taining)-57 2700 y(the)11 b(line)f
Fb(send)21 b(index)g(from)f(MPI)p Fg(.)10 b(Alternativ)o(ely)m(,)f(one)i(can)
1013 117 y(anon)o(ymous)e(ftp)i(the)h(source)g(from)e Fd(netlib2@cs.ut)o
(k.edu)o Fg(.)1063 167 y(T)m(o)24 b(learn)h(more)f(ab)q(out)h(full-scale)f
(parallel)g(libraries)1013 217 y(and)i(general)h(distributed)g(data)g
(structures)i(along)c(the)1013 267 y(lines)16 b(describ)q(ed)j(ab)q(o)o(v)o
(e,)e(see)g(one)g(or)g(more)f(of)g(the)h(follo)o(w-)1013 317
y(ing)c(references)k(concerning)d(the)h Fc(Multicomputer)e(T)m(o)q(olb)q(o)o
(x)1013 367 y Fg([3)o(,)g(4,)h(5)o(,)g(6)o(,)g(7].)1013 527
y Fh(7)56 b(Conclusions)1063 630 y Fg(W)m(e)13 b(in)o(tro)q(duced)h(MPI,)f
(the)h(new)g(de)g(facto)f(standard)h(for)1013 680 y(m)o(ulticom)o(puter)j
(and)h(cluster)i(message)f(passing)f([1)o(].)32 b(W)m(e)1013
730 y(describ)q(ed)23 b(the)g(issues)f(underlying)g(the)g(dev)o(elopmen)o(t)f
(of)1013 779 y(parallel)10 b(libraries)h(with)h(MPI.)f(In)h(fact,)f(w)o(e)h
(b)q(egan)g(b)o(y)f(moti-)1013 829 y(v)n(ating)f(the)i(need)h(for)e(parallel)
f(libraries)h(p)q(er)i(se,)f(and)f(w)o(e)h(ex-)1013 879 y(plained)g(wh)o(y)h
(common)d(message-passing)i(systems)h(do)g(not)1013 929 y(supp)q(ort)19
b(them.)31 b(W)m(e)18 b(describ)q(ed)i(added)f(features)g(needed)1013
979 y(to)13 b(supp)q(ort)i(suc)o(h)f(libraries,)f(and)h(what)g(these)h
(features)g(are)1013 1029 y(called)k(in)g(MPI.)g(W)m(e)g(men)o(tioned)f
(additional)g(features)j(of)1013 1078 y(MPI)13 b(that)g(supp)q(ort)h
(libraries,)f(but)g(whic)o(h)g(are)h(b)q(ey)o(ond)f(the)1013
1128 y(scop)q(e)i(of)e(this)h(initial)e(pap)q(er)j(on)e(this)h(topic)g(\(see)
h([6]\).)1063 1179 y(W)m(e)g(pro)o(vided)h(basic)h(\\do's")e(and)h(\\don'ts")
f(for)h(w)o(ould-)1013 1229 y(b)q(e)d(MPI)g(library)e(writers.)19
b(W)m(e)12 b(presen)o(ted)i(a)e(linear)g(algebra)1013 1279
y(library)k(in)g(sk)o(eletal)h(form)e(on)h(a)h(t)o(w)o(o-dimensional)d
(virtual)1013 1328 y(top)q(ology)m(,)h(including)g(co)q(de)j(fragmen)o(ts.)25
b(W)m(e)16 b(summarized)1013 1378 y(b)o(y)g(men)o(tioning)e(related)j(w)o
(ork,)g(and)f(commen)o(t)e(on)i(future)1013 1428 y(co)q(de)h(dev)o(elopmen)o
(t)e(of)h(parallel)f(libraries)i(under)g(MPI,)f(as)1013 1478
y(w)o(ell)c(as)h(p)q(orting)g(e\013orts)h(of)e(existing)h(co)q(des)h(to)f
(the)h(system.)1013 1639 y Fh(References)1013 1741 y Fg([1])19
b(Message)g(P)o(assing)e(In)o(terface)h(F)m(orum.)26 b(Do)q(cumen)o(t)16
b(for)1077 1791 y(a)h(Standard)g(Message-Passing)h(In)o(terface.)28
b(T)m(ec)o(hnical)1077 1841 y(Rep)q(ort)16 b(T)m(ec)o(hnical)f(Rep)q(ort)g
(No.)g(CS-93-214.,)e(Univ)o(er-)1077 1891 y(sit)o(y)19 b(of)f(T)m(ennessee,)k
(No)o(v)o(em)o(b)q(er)c(1993.)31 b(Av)n(ailable)17 b(on)1077
1941 y Fd(netlib)p Fg(.)1013 2028 y([2])i(William)9 b(Gropp)j(and)g(Ewing)g
(Lusk.)k(An)c(Abstract)i(De-)1077 2078 y(vice)j(De\014nition)e(to)h(Supp)q
(ort)g(the)h(Implemen)o(tation)c(of)1077 2127 y(a)19 b(High-Lev)o(el)f(Poin)o
(t-to-Poin)o(t)g(Message-Passing)i(In-)1077 2177 y(terface.)g(T)m(ec)o
(hnical)13 b(Rep)q(ort)h(MCS-P342-1193,)e(Math-)1077 2227 y(ematics)j(and)g
(Computer)f(Science)i(Division,)e(Argonne)1077 2277 y(National)f(Lab)q
(oratory)m(,)g(Argonne,)g(IL)28 b(60439,)12 b(1993.)1013 2364
y([3])19 b(An)o(thon)o(y)e(Skjellum.)26 b(The)18 b(Multicomputer)e(T)m(o)q
(olb)q(o)o(x:)1077 2414 y(Curren)o(t)f(and)e(F)m(uture)h(Directions.)j(In)c
(An)o(thon)o(y)h(Skjel-)1077 2463 y(lum)i(and)i(Donna)f(S.)g(Reese,)j
(editors,)f Fi(Pr)n(o)n(c)n(e)n(e)n(dings)f(of)1077 2513 y(the)i(Sc)n(alable)
g(Par)n(al)r(lel)f(Libr)n(aries)g(Confer)n(enc)n(e)p Fg(.)f(IEEE)1077
2563 y(Computer)c(So)q(ciet)o(y)g(Press,)h(Octob)q(er)g(1993.)1013
2650 y([4])k(An)o(thon)o(y)26 b(Skjellum,)g(Stev)o(en)h(F.)f(Ash)o(b)o(y)m(,)
i(P)o(eter)f(N.)1077 2700 y(Bro)o(wn,)10 b(Milo)f(R.)f(Dorr,)i(and)f(Alan)f
(C.)h(Hindmarsh.)h(The)p eop
%%Page: 8 8
bop 8 117 a Fg(Multicomputer)16 b(T)m(o)q(olb)q(o)o(x.)28 b(In)18
b(G.)e(L.)h(Struble)i(et)f(al.,)8 166 y(editors,)h Fi(L)n(ab)n(or)n(atory)f
(Dir)n(e)n(cte)n(d)g(R)n(ese)n(ar)n(ch)h(and)g(Devel-)8 216
y(opment)11 b(FY91)h({)f(LLNL)p Fg(,)f(pages)g(24{26.)e(La)o(wrence)j(Liv-)8
266 y(ermore)f(National)f(Lab)q(oratory)m(,)i(August)g(1992.)h(UCRL-)8
316 y(53689-91)g(\(Rev)h(1\).)-57 399 y([5])20 b(An)o(thon)o(y)f(Skjellum)f
(and)i(Ch)o(uc)o(k)g(H.)f(Baldwin.)36 b Fc(The)8 449 y(Multicomputer)28
b(T)m(o)q(olb)q(o)o(x:)49 b Fg(Scalable)29 b(P)o(arallel)g(Li-)8
498 y(braries)21 b(for)f(Large-Scale)h(Concurren)o(t)g(Applications.)8
548 y(T)m(ec)o(hnical)33 b(Rep)q(ort)h(UCRL-JC-109251,)i(La)o(wrence)8
598 y(Liv)o(ermore)12 b(National)h(Lab)q(oratory)m(,)g(Decem)o(b)q(er)h
(1991.)-57 681 y([6])20 b(An)o(thon)o(y)15 b(Skjellum)f(et)i(al.)23
b(Scalable)15 b(Libraries)h(Using)8 731 y(MPI:)21 b(Abstraction,)i(P)o
(erformance,)f(P)o(ortabilit)o(y)m(.)38 b(In)8 781 y(preparation,)13
b(1994.)-57 864 y([7])20 b(An)o(thon)o(y)9 b(Skjellum,)f(Alvin)h(P)m(.)g
(Leung,)h(Charles)g(H.)f(Still)8 914 y(Stev)o(en)h(G.)f(Smith,)g(Rob)q(ert)h
(D.)f(F)m(algout,)g(and)h(Ch)o(uc)o(k)g(H.)8 963 y(Baldwin.)42
b(The)23 b(Multicomputer)f(T)m(o)q(olb)q(o)o(x)f({)h(First-)8
1013 y(Generation)c(Scalable)g(Libraries.)32 b(In)18 b Fi(Pr)n(o)n(c)n(e)n(e)
n(dings)h(of)8 1063 y(HICSS{27)p Fg(.)f(IEEE)i(Computer)d(So)q(ciet)o(y)i
(Press,)i(1994.)8 1113 y(HICSS{27)15 b(Minitrac)o(k)h(on)g(T)m(o)q(ols)f(and)
h(Languages)g(for)8 1163 y(T)m(ransp)q(ortable)e(P)o(arallel)e(Applications.)
-57 1246 y([8])20 b(An)o(thon)o(y)f(Skjellum,)g(Stev)o(en)i(G.)d(Smith,)i
(Nathan)f(E.)8 1295 y(Doss,)d(Alvin)g(P)m(.)f(Leung,)i(and)f(Manfred)h
(Morari.)25 b(The)8 1345 y(Design)17 b(and)g(Ev)o(olution)e(of)i(Zip)q(co)q
(de.)29 b Fi(Par)n(al)r(lel)16 b(Com-)8 1395 y(puting)p Fg(,)d(1994.)k(\(In)o
(vited)d(P)o(ap)q(er,)h(to)e(app)q(ear)i(in)e(Sp)q(ecial)8
1445 y(Issue)i(on)e(Message)i(P)o(assing\).)-57 1528 y([9])20
b(Stev)o(en)e(G.)f(Smith,)f(Rob)q(ert)i(D.)f(F)m(algout,)g(Charles)h(H.)8
1578 y(Still,)c(and)h(An)o(thon)o(y)g(Skjellum.)20 b(High-lev)o(el)14
b(Message-)8 1628 y(passing)34 b(Constructs)i(for)e(Zip)q(co)q(de)i(1.0:)58
b(Design)8 1677 y(and)20 b(Implemen)o(tation.)36 b(In)21 b(An)o(thon)o(y)g
(Skjellum)d(and)8 1727 y(Donna)e(S.)g(Reese,)j(editors,)e Fi(Pr)n(o)n(c)n(e)n
(e)n(dings)h(of)f(the)h(Sc)n(al-)8 1777 y(able)25 b(Par)n(al)r(lel)f(Libr)n
(aries)g(Confer)n(enc)n(e)p Fg(.)g(IEEE)i(Com-)8 1827 y(puter)14
b(So)q(ciet)o(y)h(Press,)g(1993.)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF
.