Patrick Welche <prlw1@cam.ac.uk>
[netbsd-mini2440.git] / external / bsd / am-utils / dist / doc / hlfsd.ps
blob18c257d993a1fc2abc7d96ae5ba140cbb55b7811
1 %!PS-Adobe-2.0
2 %%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
3 %%Title: hlfsd.dvi
4 %%Pages: 15 1
5 %%BoundingBox: 0 0 612 792
6 %%EndComments
7 %%BeginProcSet: /usr/local/lib/tex/ps/psfig.pro
8 /TeXscale { 65536 div } def
10 /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap
11 currentlinejoin currentdash currentgray currentmiterlimit ] cvx def
13 /startTexFig {
14         /SavedState save def
15         userdict maxlength dict begin
16         currentpoint transform
18         DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap
19                 setlinewidth setmatrix
21         itransform moveto
23         /ury exch TeXscale def
24         /urx exch TeXscale def
25         /lly exch TeXscale def
26         /llx exch TeXscale def
27         /y exch TeXscale def
28         /x exch TeXscale def
29         
30         currentpoint /cy exch def /cx exch def
32         /sx x urx llx sub div def       % scaling for x
33         /sy y ury lly sub div def       % scaling for y
35         sx sy scale                     % scale by (sx,sy)
37         cx sx div llx sub
38         cy sy div ury sub translate
39         
40         /DefFigCTM matrix currentmatrix def
42         /initmatrix {
43                 DefFigCTM setmatrix
44         } def
45         /defaultmatrix {
46                 DefFigCTM exch copy
47         } def
49         /initgraphics {
50                 DocumentInitState setmiterlimit setgray setdash 
51                         setlinejoin setlinecap setlinewidth setmatrix
52                 DefFigCTM setmatrix
53         } def
55         /showpage {
56                 initgraphics
57         } def
58         /erasepage {
59                 initgraphics
60         } def
61         /copypage {} def
63 } def
64 /clipFig {
65         currentpoint 6 2 roll
66         newpath 4 copy
67         4 2 roll moveto
68         6 -1 roll exch lineto
69         exch lineto
70         exch lineto
71         closepath clip
72         newpath
73         moveto
74 } def
75 /doclip { llx lly urx ury clipFig } def
76 /endTexFig {
77         end SavedState restore
78 } def
79 %%EndProcSet
80 %%BeginProcSet: tex.pro
81 /TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
82 load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
83 isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
84 Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
85 round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
86 N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
87 /vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
88 statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
89 /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
90 /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
91 /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2
92 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
93 B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
94 setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup
95 length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{
96 ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B
97 /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
98 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
99 dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
100 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
101 ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}
102 imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
103 put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf
104 div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook
105 known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore
106 showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
107 known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
108 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N
109 /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
110 /rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
111 7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
112 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
113 -.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
114 moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{
115 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
116 /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
117 }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
118 a}B /bos{/SS save N}B /eos{clear SS restore}B end
119 %%EndProcSet
120 %%BeginProcSet: special.pro
121 TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs
122 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP false N /BBcalc false N
123 /p 3 def}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{
124 @scaleunit div /vsc X}B /@hsize{/hs X /CLIP true N}B /@vsize{/vs X /CLIP true
125 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X}
126 B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X /BBcalc true N}B
127 /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type
128 /dicttype eq{md begin /letter{}N /note{}N /legal{}N /od{txpose 1 0 mtx
129 defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{
130 itransform moveto}}{transform{itransform lineto}}{6 -2 roll transform 6 -2
131 roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll
132 itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array
133 astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{
134 PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR
135 pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
136 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
137 not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if
138 yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270
139 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get
140 ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not
141 and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip
142 not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}
143 ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy
144 TR .96 dup scale neg S neg S TR}if}N /cp{pop pop showpage pm restore}N end}if}
145 if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{
146 DVImag dup scale}if}N /psfts{S 65536 div N}N /startTexFig{/psf$SavedState save
147 N userdict maxlength dict begin /magscale false def normalscale currentpoint
148 TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
149 /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx
150 sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx
151 psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N
152 /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{psf$llx psf$lly
153 psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll
154 S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end
155 psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave
156 normalscale currentpoint TR @SpecialDefaults}N /@setspecial{CLIP{newpath 0 0
157 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR
158 hsc vsc scale ang rotate BBcalc{rwi urx llx sub div dup scale llx neg lly neg
159 TR}if /showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{grestore
160 clear SpecialSave restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B
161 /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1
162 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY
163 moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix
164 currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix
165 setmatrix}N end
166 %%EndProcSet
167 TeXDict begin 1000 300 300 @start /Fa 2 117 df<3E0006000C000C000C000C00180019
168 E01E30183038303030303030306060606460C460C4C0C8C0700E147E9313>104
169 D<02000600060006000C00FF800C000C001800180018001800300031003100320032001C000912
170 7F910D>116 D E /Fb 5 116 df<001FC0001FC0001FC00001C00001C00001C00001C00001C000
171 01C001F1C007FDC00FFFC01E0FC03C07C07803C07001C0E001C0E001C0E001C0E001C0E001C0E0
172 01C0E001C07003C07003C03807C03E0FC01FFFFC07FDFC01F1FC161E7E9D1A>100
173 D<0007E0001FF0003FF800787800F03000E00000E00000E00000E0007FFFF0FFFFF0FFFFF000E0
174 0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
175 0000E0003FFF807FFFC03FFF80151E7F9D1A>102 D<FE0000FE0000FE00000E00000E00000E00
176 000E00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00
177 E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0FFE3FEFFE7FEFFE3FE171E7F9D1A
178 >104 D<FFE000FFE000FFE00000E00000E00000E00000E00000E00000E00000E00000E00000E0
179 0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
180 0000E00000E000FFFFE0FFFFE0FFFFE0131E7D9D1A>108 D<07FB801FFF807FFF80780780E003
181 80E00380E003807800007FC0003FFC0007FE00003F800007806001C0E001C0E001C0F003C0FC07
182 80FFFF00EFFE00E3F80012157C941A>115 D E /Fc 13 118 df<000180000180000380000380
183 000780000780000B800013800013800023C00021C00041C000C1C00081C00101C001FFC00201C0
184 0201C00401C00801C00801C01801C0FE0FF815177E961A>65 D<03FFFE00E00E00E00400E00400
185 E00401C00401C00401C10001C10003820003820003FE000386000704000704080704080700100E
186 00100E00300E00200E00601C01C0FFFFC017177E9618>69 D<03F0003F8000F000780000B80078
187 0000B800B80000B80138000138017000013802700001380270000138047000023808E000021C08
188 E000021C10E000021C10E000041C21C000041C41C000041C41C000041C81C000081D038000081D
189 038000080E038000080E038000180C070000FE083FE00021177E9620>77
190 D<03F00FE000F0030000F0020000B8020000B80200011C0400011C0400011C0400010E0400020E
191 0800020E080002070800020708000403900004039000040390000401D0000801E0000800E00008
192 00E0000800E00018004000FE0040001B177E961A>I<03FFE000E03800E01C00E01C00E01C01C0
193 1C01C01C01C01C01C0380380700381C003FF000381800700C00700E00700E00700E00E01C00E01
194 C00E01C20E01C21C00C4FF807817177E961A>82 D<007C400182800301800601800601800C0100
195 0C01000C00000E00000FC00007F80003FC00007C00000E00000E00000600200600400C00400C00
196 600800601000D8600087C00012177D9614>I<7FC1FC1C00601C00401C00401C00403800803800
197 80380080380080700100700100700100700100E00200E00200E00200E00200E00400E00800E008
198 006030003040001F8000161779961A>85 D<007C00180018001800180030003000300030076008
199 E018E0306030C060C060C060C0C180C188C1884388659038E00E177C9612>100
200 D<030706000000000000384C4C4C8C18181830326262243808177D960B>105
201 D<078018C0304060606060C060C060C06080C080C08180C10046003C000B0E7B8D12>111
202 D<38F04518463846308C000C000C000C001800180018001800300030000D0E7D8D0F>114
203 D<07800C4018E018E038001E001F8007C000C060C0E0C0C180C3003E000B0E7D8D0F>I<1C0826
204 184618461886300C300C300C30186018621862186208E407380F0E7D8D13>117
205 D E /Fd 25 127 df<60F0F0600404798312>46 D<0018003800380070007000E000E001C001C0
206 01C003800380070007000E000E001C001C001C003800380070007000E000E000C0000D1A7E9612
207 >I<07C00FE01C703838701C701CE00EE00EE00EE00EE00EE00EE00EE01E701C701C38381C700F
208 E007C00F147F9312>I<FFFEFFFE7FFE0000000000007FFEFFFEFFFE0F097F8E12>61
209 D<3F807FC070E0207000700FF03FF07870E070E070E07070F03FFE1F3E0F0E7E8D12>97
210 D<F800F80038003800380038003BE03FF03C38381C380C380E380E380E380E380C381C3C383FF0
211 1BC00F147F9312>I<07F01FF8383870106000E000E000E000E0006000703838381FF007E00D0E
212 7E8D12>I<00F800F8003800380038003807B81FF8387870386038E038E038E038E03860387078
213 38781FFE0FBE0F147F9312>I<07801FE0387070706038E038FFF8FFF8E0006000703838381FF0
214 07C00D0E7E8D12>I<007E00FF01C70382038003807FFEFFFE0380038003800380038003800380
215 0380038003803FF83FF81014809312>I<F800F800380038003800380039E03FF03E383C383838
216 3838383838383838383838383838FE3EFE3E0F147F9312>104 D<06000F000F00060000000000
217 0000FF00FF000700070007000700070007000700070007000700FFF0FFF00C157D9412>I<F800
218 F80038003800380038003BFC3BFC38F039E03BC03F803F803FC03DE038E038703838FC7EFC7E0F
219 147F9312>107 D<FF00FF00070007000700070007000700070007000700070007000700070007
220 0007000700FFF8FFF80D147E9312>I<F71C00FFBE0079E70079E70071C70071C70071C70071C7
221 0071C70071C70071C70071C700F9E780F8E380110E808D12>I<F9E0FFF03E383C383838383838
222 3838383838383838383838FE3EFE3E0F0E7F8D12>I<0F803FE038E07070E038E038E038E038E0
223 38F078707038E03FE00F800D0E7E8D12>I<FBE0FFF03C38381C380C380E380E380E380E380C38
224 1C3C383FF03BC038003800380038003800FE00FE000F157F8D12>I<FCF8FDFC1F1C1E081E001C
225 001C001C001C001C001C001C00FFC0FFC00E0E7E8D12>114 D<1FF03FF06070C070E0007F003F
226 E00FF000786018E018F030FFE0DFC00D0E7E8D12>I<06000E000E000E007FF8FFF80E000E000E
227 000E000E000E000E000E380E380E3807F003C00D127F9112>I<F8F8F8F8383838383838383838
228 38383838383838383838781FFE0FBE0F0E7F8D12>I<FC7EFC7E38383C781C701C701C700EE00E
229 E00EE006C007C007C003800F0E7F8D12>I<3FFC7FFC7038707000E001C0038007000E001C1C38
230 1C701CFFFCFFFC0E0E7F8D12>122 D<18403CE0E78043000B047D9312>126
231 D E /Fe 64 125 df<00FCF807839C0E079C1C07081C07001C07001C07001C07001C0700FFFFE0
232 1C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF1FE0
233 1617809615>11 D<00FC000782000E07001C07001C02001C00001C00001C00001C0000FFFF001C
234 07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF1FE013
235 17809614>I<00FC7E000703C1000E0783801C0703801C0701001C0700001C0700001C0700001C
236 070000FFFFFF801C0703801C0703801C0703801C0703801C0703801C0703801C0703801C070380
237 1C0703801C0703801C0703801C070380FF1FCFF01C1780961D>14 D<60F0F07010102020404004
238 0A7D960A>39 D<0102040C1818303070606060E0E0E0E0E0E0E0E0E0E060606070303018180C04
239 020108227D980E>I<8040203018180C0C0E060606070707070707070707070606060E0C0C1818
240 3020408008227E980E>I<60F0F070101020204040040A7D830A>44 D<FF80FF80090280870C>I<
241 60F0F06004047D830A>I<0008001800300030003000600060006000C000C000C0018001800180
242 030003000600060006000C000C000C00180018001800300030003000600060006000C000C0000D
243 217E9812>I<03000700FF00070007000700070007000700070007000700070007000700070007
244 000700070007007FF00C157E9412>49 D<0F8030E040708030C038E03840380038007000700060
245 00C00180030006000C08080810183FF07FF0FFF00D157E9412>I<0FE030306018701C701C001C
246 00180038006007E000300018000C000E000EE00EE00EC00C401830300FE00F157F9412>I<0030
247 0030007000F001F001700270047008701870107020704070C070FFFE0070007000700070007003
248 FE0F157F9412>I<01F00608080C181C301C70006000E000E3E0EC30F018F00CE00EE00EE00E60
249 0E600E300C3018183007C00F157F9412>54 D<40007FFE7FFC7FF8C00880108020004000800080
250 0100010003000200060006000E000E000E000E000E0004000F167E9512>I<07E018302018600C
251 600C700C78183E101F600FC00FF018F8607C601EC00EC006C006C004600C38300FE00F157F9412
252 >I<07C0183030186018E00CE00CE00EE00EE00E601E301E186E0F8E000E000C001C7018701860
253 3020C01F800F157F9412>I<60F0F06000000000000060F0F07010102020404004147D8D0A>59
254 D<001000003800003800003800005C00005C00005C00008E00008E00008E000107000107000307
255 8002038002038007FFC00401C00401C00800E00800E01800E03800F0FE03FE17177F961A>65
256 D<FFFE001C03801C00E01C00601C00701C00701C00701C00701C00E01C01C01FFF801FFFC01C00
257 E01C00701C00301C00381C00381C00381C00381C00701C00E01C01C0FFFF0015177F9619>I<00
258 FC100383300E00B01C0070380030300030700010600010E00010E00000E00000E00000E00000E0
259 0000E000106000107000103000203800201C00400E008003830000FC0014177E9619>I<FFFF00
260 1C01C01C00E01C00301C00381C00181C001C1C000C1C000E1C000E1C000E1C000E1C000E1C000E
261 1C000E1C000C1C001C1C001C1C00381C00301C00601C01C0FFFF0017177F961B>I<FFFFE01C00
262 E01C00601C00201C00101C00101C00101C04001C04001C04001C0C001FFC001C0C001C04001C04
263 001C04001C00001C00001C00001C00001C00001C0000FFC00014177F9617>70
264 D<FF83FE1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701FFFF01C00
265 701C00701C00701C00701C00701C00701C00701C00701C00701C0070FF83FE17177F961A>72
266 D<FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
267 0E000E000E00FFE00B177F960D>I<FFC0001C00001C00001C00001C00001C00001C00001C0000
268 1C00001C00001C00001C00001C00001C00001C00201C00201C00201C00601C00601C00401C00C0
269 1C03C0FFFFC013177F9616>76 D<FE0003F81E0003C0170005C0170005C0170005C0138009C013
270 8009C011C011C011C011C011C011C010E021C010E021C0107041C0107041C0107041C0103881C0
271 103881C0101D01C0101D01C0100E01C0100E01C0380E01C0FE040FF81D177F9620>I<FC00FE1E
272 00381F001017001013801011C01011C01010E010107010103810103810101C10100E10100F1010
273 07101003901001D01001D01000F0100070100030380030FE001017177F961A>I<00FC00030300
274 0E01C01C00E0380070300030700038600018E0001CE0001CE0001CE0001CE0001CE0001CE0001C
275 7000387000383000303800701C00E00E01C003030000FC0016177E961B>I<FFFE001C03801C00
276 C01C00601C00701C00701C00701C00701C00601C00C01C03801FFE001C00001C00001C00001C00
277 001C00001C00001C00001C00001C00001C0000FF800014177F9618>I<FFFC001C03801C00C01C
278 00E01C00701C00701C00701C00701C00E01C00C01C03801FFE001C07801C01C01C00E01C00E01C
279 00E01C00E01C00E01C00E11C00E11C0072FF803C18177F961A>82 D<0FC4302C601C400CC004C0
280 04C004E00070007F003FE00FF801FC001C000E0006800680068006C004E008D81087E00F177E96
281 14>I<7FFFF8603818403808403808803804803804803804003800003800003800003800003800
282 00380000380000380000380000380000380000380000380000380000380007FFC016177F9619>
283 I<FF80FE1C00381C00101C00101C00101C00101C00101C00101C00101C00101C00101C00101C00
284 101C00101C00101C00101C00101C00100E0020060020030040018180007E0017177F961A>I<FF
285 80FE3C00381C00101C00100E00200E002007004007004007004003808003808003C18001C10001
286 C10000E20000E20000F60000740000740000380000380000380000100017177F961A>I<FF83FC
287 1F01E00E008007008007810003820001C20001E40000E800007800007800003800007C00005E00
288 008E000187000107800203800601C00401E00C00E01C00F0FF03FE17177F961A>88
289 D<FCFCC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FCFC06217D980A
290 >91 D<FCFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0CFCFC062180
291 980A>93 D<1FC0386038301038003803F81E3830387038E039E039E07970FF1F1E100E7F8D12>
292 97 D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001CF8001F06001C0300
293 1C03801C01801C01C01C01C01C01C01C01C01C01801C03801C03001B0E0010F8001217809614>
294 I<07F01838303870106000E000E000E000E000600070083008183007C00D0E7F8D10>I<007E00
295 000E00000E00000E00000E00000E00000E00000E00000E0007CE001C3E00300E00700E00600E00
296 E00E00E00E00E00E00E00E00600E00700E00301E00182E0007CFC012177F9614>I<0FC0186030
297 307038E018FFF8E000E000E000600070083010183007C00D0E7F8D10>I<03E006700E701C201C
298 001C001C001C001C00FF801C001C001C001C001C001C001C001C001C001C001C001C00FF800C17
299 80960B>I<0F9E18E33060707070707070306018C02F80200060003FE03FF83FFC600EC006C006
300 C006600C38380FE010157F8D12>I<FC00001C00001C00001C00001C00001C00001C00001C0000
301 1C00001C7C001D8E001E07001C07001C07001C07001C07001C07001C07001C07001C07001C0700
302 1C0700FF9FE01317809614>I<183C3C1800000000007C1C1C1C1C1C1C1C1C1C1C1C1CFF081780
303 960A>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C3F801C1C001C18
304 001C20001C40001CC0001FE0001CF0001C70001C78001C3C001C1E001C1E00FF3FC01217809613
305 >107 D<FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
306 001C001C001C001C00FF80091780960A>I<FC7C1F001D8E63801E0781C01C0701C01C0701C01C
307 0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7F81D0E808D
308 1E>I<FC7C001D8E001E07001C07001C07001C07001C07001C07001C07001C07001C07001C0700
309 1C0700FF9FE0130E808D14>I<07C018303018600C600CE00EE00EE00EE00EE00E701C30181830
310 07C00F0E7F8D12>I<FCF8001F0E001C03001C03801C01801C01C01C01C01C01C01C01C01C0180
311 1C03801C07001F0E001CF8001C00001C00001C00001C00001C0000FF80001214808D14>I<07C2
312 001C2600381E00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E001C2E0007CE
313 00000E00000E00000E00000E00000E00007FC012147F8D13>I<FCF01D381E381C101C001C001C
314 001C001C001C001C001C001C00FF800D0E808D0E>I<1F4060C0C040C040E000FF007F801FC001
315 E080608060C060E0C09F000B0E7F8D0E>I<080008000800180018003800FF8038003800380038
316 0038003800380038403840384038401C800F000A147F930E>I<FC3F001C07001C07001C07001C
317 07001C07001C07001C07001C07001C07001C07001C0F000E170003E7E0130E808D14>I<FE1F3C
318 0E3C0C1C081C080E100E100720072003C003C003C001800180100E7F8D13>I<FCFE7C38383838
319 38101C3C201C3C201C4C200E4E400E4E400E8640078780078780070380030300030300160E7F8D
320 19>I<FE3F3C181C100E20074007C0038001C002E004F008701838383CFC7F100E7F8D13>I<FE1F
321 3C0E3C0C1C081C080E100E100720072003C003C003C00180018001000100E200E200A400780010
322 147F8D13>I<FFFFFFFFC02201808823>124 D E /Ff 10 58 df<1F00318060C04040C060C060
323 C060C060C060C060C060C060404060C031801F000B107F8F0F>48 D<0C003C00CC000C000C000C
324 000C000C000C000C000C000C000C000C000C00FF8009107E8F0F>I<1F00618040C08060C06000
325 60006000C00180030006000C00102020207FC0FFC00B107F8F0F>I<1F00218060C060C000C000
326 8001800F00008000400060C060C060804060801F000B107F8F0F>I<0300030007000F000B0013
327 00330023004300C300FFE003000300030003001FE00B107F8F0F>I<20803F002C002000200020
328 002F0030802040006000600060C06080C061801F000B107F8F0F>I<0780184030C060C06000C0
329 00CF00F080E040C060C060C060406060C030801F000B107F8F0F>I<40007FE07FC08080808001
330 000200040004000C0008000800180018001800180018000B117E900F>I<1F00318060C060C060
331 C071803F000F00338061C0C060C060C060404060801F000B107F8F0F>I<1F00318060C0C040C0
332 60C060C06040E021E01E600060004060C0608043003E000B107F8F0F>I
333 E /Fg 10 58 df<0F0030C0606060604020C030C030C030C030C030C030C030C030C030402060
334 60606030C00F000C137E9211>48 D<0C001C00EC000C000C000C000C000C000C000C000C000C00
335 0C000C000C000C000C000C00FFC00A137D9211>I<1F0060C06060F070F0306030007000700060
336 00C001C00180020004000810101020207FE0FFE00C137E9211>I<0FC030707038703870380038
337 003000E00FC0007000380018001C601CF01CF018E03860701FC00E137F9211>I<006000E000E0
338 0160026006600C600860106020606060C060FFFC0060006000600060006003FC0E137F9211>I<
339 60607FC07F8044004000400040004F0070C040E0006000700070E070E070E06040E021C01F000C
340 137E9211>I<07C00C201070207060006000C000CF00D0C0E060C020C030C030C0304030602020
341 6010C00F000C137E9211>I<40007FFC7FF8401080108020004000800100010003000200060006
342 000E000E000E000E000E0004000E147E9311>I<0FC0107020186018601870183C303F600F800F
343 E031F06078C01CC00CC00CC00C601830300FC00E137F9211>I<0F00308060404060C020C030C0
344 30C0304030607030B00F30003000200060E040E08041003E000C137E9211>I
345 E /Fh 59 122 df<183C3C3C0404080810204080060C779C0D>39 D<1838783808081010204040
346 80050C7D830D>44 D<FFC0FFC0FFC00A037D890F>I<3078F06005047C830D>I<003C0000C60001
347 83000303000603000603800E03800C03801C03801C0300380700380700380700380700700E0070
348 0E00700E00700E00E01C00E01C00E01C00E03800E03800E03000C06000E0600060C0007180001E
349 0000111D7B9B15>48 D<00020006000C001C007C039C0038003800380038007000700070007000
350 E000E000E000E001C001C001C001C003800380038003800780FFF00F1C7C9B15>I<003C0000C3
351 000101800201800201C00441C00441C00841C00841C00841C01083801083801107000E0600000C
352 0000180000300000C0000100000600000800001001001002002002004006007E0C00C7F80083F8
353 0080E000121D7C9B15>I<0001800001C000038000038000038000030000070000070000060000
354 0E00000C00001C0000180000180000300000300000600000400000C600018E00010E00020E0006
355 1C000C1C00181C003F1C0040F800803F0000380000380000700000700000700000700000E00000
356 600012247E9B15>52 D<00C06000FFC001FF8001FE000100000100000200000200000200000200
357 00047800058C00060600040600080600000700000700000600000E00000E00700E00700C00E01C
358 0080180080380040300040600021C0001F0000131D7C9B15>I<09C04017E0801FE0803C610030
359 2700601A00400600400400800C0080080000180000100000300000600000600000600000C00000
360 C00001C0000180000380000380000300000700000700000700000E00000E00000C0000121D799B
361 15>55 D<001E000061000081800180800300C00300C006018006018006018007030007860003CC
362 0003F00001F000037800063C00081E00180E00300E00600600600600600600C00C00C00C00C018
363 0060100060200030C0000F0000121D7C9B15>I<003C0000C6000183000303000603000E03000C
364 03801C03801C03001C0300380700380700380700380F00380E00181E00181E000C6C00079C0000
365 1C00001800003800003000006000E0C000E0C0008180008600007C0000111D7B9B15>I<060F0F
366 06000000000000000000003078F06008127C910D>I<0000180000001800000038000000380000
367 007800000078000000B8000001B800000138000002380000023C0000041C0000041C0000081C00
368 00181C0000101C0000201C0000201C00007FFC0000401C0000801C0001801C0001001C0002001C
369 0002001C0004000E000C000E001C001E00FF00FFC01A1D7E9C1F>65 D<01FFFE00003C07800038
370 03C0003801C0003801C0003801C0007001C0007003C0007003C00070078000E0070000E00E0000
371 E03C0000FFF80001C01C0001C00E0001C00F0001C00F0003800F0003800F0003800F0003800F00
372 07001E0007001C0007003C00070078000E01E000FFFF80001A1C7D9B1D>I<0003F020001E0C60
373 003002E000E003C001C001C0038001C0070000C00E0000801E0000801C0000803C0000803C0000
374 00780000007800000078000000F0000000F0000000F0000000F0000000F0000400F0000400F000
375 0400F0000800700008007000100038002000180040000C0180000706000001F800001B1E7A9C1E
376 >I<01FFFE00003C0780003801C0003801C0003800E0003800E0007000F0007000700070007000
377 7000F000E000F000E000F000E000F000E000F001C001E001C001E001C001E001C001C0038003C0
378 03800380038007800380070007000E0007001C0007003800070070000E01C000FFFF00001C1C7D
379 9B1F>I<01FFFFE0003C00E0003800600038004000380040003800400070004000700040007020
380 400070200000E0400000E0400000E0C00000FFC00001C0800001C0800001C0800001C080000381
381 0100038001000380020003800200070004000700040007000C00070018000E007800FFFFF0001B
382 1C7D9B1C>I<01FFFFC0003C01C0003800C0003800800038008000380080007000800070008000
383 7020800070200000E0400000E0400000E0C00000FFC00001C0800001C0800001C0800001C08000
384 03810000038000000380000003800000070000000700000007000000070000000F000000FFF000
385 001A1C7D9B1B>I<0003F020001E0C60003002E000E003C001C001C0038001C0070000C00E0000
386 801E0000801C0000803C0000803C000000780000007800000078000000F0000000F0000000F001
387 FFC0F0001E00F0001C00F0001C00F0001C00F0001C00700038007000380038003800180078000C
388 0090000707100001F800001B1E7A9C20>I<01FFCFFE003C01E0003801C0003801C0003801C000
389 3801C00070038000700380007003800070038000E0070000E0070000E0070000FFFF0001C00E00
390 01C00E0001C00E0001C00E0003801C0003801C0003801C0003801C000700380007003800070038
391 00070038000F007800FFE7FF001F1C7D9B1F>I<01FFC0003C0000380000380000380000380000
392 700000700000700000700000E00000E00000E00000E00001C00001C00001C00001C00003800003
393 80000380000380000700000700000700000700000F0000FFE000121C7E9B10>I<007FF0000780
394 000700000700000700000700000E00000E00000E00000E00001C00001C00001C00001C00003800
395 00380000380000380000700000700000700000700060E000E0E000C0C00081C000838000470000
396 3C0000141D7B9B16>I<01FFC0FF003C003C003800300038004000380080003801000070020000
397 700400007010000070200000E0400000E0C00000E1C00000E5C00001C8E00001D0E00001E0E000
398 01C07000038070000380700003803800038038000700380007001C0007001C0007001C000F001E
399 00FFE0FF80201C7D9B20>I<01FFE0003C00003800003800003800003800007000007000007000
400 00700000E00000E00000E00000E00001C00001C00001C00001C000038008038008038008038010
401 0700100700300700600700E00E03C0FFFFC0151C7D9B1A>I<01FE0007F8003E000780002E000F
402 00002E001700002E001700002E002700004E002E00004E004E00004E004E00004E008E00008E01
403 1C00008E011C00008E021C00008E021C0001070438000107043800010708380001071038000207
404 107000020720700002072070000207407000040740E000040780E000040700E0000C0700E0001C
405 0601E000FF861FFC00251C7D9B25>I<01FC03FE001C0070003C0060002E0040002E0040002E00
406 40004700800047008000470080004380800083810000838100008181000081C1000101C2000101
407 C2000100E2000100E2000200E4000200740002007400020074000400380004003800040038000C
408 0018001C001000FF8010001F1C7D9B1F>I<0007F000001C1C0000700E0000E0070001C0038003
409 800380070003800E0003C01E0003C01C0003C03C0003C03C0003C0780003C0780003C0780003C0
410 F0000780F0000780F0000780F0000F00F0000F00F0000E00F0001E00F0003C0070003800700070
411 007800E0003801C0001C0380000E0E000003F800001A1E7A9C20>I<01FFFC00003C0700003803
412 80003801C0003801C0003801C0007003C0007003C0007003C00070038000E0078000E0070000E0
413 0E0000E0380001FFE00001C0000001C0000001C000000380000003800000038000000380000007
414 0000000700000007000000070000000F000000FFE000001A1C7D9B1C>I<01FFF800003C0E0000
415 38070000380380003803800038038000700780007007800070078000700F0000E00E0000E01C00
416 00E0700000FFC00001C0C00001C0600001C0700001C07000038070000380700003807000038070
417 000700F0000700F0400700F0400700F0800F007880FFE0790000001E001A1D7D9B1E>82
418 D<000F8400304C00403C00801801001803001803001806001006001006000007000007000003E0
419 0003FC0001FF00007F800007C00001C00001C00000C00000C02000C02000C06001806001806003
420 00600200F00400CC180083E000161E7D9C17>I<1FFFFFC01C0701C0300E00C0200E0080600E00
421 80400E0080401C0080801C0080801C0080001C0000003800000038000000380000003800000070
422 000000700000007000000070000000E0000000E0000000E0000000E0000001C0000001C0000001
423 C0000001C0000003C000007FFE00001A1C799B1E>I<7FF0FF800F001C000E0018000E0010000E
424 0010000E0010001C0020001C0020001C0020001C00200038004000380040003800400038004000
425 70008000700080007000800070008000E0010000E0010000E0010000E0020000E0020000E00400
426 00E00400006008000030300000104000000F800000191D779B1F>I<FF83FF0FF03C007001C038
427 007001803800F001003800F0020038017002003801700400380270040038027008001C04700800
428 1C047010001C087010001C087020001C107020001C107040001C207040001C207080001C407180
429 001C407100001C807200001D807200001D007400001E007400001E007800001C007800001C0070
430 0000180070000018006000001000600000241D779B29>87 D<01FF81FE001E00F0001C0060001E
431 0080000E0180000E0100000F02000007040000070800000790000003A0000003C0000001C00000
432 01C0000001E0000002E0000004E0000008F0000010700000207000006038000040380000803C00
433 01001C0002001C0006001E001E001E00FF80FFC01F1C7E9B1F>I<00FFFF8000F0070001C00E00
434 01801E0001001C0001003800020070000200E0000201C0000001C0000003800000070000000E00
435 00001C0000001C0000003800000070000000E0080001C0100001C0100003801000070020000E00
436 20001C0060003C00C0003801C00070078000FFFF8000191C7D9B19>90 D<03CC063C0C3C181C38
437 38303870387038E070E070E070E070E0E2C0E2C0E261E462643C380F127B9115>97
438 D<3F00070007000E000E000E000E001C001C001C001C0039C03E60383038307038703870387038
439 E070E070E070E060E0E0C0C0C1C0618063003C000D1D7B9C13>I<01F007080C08181C38383000
440 70007000E000E000E000E000E000E008E010602030C01F000E127B9113>I<001F800003800003
441 80000700000700000700000700000E00000E00000E00000E0003DC00063C000C3C00181C003838
442 00303800703800703800E07000E07000E07000E07000E0E200C0E200C0E20061E4006264003C38
443 00111D7B9C15>I<01E007100C1018083810701070607F80E000E000E000E000E000E008601060
444 2030C01F000D127B9113>I<0003C0000670000C70001C60001C00001C00003800003800003800
445 00380000380003FF8000700000700000700000700000700000E00000E00000E00000E00000E000
446 01C00001C00001C00001C00001C000038000038000038000030000030000070000C60000E60000
447 CC00007800001425819C0D>I<00F3018F030F06070E0E0C0E1C0E1C0E381C381C381C381C3838
448 30383038187818F00F700070007000E000E0C0C0E1C0C3007E00101A7D9113>I<0FC00001C000
449 01C0000380000380000380000380000700000700000700000700000E78000E8C000F0E000E0E00
450 1C0E001C0E001C0E001C0E00381C00381C00381C00383800703880703880707080707100E03200
451 601C00111D7D9C15>I<01800380010000000000000000000000000000001C002600470047008E
452 008E000E001C001C001C0038003800710071007100720072003C00091C7C9B0D>I<0FC00001C0
453 0001C0000380000380000380000380000700000700000700000700000E0F000E11000E23800E43
454 801C83001C80001D00001E00003F800039C00038E00038E00070E20070E20070E20070E400E064
455 00603800111D7D9C13>107 D<1F800380038007000700070007000E000E000E000E001C001C00
456 1C001C0038003800380038007000700070007000E400E400E400E40068003800091D7C9C0B>I<
457 3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701C01C0701
458 C01C0701C01C070380380E0388380E0388380E0708380E0710701C0320300C01C01D127C9122>
459 I<3C3C002646004687004707008E07008E07000E07000E07001C0E001C0E001C0E001C1C00381C
460 40381C40383840383880701900300E0012127C9117>I<01E007180C0C180C380C300E700E700E
461 E01CE01CE01CE018E038E030E06060C031801E000F127B9115>I<07870004D98008E0C008E0C0
462 11C0E011C0E001C0E001C0E00381C00381C00381C00381800703800703000707000706000E8C00
463 0E70000E00000E00001C00001C00001C00001C00003C0000FF8000131A7F9115>I<3C3C26C246
464 8747078E068E000E000E001C001C001C001C0038003800380038007000300010127C9112>114
465 D<01F006080C080C1C18181C001F001FC00FF007F0007800386030E030C030806060C01F000E12
466 7D9111>I<00C001C001C001C00380038003800380FFE00700070007000E000E000E000E001C00
467 1C001C001C00384038403840388019000E000B1A7D990E>I<1E0300270700470700470700870E
468 00870E000E0E000E0E001C1C001C1C001C1C001C1C003838803838801838801839001C5900078E
469 0011127C9116>I<1E06270E470E4706870287020E020E021C041C041C041C0818083808181018
470 200C4007800F127C9113>I<1E01832703874703874703838707018707010E07010E07011C0E02
471 1C0E021C0E021C0E04180C04181C04181C081C1C100C263007C3C018127C911C>I<070E001991
472 0010E38020E38041C30041C00001C00001C000038000038000038000038000070200670200E704
473 00CB04008B080070F00011127D9113>I<1E03270747074707870E870E0E0E0E0E1C1C1C1C1C1C
474 1C1C38383838183818381C7007F00070007000E0E0C0E1C0818047003C00101A7C9114>I
475 E /Fi 5 104 df<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003
476 C010107E9115>15 D<0000030000000003000000000180000000018000000000C0000000006000
477 7FFFFFF000FFFFFFF8000000000E00000000070000000001E0000000007800000001E000000003
478 8000000006000000001C00FFFFFFF8007FFFFFF0000000006000000000C0000000018000000001
479 80000000030000000003000025187E952A>41 D<0000600000600000C00000C000018000018000
480 0180000300000300000600000600000C00000C0000180000180000180000300000300000600000
481 600000C00000C0000180000180000300000300000300000600000600000C00000C000018000018
482 0000300000300000300000600000600000C0000040000013287A9D00>54
483 D<003C00E001C00180038003800380038003800380038003800380038003800380038003000700
484 1C00F0001C00070003000380038003800380038003800380038003800380038003800380018001
485 C000E0003C0E297D9E15>102 D<F0001C00070003000380038003800380038003800380038003
486 800380038003800380018001C000E0003C00E001C0018003800380038003800380038003800380
487 03800380038003800380030007001C00F0000E297D9E15>I E /Fj 57 123
488 df<3803807C07C0FE0FE0FF0FF0FF0FF07F07F03B03B00300300300300700700600600600600C
489 00C01C01C018018070070020020014117EA21D>34 D<387CFEFFFF7F3B03030706060C1C187020
490 08117C8610>44 D<FFFCFFFCFFFCFFFC0E047F8C13>I<387CFEFEFE7C3807077C8610>I<00FE00
491 07FFC00F83E01F01F03E00F83E00F87C007C7C007C7C007CFC007CFC007EFC007EFC007EFC007E
492 FC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C7C007C3E00F8
493 3E00F81F01F00F83E007FFC000FE0017207E9F1C>48 D<00180000780001F800FFF800FFF80001
494 F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
495 F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07F
496 FFE013207C9F1C>I<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8FE01F87C01F8
497 3803F80003F80003F00003F00007E00007C0000F80001F00003E0000380000700000E01801C018
498 0380180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF015207D9F1C>I<00FE0007FF
499 C00F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F00003E00007C0001F8001FE
500 0001FF000007C00001F00001F80000FC0000FC3C00FE7E00FEFF00FEFF00FEFF00FEFF00FC7E01
501 FC7801F81E07F00FFFC001FE0017207E9F1C>I<0000E00001E00003E00003E00007E0000FE000
502 1FE0001FE00037E00077E000E7E001C7E00187E00307E00707E00E07E00C07E01807E03807E070
503 07E0E007E0FFFFFEFFFFFE0007E00007E00007E00007E00007E00007E00007E000FFFE00FFFE17
504 207E9F1C>I<1000201E01E01FFFC01FFF801FFF001FFE001FF8001BC000180000180000180000
505 18000019FC001FFF001E0FC01807E01803E00003F00003F00003F80003F83803F87C03F8FE03F8
506 FE03F8FC03F0FC03F07007E03007C01C1F800FFF0003F80015207D9F1C>I<001F8000FFE003F0
507 7007C0F00F01F81F01F83E01F83E01F87E00F07C00007C0000FC0800FC7FC0FCFFE0FD80F0FF00
508 F8FE007CFE007CFC007EFC007EFC007EFC007E7C007E7C007E7C007E3C007C3E007C1E00F80F00
509 F00783E003FFC000FF0017207E9F1C>I<6000007800007FFFFE7FFFFE7FFFFC7FFFF87FFFF87F
510 FFF0E00060E000C0C00180C00300C00300000600000C00001C0000180000380000780000780000
511 F00000F00000F00001F00001F00001F00003F00003F00003F00003F00003F00003F00003F00001
512 E00017227DA11C>I<00FE0003FFC00703E00E00F01C00F01C00783C00783E00783F00783F8078
513 3FE0F01FF9E01FFFC00FFF8007FFC003FFE007FFF01E7FF83C1FFC7807FC7801FEF000FEF0003E
514 F0001EF0001EF0001CF8001C7800383C00381F01F00FFFC001FF0017207E9F1C>I<01FE0007FF
515 800F83E01E01F03E00F07C00F87C0078FC007CFC007CFC007CFC007EFC007EFC007EFC007E7C00
516 FE7C00FE3E01FE1E037E0FFE7E07FC7E00207E00007C00007C1E007C3F00F83F00F83F00F03F01
517 E01E03C01C0F800FFE0003F80017207E9F1C>I<07FC001FFF00380F807007C0F807E0FC07E0FC
518 07E0FC07E07807E0000FC0001F80001F00003C0000780000700000E00000E00000C00000C00000
519 C00000C00000C00000C00000000000000000000000000000000001C00003E00007F00007F00007
520 F00003E00001C00013237DA21A>63 D<000070000000007000000000F800000000F800000000F8
521 00000001FC00000001FC00000003FE00000003FE00000003FE00000006FF000000067F0000000E
522 7F8000000C3F8000000C3F800000183FC00000181FC00000381FE00000300FE00000300FE00000
523 600FF000006007F00000E007F80000FFFFF80000FFFFF800018001FC00018001FC00038001FE00
524 030000FE00030000FE000600007F000600007F00FFE00FFFF8FFE00FFFF825227EA12A>65
525 D<FFFFFF8000FFFFFFE00007F001F80007F000FC0007F0007E0007F0007E0007F0007F0007F000
526 7F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FE0007F000FC0007F003F80007FF
527 FFF00007FFFFF00007F001FC0007F0007E0007F0003F0007F0003F8007F0001F8007F0001FC007
528 F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0003F8007F0003F8007F0007F00
529 07F001FE00FFFFFFF800FFFFFFC00022227EA128>I<0003FE0080001FFF818000FF01E38001F8
530 003F8003E0001F8007C0000F800F800007801F800007803F000003803F000003807F000001807E
531 000001807E00000180FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000
532 FE00000000FE000000007E000000007E000001807F000001803F000001803F000003801F800003
533 000F8000030007C000060003F0000C0001F800380000FF00F000001FFFC0000003FE000021227D
534 A128>I<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F0003F0007F0001F8007F0000FC0
535 07F00007E007F00007E007F00007F007F00003F007F00003F007F00003F007F00003F807F00003
536 F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F000
537 03F007F00003F007F00003F007F00007E007F00007E007F0000FC007F0001F8007F0003F0007F0
538 007E0007F003FC00FFFFFFF000FFFFFF800025227EA12B>I<FFFFFFFCFFFFFFFC07F000FC07F0
539 003C07F0001C07F0000C07F0000E07F0000E07F0000607F0180607F0180607F0180607F0180007
540 F0380007F0780007FFF80007FFF80007F0780007F0380007F0180007F0180007F0180307F01803
541 07F0000307F0000607F0000607F0000607F0000E07F0000E07F0001E07F0003E07F001FCFFFFFF
542 FCFFFFFFFC20227EA125>I<FFFFFFF8FFFFFFF807F001F807F0007807F0003807F0001807F000
543 1C07F0001C07F0000C07F0000C07F0180C07F0180C07F0180007F0180007F0380007F0780007FF
544 F80007FFF80007F0780007F0380007F0180007F0180007F0180007F0180007F0000007F0000007
545 F0000007F0000007F0000007F0000007F0000007F00000FFFFE000FFFFE0001E227EA123>I<FF
546 FF83FFFEFFFF83FFFE07F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC0
547 07F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007FFFFFF
548 C007FFFFFFC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F000
549 1FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0
550 001FC0FFFF83FFFEFFFF83FFFE27227EA12C>72 D<FFFFE0FFFFE003F80003F80003F80003F800
551 03F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800
552 03F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800
553 FFFFE0FFFFE013227FA115>I<FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F0
554 000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
555 F0000007F0000007F0000007F0000007F0000007F0001807F0001807F0001807F0001807F00038
556 07F0003807F0007007F0007007F000F007F001F007F007F0FFFFFFF0FFFFFFF01D227EA122>76
557 D<FFF000000FFFFFF800001FFF07F800001FE006FC000037E006FC000037E006FC000037E0067E
558 000067E0067E000067E0063F0000C7E0063F0000C7E0061F800187E0061F800187E0060FC00307
559 E0060FC00307E0060FC00307E00607E00607E00607E00607E00603F00C07E00603F00C07E00601
560 F81807E00601F81807E00601F81807E00600FC3007E00600FC3007E006007E6007E006007E6007
561 E006003FC007E006003FC007E006001F8007E006001F8007E006001F8007E006000F0007E0FFF0
562 0F00FFFFFFF00600FFFF30227EA135>I<0007FC0000003FFF800000FC07E00003F001F80007E0
563 00FC000FC0007E001F80003F001F80003F003F00001F803F00001F807F00001FC07E00000FC07E
564 00000FC0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0
565 FE00000FE0FE00000FE07E00000FC07F00001FC07F00001FC03F00001F803F80003F801F80003F
566 000FC0007E0007E000FC0003F001F80000FC07E000003FFF80000007FC000023227DA12A>79
567 D<FFFFFF00FFFFFFE007F007F007F001FC07F000FC07F0007E07F0007E07F0007F07F0007F07F0
568 007F07F0007F07F0007F07F0007E07F0007E07F000FC07F001FC07F007F007FFFFE007FFFF0007
569 F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000
570 07F0000007F0000007F00000FFFF8000FFFF800020227EA126>I<FFFFFE0000FFFFFFC00007F0
571 07F00007F001F80007F000FC0007F0007E0007F0007F0007F0007F0007F0007F0007F0007F0007
572 F0007F0007F0007F0007F0007E0007F000FC0007F001F80007F007F00007FFFFC00007FFFF8000
573 07F00FE00007F007F00007F003F80007F001FC0007F001FC0007F001FC0007F001FC0007F001FC
574 0007F001FC0007F001FC0007F001FC0007F001FC0607F000FE0607F000FF0CFFFF803FF8FFFF80
575 0FF027227EA12A>82 D<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000CF8000CFC00
576 0CFC0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF00007F0000
577 3F00003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF8018227DA11F
578 >I<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F80180E003F801C0E003
579 F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F800000003F800000003F8000000
580 03F800000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
581 0003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F800
582 000003F8000003FFFFF80003FFFFF80022227EA127>I<FFFF803FFCFFFF803FFC07F000018007
583 F000018007F000018007F000018007F000018007F000018007F000018007F000018007F0000180
584 07F000018007F000018007F000018007F000018007F000018007F000018007F000018007F00001
585 8007F000018007F000018007F000018007F000018007F000018007F000018007F000018003F000
586 030003F800030001F800060000FC000E00007E001C00003F80F800000FFFE0000001FF00002622
587 7EA12B>I<FFFF0FFFF01FFEFFFF0FFFF01FFE0FF000FF0000E007F0007F0000C007F0007F0000
588 C003F8007F80018003F8003F80018003FC003F80038001FC003FC0030001FC003FC0030000FE00
589 7FE0060000FE006FE0060000FF006FE00600007F00C7F00C00007F00C7F00C00007F80C7F81C00
590 003F8183F81800003F8183F81800001FC383FC3000001FC301FC3000001FE301FC3000000FE600
591 FE6000000FE600FE6000000FF600FFE0000007FC007FC0000007FC007FC0000003FC007F800000
592 03F8003F80000003F8003F80000001F0001F00000001F0001F00000000F0001E00000000E0000E
593 00000000E0000E000037227FA13A>87 D<0400400E00E0180180380380300300600600600600E0
594 0E00C00C00C00C00DC0DC0FE0FE0FF0FF0FF0FF07F07F03E03E01C01C014117AA21D>92
595 D<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1F03F01
596 F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B>97
597 D<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00
598 00001F0000001F0000001F0000001F0FE0001F3FF8001FF07C001F801E001F001F001F000F801F
599 000F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000F80
600 1F001F801F801F001FC03E001EE07C001C3FF800180FC0001A237EA21F>I<00FF8007FFE00F83
601 F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00
602 007E00003E00301F00600FC0E007FF8000FE0014167E9519>I<0001FE000001FE0000003E0000
603 003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E00
604 01FC3E0007FFBE000F81FE001F007E003E003E007E003E007C003E00FC003E00FC003E00FC003E
605 00FC003E00FC003E00FC003E00FC003E00FC003E007C003E007C003E003E007E001E00FE000F83
606 BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC
607 00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003
608 FFC000FF0015167E951A>I<003F8000FFC001E3E003C7E007C7E00F87E00F83C00F80000F8000
609 0F80000F80000F80000F8000FFFC00FFFC000F80000F80000F80000F80000F80000F80000F8000
610 0F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80007FF8007FF800
611 13237FA211>I<03FC1E0FFF7F1F0F8F3E07CF3C03C07C03E07C03E07C03E07C03E07C03E03C03
612 C03E07C01F0F801FFF0013FC003000003000003800003FFF801FFFF00FFFF81FFFFC3800FC7000
613 3EF0001EF0001EF0001EF0001E78003C7C007C3F01F80FFFE001FF0018217E951C>I<FF000000
614 FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
615 001F0000001F0000001F07E0001F1FF8001F307C001F403C001F803E001F803E001F003E001F00
616 3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
617 003E001F003E001F003E00FFE1FFC0FFE1FFC01A237EA21F>I<1C003E007F007F007F003E001C
618 000000000000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F00
619 1F001F001F001F001F001F001F001F00FFE0FFE00B247EA310>I<FF000000FF0000001F000000
620 1F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
621 001F00FF801F00FF801F0038001F0060001F01C0001F0380001F0700001F0E00001F1C00001F7E
622 00001FFF00001FCF00001F0F80001F07C0001F03E0001F01E0001F01F0001F00F8001F007C001F
623 003C00FFE0FFC0FFE0FFC01A237EA21E>107 D<FF00FF001F001F001F001F001F001F001F001F
624 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
625 1F001F001F001F00FFE0FFE00B237EA210>I<FF07F007F000FF1FFC1FFC001F303E303E001F40
626 3E403E001F801F801F001F801F801F001F001F001F001F001F001F001F001F001F001F001F001F
627 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
628 1F001F001F001F001F001F001F001F001F001F001F00FFE0FFE0FFE0FFE0FFE0FFE02B167E9530
629 >I<FF07E000FF1FF8001F307C001F403C001F803E001F803E001F003E001F003E001F003E001F
630 003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00
631 1F003E00FFE1FFC0FFE1FFC01A167E951F>I<00FE0007FFC00F83E01E00F03E00F87C007C7C00
632 7C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83
633 E007FFC000FE0017167E951C>I<FF0FE000FF3FF8001FF07C001F803E001F001F001F001F801F
634 001F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F001F80
635 1F001F801F803F001FC03E001FE0FC001F3FF8001F0FC0001F0000001F0000001F0000001F0000
636 001F0000001F0000001F0000001F000000FFE00000FFE000001A207E951F>I<FE1F00FE3FC01E
637 67E01EC7E01E87E01E87E01F83C01F00001F00001F00001F00001F00001F00001F00001F00001F
638 00001F00001F00001F00001F0000FFF000FFF00013167E9517>114 D<0FF3003FFF00781F0060
639 0700E00300E00300F00300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780C00380E0
640 0380E00380F00700FC0E00EFFC00C7F00011167E9516>I<018000018000018000018000038000
641 0380000780000780000F80003F8000FFFF00FFFF000F80000F80000F80000F80000F80000F8000
642 0F80000F80000F80000F80000F80000F81800F81800F81800F81800F81800F830007C30003FE00
643 00F80011207F9F16>I<FF01FE00FF01FE001F003E001F003E001F003E001F003E001F003E001F
644 003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00
645 1F007E001F00FE000F81BE0007FF3FC001FC3FC01A167E951F>I<FFE01FE0FFE01FE00F800600
646 0F8006000FC00E0007C00C0007E01C0003E0180003E0180001F0300001F0300000F8600000F860
647 00007CC000007CC000007FC000003F8000003F8000001F0000001F0000000E0000000E00001B16
648 7F951E>I<FFE7FF07F8FFE7FF07F81F007800C00F807801800F807C01800F807C018007C07E03
649 0007C0DE030007E0DE070003E0DF060003E18F060001F18F0C0001F38F8C0001FB079C0000FB07
650 D80000FE03D800007E03F000007E03F000007C01F000003C01E000003800E000001800C0002516
651 7F9528>I<FFE07FC0FFE07FC00F801C0007C0380003E0700003F0600001F8C00000F98000007F
652 8000003F0000001F0000001F8000003FC0000037C0000063E00000C1F00001C0F8000380FC0007
653 007E000E003E00FF80FFE0FF80FFE01B167F951E>I<FFE01FE0FFE01FE00F8006000F8006000F
654 C00E0007C00C0007E01C0003E0180003E0180001F0300001F0300000F8600000F86000007CC000
655 007CC000007FC000003F8000003F8000001F0000001F0000000E0000000E0000000C0000000C00
656 000018000078180000FC380000FC300000FC60000069C000007F8000001F0000001B207F951E>
657 I<7FFFF07FFFF07C03E07007C0600FC0E01F80C01F00C03E00C07E0000FC0000F80001F00003F0
658 3007E03007C0300F80701F80703F00603E00E07C03E0FFFFE0FFFFE014167E9519>I
659 E /Fk 44 127 df<E038F078F078F078F078F078F078F078E038E03860300D0B7C9816>34
660 D<00C00001C00001C00001C00007F0001FFC003FFE007DCF0071C780E1C380E1C780E1C780F1C3
661 0079C0003FC0001FF00007FC0001FE0001CF0001C70061C380F1C380F1C380E1C38071C70079DF
662 003FFE001FF80007E00001C00001C00000C00011207E9C16>36 D<00E001E0038007000E001C00
663 1C0038003800700070007000E000E000E000E000E000E000E000E000E000700070007000380038
664 001C001C000E000700038001E000E00B217A9C16>40 D<C000E000700038001C000E000E000700
665 070003800380038001C001C001C001C001C001C001C001C001C0038003800380070007000E000E
666 001C0038007000E000C0000A217B9C16>I<FFFF80FFFF80FFFF8011037E8D16>45
667 D<70F8F8F8700505788416>I<000180000380000380000700000700000E00000E00001C00001C
668 0000380000380000700000700000E00000E00001C00001C0000380000380000700000700000E00
669 000E00001C00001C0000380000380000700000700000E00000E00000C0000011207E9C16>I<03
670 E0000FF8001FFC001E3C00380E00780F00700700700700E00380E00380E00380E00380E00380E0
671 0380E00380E00380F00780700700700700780F003C1E001E3C001FFC000FF80003E00011197E98
672 16>I<70F8F8F870000000000000000070F8F8F8700512789116>58 D<7FFF00FFFF80FFFF8000
673 0000000000000000000000000000FFFF80FFFF807FFF00110B7E9116>61
674 D<00F80003FC0007FE000F07001C3F80387F8078FF8071C3C071C3C0E381C0E381C0E381C0E381
675 C0E381C0E381C0E381C071C38071C38078FF00387E001C3C000F03C007FFC003FF0000FC001219
676 7E9816>64 D<00E00001F00001F00001B00001B00003B80003B80003B800031800071C00071C00
677 071C00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007F1FC0FF1FE0
678 7F1FC013197F9816>I<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C
679 001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00E07FFF
680 E0FFFFE07FFFE013197F9816>69 D<7F1FC0FFBFE07F1FC01C07001C07001C07001C07001C0700
681 1C07001C07001FFF001FFF001FFF001C07001C07001C07001C07001C07001C07001C07001C0700
682 1C07007F1FC0FFBFE07F1FC013197F9816>72 D<FC07E0FE0FE0FE0FE03A0B803B1B803B1B803B
683 1B803B1B803B1B803BBB8039B38039B38039B38039B38039F38038E38038E38038038038038038
684 0380380380380380FE0FE0FE0FE0FE0FE013197F9816>77 D<7FE000FFF8007FFC001C1E001C0F
685 001C07001C07001C07001C07001C0F001C1E001FFC001FF8001FFC001C1C001C0E001C0E001C0E
686 001C0E001C0E201C0E701C0E707F07E0FF87E07F03C014197F9816>82 D<07E3001FFF003FFF00
687 781F00F00700E00700E00700E00000F000007800003F80001FF00007FC0000FE00000F00000700
688 000380000380600380E00380E00700F80F00FFFE00FFFC00C7F00011197E9816>I<7F07F0FF8F
689 F87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01
690 C01C01C01C01C01C01C01C01C00E03800E038007070007FF0003FE0000F8001519809816>85
691 D<FE0FE0FF1FE0FE0FE01C07001C07000E0E000E0E00071C00071C00071C0003B80003B80001F0
692 0001F00000E00000E00000E00000E00000E00000E00000E00000E00003F80007FC0003F8001319
693 7F9816>89 D<1FE0003FF0007FF800783C00300E00000E00000E0003FE001FFE003E0E00700E00
694 E00E00E00E00E00E00783E007FFFE03FE7E00F83E013127E9116>97 D<7E0000FE00007E00000E
695 00000E00000E00000E00000E3E000EFF000FFF800F83C00F00E00E00E00E00700E00700E00700E
696 00700E00700E00700E00E00F01E00F83C00FFF800EFF00063C001419809816>I<03F80FFC1FFE
697 3C1E780C7000E000E000E000E000E000F000700778073E0E1FFC0FF803F010127D9116>I<003F
698 00007F00003F0000070000070000070000070003C7000FF7001FFF003C1F00780F00700700E007
699 00E00700E00700E00700E00700E00700700F00700F003C1F001FFFE00FE7F007C7E014197F9816
700 >I<03E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03F010
701 127D9116>I<001F00007F8000FF8001E78001C30001C00001C0007FFF00FFFF00FFFF0001C000
702 01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0003FFE007FFF00
703 3FFE0011197F9816>I<03E3C007F7E00FFFE01C1CC0380E00380E00380E00380E00380E001C1C
704 000FF8001FF0001BE0003800001800001FFC001FFF003FFF807803C0E000E0E000E0E000E0E000
705 E07001C07C07C03FFF800FFE0003F800131C7F9116>I<7E0000FE00007E00000E00000E00000E
706 00000E00000E3C000EFE000FFF000F87800F03800E03800E03800E03800E03800E03800E03800E
707 03800E03800E03800E03807FC7F0FFE7F87FC7F01519809816>I<018003C003C0018000000000
708 000000007FC07FC07FC001C001C001C001C001C001C001C001C001C001C001C001C07FFFFFFF7F
709 FF101A7D9916>I<7E0000FE00007E00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E
710 0F000E1E000E3C000E78000EF0000FF0000FF8000FBC000F1E000E0E000E07000E07807F87F0FF
711 CFF07F87F01419809816>107 D<FFC000FFC000FFC00001C00001C00001C00001C00001C00001
712 C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
713 C000FFFF80FFFF80FFFF8011197E9816>I<F9C380FFEFC0FFFFE03C78E03C78E03870E03870E0
714 3870E03870E03870E03870E03870E03870E03870E03870E0FE7CF8FE7CF8FE3C781512809116>
715 I<7E3C00FEFE007FFF000F87800F03800E03800E03800E03800E03800E03800E03800E03800E03
716 800E03800E03807FC7F0FFE7F87FC7F01512809116>I<03E0000FF8001FFC003C1E00780F0070
717 0700E00380E00380E00380E00380E00380F00780700700780F003C1E001FFC000FF80003E00011
718 127E9116>I<7E3E00FEFF007FFF800F83C00F00E00E00E00E00700E00700E00700E00700E0070
719 0E00700E00E00F01E00F83C00FFF800EFF000E3C000E00000E00000E00000E00000E00000E0000
720 7FC000FFE0007FC000141B809116>I<FF0FC0FF3FE0FF7FE007F04007C0000780000780000700
721 00070000070000070000070000070000070000070000FFFC00FFFC00FFFC0013127F9116>114
722 D<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE00EF00EF81EFFFCFFF8C7E00F12
723 7D9116>I<0300000700000700000700000700007FFF00FFFF00FFFF0007000007000007000007
724 000007000007000007000007010007038007038007038007870003FE0001FC0000F80011177F96
725 16>I<7E1F80FE3F807E1F800E03800E03800E03800E03800E03800E03800E03800E03800E0380
726 0E03800E03800E0F800FFFF007FBF803E3F01512809116>I<7F1FC0FF1FE07F1FC01C07001E0F
727 000E0E000E0E000E0E00071C00071C00071C00071C0003B80003B80003B80001F00001F00000E0
728 0013127F9116>I<FF1FE0FFBFE0FF1FE038038038038038038038038038E38019F30019F30019
729 B3001DB7001DB7001DB7001DB7000F1E000F1E000F1E0013127F9116>I<7F1FC07F3FC07F1FC0
730 0F1C00073C0003B80003F00001F00000E00001E00001F00003B800073C00071C000E0E007F1FC0
731 FF3FE07F1FC013127F9116>I<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C
732 00071C00039C00039C0003980001B80001B80000F00000F00000F00000E00000E00000E00001C0
733 0079C0007BC0007F80003F00003C0000131B7F9116>I<3FFFC07FFFC07FFFC0700780700F0070
734 1E00003C0000780001F00003E0000780000F00001E01C03C01C07801C0FFFFC0FFFFC0FFFFC012
735 127F9116>I<1C303F78FFF8F7E061C00D057C9816>126 D E /Fl 86 125
736 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01C0000E01C0000E
737 01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C000
738 0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0007F87FC
739 001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E0000
740 0E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
741 0E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<007FC001C1C00303C00703C00E01
742 C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01
743 C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17
744 >I<003F07E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E000000E00
745 E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C000E
746 00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00
747 0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D809C23>I<C0C0
748 61803F000C000A047B9915>20 D<60F0F0F0F0F0F0F06060606060606060606060606000000000
749 0060F0F060041E7C9D0C>33 D<6060F0F0F8F86868080808080808101010102020404080800D0C
750 7F9C15>I<0080008007E01898308460824081C087C08FC08FC086E080F0807E803FC01FF00FF8
751 03FC00BE008E00876087F083F083E0838082408240842088189007E00080008010217E9E15>36
752 D<00E0000001900000030800000308000007080000070800000708000007080000071000000710
753 0000072000000740000003C03FE003800F00038006000380040005C0040009C0080010E0100030
754 E010006070200060702000E0384000E03C4000E01C8000E00F0020E0070020700780403009C040
755 1830E18007C03E001B1F7E9D20>38 D<60F0F8680808081010204080050C7C9C0C>I<00400080
756 0100020006000C000C0018001800300030007000600060006000E000E000E000E000E000E000E0
757 00E000E000E000E000E000600060006000700030003000180018000C000C000600020001000080
758 00400A2A7D9E10>I<800040002000100018000C000C0006000600030003000380018001800180
759 01C001C001C001C001C001C001C001C001C001C001C001C0018001800180038003000300060006
760 000C000C00180010002000400080000A2A7E9E10>I<60F0F0701010101020204080040C7C830C>
761 44 D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<00010003000600060006000C000C00
762 0C0018001800180030003000300060006000C000C000C001800180018003000300030006000600
763 0C000C000C00180018001800300030003000600060006000C000C00010297E9E15>I<03C00C30
764 1818300C300C700E60066006E007E007E007E007E007E007E007E007E007E007E007E007E00760
765 066006700E300C300C18180C3007E0101D7E9B15>I<030007003F00C700070007000700070007
766 00070007000700070007000700070007000700070007000700070007000700070007000F80FFF8
767 0D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C001C0038
768 0070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07E01830201C201C
769 781E780E781E381E001C001C00180030006007E00030001C001C000E000F000F700FF80FF80FF8
770 0FF00E401C201C183007E0101D7E9B15>I<000C00000C00001C00003C00003C00005C0000DC00
771 009C00011C00031C00021C00041C000C1C00081C00101C00301C00201C00401C00C01C00FFFFC0
772 001C00001C00001C00001C00001C00001C00001C0001FFC0121C7F9B15>I<300C3FF83FF03FC0
773 20002000200020002000200023E024302818301C200E000E000F000F000F600FF00FF00FF00F80
774 0E401E401C2038187007C0101D7E9B15>I<00F0030C06040C0E181E301E300C700070006000E3
775 E0E430E818F00CF00EE006E007E007E007E007E007600760077006300E300C18180C3003E0101D
776 7E9B15>I<4000007FFF807FFF007FFF0040020080040080040080080000100000100000200000
777 600000400000C00000C00001C00001800001800003800003800003800003800007800007800007
778 8000078000078000078000030000111D7E9B15>I<03E00C301008200C20066006600660067006
779 780C3E083FB01FE007F007F818FC307E601E600FC007C003C003C003C00360026004300C1C1007
780 E0101D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007E007E0076007700F30
781 0F18170C2707C700060006000E300C780C78187010203030C00F80101D7E9B15>I<60F0F06000
782 00000000000000000060F0F06004127C910C>I<60F0F0600000000000000000000060F0F07010
783 10101020204080041A7C910C>I<7FFFFFC0FFFFFFE00000000000000000000000000000000000
784 000000000000000000000000000000FFFFFFE07FFFFFC01B0C7E8F20>61
785 D<003F800000C0600003001800040004000800020010000100201F00802070808040E0404040C0
786 384041C038408180382083803820838038208380382083803820838038208180382041C0382040
787 C0384040E0784020709880201F0F00100000000800000004000000030001E000C01F80003FF000
788 1B1D7E9C20>64 D<000600000006000000060000000F0000000F0000000F000000178000001780
789 00001780000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F0000180
790 F8000100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C001F001E
791 001F00FF80FFF01C1D7F9C1F>I<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F
792 001E0F001C0F003C0F00780F01F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F000F0F
793 000F0F000F0F001E0F001E0F003C0F0078FFFFE0181C7E9B1D>I<001F808000E0618001801980
794 070007800E0003801C0003801C00018038000180780000807800008070000080F0000000F00000
795 00F0000000F0000000F0000000F0000000F0000000F00000007000008078000080780000803800
796 00801C0001001C0001000E000200070004000180080000E03000001FC000191E7E9C1E>I<FFFF
797 C0000F00F0000F003C000F000E000F0007000F0007000F0003800F0003C00F0001C00F0001C00F
798 0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001C00F0001C0
799 0F0003C00F0003800F0007800F0007000F000E000F001C000F007000FFFFC0001B1C7E9B20>I<
800 FFFFFC0F003C0F000C0F00040F00040F00060F00020F00020F02020F02000F02000F02000F0600
801 0FFE000F06000F02000F02000F02000F02010F00010F00020F00020F00020F00060F00060F000C
802 0F003CFFFFFC181C7E9B1C>I<FFFFF80F00780F00180F00080F00080F000C0F00040F00040F02
803 040F02000F02000F02000F06000FFE000F06000F02000F02000F02000F02000F00000F00000F00
804 000F00000F00000F00000F00000F8000FFF800161C7E9B1B>I<001F808000E061800180198007
805 0007800E0003801C0003801C00018038000180780000807800008070000080F0000000F0000000
806 F0000000F0000000F0000000F0000000F000FFF0F0000F80700007807800078078000780380007
807 801C0007801C0007800E00078007000B800180118000E06080001F80001C1E7E9C21>I<FFF3FF
808 C00F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F00
809 3C000F003C000F003C000FFFFC000F003C000F003C000F003C000F003C000F003C000F003C000F
810 003C000F003C000F003C000F003C000F003C000F003C000F003C00FFF3FFC01A1C7E9B1F>I<FF
811 F00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
812 0F000F000F000F000F000F000F00FFF00C1C7F9B0F>I<1FFF00F8007800780078007800780078
813 00780078007800780078007800780078007800780078007800787078F878F878F878F0F040E021
814 C01F00101D7F9B15>I<FFF03FE00F000F000F000C000F0008000F0010000F0020000F0040000F
815 0080000F0100000F0200000F0400000F0E00000F1F00000F2F00000F2780000F4780000F83C000
816 0F01E0000F01E0000F00F0000F00F8000F0078000F003C000F003C000F001E000F001F000F001F
817 80FFF07FF01C1C7E9B20>I<FFF8000F80000F00000F00000F00000F00000F00000F00000F0000
818 0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00080F00080F00080F0018
819 0F00180F00100F00300F00700F01F0FFFFF0151C7E9B1A>I<FF8000FF800F8000F8000F8000F8
820 000BC00178000BC00178000BC001780009E002780009E002780008F004780008F004780008F004
821 7800087808780008780878000878087800083C107800083C107800083C107800081E207800081E
822 207800081E207800080F407800080F40780008078078000807807800080780780008030078001C
823 03007800FF8307FF80211C7E9B26>I<FF007FC00F800E000F8004000BC0040009E0040009E004
824 0008F0040008F8040008780400083C0400083C0400081E0400080F0400080F0400080784000807
825 C4000803C4000801E4000801E4000800F40008007C0008007C0008003C0008003C0008001C0008
826 000C001C000C00FF8004001A1C7E9B1F>I<003F800000E0E0000380380007001C000E000E001C
827 0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0
828 F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C0380003803C0007801C0007
829 000E000E0007001C000380380000E0E000003F80001B1E7E9C20>I<FFFF800F00E00F00780F00
830 3C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F003C0F00780F00E00FFF800F00000F00
831 000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000FFF000171C7E9B1C
832 >I<FFFF00000F01E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E000F
833 001C000F003C000F0078000F01E0000FFF00000F03C0000F00E0000F00F0000F0078000F007800
834 0F0078000F0078000F0078000F0078000F0078100F0078100F0038100F003C20FFF01C20000007
835 C01C1D7E9B1F>82 D<07E0801C1980300580700380600180E00180E00080E00080E00080F00000
836 F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C0
837 8001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F00
838 C0400F0040400F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F0000000F
839 0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
840 0F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B1E>I<FFF07FC00F000E000F
841 0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F000400
842 0F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004
843 000700080007800800038010000180100000C020000070C000001F00001A1D7E9B1F>I<FFE00F
844 F01F0003C00F0001800F0001000F800300078002000780020003C0040003C0040003C0040001E0
845 080001E0080001F0080000F0100000F0100000F830000078200000782000003C4000003C400000
846 3C4000001E8000001E8000001F8000000F0000000F00000006000000060000000600001C1D7F9B
847 1F>I<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F00100F001F001007801F002007
848 80278020078027802003C027804003C043C04003C043C04003E043C04001E081E08001E081E080
849 01E081E08000F100F10000F100F10000F100F100007900FA00007A007A00007A007A00003E007C
850 00003C003C00003C003C00003C003C00001800180000180018000018001800281D7F9B2B>I<7F
851 F0FFC00FC03E000780180003C0180003E0100001E0200001F0600000F0400000788000007D8000
852 003D0000001E0000001F0000000F0000000F8000000F80000013C0000023E0000021E0000041F0
853 0000C0F8000080780001007C0003003C0002001E0006001F001F003F80FFC0FFF01C1C7F9B1F>
854 I<FFF007FC0F8001E00780008007C0018003C0010003E0020001F0020000F0040000F804000078
855 0800007C1800003C1000001E2000001F2000000F4000000FC00000078000000780000007800000
856 07800000078000000780000007800000078000000780000007800000078000007FF8001E1C809B
857 1F>I<7FFFF07C01F07001E06003C06003C0400780400F80400F00401E00001E00003C00007C00
858 00780000F00000F00001E00003E00003C0100780100780100F00101F00301E00203C00203C0060
859 7800E0F803E0FFFFE0141C7E9B19>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
860 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE07297C9E0C>I<0808101020204040404080808080
861 8080B0B0F8F8787830300D0C7A9C15>I<FEFE0606060606060606060606060606060606060606
862 0606060606060606060606060606060606FEFE0729809E0C>I<1FC000307000783800781C0030
863 1C00001C00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F
864 870012127E9115>97 D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00
865 001C00001C7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00
866 E01C00C01C01C01C01801E030019060010F800131D7F9C17>I<07E00C301878307870306000E0
867 00E000E000E000E000E00060007004300418080C3007C00E127E9112>I<003F00000700000700
868 00070000070000070000070000070000070000070000070003E7000C1700180F00300700700700
869 600700E00700E00700E00700E00700E00700E00700600700700700300700180F000C370007C7E0
870 131D7E9C17>I<03E00C301818300C700E6006E006FFFEE000E000E000E0006000700230021804
871 0C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E00
872 0E000E000E000E000E000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<0003
873 8003C4C00C38C01C3880181800381C00381C00381C00381C001818001C38000C300013C0001000
874 003000001800001FF8001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E
875 0007F800121C7F9215>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C
876 00001C00001C7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C
877 03801C03801C03801C03801C03801C0380FF9FF0141D7F9C17>I<18003C003C00180000000000
878 00000000000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C
879 001C001C00FF80091D7F9C0C>I<00C001E001E000C000000000000000000000000000000FE000
880 E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
881 60E0F0C0F1C061803E000B25839C0D>I<FC00001C00001C00001C00001C00001C00001C00001C
882 00001C00001C00001C00001C3FC01C0F001C0C001C08001C10001C20001C40001CE0001DE0001E
883 70001C78001C38001C3C001C1C001C0E001C0F001C0F80FF9FE0131D7F9C16>I<FC001C001C00
884 1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
885 001C001C001C001C001C00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C
886 001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C0
887 1C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<
888 FC7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
889 1C03801C03801C03801C0380FF9FF014127F9117>I<03F0000E1C001806003003007003806001
890 80E001C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F0001212
891 7F9115>I<FC7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C
892 00E01C01C01C01C01C01801E03001D06001CF8001C00001C00001C00001C00001C00001C00001C
893 0000FF8000131A7F9117>I<03C1000C3300180B00300F00700700700700E00700E00700E00700
894 E00700E00700E00700600700700700300F00180F000C370007C700000700000700000700000700
895 000700000700000700003FE0131A7E9116>I<FCE01D301E781E781C301C001C001C001C001C00
896 1C001C001C001C001C001C001C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F80
897 3FE00FF000F880388018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C00
898 1C003C00FFE01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003
899 C00C1A7F9910>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
900 03801C03801C03801C03801C07800C07800E1B8003E3F014127F9117>I<FF07E03C03801C0100
901 1C01000E02000E020007040007040007040003880003880003D80001D00001D00000E00000E000
902 00E00000400013127F9116>I<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B
903 82000E1182000711C4000711C4000720C40003A0E80003A0E80003C0680001C0700001C0700001
904 803000008020001B127F911E>I<7F8FF00F03800F030007020003840001C80001D80000F00000
905 700000780000F800009C00010E00020E000607000403801E07C0FF0FF81512809116>I<FF07E0
906 3C03801C01001C01000E02000E020007040007040007040003880003880003D80001D00001D000
907 00E00000E00000E000004000004000008000008000F08000F10000F300006600003C0000131A7F
908 9116>I<7FFC70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FF
909 F80E127F9112>I<FFFFF01401808B15>I<FFFFFFFFFF802901808B2A>I
910 E /Fm 42 127 df<00C00000C00007F0001FFC003CCE0070C30060C300E0C780E0CF80E0CF80F0
911 CF80F8C700FEC0007FE0007FF8003FFC001FFE000FFF0003FF0000DF8020CF8070C780F8C380F8
912 C380F0C380C0C30060C70070C60038DE001FF80007E00000C00000C00011217D9E18>36
913 D<FFE0FFE0FFE0FFE00B047F8A10>45 D<000180000380000380000700000700000700000E0000
914 0E00001C00001C00001C0000380000380000380000700000700000E00000E00000E00001C00001
915 C00001C0000380000380000380000700000700000E00000E00000E00001C00001C00001C000038
916 0000380000700000700000700000E00000E00000C0000011297D9E18>47
917 D<00600001E0000FE000FFE000F3E00003E00003E00003E00003E00003E00003E00003E00003E0
918 0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0007FFF
919 807FFF80111B7D9A18>49 D<00038000000380000007C0000007C0000007C000000FE000000FE0
920 00001FF000001BF000001BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E0000C0
921 7E0001803F0001FFFF0003FFFF8003001F8003001F8006000FC006000FC00E000FE00C0007E0FF
922 C07FFEFFC07FFE1F1C7E9B24>65 D<FFFFF800FFFFFF000FC01F800FC00FC00FC007C00FC007E0
923 0FC007E00FC007E00FC007E00FC007E00FC007C00FC00F800FC03F000FFFFE000FC00F800FC007
924 C00FC007E00FC003E00FC003F00FC003F00FC003F00FC003F00FC003F00FC007E00FC007E00FC0
925 1FC0FFFFFF00FFFFFC001C1C7E9B22>I<001FE02000FFF8E003F80FE007C003E00F8001E01F00
926 00E03E0000E03E0000607E0000607C000060FC000000FC000000FC000000FC000000FC000000FC
927 000000FC000000FC0000007C0000607E0000603E0000603E0000C01F0000C00F80018007C00300
928 03F80E0000FFFC00001FE0001B1C7D9B22>I<FFFFF800FFFFFF000FC01FC00FC007E00FC001F0
929 0FC001F80FC000F80FC000FC0FC0007C0FC0007C0FC0007E0FC0007E0FC0007E0FC0007E0FC000
930 7E0FC0007E0FC0007E0FC0007E0FC0007C0FC0007C0FC0007C0FC000F80FC000F80FC001F00FC0
931 07E00FC01FC0FFFFFF00FFFFF8001F1C7E9B25>I<FFFFFF00FFFFFF000FC01F000FC007000FC0
932 03000FC003800FC003800FC181800FC181800FC181800FC180000FC380000FFF80000FFF80000F
933 C380000FC180000FC180000FC180600FC180600FC000E00FC000C00FC000C00FC001C00FC001C0
934 0FC003C00FC00F80FFFFFF80FFFFFF801B1C7E9B1F>I<FFFFFFFF07E007E007E007E007E007E0
935 07E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0FFFFFF
936 FF101C7F9B12>73 D<FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000
937 0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0030FC0030FC0030FC0070FC0070FC006
938 0FC00E0FC01E0FC07EFFFFFEFFFFFE181C7E9B1D>76 D<FFC00003FFFFE00007FF0FE00007F00D
939 F0000DF00DF0000DF00DF0000DF00CF80019F00CF80019F00C7C0031F00C7C0031F00C3E0061F0
940 0C3E0061F00C1F00C1F00C1F00C1F00C1F00C1F00C0F8181F00C0F8181F00C07C301F00C07C301
941 F00C03E601F00C03E601F00C01FC01F00C01FC01F00C01FC01F00C00F801F00C00F801F0FFC070
942 1FFFFFC0701FFF281C7E9B2D>I<FFFFF800FFFFFE000FC03F800FC00F800FC007C00FC007E00F
943 C007E00FC007E00FC007E00FC007E00FC007C00FC007C00FC00F800FC03F000FFFFC000FC00000
944 0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000
945 00FFFC0000FFFC00001B1C7E9B21>80 D<FFFFF00000FFFFFE00000FC03F00000FC00F80000FC0
946 07C0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007C0000FC00F80000F
947 C03E00000FFFF000000FC07C00000FC03E00000FC03F00000FC01F80000FC01F80000FC01F8000
948 0FC01F80000FC01F80000FC01F80000FC01F81800FC01F81800FC00FC180FFFC07C300FFFC01FE
949 00211C7E9B24>82 D<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000
950 FFE0007FFE003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0
951 E000E0F001C0FC03C0EFFF0083FC00141C7D9B1B>I<7FFFFFE07FFFFFE0781F81E0701F80E060
952 1F8060E01F8070C01F8030C01F8030C01F8030C01F8030001F8000001F8000001F8000001F8000
953 001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80
954 00001F8000001F800007FFFE0007FFFE001C1C7E9B21>I<FFFC01FF80FFFC01FF800FC0001800
955 07E000300007E000300007F000700003F000600003F800E00001F800C00001FC00C00000FC0180
956 0000FC018000007E030000007E030000007F070000003F060000003F8E0000001F8C0000001FCC
957 0000000FD80000000FD800000007F000000007F000000007F000000003E000000003E000000001
958 C000000001C00000211C7F9B24>86 D<7FFFFC7FFFFC7E01F87803F87003F0E007E0E007E0C00F
959 C0C01FC0C01F80003F00007F00007E0000FC0000FC0001F80003F80603F00607E0060FE0060FC0
960 0E1F800E1F801C3F001C7F003C7E00FCFFFFFCFFFFFC171C7D9B1D>90 D<0FF8001C1E003E0F80
961 3E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07C0F807C0F807C0F807C0780BC0
962 3E13F80FE1F815127F9117>97 D<FF0000FF00001F00001F00001F00001F00001F00001F00001F
963 00001F00001F00001F3F801FE1E01F80701F00781F003C1F003C1F003E1F003E1F003E1F003E1F
964 003E1F003E1F003C1F003C1F00781F80701EC1E01C3F00171D7F9C1B>I<03FC000E0E001C1F00
965 3C1F00781F00780E00F80000F80000F80000F80000F80000F800007800007801803C01801C0300
966 0E0E0003F80011127E9115>I<000FF0000FF00001F00001F00001F00001F00001F00001F00001
967 F00001F00001F001F9F00F07F01C03F03C01F07801F07801F0F801F0F801F0F801F0F801F0F801
968 F0F801F07801F07801F03C01F01C03F00F0FFE03F9FE171D7E9C1B>I<01FC000F07001C03803C
969 01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F800007800007C00603C00601E00C00F
970 038001FC0013127F9116>I<007F0001E38003C7C00787C00F87C00F83800F80000F80000F8000
971 0F80000F8000FFF800FFF8000F80000F80000F80000F80000F80000F80000F80000F80000F8000
972 0F80000F80000F80000F80000F80007FF8007FF800121D809C0F>I<03F8F00E0F381E0F381C07
973 303C07803C07803C07803C07801C07001E0F000E0E001BF8001000001800001800001FFF001FFF
974 C00FFFE01FFFF07801F8F00078F00078F000787000707800F01E03C007FF00151B7F9118>I<FF
975 0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0FC01F31E01F
976 40F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
977 00F8FFE7FFFFE7FF181D7F9C1B>I<1E003F003F003F003F001E00000000000000000000000000
978 FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F
979 9D0E>I<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0F
980 F81F0FF81F03801F07001F0C001F18001F70001FF8001FFC001FBC001F3E001F1F001F0F001F0F
981 801F07C01F03E0FFC7FCFFC7FC161D7F9C19>107 D<FF00FF001F001F001F001F001F001F001F
982 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0
983 FFE00B1D7F9C0E>I<FF0FC07E00FF31E18F001F40F207801F80FC07C01F80FC07C01F00F807C0
984 1F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807
985 C01F00F807C01F00F807C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF0FC0FF31E01F40F01F80
986 F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7
987 FFFFE7FF18127F911B>I<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F8
988 00F8F800F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<FF3F80FFE1E0
989 1F80F01F00781F007C1F003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F007C1F0078
990 1F80F01FC1E01F3F001F00001F00001F00001F00001F00001F0000FFE000FFE000171A7F911B>
991 I<FE3E00FE47001E8F801E8F801E8F801F07001F00001F00001F00001F00001F00001F00001F00
992 001F00001F00001F0000FFF000FFF00011127F9114>114 D<1FD830786018E018E018F000FF80
993 7FE07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<03000300030003000700
994 07000F000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F0807
995 9803F00E1A7F9913>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
996 F81F00F81F00F81F00F81F00F81F01F80F01F80786FF01F8FF18127F911B>I<FFC1FCFFC1FC1F
997 00601F80E00F80C00FC0C007C18007C18003E30003E30001F60001F60001FE0000FC0000FC0000
998 780000780000300016127F9119>I<FFC7FCFFC7FC1F81800F838007C70003EE0001FC0001F800
999 00F800007C0000FE0001DF00039F00070F800607C00C03E0FF07FCFF07FC16127F9119>120
1000 D<FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C18003E30003E30001F70001F60000FE
1001 0000FC0000FC00007800007800003000003000007000706000F86000F8C000F980007300003E00
1002 00161A7F9119>I<3FFF803C1F00303F00303E00607C0060FC0060F80001F00003F00007E00007
1003 C1800F81801F81801F03803E03007E07007C0F00FFFF0011127F9115>I<1E023FFC7FF880F00F
1004 047C9C18>126 D E /Fn 32 123 df<0E1E1E1E1E02020404080810204080070F7D840F>44
1005 D<0000030000000300000007000000070000000F0000000F0000001F0000002F0000002F000000
1006 4F0000004F80000087800000878000010780000207800002078000040780000407800008078000
1007 080780001007800030078000200780007FFF80004007C0008007C0008003C0010003C0030003C0
1008 020003C0040003C0040003C00C0003C03C0007C0FF003FFC1E237DA224>65
1009 D<00007F00800003808100000E00630000380027000070001F0000E0000E0001C0000E00038000
1010 0E000700000E000F000004000E000004001E000004003C000004003C0000080078000000007800
1011 0000007800000000F000000000F000000000F000000000F000000000F000000000E000000000E0
1012 00002000E000002000E000004000E000004000F000008000700000800070000100003800020000
1013 18000400001C0008000006003000000381C0000000FE000000212479A223>67
1014 D<00FFFFF000000F003C00000F000E00000F000700001E000380001E000380001E0001C0001E00
1015 01C0003C0001C0003C0001E0003C0001E0003C0001E000780001E000780001E000780001E00078
1016 0001E000F00003C000F00003C000F00003C000F00003C001E000078001E000078001E000070001
1017 E0000F0003C0000E0003C0001C0003C0003C0003C00038000780007000078000E000078001C000
1018 07800700000F801C0000FFFFF0000023227DA125>I<00FFFFFF80000F000780000F000180000F
1019 000180001E000180001E000180001E000100001E000100003C000100003C000100003C01010000
1020 3C01000000780200000078020000007806000000780E000000FFFC000000F00C000000F00C0000
1021 00F00C000001E008000001E008000001E008040001E000080003C000080003C000080003C00010
1022 0003C000100007800020000780006000078000C000078001C0000F8007C000FFFFFF800021227D
1023 A121>I<00FF800007FC000F80000F80000F80001780000F80001780001780002F000013C0002F
1024 000013C0004F000013C0008F000023C0009E000023C0011E000023C0011E000023C0021E000043
1025 C0043C000043C0043C000043C0083C000041E0083C000081E01078000081E02078000081E02078
1026 000081E04078000101E040F0000101E080F0000101E100F0000101E100F0000200F201E0000200
1027 F201E0000200F401E0000200F801E0000400F803C0000400F003C0000400F003C0000C00E003C0
1028 001E00C007C000FFC0C07FFC002E227DA12C>77 D<00FFFFC0000F0070000F003C000F001C001E
1029 000E001E000E001E000F001E000F003C001E003C001E003C001E003C003C007800380078007000
1030 7801E00078078000FFFC0000F00E0000F0070000F0038001E003C001E003C001E003C001E003C0
1031 03C0078003C0078003C0078003C0078007800F0007800F0107800F01078007020F800702FFF803
1032 8C000000F020237DA124>82 D<0001F020000E0C40001802C0003001C0006001C000E0018000C0
1033 018001C0018001C0018003C0010003C0010003C0000003C0000003E0000001F8000001FF000000
1034 FFE000007FF000001FF8000003FC0000007C0000003C0000001E0000001E0000001E0020001C00
1035 20001C0020001C00200018006000380060003000700060007000C000C8018000C607000081FC00
1036 001B247DA21B>I<1FFFFFF81E03C0381803C0183003C018200780182007801840078010400780
1037 10400F0010800F0010800F0010000F0000001E0000001E0000001E0000001E0000003C0000003C
1038 0000003C0000003C00000078000000780000007800000078000000F0000000F0000000F0000000
1039 F0000001E0000001E0000001E0000001E0000003E00000FFFF00001D2277A123>I<3FFE03FF03
1040 C0007803C0006003C00020078000400780004007800040078000400F0000800F0000800F000080
1041 0F0000801E0001001E0001001E0001001E0001003C0002003C0002003C0002003C000200780004
1042 0078000400780004007800040070000800F0000800F00010007000100070002000700040003000
1043 400038018000180200000E0C000003F00000202377A124>I<007FFFFE007E001E0078003C0060
1044 007800C000F000C001E0008003E0008003C00100078001000F0001001E0000003C0000007C0000
1045 0078000000F0000001E0000003C00000078000000F8000000F0000001E0000003C004000780040
1046 00F0008001F0008001E0008003C00100078001000F0003001E0006001E0006003C001E0078007C
1047 00FFFFFC001F227DA11E>90 D<00F8C00185C00705C00E03800E03801C03803C03803807007807
1048 00780700780700F00E00F00E00F00E00F00E10F01C20701C20703C20305C40308C400F07801415
1049 7B9419>97 D<03C03F8003800380038007000700070007000E000E000E000E001C001CF81D0C1E
1050 0E3C0638073807380F700F700F700F700FE01EE01EE01EE03CE038E038607060E031C01F001023
1051 7BA216>I<007E0001C1000301800703800E07801C07803C0000380000780000780000780000F0
1052 0000F00000F00000F00000F00100700100700200300C001830000FC00011157B9416>I<00003C
1053 0003F80000380000380000380000700000700000700000700000E00000E00000E00000E00001C0
1054 00F9C00185C00705C00E03800E03801C03803C0380380700780700780700780700F00E00F00E00
1055 F00E00F00E10F01C20701C20703C20305C40308C400F078016237BA219>I<00F803840E021C02
1056 3C0238027804F018FFE0F000F000E000E000E000E000E002E0026004701830600F800F157A9416
1057 >I<001F180030B800E0B801C07001C0700380700780700700E00F00E00F00E00F00E01E01C01E
1058 01C01E01C01E01C01E03800E03800E0780060B8006170001E700000700000700000E00000E0000
1059 0E00701C00F01800F0300060E0003F8000151F7E9416>103 D<00C001E001C001C00000000000
1060 00000000000000000000001C002300430043008700870087000E000E001C001C001C0038003800
1061 3840708070807080710032001C000B217BA00F>105 D<00F0000FE00000E00000E00000E00001
1062 C00001C00001C00001C0000380000380000380000380000700000701E0070210070C700E10F00E
1063 10F00E20600E40001D80001E00001FC0001C7000383800383800381C00381C2070384070384070
1064 3840701880E01880600F0014237DA216>107 D<01E01FC001C001C001C0038003800380038007
1065 000700070007000E000E000E000E001C001C001C001C0038003800380038007000700070007100
1066 E200E200E200E200640038000B237CA20C>I<1C0F80F8002610C10C0047606606008780780700
1067 8780780700870070070087007007000E00E00E000E00E00E000E00E00E000E00E00E001C01C01C
1068 001C01C01C001C01C01C001C01C038203803803840380380704038038070803803803080700700
1069 31003003001E0023157B9428>I<1C0F002631C04740C08780E08780E08700E08700E00E01C00E
1070 01C00E01C00E01C01C03801C03801C03801C0704380708380E08380E103806107006203003C016
1071 157B941B>I<007E0001C3000381800701C00E01C01C01E03C01E03801E07801E07801E07801E0
1072 F003C0F003C0F00380F00780700700700E00700C0030180018700007C00013157B9419>I<01C1
1073 F002621804741C08780C08700E08700E08701E00E01E00E01E00E01E00E01E01C03C01C03C01C0
1074 3C01C07803807003807003C0E003C1C0072380071E000700000700000E00000E00000E00000E00
1075 001C00001C00001C0000FFC000171F7F9419>I<1C1F002620804741C08783C08703C087018087
1076 00000E00000E00000E00000E00001C00001C00001C00001C000038000038000038000038000070
1077 000030000012157B9415>114 D<00FC000183000200800401800C03800C03000C00000F00000F
1078 F00007FC0003FE00003E00000F00000700700700F00600F00600E004004008002030001FC00011
1079 157D9414>I<00C001C001C001C001C003800380038003800700FFF8070007000E000E000E000E
1080 001C001C001C001C003800380038003810702070207040708031001E000D1F7C9E10>I<1E0060
1081 2300E04380E04381C08381C08701C08701C00703800E03800E03800E03801C07001C07001C0700
1082 1C07081C0E10180E101C0E101C1E200C262007C3C015157B941A>I<1E03802307C04387C04383
1083 C08381C08700C08700C00700800E00800E00800E00801C01001C01001C01001C02001C02001C04
1084 001C08001C08000C300003C00012157B9416>I<03C1E0046210083470103CF02038F020386020
1085 380000700000700000700000700000E00000E00000E00000E02061C040F1C040F1C080E2C10044
1086 6200383C0014157D9416>120 D<1E00302300704380704380E08380E08700E08700E00701C00E
1087 01C00E01C00E01C01C03801C03801C03801C03801C07001C07001C07001C0F000C3E0003CE0000
1088 0E00000E00001C00601C00F03800F03000E0600080C0004380003E0000141F7B9418>I<01E020
1089 03F06007F8C0041F80080100080200000400000800001000002000004000008000010000020000
1090 0400800801001003003F060061FC0040F80080700013157D9414>I E /Fo
1091 23 119 df<00038000000380000003800000038000001FF00000FFFE0003FFFF0007E38FC00F03
1092 83E01E0380F03C0380703C038038780380F8780381FCF80383FCF80387FCF80387FCFC0387FCFC
1093 0387FCFE0383F8FF0381F0FFC380007FFB80007FFFC0003FFFF8003FFFFE001FFFFF000FFFFF80
1094 07FFFFC003FFFFE001FFFFF0007FFFF0000FFFF80003FFF800038FF8000383FC3E0381FC7F0380
1095 FCFF8380FCFF83807CFF83807CFF83807CFF03807CFE0380787C038078700380F8780380F03803
1096 80E01C0381E00F0387C007E39F8003FFFF0000FFFC00001FE00000038000000380000003800000
1097 0380001E3A7BB529>36 D<1F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F00000000000000
1098 00000000000000000000000000001F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B207A
1099 9F17>58 D<FFFFFFFFF00000FFFFFFFFFF0000FFFFFFFFFFC00000FFC000FFF00000FFC0000FFC
1100 0000FFC00007FE0000FFC00001FF0000FFC00000FF8000FFC000007FC000FFC000003FE000FFC0
1101 00003FE000FFC000001FF000FFC000001FF000FFC000001FF800FFC000000FF800FFC000000FFC
1102 00FFC000000FFC00FFC000000FFC00FFC000000FFC00FFC000000FFE00FFC000000FFE00FFC000
1103 000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00
1104 FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFC00FFC000000FFC00FFC00000
1105 0FFC00FFC000000FFC00FFC000000FF800FFC000001FF800FFC000001FF800FFC000001FF000FF
1106 C000003FE000FFC000003FE000FFC000007FC000FFC00000FF8000FFC00001FF0000FFC00003FE
1107 0000FFC0000FFC0000FFC0007FF000FFFFFFFFFFE000FFFFFFFFFF0000FFFFFFFFF0000037317E
1108 B03F>68 D<FFFFFFFFFFF000FFFFFFFFFFF000FFFFFFFFFFF00000FFC0003FF00000FFC00007F8
1109 0000FFC00003F80000FFC00000F80000FFC00000F80000FFC00000780000FFC00000780000FFC0
1110 0000380000FFC00000380000FFC00000380000FFC000001C0000FFC007001C0000FFC007001C00
1111 00FFC007001C0000FFC00700000000FFC00700000000FFC00F00000000FFC01F00000000FFC03F
1112 00000000FFFFFF00000000FFFFFF00000000FFFFFF00000000FFC03F00000000FFC01F00000000
1113 FFC00F00000000FFC00700000000FFC00700000000FFC00700038000FFC00700038000FFC00700
1114 038000FFC00000070000FFC00000070000FFC00000070000FFC00000070000FFC000000F0000FF
1115 C000000F0000FFC000001E0000FFC000001E0000FFC000003E0000FFC000007E0000FFC00000FE
1116 0000FFC00003FE0000FFC0001FFE00FFFFFFFFFFFC00FFFFFFFFFFFC00FFFFFFFFFFFC0031317E
1117 B036>I<FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF000FFC0003FF000FFC00007F800FFC00003
1118 F800FFC00000F800FFC00000F800FFC000007800FFC000007800FFC000003800FFC000003800FF
1119 C000003800FFC000001C00FFC000001C00FFC007001C00FFC007001C00FFC007000000FFC00700
1120 0000FFC007000000FFC00F000000FFC01F000000FFC03F000000FFFFFF000000FFFFFF000000FF
1121 FFFF000000FFC03F000000FFC01F000000FFC00F000000FFC007000000FFC007000000FFC00700
1122 0000FFC007000000FFC007000000FFC000000000FFC000000000FFC000000000FFC000000000FF
1123 C000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC00000
1124 0000FFC0000000FFFFFFF00000FFFFFFF00000FFFFFFF000002E317EB034>I<FFFFFFC03FFFFF
1125 F0FFFFFFC03FFFFFF0FFFFFFC03FFFFFF000FFC000003FF00000FFC000003FF00000FFC000003F
1126 F00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC00000
1127 3FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000
1128 003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC0
1129 00003FF00000FFC000003FF00000FFFFFFFFFFF00000FFFFFFFFFFF00000FFFFFFFFFFF00000FF
1130 C000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000
1131 FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF000
1132 00FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF0
1133 0000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003F
1134 F00000FFC000003FF000FFFFFFC03FFFFFF0FFFFFFC03FFFFFF0FFFFFFC03FFFFFF03C317EB041
1135 >72 D<FFFFFFF00000FFFFFFF00000FFFFFFF0000000FFC000000000FFC000000000FFC0000000
1136 00FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC0
1137 00000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC0000000
1138 00FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC0
1139 00000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000007000FFC0000070
1140 00FFC000007000FFC00000F000FFC00000F000FFC00000E000FFC00000E000FFC00001E000FFC0
1141 0001E000FFC00003E000FFC00003E000FFC00007E000FFC0000FE000FFC0001FE000FFC0007FC0
1142 00FFC003FFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC02C317EB032>76
1143 D<FFFF8000000001FFFF80FFFFC000000003FFFF80FFFFE000000007FFFF8000FFE000000007FF
1144 800000EFF00000000EFF800000EFF00000000EFF800000EFF00000000EFF800000E7F80000001C
1145 FF800000E7F80000001CFF800000E3FC00000038FF800000E3FC00000038FF800000E1FE000000
1146 70FF800000E1FE00000070FF800000E0FF000000E0FF800000E0FF000000E0FF800000E07F8000
1147 01C0FF800000E07F800001C0FF800000E03FC0000380FF800000E03FC0000380FF800000E03FC0
1148 000380FF800000E01FE0000700FF800000E01FE0000700FF800000E00FF0000E00FF800000E00F
1149 F0000E00FF800000E007F8001C00FF800000E007F8001C00FF800000E003FC003800FF800000E0
1150 03FC003800FF800000E001FE007000FF800000E001FE007000FF800000E000FF00E000FF800000
1151 E000FF00E000FF800000E000FF00E000FF800000E0007F81C000FF800000E0007F81C000FF8000
1152 00E0003FC38000FF800000E0003FC38000FF800000E0001FE70000FF800000E0001FE70000FF80
1153 0000E0000FFE0000FF800000E0000FFE0000FF800000E00007FC0000FF800000E00007FC0000FF
1154 800000E00007FC0000FF800000E00003F80000FF800001F00003F80000FF8000FFFFE001F000FF
1155 FFFF80FFFFE001F000FFFFFF80FFFFE000E000FFFFFF8049317EB04E>I<00000FFE0000000000
1156 FFFFE000000007FFFFFC0000001FFC07FF0000003FE000FF800000FF80003FE00001FF00001FF0
1157 0003FE00000FF80007FC000007FC0007FC000007FC000FF8000003FE001FF8000003FF001FF000
1158 0001FF003FF0000001FF803FF0000001FF803FF0000001FF807FE0000000FFC07FE0000000FFC0
1159 7FE0000000FFC0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE00000
1160 00FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FF
1161 E0000000FFE07FE0000000FFC07FE0000000FFC07FF0000001FFC07FF0000001FFC03FF0000001
1162 FF803FF0000001FF801FF8000003FF001FF8000003FF000FFC000007FE000FFC000007FE0007FE
1163 00000FFC0003FF00001FF80001FF80003FF00000FFC0007FE000003FE000FF8000001FFC07FF00
1164 000007FFFFFC00000000FFFFE0000000000FFE00000033317BB03E>79 D<001FF0018000FFFF03
1165 8003FFFFC78007F00FFF800F8001FF801F00007F803F00001F803E00000F807E00000F807E0000
1166 0780FE00000780FE00000780FE00000380FF00000380FF00000380FF80000000FFE00000007FFC
1167 0000007FFFE000007FFFFE00003FFFFFC0001FFFFFF0001FFFFFF8000FFFFFFC0003FFFFFE0001
1168 FFFFFF00007FFFFF80001FFFFF800000FFFFC0000007FFC0000000FFE00000003FE00000003FE0
1169 0000001FE06000001FE0E000000FE0E000000FE0E000000FE0E000000FC0F000000FC0F000000F
1170 C0F800001F80FC00001F80FF00003F00FFC0007E00FFFC01FC00F1FFFFF800E03FFFE000C007FF
1171 000023317BB02E>83 D<FFFFFF0000FFFF80FFFFFF0000FFFF80FFFFFF0000FFFF8003FFC00000
1172 0FF00001FFE0000007C00000FFE000000F800000FFF000000F8000007FF800001F0000003FF800
1173 001E0000001FFC00003E0000001FFE00007C0000000FFE00007800000007FF0000F800000007FF
1174 8001F000000003FF8001E000000001FFC003E000000001FFE007C000000000FFF0078000000000
1175 7FF00F80000000007FF81F00000000003FFC1E00000000001FFC3E00000000001FFE7C00000000
1176 000FFF78000000000007FFF8000000000007FFF0000000000003FFF0000000000001FFE0000000
1177 000001FFC0000000000000FFC0000000000000FFC0000000000000FFC0000000000000FFC00000
1178 00000000FFC0000000000000FFC0000000000000FFC0000000000000FFC0000000000000FFC000
1179 0000000000FFC0000000000000FFC0000000000000FFC0000000000000FFC0000000000000FFC0
1180 000000000000FFC0000000000000FFC0000000000000FFC00000000000FFFFFF8000000000FFFF
1181 FF8000000000FFFFFF80000039317EB03E>89 D<007FF8000003FFFF000007FFFFC0000FE01FE0
1182 001FF007F0001FF003F8001FF003FC001FF001FE000FE001FE0007C001FE00010001FE00000001
1183 FE00000001FE000001FFFE00003FFFFE0001FFF1FE0007FE01FE000FF001FE001FC001FE003F80
1184 01FE007F8001FE00FF0001FE00FF0001FE00FF0001FE00FF0001FE00FF0003FE007F8003FE007F
1185 C00EFE003FF03CFF000FFFF87FF807FFF03FF800FF800FF825207E9F28>97
1186 D<0007FC0000003FFF800000FFFFE00003FC07F00007F801F8000FE000FC001FE0007E003FC000
1187 7E003FC0003F007FC0003F007F80003F007F80003F80FF80003F80FF80003F80FFFFFFFF80FFFF
1188 FFFF80FFFFFFFF80FF80000000FF80000000FF800000007F800000007F800000003FC00000003F
1189 C00003801FC00003801FE00007800FF0000F0007F8001E0003FE00FC0000FFFFF800003FFFE000
1190 0003FF000021207E9F26>101 D<001FF007E000FFFE3FF001FFFF7FF807F83FF1F80FE00FE1F8
1191 0FE00FE0F01FC007F0601FC007F0003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8
1192 001FC007F0001FC007F0000FE00FE0000FE00FE00007F83FC00007FFFF000006FFFE00000E1FF0
1193 00000E000000001E000000001E000000001F000000001F800000001FFFFFC0000FFFFFF8000FFF
1194 FFFE0007FFFFFF0003FFFFFF8007FFFFFFC01FFFFFFFE03F00007FE07E00000FF0FC000007F0FC
1195 000003F0FC000003F0FC000003F0FC000003F07E000007E03F00000FC01FC0003F800FF801FF00
1196 07FFFFFE0000FFFFF000001FFF8000252F7E9F29>103 D<01C00007F0000FF8000FF8001FFC00
1197 1FFC001FFC000FF8000FF80007F00001C000000000000000000000000000000000000000000000
1198 00000001F800FFF800FFF800FFF8000FF80007F80007F80007F80007F80007F80007F80007F800
1199 07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
1200 07F80007F80007F80007F800FFFF80FFFF80FFFF8011337DB217>105 D<01F800FFF800FFF800
1201 FFF8000FF80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
1202 07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
1203 07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
1204 07F80007F80007F80007F80007F800FFFFC0FFFFC0FFFFC012327DB117>108
1205 D<03F007F8000FF000FFF03FFF007FFE00FFF07FFF80FFFF00FFF0F03FC1E07F800FF1C01FE380
1206 3FC007F3000FE6001FC007F6000FFC001FE007FE000FFC001FE007FC000FF8001FE007FC000FF8
1207 001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000F
1208 F0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F800
1209 0FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8
1210 000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE0FF
1211 FFC1FFFF83FFFFFFFFC1FFFF83FFFFFFFFC1FFFF83FFFF40207D9F45>I<03F007F80000FFF03F
1212 FF0000FFF07FFF8000FFF0F03FC0000FF1C01FE00007F3000FE00007F6000FF00007FE000FF000
1213 07FC000FF00007FC000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800
1214 0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000
1215 07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800
1216 0FF00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029207D9F2E>I<0007FE0000
1217 003FFFC00000FFFFF00003FC03FC0007F000FE000FE0007F001FC0003F803FC0003FC03FC0003F
1218 C07F80001FE07F80001FE07F80001FE0FF80001FF0FF80001FF0FF80001FF0FF80001FF0FF8000
1219 1FF0FF80001FF0FF80001FF0FF80001FF07F80001FE07F80001FE07F80001FE03FC0003FC03FC0
1220 003FC01FE0007F800FE0007F0007F801FE0003FE07FC0001FFFFF800003FFFC0000007FE000024
1221 207E9F29>I<03F03F00FFF07FC0FFF1FFE0FFF3C7F00FF38FF807F70FF807F60FF807FE0FF807
1222 FC07F007FC03E007FC008007F8000007F8000007F8000007F8000007F8000007F8000007F80000
1223 07F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F800
1224 0007F80000FFFFE000FFFFE000FFFFE0001D207E9F22>114 D<00380000380000380000380000
1225 380000780000780000780000F80000F80001F80003F80007F8001FF800FFFFFEFFFFFEFFFFFE07
1226 F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007
1227 F80007F80007F80007F80707F80707F80707F80707F80707F80707F80703F80E03FC0E01FE1C00
1228 FFF8007FF0000FE0182E7EAD20>116 D<01F80003F000FFF801FFF000FFF801FFF000FFF801FF
1229 F0000FF8001FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007
1230 F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000F
1231 F00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007
1232 F8000FF00007F8001FF00007F8001FF00003F8003FF00003F8006FF00001FE03CFF80000FFFF8F
1233 FF80007FFF0FFF80000FFC0FFF8029207D9F2E>I<FFFF801FFEFFFF801FFEFFFF801FFE07F800
1234 03E007F80001C007FC0003C003FC00038003FE00078001FE00070001FF000F0000FF000E0000FF
1235 801E00007F801C00007FC03C00003FC03800003FE03800001FE07000001FE07000000FF0E00000
1236 0FF0E000000FF9E0000007F9C0000007FFC0000003FF80000003FF80000001FF00000001FF0000
1237 0000FE00000000FE000000007C000000007C0000000038000027207E9F2C>I
1238 E end
1239 %%EndProlog
1240 %%BeginSetup
1241 %%Feature: *Resolution 300
1242 TeXDict begin 
1243 %%EndSetup
1244 %%Page: 1 1
1245 bop 193 216 a Fo(HLFSD:)26 b(Deliv)n(ering)h(Email)g(to)h(Y)-7
1246 b(our)28 b($HOME)280 336 y Fn(Er)n(ez)17 b(Zadok,)g(Computer)h(Scienc)n(e)h
1247 (Dep)n(artment,)e(Columbia)h(University)482 394 y(A)o(lexander)h(Dupuy,)e
1248 (System)h(Management)h(AR)l(TS)841 541 y Fm(ABSTRA)o(CT)241
1249 628 y Fl(W)m(e)12 b(consider)h(the)g(problem)e(of)h(enabling)g(users)i(to)e
1250 (access)i(their)f(mailb)q(o)o(x)d(\014les)i(from)f(an)o(y)h(host)179
1251 678 y(on)k(our)h(lo)q(cal)f(net)o(w)o(ork,)h(and)f(not)h(only)f(on)g(one)h
1252 (designated)g(\\home)f(mac)o(hine".)25 b(W)m(e)16 b(require)h(a)179
1253 728 y(solution)11 b(whic)o(h)g(will)f(not)i(in)o(tro)q(duce)g(an)o(y)f(new)h
1254 (single)g(p)q(oin)o(ts)f(of)g(failure,)g(force)h(us)g(to)g(mo)q(dify)d(mail)
1255 179 778 y(transfer)16 b(agen)o(ts)f(and)g(user)i(agen)o(ts,)e(or)g(require)h
1256 (c)o(hanges)g(to)f(the)h(op)q(erating)f(system)g(k)o(ernels.)22
1257 b(In)179 828 y(other)15 b(w)o(ords,)g(minim)o(ize)e(the)i(amoun)o(t)e(of)h(w)
1258 o(ork)h(needed)h(b)o(y)e(system-administrators)g(and)g(users.)179
1259 877 y(Our)i(solution)e(is)h(to)h(deliv)o(er)f(mail)e(in)o(to)h(the)i(users')h
1260 (home)d(directories,)i(whic)o(h)g(are)f(exp)q(orted)i(via)179
1261 927 y(NFS[20)o(,)g(25])f(to)i(all)e(of)h(the)h(mac)o(hines)e(on)h(our)h(net)o
1262 (w)o(ork.)29 b(W)m(e)17 b(wrote)h(a)f(small)e(user-lev)o(el)j(NFS)179
1263 977 y(serv)o(er)d(implemen)o(ting)c(a)j(single)f(sym)o(b)q(olic)f(link)h
1264 (that)h(references)j(the)e(home)e(directory)h(of)g(a)g(user,)179
1265 1027 y(either)h(the)g(one)g(who)f(accessed)j(it,)c(or)i(b)o(y)f(name,)f(with)
1266 h(a)g(fallbac)o(k)f(reference)k(in)d(case)h(of)f(failures.)179
1267 1077 y(This)d(enables)h(electronic)g(mail)d(to)i(b)q(e)h(deliv)o(ered)g
1268 (directly)g(in)o(to)e(the)i(user's)g(home)f(directory)m(,)g(whic)o(h)179
1269 1126 y(is)f(already)h(accessible)h(from)d(an)o(y)h(mac)o(hine)g(on)h(the)g
1270 (net)o(w)o(ork.)17 b(Although)10 b(w)o(e)i(ha)o(v)o(e)e(used)i(our)f(serv)o
1271 (er)179 1176 y(primarily)f(for)i(mail)e(deliv)o(ery)j(redirection,)g(it)f
1272 (can)h(b)q(e)g(used)h(to)e(redirect)i(sp)q(o)q(oled)f(faxes,)g(access)h(to)
1273 179 1226 y Fk(/tmp)p Fl(,)e(etc.)75 1345 y Fj(1)56 b(In)n(tro)r(duction)175
1274 1420 y Fl(Electronic)16 b(mail)e(has)i(b)q(ecome)g(one)g(of)f(the)i(ma)r(jor)
1275 d(applications)h(for)h(man)o(y)e(computer)i(net)o(w)o(orks,)g(and)75
1276 1470 y(use)k(of)f(this)g(service)h(is)f(exp)q(ected)j(to)d(increase)h(o)o(v)o
1277 (er)f(time,)g(as)g(net)o(w)o(orks)h(proliferate)f(and)g(b)q(ecome)g(faster.)
1278 75 1520 y(Pro)o(viding)10 b(a)h(con)o(v)o(enien)o(t)h(en)o(vironmen)o(t)f
1279 (for)g(users)i(to)e(read,)h(comp)q(ose,)f(and)g(send)h(electronic)h(mail)c
1280 (has)i(b)q(ecome)75 1570 y(a)j(requiremen)o(t)f(for)h(systems)g
1281 (administrators)e(\(SAs\).)175 1644 y(Widely)j(used)j(metho)q(ds)d(for)i
1282 (handling)e(mail)f(usually)h(require)j(users)f(to)g(b)q(e)g(logged)e(in)o(to)
1283 h(a)g(designated)75 1694 y(\\home")e(mac)o(hine,)f(where)k(their)e(mailb)q(o)
1284 o(x)e(\014les)i(reside.)23 b(Only)15 b(on)g(that)h(one)f(mac)o(hine)f(can)i
1285 (they)f(read)h(newly)75 1744 y(arriv)o(ed)i(mail.)28 b(Since)19
1286 b(users)g(ha)o(v)o(e)f(to)g(b)q(e)h(logged)e(in)o(to)g(that)h(system)g(to)g
1287 (read)h(their)f(mail,)e(they)j(often)f(\014nd)75 1794 y(it)h(con)o(v)o(enien)
1288 o(t)h(to)g(run)g(all)f(of)g(their)h(other)g(pro)q(cesses)j(on)c(that)h
1289 (system)f(as)h(w)o(ell,)g(including)f(memory)e(and)75 1844
1290 y(CPU-in)o(tensiv)o(e)j(jobs.)34 b(F)m(or)19 b(example,)g(in)g(our)g
1291 (departmen)o(t,)h(w)o(e)g(ha)o(v)o(e)f(allo)q(cated)g(and)g(con\014gured)h
1292 (sev)o(eral)75 1893 y(m)o(ulti-pro)q(cessor)11 b(serv)o(ers)i(to)e(handle)g
1293 (suc)o(h)i(demanding)c(CPU)q(/memory)f(applications,)j(but)g(these)i(w)o(ere)
1294 f(under-)75 1943 y(utilized,)k(in)g(large)g(part)g(due)h(to)f(the)g(incon)o
1295 (v)o(enience)i(of)d(not)h(b)q(eing)g(able)g(to)g(read)h(mail)c(on)j(those)h
1296 (mac)o(hines.)75 1993 y(\(No)h(home)e(directories)j(w)o(ere)g(lo)q(cated)f
1297 (on)f(these)i(designated)g(CPU-serv)o(ers,)h(since)f(w)o(e)e(did)h(not)f(w)o
1298 (an)o(t)h(NFS)75 2043 y(service)g(for)f(users')g(home)f(directories)i(to)f
1299 (ha)o(v)o(e)f(to)h(comp)q(ete)g(with)f(in)o(tensiv)o(e)h(jobs.)27
1300 b(A)o(t)17 b(the)g(same)f(time,)g(w)o(e)75 2093 y(discouraged)e(users)i(from)
1301 c(running)h(demanding)g(applications)f(on)i(their)g(home)f(mac)o(hines.\))175
1302 2167 y(Man)o(y)k(di\013eren)o(t)h(solutions)f(ha)o(v)o(e)h(b)q(een)h(prop)q
1303 (osed)f(to)f(allo)o(w)f(users)j(to)f(read)g(their)g(mail)d(on)i(an)o(y)g
1304 (host.)75 2217 y(Ho)o(w)o(ev)o(er,)d(all)e(of)i(these)h(solutions)f(fail)e
1305 (in)h(one)h(or)g(more)f(of)g(sev)o(eral)i(w)o(a)o(ys:)137 2328
1306 y Fi(\017)21 b Fl(they)14 b(in)o(tro)q(duce)h(new)f(single)g(p)q(oin)o(ts)f
1307 (of)h(failure)137 2409 y Fi(\017)21 b Fl(they)14 b(require)h(using)f
1308 (di\013eren)o(t)g(mail)e(transfer)i(agen)o(ts)h(\(MT)m(As\)[15)o(])e(or)h
1309 (user)h(agen)o(ts)g(\(UAs\))137 2490 y Fi(\017)21 b Fl(they)16
1310 b(do)f(not)g(solv)o(e)g(the)h(problem)e(for)h(all)f(cases,)i(i.e.)22
1311 b(the)16 b(solution)e(is)h(only)g(partially)e(successful)k(for)e(a)179
1312 2539 y(particular)e(en)o(vironmen)o(t.)175 2650 y(W)m(e)e(ha)o(v)o(e)h
1313 (designed)g(a)f(simple)g(\014lesystem,)g(called)h(the)g Fh(Home-Link)h(File)f
1314 (System)p Fl(,)g(to)g(pro)o(vide)f(the)i(abilit)o(y)75 2700
1315 y(to)d(deliv)o(er)h(mail)d(to)i(users')h(home)e(directories,)j(without)e(mo)q
1316 (di\014cation)f(to)h(mail-related)e(applications.)16 b(W)m(e)10
1317 b(ha)o(v)o(e)p eop
1318 %%Page: 2 2
1319 bop 75 42 a Fl(endea)o(v)o(ored)15 b(to)e(mak)o(e)f(it)i(as)f(stable)h(as)g
1320 (p)q(ossible.)k(Of)c(great)g(imp)q(ortance)f(to)g(us)h(w)o(as)g(to)f(mak)o(e)
1321 g(sure)h(the)h(HLFS)75 91 y(daemon,)10 b Fk(hlfsd)o Fl(,)h(w)o(ould)g(not)g
1322 (hang)g(under)h(an)o(y)f(circumstances,)h(and)f(w)o(ould)f(tak)o(e)i(the)g
1323 (next-b)q(est)h(action)d(when)75 141 y(faced)16 b(with)g(problems.)24
1324 b(Compared)15 b(to)g(alternativ)o(e)h(metho)q(ds,)g Fk(hlfsd)f
1325 Fl(is)h(a)g(stable,)g(more)f(general)h(solution,)75 191 y(and)g(easier)h(to)f
1326 (install/use.)25 b(In)16 b(fact,)g(in)g(some)f(w)o(a)o(ys,)i(w)o(e)f(ha)o(v)o
1327 (e)g(ev)o(en)h(managed)e(to)h(impro)o(v)o(e)e(the)j(reliabilit)o(y)75
1328 241 y(and)d(securit)o(y)h(of)e(mail)e(service.)175 315 y(Our)k(serv)o(er)i
1329 (implemen)o(ts)c(a)i(small)e(\014lesystem)i(con)o(taining)f(a)h(sym)o(b)q
1330 (olic)f(link)g(to)h(a)g(sub)q(directory)i(of)d(the)75 365 y(in)o(v)o(oking)c
1331 (user's)j(home)e(directory)m(,)i(and)f(named)e(sym)o(b)q(olic)h(links)g(to)h
1332 (users')h(mailb)q(o)o(x)c(\014les.)18 b(An)13 b(example,)d(using)75
1333 415 y(pathnames)j(from)f(our)i(en)o(vironmen)o(t,)e(is)i(depicted)h(in)f
1334 (Figure)g(1.)1128 400 y Fg(1)p 75 477 1800 5 v 75 1424 a @beginspecial
1335 0 @llx 0 @lly 599 @urx 311 @ury 4320 @rwi @setspecial
1336 %%BeginDocument: hlfs-flowchart.eps
1337 /$F2psDict 200 dict def 
1338 $F2psDict begin
1339 $F2psDict /mtrx matrix put
1340 /l {lineto} bind def
1341 /m {moveto} bind def
1342 /s {stroke} bind def
1343 /n {newpath} bind def
1344 /gs {gsave} bind def
1345 /gr {grestore} bind def
1346 /clp {closepath} bind def
1347 /graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
1348 4 -2 roll mul setrgbcolor} bind def
1349 /col-1 {} def
1350 /col0 {0 0 0 setrgbcolor} bind def
1351 /col1 {0 0 1 setrgbcolor} bind def
1352 /col2 {0 1 0 setrgbcolor} bind def
1353 /col3 {0 1 1 setrgbcolor} bind def
1354 /col4 {1 0 0 setrgbcolor} bind def
1355 /col5 {1 0 1 setrgbcolor} bind def
1356 /col6 {1 1 0 setrgbcolor} bind def
1357 /col7 {1 1 1 setrgbcolor} bind def
1358         end
1359 /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
1360 /$F2psEnd {$F2psEnteredState restore end} def
1362 $F2psBegin
1363 0 setlinecap 0 setlinejoin
1364 -4.0 329.0 translate 0.900 -0.900 scale
1365 0.500 setlinewidth
1366 n 319 19 m 312 19 312 32 7 arcto 4 {pop} repeat 312 39 350 39 7 arcto 4 {pop} repeat 357 39 357 26 7 arcto 4 {pop} repeat 357 19 319 19 7 arcto 4 {pop} repeat clp gs col-1 s gr
1367 /Times-Roman findfont 12.00 scalefont setfont
1368 317 34 m 
1369 gs 1 -1 scale (START) col-1 show gr
1370 /Times-Roman findfont 18.00 scalefont setfont
1371 269 360 m 
1372 gs 1 -1 scale (".") col-1 show gr
1373 /Times-Roman findfont 18.00 scalefont setfont
1374 254 335 m 
1375 gs 1 -1 scale (Return) col-1 show gr
1376 n 256 320 m 249 320 249 358 7 arcto 4 {pop} repeat 249 365 302 365 7 arcto 4 {pop} repeat 309 365 309 327 7 arcto 4 {pop} repeat 309 320 256 320 7 arcto 4 {pop} repeat clp gs col-1 s gr
1377 n 274 100 m 199 100 l  199 170 l gs col-1 s gr
1378 n 201.000 162.000 m 199.000 170.000 l 197.000 162.000 l gs 2 setlinejoin col-1 s gr
1379 n 394 100 m 479 100 l  479 120 l gs col-1 s gr
1380 n 481.000 112.000 m 479.000 120.000 l 477.000 112.000 l gs 2 setlinejoin col-1 s gr
1381 n 139 210 m 124 210 l  124 320 l gs col-1 s gr
1382 n 126.000 312.000 m 124.000 320.000 l 122.000 312.000 l gs 2 setlinejoin col-1 s gr
1383 n 479 200 m 479 220 l gs col-1 s gr
1384 n 481.000 212.000 m 479.000 220.000 l 477.000 212.000 l gs 2 setlinejoin col-1 s gr
1385 n 539 260 m 569 260 l  569 320 l gs col-1 s gr
1386 n 571.000 312.000 m 569.000 320.000 l 567.000 312.000 l gs 2 setlinejoin col-1 s gr
1387 n 334 40 m 334 60 l gs col-1 s gr
1388 n 336.000 52.000 m 334.000 60.000 l 332.000 52.000 l gs 2 setlinejoin col-1 s gr
1389 n 334 60 m 274 100 l  334 140 l  394 100 l  334 60 l gs col-1 s gr
1390 n 199 170 m 139 210 l  199 250 l  259 210 l  199 170 l gs col-1 s gr
1391 n 479 120 m 419 160 l  479 200 l  539 160 l  479 120 l gs col-1 s gr
1392 n 479 220 m 419 260 l  479 300 l  539 260 l  479 220 l gs col-1 s gr
1393 n 326 319 m 319 319 319 357 7 arcto 4 {pop} repeat 319 364 467 364 7 arcto 4 {pop} repeat 474 364 474 326 7 arcto 4 {pop} repeat 474 319 326 319 7 arcto 4 {pop} repeat clp gs col-1 s gr
1394 n 419 159 m 364 159 l  364 179 l gs col-1 s gr
1395 n 366.000 171.000 m 364.000 179.000 l 362.000 171.000 l gs 2 setlinejoin col-1 s gr
1396 n 306 179 m 299 179 299 212 7 arcto 4 {pop} repeat 299 219 427 219 7 arcto 4 {pop} repeat 434 219 434 186 7 arcto 4 {pop} repeat 434 179 306 179 7 arcto 4 {pop} repeat clp gs col-1 s gr
1397 n 491 319 m 484 319 484 357 7 arcto 4 {pop} repeat 484 364 662 364 7 arcto 4 {pop} repeat 669 364 669 326 7 arcto 4 {pop} repeat 669 319 491 319 7 arcto 4 {pop} repeat clp gs col-1 s gr
1398 n 11 319 m 4 319 4 357 7 arcto 4 {pop} repeat 4 364 237 364 7 arcto 4 {pop} repeat 244 364 244 326 7 arcto 4 {pop} repeat 244 319 11 319 7 arcto 4 {pop} repeat clp gs col-1 s gr
1399 n 259 210 m 279 210 l  279 320 l gs col-1 s gr
1400 n 281.000 312.000 m 279.000 320.000 l 277.000 312.000 l gs 2 setlinejoin col-1 s gr
1401 n 419 259 m 389 259 l  389 319 l gs col-1 s gr
1402 n 391.000 311.000 m 389.000 319.000 l 387.000 311.000 l gs 2 setlinejoin col-1 s gr
1403 /Times-BoldItalic findfont 12.00 scalefont setfont
1404 399 90 m 
1405 gs 1 -1 scale (No) col-1 show gr
1406 /Times-BoldItalic findfont 12.00 scalefont setfont
1407 254 90 m 
1408 gs 1 -1 scale (Yes) col-1 show gr
1409 /Times-BoldItalic findfont 12.00 scalefont setfont
1410 259 200 m 
1411 gs 1 -1 scale (Yes) col-1 show gr
1412 /Times-BoldItalic findfont 12.00 scalefont setfont
1413 124 200 m 
1414 gs 1 -1 scale (No) col-1 show gr
1415 /Times-BoldItalic findfont 12.00 scalefont setfont
1416 399 150 m 
1417 gs 1 -1 scale (Yes) col-1 show gr
1418 /Times-BoldItalic findfont 12.00 scalefont setfont
1419 489 215 m 
1420 gs 1 -1 scale (No) col-1 show gr
1421 /Times-BoldItalic findfont 12.00 scalefont setfont
1422 544 250 m 
1423 gs 1 -1 scale (Yes) col-1 show gr
1424 /Times-BoldItalic findfont 12.00 scalefont setfont
1425 404 250 m 
1426 gs 1 -1 scale (No) col-1 show gr
1427 /Times-Roman findfont 12.00 scalefont setfont
1428 459 280 m 
1429 gs 1 -1 scale (Writable?) col-1 show gr
1430 /Times-Roman findfont 18.00 scalefont setfont
1431 102 335 m 
1432 gs 1 -1 scale (Return) col-1 show gr
1433 /Times-Roman findfont 18.00 scalefont setfont
1434 547 335 m 
1435 gs 1 -1 scale (Return) col-1 show gr
1436 /Times-Italic findfont 12.00 scalefont setfont
1437 454 164 m 
1438 gs 1 -1 scale (uid) col-1 show gr
1439 /Times-Roman findfont 12.00 scalefont setfont
1440 474 164 m 
1441 gs 1 -1 scale (== 0?) col-1 show gr
1442 /Times-Roman findfont 12.00 scalefont setfont
1443 192 215 m 
1444 gs 1 -1 scale (==) col-1 show gr
1445 /Times-Roman findfont 18.00 scalefont setfont
1446 369 335 m 
1447 gs 1 -1 scale (Return) col-1 show gr
1448 /Times-BoldItalic findfont 18.00 scalefont setfont
1449 487 355 m 
1450 gs 1 -1 scale (~USER) col-1 show gr
1451 /Courier-Bold findfont 18.00 scalefont setfont
1452 549 354 m 
1453 gs 1 -1 scale (.mailspool/) col-1 show gr
1454 /Courier-Bold findfont 18.00 scalefont setfont
1455 542 354 m 
1456 gs 1 -1 scale (/) col-1 show gr
1457 /Courier findfont 11.00 scalefont setfont
1458 461 264 m 
1459 gs 1 -1 scale (.mailspool/) col-1 show gr
1460 /Courier findfont 12.00 scalefont setfont
1461 459 263 m 
1462 gs 1 -1 scale (/) col-1 show gr
1463 /Times-Italic findfont 12.00 scalefont setfont
1464 424 264 m 
1465 gs 1 -1 scale (~USER) col-1 show gr
1466 /Courier findfont 12.00 scalefont setfont
1467 207 215 m 
1468 gs 1 -1 scale (home) col-1 show gr
1469 /Times-Roman findfont 12.00 scalefont setfont
1470 239 215 m 
1471 gs 1 -1 scale (?) col-1 show gr
1472 /Times-Italic findfont 12.00 scalefont setfont
1473 155 215 m 
1474 gs 1 -1 scale (NAME) col-1 show gr
1475 /Times-Roman findfont 18.00 scalefont setfont
1476 341 194 m 
1477 gs 1 -1 scale (Return) col-1 show gr
1478 /Times-Italic findfont 12.00 scalefont setfont
1479 284 102 m 
1480 gs 1 -1 scale (gid) col-1 show gr
1481 /Times-Roman findfont 12.00 scalefont setfont
1482 302 103 m 
1483 gs 1 -1 scale (== HLFS_GID?) col-1 show gr
1484 /Times-Roman findfont 12.00 scalefont setfont
1485 474 249 m 
1486 gs 1 -1 scale (Is) col-1 show gr
1487 /Courier-Bold findfont 18.00 scalefont setfont
1488 322 354 m 
1489 gs 1 -1 scale (/var/alt_mail/) col-1 show gr
1490 /Times-BoldItalic findfont 18.00 scalefont setfont
1491 189 354 m 
1492 gs 1 -1 scale (NAME) col-1 show gr
1493 /Times-BoldItalic findfont 18.00 scalefont setfont
1494 6 353 m 
1495 gs 1 -1 scale (~NAME) col-1 show gr
1496 /Courier-Bold findfont 18.00 scalefont setfont
1497 69 353 m 
1498 gs 1 -1 scale (/) col-1 show gr
1499 /Courier-Bold findfont 18.00 scalefont setfont
1500 73 353 m 
1501 gs 1 -1 scale (.mailspool/) col-1 show gr
1502 /Courier-Bold findfont 18.00 scalefont setfont
1503 300 214 m 
1504 gs 1 -1 scale (/.mailspool/) col-1 show gr
1505 $F2psEnd
1506 %%EndDocument
1507  @endspecial 371 1515 a Fl(Figure)g(1:)j Fk(Hlfsd)c Fl(resolving)h(the)g
1508 Fh(NAME)g Fl(comp)q(onen)o(t)f(of)h Fk(/mail/)p Fh(NAME)p 75
1509 1565 V 175 1707 a Fl(The)c Fk(hlfsd)f Fl(serv)o(er)j(\014nds)f(out)f(the)h
1510 Fh(uid)782 1692 y Fg(2)810 1707 y Fl(of)f(the)h(pro)q(cess)h(that)e(is)g
1511 (accessing)h(its)g(moun)o(t)d(p)q(oin)o(t,)i(and)g(resolv)o(es)75
1512 1756 y(the)j(pathname)e(comp)q(onen)o(t)g Fk(home)g Fl(as)i(a)f(sym)o(b)q
1513 (olic)e(link)h(to)h(a)g(sub)q(directory)h(within)f(the)h(home)e(directory)h
1514 (giv)o(en)75 1806 y(b)o(y)18 b(the)h Fh(uid)p Fl('s)f(en)o(try)h(in)e(the)i
1515 (passw)o(ord)g(\014le.)30 b(See)19 b(T)m(able)f(1.)30 b(If)18
1516 b(the)h Fh(gid)f Fl(of)f(the)i(pro)q(cess)h(that)e(attempts)g(to)75
1517 1856 y(access)c(a)f(mailb)q(o)o(x)d(\014le)i(is)h(a)f(sp)q(ecial)h(one)g
1518 (\(called)f(HLFS)p 976 1856 13 2 v 16 w(GID\),)f(then)j(the)f(serv)o(er)h
1519 (maps)d(the)j(name)d(of)h(the)h(next)p 1795 1863 80 2 v 75
1520 1906 a(pathname)h(comp)q(onen)o(t)h(directly)h(to)g(the)g(user's)g(mailb)q(o)
1521 o(x)d(\(T)m(able)i(2\).)23 b(This)15 b(is)h(necessary)h(so)f(that)g(access)h
1522 (to)75 1956 y(a)d(mailb)q(o)o(x)e(\014le)i(b)o(y)h(users)h(other)f(than)g
1523 (the)g(o)o(wner)g(can)f(succeed.)23 b(The)15 b(serv)o(er)h(has)f(safet)o(y)f
1524 (features)i(in)e(case)i(of)75 2006 y(failures)d(suc)o(h)i(as)f(h)o(ung)g
1525 (\014lesystems)g(or)g(home)e(directory)j(\014lesystems)f(that)g(are)g
1526 (inaccessible)h(or)f(full.)175 2080 y(On)20 b(most)f(of)g(our)h(mac)o(hines,)
1527 g(mail)e(gets)j(deliv)o(ered)f(to)g(the)h(directory)f Fk(/var/spool/mail)p
1528 Fl(.)1720 2065 y Fg(3)1772 2080 y Fl(Man)o(y)75 2130 y(programs,)12
1529 b(including)g(UAs,)i(dep)q(end)h(on)e(that)h(path.)k Fk(Hlfsd)12
1530 b Fl(creates)k(a)d(directory)h Fk(/mail)p Fl(,)f(and)g(moun)o(ts)f(itself)75
1531 2180 y(on)18 b(top)h(of)f(that)h(directory)m(.)32 b Fk(Hlfsd)18
1532 b Fl(implem)o(en)o(ts)f(the)i(path)g(name)e(comp)q(onen)o(t)h(called)g
1533 Fk(home)p Fl(,)h(p)q(oin)o(ting)e(to)75 2230 y(a)f(sub)q(directory)j(of)d
1534 (the)h(user's)h(home)e(directory)m(.)27 b(W)m(e)16 b(ha)o(v)o(e)h(made)e
1535 Fk(/var/spool/mail)f Fl(a)i(sym)o(b)q(olic)f(link)h(to)75 2280
1536 y Fk(/mail/home)p Fl(,)d(so)i(that)g(accessing)h Fk(/var/spool/mail)c
1537 Fl(actually)i(causes)i(access)h(to)e(a)g(sub)q(directory)h(within)e(a)75
1538 2329 y(user's)h(home)e(directory)m(.)175 2404 y(The)20 b(rest)h(of)f(this)g
1539 (pap)q(er)g(is)g(organized)g(as)g(follo)o(ws.)35 b(Section)21
1540 b(2)e(discusses)j(in)e(detail)f(the)i(problems)75 2454 y(and)e(limitations)d
1541 (of)j(other)h(home-mai)o(l-deli)o(v)o(ery)d(metho)q(ds.)34
1542 b(Section)19 b(3)g(detail)g(the)h(design)f(of)g(the)h Fh(Home-)p
1543 75 2488 720 2 v 121 2515 a Ff(1)139 2527 y Fe(In)10 b(Figure)g(1,)h
1544 Fd(~)p Fc(NAME)h Fe(is)f(the)g(home)f(directory)e(of)j(the)g(user)f(whose)h
1545 (user-name)d(is)j Fc(NAME)p Fe(;)i Fd(~)p Fc(USER)e Fe(is)h(the)e(home)g
1546 (directory)75 2566 y(of)h(the)g(user)g(with)g(user-id)f Fc(uid)p
1547 Fe(.)121 2594 y Ff(2)139 2606 y Fe(NFS)h(uses)g(e\013ectiv)o(e)e
1548 Fc(uids)p Fe(.)121 2634 y Ff(3)139 2646 y Fe(Other)i(directories)f(used)h
1549 (for)g(this)h(purp)q(ose)e(are)h Fd(/var/mail)f Fe(on)h(SVR4,)h
1550 Fd(/usr/mail)d Fe(on)j(other)f(System)f(V-based)h(op)q(erating-)75
1551 2685 y(systems,)f(and)g Fd(/usr/spool/)o(mai)o(l)f Fe(on)i(BSD-based)e
1552 (systems.)965 2825 y Fl(2)p eop
1553 %%Page: 3 3
1554 bop 75 4 1800 5 v 229 58 a Fl(Conditions:)17 b Fh(uid)p Fl(=)p
1555 Fk(ezk)p Fl(,)c Fh(gid)p Fi(6)p Fl(=HLFS)p 828 58 13 2 v 16
1556 w(GID,)f(and)i Fk(/users/ezk/.mailsp)o(ool/)c Fl(is)k(writable.)p
1557 157 77 1636 2 v 156 127 2 50 v 165 127 V 190 112 a Fm(Resolving)p
1558 453 127 V 1088 127 V 1784 127 V 1793 127 V 156 177 V 165 177
1559 V 190 162 a(comp)q(onen)o(t)p 453 177 V 58 w(P)o(athname)g(left)p
1560 1088 177 V 337 w(V)l(alue)h(if)g(sym)o(b)q(olic)f(link)p 1784
1561 177 V 1793 177 V 157 179 1636 2 v 157 189 V 156 238 2 50 v
1562 165 238 V 190 223 a Fk(/)p 453 238 V 267 w(var/mail/)p Fh(NAME)p
1563 1088 238 V 1784 238 V 1793 238 V 157 240 1636 2 v 156 290 2
1564 50 v 165 290 V 190 275 a Fk(var)p Fl(/)p 453 290 V 202 w Fk(mail/)p
1565 Fh(NAME)p 1088 290 V 1784 290 V 1793 290 V 157 291 1636 2 v
1566 156 341 2 50 v 165 341 V 190 326 a Fk(mail)p Fl(@)p 453 341
1567 V 169 w Fk(/mail/home/)p Fh(NAME)p 1088 341 V 265 w Fk(mail)p
1568 Fl(@)g Fi(\))f Fk(/mail/home)p 1784 341 V 1793 341 V 157 343
1569 1636 2 v 156 393 2 50 v 165 393 V 190 378 a(/)p 453 393 V 267
1570 w(mail/home/)p Fh(NAME)p 1088 393 V 1784 393 V 1793 393 V 157
1571 394 1636 2 v 156 444 2 50 v 165 444 V 190 429 a Fk(mail)p Fl(/)p
1572 453 444 V 180 w Fk(home/)p Fh(NAME)p 1088 444 V 1784 444 V
1573 1793 444 V 157 446 1636 2 v 156 496 2 50 v 165 496 V 190 481
1574 a Fk(home)p Fl(@)p 453 496 V 169 w Fh(NAME)p 1088 496 V 507
1575 w Fk(home)p Fl(@)h Fi(\))f Fk(/users/ezk/.mailsp)o(ool)p 1784
1576 496 V 1793 496 V 157 497 1636 2 v 156 547 2 50 v 165 547 V
1577 190 532 a(/)p 453 547 V 267 w(users/ezk/.mailsp)o(ool/)o Fh(NAME)p
1578 1088 547 V 1784 547 V 1793 547 V 157 549 1636 2 v 156 599 2
1579 50 v 165 599 V 190 584 a Fk(users)p Fl(/)p 453 599 V 158 w
1580 Fk(ezk/.mailspool/)p Fh(NA)o(ME)p 1088 599 V 1784 599 V 1793
1581 599 V 157 600 1636 2 v 156 650 2 50 v 165 650 V 190 635 a Fk(ezk)p
1582 Fl(/)p 453 650 V 202 w Fk(.mailspool/)p Fh(NAME)p 1088 650
1583 V 1784 650 V 1793 650 V 157 652 1636 2 v 156 702 2 50 v 165
1584 702 V 190 687 a Fk(.mailspool)p Fl(/)p 453 702 V 48 w Fh(NAME)p
1585 1088 702 V 1784 702 V 1793 702 V 157 703 1636 2 v 156 753 2
1586 50 v 165 753 V 190 738 a(NAME)p 453 753 V 1088 753 V 1784 753
1587 V 1793 753 V 157 755 1636 2 v 290 829 a Fl(T)m(able)g(1:)18
1588 b(Resolving)13 b Fk(/var/mail/)p Fh(NAME)f Fl(to)h Fk(/users/ezk/.mailspo)o
1589 (ol/)p Fh(NAME)p 75 879 1800 5 v 75 1000 a(Link)19 b(File)f(System)h
1590 Fl(and)f(Section)g(4)g(describ)q(es)i(the)f(implemen)o(tation)c(of)i
1591 Fk(hlfsd)o Fl(.)31 b(Section)19 b(5)f(ev)n(aluates)g(our)75
1592 1050 y(implemen)o(tatio)o(n.)e(Related)d(systems,)h(conclusions,)g(future)g
1593 (directions,)g(and)g(alternativ)o(e)g(uses)h(are)f(describ)q(ed)75
1594 1100 y(in)f(Sections)i(6)f(and)f(7.)75 1208 y Fj(2)56 b(Bac)n(kground)175
1595 1283 y Fl(This)16 b(section)h(pro)o(vides)f(an)g(in-depth)g(discussion)h(of)f
1596 (wh)o(y)g(a)o(v)n(ailable)d(metho)q(ds)j(for)g(deliv)o(ering)g(mail)d(to)75
1597 1333 y(home)g(directories)i(are)f(not)g(as)g(go)q(o)q(d)f(as)h(the)h(one)f
1598 (used)h(b)o(y)e Fk(hlfsd)o Fl(.)75 1441 y Fj(2.1)56 b(Single-Host)17
1599 b(Mail)h(Sp)r(o)r(ol)g(Directory)175 1516 y Fl(The)d(most)e(common)f(metho)q
1600 (d)i(for)g(mail)e(deliv)o(ery)i(is)h(for)f(mail)e(to)i(b)q(e)h(app)q(ended)h
1601 (to)f(a)f(mailb)q(o)o(x)e(\014le)i(in)g(a)75 1566 y(standard)d(sp)q(o)q(ol)f
1602 (directory)h(on)f(the)h(designated)g(\\mail)c(home")i(mac)o(hine)g(of)h(the)h
1603 (user.)17 b(The)11 b(greatest)h(adv)n(an)o(tage)75 1616 y(of)i(this)h(metho)q
1604 (d)f(is)g(that)h(it)f(is)h(the)g(default)f(metho)q(d)g(most)g(v)o(endors)h
1605 (pro)o(vide)g(with)f(their)h(systems,)g(th)o(us)g(v)o(ery)75
1606 1665 y(little)h(\(if)g(an)o(y\))g(con\014guration)g(is)h(required)g(on)f(the)
1607 i(SA's)e(part.)26 b(All)16 b(they)h(need)h(to)e(set)i(up)e(are)h(mail)d
1608 (aliases)75 1715 y(directing)g(mail)c(to)j(the)h(host)g(on)f(whic)o(h)g(the)h
1609 (user's)h(mailb)q(o)o(x)10 b(\014le)k(is)f(assigned.)18 b(\(Otherwise,)d
1610 (mail)10 b(is)j(deliv)o(ered)75 1765 y(lo)q(cally)m(,)f(and)h(users)j(\014nd)
1611 e(mailb)q(o)o(xes)d(on)j(man)o(y)e(mac)o(hines.\))175 1840
1612 y(As)k(users)i(b)q(ecome)e(more)f(sophisticated,)i(and)f(aided)g(b)o(y)g
1613 (windo)o(wing)f(systems,)i(they)f(\014nd)h(themselv)o(es)75
1614 1890 y(logging)12 b(in)i(on)g(m)o(ultiple)e(hosts)j(at)f(once,)g(p)q
1615 (erforming)f(sev)o(eral)i(tasks)g(concurren)o(tly)m(.)k(They)c(ask)f(to)g(b)q
1616 (e)h(able)f(to)75 1939 y(read)g(their)h(mail)c(on)j(an)o(y)f(host)h(on)g(the)
1617 g(net)o(w)o(ork,)g(not)g(just)g(the)g(one)g(designated)h(as)f(their)g(\\mail)
1618 d(home.")75 2047 y Fj(2.2)56 b(Cen)n(tralized)18 b(Mail)g(Sp)r(o)r(ol)f
1619 (Directory)175 2122 y Fl(A)f(p)q(opular)g(metho)q(d)f(for)h(pro)o(viding)f
1620 (mail)f(readabilit)o(y)h(from)g(an)o(y)h(host)g(is)g(to)h(ha)o(v)o(e)f(all)f
1621 (mail)e(deliv)o(ered)75 2172 y(to)18 b(a)g(mail)e(sp)q(o)q(ol)i(directory)h
1622 (on)f(a)g(designated)h(\\mail-serv)o(er")e(whic)o(h)h(is)g(exp)q(orted)h(via)
1623 f(NFS)g(to)h(all)e(of)g(the)75 2222 y(hosts)f(on)g(the)g(net)o(w)o(ork.)24
1624 b(Con\014guring)15 b(suc)o(h)h(a)f(system)h(is)f(relativ)o(ely)g(easy)m(.)24
1625 b(On)16 b(most)e(systems,)i(the)g(bulk)g(of)75 2272 y(the)i(w)o(ork)f(is)h(a)
1626 f(one-time)f(addition)g(to)i(one)f(or)h(t)o(w)o(o)f(con\014guration)g
1627 (\014les)h(in)f Fk(/etc)p Fl(.)28 b(The)17 b(\014le-serv)o(er's)i(sp)q(o)q
1628 (ol)75 2322 y(directory)d(is)f(then)h(hard-moun)o(ted)e(across)i(ev)o(ery)g
1629 (mac)o(hine)e(on)h(the)h(lo)q(cal)e(net)o(w)o(ork.)22 b(In)16
1630 b(small)d(en)o(vironmen)o(ts)75 2371 y(with)f(only)g(a)g(handful)g(of)g
1631 (hosts)h(this)f(can)h(b)q(e)g(an)f(acceptable)i(solution.)i(In)d(our)f
1632 (departmen)o(t,)h(with)f(a)g(couple)h(of)75 2421 y(h)o(undred)j(activ)o(e)f
1633 (hosts)h(and)f(thousands)g(of)g(mail)d(messages)j(pro)q(cessed)j(daily)m(,)13
1634 b(this)i(w)o(as)g(deemed)g(completely)75 2471 y(unacceptable,)g(as)f(it)f(in)
1635 o(tro)q(duced)i(sev)o(eral)f(t)o(yp)q(es)h(of)e(problems:)137
1636 2587 y Fi(\017)21 b Fm(Scalabili)o(t)o(y)12 b(and)i(P)o(erformance)p
1637 Fl(:)h(as)d(more)g(and)h(more)f(mac)o(hines)g(get)h(added)g(to)g(the)g(net)o
1638 (w)o(ork,)g(more)179 2637 y(mail)7 b(tra\016c)j(has)g(to)g(go)f(o)o(v)o(er)h
1639 (NFS)g(to)g(and)g(from)e(the)j(mail-serv)o(er.)k(Users)c(lik)o(e)f(to)f(run)i
1640 (mail-w)o(a)o(tc)o(hers[2)n(,)f(7)o(])179 2687 y(and)g(read)i(their)f(mail)d
1641 (often.)17 b(The)11 b(stress)i(on)d(the)i(shared)g(infrastructure)g
1642 (increases)g(with)f(ev)o(ery)g(user)h(and)965 2825 y(3)p eop
1643 %%Page: 4 4
1644 bop 179 42 a Fl(host)14 b(added;)f(loads)g(on)h(the)g(mail)d(serv)o(er)k(w)o
1645 (ould)e(most)f(certainly)i(b)q(e)g(high)f(since)i(all)d(mail)f(deliv)o(ery)j
1646 (go)q(es)179 91 y(through)i(that)h(one)g(mac)o(hine.)672 76
1647 y Fg(4)715 91 y Fl(This)g(leads)g(to)f(lo)o(w)o(er)g(reliabilit)o(y)f(and)h
1648 (p)q(erformance.)26 b(T)m(o)16 b(reduce)i(the)179 141 y(n)o(um)o(b)q(er)11
1649 b(of)g(concurren)o(t)j(connections)f(b)q(et)o(w)o(een)g(clien)o(ts)f(and)g
1650 (the)h(serv)o(er)g(host,)f(some)f(SAs)i(ha)o(v)o(e)e(resorted)179
1651 191 y(to)16 b(automoun)o(ting)e(the)j(mail-sp)q(o)q(ol)c(directory)m(.)26
1652 b(But)17 b(this)g(solution)e(only)h(mak)o(es)f(things)h(w)o(orse:)24
1653 b(since)179 241 y(users)15 b(often)e(run)h(mail)d(w)o(atc)o(hers,)j(and)f
1654 (man)o(y)e(p)q(opular)i(applications)g(suc)o(h)h(as)f Fk(trn)p
1655 Fl(,)g Fk(emacs)p Fl(,)f Fk(csh)g Fl(or)i Fk(ksh)179 291 y
1656 Fl(c)o(hec)o(k)h(p)q(erio)q(dically)f(for)g(new)h(mail,)d(the)j(automoun)o
1657 (ted)e(directory)i(w)o(ould)f(b)q(e)h(e\013ectiv)o(ely)h(p)q(ermanen)o(tly)
1658 179 340 y(moun)o(ted.)g(If)c(it)g(gets)i(unmoun)o(ted)d(automatically)e(b)o
1659 (y)k(the)g(automoun)o(ter)e(program[3)n(],)h(it)g(is)g(most)f(lik)o(ely)179
1660 390 y(to)17 b(get)h(moun)o(ted)e(shortly)i(afterw)o(ards,)g(consuming)e(more)
1661 h(I/O)g(resources)j(b)o(y)d(the)h(constan)o(t)g(cycle)h(of)179
1662 440 y Fk(mount)13 b Fl(and)g Fk(umount)g Fl(calls.)137 523
1663 y Fi(\017)21 b Fm(Reliabil)o(i)o(t)o(y)p Fl(:)16 b(the)f(mail-serv)o(er)f
1664 (host)h(and)f(its)h(net)o(w)o(ork)f(connectivit)o(y)h(m)o(ust)f(b)q(e)h(v)o
1665 (ery)g(reliable.)k(W)m(orse,)179 573 y(since)g(the)g(sp)q(o)q(ol)f(directory)
1666 h(has)f(to)g(b)q(e)h(hard-moun)o(ted,)1117 558 y Fg(5)1153
1667 573 y Fl(man)o(y)d(pro)q(cesses)21 b(whic)o(h)d(access)i(the)f(sp)q(o)q(ol)
1668 179 623 y(directory)f(\(v)n(arious)e(shells,)i Fk(login)p Fl(,)f
1669 Fk(emacs)p Fl(,)f(etc.\))30 b(w)o(ould)16 b(b)q(e)i(h)o(ung)f(as)g(long)g(as)
1670 g(connectivit)o(y)g(to)g(the)179 672 y(mail-serv)o(er)9 b(is)h(sev)o(ered.)19
1671 b(T)m(o)10 b(impro)o(v)o(e)f(reliabilit)o(y)m(,)f(SAs)j(ma)o(y)e(c)o(ho)q
1672 (ose)i(to)f(bac)o(kup)h(the)g(mail-serv)o(er's)e(sp)q(o)q(ol)179
1673 722 y(partition)16 b(sev)o(eral)h(times)g(a)f(da)o(y)m(.)27
1674 b(This)17 b(ma)o(y)e(mak)o(e)g(things)i(w)o(orse)h(since)f(reading)g(or)g
1675 (deliv)o(ering)g(mail)179 772 y(while)e(bac)o(kups)h(are)g(in)f(progress)i
1676 (ma)o(y)d(cause)j(bac)o(kups)f(to)f(b)q(e)i(inconsisten)o(t;)f(more)f(bac)o
1677 (kups)h(consume)179 822 y(more)d(bac)o(kup-media)f(resources,)k(and)d
1678 (increase)j(the)e(load)f(on)h(the)g(mail-serv)o(er)f(host.)75
1679 946 y Fj(2.3)56 b(Distributed)17 b(Mail)h(Sp)r(o)r(ol)g(Service)175
1680 1022 y Fl(Despite)d(the)f(existence)i(of)e(a)g(few)g(systems)h(that)f(supp)q
1681 (ort)h(deliv)o(ery)f(to)h(users')g(home)e(directories,)1763
1682 1007 y Fg(6)1797 1022 y Fl(mail)75 1071 y(deliv)o(ery)18 b(to)f(home)g
1683 (directories)i(hasn't)e(caugh)o(t)h(on.)29 b(W)m(e)17 b(b)q(eliev)o(e)i(the)f
1684 (main)d(reason)k(is)e(that)h(there)h(are)f(to)q(o)75 1121 y(man)o(y)12
1685 b(programs)h(that)h(\\kno)o(w")g(where)h(mailb)q(o)o(x)c(\014les)k(reside.)20
1686 b(Besides)15 b(the)g(ob)o(vious)f(\(the)h(deliv)o(ery)f(program)75
1687 1171 y Fk(/bin/mail)9 b Fl(and)i(mail)e(readers)k(lik)o(e)d
1688 Fk(/usr/ucb/Mail)p Fl(,)f Fk(mush)p Fl(,)h Fk(mm)p Fl(,)h(etc.\),)h(other)g
1689 (programs)e(that)h(kno)o(w)g(mailb)q(o)o(x)75 1221 y(lo)q(cation)g(are)g
1690 Fk(login)p Fl(,)g Fk(from)p Fl(,)g(almost)e(ev)o(ery)j(shell,)g
1691 Fk(xbiff)p Fl(,)e Fk(xmailbox)p Fl(,)g(and)h(ev)o(en)h(some)f(programs)f(not)
1692 i(directly)75 1271 y(related)h(to)g(mail,)c(suc)o(h)14 b(as)f
1693 Fk(emacs)e Fl(and)i Fk(trn)p Fl(.)k(Although)12 b(some)f(of)h(these)i
1694 (programs)e(can)h(b)q(e)g(con\014gured)g(to)g(lo)q(ok)75 1320
1695 y(in)18 b(di\013eren)o(t)h(directories)g(with)f(the)g(use)h(of)e(en)o
1696 (vironmen)o(t)g(v)n(ariables)h(and)g(other)g(resources,)j(man)o(y)16
1697 b(of)i(them)75 1370 y(cannot.)g(The)d(o)o(v)o(erall)d(p)q(orting)i(w)o(ork)f
1698 (is)h(signi\014can)o(t.)175 1445 y(Other)g(metho)q(ds)f(that)g(ha)o(v)o(e)g
1699 (y)o(et)g(to)g(catc)o(h)h(on)f(require)h(the)g(use)g(of)e(a)h(sp)q(ecial)h
1700 (mail-reading)c(serv)o(er,)k(suc)o(h)75 1495 y(as)g(IMAP[16)o(])f(or)h(POP)q
1701 ([17)o(].)j(The)d(main)e(disadv)n(an)o(tage)h(of)g(these)i(systems)f(is)f
1702 (that)h(UAs)g(need)h(to)e(b)q(e)h(mo)q(di\014ed)75 1545 y(to)i(use)h(these)g
1703 (services)h(|)d(a)h(long)f(and)h(in)o(v)o(olv)o(ed)f(task.)24
1704 b(That)16 b(is)g(wh)o(y)f(they)i(are)f(not)g(p)q(opular)g(at)g(this)g(time.)
1705 75 1594 y(See)f(Section)f(6.1)f(for)h(more)e(details.)175 1669
1706 y(Sev)o(eral)h(other)i(ideas)e(ha)o(v)o(e)h(b)q(een)g(prop)q(osed)h(and)e(ev)
1707 o(en)h(used)h(in)e(v)n(arious)g(en)o(vironmen)o(ts.)k(None)d(of)f(them)75
1708 1719 y(is)g(robust.)18 b(They)c(are)g(mostly)d(v)o(ery)j(sp)q(ecialized,)f
1709 (in\015exible,)g(and)g(do)g(not)g(extend)h(to)f(the)h(general)f(case.)19
1710 b(Some)75 1769 y(of)13 b(the)i(ideas)f(are)g(plain)f(bad,)g(p)q(oten)o
1711 (tially)g(leading)g(to)h(lost)f(or)h(corrupt)h(mail:)137 1885
1712 y Fi(\017)21 b Fm(automoun)o(ter)o(s)p Fl(:)14 b(using)f(an)f(automoun)o(ter)
1713 f(suc)o(h)i(as)g Fk(amd)p Fl([13)n(])f(to)g(pro)o(vide)g(a)g(set)i(of)d(sym)o
1714 (b)q(olic)g(links)h(from)179 1935 y(the)h(normal)e(sp)q(o)q(ol)i(directory)g
1715 (to)g(user)h(home)d(directories)j(is)f(not)g(su\016cien)o(t.)18
1716 b(UAs)13 b(rename,)f(unlink,)g(and)179 1985 y(recreate)20 b(the)f(mailb)q(o)o
1717 (x)c(as)k(a)f(regular)g(\014le,)h(therefore)g(it)f(m)o(ust)f(b)q(e)i(a)f
1718 (real)g(\014le,)h(not)f(a)g(sym)o(b)q(olic)e(link.)179 2034
1719 y(F)m(urthermore,)d(it)g(m)o(ust)f(reside)j(in)e(a)g(real)g(directory)i(whic)
1720 o(h)e(is)g(writable)g(b)o(y)h(the)g(UAs)g(and)f(MT)m(As.)18
1721 b(This)179 2084 y(metho)q(d)c(ma)o(y)g(also)h(require)h(p)q(opulating)e
1722 Fk(/var/spool/mail)e Fl(with)j(sym)o(b)q(olic)f(links)h(and)g(making)e(sure)
1723 179 2134 y(they)j(are)g(up)q(dated.)24 b(Making)15 b Fk(amd)g
1724 Fl(manage)f(that)i(directory)g(directly)g(fails,)f(since)i(man)o(y)c(v)n
1725 (arious)i(lo)q(c)o(k)179 2184 y(\014les)g(need)g(to)g(b)q(e)g(managed)e(as)h
1726 (w)o(ell)g(\(see)i(Section)f(4.6\).)k(Also,)14 b Fk(amd)g Fl(do)q(es)h(not)g
1727 (pro)o(vide)f(all)g(of)g(the)h(NFS)179 2234 y(op)q(erations)f(whic)o(h)g(are)
1728 g(required)h(to)f(write)g(mail)d(suc)o(h)k(as)f Fh(write)p
1729 Fl(,)e Fh(cr)n(e)n(ate)p Fl(,)h Fh(r)n(emove)p Fl(,)g(and)g
1730 Fh(unlink)p Fl(.)137 2317 y Fi(\017)21 b Fm($MAIL)p Fl(:)15
1731 b(setting)g(this)h(v)n(ariable)e(to)h(an)h(automoun)o(ted)e(directory)i(p)q
1732 (oin)o(ting)e(to)h(the)h(user's)g(mail)d(sp)q(o)q(ol)179 2367
1733 y(host)g(only)f(solv)o(es)i(the)f(problem)f(for)h(those)g(programs)f(whic)o
1734 (h)h(kno)o(w)f(and)h(use)h($MAIL.)f(Man)o(y)f(programs)179
1735 2416 y(don't,)j(therefore)i(this)e(solution)g(is)g(partial)g(and)g(of)g
1736 (limited)e(\015exibilit)o(y)m(.)21 b(Also,)15 b(it)g(requires)i(the)f(SAs)g
1737 (or)179 2466 y(the)e(users)i(to)d(set)i(it)f(themselv)o(es)g(|)f(an)h(added)g
1738 (lev)o(el)f(of)h(incon)o(v)o(enience)g(and)g(p)q(ossible)g(failures.)p
1739 75 2501 720 2 v 121 2528 a Ff(4)139 2539 y Fe(Deliv)o(ery)8
1740 b(via)i(NFS-moun)o(ted)e(\014lesystems)h(ma)o(y)g(require)g(usage)h(of)g
1741 Fd(rpc.lockd)e Fe(and)i Fd(rpc.statd)d Fe(to)k(pro)o(vide)d(distributed)g
1742 (\014le-)75 2579 y(lo)q(c)o(king,)j(b)q(oth)g(of)i(whic)o(h)f(are)g(widely)f
1743 (regarded)g(as)h(unstable)f(and)g(unreliable.)16 b(F)m(urthermore,)10
1744 b(this)i(will)h(degrade)d(p)q(erformance)o(,)75 2618 y(as)h(lo)q(cal)g(pro)q
1745 (cesses)e(as)i(w)o(ell)h(as)f(remote)f Fd(nfsd)g Fe(pro)q(cesses)g(are)h(k)o
1746 (ept)f(busy)m(.)121 2646 y Ff(5)139 2658 y Fe(No)h(SA)h(in)f(their)g(righ)o
1747 (t)f(minds)g(w)o(ould)h(soft-moun)o(t)e(read/write)g(partitions)g(|)j(the)f
1748 (c)o(hances)e(for)i(data)g(loss)g(are)g(to)q(o)f(great.)121
1749 2686 y Ff(6)139 2697 y Fe(AIX)i(1.2's)e Fd(bellmail)f Fe(for)i(the)g(IBM)h
1750 (PS/2)p Fc(s)p Fe([9)n(],)f Fd(/bin/mail)e Fe(on)i(SunOS)f(for)h(the)g(Sun)f
1751 (386i)h(mac)o(hines,)e(and)h Fd(zmailer)p Fe([27)m(].)965 2825
1752 y Fl(4)p eop
1753 %%Page: 5 5
1754 bop 137 42 a Fi(\017)21 b Fm(/bin/mail)o Fl(:)h(using)17 b(a)g(di\013eren)o
1755 (t)h(mail)d(deliv)o(ery)i(agen)o(t)g(could)g(b)q(e)h(the)g(solution.)27
1756 b(One)18 b(suc)o(h)g(example)179 91 y(is)h Fk(hdmail)p Fl([6)n(].)34
1757 b(Ho)o(w)o(ev)o(er,)21 b Fk(hdmail)d Fl(still)h(requires)h(mo)q(difying)d
1758 (all)h(UAs,)j(the)f(MT)m(A's)f(con\014guration,)179 141 y(installing)c(new)i
1759 (daemons,)e(and)i(c)o(hanging)e(login)h(scripts.)27 b(This)16
1760 b(mak)o(es)g(the)h(system)f(less)h(upgradable)179 191 y(or)f(compatible)f
1761 (with)i(others,)h(and)e(adds)h(one)g(more)f(complicated)f(system)h(for)h(SAs)
1762 g(to)f(deal)h(with.)26 b(It)179 241 y(is)14 b(not)g(a)g(complete)g(solution)g
1763 (b)q(ecause)i(it)e(still)f(requires)j(eac)o(h)f(user)g(ha)o(v)o(e)g(their)f
1764 ($MAIL)h(v)n(ariable)e(setup)179 291 y(correctly)m(,)h(and)g(that)g(ev)o(ery)
1765 g(program)e(use)j(this)f(v)n(ariable.)75 415 y Fj(2.3.1)55
1766 b(Wh)n(y)19 b(Deliv)n(er)e(In)n(to)i(the)f(Home)f(Directory?)175
1767 490 y Fl(There)g(are)f(sev)o(eral)g(ma)r(jor)e(reasons)j(wh)o(y)f(SAs)g(migh)
1768 o(t)e(w)o(an)o(t)h(to)h(deliv)o(er)g(mail)d(directly)j(in)o(to)f(the)i
1769 (users')75 540 y(home)c(directories:)137 656 y Fi(\017)21 b
1770 Fm(Lo)q(cation)p Fl(:)16 b(man)o(y)c(mail)g(readers)j(need)g(to)f(mo)o(v)o(e)
1771 e(mail)f(from)h(the)j(sp)q(o)q(ol)e(directory)i(to)f(the)g(user's)h(home)179
1772 706 y(directory)m(.)j(It)13 b(sp)q(eeds)h(up)f(this)g(op)q(eration)g(if)e
1773 (the)j(t)o(w)o(o)e(are)h(on)g(the)g(same)f(\014lesystem.)18
1774 b(If)12 b(for)g(some)g(reason)179 756 y(the)19 b(user's)g(home)e(directory)i
1775 (is)g(inaccessible,)h(it)e(isn't)g(that)g(useful)g(to)h(b)q(e)g(able)f(to)g
1776 (read)h(mail,)d(since)179 806 y(there)f(is)e(no)g(place)h(to)f(mo)o(v)o(e)f
1777 (it)i(to.)737 791 y Fg(7)773 806 y Fl(In)f(some)g(cases,)i(trying)e(to)g(mo)o
1778 (v)o(e)f(mail)f(to)i(a)h(non-existen)o(t)g(or)f(h)o(ung)179
1779 856 y(\014lesystem)g(ma)o(y)f(result)j(in)f(mail)d(loss.)137
1780 939 y Fi(\017)21 b Fm(Distrib)o(uti)o(on)o Fl(:)27 b(ha)o(ving)19
1781 b(all)f(mail)f(sp)q(o)q(ol)j(directories)h(spread)f(among)e(the)i(man)o(y)e
1782 (more)h(\014lesystems)179 988 y(minim)o(izes)14 b(the)j(c)o(hances)h(that)f
1783 (complete)f(en)o(vironmen)o(ts)g(will)f(grind)h(to)g(a)g(halt)g(when)h(a)f
1784 (single)g(serv)o(er)179 1038 y(is)e(do)o(wn.)19 b(It)c(do)q(es)g(increase)g
1785 (the)g(c)o(hance)h(that)e(there)i(will)d(b)q(e)i(someone)f(who)g(is)g(not)g
1786 (able)g(to)h(read)g(their)179 1088 y(mail)d(when)j(a)g(mac)o(hine)e(is)i(do)o
1787 (wn,)f(but)h(that)g(is)g(usually)f(preferred)j(to)d(ha)o(ving)g(no)h(one)g(b)
1788 q(e)g(able)g(to)f(read)179 1138 y(their)j(mail)e(b)q(ecause)k(a)d(cen)o
1789 (tralized)i(mail)d(serv)o(er)k(is)d(do)o(wn.)28 b(The)17 b(problem)f(of)h
1790 (losing)f(some)g(mail)e(due)179 1188 y(to)i(the)h(\(presumably\))f(higher)g
1791 (c)o(hances)i(that)e(a)g(user's)i(mac)o(hine)d(is)h(do)o(wn)g(is)g(minimi)o
1792 (zed)e(in)i(HLFS)h(as)179 1237 y(describ)q(ed)e(in)f(Sections)h(4.3)d(and)i
1793 (4.4.)137 1320 y Fi(\017)21 b Fm(Securit)o(y)p Fl(:)e(deliv)o(ering)d(mail)d
1794 (to)j(users')g(home)f(directories)i(has)f(another)h(adv)n(an)o(tage)e(|)g
1795 (enhanced)i(se-)179 1370 y(curit)o(y)e(and)g(priv)n(acy)m(.)21
1796 b(Since)15 b(a)g(shared)h(system)f(mail)d(sp)q(o)q(ol)j(directory)h(has)f(to)
1797 g(b)q(e)h(w)o(orld-readable)e(and)179 1420 y(searc)o(hable,)376
1798 1405 y Fg(8)407 1420 y Fl(an)o(y)d(user)i(can)f(see)i(whether)f(other)f
1799 (users)h(ha)o(v)o(e)f(mail,)d(when)k(they)f(last)g(receiv)o(ed)h(new)f(mail,)
1800 179 1470 y(or)j(when)h(they)g(last)f(read)h(their)g(mail.)k(Programs)14
1801 b(suc)o(h)i(as)g Fk(finger)e Fl(displa)o(y)g(this)i(information,)c(whic)o(h)
1802 179 1520 y(some)f(consider)i(an)f(infringemen)o(t)f(of)h(priv)n(acy)m(.)k
1803 (While)c(it)g(is)g(p)q(ossible)g(to)g(disable)g(this)h(feature)g(of)e
1804 Fk(finger)179 1570 y Fl(so)16 b(that)f(remote)g(users)j(cannot)d(see)i(a)f
1805 (mailb)q(o)o(x)c(\014le's)k(status,)g(this)g(do)q(esn't)g(prev)o(en)o(t)h(lo)
1806 q(cal)e(users)i(from)179 1619 y(getting)d(the)g(information.)i(F)m
1807 (urthermore,)e(there)h(are)g(more)e(programs)g(whic)o(h)h(mak)o(e)e(use)j(of)
1808 f(this)g(infor-)179 1669 y(mation.)24 b(In)17 b(shared)h(en)o(vironmen)o(ts,)
1809 e(disabling)f(suc)o(h)j(programs)d(has)i(to)g(b)q(e)g(done)g(on)g(a)f
1810 (system-wide)179 1719 y(basis,)i(but)g(with)g(mail)d(deliv)o(ered)j(to)g
1811 (users')h(home)e(directories,)i(users)h(less)e(concerned)i(with)d(priv)n(acy)
1812 179 1769 y(who)f Fh(do)g Fl(w)o(an)o(t)f(to)h(let)g(others)h(kno)o(w)f(when)g
1813 (they)h(last)f(receiv)o(ed)h(or)f(read)g(mail)e(can)i(easily)f(do)h(so)g
1814 (using)179 1819 y(\014le)e(protection)i(bits.)k(Lastly)m(,)14
1815 b(on)g(systems)h(that)g(do)f(not)h(exp)q(ort)g(their)g(NFS)g(\014lesystem)f
1816 (with)h Fk(anon=0)p Fl(,)179 1868 y(sup)q(erusers)f(are)e(less)g(lik)o(ely)d
1817 (to)j(sno)q(op)f(around)g(others')h(mail,)d(as)i(they)h(b)q(ecome)f(\\nob)q
1818 (o)q(dies")g(across)h(NFS.)175 1985 y(In)j(summary)m(,)e(deliv)o(ering)i
1819 (mail)d(to)k(home)e(directories)j(pro)o(vides)f(users)h(the)f(functionalit)o
1820 (y)e(sough)o(t,)h(and)75 2034 y(also)e(a)o(v)o(oids)g(most)g(of)g(the)i
1821 (problems)e(discussed)i(in)f(Section)g(2.2.)75 2142 y Fj(3)56
1822 b(Design)175 2218 y Fl(W)m(e)16 b(named)f(our)h(\014le)h(system)f(the)h
1823 Fh(Home-Link)h(File)e(System)p Fl(,)h(b)q(ecause)h(that's)f(all)e(it)h(do)q
1824 (es)h(|)f(pro)o(vide)75 2267 y(sym)o(b)q(olic)11 b(links)g(to)i(\014les)f
1825 (and)h(directories)g(in)f(a)g(user's)i(home)d(directory)m(.)18
1826 b(The)13 b(soft)f(link)f(has)i(a)f(\014xed)h(name,)e(but)75
1827 2317 y(unlik)o(e)16 b(regular)h(soft)g(links,)f(what)h(it)f(p)q(oin)o(ts)h
1828 (to)f(is)h(\\dynamic")e(dep)q(ending)i(on)f(who)h(accesses)i(the)f(sym)o(b)q
1829 (olic)75 2367 y(link.)25 b(The)18 b(ideas)e(that)h(this)g(\014lesystem)f
1830 (represen)o(ts)k(are)d(not)f(limited)f(just)i(to)f(handling)g(electronic)h
1831 (mail)d(|)75 2417 y(that)g(is)g(only)f(one)h(application)e(of)i(this)g
1832 (\014lesystem.)j(See)e(Sections)g(7.1)e(and)g(7.2)g(for)h(other)g(ideas.)175
1833 2491 y(Our)g(k)o(ey)g(goals)f(in)g(designing)h(HLFS)g(w)o(ere:)p
1834 75 2526 720 2 v 121 2553 a Ff(7)139 2565 y Fe(This)e(assumes)f(that)h(they)g
1835 (can)g(login)f(to)i(a)f(di\013eren)o(t)f(host.)18 b(Some)11
1836 b(systems,)g(suc)o(h)h(as)h(HP-UX,)h(do)e(not)g(allo)o(w)g(login)g(if)g(they)
1837 75 2604 y(cannot)e Fd(chdir)g Fe(to)h(the)g(user's)f(home)g(directory)m(.)121
1838 2632 y Ff(8)139 2644 y Fe(System)g(V)i(has)g(the)f(mail)g(sp)q(o)q(ol)f
1839 (directory)g(only)h(group)f(writable)h(but)g(that)g(mak)o(es)f(it)i(more)f
1840 (di\016cult)g(to)g(install)g(other)f(UAs)75 2683 y(or)h(MT)m(As.)965
1841 2825 y Fl(5)p eop
1842 %%Page: 6 6
1843 bop 126 42 a Fl(1.)20 b(T)m(o)13 b(pro)o(vide)h(ev)o(ery)g(user)h(with)f(the)
1844 g(abilit)o(y)e(to)i(read)h(mail)c(from)h(an)o(y)h(host.)126
1845 125 y(2.)20 b(T)m(o)14 b(ensure)j(that)f(all)e(MT)m(As)h(and)g(UAs)h(in)f
1846 (use,)h(as)f(w)o(ell)g(as)g(an)o(y)g(other)h(utilities)f(whic)o(h)g(dep)q
1847 (end)h(on)f(the)179 174 y(standard)f(mail)d(sp)q(o)q(ol)i(directory)m(,)g
1848 (face)h(no)g(problems)e(from)g(the)i(c)o(hange)g(in)f(the)h(underlying)g
1849 (\014lesystem.)126 257 y(3.)20 b(T)m(o)13 b(minim)o(ize)e(the)k(p)q
1850 (ossibilit)o(y)e(of)g(mail)e(b)q(eing)j(lost)g(or)f(b)q(ouncing)h(bac)o(k)g
1851 (to)g(the)g(sender.)126 340 y(4.)20 b(T)m(o)13 b(pro)o(vide)h(more)e(priv)n
1852 (acy)i(for)f(users')i(mail)d(\014les.)175 457 y(Since)g(most)f(sites)i(pro)o
1853 (vide)f(access)i(to)e(users')i(home)c(directories)k(from)c(an)o(y)i(host,)g
1854 (it)g(made)f(sense)j(to)e(store)75 506 y(incoming)f(mail)g(there)k(as)f(w)o
1855 (ell.)j(That)c(w)o(a)o(y)m(,)f(as)i(long)f(as)g(users)i(could)f(log)e(in)o
1856 (to)h(a)h(host)f(and)h(access)h(their)f(home)75 556 y(directories)f(via)e
1857 (NFS,)h(their)g(mail)d(w)o(ould)i(b)q(e)h(accessible)h(as)f(w)o(ell.)17
1858 b(This)11 b(solv)o(ed)h(the)g(\014rst)h(problem.)j(Also,)11
1859 b(since)75 606 y(users)16 b(m)o(ust)e(login)f(in)i(order)g(to)g(read)g(their)
1860 g(mail,)d(causing)i(their)i(home)d(directories)j(to)f(b)q(e)g(automoun)o
1861 (ted,)e(no)75 656 y(extra)h(moun)o(ts)f(are)h(required)h(in)f(order)g(to)g(b)
1862 q(egin)g(reading)f(mail.)175 731 y(The)f(second)g(problem)f(w)o(as)g(solv)o
1863 (ed)h(b)o(y)f(making)e(sure)k(that)f(the)g(\014nal)f(access)j(of)d(the)h
1864 (mail)d(sp)q(o)q(ol)i(directory)75 780 y(remains)17 b(a)g(\\real")h
1865 (directory)g(\(not)g(a)g(read-only)f(pseudo-\014lesystem)i(pro)o(vided)f(b)o
1866 (y)f(an)h(automoun)o(ter\).)29 b(All)75 830 y(UAs)20 b(access)h(the)f(sp)q(o)
1867 q(ol)f(directory)h(for)f(reading)g(and)h(writing)e(the)i(user's)h(mail)16
1868 b(\014le)k(and)f(create)i(lo)q(c)o(k)e(\014les)75 880 y(there.)178
1869 865 y Fg(9)217 880 y Fl(That)14 b(means)f(that)h Fk(/var/spool/mail)d
1870 Fl(needs)16 b(to)e(b)q(e)g(readable,)g(writable,)g(and)g(searc)o(hable)h(for)
1871 e(UAs)75 930 y(and)i(MT)m(As)g(so)g(that)g(lo)q(c)o(k)f(\014les)h(can)g(b)q
1872 (e)h(written)f(and)g(remo)o(v)o(ed.)20 b(See)c(also)e(Section)i(4.6.)k(F)m
1873 (or)14 b(the)i(purp)q(ose)g(of)75 980 y(writing)g(the)i(mail)c(and)j(lo)q(c)o
1874 (k)g(\014les,)g(a)g(sub)q(directory)h(inside)f(the)h(user's)g(home)e
1875 (directory)i(is)e(su\016cien)o(t,)i(since)75 1029 y(it)d(is)f(already)h(o)o
1876 (wned)g(b)o(y)g(that)g(user.)22 b(Ensuring)15 b(that)g(users)i(cannot)e
1877 (access)i(other)e(users')h(\014les)g(can)f(easily)f(b)q(e)75
1878 1079 y(ac)o(hiev)o(ed)g(b)o(y)g(protecting)g(this)g(sub)q(directory)m(.)175
1879 1154 y(In)h(order)i(not)f(to)g(c)o(hange)g(the)g(b)q(eha)o(vior)g(of)f
1880 (programs)g(lik)o(e)g Fk(comsat)p Fl([21)m(,)h(23)o(],)g Fk(from)f
1881 Fl(or)g Fk(finger)p Fl(,)g(whic)o(h)75 1204 y(are)j(designed)g(to)g(read)g
1882 (an)o(y)f(user's)h(mail,)e(w)o(e)i(implem)o(en)o(ted)e(a)h(sp)q(ecial)h(c)o
1883 (hec)o(k)h(for)e(a)g(designated)h(group.)29 b(If)75 1254 y(the)17
1884 b(e\013ectiv)o(e)g Fh(gid)f Fl(of)g(the)g(pro)q(cess)i(is)e(the)h(designated)
1885 g(group,)f(w)o(e)g(assume)g(that)g(suc)o(h)h(a)e(sp)q(ecial)i(program)d(is)75
1886 1303 y(executing,)20 b(and)e Fk(hlfsd)f Fl(arranges)i(to)f(do)g(the)h(lo)q
1887 (okup)f(not)g(only)g(of)f(the)i(real)g(sp)q(o)q(ol)f(directory)m(,)h(but)g
1888 (of)e(the)75 1353 y(mailb)q(o)o(x)f(itself.)34 b(See)20 b(T)m(able)e(2.)33
1889 b(Note)20 b(that)f(this)g(metho)q(d)g(only)f(supp)q(orts)i(read)g(access)h
1890 (without)d(lo)q(c)o(king;)p 75 1415 1800 5 v 607 1469 a(Conditions:)f
1891 Fh(gid)p Fl(=HLFS)p 1027 1469 13 2 v 15 w(GID)d(for)f(an)o(y)h
1892 Fh(uid)p Fl(.)p 206 1487 1538 2 v 205 1537 2 50 v 214 1537
1893 V 239 1522 a Fm(Resolving)p 502 1537 V 919 1537 V 1735 1537
1894 V 1744 1537 V 205 1587 V 214 1587 V 239 1572 a(comp)q(onen)o(t)p
1895 502 1587 V 58 w(P)o(athname)g(left)p 919 1587 V 120 w(V)l(alue)g(if)h(sym)o
1896 (b)q(olic)f(link)p 1735 1587 V 1744 1587 V 206 1589 1538 2
1897 v 206 1599 V 205 1648 2 50 v 214 1648 V 239 1633 a Fk(/)p 502
1898 1648 V 267 w(var/mail/)p Fh(NAME)p 919 1648 V 1735 1648 V 1744
1899 1648 V 206 1650 1538 2 v 205 1700 2 50 v 214 1700 V 239 1685
1900 a Fk(var)p Fl(/)p 502 1700 V 202 w Fk(mail/)p Fh(NAME)p 919
1901 1700 V 1735 1700 V 1744 1700 V 206 1701 1538 2 v 205 1751 2
1902 50 v 214 1751 V 239 1736 a Fk(mail)p Fl(@)p 502 1751 V 169
1903 w Fk(/mail/home/)p Fh(NAME)p 919 1751 V 48 w Fk(mail)p Fl(@)f
1904 Fi(\))g Fk(/mail/home)p 1735 1751 V 1744 1751 V 206 1753 1538
1905 2 v 205 1803 2 50 v 214 1803 V 239 1788 a(/)p 502 1803 V 267
1906 w(mail/home/)p Fh(NAME)p 919 1803 V 1735 1803 V 1744 1803 V
1907 206 1804 1538 2 v 205 1854 2 50 v 214 1854 V 239 1839 a Fk(mail)p
1908 Fl(/)p 502 1854 V 180 w Fk(home/)p Fh(NAME)p 919 1854 V 1735
1909 1854 V 1744 1854 V 206 1856 1538 2 v 205 1906 2 50 v 214 1906
1910 V 239 1891 a Fk(home)p Fl(@)p 502 1906 V 169 w Fh(NAME)p 919
1911 1906 V 290 w Fk(home)p Fl(@)g Fi(\))g Fk(.)p 1735 1906 V 1744
1912 1906 V 206 1907 1538 2 v 205 1957 2 50 v 214 1957 V 239 1942
1913 a(.)p Fl(/)p 502 1957 V 246 w Fh(NAME)p 919 1957 V 1735 1957
1914 V 1744 1957 V 206 1959 1538 2 v 206 1969 V 205 2019 2 50 v
1915 214 2019 V 239 2004 a(NAME)p Fl(@)p 502 2019 V 919 2019 V 547
1916 w Fh(NAME)p Fl(@)h Fi(\))f Fk(~)p Fh(NAME)p Fk(/.mailspool/)p
1917 Fh(NAME)p 1735 2019 V 1744 2019 V 206 2020 1538 2 v 205 2070
1918 2 50 v 214 2070 V 239 2055 a Fk(~)p Fh(NAME)p Fl(/)p 502 2070
1919 V 119 w Fk(.mailspool/)p Fh(NAME)p 919 2070 V 1735 2070 V 1744
1920 2070 V 206 2072 1538 2 v 205 2122 2 50 v 214 2122 V 239 2107
1921 a Fk(.mailspool)p Fl(/)p 502 2122 V 48 w Fh(NAME)p 919 2122
1922 V 1735 2122 V 1744 2122 V 206 2123 1538 2 v 205 2173 2 50 v
1923 214 2173 V 239 2158 a(NAME)p 502 2173 V 919 2173 V 1735 2173
1924 V 1744 2173 V 206 2175 1538 2 v 243 2249 a Fl(T)m(able)g(2:)18
1925 b(Sp)q(ecially)13 b(resolving)h Fk(/var/mail/)p Fh(NAME)e Fl(to)h
1926 Fm(~)p Fh(NAME)p Fk(/.mailspool/)p Fh(NAME)p 75 2299 1800 5
1927 v 75 2440 a Fl(ho)o(w)o(ev)o(er,)k(this)g(is)f(su\016cien)o(t)h(for)f(all)g
1928 (programs)f(that)i(need)g(to)g(access)h(other)f(users')h(mailb)q(o)o(xes.)24
1929 b(All)15 b(that)i(is)75 2490 y(required)e(is)f(to)f(set)i(these)g(programs)e
1930 (to)h(b)q(e)g Fh(setgid)g Fl(to)g(the)g(designated)h(group.)p
1931 75 2525 720 2 v 121 2552 a Ff(9)139 2563 y Fe(Note)e(that,)g(in)g(order)g(to)
1932 g(allo)o(w)g(mail)g(deliv)o(ery)e(to)i(NFS)q(-moun)o(ted)d(mail)j(sp)q(o)q
1933 (ol)g(directories,)e(most)h(v)o(endors)g(ha)o(v)o(e)h(mo)q(di\014ed)75
1934 2603 y(the)d Fd(/bin/mail)e Fe(program)g(to)j(set)f(its)g Fc(uid)h
1935 Fe(to)g(that)f(of)g(the)g(recipien)o(t)e(when)j(deliv)o(ering)d(mail.)13
1936 b(If)e(a)g(lo)q(cal)e(deliv)o(ery)g(agen)o(t)g(\(LD)o(A\))i(on)75
1937 2642 y(a)g(system)f(do)q(es)g(not)g(pro)o(vide)f(this)i(b)q(eha)o(vior,)d
1938 (the)j(MT)m(A)i(m)o(ust)d(arrange)f(to)i(in)o(v)o(ok)o(e)e(it)i(with)g(the)f
1939 Fc(uid)i Fe(of)f(the)f(recipien)o(t)f(|)j(this)e(can)75 2682
1940 y(b)q(e)h(done)f(b)o(y)h(a)h(wrapp)q(er)e(C)i(program.)965
1941 2825 y Fl(6)p eop
1942 %%Page: 7 7
1943 bop 175 42 a Fl(The)14 b(third)h(problem)d(is)j(solv)o(ed)f(b)o(y)g(ensuring)
1944 g(that)h(all)e(op)q(erations)h(whic)o(h)g(migh)o(t)f(hang)g
1945 Fk(hlfsd)h Fl(are)g(p)q(er-)75 91 y(formed)e(in)h(the)h(bac)o(kground,)f
1946 (while)g(still)g(pro)o(viding)f(service)j(in)e(the)h(paren)o(t)g(or)g(c)o
1947 (hild)f(pro)q(cess.)20 b(F)m(urthermore,)75 141 y(if)12 b Fk(hlfsd)f
1948 Fl(is)i(not)g(running)f(an)o(ymore,)f(or)i(if)f(the)h(user's)h(home)d
1949 (\014lesystem)i(is)f(full,)f(mail)f(gets)k(deliv)o(ered)f(to)f(an)h(al-)75
1950 191 y(ternate)f(directory)g(\(See)g(also)f(Section)g(4.3\).)16
1951 b(A)11 b Fk(cron)f Fl(job)h(\(running)g(sev)o(eral)g(times)g(a)f(da)o(y)h(in)
1952 f(our)i(departmen)o(t\),)75 241 y(lo)q(oks)h(at)h(the)h(alternate)g
1953 (directory)m(,)f(and)g(attempts)f(to)h(resend)i(messages)e(in)g(it)f(to)h
1954 (their)h(righ)o(tful)e(o)o(wners.)19 b(All)75 291 y(that)12
1955 b(is)h(incurred)g(is)g(a)f(dela)o(y)g(in)g(mail)d(deliv)o(ery)m(,)j(whic)o
1956 (h,)g(in)g(most)f(cases,)j(is)e(no)g(longer)h(than)f(the)h(length)f(of)g
1957 (time)75 340 y(b)q(et)o(w)o(een)j(consecutiv)o(e)h(in)o(v)o(o)q(cations)d(of)
1958 g(the)h(lost-mail)d(remailing)h(script.)175 415 y(Ha)o(ving)h(a)h(sp)q(ecial)
1959 g(mail-sp)q(o)q(ol)e(sub)q(directory)j(o)o(wned)g(and)f(con)o(trolled)g(b)o
1960 (y)g(the)h(user)g(also)f(addresses)i(the)75 465 y(last)c(problem,)f(that)i
1961 (of)f(priv)n(acy)m(.)k(Users)e(can)f(c)o(hange)g(the)g(protection)g(bits)g
1962 (on)f(their)h(mailb)q(o)o(x)d(directory)j(inside)75 515 y(their)g(home)f
1963 (directory)i(so)f(that)g(it)f(is)h(readable)g(and)g(searc)o(hable)h(only)e(b)
1964 o(y)h(the)g(o)o(wner.)18 b(An)o(y)13 b(other)h(program)d(or)75
1965 565 y(user,)16 b(unless)f(running)g(as)g(the)g(sup)q(eruser)j(on)c(the)i
1966 (same)e(host,)1091 549 y Fg(10)1141 565 y Fl(w)o(ould)g(not)h(b)q(e)g(able)g
1967 (to)f(\014nd)h(out)g(whether)h(a)75 614 y(user)f(has)f(new)g(mail,)d(ho)o(w)j
1968 (m)o(uc)o(h)e(of)i(it)f(there)i(is,)f(or)f(when)i(it)e(w)o(as)h(last)g(read.)
1969 75 722 y Fj(4)56 b(Impleme)o(n)n(tation)16 b(of)j Fb(hlfsd)175
1970 797 y Fl(W)m(e)f(used)i(a)f(protot)o(yp)q(e)h(NFS)f(serv)o(er,)j(and)d
1971 (implem)o(en)o(ted)e(only)i(the)g(op)q(erations)h(that)f(w)o(ere)h(needed.)75
1972 847 y(W)m(e)14 b(generated)i(NFS)e(stubs)i(using)e Fk(rpcgen)p
1973 Fl(.)k(The)d(serv)o(er)h(w)o(as)e(dev)o(elop)q(ed)h(\014rst)g(under)h(SunOS)f
1974 (v)o(ersion)f(4.1.2.)75 897 y(This)g(serv)o(er)i(w)o(as)e(incorp)q(orated)h
1975 (in)o(to)e(the)i Fk(amd)e Fl(source)j(tree,)f(and)f(w)o(e)g(used)h(some)e(of)
1976 h Fk(amd)p Fl('s)f(sources)j(as)e(utilit)o(y)75 947 y(functions,)k(since)g
1977 (they)g(are)g(w)o(ell-written)f(to)h(handle)f(a)g(v)n(ariet)o(y)g(of)g(arc)o
1978 (hitectures)j(and)d(op)q(erating)g(systems.)75 997 y(\(See)e(Section)f(4.7)f
1979 (for)h(source)h(co)q(de)g(a)o(v)n(ailabil)o(it)o(y)l(.\))75
1980 1105 y Fj(4.1)56 b(The)18 b(\\Home-Link")d(File)j(Service)175
1981 1180 y Fl(This)10 b(subsection)i(includes)g(tec)o(hnical)f(details)f(of)h
1982 (the)g(NFS)g(op)q(erations)g(and)g(ma)o(y)e(b)q(e)i(skipp)q(ed.)18
1983 b(Ho)o(w)o(ev)o(er,)75 1230 y(it)13 b(pro)o(vides)g(an)g(example)e(of)i(the)g
1984 (design)h(and)f(implem)o(en)o(tation)d(of)i(a)h(small)e(sp)q(ecial-purp)q
1985 (ose)j(NFS)g(serv)o(er)g(and)75 1279 y(ma)o(y)e(b)q(e)i(of)g(use)g(to)g
1986 (others.)175 1354 y(HLFS)j(is)g(a)g(read-only)g(\014lesystem,)g(and)g(as)h
1987 (suc)o(h,)g(all)e(op)q(erations)i(that)f(require)h(write)g(access)h(return)75
1988 1404 y(the)d(error)h(co)q(de)f(NFSERR)p 522 1404 13 2 v 14
1989 w(R)o(OFS)g(\(\\Read-Only)f(Filesystem"\):)20 b Fh(setattr,)c(write,)f(cr)n
1990 (e)n(ate,)h(r)n(emove,)g(r)n(ename,)75 1454 y(link,)g(unlink,)g(symlink,)g
1991 (mkdir,)f Fl(and)g Fh(rmdir)p Fl(.)21 b(T)m(rivially)13 b(implemen)o(ted)g(w)
1992 o(ere)j(the)g Fh(nul)r(l)p Fl(,)f Fh(r)n(o)n(ot)p Fl(,)g(and)g
1993 Fh(write)n(c)n(ache)75 1504 y Fl(op)q(erations.)i(W)m(e)11
1994 b(decided)h(to)e(ha)o(v)o(e)h Fh(statfs)f Fl(return)i(some)e(v)n(alue)h
1995 (\(all)e(zeros)k(in)d(most)g(cases\).)18 b(The)11 b Fh(r)n(e)n(ad)g
1996 Fl(op)q(eration)75 1553 y(simply)h(returns)j(NFSERR)p 524 1553
1997 V 15 w(A)o(CCES)f(\(\\P)o(ermission)f(Denied"\).)175 1628 y(The)e(remaining)e
1998 (op)q(erations)i(are)h(the)f(heart)h(of)e(this)h(\014lesystem:)17
1999 b Fh(r)n(e)n(addir)p Fl(,)10 b Fh(getattr)p Fl(,)g Fh(lo)n(okup)p
2000 Fl(,)i(and)f Fh(r)n(e)n(ad)r(link)p Fl(.)175 1703 y(Our)j(serv)o(er)h(m)o
2001 (ust)d(distinguish)h(b)q(et)o(w)o(een)i(the)f(directory)g(and)g(the)g(link,)e
2002 (so)i(w)o(e)f(assigned)h(them)f(di\013eren)o(t)75 1753 y(in)o(tegers)f(to)f
2003 (serv)o(e)i(as)f(\014lehandles.)17 b(Note)12 b(that)f(these)i(need)g(not)e(b)
2004 q(e)h(as)f(complicated)g(as)g(the)h(\014lehandles)g(usually)75
2005 1802 y(generated)j(b)o(y)f(NFS.)k(They)c(need)h(only)e(to)h(b)q(e)h(unique,)e
2006 (and)h(their)g(v)n(alue)f(is)h(meaningful)d(only)i(to)h(the)h(serv)o(er.)75
2007 1910 y Fj(4.1.1)55 b(The)19 b(readdir)f(Op)r(eration)175 1985
2008 y Fl(Op)q(ening)h(this)g(directory)h(returns)h(the)f(\\.")33
2009 b(and)19 b(\\..")33 b(directories,)21 b(and)e(one)g(sym)o(b)q(olic)e(link,)i
2010 Fk(home)p Fl(.)75 2035 y(A)o(ttempting)e(to)g(readdir)h(on)g(the)g(sym)o(b)q
2011 (olic)e(link)h(results)i(in)f(an)f(NFSERR)p 1326 2035 V 15
2012 w(NOTDIR.)g(An)o(ything)g(else)i(is)e(a)75 2085 y(stale)d(\014lehandle.)75
2013 2193 y Fj(4.1.2)55 b(The)19 b(getattr)e(Op)r(eration)175 2268
2014 y Fh(Getattr)h Fl(returns)i(r-xr-xr-x)e(for)h(the)g(\\.")32
2015 b(and)18 b(\\..")32 b(directories.)h(The)19 b(link)f(itself,)h(named)e
2016 Fk(home)h Fl(b)o(y)75 2318 y(default,)d(is)h(protected)h(as)f(rwxrwxrwx.)23
2017 b(It)16 b(do)q(es)g(not)g(matter)f(for)g(the)h(link)f(that)h(it)f(is)g(w)o
2018 (orld-writable.)23 b(The)75 2368 y(mo)q(di\014cation)10 b(and)j(creation)f
2019 (times)g(for)g(the)h(link)e(and)i(directories)g(are)g(the)g(startup)g(time)e
2020 (of)h(the)h(serv)o(er.)19 b(If)12 b(the)75 2418 y(e\013ectiv)o(e)k
2021 Fh(gid)f Fl(of)f(the)h(pro)q(cess)h(is)f(HLFS)p 721 2418 V
2022 15 w(GID,)e(then)j(some)d(\014xed)i(v)n(alid)e(attributes)j(are)f(returned.)
2023 22 b(An)o(y)14 b(other)75 2467 y(\014lehandle)i(giv)o(en)f(to)g
2024 Fk(hlfsd)g Fl(is)g(considered)i(stale)f(and)f(the)i(NFSERR)p
2025 1227 2467 V 14 w(ST)m(ALE)f(\(\\Stale)f(Filehandle"\))g(result)75
2026 2517 y(co)q(de)g(is)e(returned.)p 75 2544 720 2 v 106 2571
2027 a Ff(10)139 2582 y Fe(Or)e(as)h(the)f(sup)q(eruser)e(elsewhere,)h(if)h(the)g
2028 (\014lesystem)e(is)i(NFS-exp)q(orted)e(with)j Fd(anon=0)p Fe(.)965
2029 2825 y Fl(7)p eop
2030 %%Page: 8 8
2031 bop 75 42 a Fj(4.1.3)55 b(The)19 b(lo)r(okup)e(Op)r(eration)175
2032 117 y Fl(Ob)o(viously)m(,)c(w)o(e)i(only)f(allo)o(w)f(lo)q(oking)g(up)h(in)h
2033 (the)g(\\.")20 b(and)14 b(\\..")20 b(directories,)15 b(b)q(oth)g(of)f(whic)o
2034 (h)g(return)i(the)75 166 y(same)e(v)n(alues.)22 b(T)m(rying)15
2035 b(to)g(lo)q(okup)f(\\in")h(the)g(link)g(results)h(in)f(an)g(NFSERR)p
2036 1312 166 13 2 v 15 w(NOTDIR)f(\(\\Not)i(a)f(Directory"\))75
2037 216 y(error)k(co)q(de.)32 b(An)o(y)18 b(link)g(not)g(kno)o(wn)g(to)g(the)h
2038 (serv)o(er)g(returns)h(an)e(NFSERR)p 1338 216 V 15 w(NOENT)h(\(\\No)f(Suc)o
2039 (h)h(En)o(try"\))75 266 y(error,)f(unless)f(the)g Fh(gid)g
2040 Fl(of)e(the)j(requesting)f(pro)q(cess)h(is)f(HLFS)p 1088 266
2041 V 15 w(GID)f(and)g(the)h(name)e(corresp)q(onds)k(to)d(a)h(v)n(alid)75
2042 316 y(user.)i(In)12 b(this)g(case)h(the)g Fh(username)f Fl(for)g(that)g(user)
2043 h(is)f(used)h(in)f(the)g(returned)i(\014lehandle,)e(allo)o(wing)e(the)i
2044 (readlink)75 366 y(op)q(eration)i(to)f(return)j(the)e(correct)i(link.)h(An)o
2045 (ything)c(else)i(is)e(a)h(stale)g(\014lehandle.)75 474 y Fj(4.1.4)55
2046 b(The)19 b(readlink)e(Op)r(eration)175 549 y Fl(This)d(is)h(the)g(most)f(imp)
2047 q(ortan)o(t)e(op)q(eration,)j(the)g(cen)o(tral)g(p)q(oin)o(t)f(of)g(this)h(w)
2048 o(ork.)20 b(W)m(e)15 b(get)g(the)g Fh(uid)g Fl(n)o(um)o(b)q(er)75
2049 599 y(from)c(the)j(creden)o(tials)g(sen)o(t)g(with)e(the)i(RPC)f(op)q
2050 (eration.)k(W)m(e)c(mak)o(e)e(sure)j(that)f(Unix)g(Authen)o(tication)g(or)g
2051 (DES)75 648 y(is)h(used)h(or)e(else)i(w)o(e)f(return)h(the)g(NFSERR)p
2052 774 648 V 14 w(PERM)f(\(\\Not)g(Owner"\))h(co)q(de.)175 723
2053 y(If)j(the)h Fh(gid)g Fl(of)f(the)h(accessing)h(pro)q(cess)g(is)f(not)g(HLFS)
2054 p 1064 723 V 15 w(GID,)e(the)i(v)n(alue)f(w)o(e)h(return)h(for)f(the)g(sym)o
2055 (b)q(olic)75 773 y(link)13 b(named)g Fk(home)379 758 y Fg(11)427
2056 773 y Fl(is)h(a)g(string)g(represen)o(ting)i(the)f(home)e(directory)i(of)e
2057 (the)i(user)g(whose)g Fh(uid)f Fl(w)o(e)h(just)f(found,)75
2058 823 y(concatenated)g(with)e(a)h(\014xed)g(comp)q(onen)o(t)e(name)h(represen)o
2059 (ting)i(a)e(sub)q(directory)i(within)e(it.)17 b(W)m(e)c(used)g(a)f(binary)75
2060 873 y(searc)o(h)h(on)e(the)h(lo)q(okup)e(table)h(to)h(quic)o(kly)e(get)i(the)
2061 g(righ)o(t)f(pathname.)16 b(Di\013eren)o(t)c(home)e(directories)i(for)f(m)o
2062 (ultiple)75 922 y(passw)o(ord)i(database)f(en)o(tries)h(with)f(the)h(same)e
2063 Fh(uid)i Fl(n)o(um)o(b)q(ers)f(ma)o(y)e(return)j(an)o(y)f(of)g(the)h(home)e
2064 (directories.)18 b(Only)75 972 y Fh(uid)c Fl(0)g(is)f(guaran)o(teed)i(to)f
2065 (return)h(\\)p Fk(/)p Fl(".)i(See)e(also)e(Section)h(5.3.)175
2066 1047 y(If)h(the)h(sym)o(b)q(olic)e(link)g(is)i(named)e Fk(home)h
2067 Fl(and)g(the)h Fh(gid)g Fl(is)f(HLFS)p 1206 1047 V 15 w(GID,)g(w)o(e)h
2068 (return)g(a)g(link)e(to)i(\\.",)e(whic)o(h)75 1097 y(causes)19
2069 b Fk(hlfsd)d Fl(to)h(b)q(e)h(used)g(to)f(resolv)o(e)h(the)g(next)g(pathname)e
2070 (comp)q(onen)o(t.)27 b(This)17 b(is)h(designed)g(to)f(main)o(tain)75
2071 1147 y(functionalit)o(y)c(of)i(programs)f(suc)o(h)i(as)f Fk(from)p
2072 Fl(.)20 b(If)15 b(the)h(sym)o(b)q(olic)d(link)h(is)h(not)g(named)f
2073 Fk(home)g Fl(and)h(the)h Fh(gid)f Fl(of)f(the)75 1196 y(accessing)j(pro)q
2074 (cess)g(is)e(HLFS)p 553 1196 V 16 w(GID,)f(w)o(e)i(return)g(a)f(v)n(alue)g(p)
2075 q(oin)o(ting)g(to)g(the)h(user's)h(mailb)q(o)o(x)12 b(\014le)k(in)f(their)h
2076 (mail)75 1246 y(sp)q(o)q(ol)c(directory)m(.)18 b(T)m(o)12 b(do)g(this,)g(w)o
2077 (e)h(extract)g(the)h Fh(username)e Fl(from)f(the)i(\014lehandle,)f(whic)o(h)h
2078 (w)o(as)f(returned)i(b)o(y)e(the)75 1296 y(lo)q(okup)h(op)q(eration.)18
2079 b(See)d(T)m(able)e(2.)175 1371 y(T)m(rying)c(to)i(readlink)f(on)h(one)g(of)f
2080 (the)i(t)o(w)o(o)e(directories)i(results)g(in)e(an)h(NFSERR)p
2081 1426 1371 V 15 w(ISDIR)f(\(\\Is)h(a)f(directory"\))75 1421
2082 y(error.)19 b(An)o(ything)13 b(else)i(is)f(a)f(stale)h(\014lehandle.)75
2083 1528 y Fj(4.2)56 b(Execution)17 b(Flo)n(w)175 1604 y Fl(A)o(t)12
2084 b(initialization)d(time,)i Fk(hlfsd)g Fl(creates)j(a)e(UDP)g(service,)i(and)e
2085 (forks)g(a)g(c)o(hild.)17 b(The)c(c)o(hild)e(builds)h(the)h
2086 Fh(uid)75 1653 y Fl(lo)q(okup)h(table,)g(sets)i(up)e(signal)g(handlers,)h
2087 (and)f(in)o(terv)n(al)g(timers.)19 b(The)c(signal)e(handlers)i(are)g(mean)o
2088 (t)f(to)g(reload)75 1703 y(the)i(lo)q(okup)f(table)g(at)g(expiration)g(time)f
2089 (of)h(the)h(in)o(terv)n(al)f(timer,)f(or)i(when)g(a)f(SIGHUP)g(is)h(sen)o(t)g
2090 (to)f(the)h(serv)o(er)75 1753 y(\(presumably)11 b(b)o(y)h(a)f(sup)q
2091 (eruser\).)20 b(A)12 b(sp)q(ecial)g(clean)o(up)h(handler)f(is)f(setup)i(for)f
2092 (SIGTERM,)f(to)g(ensure)j(the)e(serv)o(er)75 1803 y(terminates)i(cleanly)m(.)
2093 j(Then)d(the)h Fk(svc)p 682 1803 14 2 v 15 w(run\(\))e Fl(routine)h(is)f(in)o
2094 (v)o(ok)o(ed.)175 1878 y(Mean)o(while)i(the)i(paren)o(t)g(w)o(aits)f(for)f
2095 (the)i(c)o(hild)f(to)g(initialize.)23 b(When)16 b(it)g(do)q(es,)h(the)g
2096 (paren)o(t)f(moun)o(ts)f(the)75 1927 y(serv)o(er)g(on)f(the)g(moun)o(t)e(p)q
2097 (oin)o(t.)18 b(Of)c(utmost)e(imp)q(ortance)h(is)h(to)g(mak)o(e)e(sure)j(the)f
2098 (attribute)g(cac)o(he)h(is)f(turned)g(o\013.)75 1977 y(If)h(the)g(attribute)h
2099 (cac)o(he)f(is)g(not)g(turned)h(o\013,)f(successiv)o(e)i(accesses)g(to)e
2100 Fk(/mail/home)e Fl(w)o(ould)h(return)i(previously)75 2027 y(computed)f
2101 (pathnames)g(p)q(oin)o(ting)f(to)i(another)g(user's)g(mail,)d(resulting)j(in)
2102 f(mail)e(loss)i(or)h(misdeliv)o(ery)m(.)21 b(If)15 b(it)g(is)75
2103 2077 y(not)d(p)q(ossible)g(to)g(turn)h(o\013)e(the)i(attribute)g(cac)o(he,)f
2104 Fk(hlfsd)f Fl(will)g(exit.)17 b(Ho)o(w)o(ev)o(er,)c(the)f(SA)g(has)h(the)f
2105 (option)g(to)f(force)75 2127 y Fk(hlfsd)j Fl(to)h(con)o(tin)o(ue)g(running)g
2106 (and)g(set)h(the)f(attribute)h(cac)o(he)g(to)f(as)g(short)g(an)g(in)o(terv)n
2107 (al)f(as)h(p)q(ossible)h(\(See)g(also)75 2176 y(Section)e(5.3\).)j(A)o(t)d
2108 (this)g(p)q(oin)o(t)g(the)g(paren)o(t)h(terminates,)e(lea)o(ving)f(the)j(c)o
2109 (hild)e(to)h(run.)175 2251 y(When)j(an)f(in)o(terv)n(al)g(timer)g(go)q(es)h
2110 (o\013)g(\(SIGALRM\))f(or)h(a)f(SIGHUP)h(is)g(sen)o(t)g(to)g(the)h(serv)o
2111 (er,)g(the)f(serv)o(er)75 2301 y(forks)d(a)g(c)o(hild)g(that)g(con)o(tin)o
2112 (ues)h(serving,)f(while)g(the)h(paren)o(t)g(reloads)f(the)h(lo)q(okup)f
2113 (table.)19 b(When)14 b(the)h(paren)o(t)g(is)75 2351 y(\014nished)f(loading,)d
2114 (it)i(sends)i(a)e(SIGKILL)g(to)g(the)h(c)o(hild)e(pro)q(cess,)j(and)e
2115 (resumes)h(serving.)k(When)c(a)f(SIGTERM)75 2401 y(is)h(receiv)o(ed,)h(the)g
2116 (serv)o(er)g(forks)f(a)g(c)o(hild)g(that)g(con)o(tin)o(ues)g(serving,)g
2117 (while)g(it)g(tries)g(to)g(unmoun)o(t)f(the)i(\014lesystem.)75
2118 2450 y(If)f(and)f(when)i(that)f(succeeds,)i(b)q(oth)e(paren)o(t)g(and)g(c)o
2119 (hild)f(exit.)175 2525 y(As)i(mail)d(service)k(is)e(v)o(ery)h(imp)q(ortan)o
2120 (t,)d(w)o(e)j(w)o(an)o(ted)g(to)f(mak)o(e)g Fk(hlfsd)f Fl(as)i(robust)g(as)g
2121 (p)q(ossible.)20 b(W)m(e)14 b(could)75 2575 y(ha)o(v)o(e)k(designed)g(it)f
2122 (as)h(another)g Fk(amd)g Fl(\\\014lesystem)f(t)o(yp)q(e",)h(but)g(decided)h
2123 (that)f(a)f(separate)i(daemon)e(pro)o(vides)75 2625 y(b)q(etter)i(reliabilit)
2124 o(y)c(and)j(faster)g(service.)29 b(In)18 b(general,)g(w)o(e)f(try)h(to)f(do)g
2125 (as)h(m)o(uc)o(h)e(as)h(p)q(ossible:)25 b(w)o(e)18 b(mak)o(e)e(sure)p
2126 75 2659 720 2 v 106 2686 a Ff(11)139 2698 y Fe(The)11 b(name)f(of)h(the)g
2127 (sym)o(b)q(olic)e(link)i(is)g(con\014gurable.)965 2825 y Fl(8)p
2129 %%Page: 9 9
2130 bop 75 42 a Fl(\014lesystems)10 b(are)h(accessible)h(and)e(con)o(tain)f(some)
2131 h(disk)g(space)h(to)f(ha)o(v)o(e)g(mail)e(deliv)o(ered)j(there.)18
2132 b(Where)11 b(directories)75 91 y(are)j(exp)q(ected)h(w)o(e)f(mak)o(e)d(sure)k
2133 (there)f(are)g(no)f(\014les)h(b)o(y)f(these)h(names;)f(where)h(sym)o(b)q
2134 (olic)d(links)i(are)h(exp)q(ected,)h(w)o(e)75 141 y(mak)o(e)f(sure)i(there)h
2135 (are)e(no)g(real)h(\014les)f(or)h(directories)g(with)f(the)h(same)e(name.)21
2136 b(Whenev)o(er)c(p)q(ossible,)e(w)o(e)g(create)75 191 y(directories,)f(with)f
2137 (prop)q(er)i(o)o(wnership)f(and)f(p)q(ermissions.)k(W)m(e)c(ev)o(en)h(c)o
2138 (hec)o(k)h(that)e(the)h(moun)o(t)e(p)q(oin)o(t)h(for)g Fk(hlfsd)75
2139 241 y Fl(is)h(w)o(orld)f(readable)h(and)g(executable,)h(since)f(if)f(it)h
2140 (isn't,)f Fk(getwd\(".."\))e Fl(migh)o(t)h(fail.)75 349 y Fj(4.3)56
2141 b(Alternate)17 b(Mail)h(Sp)r(o)r(ol)g(Directories)175 424 y
2142 Fk(Hlfsd)e Fl(tries)i(to)g(ensure)h(that)f(the)g(user's)g(home)f(directory)h
2143 (is)f(accessible.)31 b(P)o(erio)q(dically)16 b(it)i(also)f(tests)75
2144 474 y(that)i(it)f(can)h(b)q(e)g(written)g(in)o(to)f(\(Section)h(4.5\).)31
2145 b(If)18 b(for)h(an)o(y)f(reason)h(a)f(failure)g(o)q(ccurs,)j
2146 Fk(hlfsd)c Fl(rep)q(oin)o(ts)i(the)75 523 y(sym)o(b)q(olic)11
2147 b(link)h(for)g(that)h(user)h(to)f(an)f(alternate)h(lo)q(cal)f(directory)m(,)h
2148 (whic)o(h)g(is)g(presumably)e(highly)h(a)o(v)n(ailable.)j(W)m(e)75
2149 573 y(use)g Fk(/var/spool/alt)p 457 573 14 2 v 13 w(mail)e
2150 Fl(in)g(our)h(en)o(vironmen)o(t.)j(See)e(T)m(able)e(3.)1167
2151 558 y Fg(12)p 75 636 1800 5 v 238 690 a Fl(Conditions:)k(An)o(y)d
2152 Fh(uid)p Fl(,)g Fh(gid)p Fi(6)p Fl(=HLFS)p 829 690 13 2 v 15
2153 w(GID,)f(and)g Fk(~)p Fh(USER)p Fk(/.mailspool/)f Fl(is)i(not)p
2154 1479 697 60 2 v 14 w(writable.)p 343 710 1265 2 v 342 759 2
2155 50 v 351 759 V 376 744 a Fm(Resolving)p 629 759 V 1083 759
2156 V 1598 759 V 1607 759 V 342 809 V 351 809 V 376 794 a(comp)q(onen)o(t)p
2157 629 809 V 47 w(P)o(athname)g(left)p 1083 809 V 157 w(V)l(alue)h(if)g(sym)o(b)
2158 q(olic)f(link)p 1598 809 V 1607 809 V 343 811 1265 2 v 343
2159 821 V 342 871 2 50 v 351 871 V 376 856 a Fk(/)p 629 871 V 256
2160 w(var/mail/)p Fh(NAME)p 1083 871 V 1598 871 V 1607 871 V 343
2161 872 1265 2 v 342 922 2 50 v 351 922 V 376 907 a Fk(var)p Fl(/)p
2162 629 922 V 191 w Fk(mail/)p Fh(NAME)p 1083 922 V 1598 922 V
2163 1607 922 V 343 924 1265 2 v 342 974 2 50 v 351 974 V 376 959
2164 a Fk(mail)p Fl(@)p 629 974 V 158 w Fk(/mail/home/)p Fh(NAME)p
2165 1083 974 V 85 w Fk(mail)p Fl(@)g Fi(\))f Fk(/mail/home)p 1598
2166 974 V 1607 974 V 343 975 1265 2 v 342 1025 2 50 v 351 1025
2167 V 376 1010 a(/)p 629 1025 V 256 w(mail/home/)p Fh(NAME)p 1083
2168 1025 V 1598 1025 V 1607 1025 V 343 1027 1265 2 v 342 1077 2
2169 50 v 351 1077 V 376 1062 a Fk(mail)p Fl(/)p 629 1077 V 169
2170 w Fk(home/)p Fh(NAME)p 1083 1077 V 1598 1077 V 1607 1077 V
2171 343 1078 1265 2 v 342 1128 2 50 v 351 1128 V 376 1113 a Fk(home)p
2172 Fl(@)p 629 1128 V 158 w Fh(NAME)p 1083 1128 V 327 w Fk(home)p
2173 Fl(@)h Fi(\))f Fk(/var/alt)p 1476 1113 14 2 v 14 w(mail)p 1598
2174 1128 2 50 v 1607 1128 V 343 1130 1265 2 v 342 1180 2 50 v 351
2175 1180 V 376 1165 a(/)p 629 1180 V 256 w(var/alt)p 811 1165 14
2176 2 v 15 w(mail/)p Fh(NAME)p 1083 1180 2 50 v 1598 1180 V 1607
2177 1180 V 343 1181 1265 2 v 342 1231 2 50 v 351 1231 V 376 1216
2178 a Fk(var)p Fl(/)p 629 1231 V 191 w Fk(alt)p 723 1216 14 2 v
2179 15 w(mail/)p Fh(NAME)p 1083 1231 2 50 v 1598 1231 V 1607 1231
2180 V 343 1233 1265 2 v 342 1282 2 50 v 351 1282 V 376 1268 a Fk(alt)p
2181 445 1268 14 2 v 15 w(mail)p Fl(/)p 629 1282 2 50 v 88 w Fh(NAME)p
2182 1083 1282 V 1598 1282 V 1607 1282 V 343 1284 1265 2 v 342 1334
2183 2 50 v 351 1334 V 376 1319 a(NAME)p 629 1334 V 1083 1334 V
2184 1598 1334 V 1607 1334 V 343 1336 1265 2 v 380 1410 a Fl(T)m(able)g(3:)18
2185 b(Resolving)13 b Fk(/var/mail/)p Fh(NAME)f Fl(to)i Fk(/var/alt)p
2186 1323 1410 14 2 v 14 w(mail/)p Fh(NAME)p 75 1460 1800 5 v 175
2187 1600 a Fl(When)f Fk(hlfsd)f Fl(starts)i(up,)f(and)g(b)q(efore)h(it)f(moun)o
2188 (ts)f(itself)h(on)f(top)i(of)e(the)i(moun)o(t)d(p)q(oin)o(t,)i(hiding)f(an)o
2189 (ything)75 1650 y(that)k(is)f(underneath,)i Fk(hlfsd)e Fl(creates)i(a)f
2190 (\014xed)g(sym)o(b)q(olic)e(link)g(to)i(the)g(alternate)g(sp)q(o)q(ol)g
2191 (directory)g(\(if)f(it)g(do)q(es)75 1700 y(not)e(exist)g(already\).)k(This)c
2192 (is)g(done)g(so)g(that)f Fk(/var/spool/mail)e Fl(w)o(ould)i(not)h(b)q(e)g(a)g
2193 (\\dangling")d(sym)o(b)q(olic)h(link,)75 1750 y(and)j(p)q(oin)o(ts)g(to)f(a)h
2194 (real)g(directory)h(at)f(all)e(times,)h(ev)o(en)i(after)f Fk(hlfsd)f
2195 Fl(terminates.)18 b(When)c Fk(hlfsd)f Fl(runs,)h(it)g(hides)75
2196 1799 y(this)h(sym)o(b)q(olic)e(link,)h(and)h(pro)o(vides)g(our)g(\\dynamic")e
2197 (sym)o(b)q(olic)g(link.)20 b(This)15 b(tric)o(k)g(at)g(least)g(pro)o(vides)g
2198 (us)g(with)75 1849 y(an)f(alternate)g(place)g(to)g(deliv)o(er)g(mail)d(when)j
2199 (things)g(go)f(wrong,)h(rather)g(than)g(b)q(ounce)h(or)f(drop)g(the)g(mail.)
2200 175 1924 y(A)g(cron)h(job)e(on)h(our)h(systems)f(c)o(hec)o(ks)i(the)f
2201 (alternate)f(mail)e(sp)q(o)q(ol)i(directory)h(sev)o(eral)g(times)e(a)h(da)o
2202 (y)m(.)k(An)o(y)75 1974 y(messages)12 b(found)g(there)i(are)f(resen)o(t)g(to)
2203 g(their)f(righ)o(tful)f(o)o(wners.)19 b(The)12 b(remailing)e(script)j(can)g
2204 (b)q(e)g(run)f(as)h(often)f(as)75 2024 y(needed.)19 b(Eac)o(h)14
2205 b(in)o(v)o(o)q(cation)e(of)h(the)g(script)h(deals)g(only)e(with)h(newly)g
2206 (lost)g(mail)e(since)j(the)g(previous)g(in)o(v)o(o)q(cation;)75
2207 2073 y(the)f(script)g(lo)q(c)o(ks)g(and)f(renames)h(the)g(lost)f(mailb)q(o)o
2208 (x)e(\014le)i(to)h(a)f(unique)h(name,)e(b)q(efore)i(parsing)f(and)h
2209 (remailing)d(it.)175 2148 y(Similar)j(to)k Fk(amd)p Fl(,)f
2210 Fk(hlfsd)f Fl(can)i(log)e(debugging)h(and)h(v)n(arious)e(status)j
2211 (information)13 b(to)k(a)f(designated)h(log)75 2198 y(\014le)e(or)h(using)f
2212 (the)h Fk(syslog)p Fl([22)n(])f(facilit)o(y)m(.)21 b(The)16
2213 b(SA)f(ma)o(y)f(c)o(ho)q(ose)i(to)g(w)o(atc)o(h)f(these)i(log)e(\014les)g
2214 (and)h(facilities)e(and)75 2248 y(b)q(e)h(noti\014ed)e(when)i(serious)f
2215 (problems)f(o)q(ccur)i(suc)o(h)g(as)f(a)g(full)e(\014lesystem.)75
2216 2356 y Fj(4.4)56 b(Av)n(oiding)18 b(Hangs)175 2431 y Fl(As)10
2217 b(describ)q(ed)i(in)e(Section)h(4.2,)e Fk(hlfsd)g Fl(forks)i(a)e(c)o(hild)h
2218 (at)g(an)o(y)g(p)q(oin)o(t)g(where)h(w)o(e)g(susp)q(ect)h(that)e(an)g(op)q
2219 (eration)75 2481 y(migh)o(t)h(hang.)17 b(If,)12 b(for)h(example,)e(the)j
2220 (home)e(mac)o(hine)f(of)i(the)g(user)h(is)f(do)o(wn,)g(and)f(the)i
2221 (\014lesystem)f(on)f(a)h(clien)o(t)g(is)75 2530 y(hard-moun)o(ted,)h
2222 Fk(hlfsd)f Fl(will)h(hang)g(un)o(til)g(the)i(remote)e(serv)o(er)i(is)f(bac)o
2223 (k)g(up.)21 b(P)o(erforming)13 b(these)j(op)q(erations)f(in)75
2224 2580 y(the)f(bac)o(kground)g(pro)o(vides)g(added)h(reliabilit)o(y)m(,)c(an)i
2225 (idea)h(tak)o(en)g(from)e Fk(amd)p Fl(.)p 75 2615 720 2 v 106
2226 2642 a Ff(12)139 2653 y Fe(In)f(the)f(conditions)f(for)i(T)m(able)g(3,)g
2227 Fd(~)p Fc(USER)h Fe(is)g(the)f(home)f(directory)f(of)i(the)g(user)f(with)i
2228 (user-id)e Fc(uid)p Fe(.)965 2825 y Fl(9)p eop
2229 %%Page: 10 10
2230 bop 75 42 a Fj(4.5)56 b(Disk)18 b(Space)g(Problems)175 117
2231 y Fk(Hlfsd)13 b Fl(c)o(hec)o(ks)j(if)e(the)h(user's)h(home)e(directory)h(is)g
2232 (full)e(or)i(they)g(exceeded)i(their)e(quota.)20 b(It)15 b(attempts)f(to)75
2233 166 y(create)i(and)e(then)h(remo)o(v)o(e)e(a)h(simple)f(nonzero-length)i
2234 (\014le)f(in)g(the)h(user's)g(sp)q(o)q(ol)f(directory)m(,)h(with)f(the)h
2235 (e\013ectiv)o(e)75 216 y Fh(uid)j Fl(set)g(to)f(that)h(of)f(the)h(user.)30
2236 b(If)17 b(that)g(fails,)g(it)g(instead)h(returns)h(bac)o(k)e(the)h(name)e(of)
2237 h(the)h(alternate)g(sp)q(o)q(ol)75 266 y(directory)d(as)f(the)g(v)n(alue)f
2238 (of)h(the)g Fk(home)f Fl(sym)o(b)q(olic)f(link.)17 b(Otherwise)f(mail)11
2239 b(migh)o(t)h(b)q(e)i(dropp)q(ed)h(or)f(b)q(ounce.)175 341 y(An)o(y)j(success)
2240 k(or)d(failure)f(state)h(is)g(recorded)i(in)d Fk(hlfsd)o Fl(.)30
2241 b(It)18 b(is)g(left)g(there)h(for)e(a)h(sp)q(eci\014ed)h(n)o(um)o(b)q(er)f
2242 (of)75 391 y(seconds,)k(after)f(whic)o(h)e(the)i(en)o(try)g(\\times)d(out")i
2243 (and)g(a)f(new)i(actual)e(bac)o(kgrounded)i(lo)q(okup)e(is)g(required.)75
2244 440 y(Otherwise,)14 b(the)g(cac)o(hed)g(result)g(is)f(used)g(and)g(no)g(exp)q
2245 (ensiv)o(e)h Fk(fork)e Fl(is)h(required.)19 b(This)13 b(simple)e(cac)o(hing)i
2246 (feature)75 490 y(of)g Fk(hlfsd)g Fl(has)h(greatly)g(impro)o(v)o(ed)e(its)i
2247 (p)q(erformance)g(and)f(reliabilit)o(y)m(.)j(See)f(also)e(Section)h(5.3.)75
2248 598 y Fj(4.6)56 b(Lo)r(c)n(k)17 b(Files)175 673 y Fl(An)12
2249 b(alternativ)o(e)h(design)g(for)f Fk(hlfsd)f Fl(is)i(to)f(ha)o(v)o(e)h(it)f
2250 (moun)o(t)f(on)h(top)h(of)f(the)h(mail)d(sp)q(o)q(ol)i(directory)i(directly)m
2251 (,)75 723 y(instead)d(of)f(ha)o(ving)f(the)j(mail)c(sp)q(o)q(ol)i(directory)h
2252 (b)q(e)g(a)g(sym)o(b)q(olic)e(link)g(to)i(another)g(link)e(\()p
2253 Fk(home)p Fl(\))h(within)g(the)h(HLFS,)75 773 y(whic)o(h)k(p)q(oin)o(ts)g(to)
2254 g(a)f(real)h(sub)q(directory)i(of)d(the)i(user's)g(home.)k(With)15
2255 b(some)f(mo)q(di\014cations)f(to)i(the)g(serv)o(er,)i(w)o(e)75
2256 823 y(could)d(ha)o(v)o(e)g(made)f(all)h(of)f(the)i(user's)h(mailb)q(o)o(x)11
2257 b(\014les)k(p)q(oin)o(t)f(to)g(the)h(righ)o(t)f(place,)g(but)g(it)g
2258 (su\013ered)j(from)12 b(serious)75 873 y(dra)o(wbac)o(ks:)137
2259 977 y Fi(\017)21 b Fl(The)15 b(sp)q(o)q(ol)f(directory)i(w)o(ould)d(no)i
2260 (longer)f(b)q(e)h(a)g(regular)f(directory)m(.)21 b(It)14 b(w)o(ould)g(ha)o(v)
2261 o(e)h(to)f(b)q(e)h(managed)e(b)o(y)179 1027 y Fk(hlfsd)o Fl(.)18
2262 b(This)c(w)o(ould)f(require)h(the)h(implemen)o(tatio)o(n)c(of)i(more)g(NFS)h
2263 (op)q(erations.)137 1105 y Fi(\017)21 b Fl(The)e(user's)h(sp)q(o)q(ol)f
2264 (\014le)g(w)o(ould)g(not)g(b)q(e)g(a)g(regular)g(\014le,)h(but)f(a)g(sym)o(b)
2265 q(olic)e(link)h(to)h(suc)o(h.)35 b(Some)18 b(mail)179 1155
2266 y(programs)e(remo)o(v)o(e)g(that)h(\014le,)g(not)g(c)o(hec)o(king)g(if)f
2267 (it's)h(a)f(sym)o(b)q(olic)g(link.)26 b(Therefore)18 b(the)g(sym)o(b)q(olic)d
2268 (link)179 1205 y(w)o(ould)10 b(b)q(e)i(remo)o(v)o(ed.)k(W)m(e)10
2269 b(w)o(ould)h(ha)o(v)o(e)g(had)f(to)h(c)o(hange)h(the)f(serv)o(er)i(so)e(that)
2270 g(remo)o(ving)e(the)j(sym)o(b)q(olic)d(link)179 1255 y(w)o(ould)14
2271 b(\014rst)i(follo)o(w)d(it)i(and)g(remo)o(v)o(e)f(the)i(\014le)f(it)g(w)o(as)
2272 g(p)q(oin)o(ting)f(to.)22 b(The)16 b(same)e(go)q(es)i(for)f(all)f(op)q
2273 (erations)179 1304 y(whic)o(h)g(require)g(access)i(to)e(the)g(user's)h(mail)c
2274 (sp)q(o)q(ol)j(\014le.)137 1383 y Fi(\017)21 b Fl(The)11 b(w)o(orst)f
2275 (problem)f(w)o(as)h(that)h(di\013eren)o(t)g(UAs)g(and)f(MT)m(As)g(use)h
2276 (di\013eren)o(t)h(metho)q(ds)d(for)h(lo)q(c)o(king)g(the)h(mail)179
2277 1432 y(\014le.)17 b(Some)12 b(of)g(them)h(create)h(temp)q(orary)e(\014les)h
2278 (named)f Fk($)p Fi(f)p Fk(USER)p Fi(g)p Fk(.lock)p Fl(,)e(others)k(use)g(the)
2279 f Fk(mktemp)f Fl(library)179 1482 y(call)17 b(to)h(generate)i(unique)e
2280 (names.)31 b(Our)19 b(metho)q(d)e(a)o(v)o(oids)h(the)g(need)i(to)e(\014gure)h
2281 (out)f(all)f(the)i(di\013eren)o(t)179 1532 y(metho)q(ds)13
2282 b(used)i(in)e(lo)q(c)o(king)g(mail)e(\014les,)j(and)g(usage)g(of)g(temp)q
2283 (orary)f(\014les.)175 1636 y(An)g(alternate)h(w)o(a)o(y)e(to)h(a)o(v)o(oid)f
2284 (the)i(need)g(for)f(lo)q(c)o(k)g(\014les)h(is)f(to)g(deliv)o(er)g(mail)e(one)
2285 i(message)g(p)q(er)h(\014le)f(using)g(a)75 1686 y(di\013eren)o(t)i(system)g
2286 (suc)o(h)g(as)f(with)h(INN[19)o(])f(and)g(NNTP[10];)f(ho)o(w)o(ev)o(er,)i
2287 (this)f(w)o(ould)g(require)h(mo)q(di\014cations)e(to)75 1736
2288 y(all)g(UAs)h(and)g(MT)m(As.)75 1844 y Fj(4.7)56 b(Source)18
2289 b(Co)r(de)g(Size,)g(Av)m(ailabilit)n(y)-5 b(,)16 b(and)k(P)n(ortabilit)n(y)
2290 175 1919 y Fk(Hlfsd)c Fl(is)h(less)h(than)f(2500)f(lines)h(of)f(C)h(co)q(de,)
2291 i(including)d(commen)o(ts)f(and)i(white-spaces.)29 b(Ho)o(w)o(ev)o(er,)18
2292 b(it)75 1969 y(mak)o(es)13 b(use)h(of)g(almost)e(4000)h(lines)g(of)h(co)q(de)
2293 g(from)f(the)h Fk(amd)f Fl(distribution)h(itself.)175 2044
2294 y Fk(Hlfsd)g Fl(is)h(a)o(v)n(ailable)e(in)i(source)i(form)c(as)j(part)f(of)g
2295 (a)g(sp)q(ecial)h(distribution)e(of)h Fk(amd)p Fl(.)22 b(It)15
2296 b(can)h(b)q(e)g(retriev)o(ed)75 2094 y(via)d(anon)o(ymous)f
2297 Fk(ftp)h Fl(from)f Fk(ftp.cs.columbia.edu)e Fl(in)k(the)g(directory)h
2298 Fk(/pub/amd)p Fl(.)175 2168 y Fk(Hlfsd)h Fl(is)i(built)f(as)g(part)h(of)f
2299 (the)h(sp)q(ecial)g(distribution)f(of)g Fk(amd)g Fl(a)o(v)n(ailable)f(from)g
2300 (our)h(ftp)h(serv)o(er.)30 b(It)18 b(is)75 2218 y(almost)12
2301 b(as)j(p)q(ortable)f(as)g Fk(amd)g Fl(is.)k(It)c(is)h(only)e(the)i(lac)o(k)e
2302 (of)h(access)i(to)e(certain)h(mac)o(hines)e(that)h(stopp)q(ed)h(us)g(from)75
2303 2268 y(p)q(orting)d Fk(hlfsd)f Fl(to)i(the)g(n)o(umerous)f(platforms)e
2304 Fk(amd)i Fl(runs)h(on.)k(A)o(t)c(the)g(writing)f(of)f(this)i(pap)q(er,)g
2305 Fk(hlfsd)e Fl(has)i(b)q(een)75 2318 y(successfully)h(p)q(orted)g(and)e
2306 (running)h(on)f(SunOS)i(4.1.3,)c(HP-UX)k(9.0.1,)d(and)h(Solaris)g(2.2.)17
2307 b(Those)c(represen)o(t)i(the)75 2367 y(3)h(main)e(system)i(t)o(yp)q(es)h
2308 Fk(amd)e Fl(runs)i(on)f(and)f(span)i(most)e(Unix)g(\015a)o(v)o(ors:)22
2309 b(a)16 b(BSD-st)o(yle)g(system,)g(an)g(SVR-BSD)75 2417 y(h)o(ybrid,)d(and)h
2310 (a)f(system)h(v)o(ery)g(close)h(to)e(SVR4,)g(resp)q(ectiv)o(ely)m(.)75
2311 2525 y Fj(5)56 b(Ev)m(aluation)175 2600 y Fl(This)11 b(system)h(is)g(implem)o
2312 (en)o(ted)e(and)i(has)g(b)q(een)h(in)e(use)i(on)e(a)h(n)o(um)o(b)q(er)f(of)g
2313 (mac)o(hines)g(for)h(more)e(than)i(a)g(y)o(ear)75 2650 y(no)o(w.)20
2314 b(F)m(or)14 b(the)h(\014rst)g(nine)g(mon)o(ths)e Fk(hlfsd)h
2315 Fl(w)o(as)g(in)g(exp)q(erimen)o(tal)g(use.)21 b(W)m(e)14 b(ha)o(v)o(e)h
2316 (since)g(deplo)o(y)o(ed)g(it)f(on)g(most)75 2700 y(pro)q(duction)g(mac)o
2317 (hines)f(in)h(our)f(departmen)o(t,)h(spanning)f(o)o(v)o(er)h(a)g(100)f(hosts)
2318 h(and)g(3)g(di\013eren)o(t)g(arc)o(hitectures.)954 2825 y(10)p
2320 %%Page: 11 11
2321 bop 175 42 a Fl(The)11 b(goal)f(of)h(this)g(w)o(ork)g(is)f(to)h(expand)h(the)
2322 f(accessibilit)o(y)g(of)g(electronic)h(mail,)d(impro)o(v)o(e)g(o)o(v)o(erall)
2323 h(reliabilit)o(y)75 91 y(and)i(stabilit)o(y)f(of)g(this)h(vital)f(service,)j
2324 (while)d(at)h(the)h(same)e(time)g(main)o(tain)e(the)k(sanit)o(y)f(of)f(our)h
2325 (SAs)h(\(y)o(ours)f(truly)75 141 y(included\).)18 b(F)m(or)c(this)g(to)g
2326 (really)f(w)o(ork,)g(it)g(m)o(ust)g(ha)o(v)o(e:)126 257 y(1.)20
2327 b(V)m(ery)14 b(high)f(a)o(v)n(ailabilit)o(y)l(.)126 340 y(2.)20
2328 b(Little)13 b(o)o(v)o(erhead.)126 423 y(3.)20 b(Little)14 b(hassle)g(for)g
2329 (users)i(and)e(administrators)e(as)i(the)h(system)f(is)g(b)q(eing)g(used)h
2330 (or)f(installed)g(for)f(the)i(\014rst)179 473 y(time.)75 598
2331 y Fj(5.1)56 b(P)n(erformance)175 673 y Fl(W)m(e)15 b(ha)o(v)o(e)g(carried)h
2332 (out)g(some)e(measuremen)o(ts)h(to)h(quan)o(tify)e(the)i(ab)q(o)o(v)o(e)f
2333 (requiremen)o(ts)h(and)g(more.)22 b(The)75 723 y(tests)15 b(w)o(ere)g(p)q
2334 (erformed)f(on)f(a)h(Sun)g(SP)m(AR)o(Cstation-2)f(running)g(SunOS)i(4.1.3.)
2335 175 797 y(Accessing)20 b(a)f(lo)q(cal)g(sp)q(o)q(ol)g(\014le)g(via)f
2336 Fk(stat)h Fl(normally)d(tak)o(es)k(180)e(msec)h(without)g Fk(hlfsd)o
2337 Fl(.)34 b(If)19 b Fk(hlfsd)f Fl(is)75 847 y(running)g(and)g(has)g(the)h
2338 (user's)h(en)o(try)e(already)g(cac)o(hed,)i(it)e(tak)o(es)h(60)f(msec)g(more)
2339 f(to)h(access)i(the)f(\014le.)31 b(This)75 897 y(o)o(v)o(erhead)19
2340 b(is)f(attributed)h(to)f(the)h(fact)g(that)f(the)h(k)o(ernel)g(has)g(to)f
2341 (access)i(a)e(user-lev)o(el)h(NFS)g(serv)o(er,)h(making)75
2342 947 y(sev)o(eral)14 b(con)o(text)h(switc)o(hes.)175 1022 y(If)h(the)h(en)o
2343 (try)h(is)e(not)h(cac)o(hed,)h Fk(hlfsd)e Fl(forks)g(a)h(c)o(hild)f(to)h(p)q
2344 (erform)f(op)q(erations)h(whic)o(h)f(ma)o(y)f(cause)j(it)e(to)75
2345 1071 y(hang.)21 b(The)16 b(o)o(v)o(erhead)f(of)f(that)i Fk(fork)e
2346 Fl(and)h(other)g(c)o(hec)o(ks)i(is)e(an)f(additional)g(70)g(msec)h(\(or)g
2347 (130)f(msec)h(o)o(v)o(er)g(the)75 1121 y(regular)d(lo)q(okup)f(not)g(using)h
2348 Fk(hlfsd)o Fl(\).)17 b(Ho)o(w)o(ev)o(er,)12 b(this)g(o)o(v)o(erhead)g(is)g
2349 (incurred)h(only)d(once)j(in)e(5)h(min)o(utes,)e(b)q(ecause)75
2350 1171 y(the)k(result)h(of)e(eac)o(h)i(c)o(hec)o(k)g(is)e(cac)o(hed)i(for)f
2351 (that)g(long)f(b)o(y)g(default.)175 1246 y(The)f(ab)q(o)o(v)o(e)g(times)f
2352 (are)i(somewhat)e(signi\014can)o(t,)g(but)i(not)e(b)o(y)h(m)o(uc)o(h,)f
2353 (considering)h(the)h(use)g(of)f(a)f(user-lev)o(el)75 1296 y(\014le-serv)o
2354 (er.)19 b(\(By)12 b(comparison,)e(in)h(our)h(en)o(vironmen)o(t)f(it)g(tak)o
2355 (es)h(ab)q(out)g(0.5)e(seconds)k(to)d(access)j(a)d(new)h(\014lesystem)75
2356 1345 y(using)h Fk(amd)p Fl(.\))18 b(Giv)o(en)13 b(the)h(b)q(ene\014ts)i(of)d
2357 Fk(hlfsd)o Fl(,)g(w)o(e)h(feel)g(that)g(a)f(minima)o(l)e(access)k(slo)o(wdo)o
2358 (wn)e(is)h(a)f(small)f(price)i(to)75 1395 y(pa)o(y)m(.)j(In)d(practice,)g(o)o
2359 (v)o(er)g(12)g(mon)o(ths)e(of)i(usage)g(w)o(e)g(ha)o(v)o(e)g(noticed)g(no)g
2360 (visible)f(degradation)g(of)h(service.)1734 1380 y Fg(13)175
2361 1470 y Fl(The)h(in)o(ternal)g(data)h(structures)h(\(tables)f(and)f(cac)o
2362 (hes\))i(require)g(50)e(b)o(ytes)h(p)q(er)g(user)g(on)g(the)g(system.)22
2363 b(In)75 1520 y(our)16 b(en)o(vironmen)o(t,)e(with)i(750)f(users,)i(that)f
2364 (translates)g(to)g(ab)q(out)f(37KB)h(|)f(rather)i(insigni\014can)o(t)e(giv)o
2365 (en)g(that)75 1570 y(w)o(orkstations)f(these)h(da)o(ys)f(come)f(installed)g
2366 (with)h(at)f(least)i(16-32MB)e(of)g(RAM.)75 1677 y Fj(5.1.1)55
2367 b(Remailing)16 b(Lost)i(Mail)175 1753 y Fl(The)h Fk(hlfsd)f
2368 Fl(distribution)h(con)o(tains)g(a)f Fk(perl)p Fl([26)o(])g(script)i(called)f
2369 Fk(lostaltmail)p Fl(.)31 b(Remailing)16 b(a)i(single)75 1802
2370 y(message)c(with)g(a)g(b)q(o)q(dy)g(size)h(of)f(1KB,)g(tak)o(es)h(an)f(a)o(v)
2371 o(erage)g(of)g(1.2)f(seconds)j(\(total)d(time\).)18 b(In)c(our)h(departmen)o
2372 (t,)75 1852 y(resending)g(an)e(a)o(v)o(erage)h(mailb)q(o)o(x)d(\014le)j(tak)o
2373 (es)h(ab)q(out)e(20)h(seconds.)175 1927 y(Initially)f(w)o(e)j(ran)g(the)h
2374 (script)f(once)h(a)e(da)o(y)m(,)g(but)h(found)g(ha)o(ving)f(to)g(w)o(ait)g
2375 (up)h(to)g(24)f(hours)i(for)e(lost)h(mail)75 1977 y(redeliv)o(ery)f(to)q(o)g
2376 (long.)k(W)m(e)14 b(then)i(exp)q(erimen)o(ted)f(with)f(running)g
2377 Fk(lostaltmail)f Fl(once)i(an)f(hour.)21 b(Ho)o(w)o(ev)o(er,)15
2378 b(w)o(e)75 2027 y(found)c(that)g(frequency)h(to)q(o)f(fast.)17
2379 b(The)12 b(most)e(lik)o(ely)f(situation)i(in)g(whic)o(h)g Fk(hlfsd)f
2380 Fl(will)f(rep)q(oin)o(t)j(its)f(sym)o(b)q(olic)e(link)75 2076
2381 y(to)14 b(the)g(alternate)g(sp)q(o)q(ol)g(directory)g(is)g(when)g(the)g
2382 (user's)h(\014lesystem)f(is)f(full.)k(A)d(full)e(\014lesystem)i(is)g(a)f(p)q
2383 (ersisten)o(t)75 2126 y(situation)18 b(that)h(in)f(most)f(cases)j(tak)o(es)f
2384 (some)f(time)f(to)h(get)h(\014xed,)h(as)e(it)h(requires)g(h)o(uman)e(in)o
2385 (terv)o(en)o(tion.)32 b(If)75 2176 y(the)19 b(situation)f(that)h(causes)h
2386 Fk(hlfsd)e Fl(to)g(use)i(the)f(alternate)g(sp)q(o)q(ol)g(directory)g(is)g
2387 (lik)o(ely)e(to)i(p)q(ersist,)h(running)75 2226 y(the)15 b
2388 Fk(lostaltmail)e Fl(script)i(will)f(consume)g(unnecessary)j(resources,)g
2389 (only)d(to)h(redeliv)o(er)g(the)h(mail)c(bac)o(k)j(to)f(the)75
2390 2276 y(alternate)f(sp)q(o)q(ol)f(directory)m(.)18 b(W)m(e)12
2391 b(\014nally)g(settled)h(on)g(running)f Fk(lostaltmail)e Fl(b)q(et)o(w)o(een)k
2392 (6)e(and)h(12)f(times)f(a)h(da)o(y)m(.)75 2325 y(Dep)q(ending)i(on)g(the)g
2393 (amoun)o(t)e(of)i(lost)f(mail)e(exp)q(ected,)16 b(the)e(script)h(could)f(b)q
2394 (e)g(run)h(more)d(or)i(less)h(often.)75 2433 y Fj(5.1.2)55
2395 b(Reliabilit)n(y)175 2509 y Fl(W)m(e)11 b(ha)o(v)o(e)h(sim)o(ulated)f(w)o
2396 (orst-case)i(scenarios)g(b)o(y)f(\014lling)e(up)i(a)g(user)h(\014lesystem)f
2397 (and)g(letting)g Fk(hlfsd)f Fl(decide)75 2558 y(to)k(redirect)i(mail)12
2398 b(to)j(the)h(alternate)g(sp)q(o)q(ol)e(directory)m(.)22 b(A)o(t)16
2399 b(this)f(p)q(oin)o(t)f(w)o(e)i(\014lled)f(up)g(that)g(\014lesystem)g(as)g(w)o
2400 (ell.)p 75 2593 720 2 v 106 2620 a Ff(13)139 2632 y Fe(The)g(SAs)h(group)e
2401 (felt)h(so)g(con)o(vinced)e(that)i Fd(hlfsd)f Fe(w)o(as)i(w)o(orking)e(w)o
2402 (ell,)j(that)d(w)o(e)i(w)o(ere)g(the)f(\014rst)g(to)g(use)g(it)g(on)g
2403 Fc(our)i Fe(home)75 2671 y(mac)o(hines.)954 2825 y Fl(11)p
2405 %%Page: 12 12
2406 bop 75 42 a Fk(Hlfsd)16 b Fl(k)o(ept)i(on)e(p)q(oin)o(ting)g(to)h(the)h
2407 (alternate)g(sp)q(o)q(ol)f(directory)g(during)g(the)h(cac)o(hed)g(en)o(try)g
2408 (in)o(terv)n(al,)e(but)i(w)o(e)75 91 y(observ)o(ed)d(no)g(mail)c(lost.)19
2409 b(Instead,)c(the)g(sending)g(side)f(detected)j(that)d(the)h(\014lesystem)f(w)
2410 o(as)h(full,)d(and)j(k)o(ept)f(the)75 141 y(message)g(in)f(the)i(remote)e
2411 (\(priv)n(ate\))h(sp)q(o)q(ol)g(directory)m(.)k(This)c(is)f(the)i(default)e
2412 (b)q(eha)o(vior)h Fk(sendmail)p Fl([1)n(])f(pro)o(vides.)175
2413 216 y Fk(Hlfsd)d Fl(do)q(es)i(not)g(in)o(tro)q(duce)g(an)o(y)f(new)h
2414 (problems;)f(that)h(is,)f(if)g(a)h(\014lesystem)f(is)g(completely)g(full,)f
2415 (whatev)o(er)75 266 y(b)q(eha)o(vior)j(y)o(our)g(curren)o(t)h(LD)o(A)f(pro)o
2416 (vides)g(is)g(main)o(tained.)j(Since)e Fk(hlfsd)e Fl(uses)i(b)q(oth)f(the)h
2417 (user's)g(\014lesystem)f(and)75 315 y(an)18 b(alternate)h(sp)q(o)q(ol)f
2418 (directory)m(,)h(it)f(actually)g(increases)i(the)f(a)o(v)n(ailabili)o(t)o(y)c
2419 (of)j(mail)e(services,)21 b(b)o(y)d(\\virtually")75 365 y(increasing)c(the)h
2420 (disk)e(space)i(a)o(v)n(ailable)d(for)h(mail)f(sp)q(o)q(oling.)175
2421 440 y(Once)g(space)g(has)f(b)q(een)h(freed)g(in)f(the)g(user's)h
2422 (\014lesystem,)f(and)g(the)h(cac)o(hed)g(en)o(try)f(expired,)h
2423 Fk(hlfsd)e Fl(p)q(oin)o(ted)75 490 y(its)h(sym)o(b)q(olic)f(link)h(bac)o(k)g
2424 (to)g(the)h(user's)h(home)d(directory)m(.)18 b(The)12 b(next)g(time)e(the)i
2425 (remailing)d(script)j(ran,)f(all)g(\\lost")75 540 y(mail)g(got)j(resen)o(t)h
2426 (to)f(its)g(o)o(wners.)175 614 y(Since)f(the)g(installation)d(of)i
2427 Fk(hlfsd)f Fl(in)h(our)h(pro)q(duction)f(en)o(vironmen)o(t,)f(w)o(e)i(ha)o(v)
2428 o(e)f(seen)i(a)e(few)h(cases)g(of)f(lost)75 664 y(mail)i(b)q(eing)i(resen)o
2429 (t,)i(mostly)c(due)j(to)f(full)f(\014lesystems.)25 b(W)m(e)16
2430 b(kno)o(w)g(of)g(no)g(case)h(where)g(mail)d(w)o(as)i(completely)75
2431 714 y(lost.)75 822 y Fj(5.2)56 b(Installation)175 897 y Fl(Since)13
2432 b Fk(hlfsd)e Fl(w)o(as)i(written)g(b)o(y)f(SAs)h(for)f(other)h(SAs,)g(w)o(e)g
2433 (ha)o(v)o(e)f(pro)o(vided)h(it)f(with)g(sev)o(eral)h(command-li)o(ne)75
2434 947 y(options)f(to)h(use)g(at)g(startup)g(time,)e(enabling)h
2435 Fk(hlfsd)g Fl(to)g(b)q(e)h(tailored)g(for)f(a)g(particular)h(en)o(vironmen)o
2436 (t.)j(Needless)75 997 y(to)g(sa)o(y)m(,)g(a)g(man)e(page)i(is)h(pro)o(vided,)
2437 f(as)g(w)o(ell)g(as)g(complete)g(source)h(co)q(de.)26 b(F)m(urthermore,)16
2438 b(w)o(e)h(included)f(a)g(few)75 1046 y(scripts)f(written)f(in)f
2439 Fk(sh)g Fl(and)h Fk(perl)e Fl(whic)o(h)i(w)o(e)g(use)g(in)f(our)h(en)o
2440 (vironmen)o(t)e(to)i(re/start)h Fk(hlfsd)o Fl(,)e(test)h(for)g(p)q(ossible)75
2441 1096 y(con\014guration)f(anomalies,)f(and)h(resend)j(\\lost")d(mail.)175
2442 1171 y(The)e(most)f(signi\014can)o(t)h(w)o(ork)f(that)i(SAs)f(need)h(to)f(do)
2443 g(is)g(iden)o(tify)f(programs)g(that)h(need)h(to)f(access)i(mailb)q(o)o(x)75
2444 1221 y(\014les)18 b(of)f(other)i(users,)h(and)d(\\)p Fh(setgid)p
2445 Fl(")h(them)f(to)g(HLFS)p 967 1221 13 2 v 15 w(GID.)g(In)h(our)g(en)o
2446 (vironmen)o(t)e(w)o(e)i(had)g(to)g(do)f(that)h(for)75 1271
2447 y Fk(comsat)p Fl(,)f Fk(from)p Fl(,)g Fk(finger)g Fl(and)g(a)h(few)g(others.)
2448 30 b(Our)19 b(en)o(vironmen)o(t)d(uses)j(the)g Fk(rdist)p Fl([5)n(])e
2449 (automatic)f(soft)o(w)o(are)75 1320 y(distribution)i(program,)g(and)g(th)o
2450 (us)h(these)h(c)o(hanges)f(w)o(ere)h(required)f(only)f(in)g(one)h(place)f(|)g
2451 (the)i(top)e(of)g(our)75 1370 y Fk(rdist)13 b Fl(tree.)75 1478
2452 y Fj(5.3)56 b(Problems)175 1553 y Fl(There)15 b(are)f(a)g(few)g(problems,)e
2453 (some)h(of)g(whic)o(h)h(cannot)g(b)q(e)h(easily)e(resolv)o(ed:)137
2454 1670 y Fi(\017)21 b Fl(Some)15 b(programs)g(need)i(to)f(b)q(e)h
2455 Fh(setgid)g Fl(to)f(the)h(sp)q(ecial)f(HLFS)p 1181 1670 V 15
2456 w(GID)g(group.)25 b(There)17 b(is)g(no)f(easy)g(w)o(a)o(y)g(to)179
2457 1719 y(lo)q(cate)f(them)g(other)h(than)g(kno)o(wing)e(ahead)i(of)f(time)f
2458 (what)h(they)h(do.)23 b(Note)16 b(that)f(if)g(the)h(programs)f(are)179
2459 1769 y(not)c Fh(setgid)p Fl(,)g(the)h(only)f(consequence)i(is)e(that)h(these)
2460 g(programs)f(are)g(unable)g(to)g(\014nd)h(mailb)q(o)o(xes.)j(Ho)o(w)o(ev)o
2461 (er,)179 1819 y(with)e(other)i(metho)q(ds,)e(if)g($MAIL)h(is)f(not)h(used,)g
2462 (mail)e(is)h(not)h(deliv)o(ered.)137 1902 y Fi(\017)21 b Fl(It)12
2463 b(is)f(p)q(ossible)h(that)g(the)h(status)f(of)g(a)f(home)g(directory)h
2464 (access)i(will)c(c)o(hange)j(during)e(the)i(time)d(that)i Fk(hlfsd)179
2465 1952 y Fl(cac)o(hes)17 b(this)g(information.)23 b(Pic)o(king)15
2466 b(a)h(smaller)f(cac)o(he)i(expiration)f(time)f(can)i(alleviate)e(this)i
2467 (problem,)179 2002 y(but)d(it)g(increases)h(the)g(resources)h(tak)o(en)e(b)o
2468 (y)g Fk(hlfsd)f Fl(and)h(slo)o(ws)f(do)o(wn)h(access)i(to)e(mail.)h(It)f(is)g
2469 (left)g(for)f(the)179 2051 y(individual)f(SAs)i(to)g(c)o(hange)g(this)g
2470 (default)f(v)n(alue.)137 2134 y Fi(\017)21 b Fl(An)o(y)14 b(logins)e(with)i
2471 (the)h(same)e Fh(uid)h Fl(and)f(a)h(di\013eren)o(t)h(home)e(directory)h(ma)o
2472 (y)e(ha)o(v)o(e)i(mail)d(deliv)o(ered)k(or)e(read)179 2184
2473 y(from)c(an)o(y)i(of)f(their)h(home)f(directory)i(pathnames.)k
2474 Fk(Hlfsd)10 b Fl(stores)j(pathnames)d(in)g(an)h(in)o(ternal)g(hash)g(table)
2475 179 2234 y(k)o(ey)o(ed)i(b)o(y)g(the)g Fh(uid)p Fl(;)g(therefore,)h(it)f(is)g
2476 (unde\014ned)h(whic)o(h)f(pathname)f(is)g(returned)j(in)d(the)i(case)g(of)e
2477 (m)o(ultiple)179 2284 y(users)k(with)e(the)h(same)f Fh(uid)h
2478 Fl(and)g(di\013eren)o(t)g(home)f(directories.)21 b(W)m(e)14
2479 b(pro)o(vide)h(a)f(script)i(whic)o(h)e(c)o(hec)o(ks)i(for)179
2480 2334 y(this)e(situation)f(and)h(w)o(arns)g(the)g(SAs.)137 2417
2481 y Fi(\017)21 b Fl(On)16 b(systems)g(that)g(cannot)g(turn)g(o\013)g(the)g(NFS)
2482 g(attribute)g(cac)o(he,)h(the)g(k)o(ernel)f(migh)o(t)d(return)k(the)g(same)
2483 179 2467 y(sym)o(b)q(olic)8 b(link)h(name)f(for)i(t)o(w)o(o)f(di\013eren)o(t)
2484 i(users)g(who)f(access)h(the)g(sp)q(o)q(ol)e(directory)i(consecutiv)o(ely)m
2485 (,)f(p)q(ossibly)179 2516 y(resulting)17 b(in)f(mail)e(getting)i(deliv)o
2486 (ered)h(to)g(the)g(wrong)g(mailb)q(o)o(x!)23 b(On)17 b(these)h(systems,)f
2487 Fk(hlfsd)f Fl(will)f(not)179 2566 y(run)h(unless)g(started)g(with)f(a)h(sp)q
2488 (ecial)f(option.)22 b(In)16 b(that)f(case)i(it)e(will)f(set)i(the)g
2489 (attribute)g(cac)o(he)g(v)n(alue)f(to)179 2616 y(the)f(shortest)i(p)q
2490 (ossible)e(in)o(terv)n(al,)e(but)i(it)g(ma)o(y)e(not)i(b)q(e)g(su\016cien)o
2491 (t.)954 2825 y(12)p eop
2492 %%Page: 13 13
2493 bop 75 42 a Fj(6)56 b(Related)17 b(W)-5 b(ork)175 117 y Fl(The)18
2494 b(idea)f(of)h(dynamic)e(or)h(v)n(ariable)g(pathname)g(comp)q(onen)o(ts)g(is)h
2495 (not)g(new.)30 b(HP-UX)18 b(do)q(es)g(this)g(with)75 166 y(con)o(text-dep)q
2496 (enden)o(t)g(\014les[8],)d(and)g(Mac)o(h)h(with)f(the)h(\\)p
2497 Fk(@SYS)p Fl(")f(v)n(ariables[4)n(].)23 b(Both)16 b(of)f(these)i(implemen)o
2498 (tations)75 216 y(supp)q(ort)11 b(replacemen)o(t)f(of)f(pathname)g(comp)q
2499 (onen)o(ts)h(b)o(y)g(k)o(ernel)g(v)n(ariables.)16 b(Ap)q(ollo's)9
2500 b(DOMAIN/OS)i(supp)q(orted)75 266 y(a)20 b(more)g(sophisticated)h(system)f
2501 (where)i(arbitrary)e(user)i(en)o(vironmen)o(t)d(v)n(ariables)h(could)g(b)q(e)
2502 h(referenced)i(in)75 316 y(pathnames[11)n(,)12 b(12].)k(On)d(the)g(issue)g
2503 (of)e(ha)o(ving)g(a)h(user's)i(home)d(\014les)h(and)g(mailb)q(o)o(x)e(\014le)
2504 i(reside)h(in)f(one)g(lo)q(cation,)75 366 y(Plan)h(9's)h Fh(attach)g
2505 Fl(op)q(erator)h(can)f(b)q(e)g(used)h(to)f(unify)f(sev)o(eral)h(\014le)g
2506 (serv)o(ers)i(in)o(to)d(one)h(user)h(name)e(space[14].)175
2507 440 y(What)f(is)h(new)g(ab)q(out)g(our)g(idea)g(is)g(that)g(w)o(e)g(do)f(not)
2508 h(require)h(an)o(y)f(c)o(hange)g(to)g(an)o(y)f(part)h(of)g(the)g
2509 (\014lesystem)75 490 y(implemen)o(tatio)o(n)c(in)i(the)i(k)o(ernel.)18
2510 b(All)10 b(that)i(is)g(required)h(are)f(RPC)f(and)h(NFS,)f(making)f(the)i
2511 (system)f(m)o(uc)o(h)g(more)75 540 y(widely)i(applicable.)175
2512 615 y(Though)i(at)h(\014rst)h(it)e(ma)o(y)f(app)q(ear)i(that)g
2513 Fk(amd)f Fl(can)i(do)e(what)h(hlfsd)f(do)q(es,)i(it)f(can't.)24
2514 b Fk(Amd)15 b Fl(cannot)h(return)75 665 y(di\013eren)o(t)d(pathnames)f(as)g
2515 (a)g(v)n(alue)g(of)g(a)g(sym)o(b)q(olic)f(link)g(dep)q(ending)i(on)f(who)g
2516 (accessed)j(it.)i(See)c(also)f(Section)h(2.3)75 714 y(for)h(more)e(details)i
2517 (on)g(v)n(arious)f(w)o(a)o(ys)g(in)h(whic)o(h)g Fk(amd)f Fl(cannot)h(help)g
2518 (the)g(w)o(a)o(y)g Fk(hlfsd)e Fl(can.)75 822 y Fj(6.1)56 b(Mail-reading)17
2519 b(Serv)n(ers)175 897 y Fl(The)11 b(future)g(of)g(mail)d(reading)i(and)h
2520 (sending)g(ma)o(y)e(b)q(e)i(similar)e(to)h(that)h(used)h(b)o(y)f(the)g(NNTP)g
2521 (proto)q(col)g(used)75 947 y(for)g(managing)d(NetNews[10)q(,)j(19)o(].)17
2522 b(That)11 b(is,)g(a)g(sp)q(ecial-purp)q(ose)h(serv)o(er)h(whic)o(h)e(pro)o
2523 (vides)h(net)o(w)o(ork)f(connections)75 997 y(for)j(reading)f(and)h(writing)f
2524 (mail)e(remotely)m(.)175 1072 y(Sev)o(eral)19 b(suc)o(h)g(programs)f(exist,)i
2525 (most)e(notably)g(IMAP[16])g(and)h(POP[17].)32 b(Ho)o(w)o(ev)o(er,)20
2526 b(use)g(of)f(these)75 1122 y(serv)o(ers)14 b(is)e(limited)e(at)i(this)g(time)
2527 e(b)q(ecause)k(most)d(MT)m(As)h(and)g(UAs)h(ha)o(v)o(e)f(not)g(b)q(een)h(con)
2528 o(v)o(erted)g(to)f(use)h(them,)e(or)75 1171 y(they)i(require)h(sp)q(ecial)f
2529 (en)o(vironmen)o(ts)f(\(the)i Fh(A)o(ndr)n(ew)f(Message)i(Delivery)e(System)p
2530 Fl([18)o(])g(requires)h(AFS\).)e(P)o(orting)75 1221 y(those)18
2531 b(applications)f(for)h(most)e(p)q(opular)i(en)o(vironmen)o(ts)f(is)g(not)h
2532 (going)f(to)g(b)q(e)i(an)e(easy)h(task.)30 b(Nev)o(ertheless,)75
2533 1271 y(the)15 b(b)q(ene\014ts)h(of)d(suc)o(h)i(services)h(o)o(v)o(er)e(that)g
2534 (of)g Fk(hlfsd)f Fl(w)o(ould)g(include)h(faster)h(and)f(more)f(reliable)h
2535 (service,)h(plus)75 1321 y(greatly)e(expanded)h(functionalit)o(y)e(\(p)q
2536 (ossibly)h(pro)o(viding)f(threads)i(information)c(for)j(threaded)i(mail)10
2537 b(readers\).)75 1429 y Fj(7)56 b(Conclusion)175 1504 y Fl(W)m(e)16
2538 b(ha)o(v)o(e)h(describ)q(ed)i(the)f(b)q(ene\014ts)h(of)d(deliv)o(ering)h
2539 (mail)d(to)j(users')h(home)e(directories,)j(the)e(traditional)75
2540 1554 y(w)o(a)o(ys)10 b(to)f(do)h(that)g(and)g(wh)o(y)f(w)o(e)i(think)e(they)h
2541 (are)h(inadequate,)f(and)g(the)g(design,)h(implemen)o(tatio)o(n,)d(p)q
2542 (erformance,)75 1604 y(and)14 b(con)o(v)o(enience)h(of)e(our)h(alternativ)o
2543 (e.)175 1678 y(The)i(main)f(con)o(tribution)g(of)h(our)g(w)o(ork)g(is)h(the)g
2544 (idea)f(mail)d(can)k(b)q(e)g(reliably)e(deliv)o(ered)i(to)f(user's)h(home)75
2545 1728 y(directories)12 b(for)e(easy)h(access)i(with)d(v)o(ery)h(little)f(o)o
2546 (v)o(erhead,)h(user)g(hassle,)h(or)e(the)i(need)f(for)f(extensiv)o(e)i(in)o
2547 (terv)o(en)o(tion)75 1778 y(on)i(the)g(part)g(of)f(SAs.)175
2548 1853 y(A)h(w)o(orking)f(protot)o(yp)q(e)i(v)o(ersion)f(of)g
2549 Fk(hlfsd)f Fl(w)o(as)h(written)h(in)f(one)g(w)o(eek)o(end.)20
2550 b(Ho)o(w)o(ev)o(er,)15 b(the)f(ideas)h(repre-)75 1902 y(sen)o(ted)e(in)e(the)
2551 i(w)o(ork)e(span)h(sev)o(eral)h(y)o(ears)f(of)f(exp)q(erience)j(in)d(net)o(w)
2552 o(ork)h(programming)c(\(esp)q(ecially)13 b(RPC)o(\),)f(NFS,)75
2553 1952 y Fk(amd)p Fl(,)h(and)g(mail)f(systems.)75 2060 y Fj(7.1)56
2554 b(F)-5 b(uture)18 b(W)-5 b(ork)175 2135 y Fl(It)15 b(w)o(ould)e(b)q(e)j(p)q
2555 (ossible)f(to)g(in)o(tegrate)g(some)f(of)g Fk(hlfsd)o Fl('s)g(functionalit)o
2556 (y)g(in)o(to)g Fk(amd)p Fl(,)g(b)o(y)g(pro)o(viding)g(sp)q(ecial)75
2557 2185 y(k)o(eyw)o(ords)g(lik)o(e)f Fk($)p Fi(f)p Fk(home)p Fi(g)p
2558 Fl(,)f Fk($)p Fi(f)p Fk(user)p Fi(g)g Fl(and)i Fk($)p Fi(f)p
2559 Fk(group)p Fi(g)e Fl(for)i(use)h(in)e Fk(amd)p Fl('s)g(maps.)175
2560 2260 y(W)m(e)e(plan)g(on)g(making)e(sure)k Fk(hlfsd)d Fl(is)h(as)h(p)q
2561 (ortable)g(as)f Fk(amd)g Fl(is,)g(and)h(impro)o(ving)d(its)i(p)q(erformance)h
2562 (as)f(m)o(uc)o(h)75 2310 y(as)j(p)q(ossible.)k(An)c(RPC)g(in)o(terface)g(for)
2563 g(querying)g Fk(hlfsd)o Fl('s)f(status)i(is)f(needed)h(as)f(w)o(ell.)75
2564 2418 y Fj(7.2)56 b(Alternativ)n(e)17 b(Uses)175 2493 y Fk(Hlfsd)o
2565 Fl('s)g(primary)e(use)j(is)f(that)h(of)e(a)h(mail-sp)q(o)q(ol)e(redirector.)
2566 29 b(Ho)o(w)o(ev)o(er,)18 b(it)f(can)h(b)q(e)g(used)g(to)f(p)q(erform)75
2567 2543 y(other)e(tasks.)j(All)13 b(it)h(tak)o(es)g(are)g(the)h(righ)o(t)e
2568 (command-li)o(ne)f(options:)137 2650 y Fi(\017)21 b Fk(Hlfsd)10
2569 b Fl(can)h(manage)e(the)j Fk(/var/tmp)d Fl(directory)m(.)17
2570 b(Th)o(us)12 b(ev)o(ery)f(user)h(who)f(uses)h Fk(/var/tmp)e
2571 Fl(w)o(ould)g(actually)179 2700 y(b)q(e)j(using)e(a)h(sub)q(directory)i
2572 (within)d(their)i(o)o(wn)e(home)g(directory)m(,)i(rather)g(than)f(taking)f
2573 (from)f(system-wide)954 2825 y(13)p eop
2574 %%Page: 14 14
2575 bop 179 42 a Fl(resources.)137 124 y Fi(\017)21 b Fl(Other)13
2576 b(t)o(yp)q(es)g(of)e(user-sp)q(eci\014c)k(\014les)d(whic)o(h)g(get)h(sp)q(o)q
2577 (oled)f(to)g(a)g(particular)g(host,)g(suc)o(h)h(as)f Fh(Se)n(cr)n(et)h(Mail)p
2578 Fl([24)n(])179 173 y(or)h(electronic)h(faxes)f(can)g(also)f(b)q(e)h
2579 (redirected)i(for)e(sp)q(o)q(oling)f(in)o(to)g(home)g(directories.)75
2580 296 y Fj(8)56 b(Ac)n(kno)n(wledgmen)n(ts)175 371 y Fl(Sp)q(ecial)10
2581 b(thanks)h(go)e(to)i(Daniel)e(Duc)o(hamp)g(for)h(his)g(in)o(v)n(aluable)f
2582 (commen)o(ts)f(on)i(the)h(pap)q(er,)h(to)e(James)g(T)m(anis)75
2583 421 y(who)g(wrote)h(the)f(remailing)e(script)j(and)f(pro)o(vided)g(useful)g
2584 (feedbac)o(k,)h(and)f(to)g(all)f(mem)o(b)q(ers)g(of)g(the)i(tec)o(hnical)g
2585 (sta\013)75 471 y(who)e(help)q(ed)h(in)f(stress-testing)i Fk(hlfsd)o
2586 Fl(.)17 b(W)m(e)9 b(also)f(thank)h(man)o(y)f(mem)o(b)q(ers)g(of)g(the)i
2587 Fk(amd-workers@acl.lan)o(l.gov)75 520 y Fl(mailing)h(list)i(for)h(pro)o
2588 (viding)e(v)n(aluable)h(discussion)h(on)g(the)g(sub)r(ject.)175
2589 595 y(This)f(w)o(ork)h(w)o(as)f(supp)q(orted)i(in)e(part)h(b)o(y)f(a)h
2590 (National)e(Science)j(F)m(oundation)d(CISE)i(Institutional)f(Infras-)75
2591 645 y(tructure)j(gran)o(t,)d(n)o(um)o(b)q(er)g(CD)o(A-90-24735.)175
2592 720 y(As)i Fk(hlfsd)f Fl(uses)i(parts)f(of)f(the)i Fk(amd)e
2593 Fl(distribution,)g(it)h(is)f(distributed)i(under)g(the)f(same)f(restrictions)
2594 i(and)75 769 y(licenses)f(that)f Fk(amd)f Fl(is.)75 877 y Fj(9)56
2595 b(References)75 952 y Fl([1])20 b(E.)14 b(Allman.)k(SENDMAIL)d({)f(An)h(In)o
2596 (ternet)o(w)o(ork)h(Mail)d(Router.)21 b(In)14 b Fh(UNIX)i(System)f(Manager's)
2597 h(Manual.)140 1002 y Fl(Univ)o(ersit)o(y)d(of)h(California,)d(Berk)o(eley)m
2598 (,)j(1986.)75 1084 y([2])20 b(F.)g(C.)g(Baran.)39 b(MW:)20
2599 b(Mail-W)m(atc)o(h.)37 b(An)21 b(unpublished)g(man)o(ual)d(page,)k(Academic)e
2600 (Systems)h(Group,)140 1134 y(Colum)o(bia)11 b(Univ)o(ersit)o(y)i(Cen)o(ter)i
2601 (for)f(Computing)e(Activities,)h(1987.)75 1216 y([3])20 b(B.)12
2602 b(Callaghan)f(and)h(T.)g(Ly)o(on.)j(The)e(Automoun)o(ter.)i(In)e
2603 Fh(Pr)n(o)n(c.)g(1989)h(Winter)g(USENIX)g(Conf.)p Fl(,)e(pp.)g(43{51,)140
2604 1266 y(Jan)o(uary)h(1989.)75 1348 y([4])20 b(M.)13 b(N.)g(Condict.)18
2605 b(Con\014guring)13 b(and)g(Building)g(Mac)o(h)h(3.0.)i(OSF)e(Researc)o(h)h
2606 (Institute,)f(Grenoble,)g(F)m(rance.)140 1398 y(Unpublished)g(notes)g(a)o(v)n
2607 (ailable)e(via)h(ftp)h(from)e Fk(mach.cs.cmu.edu:d)o(oc/no)o(tes/k)o(ernel)p
2608 1595 1398 14 2 v 12 w(build.doc)p Fl(.)75 1480 y([5])20 b(M.)13
2609 b(A.)g(Co)q(op)q(er.)18 b(Ov)o(erhauling)13 b(Rdist)g(for)h(the)g('90s.)j
2610 Fh(L)n(ar)n(ge)d(Instal)r(lation)h(System)g(A)n(dministr)n(ators)e(Work-)140
2611 1530 y(shop)i(Pr)n(o)n(c)n(e)n(e)n(dings)p Fl(,)e(pp.)h(1-8,)f(USENIX,)h
2612 (Long)f(Beac)o(h,)h(CA,)g(Octob)q(er)h(19-June)f(23,)f(1992.)75
2613 1612 y([6])20 b(A.)13 b(J.)h(Findla)o(y)m(.)i(The)e(Home-Directory)f(Mail)g
2614 (System.)18 b(In)13 b Fh(EUUG)i(News)p Fl(,)e(Autumn)g(1988.)75
2615 1694 y([7])20 b(J.)13 b(F)m(ulton.)k(MIT)d(X)g(Consortium.)j(X11R5)12
2616 b(Reference)k(Man)o(ual)d(P)o(ages,)h(Section)g(1:)k(\\xbi\013\(1\)",)12
2617 b(1988.)75 1776 y([8])20 b(Hewlett-P)o(ac)o(k)n(ard)14 b(Compan)o(y)m(.)j
2618 (HP-UX)e(Release)g(9.0)e(Reference)j(Man)o(ual,)d(Section)i(4:)k
2619 (\\cdf\(4\)",)13 b(August)140 1826 y(1992.)75 1908 y([9])20
2620 b(IBM)11 b(Corp.)j(AIX)e(Comma)o(nds)d(Reference,)k(V)m(olume)d(1,)h(\\b)q
2621 (ellmail\(1\)")o(,)e(pp.)i(1-84|1-87,)e(Decem)o(b)q(er)i(1989.)75
2622 1990 y([10])19 b(B.)14 b(Kan)o(tor)g(and)g(P)m(.)f(Lapsley)m(.)k(Net)o(w)o
2623 (ork)e(News)f(T)m(ransfer)h(Proto)q(col.)j(RF)o(C)13 b(977,)f(F)m(ebruary)j
2624 (1986;)d(27)h(p.)75 2073 y([11])19 b(P)m(.)14 b(J.)h(Leac)o(h,)g(P)m(.)f(H.)g
2625 (Levine,)h(B.)f(P)m(.)g(Douros,)h(J.)f(A.)h(Hamilton,)c(D.L.)j(Nelson,)g(and)
2626 h(B.)g(L.)f(Stumpf.)19 b Fh(The)140 2122 y(A)o(r)n(chite)n(ctur)n(e)14
2627 b(of)j(an)f(Inte)n(gr)n(ate)n(d)g(L)n(o)n(c)n(al)g(Network.)22
2628 b Fl(In)15 b Fh(IEEE)i(Journal)f(on)h(Sele)n(cte)n(d)f(A)o(r)n(e)n(as)g(in)g
2629 (Communi-)140 2172 y(c)n(ations,)d Fm(SA)o(C-1)p Fl(\(5\),)g(pp.)h(842-856,)e
2630 (No)o(v)o(em)o(b)q(er)h(1983.)75 2254 y([12])19 b(P)m(.)12
2631 b(H.)f(Levine.)16 b Fh(The)d(Ap)n(ol)r(lo)g(DOMAIN)g(Distribute)n(d)g(File)f
2632 (System.)k Fl(In)c Fh(NA)m(TO)g(ASI)i(Series:)j(The)n(ory)c(and)140
2633 2304 y(Pr)n(actic)n(e)k(of)i(Distribute)n(d)f(Op)n(er)n(ating)g(Systems,)g
2634 Fl(Y.)g(P)o(ak)o(er,)g(J-P)m(.)g(Banatre,)h(M.)e(Bozyi\024)-21
2635 b(git,)18 b(pp.)f(241-260,)140 2354 y(editors,)d(Springer-V)m(erlag,)f(1987.)
2636 75 2436 y([13])19 b(J.)14 b(S.)g(P)o(endry)h(and)f(N.)g(William)o(s.)j
2637 Fh(A)o(md)e(-)g(The)g(4.4)g(BSD)h(A)o(utomounter)p Fl(.)k(Imp)q(erial)12
2638 b(College)i(of)g(Science)140 2486 y(T)m(ec)o(hnology)f(and)g(Medicine,)h
2639 (London.)f(Marc)o(h)h(1991.)75 2568 y([14])19 b(R.)14 b(Pik)o(e,)g(D.)f
2640 (Presotto,)i(K.)f(Thompson,)f(and)h(H.)g(T)m(ric)o(k)o(ey)m(.)19
2641 b Fh(Plan)d(9)f(fr)n(om)g(Bel)r(l)g(L)n(abs)p Fl(.)k(In)c Fh(Pr)n(o)n(c)n(e)n
2642 (e)n(dings)g(of)140 2618 y(the)g(Summer)f(1990)i(UKUUG)f(Conf.)p
2643 Fl(,)e(London,)g(July)m(,)f(1990,)h(pp.)g(1-9.)75 2700 y([15])19
2644 b(J.)14 b(B.)g(P)o(ostel.)k(Simple)12 b(Mail)h(T)m(ransfer)h(Proto)q(col.)k
2645 (RF)o(C)13 b(821,)g(August)h(1982;)f(68)g(p.)954 2825 y(14)p
2647 %%Page: 15 15
2648 bop 75 42 a Fl([16])19 b(J.)14 b(Rice.)k(In)o(teractiv)o(e)d(Mail)d(Access)k
2649 (Proto)q(col.)i(RF)o(C)c(1203,)e(F)m(ebruary)i(1991;)f(49)g(p.)75
2650 125 y([17])19 b(M.)14 b(Rose.)k(P)o(ost)c(O\016ce)h(Proto)q(col.)j(RF)o(C)13
2651 b(1225,)f(Ma)o(y)i(1991;)e(16)h(p.)75 208 y([18])19 b(J.)f(Roseneb)q(erg,)h
2652 (C.)f(F.)f(Ev)o(erhart,)i(and)f(N.)g(S.)f(Borenstein.)32 b
2653 Fh(A)o(n)19 b(Overview)f(of)g(the)h(A)o(ndr)n(ew)f(Message)140
2654 257 y(System)p Fl(.)i(In)15 b Fh(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)f(the)h(A)o
2655 (CM)f(SIGCOMM)h('87)g(Workshop)p Fl(,)g(Sto)o(w)o(e,)e(V)m(ermon)o(t,)f
2656 (August)j(11-13,)140 307 y(1987,)c(pp.)h(99-108.)75 390 y([19])19
2657 b(R.)d(Salz.)24 b Fh(InterNetNews:)e(Usenet)17 b(tr)n(ansp)n(ort)g(for)f
2658 (Internet)h(sites)p Fl(.)24 b(In)17 b Fh(Pr)n(o)n(c.)f(1992)i(Summer)f
2659 (USENIX)140 440 y(Conf.)p Fl(,)c(pages)h(93{98,)e(June)j(1992.)75
2660 523 y([20])k(R.)14 b(Sandb)q(erg)h(et)g(al.)k(Design)c(and)f(Implemen)o
2661 (tation)e(of)i(the)h(Sun)f(Net)o(w)o(ork)h(Filesystem.)20 b(In)14
2662 b Fh(Pr)n(o)n(c.)h(1985)140 573 y(Summer)g(Usenix)g(Conf.)p
2663 Fl(,)e(pages)h(119-130,)e(June)i(1985.)75 656 y([21])19 b(Sun)13
2664 b(Microsystems,)f(Inc.)k(SunOS)d(Reference)h(Man)o(ual,)e(V)m(olume)e(I,)i
2665 (Section)h(1:)k(\\bi\013\(1\)",)12 b(Septem)o(b)q(er)h(9,)140
2666 706 y(1987.)75 789 y([22])19 b(Sun)11 b(Microsystems,)f(Inc.)j(SunOS)e
2667 (Reference)i(Man)o(ual,)d(V)m(olume)e(I)q(I,)i(Section)h(3:)16
2668 b(\\syslog\(3\)",)10 b(Septem)o(b)q(er)140 839 y(9,)j(1987.)75
2669 922 y([23])19 b(Sun)g(Microsystems,)f(Inc.)33 b(SunOS)19 b(Reference)h(Man)o
2670 (ual,)e(V)m(olume)f(I,)h(Section)h(1:)27 b(\\comsat\(8c\)",)18
2671 b(and)140 971 y(\\in.comsat\(8c\)",)11 b(Septem)o(b)q(er)k(9,)e(1987.)75
2672 1054 y([24])19 b(Sun)14 b(Microsystems,)f(Inc.)k(SunOS)d(Reference)h(Man)o
2673 (ual,)d(V)m(olume)f(I,)i(Section)h(1:)j(\\xsend\(1\)",)d(\\xget\(1\)",)140
2674 1104 y(and)f(\\enroll\(1\)",)g(Septem)o(b)q(er)h(9,)f(1987.)75
2675 1187 y([25])19 b(Sun)f(Microsystems,)g(Inc.)31 b(NFS:)18 b(Net)o(w)o(ork)g
2676 (File)g(System)f(Proto)q(col)h(sp)q(eci\014cation.)31 b(RF)o(C)17
2677 b(1094,)h(1989)140 1237 y(Marc)o(h;)13 b(27)h(p.)75 1320 y([26])19
2678 b(L.)c(W)m(all)f(and)h(R.)f(L.)h(Sc)o(h)o(w)o(artz.)23 b Fh(Pr)n(o)n(gr)n
2679 (amming)16 b(Perl)p Fl(.)22 b(O'Reilly)14 b(&)h(Asso)q(ciates,)i(Inc.,)e
2680 (Sebastop)q(ol,)h(CA)140 1370 y(\(1991\).)75 1453 y([27])j(R.)d(S.)g(Zac)o
2681 (hariassen.)26 b Fh(ZMOG:)18 b(The)f(ZMailer)g(Op)n(er)n(ations)f(Guide)p
2682 Fl(.)26 b(Av)n(ailable)15 b(via)g(ftp)i(as)f(part)h(of)e(the)140
2683 1503 y(ZMailer)e(distribution)h(from)e Fk(ftp.uu.net:/netwo)o(rkin)o(g/mai)o
2684 (l/zma)o(iler)p Fl(.)75 1627 y Fj(10)56 b(Author)19 b(Information)175
2685 1702 y Fm(Erez)f(Zadok)e Fl(is)g(an)f(MS)h(candidate)g(and)g(full-time)d
2686 (Sta\013)k(Asso)q(ciate)f(in)g(the)g(Computer)g(Science)h(De-)75
2687 1752 y(partmen)o(t)11 b(at)h(Colum)o(bia)d(Univ)o(ersit)o(y)m(.)16
2688 b(His)c(primary)e(in)o(terests)k(include)e(op)q(erating)f(systems,)h(\014le)g
2689 (systems,)g(and)75 1802 y(w)o(a)o(ys)j(to)g(ease)h(system)f(administration)e
2690 (tasks.)23 b(In)15 b(Ma)o(y)g(1991,)f(he)i(receiv)o(ed)g(his)f(B.S.)g(in)g
2691 (Computer)g(Science)75 1852 y(from)g(Colum)o(bia's)f(Sc)o(ho)q(ol)i(of)g
2692 (Engineering)h(and)f(Applied)h(Science.)28 b(Erez)18 b(came)e(to)g(the)i
2693 (United)f(States)g(six)75 1902 y(y)o(ears)d(ago)e(and)i(has)f(liv)o(ed)g(in)g
2694 (New)g(Y)m(ork)g(\\Sin")g(Cit)o(y)f(ev)o(er)j(since.)j(In)c(his)f(rare)h
2695 (free)g(time)e(Erez)j(is)e(an)g(amateur)75 1951 y(photographer,)h(science)h
2696 (\014ction)f(dev)o(otee,)h(and)e(ro)q(c)o(k-n-roll)g(fan.)175
2697 2026 y(Mailing)h(address:)25 b(500)16 b(W)m(est)h(120)747 2011
2698 y Fa(th)797 2026 y Fl(Street,)h(Colum)o(bia)c(Univ)o(ersit)o(y)m(,)i(New)h(Y)
2699 m(ork,)g(NY)f(10027.)25 b(Email)75 2076 y(address:)19 b Fk
2700 (ezk@cs.columbia.edu)o Fl(.)175 2151 y Fm(Alexander)10 b(Dupuy)g
2701 Fl(has)h(b)q(een)h(a)e(Senior)h(Researc)o(h)i(Sta\013)e(Asso)q(ciate)h(for)e
2702 (the)i(Distributed)f(Computing)75 2200 y(and)i(Comm)o(uni)o(cations)d(Lab)j
2703 (in)f(the)i(Computer)e(Science)i(Departmen)o(t)f(at)f(Colum)o(bia)e(Univ)o
2704 (ersit)o(y)j(for)g(the)g(last)75 2250 y(7)h(y)o(ears.)21 b(He)16
2705 b(has)f(recen)o(tly)g(tak)o(en)g(a)f(p)q(osition)h(at)f(System)g(Managemen)o
2706 (t)g(AR)m(TS,)f(a)i(small)d(startup)k(compan)o(y)75 2300 y(dev)o(eloping)e
2707 (net)o(w)o(ork)h(and)g(systems)g(managemen)o(t)d(tec)o(hnology)m(.)20
2708 b(A)15 b(nativ)o(e)g(b)q(orn)g(and)g(bred)g(New)h(Y)m(ork)o(er,)e(he)75
2709 2350 y(insists)g(that)g(w)o(orking)f(in)h(the)g(suburbs)h(is)f(not)g(the)g
2710 (\014rst)h(step)g(to)o(w)o(ards)f(living)e(there.)175 2425
2711 y(Mailing)h(address:)23 b(System)15 b(Managemen)o(t)f(AR)m(TS,)g(199)h(Main)g
2712 (Street,)h(Suite)g(900,)f(White)g(Plains,)g(NY)75 2474 y(10601.)i(Email)11
2713 b(address:)20 b Fk(dupuy@smarts.co)o(m)p Fl(.)954 2825 y(15)p
2715 %%Trailer
2717 userdict /end-hook known{end-hook}if
2718 %%EOF