From: "Marc Snir" <[email-masked]>
Date: Mon, 10 May 93 03:00:11 EDT

%!PS-Adobe-2.0
%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
%%Title: CON-03.DVI.*
%%Pages: 10 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: texc.pro
/TeXDict 250 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]/id ch-image N
/rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{rc 0 ne{rc 1 sub
/rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod
S 18 idiv pl S get exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index
getinterval putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw
cp 2 copy get dup 0 eq{pop 1}{dup 255 eq{pop 254}{dup dup add 255 and S 1 and
or}ifelse}ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255
eq{pop 127}{dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2
index string putinterval adv}B /set{rw cp fillstr 0 4 index getinterval
putinterval adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv
1 chg}bind{adv 1 chg nd}bind{1 add chg}bind{1 add chg nd}bind{adv lsh}bind{
adv lsh nd}bind{adv rsh}bind{adv rsh nd}bind{1 add adv}bind{/rc X nd}bind{1
add set}bind{1 add clr}bind{adv 2 chg}bind{adv 2 chg nd}bind{pop nd}bind]N /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
TeXDict begin 1000 300 300 @start /Fa 1 16 df<EA07E0EA1FF8EA3FFCEA7FFEA2B5FCA6
EA7FFEA2EA3FFCEA1FF8EA07E010107E9115>15 D E /Fb 58 123 df<EA0387A6387FFFC0B512
E0A238070E00A3EA0F1EEA0E1CA3B512E0A26C13C0381C3800A613197F9816>35
D<13E01201EA07C013005A121E5A123812781270A312F05AA77E1270A312781238123C7E7E7E13
C0EA01E012000B217A9C16>40 D<12E07E127C121C121E7EEA0780120313C01201A313E01200A7
120113C0A3120313801207EA0F00121E121C127C12F05A0B217C9C16>I<EA01C0A4EA71C738F9
CF80387FFF00EA1FFCEA07F0A2EA1FFCEA7FFF38F9CF803871C700EA01C0A411127E9516>I<12
38127C127EA2123E120E121E123C127C12F81260070B798416>44 D<B51280A311037E8D16>I<
127012F8A312700505788416>I<EB01801303130714005B130E131E131C133C13381378137013
F05B12015BA212035B120790C7FC5A120E121E121C123C12381278127012F05AA211207E9C16>
I<EA03E0EA0FF8487EEA1E3CEA380EEA780FEA7007A238E00380A8EAF00700701300A2EA780FEA
3C1E6C5AEA1FFC6C5AEA03E011197E9816>I<EA018012031207A2121F127F12FF12731203AEEA
7FF813FC13F80E197C9816>I<1238127CA312381200A81238127CA3123C121C123C123812F812
F012600618799116>59 D<EA7FFFB51280A2C8FCA5B51280A26C1300110B7E9116>61
D<13E0487EA213B0A2EA03B8A31318EA071CA5EA0E0EA2EA0FFEA2487EEA1C07A3387F1FC000FF
13E0007F13C013197F9816>65 D<EA7FF8EAFFFE6C7EEA1C0FEB07801303A313071400EA1FFF5B
A2EA1C1FEB038014C01301A41303EB0780EA7FFFB51200EA7FFC12197F9816>I<3801F180EA07
FF5AEA1F0FEA3C0712781303127000F0C7FC5AA77E387003801278A2EA3C07381F0F00EA0FFE6C
5AEA01F011197E9816>I<EA7FF8EAFFFE6C7EEA1C0FEB0780EB03C01301A214E01300A8EB01C0
A21303EB0780130F387FFF00485AEA7FF81319809816>I<387FFFC0B5FC7EEA1C01A490C7FCA2
131CA2EA1FFCA3EA1C1CA290C7FC14E0A5EA7FFFB5FC7E13197F9816>I<EA03E348B4FC121FEA
3E1FEA3C0F12787F127000F0C7FC5AA4EB3F80EB7FC0EB3F8038F007001270EA780FA2123CEA3E
1F6CB4FC1207EA03E712197E9816>71 D<EAFFFEA3EA0380B3EAFFFEA30F197D9816>73
D<387F0FE038FF8FF0387F0FE0381C0780EB0F00131E131C133C5B5BEA1DE07F121F7F1338EA1E
3C131CEA1C1E7F7F14801303387F07E038FF8FF0387F07E01419809816>75
D<EAFFC0A3001CC7FCAE144014E0A4B5FCA313197F9816>I<38FC07E0EAFE0FA2383A0B80EA3B
1BA413BBA2EA39B3A413F3EA38E3A21303A538FE0FE0A313197F9816>I<387E1FC038FF3FE038
7F1FC0381D07001387A313C7A2121CA213E7A31367A21377A21337A31317EA7F1FEAFF9FEA7F0F
13197F9816>I<EA1FFC487E487EEA780F38F00780EAE003AEEAF007A238780F00EA7FFF6C5A6C
5A11197E9816>I<EA7FF8EAFFFE6C7E381C0F80130314C01301A313031480130F381FFF005B13
F8001CC7FCA7127F487E6CC7FC12197F9816>I<EA7FE0EAFFF86C7EEA1C1E7F7FA45B131EEA1F
FC5B7FEA1C3E130EA414201470A2387F0FF038FF87E0387F03C014197F9816>82
D<EA07E3EA1FFF127FEA781F487E487EA290C7FC7E1278EA7F80EA1FF0EA07FCC67E130FEB0780
1303A212E0A2EAF00738F80F00EAFFFE5BEAC7F011197E9816>I<387FFFE0B5FCA2EAE0E0A400
001300AFEA07FC487E6C5A13197F9816>I<387F07F038FF8FF8387F07F0381C01C0B0EA1E0300
0E1380EA0F8F3807FF006C5AEA00F81519809816>I<38FC07E0EAFE0FEAFC07387001C0A30030
1380EA3803A313E3EA39F3A213B300191300A61313EA1B1BEA0F1EA2EA0E0E13197F9816>87
D<387F1F80133F131F380E1E00131CEA073C1338EA03B813F012015B120012017F120313B81207
131CA2EA0E0EA2487E387F1FC000FF13E0007F13C013197F9816>I<38FE0FE0EAFF1FEAFE0F38
1C0700A2EA0E0EA26C5AA3EA03B8A2EA01F0A26C5AA8EA03F8487E6C5A13197F9816>I<387FFF
80B5FCA238E007005B131E131CEA003C5B137013F0485A5B1203485A90C7FC5A381E0380121C12
3C12781270B5FCA311197E9816>I<B51280A311037E7E16>95 D<EA1FE0EA7FF87FEA783CEA30
1EEA000E133EEA07FE123FEA7FCEEAF80E12E0A2EAF01EEAF83E387FFFE0EA3FF7EA0FC313127E
9116>97 D<127E12FE127E120EA4133EEBFF80000F13C0EB83E01301EB00F0120E1470A4000F13
F014E01381EB83C013FF000E1300EA067C1419809816>I<EA03F8EA0FFE121FEA3C1EEA780CEA
700012F05AA47EEA70071278EA3E0FEA1FFEEA0FFCEA03F010127D9116>I<133F5B7F1307A4EA
03E7EA0FFF123FEA3C1F487E1270EAF00712E0A46C5AA2EA781FEA7C3F383FFFE0381FF7F03807
C7E014197F9816>I<EA07E0EA0FF8EA1FFCEA3C3EEA780EEA700FEAF007B5FCA3EAE0007EEA70
071278EA3E1FEA1FFEEA0FFCEA03F010127D9116>I<131FEB7F8013FFEA01E7EBC30013C0A2EA
7FFFB5FCA2EA01C0ACEA3FFE487E6C5A11197F9816>I<3803E3C0380FFFE05A381E3CC0383C1E
00EA380EA3EA3C1E6C5AEA1FFC485AEA3BE00038C7FC123CEA1FFC48B4FC4813C0EA780338F001
E0EAE000A3EAF001387C07C0383FFF80380FFE00EA03F8131C7F9116>I<127E12FE127E120EA4
137CEA0FFF148013871303A2120EA9387FC7F038FFE7F8387FC7F01519809816>I<EA0180EA03
C0A2EA0180C7FCA4EA7FC0A31201ACEA7FFFB5FC7E101A7D9916>I<127E12FE127E120EA4EB7F
E0A3EB0F00131E5B5B5BEA0FF8A213BC131EEA0E0E130FEB0780387F87F0EAFFCFEA7F87141980
9816>107 D<EAFFC0A31201B3B51280A311197E9816>I<38FBC78038FFEFC0EBFFE0EA3E7CEA3C
78EA3870AA38FE7CF8A31512809116>I<EA7E7CB5FC6C1380EA0F871303A2120EA9387FC7F038
FFE7F8387FC7F01512809116>I<EA03E0EA0FF8487EEA3C1E487EEA700738E00380A5EAF00700
701300EA780FEA3C1EEA1FFC6C5AEA03E011127E9116>I<EA7E3E38FEFF80007F13C0380F83E0
1301EB00F0120E1470A4000F13F014E01381EB83C013FF000E1300137C90C7FCA6EA7FC0487E6C
5A141B809116>I<38FF0F80EB3FE013FFEA07F1EBE0C0EBC0005BA290C7FCA7EAFFFCA313127F
9116>114 D<EA0FECEA3FFC127FEAF03CEAE01CA2EAF000EA7F80EA1FF0EA07FCEA003EEAE00E
A212F0EAF81EEAFFFC13F8EAC7E00F127D9116>I<12035AA4EA7FFFB5FCA20007C7FCA75BEB03
80A2130713873803FF005BEA00F811177F9616>I<387E1F80EAFE3FEA7E1FEA0E03AA1307EA0F
0FEBFFF06C13F83803F3F01512809116>I<387F1FC000FF13E0007F13C0381C0700EA1E0FEA0E
0EA36C5AA4EA03B8A3EA01F0A26C5A13127F9116>I<38FF1FE013BF131F38380380A413E33819
F300A213B3EA1DB7A4EA0F1EA313127F9116>I<387F1FC0133F131F380F1C00EA073CEA03B813
F012016C5A12017FEA03B8EA073C131CEA0E0E387F1FC038FF3FE0387F1FC013127F9116>I<38
7F1FC038FF9FE0387F1FC0381C0700120E130EA212075BA2EA039CA21398EA01B8A2EA00F0A35B
A3485A1279127BEA7F806CC7FC123C131B7F9116>I<383FFFC05AA238700780EB0F00131EC65A
13F8485A485A485A48C7FC381E01C0123C1278B5FCA312127F9116>I E
/Fc 48 123 df<EB3F0F9038FFBF803903C3F3C0380703E3ECC180390E01C000A6B512FCA2380E
01C0AE387F87FCA21A1D809C18>11 D<127012F812FCA2127C120CA31218A2123012601240060D
7D9C0C>39 D<13C0EA0180EA03001206120E120C121C121812381230A21270A21260A212E0AC12
60A21270A21230A212381218121C120C120E12067EEA0180EA00C00A2A7D9E10>I<12C012607E
7E121C120C120E120612077EA21380A21201A213C0AC1380A21203A21300A25A1206120E120C12
1C12185A5A5A0A2A7E9E10>I<127012F012F8A212781218A31230A2127012601240050D7D840C>
44 D<EAFFE0A30B0380890E>I<127012F8A3127005057D840C>I<12035A123FB4FC12C71207B3
A3EAFFF8A20D1C7C9B15>49 D<EA07C0EA1FF0EA3878EA603C131E12F0EAF80FA312701200130E
131E131C133C1378137013E0EA01C0EA0380EA0700EA0E03120C1218EA3006EA7FFE12FFA2101C
7E9B15>I<EA07E0EA1FF0EA3838EA301CEA781EA312381200133C13381370EA07E0A2EA003813
1C131E130E130FA2127012F8A2130EEAF01EEA601CEA3838EA1FF0EA07C0101D7E9B15>I<13F0
EA03FCEA070CEA0E0EEA1C1E1238130CEA78001270A2EAF3F0EAF7F8EAFC1CEAF81E130E12F013
0FA51270A2130E1238131CEA1C38EA0FF0EA03E0101D7E9B15>54 D<127012F8A312701200A812
7012F8A3127005127D910C>58 D<127012F8A312701200A8127012F012F8A212781218A31230A2
127012601240051A7D910C>I<1306130FA3497EA4EB33C0A3EB61E0A3EBC0F0A338018078A2EB
FFF8487FEB003CA200067FA3001F131F39FFC0FFF0A21C1D7F9C1F>65 D<B512FCA2380F007C14
1C140C140E14061303A314005B13FFA213077FA21403A213001406A3140E141E147CB512FCA218
1C7E9B1C>69 D<39FFF3FFC0A2390F003C00AAEBFFFCA2EB003CAC39FFF3FFC0A21A1C7E9B1F>
72 D<EAFFF0A2EA0F00B3A6EAFFF0A20C1C7F9B0F>I<EAFFF8A2000FC7FCAF1418A41438143014
7014F01301B5FCA2151C7E9B1A>76 D<B5128014E0380F00F01438143C141EA6143C143814F0EB
FFE0148090C7FCAAEAFFF0A2171C7E9B1C>80 D<3807E080EA1FF9EA3C1FEA7007130312E01301
A36CC7FCA2127CEA7FC0EA3FF8EA1FFEEA07FFC61380130FEB03C0A2130112C0A300E013801303
00F01300EAFC0EEACFFCEA83F8121E7E9C17>83 D<007FB512C0A238780F030070130100601300
00E014E000C01460A400001400B03803FFFCA21B1C7F9B1E>I<3AFFE0FFE1FFA23A1F001E007C
6C1530143FA20180147000079038678060A32603C0E713C0ECC3C0A2D801E0EBC1809038E181E1
A3D800F3EBF3001400A2017B13F6017E137EA3013C133CA3011C133801181318281D7F9B2B>87
D<EA0FE0EA1FF8EA3C3C7FEA180E1200131EEA07FE121FEA3E0E127812F01460A2131EEA783E38
3FFFC0381F878013127F9115>97 D<12FCA2121CA9137EEA1DFF381F8780381E01C0001C13E013
0014F0A614E01301001E13C0381F07803819FF00EA187C141D7F9C17>I<EA03F0EA0FF8EA1E3C
1238EA7818EA700012F0A612781306123CEA1E0CEA0FF8EA03E00F127F9112>I<EB1F80A21303
A9EA03E3EA0FFBEA1E0FEA3807EA7803127012F0A612701278EA3807EA1E1F380FFBF0EA07E314
1D7F9C17>I<EA03E0EA0FF0EA1C38EA381CEA781EEA700EEAFFFEA2EAF000A41270EA7806123C
EA1E0CEA0FF8EA03E00F127F9112>I<1378EA01FCEA039EEA071EEA0E0C1300A6EAFFE0A2EA0E
00AEEA7FE0A20F1D809C0D>I<EB03803807E7C0EA0FFDEA3C3D38381C00EA781EA4EA381CEA3C
3CEA3FF0EA37E00070C7FCA21230EA3FFC6CB4FC481380EA700738E001C0A438700380383C0F00
EA1FFEEA07F8121C7F9215>I<12FCA2121CA9137CEA1DFFEA1F07381E0380A2121CAB38FF9FF0
A2141D7F9C17>I<1218123C127C123C1218C7FCA612FCA2121CAEEAFF80A2091D7F9C0C>I<EA01
C0EA03E0A3EA01C0C7FCA6EA0FE0A21200B31260EAF1C0A2EA7F80EA3E000B25839C0D>I<12FC
A2121CA9EB7FC0A2EB3E0013185B5B5BEA1DE0121FEA1E70EA1C781338133C131C7F130F38FF9F
E0A2131D7F9C16>I<12FCA2121CB3A7EAFF80A2091D7F9C0C>I<39FC7E07E039FDFF9FF8391F83
B838391E01E01CA2001C13C0AB3AFF8FF8FF80A221127F9124>I<EAFC7CEAFDFFEA1F07381E03
80A2121CAB38FF9FF0A214127F9117>I<EA03F0EA0FFCEA1E1EEA380700781380EA700300F013
C0A600701380EA780700381300EA1E1EEA0FFCEA03F012127F9115>I<EAFC7EEAFDFF381F8780
381E03C0381C01E0A2EB00F0A6EB01E0A2381E03C0381F0780381DFF00EA1C7C90C7FCA6B47EA2
141A7F9117>I<3803E180EA0FF9EA1E1FEA3C071278130312F0A612781307123CEA1E1FEA0FFB
EA07E3EA0003A6EB1FF0A2141A7F9116>I<EAFDE0EAFFF0EA1F78121E1330EA1C00ABEAFFC0A2
0D127F9110>I<EA1F90EA3FF0EA7070EAE030A3EAF800EA7F80EA3FE0EA0FF0EA00F8EAC038A2
12E0A2EAF070EADFE0EA8FC00D127F9110>I<120CA5121CA2123CEAFFE0A2EA1C00A81330A5EA
1E60EA0FC0EA07800C1A7F9910>I<38FC1F80A2EA1C03AC1307EA0C0F380FFBF0EA03E314127F
9117>I<38FF0FE0A2381C0780EB0300EA0E06A36C5AA2131CEA0398A213F86C5AA26C5AA31312
7F9116>I<39FF3FCFE0A2391C0F0780EC0300131F380E1B061486A2EB318E000713CCA2136038
03E0F8A33801C070A31B127F911E>I<387F8FF0A2380F078038070600EA038EEA01DC13D8EA00
F01370137813F8EA01DCEA038E130EEA0607380F038038FF8FF8A21512809116>I<38FF0FE0A2
381C0780EB0300EA0E06A36C5AA2131CEA0398A213F86C5AA26C5AA35BA3EAF180A200C7C7FC12
7E123C131A7F9116>I<EA7FFCA2EA7838EA7070EA60F013E0EA61C01263EA0380EA070C120F12
0EEA1C1CEA3C181238EA7078EAFFF8A20E127F9112>I E /Fd 18 118 df<1238127C12FEA312
7C12381200A41238127C12FEA3127C123807127D910D>58 D<B512F814FF390FC01FC0EC07E0EC
03F0EC01F8A2EC00FCA315FEA815FCA3EC01F8A2EC03F0EC07E0EC1FC0B6120014F81F1C7E9B25
>68 D<B5FCA2EA07E0B3A6B5FCA2101C7F9B12>73 D<3BFFFC7FFE0FFCA23B0FC007E000C081D9
E003130100071680EC07F8D803F0EC0300A29039F80CFC0700011506EC1CFE9039FC187E0E0000
150CEC387F90397E303F18A290397F601FB8013F14B002E013F0ECC00F011F5CA26D486C5AA2EC
00036D5CA22E1C7F9B31>87 D<EA0FF8EA1FFE383E1F80130714C0121C1200EA03FF121FEA3F87
EA7E0712FCA3130FEA7E1F383FFBF8EA0FE115127F9117>97 D<EA03FCEA0FFEEA1F1F123E127C
130E00FCC7FCA6127C387E0180EA3E03381F0700EA0FFEEA03F811127E9115>99
D<EA01FCEA0FFF381F0F80383E07C0EA7C0314E012FCB5FCA200FCC7FCA3127C007E1360003E13
C0EA1F81380FFF00EA01FC13127F9116>101 D<3803F0F0380FFFF8383E1F38383C0F30007C13
80A4003C1300EA3E1FEA1FFCEA33F00030C7FC12707EEA3FFF14C06C13E04813F0387801F838F0
0078A3007813F0383E03E0381FFFC03803FE00151B7F9118>103 D<121E123FA25A7EA2121EC7
FCA5B4FCA2121FAEEAFFE0A20B1E7F9D0E>105 D<B4FCA2121FB3A7EAFFE0A20B1D7F9C0E>108
D<39FF1FC0FE90387FE3FF3A1FE1F70F80903980FC07C0A2EB00F8AB3AFFE7FF3FF8A225127F91
28>I<38FF1FC0EB7FE0381FE1F0EB80F8A21300AB38FFE7FFA218127F911B>I<EA01FC380FFF80
381F07C0383E03E0387C01F0A200FC13F8A6007C13F0A2383E03E0381F07C0380FFF803801FC00
15127F9118>I<38FF1FC0EBFFE0381FC1F8130014FC147C147EA6147C14FCEB80F8EBC1F0EB7F
E0EB1F8090C7FCA6EAFFE0A2171A7F911B>I<EAFE3E137F381ECF80EA1F8FA2EB070090C7FCAA
EAFFF0A211127F9114>114 D<EA1FD8EA3FF8EA7038EAE018A2EAF000EAFF80EA7FE013F0EA1F
F8EA07FCEA007CEAC01CA212E0EAF038EAFFF0EACFC00E127E9113>I<1203A35AA25AA2123FEA
FFFCA2EA1F00A9130CA4EA0F98EA07F0EA03E00E1A7F9913>I<38FF07F8A2EA1F00AC1301EA0F
03EBFEFFEA03F818127F911B>I E /Fe 55 126 df<137013F01201EA03C0EA0780EA0F00121E
121C123C123812781270A212F05AA87E1270A212781238123C121C121E7EEA0780EA03C0EA01F0
120013700C24799F18>40 D<126012F012787E7E7EEA0780120313C0120113E01200A213F01370
A813F013E0A2120113C0120313801207EA0F00121E5A5A5A12600C247C9F18>I<123C127E127F
A3123F120F120E121E127C12F81270080C788518>44 D<127812FCA412780606778518>46
D<EA01F0EA07FC487EEA1F1FEA1C0738380380007813C0EA7001A238E000E0A9EAF001007013C0
A2EA780300381380381C0700EA1F1FEA0FFE6C5AEA01F0131C7E9B18>48
D<EA018012031207A2120F123F12FF12FB12631203B0EA7FFCEAFFFEEA7FFC0F1C7B9B18>I<EA
07F8EA1FFE487E387C0F80387003C038F001E01300A3C7FCA2130114C01303EB0780EB0F00131E
5B5B5BEA03E0485A485A381E00E05AEA7FFFB5FC7E131C7E9B18>I<123C127EA4123C1200A812
38127C127EA3123E120E121E123C127812F01260071A789318>59 D<387FFFC0B512E0A3C8FCA4
B512E0A36C13C0130C7E9318>61 D<137013F8A213D8A2EA01DCA3138CEA038EA41306EA0707A4
380FFF80A3EA0E03A2381C01C0A2387F07F038FF8FF8387F07F0151C7F9B18>65
D<EAFFFC13FF1480381C03C01301EB00E0A4130114C01307381FFF80140014C0EA1C03EB00E014
F01470A414F014E01303B512C01480EBFE00141C7F9B18>I<3801FCE0EA03FEEA07FFEA0F07EA
1E03EA3C01EA78001270A200F013005AA87E007013E0A21278EA3C01001E13C0EA0F073807FF80
6C1300EA01FC131C7E9B18>I<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA1C0EA390C7FC
A21438A5B512F8A3151C7F9B18>69 D<B512E0A3EA1C00A41400A2131CA3EA1FFCA3EA1C1CA390
C7FCA7EAFFC0A3131C7E9B18>I<3801F9C0EA07FF5AEA1F0FEA1C03123CEA78011270A200F0C7
FC5AA5EB0FF0131F130F38F001C0127013031278123CEA1C07EA1F0FEA0FFFEA07FDEA01F9141C
7E9B18>I<EA7FFFB512806C1300EA01C0B3A4EA7FFFB512806C1300111C7D9B18>73
D<EA7FE012FF127F000EC7FCB11470A5387FFFF0B5FC7E141C7F9B18>76
D<38FC01F8EAFE03A2383B06E0A4138EA2EA398CA213DCA3EA38D8A213F81370A21300A638FE03
F8A3151C7F9B18>I<387E07F038FF0FF8387F07F0381D81C0A313C1121CA213E1A313611371A2
13311339A31319A2131D130DA3EA7F07EAFF87EA7F03151C7F9B18>I<EA0FF8EA3FFE487EEA78
0FEA700700F01380EAE003B0EAF00700701300EA780FEA7FFF6C5AEA0FF8111C7D9B18>I<EAFF
FEEBFF8014C0EA1C03EB01E013001470A514E01301EB03C0EA1FFF1480EBFE00001CC7FCA8B47E
A3141C7F9B18>I<EA7FF8EAFFFE6C7E381C0F80130314C01301A313031480130F381FFF005BA2
EA1C0FEB07801303A5149CA3007F13FC38FF81F8387F00F0161C7F9B18>82
D<3807F380EA1FFF5AEA7C1FEA7007EAF00312E0A290C7FC7E1278123FEA1FF0EA0FFEEA01FF38
001F80EB03C0EB01E01300A2126012E0130100F013C0EAFC07B512801400EAE7FC131C7E9B18>
I<387FFFF8B5FCA238E07038A400001300B2EA07FFA3151C7F9B18>I<38FF07F8A3381C01C0A4
380E0380A4EA0F0700071300A4EA038EA4EA018C13DCA3EA00D813F8A21370151C7F9B18>86
D<38FE03F8A338700070A36C13E0A513F8A2EA39DCA2001913C0A3138CEA1D8DA4000D13801305
EA0F07A2EA0E03151C7F9B18>I<387F8FE0139F138F380E0700120FEA070E138EEA039C13DCEA
01F8A26C5AA2137013F07F120113DCEA039E138EEA070F7F000E13801303001E13C0387F07F038
FF8FF8387F07F0151C7F9B18>I<38FF07F8A3381C01C0EA1E03000E1380EA0F0700071300A2EA
038EA2EA01DCA213FC6C5AA21370A9EA01FC487E6C5A151C7F9B18>I<EA7FFFB51280A26C1300
11047D7F18>95 D<EA1FE0EA3FF8487EEA783EEA300FC67EA248B4FC120F123FEA7F07127812F0
12E0A26C5AEA783F387FFFF0EA3FFBEA0FE114147D9318>97 D<127E12FE127E120EA5133EEBFF
80000F13C0EBE3E0EB80F0EB00701478000E1338A5120F14781470EB80F0EBC3E0EBFFC0000E13
8038067E00151C809B18>I<EA01FEEA07FF001F1380EA3F07383C030048C7FC127012F05AA47E
1270387801C0123CEA3F07381FFF8000071300EA01FC12147D9318>I<EB1F80133F131F1303A5
EA03F3EA0FFBEA1FFFEA3E1FEA780FEA700712F0EAE003A5130712F01270EA780FEA3E3F381FFF
F0380FFBF83803E3F0151C7E9B18>I<EA03F0EA0FFC487EEA3E1F38780780EA700300F013C0EA
E001A2B5FCA300F0C7FC1270387801C0123CEA3F07381FFF8000071300EA01FC12147D9318>I<
EB1FC0EB7FE013FFEA01F1EBC0C01400A3387FFFC0B5FCA23801C000AEEA7FFFA3131C7F9B18>
I<3803F1F03807FFF85A381E1F30383C0F00EA3807A5EA3C0FEA1E1EEA1FFC485AEA3BF00038C7
FC123CEA1FFF14C04813E0387801F038F00078481338A36C1378007813F0EA7E03383FFFE0000F
13803803FE00151F7F9318>I<127E12FE127E120EA5133FEBFF80000F13C0EBE1E013801300A2
120EAA387FC3FC38FFE7FE387FC3FC171C809B18>I<EA0380487EA36C5AC8FCA4EA7FC012FF12
7F1201AEB5FC14801400111D7C9C18>I<12FEA3120EA5EB3FF0137F133FEB0780EB0F00131E5B
5B5BEA0FF87F139C131EEA0E0FEB0780130314C038FFC7F8A3151C7F9B18>107
D<EA7FE012FF127F1200B3A4387FFFC0B512E06C13C0131C7E9B18>I<387DF1F038FFFBF86CB4
7E381F1F1CEA1E1EA2EA1C1CAB387F1F1F39FFBFBF80397F1F1F001914819318>I<EA7E3F38FE
FF80007F13C0380FE1E013801300A2120EAA387FC3FC38FFE7FE387FC3FC1714809318>I<EA01
F0EA0FFE487E383E0F80EA3803387001C0A238E000E0A5EAF001007013C0EA7803383C0780EA3E
0F381FFF006C5AEA01F013147E9318>I<EA7E3E38FEFF80007F13C0380FE3E0EB80F0EB007014
78000E1338A5120F14781470EB80F0EBC3E0EBFFC0000E1380EB7E0090C7FCA7EA7FC0487E6C5A
151E809318>I<387F87E038FF9FF8EA7FBF3803FC78EBF030EBE0005BA35BA8EA7FFEB5FC6C5A
15147F9318>114 D<EA0FF7EA3FFF5AEAF81FEAE007A212F0007CC7FCEA7FF0EA1FFCEA07FEEA
001F38600780EAE00312F0130738FC0F00B5FC5BEAE7F811147D9318>I<487E1203A4387FFFC0
B5FCA238038000A9144014E0A21381EBC3C0EA01FF6C1380EB7E0013197F9818>I<387E07E0EA
FE0FEA7E07EA0E00AC1301EA0F073807FFFC6C13FE3801FCFC1714809318>I<387F8FF000FF13
F8007F13F0381E03C0000E1380A338070700A3EA038EA4EA01DCA3EA00F8A2137015147F9318>
I<38FF8FF8A3383800E0A3381C01C0A2137113F9A213D9A2380DDD80A3138DEA0F8FA238070700
15147F9318>I<387F8FF0139F138F38070700138EEA039EEA01DC13F81200137013F07FEA01DC
EA039E138EEA0707000F1380387F8FF000FF13F8007F13F015147F9318>I<387F8FF000FF13F8
007F13F0380E01C0EB0380A21207EB0700A2EA03871386138EEA01CEA2EA00CCA213DC1378A313
70A313F05B1279EA7BC0EA7F806CC7FC121E151E7F9318>I<383FFFF05AA2387001E0EB03C0EB
078038000F00131E137C5B485A485AEA0780380F0070121E5A5AB512F0A314147F9318>I<EB07
E0133F137FEBFC0013E0AB1201EA7FC0485AA26C7EEA01E01200AB13FCEB7FE0133F130713247E
9F18>I<127CB47E7FEA07E01200AB7FEB7FC0EB3FE0A2EB7FC0EBF0005BAB1207B45A5B007CC7
FC13247E9F18>125 D E /Ff 25 124 df<1238127CA2127E123E120CA31218A21230126012C0
1280070E789F0D>39 D<1230127812F81278127005057C840D>46 D<130C131C13FCEA0FF81338
1200A41370A613E0A6EA01C0A61203EA7FFE12FF0F1E7C9D17>49 D<133FEBFFC03801C1E03803
00F000061378A2000F137C1380A2EB00781206C712F814F0130114E0EB03C0EB0780EB0F00131C
5B5B13C0485A380300601206001C13C05AEA7FFFB51280A2161E7E9D17>I<137F3801FFC03803
83E0EA0701EB00F05A1301A2000013E0A2EB03C0EB0780EB0F0013FE13F8130E7F1480EB03C0A3
EA3007127812F8A238F00F8000C01300EA601EEA383CEA1FF8EA07E0141F7D9D17>I<EB01C013
03A2EB0780130F131B133B13731363EBC700EA0187EA03071207120E120CEA180E1230126012E0
B512F0A238001C00A6133C3803FFC0A2141E7D9D17>I<14181438A21478147C14FCA2EB01BCA2
EB033C143EEB061EA2130CA21318141F497EA21360EB7FFF90B5FCEBC00F3901800780A2EA0300
A21206A2001F14C039FFC07FFCA21E207E9F22>65 D<0007B5FC15C039003C01E015F090387800
F8A515F0EBF001EC03E0EC07C0EC0F809038FFFE00ECFF803901E007C0EC03E0A21401A215F0D8
03C013E01403A2EC07C0A2EC0F800007EB3F00387FFFFEB512F01D1F7E9E20>I<903803F80890
380FFE1890383F073890387801F83801F000D803C013F0000714705B48C7FC5A121E003E146012
3C007C1400A45AA415C01278EC0180127C003CEB0300A26C13065C6C6C5A3807E0703801FFC06C
6CC7FC1D217B9F21>I<0007B5FC15E039003C01F0EC00F849137C153C151EA3151F5BA6484813
1E153EA3153C157C4848137815F0A2EC01E0EC03C0EC0F800007EB3F00387FFFFCB512E0201F7E
9E23>I<0007B512F8A238003C001578491338A5EC0C30EBF0181500A21438EBFFF8A23801E070
1430A2151815301400485A1560A215E0EC01C014030007130F007FB51280B6FC1D1F7E9E1F>I<
3A07FFC7FFC0A23A003C007800A2495BA649485AA490B5FCA23901E003C0A64848485AA6000713
0F397FFCFFF8485A221F7E9E22>72 D<3807FFE0A238003C00A25BA65BA6485AA6485AA61207EA
FFFCA2131F7F9E10>I<3A07FFE0FFE0A23A003C003E001538495B5DEC01804AC7FC14065C495A
5C5CEBF1F013F3EBF778EA01EC13F8497E13E080A248487EA36E7EA26E7E0007497E397FFC1FFC
00FF133F231F7E9E23>75 D<3807FFF0A2D8003CC7FCA25BA65BA6485AA3EC0180A2EC0300EA03
C0A25C1406140E141E0007137E387FFFFCB5FC191F7E9E1C>I<D807FCECFFC05DD8003EECF800
ED0378016E5C1506A2150C1367151801C7EB19E01531A21561EBC38015C1D80183EBC3C0EC8183
A2903881C303A214C6D80301495A14CCA2EB00F8A24813F0D80F80130F3A7FF0E0FFF800FF13E1
2A1F7E9E2A>I<3A07FC03FFC0A23A003E007C001538016F1330A3EB6780A2EB63C001C35BA2EB
C1E0A2EBC0F0A2D801805B1478A2143CA33903001F80A2140FA3481307D80F8090C7FC387FF003
12FF221F7E9E22>I<EB03F8EB1FFEEB3C1F9038F007803901E003C03903C001E0EA0780000FEB
00F090C7FC5A001E14F8123E123C127CA448EB01F0A4EC03E01278EC07C0127CEC0F80003C1400
003E131E001E5B6C5B3807C1F03803FFC0C648C7FC1D217B9F23>I<0007B5FC15C039003C03E0
EC01F0EB780015F8A59038F001F0A215E0EC03C0EC0F809038FFFE004813F801E0C7FCA5485AA6
1207EA7FFC12FF1D1F7E9E1F>I<3807FFFC14FF39003C07C0EC03E0EB780115F0A415E0EBF003
15C0EC0780EC1F00EBFFFC14F03801E038143C141CA2141EA23803C03EA41506A20007140C397F
FC1F1800FFEB0FF8C7EA03E01F207E9E21>82 D<EB3F04EB7FCC3801E0FC3803807CEB003C4813
3800061318120EA31400120FA213E0EA07FE3803FF806C13C038007FE013071301130014F0A200
6013E0A4387001C01480EAF80338FE0F00EAC7FCEA81F816217D9F19>I<001FB512F8A2381E03
C000381438EB078012300070141812601538153038C00F0000001400A5131EA65BA6137C381FFF
F05A1D1F7B9E21>I<39FFF007FEA2390F0001F0EC00C0A2EC0180EA0780EC03005C1406140EEB
C00C0003131C14185CA25CEA01E05CA2EBE180A2D800F3C7FCA213F6A213FCA21378A21370A21F
207A9E22>86 D<3A03FFC1FFC0A23A003E007C00011E137015606D5B1401EC8380010790C7FC14
C6EB03CC14FC6D5A5C1300801301497E143C1306497E131CEB381FEB300F01607FEBC007000180
38038003D80FC07F39FFF01FFE13E0221F7F9E22>88 D<B512FCA216027E8C17>123
D E /Fg 30 122 df<1238127C12FEA3127C123807077C8610>46 D<13181378EA01F812FFA212
01B3A7387FFFE0A213207C9F1C>49 D<EA03FCEA0FFF383C1FC0387007E0007C13F0EAFE0314F8
A21301127CEA3803120014F0A2EB07E014C0EB0F80EB1F00133E13385BEBE018EA01C0EA0380EA
0700000E1338380FFFF05A5A5AB5FCA215207D9F1C>I<EA01FE3807FFC0380F07E0381E03F012
3FEB01F813811301EA1F03000C13F0120014E0EB07C0EB1F803801FE007F380007C0EB01F014F8
EB00FCA214FE127CA212FEA214FCEA7C01007813F8383C07F0380FFFC03803FE0017207E9F1C>
I<14E013011303A21307130F131FA21337137713E7EA01C71387EA03071207120E120C12181238
127012E0B512FEA2380007E0A7EBFFFEA217207E9F1C>I<D903FE138090381FFF819038FF01E3
3901F8003FD803E0131F4848130F48481307121F48C71203A2481401127EA200FE91C7FCA8127E
ED0180127F7E15036C6C1400120F6C6C1306D803F05B6C6C13386CB413F090381FFFC0D903FEC7
FC21227DA128>67 D<B612F8A23807F001EC007815381518151CA2150CA21418A21500A2143814
78EBFFF8A2EBF07814381418A491C7FCA8B512E0A21E227EA123>70 D<B512E0A2D807F0C7FCB3
1518A41538A21570A215F014011407B6FCA21D227EA122>76 D<B538803FFCA23A07F0000180B3
A60003EC03007F000114066C6C130E017E5B90383F80F890380FFFE0010190C7FC26227EA12B>
85 D<EA07FC381FFF80383F0FC0EB07E0130314F0121E1200A213FF1207EA1FC3EA3F03127E12
FCA4EA7E07EB1DF8381FF8FF3807E07F18167E951B>97 D<B47EA2121FABEB8FE0EBBFF8EBF07C
EBC01EEB801FEC0F80A215C0A81580141F1500EBC03EEB607C381E3FF8381C0FC01A237EA21F>
I<EBFF80000713E0380F83F0EA1F03123E127E387C01E090C7FC12FCA6127C127EA2003E13306C
1360380FC0E03807FF803800FE0014167E9519>I<EB03FEA2EB007EABEA01FCEA07FF380F81FE
EA1F00003E137E127E127C12FCA8127CA27E001E13FEEA0F833907FF7FC0EA01FC1A237EA21F>
I<13FE3807FF80380F87C0381E01E0003E13F0EA7C0014F812FCA2B5FCA200FCC7FCA3127CA212
7E003E13186C1330380FC0703803FFC0C6130015167E951A>I<EB3F80EBFFC03801F3E0EA03E7
EA07C7120FEBC3C0EBC000A6EAFFFCA2EA0FC0B2EA7FFCA213237FA211>I<3801FE1F0007B512
80380F87E7EA1F03391E01E000003E7FA5001E5BEA1F03380F87C0EBFF80D819FEC7FC0018C8FC
121CA2381FFFE014F86C13FE80123F397C003F8048131F140FA3007CEB1F00007E5B381F80FC6C
B45A000113C019217F951C>I<B47EA2121FABEB87E0EB9FF8EBB8FCEBE07CEBC07EA21380AE39
FFF1FFC0A21A237EA21F>I<120E121FEA3F80A3EA1F00120EC7FCA7EAFF80A2121FB2EAFFF0A2
0C247FA30F>I<EAFF80A2121FB3ADEAFFF0A20C237FA20F>108 D<3AFF87F00FE090399FFC3FF8
3A1FB87E70FC9039E03EC07C9039C03F807EA201801300AE3BFFF1FFE3FFC0A22A167E952F>I<
38FF87E0EB9FF8381FB8FCEBE07CEBC07EA21380AE39FFF1FFC0A21A167E951F>I<13FE3807FF
C0380F83E0381E00F0003E13F848137CA300FC137EA7007C137CA26C13F8381F01F0380F83E038
07FFC03800FE0017167E951C>I<38FF8FE0EBBFF8381FF07CEBC03E497E1580A2EC0FC0A8EC1F
80A2EC3F00EBC03EEBE0FCEBBFF8EB8FC00180C7FCA8EAFFF0A21A207E951F>I<EAFF1FEB3FC0
381F67E013C7A3EB83C0EB8000ADEAFFF8A213167E9517>114 D<EA07F3EA1FFFEA780FEA7007
EAF003A26CC7FCB4FC13F0EA7FFC6C7E6C7E120738003F80EAC00F130712E0A200F01300EAFC1E
EAEFFCEAC7F011167E9516>I<13C0A41201A212031207120F121FB5FCA2EA0FC0ABEBC180A512
07EBE300EA03FEC65A11207F9F16>I<38FF83FEA2381F807EAF14FEA2EA0F833907FF7FC0EA01
FC1A167E951F>I<39FFF01FE0A2390FC00600A2EBE00E0007130CEBF01C0003131813F800015B
A26C6C5AA2EB7EC0A2137F6D5AA26DC7FCA2130EA21B167F951E>I<3AFFE3FF87F8A23A1F807C
00C0D80FC0EB0180147E13E0000790387F030014DF01F05B00031486EBF18FD801F913CC13FB90
38FF07DC6C14F8EBFE03017E5BA2EB7C01013C5BEB380001185B25167F9528>I<39FFF01FE0A2
390FC00600A2EBE00E0007130CEBF01C0003131813F800015BA26C6C5AA2EB7EC0A2137F6D5AA2
6DC7FCA2130EA2130CA25B1278EAFC3813305BEA69C0EA7F80001FC8FC1B207F951E>121
D E /Fh 15 122 df<EBF1803803FDC038078F80EA0E07121C123C14001278A3EAF00EA31430EB
1C60133CEA707C3878FCC0EA3FCF380F078014147C9317>97 D<EA0780123F13001207A3120EA4
5AA213F0EA1FFCEA3F1EEA3E0EEA3C0F12381270A4EAE01EA3133CA21338EA6070EA71E0EA3FC0
EA1F0010207B9F15>I<137E48B4FC38038380EA0F07121E001C1300EA3C0248C7FCA35AA5EA70
021307EA381EEA1FF8EA07E011147C9315>I<1478EB03F814F0EB0070A314E0A4EB01C0A213F1
EA03FD38078F80EA0E07121C123C14001278A3EAF00EA31430EB1C60133CEA707C3878FCC0EA3F
CF380F078015207C9F17>I<137C48B4FCEA0783380F0180121E123CEB0300EA780EEA7FFC13E0
00F0C7FCA412701302EA7807EA3C1EEA1FF8EA07E011147C9315>I<EB3C60EBFF703801E3E0EA
0381EA0701120F14C0121EA3383C0380A4EB07005BEA1C1FEA1E3FEA0FFEEA03CEEA000EA25BA2
1230EA7838EAF0F0EA7FE0EA3F80141D7E9315>103 D<EA01E0120F5B1201A3485AA448C7FCA2
133E137F380EC380380F81C01301120E381E0380121CA338380700A3EB0E1800701330A2EB1C60
130C38E00FC03860078015207D9F17>I<136013F0A213E01300A7120FEA1F80123113C0EA6380
A212C3EA0700A3120EA3EA1C301360A2EA38C01218EA1F80EA0F000C1F7D9E0E>I<EA03C0121F
13801203A3EA0700A4120EA45AA45AA45AA3EA7180EAE300A312E6127E123C0A207C9F0C>108
D<381E07C0383F1FE03833B870EA63E0EBC038138000C71370EA0700A3000E13E0A3EB01C3001C
13C6A2EB038C1301003813F8381800F018147D931A>110 D<137C48B4FC38038380380F01C012
1E001C13E0123C1278A338F003C0A3EB07801400EA700F131EEA3838EA1FF0EA07C013147C9317
>I<EA1E0F383F3F803833F1C0EA63C113C3138300C713800007C7FCA3120EA45AA45A12181214
7D9313>114 D<EA018013C0EA0380A4EA0700A2EAFFF0A2EA0E00A45AA45AA31330EA7060A213
C0EA7180EA3F00121E0C1C7C9B0F>116 D<38078780380FCFC03818F8E0EA3070EA6071A238C0
E1C03800E000A3485AA30071136038F380C0A238E3818038C7C300EA7CFEEA387C13147D9315>
120 D<000F1360381F8070003113E013C0EA6380A238C381C0EA0701A3380E0380A4EB0700A25B
5BEA07FEEA03EEEA000EA25B12785BEA7070EA60E0EA3FC06CC7FC141D7D9316>I
E /Fi 2 16 df<B612C0A21A027C8B23>0 D<EA07E0EA1FF8EA3FFCEA7FFEA2B5FCA8EA7FFEA2
EA3FFCEA1FF8EA07E010127D9317>15 D E /Fj 1 111 df<380F07C0381F8FE03831D8703861
F03813E013C000C35BEA0380A348485AA3903801C180000EEBC300EB03831486EB018E001C13FC
380C00F019147F931B>110 D E /Fk 52 123 df<90390FF03FFC90387FFDFF9038F83FE0D801
E013810003137FD807C01300806E137CA5B712FCA23A07C01F007CB03B3FF8FFE3FF80A2292080
9F2C>15 D<1318137013E0EA01C0EA0380A2EA0700120EA2121E121C123CA25AA412F85AA97E12
78A47EA2121C121E120EA27EEA0380A2EA01C0EA00E0137013180D2D7DA114>40
D<12C012707E7E7EA27EEA0380A213C0120113E0A2EA00F0A413F81378A913F813F0A4EA01E0A2
13C012031380A2EA0700120EA25A5A5A12C00D2D7DA114>I<1238127C12FE12FFA2127F123B12
03A21206A2120E120C12181270122008107C860F>44 D<146014E0130114C0A213031480A21307
14005B130EA2131E131C133C1338A213781370A213F05B12015BA212035BA2120790C7FC5A120E
A2121E121C123C1238A212781270A212F05AA2132D7DA11A>47 D<137013F0120F12FF12F31203
B3A4B51280A2111D7C9C1A>49 D<EA07F0EA1FFEEA383F387C1F8038FE0FC0A214E01307127C12
38EA000F14C0A2EB1F801400133E13785B5B3801C060EA0380EA0700000C13E0EA1FFF14C05A5A
B5FCA2131D7D9C1A>I<14E0A2497EA3497EA2497EA2497E130CA2EB187FA201307F143F01707F
EB601FA201C07F140F48B57EA2EB800748486C7EA20006801401000E803AFFE01FFFE0A2231F7E
9E28>65 D<B512FEECFFC03907E007E0EC03F0EC01F815FCA515F8140315F0EC0FE090B5128015
E09038E003F0EC01F815FC140015FEA515FC140115F8EC07F0B612E015001F1F7E9E25>I<9038
07FC0290383FFF0E9038FE03DE3903F000FE4848133E4848131E485A48C7120EA2481406127EA2
00FE1400A7127E1506127F7E150C6C7E6C6C13186C6C13386C6C13703900FE01C090383FFF8090
3807FC001F1F7D9E26>I<B612E0A23807F00714011400156015701530A21460A21500A2EBF1E0
13FFA213F1EBF060A2150CA214001518A31538157815F8EC03F0B6FCA21E1F7E9E22>69
D<B612E0A23807F00714011400156015701530A21460A21500A2EBF1E013FFA213F1EBF060A491
C7FCA8B512C0A21C1F7E9E21>I<903807FC0290383FFF0E9038FE03DE3903F000FE4848133E48
48131E485A48C7120EA2481406127EA200FE91C7FCA591387FFFE0A2007E903800FE00A2127F7E
A26C7E6C7E6C7E3803F0013900FE03BE90383FFF1E903807FC06231F7D9E29>I<B51280A23807
F000B3A9B51280A2111F7F9E14>73 D<B53880FFE0A23A07F0001E00151C157815E04A5A4A5A4A
C7FC140E5C147814F813F1EBF3FCEBF7FEEBFEFF5B496C7E496C7E6E7EA26E7E6E7EA26E7E6E7E
6E7EA2B5008713F0A2241F7E9E29>75 D<B512C0A2D807F0C7FCB115C0A31401A3EC0380A21407
141FB6FCA21A1F7E9E1F>I<D8FFF0EC7FF86D14FF00071600D806FCEB01BFA3017EEB033FA26D
1306A290381F800CA390380FC018A2903807E030A2903803F060A3903801F8C0A2903800FD80A2
EC7F00A2143EA33BFFF01C07FFF8A22D1F7E9E32>I<D8FFF8EBFFF0A2D807FCEB06007F7F0006
1380137FEB3FC0EB1FE0EB0FF014F8EB07FC1303EB01FEEB00FFEC7F8615C6EC3FE6141FEC0FF6
EC07FE1403A214011400157E153E151EA2D8FFF0130E1506241F7E9E29>I<EB1FF890B5FC3901
F81F803907E007E0390FC003F0391F8001F890C7FC4814FC4814FE007E147EA200FE147FA9007E
147E007F14FEA26C14FCEB8001001F14F8390FC003F03907E007E03901F81F806CB51200EB1FF8
201F7D9E27>I<B512FEECFF803907F00FE0EC03F0EC01F8A215FCA515F8A2EC03F0EC0FE090B5
1280ECFE0001F0C7FCACB57EA21E1F7E9E24>I<B512F814FF3907F01FC0EC07E06E7EA281A45D
A24A5AEC1FC090B5C7FC5C9038F03F806E7E81140FA61630A2EDF070913807F860B53881FFE091
38807F80241F7E9E27>82 D<3803FC08380FFF38381E03F8EA3C00481378143812F814187E1400
B4FC13F86CB4FC14C06C13E06C13F06C13F8120338001FFC13011300A200C0137CA36C1378A200
F813F038FE01E038E7FFC000811300161F7D9E1D>I<007FB512FCA2397C0FE07C0070141C0060
140CA200E0140E00C01406A400001400B10007B512C0A21F1E7E9D24>I<B53881FFE0A23A07F0
000C00B3A3151C000314186D1338000114306C6C137090387F03E090381FFF80D903FCC7FC231F
7E9E28>I<B53A1FFFC0FFE0A23C0FE001FC000E00D807F0150C81EBF80000035E816D15380001
49EB803015BFD800FE5D9138031FC001FF15E0017F6E5AEC060FD93F86EBE180028E13F1ECCC07
011F02F3C7FC9138D803FB02F813FF010F5CECF00101075CECE000A201035C4A1378010114704A
1330331F7F9E36>87 D<B5380FFF80A23A07F800F00000035C6D485AD801FE5B6C6C48C7FC5CEB
7F8EEB3FCC14D8EB1FF86D5A1307806D7E80A2EB06FF90380E7F80131C9038183FC0496C7E1370
496C7E496C7E3801800300038000076D7E3AFFF81FFFE0A2231F7E9E28>I<B5EB3FF8A2D80FF8
EB03800007EC07006C6C13065D6C6C131C6C6C13185D90387F807090383FC0605DEB1FE190380F
F18002F3C7FC6DB4FC6D5A5C1301AB90383FFFE0A2251F7F9E28>I<003FB51280A2EB807F393E
00FF00383801FEA248485A5CEA6007495AA2C6485A495AA2495A91C7FC5B485AEC0180EA03FCEA
07F8A2380FF00313E0001F140048485A5C48485A38FF007F90B5FCA2191F7D9E20>I<EA07FCEA
1FFF383F0F80EB07C0EB03E0A2120C1200EA01FF120FEA3F83EA7E03127C12F8A3EAFC07EA7E0D
383FF9FE3807E07E17147F9319>97 D<B4FCA2121FAAEB1FC0EB7FF0EBE0F8EB807CEB007E143E
A2143FA6143EA2147C1380381EC1F8381C7FE038181F8018207E9F1D>I<EA01FE3807FF80381F
0FC0123EA2127CEB030000FCC7FCA6127C127E003E1360003F13C0EA1F813807FF00EA01FC1314
7E9317>I<EB07F8A21300AAEA01F8EA0FFEEA1F83EA3E01EA7E00127CA212FCA6127CA2127EEA
3E01EA1F07380FFEFFEA03F818207E9F1D>I<EA01FE3807FF80381F83E0383F01F0EA7E0014F8
5AA2B5FCA200FCC7FCA3127C127E003E1318003F1338380F80703807FFE0C6138015147F9318>
I<EB1F80EBFFC03801F3E0EA03E713C71207EBC3C0EBC000A5EAFFFCA2EA07C0B0EA3FFCA21320
7F9F10>I<3801FC3C3807FFFE380F07DEEA1E03003E13E0A5001E13C0380F0780EBFF00EA19FC
0018C7FCA2121C381FFF8014F06C13F8003F13FC387C007C0070133E00F0131EA30078133CA238
3F01F8380FFFE000011300171E7F931A>I<B4FCA2121FAAEB0FC0EB3FE0EB61F0EBC0F8138013
00AD38FFE3FFA218207D9F1D>I<121C123F5AA37E121CC7FCA6B4FCA2121FB0EAFFE0A20B217E
A00E>I<B4FCA2121FAAEB01FEA2EB00F0EB01C0EB0380EB0700131E1338137C13FE7F131F381E
0F80EB07C014E0EB03F01301EB00F838FFC3FFA218207E9F1C>107 D<B4FCA2121FB3AAEAFFE0
A20B207E9F0E>I<3AFE0FE03F8090393FF0FFC03A1E70F9C3E09039C07F01F0381F807EA2EB00
7CAC3AFFE3FF8FFEA227147D932C>I<38FE0FC0EB3FE0381E61F0EBC0F8EA1F801300AD38FFE3
FFA218147D931D>I<48B4FC000713C0381F83F0383E00F8A248137CA200FC137EA6007C137CA2
6C13F8A2381F83F03807FFC00001130017147F931A>I<38FF1FC0EB7FF0381FE1F8EB80FCEB00
7EA2143E143FA6143E147E147CEB80FCEBC1F8EB7FE0EB1F8090C7FCA7EAFFE0A2181D7E931D>
I<EAFE3EEB7F80381ECFC0EA1F8FA3EB030090C7FCABEAFFF0A212147E9316>114
D<EA0FE6EA3FFEEA701EEA600EEAE006A2EAF800EAFFC0EA7FF8EA3FFCEA1FFE1203EA001FEAC0
07A212E0EAF006EAF81EEAFFFCEAC7F010147E9315>I<EA0180A31203A31207120F123FEAFFFC
A2EA0F80AA1386A5EA07CCEA03F8EA01F00F1D7F9C14>I<38FF07F8A2EA1F00AD1301A2EA0F07
3807FEFFEA03F818147D931D>I<39FFE07F80A2391F001C00380F8018A26C6C5AA26C6C5AA26C
6C5AA213F900005B13FF6DC7FCA2133EA2131CA219147F931C>I<3AFFE7FE1FE0A23A1F00F007
006E7ED80F801306A23907C1BC0CA214BE3903E31E18A23901F60F30A215B03900FC07E0A29038
7803C0A3903830018023147F9326>I<38FFE1FFA2380F80706C6C5A6D5A3803E180EA01F36CB4
C7FC137E133E133F497E136FEBC7C0380183E0380381F0380701F8380E00FC39FF81FF80A21914
7F931C>I<39FFE07F80A2391F001C00380F8018A26C6C5AA26C6C5AA26C6C5AA213F900005B13
FF6DC7FCA2133EA2131CA21318A2EA783012FC5BEAC0E0EAE1C0EA7F80001EC8FC191D7F931C>
I<383FFFE0A2383C0FC0EA381F0070138038603F00137E13FEC65A485A485A3807E060120F13C0
381F80E0383F00C0EA7F01EA7E03B5FCA213147F9317>I E /Fl 31 124
df<121C127FEAFF80A213C0A3127F121C1200A212011380A21203EA07001206120E5A5A12300A
157BA913>39 D<121C127FEAFF80A5EA7F00121C09097B8813>46 D<13075B137FEA07FFB5FCA2
12F8C6FCB3AB007F13FEA317277BA622>49 D<EBFF80000713F0001F13FC383F03FFD87C001380
007FEB7FC0EAFF80EC3FE0A3141FEA7F00001C133FC7FC15C0A2EC7F80A2ECFF00495A5CEB03F0
495A495A495A90383E00E05B13789038F001C0EA01C0EA038048B5FC5A5A5A481480B6FCA31B27
7DA622>I<EB7F803801FFF0000713FC380F81FE381F80FF487E9038E07F80A5381FC0FFD80700
1300C7FC495AEB03F8495AEBFFC014F0EB01FC6DB4FCEC7F8015C0143F15E0121EEA7F80A2EAFF
C0A315C0147FD87F801380387E00FF6C481300380FFFFC000313F0C613801B277DA622>I<1407
5C5C5C5C5CA25B5B497E130F130E131C1338137013F013E0EA01C0EA0380EA07005A120E5A5A5A
5AB612F8A3C71300A7017F13F8A31D277EA622>I<EC03804A7EA24A7EA34A7EA24A7EA34A7E14
77ECF7FE14E3A2903801C1FFA20103801480010780EC007FA2010E80153F011E80011C131F011F
B5FC4980A2903978000FFC01701307A249801503000181497FA2D8FFFE013F13FEA32F297EA834
>65 D<B612FCEDFF8016E03A03FC001FF0ED07F8821503A2821501A315035EA24B5A4B5A4B5AED
7FC090B6C7FC16E09039FC0007F0ED03FC6F7EA26F7EA21780A617005D4B5A15074B5AB712F016
C04BC7FC29297DA831>I<91393FF00180903903FFFE07010FEBFF8F90393FF007FF9038FF8001
4848C7127FD807FC143F49141F4848140F485A003F15075B007F1503A3484891C7FCAB6C7EEE03
80A2123F7F001F15076C6C15006C6C5C6D141ED801FE5C6C6C6C13F890393FF007F0010FB512C0
010391C7FC9038003FF829297CA832>I<B712E0A33903FE001FED07F015011500A21670A39138
01C0781638A302031300A2140F90B5FCA3EBFE0F1403A20201130EA3161C91C7FCA3163C163816
7816F815011503151FB712F0A327297DA82D>69 D<ECFFE0010713FC90393FC07F8090397F001F
C0D801FCEB07F048486D7E48486D7E000F8148486D7EA24848EC7F80A2007F16C049143FA300FF
16E0AA007F16C06D147FA2003F1680A26C6CECFF00A26C6C495A00075D6C6C495A6C6C495A6CB4
EB1FE090393FC07F8090260FFFFEC7FC010013E02B297CA834>79 D<B612F815FF16C03A03FE00
3FE0ED0FF0ED07F816FC150316FEA716FC150716F8ED0FF0ED3FE090B61280EDFE0049C8FCB0B5
12F8A327297DA82F>I<B612E015FE6F7E3A03FE007FE0ED0FF06F7E82150382A65E4B5AA2ED1F
E0ED7FC090B500FEC7FC5D9038FE01FF9138007FC082153F82151FA81707A2ED0FF8170FB539F8
07FE1E923801FFFC9238003FF030297DA834>82 D<48B47E000F13F0381F81FC486C7E147FA2EC
3F80A2EA0F00C7FCA2EB0FFF90B5FC3807FC3FEA1FE0EA3F80127F130012FEA3147F7E6CEBFFC0
393F83DFFC380FFF0F3801FC031E1B7E9A21>97 D<EAFFE0A3120FACEBE1FE9038E7FF809038FE
07E09038F803F8496C7E496C7EA2157FA21680A916005D5D7F4A5A6D485A90389E07E090380FFF
80260E01FCC7FC212A7EA926>I<EB1FF0EBFFFE3803F03F390FE07F80EA1FC0EA3F80A2127F90
38001E004890C7FCA97E7F003FEB01C013C0001F1303390FE007803903F01F003800FFFCEB1FE0
1A1B7E9A1F>I<EC3FF8A31403ACEB1FE3EBFFFB3803F03F380FE00F381FC007383F8003A2127F
13005AA97EA2EA3F801407381FC00F380FE01F3A03F03FFF803800FFF3EB3FC3212A7EA926>I<
EB3FE03801FFF83803F07E380FE03F391FC01F80393F800FC0A2EA7F00EC07E05AA390B5FCA290
C8FCA47E7F003F14E01401D81FC013C0380FE0033903F81F803900FFFE00EB1FF01B1B7E9A20>
I<1207EA1FC013E0123FA3121F13C0EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7DAA14>
105 D<EAFFE0A3120FACEC1FFCA3EC07C0EC0F80EC1E00147C5CEBE1F0EBE3E0EBE7C0EBEFE0EB
FFF0A280EBF3FCEBE1FE13C080EC7F80143F15C0EC1FE0EC0FF039FFFC3FFEA31F2A7EA924>
107 D<EAFFE0A3120FB3B2EAFFFEA30F2A7DA914>I<3BFFC07F800FF0903AC1FFE03FFC903AC7
83F0F07E3B0FCE03F9C07F903ADC01FB803F01F8D9FF00138001F05BA301E05BAF3CFFFE1FFFC3
FFF8A3351B7D9A3A>I<38FFC07F9038C1FFC09038C787E0390FCE07F09038DC03F813F813F0A3
13E0AF3AFFFE3FFF80A3211B7D9A26>I<EB3FE03801FFFC3803F07E390FC01F80391F800FC000
3F14E0EB00074814F0A34814F8A86C14F0A2393F800FE0A2001F14C0390FC01F803907F07F0038
01FFFC38003FE01D1B7E9A22>I<38FFE1FE9038E7FF809038FE07E0390FF803F8496C7E01E07F
140081A2ED7F80A9EDFF00A25DEBF0014A5A01F85B9038FE0FE09038EFFF80D9E1FCC7FC01E0C8
FCA9EAFFFEA321277E9A26>I<38FFC3F0EBCFFCEBDC7E380FD8FF13F85BA3EBE03C1400AFB5FC
A3181B7E9A1C>114 D<3803FE30380FFFF0EA3E03EA7800127000F01370A27E6C1300EAFFE013
FE387FFFC06C13E06C13F0000713F8C613FC1303130000E0137C143C7EA26C13787E38FF01F038
F7FFC000C11300161B7E9A1B>I<1370A413F0A312011203A21207381FFFF0B5FCA23807F000AD
1438A73803F870000113F03800FFE0EB1F8015267FA51B>I<3AFFFE03FF80A33A07F0007000A2
6D13F000035CEBFC0100015CA26C6C485AA2D97F07C7FCA2148FEB3F8E14DEEB1FDCA2EB0FF8A3
6D5AA26D5AA26D5A211B7F9A24>118 D<39FFFC0FFFA33907F003C06C6C485AEA01FC6C6C48C7
FCEBFF1E6D5AEB3FF86D5A130FA2130780497E497E131EEB3C7F496C7E496C7ED801E07FEBC00F
00036D7E3AFFF01FFF80A3211B7F9A24>120 D<B71280A22102809122>123
D E /Fm 67 124 df<90380FC3E090387FEFF09038E07C783801C0F8D8038013303907007000A7
B61280A23907007000B0387FE3FFA21D20809F1B>11 D<EB1F80EB7FC03801E0E0EA0381A2EA07
0190C7FCA6B512E0A2EA0700B0387FC3FEA21720809F19>I<90380F80F890387FE7FE9038E06E
063901C0FC0F380380F8380700F00270C7FCA6B7FCA23907007007B03A7FE3FE3FF0A22420809F
26>14 D<90380FC0FFEB7FE79038E07E0F3801C0FC4848487E38070070A7B7FCA23907007007B0
3A7FE3FE3FF0A22420809F26>I<EA7038EAF87CEAFC7EA2EA7C3EEA0C06A3EA180CA2EA381CEA
3018EA6030EA40200F0E7E9F17>34 D<127012F812FCA2127C120CA31218A21238123012601240
060E7C9F0D>39 D<136013C0EA0180EA03005A12065A121C12181238A212301270A31260A212E0
AC1260A21270A312301238A21218121C120C7E12077EEA0180EA00C013600B2E7DA112>I<12C0
12607E7E121C120C7E12077E1380A2120113C0A31200A213E0AC13C0A21201A313801203A21300
5A12065A121C12185A5A5A0B2E7DA112>I<127012F812FCA2127C120CA31218A2123812301260
1240060E7C840D>44 D<EAFFC0A30A037F8A0F>I<127012F8A3127005057C840D>I<EA03F0EA0F
FCEA1E1EEA1C0E487E00781380EA7003A300F013C0AD00701380A3EA780700381300EA1C0EEA1E
1EEA0FFCEA03F0121F7E9D17>48 D<EA01801203121F12FF12E31203B3A5EAFFFEA20F1E7C9D17
>I<EA03F0EA0FFCEA183EEA300F00601380EAC00700F013C012F81303A21220EA00071480A2EB
0F00130E5B5B5B5B485A485A90C7FC000613C05A5A38300180EA7FFFB5FCA2121E7E9D17>I<EA
03F0EA0FFCEA1C1EEA300F00781380A21307EA380F12001400A2131E5BEA03F85BEA001C7F130F
EB0780A214C0122012F8A300F01380EA600F00701300EA3C1EEA1FFCEA03F0121F7E9D17>I<13
0EA2131E133EA2136E13EE13CEEA018E1203130E1206120E120C121812381230126012E0B512F0
A238000E00A7EBFFE0A2141E7F9D17>I<EA3803EA3FFF5B13F813E00030C7FCA6EA31F0EA37FC
EA3E0EEA3C0700381380EA3003120014C0A3126012F0A21480EAC00700601300EA700EEA3C1EEA
0FF8EA07E0121F7E9D17>I<137CEA01FEEA0783380E0380EA0C07121C3838030090C7FC127812
70A2EAF3F8EAF7FEEAFC0E487EEB0380A200F013C0A51270A214801238EB0700121CEA0E1EEA07
FCEA01F0121F7E9D17>I<1260387FFFC0A21480EA600138C003001306A2C65A5BA25B5BA213E0
5B1201A3485AA41207A76CC7FC121F7D9D17>I<EA03F0EA0FFCEA1E1EEA3807123038700380A4
38780700123EEA3F0EEA1FDCEA0FF81203487EEA1E7EEA383F38700F80130738E003C01301A400
F01380EA700338380700EA1E0EEA0FFCEA03F0121F7E9D17>I<EA03F0487EEA1E1CEA380E7F12
70EB038012F0A214C0A5EA7007A2EA380F121CEA1FFBEA07F338000380A2130714001230EA780E
A2EA701CEA3078EA1FF0EA0FC0121F7E9D17>I<127012F8A312701200AA127012F8A312700514
7C930D>I<127012F8A312701200AA127012F8A312781218A41230A21260A21240051D7C930D>I<
EB0380A3497EA3EB0DE0A3EB18F0A3EB3078A3497EA3EBE01E13C0EBFFFE487FEB800FA2000314
80EB0007A24814C01403EA0F8039FFE03FFEA21F207F9F22>65 D<B512E014F83807803E808015
80A515005C143E5CEBFFF880EB801E801580140715C0A51580140FEC1F00143EB512FC14F01A1F
7E9E20>I<90381FC04090387FF0C03801F8393803C00D38078007380F0003121E003E1301123C
127C1400127812F81500A8007814C0127CA2123C003EEB0180121E6CEB0300EA07803803C00E38
01F81C38007FF0EB1FC01A217D9F21>I<B6FCA23807801F140780A215801401A214C1A2ECC000
A2138113FFA213811380A21560A2140015C0A31401A21403EC0F80B6FCA21B1F7E9E1F>69
D<B6FCA23807801F140780A215801401A214C1A2ECC000A2138113FFA213811380A491C7FCA8EA
FFFEA2191F7E9E1E>I<EAFFFCA2EA0780B3A9EAFFFCA20E1F7F9E10>73
D<39FFFC1FFCA239078007C0150014065C5C5C14705CEB81C0EB83800187C7FC80138FEB9BC0EB
B1E013E1EBC0F01380147880A280A280EC0780A215C039FFFC3FFCA21E1F7E9E23>75
D<B46CEB1FF86D133F00071500A2D806E0136FA3017013CFA3903838018FA390381C030FA3EB0E
06A3EB070CA3EB0398A3EB01F0A3380F00E03AFFF0E1FFF8A2251F7E9E2A>77
D<39FF807FF813C00007EB07809038E00300A2EA06F0A21378133CA2131EA2130FA2EB078314C3
1303EB01E3A2EB00F3A2147BA2143F80A280A2000F7FEAFFF0801D1F7E9E22>I<EB1F80EBFFF0
3801E0783807C03E48487E497E001EEB078048EB03C0A2007C14E0A20078130100F814F0A90078
14E0007C1303A2003C14C0003E1307001E14806CEB0F006D5A3807C03E3801F0F86CB45AEB1F80
1C217D9F23>I<B512E014F83807807C141E141F801580A515005C141E147CEBFFF814E00180C7
FCACEAFFFCA2191F7E9E1F>I<B57E14F0380780F8143C143E141E141FA4141E143E143C14F8EB
FFF01480EB81C0EB80E01470A21478A3147CA3150C147E143E39FFFC1F18EC0FF0C7EA03E01E20
7E9E21>82 D<3807E080EA0FF9EA1C1FEA300FEA7007EA600312E01301A36CC7FCA21278127FEA
3FF0EA1FFC6C7EEA03FF38001F801307EB03C0A2130112C0A400E01380EAF00338F80700EAFE0E
EACFFCEA81F812217D9F19>I<007FB512E0A238780F010070130000601460A200E0147000C014
30A400001400B23807FFFEA21C1F7E9E21>I<39FFFC7FF8A23907800780EC0300B3A300031302
EBC006A200015B6C6C5AEB7830EB3FE0EB0FC01D207E9E22>I<3BFFF07FF83FF0A23B0F000780
0F80EE0300A23A07800FC006A3913819E00ED803C0140CA214393A01E030F018A33A00F0607830
A3ECE07C903978C03C60A390393D801EC0A390383F000F6D5CA3010E6DC7FCA32C207F9E2F>87
D<EA0804EA180CEA3018EA7038EA6030A2EAC060A3EAF87CEAFC7EA2EA7C3EEA381C0F0E7B9F17
>92 D<EA1FE0487EEA78387FEA300E1200A3EA03FE121FEA3E0E127812F800F01330A3131E3878
3F70383FEFE0380F878014147E9317>97 D<120E12FEA2120EA9133FEBFF80380FC3C0EB00E000
0E13F014701478A7147014F0120FEB01E0EBC3C0380CFF80EB3E0015207F9F19>I<EA03F8EA0F
FCEA1E1E123CEA380CEA7800127012F0A612701278EA3803123CEA1F0EEA0FFCEA03F010147E93
14>I<EB0380133FA21303A9EA03E3EA0FFBEA1E0FEA3C07EA7803A2127012F0A61270A2EA7807
1238EA1E1F380FFBF8EA03E315207E9F19>I<EA03F0EA0FFCEA1E1E487EEA3807127838700380
12F0B5FCA200F0C7FCA31270127838380180EA1C03380F0700EA07FEEA01F811147F9314>I<13
3C13FEEA01CFEA038F1306EA0700A7EAFFF0A2EA0700B0EA7FF0A21020809F0E>I<EB01E03803
E3F0380FFF70EA1C1C383C1E00EA380EEA780FA4EA380EEA3C1EEA1C1CEA3FF8EA33E00030C7FC
A21238EA3FFE381FFF804813C0387003E0EB00F0481370A36C13F0387801E0383E07C0380FFF00
EA03FC141F7F9417>I<120E12FEA2120EA9133E13FF380FC380EB01C0A2120EAD38FFE7FCA216
207F9F19>I<121C121E123E121E121CC7FCA6120E127EA2120EAFEAFFC0A20A1F809E0C>I<13E0
EA01F0A3EA00E01300A61370EA07F0A212001370B3A21260EAF0E0EAF1C0EA7F80EA3E000C2882
9E0E>I<120E12FEA2120EA9EB1FF0A2EB0F80EB0E00130C5B5B137013F0EA0FF81338EA0E1C13
1E130E7F1480130314C038FFCFF8A215207F9F18>I<120E12FEA2120EB3A9EAFFE0A20B20809F
0C>I<390E3F03F039FEFF8FF839FFC1DC1C390F80F80EEB00F0000E13E0AD3AFFE7FE7FE0A223
147F9326>I<EA0E3EEAFEFF38FFC380380F01C0A2120EAD38FFE7FCA216147F9319>I<EA01F8EA
07FE381E0780383C03C0EA3801387000E0A200F013F0A6007013E0EA7801003813C0EA3C03381E
07803807FE00EA01F814147F9317>I<EA0E3F38FEFF8038FFC3C0380F01E0380E00F0A21478A7
147014F0120FEB01E0EBC3C0380EFF80EB3E0090C7FCA7EAFFE0A2151D7F9319>I<3803E180EA
0FF9EA1E1FEA3C0712781303127012F0A6127012781307EA3C0FEA1E1FEA0FF3EA03E3EA0003A7
EB3FF8A2151D7E9318>I<EA0E78EAFEFCEAFF9EEA0F1E130C1300120EACEAFFE0A20F147F9312>
I<EA1F90EA3FF0EA7070EAE030A3EAF0001278EA7F80EA3FE0EA0FF01200EAC0781338A212E0A2
EAF070EADFE0EA8F800D147E9312>I<1206A4120EA2121E123EEAFFF8A2EA0E00AA1318A5EA07
3013E0EA03C00D1C7F9B12>I<380E01C0EAFE1FA2EA0E01AC1303A2EA070FEBFDFCEA01F11614
7F9319>I<38FF87F8A2381E01E0000E13C01480A238070300A3EA0386A2138EEA01CCA213FC6C
5AA21370A315147F9318>I<39FF9FF3FCA2391C0780F01560ECC0E0D80E0F13C0130C14E00007
EBE180EB186114713903987300EBB033A2143F3801F03EEBE01EA20000131CEBC00C1E147F9321
>I<387FC7FCA2380703E0148038038300EA01C7EA00EE13EC13781338133C137C13EEEA01C713
8738030380380701C0000F13E038FF87FEA21714809318>I<38FF87F8A2381E01E0000E13C014
80A238070300A3EA0386A2138EEA01CCA213FC6C5AA21370A31360A35B12F0EAF18012F3007FC7
FC123C151D7F9318>I<EA3FFFA2EA380EEA301CEA703CEA6038137013F0EA01E013C0EA0380EA
0783EA0F03120EEA1C07EA3C061238EA701EEAFFFEA210147F9314>I<B512FCA21602808C17>I
E /Fn 14 124 df<DC7FFE140E030FB500E0133E92B600F8137E020303FE13FE021FEDFF81027F
D9F80113E391B53980003FF7010301FCC7EA07FF4901F08049491400490180157F4990C9123F49
48161F4948160F485B4818074A1603485B481801A2485B1900A2485B1A7E5AA391CCFCA2B5FCAD
7EA2801A3EA27EA26C7FA21A7E6C6D177CA26C19FC6C6D17F86E16016CF003F06C7F6D6CEE07E0
6D6CEE0FC06D6DED1F806D01E0ED7F006D6D15FE6D01FCEC03FC0100D9FF80EB0FF86E01F8EBFF
F0021F90B612C0020393C7FC020015FC030F14E09226007FFEC8FC474979C756>67
D<B712FEA5D8000FEBE000B3B3B3A7B712FEA527477DC62D>73 D<B97E18FC18FF19C019F0D800
1F902680000F13FC05017F716C7E7213807213C0841AE0A27213F0A31AF8A81AF0A34E13E0A21A
C04E1380604E13004D485A050F13F892B75A19C04EC7FC18F003C0CAFCB3A9B712F8A545477CC6
51>80 D<903807FFFE017FEBFFE048B612F84815FE489039001FFF8003077F48D980017F6F7FA2
707EA2707E6C90C7FC6C5A6C5AC9FCA40207B5FC91B6FC130F013FEBF03F3901FFFE004813F048
13C04890C7FC485A485A485AA212FF5BA3167FA26D14FF6C6CEB01EF003F140301FF90380FCFFF
6C9026C07F8F13F8000790B5000713FC6CECFC03C66CEBF0010107903980007FF8362E7DAD3A>
97 D<EC1FFE49B512E0010714F8011F14FE90397FFC07FF9026FFE0011380489039C0007FC048
4914E04890C7EA3FF048ED1FF8485A160F484815FCA2007F15074915FEA212FFA390B7FCA317FC
01F8C9FCA5127F7FA2123F171C6C6C153E177E6C7E6C6D14FC6C6D13016C6DEB03F86C6DEB1FF0
D93FFEEBFFE06DB612800107ECFE00010014F8020F13802F2E7DAD36>101
D<EB7FC0B5FCA512037EB3B3B3A6B61280A519487CC720>108 D<903A7FC001FFC0B5010F13F8
033F13FE92B6FC9126C1FE077F9126C3F0037F00039026C7C0017F6CEBCF0014DE02DC6D7F14FC
5CA25CA25CB3A8B6D8C07FEBFFE0A53B2E7CAD42>110 D<EC0FFF91B512F0010714FE011F6E7E
90263FFC037F903AFFE0007FF0480180EB1FF84890C76C7E48486E7E000F824980001F1780003F
17C04980A2007F17E0A300FF17F0AA007F17E0A46C6C4A13C0A2001F17806D5C000F17006C6C4A
5A6C6D495A6C6D495A6C6D495A903A7FFC03FFE0011FB6128001074AC7FC010014F0020F90C8FC
342E7DAD3B>I<90397FC01FFEB590B512E002C314F802CF14FE9139DFF01FFF9126FF80077F00
0349486C7F6C496D7F02F06D7F717E4A81173F84171F84A3711380AB19005FA34D5AA260177F6E
5D6E4A5A6E495B6E495B9126FF800F5BDBE03F90C7FC02EFB512FC02E314F002E014C0DB1FFCC8
FC92CAFCAFB612C0A539427CAD42>I<9039FF803FC0B5EBFFF0028313FC02877F91388FE7FFEC
9F070003D99E0F13806C13BCA214F8A214F06F13004A6C5A6F5A92C8FCA25CB3A6B612E0A5292E
7CAD31>114 D<90390FFF81E090B512F7000314FF5A380FFC01391FE0003FD83F80130F007F14
0790C7FC15035AA27F6D90C7FC13F013FF14F86CEBFFC015F86C14FE6C806C15806C15C06C15E0
C615F0013F14F81307EB001F020013FC153F0078140F00F81407A26C1403A27E16F86C14076D14
F06D130F01F0EB1FE001FEEBFFC090B6128048ECFE00D8F83F13F8D8F00313C0262E7CAD2F>I<
EB01F0A61303A31307A3130FA2131F133FA2137FEA01FF5A000F90B512C0B7FCA4C601F0C7FCB3
A5ED01F0A91503D97FF813E01507D93FFC13C090391FFE1F806DB5FC6D1400010113FC9038003F
F024427EC12E>I<007FB5D8801FB5FCA528007FF8000390C7FC6EEB01FC6D6C495A6D6C495A6D
5D6D6D485A6D6D485AEDE03F6D6D48C8FC6DEBF8FE91387FF9FC6EB45A5E6E5B6E5B80806E7F82
824A7F825C91380FEFFFDA1FCF7FDA3F877FDA7F037FECFE0149486C7F4A6D7E49488001076E7E
49486D7E49487F49486D7FD9FFC081B500F8013FEBFFC0A53A2E7EAD3F>120
D<BA12C0A43A04809D3B>123 D E /Fo 8 117 df<140F5C147FEB03FF131FB6FCA313E7EA0007
B3B3A7007FB612E0A4233879B732>49 D<DB1FFE14E00203B5EAC001021FECF803027FECFE0790
3B01FFFC00FF0F010701C0EB1FDF4990C7EA07FFD93FFC804948804948804849157F4849153F48
49151FA24890C9120FA248481607A2485AA2007F1703A34993C7FC12FFAD127F7FF001E0A2123F
A26C7E18036C6C17C018076C7FF00F806C7F6C6DED1F006C6D153E6D6C5D6D6C5DD90FFFEC03F0
6D01E0EB0FE0010101FCEB7FC06D6CB6C7FC021F14FC020314E09126001FFEC8FC3B3D7ABB48>
67 D<EB1FFF48B512F0000714FC390FF807FF001F01017F6D6C7F6F7EA282153F6C5A6C5AEA01
C0C8FCA2EC07FF0103B5FC131F90B5123F000313C0000F1300EA1FFC485A485A5B12FF5BA3157F
A26C6C13FF6D5A6C6C4813FC3B1FFC0FDFFFF00007B5120F0001EBFC0739003FF0012C267DA530
>97 D<903801FFC0011F13F8017F13FE9038FFC1FF00039038007F80D807FCEB1FC0484814E0ED
0FF0485A003FEC07F8A2485AED03FCA212FFA290B6FCA301E0C8FCA5127FA27F003F153CA26C6C
147C000F15786C6C14F86C6CEB01F06C6CEB07E06C9038E03FC0013FB51200010F13FC010013E0
26267DA52D>101 D<13FFB5FCA412077EB0ED7FC0913803FFF8020F13FE91381F03FFEC3C0102
7814804A7E4A14C05CA25CA291C7FCB3A4B5D8FC3F13FFA4303C7CBB37>104
D<9039FF01FF80B5000F13F0023F13FC9138FE03FFDAF00113C000039039E0007FE0028014F0EE
3FF891C7121F17FC160F17FEA3EE07FFAAEE0FFEA3EE1FFCA217F86EEB3FF06E137F6EEBFFE06E
481380DAFC07130091383FFFFC020F13F0020190C7FC91C9FCADB512FCA430377DA537>112
D<9038FE03F000FFEB0FFE91383FFF8091387C7FC014F00007ECFFE06C6C5A5CA25CED7FC0ED3F
80ED0E0091C8FCB3A3B512FEA423267DA529>114 D<EB0780A5130FA4131FA2133FA2137F13FF
5A1207001FEBFFF8B6FCA30001EB8000B3153CA86C147814C0017F13F8ECE1F090381FFFE00107
13C0010113001E377EB627>116 D E /Fp 36 119 df<EB078090391FE003809038387007EB70
3001E0130301C0140000011370903880F0061203EC600C48C75A5D15E090383C01F09038FE03B8
9038C30618EB830C903803181C390F06300CEA1F86381DFC36393CF03F183838001F0078130E14
00A200705C12F000705C12785D0038495A003C49C7FC6C130E380F807C3803FFF038007F802125
7BA325>38 D<127012F8A212F012E005057A840F>46 D<14035CA25C1580141FA2143714771467
14C7A2EB0187A2EB0307A21306130E130C1318A2133090383FFFC05BEB600313C012011380EA03
00A21206A2121E39FFC03FFC13801E237DA224>65 D<90B512E015F890380F003C151E131E150E
150FA249130E151EA2153C49137815F0EC01E090387FFFC090B5FC9038F003E0EC00F01578485A
1538153CA248481378A315F039078001E01403EC07C0EC1F00B512FE14F020227DA122>I<90B5
12F015FC90380F003E150F011EEB0780150316C015015B16E0A35BA449EB03C0A44848EB0780A2
16005D4848130E5D153C5D48485B4A5AEC0780021FC7FCB512FC14F023227DA125>68
D<91387E0180903903FF810090380F80C390383E00670178133F49133ED801C0131E485A120748
C7121C120E121E5A15185A92C7FCA25AA4EC3FFC5AEC01E0A26C495AA312700078495A1238003C
130F6C131B260FC0F3C7FC3803FFC1C690C8FC212479A226>71 D<EBFFF8A2EB0F00A2131EA45B
A45BA45BA4485AA4485AA4485AA4EAFFF8A215227DA113>73 D<903807FFC04913809038003C00
A25CA45CA4495AA4495AA4495AA449C7FCA212381278EAF81EA2485AEA6078EA70F0EA3FE0EA1F
801A237CA11A>I<9039FFF80FFCA290390F0007C01600011E130E5D5D1560495B4A5A4AC7FC14
0E495A5C147814FCEBF1BCEBF33CEBFE1E13FC3801F01F497EA2813803C007A26E7EA2EA07806E
7EA28139FFF80FFEA226227DA125>I<EBFFFCA2010FC7FCA2131EA45BA45BA45BA4485A1560A2
15C0485AA2EC0180A238078003EC07005C147FB512FEA21B227DA11F>I<D9FFC0EB0FFCA2010F
EC1F801637011BEC3F00166FA216CF0133EB019EA2ED031EEB31E00161EB063CA2150C151801C1
5C1530A21560D80181495AA2ECE180EB80F13A0300F301E014F6A214FC00064A5A14F8A2001F13
F03AFFE0E07FFCA22E227DA12C>I<01FFEB1FFC1480010FEB03C01680D91BC01300A3EB19E001
311306A2EB30F0A201605B1478A3496C5AA3141ED801805BA2140FA2D803005BEC07E0A300065C
1403A2121F39FFE00180A226227DA124>I<14FE903807FF8090380F03E090383C00F001701378
4913384848133C4848131C48C7FC48141E121EA25AA25AA348143CA31578A34814F0A26CEB01E0
15C01403EC07800078EB0F00141E6C5B6C13F8380F83E03807FF80D801FCC7FC1F2479A225>I<
90B512C015F090380F0078153C011E131E150EA349131EA3153C491338157815F0EC03C090B512
005CEBF00FEC07803901E003C0A43903C00780A43907800F001503A2EC0706D8FFF8138EEC03FC
C7EA01F020237DA124>82 D<903801F06090380FFC4090381E0EC0EB3807EB700301E0138013C0
1201A2D803801300A26DC7FCA27FEA01F813FF6C13E06D7EEB1FF8EB03FCEB007C143C80A30030
131CA31418007013385C00781360387C01C038EF0380D8C7FFC7FCEA81FC1B247DA21B>I<001F
B512F8A2391E03C07800381438EB0780123000601430A2EB0F0012C0A3D8001E1300A45BA45BA4
5BA4485AA31203B57E91C7FC1D2277A123>I<393FFE07FFA23903C000F015E0484813C0A4390F
000180A4001EEB0300A4481306A4485BA4485BA25C12705C5C6C485A49C7FCEA1E0EEA0FFCEA03
F0202377A124>I<3BFFF03FF81FF8D9E07FEB3FF03B1F0007800780001E010FEB03001606141F
5E14375E14675E14C75E381F0187000F5DEB0307ED818013060383C7FC130C158613180138138C
0130139C0160139815B801C013B015E013805D13005D120E92C8FC120C2D2376A131>87
D<39FFF003FFA2000FC712F015E090388001C000071480EC0300EBC0060003130E5CEBE0180001
5B5CEBF0E000005BEBF18001FBC7FC13FF137E137C1378A45BA4485AA4EA3FFE5B202276A124>
89 D<EBF8C0EA01FDEA078F380F0780120E121CEA3C03383807001278A3EAF00EA214101418EB
1C30EA703C137C3838FC60383FCFC0380F078015157B9419>97 D<137E48B4FC3803C380EA0703
EA0E07121C003CC7FC12381278A35AA45BEA7003130EEA383CEA1FF0EA0FC011157B9416>99
D<143CEB03F8A2EB0038A21470A414E0A4EB01C013F9EA01FDEA078F380F0780120E121CEA3C03
383807001278A3EAF00EA214101418EB1C30EA703C137C3838FC60383FCFC0380F078016237BA2
19>I<13F8EA03FCEA0F0EEA1E06123C1238EA780CEAF038EAFFF01380EAF0005AA413021306EA
701C1378EA3FE0EA0F800F157A9416>I<143C147F14CF1301EB03861480A3EB0700A5130EEBFF
F0A2EB0E00A25BA55BA55BA55BA45B1201A2EA718012F390C7FC127E123C182D82A20F>I<EB1F
18EB3FB8EBF1F83801E0F013C0EA038000071370EB00E05AA3381E01C0A4EB0380EA0E07130FEA
071FEBFF00EA01E7EA0007A2130EA3EA701CEAF0385BEA7FE0EA3F80151F7E9416>I<136013F0
13E0A21300A8120EEA1F801233126312C3A3EA0700A2120EA35A13201330EA3860A213C01239EA
1F80EA0E000C217CA00F>105 D<13F0EA0FE0A21200A2485AA4485AA448C7FCEB01E0EB07F0EB
0E30380E1870EB30F01360EBC060381D8000121F13E0EA1CF0EA3838133CEB1C20143038703860
A21440EB18C038E01F8038600F0014237DA216>107 D<EA01E0EA1FC0A21201A2EA0380A4EA07
00A4120EA45AA45AA45AA212711380EAE300A312E6127E123C0B237CA20C>I<381E0780383F1F
E0EA63B8EBE070EAC3C0A21380000713E01300A3380E01C0A214C2EB0383001C1386EB0706140C
EB0318003813F0381801E018157C941B>110 D<137E48B4FC3803C380380701C0120E001C13E0
123CA21278A338F003C0A21480130700701300130E5B6C5AEA1FF0EA07C013157B9419>I<3803
C1F03807E3F8380C761C137C3818781E1370A2EA00E0A43801C03CA314780003137014F014E0EB
E3C038077F80EB1E0090C7FCA2120EA45AA2EAFFC0A2171F7F9419>I<381E0F80383F1FC03863
B0E013E0EAC3C1A2EB80C00007130090C7FCA3120EA45AA45A121813157C9415>114
D<13FC48B4FC38038380EA0703EA0E07A2EB0200000FC7FC13F0EA07FC6C7EEA007E130FA2EA70
07EAF00EA2485AEA7038EA3FF0EA1FC011157D9414>I<13C01201A4EA0380A4EA0700EAFFF8A2
EA0700120EA45AA45AA213101318EA7030A21360EA71C0EA3F80EA1E000D1F7C9E10>I<000F13
30381F8070EA31C0006113E012C1EAC380A2380381C0EA0701A3380E0380A214841486EB070CA2
130FEB1F183807F3F03803E1E017157C941A>I<380F01C0381F83E0EA31C3EA61C1EAC1C0EAC3
80A2000313C0EA0700A3380E0180A3EB0300A213061304EA0F1CEA07F8EA01E013157C9416>I
E /Fq 53 122 df<ECC018A301011338EC8030A301031370EC0060A34913E001065BA3EB0E0101
0C5BB712C0A226001803C7FCA3EB3807EB3006A4B712C0A22600600CC7FCEBE01CEBC018A30001
1338EB8030A300031370EB0060A34813E000065BA2222D7DA229>35 D<127012F812FCA2127C12
0CA41218A21230A212601240060F7C840E>44 D<EAFFE0A30B037F8B10>I<127012F8A3127005
057C840E>I<EA01F0EA07FCEA0E0E487E38380380A2007813C0EA7001A300F013E0AE007013C0
A3EA780300381380A2381C0700EA0E0EEA07FCEA01F013227EA018>48 D<EA01801203120F12FF
12F31203B3A8EAFFFEA20F217CA018>I<EA03F0EA0FFCEA1C1F383007801270007813C0A21303
EA380712001480A2EB0F00130E133CEA03F8A2EA001E7FEB078014C0130314E01220127012F8A2
00F013C01260EB07801230381C1F00EA0FFCEA03F013227EA018>51 D<00101380EA1C07381FFF
005B5B13F00018C7FCA613F8EA1BFEEA1F0F381C0780EA180314C0EA000114E0A4126012F0A214
C0EAC0031260148038300700EA1C1EEA0FFCEA03F013227EA018>53 D<137E48B4FC3803C18038
0701C0EA0E03121CEB018048C7FCA2127812701320EAF1FCEAF3FEEAF60738FC038000F813C013
0112F014E0A51270A3003813C0130300181380381C0700EA0E0EEA07FCEA01F013227EA018>I<
EA01F0EA07FCEA0E0F38180780EA3803383001C01270A31278EB0380123E383F0700EA1FCEEA0F
FCEA03F87FEA0F7F381C3F80EA380F387007C0130338E001E01300A5387001C0A238380380381E
0F00EA0FFEEA03F013227EA018>56 D<EA01F0EA07FCEA0E0E487E383803801278127038F001C0
A314E0A5127013031278EA3807EA1C0DEA0FF9EA07F1380081C0130113031480A2383007001278
130EEA701C6C5AEA1FF0EA0FC013227EA018>I<497E497EA3497EA3497E130CA2EB1CF8EB1878
A2EB383C1330A2497EA3497EA348B51280A2EB800739030003C0A30006EB01E0A3000EEB00F000
1F130139FFC00FFFA220237EA225>65 D<B512F814FE3907800F80EC07C0EC03E0140115F0A515
E01403EC07C0EC0F8090B512005C9038801F80EC07C0EC03E0EC01F0140015F8A6EC01F0140315
E0EC0FC0B6120014FC1D227EA123>I<90380FE01090383FF8309038F81C703801E0063903C003
F03807800148C7FC121E003E1470123C127C15301278A212F81500A700781430A2127CA2003C14
60123E121E6C14C06C7E3903C001803901E003003800F80EEB3FF8EB0FE01C247DA223>I<B512
F014FE3807801FEC07C01403EC01E0EC00F015F81578157C153CA3153EA9153CA2157C1578A215
F0EC01E01403EC07C0EC1F00B512FE14F81F227EA125>I<B612C0A23807800F14031401140015
E0A21560A21460A21500A214E0138113FFA2138113801460A491C7FCA8EAFFFEA21B227EA120>
70 D<903807F00890383FFC189038FC0E383801E0033903C001F83807800048C71278121E1538
5AA2007C14181278A212F81500A6EC1FFF1278007CEB0078A2123CA27EA27E6C7E6C6C13F83801
F0013900FC079890383FFE08903807F80020247DA226>I<39FFFC3FFFA239078001E0AD90B5FC
A2EB8001AF39FFFC3FFFA220227EA125>I<3803FFF0A238000F00B3A6127012F8A3EAF01EEA60
1CEA3878EA1FF0EA07C014237EA119>74 D<39FFFC07FFA239078001F015C05D4AC7FC14065C5C
14385C5CEB81C0EB8380EB87C080138DEB98F013B0EBE078497E13808080A26E7E8114036E7EA2
6E7E4A7E3AFFFC07FF80A221227EA126>I<EAFFFEA2EA0780B3EC0180A41403A215005CA25C14
3FB6FCA219227EA11E>I<D8FFC0EB03FF6D5B000715E0A2D806F0130DA301781319A36D1331A3
6D1361A36D13C1A29038078181A3903803C301A3EB01E6A3EB00FCA31478EA1F80D8FFF0EB3FFF
143028227EA12D>I<39FF800FFF13C00007EB01F89038E000607F12061378A27F133E131E7FA2
EB078014C01303EB01E0A2EB00F01478A2143CA2141E140FA2EC07E0A214031401A2381F8000EA
FFF0156020227EA125>I<EB0FE0EB7FFCEBF83E3903E00F8039078003C0390F0001E0A2001EEB
00F0003E14F8003C1478007C147CA20078143CA200F8143EA9007C147CA3003C1478003E14F800
1E14F06CEB01E0EB80033907C007C03903E00F803900F83E00EB7FFCEB0FE01F247DA226>I<B5
12F014FC3807803FEC0F801407EC03C0A215E0A515C0A2EC0780140FEC3F00EBFFFC14F00180C7
FCADEAFFFCA21B227EA121>I<B512E014F83807803E140F6E7E816E7EA64A5A5D4AC7FC143EEB
FFF85CEB80788080140E140FA481A3ED818015C114073AFFFC03E300EC01FEC8127C21237EA124
>82 D<3803F020380FFC60381C0EE0EA3803EA7001A2EAE000A21460A36C1300A21278127FEA3F
F0EA1FFE6C7E0003138038003FC0EB07E01301EB00F0A2147012C0A46C136014E06C13C0EAF801
38EF038038C7FF00EA81FC14247DA21B>I<007FB512F8A2387C07800070143800601418A200E0
141C00C0140CA500001400B3A20003B5FCA21E227EA123>I<3BFFF03FFC07FEA23B0F0007C001
F00203EB00E01760D807806D13C0A33B03C007F001801406A216032701E00C781300A33A00F018
3C06A3903978383E0CEC301EA2161C90393C600F18A390391EC007B0A3010F14E0EC8003A36D48
6C5AA32F237FA132>87 D<387FFFFEA2EB003C007C137C0070137814F84813F0EB01E0EAC00314
C01307148038000F005B131E133E133C5B13F85B0001130313E0EA03C012071380000F13071300
001E1306003E130E003C131E007C133E007813FEB5FCA218227DA11E>90
D<EA0FE0EA1FF8EA3C1C7FEA18071200A25BEA03FF120FEA3F07127C127812F01418A2130F1278
387C3FB8383FF3F0380FC3C015157E9418>97 D<120E12FEA2121E120EAAEB1F80EB7FE0380FC0
F0EB0078000E1338143C141C141EA7141C143C000F1338EB8070EBC1F0380C7FC0EB1F0017237F
A21B>I<EA01FEEA07FF380F0780121C383803000078C7FC127012F0A7127814C07E381E018038
0F0300EA07FEEA01F812157E9416>I<14E0130FA213011300AAEA03F0EA07FEEA1F07EA3C01EA
38001278127012F0A712701278EA3801EA3C03381E0EF0380FFCFEEA03F017237EA21B>I<EA01
FCEA07FF380F0780381C03C0EA3801007813E0EA7000B5FCA200F0C7FCA5127814607E6C13C038
0F83803807FF00EA00FC13157F9416>I<133C13FEEA01CFEA038FA2EA0700A9EAFFF8A2EA0700
B1EA7FF8A2102380A20F>I<14F03801F1F83807FFB8380F1F38381E0F00EA1C07003C1380A500
1C1300EA1E0FEA0F1EEA1FFCEA19F00018C7FCA2121CEA1FFF6C13C04813E0383801F038700070
481338A400701370007813F0381E03C0380FFF803801FC0015217F9518>I<120E12FEA2121E12
0EAAEB1F80EB7FC0380FC1E0EB80F0EB0070120EAE38FFE7FFA218237FA21B>I<121C121E123E
121E121CC7FCA8120E12FEA2121E120EAFEAFFC0A20A227FA10E>I<EA01C0EA03E0A3EA01C0C7
FCA8EA01E0120FA212011200B3A4EA60C012F11380EA7F00123E0B2C82A10F>I<120E12FEA212
1E120EAAEB0FFCA2EB07E0EB0380EB0700130E13185B137813F8EA0F9C131EEA0E0E7F1480EB03
C0130114E014F038FFE3FEA217237FA21A>I<120E12FEA2121E120EB3ABEAFFE0A20B237FA20E>
I<390E1FC07F3AFE7FE1FF809039C0F303C03A1F807E01E0390F003C00000E1338AE3AFFE3FF8F
FEA227157F942A>I<380E1F8038FE7FC038FFC1E0381F80F0380F0070120EAE38FFE7FFA21815
7F941B>I<EA01FCEA07FF380F0780381C01C0383800E0007813F00070137000F01378A7007013
70007813F0003813E0381C01C0380F07803807FF00EA01FC15157F9418>I<380E1F8038FE7FE0
38FFC1F0380F0078120E143CA2141EA7143CA2000F1378EB8070EBC1F0380E7FC0EB1F0090C7FC
A8EAFFE0A2171F7F941B>I<EA0E3CEAFEFEEAFFCFEA1F8FEA0F061300120EADEAFFF0A210157F
9413>114 D<EA0F88EA3FF8EA7078EAE0381318A3EAF000127FEA3FE0EA1FF0EA01F8EA003CEA
C01CA212E0A2EAF018EAF878EADFF0EA8FC00E157E9413>I<1206A5120EA3121E123EEAFFF8A2
EA0E00AA130CA51308EA0718EA03F0EA01E00E1F7F9E13>I<000E137038FE07F0A2EA1E00000E
1370AC14F01301380703783803FE7FEA01F818157F941B>I<38FFC3FEA2381E00F8000E1360A2
6C13C0A338038180A213C300011300A2EA00E6A3137CA31338A217157F941A>I<39FF8FF9FFA2
391E01C07CD81C031338000EEBE030A2EB06600007EB7060A2130E39038C30C01438139C3901D8
1980141DA2EBF00F00001400A2497EEB600620157F9423>I<38FFC3FEA2381E00F8000E1360A2
6C13C0A338038180A213C300011300A2EA00E6A3137CA31338A21330A213701360A2EAF0C012F1
EAF380007FC7FC123E171F7F941A>121 D E /Fr 20 118 df<B51280A311037F9016>45
D<B612E015FC3907E0007F0003EC0F806F7EED01E06F7E1678167C82A282A2EE0F80A217C0A216
07A217E0AB17C0A3160F1780A3EE1F00A2163E5E167816F84B5AED07E0ED0F800007027FC7FCB6
12FC15E02B317CB033>68 D<B51280A23807F0006C5AB3B3A7487EB51280A211317DB017>73
D<D8FFF0ED7FF86D15FF0007170000035E017CEC01BEA36DEC033EA36D1406A36D6C130CA36D6C
1318A36D6C1330A36D6C1360A216C06D7EA291387C0180A391383E0300A3EC1F06A3EC0F8CA3EC
07D8A3EC03F0A3486C6C5AD80FC0157FD8FFFC91380FFFF8EC00C035317CB03D>77
D<B612C015F83907E000FE0003141FED0F80ED07C0ED03E016F01501A216F8A616F0A2150316E0
ED07C0ED0F80ED1F0015FE90B512F815C001E0C8FCB3A2487EB57EA225317CB02D>80
D<90387F80203901FFE0603807C0F8390F001CE0001E130F481307003813030078130112701400
12F0A21560A37E1500127C127E7E13C0EA1FF86CB47E6C13F86C7FC613FF010F1380010013C0EC
1FE01407EC03F01401140015F8A200C01478A57E15706C14F015E07E6CEB01C06CEB038039E780
070038C1F01E38C07FFC38800FF01D337CB125>83 D<EA01FE380FFFC0381C03E0383C00F0003E
137880141C0008131EC7FCA4EB01FE133F3801FF1EEA07F0EA0F80EA1F00123E5AA248140CA314
3EA2007C137E6CEBDF1C391F038FB8390FFF07F03903F803C01E1F7D9E21>97
D<EB3FC0EBFFF83803E01C3807801E380F003E121EA2481308007C1300A2127812F8A9127CA36C
1303121E001F1306380F800E3807C01C3803F0383800FFE0EB3F80181F7D9E1D>99
D<EC01E0143FA214031401AFEB3F81EBFFE13803E0793807800D380F0007001E130314015A127C
A2127812F8A91278127CA2123C003E1303001E13076C130F3807801D3903E071F03901FFE1FF38
003F0120327DB125>I<EB3F80EBFFE03803E0F83807803C48487E121E805A127C158000781307
12F8B6FCA200F8C8FCA61278127C123CEC01807E6CEB0300EB80063807C00E3801F03C3800FFF0
EB1FC0191F7E9E1D>I<EB03E0EB1FF8EB3C38EB707C13F0EA01E014383803C000ACB512C0A238
03C000B3A8487EEA7FFFA216327FB114>I<15F090387F03F83901FFCF1C3803C1FC390780F818
390F00780048137C001E133C003E133EA7001E133C001F137C6C13786C6C5A380FC1E0380DFFC0
D81C7FC7FC0018C8FCA2121CA2121E380FFFF814FF6C14804814C0391E0007E00038EB01F048EB
00701578481438A500701470007814F06CEB01E06CEB03C03907C01F003801FFFC38003FE01E2F
7E9F21>I<1207EA0F80121FA2120FEA0700C7FCABEA078012FFA2120F1207B3A6EA0FC0EAFFF8
A20D307EAF12>105 D<260781FEEB3FC03BFF87FF80FFF0903A8E07C1C0F83B0F9803E3007C27
07B001E6133C9026E000FC7F495BA3495BB3486C486C133F3CFFFC1FFF83FFF0A2341F7E9E38>
109 D<380781FE39FF87FF8090388E07C0390F9803E03807B0019038E000F05BA35BB3486C487E
3AFFFC1FFF80A2211F7E9E25>I<EB1FC0EBFFF83801E03C3807800F390F000780001EEB03C0A2
48EB01E0A248EB00F0A300F814F8A8007814F0007C1301003C14E0A26CEB03C0A26CEB07803907
C01F003801F07C6CB45AEB1FC01D1F7E9E21>I<380783E038FF8FF8EB9C7CEA0FB0EA07F0EBE0
38EBC000A35BB3487EEAFFFEA2161F7E9E19>114 D<3801FC10380FFF30381E03F0EA38004813
705A1430A37E6C1300127EEA3FF06CB4FC6C1380000313E038003FF0EB03F8EB007800C0133CA2
141C7EA27E14186C13386C137038EF01E038C3FFC03880FE00161F7E9E1A>I<13C0A51201A312
03A21207120F121FB512E0A23803C000B01430A83801E060A23800F0C0EB7F80EB1F00142C7FAB
19>I<D8078013F000FF131FA2000F130100071300B31401A2140300031307EBC00E3901F03CF8
3A00FFF0FF80EB3FC0211F7E9E25>I E /Fs 5 85 df<1630167016F0A21501A21503A2150715
0FA2151B821531A2156115E115C1EC0181A2EC0301A21406A2140C141C14181430A202607FA2EC
C000A249B5FC5B91C7FC1306A25BA25BA25B1370136013E01201000381D80FF01301D8FFFE9038
3FFFF0A22C337CB235>65 D<010FB6FC17C0903A003F8007F0EE01F892C7127C177E4A143E8314
7E188002FE140FA24A15C0A21301A25CA21303171F5CA2130718804A143FA2130F18004A5CA201
1F157E17FE4A5CA2013F4A5A5F91C712034C5A495D160F017E4A5A4CC7FC01FE147E16F849495A
ED07E00001EC3F80B600FEC8FC15F032317CB036>68 D<010FB612FEA29039003F8000173E92C7
121EA24A140CA2147EA214FEA25CA20101151CEEC0184A1400A201031301A202F05B1503010713
0F91B5FC93C7FCECE00F010F7FA2ECC006A2011F130EA2EC800C92C8FC133FA291C9FCA25BA213
7EA213FEA25BA21201B512FCA22F317CB02F>70 D<010FB512F816FF903A003F801FC0EE07E092
380003F0EE01F84AEB00FCA2147EA214FE16015CA2010115F816034A14F0EE07E01303EE0F804A
EB3F00167E0107EB03F891B512E016809138E007C0010FEB03F015014A6C7EA2011F80A25CA201
3F1301A21400A249495AA2137E170601FE150E170C5B171C000102011338B539F000FC70EE7FE0
C9EA1F802F327CB034>82 D<0007B712F8A23A0FE007F00101801400D80E00491370121E001C13
0F121800385CA20030011F1460127000605CA2023F14E000E016C0C790C8FCA25CA2147EA214FE
A25CA21301A25CA21303A25CA21307A25CA2130FA25CA2131FA25C133F497E007FB512C0A22D31
74B033>84 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin
%%EndSetup
%%Page: 0 1
bop 795 696 a Fs(D)26 b(R)g(A)f(F)h(T)225 787 y Fr(Do)r(cumen)n(t)20
b(for)i(a)f(Standard)g(Message-P)n(assing)f(In)n(terface)685
981 y Fq(Scott)c(Berryman,)e Fp(Y)l(ale)19 b(Univ)700 1040
y Fq(James)c(Co)o(wnie,)h Fp(Meiko)i(Ltd)474 1098 y Fq(Jac)o(k)e(Dongarra,)i
Fp(Univ.)23 b(of)17 b(T)l(ennesse)n(e)j(and)d(ORNL)801 1156
y Fq(Al)f(Geist,)f Fp(ORNL)795 1214 y Fq(Bill)f(Gropp,)j Fp(ANL)767
1272 y Fq(Rolf)f(Hemp)q(el,)e Fp(GMD)762 1330 y Fq(Bob)i(Knigh)o(ten,)g
Fp(Intel)786 1388 y Fq(Rust)o(y)g(Lusk,)h Fp(ANL)614 1446 y
Fq(Stev)o(e)e(Otto,)h Fp(Or)n(e)n(gon)h(Gr)n(aduate)g(Inst)578
1504 y Fq(T)l(on)o(y)g(Skjellum,)c Fp(Missisippi)j(State)j(Univ)653
1563 y Fq(Marc)d(Snir,)g Fp(IBM)h(T.)g(J.)g(Watson)744 1621
y Fq(Da)o(vid)f(W)l(alk)o(er,)f Fp(ORNL)626 1679 y Fq(Stev)o(e)g(Zenith,)g
Fp(Kuck)k(&)f(Asso)n(ciates)844 1803 y Fq(Ma)o(y)e(9,)g(1993)87
1861 y(This)g(w)o(ork)g(w)o(as)h(supp)q(orted)g(b)o(y)f(ARP)l(A)g(and)g(NSF)g
(under)g(con)o(tract)g(n)o(um)o(b)q(er)f(###,)g(b)o(y)g(the)192
1919 y(National)h(Science)f(F)l(oundation)i(Science)e(and)i(T)l(ec)o(hnology)
f(Cen)o(ter)f(Co)q(op)q(erativ)o(e)650 1977 y(Agreemen)o(t)f(No.)21
b(CCR-8809615.)p eop
%%Page: 1 2
bop 75 356 a Fo(Chapter)32 b(1)75 564 y Fn(Con)m(texts)40 b({)g(Prop)s(osal)h
(I)876 786 y Fm(Marc)14 b(Snir)75 927 y Fl(1.1)70 b(Con)n(texts)75
1029 y Fm(A)17 b Fk(comm)o(unication)k(con)o(text)c Fm(\(for)f(short,)g
Fk(con)o(text)p Fm(\))h(is)g(a)g(mec)o(hanism)g(for)g(the)g(mo)q
(dularization)75 1085 y(of)h(MPI)g(comm)o(unication.)29 b(An)o(y)18
b(MPI)g(comm)o(unication)h(o)q(ccurs)f(within)h(a)f(con)o(text,)g(and)g(do)q
(es)g(not)75 1142 y(in)o(terfere)j(with)g(comm)o(unication)h(executed)g
(within)g(another)e(con)o(text.)37 b(F)l(urthermore,)21 b(a)g(con)o(text)75
1198 y(sp)q(eci\014es)c(a)e(lo)q(cal)h(name)f(space)h(for)e(pro)q(cesses)i
(that)e(comm)o(unicate)h(in)h(this)g(con)o(text.)j(The)d(pro)q(cesses)75
1255 y(that)i(participate)i(in)g(a)f(con)o(text)f(are)h(asso)q(ciated)g(with)
g(a)g Fk(rank)p Fm(,)g(whic)o(h)h(ranges)e(from)h(0)f(to)h
Fj(n)13 b Fi(\000)g Fm(1,)75 1311 y(where)18 b Fj(n)h Fm(is)f(the)h(n)o(um)o
(b)q(er)f(of)g(pro)q(cesses)g(that)g(participate)h(in)g(the)f(con)o(text.)28
b(This)19 b(rank)f(is)g(used)h(in)75 1368 y(in)o(terpro)q(cess)d(comm)o
(unication)h(as)e(the)h(lo)q(cal)h(address)f(of)f(the)h(pro)q(cess)g(within)h
(that)e(con)o(text.)21 b(Th)o(us,)75 1424 y(comm)o(unication)16
b(within)g(a)f(con)o(text)g(is)h(una\013ected)f(b)o(y)g(comm)o(unication)h
(outside)g(that)e(con)o(text.)166 1480 y(A)22 b(pro)q(cess)g(ma)o(y)g(comm)o
(unicate)g(sim)o(ultaneously)h(in)g(sev)o(eral)f(con)o(texts.)40
b(The)22 b(con)o(text)g(of)f(a)75 1537 y(comm)o(unication)16
b(is)g(explicitly)i(stated)c(as)h(a)g(parameter)f(of)h(the)g(comm)o
(unication)h(call.)166 1593 y(A)h(pro)q(cess)g(that)f(participates)i(in)g(a)e
(comm)o(unication)i(con)o(text)f(accesses)g(this)g(con)o(text)g(using)g(a)75
1650 y Fh(c)n(ontext)h(hand)r(le)g Fm(\(i.e.,)f(a)h(handle)h(to)e(an)g
(opaque)h(ob)s(ject)f(that)g(iden)o(ti\014es)j(a)d(con)o(text\).)26
b(This)19 b(handle)75 1706 y(can)c(b)q(e)h(used)g(to)143 1788
y Fi(\017)23 b Fm(Find)14 b(information)f(ab)q(out)g(this)g(con)o(text,)g
(suc)o(h)g(as)g(the)g(n)o(um)o(b)q(er)h(of)e(pro)q(cesses)i(that)e
(participate)189 1844 y(in)k(the)f(con)o(text,)f(or)h(the)g(rank)g(of)g(the)g
(calling)i(pro)q(cess)f(within)g(the)f(con)o(text.)143 1933
y Fi(\017)23 b Fm(Comm)o(unicate)12 b(with)h(other)f(pro)q(cesses)h(that)e
(participate)j(in)f(the)f(con)o(text;)h(these)f(pro)q(cesses)h(are)189
1989 y(addressed)i(using)h(their)g(con)o(text)f(rank.)143 2078
y Fi(\017)23 b Fm(Create)14 b(new)i(con)o(texts.)166 2160 y(Con)o(text)i
(handles)h(cannot)g(b)q(e)g(transferred)f(for)g(one)h(pro)q(cess)f(to)g
(another;)i(they)e(can)h(b)q(e)g(used)75 2216 y(only)12 b(on)g(the)f(pro)q
(cess)h(where)g(they)g(w)o(ere)f(created.)19 b(Th)o(us,)11
b(\\kno)o(wledge")h(ab)q(out)f(a)h(con)o(text)f(exists)g(only)75
2273 y(lo)q(cally)l(,)17 b(at)e(the)h(pro)q(cesses)g(that)f(participate)h(in)
h(that)d(con)o(text.)21 b(Op)q(erations)16 b(within)h(a)e(comm)o(unica-)75
2329 y(tion)h(con)o(texts)e(\(including)k(the)d(generation)h(of)f(new)g(sub)q
(con)o(texts\))g(do)g(not)g(require)h(comm)o(unication)75 2385
y(with)g(pro)q(cesses)f(that)g(do)g(not)g(participate)g(in)i(that)d(con)o
(text.)166 2442 y(F)l(ollo)o(ws)h(examples)h(of)f(p)q(ossible)i(uses)e(for)g
(con)o(texts.)75 2561 y Fg(1.1.1)55 b(Lo)r(osely)18 b(sync)n(hronous)h
(library)h(call)g(in)n(terface)75 2647 y Fm(Consider)13 b(the)g(case)g(where)
g(a)f(parallel)i(application)h(executes)e(a)f(\\parallel)i(call")g(to)e(a)g
(library)i(routine,)75 2704 y(i.e.,)g(where)h(all)g(pro)q(cesses)g(transfer)f
(con)o(trol)g(to)g(the)h(library)g(routine.)20 b(If)15 b(the)f(library)i(w)o
(as)d(dev)o(elop)q(ed)964 2828 y(1)p eop
%%Page: 2 3
bop 75 -100 a Fm(2)867 b Ff(CHAPTER)15 b(1.)35 b(CONTEXTS)15
b({)g(PR)o(OPOSAL)i(I)75 45 y Fm(separately)l(,)23 b(then)e(one)h(should)g(b)
q(ew)o(are)g(of)e(the)i(p)q(ossibilit)o(y)h(that)e(the)g(library)h(co)q(de)g
(ma)o(y)f(receiv)o(e)75 102 y(b)o(y)f(mistak)o(e)g(messages)f(send)i(b)o(y)f
(the)g(caller)h(co)q(de,)g(and)f(vice-v)o(ersa.)35 b(The)20
b(problem)h(is)g(solv)o(ed)f(b)o(y)75 158 y(allo)q(cating)c(a)f(di\013eren)o
(t)h(con)o(text)e(to)h(the)g(library)l(,)h(th)o(us)f(prev)o(en)o(ting)h(un)o
(w)o(an)o(ted)e(in)o(terference.)75 277 y Fg(1.1.2)55 b(F)-5
b(unctional)21 b(decomp)r(osition)e(and)g(mo)r(dular)g(co)r(de)f(dev)n
(elopmen)n(t)75 363 y Fm(Often,)i(a)f(parallel)i(application)g(is)e(dev)o
(elop)q(ed)i(b)o(y)e(in)o(tegrating)h(sev)o(eral)f(distinct)h(functional)h
(mo)q(d-)75 419 y(ules,)c(that)f(is)h(eac)o(h)g(dev)o(elop)q(ed)h(separately)
l(.)24 b(Eac)o(h)16 b(mo)q(dule)i(is)f(a)f(parallel)i(program)d(that)h(runs)h
(on)f(a)75 476 y(dedicated)g(set)e(of)g(pro)q(cesses,)g(and)g(the)h
(computation)f(consists)h(of)e(phases)i(where)f(mo)q(dules)i(compute)75
532 y(separately)l(,)d(in)o(termixed)h(with)f(global)h(phases)f(where)g(all)h
(pro)q(cesses)f(comm)o(unicate.)19 b(It)13 b(is)g(con)o(v)o(enien)o(t)75
589 y(to)g(allo)o(w)h(eac)o(h)g(mo)q(dule)g(to)f(use)h(its)g(o)o(wn)f(priv)m
(ate)i(pro)q(cess)f(n)o(um)o(b)q(ering)g(sc)o(heme,)g(for)f(the)h(in)o(tramo)
q(dule)75 645 y(computation.)24 b(This)17 b(is)g(ac)o(hiev)o(ed)g(b)o(y)g
(using)g(a)f(priv)m(ate)i(mo)q(dule)f(con)o(text)f(for)g(in)o(tramo)q(dule)i
(compu-)75 701 y(tation,)c(and)i(a)f(global)h(con)o(text)e(for)h(in)o(termo)q
(dule)h(comm)o(unication.)75 820 y Fg(1.1.3)55 b(Collectiv)n(e)20
b(comm)n(unication)75 906 y Fm(MPI)g(supp)q(orts)h(collectiv)o(e)h(comm)o
(unication)f(within)h(dynamically)g(created)f(groups)f(of)g(pro)q(cesses.)75
963 y(Eac)o(h)15 b(suc)o(h)h(group)f(can)g(b)q(e)h(represen)o(ted)g(b)o(y)f
(a)g(distinct)h(comm)o(unication)g(con)o(text.)k(This)c(pro)o(vides)f(a)75
1019 y(simple)g(mec)o(hanism)f(to)f(ensure)h(that)f(comm)o(unication)h(that)f
(p)q(ertains)h(to)f(collectiv)o(e)i(comm)o(unication)75 1076
y(within)h(one)f(group)f(is)h(not)f(confused)i(with)f(collectiv)o(e)h(comm)o
(unication)g(within)f(another)g(group,)f(and)75 1132 y(a)o(v)o(oids)h(the)g
(in)o(tro)q(duction)h(of)f(t)o(w)o(o)f(di\013eren)o(t)h(mec)o(hanisms)h(with)
g(similar)g(functionalit)o(y)l(.)75 1251 y Fg(1.1.4)55 b(Ligh)n(t)n(w)n(eigh)
n(t)21 b(gang)f(sc)n(heduling)75 1337 y Fm(Consider)14 b(an)f(en)o(vironmen)o
(t)g(where)g(pro)q(cesses)h(are)e(m)o(ultith)o(treaded.)20
b(Con)o(texts)12 b(can)h(b)q(e)h(used)g(to)e(pro-)75 1393 y(vide)h(a)e(mec)o
(hanism)i(whereb)o(y)f(all)h(pro)q(cesses)f(are)f(time-shared)i(b)q(et)o(w)o
(een)f(sev)o(eral)g(parallel)h(executions,)75 1450 y(and)19
b(can)h(con)o(text)e(switc)o(h)i(from)e(one)h(parallel)i(execution)f(to)f
(another,)g(in)h(a)f(lo)q(osely)h(sync)o(hronous)75 1506 y(manner.)27
b(A)17 b(thread)g(is)h(allo)q(cated)h(on)e(eac)o(h)g(pro)q(cess)h(to)f(eac)o
(h)g(parallel)i(execution,)g(and)f(a)f(di\013eren)o(t)75 1562
y(con)o(text)d(is)i(used)f(to)f(iden)o(tify)i(eac)o(h)f(parallel)i
(execution.)k(Th)o(us,)14 b(tra\016c)g(from)g(one)h(execution)h(cannot)75
1619 y(b)q(e)i(confused)g(with)g(tra\016c)f(from)f(another)h(execution.)28
b(The)18 b(blo)q(c)o(king)g(and)g(un)o(blo)q(c)o(king)h(of)e(threads)75
1675 y(due)g(to)f(comm)o(unication)h(ev)o(en)o(ts)f(pro)o(vide)h(a)f(\\lazy")
g(con)o(text)g(switc)o(hing)h(mec)o(hanism.)24 b(This)17 b(can)f(b)q(e)75
1732 y(extended)j(to)f(the)h(case)f(where)h(the)f(parallel)i(executions)f
(are)g(spanning)g(distinct)h(pro)q(cess)e(subsets.)75 1788
y(\(MPI)d(do)q(es)g(not)g(require)h(m)o(ultithreaded)h(pro)q(cesses.\))75
1929 y Fl(1.2)70 b(Basic)22 b(Con)n(text)g(Op)r(erations)75
2030 y Fm(A)17 b(global)g(con)o(text)g Fk(MPI)p 534 2030 16
2 v 18 w(ALL)g Fm(is)g(prede\014ned.)26 b(All)19 b(pro)q(cesses)e
(participate)g(in)h(this)f(con)o(text)f(when)75 2087 y(computation)k(starts.)
32 b(MPI)20 b(do)q(es)g(not)f(sp)q(ecify)i(ho)o(w)e(pro)q(cesses)h(are)g
(initially)i(rank)o(ed)e(within)h(the)75 2143 y(con)o(text)11
b Fe(MPI)p 308 2143 15 2 v 17 w(ALL)p Fm(.)g(It)h(is)g(exp)q(ected)h(that)f
(the)g(start-up)f(pro)q(cedure)i(used)f(to)f(initiate)i(an)f(MPI)g(program)75
2200 y(\(at)j(load-time)j(or)d(run-time\))i(will)h(pro)o(vide)f(information)g
(or)e(con)o(trol)h(on)h(this)f(initial)j(ranking)e(\(e.g.,)75
2256 y(b)o(y)12 b(sp)q(ecifying)j(that)c(pro)q(cesses)i(are)f(rank)o(ed)h
(according)g(to)e(their)i(pid's,)h(or)d(according)i(to)f(the)h(ph)o(ysical)75
2312 y(addresses)h(of)f(the)h(executing)g(pro)q(cessors,)f(or)g(according)h
(to)f(a)h(n)o(um)o(b)q(ering)g(sc)o(heme)g(sp)q(eci\014ed)i(at)d(load)75
2369 y(time\).)166 2508 y Fd(Discussion:)h Fc(If)e(w)o(e)h(think)e(of)h
(adding)f(new)i(pro)q(cesses)i(at)d(run-time,)e(then)j Fb(MPI)p
1454 2508 14 2 v 15 w(ALL)f Fc(con)o(v)o(eys)g(the)h(wrong)75
2564 y(impression,)f(since)j(it)f(is)f(just)h(the)h(initial)d(set)j(of)e(pro)
q(cesses.)166 2704 y Fm(The)i(follo)o(wing)h(op)q(erations)g(are)e(a)o(v)m
(ailable)j(for)e(creating)g(new)h(con)o(texts.)p eop
%%Page: 3 4
bop 75 -100 a Ff(1.2.)34 b(BASIC)16 b(CONTEXT)f(OPERA)l(TIONS)964
b Fm(3)166 45 y Fk(MPI)p 275 45 16 2 v 18 w(COPY)p 446 45 V
18 w(CONTEXT\(new)o(con)o(text,)17 b(con)o(text\))166 137 y
Fm(Create)g(a)g(new)g(con)o(text)g(that)g(includes)j(all)e(pro)q(cesses)g(in)
g(the)f(old)h(con)o(text.)26 b(The)18 b(rank)f(of)g(the)75
193 y(pro)q(cesses)g(in)g(the)f(previous)h(con)o(text)f(is)g(preserv)o(ed.)24
b(The)16 b(call)i(m)o(ust)d(b)q(e)i(executed)g(b)o(y)f(all)i(pro)q(cesses)75
250 y(in)f(the)g(old)g(con)o(text.)22 b(It)17 b(is)g(a)f(blo)q(c)o(king)h
(call:)24 b(No)16 b(call)h(returns)f(un)o(til)i(all)f(pro)q(cesses)g(ha)o(v)o
(e)f(called)i(the)75 306 y(function.)j(The)15 b(parameters)f(are)75
406 y Fk(OUT)k(new)o(con)o(text)k Fm(handle)16 b(to)d(newly)h(created)g(con)o
(text.)19 b(The)14 b(handle)h(should)g(not)e(b)q(e)i(asso)q(ciated)189
462 y(with)g(an)g(ob)s(ject)g(b)q(efore)g(the)h(call.)75 554
y Fk(IN)h(con)o(text)23 b Fm(handle)17 b(to)d(old)i(con)o(text)166
689 y Fk(MPI)p 275 689 V 18 w(NEW)p 422 689 V 19 w(CONTEXT\(new)o(con)o
(text,)h(con)o(text,)g(arra)o(y)p 1338 689 V 18 w(of)p 1398
689 V 19 w(ranks,)f(size\))75 824 y(OUT)i(new)o(con)o(text)k
Fm(handle)15 b(to)d(newly)h(created)g(con)o(text)f(at)h(calling)h(pro)q
(cess.)19 b(This)14 b(handle)g(should)189 880 y(not)g(b)q(e)i(asso)q(ciated)g
(with)f(an)g(ob)s(ject)g(b)q(efore)h(the)f(call.)75 972 y Fk(IN)i(con)o(text)
23 b Fm(handle)17 b(to)d(old)i(con)o(text)75 1064 y Fk(IN)h(arra)o(y)p
277 1064 V 18 w(of)p 337 1064 V 19 w(ranks)22 b Fm(ranks)15
b(in)h(the)f(old)h(con)o(text)e(of)h(the)g(pro)q(cesses)h(that)e(join)i(the)f
(new)h(con)o(text)75 1156 y Fk(IN)h(size)23 b Fm(size)16 b(of)f(new)h(con)o
(text)e(\(in)o(teger\))166 1255 y(A)20 b(new)g(con)o(text)f(is)i(created)e
(for)h(the)g(pro)q(cesses)g(in)h(the)f(old)g(con)o(text)f(that)g(are)h
(listed)h(in)g(the)75 1312 y(arra)o(y)l(.)f(The)c(pro)q(cesses)f(are)h
(listed)g(according)g(to)f(their)h(rank)g(in)g(the)f(old)i(con)o(text.)j(The)
c(rank)f(of)g(the)75 1368 y(pro)q(cesses)h(in)g(the)f(new)g(con)o(text)g(is)h
(determined)g(b)o(y)f(their)h(place)g(in)g(the)f(list.)166
1424 y(The)h(call)g(has)g(to)f(b)q(e)h(executed)h(b)o(y)e(all)i(pro)q(cesses)
f(listed)g(in)h(the)f(arra)o(y;)e(all)i(mak)o(e)f(the)h(call)h(with)75
1481 y(the)h(same)g(list)i(of)d(parameters.)29 b(Pro)q(cesses)18
b(in)h(the)g(old)g(con)o(text)e(that)h(do)g(not)g(b)q(elong)i(to)d(the)i(new)
75 1537 y(con)o(text)14 b(need)i(not)f(mak)o(e)g(the)g(call.)21
b(The)15 b(call)h(is)g(blo)q(c)o(king;)g(no)f(pro)q(cess)g(returns)g(from)f
(the)i(call)g(un)o(til)75 1594 y(all)g(pro)q(cesses)g(ha)o(v)o(e)f(executed)h
(the)f(call.)166 1686 y Fk(MPI)p 275 1686 V 18 w(SPLIT)p 445
1686 V 19 w(CONTEXT\(new)o(con)o(text,)i(con)o(text,)g(k)o(ey)l(,)f(index\))
75 1821 y(OUT)i(new)o(con)o(text)k Fm(handle)15 b(to)d(newly)h(created)g(con)
o(text)f(at)h(calling)h(pro)q(cess.)19 b(This)14 b(handle)g(should)189
1877 y(not)g(b)q(e)i(asso)q(ciated)g(with)f(an)g(ob)s(ject)g(b)q(efore)h(the)
f(call.)75 1969 y Fk(IN)i(con)o(text)23 b Fm(handle)17 b(to)d(old)i(con)o
(text)75 2061 y Fk(IN)h(k)o(ey)22 b Fm(in)o(teger)75 2153 y
Fk(IN)17 b(index)23 b Fm(in)o(teger)166 2252 y(A)18 b(new)g(con)o(text)f(is)h
(created)g(for)g(eac)o(h)g(distinct)h(v)m(alue)g(of)e Fe(key)p
Fm(;)h(this)h(con)o(text)e(is)h(shared)g(b)o(y)g(all)75 2308
y(pro)q(cesses)13 b(that)f(made)h(the)g(call)h(with)f(this)g(k)o(ey)f(v)m
(alue.)21 b(Within)13 b(eac)o(h)g(new)g(con)o(text)f(the)h(pro)q(cesses)g
(are)75 2365 y(rank)o(ed)j(according)g(to)g(the)g(order)g(of)f(the)h
Fe(index)g Fm(v)m(alues)h(they)f(pro)o(vided;)h(in)g(case)f(of)f(ties,)i(pro)
q(cesses)75 2421 y(are)e(rank)o(ed)g(according)h(to)e(their)i(rank)f(in)h
(the)f(old)h(con)o(text.)166 2478 y(This)e(call)h(is)f(blo)q(c)o(king:)21
b(No)13 b(call)i(returns)f(un)o(til)h(all)f(pro)q(cesses)g(in)h(the)f(old)g
(con)o(text)f(executed)i(the)75 2534 y(call.)166 2591 y(P)o(articular)g(uses)
h(of)e(this)i(function)g(are:)166 2647 y(\(i\))g(Reordering)h(pro)q(cesses:)
22 b(All)c(pro)q(cesses)e(pro)o(vide)h(the)f(same)g Fe(key)g
Fm(v)m(alue,)h(and)g(pro)o(vide)f(their)75 2704 y(index)g(in)h(the)e(new)g
(order.)p eop
%%Page: 4 5
bop 75 -100 a Fm(4)867 b Ff(CHAPTER)15 b(1.)35 b(CONTEXTS)15
b({)g(PR)o(OPOSAL)i(I)166 45 y Fm(\(ii\))e(Splitting)h(a)e(con)o(text)f(in)o
(to)i(sub)q(con)o(texts,)f(while)i(preserving)f(the)f(old)h(relativ)o(e)g
(order)f(among)75 102 y(pro)q(cesses:)21 b(All)c(pro)q(cesses)f(pro)o(vide)g
(the)g(same)f Fe(index)g Fm(v)m(alue,)i(and)f(pro)o(vide)g(a)f(k)o(ey)h(iden)
o(tifying)h(their)75 158 y(new)e(sub)q(con)o(text.)166 214
y Fe(MPI)p 241 214 15 2 v 17 w(COPY)p 354 214 V 16 w(CONTEXT)g
Fm(is)h(a)f(particular)i(case)e(of)h Fe(MPI)p 1069 214 V 16
w(SPLIT)p 1205 214 V 17 w(CONTEXT)p Fm(,)e(when)i(all)h(pro)q(cesses)f(pro-)
75 271 y(vide)g(the)g(same)e(k)o(ey)h(and)h(index)g(parameter.)166
363 y Fk(MPI)p 275 363 16 2 v 18 w(RANK\(rank,)g(con)o(text\))75
504 y(OUT)i(rank)23 b Fm(in)o(teger)75 598 y Fk(IN)17 b(con)o(text)23
b Fm(con)o(text)15 b(handle)166 705 y(Return)h(the)f(rank)g(of)g(the)g
(calling)i(pro)q(cess)e(within)i(the)e(sp)q(eci\014ed)i(con)o(text.)166
796 y Fk(MPI)p 275 796 V 18 w(SIZE\(size,)h(con)o(text\))75
938 y(OUT)g(size)23 b Fm(in)o(teger)75 1032 y Fk(IN)17 b(con)o(text)23
b Fm(con)o(text)15 b(handle)166 1138 y(Return)h(the)f(n)o(um)o(b)q(er)h(of)e
(pro)q(cesses)i(that)e(b)q(elong)j(to)d(the)h(sp)q(eci\014ed)j(con)o(text.)
166 1195 y(A)d(con)o(text)g(ob)s(ject)f(is)i(destro)o(y)o(ed)f(using)h(the)f
Fe(MPI)p 1036 1195 15 2 v 17 w(FREE)f Fm(function.)75 1316
y Fg(1.2.1)55 b(Usage)19 b(note)75 1402 y Fm(Use)e(of)g(con)o(texts)f(for)h
(libraries:)25 b(Eac)o(h)17 b(library)h(ma)o(y)e(pro)o(vide)i(an)f
(initialization)j(routine)e(that)e(is)i(to)75 1459 y(b)q(e)c(called)i(b)o(y)e
(all)g(pro)q(cesses,)g(and)g(that)f(generate)h(a)g(con)o(text)f(for)g(the)h
(use)g(of)f(that)g(library)l(.)21 b(A)14 b(sc)o(heme)75 1515
y(for)j(allo)o(wing)i(eac)o(h)g(link)o(ed)g(library)g(to)f(ha)o(v)o(e)g(its)g
(o)o(wn)f(initializati)q(on)k(co)q(de)d(w)o(ould)h(can)f(b)q(e)h(used)g(for)
75 1572 y(this)d(purp)q(ose)f(\(assuming)h(the)f(library)h(will)h(not)e(ha)o
(v)o(e)f(sev)o(eral)i(concurren)o(t)f(instan)o(tiations\).)166
1628 y(Use)g(of)g(con)o(texts)g(for)f(functional)j(decomp)q(osition:)k(A)15
b(harness)g(program,)f(running)i(in)g(the)g(con-)75 1684 y(text)e
Fe(ALL)g Fm(generates)f(a)h(sub)q(con)o(text)h(for)e(eac)o(h)i(mo)q(dule)g
(and)g(then)f(starts)f(the)i(submo)q(dule)g(within)h(the)75
1741 y(corresp)q(onding)g(con)o(text.)166 1797 y(Use)i(of)f(con)o(texts)g
(for)g(collectiv)o(e)j(comm)o(unication:)26 b(A)18 b(con)o(text)f(is)h
(created)g(for)f(eac)o(h)h(group)f(of)75 1854 y(pro)q(cesses)f(where)f
(collectiv)o(e)i(comm)o(unication)f(is)g(to)e(o)q(ccur.)166
1910 y(Use)k(of)g(con)o(texts)f(for)h(con)o(text-switc)o(hing)g(among)g(sev)o
(eral)g(parallel)i(executions:)26 b(A)18 b(pream)o(ble)75 1967
y(co)q(de)d(is)g(used)g(to)f(generate)g(a)g(di\013eren)o(t)g(con)o(text)g
(for)g(eac)o(h)g(execution;)i(this)e(pream)o(ble)h(co)q(de)g(needs)h(to)75
2023 y(use)g(a)e(m)o(utual)i(exclusion)h(proto)q(col)e(to)f(mak)o(e)h(sure)g
(eac)o(h)h(thread)f(claims)h(the)f(righ)o(t)g(con)o(text.)166
2156 y Fd(Implemen)o(tati)o(on)d(note:)166 2205 y Fc(W)m(e)18
b(outline)f(here)i(t)o(w)o(o)f(p)q(ossible)g(implemen)o(tations)d(of)j(con)o
(texts.)31 b(They)19 b(are)f(b)o(y)g(no)g(means)f(the)i(only)75
2255 y(p)q(ossible)c(ones.)23 b(In)15 b(eac)o(h)g(implemen)o(tation)d(w)o(e)j
(assume)g(that)g(a)g(con)o(text)h(ob)r(ject)g(is)f(a)g(p)q(oin)o(ter)g(to)g
(a)g(structure)75 2305 y(that)d(describ)q(es)i(the)f(con)o(text.)18
b(A)12 b(comp)q(onen)o(t)f(of)g(this)h(structure)i(is)e(a)g(table)f(of)h(the)
g(pro)q(cesses)j(that)d(participate)75 2355 y(in)17 b(the)i(con)o(text,)f
(ordered)h(b)o(y)f(rank.)29 b(W)m(e)17 b(assume)h(that)f(the)i(n)o(um)o(b)q
(er)e(of)g(concurren)o(tly)i(activ)o(e)e(con)o(texts)i(at)75
2405 y(eac)o(h)12 b(pro)q(cess)i(is)d(relativ)o(ely)g(small;)e(sa)o(y)j
(16-32.)k(In)c(either)g(implemen)o(tatio)o(n)d(one)j(migh)o(t)d(ha)o(v)o(e)j
(disjoin)o(t)e(message)75 2455 y(queues)j(for)e(eac)o(h)i(con)o(text,)f(or)g
(ha)o(v)o(e)f(shared)i(queues,)g(with)e(the)h(righ)o(t)g(mec)o(hanisms)d(for)
j(con)o(text)g(matc)o(hing)e(and)75 2504 y(bu\013er)15 b(allo)q(cation.)166
2554 y(Prop)q(osal)f(1:)j(Large)d(con)o(text)h(tags.)166 2604
y(In)d(this)g(implem)o(en)o(tation)d(w)o(e)j(use)h(large)e(con)o(text)i(tags)
f(\(sa)o(y)f(32)h(bits\),)g(so)g(that)f(matc)o(hing)f(of)i(an)f(incoming)75
2654 y(tag)19 b(with)g(a)h(lo)q(cal)e(pro)q(cess)k(requires)f(to)e(p)q
(erform)g(a)g(searc)o(h)i(in)e(a)g(hash)h(table)f(or)h(another)g(similar)d
(searc)o(h)75 2704 y(structure)e(\(this)d(o)q(ccurs)i(whenev)o(er)g(a)e
(message)g(is)h(receiv)o(ed\).)19 b(All)11 b(messages)i(sen)o(t)g(within)f(a)
g(con)o(text)h(carry)g(the)p eop
%%Page: 5 6
bop 75 -100 a Ff(1.3.)34 b(AD)o(V)-5 b(ANCED)14 b(CONTEXT)i(OPERA)l(TIONS)841
b Fm(5)75 45 y Fc(same)13 b(tag)h(v)n(alue.)k(W)m(e)c(use)h(as)g(con)o(text)f
(tag)g(the)h(pid)f(of)f(the)i(lo)o(w)o(est)f(n)o(um)o(b)q(ered)g(pro)q(cess)i
(in)e(the)h(con)o(text)g(\(let's)75 95 y(call)g(it)g(the)h(con)o(text)g
(leader\),)h(concatenated)g(with)e(a)g(coun)o(ter)i(that)e(is)h(incremen)o
(ted)g(whenev)o(er)h(this)e(pro)q(cess)75 145 y(allo)q(cates)h(a)g(new)g
(tag.)24 b(This)16 b(guaran)o(tee)g(a)g(unique)g(tag)g(for)f(eac)o(h)i(group)
f(\(sp)q(ecial)g(co)q(de)h(needed)g(for)f(coun)o(ter)75 195
y(wraparound\).)166 247 y Fb(MPI)p 235 247 14 2 v 15 w(COPY)p
338 247 V 15 w(CONTEXT)11 b Fc(-)h(A)h(new)g(tag)f(is)g(generated)i(b)o(y)f
(incremen)o(ting)e(the)i(old)f(tag)h(b)o(y)f(one;)h(one)f(can)h(either)75
296 y(cop)o(y)f(the)g(old)f(con)o(text)h(table,)g(or)f(create)j(a)d(new)h(p)q
(oin)o(ter)g(to)g(the)g(old)f(table.)17 b(A)12 b(global)e(barrier)i(sync)o
(hronization)75 346 y(is)i(needed)h(to)f(mak)o(e)e(sure)j(the)g(call)e(is)h
(blo)q(c)o(king.)166 398 y Fb(MPI)p 235 398 V 15 w(SPLIT)p
360 398 V 15 w(CONTEXT)j Fc(-)h(A)h(naiv)o(e)f(implemen)o(tatio)o(n)e(is)j
(to)f(ha)o(v)o(e)g(an)h(all-to-all)d(comm)o(unicati)o(on)g(where)75
448 y(eac)o(h)h(pro)q(cess)i(gathers)f(the)f Fb(\(key,)k(index\))15
b Fc(pairs)i(of)f(all)g(pro)q(cesses)j(in)e(the)g(old)f(group.)27
b(Eac)o(h)17 b(pro)q(cess)i(can)75 498 y(determine)14 b(whether)h(it)e(is)h
(the)g(leader)h(of)e(a)g(new)i(group)e(and)h(broadcast)g(the)h(new)f(group)g
(tag)f(to)h(all)e(mem)o(b)q(ers)75 548 y(\(using)j(p)q(oin)o(t)g(to)g(p)q
(oin)o(t)g(comm)o(unicatio)o(n)e(in)i(the)h(old)e(group,)h(or)g(using)h
(another)f(all-to-all)e(comm)o(unicatio)o(n\).)75 597 y(Algorithmic)f(minds)g
(will)g(think)i(of)f(man)o(y)f(p)q(ossible)i(optimizations.)166
649 y Fb(MPI)p 235 649 V 15 w(NEW)p 316 649 V 15 w(CONTEXT)c
Fc(-)g(The)i(lo)o(w)o(est)f(n)o(um)o(b)q(ered)f(pro)q(cess)j(in)e(the)g(list)
g(broadcast)g(the)h(new)f(con)o(text)h(tag)e(to)h(all)75 699
y(pro)q(cesses)i(in)d(the)g(list)g(\(using)g(p)q(oin)o(t)g(to)g(p)q(oin)o(t)f
(comm)o(unication)e(op)q(erations\).)17 b(A)11 b(more)e(robust)h(implemen)o
(tation)75 749 y(ma)o(y)i(en)o(tail)h(the)i(broadcast)f(of)f(the)i(mem)o(b)q
(er)d(list,)h(for)h(error)g(c)o(hec)o(king.)166 801 y Fb(MPI)p
235 801 V 15 w(RANK,)21 b(MPI)p 447 801 V 15 w(SIZE)13 b Fc(-)g(require)i(lo)
q(cal)e(access)j(to)e(the)g(con)o(text)h(ob)r(ject)166 853
y(Prop)q(osal)f(2:)j(Small)12 b(con)o(text)i(tags.)166 905
y(In)19 b(that)h(implemen)o(tatio)o(n)d(the)j(n)o(um)o(b)q(er)f(of)g
(distinct)h(con)o(text)g(tag)f(v)n(alues)g(is)h(equal)f(to)g(the)h(maxima)o
(l)75 955 y(n)o(um)o(b)q(er)d(of)g(con)o(texts)i(that)f(can)g(b)q(e)h(activ)o
(e)f(at)f(the)i(same)e(no)q(de.)30 b(Th)o(us,)19 b(the)f(con)o(text)h(tag)e
(of)h(an)f(incoming)75 1005 y(message)i(can)g(b)q(e)g(used)h(to)f(index)f
(directly)i(in)o(to)e(a)g(con)o(text)i(table,)g(a)o(v)o(oiding)c(the)k(need)g
(for)e(a)h(searc)o(h)h(in)e(a)75 1055 y(hash)13 b(table.)18
b(Eac)o(h)13 b(pro)q(cess)i(has)e(a)f(unique)h(con)o(text)h(tag)e(for)h
(incoming)d(comm)o(unication)g(within)i(this)h(con)o(text.)75
1104 y(Ho)o(w)o(ev)o(er,)h(di\013eren)o(t)h(con)o(text)g(tag)e(v)n(alues)h
(ma)o(y)e(b)q(e)j(used)g(b)o(y)f(di\013eren)o(t)h(pro)q(cesses)h(for)e(the)h
(same)e(con)o(text)i(\(this)75 1154 y(is)e(necessary)i(in)e(order)h(to)f
(densely)h(p)q(opulate)f(the)h(con)o(text)f(tag)g(range\).)18
b(The)c(con)o(text)g(table)f(carries,)h(for)e(eac)o(h)75 1204
y(mem)o(b)q(er)g(of)i(the)g(con)o(text,)g(the)h(con)o(text)f(tag)g(to)f(b)q
(e)i(used)g(when)f(sending)g(messages)g(to)g(it.)166 1256 y
Fb(MPI)p 235 1256 V 15 w(COPY)p 338 1256 V 15 w(CONTEXT)c Fc(-)h(A)h(new)g
(tag)f(is)h(generated)h(b)o(y)e(eac)o(h)h(pro)q(cess)i(for)d(the)i(new)f(con)
o(text,)g(and)f(broadcast)75 1306 y(to)18 b(all)g(other)h(mem)o(b)q(ers)f(of)
g(the)h(con)o(text,)h(using)e(an)h(all-to-all)d(comm)o(uni)o(cation.)29
b(A)19 b(new)g(con)o(text)h(table)e(is)75 1356 y(created,)d(with)e(these)j
(new)e(tags.)166 1408 y Fb(MPI)p 235 1408 V 15 w(SPLIT)p 360
1408 V 15 w(CONTEXT)j Fc(-)h(A)h(naiv)o(e)f(implemen)o(tatio)o(n)e(is)j(to)f
(ha)o(v)o(e)g(an)h(all-to-all)d(comm)o(unicati)o(on)g(where)75
1457 y(eac)o(h)e(pro)q(cess)h(gathers)f(the)h Fb(\(key,)20
b(index,)h(new)p 881 1457 V 15 w(context)p 1050 1457 V 14 w(tag\))13
b Fc(triples)h(of)e(all)h(pro)q(cesses)j(in)d(the)h(old)f(group.)75
1507 y(Eac)o(h)g(pro)q(cess)h(then)f(creates)i(a)d(new)h(con)o(text)g(table)g
(for)f(the)h(pro)q(cesses)i(that)e(pro)o(vided)f(the)i(same)d(k)o(ey)i(v)n
(alue)f(as)75 1557 y(it.)166 1609 y Fb(MPI)p 235 1609 V 15
w(NEW)p 316 1609 V 15 w(CONTEXT)g Fc(-)i(Similar)d(to)j Fb(MPI)p
785 1609 V 15 w(COPY)p 888 1609 V 15 w(CONTEXT)p Fc(.)166 1661
y Fb(MPI)p 235 1661 V 15 w(RANK,)21 b(MPI)p 447 1661 V 15 w(SIZE)13
b Fc(-)g(require)i(lo)q(cal)e(access)j(to)e(the)g(con)o(text)h(ob)r(ject)75
1899 y Fl(1.3)70 b(Adv)l(anced)23 b(con)n(text)f(op)r(erations)75
2005 y Fm(Additional)e(functions)e(are)f(required)i(to)e(supp)q(ort)h(a)f
(less)i(static)e(mo)q(del,)i(where)f(pro)q(cesses)g(ma)o(y)f(b)q(e)75
2062 y(created)i(or)f(deleted)i(during)g(execution.)31 b(This)20
b(requires)f(con)o(texts)f(to)h(gro)o(w)e(or)h(b)q(e)i(merged.)30
b(This)75 2118 y(section)12 b(outlines)g(p)q(ossible)h(mec)o(hanisms)f(for)e
(suc)o(h)i(extension.)19 b(The)11 b(lac)o(k)h(of)f(in)o(terupt)g(driv)o(en)h
(comm)o(u-)75 2175 y(nication)j(mec)o(hanisms)g(in)g(MPI)f(restricts)g(the)g
(functionalit)o(y)h(of)f(suc)o(h)g(mec)o(hanisms:)20 b(A)14
b(new)h(pro)q(cess)75 2231 y(can)g(join)f(an)h(existing)g(con)o(text)f(only)h
(if)g(all)g(pro)q(cesses)g(that)f(participate)h(in)g(the)f(old)h(con)o(text)f
(execute)75 2287 y(a)h(call)h(to)f(add)g(this)h(new)f(pro)q(cess.)166
2346 y(A)j(prede\014ned)i(lo)q(cal)g(con)o(text)e Fe(MPI)p
792 2346 15 2 v 16 w(ME)g Fm(where)h(only)g(one)f(pro)q(cess)h(participates,)
g(is)g(prede\014ned)75 2403 y(for)c(eac)o(h)g(pro)q(cess.)166
2497 y Fk(MPI)p 275 2497 16 2 v 18 w(SP)l(A)-6 b(WN\()17 b(new)o(con)o(text,)
f(oldcon)o(text,)i(arra)o(y)p 1202 2497 V 18 w(of)p 1262 2497
V 19 w(en)o(vironmen)o(ts,)d(len\))166 2591 y Fm(Spa)o(wn)h(new)h(pro)q
(cesses)g(and)g(create)f(a)g(new)h(con)o(text)f(that)g(includes)j(the)d(pro)q
(cesses)h(in)h(the)e(old)75 2647 y(con)o(text,)d(follo)o(w)o(ed)h(b)o(y)g
(the)g(newly)h(spa)o(wned)f(pro)q(cesses.)19 b(The)14 b(arra)o(y)f(pro)o
(vides)h(en)o(vironmen)o(t)g(param-)75 2704 y(eters)j(for)f(eac)o(h)h(newly)h
(generated)e(pro)q(cess.)26 b(The)17 b(form)f(of)g(the)h(arra)o(y)f(en)o
(tries)h(are)g(implemen)o(tation)p eop
%%Page: 6 7
bop 75 -100 a Fm(6)867 b Ff(CHAPTER)15 b(1.)35 b(CONTEXTS)15
b({)g(PR)o(OPOSAL)i(I)75 45 y Fm(dep)q(enden)o(t)i({)e(they)g(ma)o(y)f
(include)k(information)d(on)h(the)f(pro)q(cessor)g(that)f(is)i(to)f(run)g
(the)h(new)f(tasks,)75 102 y Fe(argv,)23 b(argc)15 b Fm(argumen)o(ts,)f(etc.)
75 214 y Fk(OUT)k(new)o(con)o(text)k Fm(handle)17 b(to)d(new)i(con)o(text)75
314 y Fk(OUT)i(oldcon)o(text)24 b Fm(handle)16 b(to)f(old)h(con)o(text)75
413 y Fk(IN)h(arra)o(y)p 277 413 16 2 v 18 w(of)p 337 413 V
19 w(en)o(vironmen)o(ts)k Fm(list)16 b(of)f(en)o(vironmen)o(ts)g(for)g(new)g
(pro)q(cesses)75 512 y Fk(IN)i(len)23 b Fm(n)o(um)o(b)q(er)16
b(of)f(new)g(pro)q(cesses)h(\(in)o(teger\))166 625 y(As)23
b(particular)g(cases,)h Fe(MPI)p 669 625 15 2 v 17 w(SPAWN\()f(newcontext,)f
(MPI)p 1211 625 V 17 w(ME,...\))42 b Fm(allo)o(ws)23 b(one)g(pro)q(cess)g(to)
75 681 y(spa)o(wn)f(new)g(pro)q(cesses,)j(and)d(create)g(a)g(new)h(con)o
(text)e(that)h(consists)g(of)g(the)g(spa)o(wning)h(pro)q(cess,)75
737 y(follo)o(w)o(ed)13 b(b)o(y)g(the)g(spa)o(wned)g(pro)q(cesses;)h
Fe(MPI)p 849 737 V 17 w(SPAWN\()23 b(newcontext,)f(MPI)p 1391
737 V 17 w(ALL,...\))c Fm(allo)o(ws)13 b(to)g(add)75 794 y(to)21
b(create)g(a)g(new)h(\\univ)o(ersal")g(con)o(text)e(that)h(con)o(tains)h(all)
g(previous)g(pro)q(cesses)g(and)g(the)f(newly)75 850 y(spa)o(wned)15
b(pro)q(cesses.)166 944 y Fk(MPI)p 275 944 16 2 v 18 w(BCAST)p
473 944 V 19 w(CONTEXT\()d(new)o(con)o(text,)g(con)o(text,)g(ro)q(ot,)h(arra)
o(y)p 1514 944 V 18 w(of)p 1574 944 V 19 w(ranks,)e(coun)o(t\))166
1093 y Fm(Beha)o(v)o(es)i(lik)o(e)h Fe(MPI)p 495 1093 15 2
v 16 w(NEW)p 583 1093 V 17 w(CONTEXT)p Fm(,)e(except)h(that)f(only)h(one)g
(pro)q(cess)g(in)h(the)f(old)g(con)o(text,)f(namely)75 1150
y(the)21 b(pro)q(cess)g(with)h(rank)e Fe(root)p Fm(,)i(has)e(to)h(compute)g
(the)g(list)h(of)e(the)h(ranks)g(of)f(the)h(pro)q(cesses)h(that)75
1206 y(participate)c(in)g(the)f(new)h(con)o(text.)25 b(The)17
b(new)g(con)o(text)g(do)q(es)h(not)e(necessarily)j(include)g(the)f(pro)q
(cess)75 1263 y Fe(root)p Fm(.)h(The)c(call)h(is)f(blo)q(c)o(king,)h(and)f
(it)g(has)f(to)g(b)q(e)i(executed)f(b)o(y)g(all)g(pro)q(cesses)h(in)f(the)g
(list)g(and)g(b)o(y)g(the)75 1319 y(ro)q(ot)f(pro)q(cess.)75
1432 y Fk(OUT)k(new)o(con)o(text)k Fm(handle)15 b(to)d(newly)h(created)g(con)
o(text)f(at)h(calling)h(pro)q(cess.)19 b(This)14 b(handle)g(should)189
1488 y(not)g(b)q(e)i(asso)q(ciated)g(with)f(an)g(ob)s(ject)g(b)q(efore)h(the)
f(call.)75 1587 y Fk(IN)i(con)o(text)23 b Fm(handle)17 b(to)d(old)i(con)o
(text)75 1687 y Fk(IN)h(ro)q(ot)23 b Fm(index)17 b(of)e(new)g(con)o(text)g
(creator)f(in)i(old)g(con)o(text)75 1786 y Fk(IN)h(arra)o(y)p
277 1786 16 2 v 18 w(of)p 337 1786 V 19 w(ranks)22 b Fm(ranks)17
b(in)h(old)g(con)o(texts)e(of)h(mem)o(b)q(ers)h(of)f(new)g(con)o(text;)g
(signi\014can)o(t)i(only)f(at)189 1842 y(ro)q(ot)75 1941 y
Fk(IN)f(coun)o(t)23 b Fm(size)16 b(of)f(new)h(con)o(text;)e(signi\014can)o(t)
i(only)g(at)e(ro)q(ot)166 2130 y Fd(Implemen)o(tati)o(on)e(note:)166
2181 y Fc(The)19 b(call)e(can)i(b)q(e)g(implemen)o(ted)d(as)i(a)g(broadcast)h
(from)e(the)i(ro)q(ot)f(to)g(all)g(new)g(con)o(text)h(participan)o(ts,)75
2231 y(follo)o(w)o(ed)12 b(b)o(y)h(the)h(co)q(de)g(of)f Fb(MPI)p
574 2231 14 2 v 15 w(NEW)p 655 2231 V 15 w(CONTEXT)f Fc(\(the)i(broadcast)g
(is)f(executed)i(using)e(p)q(oin)o(t-to-p)q(oin)o(t)f(comm)o(uni-)75
2281 y(cation\).)166 2421 y Fm(Example:)34 b(Supp)q(ose)24
b(one)e(has)g(a)g(serv)o(er)g(con)o(text)g Fe(SERVER)p Fm(,)f(and)h(a)g
(clien)o(t)i(con)o(text)d Fe(CLIENT)p Fm(.)75 2478 y(Pro)q(cesses)16
b(in)i(either)f(con)o(texts)e(ma)o(y)h(not)g(kno)o(w)g(ab)q(out)g(pro)q
(cesses)h(in)g(the)g(other)f(con)o(text,)f(but)i(they)75 2534
y(all)h(b)q(elong)g(to)e(con)o(text)g Fe(MPI)p 582 2534 15
2 v 17 w(ALL)p Fm(,)g(and)h(all)g(kno)o(w)g(ab)q(out)f(pro)q(cess)h
Fe(root)g Fm(\(the)f(\\nameserv)o(er"\).)24 b(The)75 2591 y(ro)q(ot)17
b(pro)q(cess)g(kno)o(ws)g(ab)q(out)h(eac)o(h)f(of)g(the)h(t)o(w)o(o)e(con)o
(texts.)26 b(A)17 b(call)i(to)e Fe(MPI)p 1408 2591 V 17 w(BCAST)p
1545 2591 V 16 w(CONTEXT)g Fm(can)g(b)q(e)75 2647 y(used)e(to)f(create)g(a)g
(new)h(con)o(text)e(that)h(is)h(the)g(union)g(of)f(the)g Fe(CLIENT)g
Fm(and)h Fe(SERVER)e Fm(con)o(texts,)h(so)g(as)g(to)75 2704
y(allo)o(w)h(these)h(to)e(comm)o(unicate.)p eop
%%Page: 7 8
bop 75 -100 a Ff(1.4.)29 b(EXAMPLES)15 b({)g(PR)o(OBLEMS)h(IN)g(RICK'S)g
(LIST)756 b Fm(7)166 45 y Fd(Discussion:)166 96 y Fc(P)o(ossible)12
b(extension:)18 b(the)13 b(ro)q(ot)f(has)g(t)o(w)o(o)g(lists;)g(the)h(list)e
(of)h(pro)q(cesses)j(that)d(call)f(to)h(join)f(the)i(new)g(con)o(text,)75
146 y(and)j(the)g(list)f(of)g(pro)q(cesses)k(that)c(are)i(to)e(join)o(t)g
(the)h(next)h(con)o(text.)24 b(The)16 b(remianing)e(pro)q(cesses)k(are)e
(returned)75 196 y(a)g(v)n(alue)f(indicating)g(they)i(w)o(ere)g(left)e(out.)
25 b(This)16 b(could)g(b)q(e)g(useful)h(for)e(master-sla)o(v)o(e)g(co)q(de.)
26 b(The)16 b(ro)q(ot)g(is)g(the)75 246 y(master)f(that)h(creates)i(new)e
(con)o(texts)h(for)e(the)h(parallel)f(executuin)i(of)e(new)h(tasks.)24
b(All)15 b(disp)q(onible)g(pro)q(cesses)75 296 y(execute)h(the)e(call,)f(but)
h(only)f(a)h(subset)h(is)f(allo)q(cated.)166 472 y Fk(MPI)p
275 472 16 2 v 18 w(MER)o(GE)p 490 472 V 19 w(CONTEXT\()k(new)o(con)o(text,)f
(con)o(text1,)g(con)o(text2,)g(ro)q(ot\))166 565 y Fm(This)e(function)g(allo)
o(ws)g(to)e(merge)h(t)o(w)o(o)f(con)o(texts)h(ev)o(en)h(when)g(there)f(is)h
(no)f(con)o(text)g(that)g(encom-)75 621 y(passes)k(the)g(t)o(w)o(o)f(merged)h
(con)o(texts;)g(it)g(is)h(only)f(required)h(that)e(one)i(pro)q(cess,)f
(namely)h Fe(root)p Fm(,)e(b)q(e)i(in)75 678 y(b)q(oth)13 b(con)o(texts)e(to)
h(b)q(e)h(merged.)19 b(The)13 b(call)h(is)f(blo)q(c)o(king)h(and)e(m)o(ust)g
(b)q(e)h(executed)h(b)o(y)e(all)i(pro)q(cesses)f(that)75 734
y(participate)k(in)f(the)g(merged)g(con)o(text.)21 b(Eac)o(h)16
b(pro)q(cess)g(pro)o(vides)g(its)g(old)g(con)o(text,)f(and)h(the)g(index)h
(of)75 791 y(pro)q(cess)c(ro)q(ot)f(within)i(this)g(old)f(con)o(text)f(\(the)
h(index)h(ma)o(y)e(b)q(e)i(di\013eren)o(t)f(in)g(the)g(t)o(w)o(o)f(con)o
(texts)g(that)g(are)75 847 y(merged\).)19 b(The)14 b(ro)q(ot)g(pro)o(vides)g
(handles)h(to)e(b)q(oth)i(con)o(texts)e(that)g(are)h(to)f(b)q(e)i(merged.)k
(The)c(pro)q(cesses)75 904 y(in)h Fe(context1)e Fm(precede)i(the)g(pro)q
(cesses)f(in)h Fe(context2)e Fm(in)i(the)g(ranking)f(of)g(the)g(new)h(con)o
(text.)75 1017 y Fk(OUT)i(new)o(con)o(text)k Fm(handle)15 b(to)d(newly)h
(created)g(con)o(text)f(at)h(calling)h(pro)q(cess.)19 b(This)14
b(handle)g(should)189 1073 y(not)g(b)q(e)i(asso)q(ciated)g(with)f(an)g(ob)s
(ject)g(b)q(efore)h(the)f(call.)75 1173 y Fk(IN)i(con)o(text1)23
b Fm(handle)17 b(to)d(old)i(con)o(text)75 1272 y Fk(IN)h(con)o(text2)23
b Fm(handle)17 b(to)d(second)i(con)o(text;)e(signi\014can)o(t)i(only)g(at)f
(ro)q(ot)75 1372 y Fk(IN)i(ro)q(ot)23 b Fm(index)17 b(of)e(ro)q(ot)f(in)i
(old)g(con)o(text)166 1485 y(Example:)23 b(a)17 b(serv)o(er)f(\(the)h(\\ro)q
(ot"\))e(and)i(a)f(set)h(of)f(clien)o(t)i(pro)q(cesses)f(participate)h(in)f
Fe(context1)p Fm(.)75 1541 y(The)j(serv)o(er)f(spa)o(wns)g(new)h(\\help)q
(ers",)h(or)e(has)h(other)f(a)o(v)m(ailable)i(serv)o(er)e(pro)q(cesses)h
(join)g(it.)33 b(A)20 b(call)75 1598 y(to)e Fe(MPI)p 209 1598
15 2 v 16 w(MERGE)p 345 1598 V 17 w(CONTEXT)f Fm(can)i(b)q(e)g(used)g(to)e
(create)h(a)h(new)f(con)o(text)g(that)f(mak)o(e)h(these)h(new)f(serv)o(ers)75
1654 y(a)o(v)m(ailable)f(to)d(the)i(parallel)g(clinet.)166
1788 y Fd(Discussion:)166 1839 y Fc(Here,)h(to)q(o,)f(the)h(function)e(can)h
(b)q(e)h(extended)h(to)d(allo)o(w)g(the)h(creation)h(of)e(a)h(new)g(con)o
(text)h(where)g(only)e(a)75 1889 y(subset)g(of)f(the)g(pro)q(cesses)j(in)c
(the)i(old)e(group)g(participate)166 1940 y(If)k Fb(MPI)p 280
1940 14 2 v 15 w(MERGE)p 405 1940 V 14 w(CONTEXT)f Fc(is)h(a)o(v)n(ailable)e
(then)j(the)g(functionalit)o(y)d(of)i Fb(MPI)p 1344 1940 V
15 w(SPAWN)f Fc(can)i(b)q(e)f(reduced:)27 b(It)17 b(is)75 1990
y(su\013cien)o(t)e(to)e(create)i(a)f(new)g(con)o(text)g(that)g(consists)h(of)
e(a)g(spa)o(wning)g(pro)q(cess)j(\(rather)e(than)g(sp)o(wning)f(con)o(text\))
75 2040 y(and)h(the)g(spa)o(wned)h(pro)q(cesses.)20 b(This)14
b(new)g(con)o(text)h(can)f(then)h(b)q(e)f(merged)g(with)f(a)h(preexisting)g
(con)o(text.)166 2256 y Fd(Implemen)o(tati)o(on)e(note:)166
2308 y Fc(Implemen)o(tation)f(is)i(similar)f(to)i(the)g(implemen)o(tation)c
(of)k Fb(MPI)p 1179 2308 V 15 w(BCAST)p 1304 2308 V 14 w(CONTEXT)75
2542 y Fl(1.4)70 b(Examples)22 b({)h(Problems)f(in)g(Ric)n(k's)g(list)75
2646 y Fm(Only)16 b(the)g(basic)g(con)o(text)e(functions)i(are)f(used)h(in)g
(these)f(examples.)166 2704 y Fd(W)l(arning)p Fc(:)h(late)e(nigh)o(t)f(w)o
(ork)p eop
%%Page: 8 9
bop 75 -100 a Fm(8)867 b Ff(CHAPTER)15 b(1.)35 b(CONTEXTS)15
b({)g(PR)o(OPOSAL)i(I)75 45 y Fk(F)l(unction)h(that)h(implemen)o(ts)e(sh)o
(u\017e)f(p)q(erm)o(utation)i(in)g(group/con)o(text)75 204
y Fe(void)23 b(function)g(mpi_shuffle\(inbuf,)e(outbuf,)i(datatype,)g(count,)
g(context,)g(size\))75 317 y(...)75 430 y({)75 486 y
(mpi_copy_context\(newcontex)o(t,)e(context\);)75 543 y(mpi_rank\(context,)h
(i\);)75 599 y(dest)h(=)h(shuffle\(i,)f(size\);)75 656 y(source)g(=)h
(unshuffle\(i,)e(size\);)75 712 y(mpi_irecvc)g(\(handle,)h(inbuf,)g(count,)g
(datatype,)g(source,)g(0,)g(nexcontext\);)75 769 y(mpi_sendc)g(\(outbuf,)f
(count,)h(datatype,)g(dest,)g(0,)h(newcontext\);)75 825 y(mpi_wait\(handle,)e
(ret_stat\);)75 882 y(mpi_free\(newcontext\);)75 938 y(})166
1095 y Fm(This)15 b(w)o(orks)f(OK,)h(if)g(pro)q(cesses)g(are)g
(single-threaded.)21 b(If)15 b(they)g(are)g(m)o(ultithreaded,)g(one)g(has)g
(to)75 1152 y(mak)o(e)f(sure)g(that)g(other)f(concurren)o(t)i(threads)f(do)g
(not)g(create)g(new)g(con)o(texts.)19 b(New)14 b(con)o(text)g(creation)75
1208 y(can)h(b)q(e)h(skipp)q(ed)h(if)f(there)f(are)g(no)g(p)q(ending)i
(messages)e(in)h(the)f(con)o(text)g(when)g(mpi)p 1539 1208
14 2 v 17 w(sh)o(u\017e)h(is)g(called.)75 1338 y Fk(Use)25
b(of)h(con)o(texts)g(for)f(library)h(dev)o(elopmen)o(t)44 b
Fm(The)23 b(co)q(de)g(of)f(a)g(parallel)i(library)f(function)75
1395 y(should)18 b(b)q(e)f(written)g(so)f(that)g(eac)o(h)h(message)f(that)g
(is)h(pro)q(duced)h(b)o(y)e(some)h(pro)q(cess)g(is)g(consumed)g(b)o(y)75
1451 y(another)d(pro)q(cess)h(during)h(the)f(execution)g(of)g(the)f(library)i
(co)q(de)f({)f(i.e.)21 b(the)14 b(library)i(should)f(\\clean)h(its)75
1508 y(garbage".)166 1566 y(A)d(parallel)j(library)e(is)g(in)o(v)o(ok)o(ed)g
(collectiv)o(ely)i(b)o(y)d(a)g(group)g(of)h(pro)q(cesses.)19
b(An)o(y)14 b(in)o(v)o(ok)m(ation)g(of)f(the)75 1622 y(library)k(o)q(ccurs)g
(within)g(a)f(con)o(text)g(de\014ned)i(b)o(y)e(the)h(user.)23
b(All)18 b(pro)q(cesses)f(that)e(participate)i(in)h(suc)o(h)75
1679 y(con)o(text)g(in)o(v)o(ok)o(e)h(the)g(parallel)h(library)l(,)h(and)e
(matc)o(hing)g(in)o(v)o(ok)m(ations)g(o)q(ccur)g(at)f(all)i(of)e(them)h(in)h
(the)75 1735 y(same)15 b(order.)166 1793 y(The)10 b(library)h(has)f(to)g
(generate)g(a)f(new)i(con)o(text,)f(using)h(the)f(function)h
Fe(MPI)p 1427 1793 15 2 v 17 w(COPY)p 1540 1793 V 17 w(CONTEXT\(newcontext,)
75 1850 y(context\))p Fm(,)16 b(for)h(eac)o(h)g(con)o(text)g
Fe(context)f Fm(where)h(from)g(the)g(library)h(ma)o(y)f(b)q(e)h(in)o(v)o(ok)o
(ed.)26 b(The)17 b(library)75 1906 y(will)g(then)f(use)g(the)g(con)o(text)f
Fe(newcontext)f Fm(for)h(its)h(comm)o(unication)h(whenev)o(er)f(it)g(is)g(in)
o(v)o(ok)o(ed)g(within)75 1963 y(the)h(con)o(text)f Fe(context)p
Fm(.)24 b(If)17 b(the)g(library)g(uses)h(collectiv)o(e)g(comm)o(unication)g
(within)g(dynamically)g(de-)75 2019 y(\014ned)h(subgroups,)f(then)g(these)g
(subgroups)g(will)i(b)q(e)f(created)e(b)o(y)h(splitting)i(the)d(group)h(of)g
(pro)q(cesses)75 2076 y(de\014ned)f(b)o(y)e Fe(newcontext)p
Fm(.)166 2134 y(In)23 b(the)g(general)g(case,)h(the)e(con)o(text)g(of)g(the)h
(in)o(v)o(ok)m(ation)g(has)f(to)g(b)q(e)h(passed)g(as)f(an)h(explicit)75
2190 y(parameter)14 b(when)i(the)f(library)h(is)f(in)o(v)o(ok)o(ed.)21
b(The)15 b(library)h(co)q(de)f(will)i(generate)e(a)g(new)g(con)o(text)f(when)
75 2247 y(it)h(starts)f(executing)j(and)e(will)i(free)e(this)h(con)o(text)e
(when)i(it)g(terminates.)166 2305 y(There)f(are)g(sev)o(eral)h(sp)q(ecial)h
(cases)e(where)g(dynamic)h(con)o(text)f(creation)g(can)h(b)q(e)f(a)o(v)o
(oided.)166 2363 y(Case)10 b(1:)18 b(The)11 b(library)g(is)h(alw)o(a)o(ys)e
(in)o(v)o(ok)o(ed)h(within)h(the)e(con)o(text)h Fe(MPI)p 1343
2363 V 16 w(ALL)p Fm(.)f(Then)i(the)f(new)g(con)o(text)75 2420
y(can)18 b(b)q(e)g(\\cac)o(hed":)25 b(A)17 b(library)i(collectiv)o(e)g
(initialization)i(routine)d(should)g(b)q(e)h(in)o(v)o(ok)o(ed)f(b)o(y)f(the)h
(user)75 2476 y(at)c(the)g(start)f(of)h(the)g(program;)f(this)i(routine)f
(creates)g(a)g(cop)o(y)g(of)g(the)g(con)o(text)g Fe(MPI)p 1537
2476 V 17 w(ALL)f Fm(and)i(stores)e(a)75 2532 y(handle)k(to)e(it)h(in)g(a)g
(C)f(static)h(v)m(ariable)h(\(F)l(ortran)d(77)h(COMMON\).)g(The)h(con)o(text)
f Fe(MPI)p 1602 2532 V 17 w(ALL)g Fm(need)h(not)75 2589 y(b)q(e)g(passed)f
(as)g(a)g(parameter)f(when)i(the)f(library)h(is)g(in)o(v)o(ok)o(ed.)166
2647 y(Case)g(2:)22 b(The)17 b(library)g(is)g(alw)o(a)o(ys)e(in)o(v)o(ok)o
(ed)i(in)g(a)f(unique)i Fh(libr)n(ary)f(c)n(al)r(ling)f(c)n(ontext)g
Fm(on)h(eac)o(h)f(pro-)75 2704 y(cess.)29 b(Then)18 b(a)g(library)h
(initialization)i(routine)e(should)g(b)q(e)g(in)o(v)o(ok)o(ed)f(b)o(y)g(the)g
(user)g(on)h(eac)o(h)f(pro)q(cess)p eop
%%Page: 9 10
bop 75 -100 a Ff(1.4.)34 b(EXAMPLES)16 b({)e(PR)o(OBLEMS)j(IN)e(RICK'S)h
(LIST)751 b Fm(9)75 45 y(where)16 b(the)g(library)g(ma)o(y)f(b)q(e)h(in)o(v)o
(ok)o(ed;)g(the)f(initialization)k(routine)d(is)g(called)h(after)e(the)h
(user)g(de\014ned)75 102 y(the)i(library)g(calling)i(con)o(texts)d(and)h(b)q
(efore)g(the)g(library)g(is)g(in)o(v)o(ok)o(ed.)28 b(Eac)o(h)18
b(initialization)i(call)f(is)f(a)75 158 y(collectiv)o(e)d(call)f(within)g
(the)f(library)h(calling)g(con)o(text.)19 b(A)13 b(cop)o(y)g(of)f(the)h
(calling)i(con)o(text)d(is)h(created)g(\(b)o(y)75 214 y Fe(MPI)p
150 214 15 2 v 17 w(COPY)p 263 214 V 16 w(CONTEXT)p Fm(\))i(and)i(stored)e
(in)j(a)d(static)h(library)h(v)m(ariable.)25 b(Subsequen)o(t)17
b(calls)g(to)f(the)g(library)75 271 y(need)g(not)f(pass)g(the)g(calling)i
(con)o(text)e(as)g(a)f(parameter.)166 327 y(Case)19 b(3:)27
b(The)20 b(library)g(ma)o(y)e(b)q(e)i(in)o(v)o(ok)o(ed)f(on)h(eac)o(h)f(pro)q
(cess)g(within)i(a)d(\014xed)i(\(small\))g(n)o(um)o(b)q(er)75
384 y(of)f(library)h(calling)h(con)o(texts.)32 b(Copies)20
b(of)f(these)g(con)o(texts)g(can)h(b)q(e)g(created)f(b)q(efore)h(the)f
(library)h(is)75 440 y(in)o(v)o(ok)o(ed)e(and)g(\\cac)o(hed")g(in)h(static)f
(v)m(ariables.)29 b(Subsequen)o(t)19 b(in)o(v)o(ok)m(ations)f(to)g(the)g
(library)h(need)f(not)75 497 y(create)d(new)g(copies,)h(but)f(only)h(select)g
(the)f(righ)o(t)g(preexisting)i(cop)o(y)l(.)166 547 y Fc(This)9
b(assumes)h(one)f(can)h(test)g(con)o(texts)h(\(con)o(text)f(handles\))g(for)f
(equalit)o(y)m(.)15 b(This)9 b(should)g(b)q(e)h(said)g(explicitely)75
596 y(in)j(the)i(draft)75 704 y Fk(Use)i(of)h(con)o(texts)f(for)g(a)h(host)f
(no)q(de)h(computation)i(mo)q(del)42 b Fc(Let's)14 b(assume)g(t)o(w)o(o)f
(con)o(texts:)145 779 y Fa(\017)23 b Fb(MPI)p 258 779 14 2
v 15 w(ALL)13 b Fc(with)g(host)i(b)q(eing)e(no)q(de)i(zero)145
854 y Fa(\017)23 b Fb(MPI)p 258 854 V 15 w(NODE)13 b Fc(that)h(do)q(es)g(not)
g(include)g(the)h(host)166 928 y(W)m(e)e(assume)h(the)g(load)f(pro)q(cedure)j
(ensures)g(that)e(host)g(is)g(pro)q(cess)i(zero)e(in)g(ALL)75
1078 y Fb(host/node)20 b(code)479 b(translation)75 1128 y(--------------)e
(-------------)75 1227 y(I_am_the_host\(\))455 b(\(mpi_rank\(MPI_A)o(LL,)19
b(rank\);)860 1277 y(rank==0;\))75 1377 y(form)i(node)g(group)457
b(mpi_rank\(MPI_AL)o(L,)19 b(task\))860 1427 y(mpi_split_conte)o(xt\(MP)o
(I_NOD)o(E,)g(MPI_ALL,)903 1476 y(\(task==0\),0\);)75 1576
y(Broadcast)h(from)h(host)g(to)g(nodes)174 b(mpi_bcast\(MPI_A)o(LL,0,)o
(...\))75 1676 y(regular)20 b(communications)f(btwn)196 b(mpi_send\(buffer)o
(,len,)o(dest,)o(tag,M)o(PI_NO)o(DE\))75 1725 y(nodes)675 b(mpi_recv\(buffer)
o(,len,)o(sourc)o(e,tag)o(,MPI_)o(NODE)o(\))184 1775 y(/*)21
b(source,)g(dest)g(are)g(ranging)f(from)h(0)h(to)f(#nodes-1)f(*/)75
1875 y(sum)h(values)g(from)g(each)g(node)239 b(mpi_reduce\(inbu)o(f,out)o
(buf,l)o(en,MP)o(I_ALL)o(,)75 1925 y(at)21 b(host)893 b(0,MPI_ISUM\))228
1975 y(/*)21 b(host)g(\(node)g(zero\))f(calls)h(mpi_reduce)f(with)h(inbuf)g
(=)g(0)h(*/)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF