[llvm-commits] CVS: llvm-www/ProjectsWithLLVM/2003-Fall-CS497YYZ-LLVA-emu.pdf 2003-Fall-CS497YYZ-LLVA-emu.ps index.html

Chris Lattner lattner at cs.uiuc.edu
Fri Dec 12 17:15:03 PST 2003


Changes in directory llvm-www/ProjectsWithLLVM:

2003-Fall-CS497YYZ-LLVA-emu.pdf added (r1.1)
2003-Fall-CS497YYZ-LLVA-emu.ps added (r1.1)
index.html updated: 1.1 -> 1.2

---
Log message:

* Stop using ugly bars
* Add LLVA-emu project paper



---
Diffs of the changes:  (+4113 -7)

Index: llvm-www/ProjectsWithLLVM/2003-Fall-CS497YYZ-LLVA-emu.pdf


Index: llvm-www/ProjectsWithLLVM/2003-Fall-CS497YYZ-LLVA-emu.ps
diff -c /dev/null llvm-www/ProjectsWithLLVM/2003-Fall-CS497YYZ-LLVA-emu.ps:1.1
*** /dev/null	Fri Dec 12 17:14:12 2003
--- llvm-www/ProjectsWithLLVM/2003-Fall-CS497YYZ-LLVA-emu.ps	Fri Dec 12 17:14:02 2003
***************
*** 0 ****
--- 1,4090 ----
+ %!PS-Adobe-2.0
+ %%Creator: dvips(k) 5.90a Copyright 2002 Radical Eye Software
+ %%Title: final.dvi
+ %%Pages: 9
+ %%PageOrder: Ascend
+ %%BoundingBox: 0 0 612 792
+ %%DocumentFonts: CMCSC10 CMR12 CMSY10 CMBX12 CMR10 CMR7 CMTT10 CMR6 CMR8
+ %%+ CMBX10 CMTI10 CMMI7
+ %%EndComments
+ %DVIPSWebPage: (www.radicaleye.com)
+ %DVIPSCommandLine: dvips final.dvi -o final.ps
+ %DVIPSParameters: dpi=1200, compressed
+ %DVIPSSource:  TeX output 2003.12.12:1659
+ %%BeginProcSet: texc.pro
+ %!
+ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+ mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+ exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+ N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+ /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+ /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+ array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+ df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+ definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+ }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+ B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+ 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
+ 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+ 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+ sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+ gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+ /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+ get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+ fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+ {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+ chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+ forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+ /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+ }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+ mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+ 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+ index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+ /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+ (LaserWriter 16/600)]{A length product length le{A length product exch 0
+ exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+ end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+ grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+ imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+ exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+ fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+ delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+ B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+ rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+ 
+ %%EndProcSet
+ %%BeginProcSet: texps.pro
+ %!
+ TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+ index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+ exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
+ exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub
+ dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
+ ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict
+ end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{
+ dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1
+ roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def
+ dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}
+ if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}
+ def end
+ 
+ %%EndProcSet
+ %%BeginProcSet: special.pro
+ %!
+ TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
+ /vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
+ /rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
+ /@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
+ /hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
+ X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
+ /@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
+ /urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
+ {userdict/md get type/dicttype eq{userdict begin md length 10 add md
+ maxlength ge{/md md dup length 20 add dict copy def}if end md begin
+ /letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
+ atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
+ itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
+ transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
+ curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
+ pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
+ if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
+ -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
+ get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
+ yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
+ neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
+ noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
+ 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
+ neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
+ 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
+ 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
+ -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
+ TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
+ Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
+ }if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
+ save N userdict maxlength dict begin/magscale true def normalscale
+ currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
+ /psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
+ psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
+ psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
+ TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def
+ @MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
+ newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto
+ closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N
+ /@beginspecial{SDict begin/SpecialSave save N gsave normalscale
+ currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}
+ N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs
+ neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate
+ rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse
+ scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg
+ lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx
+ ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N
+ /setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{
+ pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
+ restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B
+ /rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1
+ setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY
+ moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix
+ matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc
+ savematrix setmatrix}N end
+ 
+ %%EndProcSet
+ %%BeginFont: CMMI7
+ %!PS-AdobeFont-1.1: CMMI7 1.100
+ %%CreationDate: 1996 Jul 23 07:53:53
+ % Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+ 11 dict begin
+ /FontInfo 7 dict dup begin
+ /version (1.100) readonly def
+ /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+ /FullName (CMMI7) readonly def
+ /FamilyName (Computer Modern) readonly def
+ /Weight (Medium) readonly def
+ /ItalicAngle -14.04 def
+ /isFixedPitch false def
+ end readonly def
+ /FontName /CMMI7 def
+ /PaintType 0 def
+ /FontType 1 def
+ /FontMatrix [0.001 0 0 0.001 0 0] readonly def
+ /Encoding 256 array
+ 0 1 255 {1 index exch /.notdef put} for
+ dup 104 /h put
+ dup 115 /s put
+ dup 116 /t put
+ readonly def
+ /FontBBox{0 -250 1171 750}readonly def
+ /UniqueID 5087382 def
+ currentdict end
+ currentfile eexec
+ D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+ 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+ 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+ B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+ 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+ D919C2DDD26BDC0D99398B9F4D03D77639DF1232A4D6233A9CAF69B151DFD33F
+ C0962EAC6E3EBFB8AD256A3C654EAAF9A50C51BC6FA90B61B60401C235AFAB7B
+ B078D20B4B8A6D7F0300CF694E6956FF9C29C84FCC5C9E8890AA56B1BC60E868
+ DA8488AC4435E6B5CE34EA88E904D5C978514D7E476BF8971D419363125D4811
+ 4D886EDDDCDDA8A6B0FDA5CF0603EA9FA5D4393BEBB26E1AB11C2D74FFA6FEE3
+ FAFBC6F05B801C1C3276B11080F5023902B56593F3F6B1F37997038F36B9E3AB
+ 76C2E97E1F492D27A8E99F3E947A47166D0D0D063E4E6A9B535DC9F1BED129C5
+ 123775D5D68787A58C93009FD5DA55B19511B95168C83429BD2D878207C39770
+ 012318EA7AA39900C97B9D3859E3D0B04750B8390BF1F1BC29DC22BCAD50ECC6
+ A3C633D0937A59E859E5185AF9F56704708D5F1C50F78F43DFAC43C4E7DC9413
+ 44CEFE43279AFD3C167C942889A352F2FF806C2FF8B3EB4908D50778AA58CFFC
+ 4D1B14597A06A994ED8414BBE8B26E74D49F6CF54176B7297CDA112A69518050
+ 01337CBA5478EB984CDD22020DAED9CA8311C33FBCC84177F5CE870E709FC608
+ D28B3A7208EFF72988C136142CE79B4E9C7B3FE588E9824ABC6F04D141E589B3
+ 914A73A42801305439862414F893D5B6C327A7EE2730DEDE6A1597B09C258F05
+ 261BC634F64C9F8477CD51634BA648FC70F659C90DC042C0D6B68CD1DF36D615
+ 24F362B85A58D65A8E6DFD583EF9A79A428F2390A0B5398EEB78F4B5A89D9AD2
+ A517E0361749554ABD6547072398FFDD863E40501C316F28FDDF8B550FF8D663
+ 9843D0BEA42289F85BD844891DB42EC7C51229D33EE7E83B1290404C799B8E8C
+ 889787CDC7AA8BEF7021B3C18A0A61A68CCEA80153A2EBF193130A4DD63DCAA5
+ B689119E6593852F32596F0D45B483B7FC96075C6154039D2F9E83ADECA4FBDC
+ A0A5E10AE08F1EE1D881CE688E1201FF4C96C4EFB50C3C6540FB74553C1857E6
+ 39FC3DB7E2885F413ED1DA3E61BE83F148A857A81069DEAF0716F44E9695D347
+ E548E8E69E98860CD08BE06BA44EA7C49C08C80A6B79755DB7A6B6056E888D4D
+ 9B8E0534836287CBC842375D619772DC60905044272D1023ABA45F38738BDA5A
+ 161F26492ED84D0DD7935E0C6760809AD184EB8F51591F236BD17A6FE75B2186
+ A2CFF5D4D6513BBABBC298BC83B716D87261F2F175D73663B4B8CC160B6F60CB
+ FF027B46F06F0F126028A36292D5063F7DC401A2D9FA7A66EC5E35C0F373B94D
+ E8C7F68D8979B77F618908D4F78921206B2E7C86CD0976C8E67EAF6B06F48700
+ F675DC941A9D90B67448B23A9ECA841E7DB8803DD34821512BEC6D00185E25DE
+ B2D535634DCFF7F7BAD7A9366E6E00944EA5A45F4F50161F60F1C76A75DF565B
+ 5D575AABC46E9210154C13279A361219A3E476ECDCAEF97C9E3E6E42D3F7F450
+ 20E146DB3961F7471C5684B530981364F10B089AB0B686D645CD7C499B46208F
+ 1E0BA2381A323843B6494878BDDD9926995A53FD3F31921C87CEA1826D5B70B3
+ 4F12594E40DAC6EB58ADBF705B3A72F7D35C02BD588E10BC02A0D277551F286D
+ 1299904A02230B57B702A10E7AD6025B773A774EFDCE62D5E508FB9B8A660C8B
+ CB1412A3A141B88A40E518263A32EBDF7F74C091BC7CC13D3B22639E73901081
+ 556C1610911C0DC8BEA482D8FBA73992A374B8BAEF37278FAE61A3CE386AFE66
+ 4DE7B0DE9489CB2982AECFFBF412DC7710FC615C1CE4A8CFA91384FA4F2AB45A
+ 87D2B64E7014B18A3EFF5727161B81D955C001FB4B0E175AE0582561FCE2E2FF
+ D475406BB7960E6F8413BE991A519FCE407F5F80D8D3C00DBC601DA99CA39AE4
+ 1B443BEBC55156FF999CFA9F39A477AC78061AE0FDDAF1294DAEAD398A6A320E
+ 0FC2C58FC87AA697F54AF226E9598FE45103C4
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ cleartomark
+ %%EndFont 
+ %%BeginFont: CMTI10
+ %!PS-AdobeFont-1.1: CMTI10 1.00B
+ %%CreationDate: 1992 Feb 19 19:56:16
+ % Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+ 11 dict begin
+ /FontInfo 7 dict dup begin
+ /version (1.00B) readonly def
+ /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+ /FullName (CMTI10) readonly def
+ /FamilyName (Computer Modern) readonly def
+ /Weight (Medium) readonly def
+ /ItalicAngle -14.04 def
+ /isFixedPitch false def
+ end readonly def
+ /FontName /CMTI10 def
+ /PaintType 0 def
+ /FontType 1 def
+ /FontMatrix [0.001 0 0 0.001 0 0] readonly def
+ /Encoding 256 array
+ 0 1 255 {1 index exch /.notdef put} for
+ dup 40 /parenleft put
+ dup 41 /parenright put
+ dup 45 /hyphen put
+ dup 46 /period put
+ dup 47 /slash put
+ dup 49 /one put
+ dup 51 /three put
+ dup 54 /six put
+ dup 58 /colon put
+ dup 65 /A put
+ dup 66 /B put
+ dup 67 /C put
+ dup 68 /D put
+ dup 69 /E put
+ dup 71 /G put
+ dup 73 /I put
+ dup 74 /J put
+ dup 76 /L put
+ dup 77 /M put
+ dup 79 /O put
+ dup 80 /P put
+ dup 82 /R put
+ dup 83 /S put
+ dup 84 /T put
+ dup 87 /W put
+ dup 97 /a put
+ dup 98 /b put
+ dup 99 /c put
+ dup 100 /d put
+ dup 101 /e put
+ dup 102 /f put
+ dup 103 /g put
+ dup 104 /h put
+ dup 105 /i put
+ dup 107 /k put
+ dup 108 /l put
+ dup 109 /m put
+ dup 110 /n put
+ dup 111 /o put
+ dup 112 /p put
+ dup 114 /r put
+ dup 115 /s put
+ dup 116 /t put
+ dup 117 /u put
+ dup 118 /v put
+ dup 121 /y put
+ dup 122 /z put
+ readonly def
+ /FontBBox{-163 -250 1146 969}readonly def
+ /UniqueID 5000828 def
+ currentdict end
+ currentfile eexec
+ D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+ 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+ 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+ B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+ 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+ D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+ 9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F
+ 21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6
+ 06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF
+ 55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5
+ B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86
+ 0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9
+ 1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961
+ 7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A
+ 7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402
+ 356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B
+ 19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2
+ C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F
+ 244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B
+ AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95
+ 5C4DD885310A706B320AB25C8D742C6F29953254FA54DAAEE60ED477877D19BC
+ D28E9AB576B0EA088171FD000B60D73B3C57F754BC07EBC9BF751B7D2B32459D
+ 993861B7C4B0D98C422A11BECEF76F4EFC0ECAEE89723E6CED53E3678D733363
+ 2DF068AEF0FE7DFB57393BDAA439A6A4C396F86032A98009EAE1247B7DE83B3B
+ E46DF2898598FF5E6CA6953127432A967E4FD41CDD60D6E413059A58FA556EF3
+ 309178B57C16A763CFC9BEEC276944BDEA255789EF4E1ECDE1EA43EEDB955513
+ F42EDDCF39AE522A1DC2DC523F046EEC4CCAE25792B702C288732F5B13B5CCE7
+ E8B6A1A1DB86B1EA38883E481BEAB54023EDD9BB94E7780DEEA577ADAA169E66
+ AB7D8607B409619E79F242CF52E618AC0DAE43317C507CDB27EA8A1472D4E8D9
+ 17E62C98DFB049C78AD15560CE44A39581BD6B555165091C5D41071212A9D51E
+ 6DC3005C821622476DB88946944FBD830DC0293272497557825CF153F8E257E4
+ 1C9A2C1C27CB7610BED918021BCF64795D6571584830231C7EE85AB23906C085
+ B17C9070C59EE450E6124FA3488AAF61751160F6CE1A0618FEA94397D1EFA9E0
+ 621AC7E9AC853CCAE73DEF3F7438E921BDD42D7E139C431530AF569FD8592D99
+ 8DA4F085A207616874D71D6005F57219784B5B33CDCF2CD8F061090E46E0AED8
+ 3063FDF0E57BACE8CA49A148F35674D09BC0E0DF348A4C699E4C124BD349E1BB
+ 57D26EB43B1B35213BB612B9E011FEAD57A8654671AD663C327C3077284AC6BA
+ 130F486A332EE15C3B8AD602218A2F4B5294B97937B0E46CDF19D6E4AF34DFC3
+ C841E811955FE9E827FB2D72FC33823DAA565C5593B123F6A72980F1147B58BE
+ 15C2F9510B0597B8BFF27FB15C515F4F1AD67E041C10E7139B1FD73D22ABD9CC
+ E8EFF2E3B6DAB2467D5B63A9D9F25D9A3076202BCCC22B15A66AD4013E7C864B
+ DEBC722B8AC447011788BF47842DADB1283D80590BE950DA12178B28226CE6BF
+ 3D9FD4DF0ECA06D3E30DC4DB503AE30DB861E8FF235C4D9368F9568E233D6AE2
+ 8418EEDFABCC2176812BC70C7B06B752567E1377BC14A8A47C7033063E07A597
+ FFB5ADFAC551C206B924891F93DCD14699F5163D928B07C7134012257CEEC262
+ A2FF0DD995333188B20574B83103A265B76B82203B7DD2737A8F7CB4BCDAC25A
+ 1C789D0BFE857326C8579967A04652AF18B820FB40E9E43AED527F04DBF6CBA3
+ D4EC0427F1B5DABF5D59E9E8404E687F14657796488BC80B51138A25CF565D11
+ 89062836417809E8B65612CB1B93CED774397DD521786180748FE67B28F5C03A
+ FB1A052A853D4590F04E4C4F3D5C83F5CAD5D747BCFF46A7D2CA13984B93FF95
+ 55251EED8CC53A257C59ABF9301758A6BFBF7F70AD7FF039FA855F0CF9E1E40C
+ 8CA079B03CD2D32664951F99500E221FB4818DB224E0BDE45E5D431EF110D615
+ FA718BAAC2F099331A0CEE97AF3DCE64CFC012C17C276E8B6674E05D914868C5
+ FEB163350043A3B9BB1D23A5479E0D8F1005E4AD6C12C85A0B231C73ED39A524
+ C8B307F25AF1D05F19CCB653433B62481B14C7D65F56D434147404E481E97594
+ 0B6CC601BDBAE4D3EF92CB24DE9DB13D003CEFB77A7967D72587A94ABDCB48C9
+ E8E4BFA996291F05AE2063D33303DBEDBCDF6AF3248DD2E2199A810FE7527BA2
+ 7288CF5E36FCA7C9C0D01F177C51C80E40BBE985D265257776B42C5C6075635D
+ 7D8C028F75619C3CA003EA77928FFBDCAF662C057A48381FFAAF646D66E6F8D0
+ 17CDFC584B3236B5BAF10EAAF3A12F6726379E3D0AD587878ED90E20E84FB001
+ 1770B4F56A20A3C5D68DECB2ED5676191B3392F4D887D483A0B3B4982A24C3C4
+ 62A65582C311664CA2461E6A47B19070E0FB659833FA9108AC712D3A017165C7
+ 24F39375BE05D0442C7DCC2BFBEE32491935533D69BF8695193A4DD6C97B50A2
+ 3952B06056C1B7E9C9EF7C61532FA68BF80849CAB60FEBB5F77762C8BB595BDF
+ CF9D234860D3080FBDBE5C3D31EEB9DF30FAE00CB42DAA768299B1A8D4C1E172
+ DC2ADD9CB7A5025C227C403FCE51B58C3A5BB8E98FFB9FDDA183BF53FD81A5E2
+ 184918488A618D455B57E0EB25ED647D01CFFFED03C3A28B63F5D01D9FE122D6
+ 7046AD5207F6D301403D7F8AEAC2B2E2BA4AB2905B3B89B6563DDFEB34345918
+ CAEDC52A20C32EB802886E4F38F6E7D2D35A3E41DA53F131FC6333AA2AE28F5F
+ EC657541C504443E92510295A722B385BA3AAF33D91D7045333756D103FF100E
+ 5565D9F2BE807233B1FF6CDE73E3F80AEFB7A759551D4DE9FFAC1E80C5A85F1A
+ D6903CE2F33617BC489AD2CDEF4239C8D9796D3DA03B7C2DE0B724E945703FC4
+ 5AC5117D75F2CDB9E9D7D72FBDF626BE61B492692DBFA8E48DCA77CD40F6246F
+ BE5984050BF7C9D1A049CA71F6E31B1F4EAE94D8BE5E22E6472AD3656007A08D
+ F9B505F27D586BE116D4BD2CBA72E9753ECE210D01BCDDE46788BCBBF391D048
+ 4B378AD4E3B53E089545EFD9D22C29B7F714A469EDE83B37A7DB058BB386E901
+ 7C7DDD730270F3F56E999A6A0DFE6EB20D25ED5C3920116CDCA3A99DB7CE4187
+ 17C8A6A29A1B0170C15613E466AA403312D2617D84310313880D8FA2FFE7E7B5
+ 01432DF47E97C9EEF281A78606DA07319C5B6FB2EB69B7EA1D4669CDA7A793B1
+ 80E0C477CB0D06AB135DFEF60C89263D3B4825597951B7B05502B5D8220B9D38
+ 1BC5F890F43FD87AB423385AD642599AB2E67A6F1911B058080FE9F01AA97E68
+ 20FEB43A8210EE5A0DA7133F82F9381900A1DF3F7BC3E8DD78B1E3BF14BA45C6
+ 5D3822E14CEB232A504CFF6BE6F027F5837E0B36A1B0380557E781A49C7E1A89
+ 5A9B13C76C3C7F2067B52EF2A95616785EF43937CDDF05C58D385838EA29356E
+ 1A2174EB358206EAAC84F1CFFFAAB34B8A4990FC9B72E11E20FBC10FC4CFD5AA
+ 81BA2EB28A5150E1096D7555FFC0DF5D92DBCE2AF2FFBA493471C4974ADE8563
+ 730D1105E700B170720D13755B7F29569BF342DA191DDB2CA2C8597E94520FF0
+ 71C0DFE0DF42C18EC86FCED659905A8DE1064D1B2677CAFF97824E6BED3AC2C5
+ 379C7300FF25B8D2B35B01DA4522FFC8D901D1CEE360615F901CAD4CE8998DE5
+ 39CFB71FFC704E929CA0F2FED6AEC75FE0A3AF911B3B66DAE1F33B2158823580
+ 4781A109827144B409FC6D25E955FC5FD3785C3700DA5477718AA18902AFD935
+ 6B5E187B19B322DD3210CE0A8A01A6FEB0DF1D07A368A1763E49BE70C05FE795
+ 523046C5C99AE245CFE189BD12FCC81C8840527DE033BD1AACA7CE357D995842
+ D8F8EB1BCBE5EFE6AA8B9774EEE07AF7D09855E54571DAE1F6C0C6446C3184DC
+ EC4852709D1D6AF4A08D71AC57B7ECB80C51C84C03DEFF877B63658EF0DCAE3F
+ EF6C45AAEC94B6889AA93AE3CD7C0157038354C2929DDDA5EB2D9FFC16BFEE88
+ 89986C1EF771D9D9CFEB2EC0BF52D16072319F449A4EBB197F7E5B79C9F6BD79
+ A1D5B2BF9955547E28025D4058E0B81B55E63CD5FA0AC2153D305DE8B74065C4
+ F3C0158EBCDD2654E11CD496B22F298DB59FE567A032B2456933B2C7197B7B22
+ 27A60A273BD816C6C72791EE2C22CBA3EE28179AD2500A6BF53E3FE78AFDA4C5
+ 53C483C97AE19C9225D43A8139A7024F96B416E701DB19E7A4FBAD3B49021033
+ 029EC8764DAD4B443BAD24F9C3C5771217B745C4111E4C01D326CEA1CF8DEBA8
+ F722E1094FE87867C4FB880F596C723D96A6B716CA5B29B6F84F70CF0E2A2A27
+ 0F3FB97C71F98F0A99F3E613108F7B6191495A72866A0C878F3CD3C2A8537A8C
+ 988FBEA07652D106C6D1CD393D31B126A1EC9ED888949696845CF21258108896
+ 53ADABE4DCB690A622548852F3167869D0AAE55A167544F8BBD977D50B951B64
+ 3F0FF3EC0E1618DF8DA56D02C053F7BFD2CA016B717F57C8839B77DE6A79ECFF
+ 6F47B70A9A108DB83E4679A1EF8A968D16D1D5A0AA32534AC2E502B19130CE4C
+ 2F76ADA5AB5632C74FA57D47FD5487BEF3BF2D179094751D8F3B45DE9002EB84
+ 6ABCF32BD8BB413908B18A678B7B7D8DAB46EA3BBECB0D95CBA45546C8367D03
+ 8F0E1E6E619506C13FA7CC0297E245264B7546107BEDB242CDA6E2652D3EFF09
+ E9B22748153D6B926005939F244B5B64EB8177AC4A33309F3AC3754A628997A2
+ 45508E7BFC960F2BD74A37E15AA45EEDBF7A11332A9AEEC51342280CAC6291E2
+ 656C05B5137EF1A8F65F0D961FF207EF56F2BEC8BD848692733691393D27BBB8
+ 79C324396C4F01D8CA9D8E8652331F3239B753FB6580EE8C8287DDFC84BC4ED7
+ FDCAC13A639FE8CC00C8B55AE42AC8556F5F1E0B5C908B81224B5D78759313EA
+ 2B85D61FC263872E06D9ABA3112FDB01A74FAB1D3D217864AB52290D5EAFAC82
+ 53670E1C5981FEB4C292490BC32721870088D999743432575956B2888AEC578F
+ 4BEC6D8DE3311497AEB92B41E7EF2DC1C31A11A70DF72EADFA44E8C1C51F4638
+ BFC0F4DD456E4F3D04F9B69DC39C8DB453D7AC4D74EE67C01035CF31B4538D02
+ 6464B847CFA55C209B03036CFC230CEF804BD09AA3DFEDE7E4F353D584A23075
+ 85C000ED0EF10BF4AF19B32534592A1AA6714D4B075FEB33AB6855427BD94317
+ 6DF8C3D65CEF80FCDBC9F8A437C8EA64C4CD0862AE56C07E091C564B3A3905C1
+ A555998DA878CBACFB21D2567EF823951012A1DE14DD8E91B19791184A17B534
+ D0922D711B5D194AA8871E07BC885540332F0F32C47DB9BF7F4DDFC9B20C790A
+ 39BDBFDC7784E6E1EC8C77E0B527CCE5448AEB70DCFF266BB55E6DEB6BA43E63
+ D9A0B5F5CB71576E9D9682FBF11634DBC635D5A72C13DE328376EC6AD195A4B3
+ A11EBDEB69288132E2F763C02CE7490103322ECB8B4F7300D4D2761AEB0EE740
+ AA407EC65D01D3602EA408B2569F393ABE180320F12637A850B892A0DBC7709A
+ CC9DD139FF6090806CAA910E0FC3E24DC47A3C3A8638DB8F8066958DA1049AFA
+ 829859AA412CB2D2BD7A33DA4223220455B375E37DB36BC08D519AE83F1DD41A
+ 94F12ECA4DE5553F0D47D462FD7E4747FC8F4055CF61E8BCF612DF7CA5B6C7A3
+ F72D48B4D7FD1493533FF05F27D3ABEA60552A2376B04A98273868F1F8BB24EB
+ 59813220AE1CCA6C9E14691C703F76739624D86671AFD245F94CD3DFD56903A9
+ 85E9AA7FBDDE9A741B0DD918FF27CAC62AB8AF6ED7919E002968164CCCE7C9A8
+ 68F38D28FC86CD99B7C831FC7A8F96A8AD2812EBE130F6A649ADD6E88EC70AD6
+ 5DB5294E02C096BE2CBA7858709B743EEB151539C5BE5DA68878D49A67746E6B
+ 7A2BA2828F81C619D5C7ED0DD9936C9258DCA7644989923051D41F7C71905954
+ 186767DEC547D545500D8DE56C9A5C62838310BCED7BEA61EA1CDF5750D0945F
+ 27E8EC42D724234C59A41FAF685C6C06C0EC3C270149F117BEA46F8055A91123
+ 08D923BBBECE16BEB49786B6F8340B328ACCFB9BB169432E11241CF5D85CAE0C
+ 66DEBDCC79F0B678BE85F2E7FCB6EE95F4D41CFB2AA3ED7F7AF5F3088F3B5DCF
+ BE0E89ECE741AF713A99902AD03EAEF7A83AECA30A57441559EAD5EB2C6027E2
+ 1ACEF1E6B13C1132384769E81BC39DA05A105166295BECD4F924D709C096AA5A
+ 751E5D281B2F6D466FDA2A2DF5B96819D0F0827D46651A2724BDA342471E418F
+ 42D2BECDDB643FBA3A2316BF23A4F4224455FD0798976456B9CD671D6CEEA0C0
+ 25336077AB38B95E65DA3D75D2DB7F5EDD6E3B460F842EEBD58C25897F437AE3
+ 67D028230515BF9B0F2BB803251BB56D0ED21654DC035CC24DF59B95017CE86D
+ 0278FC7F0AF3DC0EC044308EA4B2C5131CF761DB9A97561CE8924DBB638D4DDC
+ E09E1695EAF1433F2285C257238491D7A80674F6C2A2F988B825FB57339E01F9
+ ADF6CB6D8B695FDD2AE5925EA708FA5386720C0AA8610EAEDC420E31651BFB25
+ 63AF29F1419C333F80386D2C85027FDFBF2472E5FF6888A0F187FB2520E92807
+ 5983753EDCB6BBCD55901CF1B46AF477ACEF9AC23CE552DC1D3B882AD7B7A378
+ BC80EAA07D64934225A202B7DEEBEFC58C161B2EB971E1C971D46B62E1F5557B
+ 6EB2898DB018C89B659E02012A480AC04AC5472AD94B9EABC876C10025686A72
+ C508EE35317F2D3B94D453480F0E63E7D598B0315C8199D0EEB37900AE870600
+ 06CA6D36638B892F6C4EF7CCD487942A25042C10A66265D827A6D86E3A943B15
+ 85378254B50BA183A523857234024C7D503F7442B72F6443096245A01F249129
+ 694E4002902737D11FBABE1522FCD5FE872195FEF600C1E5B02388E801790B8C
+ F73E1E370383288EE4889E4B0AEB0EBC54F52A434FA0AEEED1EEFED264587EF0
+ 2FCA4669003407FBFA2D11169268FB9160F246BD78BB5112A342678136959CBB
+ 9988F87E18B80F819FE543FA5549FDF973A27B8857B20A3EDA505975E7CC05D3
+ FE0EBB387664EEBBDD40B9A1BA7D0B6193D28B9E33528F1AF9ADD8B9D1FE1938
+ 03B8F0F03158B5574EE2300684CBA6E0B9972E226E2C5DBDA5A231AB83EA9F94
+ F7B757D4FEED8B9DE000DF2554E70BA99520DAE4EBFF28C435ED64581CE80C5B
+ A067914D537B5CBBB686A88A860E0D1590DA21DED539DB9244E756F809BABF2D
+ F436B61CAF75A26401567679246F3E043F3697DBE71685715C36CDAA4141CDEC
+ 29A9330F92872658169589A7A4BE382DA59316929701B6525D9C2B06A554AD65
+ B055DC10F1299E27488AC1D47E784ADAC76406005EF1492A72003B25E6C7A462
+ A460DC91A603C4B90903493C01C556036BD93CBCF81C30627493C11305C77E41
+ 81F0DC0FB4ABC74A29C357EF184171FFAF3ADEF2F3ACD221DE620303860E715F
+ 5D0F22180007F9E07978DD5F4B5F74D3077D51E15A7B1CA3ED255C7376A8360A
+ 88BC235A75627F5E812BBC5E7C4D5AEC50B0F6E114D3389E888BB150CF8D1C9E
+ 83DBC97EF35253D322548D36FCF4DDCEDD61FC5019AA9054B3F4A3F5DAE975B9
+ BECA03B37C78483FE663A269A0AC3D72432D6D347DF687002011D5AB5D74F98A
+ C656A0AEC4010762050A7473BD3D6FB50C9E3640F12DDA195C09F39F92BF79CF
+ 0F1A6169E928F6CBC2E7B6797E270511DCADE17A975051B95CCC862D57CD7F01
+ C8EB9818C6AA9BC6D6382B9021D7FA0C0E5298D2A2A957028BEA9CD9F758CBA1
+ 5D6A909964D0D34B5855370F1938E930228C91446345DE374AAD789783CB1191
+ F72F7E35AC74A0B7A6D5AA3F5592A812F797A0428CF57592FC3E02247696F028
+ 837FEAF6909571CD61BB6402DAC8496F6EAB4BFBEDA6E3DCA7157EF1A2E605C8
+ 88FA1D8709F3DC2CCB46E2506D2FAB66054519BE4B4717B4E8D9368C666D700E
+ 3E1E0116587C46DE9924ADC240E29253D40A0089756515D05AECAD6F1DFBDB86
+ 2B25F20208D4B4F5A15CE9CC6AE5B2390F2C173A5A186F6010B9322D1AD45447
+ B72E72F0BC2C9A4877622C6D8CDECF9BEB9D7472D50E50D60EB5326297D967BB
+ 965DC797ADAEEFFFA4280250425F8B15610C0308AAFA3FB99778F37FA3C6142B
+ D8244C9B85EFC4271C368768C8019D039B3E3310D94BCC7B23D0F48340E73D7C
+ 6796E458246CC3815C6A4F48C3E95D9EDBA122ADEEAF350181793CB5A21C8B2C
+ 66B37FF0E323B3D96B43960FACE2C30A3FA8F2FC34CFC4DBB228510A9C4ED9DD
+ 8BDD3C3CF7F62AF16C0363E7E400EA26445C2EAB3D65E3FA8012C419853BD4E8
+ 72CBD21A331CB84C93D066605DBF822D6FD482C5B11936129556C60B701D8679
+ 2F1F14DF4B08A819D5A49D5B67DD61B352D8F2454CFF39FE95030A624FDB472D
+ F3CAEB22577F847F9D186598A23BCE275B31E2BA13A20EFAB34B61B4166BB317
+ 9F90B461DB7A323D32D8E8FF3541CF6D60CABB4B85E7DDBC80551E6F758B5EA2
+ 27EA79A05490AA28C5093E35537B7312A06E62E1B9790E68611EC6EEE7843B1C
+ 329FC7884EF7859CC7442DE319FA45A8194FF0BAE9148A432173EAF76BC0154F
+ 0021D16209119228FB9B735BFC204145F71917B112705DE6CC6758C223C8DE51
+ C66B5DD6E8FEE517D12B58792F06B8614AE7DECBCA55D5034049E1D3EC0FCF53
+ 89B08B8BF3D848A4D900F7C43E94E0A270DC9AA9B19C7093D7D58A038B0FF080
+ 3E24C57552AE9667AE992F7E5F9C3E1F801033CD7D01EDBB4D69CF4C41A19F04
+ A839478544EC54FAA62373EF8CE779DF733B7E9D1DA46714024EFB304D9C9BB8
+ A2B4F7BC30619AEC6B364BD7786333C7B00700E52416D9D2CA9214A83FDB2488
+ 40F0BFFBF88ECE75103D87081C2A306DFA5A5B1C65D2CDDCCF88A4EAB5914418
+ 118B02D0DE80324E85925726A76B10D6ED8B00B7531261933235DC908EBA6EDA
+ 2FA6E35417E882776C3A31E8DB88C0C125DAF4159B67D673AB8A764A10160815
+ 7D545E9893603E931BF74CAAB1F29FDC4DD276C7EAEBE6C7736DF04CC7F95737
+ 3E9917BAD84C21B5EC1D76FF5AEE5D073C9A02BB44A58F9697F24DB49FF4B2FA
+ 77FAC53F7DA015F1AE289003B0B1776140F7D525A2A0F4BC704BC36B6C0848B0
+ DFF04FC6178CAB44A71CC11D9356DBBF17C7F935317DEC98708262A234B6EE8B
+ 156650A551BBEEC386144ADF1F9915DC414D490A04DC14E0E87E5D7366E2FB70
+ 2DE4ADE6E43ABFF17F226C148A22A73C5C6A1F459D2659D17569DF05CCF2B6CA
+ 996569D7280EF6542BCBBF8D08594F2500570D52038DB34A85B3A1BF17163376
+ 1443747B6FCB799BA9792868323A1323C1D59C84D79F5F67C688E02D9B41A1FB
+ 813C8D928E205BF5F95A081B0EA666DF51C65B8AFA047992D8BA53C5938639C1
+ C67A902F64A59BA7480C2AA15CE90FF227E4AA576D47886A32DB979370F21D7D
+ 49D4258C0C8A0AFF75D73F5F7890AC73AEEBEF309185C1366D1F6379D08806EA
+ 79D159EAFAA02719E253B627D2BBED5CAE7E475F3FC3C10AF0B8AC875CD66A62
+ A08A7E60C30E28AE90902113B108279B4EBAC72843C8F8F1FC4A6352E74C9CF7
+ 06E8D3D98485B435A7A479065A3251C60A0FDF0575631140939BEEBB6F06B5D8
+ 0EBB190F5F36571735EF89F104C40375A6C332C6815D6BA28936DBC927BBDCDF
+ 96A08735D8CF2984C57E20316013A9DECC82948CA6912088A76A14CE956E5548
+ 317DA92C340FDD35BE1AAB7832991EB717E1F43FCED9C7C53F1DAA0D9A71FB3D
+ CACE49B722D1B2D0029B63EA56F31F7A61AA2D2EA5ABBD4D973344EEAD78F70B
+ A1455BCEAECCA100B62AF13271D6576A4411889F83C7E0076BAAE04301D8D613
+ C2525BCB5C3560F2350B08D13A4FA35966CA68B01981C09379BE55384A2AC7A5
+ E93D486D777819C8F5E581B787E3D895CA34AE533C3CB4ABB132D49D9F0338AA
+ 5CA171F98299C2BC860F207475002B5C554E6830A025D7A434193813BA73C2F4
+ FCF13601F17A4C84DF08AFC0B8245CA5F4D924ADBA485649BA1AE571A51DDE0F
+ D859BD1FDFE3BF6CDF67F0825C4B33B931C45E7C4542BCF763CA506043E568B2
+ 2A7302E2FD435F9FDA5BC6F4225D0F4402D38471B093D10F7268AE95C8E507E3
+ F2ADE7C94AB1CA52BF38D9B9490CC59302EA45000063332858AD026D47F2D191
+ 520E883E2680C13068B507DCE3CD46270A3D47CFE2531F3AB44704BB8C16BD3B
+ 0E92E83D46A42E240B6C9E113A88297E3F403AA784582699E0E3268418C8AE2C
+ 7F5B2206FB3DB3C35F913F25E7BB2DA429AA692C2A50905C6A94E837735CEFE1
+ D51639CF47A187C04EA511B0FC637194994E8E6B78EA8AD7A76BD3E8DE9BE726
+ 2507450DE34F441BE879DF5312C05590FB8054EFAE66765B61A6FEAC4ACA73AF
+ DC2BE82D545C54FFE574164F8DC9558A605A8F8D4B8586E0CF549313942C4889
+ 44C65575FB90F2B77D4448B094B1C14B1B4A98DED3BC6EAE1BB8E13CA75CC80F
+ 6F4AEDDDCFF3FB5B33C75710676FDE7592A80B9237376ECBFCE5FAF860F9737D
+ 119441A7C5590CDC35F18C743BDE8724C7626B801C2EE8705927536325E7F4DA
+ D9512EC1F0C5464E9393AB809772C0C930B981CD0A2844E765EDE7267F751171
+ 13E8DD9F64EFB3DB065638D687A9803A0FC26A48A8C11E3D0B6692D5959BBC50
+ 732761466DC98C0A38382CDDE78D9374545A9DC190A1BC27F3556616053A3439
+ C8567E894CDB6990891070CE4DADF3D2C7EC4B935E6A28ECEF7B4C7A36BE87E5
+ 6447486C004D150F34079B9AD40B33D6A04C2CE4F27257544210721628553D55
+ 99085942327C209A56080D10CC33DC16282040D275D2648BE318A989632E5227
+ 56061CE13499E0E840B4B0BC6BF78B50CD0619CA95FB3EACFEC87590E1D9BB4A
+ 145B1D61D82D50FF2F112BDA6DA63AA8ECE160DFFAD2C655B090540D02608263
+ 668A024DE1B564E01B14C80DB759D872CC7E68820E7D36C81C85C615DDC99E17
+ B68262EE68390139C634BEF39C57C0CE4B780E61389D2C538A0A1086B12D0C2E
+ 334FEC1557695F1B8DA53C94D5372AD11654F277882B26261A37E9C6B63BFC0A
+ 15D45148E842D3EEE46E0C5AE1F43A8D09844AC94B86DEE9A99B67096EBD0146
+ 560A234539E9C31BAC4674A12A9B1C6B86EFAD14CD124E96B5E4931135C422F7
+ 0FBCB376663FD3D9FF506803E981FEFCC96821875CE52C480F2AD2F3F366A4B0
+ 16B82290083CF47138D5A4610F5BC79F60CE03C6DCD1DE69D259DE0171E0A797
+ 7CD072F175F5C5843A3D2FBBA560D61609EA115640D0F5C08E5CA3FF406E5856
+ 702C9E8E1D4E9372D383C6809C59EA91BD449C784EEF8EC9E1DADFE33CB4BC31
+ 1743C3E376737E54A97824FDB4285259CCFAD8B1635EC5D7B0B383225A571B45
+ 3067F0FC11E749AB17F7B862BA151D098C26668ACE8FEC23AB329D6B156224C2
+ CE17604F7CDAEB73A7FCEC02573FBD52E826837A799944DFAB29D0BA016900B9
+ 2012A22F42F85B6C711334F35B7C15F06E5EC69C8054A21311422CC7FD8C0BA8
+ B4B4E1CC03AE691EEE2AB7E58A98BED578ECD8CAF66B085B1BC84E2DB2496B4F
+ F07B369D27162FF82DDD6704BD596A3410430ACD89D1510A5E8E09BD0163A28C
+ 8654974128A5223CA6CC56D0E62E64762C562516FF919E8A88AD4CF47C680C32
+ F4B24BCFC98406C4CEFC870C7DF727CABE29A611F77B401588F77A4C94DD4236
+ 43403F0EC9249AEF25882202D3B65FB6C4D6057FBAA58E309CDC37929DE0FF3C
+ D9EB70C922D6B5151086E01F88412B063B0D27F176A373DDFC5D54D159AC5548
+ 6089AEAE20FB71986FD23208BBFAA229C0D6900979F554AC77F8F3547B1D9383
+ 74870951DCC3FE2183B019B6851E6806865539F082DF70DB584AACCB81E19C48
+ BB11A5944F1859F50FE2F3AFECE3ED5BEE940CA3955E260078ADA0800A79E4B1
+ 04EF6E86924A2BF6B3D8512E16F1F61DF66E90C35045BEEA3524E5EE7963E16B
+ BA8353F85DC0033C9FDE48C60EDA52C8260AE589F5A11365752D4982487203E6
+ 9B1F138FF0A8794D0AC01FDF369A3E16AB7CA11FD4BC1B6DECF2752841954A95
+ 82DFE1D49412C28882224E69A82D190229149BDCD1C4A6E7BB2620309F0CBB1D
+ 0530B32A178A1E337AF254482821BB46938FA39E9705DB920DB1924B396630CD
+ 59A1403F1A417E0D7543E5B911547CEF428A141F1CE11C4159027D8070F57FBB
+ DD33129802413B0CCD6F6705AFFE4C553251768D0FF06A43A1FC9FDD4EDA6C46
+ A29052BBFA07511933459BE2BF0301450B6081DFEB951F5790F15042A47BD349
+ 80EF368CDD625DD867E2D4489AA0A7FE29DCA29C4CA3172C6599D3AD0D97A13C
+ 2DB41154F07F9EE6F1797FD6B0652C35DB1D0EAA3EB3F8596AEFDD843466610C
+ E7E43D8062B86BA7FC8D13BC1899EC05AB41740CE1A290FDFB323C2DF8FB762A
+ 413685BA171895DE611F208CE1D9755F1D6F1F6FADD2A35EC4ADB6E539CCF62F
+ 4333CE0E4C12247753CE80DBA919A2DAF5CBE0F86FD447C9631F63F3960AD95B
+ 40EE436B62FF2EBDA10F120CC31FD676ECC3F7130F3ECD5F7F293C3A01D250D3
+ 5B6A421B7A849501989DBA804E5BDBA4BA3B1CC6D30E44F1B66F49E1E222F3B2
+ 3264918BD2759DE6EE272620F4636AE1B220663B9F66394D1D2A4CB242CAEBF9
+ B0EC62F3111D111C6D1721B269912F0C3F04C880DD144B9E27322207E8790375
+ D68F149FA63E863BE10B5803B2711B2833123D9A0B621EBEC05FDBD4E8AB70DD
+ 749EF9A71FAA2C8BF900285B8830DA5E7A4618F7AC95FFA4901441C93AB96D88
+ C87D22C5715FEE87ABF695039C8B03B9BADC1608E184D6A85DE02814A0659DB5
+ 04B072CD598AE875CD729E828636AE13A4A32EA92F1DB30EF6C6E6AB17326AC1
+ 93819FD66C8F90EC39E1DA8FF2514C72559CF554C0BF1D62B4EF84B723492C52
+ DCE3BB42586EF338F863EF07DF8B1FDAD6FC7808BE8E5EEBE14E4DF767A1B00E
+ E5FAF0121A7D0C920991061EC621900006F9C090471936C5A3AEC56C5D7A821F
+ 0C7A2963E6BE91718DA24F1B98E9A44C28923D21CF72D406DCE322AB944C2EA7
+ F3D81F1B1E8CD89AD2290F59E165634154C60183422DCEF3C5061FDE235EA71B
+ 7C8E73EF3E78A7797EF2B6046F435B828B131AD6C4EEC9B977C5BEDAFBC9BD9D
+ 714DD787B68371BECAA24897654CD521FC977283AF7286F57A32468D30B9479E
+ 96C4921F59CFD78EA5481E39CCDA30F20659C4C111FD237329082E9BC3DA7E57
+ E917EF259187EB6A5AE4E3BE426FEE596B78D9B3E662AB6F17C6D89563454C3E
+ F5F41A1BFC7261C26A5970382832267179A5E8A0D826A2827F89613BA9C48E18
+ 1F6169FEA0AF8A20C7E346B10F157D7E9172320E8A026563FB95B1E46766DF31
+ 0E4FD6E97693546FE99166E65472A20A6DA0E56A2FC2BEAAC26D6401CDDEBBBB
+ 5B934C2D096DE7B9924F5FDA1812B17C04F12E288AC6198C39AF0FF5CE9B374F
+ D797176115E54D81244AEFD153F5743494E17F7836A49CA9934B92A2E9D1580A
+ 58AA6019FDBFD5CC38C1F81CDDFEE09CA78947D307C7BDDF1C2FE46AB97318D9
+ B453BC9DAF275BF0A5377F6373EEEBFC403C13423620E4EE5EA5E7198FEFFA69
+ 7190A4784F6CC5F52A299828F869FD6D413A52CEF9C20E5C5ACF03A5995A82B6
+ 823B817EEFF9442428E82E6E0717BD6F31BA8621B4211FF8F584227A2C5D9899
+ 22CFFED04CD851A1B5DAB6F9FD8DE59FC0D3B385C0D45CB1C0BC0166A64B9DB2
+ 2F300A821DCA60C826938212DF326F7FFD4E89F04B5BF9C7796EE5254D1CACA2
+ F4C20422FB54F36FEE7DF700C33019044FA0C87CB8B54D594178D3E1D79D2562
+ AD9944B17385E1C3BB43073D6A0775D09F61AF9D989E73509672A7F9C7695D12
+ 050DC00C2B87C86FDA606213D50C03A9D6783E5041AC4F4470EADE5C27C4C849
+ CD26093E53A779BC2E61ADE38374A61094C6E0B272A382084B70120314C1BD74
+ 5B294550F877E19BC2C911086C382BC8FC078A831FF8DA47CFE44BB595E70CF4
+ D5A75C99D5760978CF3BDDA9DCC48896A13A3D1C532C2817021848B8EDD1549D
+ DA868C9241C826A837CF831213BBFF636A326E1CD1A2898DC7023905E7EF3E9E
+ 3CCD5D32912B8E16DABD1D13FA9021549B6D5CBE687CD583AB97BC534B3A5DAD
+ 5562B365C7D3BE4D8140DC2178A3
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ cleartomark
+ %%EndFont 
+ %%BeginFont: CMBX10
+ %!PS-AdobeFont-1.1: CMBX10 1.00B
+ %%CreationDate: 1992 Feb 19 19:54:06
+ % Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+ 11 dict begin
+ /FontInfo 7 dict dup begin
+ /version (1.00B) readonly def
+ /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+ /FullName (CMBX10) readonly def
+ /FamilyName (Computer Modern) readonly def
+ /Weight (Bold) readonly def
+ /ItalicAngle 0 def
+ /isFixedPitch false def
+ end readonly def
+ /FontName /CMBX10 def
+ /PaintType 0 def
+ /FontType 1 def
+ /FontMatrix [0.001 0 0 0.001 0 0] readonly def
+ /Encoding 256 array
+ 0 1 255 {1 index exch /.notdef put} for
+ dup 46 /period put
+ dup 49 /one put
+ dup 50 /two put
+ dup 69 /E put
+ dup 70 /F put
+ dup 79 /O put
+ dup 83 /S put
+ dup 97 /a put
+ dup 99 /c put
+ dup 101 /e put
+ dup 105 /i put
+ dup 108 /l put
+ dup 109 /m put
+ dup 110 /n put
+ dup 111 /o put
+ dup 114 /r put
+ dup 116 /t put
+ dup 117 /u put
+ dup 118 /v put
+ dup 121 /y put
+ readonly def
+ /FontBBox{-301 -250 1164 946}readonly def
+ /UniqueID 5000768 def
+ currentdict end
+ currentfile eexec
+ D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+ 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+ 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+ D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+ 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+ 2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
+ 7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
+ 77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
+ 2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
+ FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
+ DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
+ 7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
+ 9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
+ CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
+ 6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
+ E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
+ 8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
+ 3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
+ EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
+ 0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
+ 4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
+ 1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
+ 757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
+ 0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
+ 6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
+ E067598E1B8B781EB59569E3D0D54D8EFAE0F3EDE26279776ABA15341E42E636
+ 6E02817082BE6FE0B04249A4840C11F95F8ADEFF72173E9A5F2AB2F62C427E5B
+ DC010E18641EAC906A5EF0F9BC2108062134A7F10956219C5847C0D82F0E8663
+ 12D963E012DF0DD899911EC5D8096F80B49CA3444CF1294FBFAB57DFACC9D01C
+ 46F3BA2F3D1C14EC30CBF83E5729F1C074D4F1665405CF54722827FBC24AEF08
+ F6DD0BC6A79A2DB1FF539454E8F5D1A42D40CCFBC093AFD3E57973A009095CEA
+ B91FAFD236C47F453B38DB0067907A28EB5E9ADE87A2181F1D6DE4E183631716
+ C21F0F952E0666AC74371F8B5C888DC44FBA5607435A619684F502CF625663C7
+ 94B0DAA79BE8E129E7F5C5AD1B7495C1BC9B1C759FD67200DFF251DB7C95C09E
+ 89EA1F66EADC3439C72468503347EA1A45344A43E0DC78100DFE972638580C16
+ F60E1CE273350076DA9B152901A965A8131B3E4859826310476781777382D05A
+ 089F2CEE01CF9E6CAF934353D9027F85A9E15A79AD950623F56B750825F3AC88
+ 2D2BBC47434C1FA9AFF2F60C4B8B33B689928664E1D4190933E12BA54860BCFC
+ 1DBC5624D4719753CA4534B209A2D6857D7C042F5DFE03FE75543C2FA6A4C86B
+ 4A1A47B29E51AAAF8D32AF150744DB916CA7E3533C73FA145B8325EC1DE1B189
+ CEEAEC56A35B878719C1134B1DA6B14C860141D1BDE1D7CCD1A973BF297FE6A8
+ 821E03A381C468BDEE9015FD53827C84050FACE29DC5A593B40E732D3C19A9DA
+ B599BFDB6E1AFC0037D985056AA51E84926091CF502248887DA33510B1A3039D
+ 9C5800108DD209DDDB0964A51388B669C597141ADACC76941E0D501CAB98B1E5
+ 5CD8D87D04D8CE052366FB64433109A74B7DC4AB922C1C300684A510CA400AD7
+ B1813490376B36E57B7589D7CA936293BF3060E9CAE5482FB24FA8B35C87AD01
+ 6A54D751F0931E3F9FC6FCB11AFC6B2960233F567E529511491BA135461F4A03
+ 4381C7C5A1C1BB5A434D160EA52DEF62E9C9E840458600B1A87AE31E65B7EFE7
+ B1CB025613E536EB56AD3B22A09282D4ACEE6A07EE2D5C798E730FBFAAEF3919
+ 5452C45F93B7524614BE7C95360208084AC2A4D0FD15EFFAE30AF47621948723
+ B395274866504C28C98B51AFD01F2A75548A6E3D208CF4D157F5B8E9B2F95E43
+ CC844A5F144024181CDA4856D63C329AC5C75877E49003B26192C76870052374
+ 172CEA55A02AC968006101625BF49948AE34B313C7BFB9B9AB0A69A69D63E071
+ B3683E09A417DE12CB9E2E1B564561FE68C2D18ED78D4350094E7C81F86D5B75
+ 95A1EA154DF61A786A7FCE92F78F871572171162DB2BFB9F870111672C4A01A8
+ F038117A5235FE0F9BEC22FAF7D538A06FF9A5EC42C3C65DC2F19CE100996175
+ 31330C5F0AB940421C11315EAFB4F3F203929C7A201C19A1FB6C0A4A0FBBE8CA
+ 586C9AAB479F1085B5A934206C9570673994B2CA64ECBF0942E033F51957EA7F
+ EEC3588B04EA08A2D6C7B6957E61806EFC17F0667471A937A330FFBB164E0902
+ B803665C83CF2051C85EC2722A632669D3F9B29B321B927121C593C29FF49E27
+ F226AE90D5285D093084B68B0F60D5C7F83C3F3F41FC7B43FE831AFF76C3D2D4
+ 6275224ACC2F7EB8C6358DFE187D33D039DD1EC01A64E1C0922F8D5E0AFAF422
+ 9CF1114D848ED04D534A0333368024497E24F572BFB5ABD645ED0070131B2589
+ DF4068D177DEE7C00C79C9F524769757E3541D5007A8830676C7247A182DA504
+ 4F82816D0CD2F82B3C81E9F06D46E6BB330A94BA3CDD7EE1843A647B450BB537
+ 88D4A84FB372DA8F717B83BAB2C026E6BEAC7E6047CEC1637DDB42D419A83950
+ 4C738B2BE14891370A32D14D401C2B764EC2874CEB4DE2DE6C7405D548C6D982
+ DCA15F3C9806AA7CD10051852B5EDEF085A1A7B4265C9438810F266C5797020A
+ AF0A43AA8D0E7168ACCC9EA91D69DB0C2C465BAEC90285A6AE9BFA5041C53145
+ 003876F88345363AA97665FBA75F76FB98F95714934EB618D5C4A2259849FB84
+ FE4153461C1857CD119DED9198999188417EBA2E1E5B7B9D6F7775164CBCE71F
+ E23D08232ED1F6A1DA2B9CE18D84B0FCFA037F1B6307A294733CBC2D7A4A405D
+ 7A3192445BC17587C9EB01FA012D89EA3A4CEF1AF6285F1C620AEC49F84380EB
+ 5A9C960C70FDAD436A7198AC11937E3E3B4D6636DA2D6A167A476A79A63153CC
+ 2E9E379816194F2EF159CBF772D1728CDCEFBD7C33D7BEFE343C51E5878A651D
+ C3113EFB8BA8C9BD9F97891C0A21559F801C5CF2B13DC8E5C088E29BEA4EF301
+ A2064B5A6EACD18848A5F84E5CF943BAE069629AB040EAFB33025D73A78F844C
+ D6738F7FE745319441652BFC23939D13028E785116DAF47460895D8C15A5364F
+ AEDD2AB62675B1B09F3384B9252A697D3078F9A1459F79989DE40F51B814B7E2
+ C15F73083A89E5DABC8A79B906DCDFDCF7D3A8E7193DC4052843FBFBC5B9D5C7
+ 5D0FE96093F7F348FFBF994F3B9F63C36D0259962951E6890CBAD3E7EBFD22EF
+ 4C5E4E04BD0938CC488746D3D9A31FAEC16452FEB06B2FF483CE5E02C1940E0B
+ 0E872AD75B0EA7CF6CA1CD936C97EE7C1D4EADA9554FE62AFB9AF79A17E4693A
+ C36F6144486C9E0A7E7AC5C0860304BBDA1312B3CF0D44F4D6C11A5619EFE5EA
+ 9DDCF29A30922D16CB279A3ED9B60C836F4825B91B109691F63995B8494D5C1D
+ 4FE954775BA963DDD8D443AE821165C3A8B204CF9B2B93D63D0A8976732F61A3
+ A64A04DEA3D3FB4402443B0DEDF1414E349FDEE05D23CCDB2C7C49C440954C49
+ 55C15C1430357484073D5A66D7031CBD20EDD5AF3A74AA29C1C6E8F28B22DEE5
+ 81FA99BCC1940FB4D35109B5BBDBD92344394A4D747C4ED6B239AC9498CE4F96
+ 909A0DD7F2354CF53DA2E87D2FB00DC7E722B9FCE83A47E1B85A90E3491D5B46
+ C929D4D16F3DC131C33268BFD85BC2DCE12EAB151C3311A9D9B1DF48334DD1EA
+ 472FC614F96D5587EF800FCA615B8C87341FF87FB5D004CE3F231CFE07C8EA08
+ A79CFB2968DCFDF6C33B3EA0CECB888BD37629CE4EAE57DC420109FD0564C276
+ 531A290BA647C75DCDEFCA6010A200CA172F894AAC68DCC55A6E6A2706D9F593
+ 2F0B817366CD7A280C095041C6E9F12DEF2C5F8419D19C039F39FA4744FF4A0B
+ 52E55D98EEA17D9DFE995CCD65191626BE82639701201C97B5660A74D17BD79D
+ 5D2E365A060FEBFA6C40B04EADE77702357D869F9F779DB78545A1F90E69DF85
+ 30A37D60EA52A6C7217955E55139FF7F1536851B50707BAA5320026CF016E057
+ 4CBD141D2591A4BCD78D58FEE3FA99778792DD1CCDA4A8AC38620F175F0B7D15
+ 4FAA074063C09D44FC96CF91DA723A922083ABACD8B720CCD43C722F2A78198B
+ 2BD6D0B5D78DA228BA14D4FC0510A82E361A695163BD2DD1E5238E7FCFC1976A
+ F3A4BE92D6B877DD7103030AC05E84A19B44542356E55AB51797F969DE4825C3
+ 741614571ED0863DFEA08CDCE73A8EEAF39CB9F6A521846F9DAABE1B1041C5AF
+ A0BD1D2520667979842F85C2C74E93E49E53055DCFF98C1FF2BDB9825406840E
+ 281CB28CBC07AF92C6F6FCB834EE3EC2A90F07C0D1F6629318B4A126A65AE742
+ A55521309E6E84F5C18BF1CBC769E8CCD84BD6D186B756829A4167804E92EB71
+ 83CDDC6294BE04CD4438BAAA87AE3DC3EBBC9CB4C52F63E7C103E84B7F76989E
+ D964FB40D8AFC7E9207B93DBD22BDBAF205195DA3BAD742B347AFEF7A63AB27D
+ F779EA9879E55CC379F8FBFE33884785B413F2B5260DA945074CCC16E94A5359
+ FCAA612CA31177E7E6A48DC2FBB7C3E6EA7C90F2D7E1536FF8C34A4C1C617215
+ 11E24ED1FC8977354D9B530A68F72788CE7E355EBFA57CFACB957A864FB2B9A0
+ FD66DDE91F69E27F7F2C276CBA766048F0530F406124B4563DEF7E76B6916D30
+ 87583AA3BBAAC32F07F9A21FDF653CF816CA5A341232018875B69AA3DE6F125A
+ F5055292AD684A20D1729B60202C7AFC85F8C56A7B9368453E3F0AB9F8AECF14
+ D31EBC3CB45DF3BEE2B95965DCA062F051B4C57511D049E602F23C782678FB38
+ B35B3941FCC5A3C32B44F28A40046A3ADF26AC767A8F99490AC67B2B60985ACD
+ B5A7EC6709175C6515139605895930C3400370F93E92805D0EA68B1821DBA33C
+ 058518ACFFC31797D90437225EA7A9CAC14E26982C595AE0F8BA2C76C6AE7D67
+ FAD8447DCC6329D76A993234289214E1E8D27BF74D6E5F28BDBE46322618CA6B
+ D577900719EC162AC239324EE90A8D3499CBE6CE88BDB4F200848EEB4236D6E1
+ A91DE01EA409361041032A101238001C64C4795B1664AE55BB3985EA9906C191
+ 2BADBAA889C03363D2EF7BD02496866528E2F519BB45DA99C546B68F4E8A7E4E
+ 2BEFFE47DA73E11F532A65251FC1B355664DEEA30D3BD3871F1C679F6A60624A
+ 1D9F92CFCAD437B16A347E536E3B74F080D169D4FAE9AC2E740C04BD66426733
+ B126DD3610F2F070F476FF924D6DE1C21DB75C8CA4DCE4EFC7E653F039A078BD
+ 42DC2E04C01DB8EED5707953CE45D5F6A6F3539F0D5EED6E62E4613D279597DC
+ CD3BF38CCD06B39903EB6C618F8CA43FD484F809A284EDF6128B30C136D9C548
+ B2AEF6C13910AF5EC2EDC092CB0E2CF004AEAFDA200180640A40C303F9C02A9B
+ 13C3ED0357D676CE19F000D983C1C79BBFD937FFA11EC39A06B179DEE0D2F6AC
+ 52709E747949A6041177D747A8ED955DC32360405727B6E3B41907F0BF15C8F6
+ E03E1755B18F005D89C6D28AF89CE00A490721BE0C5889E4BCDD91EDE5BC6674
+ 8950C59F07C0DE047B612AECCE2B2217258BB676B652886F439213685F6CFF8B
+ 0859BEFC47D0C8F71441BAA4CBB439A1E4A4086F9DABF0145D06C78A1C84CDFF
+ C872AD0DFC7C8A18776333F08B291B62897CF5995453595DF85F1C4FF3146C0C
+ 1A86C3CE924EFCA7BFFD98AB686DE7460CFD0FE8CEB3D809CBEF6FE22E5CC6F9
+ 0DD9BC393D4318E60632D27662C6BB3DBD512B640ACA77F07D8CD5F4108F9CBC
+ 1856314FE91D62BBF0FFB1C449430CB89E2F99AA157050BCB8BDCEADAC8B2242
+ 11EDC47306230E98023D3D721910EC581D18BC59127268A8270F7DE445E6E7C5
+ E3D1F8DD4380848956E2DE11E6AFBB2154FAD5BD2D8066C708AEED9367A42D59
+ 90CB17A59B92A24877FBDBED428A7BC72AE1D9CD1A4721A233301E6A2B31551C
+ 098B940A001C6555FF9BE8B96413824EE1C133228CA2A6E69A1A63EDC18DA022
+ 49DC2C12263E69D92FBACA32801248E15F1E751C855D577CD68E
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ cleartomark
+ %%EndFont 
+ %%BeginFont: CMBX12
+ %!PS-AdobeFont-1.1: CMBX12 1.0
+ %%CreationDate: 1991 Aug 20 16:34:54
+ % Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+ 11 dict begin
+ /FontInfo 7 dict dup begin
+ /version (1.0) readonly def
+ /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+ /FullName (CMBX12) readonly def
+ /FamilyName (Computer Modern) readonly def
+ /Weight (Bold) readonly def
+ /ItalicAngle 0 def
+ /isFixedPitch false def
+ end readonly def
+ /FontName /CMBX12 def
+ /PaintType 0 def
+ /FontType 1 def
+ /FontMatrix [0.001 0 0 0.001 0 0] readonly def
+ /Encoding 256 array
+ 0 1 255 {1 index exch /.notdef put} for
+ dup 38 /ampersand put
+ dup 46 /period put
+ dup 49 /one put
+ dup 50 /two put
+ dup 51 /three put
+ dup 52 /four put
+ dup 53 /five put
+ dup 65 /A put
+ dup 66 /B put
+ dup 67 /C put
+ dup 68 /D put
+ dup 69 /E put
+ dup 70 /F put
+ dup 73 /I put
+ dup 76 /L put
+ dup 77 /M put
+ dup 80 /P put
+ dup 82 /R put
+ dup 83 /S put
+ dup 86 /V put
+ dup 87 /W put
+ dup 97 /a put
+ dup 98 /b put
+ dup 99 /c put
+ dup 100 /d put
+ dup 101 /e put
+ dup 102 /f put
+ dup 103 /g put
+ dup 105 /i put
+ dup 107 /k put
+ dup 108 /l put
+ dup 109 /m put
+ dup 110 /n put
+ dup 111 /o put
+ dup 112 /p put
+ dup 114 /r put
+ dup 115 /s put
+ dup 116 /t put
+ dup 117 /u put
+ dup 118 /v put
+ dup 120 /x put
+ dup 121 /y put
+ readonly def
+ /FontBBox{-53 -251 1139 750}readonly def
+ /UniqueID 5000769 def
+ currentdict end
+ currentfile eexec
+ D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+ 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+ 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+ D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+ 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+ 2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712
+ B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99
+ AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26
+ 7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF
+ 20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390
+ B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D
+ 68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809
+ D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E
+ 26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D
+ F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26
+ 77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299
+ BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E
+ C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8
+ 30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5
+ 148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C
+ E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D
+ E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23
+ 337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598
+ 0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6
+ 472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E
+ A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26
+ 326DA307525B9542977147464756D5B9E2F7949641378E77DE839A87B649BE04
+ 455FC54C44EC767C69F808988D14CDBCD944CC8B9069ECD300752BA4BCC8C106
+ D0ECBF96F7286B57A5E1ED4071E60AFF0AABF76489669FCCA5457A788212DEE0
+ 4462AE0AD88021FF62236B7A32833471A14846187FF691F2D5F49CB4A87D2ECF
+ BCE843B6E04209FC64320C938EAEE39677F18F072BF8562C07BAA45431B75CA8
+ 99B20B4EA8B501ADDF2B05E6A908F99A7D21ABBE4DE12A3A4EE35890B0C75BE9
+ 36C07F588972D2448706DC298BA9B0DBE9EACBD18BF46EDAB3B4175084E6C7A3
+ D2755824DA42CE33600EA5458E193CF7609E579865E43F160AEADA3D88DAA9FF
+ 944E77701E8BF9C192DF397FFBBA445098F52DF953426A470B435AB398A99B23
+ 0EC27650852E3FB11B9A6EA725AEB7A009CF5DE1745EF4670810438D2AD73643
+ 516BDB45D02AFB9BE6FA25FE788E28FC946B1D1B7A120F4137A2D25FE46F4D4E
+ 873326292BF79266E85E3A40AE07B4096A3159183357D10C912A9E31E613FC7E
+ 5329B7D9655523B660BBB79797B7E9599BD87D0F52F9124C2D72A8A9B20A8F50
+ BD931003D4CFFF386379AE853FA0F9020648B4EA35761C9EAD11E6EFD17D25BD
+ 4C9F82A84CDC1FA7119763D6D5F857D8C4FAD4B8472DD886BBFE64990319532D
+ E18E1FB1EB44B7FCBAC75791F10ADCE58ECB2E16CEC6FB066B44A1C2EE20C16B
+ 6B57DEA69DA178842171977308FC186A173DC044F6D73B97123E9115A5D67E8C
+ E81BE42EF81E18C2E98B5D6084B3143E68EFFE21A66B6CE21383272736D63EF4
+ 03706D9B68ED8FC61F82F147FBE08D653FCCD78C0C9A06E509B53BDD834E8551
+ B2919BB13223E8CFF67C778B599E88DE33C4480992CF23FCC4415001A2D35F6A
+ 8EAB5A0B8163681AFFD339DC1E0D71146B1D3DD35D9E0D8045F9BB1E6E946CB1
+ A219CF887EF9A4B5717D563026E736DE4D832DB5DCA8BA93B945526CD14C53F2
+ B08ADAB5BE90EDCAD2C4E893DF52855FFF3D2FDE5E549AAE2499D9236EF6C8D7
+ 887E0E3A0BD35114C3ABBB43A890A87BF034451B0534F3A9624E41CDAFC2F192
+ FC546073FDE573DD22CD6AB7A4DF71D9407211F8DBA6419DDFAEE1361C1E6B9D
+ 84E7A020148DD09E606FD2391DF99BFE629E85CE7AB2FF50D3C814CB748D1F24
+ 8F907D37ECAD8DEF96A55DBCE139C8E4B548A1BD903E3C3176DB180BAF85DAE3
+ F59FDD672374A7840EFA70A9305962C70D03B1ADA9EDA144C2987AFD478E71B8
+ 6CEC7FA7C897BEEF7FD18CEF57F2C19A85EB3B1E5C2554D5363473A83F52A5CC
+ A2976C40845BEFFCD0835D57559E6F440E15B0C64813C07ADC471DB3A9818B82
+ 9D830CDD58FE40F6ECBBDCB04D5D4465A95A8D96DB585FBA9551FF2656EE3F91
+ F6B8B91CF2E03642602617CC9B0B245C87BF5430CD6DB0DAB4EFD534EC47E3EB
+ 820EB980AFBFD4D5B8C877897D8455CC33884BE10BFF71F2292507AAE32A2B6C
+ 389CCF77C7DCD588DDD9D3E50A9EF1E94F4E7F7E5AC1500A19AB15D9054B183B
+ FC988A5D926C81C875D41460BABFAC2291E0411B8A48F9E3EFE68328DD77AEB0
+ 8025CE3077DCA05EA3EABDC302FA0B938EA79C5B4B3969DF8F746C33853A9B90
+ BE87E3EA36482CAE72965958F80E0DFE250FB2B5B879141A1E69911627CBB4FB
+ 707F369FC2CACAAEF7E78226D84912F7C39CDB5ABB70868EF424041FA5DC7CE2
+ FFC486338B7F7F2628692096C3D757B98A96E3A030CF0FA2DC2ABD8E597FBD66
+ 27301796147665FA18AE0BDA97C8FF2D2679E6D0912955D53B627E0B42DA3C98
+ 71D3F9057FE400C9780229B23D120E43B2AB546E768925CF97248BEE418FFF1B
+ 214D2CC252033BD33A406EC47F3FF9AF93B94857E8F53AF258F75D79112538B8
+ 6480C7ECAB9745EF899A4CF53375EDB57542E0D0D6E6781C0B6849D6BF03D664
+ 7C5DB124201F46144FB9199E2F48F3BA58721D709BB8B281110B995238ABA201
+ 2EC52B7FE1F2D5B7E6851B70936E9F801E03209D874746C876B2BA114BEC229B
+ B16D3912E32CD9CC274A359F558C23DE58E3B338C3B7E0337DDF64F3953D1D03
+ 41A9C1D43BD5D0D1180984BDCC61C61BD0F87F2806B63D8BC24F04DA445CE374
+ 4A6083797E09BCF4008DB1936FB9DA921E74E5E8107D32FFC50BB99C431460A3
+ 953D2436807DAAA9606C523C14E4837D96365457CEF97F2CA4CEC11CF770D27D
+ 9D0DDFE9B313115178A3C62F5006D92D3A82242A90833F4682352798771D83BC
+ 90E90484D9E4C064DC8D6FBA1B5EC16F9FFF07C70066FBBBA1E8026CA74092CB
+ 77B350A75A80B64AF7C3F2D3B823DF364A06AA4E47094F438589C3F5ED9FA91D
+ B0F6994643A11E8BFADBCDE87227EEA3D996EE350C1340244F49C0F88AF2441D
+ 61393AFA4FE3A6C6E98779BB9905F435BEB52301D667CE3D675E15C22F6155E9
+ CB34BA159A65C118C20A7627D12C17661CD9B59A9BFFB897C7169913D3F7A423
+ B4824B15FF5C73C293DECCCB91EEDFB635479B848422D038C19D29C6A4B2A470
+ 4170E2B55D20904FEAC43B0EFE948DCFBD9A5908672E89C990928A5E8D0CF602
+ 7494DAE7FEFEDA07B1C3BBB7071F8BC21BC10A80899A72F84DBEF3A3C43D6406
+ 9B2769AAB9E92034784CB3749D995777B9700D8A1D644FCD5B88EEBA5D2BF172
+ D9AA171109FD3DC7434B107481A763A7EF39A75C102ADA8B648D10828FCC1E05
+ A404543B5D7876D8B273A578030E1D93B7F845CB1052ED9D458DAB38BE9C9000
+ 6CE4F7811BB2A44A4BAF2C447DD428B1F9908081E52A5E6499C9F08CE9892054
+ 603FA0F0C29085E85D956E860320A46E8525053A2240FCEF03720CD3735926F0
+ 08D16C85BACCF9A3947B7123FB5272BF3CE652FCA61D1895D7F810FD6055DAD3
+ 2C1F69E178161CB6C2715487F4FF4A987AAA5CF4001AA701BFE987A538C7B4A8
+ 04C3B4C31C28766D5998AD289DE014E527558260970A39F112A303F3B239C2BD
+ 019BD21BFF676411FA2642ABA2F37B14FB4CCBB51E8615A230E3F421A1821C6F
+ 54E014285202EC227E522B482C720814CB894BE0F7DAE4316179E41E09A7D6FB
+ 7656AE9D6D66A13521A70DF69E1ED3A330676DC8B41F8F9F3331A869A8F4575F
+ 115433F62B522B2697F27ADCD3FBA0A1727F17D9148B8E28F983B68F9B3FA68B
+ 5C05208C6087153B9CF5ADA613FBCF04140C7F45BBB47CC90FBAE5125527AFF7
+ 21A113A60B6784CE586C248162C719DFCCB7E9B3EFAAE983060CD7B2F0CC26BD
+ E0E03BDEC968A3640607F5EE8ACF52EB10BFB07FE10A7456E034E85300C909EE
+ 33FB7C73CCF5FCFB3A45150D7599015ECDEDA942609DD23E7D573EE456807102
+ 133D83A25DF5988567B73D554A81C5788797E0BDF622BCDA8760AD62B733CCA9
+ C720607FBC9C6D0F469497DF74F73BFA6CD701EA68A25D10B7EEF9087ED9EB84
+ 4D4DB0CC6F3063F9563C53CA43A9B01936EC5156E51DD70BAE8D4B2807213F6A
+ 7BCB86B3D04EBA7A2903A776BB6423E9C78FC7AA3E87AD370C505BADCD8BB779
+ C345687523B784C8EE7B3021E6D236EE36834D504D798754E00D957950B027A7
+ B5743CF15E14C081286B406C4B7E77A1582D35F1AAB04F985490942E818E3E36
+ 3CA3D3B75FE23556D9E77C171C98C3B83402E4FB138DA630060F954ECF417333
+ 82C228332D6EC29D71E7E3E033E473E5E09F1CFA2312BFA7AAE5EDA746737A26
+ B4600B614A585075BB23B277CDB257797DF2A649713B78D6974E1F6F993770AC
+ E2FBB439FEBE33EA25AF26B072BEFDEB9FAB5CE98C4E04FEAB3813D5D19829ED
+ 43A28FD6AD3D8B78CF61C43C6B35423D5F749C0275B5B84C2F7A39F7748B8EC5
+ DA214AAF96AC3241B09120E87091D2398DD0C566C79CE25EE7FE11B3553D58DF
+ D23CCB8F8F4D57D9A1AF717808D0FA7FFE7ADE96E418AB6E91DF71BB7F79A1A0
+ 348ACD70E13640EE0AEEF5A29AAD091324566289408FBC4E86C83E3E1A703CAD
+ B43A9444C9E9A41B0AD8141A0DDCC57A5D8935F2404E042A9A2FFE6011EC817E
+ F7533CEFE0DB8A96DE6DC3EDA6ACD4F0D639AAD0E70599E92A4842BE9745B2B0
+ AFF671CDFD000BE5085F79CA3BA87E0E89DEA54C995BE32A7D899BBAAE15F0D4
+ C30A7084D436F161235D50833BCEFDB358327C40D9B4C2A93AE2861155EBD1D8
+ 34D51A63724FE7AC0159B2C1CD085D87D5EB761E826E219584D3DD07B50149DB
+ 326E0338B4049319BEAD36617A1DC98C1AF59FC75F4FFEADA70C55877491E3E9
+ BD13AB36685234A6561257EE51A629EF8EFD3F071CDADDCA13C80E1F3BBA7A28
+ 080AB17D2A12FECE6431761C2C1F232E5E306C249C3FEDB608B26A4EBB4ED37A
+ A814E48EE7FEA2183393FC919734EE1BF5F7621A5EC4A5E99490F0E3B9F36EF3
+ E5AAE4C36FD71A5AED628DA12D3B26D9FFD4E724CBA3EB4552D393CB14E434FA
+ 9CFB699B4866C06705AA9215289E62514C316C4EFF99636C6779B51838B44DE7
+ 9E66D0401C602C92757A5CE0ECD3EC7FDA463C63061986F912453C198364A745
+ 0140ECCCEF3DA01F3E905429B5748C999542EA05BB12B6C9A182B0049408C318
+ 8C708EEDFE16744D7A28DD28893984E801FB372CF6A3C3F8939A47B1F8AD0B40
+ 0CE1AD8BE05631DA03D4C970D691D12DEB8AB05A41E707A2B3208D32CF655540
+ 7BF533982D9CCB77F0E912D4A585DD0CD3B73FD659F571E4B648BDE716D9FEDC
+ 658CAB521F3D10BE1104EA788A90B5188E41A661CE752762F1BD7FCAD22FBC4B
+ 85B2A8F3877310556BA6841C0FF2AE182D7A653D6462E56CE447D14BC743C68B
+ 04E877206C2495DCD66177428ED6A81054F19A988326CC082B0184FC1A443A07
+ B2D54F591A99492FBC998F4C309D724F34F9D5E371092C475818D8A5E91161C3
+ B4681A035D13E6313D56FE4F46D3EBF8E846111F4DD0EEDF3392F2438DBCE647
+ DEBD07537F6543D908B9BA4B187EF2699A2650F4C0CE256372E8672E55B25501
+ 62F4FC7081447DCE55CB46C76DED1154B5458ACF2AD9702E3E0735A852B6498E
+ 50A14E45763B675684300162CFB8F6C4007A97D791BED723972803E31EAF5334
+ 8CB7A9D28EA201E80A46869EAD199D62E8C3A2C5FA010D85D59040E42D45ADB8
+ 5CEA6C303905C3ADFE0339F6173462530B6BEBBBEC31F26C9B4FFA99ED11D087
+ B085738ECFF7E6121482D57EFB8ACB866473891C737ABB0D93696B2064AE4E56
+ E0CBE9ED13EA07A427117F0816BB4C09BAF374A188356A638AF22F3A0AE1708C
+ 5364488EA637278B4D9FDCE19D55812646C3E87A1C6BE296B1BB525B77B4D2B6
+ 34FA8BBD69AB71821E6C0882A4028C859D71646258F96863740DCB35B1EBE352
+ A54CD143444DACC0EE0387789EAA46851A025909C949B118D3CF8AFA53804D0B
+ 2E742E378C10A94856DFC4C8E032BEF09F594EC4D7EF62080F2C4C0DC2B665E0
+ FA76CC67BD8F541DADB512D06FF5F23F2074DE4AAB7A5ABC74386208192F7876
+ 2661CC8AB7768496D4976DBD179D02E30B9B623EF29DEA21E6D70577787F3FC0
+ 094191AEACE1238F7963EE89D1D8C116BFC23B2DCF7E82BFB04FDA5D35FE9225
+ 8F4EE09F9D7338EE7C983418FF9825678A8E0D20AF745E213C838379A7232450
+ 751A845C8121262CCBC7C9B90489A441B0D06B6DD119BDC5FF5BFD84673E0A50
+ 962C3944B50383A3B9B8191A9D7CA797AB0C23ACD7F8DCCCBD6DCE618F638784
+ DDF8D1079DAB4D5D1E10DF8B333E521EE7C2698937BE54F098DD125753E1EB0C
+ DB53CF1D5BE90FA6726F327902BFC9ACBED01CFCA4D7DF6ED7975920B9017399
+ 081C432460FD170A847BED79B30F545183C6C2702C5CAA2F4FEB58D2F3AE3DB6
+ 9240230560A39B7810147AF152BB77F6DF59BDE0A7AC0E3D11A0C37655041FBE
+ FDE3079D43E8ABF80D904C66A3C4D20E2E81DF463893C1CC13A702D9F1E22715
+ 1AE772D28BE3FE98FDC67AD5CE6CDCF608429415373E492FFA6B22203AB375B7
+ E476C74E17DDEC2C2E302AA36459E4F6D00A1EB9801AC6998B3AE2F588D23A6C
+ 53A401F4B0DEEF6B7E1680A72E5057078CF93459992DB54AF7EDA5161248EF0F
+ C5CAE11E31505214A31965B39FC48D3DCF18190A8990AE942CD9C8DE8AF269F0
+ 4E9207B1CBE4726F7D40B5C902AA351A6E13C841CFA8E46D59DFD303F7D9E618
+ 802C5AD23D849302DC13015E3E2285E87795366692EBFBBF4809E72ECF738007
+ 6A87F629A78CCC38B5E5E84E2739EDE790CA2624654F8A22C633CC30D0551C45
+ F1C6AE00202B4661DC1F94BDC5B821EDFF6CB3CE778ACF3F64C2A41DD02D3C3D
+ 2C418325C35FA4A1263F71B707553518D7FE627734359ABBFA7D52E4D4AAE228
+ B0C9683EAB33074B0D4237FF96EC0EBAA553A4B9C474A6974B01F652CA19D6F9
+ 21E6A822558CA404A8FF09D0EE7B2CDA13FE80D6AA5C6CDB438204D1BD0074FA
+ BEEE14BC0452E1F4619C1F5FE5937E60E72E9A882D988CB54984634D4CD3C1E7
+ 2C25E8EB943768B5BAF43311E63DA53A265AFE195C61EB49486121781AFE38BD
+ 73FE168FC3F03A8539C9ABCEB733D33E916D399BBF1CC5D2DAF7CF54FCAF90D1
+ 536721C714EE2C4BF78166AB841C68D8634E047CE2D60C127ECC74EBED0A901D
+ 9502193959243D60EA8832A97137D3C39F628D26BE6061B7C9ED3B021C1C6E6C
+ E8C02EF21CB4AAF73A022A7D0B8AC3E18DB4C827A5E0CBFE3233136B28B0160D
+ 76251874804443196A7135A2A07B46357CC88A3BF31E0A173AC13130E9976772
+ EFB43AA4E9DCE098359F7F8A4AF5C90D0CB147555A9EC02A76F7D2164C649743
+ C9C272310BB7AF11500981954140CDF4E1E7EC97165648B01609FD3EF496CC24
+ 081B72989A3A417FC2014A6D7141505EB11A3FBFC688C8EB7D051779E32A3916
+ 2B31383147E178C83953C0CFB49A9A57234E9D627332D3A24E7B15299AE6D7B2
+ F09D6BBF69F9A4A1B32445EE64A3E93CD208C5EBD3967849C6960E07C706CD7A
+ DED71FAE51D6D6052A12A1C56DD1DC475A151F8143685328098E328DF4459EB4
+ B99CE32718C4CE44B59362877E923F963140DE8F6E645FB9C16BA6555DFC130D
+ 0ED18571A826AD41B35356242ADA8B1654638469F9D7DCCB75977876A9DB8BB5
+ 6D9A880F3D2136C3787FFED826EA3C4B26AA38C38031833FDB562BE3419AAF22
+ 6C854A42887BBD8CE0B609DAEA09773EEA6DD8F56F343C2717EF3DA97AD49471
+ 1BB51C417765208A53244EE0FC9B13798BCB03C38150EED8A8145F3AB7357B24
+ CA706CE056546BA8BB943EFE6DBF47F6CBDDAB75658B9AAB1679C3EDF60CF092
+ AB84001B872A22142312E55B00CCA2B46470364C82975B77DB79956FA9EED258
+ C0BF69AC6229AA57E8B9DBE913CD1780A8E59DAF96474822ED2C6DF8737E159B
+ 764B12066061E8C7964C6E880881F4A8F66C9840C1199CFD7723DAAC748E152C
+ 9AF6FC6A77141B7F074671F87BE0C880F1E7BA27F275C615F0CF20817CF29C87
+ 812EDC3C1326EE334F2D779DF55D639680CFEE65849FA1DE96C088E8CB008566
+ BD8C1EAB6B9AEBC5EC96A3B7BBEB2E5A1B4853EF6CF668D9AB47D2B4407893CF
+ CFF0120A2EA0322E057F3270DD0CDADEF6D078FFB210852C4D3D29DF301E98B8
+ A1E478CFB8049BBE82AF6AC4BD8D4CF9004FE314E23F72D340DBB8CFEB8BD42D
+ A7C2A71553D0142BB810B40DF7A7E56C659B988D360568591727315E89BFC9EF
+ 417292687DF8D19BC02ADCAE88ABCBDF2BF5F9E9873AB0499F3810EFCFB20EAB
+ CCECE68C9821434F3BC845B0EBF2A95840FA87968D2DE034AE2A9696F503D473
+ 8F93AC2DE7FAA83D5A2D8821A3935C913C76E57F48903228D9D214C41EEA6F2A
+ 7D6F572B0760187B477112A132FAF6F0F2FA9C8D728F1076984FEB8EA5A77BE0
+ 409BE935CF5B4C243FC70E34DC9C369E509828118BFBED2C769DED0C25A30483
+ 417E6C56CC7D3E8F26BB8A8DE8976CD509706FFF7450588C72A7D7E3C2806D64
+ F7DF53AD8687043FEB2DA217A49D536991084BC99FBEB6D06DAFE0999AEDDA9E
+ 76879A2E474390C0DB30EE0CB0C0A6B233427AC1C8F6BD2F533971E830E32C62
+ D5B6495951561D084473FB9FBE6D582752C5BB394B631A6FD003B672D2AFBFC6
+ 99F94021A870547037F60591DD0B22B86A8FD883CF5483480DBFB984DB5D1EB3
+ 7C64437302DC791063C9E2C3130862C0A55A21C349AE8E62385E68A7F46EEF2D
+ FE1A0119F71038252FCAD7BA611CF4767976E33EC9BD85B9AE89740877B93532
+ C29732248927A8B9F68092E21CEA8718C336A8CC46FDE04B7523AA295B51E622
+ 15FD847E9D821694EEDF60D7E1EE1B0F96801AC24B52F5CC33BFD45CF455913B
+ F9C894EA0599A07EE003E8CABE03A2A81A0D8E4CFE5B43C196C2CCE059E1F0E7
+ 4A279BC8C00A72C760966217359785CDE42A3832152A6D92445B76D2B1D8B342
+ 9A0839D27D6ACAA5F790E1511592E235EA421370BEFC246C6AE0D57D5112E0C3
+ C8245DBD380523BDB1A7FC8F20E65E0E2AF3EA6CC30B1FFEB0C2DB3C95FF9822
+ 1C2AF01D6901B4756C3DC2240C4DC16E4F9E34323F91D329109BBC6240B4132C
+ 5989C3887FDC876481574DA24F5893781E164EC3660ADFD2D6726AD9F03C315C
+ F64F5D8B579369B0ED5286514A2E1EE18E417273E772E1B61DE4F50950CF832E
+ 31C53A63BE9E8598CD820FBE7E2E2FE4B93A2C3B95B34AB2FD249F08E7BA65E2
+ 27EE8C0C9E5DB9D6EE03A2D9655DA66887775980D0BC6752029DED5C30BE582A
+ 0F9C6F367F1126F40763A4C55F37ED2545B154166C539AB6C440B7280D9476F3
+ C14F7EDBECE02A47755493E18A403141364C2B89D92131147F89292DA001CD9A
+ AA5EDB01451A9A869E2B1840AFBFBD4C0F2AC1E24038AC160BE36D9864C7AB44
+ EB2AE4CCF0AEF6A19D55E86B43F8816A6633BC3D096CDF52ED800B417657618D
+ 4DD34CDBD8AAF0C932691966680734E79A27735A36178F00D4AD1EC49C66F904
+ FB9948818DB06811E899AD9412B3B5CD557480DC1FF448C9D82076864693C89E
+ ADD5EC483E69501461CE30B91E9A0EAC6E6721B89630D3890E12FE86359B2A85
+ 9634E3541267FF23647F01FE069171FCF2ECD54131F14E6F4F03AF1911FF051D
+ ACD5072A41E01CF117B7D3E2616E8481615DEA5BCA6934ECF7DCB891154FA25F
+ E7F1B55F0ED5D5C0F322AD9D2B8147E47B0A3BD2CED107259FDBFFDFCAE4774A
+ 0EA2623A4DAE6F8574A4D7747C9E36765416
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ cleartomark
+ %%EndFont 
+ %%BeginFont: CMR8
+ %!PS-AdobeFont-1.1: CMR8 1.0
+ %%CreationDate: 1991 Aug 20 16:39:40
+ % Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+ 11 dict begin
+ /FontInfo 7 dict dup begin
+ /version (1.0) readonly def
+ /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+ /FullName (CMR8) readonly def
+ /FamilyName (Computer Modern) readonly def
+ /Weight (Medium) readonly def
+ /ItalicAngle 0 def
+ /isFixedPitch false def
+ end readonly def
+ /FontName /CMR8 def
+ /PaintType 0 def
+ /FontType 1 def
+ /FontMatrix [0.001 0 0 0.001 0 0] readonly def
+ /Encoding 256 array
+ 0 1 255 {1 index exch /.notdef put} for
+ dup 11 /ff put
+ dup 34 /quotedblright put
+ dup 44 /comma put
+ dup 46 /period put
+ dup 59 /semicolon put
+ dup 65 /A put
+ dup 76 /L put
+ dup 77 /M put
+ dup 86 /V put
+ dup 87 /W put
+ dup 92 /quotedblleft put
+ dup 97 /a put
+ dup 98 /b put
+ dup 99 /c put
+ dup 100 /d put
+ dup 101 /e put
+ dup 103 /g put
+ dup 104 /h put
+ dup 105 /i put
+ dup 106 /j put
+ dup 108 /l put
+ dup 109 /m put
+ dup 110 /n put
+ dup 111 /o put
+ dup 112 /p put
+ dup 114 /r put
+ dup 115 /s put
+ dup 116 /t put
+ dup 117 /u put
+ dup 118 /v put
+ dup 120 /x put
+ dup 121 /y put
+ readonly def
+ /FontBBox{-36 -250 1070 750}readonly def
+ /UniqueID 5000791 def
+ currentdict end
+ currentfile eexec
+ D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+ 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+ 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+ D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+ 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+ 2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
+ 68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
+ 3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65
+ 48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3
+ 9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB
+ 0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB
+ 8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F
+ EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466
+ FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3
+ 9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62
+ D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8
+ 9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5
+ ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6
+ 10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582
+ 83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493
+ 2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA901C077A059F709F30
+ 4384CB5FA748F2054FAD9A7A43D4EA427918BD414F766531136B60C3477C6632
+ BEFE3897B58C19276A301926C2AEF2756B367319772C9B201C49B4D935A8267B
+ 041D6F1783B6AEA4DAC4F5B3507D7032AA640AAB12E343A4E9BDCF419C04A721
+ 3888B25AF4E293AACED9A6BDC78E61DA1C424C6503CC1885F762B87C2313252C
+ 61EB8662C3C1642C2676274BDA5A1EA35871AF43F73D80C8562F9F19BAA4FA1A
+ 843EE0022896561EE2DBBD4E3F67F08167F5002639DECFCC842ECDE11E38AA3D
+ E8F37963BB2A4C3E05427DB15BA8022FCB1AC051E415AE8E4952D303C4CCD5D7
+ BFF9C9E1E1919D8EAB40628614D9924BE488C5A2593CE38F9ACA7D710F364827
+ 25EF141D58C67DF112C03A5DE4522D7CFC7C227E67048A73A7D08DBE9515FF85
+ ED1DC8720FD03E6504C82E7D96BA864D0BF7915EBCBD92ED9C36155FC9928CEA
+ 3602E420ECBEB7363FBA4D18F9E4D6845889E16E31E260395D0E193751B5EA39
+ FE97DC6C972309ED93C048EB6F31F86D378AA127CAA28F8103BB1C31C25B51BE
+ D5D08BC4A7461B12C27C55FC6BA21E0F4897FE5141320B98BB429A2CBC7D5814
+ F713B000CF4E3585520CB78CC605F68A6F4D4B462CAB4A5FEFB77CE23BA05C64
+ 21B30B19C6DA5E5506E7EEBA31E56D021436B8877F4C77DCB06E732F331B48E2
+ 153500ADFF20A52D9396CBC15EE6DF78C170C1FAAEB7D48DD25E7477A135EE3B
+ 332362E29401AB94412A0048FA61FFDC79E772168111EA3122C1A60D7C85272F
+ 251B5716B78CDE37933766D08C59D899C03AF28A0634DB8327388ABE3881568A
+ E740D407005D2AC4E47944079BE2F7C1D76567DFD166C9F20C3087081A26C370
+ EC8CD98B293F54EDADC9A0EBF9F11B318AB630567AC259975EDC877E1B1B87F1
+ F70616098191220AE6EB9B3E6769F99EE665EBD05DADCD39E6F264C34A6C0525
+ 5CC08352CACDB74A3F014B4E5F73D8F32C441524CA3EBCB5EB3FBEB152838972
+ 54EE86F83E9862C804403BF595B0A5F1A85AA0ED50B34B01E82499D04C0EBC1D
+ 4A6C23320305B58D1BFA1336F72808CE571D76FCE120597F9BF327C9DB61AD81
+ 6B6F3384919EA16BC69B6399BF6362AC3C512EE3050C6C912EE48240581EFB34
+ 5B23219381DF7F789192551F13643F60829F226F1CFEB815F6A51387742F6241
+ 1A73D879782495769668758E086F2168B6E62C45F0D9357765053937A873BF77
+ BA0099D3413D6CFFC7462F9083BEF33CEE2941FA55A4DC921D92AC17E732168A
+ 2C57E5F4D6F8D35C0490D8855B1FCD21760A0347CFE8762D547CD50F8A838BAA
+ 080D750ED224A77A4E849AC3136BF1AA6DB07AF6275DE7737A89B3F03D0FDC8E
+ E97AAB77EA6A54784692C44E8AF717120EABAB24FEE97EC7495FCFFC7ACA3C50
+ 4D4E6B964CA88C99C2D9EA20F83F749C733EB129B27267DDF53FAB2C4952DABC
+ 8CD90F6707B909A6937289A4F6A193A1FC77C9346AE95C8D65224CF61DCE4AA9
+ A3D9B2EDAF62F303F6751A8C74A6226DFE7DD646EAE0EDA4FE38219D6CA59D74
+ A1F3779A7D74BF38A09A329197FAB631929443625D8866D4F976993EF9D8E708
+ 999B09D09C85F482C9A345896531B6A0FC84D692EC007D20C9D3787B9E524233
+ C3FF3A3638FA7D596C2706DB6D25DF6E0242DD3BA0DEF002EB65A9BF21036180
+ BDF50AAB9E63A0FEBBFC17DACC5AEB91BBC212271112825C23F13B4A390719E4
+ 116F1DDF2EFC459250641DA8E3BAAAFC975251FA90C64087FEAB44B61C64BA06
+ EC1564F466692CDA25FA998F68875E1357B2F240D79C4FB0DEFE08C71D5A8E41
+ C6A54F577AFFC9B55C990FC040D301DFC444EF17BC4D3F508CC36DB8A7AA7591
+ AA7248BDA5F1BF7006B4F631BCDDD5003873A7AB8526210B9FC19C6013138EE9
+ 1AFE880B004FCEFCD2573C7AB7CC840DF8BEA3A0004DA3344930B203EAA31D25
+ 2E7B9A76C0B3F6AA534534A76EEB9F5F7166C121BA24BFAB1B367E502452595C
+ 06B9FB4A9EACE8B97CD389720CFEFC228244F7D4F78888ED7C3FBACAAFC52481
+ 2636A6B4248B698593CD60212329FCA4E2A1DBDAABDE0FDACE46D20084CB76D8
+ 05DC7ABC336503AF72AC60497CF134745A1573DBDA255B220F31EA03F0C5326F
+ 6F588BC57D56F3AA9C52E16E709DFC21161BF2A3EB2AB827037444AEEFC81B2C
+ 29C96A80448AF500331C7017A8385D9133BCBF080D8422CA3F44A7F0011E78A9
+ 4DB1D4898EEF9BA02AF9A1D052DDACD8AC3DC9EE939B836F2531E165B9070D2F
+ 654E285942601E0F97186DF406BFB981BEC9FEC483E8CD586B77133DE73B6AD7
+ 5A4F5DB136620DCCCF70AECD58FA4F4F02CAC84CCA738E108E2114D9D14B926E
+ 82E399AC5A3993240F4B31BBDD0E609501B0AA753362D863A0ADC4654E59A285
+ 04D370C86F82E39AFC0EFC552C717831C2C5F1C85B779FC5F9E83486375278A4
+ FE32C6171ADF618ACE2EB05F33174FBABFD953ACF0254F5A78CD9D590D57D46D
+ 0411446C82B4A2E492E291C720B0B33718CC1A202E82B6C5AE9630772B1FA8CA
+ 44F7C6DB6F5395E3A41EFDAFD7E4807645462E601FAEEBA92C15F43811692832
+ 507082AD52447A63DC891043FE59F434135BB08B22C4072C29B335453914A007
+ 581CBD1E5F40A74652305184DE986D05A670D29616EE593D4C9763538C56CF1C
+ 34B03BC14DA5016B3D9618C6111DE11E671307B5D742E21317EF1D0A34CD5FC0
+ 7C321FB0C581A98661842377F0E4B5BAE18DEEC97F1D339C08C62BE5A0CE3721
+ F214B81F73AA5E4464987F792B04344BE845370F188DE6DD7B27146340C9FE6B
+ E15B3362C590F905A725CFB927923B219DFB7332E10347B0D9EFE7C7936FF935
+ 350AF9A2846567E1E580644A5E01817CC484B84DB9567F6D1BDC6A94980BD07C
+ 32D6C952068C671FC04BE125BF6C1D48350D5D678BE5DC85A9B8C56B10AB672B
+ DB8C008E2DE4D9B1AB880B60F762E88F4D9A5E87AB1D914FF87A2A2A846BB025
+ 1B4806E21E89E8268ECD8487990C19D9BBCBD95BBF97195FC99B538417046354
+ 0A361FC45685B0832C297B9052AAFA0B896D17997D7D49D4A74800FB04BB20A6
+ D46CA344BD9A895CF4A9EB8C121EEA4D81B2FD0934B3D3E7FAA4F43CD1415528
+ 2FB3005D2F320395A22D8679007980F184F9884854B7AEC2EFB5E337B7A48675
+ 7566BD7F44AD4366D94393314BD10F2188176401109C3C758A3BFE900EDA1BE6
+ 0376E116A592189F82199F5DA163B05C3A53AF941D848FD859F5CE52CD986989
+ 86D19A1610E5516D3D73EF0BBFD25EE959174F27B125B38B17B87F28A4DABCB4
+ 627A3984114D45A69FC5460D9CEA1ABA9D8A8F40419B8A840B7999BEACB5DE57
+ 29F1D1D279A89218828407C9CF1F48386A7E84FD94521774F3096D590E56114D
+ 130D77F023B7FC6B0EE12EE4DEBDD2B7E20470F43CBD8496C6D3B89DD3931C31
+ F2381D6A8F451BC7EAFB096F2A805EDD1F56F4D483222DDA2BB9CBD072816B8C
+ AAB0C6F39C9C414FE0C70184C77730014B8F9C8306D7E1235359D6E004CA2EF5
+ CFBBD97E196C22E5EF221C8F5269489DD0A3E1ACC8BC2069366E18D44A8C207D
+ E5976D7250078E641AB2C29EDA18DE9FDCF096FBC6F7C1CAC2167F628BC5C711
+ F74A562F9F8E02B7932EC2B8E7A8CF27BCAC10CE979F0D0FA1C8595B4767B56F
+ 6E44183CC07067244EF752A3D5096EE81FB72B73434F10D2D2062CFC64D4FD0A
+ 51FF707D310B9F9D2294826186D4A25A523A498BF221B4B82B498D99B997BD82
+ 1E3F2A2BF536202555F579ED7BA4023DE4C3BDCEC12904ADD004350C61218E29
+ 93D4273DFDF3249464ECF8C981B3FA4668AE0B0244DDA40CF682F10D67565A83
+ 312B278ED30F09ABB8CF9472C7FAD4B8409ACC84374BB45A2D1430998B211C46
+ EC0B136857845D5AE0217EE909F762DB43C780844F92F974BFFAB77BD2A005B8
+ BB2D2A644B7A1C975545F40BAD861F25B220ADFBF4177E643A1FAAF1E7CE904C
+ C130D2EA38B5E5B3DCB70861989839611E4E4BB3FE62ABA6482C8806F7DB3297
+ B3CA829678120ED0201F326A6FD8CB4F375696A70E92E045DC3A9F006DB176C0
+ AFFB79499AEC466607231FE09858953261BE909E252BBE459AD4A7369342DC28
+ 7DB8D7F47C605B8D21ABE0D2E176179AAAF1AABD5ECE512DBFC3B9B3BC76C886
+ B7155227830DA403E373369164520E41212A91A188FD194BAC3DEEE604C807B6
+ 9F65E4D655A15F527C43D0F824F03106A3EAAEA531CCAF1A13D9FC837EB0B02E
+ E6C78BB264A7E02C0EBFDB67DE2E806599A4B1C6E6DEAFFE62C8326AC389B8C8
+ CCEE0034EB9A386133087CC14AD668C40A32E4DE4A2328745880C5D1F2772CCD
+ 9C62194E8E757C2026CDDC3F313049F93B723C5BF6F4F947D784CBB0BBA1A9C7
+ C1D75B367BFA8DC8FE623993E570510753DA02229F88BF999F07B38E9B292B8F
+ B857826D4378E8B1F448089D0E8DACDEAA243B3A752C20F6C0AAFAC09411DCDB
+ C1B06865DA9E7A2A4AA0662E7156C483694B059D17015C0E10A2CD7D23AFA13C
+ 1EDB60273C9B3A1D9EC6896F9E11067AE6D5CB9ECF9E1720B3DA71F66F690134
+ 7B52EDF16CBC8B4E63FB58858097ACF3C854BE75E98C277A55859B1AC95D5865
+ 70A402E38CFBB63E7C3AEADBC9EEB0DEDF74C31D34E6F11F140B24D6962D6871
+ DD2B74B1A091EDBC38A728E43290A30FE6E894BFAE24ABB6482AA86111E3A6B9
+ DBD64D53154382D4DB9CEC77D0067EDFDCAB551BDB62117F1F81486D7C0A2A2F
+ 5041D21E10BC3FF82885EDC93D3ED5F1EF14747EB0DB3601B471ECDD9CE19E94
+ 56CEBDCB1EF9003C51CE6320CE70E692EDB2F880FB91EB11DA3824845ECB71D6
+ 476289AD414D67DBA23224CA7B37EBEF673642BD38B94A002333EB7C6C5B1EA9
+ 00D43E14EFC9B8B1962387939692300FC5FD77648D2E0F3351628B6AF7968103
+ 63A784517EDCD23476FB7CDD3413CD16E45C8059DE8C75E83819A682B6E27444
+ 71746D63C4C5D90C2E89065106562C49830271332513CA94FE002D3624D91117
+ 3704A0DEA3362DEAFF936191A138311CB8A782F458D92830687015DFA99CB877
+ A607111DD0D17F378797A9B2EE8B6CAB73A2DC894121B65FF8B4E6661A6BA734
+ BF731D1678D73C92EFDE39F0CDAD474BEDCCE6002D841B219827BC942737CC2A
+ 130DD6BCD51FF4CC94D5A439985FC2F895680040BE4E7867A7992ADBFC558611
+ BD5802008C084AF63CE491DC27B7FB9EDED6415D7302D9E01A2A364953F36B8F
+ 7DD38A4A6B3FE4E5CE76F769C9918265DBCFBE387B10B40C01E2670EAA9E7F4B
+ 6E345A9C204CFDACF1BFB903FA7FFFCAB4C51AF68C9641EB6E30FD393DF51844
+ 2E4B314AF81DF691607A66ED174CED1E8B0A47B7D1801540211DFB639560177D
+ 31281BE9730464406E54F6794996DD74B64EBA723E2B77E4A53D4859E1AB7006
+ 87F22BF98A5A8B7909675D3851B24EFDE08C8CFD5CCAA5A62FC916887B7A1BB9
+ 537F557AF4058D33AAC13FC6E92CE40D3641DA4CF1AE89F8DEBCC0B5268C14EC
+ 2F580E7525C7D3EB9A51BD56EDD88356B5DB11F6CF7A02DA4FA48ECCA0964E61
+ DE3AFED055727D48566F1B3446F7B0759A26512069566695DA8961178A71116B
+ CC52A04AB5504B61E76DD608F8387A39A4E7ECA757B8D654BBCAE88407C63D1E
+ 525BEFAB6D0601B61A811DFB955341681E853B041C44EE928F06FFA3512D3E09
+ AC82195DE61D1FBB3AEEE23E5720D6ADE9122FD743E1780D3FCF1DDC6ED9F960
+ 0270A6A1F055127048BC12AB26075C40F4FF3511C5AC17300CE9F84C2A74E5DC
+ 05D145F412E2B9E861470C660FF37F69ABD3FACDBBC9F3E86EC84A7D229B9A4B
+ E558945B197DEE16F1BF2632113C4C18D216926AD2E77B85F440D291F5A1DE3F
+ 592F655DD2DD24F56770F78586C864CD0466B9384041DC8828A7131B5A97FFF1
+ E3075C1E57121A71C56730AAB76E88D7A93D87747C596249C693CF5BA63CE1A1
+ BAC87815C9F36AAF0B3ED529FD9A0F62ACD589A2815DD38811E41E3CDF31D493
+ 43D7FF2384C4F3D75FBCDF85DD0FCC1BD8208F89DEBC8D8ECCE3901909AB618C
+ E57F192488C1F90D087FEA5B1FCB3BBAEF2ABEA2325187382CEE3F36BFB09C32
+ FEFE65FFF7C69D8263703DCF1AFD7EB3DE550D8AF97FA385E2741281AF51BCE9
+ BF72B9C40CDB18CF977E2181B083D61429373A2A5230E7F93F46B722102EFE63
+ 1E51D522219ECD334A3EEF4D6A44329D00C3F9059F996BE670544CA87781570C
+ 4DA0CC0EE1907E3E687FD0B0DC5A90F360D9868BD045AFDD8EB1B0437B706F23
+ 4DB862479904B2C77A87E710FB901FB7BB182BC79495FEF3CDAD912F2412DAFB
+ 90455DC1A2EE7930979FA1D20E0CC629757701249D3FCB3C908B22766675DFB2
+ FCC687379B74DAACF3E73A45C0CD7A9D052D7EAD6FCA52DDB528B55A28F56F2A
+ 679FA283572C0DE5A088F0A51CFCEA99FD9E10E6F8368140D521592C5C2C9CF3
+ 7BE0D292932C941E573D0AA2A506F2FA559475D26DE4D5684F361601C204F068
+ D862AF7BD5535733B3F017DEB2FDDC6E12B6EC26ACFEF543CC192B6886EAC726
+ C00852CC960D3CAEEE7FF9DCCE4BF8D7B932A0DB32CF226685BA09EE3C21905E
+ 4E8F74D8EE653EA1FAFA67C66B97BE699C5492064EE79ACC9214E513E87A5C1A
+ C935D0EE074449278A73B2F28DD2C3CA0473801E5925AE1E69161E88DE12AAD8
+ D74226906A45AF5019CB7FF4D1D2B37C21C8F4F3E0ACCE2A5A16DAFE1A2CEE5E
+ 77F551812FAB7E352BE230C41B187B20AA98A0347D9CDDFA2842FE946D21885E
+ 1333A90711A7D6760909C1D3E27752E16D4A116B3954B072C6D2BFC68C795FE2
+ CD72E02159EBF4057CCA5D74972E52F2C7B365265AB908EE94C5601BC7B2237A
+ 822A236833B3E63BB7F4DA24C601F2C7194278893E65670D2CB4BAC9E8D17252
+ E262FF4414203BABB4E254F45738289A0DD486AF971D759E9410E08FEB1A28A0
+ 6093C2055C07ECD6D02D24F19571C685701C877919EC6D3D0962A4860EA4BCEE
+ 4BB216B61A5890FB7C289754CC16F121C57AB7D0E082D4F472C943938EAA6AE2
+ FD2B58F2D71C8D2393A1421A3E0AC9506AA457C72F9EA698C19D352AB2BCA764
+ 6BC5B80A4F57B1D648A1607F18CE123A240061904212DD184867AE87C5402AB2
+ FCE19B3F446076279344B5C0BB1A3977B6892B59D415331997C3104EC9810EF7
+ 43DBAD971031067D6FC551BD210FF7A484099C086BE080A755C0649F4E9171D9
+ A9C5136D1CBC51BD64D5902CD7DCAA57FAF649B4BB8222297D2066FC1D391C9A
+ BCCC7FF0CAEC9D772A30C36C8B0B158902B295A8EF63DD47CDA0EED79F3C6651
+ EFB7A72688E69F82F735FA02785FC4BA1FD6BCE13F2A64647C74E2B58566D312
+ 6A1A36F384758BE37AF54BB24420A55B421279F1C4E23890E9879E0F4F576316
+ 31D0257434909531A31BBC50E9C813EB41A466D8E02D2290DA4C26B1B6E195B5
+ 0A6109ABB872C5A47B943F7CE99F4E25CA6630C54002DE532868DC3F784F673E
+ B9744F55
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ cleartomark
+ %%EndFont 
+ %%BeginFont: CMR6
+ %!PS-AdobeFont-1.1: CMR6 1.0
+ %%CreationDate: 1991 Aug 20 16:39:02
+ % Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+ 11 dict begin
+ /FontInfo 7 dict dup begin
+ /version (1.0) readonly def
+ /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+ /FullName (CMR6) readonly def
+ /FamilyName (Computer Modern) readonly def
+ /Weight (Medium) readonly def
+ /ItalicAngle 0 def
+ /isFixedPitch false def
+ end readonly def
+ /FontName /CMR6 def
+ /PaintType 0 def
+ /FontType 1 def
+ /FontMatrix [0.001 0 0 0.001 0 0] readonly def
+ /Encoding 256 array
+ 0 1 255 {1 index exch /.notdef put} for
+ dup 49 /one put
+ readonly def
+ /FontBBox{-20 -250 1193 750}readonly def
+ /UniqueID 5000789 def
+ currentdict end
+ currentfile eexec
+ D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+ 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+ 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+ D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+ 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+ 2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
+ 68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
+ 3645B82392D5CAE11A7CB49D7E2E82DCD485CBA17D1AFFF95F4224CF7ECEE45C
+ BFB7C8C77C22A01C345078D28D3ECBF804CDC2FE5025FA0D05CCC5EFC0C4F87E
+ CBED13DDDF8F34E404F471C6DD2E43331D73E89BBC71E7BF889F6293793FEF5A
+ C9DD3792F032E37A364C70914843F7AA314413D022AE3238730B420A7E9D0CF5
+ D0E24F501451F9CDECE10AF7E14FF15C4F12F3FCA47DD9CD3C7AEA8D1551017D
+ 23131C09ED104C052054520268A4FA3C6338BA6CF14C3DE3BAF2EA35296EE3D8
+ D6496277E11DFF6076FE64C8A8C3419FA774473D63223FFA41CBAE609C3D976B
+ 93DFB4079ADC7C4EF07303F93808DDA9F651F61BCCF79555059A44CBAF84A711
+ 6D98083CEF58230D54AD486C74C4A257FC703ACF918219D0A597A5F680B606E4
+ EF94ADF8BF91A5096A806DB64EC96636A98397D22A74932EB7346A9C4B5EE953
+ CB3C80AA634BFC28AA938C704BDA8DC4D13551CCFE2B2784BE8BF54502EBA9AF
+ D49B79237B9C56310550BC30E9108BB06EAC755D6AA4E688EFE2A0AAB17F20FE
+ 00CD0BFF1B9CB6BDA0FA3A29A3117388B6686657A150CE6421FD5D420F4F7FB5
+ B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E10A31C7011C0FFA
+ 99B797CE549B5C45238DD0FADD6B99D233AC69282DF0D91EA2DBD08CE0083904
+ A6D968D5AE3BD159D01BDFF42D16111BC0A517C66B43972080D9DD4F3B9AE7FB
+ 11B035CE715C1218B2D779761D8D7E9DEBE277531BD58F313EBD27E33BEF9DC5
+ 50C7821A8BBC3B9FDF899D7EAA0B94493B97AFEAC503EB5ED7A7AB663529DD50
+ 29E1FF043619C3969739047DCBE0806C6E7ED2CEE445EBA23109D4EA1AF26BFE
+ 9CEFB8F80C4E811C7CB9E4F964F4A095E6456D80CFAB4E4FEBC91333683E769C
+ BF12AB4D9AFF9738E8F5FD33E5E64D2DA80D00B697A2DB83F44297B501AAD801
+ C73389133F28E171C5F7E84A39D16BCF374986988FA525A8F0D6A7024E39331B
+ CF80BB9CB9682EF2C3899C12B3D8F196F45636CBFB6B23FA38222B2B3D667736
+ DC4E61B7CDB4BA8F06ECAD6E279560B467C1C808146FF3B2EDB14ED971A023F5
+ 2E2F1306654A905BAF872411E832B345DD3BCBE7D4A30B128B2A06BA7ACD95E1
+ A451AF157431B3AC6B429A8883ECB107615C9B79C0866560AF39B2D4
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ cleartomark
+ %%EndFont 
+ %%BeginFont: CMTT10
+ %!PS-AdobeFont-1.1: CMTT10 1.00B
+ %%CreationDate: 1992 Apr 26 10:42:42
+ % Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+ 11 dict begin
+ /FontInfo 7 dict dup begin
+ /version (1.00B) readonly def
+ /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+ /FullName (CMTT10) readonly def
+ /FamilyName (Computer Modern) readonly def
+ /Weight (Medium) readonly def
+ /ItalicAngle 0 def
+ /isFixedPitch true def
+ end readonly def
+ /FontName /CMTT10 def
+ /PaintType 0 def
+ /FontType 1 def
+ /FontMatrix [0.001 0 0 0.001 0 0] readonly def
+ /Encoding 256 array
+ 0 1 255 {1 index exch /.notdef put} for
+ dup 34 /quotedbl put
+ dup 35 /numbersign put
+ dup 37 /percent put
+ dup 40 /parenleft put
+ dup 41 /parenright put
+ dup 45 /hyphen put
+ dup 46 /period put
+ dup 47 /slash put
+ dup 48 /zero put
+ dup 49 /one put
+ dup 50 /two put
+ dup 51 /three put
+ dup 52 /four put
+ dup 53 /five put
+ dup 54 /six put
+ dup 55 /seven put
+ dup 56 /eight put
+ dup 57 /nine put
+ dup 58 /colon put
+ dup 64 /at put
+ dup 65 /A put
+ dup 66 /B put
+ dup 67 /C put
+ dup 68 /D put
+ dup 71 /G put
+ dup 72 /H put
+ dup 73 /I put
+ dup 75 /K put
+ dup 76 /L put
+ dup 77 /M put
+ dup 78 /N put
+ dup 79 /O put
+ dup 80 /P put
+ dup 82 /R put
+ dup 83 /S put
+ dup 84 /T put
+ dup 86 /V put
+ dup 87 /W put
+ dup 97 /a put
+ dup 98 /b put
+ dup 99 /c put
+ dup 100 /d put
+ dup 101 /e put
+ dup 102 /f put
+ dup 103 /g put
+ dup 104 /h put
+ dup 105 /i put
+ dup 107 /k put
+ dup 108 /l put
+ dup 109 /m put
+ dup 110 /n put
+ dup 111 /o put
+ dup 112 /p put
+ dup 114 /r put
+ dup 115 /s put
+ dup 116 /t put
+ dup 117 /u put
+ dup 118 /v put
+ dup 120 /x put
+ dup 121 /y put
+ dup 122 /z put
+ readonly def
+ /FontBBox{-4 -235 731 800}readonly def
+ /UniqueID 5000832 def
+ currentdict end
+ currentfile eexec
+ D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+ 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+ 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+ D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+ 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+ 2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19
+ 38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF
+ D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204
+ EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727
+ A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593
+ F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714
+ 4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA
+ 6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E
+ A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B
+ E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F
+ 1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438
+ 452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF
+ 8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369
+ 5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA
+ DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9
+ BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19
+ 741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79
+ E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712
+ E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7
+ D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE
+ C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DC
+ FF798F2ABFC4F3539392985C4CB324B00072295FC160818BB0355FDC4F12E39B
+ 984826450553E3D271F03D8DC2D12A92A4D32034FD16DA13B876D88C8C097384
+ 46D8D7E41CA1A8979F9B07EC3337E70CBBE3A377235B04C79BBBDB66CE1C1A41
+ 89DAB7CE91F2FC0CAF6DDAD09992D56F72299068192610EE3DE5DB7CF6366B4C
+ D74F414484DCCDBA449BFAADA39D0F27574E604E31CB513B18E3821A33076151
+ C2BCB6E957C77A0AECA48C587ABB5E8C7624D56B32F80BBCFDC874AAD6EA5119
+ C9B06886F08CC7DE5400E0F52B07483FD4BAF26C1556CA27B259F845681D61D0
+ 2D28B185C9F052844D9A5F91CF19210CBFB21B55CDC8C684448E9B5A1D249E15
+ 56632979760E2CC7075DF794E06EAC2C8E770828837AEBD80194D3526B2F54E7
+ 891A5195138695EED597EB2503430C34B2DC0C41B371D028680B9A83A3B6C205
+ 1BC98C93230B696B80D1CFFF42887185FBECFB8364BF1F1D68552F31D9B1F0A8
+ F04B8E94955E70DFAD171AC4590B305B53A098ACCA36F24BD9C5DED137F32F88
+ 5E21D44ACDCC405BE220AB0BEC200D8CA400712B92707D24D2AEBEF322648F56
+ EA10138AC01DFC10A5D545761707E97F9FB6DDA217D3726F7E8616C47A67253D
+ 0246F5AF536A3AD35E6BBFEDA20055A9A1032C00E4E2CBBE494CB91BD968C097
+ 26578C47C41C04E4FCDE36720E108D1A9FEA41B7541D9D61848019856B865031
+ 59AFFA07B5127BA92F2445F1F15A8D3B043D662215E1F550D326CAFD038E882F
+ 05CD951AED8C398BD3EB629CBB44419BC0B351AFA4AD5C5CAA346430CF91E116
+ 85F37D1CB4C433944A9932700C0D7D36755706C2751B3FA5FD95D94F5E4AC245
+ 63186E4E5BBCE9AC70E20FCB9220A5FBBFDA7E806A927D0D412E09CE495A0D19
+ 79852A5F39231D6249746F6A3EC7D9E0E206EC72D13064D5B16210011B6E964F
+ 8B7C21D937310644317B92EBE1BDF989308BF46A29BA0F86059A63959CE52EC4
+ 6CA66CFA00E7FEC4DF544A81A302E8EBE756ED6D4A863DE4D5291B14544A9340
+ DBB00D4B88DA49A50CB449B6497FA6DF9289819E46A3833D3E99F3049B1FB1B2
+ 2481D8C945506C7013163C61F6629B9FAEC2285DC9EB4D19769A5258F401D095
+ BC9143B19456977CEBBDA2365883A67AB0E8777184419DEACE4C16FA5C659452
+ 23F2B7ACEE59FD55D43964337F92B5F639356517C90B1FC1C5A2044912C7C5CD
+ F05AF1E875E33C2926F5F544CE8C28D6A4B1A7B8C412FF9184A9CCE706A3E297
+ 0E4D1CF4F96EA34E362E5352757FA86AFB41AC7F5C1B6B1D356591136DFAB08D
+ AD87079C4CCBE641D435AAE8EB4D115B3ABD16943B2BDD2E2A2D6A352AFB393D
+ E9BAD5C76E5C742F9C429D7BC83A0B9508953283ABB544423685BCBDACE5D868
+ 1BA35FFF730728675196994E871400FA5FBFF640ABF94ED3DDAC4E16CDF8FD8B
+ B16C7BD96BA9AC1F38FB77E6924CE544191DF2043BEEF8AC5887B73583DFF00F
+ BA4A0F275D016F41AD10F027B8DC98AB70DC652019E63595B975CB7F3872AA71
+ EFC2F49A3019EFF52F487287710D27EC7967A0B328A2700F8406C4700D2BE01B
+ 00D48AB8A1659E193FE7CE425D4DEB4C9E68D608AB3575DE99FFA4E3D9164DE7
+ D09B87C96588458BC59E00C996A5F8BA7A3B0B172DE001FDD6F9F6E78A531FCF
+ 6F0D87BCEED82D32E542A4190733B8E7881D668C7A750E9197F99B667D1BD2F0
+ 96BDE60CBD8E8314FD6D21D894A9848F2894ABC62322B4891BA2921B76FF5F9D
+ 2F65800DEB60D18113125A4F44F882C26D413C2035E4F42C38E992129C20134F
+ A917F3334344400F28F2955E3475BCA71D0DB6F5325D977AF999E7091D3AF365
+ CA54063600ACCAF2F8E3ADC9CD0BDF08F0297944B8D1AE8BE5A7CB22498862A9
+ 6C8CEB70CD1E2804D9555A7FAE909A1F70E354A099F886FD80CB6ABA9EA55EC3
+ 84647D138D553124162819447C3BE5EA1CC36EB50BF7337E01D7CF68A469BD11
+ 047BEAEA896B1334BEE3A998C54301E9A9D1829D62B61470DA035015F4FDCED8
+ BE35C7BB66C5AD78DA6BEB0E684D8832DAF614CD264B5ED221739A3412762344
+ 3B0E2C1F57BF4003E891D92CD4A67AB311D5E431F4B5E7DD7BF308821645697C
+ 43EE372B5770B37A798186FE2D33E20CE806FB430DAE9B2293A85B28082B6202
+ DCEE42169F8F33B7ADDAE550C13B5944431F6218A6E1AE37AA7305E89946349D
+ F01EC65C97E31DA93E2027DCF6C0899C15AAFAD4BBD8CCDD74F9C1ECEF3E80D1
+ 8F70CED9823E7AF832C926640DADC65FCE5217F68772168EAA4EB8317BFD621C
+ 42EBE3B73A3A5276F78EAA3CF1C85D146068307213FD6D52B4E1767EF3226C52
+ ADD0CB72F5C5FB0082A932C0FB56AA5D1CEC998124904A6B8330DDA29D9067AC
+ 8AF1BCB777DA3888796C57ACBC2F4DAED958155F415D8B6C308A2D924254CCB7
+ 661E525D19AAE618810B39EFAFCB05D5A8B8050BF07FB8AB70C603CDFE3B27E0
+ 5F7CD9ED3BA038E70A58CE8626C0FABFD8A2689D46B837444EC9898B15439B7A
+ AD5826A19FA449AD46AEB837F924F0B663BBD8F48D211B696CE5D226970D899B
+ AE1953522C75CE1EE4D4FF57A44A7AFFCE3F0C072FBB97A52A2664B0B182E07F
+ 429177174747AFBE2E0873519378AE5213EE9E2E39D45198C9F2DB49A1DC1A0D
+ BF7A8075ADC31664A13753B9A7AAEF6C5BDB1DC6E1A2F6019366BC5E103A871B
+ 51D95507C711EF3F40FFEA2AE045BC8FA991220D11ECB188F19F05E04B989C18
+ AD2908A2F52FE2AF68684DC52B1BC25BF5D1AF3BC2519431102B414EB25BC01A
+ B47BF158F4943B214FF04591C41A67B1137DD3AB2B44956635CA12208DD61DB5
+ BBE87ACA3690D30FCD2BB15D5BB005381A39AEBCCB4E202DFE7CEB70B7A472D1
+ EF12998A41ADDDF1ACD254FCB1841C40E436455E7C7B26E289A5C16DF07913E7
+ 74531B2C07E537FF259B89A1093FE4FFA3A2427AF71021623CB1C2DDF0BA5B03
+ 8DB6329B06304112B548053B66EFF36B457743A9F402DEDD7FC13BB08C023B85
+ 8FA9144A0859367F9BD69D683F6D72FD18A343E7C3AC56E3833ACB440739E991
+ 9DF1E4633190B01487D9674F3A6BABD55FBD84E54757E51F7BF9F6DE3A58C228
+ 069EA8802612CC494FDC5FE87652CE1DA4E9E3FEBCE2A7175A96D3CFB150A3B4
+ 09492807E8083DAC61845F7EF20F4C0EFCDB42413C44500BE5D5D77046D33C01
+ 18B87819E7F31095B212B7AFF627942E1472A4AF186C532F6D171D1A42D99FC5
+ D9ED6B1ED44171D15ED5F9327C796110F02EA7F304B1EA4A101AA4AF7EB4F6F1
+ 2BD5AE60BC40909F6347432EE1682122B119EFA80FF6A6EDC3D93C38259F113A
+ 0E0426C7AC7EF54F82326695F971B16C7B3F65B2C652A599F4634E3994301C07
+ D168181720D0049996E3E09650DF8413F07F982CCAD50E70FC6DC4DF47BEF58D
+ 9FFAE1EF797224C170FF09D362E25624081FEE9A58A73E588482AB18D3BD3307
+ F8150E2F82FA7C18F2264C549E1BD4A9B698A400D4EA9305915BB1E040492506
+ 293940B66BDFC6001C0CA179E6C007736214539EE7EBB8188CDA5579D6C0D6FA
+ AAEF4A25DE5CFCAA575BF947476C757B75208749F215BB6BDE10F1F922EB3353
+ 4026547A649A9E79057E1424857CC6B4F2D50302978D6CFD417D430CDA75ED76
+ 5AB1042899D5FCEB871564074EB6FA77CCF0571B0B007EA92D9828698301B8E8
+ DB74DDB0E11CBC2D99B7FDBACCF93F5DDCC4E21B441E6B38B4C6821E03A996D4
+ A5C0C35F50901DD189DB8126013EBDE8C982CF5A51E18F53D08226E06D6E1D8B
+ 432F2573120FD5EA500752BDBF59D8EC8AEDA3A15632546413CAF6A55CE0CA06
+ AD6E22EBF8AF38E545855CB6A4E0DA06B5F43D77AC245367CFAF39E662DFF9F4
+ 040DF3B0BEECB618531E68F06A92E8C2BADFC0F1E26E751E3A64C7A37808C854
+ 720FCA1D37EAC5B499018DD84B76D948544F13793FA2C6DC2D9C8F6F1EC7F2D8
+ E3317052A5A32F0AEE68E9C05AD03627EC017D905BFE056D5DAF6F957A660B27
+ C5E80C1995C64E26FB458FE4A3125DC78816F8146EC3713E6F5C1BB50F1DC3E8
+ DA1E527216C12BFD25C2048D637C7894E1F654DBF9EA66E4F5D9B288B5750D8D
+ B82796D257E0D542B9D736B52FB10748016D22FEBB5177DECD2AFBC2421830F1
+ B9EA6C93ECD29D8327499356FFB4328786D3D5FBC1A348CCBF156B973CC9DD14
+ 72D911A61BF6AAE73C8B5A7CAD101BCDA163253582986F90D27AD01DC20F1696
+ 012AE28724E54C593697F3A408A512494A748C7436D510E8908CED7443DC49BE
+ 88968734B846E00773B5127B7187E8CA2D05E64D12DC7927B922A1C755DE0882
+ F66720EA17D41D21F06D703FE87276633BAF3DF042A8710FCD3BA6AFD5D208AE
+ 5E9A6DF26EA19B11D9B802D1405B46255178F42903C405F0B19D80CFAC7D08A5
+ 74361F62E4A0917D2786ACFD199A01FFC163F74385C9D296C54562EFD2073993
+ 7086E2EA1FE28D14C694894AFC2FDC2E3FD6E113FEFF0A3EB3646DA59E363D8A
+ 2702FEFF809B0CA5050557E293D98B5FFD0BB884C5D68C4E699EE83BD3F9C7B1
+ 23166086C9B19F39D8DDD684293F787BD02C0EC3A4E356470DF9307F853AC351
+ E3365D170827C94C0EAEDECDE9540D79FE70FA5EBB987290A537898AC8AA5A6F
+ CCD7A645E3F9135C0D7C2E83BE666F21FC5B776B72BAFA01CBFE24CD5D2959FD
+ 01BD8DDD93384A9BC5F94FA439DB5037A62BA88A953238567C31239E6D034BFC
+ E9DB554CC06DD7984CFC3ABC928547E5C6A13CAACC5FFC83028F27A6284363FE
+ 38605AD76B68D81E69EB80DB6A46BEE18595BDE9DA2BA89D0C47EEC2F876C760
+ 69D2F4EF1F7A7267C429AAE1503938075A0D49CEAF1F1872CD9CBBB0B85727D9
+ 8C7BC9BA48D34E9525F96D4AEBADD0B663EF067571015A55C604B9BB9051843B
+ DCCB4BA5DBBDAA41D65D57222FB1E9C872190D171696D4D284EEEED6EB8D1E1A
+ CECF57BFCE0522C5FF5C0CDEE9FD8F99F6F585B078D55C1175C8D2E1C249014D
+ 279EB11FDD3827E0520B9610C6347334D2FD7F6FF35D8ABAB952341F309AD123
+ 8BFC9CE1963049E63471AE93F6C65116350396D928987FE848A235B0E870C409
+ B804562A1CD24E934F542C6B41B55A005B5807C62A2F7EC4F6BDFD74E5FE2E52
+ 1BC27798B230381068C70788E3D3AD05474C092B7A69450D4E4C162DC3A26F5E
+ E53D1CCE7DACD8FEA11B0D319373B2D4EC87394CFB3402B7CBF3BDC80360BC55
+ 07905A4C36E216222620417B871AA9AF776084E39322B604A75CA3258091603B
+ 61D3830657FC6E22BC42E77E8D31AB941362EA0B7F5EEF19D6D5E9EDD660D7AC
+ ADDB8B36A09DA18EAAD85A6F8615EC7B7507D269C515943C80626DA10802E69E
+ E057C83F218BE25CB7FE835B7995583F7E6BC0222E92898F99765810A6181DF8
+ D91164FEEFC2C48293E270F3A9D35D20477C264E939BD9A9DBC17880EE327B47
+ D64AA97B55FDF72E7ABAE17705ACBF6990195750116FB410D9EF5479A7FA1C28
+ 6341B9AA67CD676738A0FF04D2B60647C69394A55237036EB9A9CCA8B9B6E277
+ 64AC348A7A1AAC746D874C63F709BD7CB1777BD0D169666C53A794B7C01D151D
+ D6BF4B95FDAB2AB81149FB70154E484EB8FD4BAA6A84AB6590BC6390275B142B
+ BD40A30A9F1183858623206E377D4E23088F6D2F24D6D2C0C7A139FF6C32AFFE
+ A5BD631F3DE351EBC7BE3647D3507E43CE230742D52627C94C639D741A907167
+ 98C350A67A2F4E12998868DC542F6F8AA2866219651D8DF25FD452A59C0D8E90
+ A0F158D1E7D45958D3EDB15413CF53C70E148BD710A99E96004678431CF72437
+ BD6F273792BF814773D0B03DD490206F44120180B89D9D4BD383AF984C650288
+ B767E45CD916A9F95E619A47E65B64B0251FC68ED233E0B8FB2BEDC38FD7C0EA
+ 84E2647CFCA65B98F1DEF8CB23C5D3537A498A6E518C9B3C3812AF28CFC7D0BE
+ 9F708C13DFBE90AD8CF6DADDCDCD05EA467367B0173C3FCE4A219562654DC15C
+ 5F698DC5FC60F2EDB9B466EFC5B760125F5313C07930951F6D0F31E69E37A5DA
+ 38F7552324A77394148BF1B1DBB75BC038DCEF8B176FDB5CEA1991520E8F9A8D
+ 45A71A89E5AEDF7224B20F8FE246C64BB5065893434B99EB332B7DB4EAF4987D
+ 0786EB023436BAE6A941F8F4E33C47808A9C499E652EE449378576E221BAB514
+ B6F1724B933273ED892DD6F5F96EE5742434A908495D4AB919ABC4B92258A985
+ 1E24492E24C15A26BA1516729A167F852BEDBDCDCAEC4813A8FD6DFB867F92C6
+ 98B0515AE798A5B8ECCC7A24913262E0B370FEB768FBE341361BF651BB07E1EF
+ 81B178027E2D3C3CEA8920C04B71BA4E4F427B248D158630B307151D726785F7
+ 2BF7153879EB743A5202AABE3CB7E9901AB371FF09458E00BC2F948CD48C3E9B
+ F35A6FBEFB86BE7039D678ED280858FBFFA714D438C5032BC22C958A6747CB55
+ E10854CA00ACC4AAB78D3E6C459E679B921F26944ADBB36971B381E3689B5C59
+ 10BBDA1D7B2EA0FC9596084CD8387E1B0FE2DDF1ADD43FED5C7663D17F942B4C
+ CD5F620717362769AAFCDF9D730869EC4623C8C69271C43B8549AA610A45725C
+ 754C95D7ECEB4A5ABDC6533C51196F3ED3C36A0E1F3E8F275C7767A679C3C7E4
+ BDCBD92102F009FB59E4BE5CBB49DA3F9FFDE16406E6270296BCE51E02C7D3DB
+ 97FDCA9A666D236BA8BD508BF6E4A0C18A5D099416B8656D1659DDAAC8C2B8FF
+ 01C56ED4D5E2F8D138626CA5A9CE5E353A0ABBB827D304E0C0684EACDCF11B32
+ FEB9CDAFD8B0934211DEA557B57AF55F32A5C72A9D5696D1318E6FE594D7E8D9
+ 35596FB74C9378D66F44DFCF04992A5AFA755EBFA70C9E1D3B8A080C77221671
+ 594640A26AC4B35FEAF2B58A7C2376B2E488E7C58245451A6E760D97A6182CAF
+ 2F532E6190E2AD8FAC73DB02804B57C2E6032B95B39E981A7CE7662C0C9C57C5
+ 14F6308CBA3BFC00971647A1B1013C7218DB80E5B689F7E6A1C6C3470666E13B
+ B63497BF29F1944998C5D82C3D42DF6E7BB0CB67D5BC2C7C1C595A8809304265
+ 416F28BC2D3590B4958D57B1AC5AB6BBB99049E9B554CC743D3B9EB62579960B
+ 1F1CAB711A10657ED23BCB4EFECF7151DF55730D7F4282A604FEE85CDCC5E11C
+ 6ECA2379413303FAB29C1DF4AD2D5D52638B62225DFA05DF834A309090F7F71C
+ 7D1A3905F314765E7FB53DDDC16A4881DA576510A3C83199A483FA5B7AF459A1
+ 8209DD4CB820D7ECBE15B96CB94C6D603DE05303341AF24CB822515CF87016BC
+ 7930AE44EE3C02E59D15C28677EC28679DCCD0F349CB4FA2441811F82FC4D685
+ 30ED653AA9384A7D8557F4C163F53E13BD97663FD9DC6766D0D3045261A45C52
+ 9251EAD2D9C188139B1EE99F7E4DDE59D54EBC0FBA00419E26C2D4AC493389FC
+ 38CD9DB288DA49EE9E1DD4E2143E78D5BEDA5073C302E5D693C4FD7FFCC3454D
+ E82DAFA41C482547AB4E5AF9584FBC594E528E096BE1029F95DD2D7E90B53ADF
+ 0ACBD234FD1C7E924FFF766842C89A11585CA881055B4C0C1B27CC14594E1501
+ ED9F75D4879213813684B41E4A1D013F267B666F61D56571FA494EEDA4ED4C4D
+ 508D055C7A23E86C5ABA52C4BBF434DD8C10496A91D57C9EDC3D0F0D8F5F56FF
+ EDDD0DEA8253F19C1DED6331EB4CA2D56C2827860B39F46249947E6911BC30E8
+ FE6B8BB0FEAC28AA5123F7B78C41368DCD7309E094E9A19384522C2D9929CD2C
+ E341DCB559654D091819CEF8DE5D0D5C9C0909E927B0905A5BEC4B788CF250AB
+ 5F9BB16F472F1322D8FC557F162B963B5DCEB5A642E20FB7899AEF35718BAC87
+ 8AA0C969006083AF44C0BCB8CFE1CFAF068FA1EC026703CA95D0D262A50FAD62
+ 0442B08348EB78FC74E98E4CACCBC211D7248397577A169FEFB86C31BEC96CCE
+ 48FFE70BFB0FF9FB2BBB87D909418BD6D34284FD57EC888DBE60A6047C0D3D95
+ D96A7306FF5FFC0C7FA5FCD202CD369C0EECCFAE3EEF485643F76C735574FB01
+ 25AB56AD868942A03305CC1340EEC8427B414A39D41916537C7C97DEA4C3E8C3
+ 35C7AC1723F7492BBB60EEF64E4D15C41F1DEC92599A0100BCE32AE387C88404
+ AA94AD3B2BB7AF531FEF52A2DCE6D3897955652DBA0CD52168761B57E9EE0525
+ BFC3E31C877DFB95222AE0757E4CAE5E6B55C39DF2B92DBCC528704C5A20F4C7
+ 9ED7084FB4C96117C71F45D99B73B9AEF0F75A23A725CE71CB91903ECC344B43
+ A032E6782FA0B119C5077642C1C2B2794390B4EAB83EF79D7B092754E473EF4E
+ 8359381947DA5307B96A0886E6FE7A23B0BF5038F213BD855003B876B8B54F3A
+ D6874ACE56B446E750ADC9130A3697D7C65F10AC62CA607E161147A8A792F55B
+ 1517DDA277C62B3A2350800C165143D26B6B541378E11C0DFBEE070214FA4AA7
+ CD9A72B691894BCEF6A19655C76CEE3AB3D235D4E00E8ADBC3BD0FD904F069BF
+ 26E10CF823CA39D98B6A30BA86177C3E63B503AFA5F230A749D8F80A88685335
+ 47F0C77850E6B105CDE63D8D9FC4906C0C32F518DA8D49D9318DC232D58D14B8
+ 6798B5FCF009CE75DCF6447DE1664A88C4DB129A97D008C2DAA2CE8FE10CB605
+ 4CF74CE964147DB3F70B61D9F87E812F4464700E3838FFFC1A9D93863FB2B84B
+ 04A461695C55D2EEC8BF49D615B9A7F40C21AFA9223CBD4FA55FD4344CD93BD0
+ 711818C90F2FC3987869BC771091BCD5478022C00F6BAA494E2AD2DAA1AA4FCD
+ DF2EA3B74F9667DC5F44B1F041CC595EB05E6A33D5E7C68F7A085700D78F7A5D
+ 4375D593567099AAAEB1D2B65B531E851570554174E9D9314FED126B82DAECE4
+ 481728D7271BAF7DAB81CF9BB4EA651B064782D2D06B0AC5AA88B6AB19D66FF7
+ E5CC77A5C424628DBC2FA1D17A63C1C11B13F198AA53107C6970289FBF4315E8
+ C4F872F7351773884790393C0236789C75561DA751CB65177BF5BC9630F445B0
+ 8F9D30ECFDF931830DACA2BD7B3C4072104FA004975930E18D974BB6ECD80474
+ A83BEBD25CD0AD5FB680400A97C42D1A8EB128A83BDE590E1F958066BD14C724
+ B9582E44A480A59F21B7FC7DBCD4F39AE59CD82B85301339D7350DD7F4A76E71
+ AC524E1155ABCC7DCB6AC59633470D443A9FEBD4AD9756B89D4D826207C46E00
+ A3051D44F5B1D3C8B5EA91E877CD50D2B23B0CFEA2599F3D12FF7E1E7B831689
+ 0CE94E08D477308AC190BFF21A565D8E6CC22E167A20E8CB864EC134607FE759
+ F3DCCEEA9092809F537A970FA1ECD61B372CAF1C1290405A32CE63483293018A
+ 7A05CBF784FB541B03F8551B9FBF8D26C4E1868079913C9EB1383E12EF2F47EA
+ 8F3B9761760B9DE0D7770A3B36D054CBC9829958DB0D31134C123D0335CFB81A
+ CB80DC51E29DB3C3EED132C341BA3F6282FA4EE54179E719F620420C31B51F4E
+ DA1EF53B2A6725217D11C820FE12FD3C4E07A15A1DF4CB3927A750EE224F3AFA
+ 2A9F22729DAF53FD0A1FDE0560F5BA7F31BDDBF07F28A7DC349BBC5CE2971C6C
+ 70533ACF6C5D7CEB36F24BB218255AFBDD95399F6DD5127E4F23DA14BCE6C012
+ 915DFBB7AB64F66C689964B813FFCC4CF31ECEEC92CDF94C868837CC49CF88EE
+ 073E9A5AA0A2439F3792844B3FB70AB039606B43746EBCD5F769EDAFC52860D7
+ 1E1A9D3A953A0CB22D3DE0750424417C88F2572259204695EBE92A7D66B7A0F5
+ DC7855A643E0B403481AFA58FDB8B4ECBE48CD65BC4577A81707165E472644B9
+ 20F734B201FCB8FFC0EC354B45AAF598FCAF773B8184076AD67680FBB4B9B04B
+ 73D3902C9B5BF28E01A553798093E81B80984FBA33C7CCD043A54674BAFC3F18
+ A33B28CA6BC95CC4785DEFA83ABB52D0B08EC049093A6F8DB456B7A72DF77D4A
+ 0D591320EC77B550EA03DC00100F32743E219DF6B8531EDE34C8E7B91046E5F1
+ BAA02B13E2A8F0971DC509667F9966B4E72CFCE0AC8E895784D6EF01DF4F5A19
+ F0FC7DDD10E5455CBBC0C95941BDF8C4F87BA7B31B8A5A313C27B0454F5A0C37
+ A43DAE107E48C06DE6D2E9543EB6DB429CCD94F151CF0AC6090D528B3D2F5474
+ D5BA6AE54B8645AD0321F438B9CE1F097A5769AC5E53CA51F41011E2FF86F19A
+ 63B0783E7CB337033751588E3E9B04B3E023C87BB8CF44E40537AB4CB5588A32
+ 206A81962484EBFAB4488B74F0B9766998A15952D50EC42E47DBFEB2FB8BD66F
+ F48ABA9CF60B922AC7EA914AE3AC323BE968793F235BE4DB2972A46C0F79516D
+ EBC822D6FF6853893A9528923845F5AAEE502C18AA508EFA7763429DD3A2DD36
+ 976A71913A3A09226FC6FD8A9A791D429A85CE145228896DA9479D7610EEF223
+ 022D8652BFC29F32E8B91695A80D583D42E8454A433CF09873229FAA2848AE7A
+ C3DF37E5725B46724FA7FA0CA22789FB634A14DBDEE863640107BF4F444FA102
+ 5E36A5F5C0D772139946F741388558DB489B1E5A66CB81EB30D1EE1E2B029988
+ AF06337142269A543DC041301AECD0C270462CE165C8C6C56AF013CF1AE09FDA
+ A4DA6D848FE4474DDB7E18B932D8684317CCCFB85C4D2B865D3A2ACB54B38001
+ 4370692497945B16B24F8EA563C993AD9847698E760A2B4BF174B3B8DFB1C53C
+ BBDE3B4BECB1566E0310705564931509800B4C949499E5EE7E12DC74E4B9F5F5
+ 01F8DA8826E3B9782C185D489FE82B3D0133FF021C4ABDFE4BBB453837B071A9
+ 5F984643B35313694ECEE0249AAF6953F72A1CCCCE3F083A7995DE0F42F8EA8F
+ 4B71619EC7EBD13A37FDD8D0025F05E78B4C02FA6C4B8F76E94C98E3F48A819F
+ 676F3E55679D864FA8B9EC35406F3A2244FEF0F8FF9C520F878BBA9EEA158AD1
+ 306A7C63A7DB5F7CCDCD4F8A526C57DF8B344E66B22DBED5C806A03930996CA2
+ 094229931BABDECDCA668DBA18824BE1C9F977E4FF19CE76AF63AD99A669F767
+ C901B08A7F58CF49EB23569A5AC5C8026E5A2ABC9DA6F07B810AAEC6AFD151C4
+ FBE886DE2A4F27FDB600B3C1F4DA159672BA20AC1E60CBE87201498855B77253
+ F52097AAD5A996FEE66DAF034A0FEB193A3F76750A8D730F2516CFA9149465FE
+ 90B4E6606D3BBC844905F0C9E2183F7BBCCC77BCCDF4C2EE8C769FF8E28EAAB1
+ 2081AC2C3DF373250761F26EAA607785A3D04BCAC5CFE9D4244E924673B66876
+ 98D46E085D0FFE4686948FAA4D85604623BEFA1BCBB516FF9C99B31D1D3D8BCA
+ E57A693945958D91EAA516A3EF33C28F85898FFA7E37C42205CA404FE9920876
+ 4D2FCA0002F3DD3C605D7F75DB8ADFAE88FECCEABB4A45E8F20ABCA3B369A49F
+ 44992669034B338269D6BF9B25AB2AD1C030FBD3BFBEE45F707BD94BC112AF57
+ 8F195D68AD9CB780FEE73CC7113ADD481BC2DC4058321B38F42504F6CA857535
+ E4480E65DA7EC7E5CB6065A7FCBD00AA46F1A7FCC80FD5BE3B5805449C9018A7
+ 516BED3B6DF3A97D956D2BBBD6D92BEEB995CBC103253E49D4D021BCC0969DA7
+ BD02F5D1A1C000F1445F866D746827CBCA89D353C02B792C9117EF116DFF3FE7
+ 7E3112265967F57687FB15F96EE034EF1606FDB20A7982D4319011120F799A10
+ FB642D065283514342299E2658F9C8CC6E8A18D1F44325D57FC06458CA08210F
+ D74AD90A0A5E6F70B51979E56D7A6D32B89866137022F2D4F4300826D4A45FE5
+ 251AF0E65B27344CFD5E02CBBBE7CC1D3E7A07D5E6CE1F572A637D282DDBD74D
+ 86127A5EE8319C56596C377CE1158A1C7A5890E83B157E22E215D2AE9DAE2D67
+ 76DEEE732FE32CDF9A79B4A947E0B28C47FE6797576FBB2CB40AB6982D623E3E
+ DD3E8F469F9013207059F3929816F64BD146FC0A6F9E8277BFD27836CBF3F4B4
+ 3C94FAD10191462597CD247920B5C97A5404BFAD084C89BF3171C66113C205ED
+ 16A0EC500BACF2ED8A7F3CEF8BB49069C4E77A11130553B2D50D11066E23560D
+ 772C7A86FCAC9CB30E82A68D3286657EA71536FA9787F9A07E0C90498C70C8D1
+ 75DF2AAAC7E561068D805CD04EFBC39C8D3A08041652EAA067B6E3B6D0D7C369
+ 9AF45FA2B20F51A707D476445593C58C5522F015E659FAF43813A949909D24CD
+ E001C2CCE1F06F62C03DC667E6F098EF5139B3AA6CA477255CDE1D5DEED6E58A
+ 35CC7E2589E783763ACCAF6B145CCC29326ABF0436E62CD19D2C18DB64754858
+ ABF0CC11E1F7EA745AA45E55BB54A42CD925FE93B5A2D40D4F01E7A0C06C8878
+ 60045CC8392153B9A6AB0B6A8D7941D14498E79FDAB832CBFFB813C53D128A68
+ 1A9C64EB561188047D6EBB59A3BF690C4CC129E22D91AD98650B48ADAE33D599
+ D08FEB0A5E275FC7639F534048DC37596B250BA339BAFD8203AAC048BD975DA1
+ CC2797C1FE72838802EDADD665ABA5043FEA83C9D03793B33820997608C4F769
+ FFFB22EDFD937D2A27E50465D35B67C23BA2CF079D0310D6641B0CB6E89532FB
+ 76D10C0A653FD1F27DD43B594BCAA8CC06B89158524AB4BC89D14F4E67721342
+ 7749630650E9E31417618B3E540B1F35B7C7082FE8C81FE0424A47A3A2F85367
+ 3695D9EC70433434D162448D8FB0E8DE659685C45EF2ED7A32D09FF645E95AFC
+ A1B845007E0BA25D530F2D0BD6D4F15D083CC7920F5B9757D7CB410F7FBAC897
+ 6180642BD90E0A8661B9C48E0390244EC66D09945BFB93E96FA0C49F0C44B173
+ 0DA91CA8013F98DAFDA3A9EB0E7A19F82ADE56197A8B80B719A6A62FAB3F9110
+ 9B0C006871BA211774E956CA3BDAA41FF8F4D0B6D7AEDAF6CE0124CEF517F3E1
+ 8776FE1F69978E131B0DE29F67DE70AB16E86FFBEBE7A0EC821AC72D65D827A6
+ A97E18E3C892E1B9EC5F3B86CA0BAA95CC2803D7F41D331A2219E57C8BDBAD5C
+ 0BC49704A5341F2F646D3A82F426DD58DAED13AB67CB44C0E4B2F677D4685FEF
+ 9E5C5E7E6AE9E54840F9694B3815A7FB246890B58222AEF1FEBCF7C7551DAB05
+ 78A3FBDFC18712E5D90D32E49509BA5DE61B8CEA8EA3B4E5487DC23C38033E39
+ DEF12941B786893C6DEF33ABDD18BA02B39888A947C0906607D801C1F43623FB
+ 7368B960678F9D9919C50FFA2F6F6A64806068711A6313390BE9B82382CDB59B
+ C11621B833C01367CF925C3325D9B0232DA4BAC8B0918DB9042D03C007FA1D73
+ B18C31DB125ED7ABB630D352FBAAE200A8CBC829C03881490684B450146338D9
+ 2B3FD71B027B5048567E162AB9113A5963E9680251E17D6283BA33763DEFAA34
+ 546298888A8A082393E86432EEF17607D5605C9874B78B89A5FEFC41D7BEF228
+ 6C192E84CF6FF7BC76C804808AC5FF308588504412B715DCCED6CB022BEE5F43
+ 5C778B724550D1A138CACEDC4C1260DC24F3F91B6DA51D009B4229ADB2FE5C6B
+ 57B7114C3DB60E911BBB9CAD6D9C7428AB1D64454D680C57AF3A2D565F98BC5C
+ 90DCC3C9A85A9B3A734EA1956D5C57DD121D5FC7E062CFD28D2A2C1E7E2B5FE2
+ D848A20C77B939A09E632F683D8BD8C111A19884602588E2DF1C9D3F3CFBDB64
+ 8C56F576E9743C15EB08D954457E6C7994609F07E6CE6F31CDA417215D0ED6C9
+ E27EE6A3448419EB134CF06297756F53ED7FDA949BAEC6D73723D697115D3C41
+ 6FA19EB13257B994BD52DF56660A1963EFF843C654DCD3400D07B28333839958
+ 753F5F4D3735AE589E222D0C72C7C90FCC8C32B9D723D4E0FFB75F1F40538E08
+ 68ADF4B8E982B07C8CA53B20F3154491620F2E89FFC35FD513B82432FF5DFCF8
+ 6A554BE19544BA542C86121293C2DDDDF11C48C5ED2CDBA89F8A22EFA5C44BF1
+ 8E6749C6FCE0743699111AFD188EECFA4E683976C209C2A2D4DCD26E7DCCEA48
+ B73B7CD1699BD4605FDAED7A000E03D9C252CDD09758ADE41CA92B4F7F580003
+ 8CECE2B2FAA5C8F0B89F4EA5A5546A6917B138B2149D1BDA018A1FC95C439EE9
+ 57DDE0E5829A2E729DBCEBA64D04A6F7258286D10F40AE7A3ABE730CDB45EEAF
+ D2A1743723007D9EFAAEB5DAEA3CC4DC6043A1971701112013870A40
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ cleartomark
+ %%EndFont 
+ %%BeginFont: CMR7
+ %!PS-AdobeFont-1.1: CMR7 1.0
+ %%CreationDate: 1991 Aug 20 16:39:21
+ % Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+ 11 dict begin
+ /FontInfo 7 dict dup begin
+ /version (1.0) readonly def
+ /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+ /FullName (CMR7) readonly def
+ /FamilyName (Computer Modern) readonly def
+ /Weight (Medium) readonly def
+ /ItalicAngle 0 def
+ /isFixedPitch false def
+ end readonly def
+ /FontName /CMR7 def
+ /PaintType 0 def
+ /FontType 1 def
+ /FontMatrix [0.001 0 0 0.001 0 0] readonly def
+ /Encoding 256 array
+ 0 1 255 {1 index exch /.notdef put} for
+ dup 49 /one put
+ readonly def
+ /FontBBox{-27 -250 1122 750}readonly def
+ /UniqueID 5000790 def
+ currentdict end
+ currentfile eexec
+ D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+ 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+ 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+ D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+ 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+ 2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D
+ E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8
+ 47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C
+ 8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4
+ 78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486
+ 1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E
+ 01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B
+ C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0
+ F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30
+ 8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF
+ A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7
+ 455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2
+ 9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105
+ EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B
+ 52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97
+ 563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F
+ 0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB
+ 7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1
+ 0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4
+ 1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A4DE3E3F6222F
+ 7A252B780C86447859579C68E52691E144F836C1C62F19A12EFB710343D33262
+ 1F7955FE5C37074CE5F9C7ABF1A241078519A4D7913A0AD861E0E357B50FB730
+ E757C0D26390E6028FAC61EB0E9414716AC8406A6E35DC70A7C1AA524804FC8E
+ 985CC3604A2BE0A8235CC895B2B33CB7EE85FE4F2CD817BAC3D27ADD295D0A0E
+ BC0E8D849952BCA7325DC261A785CD2305BC377AC61AC5E5B2CD3164CFF033CB
+ 5436B8000673A4D763ED26273130702447C75A774C7799FB8C3E54A2E34D1710
+ CF7883A9B05285C7DF30F314455A4428A5369D92C0348D45BF4AEC5E16611D16
+ 1E5EF015900F4DF63A58DC233BEE88417B204DBD110AACD1DE3D750F9C
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ cleartomark
+ %%EndFont 
+ %%BeginFont: CMR10
+ %!PS-AdobeFont-1.1: CMR10 1.00B
+ %%CreationDate: 1992 Feb 19 19:54:52
+ % Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+ 11 dict begin
+ /FontInfo 7 dict dup begin
+ /version (1.00B) readonly def
+ /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+ /FullName (CMR10) readonly def
+ /FamilyName (Computer Modern) readonly def
+ /Weight (Medium) readonly def
+ /ItalicAngle 0 def
+ /isFixedPitch false def
+ end readonly def
+ /FontName /CMR10 def
+ /PaintType 0 def
+ /FontType 1 def
+ /FontMatrix [0.001 0 0 0.001 0 0] readonly def
+ /Encoding 256 array
+ 0 1 255 {1 index exch /.notdef put} for
+ dup 11 /ff put
+ dup 12 /fi put
+ dup 13 /fl put
+ dup 14 /ffi put
+ dup 15 /ffl put
+ dup 33 /exclam put
+ dup 34 /quotedblright put
+ dup 37 /percent put
+ dup 39 /quoteright put
+ dup 40 /parenleft put
+ dup 41 /parenright put
+ dup 43 /plus put
+ dup 44 /comma put
+ dup 45 /hyphen put
+ dup 46 /period put
+ dup 47 /slash put
+ dup 48 /zero put
+ dup 49 /one put
+ dup 50 /two put
+ dup 51 /three put
+ dup 52 /four put
+ dup 53 /five put
+ dup 54 /six put
+ dup 55 /seven put
+ dup 56 /eight put
+ dup 57 /nine put
+ dup 58 /colon put
+ dup 59 /semicolon put
+ dup 65 /A put
+ dup 66 /B put
+ dup 67 /C put
+ dup 68 /D put
+ dup 69 /E put
+ dup 70 /F put
+ dup 71 /G put
+ dup 72 /H put
+ dup 73 /I put
+ dup 74 /J put
+ dup 75 /K put
+ dup 76 /L put
+ dup 77 /M put
+ dup 78 /N put
+ dup 79 /O put
+ dup 80 /P put
+ dup 82 /R put
+ dup 83 /S put
+ dup 84 /T put
+ dup 85 /U put
+ dup 86 /V put
+ dup 87 /W put
+ dup 88 /X put
+ dup 89 /Y put
+ dup 91 /bracketleft put
+ dup 92 /quotedblleft put
+ dup 93 /bracketright put
+ dup 97 /a put
+ dup 98 /b put
+ dup 99 /c put
+ dup 100 /d put
+ dup 101 /e put
+ dup 102 /f put
+ dup 103 /g put
+ dup 104 /h put
+ dup 105 /i put
+ dup 106 /j put
+ dup 107 /k put
+ dup 108 /l put
+ dup 109 /m put
+ dup 110 /n put
+ dup 111 /o put
+ dup 112 /p put
+ dup 113 /q put
+ dup 114 /r put
+ dup 115 /s put
+ dup 116 /t put
+ dup 117 /u put
+ dup 118 /v put
+ dup 119 /w put
+ dup 120 /x put
+ dup 121 /y put
+ dup 122 /z put
+ dup 123 /endash put
+ dup 124 /emdash put
+ readonly def
+ /FontBBox{-251 -250 1009 969}readonly def
+ /UniqueID 5000793 def
+ currentdict end
+ currentfile eexec
+ D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+ 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+ 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+ D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+ 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+ 2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
+ 87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
+ D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
+ 92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C
+ 295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75
+ 409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C
+ 4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF
+ 2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E
+ 0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E
+ B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008
+ 24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B
+ 43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF
+ D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575
+ 5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC
+ 96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3
+ 7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65
+ 0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830
+ B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D
+ AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007
+ 97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8
+ FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5
+ 20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4
+ 0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD
+ F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20
+ 3E6BB526D2D21FBD6D78E21A936F2E123C0F6EF41AA2266CF51B513EBF49D4D9
+ 2C0C93820A37010A4C8990B3D2551EEBA36E8B8DC122B1432A6BA9A8A674CA2D
+ 5F3DE1AEC33589A13F6DBEAFAF69B753BC0DA94017AD3D1CE981FF38A306FE6B
+ A6A35630A7D636C1FCDB936F6BF9366ECA151A7994261C5753A081645F671114
+ B5E2F6BC08A8D70AEE71C81471EEAD30DCACA08D817FD44D968C90C13CD61C96
+ 450AFFCD62A4DC0AA440A045DFCAAE74590B3DD20E53BB454DB1D1CE0BC5EFDB
+ ACD8357B38D57AD256B2271C04919BC6A7394F2AA1D1820898E726AF96F1A4AA
+ EB28A369B460831836F084B0D4AFD3627F1F2E08EB4C6265BED1C8B6E64651B2
+ 51F5E30028E43296A0548F6683C9241AA96C01F7B4AB203DB761FDC536FDBCEC
+ B22FF5B063D808ECADAF3969E4697995ABABB9715C492B201BF5146D61066780
+ E278AB7CFA6BDC04E55F2C0C1F2D4C0276E0FFCD0390BB31920407207AC57329
+ 1E6E5688C00BEB6C5031C3E0E116A9C711264EBAFE4EFBB816CE9EA5EA827C5A
+ D3F494E59E191D6487269BA5FDB468183A6E36EC7D65E4DBB5057CF7905EB895
+ B4DE2057FC3CFDE594B3380636F06F3DF2CFA6BBBDC532662182AF7ACBE0F0F8
+ 390F9CC2E0FBC9B4B14A0C43F5BB9FA2C36526B2411B2B72CF35172FF0B34356
+ 5C3562650981BAC226DD6717DFD085ABA50F15A90799E504AB1FC884EB6821FC
+ 9B0C4B544DC8903FF5638F997634BDABD143243DFB99F27531A69A81AFD42AB5
+ D593322776B5B833FA120AE7ABB10B487F2229188E47CE7B759C3AA50145E77F
+ 2781A198474EB339A41EACF775CF1D01A7BEA5B305B1BCA2F50BDF02A80AB5B4
+ 75E59F5128ABDD155D7665926A0C035776151C99558A3481CF70EB9B4815257E
+ 00033A4C3160597E57DBCAFDFCD20C763ADA82B45677B81E40853399E33350DC
+ F60CD324D23BC813AADF797F6356643CD391BA5E7D0087417C148FC1D8932178
+ 4CF922F0C3E220C76A1AADA03AD75C807E736FC6CB0A287BC76BCE4B28EAD0C8
+ 3459ED6ED2861A112AD0C33F8D0B29F48A06675EFA3052DFAC06AE408F93478F
+ 6E480DCD7D967909FAE2B8B3497B84B5A71DD8B1D990546F5236CD04734CD8A6
+ AB9A0DB67B0F3DD5A0D280ED60F51A1B4A3BAB0766BE79A490A466A8F06759A1
+ C61265C33E7D9402419FC8772045317508BA1C185967E666F6C08929F13160B8
+ 6251646C72C2CA97BEF4ABF1EE2C8158265F7579AEF49A3D4F2381DB96115BC1
+ 104A957DAD1B45D37BA2D6B0BFA5981CDC11FF8C3458978131E47F691F9E8A33
+ 67585E7C86D7C69616B5AB5AA96647E2215DD373B92D7232BE2FC3843093B06D
+ 0B80CED64AD6F37B002D720A8E6A49F3385837A4BBD055A4CF0589310301A691
+ 1651104AF42DF64FB16F76AB240AB3A935DA1DAC8F64348DC29B2CB6E71199BC
+ 3930E4348C9F38DDA0C5E5A2EF04DEDC1E3E5836349546C297C3DC2CABE59E66
+ B05A356572149DD2BC4606E23859DEE5B22D6B6BB85AED82C40B57D1DD10BEB9
+ C075956210263DBBC8AE1D49305A42E02BE44FD203C10D598937DE19421B5BD1
+ D8D3DFD033FC93F0ADE94EA7417B731B52A5B5F387E70E301815E661AF2D67BA
+ 476E122EC365EBF2535D86C4D6ABEE6720398F12148F21A4C22989BDBA56FF7B
+ 091DA03DAC74E1B00BF93D495869C1005BE22199862AE839665CECBD75DA7F70
+ 7E6FFB543CD5A5AB94E8F5D68A231E4E04B6B3D34ACA7828E94393CA96E53F09
+ 0E6FB890C5704B27714C5EA51504FFEC53E1115A681407AA7D0981DF1C27892A
+ 27F9A60917FFB6465191D0747B8365E34D25ABC5ECEE1B7BB9984C32F93EF321
+ 101F4AF800580867324F63C1DFE31E8598C581F8F17C1601FD95EBF8424A267B
+ BEB1371DC9553885E5EECA7D56A3A25F3CCACFE5C7F2E7B8847B558CF4A0888A
+ 13EFE7934EF8D6AE2F4CB18CEE9FBBFADCF7C25DC4D4DDAC02CC6C21090E9445
+ A68C93C2AC9A159CA0A04E403842966C599AAFE687F581EEA73FC535208C66B7
+ C90A654C4E7192B7C52EA77B6CC1ABD212DE914D5E458E9EF8BF8703F814C4B5
+ 249797FB13B3580C6A3F43A42C49B46BC966F89EDB4CFAAE0D9B949F79319273
+ B2B695A166656DDBD369D19F2E45DF74DBD0676BFCE72F7BB4756CDAFD85B715
+ 518C00A8E856056937B08575C11D57F1DBC84358029FDCDD4A58388263BB2CAD
+ ABD18CEB1CD62A3BCB6897C5557C1AAF32907D11A39EB49D0FAA27701A7128F6
+ 4D6D423A47C6001A5C5D61F991BF0DBB7B23DDE1C5A34559D403CAC03AFAE07A
+ 1FBC9FAAE43A8D2D9049FB3952F24FF14EE429D82411EE8BF92900AEFE1EB768
+ 7F4112EE8B231130A5F856EB709797437563A025216B2E122B07478B4A061856
+ D7DCCA179FC726C93C7C1F0AFBAE973A0A967598FE879B2CA5AD72B8D43D8494
+ DC47DDF8799050B239F9486DCB4301B70B4EED3452B65D4BC5E6816494476372
+ 053F36E43CE42D3BD9BD6D45857FF5FA73BF80ADBDA7C4A0A6BCE487A0EE2B22
+ C332734355B6E3E1A2E0C1398FC1FD42EB286B776E56046E05FEE0947AFD7435
+ F95D62A36F77780E87660D25BDB53808120CA2C4005604C19AD64A5CEF539DBF
+ 95C3D7678FC856868EB19A5F36CA9CF4E3C2559718AF759B92BEBB6AD09A9E57
+ 6F69C6C0FED43371EDD104609F6EE015673643CD0D98E5E11D0533AC0182BC56
+ BEBAE5240DF864025BD38F47C606C47A9E74A1C6A172020A5A094B3D9DB9031E
+ FA72188AE3547776B94AC931757BBA319B28755EE881A6DE1274C3ED91483065
+ 13A8962931EAD5C4BB279CC873882D6A90E31884B12291D398E3660E729A9136
+ FC64787EEC40F66B1DD8682F5E9800B0085F0E91EE33F3225725154A131D4850
+ 582C6D45DA3A7E448219164837EDE32863C42FC1A1EDB60674C2BA57D375BB79
+ E8B784E87CD3C06811D2F2C6824D665A0191FE6E449B891E7A794C5F6859DBFE
+ 0D854DBA1876127B4D8E28DA078EE3A78C41F1604243AB26A9388B51F74BCD67
+ C1B4FFC86B45A952AD6485FCD5E967BD9C3A1FCA1A304AEA6D47FF610D98B797
+ 0ED038EB21C8B478710A1897E87BBC7E927A9A277226FFD5136820C7DB421FD6
+ 7CAC37FD0856C2A24ADB8B4F1D35DE604E8FC1D471E5FDF6B1F2C515CF553FDA
+ 905775E025A7E55B7AF878FD80496536A0F96BC263EC0941163B5AFA6D49BB5F
+ 5056710260009E515D0B86F6FC1A435764B15C4287BC271EF67DA0555BB40C77
+ C759F608877B47F2DCB495ADF92194D3412CA2711A5116341C7628744B568057
+ 79CDBBA4715965CA565F14B65E4CFA5DE4D78E4C2EA82A7FBB92A0826E8397D2
+ D937A40A1086179C5E51F1C3D8F74E31BF150766E94B6D4805C2BC8736418E22
+ E0DCB1F27D0A07DA7D803BACF644DA090391D1F8841CE332613DFF12ACC0990E
+ 2B9E348E7EBCEE1ABD547CD8DFB5002635A61D996149BD4C46162554442C15E5
+ 05A258E6D3DB86CAFE596D352585D8250FC82EDBD4C0B935B8154533A9FEEEA2
+ 142AE9D6BCD1F9062BA4D4B37E48722EE9CF26770DFE0EE6920D3D69D343B999
+ 1C309B8FE4C3A47527B63B063AB4B7FCE126E411FF93FF0B0E7F16A7BD0844D9
+ DE3D2CFBCB5A813D70930141FAAF92BF0E491E5F9EA8F53D551B459B63003643
+ 9635CC89EEE6A16BF5077C511A0F04BCBC71E0038159F468D30BA32DA8A22A70
+ CC0073DAB7ABF37A6EA3FCDAC03318AB6C51B9CF93741546FC5D54868F6FDC16
+ 17B8B663E951F4CD05B84B2B1DECB6F3B5E326B7E7F1CF6A398E4CFD6CB11972
+ C6196C5D537EB2C988B3D155BF51428802096EF94FC13041B772CF979D8E8524
+ 5EA6EED5066D87CB3C46E43158E53515B72F589C8DD58E18928801795C548EF0
+ 616B10DE86CB73D52B1F4889CF21C3E7D4F1E5045A365E589FFF748FA3252F05
+ 15C832BB3F3B6F03C9A68220DC58CE763FEC1B3F079E56631FD8F1DB5F78F156
+ 03F74C2993B7F6F62734B4041A443A600669A9D95A85C62CC326200B19BE827A
+ E35AE8A9E6CEE39985916B4D067149532644989DBAC1DCCAEE8A8E2851CE4D65
+ D691CC36DAF19AA2CCEEAF2106B364C2BA2F8779754C53CA1E5FC012CFB2C8AD
+ 8B32B6B325CD230FABB8D64880C497EBB9AA88496AC279CF1D4E4C5E28BB5E8C
+ 7172B3FC73B36FF12CEFA4592FB547C5E01B18FAC5B68BC97D44E7356ECBB90B
+ 6F716820EFA3B01F6981B99F7BC5C528B24454A8FD87BFDF8C4B8C43124B8B23
+ D80D6CA83FA5470293FC41B2AF9CBAC264BE24ABD2D6EFECE1549FE8D01152E7
+ BAE3785B0E551AB1A0CF3D7E1F98A2D495907DE5EEC5179F9BB0D4881B205FFB
+ CACE3B222406121DE1C28198CB7DD7EBAE4F3362223FCD8BBF72D03806A70A63
+ 90BC0F5EE165A387F0F025F39DF8A4A3BA251F4C04AEEAEA2957FB7E37D68901
+ 54DB11BD55DBDE12C1D5BBE24883AFDA53CC27C119737C2BAF616ACB077EB22E
+ E021E27FB6C41602567A512280F2FACFA796A57297059AA502B97644B4C82740
+ 7BE846AECB095122E18F8C61EBC215E276F70DBC5DB6BB1905EA631AE5E1ABCD
+ BDA6C2E2754B0DBECB9D87F262FF8B0B2C39646E928AA1E2D2DCEEDC3C53E02F
+ 515E79D153C1BBD694F88103B7304B579F63967B1B8D7981544DA535F6E49452
+ FDC2280C9A10C776D9E708521ED2011610E6EC5A1EB8751281FFA0DE96B0C4CD
+ 303DE58FDD68A69FB030D83FD89F824449E0EB3F16BC83B1F6956318AACF13BB
+ DD4FEF81E41ABD76316AD3CFEA25DD1432AD0B15D8A3A63D901F2A51207311D8
+ 701FD5991B67CD4DB27CD4FD9B51B44F9B19C82C6F412344708293A0C2E6E83A
+ 5726E39657A8779669D8ED66781ABDD0991EFD349701FA4478DF5ED3BDAE5AA2
+ 86D3B726474AC1ADF57872721292996C67330CC44CB86DDCBA4E2AC5D6DC7E7B
+ F9294E45C025438493E7752E8C39D5A957F8A2DE51F8B22E004D1048A7395F0D
+ CD51D429DBFC2D8F25D428A66412E42FE1462753A13958C11943D37E31B1CD5A
+ 5713B3C443548F06B15FDDC4FAD7F5E67EDE5F36F5C62AB7826B22C69C164C36
+ 9C4CE06F2D3F3387AE037D7F7560B80B867AD890C75AC5FBCD96A0BDBAF679DD
+ 6A7853E812F00E9B7E048649C74E5E3BE35B72E27B105991C0EFBDD763828D69
+ DC9517B65C95263FB4A338E2CEE96CA3F2CEAE25E7934F30D81C878594983C94
+ 5DA7B05D415D31C2C402600CA042B494565EEE044572DED3652E1ED086FED215
+ 8B64F20C55767371E31DDF404AFB9134FF99B204992D21F64231A3EEBFEA47CA
+ D03A49EE6FB0AECDA6862AEC3733A5D52548CC35AEAFBD015CC3904127F99D12
+ 0F33426C5D39310EF1B50AFFD59626B4FEBBC5F97D7353603DF5734C6B3A6D94
+ 6949D975285EA62C6AD092B779935F90EB4B819A2B37E5F2F0723BDB16D32BCA
+ 8B139950AA6902265FC2CD4BCED0DF92132CD411BFBC67A71D2F2A0B1A497DD6
+ 8C64158C09FE8FC576C84F6FEF4E46BAA58992F642994B658F2282276ACC0C90
+ A7ADB68A108E4C11E9505CACC05B455407005D59BBD32A63784469008CDED716
+ 5FD04CEF36477F811CEDEFB4F1B2F73C5D835E61196A171CE1BE97E62FC61F3B
+ C9D3877C2F52B8C7D1D8CEEF71717FCF117324683D4A3E4EF250E7755F5270B7
+ 39B9255D860AF48403F8F537869C6E95CEF7272BFBC124757845A5E9F038BE9C
+ A21063949293367225813D94BA40C8A4CE88F1A523821B2DAFE648B68E8D5DC3
+ 75585A0406B2ED6DB07C108F79D29C040A3572FC717806EB2C75B1614D382607
+ F0808B7DF455A6FF3C57441814A54D3ED751068956B9FC43FC34D1DC2920F772
+ A9A4FEBBD8558D4BDB39ED7E5264ABCEF6D130D1267B453C6E67ECD58F38D9F7
+ D25A6A5A78F67505C63CBAD79E2A3C87E463FFFDA2C2B032B32BF99AC3297B48
+ 20E53131D71D6CF5DC3E8BD147DB417E1F341D6C31A6AED3EF7D8EBC21A6CE90
+ 2589119C0A10E5FD6A59404620D4F023A48AC80D6A1489D937DED8661561120E
+ 15FA0A6BFE9E6FC7CA71EDC99E23B25920FF0D56BC230F1CD32361FCC3C81ED1
+ 589E9CAE7A4AC51C409B175B81AC706350A4965693A9CEEA8564199139182465
+ 63A35C396C9C75300C010A087A0FF2938381ED55334312F171CBDEFA76AE999A
+ 01A93F5DB8E77EECC6454ADC7AF4B0EF318B34B09AED03410662350AF5A17DDB
+ F9697DA0CB514150128DFE262B909150C06BDCEE4456912764D5F424A5BFF707
+ 5835986EFE16091A1B49E721512F34EF5323130E340AD4D6B5EAAACBDDB2EFF5
+ 4394DF0BBA03D1125AAD4D834B7F6103887C3F49D63C5D62C049030C7852B4FA
+ 37A7FD6E00F33C276DB56385214CAC2686561C47C79A011A3CDDAE73296D067C
+ E8BF547B6F9C659207CC42D32CADAC1AD0F3828DB953B4F511B45D772C344EC3
+ D3E2E7C3CC62B56AAE1A90327F6DDA296B50CE3D9C656DB4381EC7C562B20987
+ 845F844D25DC10FF56BCB4D32333591DB4E83B6B4AE94FD3C4F4162C67684F88
+ 5240FB5ED7C0980C70F67BF738695A53A8723BDB32A60BEF9BC8973289A970CF
+ B87CE526F5D2F1707C1E5ADD42B39D8C68DE487AC3F2AEFC3B87EDE28FC7FF08
+ E2B048A7E3E24CCA6E59B2EFE0BFA3F725303C5623C0005CD9F19EC098FB3663
+ 9D67EC53E6E764B38B40D703150EFF861C28B59298FC489A8E76A6AD7AAEC5E3
+ E567A4E2D4688F78A73B00502117615FA015174B9CE29E9FDB68B2AC2DBE9EDC
+ 490ED2EAE98C0099097C68C971915688CA56CCD60C8C4559430E8303656E41C7
+ 735377D05F2A23D28372B8CFEAF621A251A6E94223508AD875249546548FF4C0
+ 268E5B2F5D33DD13BA646BDDA9F54D7703AE81B74F61613EABFC6659CD39E8B2
+ A5B5783AA2721BA90B2C102E0FD38CF02B4C9D7AA5513BD6BF888EECED0E1A9E
+ EE645B68F230F1C7862A56B93762723D89AB3F1F7453259A9C14586FE3E65BD7
+ 18FC9DE80A66A0C30F494AC507C15661EFC1F290423E850D60BE878D11F6C51B
+ 371540B1C18A7C227E9DB56F3260E2A30DB4A707739FFB5F425A79B5BAF72DAC
+ E5276887E66371FE6E4BED8FF5C280AB40AFDA599F46C06D27AC0AAC6174260E
+ 26F650C037F5CBAE2FAC0102655293A94EC3FC9565299EEAF49021DFFBCF5E6D
+ F9E700771DB02386F70BF2058E3AB11D0A9339A8BB7349A47A9F331CCB844E6B
+ 79E1BDD026FA0CA61C0A70E2B7B5595CB871A555B98C5A80C21062073AC0A3EE
+ B7232359ECE044890B26EBCD4BEFCA1D989F505910A6B72B7CDA3CFC95F4A7EC
+ 45A47FECF219D531A42B887DA83140FE5651133EC4B759A80B990AD49C49CD07
+ 680A840F22A4B4DF73482347B9BE5EC7D95618DE369B75E5435F1AA99F3B8A27
+ FE497BD511C8D7EFC45AC7D455FF2DCE7B67579CA2A78263A14A048A559E5E8E
+ AC59E70B25B5C05FAB9B0A86924C5437635D9FE6336BA112917A26C56AE71A85
+ 0E9FA86B45E0070B4F77187B6302F511486433AEBE6F7623E776DA90409DB3FE
+ AECD9829927E8B081860D93FA9401316943BEE73133C4B189FE8310DB311C4C4
+ 53BE0DAEDA73CE3032D2A5EDCB7DAD94A0C2C4F7FF3FDC814A13C675070C5669
+ A8083E80A7DCAF5B512974CFA236E31C7F54A59D1873543816AB8E64B3DFD85F
+ ACD4BADEC36AF15659777FA1EA770FF15A70F4484D5488D68C206B692EE332BA
+ C47763530BECFB582D7FA004CD8935BFF749AEAE0AA55CC75BEC8A1B2D6F0181
+ B9F999E07DC364CBE7855CF2F7C935AD432675BA1B731974CF55C825A85C0857
+ 73A7E00DA31233F97F32B6A434095BDC44AF3184A45E2667A2920D158E9B897B
+ 6171CD347F4A92E62CB305786A15560337C8402D36CAA34C6802251C94B96972
+ 29D839C6586B24A894277137E0E4F9FCD89F972E5911E5F3AF6ED36F5418AF06
+ 9F4B016E474C452E8D9C836437EA709C5EDC78DA2D99664DD40B53B69985E79D
+ 882D8DBA2E17ACFE4551FDF4EB3B5388A5B2AD074538FB92C99B4BB7C4E9EFDD
+ E07E1E3081346AE9B3982E634384BA6ACA5A90525E3EDBE5D94A4E05199953DD
+ EE33E94940BDCAFD800F493304BC49A0B9FB564A879B3F51C8D8AEC002D0D932
+ 7D49813515774B22D107E4593227427FF0599B8FCBB9EC95C1609996F58974B0
+ 3D8AB2ED17287BCCAAE5BC40A8E894402B4756BB6D3DC95DD41736983505565E
+ 58F49C7E84091CCABC97D393F5223F4424F857EAEFB36D4676ED7714F3FA59DA
+ F70088432910CD8CAA95B1AFA7EB4CE88A5C12C6F0AD46E5D957C2077B329229
+ 5178500AB0160CB3F4B90E0B7BC454DD9C5F453FE794A3DFA0D8748D46362B89
+ 3394A5534CFF56DBC7EC9AB12D422F791CEF1AD90F44F44400E8DCDEF79453E3
+ E53604B36149CB7B2FFEF2F7C88A8FAF2D75351D195B1C19E53F4198A0FB160A
+ F0928FB749011D455F81E89FA463B59B77124AE5008BA54736C38F1E735037F8
+ 1748C8BAFC079298A00FF8DE7863DBD4AAFB788335201A3930C981026958F9B7
+ 5532BC7C513F2730E16A06E3EA436A37A41DFE5A870AD5A41997C3A1D0A6850B
+ 4E7124933185ADC94E4276B0BD5B506ED11CCB74E6B67A6241C97F4B8CAD73B8
+ 3E620FD6572069D367048C55FB0A49FAD47AC50066AF35F3B2EC6C2403B30701
+ E98C3D41FA8B6DF5D9C54DAE82829BD9C0F5AD7F47BEC4435BD553EB814825EA
+ 0BF3C832D428DEB010CD1F0E6B5AE892709A8036E87BE51C7655D5F8EA9D7895
+ 3F55EE7FEF13F658F249DF2DC13E10B1BE8965546F79A04E6C66AC9E45E4E28E
+ ED78A1336E7A45BB66E719775FCD887DE2E3E9D2348B7E4EA8519118E24E8E92
+ 1000D6096E259FEC912B47ECC33200FBD51A9B8E344A319534FAB220303E0A6D
+ D637ED40639CE9D55812AF148835FA1B49EE9661C54F709918C38B625B71ECAC
+ 179EC6E8D49865E22D156D96B3266FA7702A1C1396130235837FC46B62CCA41A
+ D76FF27B76C89CDACF438E2C7DF79003B693A64AA8E4A5558E54BB04DF8DC34D
+ 5B911342A701CD6F292692B44C531A43C8123CECA875729E9A3044A945D612E9
+ 48E4DC977FD36BB2A2E26B7676888D74D49E80381946FDB61F44C135F10F4186
+ 6135E203242149B8D8BF3455E266655E959CD035DCAA65DB51246C96E190AB4E
+ AC35B0D39AFC64D80A1D7DEEC55AD18071AB11C20E9A3306A62C9A7B19F9BD70
+ 7A18FFC7CC9E009880A4FCB02942513D7BE7394627354E5A28FD42B726F7C9B2
+ 0D9B74A30FAF8625339E28A941CCC467167951D1DC6747065C8BC4FAB5237D37
+ F80898D7809B3CD87647FFBC36698327B25FAFE5940ECB7F45960279453D684C
+ 77FA036B7F282B402871E61BFA111B1EC14816B52FC4F7D71B814954D218EC76
+ F3D3F5FDE79BCD3CD9A290AB58ECCE38F2F41B6C865891B1EBC3F2D6461B6A93
+ C5A60C19571CA70F6B3FEF5C6439C386CA3D63AC6AB97C06599EB82EF18C7BA5
+ 71A86DAA4E9AE54ED302267F77EA3BE0D88EAD3CC1BFD043025E8CE68C704F09
+ 25E168BC2146F2764246C79540FC5C1DBA0C55972CA866CB1C2BC3EF6591D0F0
+ 003F3303CAF72E931671B3F7AD902CED551D385CB21D38B5D26172756365836C
+ 9E29526C4907B2D14B3AC9B8E312CFE1F63D3553F6A3104A531173AFCD18880C
+ 723B29D83499C1370A51B62A9E5A42D29EA739707134761CE69AE2CE5A6FCA5D
+ D07EDB79648534F84DC75A753AB29464C04A16EB50A6E70C0CA072BBEA169D61
+ BCCEFB9D47680B06F729D9F478EC9F7A93164E44A682BF80BD869D150BA564F1
+ 9B4D35766E7AA8A5475801EC208290959DF511ED3561F1D029552634D2F204E3
+ 35F3B209B790C9E7156C42663BC673AAC177EC73E15232831A6E2C31A12F71A2
+ 365A69F3332F6CA3A0BBDA0D1842B6B24C556F96D130B2B1CC0A7B0D200D311B
+ F01194BCF66B01CEB66DCC069E9AC671221CFA6D1B4FAFB1897E63245830DBF5
+ CDDF111C082E916869E4193ED0DF52A79B065883FC2287271B64207255188580
+ FEE5741179FFC28A52DFD66806944B8B5C128AF6D1070E6A19DEB322A22F2D50
+ 501D55FB838D26D2FEF920D6F6CE8B7BCA665F7E3F4F68EF12E4D89030F43D89
+ BA2E4F3E0AEC0638129CB2FE10BDBF0E557B9B4E8E0B7BCAC09B76196E43ABC1
+ 685AB57D61CFDF848A215CAB488B875E027412BB254FC47E177FAACC89E3C6A5
+ 725FDB647C0723FC805DDE3BBE1ECAD59735DA44434DD7870A318460FE375F56
+ 3FC556AEB109EE459E8C621BD247220F28F7F9F49BD80B869E9D4793CC52BD7D
+ 3F0A40B1EC49351EC12C92E90DA85A5215DD7257F430BAC07B21BF900A090240
+ 5E4A1319019ED77D99F4E00E37625CCC5357D2C71C84D9D414A28B650496CB2A
+ 44F4E4AF1A943F7CD7EA1156B4DB3247CBEFDDAFBDB63333E136855730741EBE
+ 0443B5129B5372752C4523D2CAC0A8BF3544EB5762B9B39E311FF6981D531402
+ 9E888C9DCA5DAC1D13AE33B256180146ACC1ECC0EFCFB1FD602C928436A0C7E6
+ 4E466F6B0798B102E0583616055FF1588280767340C935BD49726AFB30310AB9
+ 2A7307C4E2B582A3EEF6BBA59CDA1AC1664CEFDF6AA7FCADA34E65ECA2CED162
+ 2BD7C393A456FCD930268DE10D27283650C05CF7AF7254444415464B87F8E8F6
+ 60588929930F857069E93DFFBD4A48B91A501D660DFF370ED47CD82165977CAD
+ 663AC2E73F39A5FFCD62281DE41268E0F593536EAEA1B57B24CC529813F0BFD6
+ 7248C95A99863771D28E50912EAD1E9E7E0C0DD155A6E120ABAE0EC672A0754F
+ 61B3EAC9C6946BEBED51A5DB781F661AC5CF8BB672D0DF45DF4BA199AC90B58A
+ B5892EE904D9B5B22C05173645BCB805C3E9459167FF76634570628BC071226C
+ C526E1570D16ADFB961012EA7C0195832C994D59033A847C78919D527463CB4B
+ 29834EF729745064DB7CF426DE384BB256926D482AEC3B42AA23383C288452EC
+ A0C2432FF1515E2DC5EAFD90615B63CE27CFB30BEC98220D85BBF03798E88DA7
+ 48AE26EB1A8192D3D2E2199495E452E1CE32F5092A9181522D88101C6A5103C2
+ EF47F3DF247E7B2040ABD173306DDCA175858092D50CE8F7D94ED9E5B69B13B7
+ 70E63BF6752935C99620AD37DB8A375E4D3CB4FB0454A043B00990A016BABFA5
+ C4A05A72747B03884B10AEA283ABE87A7AF15821CBEE6AE7F1F9F2EFCED5660B
+ F1ED0197D166318579F4276419084271DB19362185CF442A9C0681AA6D31EB78
+ 0762E34DD41A54F2B059E0FE67B68E7B52873D46CEC7181E7BF41BBD9D1974E9
+ 04FAA99C26F71C2C54EFE23D5206FB08AD84C1EB3AD04D562F814A20618E6130
+ 3327344319140C9C887071D091419F003F08DE83DE4104BBC8506542BD731ABC
+ 1A8C5D3A529AF82639DCDA957C14DAB606571F2266EB8556CDEFD4E520280ABC
+ D5A6E46F76C5795236A52451B2EE230893132769BFDB446F661FF0E6EE2F0124
+ 697C6F32D4D677CC082BF01852F58E204B1E17D239F94DB0907F9C2421219C9E
+ 111885FE840C14DDF7E2AFE840E75898677B21A024FC962D3B31590BFB808C80
+ C22A2C25479AF9E8856D54F84FDAB887BE4F863DABA66EBA8CBF98973940BC89
+ 99545B00D8DBA3EF2D9EDB7FFB0E0E3DD45AE2FAD85878AA34CE34178D6D4563
+ 9069646A8ECC94DEA41AC4252AAECA1D890F3087E5062E2E3E1BF570F72BF8D2
+ DA8D5CCC9D2AEAEEAF093DE9FB6BA447B86BAF80CBA0822F46779F26CAD3FAC3
+ D53A34D22978C79C97E2B1B715D55481D4E45C2E228E955E7A3BEFE5B2965D72
+ 5FBF509DFF3233A9A5A2157A13F4E671B8EE5F857BC7D5ACDACCB639335E3DA9
+ 569AC79A00BE8C773FB221D2B1C4A7987385E54BD86F6C474D22834E07D0987C
+ 838549FFDEF2B686B05EB66B8FD7E7ACD1F4A289889D96224D892B8051FA5194
+ 5B3963B6352E10A131735C57B87909FC0CE4ABD53DF1126EAF3929294A0B3262
+ BC70258D0169A742BB4BE9A2FCB504EBA4FD44EA06788003FA9B3D3CEB7C86C4
+ 333B47EAA16BDF9322E5A8B5BA4D5FA2E7554DD4F47F37100A1BF7282CB5837C
+ 40467297D53A92432B4647122A18F1824C127376F2E962E6C160D20B8358D225
+ 5748261A46614A75EA3D32F61A3D5462E6D187068E5CD4BAD28F69D6247DAB11
+ 46AB9D0E9F200FC74C1847EE8B27CD3C8D42D62A9FEEEA09C97FB58EBF8C6E46
+ 4AB4D7357FAC63304F6F9832BD07080FAE8A45B99DE3BF4B0698612B7608676D
+ 07B8C12411D61BFCD4DE99A2C264AF9922EEEB0C384E782E7E2DDA5FA09C9BE9
+ D86CF7030631CFD55D2850A328EA182A04FD627EDB6E4D6B36A944CC25C206DF
+ 09FBBF4272F42373625CF9CE72CCEE082C75E0BC8E147D8A9DBA1A8A6989C456
+ F9CFD8CF229DFAAC76A23201E9D3FB1E763957BB5847FE8919E0BC2F4F83D434
+ 937783B6DF85305C6E420B200C23386B0EA82CD5FC358EFBF2AEDDFAEB568B07
+ 6BBAE919A137244F27CC1BD058B533C9B542BAFCCA43E6C30A20D0123DF938DC
+ 812DE0481AE599268FFB32B3ED6F942FD00DF60C3C60F9AC1907B0E0490BC9D2
+ A02ECF5897F62AB6B88A6DF0B74C9BB6BF466D38F6FF91CEC606B8F087BC54CF
+ 93745D18F5C7C5AFFBBD02E76EFA492D6039F04039CA0E03E2344DD1C0A010DF
+ 1B2137F32762EB5D07BEEDF5F1CAABCC2CEFB9A42508E337D2377D0487908971
+ 8C44760DE731A5B0D303B3DB80885345400DAAE60A3E9D22E7D8ADD55E13317D
+ C3C21845BF77E4F0FF84D34E9EA3E29A6109874993ECF03BD85899190A2F29D6
+ 24D7760AA6974CB6065F367E4AC866584B563633E35A46D00AF04B099DA731D1
+ 7036A4C29442426313F2473858B1D8CE3C1C32C5C30D181B57514A618CD64945
+ 887F03665569B0597573069A60ABF4D10A5766AD18093FC5947754988398C277
+ D3E543BCB0E08BC82F1D76364F6FCA90B510122C7EC57CE4FF51B8B20B86E134
+ C6ADA0BD0E78DF88274A1656FBF56985DB5A21097AF15E24D00FE081BC2A6CB7
+ 59E239DCDB65436833A295D44910F7A2CF39D42FF5E5ECB470BC2517CBD6FDF3
+ 9AFF6F71C4C865B16B77C8CC8D4FF38A25CAAC53311BE686C7508FCA47BFE82E
+ C631851FF688C0CF7E8DA4BBA1011E53C46653D09D9293C79646D581067B21A1
+ 045CC9E8A1AE91F071DD349D7A1AADF8BE95B68F15A02E13AE273A803A35210E
+ E17D7F5024DC1119D0128FDF5FA58C95242758AC9B8A82E8B60F84F26880D22D
+ F61696170F074EAD0CC2171549AE935A1E6FA82B97EB553451C8D343722B02B2
+ F3DFF1C320B8D071CAA71A4D4A31C83ACA60F67103F458412429106BD2C17B38
+ ACFAB858F0584539587897BFC94B52C3148403936E5B5101E953073284484AD4
+ C5EE081F78EED27103B75FCE46791BB90E5D5F4509EBF6CE98808FBFD47C7E74
+ 6CAF1832A12AE0E5368D556F1AFC4E58A888E1EFC7ADE2EF9A297BB7906948A2
+ E7A517DB97D29A19BDBF3ED01CB8DE6F343D650398B47266ECD7E19125E8D415
+ 25E2A9F8D413D5713D8E1D2987D5458B7C75B7DC48C7896A321C9829101A0C83
+ 9C60457DA95B1BF21AA05AB437001C97F8B3D0684FB191D403D9DCEB933C8FC4
+ A1024CF3156FDF561A73FDECFEDE4D204CA4216691451048C4197D7A96E3DC74
+ 654BA0FCBB4BFD4B6BBE8055D43B3924116FA57A3ED5C583D22584120611FDE2
+ 4E4616F8F22613742D0E3FDE99E51A20176802FDC4A3FA5620CA1D2A39442634
+ 64A0D42875D51BBB7D5000CC7F783D8D25148644804B6EA5E84E4F1DA19275D6
+ 6D4DCA78423CDAD0EE63682E035B5A1A20FC3A3191C1FC3E6838C6F381117644
+ 3F72F3B4435E4DBAD63CCFAD9DAA5F9756CB253E7BEB59D76A44FCD04F55DEE1
+ 8ACAB5247E249DAEA970C8F612D363B8C0549A5515D85CF20175CE21EDB6296C
+ F3B372F1C2F17F82C2AED7438DBC193A29ADDEEFEA622DB1BFAAB5755072F0D7
+ 6B39C8FC09FEC2BCB79E453A15BD35C580CD01821FAD27C4EF5DB7655BFA45B7
+ 49BBA34EFBE2358F17C282D01A1CFF0E7A9EEF518D7E6E9E90B746667D9AEAE4
+ 3F9D6F40F84A66D72CA3D1ED7F15F7EAE0F0C4D61AA5E579F67302E2A178784D
+ DF46D0C3B76AAAAB736BB41850E1DC8AAE271598191E021C386BC0C6E06D0ADE
+ 9BF8F88CF6E4F1159D352F5327B13E1F017D94CEBE53F7C1152BF09017C52211
+ F53C8046D640352C96B3F59B3A963E43034E22AAFED7BE3DA3DE298370F4596C
+ 9538CC7E3776AB76F1059BCB2DF16A89B9004D7AE4B979A12C63F0E795A8C540
+ 18209AE5F5ED2EBE9CADADA0AC825C705E4C8AB05BDD7CDB9CAFD4C25C570E66
+ 2F0BDBF030AB9D77B39A620655601956F7027256338FAE95001EDFBE9BB09EA0
+ 0D8ADDAAE4574F5C814401464EBB56A23EA1E1574297C8DCC30670705F0645D7
+ 860872BB32D35482B8C1F494C5544D8A015976B1056A222D46383494455BF513
+ 42582521A4537BDBFA34DDAB4A71B5F3F43FD9C85066409AF617783CE789D075
+ EBDBB3AA1B18E32328E49370AA1E462ECF35AC8A2E81610BED994B7D9FD39E69
+ D554907C075DB76BC8B7033C3A1135D48A9D4A100A9316B3C5E6E70DFB9C9DE0
+ 8C50C0AECD1DD4DBA6563E02D537F8E5D180022EAFDE3F797C2A4E59EBD3C2B1
+ D29D086A3425E018C7D3B0DADF13517218331282C9F13C2B20BFA3529342E12D
+ 2D7C62A0B86E0C5A8580210AE24BFE24FC1BFA598AC7125FA5681D916AA6FAC5
+ 0776FD244711380FCC8ED4F6C9DEEB7765E958CC30F5F3936C0B46F15DA6B0C5
+ 1DC0D7FA83F09605B1B588FFEF423645CF880F7F2F44C0FEC95508884C4F0D7D
+ E4D000C7AC38E2FADC795CF82BEB910D3149E43CFEA2E075AF2F51D37F3DA7D1
+ 56B35D6B35192615A270E4DB956B8353515209612E6D65A0A4A3F09C91AA1118
+ 8930B04D753DD0B4AF080A0FBFB88889BF4A5098A0B566D4AD1A362932CD896F
+ 7CF4B72E2BBA12584B1AF50BE9DC0C8A833322293B0EC28567CE3649403CEDAB
+ 3A57B53C3D6E2DC70BB6F58DFB7E14A9244331D574C2DA4DBF16E7782D296F8C
+ 27FB1AD3F361FD5D2D8B30153D59F49A95E1988B07CC18C0F686F0C0A53FF85D
+ B0CBA03B167C4B23F3F63CB30E6AD0B6A030FAFB50F2B131846F648478EBD5FE
+ 9B4752B353B831DC008DCF4F5538ACEF40695533E1C4FB91841C0EACE5B0B014
+ 019E6E327839D49525CCFC7D3340FE7839B4B373C8401B9C42CFF798B8DA9F36
+ EAE3C4FE47A541113DB50920421960EB032CE5590BAA1B258EA84D7875BDAC2D
+ EAA8B1D093B1CC8DB200D9C0523ACA50524B9E8A7D461626137AA67759EEBB00
+ 556771E800FCD0B58BCED844D64EC243D44493391EEF31576B70467D1E7F4897
+ 80408F1F80A8464043FBBA5B2CC2FE3A0E8F6145FA9D0A5A27A208BA8D29A52C
+ B023EEB9E1B264C8E2C118CF313A77E5C1DDDF5D647DFC59548ACBBB3FD68317
+ CD08D44D50C45F02F0288EED0A09740DF8EC8F57D2C34562BC274CF700596708
+ 0D282DA9D2522B86B69811A5747273EE84737310A7F6D02AB421F04291D51F08
+ 67C5B47D9862E5AB0ADAEA960D0855500B108463E7BD0CD1918AD6507BCACC18
+ 47C8C8104D199E5E97F1A68EC4B9FAEDC333664BECCCBA587BA8284BA2465FE7
+ A12BC89B3B38906E4CCCF0AC94F6A2978416E6195BF76640E025074586CE3AB9
+ 963EF3D9F8D494E44E39DD3D00E78FA9963A4388BCE085A68A48B2117DC00D11
+ 3F6D59EEC408F3B54353C390B0438196F8DD50D7A1D2610765802136120C1870
+ BA8741A8095F362BFDEE9D78D6006D8F8E51DF0F14D11464222D9F3C7B23B4FD
+ 3191C7400CE06DF7D3378765DADD775D8D23468250C3943BC1621311821B5E39
+ C030BB0BB47FE0D7351545AF670D1CC80B6EE380CE612E4DCE698621C4932169
+ 95563E11CCD721B971356F4C723598F33D72093EF14B4289C49EA1EAC4F7A275
+ 37DF65C76E83AEC4C837EEDD9769FCED7837A869D256B59EF45C0B0992A4F037
+ 35DCCEAAF8EC248BF167D6D4B0071E061AA0ED5F65637089BCF80456A3DB5675
+ 3118EA392EC656BF53263B65DF090A321CA495B2AAFDBAD53516483BEAD6F8A5
+ 94048B2FF26A1B4F892BC928CDE2BFE3F44CDDEE29486727A90BFC57B1F66FC1
+ CF23A6224D9520FCE4E645A2532AF4122C371B6CD6942B31FD152B4DF8B42642
+ 6744B2955AF3B6A5E3017D83B596E4528E9D5A694FD1E29919454E03D89B06A9
+ 39252D2AC3A7DF80642DA1D70BD4A622ABC13BADAFD9F26345860B5E26D2C664
+ 5D2C5B0478F3F0BE4AB8950A5EDEFA99F0BA5A850664FBDE94E196D053966880
+ 7B0B80C2D772D38472121F6158AB37E87362624B13EC98C02690C84455F1E3C2
+ E1F866267A0D6B35482D9E05EC89FD99A73A9405E58B6EEEBBF542DF079A6ABA
+ 5ED6EB1464E4A5CEE11AB77B2D30BF2E0C247589DDD3B232AB3AF28FC563CF94
+ BBDF75A1DBE2EBF4FDD973EA7DD32D67CF6D86C36FE3356AB45B8888BFE2A8D3
+ 3CE613454A895BDF41915434376181D7B8CD830B15EF6B7543E5E6D09E14B6AD
+ 2FE9FA26102BBDEF7295AA0BDC9E028CC26FF804FCB6388F85B014C676F48798
+ DFF2C3FC4E9D32EFD1A5F0A41B8C8059A0D88A5F29A624611FFF812E989E1CA7
+ D8A4A1DC4F790AE2D7BC6229F98806F3CCA4293272FF1E2E7C28DC295AB5849F
+ 981CE12E6FEA89C36994A213CB0000A75DF8DFEDB77A5881EA95D670AF726AB3
+ E3AC7FBF5FF14E763BD2A40A166C7CE6E699813B951CB5520C927BA6F970EB85
+ 0359472A186BC6AD4DB3F062583AF26EA9AB5F5EA37A59741DC8B553A776002E
+ 6F051A2DC99482E84CA393F954310996CA9AAFFAEB11FCDFF4DDB9AEAA103DD4
+ CE3DEEF79371B57E0A849BDB8B8F87D993475D8C11BEC5A46D2304009F0F1C3E
+ 0C5328B772B2718565493CB268F1D10043777463AF180569C19938636DE97616
+ 3BCF347BEE3CA3FE7AC02B4D5C46AF7129B20A5B3DED7F0F3B4EAE3ED8644278
+ BC72850BE1EC438BC034DE5AD04B8CF0D5E148905CF975ACC6F8CCBAB52B08F9
+ 4C4BFBC8F325A494C77BEC221CA37E433905288559815610F6B42885944A4A3D
+ B3B47BDDAC2D48C7CE8CEE729C05B4AC38454CAEDFDCFAAA499867C82DD63F7B
+ F9A67431255F4F1939B010382AE5E08830ADA6F668478D157DDE355AA50BC903
+ 497FC7279C60C417BE821CD07C97D8C3E076DC618F7D31633A66771A1EE63AC0
+ B28513E51BD02001EC8E55FF5DC48299B80D6FA099A95EC3192FE6257689AF3F
+ 73F8F7E870825B1F11F8910EFCD2FE215BADDF70239D3462B1656CE35259155B
+ 1FA998D63DE71C019B64C5DDE24FC4F5CBDF8DD23E558AE5E86AB383CA4FDC99
+ 9E431731A44A0FEB61F6B56091A4BD8A3AA5647603B04AAA5C838F86A6C695E6
+ 05C63470B01EC2F1D749E710F852242D8066C742EAC7D613AB07A0CDFC1748CA
+ 849D2A7469C97F5523FC3D876542565FEE0B7DEC1FE178E549361F69D8347FA5
+ EC7A202A30F95C759202F4D86D3DE3E39145D98F1C762F23DFEA05F1EA014964
+ 3EED22D72ADCEA7955D4FB2FD9380A24131CEF98A430539ACDA2E933B4D3932C
+ 8C92D47C8367314A2396A65651379878BAA0BC30A874778E4173AB971AF87C4F
+ 938688019EF2B8DEAE5B1CA19CF540C31E98DDEE379DF3C4F15664FF5CB91855
+ 2C59DCDDB5541C08D654D49EAC962EE22E4DD5BFC821A591F67EC5282A62BCF4
+ 7EAEACEFCD045CEB6C00C8B4BC986F224F85B9D4DC9B8B9950C66A46EA42896C
+ 75D225E4E6350A800E53E91BC5FBAD5BAD60F4AB9910657F47E4F776963B0E5F
+ EE9114491E519DD10229B756C38898B64C8B3127480B8F6B0FAA61BC0C6733C6
+ E7D6B63A15DCA54F1D1B4BD4B9D3543F74FB74011B35F7B702BC2654B1D15E0C
+ 4BAC7BFE714E4A954B65B8CD0304D33EBC5D041BE2366DB4F230F745720A7C3E
+ 9F1CB371911BD023EA2C05BD2C9CA447A2D272E1AA91282EAEF38F694BB942F1
+ A233A844B674832AC67B0EB25FF37712923DC77F3E100ABCCB6BBC02DBE96F0B
+ 445479BD731CA1301B9B0BF1DAA4CFF1C90428D473A0BBB4CD3E9D2F2F97A6EC
+ AFFC6FCFBF51AA529ECEB35CE612C4F857E8545F302D2D33B5607B157EE9C57F
+ 867A6F621AFB38634B389D30B8B4651BB6573BC114F991BE63E7D1C6CE6D8FF0
+ 8583C9A054BD658D7F2707F3FC85997F8498E526905758581AEA8598594696B2
+ 02FAD43744F732D58E7A586CD0CA1C81510A00580E9CDCEDB18B40E86348991F
+ AFEF7F9A3D16F1AB351D90DC61BCED28901138479836D2BEC5556FC391148A7C
+ CD66E9729D9B6912E72AA7751237585D310AAE0EA8C2851BF25EE8701B76DD74
+ 310C273D7AD3B14A6BA419C68316C541AA929E9F54C4A8B6A5D09CBB8C9D781F
+ E530E61D3BA402FC1F3D99AA6E2A389338AB07C5F546E1B6910452F07328847E
+ CB0D3C4390D5736F5BCBD8555BBD93C70A687E477BA2D0FBE02B1CD9C726124E
+ 7B8DC1A263F9C61AB84AAF705B4278F84AD7A8F0F25528B5C198707154BE8E9E
+ 387DE0F35ACB2821396C770B0416F044B7771B731C0EB7FF7A8DDE2643846170
+ 6969ECD5E45F250548FFA9A38531C21F830298B0CF84439F7362DD01E545D06A
+ AD42B317EDB395F69730D1E436EFAC0CD3CED3A9C398EFAC4F82D42D67FC7D0E
+ 30FEBCC34AE916FA42315212D75E17C4113356C8B58F02C8335813263D6E2387
+ BE49FAA0C47994212B6A94510FF6F9707DF9F2E4617988B64664920FD36EA8A0
+ 992914AEE0F84273FC1139EC2AB0FBE4F27D3AB1CD6C3C1EB76EE7244C7D56F2
+ 5748E68A8363F19A1F0E8870F6EBB843415815B826265BFE57A966AE37F751AC
+ AD678089B4AFE45CE1BF820073279427192FB4FFCC38E8741C166790671D7AC3
+ 468C1491C8D399D9AF62A6E120C06B47C2565214DAFE1ACB60ADFA571344DE30
+ D58E9F820935F04D9137CC43710FDB7441D593290D32EE7258D1ACB0272855C7
+ 799F40C666E948E2F00AA4B5356F03C49AD0C477FE59528881DB1667A63526C3
+ C569A56C7DADCD795E14AAC1C9AF06A5BA3FA3282EF99561306EC4612EE4ED4C
+ A9F4F576CF1062D7C9542B691D75F069F657736ABDC6E1219858FC7F0AF3C91C
+ 00BE26C6229BBBB4163F3508B537F683285CF10422DC6DD85E7F20D2F2A652C9
+ 49664097B6B3E172B7D8D0C8693467FDC0430915A555D6E10ED567576F85B8B9
+ 1C6085E80B535CA50ED8B2AA20EC2E0725CA333920B6922C9F92B802305685AA
+ D9CC468102FE81CB9997B606D680FA3B7DA80F83B0825961EA95D75E33BB4B7A
+ 263D67DA17705D9B43754A31F77EFDAEAF863626D8542A90290D1EC2C1D65D73
+ 0FDB11ED01DDBCCF1F029033949B8620E081C818223C95510AC557C5C88C900A
+ C26AA89B931964EFD6F9D30C4BE68E907EB7F2FCABE98E7DC1934794623C015B
+ 585590A13A4FFBA48BD7DE28E5AF8D031D0FE20595F71B207D4B0F714E0C39EE
+ 1C656175A0CB2F68BF487AF8B694C38DC39964BAA6FB7E4875BC8502C26B25CE
+ 440E7B43B7BC8C8DC1F4A4EAAE81044F338E50BBA5F62C287E56218508082A54
+ E015D021A970182962A3D97FD3C4008E60573BD0C85787496FB780C975207A95
+ C80F7BFFE4E7D36EEE09C6C95384265573C1F1748C637DAE3F305766AF5008DE
+ CF17D6BC832CE369F71D468BA5FEBE14B32E49129F0D032BFEC400F3BF20B696
+ 940BDF1B411CC297078293145DB4574D9E1CB9F7F6AD32CA5A90D0D5C4853E2B
+ 1096ACEF55B23012D011648D3F6C11D15E1E66FC24AE331AF7C222E957EA2EEF
+ 6B5B697AF7D6EB3F9812221C5A176334D47B5067FE22311EA258178BED269E1A
+ 091D5F4411DBE6A9567FB212395D39842A55D94643B03A96731EE4D7F41B610C
+ D4C3580A85C93BCA983939A00659EB11A72C27F86CA4674F2788A738F476C2AC
+ DA12AB2FE92668D51919529DB931F43BA6436E4D5A349C4542AF8497C3B5BB5F
+ 082CC5BAFBCAA7A6E43FDC39952A76D1EEBE17408FAAB84DAD7F4D0FCC02DDEF
+ DF2E47AFFCEFB30D839F715E68277FFB0835EA601AD39C1573597A0AA05861E5
+ 5DFD0849DB7F46035AC25A010FAB305DFA049A5BD23DD8ED3D40D2C27564A401
+ 2144EDAC5B34DE8AE39E9597C8DB923ED79BE89B18035C63BDEB32A10D1FA056
+ 9546ED862A8C21BFD35A0958B7CCF061AA3118C7D2D07F59DE4794DAEEAE5221
+ 7D7D4BB215F0C8D49A338BB68CF88C1D811FCFD27B2798BDF2D0DA92239570E9
+ 1E478CF84D9FFA6E40CD0D3E03B3D4B772EAF02A290EBBC3C6099294ECA10AC4
+ CDD938E2A6E51C19D27D51F20EC18C2E49E750B29835F3F621D1946C358D4AB7
+ 3EC09FA4C4B24A9AED2D1B23CF2206E9B1BA00A6930147CCC001742014C25495
+ 63211526C4BEE9BF91E0C7AC655FFD3FAF117DD4DADD1B866AF7BB3732E51B71
+ CCBE4CB7B844A084F53D42F6CAEF9FBFC5121D158B33D8B142C211B6D029BF4D
+ EEB2CECD8AAD3F5048448ADBCFB831765C308E7E585A08B1DFDFB4
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ cleartomark
+ %%EndFont 
+ %%BeginFont: CMSY10
+ %!PS-AdobeFont-1.1: CMSY10 1.0
+ %%CreationDate: 1991 Aug 15 07:20:57
+ % Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+ 11 dict begin
+ /FontInfo 7 dict dup begin
+ /version (1.0) readonly def
+ /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+ /FullName (CMSY10) readonly def
+ /FamilyName (Computer Modern) readonly def
+ /Weight (Medium) readonly def
+ /ItalicAngle -14.035 def
+ /isFixedPitch false def
+ end readonly def
+ /FontName /CMSY10 def
+ /PaintType 0 def
+ /FontType 1 def
+ /FontMatrix [0.001 0 0 0.001 0 0] readonly def
+ /Encoding 256 array
+ 0 1 255 {1 index exch /.notdef put} for
+ dup 102 /braceleft put
+ dup 103 /braceright put
+ readonly def
+ /FontBBox{-29 -960 1116 775}readonly def
+ /UniqueID 5000820 def
+ currentdict end
+ currentfile eexec
+ D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+ 7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+ A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+ E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+ 221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
+ 27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
+ 5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
+ 0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
+ DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
+ 71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
+ 4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
+ 515DB70A8D4F6146FE068DC1E5DE8BC57036431151EC603C8BCFE359BBD953AD
+ 5F3D998C69E42AA96AA212AD55B676FA2B4F6B519575404233C09AF99014AB95
+ 767523D9E1F8806E766AC0DD6D81028C3AA9C7536D88D3C2DB6D9949F844935E
+ 420963F40430452DEAAC1F500BFB1C2473C54B9987BE449F042633C7038D5AEB
+ 7E1E11C50911EBCF0979F8192E056A2B2EE9785EB73B1AB874116AD5AA74F32C
+ BF57FC28FFED335DFD9261AC7A624EAA93BEBC2C0F8B3F898DDA1490D59C6C4B
+ A651746C8EAD41BDAA1AF4056AFE98D2D3AE3CCEB9C67FE3A63385470EA42968
+ 34268684A674675AB9EDBB5BFCA81224B22D4ECF40D1F31A39481AC68A87F252
+ F4E7C1C340A26E0D514BACCAA51898758A7E7B63D2E7F34E91554151433F0FD2
+ 4901D3DE9A5FB9306552DC57EAB729AA07780927E1ECCB5D1F59A09A1E3FFF2D
+ 922B6C9B58CB20D687A72B9C22D4EC926771541EDA3B75559510DB21BA4461EA
+ 960B8E5AF4D31D08E8F235D677A9F6EFDB01926967743942C23955678E438F51
+ E5E22E2FA2AA7894755053C32B39277B82C00B3D9BE9957CF3ED626852FFFC31
+ 6E5F0F7489198136A3284B31CC94299EED05B8FA66B8D33F7C47367790D23CD5
+ 303B0C8E58B0E51BEA9325282F19A3D361A3BEA6BB0CCD09BE735D810E7E0A79
+ D1A9C580CFC8CF9FF685D63ECDCCC024C235448BA632F00C3C5BC0E86F44B90A
+ 293817CC93035E5E18548A7E157C2887309BF84C167D8DBED024BB
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ cleartomark
+ %%EndFont 
+ %%BeginFont: CMR12
+ %!PS-AdobeFont-1.1: CMR12 1.0
+ %%CreationDate: 1991 Aug 20 16:38:05
+ % Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+ 11 dict begin
+ /FontInfo 7 dict dup begin
+ /version (1.0) readonly def
+ /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+ /FullName (CMR12) readonly def
+ /FamilyName (Computer Modern) readonly def
+ /Weight (Medium) readonly def
+ /ItalicAngle 0 def
+ /isFixedPitch false def
+ end readonly def
+ /FontName /CMR12 def
+ /PaintType 0 def
+ /FontType 1 def
+ /FontMatrix [0.001 0 0 0.001 0 0] readonly def
+ /Encoding 256 array
+ 0 1 255 {1 index exch /.notdef put} for
+ dup 44 /comma put
+ dup 46 /period put
+ dup 48 /zero put
+ dup 49 /one put
+ dup 50 /two put
+ dup 51 /three put
+ dup 64 /at put
+ dup 66 /B put
+ dup 68 /D put
+ dup 71 /G put
+ dup 77 /M put
+ dup 97 /a put
+ dup 98 /b put
+ dup 99 /c put
+ dup 100 /d put
+ dup 101 /e put
+ dup 103 /g put
+ dup 104 /h put
+ dup 105 /i put
+ dup 107 /k put
+ dup 109 /m put
+ dup 110 /n put
+ dup 114 /r put
+ dup 115 /s put
+ dup 117 /u put
+ readonly def
+ /FontBBox{-34 -251 988 750}readonly def
+ /UniqueID 5000794 def
+ currentdict end
+ currentfile eexec
+ D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+ 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+ 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+ D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+ 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+ 2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
+ 68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
+ 3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E
+ 59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28
+ 51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23
+ DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A
+ AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F
+ 45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31
+ 821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE
+ 96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D
+ 9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379
+ 26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4
+ 140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213
+ 1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498
+ 1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB
+ 377D3061A20B1EB98796B8607EECBC699445EAA866C38E02DF59F5EDD378303A
+ 0733B90E7835C0AAF32BA04F1566D8161EA89CD4D14DDB953F8B910BFC8A7F03
+ 5020F55EF8FC2640ADADA156F6CF8F2EB6610F7EE8874A26CBE7CD154469B9F4
+ ED76886B3FB679FFDEB59BB6C55AF7087BA48B75EE2FB374B19BCC421A963E15
+ FE05ECAAF9EECDF4B2715010A320102E6F8CCAA342FA11532671CD8D247017F4
+ 80F3953FA6A64C2753F39AC37ECA3704B5915361ED1A124CDA39E5F743A992D1
+ 5B0EA869DD4815C2ECBA3B4DECED6B05BAE9FF7C63463A3CBC2506B82FA8C9AA
+ F86F320B0CFE0A9AF55CA46FF15F95E9D9E81C1FA0857C0224EE0E2A5721FCEF
+ 30D43AAC8304E4156E6AE717543A79ADCB8F3A44F84EEBFB4B51F5717D3D33B7
+ E0B6438A5AA0BF83FC4B2D19851D169A0DEF5C8EA974E255763F12FADE3DD89B
+ 93B69D6E60D66D2D5AD71234C7BE7C918BC634205BB2BE66D92E949B185B3F56
+ C1278807DE245605B282F8627CE4A2741D0D34E273EAE41F1564A13C74DB1D37
+ 45481667AA1C98EDF2CB5F768BDE20A8CBD410D1B53002DF5B07AC683A65EA69
+ BEB0A62C17FAF5F751A0638FD46B60DA33F218DAC557C72828A3BA3A7D4822F6
+ 2738122DE2FEBBF2475B5867DB8DD196CD6BE93B2D1D780BE9CA4ECDDC410839
+ 931DFBF796F0AB4099D211B70153426E02A7FB33EA8E2775969433A28D7AEFB8
+ E60406E7289DD166128B30253C7392690DAB75258085A06847E79783DABF3D95
+ 0B8E7141770747C2856F4F4B007A62266AF8239F48E34C8FF1B71EFC0D1761FF
+ 2BAB2CB1A4410A0E148B8653A181918AB4FE3C1E821C659D5E1DD20B76C04845
+ C5533380D281044A8D27A040BD1C1AC64712BFFD2A908E23E6B3E67C90B60EEA
+ 6A6EC7258D320B49738F6D9AB9219FF4111D3C03EF48E9B2CB636F751D4BA9D3
+ 5A0BF4AEF7D096AA4B9182A774F19FAFF8C28479E56F1E7DA33BAF1DAD08084B
+ 723B1D54D91AB8FC44B6FEEB69CA0DF4AFF5AB6F7618B208BBCE6954CDD2FDD5
+ 5DEFC47AAA1B24EC07975A625CDD9C0CCC0294C1F1C89EB72E05A2C36312AE60
+ 700C98026201CC0A52CD5E8762D8266C11C3556B48B56664B59516B1DBF90645
+ 2EA1C1CF782296949953644334E923B54FB5CAC61BE35EAA572668B52E694DFC
+ 5BE406194C118F4B808334544549612139B41BED2CBDFEFC0FC03E16014B6ABB
+ AFA6B3821EA1C08E084B1EB005F7C41C31BC3F656270048FA068848C77CE4D79
+ 646FED01102D4F4B08802B0A5B5D7BF6D8394122418C39EB4071D282C03E614C
+ E2CC97F13B326B45EFBC3F711CB7D6083ECBEF86A9DF6AC72C2A1D3EB872B07C
+ 0FA7D9AB02AA518A22E6928304CEE21344A79E37173C41D8E36F38486329AE5E
+ 0C7F5503ABE684D8E07EF2FEC822540FFFA48FC1D23A9A6D6FB2B1B376F382C1
+ 1A1E7E99BC105C41FB9F3FD692E1F566ECCFFFFC1D23DDC50341634DB9ACEBB2
+ CFAEEB9A4F3AB66F0EE171CC370CA4967FEC906A0253B0D0F1A1B6BFFAA3EC06
+ A14E984DDCEEB4B84294C79B8BE65772703DD29CD2E6622C343BEC8ED7CDC72D
+ DD5937CB4600554329870E0682C7EFBEADE7E6DFE4044C8E23C061BC934FAA60
+ 0717362F3804226FE252C9F63710835C5AFFF57683E93D9F68EA481EB80FA717
+ 31A0E6E1989B9C88164E50147FBD61A28BFA005063F77420A804823D25FCE5B6
+ 3B1C91F0C3710C3F0D6A02DBBD8E7AAD0C9B5A29473B8966D3BF79DAE41FB899
+ F17491A1C470548DFBBB5E4403D0A3BEF0A2A951E582B441F97D89EE5900BA53
+ 9AA538E4052DB587FD68DBA6634655CFFD84F804D0E6E1927EA3D1D6D6DAAD6C
+ C3093A3B47F37DC15389D214B246EA3F6B838627EAD5A364542FEEDF12E3114B
+ A9F8422B999FC45E9E78FFA1221319C1E9C9D90B4B7B5C652159E0CEA169E5EA
+ 9F5E23F4E2FA5DE4ECCDBF5737829B0DF4FB315A1D83BA1527FEA856CABF5B74
+ 0FCC059F43E0EC8E5469EC25A4FD663C51CF9FF63E0F512EF55E27FBCA6F9ECC
+ D8100111263EB7C9E0EAC801BC07514AB306D946C84E77A90D37A24B7C707D85
+ F2FCF590E0268B749E334B311000ECAEDF819EB69E212B8BEDD52D8F5D9C0B30
+ 300538CA92816E47E05AE200923A923413456640EA0372FFCFEEE39CD2D35456
+ C9FCD1C00A1564549A571E4D8A5FA195BB10287702BF6F74CE5A26B048ACD8FD
+ D4646CCD23DF5727BC2C12E465BD7940A5E497FAE91C6B74F0AF79AAFA05E577
+ 2649C5C67CAF1DFADF6F8BD461DC7147049435D4CA7790C9F9791DDF82229E2D
+ 00167628169158DC071F7148C4A7B994C5EF8E50A76433035E9E3C3A01143D7E
+ F8780EE5412DECD2FE7CF654FB613770C1F2D745E858A1000CB140C5A3C4084A
+ 344FD7673A5F51A9D5F0AC2FAED33DE476D083CAC7D4E6401E033A883F2DC20D
+ 581212A4F4211307FABDFE298CE9F34336FF38471C5FFE7CD43A8758F292018C
+ C9AB4ABA551027BE064306F0766B09ADA285811CBD82EA774EB62DA0016D2005
+ 9059DE0218A995C7032FE5EAA09ABD1B69AF89985D9CF4617CF45E25D9C0C6E1
+ FFECE781F2E711593429AA529C282768CC4E317D62803EBF51C7602ACBCC578A
+ 6E2C270E1A07B14C3B3F0A6917B30F2E7D7845A71ECAC1726FF4F8D9C4071686
+ 1F9A679BF2E7703D11DF60CAA58897825DAA882F7B9B629C2827C2C0AA680215
+ DC02B748189EF5291CB5C65A3916F68B4322E21F2E265FA1EA3C01A55FDC781B
+ 4CB22AA59522FB095AB612FDFD9C119DE68499C425AC90570083D41A483C43AD
+ 57315874734797BA2927082214990B6D06872F6C991948CB94027C5005737436
+ 7FEE3D90FDD8EE2E3F4C137B9F17DC086BAF30832C85193C8D0411269615CAC0
+ 7149D5EDD6A600864EA0EC488F4E80206C8AB0ADD05D91625B93D72C6D64E1E6
+ F9EC26111D8405966794ADA6757E47DD466CECC48C3EAD74659D527467F77C8F
+ 407697159543C6658AA16B046013E01E5538844FC226F4BE0CC56E7EA0C1A8CE
+ 10D4A93593EDB79EEB9C37A7751C001D6C4F1FCF3B6942BD7F3CD42FD5D71F33
+ 221C31A4DD41793CB9D62280D0DD56E5B46583F5B00AD1F2D22BE35F7F9438E1
+ 441B18CDE2EE0CD983BAA8283C7E9144CBDC59D538D76582227E53A47ED829E8
+ 617654C78DC9EB6AC60F93CB4DBFB4B3204941CB31FCBEE8304B88F43A017BC2
+ ECA83142D0E47A5A9C831D9C1097A1C350887C9114B8CAC2ABB10C107313813E
+ 672D82D63F2449C0B4C5498C4D12B2920016C104A083EE3380B2904F4C944F00
+ F54CD999DF673F506E2C7BEB1F188992247A0480D33D7A9AD143C12BB4BA320E
+ D3989F60B1F43085487121B9D3680C063F7570C1CFFB462DFAE159007E4F67E7
+ 44ADC25C1BA3A6ACE726D600645C44F2CD8035F7DAE1D94842163B79B34C13C3
+ 65E531904FEBF6D0BF17B00A0EEB5874BCFE223CE7C01DA10C9208E0B58E5DA9
+ B264BAF2084B94A5036A9B7E5B4B210ADE5ECC60FA30783CACEB970B2A248664
+ A1C4A964094052957CE1A5F0F1406F3565ADD8D003D2E9165B227C4DF8B108AC
+ 6A925B32264913510E6C112F3CE813682426054724049D4285F90F78D8B6290F
+ 3B421F56B871FDD3E87F6F4404E501821D7F76139EF5AFAE7291B384C2089A87
+ 35A69A32FB4EECD02974D8A983674F78EA28250934FDEC78FDB8A9E3DFBED33F
+ B28E73EF44966D600AAC1E9ADC2C83E7EA6806A3CCFCB39036C3F7DC3629FB85
+ 68E33064E49323F354331EB77DA441ED7EE76A0D202F03745C7BD04096EA108D
+ BDF09E96A79F18EB19F5B5E6E9285D668DD618F1448FA54BDB8625D6073F5227
+ A8E7C4A3038908DCDA3599311E06E6BCFE3DD12060543C04F6DA9794D4B0D786
+ B6572A9495DDE0923BC21EBC0167B5A649C914E4470F4A277F763C875B21C4FD
+ 4E58F92342C1E776E49870401D364C46500E83E9E5B338B06961F35279AD28BD
+ B98ED1A0EE9B5F8F39ABC9B989D367BB6D5A9F702D1075FD2C093327AC3E9502
+ 04263F44010F77FD32E09E4631A0DC2B236962CA316EEF9B60C5269B6F1104C5
+ AE2325DCC276D87970C708BDD2F84583FF565CDDE6D372A6281610FDB1878302
+ 5724C54C45223FC853048AC7313F807D7E822A0227592E60F95BE2DF5C37BBD4
+ E458151FF01CD2959DB493F86FD99EBEEC000C6FEFAD0FB73581FDE48B9BEB59
+ 2D2D0EAC932FF1124FE1F702C2DEF5D542FF0BE8D24CCA2D5F55F9A66D6BF3A7
+ C9B5972AA9AA2BD9A81D4EB5CEA206BEB9005A5625F405A93F398B098C4AC045
+ 8F6E9C6111740ED6CBA6FA709526AAC7DDC095883224841706277637E4C362F7
+ A6C5D2B99AA22CFB20BACFDDAD757E5483B35EF50D6BFAFF49EBB8CDFA70BEBD
+ B43953F72A6F80AA4D81F904A53549FB054FEBF025B1C57B477EDFF853DC1FFA
+ D60767003A94D23A64C9D1B1A036D9FE5D5D74526031A785C6D175D7C4B9E6BC
+ 1A7CBAE5EC179EBD459B19287941F5071EE92F70574E7C2C29372707442B86CC
+ 075486952D47E3FA135D59FBDE7B3F72E7A44CC525C809BD88277435817CA4E7
+ C96CC057257028C2BD10909CAC592152B834921B935D3EF29B98E54529FB6B7B
+ 69A66B80303EF873EE503F098A0D637B21341A4D0FDFF5B59BCF82450A9FF386
+ 3C1DE15A4E33AC9EE7E6A600252285EB21F47E464C7F818EDF8653E1B01351FF
+ DECA4657DEF1E0962CB24F5A629F3BA2776E028B6F0FF3BE0AF9D476FABD88C4
+ DCF6A0840E5D6FC7602729F08CE87A661AEA8B71FE491FC27DD2C3E7102E9441
+ 43BD352C6BBAD2B60544DEEB0140E83CA72734F4F5FE1A66AFC3B87EBA67422B
+ 0D781CE80D159098FFE48529D3CD4486F1750D984C4A99F846235E4416C60926
+ 3313B2E4266F1B492A549D364894A15F9DDB2B0700DE1C7020DAF85C4979F113
+ AE6F7B18331C49B085311B89DEDF0FA570AE0DA1F3E77F52FDAFD48E2E940BA6
+ 04655CD32AF0C2CBC73C8CFF90ED9856A7F9ABCA3E234EBF67520C820619BE5E
+ EEA044A7BDFF3117E3411F5AE9EB23FD6952BB658B965859C60561573D1F3950
+ 383309334B3F4BBBA55C1E200668A7A1256084BFD708EFD6955CB99F5FB5748F
+ 68800FD2FC6ACD91AF2918D423F20E969A05CB733AC359E4762D509A3407E82F
+ 750E7526D9564685FE0C672AB3C4CEAD73194D86E027FC68BDF53A4A2DCD385E
+ 07FC7A56A3F3E421EF973027EE275663CAB9C3C1505535A02F01C3DDE937BD80
+ 84EFE46C2E1034A1F990A728B9C76138FCC66F107EC2853E98F71CCED7512D56
+ 23A0671703B60F5F73EF168C41F98B61354E0F67BB919335921C69882BA61F53
+ 0ABDCC90ED611598621D94D51AE08F213CD81F76EDAECDA76B88C200E8CA5D6A
+ 8A57881DD81DB9130DA5AC9DA5BA226E007C62BE68A46D1F75F1A4D06510694E
+ CB55897D76305168B4BFB0F3AC8044D97AC71307C81535A8205D987025848D7E
+ 60F7A2D4731EC63119622F769F906921402C8790B04339B05309AA4FEE9E53A5
+ 1EDA0A0A76231C165A2965617D77BB55CF41E4669C21351FF0AF1530328A5B7F
+ 488B75E1E10A38C7E913635FF18F6035B0C57899D133A7536148263D617ABF90
+ F7C723FE9AACAE8289690BC6D561B666E78A35AE4EB1D506E5903C8644964708
+ AF538C268B922F023FA7F7E8725CE713888A80EFC77C79A5414085550A8C11B9
+ 8FF7BDAD42E6855FC4566E313D1B63DA181532250BD761B6493C6174867C2D8B
+ 0A9BBCCB0F2B89488EA867CBC6985FD383DD580707CFCA77F7034BBDF7A2AA51
+ 393EFA70C4AEA474998E784B9F1786BC5B53FC70B8CFE7A834E48E9B1A5EC56A
+ E02EA7A04976BE112755BF2D8E7830B9D87C202031563A32EC1587DA310068D8
+ FF4423A580DE39E5B67664344345257BF478EB32ADACA6A85D1D2A3A2469E501
+ BBCC73E822E0BC407FC4858C0B86BCA3C38F1CCD56CCDAFC4CDDDC61DBF5B95A
+ 9F8193842C15116D0A99B2378B84259D33B40A86740C0ECF6AA728A1CEBA72FC
+ 6566D763CE1A338F9D9C77584F680E865B0992D8F5B9DC071A07A1DEBD22361E
+ 074DFEB1BAE70ADEA7280B0EE8F3AE844BBA7EC9BB08854E5D479D4DE6D83020
+ 0DDE0D82AA9F64534BFD621C26FF4D115F0B3E79A8772EBBE37B6E4F7232F59B
+ AA574CBCECFAA8C5D5DF48ADBFB7A119C0CBACE422952A479ECEDAC26C73AD12
+ 8E3C791375E602E8FD56293F26F53D073A4271DBD3D9F6BBE6EE85A5A3827F60
+ DA9D4F28AC85D2930AA86CF9A9
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ cleartomark
+ %%EndFont 
+ %%BeginFont: CMCSC10
+ %!PS-AdobeFont-1.1: CMCSC10 1.0
+ %%CreationDate: 1991 Aug 18 17:46:49
+ % Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+ 11 dict begin
+ /FontInfo 7 dict dup begin
+ /version (1.0) readonly def
+ /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+ /FullName (CMCSC10) readonly def
+ /FamilyName (Computer Modern) readonly def
+ /Weight (Medium) readonly def
+ /ItalicAngle 0 def
+ /isFixedPitch false def
+ end readonly def
+ /FontName /CMCSC10 def
+ /PaintType 0 def
+ /FontType 1 def
+ /FontMatrix [0.001 0 0 0.001 0 0] readonly def
+ /Encoding 256 array
+ 0 1 255 {1 index exch /.notdef put} for
+ dup 45 /hyphen put
+ dup 52 /four put
+ dup 55 /seven put
+ dup 57 /nine put
+ dup 58 /colon put
+ dup 65 /A put
+ dup 67 /C put
+ dup 76 /L put
+ dup 80 /P put
+ dup 82 /R put
+ dup 83 /S put
+ dup 86 /V put
+ dup 99 /c put
+ dup 101 /e put
+ dup 106 /j put
+ dup 109 /m put
+ dup 111 /o put
+ dup 112 /p put
+ dup 114 /r put
+ dup 116 /t put
+ dup 117 /u put
+ dup 121 /y put
+ dup 122 /z put
+ readonly def
+ /FontBBox{14 -250 1077 750}readonly def
+ /UniqueID 5000772 def
+ currentdict end
+ currentfile eexec
+ D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+ 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+ 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+ B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+ 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+ D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A30EB76029337
+ 900ECFB1390CA5C0C3A04528044F266BA17BE487C79B94FAC6D6484684C5BFEA
+ 87BCCC77D40AD11552035E95E3007126418ED49B68468B38A14E88E68A267B98
+ 076F1C9769A5AFBC285E5B158EAC9F926F1D6C0B8F1D57D9C31D25AE27123518
+ 9D2CD92E5689E0213089BD268DA5E47525CB8EABAA4B78A15AEA34705889AB3A
+ FFB8953B5B3482E52BFA0940630ADF8C0AC2177D907324299EE980E850F203CD
+ B627962F43D5A678C44243CDE97853BDC6AB45FD5C09AD274DAF89929F583CC9
+ CCC24BDFC68B92111055ABA5F26D2DC67C70906F71C2957701D65AE746A60C30
+ 40E6CB24B97FCDAD0487AE38A201FBF0E41BABD2181981A71940F1E707F91E5D
+ C8CA50CB16D8702D188E56D014D92F76CE0B52ABDB9110E32438D2BBF3E6A40B
+ 7B005F10BB437812CAC6ED2996F7606DC962C4FDE207FF322782C343DF44CEC5
+ FF06A55C630C20E9AE1B0D1C5673753C43BA0767D65D1B451CC6380D8BB3C4DC
+ 81E8FD8AA79BE993218686F29D3CD925566DD587F541A0DA1B1CC3BCEA2E6C7D
+ 5E1016F6917A871F1BBAD96AF9E867735017119A381FCF33EB2D3E1E7093FD90
+ CDB0CED4818CFD9E201A03430CEC713620BE0D3254158931FB657C6AD4B2482A
+ 0E7D070D7497892E9E942DF58E88CAF0C8221BF36BF7C435BF2C683A4A2EF4CB
+ E85820A8AD3486155A40143011BA9D76297F46DEF69ECA4596D6E4CAABF84091
+ 22A96A4BC78A8DD072FEB759A68A44BE1164638B6D952147EE3C628F9A022060
+ 1D1941E73310943FA782532ABCCC88593FD63E7E2CECF6665C04DB48D641ABD3
+ AE1BB468638681E96394B9E7BED1D13E534B897DB90EA6EC706BAAE06BE2FEFF
+ 1DFA5258113E9B4CD2D36655973864574E0E8D6291E48A8C62203F679B7ED838
+ 6F7CBD523C2943ECA994CACE604C85801C5F2E6169A86E3A068F5871E589E3E0
+ 5621A3F54C48627694F90228DE86E4B0E4EEBD8359E4CA543AB5EEF7848308A2
+ D17256ED2E3E536A0DC7CF02EB0C6B8E785025B8AE794E9838A1E2432E6BAC67
+ DA2B5B5B98B46B70AA2FAC8634EC88BBF6538723E1246BC9A46B620F2890586D
+ BFDEA8690F5F14EE5BD949335CB0F32FF3B871251FF5B10B760D179D3D5E80C1
+ 55A378363EAA7D637F5E9262F3BBDF678DEDC99099F74711EBFA2C72E51839DE
+ 02D7B2D77A119416300AAFF69440A995CD269C1F49A89D54C9C2AC3D1C263D5B
+ EFDB87150DF26D20CABE819B69B63CA4ABDCD7B960C4E7E8F7EFBF605674A5DB
+ B0ABDF272B12CDF688341C8B6D89B8F81EB756691E748BFCADFB61DAF8CFF468
+ B4CCB973045447507EF047408BD7F9B3AE5AE316B9B7709AD989DCE874669A73
+ BB1D05548723802B5C320C94B9F98D1E6A661A7ABF40FEE5C9B5C6F164E7D06B
+ 316BA848BCE1BA470AF1DF2C596705C73C23182FB823E07B3779193ECC2508BD
+ C1057FC8176CF08D28C8EB0DB18599363D6B82786EE4587BAF96BBD53B593048
+ DC9927CE7B484B23068F19A7A8CA46DE57D834BB6803FDC08DD30499FA1C394E
+ FDD5AF9A47F4F4DF01B732E5146CBF4DA43807E067474A5C74843CFAAC8F397A
+ A20A1CFE3835F771A0C1D253A172374062DDEC90756B187CA45CCB0A30465521
+ F66356E8ED1FD51A50E41F49C6FC1666843E320DF30728A12D3FAE2E850F3EEE
+ 08451248D54ADFF5748D4F369FC591A0C2477F00E3BC152476C5F0CF14127591
+ 6EB6A270212197F536A86F3F8A44BC904B519E65722CF98B385EC6DA35B87BCB
+ 8BF980CA56966BF0DB10C2FD2CAA0197A5A22E8F839DF887AE1C0DA37FEE5EE7
+ 11984A5C21C8C2CE7A5DF906D6F2C9F257B19605420D95C2E0A1B7653912F56E
+ 87E560676FB6B27C525ADBAE35E782CC35423258F10B469F5D69CF416C527E89
+ 402BBB857E80EC8ED2302CE7D6571C51A17B294FA6BF70F7A1DEE62C6A5C4370
+ 4474CD8DA544AEBE084E875E37E982D8756B4E2D8DEA39E0D4213BA264FCAF3F
+ D462690EFDB9001E7401143D5E7A9F994F4C7C24A5BA8B612553021EAAD11C2D
+ 0CFD2E1A7A5EBB1969FD970E1FEE33096EAC57AEC9554A91C063777731FAEE49
+ 88C7266E673185B830AA3DF5E7A36EBADC8724658950FE7F5E95F4730961B441
+ F7B4D779055EBB13C2CA65EA150A38189EDEC520AC2B630A00858E9A1FA45DFC
+ 914A47F45ED57A206192F8AAFE1D73450C674824DB72EF8379DE2864364613EF
+ EF5EB980BCD61E817DC1C099B5CC1FDD66C0E3D5D89D14F0868E69C2DB095A15
+ 9A01FFC163F43FA447019259A178C84038F609DA69D014E8B7276DA4056ED405
+ 7BA80E15FBE4FCD6FEC25D310FCB707214BFC0F68FF7E1662BD5D50C250204CA
+ 7593D1CF1C9F5AC504D62C7D1FFA23C0EA8F461BC2CA0AAE15A21B840F9A3105
+ 402B777E0B2609E22D9168BAED5D768D27B7BFBA49BB838D9915CC1B739514DB
+ 855566F931A224AFB11198894CFE0EB7B5AECC52979F2753B873BDCEFC9BC4A4
+ 9B940E3C6D73C04D2063ACBBDF7C081F84D62D452A23066E7A4B3E724ADF0F75
+ 8221CBE7B9754E704EA88545D63B02FF4EC7E34FE786F96E5583BDB6D26B2A82
+ C6475D5AF5E3945AB57868B8D76C5059E97D6A06A39442B577A8645DA7CD0092
+ B315B24EE66E1D224FE0DDF7F640C0C47298EA6C3C48513C1E98391184CC6525
+ ACB64852916CA5C40B8FCB4C24F4FADF64A192F554E09EDBC2A9E99E4E00AE5F
+ 20245C6E0CEC6CAA89EA1CFCD5E98E696796CE250FD688A5C2CC0D3AC95B557B
+ 91BC9FDD702C814AE322EF5636D01C55B16349C11BB18710A2D1BDA208D8919E
+ 893A9593B4B715796CDF9F8F5889C3936EC638EABBD49026E7D81C5C32E62098
+ 44DED163E316A1EA4216075B32B96AFC4DC7D11186CDAD614892061CBA019392
+ 2F30F41B0DBE813964362DAA4D7479369321138E177FF13D51A70EE70939DE45
+ 9FF4C4ADB7DA9A4E6D1333401EA6A0E8B93A4476BD0AAADEECFA05950A093960
+ 3E74D04C2FAB5B2B44F1E184B1359465FFB6353A7245A0EF9121EB5BCF87008F
+ 25ED2D25B7E000C3DE6A26D4FF49D9122C613C278B36D7ECDB0568156B29306B
+ 06C9BCAFD049B0A9EED8EC39B736242E3FD3A70B5F97C9E48A36F108CBA4AC86
+ DC2CB6C94860DA7029C189AF9F3117A194E23E8B86752649C32CED898A3874AF
+ C41FFA509D7F80F2BA11679999C914C4F84027C0034CE275B78E24828B955216
+ 2475006F250CCABBCEB92D7BCCC8EB29E2FD510D120FE1CAE8FC0D9D4DF7EB27
+ AD43894E5C7D5FE28D7B5E79146E2FC10B18A3B3170BBC66D54884A1A272BA72
+ 9219F0E35F71AA72A028C09BA4786A576E80D0C729221A8E4395DACDF7447CE2
+ 02E418BA4C06B7E20C04146BA4232DBE5D6EBE4FB9A07AB5684CA6C5762EDB20
+ ED26EEA9526B9571DA00305FDF32B9D3F5B0B826282C36386947E32F2B261179
+ 4BDDDBDEBD15A4C23012FDAA8924ADCFDE0E3AC5D9D475C62E732B12BA3035E1
+ 60D79C439FF20AD36F399FF71B8A39A96F3DA7B7DD863B51F8901DFC307B4E15
+ 7C8B8064AA49575CE0B650D89C8C301C1FA7C52540373EDC797CF057CE8C2A29
+ 2CE809C333374310849C4AD9D9F57D11E3F4A9D9E1080206EC995ED8B0C2B5C3
+ 0D05E81D7FA34C00383006E659D764A9DA8DA27781D03AA8FE504667676A5659
+ AE7A50E60DFD29F07BB43014BE740FC4EB81762B8A64D8C284144189AC9ED4D9
+ BAB056DAEF8280654A0E188F5152C0AF18349DFA59048FBC9CB0EECAECE5854A
+ 30AADECA3879CE3DFE7F866EA8F3DFC914378E30DD57848CB32CA691EEBB965E
+ 306FD7DF58FD8050819C4E61F449BBAD88D09259322DD91D4A6CFB040BBECD05
+ 928AFC069D7C2AE770868F5DEDAFF9D08BC893A036BE8F26D561EE08F49F14D3
+ B97DC63321BD71710B30B54B7754AFB9B26D25B5E35A4799DD909E6DE2923DC2
+ B77477ADB6D2B4562E6D904C529DAAEBC1C8927F5455086F18ADE9BAB2418E72
+ B0C88BBCF3412F778B1FF9061F478484728909FAFD37E90BB5FDE1E40EE5CBD2
+ 49CEB48C91DF15FF184F25BC78BA62CD40F51CFD0E08A2C37E56396F2CAE8171
+ F6B6037FB0991D2C50597C3E1CB9762248461D6E02E6432E8FE637F2B8D3ACF4
+ 92602536F2FB1BD254A80E6A06BD6DE4E096034FA86E6F7A0242723E908334B4
+ BC131E81EF2143208C499ACB40EA548D1CB67BBB909DD48389C3A6FE10570149
+ C185250C60B590DA3FB26A2A53D741A44A1E6E7FF69B95ED09BB7F2F384F98EC
+ 01E81E784A3E94D3B633DB258A80017EB2434D65827B2B1C31AE248FA35F36C7
+ 276D3616AB69CE982586EA3FF33B0E72B046647146B0C1E7A989585C0819C85E
+ 7C15B7B084F0CBD4D952B7575164209061ECC2A8D2F86502276AC98666CEC96F
+ 643CE50B7F515CBBD836BD7F765E2EEA84C2769BA0CCEB79D8BE2319B0325EEF
+ 50FDF616C5C9A151A2C63EF70EDB084AB4A3FEF5AD95879D6880EC757E6E04AD
+ 35FAAB9D2B2865A47486D04385DA76F8E45FA45DC6ECC0462AC179319CE16B14
+ 181C2D3B15462BDFFBCF16C65C6C538F380E384A71703185ED3B536D40B6A5E3
+ 4853794A30366A1D1F076D369E7B624B2A84C008BE358FB4D69609CE60DDEB9C
+ 585A9F143DF21BEFD53EBA6E43B4F4A740C493D79B9247458DD88F8C92E10E05
+ 283814994B12DCC81A6EAC9A7737AA12F3A4BD93AE65DC1C8B48F64802A828AB
+ B9577AB4AE9A7BDBCA4F7B569762BB7CFC194C9A419D864CADB41A19D3E900C2
+ 99C4E54150E075C7A93F6B956B33AAA11001C2E61953409A24C755C5C557AB82
+ 12472DC6594FB608E562CA97EB15A24E40C7597EA5769B54EF34D0AC415B6FCB
+ 60DB1C8D3C90180C03C378EBBDAF3CECB37A844F486BC9C1A7B08FA48D1E588E
+ F9D4803F1E47656683BDFBB6331EB747F41CFEC804A2E268D870FA500DFA0738
+ FC66D17E595538DF7B7FCB23448EC544241F350FA6F3F093C9B8D6044E69F5E3
+ 942F70BF5721AA4ECC702B9A48FE21D29CE881649F72B497156B8F6480F5C04F
+ 32AB09654350E9801FEE13121E0EAE5A817848897E61993CFF81F755CE087E79
+ 06C16A47D38BA6EEEE3F1E6ED36D263CBCDE8F922A1C80CD3EFE67CCF3508B37
+ 55716A7FF01D41821C5FBDD42B7DA827FD79296443ADDC6B374F519142C6DF60
+ 7AD4330815D0B78CE6A0D3EB6626DF3A4C1346B4537A4B54ACB5535FD1718D60
+ 43DEF02A3E4D4056BE71D875B6C3ADBC07171AE3DFC39A1227F2CD770B02E03F
+ C6B938A154DCB0CEDE044093D1588C190F265A28907CB4A7B5AAF78315E718F4
+ 34FDEC86912AEAD2143E46DEC4A58F638696322FA929B06C0C752405B2B62759
+ ED2512F19A77374436AE5973AEADDD2EA732E69D891A53E7066E8AFBE125A8CA
+ 80E85D2998C79C4E945D669571FED07CB85DABE29A38CB2A5CE89B41C47F73F2
+ 02D0EF2424C26E2E462CB7DFE7EFC7AD8CFE7948C395E42213DD2EC49BA2F411
+ 5F3FF907B06CC3C1D5171128C7BAB3C9FBD770C05A7921405F3DC5847FCF8793
+ 19A93997E03FED28712AAF0F5CF734F211D145404F4F3DDCF0DE843C11577A0C
+ 83CDD80F46E3428869232F0F9A70B39F57D129715567993D23867DBA8DEBEB91
+ D90A5EC21A54B25A5B2DAB5E8D413C5331E0C65A1F1E6DA8B03DEDB6984BFE97
+ 02446E5970C5C03FAFCF78D13E9AAF84AF27493F1C2F4A81803C4E236841D788
+ FFCD944381A02D5079445D5F07062AC1BB3889E73FED0778D18C08A54E8575A1
+ E34B08AD5CE46EC518B0EF37A1CFF5D7C97BEA95862C8EE13442B7DEAE4EFCE3
+ 5119F17771D7EACA6ABDB1941DA4B5D367D68214DC290AAE867BF2FA5447B6BA
+ FD324D8B148DEF92CC72EA8F091C433891DE13416626CE7150380C50079BE67F
+ 120C20D165E62420EC3BBD8CB9A8964A42893C282CDC599725680A17FEAC5F4E
+ CA69FB93A2A184A04E5FD57B4820426DCC0968AA98A60B0565B56AEC0D4D619F
+ 0CE97B9E5F92F1A89D
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ cleartomark
+ %%EndFont 
+ TeXDict begin 40258431 52099146 1000 1200 1200 (final.dvi)
+ @start /Fa 139[50 63 10[78 104[{}3 116.231 /CMMI7 rf
+ /Fb 133[68 81 2[76 89 55 68 70 1[85 85 93 136 42 76 1[51
+ 85 76 51 76 85 76 76 85 9[166 2[119 93 121 1[113 127
+ 1[149 104 1[87 64 1[128 1[113 125 119 117 123 6[51 3[85
+ 2[85 1[85 1[85 51 59 3[68 68 40[{}47 166.044 /CMTI10
+ rf /Fc 134[101 2[101 106 74 1[79 2[95 106 159 53 2[53
+ 3[88 1[85 1[93 13[106 3[143 8[120 125 18[95 95 2[53 46[{}20
+ 166.044 /CMBX10 rf /Fd 134[118 118 1[118 125 87 88 92
+ 1[125 112 125 187 62 118 1[62 1[112 68 102 125 100 125
+ 109 9[232 169 2[125 2[153 2[213 135 2[83 2[141 1[172
+ 162 1[169 11[112 112 112 112 112 2[62 46[{}38 199.253
+ /CMBX12 rf /Fe 134[74 74 1[74 78 55 56 55 1[78 71 78
+ 118 39 1[43 39 78 71 1[63 78 63 78 71 4[71 4[145 106
+ 8[129 88 10[106 5[39 12[39 1[39 9[71 22[82 11[{}32 132.835
+ /CMR8 rf /Ff 206[61 49[{}1 99.6264 /CMR6 rf /Fg 133[87
+ 87 87 1[87 87 87 87 87 1[87 87 87 87 87 87 1[87 87 87
+ 87 87 87 87 87 87 9[87 87 1[87 87 87 1[87 87 87 87 87
+ 87 1[87 87 87 2[87 87 87 87 87 5[87 87 87 87 87 87 87
+ 87 87 87 87 87 87 87 3[87 87 2[87 1[87 87 34[{}61 166.044
+ /CMTT10 rf /Fh 206[66 49[{}1 116.231 /CMR7 rf /Fi 131[166
+ 83 74 88 88 120 88 92 65 65 65 88 92 83 92 138 46 88
+ 51 46 92 83 51 74 92 74 92 83 3[46 83 46 1[125 125 171
+ 125 125 120 92 122 1[113 129 125 152 104 129 85 60 125
+ 130 108 113 127 120 118 125 5[46 46 83 83 83 83 83 83
+ 83 83 83 83 83 46 55 46 129 1[65 65 46 1[138 2[83 46
+ 17[138 138 92 92 97 11[{}83 166.044 /CMR10 rf /Fj 137[142
+ 149 105 106 110 1[149 134 149 224 75 142 1[75 1[134 82
+ 123 149 120 1[131 9[278 4[201 8[100 3[177 206 194 191
+ 12[134 134 134 134 134 10[209 38[{}31 239.103 /CMBX12
+ rf /Fk 152[100 100 102[{}2 199.253 /CMSY10 rf /Fl 138[108
+ 1[77 76 3[108 163 1[103 1[54 108 98 1[87 108 87 108 98
+ 19[179 5[153 2[149 1[138 1[152 12[98 98 98 98 1[54 1[54
+ 44[{}25 199.253 /CMR12 rf /Fm 133[144 176 3[176 170 1[173
+ 1[160 182 1[214 2[122 4[160 1[170 12[234 2[175 230 1[213
+ 3[196 8[226 1[234 6[92 159 1[159 2[159 6[108 45[{}23
+ 286.924 /CMCSC10 rf end
+ %%EndProlog
+ %%BeginSetup
+ %%Feature: *Resolution 1200dpi
+ TeXDict begin
+  end
+ %%EndSetup
+ %%Page: 1 1
+ TeXDict begin 1 0 bop 1084 1743 a Fm(CS)108 b(497yyz)f(Pr)-6
+ b(oject)107 b(Repor)-19 b(t:)141 b(LL)-33 b(V)g(A-emu)2578
+ 2225 y Fl(Misha)65 b(Brukman)195 b(Brian)65 b(Gaek)-5
+ b(e)2718 2457 y Fk(f)p Fl(brukman,gaek)g(e)p Fk(g)p Fl(@uiuc.edu)3088
+ 2848 y(Decem)g(b)5 b(er)63 b(12,)i(2003)1029 3563 y Fj(1)270
+ b(In)-7 b(tro)7 b(duction)91 b(and)f(Bac)-7 b(kground)1029
+ 3927 y Fi(The)52 b(LL)-18 b(VM)50 b(compiler)h(infrastructure)g([11])h
+ (emplo)-5 b(ys)52 b(an)f(in)-5 b(termediate)52 b(represen)-5
+ b(tation)1029 4126 y(whic)g(h)62 b(is)f(similar)g(to)f(a)h(t)-5
+ b(yp)5 b(ed)60 b(assem)-5 b(bly)62 b(language.)89 b(LL)-18
+ b(VM's)60 b(represen)-5 b(tation)61 b(is)g(fully)1029
+ 4326 y(t)-5 b(yp)5 b(ed,)70 b(RISC-lik)-5 b(e,)71 b(has)d(data-\015o)-5
+ b(w)68 b(information)g(in)f(Static)g(Single-Assignmen)-5
+ b(t)69 b(form)1029 4525 y(built-in,)50 b(and)d(is)g(p)5
+ b(o)-5 b(w)g(erful)47 b(enough)g(to)f(express)h(an)-5
+ b(y)46 b(C)h(or)f(C++)h(program,)i(t)-5 b(yp)5 b(e-safe)46
+ b(or)1029 4724 y(otherwise.)73 b(It)52 b(is)h(sup)5 b(erior)53
+ b(to)e(t)-5 b(ypical)53 b(b)-5 b(yteco)5 b(de)51 b(and)i(mac)-5
+ b(hine-co)5 b(de)53 b(formats)f(b)5 b(ecause)1029 4923
+ y(it)49 b(retains)h(sophisticated)g(con)-5 b(trol-\015o)g(w)50
+ b(and)g(t)-5 b(yp)5 b(e)48 b(information)i(ab)5 b(out)49
+ b(the)g(v)-9 b(alues)49 b(used)1029 5123 y(in)73 b(eac)-5
+ b(h)72 b(and)h(ev)-5 b(ery)72 b(instruction)g(of)g(ev)-5
+ b(ery)72 b(function,)k(th)-5 b(us)73 b(making)g(useful)f(compiler)1029
+ 5322 y(analyses)77 b(and)e(optimizations)h(c)-5 b(heap)5
+ b(er)76 b(to)e(p)5 b(erform.)134 b(The)75 b(LL)-18 b(VM)74
+ b(system)i(includes)1029 5521 y(static)j(and)g(dynamic)g
+ (\(just-in-time\))f(compilers,)86 b(as)79 b(w)-5 b(ell)79
+ b(as)g(a)f(small)i(and)f(gro)-5 b(wing)1029 5720 y(suite)56
+ b(of)f(program)h(analysis)h(to)5 b(ols)55 b(and)h(optimizations.)1279
+ 5920 y(T)-14 b(raditional)48 b(arc)-5 b(hitectures)47
+ b(use)i(the)e(hardw)-5 b(are)48 b(instruction)g(set)g(for)f(dual)i
+ (purp)5 b(oses:)1029 6119 y(\014rst,)82 b(as)77 b(a)f(language)g(in)h
+ (whic)-5 b(h)76 b(to)g(express)g(the)g(seman)-5 b(tics)77
+ b(of)f(soft)-5 b(w)g(are)77 b(programs,)1029 6318 y(and)68
+ b(second,)j(as)d(a)f(means)h(for)f(con)-5 b(trolling)68
+ b(the)f(hardw)-5 b(are.)110 b(The)67 b(thesis)h(of)f(the)g(Lo)-5
+ b(w-)1029 6517 y(Lev)g(el)45 b(Virtual)f(Arc)-5 b(hitecture)44
+ b(\(LL)-18 b(V)g(A\))41 b([1])k(pro)9 b(ject)44 b(is)h(to)g(decouple)g
+ (these)f(t)-5 b(w)g(o)45 b(uses)h(from)1029 6717 y(one)68
+ b(another,)i(allo)-5 b(wing)68 b(soft)-5 b(w)g(are)68
+ b(to)f(b)5 b(e)67 b(expressed)g(in)h(a)f(seman)-5 b(tically)68
+ b(ric)-5 b(her,)71 b(more)1029 6916 y(easily-manipulated)f(format,)i
+ (and)d(allo)-5 b(wing)69 b(for)f(more)h(p)5 b(o)-5 b(w)g(erful)68
+ b(optimizations)h(and)1029 7115 y(whole-program)57 b(analyses)f
+ (directly)f(on)h(compiled)g(co)5 b(de.)1279 7314 y(The)54
+ b(seman)-5 b(tically)55 b(ric)-5 b(h)55 b(format)f(w)-5
+ b(e)54 b(use)h(in)g(LL)-18 b(V)g(A,)52 b(whic)-5 b(h)55
+ b(is)g(based)g(on)f(the)g(LL)-18 b(VM)1029 7514 y(compiler)70
+ b(infrastructure's)f(in)-5 b(termediate)69 b(represen)-5
+ b(tation,)73 b(can)c(b)5 b(est)68 b(b)5 b(e)69 b(understo)5
+ b(o)g(d)1029 7713 y(as)51 b(a)g(\\virtual)f(instruction)h(set".)72
+ b(This)51 b(means)g(that)f(while)h(its)f(instructions)i(are)e(closely)
+ 1029 7912 y(matc)-5 b(hed)42 b(to)e(those)h(a)-5 b(v)c(ailable)41
+ b(in)h(the)e(underlying)i(hardw)-5 b(are,)44 b(they)c(ma)-5
+ b(y)42 b(not)e(corresp)5 b(ond)1029 8111 y(exactly)58
+ b(to)g(the)g(instructions)i(understo)5 b(o)g(d)59 b(b)-5
+ b(y)59 b(the)f(underlying)i(hardw)-5 b(are.)84 b(These)59
+ b(un-)1029 8311 y(derlying)49 b(instructions)f(w)-5 b(e)48
+ b(call)g(the)g(\\implemen)-5 b(tation)48 b(instruction)h(set.")71
+ b(Bet)-5 b(w)g(een)47 b(the)1029 8510 y(t)-5 b(w)g(o)68
+ b(la)-5 b(y)g(ers)68 b(liv)-5 b(es)68 b(the)f(translation)h(la)-5
+ b(y)g(er,)71 b(t)-5 b(ypically)67 b(implemen)-5 b(ted)68
+ b(in)g(soft)-5 b(w)g(are.)110 b(The)1029 8709 y(structure)56
+ b(of)f(this)h(t)-5 b(w)g(o-la)g(y)g(er)56 b(arc)-5 b(hitecture)55
+ b(can)g(b)5 b(e)55 b(seen)h(in)f(Figure)h(1.)1279 8908
+ y(In)73 b(this)g(pro)9 b(ject,)78 b(w)-5 b(e)73 b(ha)-5
+ b(v)g(e)73 b(tak)-5 b(en)73 b(our)h(next)e(logical)h(steps)h(in)f(this)
+ h(e\013ort)e(b)-5 b(y)74 b(\(1\))1029 9108 y(p)5 b(orting)48
+ b(the)g(en)-5 b(tire)48 b(Lin)-5 b(ux)49 b(k)-5 b(ernel)48
+ b(to)f(LL)-18 b(V)g(A,)46 b(and)j(\(2\))e(engineering)h(an)h(en)-5
+ b(vironmen)g(t)49 b(in)1029 9307 y(whic)-5 b(h)64 b(a)f(k)-5
+ b(ernel)63 b(can)g(b)5 b(e)63 b(run)h(directly)e(from)h(its)g(LL)-18
+ b(VM)62 b(b)-5 b(yteco)5 b(de)63 b(represen)-5 b(tation)63
+ b(|)1029 9506 y(essen)-5 b(tially)-14 b(,)58 b(a)f(minimal,)i(but)d
+ (complete,)h(em)-5 b(ulated)57 b(computer)g(system)g(with)f(LL)-18
+ b(V)g(A)54 b(as)1029 9705 y(its)g(nativ)-5 b(e)53 b(instruction)g(set.)
+ 2843 9645 y Fh(1)2991 9705 y Fi(The)g(em)-5 b(ulator)54
+ b(w)-5 b(e)53 b(ha)-5 b(v)g(e)53 b(in)-5 b(v)g(en)g(ted,)55
+ b Fg(llva-emu)p Fi(,)g(executes)p 1029 9844 2292 7 v
+ 1214 9951 a Ff(1)1284 9998 y Fe(W)-12 b(e)34 b(use)g(\\LL)-16
+ b(V)g(A)35 b(instruction)g(set")e(and)i(\\LL)-16 b(VM)34
+ b(b)l(yteco)t(de")g(in)l(terc)l(hangeably)h(in)h(this)e(pap)t(er;)39
+ b(there)3852 10511 y Fi(1)p eop end
+ %%Page: 2 2
+ TeXDict begin 2 1 bop 2417 2680 a @beginspecial 0 @llx
+ 0 @lly 415 @urx 253 @ury 1080 @rhi @setspecial
+ %%BeginDocument: llva.eps
+ %!PS-Adobe-2.0 EPSF-2.0
+ %%Title: Figures/archoverview.fig
+ %%Creator: fig2dev Version 3.2 Patchlevel 3d
+ %%CreationDate: Thu Jun  5 20:29:22 2003
+ %%For: vadve at tank.cs.uiuc.edu (Vikram Adve)
+ %%BoundingBox: 0 0 415 253
+ %%Magnification: 1.0000
+ %%EndComments
+ /$F2psDict 200 dict def
+ $F2psDict begin
+ $F2psDict /mtrx matrix put
+ /col-1 {0 setgray} bind def
+ /col0 {0.000 0.000 0.000 srgb} bind def
+ /col1 {0.000 0.000 1.000 srgb} bind def
+ /col2 {0.000 1.000 0.000 srgb} bind def
+ /col3 {0.000 1.000 1.000 srgb} bind def
+ /col4 {1.000 0.000 0.000 srgb} bind def
+ /col5 {1.000 0.000 1.000 srgb} bind def
+ /col6 {1.000 1.000 0.000 srgb} bind def
+ /col7 {1.000 1.000 1.000 srgb} bind def
+ /col8 {0.000 0.000 0.560 srgb} bind def
+ /col9 {0.000 0.000 0.690 srgb} bind def
+ /col10 {0.000 0.000 0.820 srgb} bind def
+ /col11 {0.530 0.810 1.000 srgb} bind def
+ /col12 {0.000 0.560 0.000 srgb} bind def
+ /col13 {0.000 0.690 0.000 srgb} bind def
+ /col14 {0.000 0.820 0.000 srgb} bind def
+ /col15 {0.000 0.560 0.560 srgb} bind def
+ /col16 {0.000 0.690 0.690 srgb} bind def
+ /col17 {0.000 0.820 0.820 srgb} bind def
+ /col18 {0.560 0.000 0.000 srgb} bind def
+ /col19 {0.690 0.000 0.000 srgb} bind def
+ /col20 {0.820 0.000 0.000 srgb} bind def
+ /col21 {0.560 0.000 0.560 srgb} bind def
+ /col22 {0.690 0.000 0.690 srgb} bind def
+ /col23 {0.820 0.000 0.820 srgb} bind def
+ /col24 {0.500 0.190 0.000 srgb} bind def
+ /col25 {0.630 0.250 0.000 srgb} bind def
+ /col26 {0.750 0.380 0.000 srgb} bind def
+ /col27 {1.000 0.500 0.500 srgb} bind def
+ /col28 {1.000 0.630 0.630 srgb} bind def
+ /col29 {1.000 0.750 0.750 srgb} bind def
+ /col30 {1.000 0.880 0.880 srgb} bind def
+ /col31 {1.000 0.840 0.000 srgb} bind def
+ 
+ end
+ save
+ newpath 0 253 moveto 0 0 lineto 415 0 lineto 415 253 lineto closepath clip newpath
+ -34.2 349.1 translate
+ 1 -1 scale
+ 
+ /cp {closepath} bind def
+ /ef {eofill} bind def
+ /gr {grestore} bind def
+ /gs {gsave} bind def
+ /sa {save} bind def
+ /rs {restore} bind def
+ /l {lineto} bind def
+ /m {moveto} bind def
+ /rm {rmoveto} bind def
+ /n {newpath} bind def
+ /s {stroke} bind def
+ /sh {show} bind def
+ /slc {setlinecap} bind def
+ /slj {setlinejoin} bind def
+ /slw {setlinewidth} bind def
+ /srgb {setrgbcolor} bind def
+ /rot {rotate} bind def
+ /sc {scale} bind def
+ /sd {setdash} bind def
+ /ff {findfont} bind def
+ /sf {setfont} bind def
+ /scf {scalefont} bind def
+ /sw {stringwidth} bind def
+ /tr {translate} bind def
+ /tnt {dup dup currentrgbcolor
+   4 -2 roll dup 1 exch sub 3 -1 roll mul add
+   4 -2 roll dup 1 exch sub 3 -1 roll mul add
+   4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+   bind def
+ /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+   4 -2 roll mul srgb} bind def
+ /reencdict 12 dict def /ReEncode { reencdict begin
+ /newcodesandnames exch def /newfontname exch def /basefontname exch def
+ /basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
+ basefontdict { exch dup /FID ne { dup /Encoding eq
+ { exch dup length array copy newfont 3 1 roll put }
+ { exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
+ newfont /FontName newfontname put newcodesandnames aload pop
+ 128 1 255 { newfont /Encoding get exch /.notdef put } for
+ newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
+ newfontname newfont definefont pop end } def
+ /isovec [
+ 8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
+ 8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
+ 8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
+ 8#220 /dotlessi 8#230 /oe 8#231 /OE
+ 8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
+ 8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
+ 8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
+ 8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
+ 8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
+ 8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
+ 8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
+ 8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
+ 8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
+ 8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
+ 8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
+ 8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
+ 8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
+ 8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
+ 8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
+ 8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
+ 8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
+ 8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
+ 8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
+ 8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
+ 8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
+ 8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
+ /Times-BoldItalic /Times-BoldItalic-iso isovec ReEncode
+ /Times-Bold /Times-Bold-iso isovec ReEncode
+ /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+ /$F2psEnd {$F2psEnteredState restore end} def
+ 
+ $F2psBegin
+ 10 setmiterlimit
+  0.06000 0.06000 sc
+ %
+ % Fig objects follow
+ %
+ /Times-BoldItalic-iso ff 285.00 scf sf
+ 2761 5175 m
+ gs 1 -1 sc (Hardware Processor) dup sw pop 2 div neg 0 rm  col0 sh gr
+ /Times-BoldItalic-iso ff 285.00 scf sf
+ 2403 2109 m
+ gs 1 -1 sc (Application Software) dup sw pop 2 div neg 0 rm  col0 sh gr
+ /Times-BoldItalic-iso ff 285.00 scf sf
+ 3834 2720 m
+ gs 1 -1 sc (Operating System) dup sw pop 2 div neg 0 rm  col0 sh gr
+ /Times-BoldItalic-iso ff 285.00 scf sf
+ 4191 3331 m
+ gs 1 -1 sc (Kernel) dup sw pop 2 div neg 0 rm  col0 sh gr
+ % Polyline
+ 2 slj
+ 7.500 slw
+ gs  clippath
+ 4785 4560 m 4823 4614 l 4959 4522 l 4831 4570 l 4921 4467 l cp
+ eoclip
+ n 5980 4579 m 5979 4578 l 5977 4576 l 5972 4572 l 5966 4566 l 5957 4559 l
+  5945 4549 l 5931 4537 l 5915 4524 l 5896 4510 l 5876 4494 l
+  5854 4479 l 5831 4463 l 5806 4448 l 5780 4433 l 5752 4418 l
+  5722 4405 l 5690 4392 l 5656 4381 l 5619 4371 l 5580 4362 l
+  5537 4356 l 5491 4352 l 5443 4350 l 5395 4352 l 5347 4356 l
+  5302 4362 l 5258 4371 l 5218 4381 l 5179 4392 l 5143 4405 l
+  5108 4418 l 5074 4433 l 5042 4448 l 5011 4463 l 4982 4479 l
+  4954 4494 l 4928 4510 l 4904 4524 l 4882 4537 l 4863 4549 l
+  4848 4559 l 4836 4566 l
+  4817 4579 l gs col-1 s gr gr
+ 
+ % arrowhead
+ 0 slj
+ n 4921 4467 m 4831 4570 l 4959 4522 l  col-1 s
+ % Polyline
+ 2 slj
+ gs  clippath
+ 4823 3661 m 4785 3715 l 4921 3808 l 4831 3706 l 4959 3753 l cp
+ eoclip
+ n 5980 3697 m 5979 3698 l 5977 3700 l 5972 3704 l 5966 3710 l 5957 3717 l
+  5945 3727 l 5931 3739 l 5915 3752 l 5896 3766 l 5876 3782 l
+  5854 3797 l 5831 3813 l 5806 3828 l 5780 3843 l 5752 3858 l
+  5722 3871 l 5690 3884 l 5656 3895 l 5619 3905 l 5580 3914 l
+  5537 3920 l 5491 3924 l 5443 3926 l 5395 3924 l 5347 3920 l
+  5302 3914 l 5258 3905 l 5218 3895 l 5179 3884 l 5143 3871 l
+  5108 3858 l 5074 3843 l 5042 3828 l 5011 3813 l 4982 3797 l
+  4954 3782 l 4928 3766 l 4904 3752 l 4882 3739 l 4863 3727 l
+  4848 3717 l 4836 3710 l
+  4817 3697 l gs col-1 s gr gr
+ 
+ % arrowhead
+ 0 slj
+ n 4959 3753 m 4831 3706 l 4921 3808 l  col-1 s
+ % Polyline
+ 15.000 slw
+ n 614 4650 m
+  5086 4650 l gs col0 s gr 
+ % Polyline
+ 45.000 slw
+  [150] 0 sd
+ n 614 1651 m 5086 1651 l 5086 5774 l 614 5774 l
+  cp gs col17 s gr  [] 0 sd
+ % Polyline
+ 15.000 slw
+  [90] 0 sd
+ n 3297 3636 m 3297 2873 l
+  5086 2873 l gs col0 s gr  [] 0 sd
+ % Polyline
+ n 2761 3636 m 2761 2415 l
+  5086 2415 l gs col0 s gr 
+ % Polyline
+ n 614 3636 m
+  5086 3636 l gs col0 s gr 
+ /Times-Bold-iso ff 285.00 scf sf
+ 5443 5184 m
+ gs 1 -1 sc (ISA \(I-ISA\)) col0 sh gr
+ /Times-Bold-iso ff 285.00 scf sf
+ 5443 4879 m
+ gs 1 -1 sc (Implementation) col0 sh gr
+ /Times-BoldItalic-iso ff 285.00 scf sf
+ 2761 4410 m
+ gs 1 -1 sc (translator) dup sw pop 2 div neg 0 rm  col0 sh gr
+ /Times-BoldItalic-iso ff 285.00 scf sf
+ 2761 4120 m
+ gs 1 -1 sc (Processor-specific) dup sw pop 2 div neg 0 rm  col0 sh gr
+ /Times-Bold-iso ff 285.00 scf sf
+ 5443 3254 m
+ gs 1 -1 sc (Virtual) col0 sh gr
+ /Times-Bold-iso ff 285.00 scf sf
+ 5443 3560 m
+ gs 1 -1 sc (ISA \(V-ISA\)) col0 sh gr
+ $F2psEnd
+ rs
+ 
+ %%EndDocument
+  @endspecial 1029 3045 a Fi(Figure)67 b(1:)94 b(The)65
+ b(LL)-18 b(V)g(A)63 b(execution)i(manager)h(with)g(the)f(virtual)g(and)
+ h(implemen)-5 b(tation)1029 3245 y(ISAs.)1029 4108 y(k)g(ernel)72
+ b(co)5 b(de)71 b(b)-5 b(y)72 b(translating)h(programs)f
+ (\\just-in-time")h(from)f(the)f(LL)-18 b(VM)71 b(b)-5
+ b(yteco)5 b(de)1029 4307 y(format)60 b(to)g(the)f(pro)5
+ b(cessor's)61 b(nativ)-5 b(e)60 b(instruction)g(set.)88
+ b(In)60 b(Figure)g(1,)h(y)-5 b(ou)60 b(can)g(conceiv)-5
+ b(e)1029 4507 y(of)55 b Fg(llva-emu)g Fi(as)g(represen)-5
+ b(ting)55 b(the)f(\\Pro)5 b(cessor-sp)g(eci\014c)56 b(translator")e
+ (and)h(\\Hardw)-5 b(are)1029 4706 y(Pro)5 b(cessor")56
+ b(la)-5 b(y)g(ers)56 b(com)-5 b(bined.)1279 4905 y(Previous)49
+ b(w)-5 b(ork)48 b(has)i(addressed)g(some)g(of)e(the)h(same)g(issues)i
+ (|)d(that)h(is,)h(of)f(transpar-)1029 5104 y(en)-5 b(tly)47
+ b(running)i(programs)f(compiled)g(to)f(LL)-18 b(V)g(A;)45
+ b(ho)-5 b(w)g(ev)g(er,)49 b(those)e(e\013orts,)i(including)f(the)1029
+ 5304 y(Jello)59 b(JIT,)g(whic)-5 b(h)59 b(ev)-5 b(olv)g(ed)59
+ b(in)-5 b(to)59 b(the)f(standard)h(LL)-18 b(VM)58 b(JIT,)g(and)h
+ (thence)f(in)-5 b(to)59 b(LLEE,)1029 5503 y(ha)-5 b(v)g(e)77
+ b(b)5 b(een)76 b(de\014ned)h(to)e(w)-5 b(ork)76 b(only)g(on)h(user-lev)
+ -5 b(el)77 b(programs)g([1,)f(12].)137 b(The)76 b(curren)-5
+ b(t)1029 5702 y(pro)9 b(ject)56 b(has)h(extended)e(this)h(w)-5
+ b(ork)56 b(to)g(apply)g(to)g(arbitrary)g(k)-5 b(ernel)56
+ b(co)5 b(de)55 b(or)h(standalone)1029 5901 y(\(e.g.,)g(em)-5
+ b(b)5 b(edded-system\))56 b(co)5 b(de.)1029 6366 y Fd(1.1)225
+ b(Details)1029 6673 y Fc(1.1.1)193 b(OS)64 b(F)-16 b(unctionalit)-5
+ b(y)1029 6979 y Fi(Op)5 b(erating-system)61 b(k)-5 b(ernels)61
+ b(necessarily)g(in)-5 b(v)g(olv)g(e)61 b(mac)-5 b(hine-dep)5
+ b(enden)-5 b(t)61 b(co)5 b(de,)61 b(for)f(ma-)1029 7178
+ y(nipulating)67 b(hardw)-5 b(are)66 b(structures)g(in)-5
+ b(v)g(olv)g(ed)66 b(in)g(pro)5 b(cess)66 b(and)g(memory)g(managemen)-5
+ b(t,)1029 7378 y(for)74 b(doing)h(I/O)g(in)f(device)g(driv)-5
+ b(ers,)79 b(etc.)130 b(These)74 b(mac)-5 b(hine-dep)5
+ b(enden)-5 b(t)76 b(functions)f(re-)1029 7577 y(quire)67
+ b(sp)5 b(ecial)68 b(handling)g(in)f(the)g(LL)-18 b(VM)66
+ b(represen)-5 b(tation,)70 b(whic)-5 b(h)68 b(is)g(largely)f(mac)-5
+ b(hine-)1029 7776 y(indep)5 b(enden)-5 b(t.)149 b(The)80
+ b(structure)g(of)g(the)g(LL)-18 b(VM)78 b(b)-5 b(yteco)5
+ b(de)80 b(p)5 b(ermits)80 b(the)g(addition)g(of)1029
+ 7975 y(so-called)d(\\in)-5 b(trinsic)76 b(functions",)81
+ b(eac)-5 b(h)76 b(of)f(whic)-5 b(h)76 b(corresp)5 b(onds)76
+ b(to)f(a)g(piece)h(of)f(func-)1029 8175 y(tionalit)-5
+ b(y)69 b(that)g(m)-5 b(ust)70 b(b)5 b(e)68 b(handled)i
+ (idiosyncratically)f(for)g(eac)-5 b(h)69 b(supp)5 b(orted)69
+ b(pro)5 b(cessor)1029 8374 y(arc)-5 b(hitecture.)95 b(One)62
+ b(of)g(the)g(outcomes)h(of)f(this)h(pro)9 b(ject)61 b(is)i(the)f
+ (relativ)-5 b(ely)62 b(small)h(set)f(of)1029 8573 y(in)-5
+ b(trinsic)68 b(functions)f(that)f(w)-5 b(e)66 b(needed)h(in)g(order)f
+ (to)g(b)5 b(o)g(ot)66 b(Lin)-5 b(ux)67 b(to)f(a)g(p)5
+ b(oin)-5 b(t)67 b(where)f(it)1029 8772 y(can)56 b(handle)g(in)-5
+ b(terrupts)56 b(and)g(pro)5 b(cess)56 b(I/O.)1029 9204
+ y Fc(1.1.2)193 b(En)-5 b(vironmen)g(t)1029 9510 y Fi(The)42
+ b(en)-5 b(vironmen)g(t)43 b(in)f(whic)-5 b(h)43 b(w)-5
+ b(e)42 b(run)h(our)f(p)5 b(orted)41 b(OS)h(k)-5 b(ernel,)45
+ b(called)d Fg(llva-emu)p Fi(,)k(can)c(b)5 b(e)1029 9710
+ y(understo)g(o)g(d)43 b(as)g(a)g(simple)g(whole-mac)-5
+ b(hine)44 b(sim)-5 b(ulator)44 b(similar)g(to)e(Virtutec)-5
+ b(h's)42 b(Simics)i(or)p 1029 9848 2292 7 v 1029 10002
+ a Fe(do)j(exist)h(minor)e(di\013erences,)i(but)f(they)h(are)e(not)h
+ (relev)-8 b(an)l(t)47 b(to)g(this)g(pro)8 b(ject.)3852
+ 10511 y Fi(2)p eop end
+ %%Page: 3 3
+ TeXDict begin 3 2 bop 1029 1046 a Fi(Stanford's)61 b(SimOS)f([14].)86
+ b(W)-14 b(e)59 b(built)h(it)f(b)-5 b(y)60 b(extending)f(our)h(existing)
+ f(execution)g(engine)1029 1245 y(for)52 b(LL)-18 b(V)g(A)50
+ b(b)-5 b(yteco)5 b(de,)52 b(based)h(on)f(a)g(just-in-time)h(compiler)f
+ (and)h(b)-5 b(yteco)5 b(de)51 b(loader,)i(with)1029 1445
+ y(simple)74 b(em)-5 b(ulated)73 b(devices)f(and)h(facilities)f(for)g
+ (supp)5 b(orting)73 b(op)5 b(erating-system)73 b(k)-5
+ b(ernel)1029 1644 y(co)5 b(de.)135 b(By)75 b(lev)-5 b(eraging)76
+ b(our)g(existing)g(user-lev)-5 b(el)77 b(execution)e(engine,)81
+ b(w)-5 b(e)76 b(are)f(able)h(to)1029 1843 y(use)55 b(the)e(host)h(op)5
+ b(erating)53 b(system's)i(ordinary)f(pro)5 b(cess)54
+ b(mec)-5 b(hanisms)56 b(and)e(APIs)g(to)f(pro-)1029 2042
+ y(vide)70 b(the)f(em)-5 b(ulated)70 b(LL)-18 b(V)g(A)68
+ b(mac)-5 b(hine)71 b(with)e(memory)-14 b(,)74 b(em)-5
+ b(ulated)70 b(I/O)g(devices,)j(timer)1029 2242 y(in)-5
+ b(terrupts,)57 b(and)f(the)f(lik)-5 b(e.)1279 2441 y(This)51
+ b(implemen)-5 b(tation)52 b(sc)-5 b(heme)51 b(is)h(sup)5
+ b(er\014cially)51 b(similar)h(to)e(the)h(User-Mo)5 b(de)51
+ b(Lin)-5 b(ux)1029 2640 y(pro)9 b(ject,)67 b(but)e(with)f(some)h(imp)5
+ b(ortan)-5 b(t)65 b(di\013erences:)93 b(1\))64 b(the)g(LL)-18
+ b(V)g(A)62 b(Lin)-5 b(ux)65 b(k)-5 b(ernel)65 b(do)5
+ b(es)1029 2839 y(not)81 b(dep)5 b(end)81 b(on)g(the)g(existence)f(of)g
+ (a)h(host)g(op)5 b(erating)81 b(system)g({)g(only)g(our)g
+ Fb(curr)-8 b(ent)1029 3039 y(implementation)60 b Fi(of)d(LL)-18
+ b(V)g(A-em)-5 b(u)57 b(do)5 b(es;)60 b(2\))d(the)h(LL)-18
+ b(V)g(A)56 b(Lin)-5 b(ux)58 b(k)-5 b(ernel)58 b(is)h(compiled)f(to)g(a)
+ 1029 3238 y(di\013eren)-5 b(t)65 b(ISA)e(\(namely)-14
+ b(,)66 b(the)e(LL)-18 b(V)g(A)62 b(virtual)i(ISA\))f(than)h(the)g(host)
+ g(op)5 b(erating)64 b(system)1029 3437 y(k)-5 b(ernel.)1029
+ 3975 y Fj(2)270 b(Design)90 b(&)g(implemen)-7 b(tation)1029
+ 4339 y Fi(Our)56 b(w)-5 b(ork)56 b(on)f(this)h(pro)9
+ b(ject)55 b(can)g(b)5 b(e)55 b(brok)-5 b(en)56 b(do)-5
+ b(wn)56 b(in)-5 b(to)56 b(sev)-5 b(eral)55 b(tasks:)1232
+ 4639 y(1.)84 b(P)-5 b(orting)55 b(Lin)-5 b(ux)56 b(to)f(LL)-18
+ b(V)g(A)1232 4945 y(2.)84 b(Compiling)42 b(and)f(linking)h(the)f(en)-5
+ b(tire)41 b(Lin)-5 b(ux)41 b(k)-5 b(ernel)41 b(using)i(the)d(LL)-18
+ b(VM)40 b(C)h(fron)-5 b(t-end)1445 5144 y(and)55 b(compilation)h
+ (system)1232 5450 y(3.)84 b(Implemen)-5 b(ting)56 b(op)5
+ b(erating-system)56 b(supp)5 b(ort)56 b(\\in)-5 b(trinsics")57
+ b(in)f(LL)-18 b(V)g(A-em)-5 b(u)1232 5756 y(4.)84 b(Implemen)-5
+ b(ting)56 b(virtual)f(em)-5 b(ulated)56 b(devices)f(in)h(LL)-18
+ b(V)g(A-em)-5 b(u)1029 6210 y Fd(2.1)225 b(P)-6 b(orting)74
+ b(Lin)-6 b(ux)74 b(to)h(LL)-25 b(V)g(A)1029 6516 y Fi(This)59
+ b(task)e(in)-5 b(v)g(olv)g(ed)58 b(implemen)-5 b(ting)59
+ b(all)e(the)g(arc)-5 b(hitecture-sp)5 b(eci\014c)58 b(ho)5
+ b(oks)57 b(and)h(header)1029 6715 y(\014les)78 b(whic)-5
+ b(h)78 b(are)f(common)h(to)f(all)g(arc)-5 b(hitectures.)139
+ b(These)78 b(are)f(the)f(\014les)i(k)-5 b(ept)77 b(in)g(the)1029
+ 6915 y(sub)5 b(directories)38 b Fg(linux/arch/asm-llvm)i
+ Fi(and)e Fg(linux/arch/llvm)h Fi(of)e(the)f(Lin)-5 b(ux)38
+ b(source)1029 7114 y(tree.)74 b(W)-14 b(e)55 b(accomplished)h(this)g
+ (task)f(b)-5 b(y)56 b(follo)-5 b(wing)56 b(t)-5 b(w)g(o)55
+ b(general)h(strategies:)1232 7414 y(1.)84 b(W)-14 b(e)79
+ b(remo)-5 b(v)g(ed)80 b(arc)-5 b(hitecture-sp)5 b(eci\014c)79
+ b(and)h(pro)5 b(cessor-sp)g(eci\014c)80 b(inline)g(assem)-5
+ b(bly)1445 7613 y(co)5 b(de)62 b(from)h(the)f(k)-5 b(ernel,)64
+ b(and)g(replaced)e(it,)j(only)d(wherev)-5 b(er)63 b(it)f(w)-5
+ b(as)63 b(necessary)g(to)1445 7812 y(do)55 b(so,)h(with)f(LL)-18
+ b(V)g(A)53 b(in)-5 b(trinsic)57 b(functions.)1232 8118
+ y(2.)84 b(W)-14 b(e)53 b(replaced)g(arc)-5 b(hitecture-sp)5
+ b(eci\014c)54 b(inline)g(assem)-5 b(bly)55 b(co)5 b(de)53
+ b(with)h(C)f(equiv)-9 b(alen)k(ts)1445 8318 y(in)73 b(some)g(cases.)128
+ b(W)-14 b(e)72 b(t)-5 b(ypically)73 b(accomplished)h(this)f(b)-5
+ b(y)74 b(adapting)f(p)5 b(ortions)73 b(of)1445 8517 y(Lin)-5
+ b(ux's)86 b(existing)e(In)-5 b(tel)85 b(x86,)93 b(IBM)84
+ b(S/390,)93 b(and)85 b(MIPS)h(implemen)-5 b(tations)86
+ b(of)1445 8716 y(arc)-5 b(hitecture-sp)5 b(eci\014c)55
+ b(ho)5 b(oks.)1279 9016 y(It)46 b(is)h(imp)5 b(ortan)-5
+ b(t)47 b(to)g(understand)g(that)g(LL)-18 b(V)g(A's)45
+ b(in)-5 b(trinsic)48 b(functions)f(are)f(external)g(to)1029
+ 9215 y(the)39 b(Lin)-5 b(ux)40 b(k)-5 b(ernel)39 b(and)h(are)f
+ (implemen)-5 b(ted)40 b(b)-5 b(y)39 b(our)h(em)-5 b(ulator)39
+ b(for)g(the)g(LL)-18 b(V)g(A.)37 b(Because)i(w)-5 b(e)1029
+ 9415 y(ha)g(v)g(e)42 b(a)f(just-in-time)h(compilation)g(framew)-5
+ b(ork,)44 b(and)d(b)5 b(ecause)41 b(these)g(in)-5 b(trinsic)43
+ b(functions)1029 9614 y(are)h(sp)5 b(ecially)43 b(iden)-5
+ b(ti\014ed)44 b(as)f(suc)-5 b(h)45 b(to)e(the)f(framew)-5
+ b(ork,)46 b(they)c(can)i(b)5 b(e)43 b(implemen)-5 b(ted)44
+ b(using)1029 9813 y(actual)52 b(function)h(calls,)g(or)g(expanded)f
+ (directly)g(in)-5 b(to)52 b(sequences)h(of)f(instructions)h(b)-5
+ b(y)52 b(the)1029 10012 y(co)5 b(de)55 b(generator.)3852
+ 10511 y(3)p eop end
+ %%Page: 4 4
+ TeXDict begin 4 3 bop 1029 1046 a Fd(2.2)225 b(Compiling)74
+ b(Lin)-6 b(ux)74 b(to)h(LL)-25 b(VM)74 b(b)-6 b(yteco)6
+ b(de)1029 1353 y Fi(Initially)-14 b(,)72 b(the)67 b(ma)9
+ b(jorit)-5 b(y)68 b(of)g(our)g(w)-5 b(ork)67 b(w)-5 b(en)g(t)69
+ b(in)-5 b(to)68 b(compiling)h(the)e(Lin)-5 b(ux)68 b(k)-5
+ b(ernel)68 b(with)1029 1552 y(the)40 b(LL)-18 b(VM)39
+ b(C)h(fron)-5 b(t-end)40 b(while)h(sim)-5 b(ultaneously)41
+ b(p)5 b(orting)40 b(arc)-5 b(hitecture-sp)5 b(eci\014c)40
+ b(co)5 b(de)40 b(in)1029 1751 y(Lin)-5 b(ux)47 b(to)f(use)h(LL)-18
+ b(V)g(A)43 b(in)-5 b(trinsic)48 b(functions.)71 b(One)47
+ b(of)e(the)h(setbac)-5 b(ks,)49 b(but)d(also)h(b)5 b(ene\014ts)46
+ b(for)1029 1950 y(our)f(LL)-18 b(VM)44 b(compiler)g(infrastructure)h(w)
+ -5 b(as)45 b(the)f(fact)g(that)g(Lin)-5 b(ux)45 b(source)f(co)5
+ b(de)44 b(exercised)1029 2150 y(our)57 b(compiler)g(in)f(w)-5
+ b(a)g(ys)57 b(w)-5 b(e)56 b(hadn't)h(y)-5 b(et)55 b(tested,)h(and)h(so)
+ g(w)-5 b(e)56 b(disco)-5 b(v)g(ered)57 b(bugs)g(in)g(our)f(C)1029
+ 2349 y(fron)-5 b(t-end)64 b(and)f(in)f(our)h(optimizers)g(that)f(prev)
+ -5 b(en)g(ted)63 b(compilation.)95 b(As)63 b(a)f(side)h(b)5
+ b(ene\014t)1029 2548 y(from)63 b(this)g(pro)9 b(ject,)63
+ b(w)-5 b(e)63 b(no)-5 b(w)63 b(ha)-5 b(v)g(e)62 b(a)h(more)f(robust)h
+ (compiler)g(infrastructure)f(and)h(are)1029 2747 y(no)-5
+ b(w)50 b(able)e(to)h(compile,)h(link,)h(run)e(in)-5 b(terpro)5
+ b(cedural)49 b(optimizations,)h(and)g(generate)e(co)5
+ b(de)1029 2947 y(for)68 b(the)g(en)-5 b(tire)67 b(Lin)-5
+ b(ux)69 b(k)-5 b(ernel)68 b(under)g(the)g(LL)-18 b(VM)66
+ b(system,)72 b(preserving)c(full)g(t)-5 b(yp)5 b(e)67
+ b(and)1029 3146 y(data-\015o)-5 b(w)57 b(information)e(in)h(the)f
+ (\014nal)h(output.)1279 3345 y(Our)72 b(implemen)-5 b(tation)73
+ b(of)f(LL)-18 b(V)g(A-em)-5 b(u)71 b(uses)i(an)f(execution)g(engine)g
+ (based)h(on)f(the)1029 3544 y(just-in-time)57 b(compilation)e(mo)5
+ b(del)55 b(in)h(LL)-18 b(VM,)54 b(using)i(the)f(X86)f(co)5
+ b(de)55 b(generator)g(for)f(na-)1029 3744 y(tiv)-5 b(e)71
+ b(execution.)121 b(W)-14 b(e)71 b(used)h(the)e(standard)i(LL)-18
+ b(VM)71 b(just-in-time)h(b)-5 b(yteco)5 b(de)70 b(loader)h(to)1029
+ 3943 y(load)65 b(the)f(k)-5 b(ernel,)67 b(whic)-5 b(h)65
+ b(allo)-5 b(ws)66 b(us)f(to)f(load)h(from)f(disk)h(and)g(generate)f(co)
+ 5 b(de)64 b(only)g(for)1029 4142 y(those)i(p)5 b(ortions)66
+ b(of)g(the)f(k)-5 b(ernel)65 b(whic)-5 b(h)67 b(are)e(actually)g
+ (executed,)i(and)f(not)g(b)5 b(efore)65 b(they)1029 4341
+ y(are)56 b(actually)f(needed.)1029 4803 y Fd(2.3)225
+ b(In)-6 b(trinsic)74 b(functions)1029 5110 y Fi(As)44
+ b(w)-5 b(e)43 b(stated)g(ab)5 b(o)-5 b(v)g(e,)46 b(our)d(arc)-5
+ b(hitecture's)44 b(virtual)f(instruction)g(set)g(is)h(closely)g
+ (related)e(to)1029 5309 y(the)d(LL)-18 b(VM)38 b(compiler's)j(in)-5
+ b(termediate)39 b(represen)-5 b(tation.)69 b(Although)39
+ b(that)g(represen)-5 b(tation)1029 5508 y(is)39 b(su\016cien)-5
+ b(t)39 b(to)f(represen)-5 b(t)38 b(arbitrary)g(user-lev)-5
+ b(el)39 b(co)5 b(de,)41 b(it)d(do)5 b(es)38 b(not)g(sp)5
+ b(ecify)38 b(ho)-5 b(w)38 b(system-)1029 5708 y(lev)-5
+ b(el)56 b(co)5 b(de)55 b(can)g(in)-5 b(terface)55 b(directly)f(with)i
+ (the)f(hardw)-5 b(are.)1279 5907 y(Our)57 b(solution)h(to)f(p)5
+ b(orting)58 b(system)f(co)5 b(de)57 b(is)h(to)f(de\014ne)h(a)f(set)g
+ (of)g Fb(intrinsic)i Fi(functions)1029 6106 y(whic)-5
+ b(h)66 b(encapsulate)g(the)f(functionalit)-5 b(y)65 b(that)g(an)g(OS)h
+ (k)-5 b(ernel)65 b(w)-5 b(ould)66 b(exp)5 b(ect)64 b(from)h(the)1029
+ 6305 y(arc)-5 b(hitecture)48 b(that)g(it)g(is)g(running)i(on,)g(but)e
+ (expressed)h(in)f(suc)-5 b(h)50 b(a)e(w)-5 b(a)g(y)48
+ b(that)g(mak)-5 b(es)49 b(them)1029 6505 y(easy)72 b(to)f(implemen)-5
+ b(t)72 b(on)g(a)g(v)-9 b(ariet)k(y)70 b(of)h(arc)-5 b(hitectures.)122
+ b(Put)71 b(another)h(w)-5 b(a)g(y)-14 b(,)76 b(w)-5 b(e)71
+ b(found)1029 6704 y(that)g(a)f(clean)h(w)-5 b(a)g(y)71
+ b(to)f(add)i(functionalit)-5 b(y)70 b(to)h(our)g(LL)-18
+ b(V)g(A)68 b(de\014nition)j(w)-5 b(as)72 b(as)f(follo)-5
+ b(ws:)1029 6903 y(rather)51 b(than)g(adding)h(new)f(instructions)h(to)e
+ (read)h(or)g(write)g(arc)-5 b(hitecture-sp)5 b(eci\014c)50
+ b(state,)1029 7103 y(w)-5 b(e)80 b(added)g(in)-5 b(trinsic)81
+ b(functions.)146 b(These)80 b(lo)5 b(ok)79 b(lik)-5 b(e)79
+ b(ordinary)h(function)g(calls)g(in)f(the)1029 7302 y(LL)-18
+ b(VM)62 b(b)-5 b(yteco)5 b(de,)64 b(but)f(their)g(names)g(con)-5
+ b(tain)64 b(a)e(sp)5 b(ecial)63 b(\\llvm.")97 b(tag,)65
+ b(and)e(they)f(can)1029 7501 y(b)5 b(e)57 b(in)-5 b(tercepted)56
+ b(b)-5 b(y)57 b(the)f(run)-5 b(time)58 b(co)5 b(de)56
+ b(generator)g(and)h(translated)g(in)-5 b(to)57 b(real)g(function)1029
+ 7700 y(calls,)g(or)e(sequences)h(of)f(arbitrary)g(mac)-5
+ b(hine)56 b(co)5 b(de,)55 b(as)h(necessary)-14 b(.)1279
+ 7900 y(The)53 b(in)-5 b(trinsic)55 b(functions)f(w)-5
+ b(e)53 b(added)h(are)g(of)f(t)-5 b(w)g(o)54 b(sorts:)73
+ b(a)54 b(higher-lev)-5 b(el)54 b(sort,)g(whic)-5 b(h)1029
+ 8099 y(tries)43 b(harder)g(to)e(abstract)i(a)-5 b(w)g(a)g(y)43
+ b(details)f(of)g(the)g(hardw)-5 b(are)43 b(whic)-5 b(h)43
+ b(are)g(not)f(v)-5 b(ery)42 b(in)-5 b(terest-)1029 8298
+ y(ing)55 b(ev)-5 b(en)55 b(to)f(the)g(op)5 b(erating)54
+ b(system,)h(suc)-5 b(h)56 b(as)f(the)f(details)h(of)f(ho)-5
+ b(w)56 b(lo)-5 b(w-lev)g(el)55 b(in)-5 b(terrupt)1029
+ 8497 y(handlers)75 b(are)f(structured,)79 b(and)74 b(a)g(lo)-5
+ b(w)g(er-lev)g(el)75 b(sort,)j(whic)-5 b(h)75 b(preserv)-5
+ b(es)74 b(arc)-5 b(hitecture-)1029 8697 y(sp)5 b(eci\014c)56
+ b(device)f(I/O)g(functionalit)-5 b(y)-14 b(,)56 b(at)f(the)g(exp)5
+ b(ense)55 b(of)g(abstraction.)1279 8896 y(Examples)h(of)f(the)g
+ (higher-lev)-5 b(el)56 b(sort)f(include:)1232 9215 y(1.)84
+ b Fg(registerInterruptHandler)p Fi(\()p Fb(func)p Fi(\))76
+ b(-)c(This)g(in)-5 b(trinsic)74 b(function)d(c)-5 b(hanges)73
+ b(the)1445 9415 y(pro)5 b(cessor's)41 b(curren)-5 b(t)40
+ b(in)-5 b(terrupt)41 b(handling)h(mec)-5 b(hanism)42
+ b(so)f(that)e(future)h(in)-5 b(terrupts)1445 9614 y(will)68
+ b(b)5 b(e)68 b(handled)i(b)-5 b(y)68 b(a)h(call)f(to)g
+ Fb(func)p Fi(.)114 b Fb(func)70 b Fi(is)f(passed)g(an)g(in)-5
+ b(teger)68 b(ID)h(n)-5 b(um)g(b)5 b(er)1445 9813 y(whic)-5
+ b(h)58 b(discriminates)i(among)f(the)f(di\013eren)-5
+ b(t)58 b(p)5 b(ossible)59 b(t)-5 b(yp)5 b(es)58 b(of)g(in)-5
+ b(terrupts)59 b(that)1445 10012 y(the)c(hardw)-5 b(are)56
+ b(understands;)h(this)f(ID)f(n)-5 b(um)g(b)5 b(er)56
+ b(is)g(implemen)-5 b(tation-sp)5 b(eci\014c.)3852 10511
+ y(4)p eop end
+ %%Page: 5 5
+ TeXDict begin 5 4 bop 1232 1046 a Fi(2.)84 b Fg(timerInit)p
+ Fi(\(\))48 b(-)g(This)g(in)-5 b(trinsic)49 b(function)e(enables)h(the)f
+ (on-b)5 b(oard)49 b(timer)e(c)-5 b(hip)48 b(and)1445
+ 1245 y(causes)h(timer)f(in)-5 b(terrupts)49 b(to)f(b)5
+ b(e)48 b(generated)g(at)g(the)g(default)g(frequency;)i(they)e(will)1445
+ 1445 y(b)5 b(e)55 b(deliv)-5 b(ered)55 b(to)g(the)g(curren)-5
+ b(tly-registered)56 b(in)-5 b(terrupt)55 b(handler)h(if)f(one)h
+ (exists.)1279 1760 y(An)f(example)h(of)g(the)f(lo)-5
+ b(w)g(er-lev)g(el)57 b(sort)f(is)g Fg(byteOutput)p Fi(\()p
+ Fb(p)-8 b(ort)p Fi(,)57 b Fb(byte)p Fi(\).)75 b(This)57
+ b(in)-5 b(trinsic)1029 1959 y(function)53 b(causes)f
+ Fb(byte)h Fi(to)f(b)5 b(e)51 b(output)h(to)g(I/O)g(p)5
+ b(ort)52 b(n)-5 b(um)g(b)5 b(er)53 b Fb(p)-8 b(ort)p
+ Fi(.)72 b(The)52 b(result)h(of)e(doing)1029 2159 y(so,)69
+ b(and)e(the)e(assignmen)-5 b(t)67 b(of)f(p)5 b(ort)65
+ b(n)-5 b(um)g(b)5 b(ers)67 b(to)f(devices,)i(are)d(b)5
+ b(oth)66 b(implemen)-5 b(tation-)1029 2358 y(sp)5 b(eci\014c.)72
+ b(Input)46 b(can)h(b)5 b(e)46 b(accomplished)h(b)-5 b(y)47
+ b(a)g(similar)g Fg(byteInput)p Fi(\(\))g(in)-5 b(trinsic)48
+ b(function.)1279 2557 y(One)81 b(of)f(the)h(w)-5 b(a)g(ys)82
+ b(in)f(whic)-5 b(h)82 b(these)f(in)-5 b(trinsic)82 b(functions)f(can)g
+ (b)5 b(e)81 b(considered)g(as)1029 2756 y(m)-5 b(ultiple)80
+ b(lev)-5 b(els)79 b(of)f(hardw)-5 b(are)79 b(abstraction)g(is)g(as)g
+ (follo)-5 b(ws:)121 b(if)78 b(y)-5 b(ou)79 b(assigned)h(a)f(p)5
+ b(ort)1029 2956 y(n)-5 b(um)g(b)5 b(er)70 b(to)d(the)h(timer)g(c)-5
+ b(hip,)72 b(and)c(de\014ned)h(ho)-5 b(w)68 b(this)h(timer)e(c)-5
+ b(hip)69 b(should)h(op)5 b(erate)67 b(in)1029 3155 y(terms)62
+ b(of)g(b)-5 b(yte)61 b(input)i(and)f(output)f(op)5 b(erations,)64
+ b(it)e(w)-5 b(ould)62 b(b)5 b(e)62 b(p)5 b(ossible)63
+ b(to)e(implemen)-5 b(t)1029 3354 y Fg(timerInit)p Fi(\(\))78
+ b(in)g(terms)f(of)g Fg(byteInput)i Fi(and)f Fg(byteOutput)h
+ Fi(instructions.)140 b(Di\013eren)-5 b(t)1029 3553 y(k)g(ernels)80
+ b(ma)-5 b(y)78 b(\014nd)i(di\013eren)-5 b(t)78 b(lev)-5
+ b(els)79 b(of)f(abstraction)h(more)g(appropriate.)144
+ b(In)78 b(Lin)-5 b(ux,)1029 3753 y(for)57 b(example,)f(the)g
+ (higher-lev)-5 b(el)57 b(in)-5 b(trinsics)58 b(ha)-5
+ b(v)g(e)57 b(b)5 b(een)56 b(completely)f(su\016cien)-5
+ b(t,)58 b(but)e(the)1029 3952 y(lo)-5 b(w)g(er-lev)g(el)57
+ b(ones)f(ma)-5 b(y)55 b(b)5 b(e)55 b(more)h(useful)g(for)f(bac)-5
+ b(k-p)5 b(orting)56 b(device)e(driv)-5 b(ers.)1279 4151
+ y(Th)g(us,)61 b(an)e(OS)g(running)h(on)f(LL)-18 b(V)g(A)57
+ b(can)i(b)5 b(e)58 b(p)5 b(orted)58 b(to)h(another)g(LL)-18
+ b(V)g(A-compatible)1029 4350 y(mac)-5 b(hine)81 b(without)e(ha)-5
+ b(ving)80 b(to)f(c)-5 b(hange)79 b(instruction)h(sets.)146
+ b(This)80 b(also)g(preserv)-5 b(es)80 b(the)1029 4550
+ y(seman)-5 b(tics)78 b(of)e(the)f(functionalit)-5 b(y)76
+ b(of)g(reading)h(and)f(writing)g(arc)-5 b(hitected)76
+ b(state:)115 b(it)75 b(is)1029 4749 y(correct)d(to)h(conserv)-9
+ b(ativ)k(ely)72 b(assume)i(that)e(a)h(call)g(to)g(an)g(external)f
+ (function)h(\(suc)-5 b(h)73 b(as)1029 4948 y(one)j(that)e(is)i(only)f
+ (a)-5 b(v)c(ailable)76 b(in)f(the)g(JIT)g(compiler\))g(to)g(ha)-5
+ b(v)g(e)76 b(arbitrary)f(side-e\013ects)1029 5147 y(and)57
+ b(hence)f(not)g(optimize)g(co)5 b(de)55 b(across)i(the)f(b)5
+ b(oundaries)57 b(of)f(that)f(call,)i(th)-5 b(us)57 b(making)f(it)1029
+ 5347 y(atomic.)1279 5546 y(It)k(is)h(imp)5 b(ortan)-5
+ b(t)61 b(to)g(p)5 b(oin)-5 b(t)61 b(out)g(that)f(w)-5
+ b(e)61 b(ha)-5 b(v)g(e)61 b Fb(not)g Fi(attempted)f(to)h(build)h(a)f
+ (system)1029 5745 y(where)66 b(Lin)-5 b(ux)67 b(can)f(b)5
+ b(e)66 b(compiled)h(once)f(and)h(run)g(on)f(an)-5 b(y)67
+ b(arbitrary)f(mac)-5 b(hine.)107 b(LL)-18 b(V)g(A)1029
+ 5944 y(do)5 b(es)62 b(not)g(abstract)f(a)-5 b(w)g(a)g(y)62
+ b(all)g(p)5 b(ossible)63 b(com)-5 b(binations)63 b(of)f(device)f
+ (con\014gurations)i(that)1029 6144 y(ma)-5 b(y)64 b(b)5
+ b(e)63 b(presen)-5 b(t)64 b(in)g(a)g(mac)-5 b(hine.)99
+ b(This)64 b(is)g(to)f(sa)-5 b(y)64 b(that)f(if)g(y)-5
+ b(ou)64 b(compile)g(Lin)-5 b(ux)64 b(for)f(an)1029 6343
+ y(LL)-18 b(V)g(A)43 b(mac)-5 b(hine)46 b(with)f(a)f(PCI)h(bus,)j(and)e
+ (y)-5 b(ou)45 b(try)f(to)g(load)h(it)g(on)g(a)g(mac)-5
+ b(hine)46 b(with)e(a)h(VME)1029 6542 y(bus,)69 b(the)64
+ b(LL)-18 b(V)g(A)63 b(la)-5 b(y)g(er)65 b(will)g(not)f(solv)-5
+ b(e)66 b(the)e(problem)i(of)e(not)h(ha)-5 b(ving)65 b(the)g(righ)-5
+ b(t)65 b(driv)-5 b(er)1029 6741 y(for)56 b(y)-5 b(ou.)1029
+ 7203 y Fd(2.4)225 b(Virtual)75 b(em)-6 b(ulated)74 b(devices)1029
+ 7509 y Fi(The)43 b(virtual)g(em)-5 b(ulated)44 b(hardw)-5
+ b(are)44 b(pro)-5 b(vided)43 b(b)-5 b(y)44 b(LL)-18 b(V)g(A-em)-5
+ b(u)42 b(is)h(relativ)-5 b(ely)43 b(minimal)h(but)1029
+ 7708 y(just)67 b(complete)f(enough)g(to)g(run)h(Lin)-5
+ b(ux)67 b(on.)106 b(That)66 b(is,)k(it)c(pro)-5 b(vides)67
+ b(a)f(CPU)g(\(with)f(the)1029 7908 y(LL)-18 b(V)g(A)43
+ b(instruction)j(set\),)g(memory)-14 b(,)48 b(a)d(serial)h(console,)h
+ (and)f(a)f(timer)g(c)-5 b(hip)46 b(that)e(generates)1029
+ 8107 y(p)5 b(erio)g(dic)55 b(timer)h(in)-5 b(terrupts.)1279
+ 8306 y(A)73 b(virtual)h(disk)h(device)f(is)g(planned,)80
+ b(but)75 b(not)f(y)-5 b(et)73 b(implemen)-5 b(ted.)132
+ b(It)74 b(should)h(b)5 b(e)1029 8505 y(p)g(ossible)50
+ b(to)e(b)5 b(o)g(ot)48 b(all)g(the)g(w)-5 b(a)g(y)49
+ b(to)f(user-lev)-5 b(el)50 b(b)-5 b(y)48 b(using)i(a)e(RAM)h(disk)g
+ (instead)g(of)f(a)g(hard)1029 8705 y(disk,)56 b(so)g(the)f(virtual)g
+ (disk)h(device)f(is)h(not)f(crucial)h(ev)-5 b(en)55 b(for)g(our)h
+ (long-term)g(plans.)1029 9250 y Fj(3)270 b(Ev)-15 b(aluation)89
+ b(&)h(results)1029 9614 y Fi(Our)53 b(goal)f(w)-5 b(as)52
+ b(to)f(b)5 b(o)g(ot)51 b(Lin)-5 b(ux)52 b(to)g(the)f(p)5
+ b(oin)-5 b(t)52 b(that)f(it)h(calculates)f(the)h(BogoMIPS)f(v)-9
+ b(alue)1029 9813 y(for)73 b(the)g(curren)-5 b(t)73 b(system,)78
+ b(whic)-5 b(h)74 b(is)g(a)f(calibration)h(of)e(the)h(dela)-5
+ b(y)74 b(lo)5 b(op)73 b(and)g(a)g(rough)1029 10012 y(estimate)56
+ b(of)f(the)g(sp)5 b(eed)55 b(of)g(the)g(pro)5 b(cessor)56
+ b(on)g(whic)-5 b(h)56 b(Lin)-5 b(ux)56 b(is)g(running.)3852
+ 10511 y(5)p eop end
+ %%Page: 6 6
+ TeXDict begin 6 5 bop 1279 1046 a Fi(W)-14 b(e)73 b(ha)-5
+ b(v)g(e)75 b(ac)-5 b(hiev)g(ed)75 b(that)e(goal.)131
+ b(Here's)73 b(an)i(example)f(session)i(using)f(LL)-18
+ b(V)g(A-em)-5 b(u)1029 1245 y(with)56 b(Lin)-5 b(ux)55
+ b(compiled)i(to)d(b)-5 b(yteco)5 b(de:)1029 1644 y Fg(\045)88
+ b(llva-emu)g(vmlinux)1029 1843 y(Linux)h(version)f(2.4.22)g
+ (\(brukman at zion.cs.uiuc.edu\))k(\(gcc)c(version)g(3.4-llvm)1029
+ 2042 y(20030827)h(\(experimental\)\))h(#46)d(Wed)h(Dec)g(10)f(17:56:53)
+ i(CST)f(2003)1029 2242 y(LLVA-emu)h(command)f(line:)176
+ b("")1029 2441 y(Kernel)89 b(command)f(line:)1029 2640
+ y(WARNING:)h(trap)p 2172 2640 53 7 v 63 w(init\(\))g(not)e(yet)h
+ (implemented)h(for)f(llvm)1029 2839 y(Calibrating)i(delay)e(loop...)175
+ b(6173.49)89 b(BogoMIPS)1029 3388 y Fj(4)270 b(Related)88
+ b(W)-22 b(ork)1029 3752 y Fi(Virtual)77 b(mac)-5 b(hines)78
+ b(of)e(di\013eren)-5 b(t)77 b(kinds)h(ha)-5 b(v)g(e)77
+ b(b)5 b(een)76 b(widely)h(used)g(in)g(man)-5 b(y)78 b(soft)-5
+ b(w)g(are)1029 3951 y(systems,)57 b(including)g(op)5
+ b(erating)55 b(systems)i(\(OS\),)e(language)h(implemen)-5
+ b(tations,)57 b(and)g(OS)1029 4151 y(and)41 b(hardw)-5
+ b(are)40 b(em)-5 b(ulators.)70 b(These)40 b(uses)h(do)f(not)g(de\014ne)
+ g(a)g(Virtual)g(ISA)f(at)h(the)f(hardw)-5 b(are)1029
+ 4350 y(lev)g(el,)63 b(and)e(therefore)g(do)g(not)g(directly)f(b)5
+ b(ene\014t)61 b(pro)5 b(cessor)61 b(design)h(\(though)f(they)g(ma)-5
+ b(y)1029 4549 y(in\015uence)56 b(it\).)1279 4748 y(W)-14
+ b(e)88 b(kno)-5 b(w)89 b(of)g(four)g(previous)g(examples)h(of)e
+ (virtual)h(instruction)g(set)g(computer)1029 4948 y(\(VISC\))62
+ b(arc)-5 b(hitectures:)88 b(the)62 b(IBM)g(System/38)h(and)g(AS/400)f
+ (family)h([4],)h(the)e(D)-5 b(AISY)1029 5147 y(pro)9
+ b(ject)77 b(at)f(IBM)h(Researc)-5 b(h)78 b([7],)83 b(Smith)77
+ b(et)f(al.'s)i(prop)5 b(osal)78 b(for)f(Co)5 b(designed)77
+ b(Virtual)1029 5346 y(Mac)-5 b(hines)62 b(in)e(the)g(Strata)g(pro)9
+ b(ject)59 b([15],)j(and)e(T)-14 b(ransmeta's)62 b(Cruso)5
+ b(e)60 b(family)g(of)g(pro)5 b(ces-)1029 5545 y(sors)64
+ b([10,)e(5].)95 b(All)63 b(of)f(these)g(distinguish)i(the)e(virtual)g
+ (and)h(ph)-5 b(ysical)63 b(ISAs)g(as)g(a)f(funda-)1029
+ 5745 y(men)-5 b(tal)47 b(pro)5 b(cessor)46 b(design)g(tec)-5
+ b(hnique.)71 b(T)-14 b(o)45 b(our)h(kno)-5 b(wledge,)48
+ b(ho)-5 b(w)g(ev)g(er,)48 b(none)e(except)e(the)1029
+ 5944 y(IBM)66 b(S/38)f(and)h(AS/400)f(ha)-5 b(v)g(e)66
+ b(designed)h(a)e(virtual)g(instruction)h(set)f(for)g(use)h(in)g(suc)-5
+ b(h)1029 6143 y(arc)g(hitectures.)1279 6342 y(The)67
+ b(IBM)h(AS/400,)j(building)f(on)e(early)f(ideas)i(in)f(the)g(S/38,)k
+ (de\014ned)c(a)g(Mac)-5 b(hine)1029 6542 y(In)g(terface)83
+ b(\(MI\))f(that)g(w)-5 b(as)84 b(v)-5 b(ery)82 b(high-lev)-5
+ b(el,)90 b(abstract)83 b(and)g(hardw)-5 b(are-indep)5
+ b(enden)-5 b(t)1029 6741 y(\(e.g.,)84 b(it)78 b(had)h(no)g(registers)g
+ (or)f(storage)h(lo)5 b(cations\).)142 b(It)78 b(w)-5
+ b(as)79 b(the)f(sole)h(in)-5 b(terface)78 b(for)1029
+ 6940 y(all)64 b(application)h(soft)-5 b(w)g(are)64 b(and)g(for)g(m)-5
+ b(uc)g(h)65 b(of)e(OS/400.)100 b(Their)63 b(MI)h(w)-5
+ b(as)65 b(targeted)e(at)g(a)1029 7139 y(particular)h(op)5
+ b(erating)63 b(system)h(\(the)f(OS/400\),)i(it)e(w)-5
+ b(as)64 b(designed)h(to)e(b)5 b(e)63 b(implemen)-5 b(ted)1029
+ 7339 y(using)46 b(complex)f(op)5 b(erating)45 b(system)g(and)h
+ (database)f(services)g(and)g(not)g(just)g(a)g(translator,)1029
+ 7538 y(and)58 b(w)-5 b(as)57 b(designed)h(to)e(b)5 b(est)56
+ b(supp)5 b(ort)58 b(a)e(particular)h(w)-5 b(orkload)57
+ b(class,)h(e.g.,)g(commercial)1029 7737 y(database-driv)-5
+ b(en)53 b(w)-5 b(orkloads.)74 b(It)51 b(also)h(had)g(a)g(far)f(more)h
+ (complex)f(instruction)h(set)g(than)1029 7936 y(ours)68
+ b(\(or)e(an)-5 b(y)67 b(CISC)g(pro)5 b(cessors\),)70
+ b(including)e(string)f(manipulation)h(op)5 b(erations,)69
+ b(and)1029 8136 y(\\ob)9 b(ject")61 b(manipulation)i(op)5
+ b(erations)62 b(for)f(15)g(classes)i(of)e(ob)9 b(jects)61
+ b(\(e.g.,)i(programs)f(and)1029 8335 y(\014les\).)1279
+ 8534 y(In)83 b(con)-5 b(trast,)91 b(our)83 b(V-ISA)g(is)h
+ (philosophically)h(closer)f(to)f(mo)5 b(dern)83 b(pro)5
+ b(cessor)84 b(in-)1029 8733 y(struction)h(sets)f(in)h(b)5
+ b(eing)84 b(a)g(minimal,)92 b(orthogonal,)g(load/store)85
+ b(arc)-5 b(hitecture;)98 b(it)83 b(is)1029 8933 y(OS-indep)5
+ b(enden)-5 b(t)84 b(and)e(requires)h(no)f(soft)-5 b(w)g(are)82
+ b(other)g(than)g(a)g(translator;)96 b(and)83 b(it)e(is)1029
+ 9132 y(designed)f(to)e(supp)5 b(ort)79 b(mo)5 b(dern)78
+ b(static)g(and)h(dynamic)g(optimization)f(tec)-5 b(hniques)79
+ b(for)1029 9331 y(general-purp)5 b(ose)57 b(soft)-5 b(w)g(are.)1279
+ 9530 y(D)g(AISY)79 b([7])h(dev)-5 b(elop)5 b(ed)80 b(a)g(dynamic)g
+ (translation)h(sc)-5 b(heme)80 b(for)g(em)-5 b(ulating)81
+ b(m)-5 b(ulti-)1029 9730 y(ple)60 b(existing)f(hardw)-5
+ b(are)59 b(instruction)h(sets)f(\(P)-5 b(o)g(w)g(erPC,)60
+ b(In)-5 b(tel)59 b(IA-32,)g(and)h(S/390\))f(on)g(a)1029
+ 9929 y(VLIW)46 b(pro)5 b(cessor.)72 b(They)46 b(dev)-5
+ b(elop)5 b(ed)47 b(a)g(no)-5 b(v)g(el)48 b(translation)f(sc)-5
+ b(heme)48 b(with)f(global)g(VLIW)3852 10511 y(6)p eop
+ end
+ %%Page: 7 7
+ TeXDict begin 7 6 bop 1029 1046 a Fi(sc)-5 b(heduling)78
+ b(fast)d(enough)h(for)f(online)h(use,)82 b(and)76 b(hardw)-5
+ b(are)76 b(extensions)g(to)f(assist)h(the)1029 1245 y(translation.)82
+ b(Their)57 b(translator)h(op)5 b(erated)57 b(on)h(a)g(page)f(gran)-5
+ b(ularit)g(y)-14 b(.)82 b(Both)57 b(the)g(D)-5 b(AISY)1029
+ 1445 y(and)56 b(T)-14 b(ransmeta)56 b(translators)g(are)g(stored)f(en)
+ -5 b(tirely)55 b(in)h(R)-5 b(OM)56 b(on-c)-5 b(hip.)1279
+ 1644 y(T)-14 b(ransmeta's)52 b(Cruso)5 b(e)52 b(uses)g(a)f(dynamic)h
+ (translation)g(sc)-5 b(heme)52 b(to)f(em)-5 b(ulate)52
+ b(In)-5 b(tel)51 b(IA-)1029 1843 y(32)76 b(instructions)g(on)g(a)f
+ (VLIW)f(hardw)-5 b(are)76 b(pro)5 b(cessor)76 b([10].)134
+ b(The)75 b(hardw)-5 b(are)76 b(includes)1029 2042 y(imp)5
+ b(ortan)-5 b(t)50 b(supp)5 b(orting)50 b(mec)-5 b(hanisms)52
+ b(suc)-5 b(h)50 b(as)g(shado)-5 b(w)g(ed)51 b(registers)e(and)h(a)f
+ (gated)g(store)1029 2242 y(bu\013er)63 b(for)f(sp)5 b(eculation)62
+ b(and)g(rollbac)-5 b(k)63 b(reco)-5 b(v)g(ery)62 b(on)g(exceptions,)h
+ (and)g(alias)g(detection)1029 2441 y(hardw)-5 b(are)72
+ b(in)f(the)f(load/store)g(pip)5 b(eline.)120 b(Their)71
+ b(translator,)j(called)d(Co)5 b(de)70 b(Morphing)1029
+ 2640 y(Soft)-5 b(w)g(are)74 b(\(CMS\),)f(exploits)g(these)g(hardw)-5
+ b(are)74 b(mec)-5 b(hanisms)76 b(to)d(reorder)g(instructions)1029
+ 2839 y(aggressiv)-5 b(ely)38 b(in)g(the)f(presence)g(of)g(precise)g
+ (exceptions,)k(memory)d(dep)5 b(endences,)41 b(and)c(self-)1029
+ 3039 y(mo)5 b(difying)62 b(co)5 b(de)60 b(\(as)h(w)-5
+ b(ell)62 b(as)f(memory-mapp)5 b(ed)63 b(I/O\))d([5].)92
+ b(They)60 b(use)i(a)f(trace-driv)-5 b(en)1029 3238 y(reoptimization)74
+ b(sc)-5 b(heme)75 b(to)f(optimize)g(frequen)-5 b(tly)73
+ b(executed)g(dynamic)h(sequences)g(of)1029 3437 y(co)5
+ b(de.)1279 3636 y(Smith)48 b(et)g(al.)72 b(in)48 b(the)g(Strata)g(pro)9
+ b(ject)48 b(ha)-5 b(v)g(e)48 b(recen)-5 b(tly)48 b(but)g(p)5
+ b(erhaps)49 b(most)g(clearly)f(ar-)1029 3836 y(ticulated)42
+ b(the)g(p)5 b(oten)-5 b(tial)41 b(b)5 b(ene\014ts)42
+ b(of)g(VISC)g(pro)5 b(cessor)42 b(designs,)k(particularly)c(the)g(b)5
+ b(ene-)1029 4035 y(\014ts)38 b(of)e(co-designing)j(the)d(translator)h
+ (and)h(a)f(hardw)-5 b(are)37 b(pro)5 b(cessor)38 b(with)e(an)i
+ (implemen)-5 b(tation-)1029 4234 y(dep)5 b(enden)-5 b(t)60
+ b(ISA)f([15].)86 b(They)59 b(describ)5 b(e)59 b(a)h(n)-5
+ b(um)g(b)5 b(er)60 b(of)f(examples)h(illustrating)g(the)f(\015ex-)1029
+ 4433 y(ibilit)-5 b(y)64 b(hardw)-5 b(are)64 b(designers)h(could)e
+ (deriv)-5 b(e)64 b(from)f(this)h(strategy)-14 b(.)97
+ b(They)63 b(ha)-5 b(v)g(e)64 b(also)g(de-)1029 4633 y(v)-5
+ b(elop)5 b(ed)58 b(sev)-5 b(eral)57 b(hardw)-5 b(are)59
+ b(mec)-5 b(hanisms)59 b(that)e(could)h(b)5 b(e)57 b(v)-9
+ b(aluable)57 b(for)h(implemen)-5 b(ting)1029 4832 y(suc)g(h)74
+ b(arc)-5 b(hitectures,)77 b(including)d(relational)f(pro\014ling)h
+ ([8],)j(a)c(microarc)-5 b(hitecture)72 b(with)1029 5031
+ y(a)i(hierarc)-5 b(hical)75 b(register)f(\014le)g(for)g
+ (instruction-lev)-5 b(el)74 b(distributed)h(pro)5 b(cessing)75
+ b([9],)j(and)1029 5230 y(hardw)-5 b(are)64 b(supp)5 b(ort)62
+ b(for)g(w)-5 b(orking)63 b(set)f(analysis)i([6].)95 b(They)62
+ b(do)h(not)f(prop)5 b(ose)63 b(a)f(sp)5 b(eci\014c)1029
+ 5430 y(c)-5 b(hoice)62 b(of)g(V-ISA,)f(but)h(suggest)g(that)g(one)f(c)
+ -5 b(hoice)62 b(w)-5 b(ould)63 b(b)5 b(e)61 b(to)h(use)g(Ja)-5
+ b(v)c(a)62 b(VM)f(as)h(the)1029 5629 y(V-ISA.)1279 5828
+ y(Previous)71 b(authors)h(ha)-5 b(v)g(e)71 b(dev)-5 b(elop)5
+ b(ed)71 b(T)-5 b(yp)5 b(ed)71 b(Assem)-5 b(bly)73 b(Languages)e([13)q
+ (,)g(2])g(with)1029 6027 y(goals)44 b(that)f(generally)f(di\013er)h
+ (signi\014can)-5 b(tly)44 b(from)f(ours.)71 b(Their)43
+ b(goals)h(are)f(to)f(enable)h(com-)1029 6227 y(pilation)63
+ b(from)f(strongly)g(t)-5 b(yp)5 b(ed)62 b(high-lev)-5
+ b(el)63 b(languages)g(to)e(t)-5 b(yp)5 b(ed)62 b(assem)-5
+ b(bly)63 b(language,)1029 6426 y(enabling)48 b(sound)h(\(t)-5
+ b(yp)5 b(e-preserving\))46 b(program)i(transformations,)i(and)e(to)f
+ (supp)5 b(ort)47 b(pro-)1029 6625 y(gram)67 b(safet)-5
+ b(y)66 b(c)-5 b(hec)g(king.)108 b(Their)66 b(t)-5 b(yp)5
+ b(e)66 b(systems)h(are)f(higher-lev)-5 b(el)67 b(than)g(ours,)j(b)5
+ b(ecause)1029 6824 y(they)61 b(attempt)g(to)g(propagate)g(signi\014can)
+ -5 b(t)63 b(t)-5 b(yp)5 b(e)60 b(information)i(from)g(source)g
+ (programs.)1029 7024 y(In)55 b(comparison,)h(our)f(V-ISA)f(uses)h(a)f
+ (m)-5 b(uc)g(h)56 b(simpler,)g(lo)-5 b(w-lev)g(el)55
+ b(t)-5 b(yp)5 b(e)54 b(system)g(aimed)h(at)1029 7223
+ y(capturing)60 b(the)f(common)h(lo)-5 b(w-lev)g(el)60
+ b(represen)-5 b(tations)61 b(and)e(op)5 b(erations)60
+ b(used)g(to)f(imple-)1029 7422 y(men)-5 b(t)56 b(computations)f(from)g
+ (high-lev)-5 b(el)55 b(languages.)75 b(It)54 b(is)i(also)f(designed)h
+ (to)e(to)h(supp)5 b(ort)1029 7621 y(arbitrary)63 b(non-t)-5
+ b(yp)5 b(e-safe)64 b(co)5 b(de)63 b(e\016cien)-5 b(tly)-14
+ b(,)65 b(including)f(op)5 b(erating)63 b(system)g(and)h(k)-5
+ b(ernel)1029 7821 y(co)5 b(de.)1279 8020 y(Binary)80
+ b(translation)h(has)h(b)5 b(een)80 b(widely)h(used)g(to)f(pro)-5
+ b(vide)82 b(binary)f(compatibilit)-5 b(y)1029 8219 y(for)80
+ b(legacy)f(co)5 b(de.)147 b(F)-14 b(or)80 b(example,)86
+ b(the)79 b(FX!32)h(to)5 b(ol)79 b(uses)i(a)f(com)-5 b(bination)81
+ b(of)e(online)1029 8418 y(in)-5 b(terpretation)56 b(and)g(o\017ine)g
+ (pro\014le-guided)h(translation)f(to)f(execute)f(In)-5
+ b(tel)56 b(IA-32)g(co)5 b(de)1029 8618 y(on)45 b(Alpha)f(pro)5
+ b(cessors)45 b([3].)70 b(Unlik)-5 b(e)44 b(suc)-5 b(h)45
+ b(systems,)i(a)d(VISC)g(arc)-5 b(hitecture)43 b(mak)-5
+ b(es)45 b(binary)1029 8817 y(translation)70 b Fb(an)i(essential)i(p)-8
+ b(art)71 b(of)h(the)g(design)h(str)-8 b(ate)g(gy)p Fi(,)72
+ b(using)f(it)d(for)h(all)h(co)5 b(des,)72 b(not)1029
+ 9016 y(just)56 b(legacy)f(co)5 b(des.)1029 9481 y Fd(4.1)225
+ b(Separation)74 b(of)h(W)-19 b(ork)1029 9787 y Fi(W)-14
+ b(e)50 b(split)g(the)g(co)5 b(ding)50 b(of)f(the)h(LL)-18
+ b(V)g(A)47 b(em)-5 b(ulator)51 b(ev)-5 b(enly)49 b(amongst)i(ourselv)-5
+ b(es,)52 b(and)e(paral-)1029 9987 y(lellized)59 b(our)f(w)-5
+ b(ork)58 b(on)g(\014nely-grained)h(c)-5 b(h)g(unks)59
+ b(that)f(w)-5 b(ere)58 b(indep)5 b(enden)-5 b(t)58 b(of)g(eac)-5
+ b(h)58 b(other)3852 10511 y(7)p eop end
+ %%Page: 8 8
+ TeXDict begin 8 7 bop 1029 1046 a Fi({)48 b(timing)g(and)h(console)f
+ (driv)-5 b(er.)72 b(W)-14 b(e)47 b(emplo)-5 b(y)g(ed)49
+ b(pair-programming)h(and)e(eXtreme)f(Pro-)1029 1245 y(gramming)69
+ b(tec)-5 b(hniques)67 b(on)h(the)e(initial)i(part)f(of)g(getting)f(the)
+ h(Lin)-5 b(ux)67 b(k)-5 b(ernel)67 b(compiled)1029 1445
+ y(under)56 b(the)f(LL)-18 b(VM)54 b(C)h(fron)-5 b(t-end,)56
+ b(replacing)f(X86/MIPS)g(assem)-5 b(bly)57 b(sequences)e(with)g(C)1029
+ 1644 y(co)5 b(de)55 b(and)h(LL)-18 b(VM-sp)5 b(eci\014c)55
+ b(in)-5 b(trinsic)56 b(functions.)1029 2193 y Fj(5)270
+ b(Conclusions)1029 2557 y Fi(Our)65 b(pro)5 b(of)63 b(of)g(concept)g
+ (sho)-5 b(ws)66 b(that)d(it)g(is)h(p)5 b(ossible)65 b(to)e(run)i(an)e
+ (op)5 b(erating)64 b(system)g(\(at)1029 2756 y(least)44
+ b(to)e(some)i(exten)-5 b(t\))42 b(on)h(a)h(virtual)e(arc)-5
+ b(hitecture)43 b(via)g(dynamic)h(run-time)f(translation.)1029
+ 2955 y(This)52 b(is)f(due)g(to)g(our)g(abstraction)f(of)h(arc)-5
+ b(hitecture-sp)5 b(eci\014c)50 b(services)h(with)g(our)g(in)-5
+ b(trinsic)1029 3154 y(functions.)1279 3354 y(This)44
+ b(is)g(a)g(go)5 b(o)g(d)43 b(starting)h(p)5 b(oin)-5
+ b(t)43 b(for)h(our)g(con)-5 b(tin)g(ued)44 b(w)-5 b(ork)44
+ b(for)f(a)h(complete)f(de\014nition)1029 3553 y(and)61
+ b(design)g(of)f(our)h(virtual)f(arc)-5 b(hitecture)60
+ b(and)g(p)5 b(orting)61 b(the)e(en)-5 b(tire)61 b(op)5
+ b(erating)60 b(system)1029 3752 y(Lin)-5 b(ux)56 b(\(and)g(p)5
+ b(ossibly)-14 b(,)56 b(others\))f(to)g(our)h(virtual)f(arc)-5
+ b(hitecture.)1279 3951 y(Clearly)-14 b(,)77 b(w)-5 b(e)73
+ b(w)-5 b(ere)73 b(able)g(to)g(do)g(this)h(b)5 b(ecause)73
+ b(of)g(the)f(fact)h(that)f(Lin)-5 b(ux)73 b(has)h(b)5
+ b(een)1029 4151 y(p)g(orted)44 b(to)f(so)h(man)-5 b(y)44
+ b(di\013eren)-5 b(t)44 b(platforms)g(that)f(the)g(authors)h(to)5
+ b(ok)42 b(the)h(time)h(to)f(separate)1029 4350 y(the)59
+ b(platform-sp)5 b(eci\014c)60 b(co)5 b(de)59 b(in)-5
+ b(to)60 b(appropriate)g(places)g(in)f(the)g(source)h(distribution)g(to)
+ 1029 4549 y(mak)-5 b(e)56 b(it)f(easier)h(to)f(p)5 b(ort)54
+ b(to)h(new)h(arc)-5 b(hitectures,)55 b(suc)-5 b(h)57
+ b(as)f(our)f(LL)-18 b(V)g(A.)1029 5014 y Fd(5.1)225 b(Limitations)75
+ b(and)f(F)-19 b(uture)74 b(W)-19 b(ork)1029 5320 y Fi(W)-14
+ b(e)43 b(ha)-5 b(v)g(e)43 b(not)g(p)5 b(erformed)43 b(a)g
+ Fb(c)-8 b(omplete)44 b Fi(p)5 b(ort)42 b(of)h(Lin)-5
+ b(ux)43 b(to)f(LL)-18 b(V)g(A.)41 b(A)i(lot)f(of)h(w)-5
+ b(ork)43 b(remains)1029 5520 y(to)56 b(completely)g(b)5
+ b(o)g(ot)55 b(Lin)-5 b(ux)56 b(to)g(the)g(p)5 b(oin)-5
+ b(t)56 b(where)g(it)f(can)h(run)h(user-lev)-5 b(el)57
+ b(applications.)1029 5719 y(Man)-5 b(y)45 b(design)f(issues)h(lo)5
+ b(om)44 b(ahead,)i(suc)-5 b(h)45 b(as)f(abstraction)g(of)f(the)g
+ (memory)h(managemen)-5 b(t)1029 5918 y(features)72 b(of)f(the)g(pro)5
+ b(cessor,)76 b(and)d(p)5 b(orting)71 b(additional)h(device)f(driv)-5
+ b(ers)72 b(to)g(w)-5 b(ork)71 b(with)1029 6117 y(LL)-18
+ b(V)g(A)57 b(in)-5 b(trinsics.)85 b(Ho)-5 b(w)g(ev)g(er,)59
+ b(our)g(initial)f(exp)5 b(erience)58 b(suggests)h(that)f(the)g
+ (problems)i(of)1029 6317 y(p)5 b(orting)65 b(driv)-5
+ b(ers)66 b(to)e(the)h(new)f(in)-5 b(terface)65 b(will)g(b)5
+ b(e)64 b(relativ)-5 b(ely)64 b(easily)h(solv)-5 b(ed;)71
+ b(the)64 b(k)-5 b(ey)64 b(is)1029 6516 y(to)57 b(de\014ne)h(the)e(righ)
+ -5 b(t)58 b(in)-5 b(trinsics)59 b(to)d(use,)j(and)e(the)g(righ)-5
+ b(t)58 b(la)-5 b(y)g(er)57 b(of)g(abstraction,)h(for)f(eac)-5
+ b(h)1029 6715 y(new)56 b(bit)f(of)g(functionalit)-5 b(y)-14
+ b(.)1279 6914 y(Once)77 b(w)-5 b(e)78 b(ha)-5 b(v)g(e)78
+ b(successfully)h(abstracted)e(the)g(memory-managemen)-5
+ b(t)79 b(hardw)-5 b(are)1029 7114 y(and)75 b(implemen)-5
+ b(ted)74 b(a)g(few)f(additional)h(device)f(driv)-5 b(ers,)79
+ b(w)-5 b(e)74 b(should)h(b)5 b(e)73 b(able)h(to)f(b)5
+ b(o)g(ot)1029 7313 y(Lin)-5 b(ux)74 b(all)f(the)f(w)-5
+ b(a)g(y)74 b(to)e(m)-5 b(ulti-user)75 b(mo)5 b(de.)126
+ b(This)74 b(ha)-5 b(ving)74 b(b)5 b(een)72 b(done,)78
+ b(w)-5 b(e)73 b(will)g(then)1029 7512 y(attempt)56 b(to)f(\\transplan)
+ -5 b(t")57 b(the)f(LL)-18 b(V)g(A)54 b(execution)h(en)-5
+ b(vironmen)g(t)57 b(on)-5 b(to)56 b(bare)g(hardw)-5 b(are,)1029
+ 7711 y(replacing)63 b(our)f(virtual)f(em)-5 b(ulated)63
+ b(devices)f(with)f(real)h(devices)g(implemen)-5 b(ted)63
+ b(in)f(hard-)1029 7911 y(w)-5 b(are.)70 b(The)41 b(remaining)h(bits)f
+ (of)g(LL)-18 b(V)g(A-em)-5 b(u)40 b(in)h(this)h(situation)f(w)-5
+ b(ould)42 b(corresp)5 b(ond)42 b(to)e(the)1029 8110 y(just-in-time)49
+ b(translator)f(and)h(the)e(supp)5 b(ort)48 b(for)g(op)5
+ b(erating-system)48 b(in)-5 b(trinsic)49 b(functions.)1029
+ 8309 y(This)57 b(is)f(our)f(long-term)h(pro)9 b(ject.)1029
+ 8858 y Fj(References)1112 9222 y Fi([1])84 b(V.)55 b(Adv)-5
+ b(e,)55 b(C.)h(Lattner,)f(M.)g(Brukman,)h(A.)f(Sh)-5
+ b(ukla,)57 b(and)f(B.)f(Gaek)-5 b(e.)75 b(A)55 b(Lo)-5
+ b(w-lev)g(el)1371 9421 y(Virtual)56 b(Instruction)h(Set)f(Arc)-5
+ b(hitecture.)76 b(In)57 b Fb(36)4499 9361 y Fa(th)4695
+ 9421 y Fb(International)63 b(Symp)-8 b(osium)59 b(on)1371
+ 9621 y(Micr)-8 b(o)g(ar)g(chite)g(ctur)g(e)58 b(\(MICR)l(O\))p
+ Fi(,)e(pages)g(205{216,)f(San)h(Diego,)f(CA,)g(Dec)g(2003.)3852
+ 10511 y(8)p eop end
+ %%Page: 9 9
+ TeXDict begin 9 8 bop 1112 1046 a Fi([2])84 b(J.)65 b(Chen,)j(D.)d(W)
+ -14 b(u,)67 b(A.)e(W.)f(App)5 b(el,)67 b(and)f(H.)e(F)-14
+ b(ang.)103 b(A)65 b(pro)-5 b(v)c(ably)65 b(sound)h(T)-14
+ b(AL)64 b(for)1371 1245 y(bac)-5 b(k-end)56 b(optimization.)74
+ b(In)55 b Fb(PLDI)p Fi(,)h(San)g(Diego,)f(CA,)g(Jun)h(2003.)1112
+ 1577 y([3])84 b(A.)79 b(Cherno\013,)87 b(et)79 b(al.)147
+ b(FX!32:)123 b(A)79 b(pro\014le-directed)i(binary)f(translator.)147
+ b Fb(IEEE)1371 1777 y(Micr)-8 b(o)p Fi(,)55 b(18\(2\):56{64,)g(1998.)
+ 1112 2109 y([4])84 b(B.)e(E.)h(Clark)f(and)h(M.)g(J.)g(Corrigan.)155
+ b(Application)82 b(system/400)h(p)5 b(erformance)1371
+ 2308 y(c)-5 b(haracteristics.)74 b Fb(IBM)59 b(Systems)h(Journal)p
+ Fi(,)c(28\(3\):407{423,)f(1989.)1112 2640 y([5])84 b(J.)48
+ b(C.)f(Dehnert,)i(et)d(al.)61 b(The)47 b(T)-14 b(ransmeta)48
+ b(Co)5 b(de)47 b(Morphing)i(Soft)-5 b(w)g(are:)70 b(Using)48
+ b(sp)5 b(ec-)1371 2839 y(ulation,)54 b(reco)-5 b(v)g(ery)53
+ b(and)h(adaptiv)-5 b(e)53 b(retranslation)h(to)f(address)h(real-life)g
+ (c)-5 b(hallenges.)1371 3039 y(In)70 b Fb(Pr)-8 b(o)g(c.)71
+ b(1)2128 2978 y Fa(st)2322 3039 y Fb(IEEE/A)l(CM)g(Symp.)h(Co)-8
+ b(de)72 b(Gener)-8 b(ation)74 b(and)f(Optimization)p
+ Fi(,)g(San)1371 3238 y(F)-14 b(rancisco,)56 b(CA,)f(Mar)h(2003.)1112
+ 3570 y([6])84 b(A.)40 b(S.)g(Dho)5 b(dapk)-9 b(ar)40
+ b(and)g(J.)h(E.)f(Smith.)50 b(Managing)41 b(Multi-Con\014guration)g
+ (Hardw)-5 b(are)1371 3769 y(via)55 b(Dynamic)g(W)-14
+ b(orking)56 b(Set)f(Analysis.)74 b(In)55 b Fb(ISCA)p
+ Fi(,)i(Alask)-9 b(a,)55 b(Ma)-5 b(y)55 b(2002.)1112 4101
+ y([7])84 b(K.)69 b(Eb)5 b(cioglu)69 b(and)h(E.)f(R.)g(Altman.)114
+ b(D)-5 b(AISY:)69 b(Dynamic)g(compilation)h(for)f(100\045)1371
+ 4301 y(arc)-5 b(hitectural)55 b(compatibilit)-5 b(y)-14
+ b(.)74 b(In)56 b Fb(ISCA)p Fi(,)g(pages)g(26{37,)f(1997.)1112
+ 4633 y([8])84 b(T.)77 b(H.)g(Heil)h(and)g(J.)g(E.)f(Smith.)140
+ b(Relational)78 b(pro\014ling:)120 b(enabling)78 b(thread-lev)-5
+ b(el)1371 4832 y(parallelism)51 b(in)f(virtual)f(mac)-5
+ b(hines.)66 b(In)49 b Fb(MICR)l(O)p Fi(,)h(pages)g(281{290,)h(Mon)-5
+ b(terey)-14 b(,)50 b(CA,)1371 5031 y(Dec)55 b(2000.)1112
+ 5363 y([9])84 b(H.-S.)63 b(Kim)h(and)g(J.)g(E.)f(Smith.)98
+ b(An)63 b(instruction)g(set)g(and)h(microarc)-5 b(hitecture)63
+ b(for)1371 5562 y(instruction)56 b(lev)-5 b(el)55 b(distributed)h(pro)5
+ b(cessing.)75 b(In)55 b Fb(ISCA)p Fi(,)h(Alask)-9 b(a,)55
+ b(Ma)-5 b(y)56 b(2002.)1029 5895 y([10])84 b(A.)55 b(Klaib)5
+ b(er.)74 b(The)55 b(T)-14 b(ec)-5 b(hnology)56 b(Behind)f(Cruso)5
+ b(e)56 b(Pro)5 b(cessors,)56 b(2000.)1029 6227 y([11])84
+ b(C.)64 b(Lattner.)98 b(LL)-18 b(VM:)63 b(An)h(infrastructure)g(for)g
+ (m)-5 b(ulti-stage)65 b(optimization.)100 b(Mas-)1371
+ 6426 y(ter's)88 b(thesis,)97 b(Computer)88 b(Science)g(Dept.,)95
+ b(Univ)-5 b(ersit)g(y)88 b(of)g(Illinois)h(at)f(Urbana-)1371
+ 6625 y(Champaign,)56 b(Urbana,)g(IL,)f(Dec)g(2002.)74
+ b Fb(Se)-8 b(e)60 b Fg(http://llvm.cs.uiuc.edu)p Fb(.)1029
+ 6957 y Fi([12])84 b(C.)46 b(Lattner,)i(M.)f(Brukman,)i(and)e(B.)f(Gaek)
+ -5 b(e.)60 b(Jello:)70 b(a)47 b(retargetable)e(Just-In-Time)1371
+ 7156 y(compiler)56 b(for)f(LL)-18 b(VM)54 b(b)-5 b(yteco)5
+ b(de,)55 b(Dec)f(2002.)1029 7489 y([13])84 b(G.)53 b(Morrisett,)g(D.)g
+ (W)-14 b(alk)-5 b(er,)54 b(K.)f(Crary)-14 b(,)53 b(and)g(N.)g(Glew.)70
+ b(F)-14 b(rom)54 b(System)f(F)g(to)f(t)-5 b(yp)5 b(ed)1371
+ 7688 y(assem)-5 b(bly)57 b(language.)74 b Fb(TOPLAS)p
+ Fi(,)56 b(21\(3\):528{569,)f(Ma)-5 b(y)56 b(1999.)1029
+ 8020 y([14])84 b(M.)62 b(Rosen)-5 b(blum,)67 b(S.)62
+ b(A.)g(Herro)5 b(d,)63 b(E.)g(Witc)-5 b(hel,)63 b(and)g(A.)f(Gupta.)94
+ b(Complete)62 b(com-)1371 8219 y(puter)74 b(system)g(sim)-5
+ b(ulation:)113 b(The)74 b(SimOS)i(approac)-5 b(h.)130
+ b Fb(IEEE)76 b(p)-8 b(ar)g(al)8 b(lel)77 b(and)g(dis-)1371
+ 8418 y(tribute)-8 b(d)60 b(te)-8 b(chnolo)g(gy:)76 b(systems)59
+ b(and)h(applic)-8 b(ations)p Fi(,)55 b(3\(4\):34{43,)g(Win)-5
+ b(ter)55 b(1995.)1029 8751 y([15])84 b(J.)39 b(E.)h(Smith,)j(T.)c
+ (Heil,)k(S.)c(Sastry)-14 b(,)43 b(and)d(T.)f(Bezenek.)46
+ b(Ac)-5 b(hieving)39 b(high)h(p)5 b(erformance)1371 8950
+ y(via)45 b(co-designed)i(virtual)f(mac)-5 b(hines.)60
+ b(In)46 b Fb(International)52 b(Workshop)e(on)h(Innovative)1371
+ 9149 y(A)l(r)-8 b(chite)g(ctur)g(e)60 b(\(IWIA\))p Fi(,)55
+ b(1999.)3852 10511 y(9)p eop end
+ %%Trailer
+ 
+ userdict /end-hook known{end-hook}if
+ %%EOF


Index: llvm-www/ProjectsWithLLVM/index.html
diff -u llvm-www/ProjectsWithLLVM/index.html:1.1 llvm-www/ProjectsWithLLVM/index.html:1.2
--- llvm-www/ProjectsWithLLVM/index.html:1.1	Fri Dec 12 12:23:35 2003
+++ llvm-www/ProjectsWithLLVM/index.html	Fri Dec 12 17:14:02 2003
@@ -21,39 +21,53 @@
 papers, presentations, posters, or anything else you have.</p>
 
 <!--=========================================================================-->
-<div class="doc_section">CS426: Advanced Compilers</b> (Fall 2003)</div>
+<div class="www_sectiontitle">CS426: Advanced Compilers</b> (Fall 2003)</div>
 <!--=========================================================================-->
 
 <p></p>
 
 <!--=========================================================================-->
-<div class="doc_section">CS497YYZ: Hot Topics in Operating Systems</b> (Fall 2003)</div>
+<div class="www_sectiontitle">CS497YYZ: Hot Topics in Operating Systems</b> (Fall 2003)</div>
 <!--=========================================================================-->
 
-<p></p>
+<!-- _______________________________________________________________________ -->
+<div class="doc_subsubsection">
+LLVA-emu project<br>
+<a href="http://misha.brukman.net/">Misha Brukman</a>, 
+<a href="http://www.students.uiuc.edu/~gaeke/">Brian Gaeke</a>
+</div>
+
+<p>
+Abstract to appear, so says Misha.  :)
+</p>
+
+<p>
+Project report: <a href="2003-Fall-CS497YYZ-LLVA-emu.ps">PS</a>,
+<a href="2003-Fall-CS497YYZ-LLVA-emu.pdf">PDF</a>
+</p>
 
 <!--=========================================================================-->
-<div class="doc_section">COMP4133: Advanced Compiler Construction</b> (Spring 2003)</div>
+<div class="www_sectiontitle">COMP4133: Advanced Compiler Construction</b> (Spring 2003)</div>
 <!--=========================================================================-->
 
 <p></p>
 
 <!--=========================================================================-->
 <!--
- <div class="doc_section">CS433: Advanced Architecture</b> (Spring 2003)</div>
+ <div class="www_sectiontitle">CS433: Advanced Architecture</b> (Spring 2003)</div>
 -->
 <!--=========================================================================-->
 
 <p></p>
 
 <!--=========================================================================-->
-<div class="doc_section">CS426: Advanced Compilers</b> (Fall 2002)</div>
+<div class="www_sectiontitle">CS426: Advanced Compilers</b> (Fall 2002)</div>
 <!--=========================================================================-->
 
 <p></p>
 
 <!--=========================================================================-->
-<div class="doc_section">CS497CZ: Dynamic Translation and Optimization</b> (Spring 2002)</div>
+<div class="www_sectiontitle">CS497CZ: Dynamic Translation and Optimization</b> (Spring 2002)</div>
 <!--=========================================================================-->
 
 <!-- _______________________________________________________________________ -->
@@ -85,8 +99,10 @@
 Note that Jello eventually evolved into the current LLVM JIT.
 </p>
 
+<p>
 Project report: <a href="2002-Spring-CS497CZ-Jello.ps">PS</a>,
 <a href="2002-Spring-CS497CZ-Jello.pdf">PDF</a>
+</p>
 
 
 <!--#include virtual="../footer.incl" --></html>





More information about the llvm-commits mailing list