From 3f8c816f170c887693fbb5f5951958835f096c14 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Tue, 8 Apr 2008 20:43:32 +0200 Subject: [PATCH] Remove doc/cloog.ps It can be generated from doc/cloog.texi and wasn't being kept up-to-date. Signed-off-by: Sven Verdoolaege --- doc/cloog.ps | 5973 ---------------------------------------------------------- 1 file changed, 5973 deletions(-) delete mode 100644 doc/cloog.ps diff --git a/doc/cloog.ps b/doc/cloog.ps deleted file mode 100644 index 0a9d889..0000000 --- a/doc/cloog.ps +++ /dev/null @@ -1,5973 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software -%%Title: cloog.dvi -%%Pages: 44 -%%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 -%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMBXTI10 CMTI10 CMB10 CMMI10 -%%+ CMMI7 CMR7 CMEX10 CMTT12 CMTT9 -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -o cloog.ps cloog.dvi -%DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2005.11.22:0255 -%%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: f7b6d320.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10 -% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8 -% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10 -% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10 -% -/TeXf7b6d320Encoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega -/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve -/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash -/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand -/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen -/period /slash /zero /one /two /three /four /five /six /seven /eight -/nine /colon /semicolon /exclamdown /equal /questiondown /question /at -/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X -/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent -/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u -/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef -/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute -/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE -/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: 09fbbfac.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9 -/TeX09fbbfacEncoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi -/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown -/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla -/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam -/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft -/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one -/two /three /four /five /six /seven /eight /nine /colon /semicolon /less -/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N -/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright -/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l -/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright -/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi -/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown -/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute -/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE -/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: bbad153f.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9 -% -/TeXbbad153fEncoding [ -/minus /periodcentered /multiply /asteriskmath /divide /diamondmath -/plusminus /minusplus /circleplus /circleminus /circlemultiply -/circledivide /circledot /circlecopyrt /openbullet /bullet -/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal -/greaterequal /precedesequal /followsequal /similar /approxequal -/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows -/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast -/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup -/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional -/prime /infinity /element /owner /triangle /triangleinv /negationslash -/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur -/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K -/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection -/unionmulti /logicaland /logicalor /turnstileleft /turnstileright -/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright -/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv -/backslash /wreathproduct /radical /coproduct /nabla /integral -/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section -/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/minus /periodcentered /multiply /asteriskmath /divide /diamondmath -/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef -/circlemultiply /circledivide /circledot /circlecopyrt /openbullet -/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset -/lessequal /greaterequal /precedesequal /followsequal /similar -/approxequal /propersubset /propersuperset /lessmuch /greatermuch -/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: 74afc74c.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10 -% -/TeX74afc74cEncoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega -/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve -/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash -/suppress /exclam /quotedblright /numbersign /sterling /percent -/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma -/hyphen /period /slash /zero /one /two /three /four /five /six /seven -/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question -/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W -/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent -/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u -/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef -/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute -/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE -/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: aae443f0.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmmi10 cmmi12 cmmi5 cmmi6 cmmi7 cmmi8 cmmi9 cmmib10 -% -/TeXaae443f0Encoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega -/alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa -/lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi -/omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1 /arrowlefttophalf -/arrowleftbothalf /arrowrighttophalf /arrowrightbothalf /arrowhookleft -/arrowhookright /triangleright /triangleleft /zerooldstyle /oneoldstyle -/twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle /sixoldstyle -/sevenoldstyle /eightoldstyle /nineoldstyle /period /comma /less /slash -/greater /star /partialdiff /A /B /C /D /E /F /G /H /I /J /K /L /M /N -/O /P /Q /R /S /T /U /V /W /X /Y /Z /flat /natural /sharp /slurbelow -/slurabove /lscript /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p -/q /r /s /t /u /v /w /x /y /z /dotlessi /dotlessj /weierstrass /vector -/tie /psi /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/space /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi -/.notdef /.notdef /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta -/theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon -/phi /chi /psi /tie /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: texps.pro -%! -TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 -index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll -exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 -ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ -pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get -div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type -/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end -definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup -sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll -mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ -exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} -forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def -end - -%%EndProcSet -%%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: CMTT9 -%!PS-AdobeFont-1.1: CMTT9 1.0 -%%CreationDate: 1991 Aug 20 16:46:24 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /CMTT9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-6 -233 542 698}readonly def -/UniqueID 5000831 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D1E -2931CE5F5D18C658602059F07BE66E6EFC9239D7AB2FB8A4CBD41675B8ECF279 -650C29E53B14AC0E392A664848C1844B1CECBB2D5CFB72D0916B675C9A9A1E35 -F12696A6F628473C604A95376468E06E295AD6F76CEB939D94113532050B9D5A -D2F41A9EFB9424D986612313B89EFE9C8A71313340B248F6853B1EDBF02B7F9E -F447220FE131D7D54CFB8AA1281DBAEA73E665BACB1F164552CC0CEDB63BD4B1 -4A9AE8AC6FA02242DBE8DA46B64B6BFC11762F0784F216FC8B9120D688D1705A -438B14F5E5DEAF2A98408B3B64620DE3732A4DAE6D08D5D97E34C75DAE19EABD -BA0796165C1151BCBFB1DF8D29A63A8300DBDB9E3323CB82D0337598B83F4F2B -A97CF5196D4D1CEC1EDB8966E548C0D9C194C932319610FB43EA1B86322FE641 -AB48770FF13BD475A7267E142388563D1A400419C585B22A9886074687BEDF74 -D905BE8EE440BA2ABF28EAB673399B7F129B9729DD5564C681954621903B84BB -CAF89AC5ADB2932472DF29ADA2BDBDB4D05F65F28F5F4C529613D61858E0074A -082A852710A62A147C966F2B85B51B0BE85F11D2057C66FDD61F6C5755367980 -9F4DE680601D4DA41B46F8D2148450000413C27AA39B586B74B977B25F0FD3C0 -4BA1EBFAFDBEC531EA13DFBD6700E53818CE04D23886B8AE75DCC36BCD3189B1 -0D55FAE27D0D126E82AEF31D7B5DF27E58C30BB0867D6D7AC1DA9EFB8A2DF095 -B5B934A68EE122DA0A83B36C952431586B957990206194E89339048AA6EE4C53 -703763505ED57C494DD907D0EEA04F6B1D4C8F3BA778F4E7AA832AAB4D75F024 -61E91C6D25FD6823CB24FC863D30827CE2A822687A9126A9945746BA60637666 -76BF6467AC0F0957DF2E69E3D890BE0D29E1F4877318B99A57881E627A745C43 -CF869075406D6884519D73365FDD98BE0BD47B351E4BA2A15EEE8D6716B46E22 -9A6A9E1422A56A4D156635039B7DD5EBEEB5E5A4D4D1E3928138569E25A67779 -0635D8A609F0CB4C1C75B88296F9D537921B17CFDE3E2046ACBC0F97C6868623 -485D045033418E2E774520101084144B1CE1A72B4485CC11F73795BE2B6119E6 -00A4EB956D0C2F5A146EB6B127C08F6BD9B064BB5E041DAEDBD0B779E9C497B6 -F4D9FFA9C8BA06190D1FE1819B8F4706311B488CEBF20170611D6D25C760BE9A -CDF1D34575D5FA23C9DDE6CB82251D4160F3CBA6C357BCD0C0ED47A31E7997AD -CA94B6039C9B5A4951FCE22217E964F61158A192CB0E6D2C8C7CB2F58DF7A037 -E4824516A8A4CFC1D51290F429F55F77072A58E74D255ABE3BFEF4724C8BC73A -932FD79D6C01CC7EA25E1D4E6C3EF323FC20051D8521D6C71BA5FD1DFD41367E -5308F52E4E90CF66C3D6E562407B7E94C56EC187235D22EFA9D860D59CD1C35A -3BA7F4A9C375ED3CFD3156F1E744583A7E9AF813706C743478DA823BC076815C -1BCD73556BCB51BDD9870EB2CD11FEC95637F187C17F9926A76533E571CEE081 -024B05A38F2D64F97E8E9E4616306BAE693AF3220FA53DE19BCE89D73650C0A8 -4F93653E9D260AFF22F16E09CE342F05A2A93D78174F593FE72F35A6EE7A0648 -6B177FD0AE57E343461F303F8677E6397548240ACD142D4FE498E564F42D128C -7E1A68D1F29D7F4ACF8996AAC28CDD896BECB6E50F022953786F9E2B9F550A3C -0EB9BA15FCE81847ACA241B69BD61189C47C9DCB42244BCBF54470927E63AB6E -5E57E6FADF686BE1537256EDB82C735B6661714D7132434CAF59034F847E6CA4 -F008935E61B3A5B42400BD83D9407B1976283F1EE1073770B719B8D0C56BC96F -5C43C6602832562D6EA601D05A998D879667BBA555D0DC1AE7B1BFC006AA87AB -2FD5295426A99FEF6EDEED7532D489B58E0889F70D21CF45EC268C35F81E89DA -E025171D0616CFAEA8D47E8CCBA3316E56DE312889A5A36E579F04BF6DFEAE6D -C16889A2F1AC1B798D029FCE4961C3DCCE657AD839468E92C166241AECC3AE80 -DE03A160DFAC6143BA17E4DCEFF5176BD43B9A4EE2E2B12759BD13E84D2DC329 -B0EBD77B8758675DB135842CADFBC58E4A636FDA424AA4AAF6A9E5332063E743 -22E14C0773755351BE19C1A8DA9F6818340C5CE6D954767C7B4A69B6E0103A96 -DF090B4BD9BFD01366B144EFBA254C06C3986A48BE75AA5901EA78D72C6C2EFB -7734492489732175D61D4E538C0830687FCC3B42F084414293C3F5C815082154 -E4E735259E620CFC576355EA5B696545AA5ED01DFF41070005546FE4F465B428 -E3599833A3BEC6712F87BBEF4504CD944878929F34A4A5A8D0507347BDE71FE1 -7F963D9C6FDCFBAE20D47A0A4EBC12EB55FB7CA2DBA1A9DD1081FC63C292AD2E -478BB21F4D44A8C24735ED4F23D24D306F09834041AFD5C244A0EEBDD94C06CC -B34E802D02BD77FCB3E81EC13B613D3C189A1A07FBC82266C59687F4B7B6B3D4 -2A2E9BA2F0C186F0C275CFC29380EEC2DAA0282EEA796090721429D52D9DDC97 -24F0AD1F932A2954048E1C34B35D3D6081B2F11146FE7F8236C02F89A8607473 -D4526841C7C203430E9A8322A9E0EB2B6D281EAB752CD693DFE57ACDF0E2EFF6 -EDF137E476DEF3770851456DFDDC1EF614D54CF17EE4A93BFB2782B8419CECA1 -473081F5AD9A9B3CC46A77F0613F417D3EDC21E16A8C82CA5C1290B2EA5CF99D -F7A3C79B83DA2D724D70E5A1861FA07BC81E1FE0F41B197F98482B46309C72BF -D7CE82C9EC25619EAB5165E7D84030E9613CBDB302B5CA6989ECB7D97EB8220B -18D8FBFC9F86925176D2EFC2460119B0A024E4114F2EAB9504E97D358E71DF6D -83ED6D67DF49AD2B350DA953214C190A816023A5FEC230B3B950EC3DAA1AA629 -EA6394934950F3A4D1E0708689A329F4B8DDDEB80FD9B53CBCA0768283D7FBDF -E51095492FAF2D3D6DBFD77DCC8A84A0F8582E2BD6ACD77785FE5CEBF137FD42 -83AF86EA6921FD512BAF908A0C0F242F45EA3FA07E67CBE14C04903EE604ECE4 -CC962DA348177A736386444D265377D1F376329C3F014BE66B6E78DC3EA4A43F -0AA9DAD2CFEC4EFDCF0DEC49F21229D061C57F533A2349F28E626FEE0F565404 -F4097C6B2DE2F623E2CC05272FD361CC5BE5652BB0866CAF714A362DEC875E18 -69561F8D0948DD416805BE99A2DE46D9E4B1008D6A0EDDC65F0A60EFCD4B0185 -8C037408367E29A8C7995B8FA50AC26A4E22F6D6D4F3422997B8D6944AF8272C -E9586C0A4D2E0B0E6C462F61AE7DF09A96D8E3E532D084C3AD371929C5150B5D -BE37098FC4D69BE365CC4031130B8FE182A5528A366FE7063F8FD5BAF8376F0F -4B523D3E8F14A611E2FC32175DAF77EB746368CE1EB090E58CEB9DC64E6CC173 -5B0D0AE51466B6DDF3FDDF8B291748EA54ACF97F1E53BF5AF4ABC0357F4F23DB -6FAD5FC9863C3EBDE747678E0640E359B0FA16A63BA3AFFC54CDD9AD31162BAF -A89EAF41DB87A5C5235E8634985450680BA6AB5278018DEB22C7C02400B200E4 -C84F2A6AC58E0CB64E11A96358F4E518D12FFFD20B01CF7DE640808A52EAF176 -29A93EC2C1599208A9DAE241D6D30B8FF19400FDB4CF3955A2FAA35C93E9A0A9 -D3424E65AF9DE3167E278BDC0B771C855AE272C33469DCED7E7DEA322B7E6760 -70D038435D797F8E89BF7764F7C59D61FA8BE684B28EAAD12FC22EE6F31E91E7 -22669FE968447BEF843F976B30735AE3F1C4BAF587AD31F045E0D962C34E4E01 -E1D55DE361DECAD51146065C163D4BFCFF1CBD0F023854A8B564F30F5DBD1119 -10E3CD9B453847222C3C655867E62401FFE2F8C39B17868580E98D9C179EDAD5 -D70DFB21A45C1301301017EB031E90AB9F776ED5517A21C459599E44E9C429AA -4A352679A2C6B0E5D3D9DEA94919C633CDD62199B5CCA03D641752F3AAAD4360 -6B5501E172786B741D648B2FB8EF96B9987D0D7F7FFA8771F81FBEACC42F89EE -05E346C290F8A761C4EC570B6A7807394AE94DB07FD11ED019E4083D0F950AEA -864FF5F2E76DD3141BA3B792E63EB53077226420E722E6C0169EFB1792BAA3B9 -FF43E7DE0BCDDC715347247E4EE63E37AF049BA1E3D7F2C178D67E35925066E4 -BBEBACB63AEF0C09E1E2EC505E98F5EB6C9A3FE5298A294F43FFA8B9B6412989 -9AE55F59E5CDFA41BFA654F138B6634103E2ABAA876B866CB87028FF9FD8B8F7 -022385EFC8DB7272E303E8EB24385921F057F765F3AC45A7423374CBF20C9842 -A4D73FA701E0CA9322AFF39D4D905197B4DCE30737AAD4CE86284ED1A634CDF2 -A2C1AE4BDC7A9C77A875F4D8134267E85F0D170BCB7BE393807AA2A4B84591F7 -09BF5E8B3DEC8239219701A5AB03AD82C1E37B530CC8A771615148D468B95FA3 -C731CEC36557AA1EC0E0D518C43897CF853608E76D7738BFF6379FE50EEAD129 -83A553DDC90E1C778D7C684CA50C18208A68094587ED4B5FF6BD439ED49EE5BB -CEA039DF90980B882C86FA3CACEB731D87D7916BA4EF7C5051FF0F0613D240DB -1777497FA966C5A3EA2F725D4FB3C4A2AC8EDB5F14DF06A00E81BAB3B5E67392 -55E3508921924DBB775F0F8BAF13A52A3D5833BF3DEF400570115613AA6EFE0D -DC024FCED8DD69F5EE33FACBE247E8E1CEFE5E6ED56D767C51B7F6E365A00484 -EEF943A7917B7C201CCEB30721DD0CF39B13D4DB9748ECE5991BEA0284120E7A -3FD71B9DA150469FECEBC63112805CD809EE4EB81110824B3CE509C2B3BC0C14 -452591B44DEB1253AFD71A6822B29778A140292AA92D0CD18A286D049D09B323 -B997BEAB41B344EE65C7BED00A461AF0AF5B907F46F955B2E3E183DCD1BC36D4 -8C049979D5BDF62364BE386A4DE48E1C6907DD262FF025795914D95D06DD3C34 -DC4AF9091793996B0090363CAA8C95581BD3344B6C970ED8F7C3DAF627A36CFA -A74E833DB2B275708DFA292CA7797FB2E9C4476C69924B76D541B4D445FAD54A -518DC7D46275A26F81F5A4BDFE4EF61ECCE415D3190190894D1910538A871637 -1447CC34DF26FC383D21F6EEECD49C279E3BE72DFBAF1EA51E3A6E6229FE0A54 -EA3DB0BD288B04B34BB2E6215001298B03390C682CFC578750731FBFB19B5991 -9AA463FD0580E3F2C2E838830722B0E15B4824030B106ADFAB189C85E3F6146C -FF4CB2054095863681BE3ED83B14A4B597D00B5FAC1CD80F838C9A060FE485FE -8AE0743EE75CFA1BAED50A93C124319A7621DF48CA7EB7A0C3351C05ECD09B10 -C9F9F3788E8CEB055C00DDBA762612BDE3C74093862398BDD0AB6A5B3622714E -BF7411334878A18536B8B46034E7BB5E1F5A43C7E5D87F664B3FE4DA1102F564 -2B6C00823DB96FDAF7051B77CE4E1A6A6BCBBB8383340AFCEE5CEF8F09B6851C -7D993FF82EE3A27A4CDB844E8CA7AD9A90F694B2045FCA508337847DB7DFFBD9 -B5B6B6AD469FB4B538F118AA39AECDDBFAE5DD5350772BBDE292048020758E96 -3AA6D808626E83570C7114073471FBD9766327E90FAA81C4B519F9BEB885247E -B828C1C5770F9F0351E50E0A4804F27EF4F0CB81DD944E4A07E77BBF5DDF8B7B -9FD8659EA5F054821AB50185A22947902C26F6A6DD55EFBA753D8C610729E87F -C02CB7CF2C036B93550D443E0608E4AE1D40A37144AE69DE7B87CA017A8461E6 -4D67076EE5569B92293CB8B090862930D5F16168A386180118705CDC01E448EA -1E4C9AE77C29A4F9A01D31ECD9034233AFAF3B4D2081EBAA92A54DB43B2A0C8F -334316EA67F56A0716C2CFAAF8444FB0BEE618E362033380750A9B59F3783F55 -403CAFB81BE9FFB909227BFADB6C66A521D0C6C06F5DEA9708F7C252D92E34CF -B84D626DD211FE47612DE78C37579CD0A23B82A2F36EA02215AC993E9C468C26 -2C53F5F5058AEB42AC6BA4328B95E299BF39A051A5AC1DC6702F3B3F1E97C9F9 -210346DC2B561AED655DCA9E0F5905E7D910FF32755B5C80AA6162E70C6A351C -B34AD587CF21292985D19FAF80CBF8FB327751BECA1E2175400DF5AF46EABCB7 -A1BCB72F784B613B2596DBE01AECEA1DCCB333D461B88AA814FF8894CE8E5184 -3D5D8A936F6B0E11E515438EE97116C6F2D64F75BB4F11A4F9F01C0E32D64E19 -56A09E5C5B7D61277228B996D8827541B0192BC269D0FB19C484FEA25A1D1DF5 -64A72EB7F6942C0737C0E14067482F07E7FD720B4293876EB977EBE55FC61EF6 -A403735734C620D48EB753B4D4C19D1536435747DB36FC460CC6C8A9B5D12820 -2DBF19748981A69D128B626B1D3A4FDEBDC50C04141BCB9428CE0A0387988DE8 -F52260D1344B48176BD4311D6BA69D835E3447A138C48A10E52EBBD2040CAD9D -DF9632F766D74945D09F5E948EB1754D7CC110939B0D3D0ACAB8293B94CD5369 -8AC7C1CBA562EDC1DC4B9233D1490A0CAB8A06939842DBAFC8ACA357A8BFB05B -D3DAB5845520918091BA81A78058F5664A0D3CE04B3E56813D03AAD02911C9F6 -D6FE78E2DCD05DB6F89C7D41BBF3AC04F59AD5AAF363092404A908DB53B8CE99 -18A137319D3082AF7E2A01C7B0DCE6D009A26EA0BD3161CDFEC26E84BA2ABF22 -C649E6AAF718987B60D9C2726233A379875904979982E77576631C3480CF1A8B -0527DF3888F8DF2A38B3BFAC90A6E5AC167A89B395F4D263779520C897847A54 -57B6D087838F17182AC1978CCD120CCB9F2C2883202BFE3D7C17FA9AE490C792 -34F9B789F1D2BB4F42A706DD4AC45026A3D957969AE093DCE83906C058852551 -5A3DFF6CFFBDBA0C4AE76AFDB0BA1A732ABC46A9335E1ABD562EE26B55750355 -1F48F10CD0993282AD2FE8DB54D3308C575DEAE6FCE859E617A478136410E664 -DA6C9036EB24AC65DB88C995B138F4EC72414A138952218B51003452384A942E -0754C1EC537F903DB0EB42269D3245C129A4476D1F860AE1DFE29BC965B08386 -1B8DA2ACF64C9051A2282494691943F19B0670594FD048B2201188177B5903E7 -BE3E943F1CCB633F18993AD2E5736BE149E6B47562EC5C1DD407C12157016BF9 -562D02752FB9375AC9457C202C379945C8C57F12FACDE1A3409A5962E9CE8FEA -5C46FDCB4D0423722C0B4948808F1B98D55A458272F5D1D012F86AA5285A785B -061E9181AB6A4230F28EBA47A015BBD8DF31F9D7EE3972F80615EB558076006A -B19DECBD608BA5294060D98D13B93ABAD0FC0A642E3585E6EA3F4A56A49594C5 -A9A8B15E089D430AA3CD6045C319F6EDEED78497192CF6B3C7305AE71A7014C7 -25A3D95AD8047D1D170A95E541C2D4F6ED7BEC8B5DB8DC91CCE0175501D73D60 -DE41ACBCF8F260B3955A0EBCBDC02ACE6D0C294256458539861A3C3862267098 -10F4CFFA57A01B1CFB743EA74721BB36FFF63A042DE03F835838FB29908F5698 -1C58B436592EEDC555D3C078D7D1784836D5EE9FC9284172DAB148BFF293EFAA -FBF3A9ADCBB0157137B041173DD3DFB6478A303FEFAE97CAF0BB6B7AFBD921A4 -F288B99043242DA87B1D700942240B2E6794AF30C3CDC4ECA7A6A9FDF904511D -1FF3EB302B82ACE1FDA5797B8FA5F4E5CB0731B05909E99EB1C73EDABA270981 -B97B2E985360E592EF3E4E5D47E3E44FAB853601C82844714F37C8FA5CBC98DD -DB9973C3EB387888BB7979C84C5F64AE20C33145B18F770DD70FCCF52B50CA49 -F9A45AAC1165A399366553D8BE9B6DB34AF135A3F6C1F1ED50EC340D16DE5B3A -FF8FA17D57509EB088467431086AE76A96F3BF55C00B095D8D39F1378A144A3D -8D12856DEF2A2A7D878F27246F279E9388E5905C7A450443461BA6B483A54F25 -492EFA86EE5C5C9ADC90D02C96FF5767A7847E7492C15287C7A3F376F8F6734A -F043999F51E352F2F2694416FC93C11842466C6076F2EE573832878A154EFCC3 -5776FE3C6D8171555850D7A7A0A7983DCE3E3A73DA591CB37307E64033666D88 -EF331449FCA9A4F0113101C7CB378523AD3C8671F7709246C13166CD1DD802A5 -1960EEF75F0E150F9C6A54FA78440B93A6EDE50AC073343ECF1EECDB25796138 -4CE08003080222895BC2B1494F042B076A5E3AAF88A8857BCF5B8A507E4FC1AA -88F0314B6290AF81021724ED94DF051FCBABBCFD52E743F9C79B458AC11EF110 -7260937F6E3E8D5B6CCB93443DC59906EC08F7FE469C9328625AC5BC3F99D30A -CEC55CFF1E14FCE5CE853622C046822D91F6378D7F5918B3D46D76AE04F9881B -8C24801F350A66FB156205D83E9C3281D7CEA8D895E9536D3F44D4DBC7E8E003 -3669D0B5FE75DA8B1C6A709F53250B899CB356E95575AF6FD3361660AAC54509 -F0A2BF615E4DA21648AC17780C83D818BE4AEC03F482501F6C87BCA9382B2A89 -DE37F8D6020CDD528DB6493BCDBE0522B50419E4F98C6EBE30BF9C91AFD02FE8 -4F77802C4C8BAB4771EB83514B4CE56E0EA773AB5C7AFFBF1592FEC3A837A49E -BB283D5EC91E6AB164309E62391E2771F5D66E19AB58B169A9928ECE4EBF5A29 -E75011F5169713230B14A3A10C14782F8450D037F88EB4CA145699789E899881 -AE954E9ABB64FADF4D115F0B3E6E8057CA2D7C0C04FE8D2714B63E63772DDB5F -EFE7F541A1E4A4FAD0C3EFF9437D8F4FB97151958C599C3692A9FA628FF15550 -72066BAD5C925F21B7B9DC433F1F2AC03F17731D7D8B1BC62E3129712F9294F2 -A1894C9A9F25F7EE027999 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTT12 -%!PS-AdobeFont-1.1: CMTT12 1.0 -%%CreationDate: 1991 Aug 20 16:45:46 -% 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 (CMTT12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /CMTT12 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 0 /.notdef put -readonly def -/FontBBox{-1 -234 524 695}readonly def -/UniqueID 5000833 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F0364CD5660FE13FF01BC20148F9C480BCD0E -C81D5BFC66F04993DD73F0BE0AB13F53B1BA79FE5F618A4F672B16C06BE3251E -3BCB599BFA0E6041FBD558475370D693A959259A2699BA6E97CF40435B8E8A4B -426343E145DF14E59028D4E0941AB537E34024E6CDE0EA9AF8038A3260A0358D -D5B1DB53582F0DAB7ADE29CF8DBA0992D5A94672DFF91573F38D9BFD1A57E161 -E52DA1B41433C82261E47F79997DF603935D2A187A95F7A25D148FB3C2B6AA32 -6B982C32C6B25867871ED7B38E150031A3DE568C8D3731A779EAAF09AC5CE6C5 -A129C4147E56882B8068DF37C97C761694F1316AF93E33FF7E0B2F1F252735CE -0D9F7BCE136B06EE967ABE0C8DF24DCBBF99874702ED252B677F407CB39678CC -85DDFC2F45C552BA967E4158165ED16FECC4E32AC4D3B3EB8046DCDD37C92FDF -F1F3710BB8EF5CA358ABACA33C7E5ACAD6BF5DC58BDFC3CF09BA2A38291D45A4 -C15FF1916FE2EC47FDC80911EB9C61F5D355BEDFC9DB17588547763AC5F0B1CC -12D2FFB32E0803D37E3281DA9CE36C5433655526ACFB3A301C56FAB09DF07B5D -048B47687348DEB96F3F9C53CE56DDD312B93D3918CD92AF53FB9461864D11B8 -0138918D0B1270C54873C4012CDE6F886DB11BCEA04B023EBB43E0D0A06BE725 -741D08B9DB688731A6C9886C15A83C28DADCC81385EA239E045E8F3670CE03DB -9EE77ED067036595C9F3B1854343BE3A12E486B6E5A2F8AC44FA5378D28DCCEE -306B0E283AA444423F9A4FF38E2B56DCF67A39CEB2C643DAE86865517D5D0371 -CB8797208ADEC637330A3A57902C9A88EDB75A7C16FA9850075D9F19578EC666 -1353CC1FC512D59DFF847ACCD04B2B61CF028B0C8EC4C4FD846C34F65CB9A546 -6576549862A15033A0CC5F4053B4DE28DD9A6B1B4EC484E4FCB34EDC0578434A -EFDB8E771E805C47FC64F1B19D22AD32CDFABC7C76E2D3BB7E4998CE79088CFF -BC896BF1A478A37658C2AADAF730A10ABB502B9D92C0CCB308F67B8372E51E0E -E73B695ACCE13A513E270DC55217BC77BD1BD318CFDEAA2921D060C7335641BA -D015D54939CE397DA4208CE45B9CFD40F3A524B2E3B67D82E22F87726A462D3D -EAEBC368D0CDE464E09AF04DC465855F46C4E45C1897255846A6AA96E0FAD90D -1AD8961CE3E8ED6D9BC00E27DF7A7F68A18FA150371AC7CCC5C222B9B71E331D -387BDC979D89338D9AA171D2C7EDDFEB2E2A544C42FAC0A031B406C0FE1A7BD8 -47F94CA6250077E9B024C48798472779ADB2A3E33E6DA7948200B1319C293834 -0F3E16BFC32AD7CC37A626236F0BE4A37FD0E63877ABBB9596C62692EC4DD033 -46DA78D1E82746A7EE2FC91E8BF194E3D5B7E95CAB3934F29B8AD68867B7237C -093859CEE4D92BB4FA3F1EE07D458A2B02D23AEC7C3EB9B5A9AF0B792E286B73 -A490E92A1B0219625B945F32EA38F5CF442C54248E981E50F6525231C7915DF8 -2AC0BEE27AB98F5520633D42A96CD55432F4558E204ED3C38E16ADDC7AA944F0 -485EBEF5A1FE09AC98AB52802085417A780409A2E2B44747D3B4DE29657B932B -7F6597EF0E8AA7CF5C1C630269EBA5CDA72C5BB6DAA529233B7E4BC6BC12D23A -32720AEA0B4C4025D2BA10AB9B7AED1E9A60424B584614D1C39E64C63D28D6A0 -86BD00764A4AC22E4892D5FD9056C56764BC1910DF97830D9EEFBB35228C5AAC -3E824DAC38F0F285DB0677FA411A79AE2869633F4C99A7B3D8B1D03309DE61A4 -A46170519904B581D83967CE644C6547FBFC8E1A3FC32428D1FC884E32A48CBA -CF0B2C82181DE86971222CA8AEDDBC4460DA4D71C7F0DE659197A14AFFB7F0F3 -0A1D9D1B4C95D10BDD2C1A41A68FE58363D4EAD894FF9E326785B8FA67F746CF -14DD28D461C9BEF20D9E5C286F09FD21F17BDBA2304D29C7F16C12FD6A1C9644 -55B4837C1FB7B904A7553F25CD873B3F18F155018FB4B3A22ACE5DC4C0042B48 -3B17F087BD914ED705EA4B79C81AF39595F55D2BEB2F26C649E26F8140958727 -76D428AB60557735DB2402F64971D46A274B4F15CB23817378C94EC78BCF6B59 -50D62B2DC7BDC50ACAF74EB8718DF7902E0DAE8AB5C50C182EEA0F8D8EE57242 -E55470F99F5366EABB3ECB2CC19AF6B58248365EF3F34BB14F0195F75B4C7950 -A0B556A2C458F7DF6EA48989F2FF91CEC64AFDEDE60D8FA2A945EF1BFD153B65 -63BF557B87E411E7086C20BEB4D3BFF98E9BD497EA1D66A2C3C4456AF1B726B4 -C44F10A98EEB6DC72AC85EA3B9A380FF5813CB04D24FFA18B49D900BA22C22A6 -22E2B3AE820FDA16EE28994F9E68CDD5442592D1E0C7C96A857C2DE33DC5BA14 -9EC655B5BC08C76B6C52EAFAD3D953AFE0EDD88E5D795EB76ABCCBE2795F4D81 -83FA75FCE2CB4326808BA388C7C9CB28D1D50F7E52CBC4E48180DD2771058075 -EFC72CB2FB03E5009A089E355879C72D64F9ED1E0675B7BF6030B1D6F24B5DA7 -97E6427ADFB87D7C07788B5B57CCD7FDE97E1D4D306936DADB5B6D66D20AC881 -BAE8BFC7C8215933E0639ACFE50B3F2AB2686F716DD3EEE3C28953DDE1633E3D -C1EE4AC527CED6B33129A284518A84DFF4203C7AF786E1729CCD4728F4868E62 -8E5CD526830CFE32348C8CB346FAACF0927F2BFA62D177E66DDF5A9D23C37ADD -CB4842F0D1035ADD4CE6356A73C7154CB100E09585A98415F6F6C27535381D32 -B267E6D2162FF196DCB66F3F5245FB6D93316EF2895DCACDCB1B80C5E342A326 -136E4DD88A91F3B0D3B8ADFCC52DA200747150E603030A437EED54636E3C5AD4 -629750FCA78CC9DC78E28B042EE66D51A68A06A8B7C10C5E6D31D8AA32069A03 -0259987F945F27E57C207C952E276257D6579FB5EEC1F9F03841FD7B9FA00B66 -2245D4076C607234F7B077FD0B35B5404923307704146111030BFD996D00A4DF -118022A5A250E5FD7DA117C76BA41BDDC3B4D63043D36304B67D7D94CF908FCD -37BDDE54D439CADCBDBB42AAE94FB0032227AF75DD3EB2593CB66A90EA9C0750 -960F8DD3B34792B2B614DA22024192C9F8A4A0F2489C20899693F52590972181 -5E9263DFA62457D51BCA5E5F13505BC26107B392FC80EDA8C44F0B9DDA0E7475 -48BCAC7AF873D1885F063435821989A651827831F0B46FB19204F2E3ECFBCF8A -35C86665F5A2C1CEBF4725264A44445259D11D9C607353F2904F5107617D6F2B -FC9BC3D660143442FFFD53ABCA973CF5B5E9DCE75E9F6D1BBD215F0CC4489091 -7D316C1AB4493CE9E1C8788338108C53915BECF6C615124CBF91B79E81207897 -3E5F12D7F79287D597A4EAFD05336177D7ECAD1F8B95945543E75565A954BDC8 -F7DCA01374D0EA94F7A5F1F5449C210F6AC4B481ED9015ED493FD81AF5952820 -F0A3DE3B536B5ED9DF1A8307A13C3F4FA072FAE61869552C2EE73C8F5807189A -E22FF156F18D8F8F6C61C8D62F5384E1AB6B3D487194D908099B25F1BB608C17 -CA7FAB495E9567A73DC3E66AA1864B9254CA7824EFC0468CAA83157093B9139C -8D818439616E8A255974CB2971969DBE84F9A9AB1EFC8770C5963B147592B131 -B27B3536B545C6646B87C99BC41EB24515376D8A4662831A390CAE6CA9B52E36 -56FD35BFB3C00DC2A86FE2B25385A433E1163CA7F3414A3E5A4D1B031002F200 -80835FF6846182E0496AE5E5624E3C3B23891993EBA4E052506A3AFA872E869C -35C66C61383D39A1817BB8FA49D7B79F45E5086532330D75351EDC55C854B9B6 -1DCF564695CD086D24503FAB3297549476093BEECCCD113FF17A5F579FB150B9 -02B9115A8118B2029495C33D356E7726D9C527579EEA758DD530C1E7328D6877 -5235E469B706AFCDDC8965C94FE01550B1032B4BF881252B77415EDF5EAF431E -9BB92E9D4A35A0DB7C4E904C2CE64B4F5DB59CC1388D39DF1B7CA3C9E081F49C -CB3614C7A8C5B8DAA02F1B64320FCB8336A9FF1340D59FBDB2EFD2C47778F5EE -C08EB2DD0E1A0C8803C1EE72053C2696281CB243FB32392B6AC48A9CC7C977F4 -A9026EAB35F02AC043851B45822B19086B63F15BC8584813E967A8F6045485B8 -14B201D18C10EF865BD1BC9A0DB3EAD9958E74DC31B29D90E71599D321FBE607 -04652BB17C5225E23A0F2FA46F76250EADD926EB73125AE87D0CC1CC0945F31A -A6D6DE2EC78982BA5BEE01A264658CBA301FBA2B724B3BBFC92A2B6ACDD205CC -235BB38A43264A7FB446653B2A617AB7707FD37FD0B41AEB868BDD394498DE8D -86C9F978D2C5128784AE258D1BD35A84CA440AEFC3258E0AE7D0A7C054CDCFDA -F45D5E5DD3E04C26BA56A82FAF86EDA4D24AD18991F534362C6AF2F43AD28CC6 -997A20139299C13FC552122240A11F9E09FB6590A29ECA86C338CC1625B1E532 -A8DBEAC7E10695EAB195FE641E7A233FE863F51E58622D6439C8ADACC099C97A -4B17A5E9576BA904B1B793E23CB4F2E843A076A225C86FAD6A71F02281B736F9 -703792ED5BE65113B8D288B1C4BB51462129686B98C8A8EBA47EC5226DB89DBC -E55B475F5E7865862C46F420BD95C0D86F24ADE80125C88FE1EE1BC35996DA48 -60715BB1B9BDDBB906A2C3D77416F5934854FA735F5B16258EFF0D085DD2BD4F -768D8F84A098376A4BEF55C94422DED05432883AEF06F66D760013D4B944E8A0 -D3A38CF6200A4CB113F0DAB2F8C2BA779BF893409B16718EA502D8F50F1B6682 -C0406C78A4AB623F41A206401EC5BAB0C9BB6CA7DC80803E6B1C7529D62DCCCB -421AE54B379C39A25642D22ACB89D5617F80869ADB48EF70C4984F1E6B6BF4E8 -C491B8D6513614FC120C12FFCEC55BF25272CA32E999E4A873F800EAABD362E0 -1D9080A74A568556278CA3AFF0F10F813EAF2798A38A5D88EE545E6D9439F2D5 -8632F0A0ADB4017F7AA9761B6A5D3CF7B8A4B39A61A1F29B001B98471B338660 -5D9A7A33F80BBC8981FE0668004DF446B5462A79634EF02234CD5BD6949E2957 -15D0A7AB2BE2C842414EEAD2590A0F7F8A09641936F47A8C458D4829BEB27911 -03CDF1BA55461B8DA7A0BAACEE6E0E96C44B9B39400A1A910DB288BA0427A872 -308583010AAD1AA30C706D7644735D6DDEEFE9BBC5FF613B467B004A8452008A -71846F6D31C890B50CF68AEECCBF8D54A559B59ECF19D9436F97365F70BE1202 -72047F0A4D66587EF766731642D30B7CF8D2AE28F97ECAA2F81CA263E38B867A -98C69ECD7C32F73DACA4BB8AD7F6CF23BA23C49735E75885E0050E69A2A73809 -41CE63D280E849DEAD2475B203300D2E3A9E2CC5E97A7F0C9C3F055BA3AAAFA5 -8AB44263EE711A410E80F4E9A7D8DC79D4CCFDE1DD62A2689571877A40A70EF4 -5DB43E7429D9DB655A0DF42F66EFC3EE7A7935F3449B12EB8700E8322EB3A3B9 -FD88649313174683CEB9B34D3B4F9B6FBB8BC1337498AF -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 0 /.notdef 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 -30F40A9C74C8E7773BE601C0E245E7FC10C029398B71B3A91C685AE00CF42D33 -8431A9C71520F67EC995576BD17BCFCD8B09F507534E1AA39C4FFA6E7D55E358 -FC91453C1D85F9D663C222B0F9A2800D95BB8840D4BD9033A87C49DEBE11B0D7 -103C268A2E26A4AD63BD93B79F9CD0FAFA24552111EDA7A26C0B8D1EEE6D6D56 -5D60AAFC9B4740243F3167A63ACFCE6BEE762CE736023CD2CFB5AAEA510D4C54 -BBAD1D5C15FBF3573A7D278C93E48F11A52E9BC4C8259A78B2015992A5811529 -1A0F62317FC709F57A34C85D551959663733C6281D696B2F249F4DA2A6342072 -466B33D8187D0C5CAF022B277B99376F5AB9317DE8CB2D07FF6DE9CE1D9181BC -33714EC309FC0102921AC76426CBB5A95742451A525202A05E5DA3EC72A5600C -A3246F252D6228793282372B1A4A0B0657962768BBBF3324F3670437E146E7CB -3356E6E1B327B8F1FAAC86894B9B2BE8DF4DB3F8E496EFE12730C638A92660DA -267DB98F2DB9A8ED37A09810062E6C1A91C4257DB7E36AA87284E68D52264A6B -213F34E78DA2BB9FDC9CFF0D1D9408F1FF197934B907478C4E18475EC2385E6A -65370583D16D6041132F5314920F5AF5844974AC80F4DDC534FE625C4609F9F0 -90FF015657192985FA4BF32A009A9B21762EF1A3925481EB46397DDE66813447 -D2AD7D75A67CEA0D44350A9524857C91508ED1FEA1FFE8EEEF6CC89696F4A02C -05BF0A9559EDEF8F7D54BE85982AE6B8F63DEE982AFCA7445A58F685420B9CE6 -A95BFCE4A4D241C09DA22F7AA6EE57C0566C594CBFE11D8941FA4F20B6F91868 -FFF18859365B9BF6752AFB8C7290C810AEB6A005A1BA4924EE98266DF04AF44B -EF803C266B46F09C561CDE42BE2C3C75C728C181D43B1B3A69D5BA82EC955CE4 -36ED47DD1557899CAEE7F9BB44407471BC6DA94031D611CD460E76240BB5A88F -F71B9CE799F06A7D50E77554948C656B0089FBFF4A1061976583AFF318704724 -7DC07AAEC4872854CFF7D6CDD58A59AB7A17EA83B825061BA251C88A75C240A4 -2E0D30B42F868921AF20C364FB4A7D749A5CE14DC5CFAC4ED315CE3081E3ED99 -96D5EC16D6FE9D82A34A2C6658B3C56E1101230E5D9E458144BDAC639DAC23F1 -D3EED62B70DDFDA5918733102FACA1749C863DE47FEB9A3C88426A5E1DBE70DE -3BD1350685CFB4022651D68882E1C77C61052E704C9F34FFF6148505AB23D27D -AAC60BBCB4160FE7EAD6D4948587B3B0E8D06750FE36BEBE3096D5D58FBF3464 -568C6C6D1C65D22EDC7DA2FDDABB4497B6FB88018A569F26B20F25B4AF7E3FB2 -ED1B24BBBF7ADC52BDA2C8B3B8853C5458FE6880808DD143BE2B3C3AB0868DD3 -2D5C79F4170F4679E159EE9BDE53941A45F732744C2C41BBA68496D3E7784E19 -608061FDC03CA89B62A4A7AEEB9D250CD755E394CBF1336E9B4319D8B379615F -E1BF0AD41ECF115C768174BFE6F1CCDF3F06A1FE67703FC603C44DF8B5A951E0 -85F22DE379F646A0A30E3B5022109BD5F21A8C175F8BF6EAE883D4CF6A03CB79 -260287BE651FF353F29D95D2933A8D45A8446FF60002ACC8E18743FCD6294610 -B52F56C1671CF2C0F46340E6E728BF5F271FF02DF6029745875F1E2DF70562F8 -4FFC876DD8C84F6BFBE8E52C721FE4298ABA8F8C1DAE8BC3915A3FC0CE001D79 -9A3AF2EC85C992D32BECC4F93E68449838EC546B2AE09701874308AADA82037A -0C63621C8699F6F8478539159DD7F91461C438DAD36B899D6FDB98D208EF3B3E -8F2659553A18BEE42AA78B4E7D000803FF6812B52289117A811806764A2D4CA9 -E1C9F8D82C092E713E42CE1AF91202EAB66E8CA50D49B91B0A572A101D62D031 -874CAA29CCCAF4EA3AAB61011EF13711A08C6953190DCF650699A62294EB6ECC -BD382F29CD7845551279ED402B66E96E43E09FCF46A51992D39FDE233A9A0621 -C392ADDA38D66978451385300691715AB1CEA82E8C45C751790B4DDD88894213 -CCAAAA50E101C9B721CDF82728ED282BB382A5153CA802FD63B0E499067AC6C2 -24D8379CBA5DB4BD333FD29613484FF70E54DA7FE020DBCA1948351D422C2787 -F5A71A6AEDA082A1DACD7DAE48EB7A56E5504D2B0FADD45B3B7B26E43BF0432A -86400E07D039CE0679000E8339045F645E545989355F00862A54E5B54BF0FF0B -ADF92521A83A641F74E727CBCF98BC18B6FA46FDDBAA03903CC971FE4938DEAC -6DA2C86227E6E30348F58B1BD8E52E74C849EC0595667C1D929849A29D775116 -6FAFFA5D4AF5643B723A1EE7684218C0BC9C751C835E20FB0BDB3F5952BD9E19 -8B919C96FA2C6961E24E6E126C457ABA6C0D15347AC7343A5EDD29D7CDB875D9 -9C01435382ED3864A445E9BAD28E5E9183DEC3A245454772747F0E18F7E0710C -931F3BC9C5C676CD6E55E3FAD82BD9F6D7BF0F4FF821380656940058E9670CB9 -F375F6E16192F8FA4E3E7FBFC84B03C48FA9D0FDAEC2C86C2E853506D135BC74 -2B2E671515C707FE8126AAE6783A4090F9DAE57AAE591EAAA6FA5A2DC1CB3B4B -CF50D1870C2EEC02B5525D687B8C0CEEECDDE9C5D3D57AB82EFD161C97C9CA30 -5D1EEF05E42AB07E544A5A960E9E5D352A59372EB050D4CACA139146FAA4B436 -5CE504DADAD63C7FE7808DC84DBDBF427C8F1B8120F76BAEC8DCE6F43D09244C -4221A1C42E1822F84FAC4D0231AB4DC761CCEA2B638262F6B9315D8EAC4BC402 -7246C655A2A7ABE228FB27FF1B9FE025687D7A576F890BACF2B9F74A830CE474 -0D5C2BFDE4183CF7C208FC688294C624A2567EDA66EF3A62DD98A0BB5A5554BC -A6A96F98DD6C72F3C203AA55B26A306FA012328CAABF7F6CC0950AFB24F49804 -E84A623EBE1B82EDD08F8414C96B469A94CAC1096A92713308E38B8E433662D8 -9BE5004ABD555726729F9CD5976E793A2010E1C67D0C5319F599DF04555E3C5F -A613A1F82DFB17E190D20CF902EE4CE5680603F1A9AFF790F25396885913AABB -3531B30DECF979065BEF8FC92AEEEEA6AD5FD444DE3ED98944BE5C3EF0E98676 -FC908F7B1FEC37E0E4607086738B87E6A9FED231B9A061240AD000DA7776D39A -18B4FF8BEE0ECB5ED5A0A529B68BFC785C3E79CF51E9B45907AA8E180772CC84 -5C0B4E7F6AEF266B531B14B86DB2A2FA8B5BBE4181A4A408226DB302539F048A -483DE37AB14EE02D782311DA94E1A1561325076B2B64DE4183C2FEBFD642772D -F2F2F913D57DC7AA92DAE9E7AF9EFE5F8D333D1B6006714138BD5EC6849527F1 -6257C14B25F6B05BB67F13D738BF0FD380E295B03B434763BD10E048BBE70F15 -17FF3DC6CAB40B34C0107F4B458D9731D7E06D8DC869A965B8B61B918D35807E -6F75F9D296FCFE61F03C8676A82ADFE8237AD2FCCB5E7F9DEB041F57A08716DC -51B72C30DCA150138D58922D62F0717FF8FAB2629F3C3194D767EF672B3E9F01 -2E9746F96E712ED0389CDE3103FF134771103ABEFD4B729A4969783162A8E805 -7E21010BDF916E852BD6F0F68373C78ECE8766C5899A9FF80DB71AD4C287BA34 -07FB6542D28E8BC1522460D2CF5EDF652315326D4D16D64A7FD1861860DCA9A1 -B2EAF31F6A858B086EA7543FC490342C955599E769CADD18195D9F4731CC8AF4 -625015483F06248DE5B3C02E00B6961C7150DF624AD98BE2B275216776C2FC99 -A921887B18401F7A3F3FEBEAAE5B8068719342EE1752F460593CC2D1F74CDF2E -897F1CBF1C9269CC06AB5E254785293E37F19F2A66EE93237370B125C67D268F -B7C2932A19D7017C48B3F5C00ABF6F2BCCB43ACCD4270A5D4D049BAD39D3B35B -14A527A6F8C7A19F788C060F39F9E461365B724EBAD6896E7B5FD70930092D25 -22E4772ECADBA577A22969445BF3F8019B7DC21DF34C4548F54857B98C3F5F4D -43FBE238CF646DAFA4E273364DD90520CA8C5B11883F03CEE44C7A990E139120 -BB411383F2DDB42F92FBC6BC95D681CD5C893D7D1BB412BD6800461DE8B65087 -1ADFA29C74A5F2EDFDE12A38C60C478AA75360656FC3F4484D0FEC1252F45513 -74D98437539672C4E1306BAE46F6572313E8352EC67348911796F972C93CF480 -74F0ED6E95672689DA7AC1E9980D8CEB47F4BDA3947E28750E3978693CF91995 -45CC09BE9E3C238317814D53363C7F0DEB5283B585B25993855D6F66C4F90C5F -27ED332D9A783F225A4B3EB481CDA73A61ECE4DDE176EBFE9D5A799C0598BA99 -C45BC029A35B483F448E8541C6A4A78DDCECB45917F3D0A8CAEABB5A6C042E50 -632FB4D769D4C19597937234273E0C252EC2C6BEBD43C53932BF67334EE469CB -63DD339A4498F1AED72B5953445CB1B1EB8E9E6FC052D0C6A0E9BCAA7FE6B862 -1796F7AA4E3B12AA9C8E8CCC2C896F9B0CDB053D40974F5F6332B30D3430F5FC -683276A1054DEE095CE4CFCC82EA1CDFD55930F5CCB96143E8D40361ED8311D4 -5A94449510C3DE83B0038B36C20A99EFBAAA6813F5E787C61360D8AC240F1F1E -98A3BBA728F664478A5C7E4EE2A5CD96833C30363141128DB6E8F3AE236F0419 -E7736D96A4AEF4CF63490E8BA58E1AC21446AC27CB7EB57B695BAA8278BDB3DF -C318CCB78DB7CB80C38AC8B9DC73D4BDDB71BEEA3DAA78AA3658B8A79D048758 -F231431303D546613AAC1902FCE3174E5A760C2E67E4E50A14A4FF1A9968C6A8 -4021F8CB8D3758B515F883893361AEDD3E31B53E187D9CDE94EF45A2151F163B -2DE42ACFA226DB904661A52C2FCF58B9966DB8684853CCE9AE0DC588AC638B01 -570BC69B91864A572ECDD4E94EDFFA9155EDDA54613C79240FED48DDC20A59EB -F62362CADFF7B79D1587D2D9751A3D2183054D4D827E04698F3CBD51F0018A11 -96CACF9CB230EDB5325B9DCAFFD2C3163C509831F25FBBE694327A83176A5BF0 -56DD10BC6E0022E0F99F49BC7439FAD21F740D9533517E46220F207F4AE4B1BC -4C57E787AAD358A4BE78AD275534E6282A6C25685E8A25E7BEBDFA633EAD627E -9AD53C2ABD94DC5F52EF02BD59DAD0990D1B19D14A3E70AB77DE87EE961BECCE -77D777ACB72661E3B86DD111A179E6215110032F2E40932BCABEAF818CFF644C -63022A4441E8B501BBC976D09E67903621C07A6053386CE0CB9596F30E87D519 -7734CF297224529098D64FD6A043BF371687F5E7988B2EC3161A30177C73D69B -EC9E87B6D6B0A44909C10513A5392ADF9BC3C99EBE2177ECBE2B08FEA6A4C9C3 -D7C26AE3F5CF87B8BC136403D32BAF9304382A6F6C7E7AB712F801BECB93CB45 -B663F7868134987D022F94033BD78FD2B89C0C0857EE1B8AFE032CF20F17E3F2 -246B489C63E4C5C4767021F85EF8D0BCBD635E5CDB23F22FA510864C545DF573 -69F69D89E9C1B310F3A6AF25AE725655185C841126B3245AEF7AEC6B1646B4A2 -574A0DE5CF3FCDF8642B439DE0D94EDD0924E60C1D51627BFEDA67FA659C9E0B -E986AACCA7F60C210EB601275B13BE7FC792A306C0B40CDE773AFDD2E5D77A0B -AAC072AFE3DFC6407AD146964FEE1AAC3D77649F83B5DBBDB352A6B2516A5B09 -6223E1DDC02825FEE31A1DB04A6CB7AED785E330154F2FF3703904AA85FB2054 -0F9F7B057F212649E4DE69D57733B9AFAF8C8B4B00370175A4DE7CF180276F4B -DF3A386DBEEDC15EC6AE9EE54EA9BE27C0DA18D9846EF964ECD1816BEA8F2987 -FDE0E8E78B3952259B30B13DEF104431807F190187386C5A16878235E6389A57 -F8F453B7765F39E2C25359BCD05449F1AA427CC8D9085C7EEF9532EAEA8A6B74 -FEFD02E34D5B072911A83744882A4B4F246EFE154BECA49B9AAFA9216BC5E6C4 -1CA0EFA332E348030F4C9E65EC8C247A47BE4C92D124FBE9A01D00AE6DD407C7 -6066206661BFB0B156C3A0645D6756ADAE11E7B45619D906DE1277DE5F17E9BA -A6252E050DE217599A6D5B5106C4D2377C937617E690AC6FC46EEAEE177B7B05 -C0DFE39B57FCFFA93C53BD0AFC5B66E02752597D35F07367661913E8C848DDB7 -78A3C6803038BD64D581608C977506ECC9538C4B3C78111F26D0E4290F6EFF44 -BA0A7D7BA3317941436C52D2FFBC64BEE973925907C2C3D1DF6CE6EFBC2A77B0 -B264029E42A39ED7BCDA9AF6D00D7FA53A273E180D043AD16DA0263E8412DB86 -89F877EC28EE04D6A167BA9D3050D15AE04C3B9DE831E59BDE28BA638E1F38CA -0C7FCBC82773C8643E978378BF45271D3F521930ECE6CF573C51DEEBE8E44012 -613CB7F422F106E443AB79EBE22262E2B73209C22B3B49838F60D6BC328DBC45 -C885DD6666ADC2690DF93064723B6CA0E633DB8CE862A0D74D2F2D83023AFB6E -471579CEE7C5BA092D9F9098E6242238A191A012730B79FBB4E8B9BAB12443FF -B1EC0C364B56F8A9F432E7DD154DA76A30A7070DA4885FD6A3F784150E5E2752 -A5507826D1D275DEB53A7915DC012D2FD74521D22268D21E15A34CDDEF919F4B -90D184900EA6E79A30A94FFC4328BB68CF0ED5DB2B72BEF20DB82206D4A7AF6D -EFD0B68121956CE185F7C1AE5EACEA7B840A634727286447CB2F44A3142E8FB0 -D157D53E05F86C20328B29D8B2220DBC89A225B3650659EE364715FA0EA6FC39 -1D4A78B1817D052951AE81609F82566A99A7DE0AB2F010C349DBA48E9F765BA3 -5405E674AAC834B72593411848D6A4DEEA96B11DEFAC72647733B26E81B74E06 -077717DE80BCA63C63BB97ECE3255E8BCC3815416397B2DD3BCC7CA140F61BAF -E3EE274DD9E4F2BD0349DC4638D260D8848C94E166223F7C99DBD71520CD6801 -A8339D02C1B14D122EE9ED2A912BDB63A450EDE0CD8D297C238F73E41C3E36B4 -0DA57F2637B26592EC2DD639E0FC84C759A0ACBE8BC9F9A750D9223ABEB29A5D -C176EB9C9DC4995EFE356505532FF6D752CE2E628F5F9D07905C31CD7B6BDA5A -6DB371D84902683C556F187FB6441AEDE78DEFCF2089DDF04046CE563B74A762 -24105BEF3D3C1FA0A8BA7F53D0D8ADF7A8C71F2A830BB2078BE6574CBFD95096 -FFF1847BD22820629B6F3E2B623C81E10B10A09818541EF2FAAC5F109EB14940 -F8EDB77BC1EA272098BCCBEBE0115672C55D4AC3442FC517DE01ED9B68956F58 -D6BB9FE89839977278CAEC6B7B549DD9E4D178B6D45934A0A13D74C26D720FD9 -66000CBA7621377F570BFB903EEA7C80734C5A85B7900973B1B1E2726D82D5B4 -CE1FF14D30D1CBC3AFBAC00F0AC31DE8A33AACAC68CB8A4719F62F893562F308 -11A3AAF807D81CB34867EA99080F54194C245DD836A2C03B57AAF068EFB32F4E -74EC09D624400E69EA410E8C5EA9E1968B7D14D448B3DFAB70AFB47F79F3C0E5 -A739C97927E658582603B6EA35892C94F3AE920582BD702C5B251F923AF31B32 -88FAD56D153F2A428B0227F1BDF8F86C4C5479801FCF800E03CC8732CD26D7AE -6DC68F9F42BA6A4FB5E4A971E364562B09959F1E4FB7A3E782C3DB7728D303CD -A257A6A1C963078A9CB303922550F4DB416DEA1F56A1E8E2C0185254A4D9E444 -DEE7F09A75654A0A1285962FA56AB050D18EDD04F28856C68CA42518B23EAEA1 -5D69EDBD7BC106FA3B514532438F4F697AE0302F0FDF186FE659E3393DCC0FCF -B9F6E3A741D4C6A782616ED00F0B5FAD27D0DEBF97D5AD4331764155634FF8CC -8BAEA47D7BFD2BF49601048B090B2B23E549945EDCBC6FFB04C44F0BD8AF0DE8 -6B893729F5ECEF5CB1BE74A9B9C4B312D86F754D541BDDF0CFB62DB67948FE2B -FA54FD28F4BDE5676FFCA0D45DF430EC353661CFF29B1A4E978DBB72C1FB3824 -AF1ADB9B8F33527BCEF0A072B8FF52A987C9156B3BD900821385211FAC9B84E6 -814991D24B5CB5B7103445234BCAC8D81275B13030742F9D64E849E9F087EBD3 -1FFAE9F44CEA4441A531AC2163931B7F38F859265939FFD3F1B763ABE72F4151 -72DF32CCE3680B03D0706AA4D87794D604E76C5090A018C5D39B89299D3254F7 -8B8DDBDDC2631D47006013BCEDFA454538F16CC1A18866C33ADC5E9886A22118 -78E2285F3FA6851CBFE1D77787011F47773090D717D6492A1C90361DAA23FA6D -9C2CF3F07AEEB397F48064EE6C58A0FE9D4D66CAA106E4B0E5CA8C655F0C9E68 -31AF88927E4E8E7685AB571FA6E510E95D18621058EA451484BDEFFFBC76E0A5 -C99ECA42D42121F8D27A46B191DEC40EDAA74EF49749C964C5CEF698335AD272 -76ED6795685AB6935706687992D80DBC29032C238472402B7AABDB2881D5042E -3F00E67AAB1476D42179A454ED8AEC91E526666A3F1AEAEFBDB16E6992B81EAD -A4FC409E2BF76BFD182148AA26FAC7D6BE78AA3B1502D5A08FCBDDBDBAFBEFE0 -0734DC7866271E01788DB0702596877EF25ADB68D3B1360371EE100A913EBAF3 -3C746FDD50A90B3CF31AE4BD38044F73C9281C26ED903A2BB187B48BF81C27B7 -EDBD54118453F2425279495D1A8EE76517BEA7DE70509415B2BBA15EF3D1E0BE -A209148263D8810FEC0E8510369075A52B13D5502342254AA7E5F1C72B84A372 -6EECB053D0D53EE5EAD1B9F34854EE5828831C386DAF3E1771611FAADDFC3C28 -3DAA67C368E04C6697B2D3AFB00EE1DD191590DB6FF3E1096AE4D644DEF0C4C6 -E104D2A5077C43E3384E25E881FD94D1B7D1EC9942AB862CD8FAE61E2D20CB5D -4D886DBE53591771FE1255A31898E2C1AA5A471A0634715116948490BC5FD162 -4C507BA45B80A066AF69819EAC947EF4C8EA94EFB2F7A0B26B0D784D6864748F -00294C347A89B1DB71271281AE4F9C121BAF2B1626438EE3E3C362C34F126BAF -B7DF48328BEEB0A13814D30303C005E144B5E83775EC48174375A9CC6F1349D9 -DC2704E0AFB2F599C54CEB1C7E7651D712B321C74CB93C26F0A23FDE001FF769 -FBC62A4D004EB03883A609BC9962C33E47723B7851615C291351F8A3937DC841 -F2404A4C0C5326701FB88CAC8949141667E11129B976082B7BE8A4C424773DCE -AE26F1D7EA5B59E1A0644578C8B30801ADE81DA5BAA14D0BB269C029B431A339 -086C83F8C1F471EC36E7A43C60BDBA58F3D7803DE70EDE5A8E8CA823E2FC2E49 -CBAF481BB368CAD352EEC46010185D1B22EF43B5EB58EB9D4F65FE2B1DD4F627 -B64C3B814E38DDAB448E5706878C36F3F7887C2D7B5F718CDC1F5414EDEB6683 -659E40597DCA88F952C10BD12475A0E6C6D24964FD47594A04F08711C507CCAA -BC0754A494061F069B50D980BF5644EF51C1325040CF376CACB7702E283DD301 -A0BA736D4F831F562A0AEF1CDE546611641F7F4FBC21AF677F1BE87AC5EE208F -77625B185ACBCE8756F816F6B4683A031B6756B4D9DBC147BB76091412601AD2 -1E749B50D391C310826978B7A52F7011EFF980784331B57456A7EA82A52C72F7 -EC98781B73DAF0EBF28146CC41CFA43B1826EEE8D7730E0D845C59D848A62446 -3CB2CDEFD01C046D2FD27EE72D5F3093059432DB068DF398680EC37F613E1DBF -AD17B33EDE86119FCF137E07056973C50C6E850F07BA2B5EDCAC76D4470DBF51 -117748B3E37160E0208C85587617A742248D5553E4EBA8FBE7640858811F2E3F -5BE29A12A0AA8776D773DED782BE04507FEA952CAC362B3AB5B63E0851133806 -8AA96277502EB0D2490CA146B60A3396562B1F6ABECA7EBE6A6C87C40B5A78F8 -15844F3DB142C5775C9BAE7678F8040DA2ACC57FC953977E494A71C2214789EF -E19F9B5FD119EDA3F6598FE869135B3CB0036EC5BD0AAB41BCC147C6C91958FE -31B0331DEBCE5EA8AC018DD7A0A31F25D5587EEB78D727DF73B2B9A9F093A0A0 -859799BCAD8526DF873B08053DF9C02A9541E53A04E4EA13569E36B1A031DD50 -68AA339BB0605454A3442FFFD88C75595E094AAF53E4F3E85868E302198CF926 -9A32DE839C76E34E4A9986351FBB7EB332AB51391D38DCE284D7E9D677ECA3ED -DC6F13262D13CAED33573D67C9320DAD37C59C0832E1DC0F2FB327056BAE1BDB -BECC7891DE65533BA7C06F69A03CB8C62B7A5B6DBD5C90EA92CEAC0303DB2AA1 -EA88AB034CE4436BD5F43027C9382E1255295D02CA1088F0748CDDFE1FFBEF5F -3EC2C509342CE04C0986377ED0934EDCC1A3E3E75994D2A5284FC8D1989C1060 -65F29DFBC2DAFC30EE4B418250E87E7B1B4C4666439B1367130F7A2C8B57CC6E -737C73B41654411ECDE787CDF6B1002DACA9975C5A77C3DF927572555B62AD62 -74B707ECBAE961A647828E317C8882A22F15568B6332B2A6771B8E329219327A -9F124671646C7A3159258D6625FCC41031ABCC73DCEA986552086F6C4A1482A7 -D2900C6074D7CBA4B6C64435C07C956CA318F032EC0A949D2EE7C9F15ADE2DF3 -D1E8FD7E8E00BB5AAABAE2FB7818291B3C5488F408B3AB511E289B6DE48735EC -99CF54A233E03009D68545C39BFEE7A1C2467359D3500F613DBCF771CFC2582A -612D03C92E04BF15660229796B64386539A62329CB779090E1B7BBF4A6344A58 -4B2A265FD62DC563FEF2FBC991CDD1A83116FB4FE210F4CC2A0A8CE60FB6A64F -813CB2EE155CDCD954D2FDD533A497AB6841AE27A5BA4B760D96DD51790BF2B1 -61485168B22A4262579958AAA30B1AAC4C915530227CD0C33A7EE6EE83AC8800 -A064CA52CDEF781A1F540FB689137C8FCE61155EA5A31DB6C9887A4E7F49C43C -ADB677D3656C290151E6240B5DCAE684F5FBC5030A8843440BC2714E86138DC4 -B9F94D1EA59D6F75C6891954D9D06F5DBB0D71A4CD1AE0A740F9793DD2C20B3E -1F3EF2C126525765C10520E1023852E11C90319CA15DC6ECC0014E909A4244A7 -A4C5AF5028E16A1631393242E8DFC67C9E704FF0AF59A12A92E7CFDEC49B6185 -350FBEA9CAB17B72E46D4F6AE72D37DA711BA939FA8A44FCA824FAB840C11378 -6AA708A4629798986C35D51147E6634D146A3C8902964E5EB27CE0E33B792C4E -08E921101B74C1A8D85AF5CA283A17D5B91FA64DB31C8CEC4A80D3DB60E4D57E -D01BFAB1F7B32051A64905E2A41307F0BF53823EA8B26DDB789233B12302F270 -1B92873451D44E2420DC942E1A50A316360F3D1BF648CC879F5D2A143E24B57D -123C73F62949D8DF6EC0632BBFC9B3F34BCBC6DD3786E53A6E855C5576D3B277 -8B6CEF56D5C553A655D794ACCD48D8BEBB525F24338F1B38C660F3F7CCD561B5 -4D59A69D5DCB51C9DF62A82C7FCE6EDA8F37D0FB565EABE6CE1E7E4908284022 -4A2AAF2A69B08AFC6327E3570F05E650CAF3E7428FECF70EBEAE09F8DA752BA1 -D7B85D2C45E658F2997A5C3BF70215FA43A9BE514536D6A6B024EC4ED333CFC9 -3741B2711B5D91756A5EE090C43589E333F1131B9F648E9204DBB9524D12B7BA -275350653C61EBA2142443BB114BD517324A0ADC73948A851F56352B931ED16A -707E42FE88262017E7AFF0D0700E5556AD8B2D7F31262CD4A139E83C87DD7054 -D74CFAFAA3397D98088C4841B6F94CD5A12C9E26BBB328FB85C0272ECB04EA4E -0EE3423DBAFF3B2E3B17F4F57B8EED774EB39F973CCC55E583F054DADFCBBAA1 -4A2D847494C3EDCFF52C313D5722F363FD60424492A129DAF9FD72EAB4C55C32 -EA86320405B55D8D104027AE63CD334C7AAB5030AE1228B0DFF6236DAE6342A0 -52837E56AC36C25EAC5507F92802C16030AEB674A14C91721DE43CF7FD615629 -EBF3FF556DD502D24B97C76FAB00E482D633C27BA8B1D54CA284D9D5E75391B7 -4655EA864B0C2551572EB215EFB0C9B775CD7F2C139288432795212724F59BC4 -850EEEDB46057D34CF25D3601C7AFD00C2034188196E35400ABC2C32DD8D14B1 -972C05D1B65891B52CAEACECBED887345CF698017EBE0EB2FEF363E1B2FE1812 -18EFDFB6A53119CADA7EB2F3AC1D137013E7D563AC0C386B40D5043FD55A2D27 -369470A931E00C62B35AF660430DD2111032C1C49A48AB820183EDD6B8C77D90 -87B5732DBA21C69533FFF399F77AD9EBCF78FF97977706D6960893C8CBE00690 -EBDE06A78370445BB9057F4E21ED948AE077466B36F20CA1DD01AF152476472B -95A166BA4EE0F3A0B86BC3DF392B16FD5C49D657FDA3F3FBEE3CAECD3BD9452A -E6B8EF31432148CC4BA8A7E1CC24A58C30FE4F7C9F338A09F8B5A7359E611075 -17C133F6F589DAB0DCE508AD3E58D8FF453FF1F49AF36C4622BA4636E5281C8E -ECA4A54E9746A49951B2D30E370F72406C22EC4F579270F67D93E9FB336DD029 -1C20F150B3224ECF54C02C5AFC923C26B6EBFBB14A5EC7BBE98E189A710B9088 -FAD875E16D9169BBF0CA62E2071A76363E2EBAA964ABCF188648F3CE99383FE4 -6B99F86D21DCCAE66E8B46544EC5344864442D76782FDB212C942DBA817A7DB6 -CBC34FE44E8DE2DEF5161021205B91A74C6D14C6782B3CC757D27115E03C278E -B9EB4BB6ECF4922F349AED29418A01542C5B2012ABA0656A21E35C0800CC80D1 -4ED9F7A48F108CEB03737BC5E186ACDEC766BF57C0D712C47D97607F5FF0A46C -0338303774399753A712BF9DBE869B9FD89C8E27A315D8CFC10954EDE353D71F -5C1A934556312F4746EBA24A6CE9EFAEDB6D62321954BA52300A36F379DF16C9 -BDB55C6A2AFC74138EF72BECD2806544574807E99FA9A89769173F99537FAC9B -FA88B13390688B77042D3C1DC783650353F1007061BAD75B0C1F6D0DA742154C -F6432B1958BCBF013C336B56FFF39F2BF78B8DBAC6D2D471725B3A3958781903 -D44C7558FE584F60C65C1A72644E092C9B80CDC694BB5AD50643067EB67A830F -A4903268BE91E4471922E74F7219E3D7FD6363501B6A3A321D7AADD4E7E99058 -A7C7FC2A7110A06CE99D58424597950B9C4DD55DE8F1BFA8064B086DB5E72FAC -A6202862047779F58234D501F8FF1413C420983A98230256D801DF9373E0CA39 -A0778EF96ADA0FF101D66A135E3DF53B8F88BC39E23D5511C1818F24E1BAAF27 -2E548F80DE89EAAED080F29773C23E9E22D2A3C8B51D1DF74E3FF839C24FE9B6 -A8B4FE3FB94ED11AE0CDEF387BF6AF67FC0F3786006497FE05751422DE68C6E6 -D8CD70EF789C29DA61F2BB8EA5B1D533EB7800F91BE9AE49594F098FC3D8ED11 -246DC6548614E49FD63F94B5A04CC37AACE16727F37C9A560ED9BDA2796FD8E8 -6A10BBD1445116730F4B206AD3488ED6C62258D7D4D66537BC55EF32519262F1 -CE539FB0F022AD3339638AEF75BB4BFC209CA4A4CB00C6190677E79E5147DF9B -074F508FBEE8A587C2BFFC76721EC236276B687EB0FB10CF424DD6BEFB6A8E8F -C4F534F90BCD011875F27EA1D5E7900DE70B7D615136DDB7D8C41747FBA8015F -1515CAE21B1283A2996C6424ECC23B6EC9FB65E6F0054D7067BE476581E46D12 -1840F5E12124F9DA3A21D04F0DDFD65AFEF9E8FD9D035887086DFA72088D9976 -700DECE96F161A16BDC53977EDD959E69394533130A5B24014A852BE52C2B582 -65289804CA6086FFBEA6FDA667FE70077122131666FC6B5196B1D89C731BE64B -7BCC5F1A2A761DC974714AEB200BF14D89B763CABA81CCDAD78BDC683593A495 -42C23C694D75C85387A430B294C9D221BCAD97598A24DDBF7414038F4D9BCD16 -4936CF7A6EDCBD9DA12FCC6550DA7FF0253D9B7D6E945A9AE27FE7A1F5115B5E -9D83127C5D7C3215E0AF42FA99904E49C1379FEFACC2C3 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMEX10 -%!PS-AdobeFont-1.1: CMEX10 1.00 -%%CreationDate: 1992 Jul 23 21:22:48 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMEX10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMEX10 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 26 /braceleftbigg put -dup 56 /bracelefttp put -dup 58 /braceleftbt put -dup 60 /braceleftmid put -dup 62 /braceex put -readonly def -/FontBBox{-24 -2960 1454 772}readonly def -/UniqueID 5000774 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF5B8CAC6A7BEB5D02276E511FFAF2AE11910 -DE076F24311D94D07CACC323F360887F1EA11BDDA7927FF3325986FDB0ABDFC8 -8E4B40E7988921D551EC0867EBCA44C05657F0DC913E7B3004A5F3E1337B6987 -FEBC45F989C8DC6DC0AD577E903F05D0D54208A0AE7F28C734F130C133B48422 -BED48639A2B74E4C08F2E710E24A99F347E0F4394CE64EACB549576E89044E52 -EABE595BC964156D9D8C2BAB0F49664E951D7C1A3D1789C47F03C7051A63D5E8 -DF04FAAC47351E82CAE0794AA9692C6452688A74A7A6A7AD09B8A9783C235EC1 -EA2156261B8FB331827145DE315B6EC1B3D8B67B3323F761EAF4C223BB214C4C -6B062D1B281F5041D068319F4911058376D8EFBA59884BA3318C5BC95684F281 -E0591BC0D1B2A4592A137FF301610019B8AC46AE6E48BC091E888E4487688350 -E9AD5074EE4848271CE4ACC38D8CBC8F3DB32813DDD5B341AF9A6601281ABA38 -4A978B98483A63FCC458D0E3BCE6FD830E7E09B0DB987A6B63B74638FC9F21A5 -8C68479E1A85225670D79CDDE5AC0B77F5A994CA700B5F0FF1F97FC63EFDE023 -8135F04A9D20C31998B12AE06676C362141AAAA395CDEF0A49E0141D335965F2 -FB4198499799CECCC8AA5D255264784CD30A3E8295888EFBC2060ADDD7BAC45A -EEEECDFF7A47A88E69D84C9E572616C1AC69A34B5F0D0DE8EE4EDF9F4ADE0387 -680924D8D5B73EF04EAD7F45977CA8AD73D4DD45DE1966A3B8251C0386164C35 -5880DD2609C80E96D1AB861C9259748E98F6711D4E241A269ED51FF328344664 -3AF9F18DCE671611DB2F5D3EA77EE734D2BED623F973E6840B8DAD1E2C3C2666 -DD4DD1C1CC71EF3BE29E7C9EC47F20088C52CAEC511F532AA38EAC7BB10B5CD5 -285CF4277EF3F022DA5DF15D675BF1B108B71578F05696149CC686C1FEA63A15 -F401D84C961CC5AB7407F206E979DF557E94FF0285FE702A00DAC1910803A266 -21E2359954BF3DD0CC09CCD690E502C2B19C6BD25215822D2A922422680E53B9 -449EF9116E9692D110AE3E6EB124B07B28A821A3322968A491987D18BE148C03 -6DF0DCBF9F053C3811FA51334DD0DC6CE46D73B242B4599E995A8458BCBABF4A -A6AFEDE42DA91B20EDC8B3118200FE22B293759CC49D7E734F6547F81730E075 -65D338EA6DF77106A9E8B3C32C9205D0B2DA84260E75B06C006ECB4B49A4528B -583B8EFEA9A470F31563B6E94E3688117829CF338DD2E04DEBB0AECACD60F5DA -4850F1E51E23A9A1013A31F6F9237227657189D18791EBDE0EE3FF76E2E47EE8 -CE13DF8148214087B952C3B3703646732DA4E198A7405D1FD3789BF29A46AD59 -C38779616131CD1804D6885445399DC1CA005463C07BD5D1E0559333CE8BE1CF -E98228754054326E6A358613E77119414EA426908BC9268A0F70D7456F174E2C -BC4B262A4984B5403592F00327BDC1918EBFB8904DE3BE04C03C133877A1E3E4 -A5A3A8AD02A6F95111015C3706CED3116D8B03CCD6AF59B845AAB7AD965E8A38 -ABF01C473B31D11A35921663D790AF77E12F966C30DFC5329B57E145D34D3ADB -2C2F2BE9F263A1655418C264151E870E5FFDE6D487FD2E638531E3C859E9283E -269A690D9CB7AF28EAEEFEF2920A040D7DD06E98E6A46874B438AD7AA47E0857 -BAB8F745C21D1E9C3A43137F54CD4EE8BA9D7A0D6F659432BB54AD5438402F70 -4E3C06D9EB961B941111984BA79971E74036EE5A0D7499587A8E9B0E1FAE1D20 -3F159E2563337D4E536FDC287A05FBBA57B0322A4FAD37CFEAF43381151B0048 -CDAD93CA98BB00A1D6DE397A6267BD931A124347E2BAC3F0AA6EF0C613BA043A -97BA9AC4B999940E083A1DECAC2E8F005C6B47D9175C2B65118C02C7DDD30EFD -C8672EE055B8687EBA3F241464EC328A8A0528C3F0ACBE0FB15BBB459198938A -80953BF59FA6F6034B2BA077CFE8BD7176889EE233909E1787E4C2F9729921CE -2E66D9FF3515875D9A6AC846CA05C82BF1965F240C2B0E -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 0 /.notdef 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 -1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A4A78141CA32C -B3C74E1A0AE0520B950B826B0ABD81766035058ED1654D00FE541CAD1D246C0E -DE85FCD3C0BF7A70B913487B1A527EA823C00C39DB61FD6641B140FCED8580D8 -046741D2494B4E7CA1F120CBB0A532BE049CABEB70A39018E8212F8178E93C98 -B377AE2880FE39BA0EE29451857DB34964DA26ACA4CD23CE284ACE37D89571FF -CB67DE7AE379B74B32ECACC5F3DE0566CE9EE820E96F27653C75935851CD9360 -A83C7EE8270383CB8A80715BC2B62B1F709235A5A73D99710D7665182D461095 -B98C8A0FEA44F0F1959055D50BABC7880E7BA1CA4CD72531A240A622663A0A1F -DBE4FB907F97515CB1100282C9A0241F65F84EBAB1701FC105BD25F82807F4CB -6A5EDB5CB156A7D55F64146818245C112DB0FEE9E0AC96B4B2AEB27F89FE0560 -727D85FE6CFF5C457EB1EE5D7E2A09979684E2611BA57A1BC7BA4E37DC4BA761 -557D986F9A8B495CB7212507AA79C297B0665CB5883F2332DF5CB088A92E24BD -1EBADCAA515B567FAA9E15E7B8DA60C1BBEEF5A2E0D4C0C67EDAD822B5E8D81C -6D29928726D36EF0A9238476FE54D4990E8D75FE0109C0336DD50F9021307213 -F69C700D2291C546007CF3A5DF3BF5ABEEB640D3AEF585055A65EB2CA7AD7F11 -22182523EAA8FCF029C604212529C03F179566E6B731FFE2283D6402A350EAB9 -3C7FFF41383A9398B33C48FB2F9A8241D65425FC5E49DC9BB97521D91E44B3C8 -B2EB1BA8D532BBF175486D1DDB914BCB92968D342B5C1FD6FC72DA462FF68992 -464BF0E00D05C2AC3729E598991C6EE7354F0C400296356ABAB37A16FA504DC9 -B6369F88BDB7061D5EEB761527E588B4A6C83169B517991789D664BB543A0E57 -6F2529BDC7838AFB93D53D5794E57B65A7DB00584492C046F72CE19E4D1B177D -1D951362B2F7CE2B720B305D45B7FC74183C1DE46073D8E20FDF8027FBFCDF40 -5F0950F5AAC19AC8E8D9A57A271C0BB212822798DCD068B4F05DBAC2AF7BB25F -5DFBFBFB5A51ED26ACB22541E1971002A5D97B5E148F8F087A3229C4 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%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 0 /.notdef 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 -889787CDC69C6F2AE63E19FB4633FEE6B85717F348605ACDCC4D2088463EA745 -DADE5252AEFE051BC3F7F1815A6C2067A87E00693A73B1326007CACAA07FBC1C -879D97778050B3474045AD61D9556D16CCC61B99C0F85E76C083FF52E50824AA -FEA23C18BB5EB100DDFB0135ED0AD462951C47F35CA979EE8FF32C72925D8C95 -ABC80751CADD995519C4CCF8D492B933464C3A30B111940870F790065840D2B0 -D6F876CDA9933E301C4B55EBEE739CD6A4368FB12A137E265D4DB3E5479C20CD -B1FF2DAA482F6999C933F683A37D0C7BB7E3E2E74227CB5625B13C3255A633E8 -4BD7C8F17E69B788B75776F44F48500D408F3A83E8EEE6C1AE3901F001E90B59 -190DFC670A16F0F8265DDA19BB37E70D175B2FFF9EA60D2A29C34AC6252FEF73 -48F903075EEDE579F75D29CCBA0820EDB5240D3D6A2A908D324A266F85C1CA64 -A1F2AD9FFE69332401D9572D90428ECA0AB5D303012B53A3EEAAF48C16204A48 -B7F00D70DF6FDC1E2FD9A2CD4B3B837533F318262CFF4A2DD5FC128AA6968964 -BBDE6107BA91A764E3AEF9B51DEB4D1393A0668B3D84522CD8AB6F5CAEC364F3 -506ED4AB9985EECDBD9E984F1DCB82755FEC15C1C02F06256719687C890F5803 -37ED47D7AF325104845D02C7A95B559D14DEBA9A236BB9725C2DB00DED9E0A10 -BDF88C7AF08040AED8B966A26AB071BAF272CA553F882E1E1D633F4134CBE953 -68D9B61D923542C85340200EED2F37773AC7C4B94894BF1BB2B9F6FAC1E9C314 -DDE9F331AFB30621FDE958931BDC7598CE028EB7A17FB4EC1C58E49FA12EB24B -FE24F667A595F57CF4F9141F5E3DE40564487A02A20E259DC603F4592F811762 -98797E21BB73AACB1A6B329C05B8F9CA7D64DFEC5FB69F5F571B918E4C07C15C -24FDBF843C75CEDFE268DD98E9EDC07FA5544FB34178D475A382F27E029DDC89 -968ABCA7AF8769E477AE7EDBE2664CD8DCADC36519542647F85612688E217546 -C276E2C15F8003B445C808B43F66AA8A205EA9AD6E77026827812614859B5CE2 -2659A297C4C49B92B7CA9C267C16BF0E59CE2B127F551A2A80B7BD184CE5F2E3 -374DD62AE8A0F5B4AC9F70E2D653A039D58299BDF5FA13106D8299918A6C8044 -C43A78D2913E9D626D2B9DB08F4C11A87CEB9C53277813FBFEC2DB755DB75B62 -E0ED25F10A7013053697699319E9FC5A9E75E67965401FDFE565FA0E405196CD -F89CADBD32FC0FAAF516348025FE6BC330AA3304989DDA243A0B391B7890A107 -2D06884862C745C3BBE82B980FD2A7126D927F638B0E80D10808A741B9270041 -80227D783A6EAC1F04F6E9772CC4F461E69D2A887A557A8B069352DC35BDCA88 -006D8EC3E71F263F824B4128B0AA108B91D91EE9361C877ECD01BCAB76745874 -29F52A61060274BC161C7F6399A61FA4192334445584890D25E72A1577272CED -63C64AC3D83A5385554B4420E8C236E8AB8668511C8008 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMMI10 -%!PS-AdobeFont-1.1: CMMI10 1.100 -%%CreationDate: 1996 Jul 23 07:53:57 -% 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 (CMMI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMMI10 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 0 /.notdef put -readonly def -/FontBBox{-32 -250 1048 750}readonly def -/UniqueID 5087385 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 -990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E -6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB -DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 -59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 -D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF -8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 -6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 -1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE -03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 -95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 -74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 -3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 -47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 -AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 -42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 -40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 -B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 -9560176676BACBFB75D4B333F5A2C354DACB749AC977CA7E1AB5EDD1EE537D10 -6E0271E2619762D24125D1308B8B8ED6C28EA6389052DA09BEB6E1CCD780014B -66831802DDBF63441CF131D44A76544CD48F347D896B6F57FC6FC6A526E9A724 -F11D67A155919B8C25404F1C4AD8D034909F49CDEC7D8C1FC8E1BBDEFD6C1CEC -4D55F80DC9F0A4B201FCFB16BB772CC169DDDC0DB297B640EA950FB17287E98A -5EA433514467E69456052F09ABD568EE0987F9F8DAB7A5A3482D38F05A685CAD -3C250558A28FE2B5E26A0A4409FD6E46008E4FA72F5583C9716FC99205BC5534 -5696267619B08523101BB8495329D4FBE208574FD5C90FC843E1BE13E5D63385 -0F5829D38740F22F3796A4657F92E9F82B20B6BAAC56A60AC59313DB3C180F85 -E6C784F89A8FE1D153FB6B28AD611F39FC788427B5E3EF0D7996D2B6A35EF4D5 -BDE3E05FA9704819242C19D30632E70873B1B990491453F77B1CA0C9C6731157 -69EDEDE71F925398106BFC61C46064350206EFF289EE9320444AAB8627124BCD -A83FDA0DA8631A9B548C883E9A96FFCE1AF5CE647F749D92069FFD02F71F0E5F -83EDA3F775B110B084BBBBA01511F8EEF100CEA292DB8AD85BD010CFA86B43B5 -DA8E5DB1BD1048211FAF89A838742C4649F26E56BCEB12FB8EB0DE42224AAF72 -2D4410BA8311F1C7CEC8438B6771364CE647321627D15C66FAE576BEA74421FB -586BAD88101FF47601FE5D8931D2B56A614E485E6EC669A0A05372BA1A036C9F -0E383F9DC1BFB82294FA36DDE1FA352E283E0C441FBB0BCDCD5BC6A4930C824E -0B60B75BCFA70F567A84A1B659961422E964974F0C1CDE5C004DEA5EACE4C7E3 -97DEBEE4DD748B51C3E830E97DAF18AD40C3D19DC462D50687C1BACA5A872357 -3758E18029CDDE8536227C0AE793737689DBB648D8096635E1DC9D3E373987DF -7C527EF7FDAD63C1275367FD7708DB08EBC63EE33A6B106662D2A1E70CC0D742 -E27F7EF7CCEC878AE88D3C93FEA849F76EE1B7D7A1BC0E9FEDA6EEC24814C6F5 -837348B57F29C403BAB829EB5E9073B110F5726BC8311F7EFF26070530175573 -EEF55CA6AFCB75EC57F83C6AC1146C75E242C0F2B66F15424AE82485DEC16837 -3E4EE25A3FED5226EB6D71BBF150A4065EDEB99DBA4D1949654DC189FF3A128A -095904960D1F934BF0CD7C42501A398C3F390CFD88218941A1DAA3390913F05A -F6E0D15C9A2C5B6154FF363077EED4D849B713616D99FCEE7CF2DCEDC79E2F9D -F78262E4D8003F311E35530AB676FFAA26B297BA77AD097D14FADFFB3C2664BD -8A75456FD2579F9D5DA75D136C09FC1EBFFBEC5E7A4728471CD375DC7ECAE836 -FABDE55E1497EBCB242BCB5AA57FF974FA850EC026638E02DD976AD16317E2A9 -A4B88CE70B8D32A61A3A1B0B66F7104BE03D0674827F1A100B0E9FC5DB90EA83 -0CD06B89E113C513CB237B6B7A69F9E2F66750F6F5718F4BE2FA6A149F49CD98 -C57885B5C5BA6B0BDF814E25AB82677366E2CF4A324E08559E3B9A939764EB0F -915022E554E7FDD9C6F28BF0D5AEA41F34682D60584A32F1FBC6DCD7AE30DE56 -616F20F2834BE6CCC2A843457857023D3B881FBD8F17F62C146DC0C2E5578891 -0A26CDF4DBBD75E81928C85DDD5BCC3E5A8C6B709A30837361A9FA3A22530BA7 -FD7545FA2C92C1CD064BFAAA62AD3DFE61115246BDCBC9463768C3610C060199 -18C4A8F28F430D41178ADB1F565651E36D709C55BB4C21687F0F7344E625D3BF -DE0D4773AD878A547EB106260299A197C70CC02189D5506BD3EB60A03B00AF62 -ABC6B52402F5CC2EBF7DBDF05DD18648B2C119DDCAEA1E153975D3E9ABCB9739 -C233942D94F242AFCAA131B87788E157DB1D661B999714FBC3D837A4ECF8FBAA -6861D792268525D9E024D60356FEB3963CA0340343F1020FBFC6769288E5A0D0 -BB7A2980FD1ABE03C2736E1DE45319E5EF7F15B14D3683C4954DBFD3791EC6EA -683F6E7F29A40C7BCDF3BFE635BA1B79D9609FC0B86770C3AD26FBDF910DFD27 -19AC363D3981ECFFC2BA5BA6A2385CFCA35F8BBB7440A3286C9F99483240B912 -EC4E21DD5382EDA5EA532935C4BD07D724EBF05BB3F7CA3C907A556164305819 -45CA66AD1F75B61BCF403E7157A149A51B02C91ABE2963C0C7DE082BC6CDE3A4 -5303234351017092D05CAF5AA4110F72427FB75D212FC25A1299264EE7DFD8DE -38652EA8A3740A5B0F732FAC227FBC55FA4D8BE4FE1D220B03D510CAA7D88EA0 -FDAAC0A35E235D02C713105E53AC6BB1CEA25092191956C63CA38ADDFA325B0F -1B70C3E38EC118AFE1C2306F76A3452FBC9895D79EF7E6BED103FB483C261B6E -C4A2250D6D79E02DB10B2F748A847B1BDDF0587938D65F7DC3A581906401EF74 -BCFEBE9D2869E3E63739CEED58393F7AF65AFF90A13B8444AC13DDC9E9B94577 -A20FDC0927148FDA84A4630CCDC7F96C526485834F4F84D7C354FCAEF493C1FB -18CC2D6033B888F1C8780DE7F4F7AB3A40540A3EE14C6AA1D208F2F8D395AFBC -B2262BBD922E48F0B84080EFE19D6C08F9D1242C14656E4450FDE80EBF989818 -A0B4F3E63F9C45EF5E40E96DB0FD9E0A4F05AF7E5B827DD6920F3793E6AFCFDA -790EEE5C04F29F9F1150BEED9059D6F2A51A269347FF6377B1A347FB6B885570 -A5C9C5651E5B62529B75903D22A5126E2A622E599BE6BEE93EB65FDE8EA473BF -51843094A24B792625DE9B1B1D79BB485DF3CE6465E39597766F5D2127EDFD53 -1035B2DA7AAAFC1DA3FC1C46C1BCF0D3184D4F93AB376A8150A408AB43E7AE87 -81A74C1D68F6D052145DD68DA9AC1A648A7F3C36519D77681853133BBD6E6133 -094AD3B63CC9DD52E4E069FADCAD5992617C31F71101D2FBCDC2F4E3DA8F5998 -16199335304FB6DB2BD1B07D17B534306A778813E598220702F8E3140C58B9A0 -F7909EC670893CF4BB86708C0C7E9160E6C9BCBF156ABEC689E308DF185696DF -197138F6DFBE616ABB2713E342DC6913D87AF26813D7DA47B27E49726D217547 -67460919E92E6B76777A9106B78EDC1554942C69E1CDA0B87CD4FC0618965777 -A881661916FE5B62CC0C353C157669A973A567123335AC98132AADF1019570D5 -314F070350118B65E8AB6115120575EA3C12A746AFAB764513CB38ABF36D7231 -2BACB720CD90545E8E48FF577299F40A27A5E553E2006ADF7454A58C235C26DB -0A6E8E53175B817EA2D70F7FF606423513B52957FDF90CCE3C71984FCBCE36E4 -36264D79EC686C4BF6B417D21EF9F7097A203A03DAE241A1CA69193F9049BEBE -24BE0A613AC01A1F9A6BC89CC698619F5FA6520C0A20A3D7029912D86D4FD58D -5C02160E6D5C650133210386E90AFEBB0CAD95DFCC007C6AA89EE9E54F8A61D3 -C9D2AF01E79C7222E7CE974C0DAC9FE000662B4960CB9A5594DEAE12ECCB7152 -761217E521DDEACFE76F1C408528135F6BBA233348620AE0DFC9D79A80FC4ADA -B4AD22C173E15EA3B92C2732A8D86F9038819B06BA3E944914D9CBAAB30B013E -3EF986F64A30B9287DEDBCE50FC5AED1588F7AB3C20360CB56DF9098CEECD525 -2DA3B520E041C00C4A7BEF4D8907BF838C42F5B6D30F261E529F14F54CC74E1F -1183FA2BBD2DD6117DA54803C222C302DBCF13D6477332DC13B64686BBF69ED8 -B946CCAC7EC19653F3D61719BC51541D1CF7048B576D63629F44E1035C2CDAC6 -6C9675C05F76D4481E69BB87F8C32CAB5A6449C61719049F54C3FF2BA4048533 -CDA41F2A6CF697BAD248AC7F6E585AC250E15326041AF3C9B500398E70499062 -89D7C7044F1CDB2620D14000B5DB0F17E71CDF466EC214BC0AEBBB8A52CD54A7 -D770867021164292861D449081B528B22467F0E467AA56FD1E07774556D05F4C -5B1780F06ECA926BD8EDD3A545B1291E9E121778B27624565534C7E30FD5272F -9ED79F07A55834006B8860A1EEA46CA9C3D19E4EDED31DB55EBE07E2596DC829 -72345BE3C1F5F73A824058AAA1DDE33E54AA8221BF3326341322B066F44CCCE3 -2031DD14C70DEBE47069D1463D85470E9B4177F5D94149A2698AAAF997A8C807 -E88FA74ACBEF9ACA321734DFD26D91F20DB867849BAF0AE612F8980DAF06B99C -04F2CA47F10750BF197FF43511DB142FB93E5F94FF87934723B486309E24B060 -2E585764CFCBBF6739109FBCF4C0387998D99E59CFD61633E07371DF4DB2F9B9 -23420F459D49BC26F1176383BFA8C931D5822ADDD97880E1E52835472D79103F -347F7CA3FD972592282F7136695BE62D5D7D2C9BBAEEFC97EEA91813658502E3 -092EEAEA899045B8AADC67112C12685E4417F1CE5305C161F4A1BE7CAD9D6AD0 -492552A2BD68AD3970B2B25CAA06085E6FA01068DD0037D65279C8CF9AB95656 -AEBA7FDA94B5B48A7D74D2A2E493A15AF3485256150A8DFBA054CC8CF4370305 -7CAD31587343FB8A1F715DD92A006C2125A7754AC9D678AA4A44DEE719BC4586 -14D0CEE9F48F3D1B00CE016BA19C2B87AC17262B1659CE6AB6CC1A33EA0BD92B -88C6C8F3095CFEEB870DE188DCB3BBEAB85F52F1F60686BE7FC1F78FC884EA06 -45EF6C3F18C8F729DC45F92F2ECA1487DA2424576342761C2C3F08B97BF775C9 -FF815B3DD9A88B3EE35B02930EF2F87E6672D5A15F33CCF7A777B5B14FE1DD42 -7EACF691FF96EC37397835DC0DBF52D3898B84CDD24BD5BE77E88651F36783FD -32DD3F26AFB538A1482E3E85B05BE3A3AA312564F68BE7247EB49E18BE522E3A -8DEDCAC760A5CDA47D5E2C2F90015BA780BAD6012C11F0B71A446EEAD99126DE -834CFAC425331079C9CFCDDAC53A2F13DF34AA24237132E7FEB4B143B79EB665 -8CD4C6D70DC848E0B5A7AADC91147FE9264D8F28E48D4D9FB6AAF4E44846F12C -932BC2D5825C2B7BAF494BF85FD571DADEA2958D45253EF1D325713FF936C1DF -1F7319BD567F3C6B4D8065BB54129475185C6E27D400B091FBF5956C275FCA86 -D4DD6E91C897BD5205FBA6C0B5D2519FC7EED90C1DE504A99686F108E5725F51 -1B85255AF761F078E72DA5D390299E0F88FA3A89A77ACBD858EB7AA43AE2F703 -EB9D209ADABAFBED0F644E9F7494CA37A9090887E97F21F72F73ED604C799694 -9A3CBBCABBA2A4E71CC181EBD44F52C069A4603CC1933221A0781B57D49413AA -D394BA6B35A557A7387E0C2F6DA6F23E17A5D9BF63A04E1A1195534B765D0892 -D1008AB3F59E19F3696C9CF6DE12343C150EF2FCA490B0C1F1B1FFE6A568B15C -DEEF178F5BD4715473F3C616B6A0E12F1BF5CFA033EE2BE9B50DFDC65F4B61D8 -829F1C58F6E65687959F705DCD39439AC83E7B88543E5B4E89555D3FCD0CDD8A -0722B565BE865FAE0904645BB9F5AF9F12A56F26BE6707E32CBA124979992B84 -3060AD1E8AE2016BFEDD1500525AE05E39A579D85C9B57CC979479E656D28F1C -5BAD062228E96007887D1B65547E70EA4A6BDCAD09DD7AF41B1AB20382A4328B -51F25668CCA650EA79ED486AD403F491EBA900A2E3781C9536B86C6093BD7200 -D414EB796E834B90F136983492C44DCFEEC0C343307DE4D321A8A27034A22418 -E53BB8B5B0 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMB10 -%!PS-AdobeFont-1.1: CMB10 1.0 -%%CreationDate: 1991 Aug 20 16:34:36 -% 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 (CMB10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMB10 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 0 /.notdef put -readonly def -/FontBBox{-62 -250 1011 750}readonly def -/UniqueID 5000761 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82 -7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378 -77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18 -2DB0E39996C010F3024A5A3C69C8485664A4E3AA81348AE21A30280D0E3B6542 -A770F048F31907891EAB8B57DC70FF775574D6CD26B8AC9C3E64C3631325BF0A -99AB413BDADAA3B51A3E168B03A856EC7D346A38BBB0A2700A23B2CA91120B9D -2AA5BE5A359C60CD78F055253785CC9701F5D670ABE4967D74838C3B267C6563 -C9651AC41D8684AD5E913A5C9C547CA225A74782D1AC62020FC38E29C356950A -00E8F2B0752CDBF81EE4ACD59BDEBBB9523AE4764B995855F3A401EB4B04EE56 -B10758196CB661448A3617B83CA88C41756EF131CFCE0C968B94B6C69AEC1E9F -BF8B21837BC422D766B5089D81CF35A807394A026FE3160580695B1213968D90 -8ECD1611E719A871E15C6085A17906F77B5B2DFA6AE670976758E67F8A4FC362 -FC7299D85ECC3C0BBAD4649B9DAB4A2FB248D6481CF0CCF274634D37A5AA4DDC -31F3138AAF10998FD66F3817B77060E71C6D8F17205F9C098D81D952E0FE3831 -2264C55D73215176470D8D75E7BE6E44514984B9D20208DB3ADD4767CAC09D41 -9C8DAB6EDF4FA1AA2CB285CA28E30972B3BFA4F8600DB92164865738B015A331 -EA9EFDD478132047DAC28DD4FFE419F94CF5FCDE732E53FD332ADBED32F76B2E -69531BCE0D461BA3F41A528DB0CCEFF9663FEB3EC9CE0F760604F835699D7C08 -CADBF7AA3DCCE9E813D66BC62C6E452FA02FE7E5F4FAAA527B4567AA4FACE790 -87910AC2498C0999866614C90AF7DFD65A59B9183FD8AC5DB9AA81E8E90FAEAD -ABBEB710530180BDE3B526CF731FE0BA836845E636150C063F179D5C9C22C678 -D350A788313C3DC98B15A0D1570FCA8DFA8DDC563664EAA8200AAB997A007C1E -A452C7BD5A86D30A6FD26502CCC5D548BE9A5189114779DE2DB215B6826D1E7F -A4E0FCAC3268B68C76AAF19F8F8E8EF5FFA1BE3DA4B04BF408CB3633B8F16734 -7AD5563DC42996ACD257393B0DBE15C4BB975C7709BC8DEE7D36AD6A07C9E5EB -33E4CDD10A2FD33A229AB53AB3C1DEA39D3518F9D3EF8BC8B4EE417C9CBE773D -7AFB1564DD0FA50D64C1AE83C8A170527E1E20D725D939C05E46D2C9C5C4B273 -ECF59BDBA975E7CB39A2BB0FDEEF0E71E79B30DFE2931BF72A6C510D5E3B1907 -FFDCD955539B3D3ECDD44D62978EA82F3349B7BCAA287CA2B1C27158AF6C87DE -A8BE037B0D15365B025765208FB8E5EF29CA76502CBDEB4B7DFE223450A70707 -87155F664179A66B8CAE39105EA8BC2D38E0976C4613BDBDB409AD8028202EFA -AD7D416E8C95D2A82336979AFA6D0FC6F8561D7E02C1EE95C498C99D7C6312E1 -3A7CF6EEA66557EF708C10E43E44463D1A4520228F9099D522FC6F3415943646 -ACC30586CBA563E1B2F90E8858777CF7F057A8AED9CEBFA5BBFC4A9A6A7C8345 -BA585957C6EF95317498FC03C71F0172473523EDE40F92C9E0BB2E798D2BBA7C -998FE4DE4C14719F3A10C753CBC9ED1BFFED31703610AF754A18C1E0D6EAF14B -E91494FDA6B1A0C22B5D7E0DDDB03988392F281665DD6C5701DDD58F97B7F48A -212FF74BADCDE596F236F4B9487B7299188D5AB7BA1E63ADB0B7DCA2CB5A6A6F -0B5BD8B3A0E3828BA85253B97C1C85E3F5290A596EAC0F7411692D3B1A596A44 -057E5E251C5ECB040123D6B60F49B17E67EFDC7382967EF46BF0A206CBE6C701 -F4E6571FD1CA1C4EFCD8CDFA083959421DD28C18B285181F6FCA5DEDFBB3E899 -EA85E7F88FC0E606206A64259B3824B7D8495C5533829DA2FBF4A44B691EB0C7 -B4BAFF51E92CEA79D64937C7F8CC3BBBCF3CB656E77F50F1FB5C2A511CAF2ED8 -3A5A5773128C23CE78182EBF28B05AAD8478C85E35ABD986CC8AC9808EC39FBC -9DBE366E55167738FA0E0367C5CBE0F1F2EC971D4F736A2476A0E6B846FABBF2 -3EF169C2DB241FD39CF497760138F34D74542594012098620C7E3C4BBFD5EDF3 -BFA511A1AC7815D9C38D5D21D540F24014089AEB493F76494D5EF8E245EB616D -408D14C10DA42C7AA056B372D86E8FBE9B043FB71BD198C9F535E2C3528CED9A -3EE9BA9A27B3F0C13B47D9688C62DEE6A6DF034C1FE41F20BA60B7C1BB2EFEAC -2FB3D9A5F87024E6DE94F05A4E339B30421A9861B28C01A8F9160D543652F856 -0B977835E9CB8421B35B86ECE49BEB72EDA36643654C2012031229A06F3A7D83 -370C4AF6A376791BA4CE290857813C024156DD7CC9162A5A360C4DAE33C17202 -DBCA7C764120CB8859B4CB19DF4B98933C960DFE0AA392045133820A8CD67A01 -C1DEE09668738FB10079B7425AAF06ECB0FAAA62E0C99DD334F3A119A6934763 -4EAFEBC8537EC32954B6502C4C6C59728EA171E2A8A0B2C6825E470731C70DFF -DCEFE88DA53870A9BBE738073D9EDA0B399BEF330C3A094169904E5E3189EF95 -E89A56141CB2B8DADDCC718E1D2251F5E727D942938901EFFF40DCC559573F66 -65944B719B8FE02E6578BA855D9F051B514DF85D36476FE16A7260B76A9D9A2B -DE8DC50B31FAE502AE349E9FD82F212EA6ED1257F37B730E09D2908F3B1873BA -30C1B6F5F7B2DD8EE4EA7338DC54BCA3A7FEA90732EB21E9A8054D7F9710C901 -36531C564E264A77FA7CA6B44BC1F56476F7C3262DDBBAE6CEBE6033DF81B777 -18D20A1FBC0F3FFA526E81DC3E5A53220C39BCAD31A6909316C274F7F4F3DB41 -0E3E206A0D28BBEBE557959056A39C34F0E5052BEFDBEAF7F159FBA3FA9AA46B -4D445BAE3BF540960C68E421418BDE7CFCFA3EDC6EE42533DCF975A8BE4FCCD6 -10E7FAD54BCB238FD92A4A3B805E4EE7BC7A0EE9DDDE60532A9D26A4CCAA0441 -DE1E6577B72E06780EF43625DF2BACBE7BABE147E172B83FC22C01A922D88220 -6A385F039DE1F29CB62AE1618167E8BD1710E9B332DCD4549843492361410DA6 -2928550565AD6B006E8D0E87F2C0EA10B6449C623A6D69EFA5BEE8301036046A -9809BE20EA9739D394B1B73DE5B212F884F7626A21D58731A261F58999B89F3E -AA7AF19C6BC8B17201D7F1553CC189F57FD7BC233AC6E325CDA6956D957C0ADE -AF1024DBFCAB149F7F6402250C893DF22AFBC58C24525611956780A92F11DC3D -7628AB8D80A25E81DD929EE249A9CAC63EBA4AE4C949D8F606EC53483FF7EE5B -6CB18E538BBEE5B1C53FA8E854BE262D3274D2F38A48EC5729B8D009EF86FEFC -B829D142EDFD546A9247E5D62373A0A81FD11C308E95494528BB446E4561927B -7FC07FB1DEE31C806B1D927F4FED5AB415E961C8248EDE258A1213A3AE8623E8 -8500499656C622F587C2651C0844B8991AFF3A67FAD72E0490D7F7D43F0F4639 -ECF8E9EFFB250375365A151D968278E8F983E88DA92C7405460C33EC07D7D155 -4984F4501C673A76F85A96C303C105D666E85FB92C0938763C85962DC8B44E11 -BD65AEF364B89CC6966D2AA49B73DDF30E0A653D87B487CC8DB4831EDAB89653 -8A8319A7DABC20923F221814FF50DA3B6A685AFE9E21671DEAA09B3848BBE605 -6A03B8B745131A54933723F07D1C6D7943FDF17CDC4BB00F299AD413A74AD934 -FC726EB8E604B676E49AFA21CD5DC07AB62DAE3B29A35FC48EC979CA373205C7 -4B66816A2EA64686B7C66290B00F5EBA0DAA97DFFB5009667F0E14254171F630 -775542BE8B30996DA2738349D5A7B9FCC7B630AE8AC2BB7CC1735D2EA32DB7BC -7686453757AB3C5A83727764AFB01E19E26B1BBF86CA91155BA189F6D796FBDA -2A041D5EBC49BCD5877F1E1B3C3004B78ABC505A370982183D458ADA4EF5C9AC -EE364B0C44200A6BB24768352F82E0B407512E3499A970924C2A9BBF6E80105D -1B231F251BEBEB7DC8CF54838CB08D3AAE594F4C0A0EB0E5705B2180560836C2 -2D141BF9DEF463EBC20882E9208F32F442321A428D7CBAE11FA2C8CB27630660 -9B3052DBBBBE9CBF5729C7384D55A9083830A2E1112E96F5C3446C737E0EA1D9 -8360D6BCDDFA5DB99C07BC67A9F5FF7A348507CA1CD3B40C56212CBB269E889D -08ED8323965E0DA5D947F35F7597DB0E278604855025B5D02FF9B0AB0CA4346D -0D2786A94282763DC5ED852A83D6928DDD6C0E44AFDDD6256FC8D668912ECA81 -BB5812F83AE9621ADF51B98C439DC9BEE50E81437BABADB7EC87CFBACA76992B -58A5CB6943533FC130988E00B03E97E081102946BE97FE2A715321B71E7E77F2 -F009FE3A8285CB50E14910F6DA467B60F4886FE805CE7AC7F3034420D8792028 -B4599A7184BF76F215DF6207BF8C30C401EC3EC2B591086FA3CC6B7F5ABC9B4D -9486423A2E3CDF2FA6371A48FE612F0E83CBAE0FAFCFC8F664A613E2CAE78812 -15F982805D4350F65DD899E5D1029A9AB86F6B32CA5BDE6A9B15456C73580898 -7E4E6FF303ACBC488A7EAF4DEED4721B1D38746C944B8DB5056DD1965C7534D7 -E0503EF8495E2F5E9DBD84A892ADA940C0C449AB41557B3588A4FEAA720299F2 -7987ABF7C143B34BF20141163BDBE4F24EE49F80D7B2271671E36D8201B19558 -EC1481BA5537E6509AF678643CF6F4EA91332D251123D79FDCCFA51697FBE8F4 -D06E0072807B53294E067B868086BA5E06B8F7AD5BB1AF5946B4CED604D9CFA6 -908B25E65002153DE15643205B366E0C5C868940177FC8CB2EC0A5B271D0E4E7 -6686EB2073ECEF1C3ACF360EA9A1A35EA9E87BD2CB519CB659437D810924372A -49311F8413662FC8F8BBB08B2826143E0D92D56D26B303CE849B623C96BB85EC -B55F505067223F7F3501A91173BC4DFF2BB9D5407EF59DF7DDD0DE16FE0652F2 -20180263DAE8DD22129438AB8B903565FA9BEC8BA6C4586303E90294E38AF047 -69D63882BCD252881C475BC16C30A5590D6AF57A8D2E12CF51B963ABA780EB9F -37C626444E967F484B4283860BE82BBB8DF48CEF8C128D3445BEB910F675522F -034984E3CE098D1D84AF7257992D36A7DAE61A400BB5E4DC1B71A93924B2B072 -F1372929FE5F2CBE2DA8A39BE15A11D81B4FF531BE41E3896A733FCD61ED879B -9C8B5EE50B4A85B6F540714C31D84F9017ECB98DC6E37E9E68C225306D78741F -25FC3A7D325AAE2A8F29368C2A52287428AA529D911F04976E4683EA2F81A733 -B18BD9DDAEB93C67FB7FD6070E96894A715C8350A2F57CF34EA95751E206617F -A7E412809D79306AD505CF7C920F8CD3A37FFDD361C4959A6A38940697E25A44 -C4A946006DA92B83580EF1BC9FDFDDD59A25C89A3B13755AFD2E2A1F01CC9DDE -2CC048DF9C0A24ED75BFC1DFC8E54F822CC4F14495B4A556C015F5562AB3880C -E7BC690D32767DEAC2E14A39054946183BBBFCDA466314726A2D6C727E93E38A -11F7088F12835747BB177439EF9D53DF9C0C761E2D5A11768A05C1D0EB0A74EE -02F7099749EE053F4DDD8A761ABC415023A9767DA060A61B67FF3CFCD4709070 -D9E52CB269AD6C009B59174355B3D74CBC12F1167A4E6A746769E7C6523BAB25 -8E85BD8048CF453F0D54512A36975112EEEC26C778E8741DB26C95E71DACF902 -49CA243B4A191D3A08E1A81D8CFECA69A050DC521C60F09FAC715DA6B69399CD -99A962598BE669241162BE9BE781F4C1F33A2FB5BAD9D79B653EAAF7530AC83B -058B23D3CDD0ED0820944FE76B6EC699215B5C608BF7A6A1072C6893AAE57595 -A6850CCAD04AD68D1331B902B7F04970B76500F936B75F9A5DD74E28CD79F4C7 -487514C0119470275D93179A0C84C6D85406D7001631B8421950F301BA5E3B2D -98D76BE303F5E74C881F586664FEE99C9EDE0ECDAC7F8EB16550D555505CD5B7 -D30D34A9C850C07117D79B06D20FC9963F7E1729DF678AF24029A6279694E486 -0412CC96DEC2E416DB3FFBF1C588AA2F200A280E18C563AF875A880898544167 -06FB17C16EFD39E1652B5CE551D5D031616558A55F4D20F192315B6F7A363036 -0ADA8E78764991753667A9C352E86727D92D729ADB4C26243ED00A640F003827 -6FB645E3E4CF7C48C23999739EAD5712E51F17AC204E8CFABE67D3189DEEBE90 -88F22ECCC5FF7C4ACE85CC0EF091E4A58259CDACE9A36B1F639F8BF468732167 -EBA2534996BBF3AFC39BC4FDCDD8615B12C5CA8E5109659808EDF4D244DAF575 -946FC48650B56447D3750165985D112223741D05326C190833FFB0A5A4DCB35B -5E73392BD61E1D47EF377A0BD53CBD7F41423DA705185E7D0C6EA01451DD2505 -A85B4336953D88CDFB702B862591029097FED232232B034A5686D784CD3B7886 -AA70418DB5AE34097B82462AC8FF28D1F467DFFEEC40A94D1F5A5CB1A1CAC170 -BB2617D0433EC70AC2EA9447C47F6C10A9F43428D9E24E51149D628DA26B91C4 -6C36A56DC254C0582516556EFA698275D74CEC181B0FD9051EB48E6F86B295DB -690F2FD9A147EFA74DBBD3E7193BF0FFF91A1CFFF271A0F8C0A8707347F935A0 -DCBE4813C338CED6B97682C89E34949BB43C7901EE7945F9480DC40E613BE047 -EF336749BD384C9573094ACCF0F86F76E743B46A675EB5B37F699B5780830F0D -BA3E6D3587387E88A39750B9BD0DA7A1F1610DC2D97853A71A0EC0B1EC240AF1 -BB3F1603523A0F5EAB30E8E017ACE937560A64F77601CD654F90B88FF47E49BB -B3944AF5434AC38A8EDBE0F1DCA4AC0B93E453BB7C84AF51CC0AFA5109B6CEC1 -E12C8498F2586AF307D628F4D9B62D7A68991C0E5060EFEDE2596A90C81202B1 -70CA143D85A5ABBD7A5C3C1763212E46158323BFA103FFAC284DB8B6E7BFACDA -0F45E931CB8639820E9354854CEA0F1C7D4C919E2EF66B6F6C854FF3B04D5A79 -A0BBEEC60A533885D5CA5B39D27C5FC7150FD6EC48B5 -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 0 /.notdef 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 -17E62C98DFB049C78AD15560CE44A39581BD6B555165091C5D41071212A9D2E3 -05965AA02B8A67AEB04D915DADC1B84A531A1D60569ECC2EEFB7B6B0263B8B5C -E6EE63CED9FA74FC7C03610F6394D64BAE1BF3B50FB613A39C300CA5F4F16CAE -F9B9F4DACFC69B69AF30E4FE9E41A6DB0FC987A13A3AF3F99127E5A44E7FE781 -399BF303B773BC0096427B18DFD0DEACAE196EB3927A7EEAE0F6DE8434EF0873 -20F134579D9E18D1E0A10DA116F544FD2B6C6917FD8B2BA682D2B27DA99555ED -7C47B44193C623C871703226039460A62C80D6FF14121F46F03F0062E0E83ECD -C37CBF62603F7C3034C2906582595B15DAE106F8F917E5DCC4EBE35AB8E8F6FB -058F8213DAED9D4F5CC703BCF5FB7AB85F2983B53C93332B93B6D178616279D2 -A2F2D2A506AA69BE1B2FAD11CA6F748468E8367E781B64BF3EC8C344DB3980A6 -1176145BAB06A4FD2B0D9FEB604C487F2F54BB7D3BFA420A62317ACE10261B45 -8247B190A9C15D808BD7C32842478AD3A623435E78D96736A11746C980918C6F -00B9454F2F7BBDAEF7BFFF7393878941155DB49CDFF164373AB8FC8D617DEDFC -6FAF28B47FA8739E56ECBEE92FF25184A187EA58A801F67A2F561CB7A658FBFA -3CC3B25D4BB09C89CFAE6B612B73C37FAB43FBAB14E6C9FA2994DB688FC69061 -1D0B09138E01BBF2A316208696FA20049431ED0838EF43AA9C1FE68FB00AD349 -0C1B8AE8FD7D0A0711D7FAC4D8D7E5D94054D6489B73656D1F3C50354BAA944F -02081408F7F59DE8DF447FA43B4BB5D946EC844034663F9AB9E6FEDFECEC6871 -C7FACA7A66416FE3F376D79D0D392B7155CD0FF7066B4EA3AB0A5DB93BCD8EDD -6B63C9593800A1365FECA821394E8C9C4FC6BD3360B3FA620315CAD49D0F6845 -20772989B1292B26AF3EEE076E811CD9EAB449EEFBCFE8BF71E5FF3424D56AAA -320D7A62442F07A828DC45309CAF6DCCAED10C690BCFBB810E769CF972CD87F7 -1EBC42B03139F9BF154CCD166495ED72FBD34BA0CDE7A401EE81D0F90D5175AB -48702C886AF58E147A1C55F8F1805EE32D424B8C6CA0297EA7A82311EB212549 -A057737BFC204113E4E34D8A0897B2FC950FBE94E8FB02CECBEA574AF099F846 -B46BDBC48EE93DB7B6C4ADE4A0B5F854DBD07608C87CC01BA034B104397FA103 -AED6A9514637DCD6E7BE62DD51196420C585ED56B18179922D0674CFD9B688AD -F9CBC7A4B3EB9D267A98AD16A4FDF5A361FE289B301706B6DB6835DF656B63D5 -21F5ABB777F67C868E60DD2F957F5844889B92850DA0C88C58D200E823889AE4 -C2EA3D5B7DCC228D50BD690145B9F01E37C6C37534487FF01EB85B8049067D1E -6FD0299C3DFDD725EC025B1C6A535D369565A30F3C727CEE2C934CE7C8B9DC44 -14A384B663131B7E30D54C08A921D70A72AA3232BB39A3F3693E1C0DEC437F9E -07E750DBCC7D3F19CAADE86EDB112077B279EEC3341DA65AEB1E03D2E6D182E8 -63A1120656174531E54ADD387A3737B042038479C882F4E9087D8DE665A888D3 -6C79D18041D6D209B359F901CBD92DAEA93B779112A28197CD160666801C1672 -CC68758B42BEEA06F3485338AC542E6EC99C9B058CEECF657280446CB3113920 -DCC212B50235165B3AA81FB94C69F29395C67C9C040337AE7596CB2418CAED88 -2236A93039813C395C45BAD2D48581FE71BA275C538CCAC1A9D9DCBBD6930975 -862EBF90F329210B5870E12CC7F3E6ADD6FAC5FDA7B473E2DEE3285B9FC25323 -CCD65B685310BE2625C35DB63DF808C5FB2BB6E6F4D9193C7419935238DE99F3 -8A656827DFD9B682B84F6C8ADF84CF7164D659D9DA234C77FFC76BDED480C075 -2313C053F8F4A6C6F86771BB0D283ABCC4B97341F277EAED366B83F122A764D8 -17943E570CF242E5AE484E1C38B45E06FDDC1CB06D15B5F40434BB69DA790812 -C44C029D7938F29DB72DA1272E70CF7582CDB250EBB19571E9A878C412BBAC12 -69458652D4BA862339E043D4C6D63EFD73BE4584095C97D0813296482BBD82D9 -E5D1DFB576B028AF98DC08AF752FFD00EA8775D6C29F7357D64D828561513295 -F7107935EDA6C077BF2CB06A3E86624BE0EA555F2F27AF8E63D192CAA3276E43 -0D855F40DED557FFCA2F8A6EEFBF49A65C19E574A4F776516E22FAD16C0267D2 -41F7977C8269897E3D1F624A77DBEE94899D7A04DF9114FBC967DC38CD6862C7 -02888B3380811890EC31E5830ABD8DE0E83635C368287A8288D160F73D892793 -4423FA81F0BD0AD428C2E986FE2FE371E99661F927A77077D46783B3F8A0DEC5 -4D88DA7F34E3FBD88612C3B16A549B8DA5EE284E27DE1B34D3324F1DD67C5D20 -2D419DE9EDAE9BA660AE95D5695A9595571F8ED11888B40CDA055C88C5621105 -644D778A9631F1108C86DF222F00E7884DD8A6DCC96E3B7D2D9BE9F7A3D697D1 -37495867CB165B1E57AB6283CB5367D9F6956FBD435370C36A8E6F1C60D4A450 -A6E2937A59742A99F3FCDF2D8F21362F16A26695E98F564EF20BD20AA31C259F -31BA13D125CB6E89FD3B85FCFDF085C3F61898DEF03314108B3B5364042DB129 -B5BBB96349D0CC703E3824C13415335080DD33A5E66E98B62629BAC8467ADA17 -72A822EBA5D83790B0730EE10741FDFB2A594F1678D1116AC6DC1E671B6B9601 -9731B7271BA4926D0275537D3E9AAA8E4BAE96D6A9461EBD55A5084D0FB41773 -4559B9C607B11604E0FAD35D5012542EF68E60594F59164F38BC5FBDED88E8F0 -359D9C9F5FAAB198CC054BBBFFC3EBC63276F08435F26F922991C0B6291C6A19 -4C0DB6CFA84507ED99D930216DDE32ACF980FCB9BBEEA002750EF5A1B47F9AAF -572A533CDFE7058C5B26F6441EF6296A546381CE4738D5B822500F3D1C02DEE8 -62C08AD85EF4629FD6255B331939E905D155102A0DBE195ECA5E3FC75A36853A -B97D5C2E4E6E3247FC86C5E3015A975B7648B47A157E7A54AF7E6FDA79C58926 -5601755E63D838342E0696DCD97EAD4EA21B28E1BD10535B2ECDA6556E8B9B12 -3E8E01986B81948D8F96E20714EFC735D867BDE67E82896016363A4A408330E5 -00765D47697859B35F061AFD3B7624E4EA4696FDF58174BECA412B7AB6DAB600 -ADBD2069E5CC1343087F9B7803FDA37567285A4BFA61CD70977030FC78E26565 -07B3F1FF7A5B88F7A8A7386DB026BD95393BE419858CAEFD08C908D63A22258F -20C4027BF649A6141BCFCF4387B69980D410C64895E023700646F56D82D485D3 -062407D85708A1B8DFC5C7D056FBDA21967787AF4FA1BAF05D481F2E95D45AB3 -F326111F3C83F6B6F6CA252B0072ECF468A44A15B4841EFFEF1C618269601221 -DDA422B44A2A3974A09A9F2641E4B78FE3FFE3636F03FE45A4EE3D9E57ED5D94 -E1C532DEAFA46C51203657499C04DE605C6EFE34D34D7B5106FC8CC8608B69A7 -2C2F45C32F25CF167DB79E5795B91887BAD8C6056D2FD4DB1CB3C6E35641E23D -E60014DA35F896639ECAA80DEC59C8CE0DC867F6124D3957B0B8EADDB447232F -59C2FE52A6557582DD2EC0E938F63A03DD35AD302429E82EDDEA93EA428733C4 -7F7C804E454F9A5BAD0E6512DD9E40A5C1E0F33EEB2B535277CE5339ECF871B2 -6E6191935601E104A393E2D3E1CAE2171E1504562420A967C5164564D9310916 -B0755F3B9229631304A96840A72C4A4AEEC8006E8B894F935DF2E1E5EA8FC68F -53831008BD0F3E71FA51DE39B9860947D924722632FE9F7D62910ED9F30058DC -53755112F0024DCD0A87DC1A0B3E206AD20AA98EEF6B9DDAA523D5B2DCB8532F -17EF7C583F3E94679EDCD3C30901F9EB957F815CA6093F3CE703026F453B2270 -42E974A3718B52986D179E5CF17D4CE207E4AEA5A9F4DBD8F90689056ACC7C2D -C9A6D810BCD2A7FAF7AB090271D54BA7C0C5B228158D92BA176C6B4033AA9207 -9A048FA3F8A779F8B2AD00D390DF3A5989E918F260401F6D036097192FF4B4E6 -A602E1CF746CB271DE25E6780960E16F48453046A720D65633EA87ADAB967F51 -B9D158372C66863372F991C24E61BF89429E4D1662622E10D95E2EDCA673531B -AAC06181D0A95CAC3609DD06C4C946A8B04A3A26FF55F58EA03474FC7FC7637D -BD72430128879E1987728829ED5F8879CBF472D6098F26EE4E54E95344B10F35 -520A19FB2CA9E39DAD79D9F164F4C934DB453EF5B5D299480F2110FDE07C89C7 -0E19AFA32DE0611CEFA644CAAAD05E0D03340AC3593013D1CC3747BEC7F05723 -A5D252A0BC1616D08B3A9B41C6F195F06410747EC4BFC1C9C84E41459DC0A9F6 -0C12CAC77271A2A9DC25A019CCB2351AFA95402D235BAD107ACB843FA74B5677 -FA1080F3E01E0D46055A2AE529736DD575EE054985559AFB90B7931ADB78754E -1ACCDC9C4BC98279D1E3F1E015CA325612F1CBE2FD5607BE379AB6EDD2CA5CA9 -71BC6758484C33A4A84CB7A2AE4DD0D4BBDBBA42DDFE5D25C5E82DF5E10209BB -FF2BBE2E42BB209B680B4557ED509A4168A565671825D79D53838732EBC31202 -6B77F4DF50C8251E75D099126574FCF4D3B24C1E77F6D1694CCFC6A465F654B5 -977BFAA866BB69451AF6D4DE779C05445C37A914D947D1F7C22A6ED462F41972 -24F000965433F92DFF618B6A02E08270F82065579D07A20298EAEFA4CB104983 -E670A5A28AEE13E2A645E10A6D8F4FBC074AEB7C5769935AE4F899C6E14A382E -99C33D68FBE75F187E38C879EC223B4EB6225A11E8DA3098D6EB5A7D097162E2 -F4830ED6CA5D8D94E4B0F6A8BBA10DF40505A152DD9936CC6FF28906ED6F3D55 -02F71D55DF14E877693088B56A86DC396CE5C9AE2BCF609515A5737EFF86462C -D53074240F3B6A0740A04C42AAA24C143316FC650AAEE09C033DC0BD662E4D1F -345987EDFDE527F5B86CBCED40569455197EFF3A63ACA68E7929352FE858254E -C856F1BA63ED7E6D8EBE2AB642251400F48FFB850411DADD4B8304FA4A5BED2E -0B21F5F6B35D5A9A0949DCACE954A975A4F171CF03CD3B418BB9A560B9260BFC -ECC8F009CCC09247414E15A9066F4DBF8B01BB8F2F2D785B37EA25437D518DCF -ED954655D49D03E0D9DB1AE2B33B84D5833F7919781FECF45A6BF916DE34474D -6A27685AC9B28C2B53C17D0D45478EF3556DB5D999AEC732F0FAD0978D063050 -D9C0143C25B453A0F1DAB24D85652E4897290DD607823633BE7D8FE58DAE2DA4 -498CFC0D5F886D96C57615D008EA1CBB9B96347B65B0377D6005FA4E8E41A96F -C475244D52DA653DE865B810D8ED1CD615E3248E856CF25E471024BAE0FC406F -9492BFD53CDAB1A394A026DC27E3ED28A85A154F4078CFDC27382D60AE777F62 -91CA388AE7FD1FD2E922A1853B298B226D625B455776A07D325A2B5F4AEEE1B1 -4B4AE33220DC29950D422B94E2131D9AE35D9AF5B2D5BFBA8634189652A09413 -DE0D5FE071AF2EBF818C9BA2BF8E925C269DD34C4FC4CA1C3FAFA30AE3538DBB -ADE03F1C8AAE1D93516DC6A7063F8B11522CD893E0559BD3B64CCB80B43B07BE -6D29E1BBD129422FCC6C4E1A3CEEC2928DDBBB2D6D8F846A6B606EA864EED72D -6B4395730D156775CEA37E6F8ABF7999D1DDADFBA50D8E10BAE1317730BEDB03 -7A4854F8DFFA9185D8FFCEB1390954A2B4E3997627EE1E5073E421BF8FD0F6B3 -C432D899BF0B8F0292AEC6465FE740A091A8F6AA9AB9D7B622C89F8E1BEB21FD -A001C0CBC97CC1199B677D3B55C6343418402790F5F37A6336272FA2D844A40C -9B6A96E1D035000F2445A6DB6BFD3AE1EA719E5292C87150B075BFDBF8590E91 -8834A333C8C83163331C7BAA7A8CF91E623E1786047EE5669A7F0363E98EAD0F -6277525059BED01D57B9372A2646AD9B12F1C0B8FC455247DBE0C6B8E4A999A5 -B8E8A015AD60628F3A8D4B66D6EAD598D54A5291FA407959829976CEF2D287EF -2710CC0EAA41B05364AE8EDBC5250DD3E74E26A0C1030899D3D2FC6609A6D3CF -1C3656E171E0CAB812F173516D6AC2703AA4318B81096F78C51123D8438B6B52 -958B4A0B18335487BAD3DE62A9748FAC28AF0E701AA55CCD2D38AA3264ABDFF1 -147AB6FDD8C23A2DE9ADF8B5BF7C52101CAFD1850C68E9B012FA0A9FD95C68C9 -D3241857EF632FE4713FD21622C1E664E9D22FD026C8F342BD304D5A72166634 -EFF773EB844C8713D2B51D7A467CCF0B28CD9FF0FDA7E6BD66B32EF13A4B1F24 -81EAED6D68B8907A4DDD737F5903244F18843FFBC37DF84E7BC7C773622062DB -47B790D55928C59680455D46D26A5784DA39740E0E2FD399A7E9489F3A424014 -112AEEA49781E84CB471590669E1B1AB1915C04F49DB93BC9D2A4A0F2AF295A5 -2CE4661B52E083AE51B2E9BB557E2793A30565FB25D586BC354483A5F499B3DE -20B1470FEBD2871E068BB2994D9059BF9B9E7EA0D28CFC663EE7F89E2227E395 -7B5CD00B98E2FD040B60142572B197B919A74D987748D6A22706CCFDA3E1533E -C6A1C31194D7D8FFD2C055EAA7E381721C63C9B5205236A66E33C5AB52D47E83 -20A474777328D4EF4175D9B325FC3FDD7348F49EE86E72CBC3B8BB722B105AA7 -FED0CE5BC27ADFA3C92992507E0E75B4D25A0A7A68868E2C55B9605AB79A5D58 -A2A69E293DC3626487A7C196B8819B171D0AC9C7E6ECBE4C2986B3653E09C304 -A6ACD1A672038862AA38133CE7CE343FC7E6A3D14D1588D59C2D500F654F0C28 -F0B0F57B49B32906D6012F30E729870B8B2683E6A502371C0E7350A5CF8712EB -A8516DB9AF28566D52F73F4A2D52B02E36E5AB7F542E35C3A2D1DD15E773ABA1 -6FB3BECC73ACED1590D0704D995C3640C11F0957C0390EF133295D954C72DD17 -94D84FB7807E00E728A8C10FA4314BB2DCF8E3A8D0DB373C3394C36BD1472372 -6E1DB0B3B500EDEFA179BEF8E9B7AA5E5E0A0691DFECB22D1FB02D48855F9343 -11ACFCD18B97862F6D81E055AFE7CD9F455EE26AF7DB09B58B8CEFA953817D58 -31057B2E880E6327E32AF0EAED4511E29C6BC150B6EF2E2B6526D81772207C99 -6AF3EB07B8E3F3EFE2462799338DABEB0C9EBFF8C40BD543CD6CF66DC053DFA2 -EE04C43F0643A65CD6FDEC4C7A78C08DBEC4FBA9A4E0554AEAD4CE7112C93AD0 -6E74DBA8FD967EB66D60FC9C91BE1DBA585446F33E7172E4D9B9D5239A7B8CD6 -010B2616F1606ACE1C44C6D03025A032447A077AAD483E183E520B2785E5D3A6 -0895445A70230F7D42F816BBCE9D59A532515BDDABB6FC816EE677D0C8459656 -540F7219793A54A4843B74731E6438D377298B87A0E13051B893EB2F5EDD9E1D -44D87B621B522DB8F81CFA370EC336A4A8B4E6CC760984088CE68AD86063631B -D4339E5DFE27CBE518594138EB78F9F59670F41A0FFBE7B3208FFF7AC7AAE513 -986ED39A3E109C6078ABF6AD63C9650D728A9EFD5C59F935988A4C14D58E6055 -D4163D1768E9B1DF3CA75EF2381C5BCD8B8B4A6AAC4A62B7C104DF64B0E5E4D0 -75061AB2859C5D3340FEC1D161E4F2F284154162525E69EBE6EED397AF58A890 -A110F07F8FC87815 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMBXTI10 -%!PS-AdobeFont-1.1: CMBXTI10 1.0 -%%CreationDate: 1991 Aug 18 17:46:30 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBXTI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMBXTI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-29 -250 1274 754}readonly def -/UniqueID 5000771 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D004B836D34E88C20EEB527CE1124209388A2DF -E27A8DF298A2693A9D529916AA0B2176E6ED237F69D84A8FEEB36861D1847207 -BE2BD61C6A412FFFEDFF13AFEC32AC7735BCCE5965F5966418A62ECB99112AB3 -3BC938EC590FF6922659125EB67E260BF02885E49BA6019E696D33F0B53606A2 -F515E0C45F323311613A94B838491BAB9FE230C5CC79D22925E3D882799F2707 -C32975A494F0F9513E4D8332E7E54470D9721FBD345CDBB48286F2F19CC6D66E -BB631DD6476A509167A49CA525A72CA50E82C1D08C2B372DB54C5949C753B632 -2009B761EB90492ACD3CBE6A35CE1B66F3BC4D8DC36827CE4261A703328451D1 -879438479917C1647772999171DCCF1491A1C9086E0C6393506768F8757BD81D -141C46EB9BF507EEC29962A0072B6C5D8C8588F3D68886CD2606DD3BD2FECCEF -63245494E93EEA12AAFB06110E54ADC444C7E7619627A48A464394E5DE06EB46 -4C76A2FF010318BBE48B3776C826A265C66515717F7F2E943C60EBAB23D96B5B -FD514A1C4E79BB3D3D2DEB936F90CD3FABF7B09FF7F564AB5CF4AF6A40E869FD -395885A88F4A138B3CA6943A2D430BBE43D91F7F17621CAF52FB7161DA3B2003 -82244FB6EE792DCA1722C03392C296C029A2DCC5BAAB3EA03F8DEB039DC83AE1 -763AAB84776A2CCFFAE9EAF0BFDAE417E8BE682D237FFEDAF224AC09C9665019 -165CE32F5349E857177D94AD6396570932E1657ADE4D3FF57A3419946CCD210E -57E5A1D91CF708395942527D127606350924D71BC21C6F969288B1C8CA3404ED -E6219985F7301A20621368F74747EAD38990A4C9F2B62913B8FDB93657409FF5 -178DAA7C97C35EAFA47778CE03E863303582D8A9900EF4F8DA879DED54BACD7A -4A50C18AA2ED906FC4DC073B1E6CA1E3855AD5B7698EF4A96B77DBE19A12382A -CFA8717DE230CB6182F2250885B8E90AC42A66484A7B527061B223A6D1CC72D4 -890359E7E04690BFFA99FAB5CC9999F0873A9DBE49E33F79E483FAD72313DF9A -7B7D926461988C23CCE9F71AB7BB63BDB2B10B3F78176380AFFC154825C9BDCE -82303FBFC3B59E070438984C28D12E8655BBBF049125BF56DD2B0DE8C0450E55 -82832DA59EBEB001AAD86F2317460DD7ED264611B9043614221ECF -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSY10 -%!PS-AdobeFont-1.1: CMSY10 1.0 -%%CreationDate: 1991 Aug 15 07:20:57 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.035 def -/isFixedPitch false def -end readonly def -/FontName /CMSY10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef 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 -515DB70A8D4F6146FE068DC1E5DE8BC57030ACE57A0A31C99BEDB251A0ECAD78 -253AB32E9AD71F7E106560BA511DA17DA9B50B0585742DD7C5FC3BA0B94348CC -1C27F194D9FD5DD303309D4E1262DC924ECA34D9AD0A1C03CA53FFC8036F7E2E -2CD4BCCAB4E0DA519201729D9E5E0458FAF6989694B69DA6F7BA88674D7D44DE -2D8E04B202FBD353AC665DC64CBB2B55795078D865AC5576A461C9151558E8AC -308F4D6F4E641D5C9948A39B7A2315C9C879A9F448AAFCA94E9E64AD57F92967 -1524C61CF54AB77F1CE8F67B9EDB61799AADE4BE19AAD318675A0C83F5ABC44F -43724F8462BA450CBA9D930DEC3211BAC2EC059AC8A320F3ADFD8684787288CF -3595A543FDA3D0A1150FDEBDFC9EA76A07E989A3ED2EE140FEFF94E517BEC143 -8DE8DA1EE87CA63AC9C106928A2BC24F10D9694CDCAEF1B4E623760CC08A9338 -E4F5077749C8274710B328917F3397320FDA3D79BFD24E72DB3C1DDF6E6A0649 -F11F7BA4D7FD3CA565343D13985590EA109BC4478DD839B3EB02B22A72F4D5B0 -1854120AED672B1F3F14A49B655694243D2C381501750A7A9854EC3CD9798844 -DEE8B204A3A5CDCD8C8B5E411788FE96015EA828AA800E260A3250B11C413731 -C85270DBEDC26C44036237B1C5BAF498430DDD83F29D966F227F4C86FDA62645 -E624750993232595CE07341A14178F5F0BB023717D6650D4D42106A98F811583 -1A6B376530D706BA9A14FEF2C565ADEB278FE66060E584A21F2D7111D2C542E4 -1B79A464AC6BEF62E47480227A17E34C1705C9A3BA688A22FB384F03345D5A46 -F411FB3FFA7C70 -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 0 /.notdef 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 -C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA -726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227 -CEBEF0C9440DC034DAD9C19FB27DB399BDAEE22053591D6538587C768C1B7B0B -7D1E222D2D8AF3A6473CC4C0D6C3E0DB49068CEB8C9BD1C5CD486A50DAA10BC7 -7D6286142355E3F21DD254E27C00C442728A0BAEC9D3F17AE9CE320D365152E9 -EB0D5E3874F2BCEDA98521D23FCFC30B4B69DAD2ADBE80E5964ED0ABEF6C73B6 -DAD30E2C5061E3747FE536E1A5D190D028F2130AF608F5DDF9DDDF1E77DC8437 -ECB3EC93B33505DF47884DDBD1DC6BBE4098DF04A29AF6FA3AE344600D0AAB53 -B3820DD7ECB600A3B8001C51AF2CA7A39AE1485A087FD1752DF68F55B52B4DA7 -48030F2AA7E570B3D56C4EAD367B9B73FBC0A7356253233006178B9A6BC19081 -B815B5988AE76FE6FAFD7AC239072B1106A3F509381AAEE79B2F2154CAC4727B -D199CDC8B4D05DF4BA006982512ABD7539E28D937B0F87FF79A3F84C29ECF943 -A8DCB8BDF8EA9E7A0E7CD60BC2308C96B3E889C797D0FF28FF4847016B3DA141 -E76FC6BE78A6EE9CE07E651FF86E720A1A1F075972D36E5C55162E3FE26BCE3A -814BFEB12D4C5FD24340CFFED499C7CA183E57EC4F12CFFBE3291D43F7270575 -C6C3306F832EF182ADD0AA14C4D8669A17C09F632406AFA195F90C4DDC39779E -EC0A77E590211592D6EE19563963225C06C2F13265EBB5A6CFB7C17D9E77650D -11958305727AF662AE73AD0E3ED5F7E7086C5A0C3548A8129575980B06C715AF -DD55C8DF869BED0A7883491030B1A7E82C5EB04E5A7D952E716DD8F2EF6275EE -087614CFAB55FCE2BBECD7E8D9C90FD8359E929D5E0A416A23BD58158318B4FF -87B095EB63F7F052B3A77F136FD66EB2C52BD46CD7DB3091A4B78A607112B12C -4D171B2A00B78B0E1C44B0D90C20D9244281F5123DC1F6063F91E9E3E48DE78B -C862D848BAD073A4FCB5EEC9FF54B5AB8E234CCC3C7439C62ABC4A13EF1B8897 -ABBF21F900C564C9A305FC36FC7224932F766E6E72C2EBB55953DFE2AFC2E3FD -33A0C6F0FDFF086E9FD796E7242596AE85B877223532667625E371D2156E4C04 -0D7FFCD3337B93DF066CB6FE1E13960719EB7CB409EE805C08ACD2C06303ED9C -E34C898787A43C1B428B896551C6FEB50A831C6F8CE2073EFC662EC286CB7555 -A3B42E58772E82FEE206948B8C439FEC5E4ECB9E11DC3A4CBC7611E30890E408 -637A01A2118441B4F9467A98BB2A1B03BB2F5D8E3DB7D1D15C188D9E856088EC -B762F07B1C06024F7EF53A2FBD60C0A1F4C0275D07164545250ECEEF8CB15B04 -A2D8AC44DDE818C59C66CB8DFE4BF2C42038979B7A7C812EDFACB165C9DAB935 -E4BF8A977F82E5BEB22B271771D3C086D3A592B0320773F10418C3DA367AA46D -7DD07F2216F30C02DFDF113583CFD1D2E32C018E65F922AC84CF6133BF021B71 -9FE7A44DC1ECD54F1F4343E42059325CBA92247176DC7F56CCCB980434533625 -ED1AF807F49D600C6B25B3A9C0102D2E38C59C976786DC943BD3C3BBF19AC8D5 -7F18A63CC38C55DFA1DCAE20D5A7FC90398C199C0046B734B56DFC8B4C5EC145 -2059CB418FC9C4A6DABCD02A415A3CB157F466E500739078CB6BF652114F6795 -36354923CCA934B6B54531A9080465F60AA3C0B65971756D01C6C70AF828A992 -A713EFB662E41CCC9864B8C79ED212EE9479151D8DB09A12B2EBE93A93E51F5E -A744320E2A01241A8DC4622C415C3F36D74C399A37B68CBF89B9E8CB53BC1BA1 -EF74948C93C5FD1808C0B80C012A42643D7EE20462E69083D96BCB3D56745961 -50341343D1CFA4C6BB6AE73825CC4A7F30871E9A8038B65852B2DFE0D5509673 -A6A3A05EAF20ABC323074D5893DBE501A8D085794A58BA11E77BA67CF05967FB -798FC67B884E77E3C078964EBB611D7FB62ED60AD7E797C9995F140C3E46947E -6B7F8DAD9692D74672D3247A3A3FB02EAFBC57658826DE7D4148C1B880174210 -C7E84EF060D4A80B25FE4C73AF77577C99B04542801E510CC175B409882683C4 -4DEA3D0334845CF10380B63B3771C1FA0BD8CA1F99A36D3B9036288488CA74B8 -E0A8EA104E738B2522130AC652F4FD48A98981CDC80ECD3AF2D1FD690669D386 -09AC0ED029B0D71A30C6634D4F3BF9EF3D1BF774927C32572E6021CA6B53C82D -EF5396111A187A8F1C3E8820A94306FB850623A3975D570BF484CA5A0C5F1C8F -4C13A039A05F80F15D9677422DF833F74C66B20822B65927382CA07051F4DF57 -9FE0CCE8499A5BBA7EAC794875D7479CAEE6B2E779F5CE8C4357013FBEEF4BF2 -8DB688EFCB85DFE2D2EEF3ED1F6D7E7ECCD02C6C83C03BCE1C4244A6C2B1C6EE -795BA50915BFC8044DE3B7DDD79B12717A180529B4B72559C254F62E7AC3E40C -DC5D74D64E917C6D520284086AC8F0162A967547DE4C0CAB8F286A9F93FFE462 -4787687FB0FA0BE84D905229DC764FE3FD52794AF43DFE1B6CB0563965E473FF -5D12971B5B56F935FEAF49AB575E47A8651C6105A127947734DFA754B1325CEF -9C365ACE9E1362FD5E09216C5428348849B1865D43C85B65F4F0CCF65FD01138 -69EE607E4E8FA9F4E5D20A87FDA0C996C889D4E365081EC6AB0C1009DD63EA54 -736AB0CD79756AB46A8AD08BC8F83E01CAFA584165AC06142A909E2B729BBC26 -F6307AC49C68126309A5391C552FEAD0A8E03A0950D7D827E8533F9448F5E178 -37FCC10594A9ABADB283EC1592B3D41B7553562474E31372882DC413DE49F29D -A50A74D36E4FAFF3C98572CBC407105EF45D688ECB6F8B5477137527FDFBC20E -BA9941E62AC325CF0DD4D86B8B339497D85657A9A0FA88729274EC8EC25D9F9B -23A0187B0EEE09AD704005A2418C0338762E127166722D71FE2EF546890D53C0 -5605F5022EA1DB711B76045E94B3FF3F5BF629C662D77BF8478778428DE0D859 -DE23285F30060F7789B3E31F5D2480D9BF39C643ECAB86CD425B47471D40FD9B -3E8D1807384425F31E532CA6BC5E9C088627A69457B9A88995C5036AB8D32132 -B5B641AC40C5143AF44F5D6AF9C021E48743894BF9EBC6E269614E1DA3602A50 -F3B0D2DA77681ADFD69308CD2728849B3DF68466E14F52F8FF1687279F1EC360 -508D5A8BF4CB4AEF0CD76C26C58012363CBC9A6E21A3ED35506600B95B2D2A33 -D68E04161BE81EC86F95C0603CFBBF25742768AF45465D56671C5AD96910D879 -9A6775DD56EF170CC342916F96944A61A82093058BBECEC2A614F9337D4D98CC -DE325CC950A88D8A2B859BEC93607C3E359312C18473BEB5738EBCC19ACD8D67 -4AD6542550C5EF64DF032315AB1F7620FAB9C98996F26B2986E387307B0A0A76 -C51AECF3860F4F7E0CA59EAD0EE473C24B635D51617EC5A599C8CB546A813CCF -781D722D2A14186D1C6BBCB929AAB4E773AE8EE3354DC6CECF3B9381FE9C9B2E -DEAA08D7B5F0043A0EE1ED4B378DC9DB24262ACC4682B56359142D908BA2BBBF -7C013A08A4FB3EF9A47FB969EBBB9F73A47ECA422EB3D416082702FEFE12DD37 -FD0DDABAAA3CC65005485466123D646C9E22B84AD7E85DF31E30928A1BF8E10A -42C7F3A074CFA70F4594E3E7F3DCA6C64425CF3A61A55E2612FB2954AA77FD8E -F45CA623E1AB35E6781E7781885FB3FBACFA343860F1A33DB79BDBD9319A44AD -E8C92430DCFE0F61FF4594CE5D27B975848861205633352C100094A490602366 -69FAD3F00A053B5221F9D3013FF504099B05956CFEAFC6960B598141DB480626 -500CF3E77237853F39680AF04C85293C0914F18526A5C844CB1C34630389EDD6 -EED49A24785434DA1BD50955F0BD84D900EF5787BCB849023508087C15D95C2B -47AA976281038C70E406B85BD9375FEF8ABC13477E9AB4F80A317093DC688DD9 -4B70E5A24265D651D2464FE6B9CF80F0EEF42B1FEB4AEA906A643B7F9053976D -C9629557CA28A428869299FBCD35424D95729661FCDB5BB0F725034DE7895D35 -4EA0297A0D8FE8E668899FB09B7A8B1628FB721B544FA9F135DCD02CECD6BA5A -583BD0D61B6182B5E20CB9F56EE2603D6768999731888AEA6554CEA6A7921049 -56AA82FA5A5A7926C9A2EC294901D83494C9A06E91CACEF2F4C23F914785265E -005418A928497DC68C1BCB4BD772145D41807990A4FD3EE73D779389364706AA -46E24DD179EC1845B982581D73CD4BFDE1FD32C71D0CB07C1444804012811553 -EE7BA5E8EA1D4875AC9A827F7D85DA9A55E42E7B97B59F94EF3B7FC44B90BDAB -CB52AFE27CA9861883FCC7CB6623C996480D5F90E0FC78015ED186DFCBA5AB53 -010FF35092454573A7B00D85AD9FD25E8D9E9E8B39AF8A0D8C1DBCE2031FCE9B -FA6DD8D62C07FE0C16A756A1A4187BB5FB7CB96EF356B6C6A3CC7641790BF517 -18CF13BE49566C2D357D7FBA4CF433B52D60E1F257C75AEEB09F19184B79A56E -4446FD00D9856AD1F3E5627BB6F9E7935BC907BE7405580FA4C3A7FDF14AFCD4 -ADDBDA4EFBF41D9D80B6EE8A1D3FCBAE8720929CA6B221302C62E855E23EC8EA -16B10BA822089985CB127AA51526B866044C69675C907AF4C3A7FF35356634E3 -C711D04EE0E04B94F73A4C40DADF645B31BE6F6F0B2BE75B3B7B671A6456AE30 -1CC081D4630B464A7A307CCE33F339169C0918EB76104BECD3DE58ABBEB633FC -295F1A3F136C49FF29C39DB329967927DB11EC5EBB8B631BFEAFA7DA689A7F3E -983728FC87C9CF7F073AE050E9EC7CD61C965A6FD22BA3EA1860502CC573FD4F -837B6A5E02CE52AE1EF5E18F26CEE43F69F3C3E5FE7FC0401222B85662F92406 -2EC27ABF966B077BB027BF6CB64D1C5BBA29B0E8E63F7A752DE455D8078DD85C -5A4CE469B6ADB149FFE142EC3BB9AB4024C2FD11E2F7901FFA632868233DD511 -81F816852606CD2AF8EF5AC674A88B0E553117738926CA7F67137D9141A5A8E6 -107FE59C0AEEA23569D7B22BFE7501A48FAEA5903640D7924363DBA1390FAEBF -EED3000C13D97107DE3DD4FFC397E2A0257D69393434AD2AF7200F8B13D4BE95 -EA4BE71F1E13D641BFECE8D3349B08AF82CAA8FA074C13098BB0E12D44263272 -289B87C42860929177D70560501754177DC65CCDB59496D50968E86522D63A2E -B0256DEF66ABA2D32160A531C1AB050F72CAD150340EF6F64FBC398DAF07385B -A9567D1E66B1A30BD1CBABA75079A6C7E1E7055CC474E7AEB232056A59E6EBCE -97B5CA91ED3116A8AE672E1BA237D02EB0A8F4442F3462B8F5C72742B42E0CBB -06CCE546D085732A27D22362406C71AC117DC418CFC02907A9F8018B09ACA0C8 -865A59976DD97451F8602CE480363C1EA235F14FA6AFBEC2304BB43821980204 -623D0578F29AD0AE9449CB784EE327ADD872E91CCACCCCA08B569012A67923FE -576A2DCEDC860AED2939704511E0C5723F1A09896F60C885D40104D858B6818A -0D5D4BB54842987A55C36CC027CCD0480F97AC9F72EAE323C93BC5308D3AFA51 -3C52148F85B6CA37771946C3BDFB4485F9D77504B6C2B0FAC96EF4CF11FFED98 -E99DEF242BDB3783A7694C2B2D9A6356CAF28D611083AD555E0AEEF864A8A57A -2079B07729A92500C1FE2C7D3A39D20924A063865E5B530EC35D6F482C187E87 -280BA6C2282A71EC58F3C24562404FBDDB5723518F3528F4AE662A6DDEC3D3ED -C4882497D255601E287755EA15CEA84D5A3AB681E81B4F0D969A8AF38805645F -8E9D3BCDBE8DB1421C4789ED33F0D4F291E0FA3E776B33101F170019FA6C93BC -8C89DD199830A42697A25513D2FB2D3402EC2BCEE0E45832D71F598E9D0A003D -F20A5DC3CB520AE3CC15DF473D1ACC932FCDC96330072EDED354E34BC5C85CA1 -177E3E99C4055A8108B4951E55537EF70AD33042702BD93F64EF96E14143FFF0 -DDDBBC7BDA66A4066ED3EFBDA7F463AED60D3255EB680C4413FEBB40B46AC92E -B7ED1C911AF1282344377F6D06A3F794AE11621046AB74AA3738BA49930B0F1B -79AA7CD7B6B917BB95B0811A4F0C9574131FB90F92A0012BB7FE2664B916C9AF -EA0104A71426B07D25B97B318B6D05E88F86D791D7EF6B3B07B9F9CD7C3973B8 -BCBC4D22A248D813B719E94B0196C7784A1BE9B1DF37AEA447A729D898A43D47 -CCA57830AC07A19218371F3600B696274583C6572BA74FE40D9560CE0EB918A4 -48945603C79E1EA02F8C566826E922E4739584F0212BDF02E843F38212954D79 -2F35B1CC125C395B2ADA9322573CBD559A6D4CFE6A8A0040C7592DE2EF0477C0 -B0A4215535A97967D42203328ADD4ED19128E65F8BFAF962ED0608197F029AAE -805C80EB4147AAF51633E49FCC976754335E55AE13A419C53835AA05251BB82E -2204B7C715BDE10EF4E62C1B6150FDB04033219B256BA6DD03B849D429680F52 -05EE1FB15E57FACB1B6AFB36836317FF64CB11304057D86EF73550225049D46E -633B43D598670504FB8AD6A29C2D9FCD39368F489E6096A697053A7F51FAD9F9 -570F6012DB3AC82DDFE2A93603FA5AC4A7FE6C3C3553D68994389B88A1814CAF -8C147128DDF05D2B7C19E07D14FC1EF903E4479810BBD04C731C5428A729A882 -944E092C53D3BE42D04140AB7F99AE5667EE1807A80E48DC3D1217C65BAC3070 -C85739C63AA7CB859DD759B56E840DEBF11CA0EDF393A9FA3D042904248ECE95 -4E8EAF4E87A72C2366A87669ECFD075136FA6A2D3D6060B57B8D1ACFBFF15BF6 -5518630D46E9AC3CA2955B9FEA6E1B6F6F786A20424C968548B0BDFC6810F13A -6700C624782BC95933A7594F8242443D8CE5B9137CBCC2B4A929D8D4798156C9 -43D3FB03BDE5A87845D16AA3C36671473999026876E4559D692844C321A31694 -A2D0845F87D7F35F8B9A70DEFCDC1657F2FB9EAC5C55FD2DE55B88317AFE7F29 -70B3B450E17CBD04A1602E535263EF669BDB5ACC6E61379EB62AFCE061370A2B -40E65D841B780E903E04599DFA65395A44E2866DB67A3D3386C090292F71CD32 -A5E2640382CB66A3ED6A8EBC60E5F7AE34EB773D85F6DC04D6852654B1D813FB -A6FBFCF0F4A1CF2A32AE5A1B544E5EE52D552F7075CD3D79A22F6049A8BAA29C -3577C8E7026642E76A652A0EA8607C056D04ABE1BE69E2B62EB2D78452D2D8CB -B1DC63E4FFF6BF59A62BA8E9E370AC1F940155F58704FF2024C6EB1136F99563 -BB27EA724D6272A3156778CE4EFBE1379755FDF9D4F773C28FAC659F2E132E7D -A26D1EE01BF1CC4AC6B13FAE4385C0823751892687B3F308947BACF144F878A4 -5C15006AFC45ACABFB3039F5FEBCB56C68C774A9C8045B3E04906EC4B9AE3548 -948AECEFF46CA86DAD568FB825A3765C198FA09AF8A8E1048251BCBB1B7ED383 -EF45327FFEECFA8D3F9602596CEBA87EFEF138DA2E8772EF457A07964A51937E -31A9BA5CBB4197AC3C24049159AD973E68768B17FEBD3FEBA5A00F994D0E09AF -93A674E62C976D9AF8FDFD63F271353750D7AD6ACBB224F11670AE41F347DC2E -BA44BA0B2C4D3C2676BEE304D8A74FFF07394E9F737CBDF449B562C1D7F3B327 -AEE45913418460DDA8541336F986E2C28BC134D9D9380599DA3BB63C65834611 -F91A515067A25A36B38E3D1A924270F84642EA6FB5E2C74979FEE71075FA23EF -DB4A3593D53AD99EE380AD808E0C55F0D1261DD3AAF39F376AC7CAB04AA4DDBB -18D6800B312955AFBFF542147CCFF880544D77EDB367349ED603FE3BF948ADCC -28D2C632C5022D9DF4AA706B35CF046D2B1CFF38A1EE2DA0CA7EE78CD11AF3F3 -ECD4E1F37A6586411CF4B8272B01DA24BD3DE97607653EB651128390149F6B20 -78375DB54433A356431C19D954192220843875E1910090FBAB353AEF3E9D649C -9B7766C15D5C849D9B0A8B51C815753D57A0F574C2E2EDEF275E7B102E7C34B6 -F5C11C027857DE27302D3E543CFE82BFCF6232464059A2B93294CAD2B69124E6 -AAA29238D01EE83F7545249FC0F6EA411F1BB959817A393C42469CB64059CC79 -E65D18BC6EF3BE6CBF467FA38CAAC84AFDE96F08D14E9A135122D1902DA707C0 -BB2B07BA7DF0FB5E1BD42B032E8E4AB5AC8B2732307B9F54D4ABB50DB6F48AEF -E579374CA0E51117A6607068D72A2F770CBCF84995EABE1F3B9053A35A40E016 -F50988A987A96BC748AA986A71AC63773485D4F331CDA98BFA4DE9D327169D10 -AAB98CD5FFCDB6F3644D0917B93A92510DA636DC5138DB201781FEA2F7F43C69 -68AF06C556CB5745D82BAAF742BC4FA60D00341B7797851642AF3412DAF6379F -E80F83DE3AA6ED3EABAB7F5E43D8782D45CA58254C0FB97A0426E1CA006BAFC3 -20556BE3B2236498DA393F9E80F200D680F0D8956D27D421C9E19653866655D5 -CE1D684600D7A6949A546D3B4C8DBE6171AE5BED0CE8B1C4FF1A65620FBF44E4 -FB3DEBE06C9C0170C432A648425B4744829A80CA4D6102BADDDBD0729B3D7A2D -55975350DF991B441363B194F606DDD1BEAC5EE928E757D83DB152E872604C70 -926CD209DC941F654EDD50514CE03798FA35A107685BE622193E779F95A9D803 -DD55F3C6C29CD18CDC7C1CABCBD7F49B9B9D73E317A71867E8D56C48BC56B79F -877D64297B21CF7F7C4E885B8DFA580B3FCBE83FCE7C96DBCC9F38D244B1D069 -A3D48ADB21B4AA19587812BB5EA77C73A4F61D062D60B840039D9EF1B35095FC -A2E02C075AFA86417E333AE8E74CF896367490B2AE1E6DEBC4A7C6CD5E993450 -D4E02BD9C47658BD5BBB35B203767AB3A73D000870DFBD0E52FC55A0C82F2243 -0D2F4F2172D98DF83EB488B3DD40D1EF51EDAFD4854DECAC8B79F9A6AB5A8242 -0E88593B005CF2333406F3D036C671179D0FFBACFE31302722FD9FEC3D3CF6E5 -18930B33A77B9ED2CF3065B8FF49138A6579F765901000EE0435A5A750C4BDD2 -20D90D0EF3D600EC315616C8EF69D0D4BE86B3B0DB92D599F151227C46BA1393 -AC71E139CC3A811D64AB07E1E6354F7657B49D2E765155E1CA7D58EC3B0679C5 -077D427511868B0356625D6CB8C442EC350AB7758918D0252CE2E144110D892B -B1C580D9976E1B865E00155BE21ECD21EF699C809DC1FC712BD5D22BA4E19A8C -6F98EF953F61F100FC4CC16AD0ACDA04E739F6701512FB85033F4076BDD1CF1D -C087CE665A26061966BCD4C6842DF321760B2105591036E16534E65C18442846 -37F3AA31EC01E6B950B680A558E98176A46F42BDBCD9E0B84E9BE2ED0BB19B8A -902911181345B484E150D99649EF75633EB019864A5274D669D94D200F48DB3C -42EEB0B9DA4618312FCC7EB127C8FAF5D70E0B1B2DF926AD8B31F3F6ACBC7664 -08F94ED176C1A23587CCFA3E93BA46508A66CF3C75AE5076A191AE69DCF7A495 -B09F36A6CB124669FC5A81056E976AB5BB47B7551D7C2B81F6B78D81ABC8D98E -1057F9DD9BD8C228F4A9CC7BCEB85804A413A5B0C15CA7E2FAF1575FCAB90D54 -F6CD4F55F16822185B113779E5DB6A0293CF03EC5D412D3DC68B75F63A6C1258 -0CEF5BFF62DED8B07BC92D0074A654EE32B3C70FD09E2263C334B32BBA894F42 -DE943BA582F8F26DDB2848907364D884988EB67888EBCF408D8306A90510C482 -FFE7077399D4D9715ADED2D9F0E69E464924E9BFA088BCFBBF10F955C92FA788 -1E1A6C0E095E948631E43539A64CB7DD625A669419C10B1F3A346C311BA697E4 -09650E9CFFD13F21838E8A741F2233AE02131C6F172A9C4B1BEA21883D46C852 -DE5CFD9F2F7F62D33CCDD84E4D7A60B08F86ED8700D3ADC7627CDDBBD8B4CAAB -73058ED37EBA030A874C06AFF66C87B17EF536504F85FAB247829F999D2B1D9D -988DD58F17BE4AC2A47464C9B0C4841CC3C4131FEDD1904E7A365ECA92C1B7E9 -A59F057D19464B7B9884E1FA4E372A718B09EBC7204EB718880B4D6B94C24CB4 -F1BA3C78521E15856BD0EA58FD2C12D15B672BFF56EF0C675B4F15CFF05097CA -CB53A8EA667A5D536CE5021F729913A08D7B71222B36FBEF70DB8E495BFD3022 -4491727B134299554C696BD73309AB056199B74DCE9CE172FAC8601A6DFF7386 -BE966FC4D050C84FEE6FB463EE27D5FBD67AB06DE8580E2DEF36A01F37CA0365 -E098502E65C3B4982480809F1575F51FFA30933B0C5E0EC0FF97D4EBA2C0EB38 -51681BD06074130108A811EACCBF9852657DAD17BBA46AFBAF528A19F6EF09E0 -ED67F9873FC9B9F01D15A47A6FF5080D665F18E929F2BAC1284CEFCE85FBC314 -735B88691F05AC9C307266D9F6801ECBC4E1B9A55B95E968118F333C0FAB589F -AC9E19FA50040E7BFED42EDC5AB28A0BFABA13EFCA01430324B8DCFA1DF4B42C -6BB21E0DFC9636C969470C03C2145326DB7DCE24D53097428808BBCB71B95D72 -F6591DE35198BFCB7BA21EDA82E0A3D930C1579FBC6417F0763249CD59DBACF9 -023DD77AA0FF73CB00C3ADDDACDAB7B985E8C0AFA49246A4A63A5B3DDAD72DAB -D5111CFF84EB031193EBB894F806FEC2D355A3263AA7D31FC9C921424B2635CE -CF171210B5C10467E3D56DEED36886F672F329BB82B4C8F2C990A82D986AB3F2 -DA1F4C85851C43E8916DFA6D690E55E4770C85DCD0F5700FFB31B4553EF3751B -0ED6F9F575763DF833CFF383198FC3561AE4EFC27CDA3924DB7B8335E5F1D5D4 -884EA65C37F09A2582DB9F00DE4D3A5FF2E31DC6BC9A6B4A0A367F64C40401C1 -3CC3DA38D7F8836EA8C7A8E5367FBF3457EE8010879FDD7C9C68E90BAF6DF362 -5EF9D172F05732C8E80892A873F63AC9F3A3780CDD6F8B73522EAA4E15ACA247 -90ABB9E9F2562CF460531D9CFB783DE4301C15AE662ED5065AFE9C7EB14631C9 -F0F53241C7A91DA8FE1D09D5DF462DD4EBCD3ED5338DECCD1E5E52E368D4E88B -60B4A163E26F3002083AC520EFC7E4B8193843B48DA98CF13F038B752FDFABF4 -9200D6D096BBEA1B463A8D06C54A8C9269EBAC81FD517D8F9A17C4012D7FD3AE -480C6870A6ADECC76E24C54AF17D6268DAE012A8583EE2F1A1296FF3ED87C3D2 -79B434DBF71038A0CD747242BE47A48E055EEA9BD0698ACE7629E45771B327B6 -76A7EDC2C6212E6B9D10BCD7ECDA7D1582D98B2F92E07BF023C99CF2BB601D1C -D5A8BE30E64FC2E0B6E1592813B69B22E353858444C1B862C8B884F5A2E7BA5D -33438B8DAB84B397C1C283C010AF73A8D094ABA1419E489AF91B566E4A5396B7 -254973D54B8676310BBA8471D2E9BDF480968E6698B5F649E6CCD0F0F2C21790 -590DF9CAE046161D583CDDD48934A5577B5DA4020BD6DEC6942AFB6A138B36F2 -4ABDC733AE66583A7BED7195A848BF64C71B50DE18E267D7C8C49420DA064119 -5CB30AA06D23898C4F80F1B0FAB379CEC3C868C334B29A6871D15C7D0D1E1102 -D9F8C20648097F8B4FA098321F8D98029A9D242CBC29E981E842B90716D262E4 -DE268FBC2EF862E64AC484B9DB1B5FFAEC489820C20772D86BA8B29BD721CC17 -6037D217F7BC21FB5149003D947312012B9D5BB04C2427DC96872121367A6B3B -EB05DBAC3FC3A5086A9061C29FECEE9E25650508DDCBE5960A570B39FB3B8935 -4CAE349B4D9032DB101826859CFE3D42089B63410407F6069BD8D9EB51F0CA77 -F227A2E058A7EC7B72A04FB7DB0E56F81A32993FB73E84025801C61C038874B4 -B483C49364E836B7587971782BC923F02E091D0C60E12C79A1E8FCC30C372ACD -4B581C54CF3C7FF04F787F78AB214E965CB7804F6E8426FE3C4976DBC16AA178 -EFD574B8378B926F1BF25BFA43F8B28945F2783FA9901A86D72676D2A891A9C3 -6F9C6A776FFB0DD7E07D0B91374EB7EEB0AB441EFEA4736C03568E41A6C29616 -4F61E3E5B5D131509895FA3FAF54B6448310B5C8BF3F05EBCC9011C7579C1DA1 -C0566E9CBC9F0269D5289F190C73260C4E3A1F8993F5553AD7F80C941DA32EF3 -20D016FC9387ADE79C1D2F2AC6CFA3CCAF62595CEDEFFA1345D6EA491A530CB1 -3DFF791D9A316E939D33EDBD88E5A2F24B95BED25700D13FBDAE968F014A5621 -3AF3B52E1707F1749C9DD4A347488B20783D2502031136326595F629C77E32B3 -B5B23BF6D4FB415021B1E63BCAC78C1F2D36BA346E6E6C78470831477A77F6E2 -81CCEBB07C5902115C50DD9C0F144229B3203831DB19BC7C0CBC674632FB8944 -9754792016A41B6FC313977A2FB115B919210F8A7743C7003A4D3ED3489F6318 -B351AEE244AE768BE73FE0FDAA9A3946DC55777648B795AAEA7EC839C8046F66 -64C4959741B96F1CCEF7851B91B2D71AE01C696C5CFB66833F894E95A130B6AB -82F03B6A9C041D153500574B16E5905C92591613D1A98702AFE3860DA3311B11 -0A0B5A2B8149D7446B853315CB8509E1FA8713CC8F3F6FCEC232602FFD2CC473 -8075A7F32D71F3477FFDC2B609A5A3614E865AF4BFF632EE202EF5661127D4B0 -742CC5E35C4A76AE7FBE028BD085F0A717EE2A093A9EE16DF1B7E38FC9BAA04A -9AEA3A98E6883770EFD2B5B7DB6FD8EDBBF717250A5561CF53E57BF354CD5645 -8449153280F7DA020C4BA1BE1E1B4C34B412F512A640FFC2045A16F1F453478F -EBE7185235F7E177D8B43AE6C50118FEA79D394204F0AAFF87F2460524753879 -C7ED90EA77C83200BC7D379DD8641A418B0E0E1421F87514FFB37B7C82C79102 -7C12A3378A6A185BCA9298D880C07CD6BF4123B5D2F9B68AEA7CAC6B10DFCEED -39C7F148BA3B6BA967D35ADECE382304471BF93CB099CC0DDE557494B41F069C -400DB944D95B7925677DBDBC915592058E855B5FF0A16744D018A76043EBE144 -45F78EECA1EDB95A2515C262EC925E18CCCD024CDCBE8499A2A257598F8B54D5 -B20A1E8FA0ED06E77E5C63FD33D7AF0FD67D6F66496FCACF410E5B01A12CEE68 -BE2425CF824EFF1C09E56DB4021DBAA871A6688BB95A3A4D2CEE57FA5ED2144E -50F19B4C4FD23FD72B5F99F865ACD56A249D6EE9EEA9ED3ACFEAE4FE45B4A014 -1522B8B86E91C75E61001DC4FCFE1915334F94A3CB746F625B222AEB483CB583 -F716C7F898425A1873484EF623BBF56ED7EFDE808AE32222C678C1FEF180F3D2 -C0F8C9BFC3FFABA4F3B073341DEF63B93CD7B943FA71D8CE0B71C46BE6C584DE -6008A9334F78ABD78EA9DFE181161E6509F6A23B833DF5168BACD887951C8011 -A890FDCE3179E8BB60486CD38EAF11E4157DA93C0FACD150BAB1364904F8F481 -B58288DCDB9EB1F79F4315500850F3F033E991885AF81C83A4471DE52ED06634 -D68B6D0AD6675CCA3EAE3511BD4436FCAA03787AB8B196BAC1011243A281A535 -844B1BD1C6C7E5B79B44A9500C0F5CACD3CC77CB5D01DE7EB7D100012DE60B1F -BA7976C4271C2B470C1B939B804E1D4898124C5AA5C9E28AB0F3F499B50BCFE7 -D72E4892FFC90C7FB2F1C9002B63F709795FCD5A7CF11F91033591695584EA37 -F5A507F22F4E35BE6309EDE7CB745655B699E9CA56A9634006BB8DA23F3FA28B -C0CB5490AEF260330F6FC74161A85EA20AE1B9EBDAAF2A1D9BB24687BA81E3F5 -6A5E95B968F2B2C3B91931D6727AB81C1C7E35E026E9F6C3B7BE932D50DCFA73 -44537E90513A79C5D71F2A9798EA490DEC61CBB33FC138CAD7E9026987C4C35A -DE72D9A15E3D1C9ED33C15DCC00CCEB757CC449707F3391167131A84657140CC -489C28EB9D6E8E35E5F0F6E9B2DB854048CFB17A93E478B09C5112E94D6080D4 -4C1E9F06F5D7277778F689DA0332D8A53C0EE1DA3DB9F0B1C6B8DDD7C6F7FE9B -8F31AE05D993BD0C44BE2F79750C07BF8455211824B069BC2FA19FA0DBEDBC82 -23A8FAAB6414016BAB01E09C2933DA0F0DE56C794A807E91DABB677AE141660C -E3E16F195360EBE43C265418C4CC467225E8D4E7AEA5F934150184DED81E2257 -6963572FDADD19E6047781D0CA0DF4D5C409821B19DA0FBB1DF6A5F94B630E4D -AB4237E8BC3E430269D59264297DC4C6F32859FDDA74D147C159DFA283458853 -2154DDE6F8ED15F51AFDE7387D39882336C87EC3456C9B28AA1DFA33F764BDF8 -70935A55B0F7D558FF9E9692E6CE3E432A2601C0D0ADBC4CAD294ACBBB038408 -D3B062429CB3C6F81559A86A8F7CD687030B0993824B81C569FA099E0E8A8ADB -AAF0DF8BF389D541E80AC1BE68C13106D1D13438325BCB8615DFF68248D0A28D -131EB87F2AA1DE2B4A5D3EAEC4DFD1FE3595467AD9B7D37652D60F5E7E1A7ED1 -BE6D78AC52FED286CE330C6DE354CBE3645ABFC728D466518566FA3D4A4618D7 -3C3EEF7517DB92ACF614BF2021DF2DEE862062F3946C048A6DB08C6D137EDDEE -DA688C98FF849C72A1BED383980CC9FFA28A4D3CBF760AC456426BC409172A69 -BB815EA8679D325653F9879C0E87B3ABA106016BD84793023C4134118FA7C610 -4AFE10A70F5D51790771B59CB6BF1FD0B061BB89022574D04A9D5DD7513B7972 -E4CDA1F9194248E339E5418DFAED28ABC9F2656632FF505CBFAFCEE6854BE7E4 -A00EDB8CDD56A83874F798DD9ADB2D2EEA3F67BE65BF4CC0521E1754F854B481 -5EDFCBA352DF1DD07AF9CAE690D3BC587E4455BB974EF84F03D3849639CAC6FA -06F3258D3986BB746841E8C500F88DC0B77C986EB5AAF454C2F8C1EF3E389267 -E733EA513D9FF33BFC4A6C647D0859CC3EFA8B6D87AA057B775F0E7DFB0FD3CC -F940937F87451E1F6F9AB7A594747A81A6D37729C099C982AEB319154E883E3C -69668A49A1E000B84DAB8A6EA25BF6BE6CDDB99DAF667AF4D01C02A5226EE1D2 -75E17ADC7D85036D2BFEE2D1EBD1FADFC90C0BBE5162E62796A7878B40E19F11 -2F13EEE49888607A0FC5A0B5DCF3A31EC48E91F2DD58493378F2DED59234D353 -6FC119F6362EAE324A93DD005D3D01CF149C665ADA2FF24A9BF7396D22BF8CAF -DA66DB4481F62ED3913E1C639CAC14918518E3627B63C09C0E3F70D7A65600A0 -2EC67DF6083EDE2BDB91A19F5EF0C7BD9B85FCA8C1DEDD4D00E4673F502153C0 -565262174D41D6892E1C17251C3CD0010C8FF4B942265126CAF7087A1744692C -2588F2B63A1D3F4FF4E8E52AFFCFE2997E9AD56CC9B58A1EA6C3E67732EE95D1 -2425632A2A017FD7069C38F4E7F9D33442782F768C9FEE4A463586A507559B04 -7ED638455D74A5E98F39F45CF5A6BCD130F81567633BD6750CA673072CA707F0 -5D6CB95F897A19CEEED1CA1075941CFD83F7C8767616D92696309878159E8CF6 -87EB8C5D28F19243EFCFAE1572E8A83A20282C66B1E9069D11ADA53CEC911253 -8933648C354B852D4D66C2D711D555739A21B821C2A5F3536CC6A1500A82A9F2 -55C4E58118D75BB91A597D72661077F8CBFD026F4D76FF9764D65B6F28CE4BB1 -32874D4996BABEB749093D796A02A394680818A5D0307E5DDD9B3D054A2E99CD -2C0F32F203536A378D8AA31C37D91BF1448CE2CA048EF12E3EFC4BA49E71D635 -2E03346AE13CFE8ED94CF72C7F17B195C08BA5F18D8060282FFB3582F63E1CAF -F9DEA850212D3DAF1EDFE14597088A4E63BB58D376A198EAA105BC8D57BAC489 -46BD7C41DD6FE77BC31F8F09E72850E63054E8295E8962806CA9F246DEB266F2 -14CB0238908F7F8316B430D40FB17E4E09F03C3FFFD9498EF642334BDFAB10F6 -164CE1872CBFBA1FB8EF954DB9ED72BE36312541DBC957D9399243F43AF70AB5 -15652CF6B03DA8131ECFBE2EB282B58ECB7176257C298091BC2E25F0065352B4 -CC8673FF36ED11AE70BF83A895D422821687FADE71F05FDE3C5A0203057404A9 -AB42D7E33DACE85D2BF79940616C1683AA6617717EA55BF00FF749E4DD73BFBE -D2EE9F54FC15AD4CC94B2F7E40AD4580613C31A230B465C2FA6FA6DDC78CA5CA -9F45E0D0357004ECBD0E7302FB4BB0E29620D99FCEDABC0E625FBCD6138D4726 -E4D23A1A2B5F318F89D51F9A358EE050E9377256EB04F5BAA3ED72637EE3E210 -AC1CA0E4CF99237415BE49AD85C9C00AF65981E78A941E7681BEA095163FFE5B -4EA14A3E4E6FEB1E2B29107585F01606B3F38D0F25A01AE7710C6DA23BCDD613 -DE31A46C627BBE2B80A0950922B99E915B466EAAA9986EF44C446B9422014DD7 -2C86AE1B03C1E7E09CEEB5B65E8CEB3E99F57B09BE24CEAEBA48300FC007144E -2104E380A242D5A28745727192A04C3B63195504CA9AA8181286D5C477ACA355 -ADDB8054BE09F897A6AC1559A0A06981B5CC0D04C2C929D1458D6BE103E77008 -8E60C27C62F83E8EE0970DCFF2E29F5624D34F393A69306DE8AE552297150344 -487824A7CE132A3AF36DF40BC0AE2A1C4934E143812B71B3FF0CBFA311D61B65 -B2A3E58E05DB341D5ECEDBA3D352EDCF7D0901F9E8371A167DFC338A3DBA3AC7 -C6B4EB2B2420A4C0F99BFFDD4C78C5004F4435233B86FA28BBFA9814CA3089AF -603C33C9A248EE1B87A084C4B461B9CEEB1E9A2C880CFC6F6412B3E8EDAB1BDF -D7DB09069D6E59293655C056B5EC7031C91552E9FC129456B2F95601973C03FB -A81EF36E23424FD0C21F07430627DD6BF7ACA4ADD49344B4931D3F5D6C2F937B -D3F79AD140A12C49D9FD9685693F0EDACC5E3F86E6CE8F17FBC1CD43EBAA1DBC -514613EFC72C4295C55604982C6FAF441238C1FEB7992AAF299EAD1AA5EEBCDC -8452BD15CC9B5DDFC4C8F88E8C0E9E81765BB2D7BA7EC2E28A9B6752A1CDFAF3 -E41B962E977C98B32A61E135C23F36C4AA510C6FFFBEA53217DF0B3BA58A58BB -E2DBA74EFE6147DE7608141B836E102013B46E7EA36D599571E1E78546A9ED1A -5EC03951F6A2966CAFC19D73A5D8CFC327646E1B0AA9F196BDAE22164F3C2689 -61ED73CE1A576CAF1C924C9B94338BBBF8D9A6E8EE9B1BE399DF34E14E0D398F -EFACC887BBE6A87D98BE52E2ACACD66FB0147A841E72AF114B5D0C070D5D699C -367BCEB962F6AF39185574FA5B33E9E0E229D40D0CBDE4E45C50B3A3733C33BB -8863E85E204697049CF283D1E5AE997FF639E6466607C6B12AAFE0F239EB0125 -7E2EF2B43E44EAB0FFDFEFC6219DD5DD2712C0581E9C48C83F71CA8BEEECDADC -2FD70426B19C3F50BCE2C0577BAE6FCDAB30E1922DAA7EE42D9F87F11DF3DA1C -E72540C6E530964A4ED41791ED7B97678575B3A845192429DC05FCBAE2BD4575 -E5C702A9DC24817E833277F48E57093255317CF42597E9B166DD13492494FCCD -7B31FCF840CCBCDA3B183843BE8808B5EAC04469B27287BF5E122347C72674A8 -7B3BC646DD30550DD3B91543E214656A325E617B029C7A6D3254AAB01DA29244 -246B0F649C640412BEA236A0A8407718FDA08944E07B4BE0165D518B0DB7AA65 -C2D66DE6E2D22D81559A453BD9E5DF270312EC2B90E9384BC4D6E616679C019C -77B241768E91482F1DA3256C1364B3E9168D23CBF300B9165B4A165385172A2F -63F8EF0260D1266234CB1C3CA9DF120822D644D8BF80BC32EF6366D0440BB61F -08821313F1D7ADE45E3E72C31C63893FD1FDEC89E243A77AB6F46FF1440E1926 -3FB94F384024C25988373F52421D987AE20C9426A574E13EBE7221FD4E7104BE -6ADC2544C92BABF7E7DFE3F2C5E7D8B774B3D12827A8C2E47B961D80A4DCA598 -8B6C9304E590024D701142B727FDFA6D9967340FECF1E95C05FA3CBF299E6D09 -48DA20B684188820D131E06645ECB8AF80A76942ED26D673CF6B2097757CAE52 -43AC80C91B61A19029CCE4D1FF76D6DBA38094FA7E4CCC413CB8E5F16628FE6B -AD23C9C87EE7B4984A5D7E2C557B87F653ECEEE48708F3A173343085EB0FD415 -FBA0CDE476F40E9FDC7EA0C30FE3D625D0B23C7F387179B070BE0A8C75329033 -1809A20731F49E35E34CF9B7B5AAAD4A978175F26DDAD47D54E94BCA0D95A909 -463C4A7C17F12BD2A27BD7E33AB9025E0C436CD98F798A0906B586427F0B94A5 -ECB11C5521B0B2065A6514D9A34B372BCF123B911DD6F33A065712AA5AEB51E2 -350677E0032C1A182803D92D040BD1A90E2629D23863B94D5FAAB4F497645DBA -C678C151552D0ACC0C89B70AC4527082D5CD6FB2425057FB385B7B813E32FAE8 -4F507BD27C39950535A0C62E0CF7F1AE95E2966D90D4B79776046F34E2BC9DCB -FFDEB5412119D49EF0DB9DA6F648098ABB5716F97CA2EAA3D8E06364F33B12BC -A23FEAD221FD155B7AC6A1A2A5F79DEF5833BCE47153BA75C6823EF5ABF94B66 -2CBA57B7B2FB488D32A8DE2183B8AF918DAF0E0964D9C06E46986E27C9CC3164 -5891E14A16D182B201012FBF89EEF4FD0E711940798A8628D6562FC92F38EB84 -3AE34ECB48692F78767B94A3FD36870DA53B4339F5F6532E33B98DB47EB13C5C -6A309032AB4DA7751BA2450B832C1E93C11E2E4F6C505CF4B0247C30DB1B970C -4D1350F7247C33AC273779FAA195DA0AEB9042F696E6F734D634504AA6BC0C01 -E4B9ED7EA1C651801A3E9A59C0FAC76D6EB87CB06F6AE3F0D3DAADF919DDD38E -58C4415576B6F3B0152464399C8D4A4B89A559989B78B813283892E10F7F243E -0F441F247E864C3FFBCC3EA2F18F622E2F6093DC534874651A251901104AC3C5 -CF97C4CCD3C541144651562E0D2F5AD80CB9E417C8E86C44DDC109A60B58B133 -533B1E6BE46523223B120B5E75FF1303F2A45AD00EB0C8C80C82B84E51D09803 -46593B2E6E4B004394B52C10AB4B9EFCD2DE5976C22C663076F2F213E011ED10 -710A8F12E591B4E263E5852110892536DDA5212AD42CD25072A32E789F47103C -1A3F924E1AC07BB715D92D08D4ED1FF935498EB09369B46ECC39F4DAC2A63F83 -0A41BCA3EC2D50AE7CABA1655EDE1622ADB77576D70613B86E7B677522A521E4 -9F425912417E45AB88B4669D540FF0B25591FEE84816BCB3711C19AD06DAD910 -9FB140104E442B2C6797009968B66BE1FB358875A1318C7DF45FF6E416E12C2B -2EE12F720C0C3E9DD2C1C354DDAFFF06C7D29D19FD680CD7A42A08E49D15688A -4D0F9DBE23BDB041E6CF8AF57CBF9CB99F20A9240DD145A07E1D1070FEA73ADE -B01F43FDEA85D6493012CFCD2C6AEBDA13FBC488D892254B0545EC749F6F8526 -B8831D95B6D57B3D3AA41A874F7137E82858206200D5125B6578 -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 0 /.notdef 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 -20759B6A4C4466E2D80EF7C7866BAD06E2A1040FAF2DE1FD6AFD5FD97EAAB614 -956897A7BA8B194E613047BF469C7B4261CACC1DF1648E8A86E926F8702B5ACA -6CEB4E3E85EF23EF5C9C53097F3BF17243B8D4BF0E6B0C5982FD14E4E916D363 -E265322DF0823E9990F966A842ED69BADFAC2CD1754FC84C0FF6750D2373F997 -362DDA16A0D73B178FB7B67307204AF174AB871C254B8E7CD77058113B702B2C -13F341A972B67756D65C6A9F553C365E20F0BA59F8537C88E0C13F87CEC69C9E -0775F760C4EE10819388782A2CC2E9C000DCBA76E4EFC7B390E50611F3D4F6A9 -CE60FC3B742F046E84B4A302F5DB51092CD59F103DEE2910757696C3F131517C -416687E6DF671911BFEFE08D1C5D0B16F9302960E29760EE101C5BDFBA4176A0 -260ED46500F88BD388506DA361B0E9FD796196E66B332C82CFFEB7974F9E4428 -B82C64ACBDF865B4356C4E2C8E6ED840AD5579B7E08BFA3BD81AB1FAE47901EA -E298F60FFB651A0ADDD1C312033C9D1FD4D0FEE44FAC4B0288339260EA0072DD -0AA168900C492640EB652F4ACF14A4F84878F5EAE4169AF39131695A11CC691C -FCA75087938B15ED1B742607D839E542C965383D5E6718EA6C25512F1532D0D8 -545EE6AF47BF5B6F6AD0D9E44465D651D2236F883F1F42ECE339B694B19D2433 -25A476A6AB06A9A39D3BB3977D7173AC8D45D1391E26DCF7C82B2430E1E19562 -9E081FF3E448F80B400B1EDBFCAC67020024E564DA954FFC9B6F9035304A45DF -B05DCB7A5C5C7397D4E63D2356D447684B190468BFB7B9D1048851798668258B -1EFE93A5CE3D9065AE99ED3C0B44FC8DC241899034B8461835D0FB7A9BE1E2C3 -ED9CBD2978574DAA38F3DAB553F2B69DDFE38690AB5F44AFCC61932F45040863 -87475D23DE05228EC140AFB1889AF7A01935F896271E2700CCCE86955D61B798 -EAB203866BAE9A336603D97A6EEFEE66B6F3468EEE59A4ED4256E8608A451D13 -B2DEDE2A785CC2C52C8F2FBC621991133676F9837F250CAE1009DE46DA396797 -600ED743FF52188FAF482B7006CE371B4D3987AB593319112A0F976519580AF2 -AFD7A0B06B3F26F88DF91B85040BF71AF4E4FB90EC9326B03A4EE3EE880BAB43 -2D219725FBCA548CD911F38C6954DA66AD3C27732FE0BF7EBB1E2B05C13B0218 -E53F50669ED89AD7AD433F881AA6D87629E16860FABBC42680DA4692B4F0B445 -B1803E3C703874B454E460C2E9FAFF441693C4E2499B5762B19B5C686FB67380 -A6EFF1A0CECED92258BC9B1487BAA768207930728987671A26850A871DFA8DBE -F72A3F282C08521CCFFEE1C289F6C3D797C7B904D622287B0B6D30D549733E12 -5CDBE31707409A3F7B310861ECAD138AD5B484A028882360C34514D97C5A4CC7 -F6E6ABC1D3E50E0DD3580E57E72EB3035E2CE43776643E402E0E44D71D691A83 -DAE4E456F102EAA4E120EBFC3D8904F41174BB2C1EE961CC68F40F0C4D87AA93 -5E4C15188F2E2D6DE9C33AA2A0B565BE6526047A4235BFB96C00126D7B61D51C -B820B9211D2A3C6BE27CC172B126A88A5592223FFFB281CC1EA49996DDC14E62 -0F5554A0F0624AE6119641B52E19BF451ED4208F4BDFDBA89E03C76BE9206239 -94B285BDB30E3A46CE85562F2D44F806380A82BA93A873A2EB9A6832AA5D96C2 -D87D41DDEAC2EFE7AF81A44C83E11A64E4933E79346B195B116C1CDCED0088F0 -1D6A2081DAD4BBDAF4551A4DA60A26B9AD88157F9DE987C154CBE1DF2F1E24FF -1687A508031CC50DBB038083D1222A8E6C3426183BEBD7A133B81ABA20594DE5 -62B047FEFD4EB3214EE60AA7FDBDB8179FFFCCD3B099435C0A40B6734844C854 -7F93A0A3A0F081B3C2F0F7B86E96C4CA3CD3476AB38BA72F148AF1735548E5BF -3B3CEC81481BE5538B4BED43CED8510E22874C74E54BE6A46984206F3B7B7BA3 -57F2E2C063152FBA13EDB9E981EBF3004EF21C038B803F63259B09E444A9A880 -C6B8D6A9B3D825C75E6B265DF49959A0DD6D83252E7394CFCB619F27589ED4F6 -6F5D1EC0D7AEEA02BB2693ACD90D174FCD3463B068EC09E042321113A45F968B -58BEA09FD0B70F25CC1CA1BAB8D03BFF43AEF8560C6A88D2697B35BB4D0B7505 -F00950FDA0596CA47522B358A8629A6511990F41038EAE74E2AF772D2A3F675C -6EC85A396BF0B95AFEAC85EB40E42B76E6B1C5DA0C0CA88E9311449840E360CC -FC256BDAEEE5D346B61760C0FB406EA3604CF3EE48B66EFFDA0921098D5B1380 -5F35D725EA4B097A6732E64147B26805C7F016D9A3E326369A08946801969AFE -D74FF37B2D366F02BCBCDB6E08267A9FE8B48646013CCB01895206CD602014D1 -C8F74DE7061AB85DBE0D453DCF87F04965134FA28B4D23C88577B96982D72CE2 -841E663A89E909FA491B29A0C2CCD4DE3F73B141C058019DA855B8FA58580667 -C7601CEB3D3E102724E0BE8EB398AAE8A2BFE5008C4E00EC0D4F6CE3E75C4C96 -8A53921EDADBC3C20589C64D1AA95A3CA84C3C57F831DF8C8E5AC636DEFDC936 -4E158540854A92C27E4A0244FA813E6EA38BE840DDBFF8C83333C6B13A18C625 -35BC58DAD175231E396B765983CD04D509D5E638CCAA3FC2BCB256DD5062B0CF -7F59A287BEC9F797A132EC2B9DC04F83D6F50835E30733E51575AC0C36BFB5CD -F05990B7DB839CBB443BEAC00DD590258C797CA0BE270421C0C339F2B98B2102 -57CA3D9B1001DFF2967610C03549629AED26C40F9951C7121B5C9CCA01A37E83 -2584663D35A669CD44D112CDB27D3D5EE9A74920ABCCD6F300DFA2336CC2378A -8B89C302707E068272EA79B73651EBCC5E0343D48E42E22CE1EE7587BA33563F -140103177C285D8B99CB871311560E8668562BFBB43C74C8A79121967108B29A -51736D4632E8F4A5E6040504EDF9C9F63BFA89B4DC1B34D44E4C1E21DF7AE28A -6EE03BB6BD2742B1B536F7626391981A89620852357A87AD76ECEBD9EF20A913 -2D1FF5F429949D73D174627B1B1D472B0793CA93754A1C36C0F4104C75D73E8F -07E1B138CFC09CBC040E33B5E0E3BC6D4740D888760EA91CC7076C1E954D8A30 -26043BDE830B183FB7AB14D40045A9D6593D6EB8C56A521A77D055CF2CD6C0DA -64142E3A46FECF886B00EE3D52746980A6E00EA717228FC2D1FE4B77ABC8AF70 -2AA6FA0380BF11AB16FB9414D146D64D80435A5C6BB98A7C6AF630BF799D137D -6052C8E6DC222EFFA731D06756F21225AE455B97C2B5CF4405D9161CA4E07A2C -C947491C4E726A3407C9A7FE74A0382EDD7861929B1E92ECF09324BDE05142AB -688217492AD8E045996BDBC75AD9A80D1F7A6D366484BDA24635AC17C769DB76 -64F1D9B45443655EA6D9F02218C227A4F2E4006529E751477235EFC0B07F0BBD -8C48DB10821AE4EEFA1CEFF1FA8E5B2147D5DF8DD3A7E3CEE230D7801795F53A -145F340A1A1FE4F52F5AD695B8A41310160C2D45AF1D55C64243BD50C61B2E55 -320C73F687E129BA7BAE7E05AD3552B2355C074BFB9A5AA1EC46B3F89FDF195A -E39E0F99285F21E9EB6F2C97107D52C0FF132752B69EA6D598B2B2B1667E6821 -8DE07D2AA24A4DFA8453E73CF43820A839B6F65B49F601CB7F7C213B03872169 -9FD4A5F850F88DA1B2804FFD71CC9390F3A70B6BFBDB6461C4E8DC88AA4BCDCD -C1044DE725382D539842406ADBCDBFF535163C958940BC8088D4A159C7923306 -9C4008B8AA7423673B2D4A13323F0714D4D044D10C43274E26301228A189F421 -C1F57DB67CBA6D84A173567C691A52FB06B01F5FB9AE443459D7DD0A7C062F55 -0D30A3B26EE6053F42E46A36B954C84BF4BDF2560D9238E426842569DE74F760 -511C965F7979E027EFD2CA3436FC7D730E75647CE1933B2F4A10C1E787482BE3 -C4C669C8B208B0410932045E70D22F97DE2B23D38FE29E46CCD95072CD958ECB -CD3743A73F479A7A2248D28DBF0A121F03ABC851A047F4643BA1C021728CD169 -72E2AD68C8E3D42C6FFAF8C55F8439B339A21F38AEAEE991D8ECB87F77CA89FA -1D67E5776122445AFE6D473B13158FED0462A3A7C649EC0077469B87BCD657CA -9B04612D7FD2A30F9CF827C186C653E2552F5103E0A96FDA11C7197C0D8FBD05 -BCF8EB440BF4A2581B583866E7F3D292ADE2A70C9C60A9593DC3847057022792 -0114D4423E8C42982F416F881C48979553E03D1C3DDB4A6CDE3C1E0991E2C870 -F231B2383443CCF5BED16ED3CBDD3413635EEBBD3CB044A966DFAFADCDC61C97 -985842D50B99B876887018A473DB8135EC0D2C284563EFB90FF79C69CE003CB7 -8B4D43975754AED0B0E89834D15E6DD63445CBEB4B1BBF2C53D33A6622BCABE8 -B559250A3C6F8436386517E98C90BA73C55BEE718945312A7C76F7CFD2A495D1 -0A52240F141AF359E416119F1E1CE22B62AC601C5FE98B71F7EE02B74E448C30 -C66C22DFDB2D1C308FE060249CBADCAFE88D8C5ECDF521ED45D391444A062B2F -CD24AF35F686DF8B7ECB190EC711D03CECFA5013A74ED636B4342DBF99613A26 -B9CA675799F043ACE9183C740FE318AA14D2745C7FBA16CA1B3DF9D903A0CDF1 -9FD6B8AE79F5BECDC0E8DF2A0926673039391929E69AF3DF25DE415B0BA2AB66 -C44641867A35DA82E9FADCB443BF003404ED82AC51DCF21B69FDE0DBD0B6B385 -16E7425E78DD0F7225C54742E1A1F9AA82B8CC7FA8B7068CA0829FBD70E9FC9D -118DB0E8B898F2A6851124F8C5A5F8E32A43CC370726DAF76FB287268B4E4505 -69742957845DD64FC8548B87585F530A9263B570CEE1E612839F7643A77B4F63 -4B4686A9186E0EF418C3D109EE5A5D8E65F0A4970CC547144962FC5BBB8918C1 -5E6BF92D4C1250DCEF28F024B090BC6295E8D666F5A0731AAA0D9D85139C7D5C -DD89FB9F5D988173A25168D880654B8EBBD558EEF6D61B1AA5F202A8FF391B84 -145429CD056F0CAA17CB1E71F22ADBED4A691A05BB4AC87E5A0F5C2DABF5FEA3 -23BA5A83180A30ECF4F77E2159230E899172C9C6E75AA883387D4DCE59443F3C -55EFF2C748CBC4F34BE7F3724AD95F6818035E38918C3041700165B51C9F8B64 -4276BE42FE46E582186E92FACD55ED8B42F1F42538E9F6873A3CB8F4EC2C1B80 -4D0145EA466B91099D452091BEF740D2C129B3ABCAF5D2050EDCF99DF084A582 -7338AE2B0F93F561D691426C6A09D2B9AF3A695E3DF9BDC113714CC57A1321C3 -213B6B42714799CA9D814662E7303D3AD5264DFA887093AC17D3DF9764F56EA6 -8BFB28FAB795570B77C472F3BA3D5DC8BBB21F5D540089834FCB5AFEF9D834C8 -6CF0821F6404E3BB380B83DF6198565AD5931F0ED2A27BEC3157FD4FD348AA19 -A562DFDBBC1C0D17B56DC61E141B6A0AB76C4620F58BE535E27E020D49108DE7 -569CD3653FB72DD5C9FA003F85B49D94D231A7DA268D0201DDF9AABD311430B2 -EB0901298B119F58744CA611F0E01CA65DE57DF9C300B94B1F92B5D6B55BD38C -F93B0D08D4CEA4BFF39757D97B1A5CEFDF589533D6F15665B0028DBF3D1C9764 -431AE38FDA3F9D2C948DB4C4CF17ACA4C91140415B51E8EC5057AC9514797215 -35BBEA9B9C10D6AD3E160705A63600E07A89FF63FDAA1727A527FB329BF7A768 -81B59A64E36D0B45901CE33524F0C744BEC0BEFE3A5F10A3BC2C1F8BAC8B466E -A1017BF23B02B9354E31015FA40AE9525C68845F940125E74A85411BD5E7CCAD -5B84145C1DDE098F7B3FBD7EED68BA578F97B5500E1CFA2BDF7AF99DCBB3F1BE -2D0AD07F5AB5835433338193ECEC076222768E45DAD6B30D15074E0D1696A52C -CBBB5027353DDCAC18B85C98826F30341488EEB6E83B8E66699A20E5E7BF1D8E -8B555F1E707EB7F1AC5517C790014E9F75791DD1C88B70BCA8F5DE593E708055 -2F27F47864BD085128195369A709D5E3D54A930EE096EFB26DCEF2A4480CF568 -65BD7269A0D6429F6F5FBF5D725A7589C413712ECB468558657DADDF2797C5AD -DFD9E8C089E5199382F71D31B454A1F16515CD7408B37BE06CB5CF62070FA8C5 -1D7C0A50F58E5222469FDF54EE5474B51368F5E4A1B625A7840063C8AEECC910 -20C77D6200BED08E33B594D5FDAEA35A59E50D571EDE267F0AC65133D9CEA709 -1831E9518BBDF34DBD6F7AE4F1A6F96E219514035FF986B1D0AC37AB9F2AEE33 -9F24556D59D9D119627C06D81176EC69E516002994D82EBB47E1FB006F43FADF -D14EC8D299705DF7C2A08C578468B1376BA1CE7304B63582FB27DB17A71FDA69 -EA7692A8C7C3399302DD235DB23CE039A2E04792A2C0C17522B3AFC4C1B24985 -653ABFE9426E7A98B81309E97B8EE9734F66F05A4C8B628DD6A154D34197FB4C -9B9AB21652941E55BAEBB7FFEEAEF4C7F623F48C9EA79784DD5B58755823BFD8 -F3F836589ECF72BFC1CF5A857DA8B737CB53BECE35630C5552BD04448D3582A4 -C70E3F05DE23A870BACC5A1202496737C50355DD76F23A03E1E4DD49EB207ACD -5B9A7A763C8C83C21058FD300371577F627EE51C8E7A1D14E90D03309EBD550F -2DB5013EE16F576B072E2EC3672B92C0D7516005A3EF3C8EA72C2E0F7CF89289 -F81A39D17C31A60C9224ACF21EF9D3E9772DEC77E336B6656D0F59A3190191C5 -0451A3861A5089E5FA169914A78C3BEEB494FDFD4B5D854BB50A64F81BABE716 -790277210E1C34D229FA807F19077E21FB211EDE65316234F312FB0597419D78 -F07D902D4C56ED6216A70D5C913D231A7C60E5FB4B243E7879B60A96CD6F4539 -CEA41BF0D31A5C3F646A0B7F973209E1B986E90D9D045D27CB0B61E4B6A360F9 -BC4E827243CDE96675567987E474FE36007B7BE756FC1661203BAA6DCA26247A -0D2C241C8031F2114F4BE051177691B80D1EB5FCB4F1C6369E3D87D20224126E -7E011D4B442EABF071745752CC6B94AEF3292B5EFAA9A81096BF5ECC61F49134 -56C01F234EE02C17BEFD0D773800FF7ABF498B5B797C4698E7BBE58882CFB96A -FD810378BA5CF90C7382C2A4A641ECE21C7B70112FEF4E7ADE2F2A906B60DA4F -831BB8A8A6487291FB678BED9E2DBDE285E7B329661A9F522811E589AFB212D0 -5705DAB9469041474C6AF7E6D75503C55204F566123A044EEDE663E4033F6272 -86833BDF75619A235609E7BE0F84222AE1393F681DE965EBACF7B24ACDDE30EE -C0CE93884F54F324C46CEEFBB5693AD705232EEB63F76C7DFDDFB1622786D2A5 -2DBDD9037A43749C161E5A0D63D6D457913DE8E203650AA1AD60ACD92EC6493F -801F2A53E5D28FDF5935FC388FA33D36BE7BA7D5125D38606B5287B8C1A7BAB6 -8A3D0830F53B5AADD27D4E1319DDD342EE4B06CF1FA89306F2E187C35AE88329 -01619FA5A6AED926CFAEB7D3BFEB6CE6FA6796F79709486ABA82A2E0DB986D9E -C7CA32F1645B228FD9589CD3A5B783FE6A21A5F18BFA364279884A4A64A0CA57 -D46F97A651E67DDA90BD77E7F2243D643D55A973DC11F710EB12B6AB5ECD6ACA -5E90908C10AC3A3412B469E20F2FB0E1ED003D240E9E545BC41D4D172728F859 -BDB53321361FCFCCBA70EB836B2AFB6632D5CF4882B4DCD7B8B0CCD7E2FCEA71 -AF44667289375CE6B03454EA6796BF7C93151E13CE16663B42BACBC83B74E869 -023AEB64A9834484FB035B37FA814ECF33555BAC5305D3998ECF7DC04643BA6C -21174FC80C88C76AA389957651F38405E679A4583B755EE600DB28866027DAD4 -95CACFF8807282984A8AD0010472BBF39D356A1F6788E32B47E2563E2A3183EF -11DD331C3491FD99C954F8484FB959D92C73F85F872681E41D5BEC13AECF75DD -35115F8848A1887A1E6B92048D15368A23A5C657EDD85DE303063FC428DF7412 -74B19C7CE1BD2B3055973A5E3313AF363DE8A8F58BB32715D8A764D8D9553260 -DA5143A4AECEE6EA16D078EC793188B7E360D512DB3479DD0E6ADA36D77817AE -9E70AC147DCD6DDC8B97E09E58290786B45AF81DA8CFC41E2E9B0868E15E1811 -14DA8D1459D6B2E75A674A3C5DEDE961FB6013571BA13C07A080BCFBBCF5C649 -25D69A8A061908889EFC39663D2D5DDCB6E266D1113EDFC35B3AD22ABD689BF2 -05F99E1211944BE4D693B98940D5DBD30DF903C550A18047E481BA6EEFD108C1 -5E64C273C061523311F3D61C58DDC81C5FBDAE8435132788230CAFE3B1A49F1E -C2B606979A2F279A6171490B87B92F6F1B085197197E13D1389873B74C295F2A -CF62D593E89491FB466F4242E0EA177D1B2B485E3CDF731BBE8EC6A16D8349DC -C34963714010B831CFC9D05EEA1A4DC31738D8CD0064A82FFE262574CF4FC5CB -EE7235771EFAB1A334A18D1CC3B87F979E154110F359F8C3E56799D47D56ECAB -9976B68F8C162E6327D5ABCE3F5C714E186B6B0882113329C9E6DCDF4F1B25BD -6D95B6186C208EAE2E2DF0506EBBD05F0B3FFE74D6038DAAC04368A3E1D3270D -E3838D690431C36DDE4C69DB18500B11BD5E5EFDA986E205B40C8692CC04DFC2 -7454538C6538258D586B40EF6919E1B0EBDD0C1FD44ADBB38AC65BE2D8D87074 -B88402B0CE8E702DC2C0139DED9A7EBCBAC41B5C3E46F4494EAAA69C8190D5F3 -739C734E5330DBFD5B58B02B392510C855D72692AE279F41E6091DED1640D727 -5F498FD039B08CD2510B63465105A94AE8BC8F5B3C0CFDB39040BCC09A454301 -FE655E94BCB595102FC1AEE960DC6855B6FA1935EBF6755D5FE188B16BD2EB47 -BCAEEEE328AD7B240E39E27F9D1BF321C1EC5A42D29A9660CFFA0055F92DD19F -EA9CDE6E5924E29FC97FE95C8B503F567900054E401401C0D992D4669E7C845B -293E44C8BEA218BF8A17B5DE1BE25D368DA330FA17C489158705A4E220194C26 -1D1B49426291E5EB7B15EC70D77CFE9A43AEC94B699DB1A38EA9893DEA82CCAF -DAA0643CD3E20FB061E0B4357481E4D0B5399A10172B07002659BB345D967FF5 -A032C03D130231B1E5A1CF7A9414CEFE4E22A721AA7CF033D845272B092B2903 -4EFB7D0E60F5B95D39AB0B6D2595807DBF722A345B229C722770D69A9D16AD0C -9C4CD7C6F4CD5F78A28DF0389DAF1FFE69B235D86734B4FFBF908EE25E0555D8 -A2274C94EBD77ECFDFF94B78813A6BAA21BFA762B0E9BD644807076B614BB9A4 -F9F700E462E541CB1E0404F4EB351B1A3CFB1204B05818A7D76F70921A45E5E2 -FA07E24DE98C47F00942513C07744867DC1DB15833C2373E49BB891CF61E9885 -8B6C5C5F068087967731362D6BB3CCDC6C853A4B08373663949718A42AD2D0D4 -4CAEA2C90AB54DFC24431EEA5F95914C90D952CC155CD65C9F3B1B6A224B3EA6 -E767E7199C4281BB8A5346AA86E7E4C92A6818014ADC41CF5AFFA15D47939A6C -366137DECEDAAC4A70B44DE8894F69DA11DCDA2ACDF19629F0FA9F6BD65A766D -EB9E93D996D24A6970F7F9D291EED0A52121263559A104792F59960776EF2CB3 -D964CA24EFE8CAE52656DEB970560AFD115651A806CAF96304B6ADD25AE2A19C -A5BF9973219E7AD20112A3EF5C006410BF83CDF365FFBC159F3445B89FE7FAB2 -3047B3EF06D268F0F4C9D3481EF260F713F1F42269F8FC2E2229477724952A09 -448E77039B9E3CAFA153F2853C18D135CEEDC0F5201E4A37BB0B864E4DC0E5E1 -934BB4D11FF0D8A6211F12AE809B95292603409F653F83B798B255EDF4D0805A -440F87F0FFA188368A9DD000BDE75F3835F0CF0E3F0008291B0276EE7E7EDC80 -D5550F48CB37951E29CA48A628148D5C0810B63CF563EB97F67F98809625D593 -DF10760E22564E597920587C51B60D3D4C06E9676E32E5AC46064FC2AB747F7A -E1541EA26A81725559F65EA321E00B32126504062F7E489DECAC52AE15061594 -ABB6D1981E31E922599871EF5E51FA07DD52A34503A87D25FAF893C5CDD40C47 -3F4A5707A3A64EB4CB8EB001F4798FE84C97A95010FA5ACE90C4A5E25770C83E -7689DF3DAA80F0E60B0DCFBDEB36A961178E860A94ACAA8D298FD3C6106D4598 -C51A1395C7963C301F750BF1272996025456AAB13ECA2789407C6F00B008CD88 -6BD9002FBD5F9A71E9BAACA34AE13E4A02741E6B5823A248112BB311882017A2 -243E8969AC1D086B4440699FB55DA135AB06B7F2543967792D192131B2BEB9E5 -BE2C84F8545DD6FC9AABBF52B0334E1EE504CB3E8686E4C40F2EDA42334C2DED -974C295AC7409E7CC23685FC2A842A7DB518A0E9EBBBBC0D6481A192B19D698D -CD64CC8D8D37774E2E3A12E20B54BD4CCFCA839A50415FD4C8D3C133889180B5 -F8FD5EB94B851E758C5D1867D314C8B9A4E52EC00429012FCEEA954386D7605B -E3AD2EF9E90BE6FD067A9E09B3C69058D2594D59382BF87649C4EBC8BBA85A2A -D7BFDBD8F5078327BA64A774C4E3C0E4A5ADE51DBC917E79B980718089389059 -F5FC76870428DF74463AD6511E4D2DDBA4D48E689FF39B151BE88838DC56E910 -831248CE6030EB7FC38CF2E20123C9DAEDA7A0181A1C4A84726EE8FBACF3746E -3F346E574E6891A75BBDF6AE25E2FA971DAF95258CED57204205781AE436D8CA -AB73FEA627A080E93C4E1143D0CC169D30B0B09E745A16AF3148C423D4A09DC3 -86663CA2DEA7F211C35E664D49A36EE5188614FE8BF07BCB907A7F122C5D355C -A7FB601D9BE8EE464E175E4939BF95CDBD3770436C067D013D82883084413225 -A5B2F953E935C8091FD5F72A38790501437FC71B913B5CB227F26201D30D27BA -7B40D0C723FF10A91E4F000A2CA6C8D37614E9001731760E962D43F58019E832 -F23609A5BC1ABEDEE492D11302BD02C95FD43B4B64736726F7370D89370AD22D -0B023A500BC7A17C19C7831E322145A610C8C59B6655FF1E8F057E57DD517BEB -1938CFCA0F735C9DFDA45EB1FC4B7B61174589C88599861712B32EDF2670953C -6A4361CE502E8A906A614FB15D2C0887C2F56CCD4D46279895887CC6D6C29979 -7D46388602E0E302879C1219168D6F6D754D5FF4011222536EAD5BE004A4B034 -3E38432E603D6C616CF610EAA32B07CBB385D159E60FBF268052BE270B4A9D10 -0864100A7E77259B9010CB76BC499269A9643C8AB8FF8361CA4CABDD63137187 -8477E6B188454FD7C38B5A4CDAD8B29E8715C532F109EB31D9648BDE12DAB4C6 -6C664F21FA67051E9DC83BA30F9DF0D28BAA87388335FBC1FAFC0D9760BC0662 -BBAB75775334E610FF1523747854070CA690FF0CC6BBFC4F99294C599B95CA50 -5117ED7ED147772D5B93B5D77E3DE1E4D36A7BCB0E55F58B81D8F9483C2E63E9 -EDF2FA8EDCC917D8688123FAA708F381DE1785F1DCB5F3A432840CCE40EEFAC6 -4AF1ADE43AFDF639DA96B159B60211DE50F8C1AAA5B241134A4D87FD7DB27900 -AE076B3690FEB3422A1AE61CA44303F3023A69756F7A18B7B27FC448207D936B -45941B851CAAE24F2CD79C6213E6B07FAB447D8DEDF9767FF6C50733EDCC3A21 -4969C5B1B30FCD03C308BE43A2CC1B2892066EE5957FFA13B5223B91D205FAD6 -422BC807D54BB8536573AE5DB6FBDAE5BE3D4DA817A760C40BA7A51B3970D8AB -29C666EBEBDD63BA88542957E82521264E854184BB086436926674651E7BD853 -4FF0986CFFF4F4B6C0ED2575A1F2AAF7AD21855221D4EFB2A6770027AE767BB5 -322ADF3506ECC8399C6FD38E4D04BE7FD744A1092B9EB0E6296CE39D8ECF0E0A -AE4754D020A7D3A0B0981937CF1DB659D589B491B2BBE86988892CBA2BBA5F6F -6FE0647CD0741CCE075DBDCB510FD9E235DC595BAA98F6EE9ED8BD5643AAE492 -3274B56A1AB8B552DAB4944EE5762837E5456432BC17E54D7923E99A68C71528 -F62A050367A65AF0CF8A2CA0C2D10F71ABE18ED52C96504E533548BC10BF6D67 -F12400C3AA0AE8A14EFD5612BE61115A425D94D19CFE178C1B7E68BF334A9B66 -057EF072F089B3D88FE17B2EFEA543FADE470638E04D55061BCA15F2B89E67CD -FB0B601339CBD84566836D4C21D4C15A66A35557E8FA6B53FB4D4328CF36F5F1 -38A6CB2B25E22A9D90F94C523523332E5F36E61C2A94FFB8608609DD6FCF51D2 -0D09DABCFD33DE8E95E0EF4736660C84295F5A162A6AEA2B575C527D850B3219 -3835241F1A48D34DD112F4D872ECACC9C5E56F5AA22E03879C14FEC4B9F20BA1 -2855A9F52B66C3B6431FF62458914AD31388B3A8ABB772C4AF65D68042F74747 -F7389B2841AF7DAC397C0760D68DA293B35D44C7B1936523DAA85E7005723FCB -C5E3984D7BF8164A27C0055429F7088199968B85C48113369E3FABD6DA47114B -24DED81BAEA63412CFB17A3DB781A152E9C71C16C77119E11C5648035E9BBC88 -866966DFC73CD7F9401D80340746C40F28B4B5632E521FAD1601AF7B7051B4E7 -68BAD4999B0F4EB4E533AABCDB055016D4606289078CEFB699ADD30B91327B0D -33C6AB337279339F66967006D7EA1DBB72023AD1D2AB3647CA51B3BC08D3BC3F -C81D7C6D9D039A9566F8FD89DA611984C2056F5FC8ACC1EF7457A68C1FF2FC4C -E7DA850A27ED2356E9A14814725076FAD852C731AE78DAADDA54FEAFFFDD6294 -E7CEE99D7B522358900878D63EE1C8B05A80FCC0631D7DFDB2E5ECFBF387DBD2 -69911D149FC37056FD53B4478EAC4C19E145740EA40FA7D9333915F46C8A6D1B -2D692344E161DFFCD4B72F6A366C54F74BDA8EE0B6F02AA1F3C93CB837B78FB2 -28441A871B3B89F087B48F54AB158D580C8869EB14780ADD8A6566CBA0A11947 -FC8DB18B26BE207D0DED8ABDCF2A38B6B7A5FC0D66774D19416A938FA10C4BDC -C265742405D0CEF7F29CDE8D1C52EAB6E7980F0759C237D123888C8A4EC771DB -9AE970C01E54A9C049EA645412D4A7227EEA098C176EB6BA5EFA94AA6B2674F0 -18D78DE4A98A6EAB6601ADA27DCFFF7A128C5D427E48565AD2E3D9A1E721D8AE -559073075840C96FB9260E5D8C9880A345F9A2ABC10A4C239954153BF2DFBC80 -1A3DFE670EA1ACBB27D37737EFB53304A9C4B693B9F25C29C47AB86A68455435 -C2067A7A5B394328E0060238B16DDC7F7C030208873835DB785B30D581236EF4 -1B33D5808F63FA287D3047690142A153337207AB78549EC427508D5734643A8E -5707D21967977D39CEAF6A7541A1AA1320F26CADBC0BDC79A1F75DE8856615BC -30D55992933D50E0702F6FF9F717DA3256CA856135E70D6B04105D53C19BE33D -D0EEED2C31C77435A64FE31B499559B25E6DC5855EC5550EDCB93CAC88CD794D -D6147A019BE173068EEBFE44F9218503ECF2A59AEA8DABBC14CD7F12F0CA352B -81CA9125C6F37C5F036519708FD6A0ADD7FD0F8DF08FF10015A412940E8138CD -DB47E12E48B16F2DB46B4198BB470D6954AAC84DA2FFD2E75FDE8D6435BD0E71 -EEAE6FA1B52D0D1D01BA3952A2726BD4F5C7AECFAAD08BAE8F99ED370B7C01A5 -FCF7FEB0396D494B8F108EC9C47696100C5532222EA00327627AAA0261B3A032 -6B679D75FE00A706A3A466071BE7F0343D45AE82B35209DD4077009850CE3E8E -57A4850F549289E116D2B717D4783ACD1516C20A485A0E29BC37B15DAAF57E97 -8E71955F0944DAEE1F278C09EC82A9145C40E2C848122CE21D3CCFBA7DBE8B83 -6EA0426646A0919119217FADB060BA8D729BE7325468977A54801EBABF61526E -D468ED7E68E7527C53CFF978E4C92213649A4F9097FEB96FCA2944654351B9C2 -F5D81B11CAD388992683A9F1A2C9529A986ACD60040758206A16C9A64722235E -C3830609E12E8CA5F5DFCE2DA95FF1BF3F52444864C490DBA7BAF10EACE49E7B -BB30B9025DA60A72C9831536669028054DDBE553B44797D811CAFD01476BC606 -B0B2FCE825564922F638F26AE543B450A3C40325B2BC09BD1D7E982C0119226D -A035552D1F99121F03CE9556C74026FC4CB7AF7545F0D2D6D82FC889B2CCD558 -17D8F495BF397608424EF3FF0507C4514187873C47F28AD1772DB6076D8FA6D4 -661D25BF1BFEC837662050AC927EB208D1C875F44687B46AC2215569197FCB0D -C48D280DE72228D81A26A4313A53D2FC9478BE3DB319782C0679A48C1214D8DF -686F2CAF83CACED005023C59A10344DD6647F533D9C518E9F0F268CE3AA8457B -8B247BF538D7326B115DB0B4FCE8AE97289F853A3C6827D9808688C45C11140C -AAE674E6954E8F33E915AF7F2D9E2C50E33F167FCA9928157BFA77D170D5D65B -F3837272FF10315541805D2CFF046A80D1F2B491C7A12079DFEA00DE28403088 -0DA4E98D45A147D909CCD39212C97C46392F2510461603DD2F13CABDFC02F09E -6470DC8E28EBB890C80369D5A736AEFA0F84BB55E66817619C9E84C4A3D4E41D -D95A4F10991FF7871E6D29CFC29945D5A0ABDB755AD7635549BDB688D4ADDEBA -0ADB04566D2A05769E7FBF287CCA2D232B622B80D845D4D38C819B2D2B619FD6 -285E6F63008C1B49B74A0A26957F6CA3B9D202195A8B6650F76DCA7F80D3B405 -66D522DC7B7206B611DF3D3963DD8219C0107B5E9CCBD45B3A847D1856D22D81 -556252E218FCAB6599952DB8AF8E824B3EAC776AD84ED7D0454BAC9B3D2919B2 -AF380495159CDCE2735DCA77B6087BF36AC55E87A840AC414CDF0749A2BA8BDE -0B84B6201BD0CEA39C0C44CB840CAD37452AFA68D28F505FE5BF27EC792B1139 -C87228B94F037CFE1F4A23321CFC2F0948CCF014C42F218A6D69397DF83479DE -7B257925773238B7960FA4CE8DC4100D90E0642CFB3DFEF9D7D956E07FA6844E -25CF9444A1D706567761D48FC754EA11AEB9FCBFAD25D51BE9C1C2636C5B7573 -8FB1603420402DFDC0E8CA2B58970061D954FA4B14250A81869366846102018D -8A94049C5D41D4AF33FBBDD458B03EB46DAC1AE90FF012E20B77F0A4F4BD2061 -BA4D3A0450EE80BA29BD69E885E4DA19E43DB63AA39E39480737560A9AF20FA7 -AF86B2776EA950655BF956EEEF75116557A67A670FD9135B5774692FF95E916F -3EF08AC5F562B63DCFD2837741C7882C8475A571BFE0B008AAD10FAE695CEE6E -E79E7E379E03EBD0495785C05F581AD2C52E669F9D4535058083B44F2D93B232 -E3C79EFCA6A3C1840915CC0F8F8F84C5A81B0B9919824A31CB0964A090E253DA -E8DB31E159775429AC8E30B7BF88B1EA1BE9ED4773DA29D0E5FF61B7698D20EC -36D41952F613B3F733E7759B6A21021FB5AEBA1B6986954D017E4A14C9021BEF -47592535BE0A7D5162B25196632A018384066C60702218045BC57D4F42196C9A -EC20E33D76A059C1316DC5EEF50A6463BB4E1A4D95E724F7B8CC9D1A9F621832 -24C7169D6C6109171263F50096CC61F76E75FAF5744A58723A2C7EE42A73BC3A -9700374BB28531E1156D1AB59F751D715CE4FBD28F76661901368A957C8B4A18 -971008A51782A07175691D79861072B7680EC2414A773F8575C3057D62A570A5 -5B06090BC2C4C95EF6AF65C4D68F9BAB63CC9EEC4E0E402D5EA6C3BC5B35D8B9 -A70A5410F6587307285CFC1B8A5DB4E6841C534CBED434BB8E2340CBF4CD0E29 -A5D5F2953F002C68AAB06FC99A798D53073763655791CCA7ED943B74D0C660E4 -3ACCE22F2418C7422D9FFD85EA18C18A98EEA657C5D79501FEBAE3A417F2940C -ABD060E99174DA2D44243CE8320C61CC94134138C6F133806387DAB78F2E7F47 -D49302B58B0BD2494FB266AB18E89DD652D283939372D349EAF675001A27AB58 -7DFBB87EFE4E8A1811B3DF2961809BC95619C6B97F9882810AA70D824E4CBF71 -B24289F5564785C1CA26B1B7C032E0AEA5BEE2EFE57DCA5E9EFE99B87A034B3A -4432D8D579F2ABCC95430D297A168489417B8561B2F6A68890C51A1D7B576B95 -87D3AE21BC9B77C571B9DC79158C05DD7D903D984EF25F0AD874AC961CC3D85C -2F89DC0CA87C83FF1DDC95C40847006482ECE791E73AA1330882903E4EC83EF1 -36B078165E5938E177E54DCAF6EE47D734BA08320D850029B6E3EBC33CE342D9 -48765C43B2CE0D5E6BA57B24B4278EE6056E91958B6886F3E58F4F318C7B0A01 -E97CA2C0E0D644A57214408084A6B9F72F2125A0FC2C059A794383628EFC78A7 -3871D25C4B38522291DD9756DFBB9D82B3E45FA322EDBBF7F60E219A87A227EF -19690F25AA3E29398AA5450C2836F9CA0E80D12B9AADE8096D74D218AA1B093A -0CB5424A9A198BC62AE13FF2497F634A489F9998203DB37F33768E35539E930E -CC636BD8B66405B55DF1E65CAE4EAE8DF3BEF99B82F342A0726347F308FE8599 -9A4E2074355A3AFDB5ABEA50B20F4E9B280BA16F7FCBF018FE306AE31E7E9DE2 -F494AC6B655530553AC73A8E864ECDD450D9C56D35ECF326C5BF21F787F03DAA -DAC9F9D0222161BAC8D7E8913EC6FE06CD554F76EBD590B3D30AD9C7C4BDF0F5 -2FA818AE440C3EAC77B160C48C2353BC320A6E4FD6AE53DEB9CE4B8C5547E3FA -46883F173EE44236DEC7E6569DA147316D9C919A70A6DCEBBE924BD96FDD2B81 -57822D315EA865397A65352EB67F8BC0D88E252E8BFF9D0875A599C61DDC56B3 -0511DCD4BFE944ECAF430E174D69E60ED8F18DCA0896C004B49692F85BFE3B08 -A028E66DDDD23F26F5B5945BA4645F38A8B453303D9A1A8C7C2A05CAF7F98C8B -686ABBD2F10458D0991C33EA94A45D6EFF66FD4B7E4774078817070992DC6422 -660E4F49BB354D98DE00DD08465F53FD88EBDDE7961AE4BBE9C36283A9849CE0 -60624CA6888528A2431FF8C7E0C139E2F0C56BFE489D1DEE878EB4666AFEFD19 -6FD824181D0B7AE0786E2988D7AE8B676B45CF106A4E9D44B2E55910205DE276 -B3312AF334591A1C91A575AF07A8781AC39567A12D402904319E97F7228436F8 -62E270C65F3F342B7A5D7C0CFBBC6885B50F6676DBEB22CE33428E98FB8F4454 -49C789AA137895763B9A4B23D6554F81E8EFDD6E6AEF529B367E6A918E953B01 -ECB8430C3B6AA0539335E8AECEEAA1A5DCD7F98E609CB6B9F79452AF370D284B -6CA68AA58DFBA08C9AB99D5ECEA95FF4BC58CA0277CDBC7EF613323841483D0D -006162D6EA30A9BDC45BED565D7E1B1A415B1F995AA7984E5A2956BE0C312300 -780BCC33A5BCE18B071637CD11C98F27529D4240577EE766184506DA100A481F -04078BCC2FE63165839C1667F00E261D3820D23E422EE1880953E5FC50DB7E62 -A720F1452E4236DFFA314C7317E5B1D952FB850EDA174D08E0AEB8614664F77F -5023162C841607DD24B0A212B18689670C9A78F6C0E5EDD05A1E71969A010C55 -F3AD244DEB61D5B819595B00DB221DCDCC57490A044C6F3CE577986518AC2145 -3CB34B2BA95722D95044FDB7EB6FFC1EB7E6675012A0FE1C48AEB08370ED3D7C -2AB0684DB5EC85A4974556B2549013EF603928460D1660036B75081453375107 -300B0FB92F7701835F00F1EF55614FF110DD461EE71451A4C575769E00A9C714 -375BCF779B44FB067F3C23BB6B777D1D5038FBEAF51C0E595E77234B58BA0FD0 -4918670B280BD2D81E284352F732787E0384A0D8C05ABFA5C0FC2010CADEC7DC -46B9557C285FCDFDADF26A925024A035ECA4DC61EEFB56259DBC6FF66CE244FD -2EB0E48F6841B0AEA6C2899A9FF80BFEFA46E65A599AF0049154D09E78B2AA2C -078BC461B45630E514769DB6D49A02B0AF7EF386A6A0F0ECB32668875E297502 -EBE1A615272EE0262533504B5D4C59751432C36DFCAFD72B23F270BAD2471B75 -F7DBC077A9D0C35C34EFF546A283E1F9CA36811A309907B9DECAA80BBCE8DE17 -10C38F7142B8AEE658855A4B95CF25311375FF2694A036A7476B295ED51DB718 -1575E546820C1F31A8F413A43D081FA83A6F02BF529BB90456633040D2B107A6 -CC957EE18F59035C3E27F5770F22A0D3CC91DB72D4E1160BC80A2A3FDFFAD1B8 -B04FA3677C685407AF9B174D837EC3651D454C8CB4D8070EB76588CF91909359 -3EE3E48503AFB892B63273DBF7BEFB23960318D5A91818A58FD8F75749BCC61A -80523A75B0C5E15FA02A2B89C8E01BE417AB49511D157B9B6221CC05DA72AA10 -4509EFD63AD89A99871F9DC06E5802CBC21D4ABCA78B102285E925FC7D400CAE -102C002CA7AF4A16E67D89B479E600C255091C18CEDBF333FC249F1C19533F8F -EC4B46138E153EB87C9FDA3CB284965E849C5C3267DBCBE93ED235C6D1A82BE3 -046B6E25B9439117E477AE346FFC61FB7482AB6B35115E0042B7FB244A9A3A5F -6193B29BACA11593F19507A19200BB003DEC953BF5238A7A10E9579DEA4A9C3D -19798D0C299476982F1AA3F8A9868399CC2F22066DEA4695F84DD63BD0D1B463 -089879698D650CEFA0610E1CB1EC420A0172ACCE9CDD4C66A3C32F6FBE86F015 -7292656D8D8495812BB3D1C2F99C76E731AC922E4031991339CF90322BDCA875 -803D207C1AF41A487B45607DEBE3088C7A1FED97485E07AB09A5BC9F90C6FA0B -63B3B61FB2A1D20FFB2F2DDCBCDFD97BAA001603543B40A2D57B1FF2C597229A -1EB77B52939AC94D935ADE837057BE1014F25B59A80B7F3277727D42CCC73F91 -099F044E70FDFA182662115387D0B21BF16D147CBB21C2E5F2E3717DBE831A80 -F32458E010D0348324E8DEA64D15E77B442B661802D0BC32956986ACF129A91D -EBD811D51C599AD10F4E28ADD619A3EA2F45204CF20C785A1D658C5130FC731A -B1CA85AF8E65AB69D439254D86CCEAA83A768676EBC311B12861201227A4A88B -4623A917652041CB9B49955F15B1BCCC2FC4A61A002D98DE0CFE92F314614B5F -35066C20F213E4A3AE616378703268AC9888D77D1891A7AE28508D311652C5EF -5FFDAB4160FA7BA8E77D8CA445369D1ED9FB36FCAC4F6C075557699E93BE6ABB -4721F62358D5128AF19E2EE441337F9B29BD29D8D1AABD54EA1B2FE634E0FC41 -67655730A19DF4561BE949A4FB9498EDB49DD71E95D1981C4CC5A0A8AD14AB9C -123B7781BCF66AEC285EAB6F6E954CAD024294531E972F3ECDE3E229B7B60909 -42B7FFA657BA06F40BBD48EF0E0B4DCEC9BAD3F4C7D5A853C181EB152974FE25 -7C6659619C84AD98E0C45E31C25E0EF38417E49593D17D6A273A7EA3E16AD250 -5A59095A0B70C9654CD06CC5A3472EEB18208727A7F0C6229CBEFFDF108007D4 -451A346C9F549B5AC6B2CBC2E5B70F20DDA95354CB4FC61A9AECE4A2AD947626 -05F3D3AB350E0A0531AAA9B4419AB9D7B2E5F9F60BED33237F22AD6D4B30FB18 -C750D3AFE623AFEC5E673AD4E6FF1AF77119C119BBB95BD0D5A926D293ED468C -2E8D48CD5AE74C0E3A4548D53FD4FFA330AACC55C6B623AA0786C73E52F7AFE0 -8CBE48F0E431876A2254489E9876C33A174A27A575F6379C22B26EA9E281BDE9 -BC9F8DA64C88ED69E7C02C890141E5720530E7E91C37D09888D3A3CB65A4EA3C -0DE64C1C19DFDA3247F4BA650CA7CF9C4FD7C06AE5CF9A28A356BEFC6B951B16 -EA9434AC7BF3E70670E204E20D6C5BD57A53661E41B5CA3B2E673BCEBEAFDDB8 -BF2B1CB24C48BD945A67C9EE301D5288EAA6E8EA1D486FBA14BA1FD836D7143C -4A0328035350588D1EF8BC6913BAB1E59079F7F719F08517F644729DF41DD698 -683AF00C451BED4D6F67D309E9DC4543193F2DCAE8E5A694E850A2CDC67590CA -D3A80A4654CADB6CB233D2C5309B302AE0A4B17CBB171C573E243E8B13C310F8 -D70B9CE07F7B16FD2710D8172596E95F69A32F355381844F4D4B648040F03252 -B9C51F4FDB47CF92A64FAC2402AF1B6619947DB794DD3EFE6590E7D7DA77B9E9 -B65C9681B20DBAD776A4E3900A9913FA4F6B672573D9C16A8C953FE57B69F437 -5685371DA2DD2061C25DD3010D39A5949DDC69FBCBF18E8FE3B4F7CE9ED20582 -DC2657C0237511291CCF8368C628003A7080A0B7F160FA4BF5879A79A5F1B80A -5A57D21DF9E9348A3317C66B4FBD14842924E69C6C16BE755A8E06BB738F57F6 -0E62E7848FA91AE2907062FB5515FFB76B7B70F8A6B66BEB44BD1CB001FF232F -A100B8C062B2107D131E965F8EEDDB2D6ADE20A80C83EBED0B97DC42C781E4D3 -DA3D4FA20172F441310BA23312451C4F8D892F6DA84322BDEDF64063E8625AAC -5E1A5FC5C50491537C2D2809BBFDC269AC53BF5B39439325A1AED7CD3D1F6E3F -060F2EC73A951D99C5B3287EF06CBC2B4298761F19C2D84B1F4218B7175C5223 -B5880EE4713F0CF9C0EBEC5DA1DBEFA8F63D5CF6AAF98406676B01DC7E7809DC -30954463E02AE855C22C5726DD004BB8F6D62E9C9F3D54FDDE87DF4D10FD12AF -C537B9540268C9A251BD4A1FA0A163D2DA78E36F306FD9F0AB316F39264504F7 -E44C2230D2079B2E -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -TeXDict begin 39158280 55380996 1000 600 600 (cloog.dvi) -@start /Fa 131[39 3[39 2[39 39 39 39 1[39 39 39 39 39 -39 39 39 39 39 39 39 39 39 39 39 3[39 1[39 4[39 2[39 -2[39 1[39 1[39 2[39 4[39 39 39 7[39 6[39 39 39 39 2[39 -1[39 43[{ TeX09fbbfacEncoding ReEncodeFont }40 74.7198 -/CMTT9 rf /Fb 137[56 56 56 56 56 1[56 56 56 56 56 56 -1[56 56 1[56 56 56 56 56 56 34[56 1[56 14[56 45[{ - TeX09fbbfacEncoding ReEncodeFont }22 109.091 /CMTT12 -rf /Fc 133[55 65 65 1[65 68 48 48 50 65 68 61 68 102 -34 65 1[34 68 61 37 56 68 55 68 60 10[93 1[85 68 92 1[84 -92 96 116 74 2[46 96 96 77 81 94 89 87 93 7[61 61 61 -61 61 61 61 61 61 61 1[34 4[48 48 40[{ - TeXf7b6d320Encoding ReEncodeFont }55 109.091 /CMBX12 -rf /Fd 193[74 1[74 1[74 1[74 29[62 26[{}5 83.022 /CMEX10 -rf /Fe 203[33 33 33 33 49[{ TeXf7b6d320Encoding ReEncodeFont }4 -58.1154 /CMR7 rf /Ff 139[25 11[39 19[39 41 83[{ - TeXaae443f0Encoding ReEncodeFont }4 58.1154 /CMMI7 rf -/Fg 135[52 3[33 43 41 1[46 44 55 80 27 47 37 31 2[45 -42 47 39 39 48 37[25 40[43 18[{ TeXaae443f0Encoding ReEncodeFont }20 -90.9091 /CMMI10 rf /Fh 134[48 48 1[48 51 35 36 39 1[51 -45 51 76 25 48 1[25 51 45 28 42 51 40 51 44 11[70 33[45 -45 45 45 2[30 45[{ TeXf7b6d320Encoding ReEncodeFont }28 -90.9091 /CMB10 rf /Fi 134[44 1[60 1[49 30 37 38 1[46 -46 51 74 23 42 1[28 46 42 28 42 46 42 1[46 20[57 4[70 -3[65 8[28 10[46 28 33 45[{ TeX74afc74cEncoding ReEncodeFont }27 -90.9091 /CMTI10 rf /Fj 209[43 46[{ TeX74afc74cEncoding ReEncodeFont }1 -119.552 /CMBXTI10 rf /Fk 134[85 1[117 1[90 63 64 66 2[81 -90 134 45 2[45 90 81 49 74 90 72 90 78 11[124 112 90 -120 5[97 2[60 1[127 2[124 117 12[81 81 81 81 81 81 49[{ - TeXf7b6d320Encoding ReEncodeFont }34 143.462 /CMBX12 -rf /Fl 234[71 5[45 1[91 12[71{ TeXbbad153fEncoding ReEncodeFont }4 -90.9091 /CMSY10 rf /Fm 129[48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 1[48 1[48 48 48 1[48 48 48 48 48 48 48 48 1[48 -48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 1[48 48 48 48 14[48 19[{ - TeX09fbbfacEncoding ReEncodeFont }88 90.9091 /CMTT10 -rf /Fn 133[60 71 71 97 1[75 52 53 55 71 75 67 75 112 -37 2[37 75 67 41 61 75 60 75 65 9[139 1[103 94 75 100 -2[101 2[81 2[50 1[106 85 88 103 97 96 102 1[64 4[37 67 -1[67 67 67 67 67 67 67 2[37 1[37 4[37 19[67 6[75 12[{ - TeXf7b6d320Encoding ReEncodeFont }53 119.552 /CMBX12 -rf /Fo 128[45 3[45 40 48 48 66 48 51 35 36 36 48 51 45 -51 76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 1[25 -56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 47 33 -68 71 59 62 69 66 64 68 1[43 1[71 1[25 25 45 45 45 45 -45 45 45 45 45 45 45 25 30 25 71 1[35 35 25 5[25 13[45 -4[76 1[51 53 11[{ TeXf7b6d320Encoding ReEncodeFont }84 -90.9091 /CMR10 rf /Fp 144[97 34[116 4[152 3[140 67[{ - TeXf7b6d320Encoding ReEncodeFont }4 172.154 /CMBX12 -rf end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%PaperSize: A4 - end -%%EndSetup -%%Page: 1 1 -TeXDict begin 1 0 bop 150 1317 a Fp(CLo)5 b(oG)p 150 -1383 3600 34 v 2037 1480 a Fo(A)31 b(Lo)s(op)f(Generator)h(F)-8 -b(or)32 b(Scanning)d(P)m(olyhedra)2565 1588 y(Edition)h(2.0,)i(for)e -(CLo)s(oG)h(0.14.0)2932 1696 y(No)m(v)m(em)m(b)s(er)g(17th)g(2005)150 -5091 y Fn(C)m(\023)-64 b(edric)45 b(Bastoul)p 150 5141 -3600 17 v eop end -%%Page: 2 2 -TeXDict begin 2 1 bop 150 433 a Fo(\(Septem)m(b)s(er)30 -b(2001\))150 593 y Fm(C\023)-48 b(edric)29 b(Bastoul)630 -702 y Fo(SCHEDULES)d(GENERA)-8 b(TE)28 b(!!!)40 b(I)27 -b(just)g(need)h(to)g(apply)f(them)g(no)m(w,)i(where)e(can)g(I)g(\014nd) -630 812 y(a)k(go)s(o)s(d)f(co)s(de)h(generator)g(?!)150 -971 y Fm(Paul)e(Feautrier)630 1081 y Fo(Hmmm.)38 b(I)24 -b(fear)h(that)g(if)g(y)m(ou)g(w)m(an)m(t)g(something)g(p)s(o)m(w)m -(erful)f(enough,)i(y)m(ou'll)g(ha)m(v)m(e)f(to)h(write)630 -1191 y(it)31 b(y)m(ourself)g(!)150 2921 y(This)38 b(man)m(ual)i(is)f -(for)g(CLo)s(oG)g(v)m(ersion)h(0.14.0,)k(a)39 b(soft)m(w)m(are)i(whic)m -(h)e(generates)h(lo)s(ops)f(for)g(scanning)150 3031 y(Z-p)s(olyhedra.) -63 b(That)38 b(is,)i(CLo)s(oG)f(pro)s(duces)e(a)h(co)s(de)g(visiting)h -(eac)m(h)h(in)m(tegral)g(p)s(oin)m(t)e(of)g(a)g(union)g(of)150 -3140 y(parametrized)g(p)s(olyhedra.)59 b(CLo)s(oG)38 -b(is)f(designed)g(to)g(a)m(v)m(oid)i(con)m(trol)f(o)m(v)m(erhead)h(and) -d(to)i(pro)s(duce)e(a)150 3250 y(v)m(ery)31 b(e\013ectiv)m(e)i(co)s -(de.)150 3385 y(It)c(w)m(ould)g(b)s(e)g(quite)h(kind)e(to)i(refer)f -(the)g(follo)m(wing)i(pap)s(er)d(in)h(an)m(y)h(publication)f(that)h -(results)f(from)g(the)150 3494 y(use)h(of)h(the)f(CLo)s(oG)h(soft)m(w)m -(are)h(or)e(its)h(library:)390 3629 y Fm(@InProceedings{Bas04,)485 -3738 y(author)47 b(=)190 b({C.)47 b(Bastoul},)485 3848 -y(title)g(=)238 b({Code)47 b(Generation)e(in)i(the)g(Polyhedral)e -(Model)1106 3957 y(Is)i(Easier)f(Than)h(You)g(Think},)485 -4067 y(booktitle)f(=)h({PACT'13)f(IEEE)g(International)f(Conference)g -(on)1106 4177 y(Parallel)g(Architecture)g(and)i(Compilation)e -(Techniques},)485 4286 y(year)i(=)286 b(2004,)485 4396 -y(pages)47 b(=)238 b({7--16},)485 4505 y(month)47 b(=)238 -b({september},)485 4615 y(address)46 b(=)143 b({Juan-les-Pins})390 -4725 y(})150 4859 y Fo(Cop)m(yrigh)m(t)602 4856 y(c)577 -4859 y Fl(\015)30 b Fo(2002-2005)k(C)m(\023)-43 b(edric)32 -b(Bastoul.)150 4994 y(P)m(ermission)g(is)f(gran)m(ted)i(to)f(cop)m(y)-8 -b(,)33 b(distribute)e(and/or)h(mo)s(dify)f(this)g(do)s(cumen)m(t)g -(under)g(the)g(terms)h(of)150 5103 y(the)c(GNU)g(F)-8 -b(ree)28 b(Do)s(cumen)m(tation)h(License,)g(V)-8 b(ersion)28 -b(1.2)g(published)e(b)m(y)h(the)h(F)-8 b(ree)28 b(Soft)m(w)m(are)h(F)-8 -b(ounda-)150 5213 y(tion.)40 b(T)-8 b(o)26 b(receiv)m(e)i(a)e(cop)m(y)h -(of)f(the)g(GNU)g(F)-8 b(ree)27 b(Do)s(cumen)m(tation)h(License,)f -(write)f(to)h(the)f(F)-8 b(ree)27 b(Soft)m(w)m(are)150 -5322 y(F)-8 b(oundation,)31 b(Inc.,)g(59)g(T)-8 b(emple)31 -b(Place,)h(Suite)e(330,)i(Boston,)g(MA)e(02111-1307)35 -b(USA.)p eop end -%%Page: -1 3 -TeXDict begin -1 2 bop 3725 -116 a Fo(i)150 299 y Fk(T)-13 -b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fn(1)135 b(In)l(tro)t -(duction)15 b Fj(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h -(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) -60 b Fn(1)449 778 y Fo(1.1)92 b(Basically)-8 b(,)33 b(what's)e(the)f(p) -s(oin)m(t)h(?)d Fi(.)15 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)59 -b Fo(1)449 888 y(1.2)92 b(De\014ning)30 b(a)h(Scanning)f(Order:)39 -b(Scattering)32 b(F)-8 b(unctions)30 b Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)59 b Fo(2)150 1130 y Fn(2)135 b(Using)45 -b(the)h(CLo)t(oG)e(Soft)l(w)l(are)29 b Fj(.)21 b(.)f(.)f(.)h(.)f(.)g(.) -h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)73 b Fn(5)449 -1267 y Fo(2.1)92 b(A)30 b(First)h(Example)23 b Fi(.)15 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)53 b Fo(5)449 1377 y(2.2)92 b(W)-8 b(riting)32 -b(The)d(Input)g(File)e Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)55 b Fo(6)748 1486 y(2.2.1)93 -b(Domain)31 b(Represen)m(tation)c Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)55 -b Fo(7)748 1596 y(2.2.2)93 b(Scattering)31 b(F)-8 b(unction)31 -b(Represen)m(tation)d Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)56 b Fo(8)449 1705 y(2.3)92 b(Calling)31 b(CLo)s(oG)12 -b Fi(.)j(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)h(.)f(.)g(.)g(.)g(.)41 b Fo(10)449 1815 y(2.4)92 -b(CLo)s(oG)31 b(Options)18 b Fi(.)c(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)47 b -Fo(10)748 1924 y(2.4.1)93 b(Last)30 b(Depth)h(to)g(Optimize)g(Con)m -(trol)g Fm(-l)f()14 b Fi(.)f(.)i(.)g(.)g(.)43 -b Fo(11)748 2034 y(2.4.2)93 b(First)30 b(Depth)h(to)g(Optimize)g(Con)m -(trol)g Fm(-f)f()24 b Fi(.)15 b(.)g(.)g(.)56 b -Fo(11)748 2144 y(2.4.3)93 b(Once)30 b(Time)g(Lo)s(op)g(Elimination)i -Fm(-otl)d()21 b Fi(.)13 b(.)i(.)50 b Fo(12)748 -2253 y(2.4.4)93 b(Equalit)m(y)31 b(Spreading)e Fm(-esp)h()9 -b Fi(.)j(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)38 -b Fo(12)748 2363 y(2.4.5)93 b(Constan)m(t)30 b(Spreading)g -Fm(-csp)f()18 b Fi(.)13 b(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)47 b Fo(12)748 2472 y(2.4.6)93 b(First)30 b(Lev)m(el)i(for)e -(Spreading)g Fm(-fsp)f()24 b Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)56 b Fo(13)748 2582 y(2.4.7)93 b(C)29 b(PrePro)s(cessor)i(F)-8 -b(riendly)30 b Fm(-cpp)g()12 b Fi(.)g(.)j(.)g(.)g(.)g(.)g(.)g -(.)41 b Fo(13)748 2692 y(2.4.8)93 b(Statemen)m(t)31 b(Blo)s(c)m(k)h -Fm(-block)d()12 b Fi(.)g(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)41 b Fo(14)748 2801 y(2.4.9)93 b(Lo)s(op)30 -b(Strides)f Fm(-strides)g()20 b Fi(.)12 b(.)j(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)49 b Fo(14)748 2911 y(2.4.10)93 -b(Compilable)31 b(Co)s(de)f Fm(-compilable)d()13 -b Fi(.)g(.)i(.)g(.)g(.)g(.)g(.)g(.)42 b Fo(15)748 3020 -y(2.4.11)93 b(Output)29 b Fm(-o)h()12 b Fi(.)h(.)i(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.) -g(.)g(.)g(.)41 b Fo(16)748 3130 y(2.4.12)93 b(Help)31 -b Fm(--help)d Fo(or)j Fm(-h)15 b Fi(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)45 b Fo(16)748 3240 y(2.4.13)93 b(V)-8 b(ersion)31 -b Fm(--version)d Fo(or)i Fm(-v)18 b Fi(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)47 -b Fo(16)449 3349 y(2.5)92 b(A)30 b(F)-8 b(ull)32 b(Example)19 -b Fi(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)49 b Fo(16)150 3592 y Fn(3)135 -b(Using)45 b(the)h(CLo)t(oG)e(Library)29 b Fj(.)20 b(.)f(.)h(.)f(.)h(.) -f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)74 b Fn(21)449 -3729 y Fo(3.1)92 b(CLo)s(oG)31 b(Data)h(Structures)d(Description)c -Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)53 b Fo(21)748 3838 y(3.1.1)93 b(Clo)s(ogMatrix)28 -b Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h -(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -56 b Fo(21)748 3948 y(3.1.2)93 b(Clo)s(ogDomain)30 b -Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)58 -b Fo(22)748 4057 y(3.1.3)93 b(Clo)s(ogDomainList)17 b -Fi(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 -b Fo(22)748 4167 y(3.1.4)93 b(Clo)s(ogStatemen)m(t)26 -b Fi(.)15 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 -b Fo(23)748 4276 y(3.1.5)93 b(Clo)s(ogBlo)s(c)m(k)8 b -Fi(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)38 b Fo(23)748 4386 y(3.1.6)93 b(Clo)s(ogBlo)s(c)m(kList)18 -b Fi(.)f(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)47 -b Fo(23)748 4496 y(3.1.7)93 b(Clo)s(ogLo)s(op)20 b Fi(.)15 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -49 b Fo(23)748 4605 y(3.1.8)93 b(Clo)s(ogNames)9 b Fi(.)16 -b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)38 -b Fo(24)748 4715 y(3.1.9)93 b(Clo)s(ogProgram)12 b Fi(.)k(.)f(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)41 b Fo(24)748 -4824 y(3.1.10)93 b(Clo)s(ogOptions)27 b Fi(.)15 b(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 b Fo(27)449 4934 y(3.2)92 -b(CLo)s(oG)31 b(F)-8 b(unctions)30 b(Description)20 b -Fi(.)c(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49 b Fo(28)748 -5044 y(3.2.1)93 b(clo)s(og)p 1235 5044 28 4 v 41 w(program)p -1610 5044 V 40 w(generate)17 b Fi(.)g(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)47 -b Fo(28)748 5153 y(3.2.2)93 b(clo)s(og)p 1235 5153 V -41 w(program)p 1610 5153 V 40 w(pprin)m(t)18 b Fi(.)d(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)48 b Fo(29)748 5263 y(3.2.3)93 b(clo)s(og)p -1235 5263 V 41 w(program)p 1610 5263 V 40 w(scatter)30 -b Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)58 b Fo(29)p eop end -%%Page: -2 4 -TeXDict begin -2 3 bop 150 -116 a Fo(ii)1584 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)748 -83 y(3.2.4)93 b(clo)s(og)p 1235 83 28 4 v 41 w(program)p -1610 83 V 40 w(read)12 b Fi(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)41 -b Fo(30)748 193 y(3.2.5)93 b(F)-8 b(rom)30 b(Matrices)i(to)g(Domains)f -(and)e(Con)m(v)m(ersely)f Fi(.)16 b(.)f(.)g(.)g(.)g(.)56 -b Fo(30)748 302 y(3.2.6)93 b(Allo)s(cation)32 b(and)e(Initialization)j -(F)-8 b(unctions)25 b Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 -b Fo(30)748 412 y(3.2.7)93 b(Memory)30 b(Deallo)s(cation)k(F)-8 -b(unctions)8 b Fi(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)38 b Fo(30)748 521 y(3.2.8)93 b(Prin)m(ting)30 -b(F)-8 b(unctions)14 b Fi(.)i(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) -43 b Fo(31)449 631 y(3.3)92 b(Example)30 b(of)h(Library)f(Utilization) -20 b Fi(.)d(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49 b Fo(31)150 -873 y Fn(4)135 b(Installing)46 b(CLo)t(oG)31 b Fj(.)19 -b(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h -(.)f(.)h(.)f(.)g(.)h(.)f(.)76 b Fn(33)449 1010 y Fo(4.1)92 -b(License)17 b Fi(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 -b Fo(33)449 1120 y(4.2)92 b(Requiremen)m(ts)20 b Fi(.)15 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)49 b Fo(33)748 1230 y(4.2.1)93 -b(P)m(olyLib)30 b(\(mandatory\))g Fi(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -58 b Fo(33)748 1339 y(4.2.2)93 b(GMP)30 b(Library)g(\(optional\))9 -b Fi(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)38 b Fo(33)449 1449 y(4.3)92 -b(CLo)s(oG)31 b(Basic)g(Installation)22 b Fi(.)16 b(.)f(.)g(.)g(.)g(.)g -(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)51 b Fo(34)449 1558 y(4.4)92 -b(Optional)31 b(F)-8 b(eatures)20 b Fi(.)c(.)f(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49 b -Fo(34)449 1668 y(4.5)92 b(Uninstallation)9 b Fi(.)17 -b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)38 b Fo(35)150 1910 y Fn(5)135 -b(Do)t(cumen)l(tation)25 b Fj(.)c(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h -(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)70 -b Fn(37)150 2180 y(6)135 b(References)38 b Fj(.)20 b(.)f(.)g(.)h(.)f(.) -h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f -(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)82 b Fn(39)p eop end -%%Page: 1 5 -TeXDict begin 1 4 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(In)m(tro)s(duction)2592 b(1)150 299 y Fk(1)80 b(In)l(tro)t(duction) -275 554 y Fo(CLo)s(oG)34 b(is)g(a)g(free)g(soft)m(w)m(are)i(and)d -(library)h(generating)h(lo)s(ops)f(for)g(scanning)f(Z-p)s(olyhedra.)51 -b(That)150 664 y(is,)30 b(it)f(\014nds)e(a)i(co)s(de)h(\(e.g.)41 -b(in)29 b(C,)g(F)m(OR)-8 b(TRAN...\))41 b(that)30 b(reac)m(hes)g(eac)m -(h)g(in)m(tegral)h(p)s(oin)m(t)e(of)g(one)g(or)g(more)150 -773 y(parameterized)k(p)s(olyhedra.)44 b(CLo)s(oG)32 -b(has)g(b)s(een)f(originally)j(written)e(to)g(solv)m(e)h(the)f(co)s(de) -h(generation)150 883 y(problem)27 b(for)g(optimizing)h(compilers)g -(based)f(on)g(the)h(p)s(olytop)s(e)f(mo)s(del.)39 b(Nev)m(ertheless)29 -b(it)f(is)f(used)g(no)m(w)150 992 y(in)33 b(v)-5 b(arious)34 -b(area,)i(e.g.,)g(to)e(build)f(con)m(trol)i(automata)g(for)e(high-lev)m -(el)j(syn)m(thesis)d(or)h(to)g(\014nd)f(the)g(b)s(est)150 -1102 y(p)s(olynomial)c(appro)m(ximation)g(of)g(a)g(function.)39 -b(CLo)s(oG)29 b(ma)m(y)g(help)f(in)g(an)m(y)h(situation)g(where)f -(scanning)150 1212 y(p)s(olyhedra)c(matters.)40 b(It)25 -b(uses)f(the)i(b)s(est)e(state-of-the-art)k(co)s(de)e(generation)g -(algorithm)g(kno)m(wn)e(as)i(the)150 1321 y(Quiller)m(\023)-43 -b(e)30 b(et)g(al.)40 b(algorithm)30 b(\(see)g([Qui00],)g(page)g(39\))g -(with)e(our)g(o)m(wn)h(impro)m(v)m(emen)m(ts)h(and)e(extensions)150 -1431 y(\(see)33 b([Bas04],)j(page)d(39\).)48 b(The)32 -b(user)g(has)g(full)g(con)m(trol)i(on)f(generated)g(co)s(de)g(qualit)m -(y)-8 b(.)48 b(On)32 b(one)h(hand,)150 1540 y(generated)c(co)s(de)g -(size)g(has)f(to)h(b)s(e)e(tuned)h(for)g(sak)m(e)h(of)g(readabilit)m(y) -g(or)g(instruction)f(cac)m(he)i(use.)39 b(On)28 b(the)150 -1650 y(other)i(hand,)f(w)m(e)h(m)m(ust)g(ensure)e(that)j(a)f(bad)f(con) -m(trol)i(managemen)m(t)g(do)s(es)e(not)h(hamp)s(er)f(p)s(erformance)150 -1759 y(of)c(the)h(generated)g(co)s(de,)h(for)e(instance)h(b)m(y)f(pro)s -(ducing)f(redundan)m(t)g(guards)h(or)g(complex)h(lo)s(op)g(b)s(ounds.) -150 1869 y(CLo)s(oG)i(is)g(sp)s(ecially)g(designed)g(to)h(a)m(v)m(oid)g -(con)m(trol)g(o)m(v)m(erhead)g(and)f(to)g(pro)s(duce)f(a)h(v)m(ery)g -(e\016cien)m(t)h(co)s(de.)275 2011 y(CLo)s(oG)24 b(stands)h(for)f -Fi(Chunky)k(L)-5 b(o)g(op)29 b(Gener)-5 b(ator)10 b Fo(:)40 -b(it)25 b(is)g(a)g(part)g(of)f(the)h(Ch)m(unky)f(pro)5 -b(ject,)26 b(a)f(researc)m(h)150 2120 y(to)s(ol)f(for)e(data)h(lo)s -(calit)m(y)i(impro)m(v)m(emen)m(t)g(\(see)e([Bas03a],)k(page)d(39\).)39 -b(It)23 b(is)f(designed)h(also)h(to)f(b)s(e)f(the)h(bac)m(k-)150 -2230 y(end)29 b(of)h(automatic)h(parallelizers)h(lik)m(e)f(Lo)s(oP)m(o) -f(\(see)h([Gri04],)g(page)g(39\).)41 b(Th)m(us)29 b(it)h(is)g(v)m(ery)g -(compilable)150 2339 y(co)s(de)39 b(orien)m(ted)g(and)f(pro)m(vides)h -(p)s(o)m(w)m(erful)f(program)h(transformation)g(facilities.)67 -b(Mainly)-8 b(,)42 b(it)e(allo)m(ws)150 2449 y(the)32 -b(user)f(to)i(sp)s(ecify)e(v)m(ery)i(general)g(sc)m(hedules)f(where,)g -(e.g.,)h(unimo)s(dularit)m(y)f(or)f(in)m(v)m(ertibilit)m(y)k(of)d(the) -150 2558 y(transformation)f(do)s(esn't)f(matter.)275 -2700 y(The)e(curren)m(t)h(v)m(ersion)h(is)f(still)h(under)e(ev)-5 -b(aluation,)31 b(and)e(there)g(is)h(no)f(guaran)m(tee)i(that)e(the)h -(up)m(w)m(ard)150 2810 y(compatibilit)m(y)41 b(will)e(b)s(e)f(resp)s -(ected)h(\(but)g(the)g(previous)f(API)h(has)f(b)s(een)g(stable)i(for)e -(t)m(w)m(o)j(y)m(ears,)g(w)m(e)150 2919 y(hop)s(e)35 -b(this)g(one)h(will)g(b)s(e)f(as)g(successful)h(-and)f(w)m(e)h(b)s -(eliev)m(e)h(it-\).)57 b(A)35 b(lot)i(of)f(rep)s(orts)e(are)i -(necessary)g(to)150 3029 y(freeze)h(the)g(library)e(API)i(and)e(the)i -(input)e(\014le)h(shap)s(e.)58 b(Most)37 b(API)f(c)m(hanges)h(from)f -(0.12.x)i(to)f(0.14.x)150 3138 y(ha)m(v)m(e)d(b)s(een)d(requested)i(b)m -(y)f(the)g(users)g(themselv)m(es.)48 b(Th)m(us)31 b(y)m(ou)i(are)g(v)m -(ery)f(w)m(elcome)j(and)c(encouraged)150 3248 y(to)g(p)s(ost)f(rep)s -(orts)g(on)g(bugs,)g(wishes,)g(critics,)i(commen)m(ts,)g(suggestions)f -(or)f(successful)h(exp)s(eriences)f(in)150 3357 y(the)c(forum)e(of)i -Fm(http://www.CLooG.org)20 b Fo(\(preferably\))25 b(or)h(to)g(send)f -(them)g(to)h(cedric.bastoul)p Fm(@)p Fo(inria.fr)150 -3467 y(directly)-8 b(.)150 3742 y Fn(1.1)68 b(Basically)-11 -b(,)46 b(what's)g(the)f(p)t(oin)l(t)h(?)275 3993 y Fo(If)21 -b(y)m(ou)h(w)m(an)m(t)g(to)h(use)e(CLo)s(oG,)h(this)g(is)g(b)s(ecause)f -(y)m(ou)h(w)m(an)m(t)h(to)f(scan)g(or)g(to)g(\014nd)e(something)i -(inside)g(the)150 4103 y(in)m(tegral)29 b(p)s(oin)m(ts)d(of)i(a)f(set)g -(of)h(p)s(olyhedra.)38 b(There)27 b(are)g(man)m(y)g(reasons)g(for)g -(that.)40 b(Ma)m(yb)s(e)28 b(y)m(ou)f(need)g(the)150 -4212 y(generated)33 b(co)s(de)e(itself)i(b)s(ecause)e(it)h(actually)h -(implemen)m(ts)f(a)g(v)m(ery)g(smart)f(program)h(transformation)150 -4322 y(y)m(ou)23 b(found.)37 b(Ma)m(yb)s(e)23 b(y)m(ou)g(w)m(an)m(t)g -(to)h(use)e(the)h(generated)h(co)s(de)e(b)s(ecause)h(y)m(ou)g(kno)m(w)g -(that)g(the)g(solution)g(of)150 4431 y(y)m(our)j(problem)f(b)s(elongs)h -(to)h(the)f(in)m(tegral)i(p)s(oin)m(ts)e(of)g(those)g(damned)f(p)s -(olyhedra)g(and)h(y)m(ou)g(don't)g(kno)m(w)150 4541 y(whic)m(h)j(one.) -41 b(Ma)m(yb)s(e)30 b(y)m(ou)f(just)g(w)m(an)m(t)h(to)g(kno)m(w)f(if)h -(a)f(p)s(olyhedron)f(has)h(in)m(tegral)i(p)s(oin)m(ts)e(dep)s(ending)f -(on)150 4651 y(some)h(parameters,)g(whic)m(h)f(is)h(the)f -(lexicographic)i(minim)m(um,)f(maxim)m(um,)g(the)f(third)g(on)g(the)h -(basis)f(of)150 4760 y(the)j(left)g(etc.)41 b(Probably)30 -b(y)m(ou)h(ha)m(v)m(e)h(y)m(our)e(o)m(wn)g(reasons)h(to)g(use)f(CLo)s -(oG.)275 4902 y(Let)44 b(us)g(illustrate)h(a)g(basic)f(use)g(of)h(CLo)s -(oG.)f(Supp)s(ose)f(w)m(e)h(ha)m(v)m(e)i(a)f(set)f(of)h(a\016ne)f -(constrain)m(ts)150 5011 y(that)39 b(describ)s(es)e(a)h(part)g(of)g(a)h -(whatev)m(er-dimensional)g(space,)i(called)e(a)g Fh(domain)p -Fo(,)g(and)f(w)m(e)g(w)m(an)m(t)h(to)150 5121 y(scan)c(it.)54 -b(Let)35 b(us)f(consider)g(for)h(instance)g(the)g(follo)m(wing)h(set)f -(of)g(constrain)m(ts)h(where)e(`)p Fm(i)p Fo(')h(and)f(`)p -Fm(j)p Fo(')h(are)150 5230 y(the)g(unkno)m(wn)e(\(the)i(t)m(w)m(o)h -(dimensions)e(of)h(the)g(space\))g(and)g(`)p Fm(m)p Fo(')f(and)g(`)p -Fm(n)p Fo(')h(are)g(the)g(parameters)g(\(some)150 5340 -y(sym)m(b)s(olic)c(constan)m(ts\):)p eop end -%%Page: 2 6 -TeXDict begin 2 5 bop 150 -116 a Fo(2)1589 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)390 -299 y Fm(2<=i<=n)390 408 y(2<=j<=m)390 518 y(j<=n+2-i)275 -664 y Fo(Let)c(us)f(also)i(consider)f(that)h(w)m(e)f(ha)m(v)m(e)i(a)e -(partial)h(kno)m(wledge)g(of)f(the)g(parameter)h(v)-5 -b(alues,)27 b(called)h(the)150 773 y Fh(con)m(text)p -Fo(,)33 b(expressed)d(as)g(a\016ne)h(constrain)m(ts)g(as)g(w)m(ell,)g -(for)f(instance:)390 924 y Fm(m>=2)390 1034 y(n>=2)275 -1179 y Fo(Note)j(that)f(using)g(parameters)g(is)g(optional,)i(if)d(y)m -(ou)i(are)f(not)g(comfortable)h(with)f(parameter)g(ma-)150 -1289 y(nipulation,)37 b(just)e(replace)h(them)g(with)f(an)m(y)g(scalar) -i(v)-5 b(alue)36 b(that)g(\014ts)f Fm(m>=2)f Fo(and)h -Fm(n>=2)p Fo(.)55 b(A)35 b(graphical)150 1398 y(represen)m(tation)e(of) -e(this)h(part)f(of)h(the)f(2-dimensional)i(space,)f(where)f(the)h(in)m -(tegral)h(p)s(oin)m(ts)e(are)h(repre-)150 1508 y(sen)m(ted)f(using)f -(hea)m(vy)h(dots)f(w)m(ould)g(b)s(e)g(for)g(instance:)1241 -2667 y @beginspecial 0 @llx 0 @lly 445 @urx 301 @ury -1700 @rwi @setspecial -%%BeginDocument: ./images/basic.eps -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: basic.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Thu Nov 17 16:54:54 2005 -%%For: bastoul@ulysse.futurs.inria.fr (Cedric Bastoul) -%%BoundingBox: 0 0 445 301 -%%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 301 moveto 0 0 lineto 445 0 lineto 445 301 lineto closepath clip newpath --153.0 333.0 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-Bold /Times-Bold-iso isovec ReEncode -/Times-Roman /Times-Roman-iso isovec ReEncode - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06000 0.06000 sc -% -% Fig objects follow -% -% -% here starts figure with depth 51 -% Polyline -n 4200 1500 m 4200 3900 l 8400 3900 l 6000 1500 l - cp gs col7 0.75 shd ef gr -% Ellipse -7.500 slw - [15 45] 45 sd -1 slc -n 5400 3900 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 4800 3900 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 4200 3300 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 4800 3300 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 4200 2700 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 4200 3900 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 6000 3900 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 6600 3900 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 7200 3900 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 7800 3900 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 7200 3300 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 6600 3300 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 6000 3300 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 5400 3300 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 4800 2700 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 5400 2700 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 6000 2700 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 6600 2700 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 6000 2100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 5400 2100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 4800 2100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 4200 2100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 4200 1500 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 4800 1500 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 5400 1500 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 7800 3300 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 8400 3900 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 7200 2700 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 6600 2100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Ellipse - [15 45] 45 sd -n 6000 1500 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - [] 0 sd -% Polyline -0 slc -gs clippath -9615 5160 m 9615 5040 l 9395 5040 l 9575 5100 l 9395 5160 l cp -eoclip -n 3000 5100 m - 9600 5100 l gs col0 s gr gr - -% arrowhead -15.000 slw -n 9395 5160 m 9575 5100 l 9395 5040 l 9395 5160 l cp gs 0.00 setgray ef gr col0 s -% Polyline -7.500 slw -gs clippath -3060 885 m 2940 885 l 2940 1105 l 3000 925 l 3060 1105 l cp -eoclip -n 3000 5100 m - 3000 900 l gs col0 s gr gr - -% arrowhead -15.000 slw -n 3060 1105 m 3000 925 l 2940 1105 l 3060 1105 l cp gs 0.00 setgray ef gr col0 s -% Polyline -7.500 slw -n 3000 4500 m - 2925 4500 l gs 0.00 setgray ef gr gs col0 s gr -% Polyline -n 3000 3900 m - 2925 3900 l gs 0.00 setgray ef gr gs col0 s gr -% Polyline -n 3000 3300 m - 2925 3300 l gs 0.00 setgray ef gr gs col0 s gr -% Polyline -n 3600 5100 m - 3600 5175 l gs 0.00 setgray ef gr gs col0 s gr -% Polyline -n 4200 5100 m - 4200 5175 l gs 0.00 setgray ef gr gs col0 s gr -% Polyline -n 5400 5100 m - 5400 5175 l gs 0.00 setgray ef gr gs col0 s gr -% Polyline -n 4800 5100 m - 4800 5175 l gs 0.00 setgray ef gr gs col0 s gr -% Polyline -n 6000 5100 m - 6000 5175 l gs 0.00 setgray ef gr gs col0 s gr -% Polyline -n 6600 5100 m - 6600 5175 l gs 0.00 setgray ef gr gs col0 s gr -% Polyline -n 3000 2700 m - 2925 2700 l gs 0.00 setgray ef gr gs col0 s gr -% Polyline -n 3000 1500 m - 2925 1500 l gs 0.00 setgray ef gr gs col0 s gr -% Polyline -n 3000 2100 m - 2925 2100 l gs 0.00 setgray ef gr gs col0 s gr -% Polyline - [15 45] 45 sd -n 3000 1500 m - 9000 1500 l gs col0 s gr [] 0 sd -% Polyline - [15 45] 45 sd -n 8400 5100 m - 8400 900 l gs col0 s gr [] 0 sd -% Polyline -n 7200 5100 m - 7200 5175 l gs 0.00 setgray ef gr gs col0 s gr -% Polyline -n 7800 5100 m - 7800 5175 l gs 0.00 setgray ef gr gs col0 s gr -% Polyline -n 8400 5100 m - 8400 5175 l gs 0.00 setgray ef gr gs col0 s gr -% Polyline - [15 45] 45 sd -n 3000 3900 m - 9000 3900 l gs col0 s gr [] 0 sd -% Polyline - [15 45] 45 sd -n 5400 900 m - 9600 5100 l gs col0 s gr [] 0 sd -% Polyline - [15 45] 45 sd -n 4200 5100 m - 4200 900 l gs col0 s gr [] 0 sd -/Times-Bold-iso ff 390.00 scf sf -2625 4650 m -gs 1 -1 sc (1) col0 sh gr -/Times-Bold-iso ff 390.00 scf sf -2625 4050 m -gs 1 -1 sc (2) col0 sh gr -/Times-Bold-iso ff 390.00 scf sf -3525 5550 m -gs 1 -1 sc (1) col0 sh gr -/Times-Bold-iso ff 390.00 scf sf -2700 1050 m -gs 1 -1 sc (j) col0 sh gr -/Times-Roman-iso ff 390.00 scf sf -8025 825 m -gs 1 -1 sc (i<=n) col0 sh gr -/Times-Bold-iso ff 390.00 scf sf -4125 5550 m -gs 1 -1 sc (2) col0 sh gr -/Times-Bold-iso ff 390.00 scf sf -8325 5550 m -gs 1 -1 sc (n) col0 sh gr -/Times-Bold-iso ff 390.00 scf sf -2550 1575 m -gs 1 -1 sc (m) col0 sh gr -/Times-Roman-iso ff 390.00 scf sf -9075 3975 m -gs 1 -1 sc (j>=2) col0 sh gr -/Times-Roman-iso ff 390.00 scf sf -9075 1575 m -gs 1 -1 sc (j<=m) col0 sh gr -/Times-Bold-iso ff 390.00 scf sf -9450 5475 m -gs 1 -1 sc (i) col0 sh gr -/Times-Roman-iso ff 390.00 scf sf -3825 825 m -gs 1 -1 sc (i>=2) col0 sh gr -/Times-Roman-iso ff 390.00 scf sf -4875 825 m -gs 1 -1 sc (j<=n+2-i) col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage - -%%EndDocument - @endspecial 275 2950 a(The)i(a\016ne)h(constrain)m(ts)h(of)f(b)s(oth)g -(the)g(domain)g(and)f(the)h(con)m(text)i(are)e(what)g(w)m(e)h(will)f -(pro)m(vide)g(to)150 3060 y(CLo)s(oG)c(as)h(input)e(\(in)h(a)h -(particular)f(shap)s(e)g(that)g(will)h(b)s(e)e(describ)s(ed)g(later\).) -42 b(The)29 b(output)f(of)i(CLo)s(oG)150 3170 y(is)g(a)h(pseudo-co)s -(de)f(to)h(scan)g(the)g(in)m(tegral)h(p)s(oin)m(ts)e(of)g(the)h(input)e -(domain)i(according)g(to)g(the)g(con)m(text:)390 3321 -y Fm(for)47 b(\(i=2;i<=n;i++\))d({)485 3430 y(for)j -(\(j=2;j<=min\(m,-i+n+2\);j++\))41 b({)581 3540 y(S1\(i,j\))46 -b(;)485 3649 y(})390 3759 y(})275 3904 y Fo(If)34 b(y)m(ou)h(felt)g -(suc)m(h)g(a)g(basic)g(example)h(is)f(y)m(et)g(in)m(teresting,)j(there) -d(is)g(a)g(go)s(o)s(d)g(c)m(hance)g(that)h(CLo)s(oG)150 -4014 y(is)g(appropriate)g(for)g(y)m(ou.)58 b(CLo)s(oG)36 -b(can)g(do)g(m)m(uc)m(h)g(more:)52 b(scanning)36 b(sev)m(eral)h(p)s -(olyhedra)e(or)h(unions)150 4124 y(of)h(p)s(olyhedra)e(at)i(the)g(same) -g(time,)i(applying)d(general)i(a\016ne)e(transformations)h(to)g(the)g -(p)s(olyhedra,)150 4233 y(generate)32 b(compilable)f(co)s(de)g(etc.)42 -b(W)-8 b(elcome)33 b(to)e(the)f(CLo)s(oG's)h(user's)f(guide)g(!)150 -4532 y Fn(1.2)68 b(De\014ning)45 b(a)g(Scanning)g(Order:)67 -b(Scattering)46 b(F)-11 b(unctions)275 4792 y Fo(In)30 -b(CLo)s(oG,)h(domains)f(only)h(de\014ne)f(the)h(set)g(of)g(in)m(tegral) -i(p)s(oin)m(ts)e(to)g(scan)g(and)f(their)h(co)s(ordinates.)150 -4902 y(In)g(particular,)i(CLo)s(oG)f(is)g(free)g(to)g(c)m(ho)s(ose)h -(the)f(scanning)g(order)f(for)h(generating)h(the)f(most)g(e\016cien)m -(t)150 5011 y(co)s(de.)44 b(This)31 b(means,)g(for)g -(optimizing/parallelizing)k(compiler)d(p)s(eople,)g(that)g(CLo)s(oG)g -(do)s(esn't)f(mak)m(e)150 5121 y(an)m(y)f(sp)s(eculation)g(on)f(dep)s -(endences)g(on)g(and)g(b)s(et)m(w)m(een)i(statemen)m(ts)g(\(b)m(y)f -(the)f(w)m(a)m(y)-8 b(,)32 b(it's)e(not)g(its)g(job)f(!\).)150 -5230 y(F)-8 b(or)29 b(instance,)g(if)f(an)g(user)f(giv)m(e)i(to)g(CLo)s -(oG)f(only)g(t)m(w)m(o)h(domains)f Fm(S1:1<=i<=n)p Fo(,)d -Fm(S2:1<=i<=n)g Fo(and)j(the)150 5340 y(con)m(text)k -Fm(n>=1)p Fo(,)e(the)g(follo)m(wing)i(pseudo-co)s(des)e(are)h -(considered)f(to)h(b)s(e)f(equiv)-5 b(alen)m(t:)p eop -end -%%Page: 3 7 -TeXDict begin 3 6 bop 150 -116 a Fo(Chapter)30 b(1:)41 -b(In)m(tro)s(duction)2592 b(3)390 299 y Fm(/*)47 b(A)h(convenient)d -(target)h(pseudo-code.)e(*/)390 408 y(for)j(\(i=1;i<=N;i++\))d({)438 -518 y(S1\(i\))i(;)390 628 y(})390 737 y(for)h(\(i=1;i<=N;i++\))d({)438 -847 y(S2\(i\))i(;)390 956 y(})390 1111 y(/*)h(Another)f(convenient)f -(target)h(pseudo-code.)f(*/)390 1221 y(for)i(\(i=1;i<=N;i++\))d({)438 -1330 y(S1\(i\))i(;)438 1440 y(S2\(i\))g(;)390 1549 y(})275 -1690 y Fo(The)31 b(default)i(b)s(eha)m(viour)f(of)h(CLo)s(oG)f(is)h(to) -g(generate)h(the)f(second)f(one,)i(since)e(it)h(is)g(optimized)g(in)150 -1799 y(con)m(trol.)40 b(It)22 b(is)h(righ)m(t)g(if)f(there)h(are)g(no)f -(data)h(dep)s(endences)f(b)s(et)m(w)m(een)h Fm(S1)f Fo(and)g -Fm(S2)p Fo(,)h(but)f(wrong)g(otherwise.)275 1945 y(Th)m(us)32 -b(it)j(is)f(often)g(useful)f(to)i(force)f(scanning)g(to)h(resp)s(ect)f -(a)g(giv)m(en)h(order.)51 b(This)33 b(can)h(b)s(e)g(done)f(in)150 -2054 y(CLo)s(oG)k(b)m(y)g(using)f Fh(scattering)j(functions)p -Fo(.)60 b(Scattering)39 b(is)e(a)g(shortcut)g(for)f(sc)m(heduling,)j -(allo)s(cation,)150 2164 y(c)m(h)m(unking)g(functions)g(and)f(the)i -(lik)m(e)g(w)m(e)g(can)f(\014nd)f(in)h(the)g(restructuring)f -(compilation)j(litterature.)150 2274 y(There)31 b(are)h(a)g(lot)g(of)g -(reasons)f(to)i(scatter)f(the)g(in)m(tegral)h(p)s(oin)m(ts)f(of)f(the)h -(domains)f(\(i.e.)45 b(the)32 b(statemen)m(t)150 2383 -y(instances)38 b(of)g(a)g(program,)i(for)d(compilation)j(p)s(eople\),)g -(parallelization)h(or)c(optimization)j(are)e(go)s(o)s(d)150 -2493 y(examples.)j(F)-8 b(or)29 b(instance,)g(if)f(the)h(user)e(w)m(an) -m(ts)i(for)f(an)m(y)h(reason)f(to)h(set)g(some)f(precedence)h -(constrain)m(ts)150 2602 y(b)s(et)m(w)m(een)35 b(the)g(statemen)m(ts)h -(of)f(our)f(example)h(ab)s(o)m(v)m(e)g(in)g(order)f(to)h(force)g(the)g -(generation)g(of)g(the)g(\014rst)150 2712 y(co)s(de,)c(he)f(can)h(do)f -(it)h(easily)g(b)m(y)g(setting)g(\(for)g(example\))g(the)g(follo)m -(wing)g(sc)m(heduling)g(functions:)1718 2984 y Fg(\022)1761 -2998 y Ff(S)s Fe(1)1842 2984 y Fo(\()p Fg(i)p Fo(\))c(=)d(\(1\))1713 -3185 y Fg(\022)1756 3199 y Ff(S)s Fe(2)1837 3185 y Fo(\()p -Fg(j)5 b Fo(\))26 b(=)f(\(2\))275 3405 y(This)36 b(scattering)i(means)f -(that)g(eac)m(h)i(in)m(tegral)f(p)s(oin)m(t)f(of)g(the)g(domain)g -Fm(S1)f Fo(is)h(scanned)g(at)g(logical)150 3515 y(date)31 -b Fm(1)f Fo(while)g(eac)m(h)h(in)m(tegral)h(p)s(oin)m(t)f(of)f(the)g -(domain)g Fm(S2)g Fo(is)g(scanned)g(at)h(logical)i(date)e -Fm(2)p Fo(.)40 b(As)30 b(a)h(result,)150 3624 y(the)41 -b(whole)g(domain)f Fm(S1)g Fo(is)h(scanned)f(b)s(efore)g(domain)h -Fm(S2)f Fo(and)g(the)g(\014rst)g(co)s(de)h(in)f(our)h(example)g(is)150 -3734 y(generated.)275 3879 y(The)j(user)g(can)h(set)g(ev)m(ery)h(kind)e -(of)h(a\016ne)f(scanning)h(order)f(thanks)h(to)g(the)g(scattering)i -(func-)150 3989 y(tions.)87 b(Eac)m(h)46 b(domain)g(has)f(its)h(o)m(wn) -g(scattering)h(function)f(and)f(eac)m(h)i(scattering)g(function)e(ma)m -(y)150 4099 y(b)s(e)i(m)m(ulti-dimensional.)95 b(A)48 -b(m)m(ulti-dimen)m(tional)i(logical)g(date)f(ma)m(y)g(b)s(e)e(seen)h -(as)g(classical)i(date)150 4208 y(\(y)m(ear,mon)m(th,da)m(y)-8 -b(,hour,min)m(ute,etc.\))42 b(where)23 b(the)f(\014rst)g(dimensions)g -(are)h(the)g(most)g(signi\014can)m(t.)39 b(Eac)m(h)150 -4318 y(scattering)31 b(dimension)e(ma)m(y)h(dep)s(end)d(linearly)j(on)g -(the)f(original)i(dimensions)e(\(e.g.,)i Fm(i)p Fo(\),)f(the)g(parame-) -150 4427 y(ters)h(\(e.g.,)h Fm(n)p Fo(\))e(ans)g(scalars)h(\(e.g.,)i -Fm(2)p Fo(\).)275 4573 y(A)c(v)m(ery)g(useful)f(example)i(of)f(m)m -(ulti-dimensional)h(scattering)g(functions)f(is,)h(for)e(compilation)j -(p)s(eo-)150 4682 y(ple,)i(the)g(sc)m(heduling)g(of)f(the)h(original)h -(program.)46 b(The)32 b(basic)h(data)g(to)h(use)e(for)g(co)s(de)h -(generation)h(are)150 4792 y(statemen)m(t)27 b(iteration)h(domains.)38 -b(As)26 b(w)m(e)g(sa)m(w,)h(these)f(data)g(are)g(not)g(su\016cien)m(t)g -(to)g(rebuild)f(the)h(original)150 4902 y(program)36 -b(\(what)g(is)g(the)h(ordering)e(b)s(et)m(w)m(een)i(instances)g(of)f -(di\013eren)m(t)h(statemen)m(ts)g(?\).)58 b(The)36 b(missing)150 -5011 y(data)29 b(can)f(b)s(e)f(put)h(in)f(the)i(scattering)g(functions) -f(as)g(the)g(original)h(sc)m(heduling.)40 b(The)28 b(metho)s(d)f(to)i -(com-)150 5121 y(pute)j(it)h(is)g(quite)f(simple)h(\(see)g([F)-8 -b(ea92],)36 b(page)e(39\).)48 b(The)32 b(idea)h(is)f(to)h(build)f(an)g -(abstract)h(syn)m(tax)g(tree)150 5230 y(of)28 b(the)h(program)f(and)g -(to)h(read)f(the)h(sc)m(heduling)f(for)g(eac)m(h)i(statemen)m(t.)41 -b(F)-8 b(or)29 b(instance,)h(let)f(us)f(consider)150 -5340 y(the)j(follo)m(wing)g(implemen)m(tation)h(of)f(a)g(Cholesky)f -(factorization:)p eop end -%%Page: 4 8 -TeXDict begin 4 7 bop 150 -116 a Fo(4)1589 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)390 -299 y Fm(/*)47 b(A)h(Cholesky)d(factorization)f(kernel.)i(*/)390 -408 y(for)h(\(i=1;i<=N;i++\))d({)485 518 y(for)j(\(j=1;j<=i-1;j++\))d -({)581 628 y(a[i][i])i(-=)h(a[i][j])f(;)524 b(/*)48 b(S1)f(*/)485 -737 y(})485 847 y(a[i][i])f(=)i(sqrt\(a[i][i]\))c(;)381 -b(/*)48 b(S2)f(*/)485 956 y(for)g(\(j=i+1;j<=N;j++\))d({)581 -1066 y(for)j(\(k=1;k<=i-1;k++\))c({)676 1176 y(a[j][i])j(-=)h -(a[j][k]*a[i][k])d(;)j(/*)h(S3)f(*/)581 1285 y(})581 -1395 y(a[j][i])f(/=)h(a[i][i])f(;)524 b(/*)48 b(S4)f(*/)581 -1504 y(})485 1614 y(})390 1724 y(})275 1853 y Fo(The)29 -b(corresp)s(onding)f(abstract)j(syn)m(tax)f(tree)h(is)e(giv)m(en)i(in)e -(the)h(follo)m(wing)h(\014gure.)40 b(It)30 b(directly)h(giv)m(es)150 -1962 y(the)g(scattering)h(functions)d(\(sc)m(hedules\))j(for)e(all)h -(the)g(statemen)m(ts)h(of)e(the)h(program.)1241 3258 -y @beginspecial 0 @llx 0 @lly 388 @urx 312 @ury 1700 -@rwi @setspecial -%%BeginDocument: ./images/tree.eps -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: tree.eps -%%Creator: fig2dev Version 3.2 Patchlevel 3c -%%CreationDate: Fri Sep 6 10:09:40 2002 -%%For: bastoul@whisky (Cedric Bastoul) -%%BoundingBox: 0 0 388 312 -%%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 312 moveto 0 0 lineto 388 0 lineto 388 312 lineto closepath clip newpath --165.0 369.0 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 - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% -% Fig objects follow -% -7.500 slw -% Ellipse -n 5400 1200 237 237 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 3000 3600 237 237 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 7800 3600 237 237 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 6600 4800 237 237 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 5400 2325 237 237 0 360 DrawEllipse gs col0 s gr - -% Polyline -gs clippath -5355 2115 m 5445 2115 l 5445 1888 l 5400 2068 l 5355 1888 l cp -eoclip -n 5400 1425 m - 5400 2100 l gs col0 s gr gr - -% arrowhead -15.000 slw -n 5355 1888 m 5400 2068 l 5445 1888 l 5355 1888 l cp gs 0.00 setgray ef gr col0 s -% Polyline -7.500 slw -gs clippath -5355 3390 m 5445 3390 l 5445 3163 l 5400 3343 l 5355 3163 l cp -eoclip -n 5400 2550 m - 5400 3375 l gs col0 s gr gr - -% arrowhead -15.000 slw -n 5355 3163 m 5400 3343 l 5445 3163 l 5355 3163 l cp gs 0.00 setgray ef gr col0 s -% Polyline -7.500 slw -gs clippath -2955 4590 m 3045 4590 l 3045 4363 l 3000 4543 l 2955 4363 l cp -eoclip -n 3000 3825 m - 3000 4575 l gs col0 s gr gr - -% arrowhead -15.000 slw -n 2955 4363 m 3000 4543 l 3045 4363 l 2955 4363 l cp gs 0.00 setgray ef gr col0 s -% Polyline -7.500 slw -gs clippath -6563 4544 m 6611 4621 l 6803 4500 l 6627 4558 l 6755 4424 l cp -eoclip -n 7800 3825 m - 6600 4575 l gs col0 s gr gr - -% arrowhead -15.000 slw -n 6755 4424 m 6627 4558 l 6803 4500 l 6755 4424 l cp gs 0.00 setgray ef gr col0 s -% Polyline -7.500 slw -gs clippath -8988 4621 m 9036 4544 l 8844 4424 l 8973 4558 l 8796 4500 l cp -eoclip -n 7800 3825 m - 9000 4575 l gs col0 s gr gr - -% arrowhead -15.000 slw -n 8796 4500 m 8973 4558 l 8844 4424 l 8796 4500 l cp gs 0.00 setgray ef gr col0 s -% Polyline -7.500 slw -gs clippath -6555 5790 m 6645 5790 l 6645 5563 l 6600 5743 l 6555 5563 l cp -eoclip -n 6600 5025 m - 6600 5775 l gs col0 s gr gr - -% arrowhead -15.000 slw -n 6555 5563 m 6600 5743 l 6645 5563 l 6555 5563 l cp gs 0.00 setgray ef gr col0 s -% Polyline -7.500 slw -gs clippath -7802 3411 m 7831 3326 l 7615 3253 l 7772 3354 l 7587 3338 l cp -eoclip -n 5400 2550 m - 7803 3364 l gs col0 s gr gr - -% arrowhead -15.000 slw -n 7587 3338 m 7772 3354 l 7615 3253 l 7587 3338 l cp gs 0.00 setgray ef gr col0 s -% Polyline -7.500 slw -gs clippath -2971 3337 m 3000 3422 l 3215 3348 l 3031 3364 l 3186 3262 l cp -eoclip -n 5400 2550 m - 3000 3375 l gs col0 s gr gr - -% arrowhead -15.000 slw -n 3186 3262 m 3031 3364 l 3215 3348 l 3186 3262 l cp gs 0.00 setgray ef gr col0 s -/Times-Roman ff 330.00 scf sf -3075 4200 m -gs 1 -1 sc (0) col0 sh gr -/Times-Roman ff 330.00 scf sf -6675 5400 m -gs 1 -1 sc (0) col0 sh gr -/Times-Roman ff 330.00 scf sf -5475 3000 m -gs 1 -1 sc (1) col0 sh gr -/Times-Roman ff 330.00 scf sf -3825 3000 m -gs 1 -1 sc (0) col0 sh gr -/Times-Roman ff 330.00 scf sf -6900 3000 m -gs 1 -1 sc (2) col0 sh gr -/Times-Roman ff 330.00 scf sf -6975 4200 m -gs 1 -1 sc (0) col0 sh gr -/Times-Roman ff 330.00 scf sf -8475 4200 m -gs 1 -1 sc (1) col0 sh gr -/Times-Roman ff 330.00 scf sf -5475 1800 m -gs 1 -1 sc (0) col0 sh gr -/Times-Roman ff 330.00 scf sf -2850 4950 m -gs 1 -1 sc (S1) col0 sh gr -/Times-Roman ff 330.00 scf sf -5250 3750 m -gs 1 -1 sc (S2) col0 sh gr -/Times-Roman ff 330.00 scf sf -6450 6150 m -gs 1 -1 sc (S3) col0 sh gr -/Times-Roman ff 330.00 scf sf -8850 4950 m -gs 1 -1 sc (S4) col0 sh gr -/Times-Roman ff 330.00 scf sf -5355 2430 m -gs 1 -1 sc (i) col0 sh gr -/Times-Roman ff 330.00 scf sf -2963 3667 m -gs 1 -1 sc (j) col0 sh gr -/Times-Roman ff 330.00 scf sf -7763 3675 m -gs 1 -1 sc (j) col0 sh gr -/Times-Roman ff 330.00 scf sf -6533 4890 m -gs 1 -1 sc (k) col0 sh gr -$F2psEnd -rs - -%%EndDocument - @endspecial 1251 3514 a Fd(8)1251 3589 y(>)1251 3614 -y(>)1251 3639 y(<)1251 3788 y(>)1251 3813 y(>)1251 3838 -y(:)1339 3574 y Fg(\022)1382 3588 y Ff(S)s Fe(1)1463 -3574 y Fo(\()p Fg(i;)15 b(j)5 b Fo(\))1646 3541 y Ff(T)1877 -3574 y Fo(=)25 b(\(0)p Fg(;)15 b(i;)g Fo(0)p Fg(;)g(j;)g -Fo(0\))2406 3541 y Ff(T)1339 3684 y Fg(\022)1382 3698 -y Ff(S)s Fe(2)1463 3684 y Fo(\()p Fg(i)p Fo(\))313 b(=)25 -b(\(0)p Fg(;)15 b(i;)g Fo(1\))2244 3651 y Ff(T)1339 3793 -y Fg(\022)1382 3807 y Ff(S)s Fe(3)1463 3793 y Fo(\()p -Fg(i;)g(j;)g(k)s Fo(\))1731 3760 y Ff(T)1877 3793 y Fo(=)25 -b(\(0)p Fg(;)15 b(i;)g Fo(2)p Fg(;)g(j;)g Fo(0)p Fg(;)g(k)s(;)g -Fo(0\))2581 3760 y Ff(T)1339 3903 y Fg(\022)1382 3917 -y Ff(S)s Fe(4)1463 3903 y Fo(\()p Fg(i;)g(j)5 b Fo(\))1646 -3870 y Ff(T)1877 3903 y Fo(=)25 b(\(0)p Fg(;)15 b(i;)g -Fo(2)p Fg(;)g(j;)g Fo(1\))2406 3870 y Ff(T)275 4081 y -Fo(These)37 b(sc)m(hedules)g(dep)s(end)f(on)h(the)g(iterators)i(and)e -(giv)m(e)i(for)e(eac)m(h)h(instance)g(of)g(eac)m(h)g(statemen)m(t)150 -4191 y(a)d(unique)e(execution)i(date.)53 b(Using)34 b(suc)m(h)g -(scattering)h(functions)f(allo)m(w)i(CLo)s(oG)e(to)h(re-generate)h(the) -150 4300 y(input)29 b(co)s(de.)p eop end -%%Page: 5 9 -TeXDict begin 5 8 bop 150 -116 a Fo(Chapter)30 b(2:)41 -b(Using)30 b(the)h(CLo)s(oG)g(Soft)m(w)m(are)2020 b(5)150 -299 y Fk(2)80 b(Using)53 b(the)g(CLo)t(oG)g(Soft)l(w)l(are)150 -667 y Fn(2.1)68 b(A)44 b(First)i(Example)275 913 y Fo(CLo)s(oG)34 -b(tak)m(es)i(as)e(input)f(a)i(\014le)f(that)h(m)m(ust)f(b)s(e)g -(written)g(accordingly)h(to)g(a)g(grammar)f(describ)s(ed)150 -1023 y(in)f(depth)f(in)g(a)i(further)d(section)j(\(see)g(Section)g(2.2) -g([W)-8 b(riting)34 b(The)e(Input)g(File],)j(page)f(6\).)49 -b(Moreo)m(v)m(er)150 1132 y(it)33 b(supp)s(orts)d(man)m(y)i(options)g -(to)h(tune)e(the)i(target)g(co)s(de)f(presen)m(tation)h(or)f(qualit)m -(y)i(as)e(discussed)f(in)h(a)150 1242 y(dedicated)22 -b(section)h(\(see)g(Section)g(2.3)g([Calling)f(CLo)s(oG],)h(page)f -(10\).)39 b(Ho)m(w)m(ev)m(er,)26 b(a)c(basic)g(use)g(of)g(CLo)s(oG)150 -1351 y(is)30 b(not)g(v)m(ery)g(complex)h(and)e(w)m(e)i(presen)m(t)e(in) -h(this)g(section)h(ho)m(w)f(to)g(generate)i(the)e(co)s(de)g(corresp)s -(onding)150 1461 y(to)h(a)g(basic)g(example)g(discussed)e(earlier)i -(\(see)h(Section)f(1.1)g([Basics],)i(page)e(1\).)275 -1598 y(The)26 b(problem)h(is)h(to)g(\014nd)e(the)h(co)s(de)h(that)g -(scans)f(a)h(2-dimensional)g(p)s(olyhedron)e(where)h(`)p -Fm(i)p Fo(')h(and)f(`)p Fm(j)p Fo(')150 1707 y(are)j(the)f(unkno)m(wn)f -(\(the)i(t)m(w)m(o)h(dimensions)d(of)i(the)g(space\))g(and)f(`)p -Fm(m)p Fo(')g(and)g(`)p Fm(n)p Fo(')g(are)h(the)g(parameters)f(\(the) -150 1817 y(sym)m(b)s(olic)i(constan)m(ts\),)h(de\014ned)d(b)m(y)h(the)h -(follo)m(wing)h(set)f(of)f(constrain)m(ts:)390 1954 y -Fm(2<=i<=n)390 2063 y(2<=j<=m)390 2173 y(j<=n+2-i)150 -2305 y Fo(W)-8 b(e)44 b(also)g(consider)f(a)g(partial)h(kno)m(wledge)g -(of)f(the)g(parameter)h(v)-5 b(alues,)46 b(expressed)d(thanks)f(to)i -(the)150 2414 y(follo)m(wing)32 b(a\016ne)e(constrain)m(ts:)390 -2551 y Fm(m>=2)390 2661 y(n>=2)275 2792 y Fo(An)40 b(input)h(\014le)g -(that)h(corresp)s(onds)e(to)i(this)f(problem,)j(and)c(asks)i(for)f(a)g -(generated)i(co)s(de)e(in)g(C,)150 2902 y(ma)m(y)c(b)s(e)e(the)h(follo) -m(wing.)59 b(Note)37 b(that)g(w)m(e)f(do)g(not)g(describ)s(e)f(here)h -(precisely)h(the)f(structure)f(and)h(the)150 3011 y(comp)s(onen)m(ts)22 -b(of)h(this)f(\014le)g(\(see)h(Section)g(2.2)g([W)-8 -b(riting)24 b(The)e(Input)f(File],)k(page)e(6)g(for)f(suc)m(h)f -(information,)150 3121 y(if)30 b(y)m(ou)h(feel)g(it)g(necessary\):)390 -3258 y Fm(#)47 b(----------------------)42 b(CONTEXT)k -(----------------------)390 3367 y(c)h(#)h(language)d(is)j(C)390 -3587 y(#)f(Context)f(\(constraints)f(on)i(two)g(parameters\))390 -3696 y(2)g(4)907 b(#)47 b(2)h(lines)e(and)h(4)h(columns)390 -3806 y(#)f(eq/in)g(m)95 b(n)g(1)429 b(eq/in:)47 b(1)g(for)g(inequality) -e(>=0,)i(0)g(for)g(equality)e(=0)581 3915 y(1)143 b(1)95 -b(0)47 b(-2)334 b(#)47 b(1*m)g(+)h(0*n)f(-2*1)f(>=)i(0,)f(i.e.)f(m>=2) -581 4025 y(1)143 b(0)95 b(1)47 b(-2)334 b(#)47 b(0*m)g(+)h(1*n)f(-2*1)f -(>=)i(0,)f(i.e.)f(n>=2)390 4244 y(1)h(#)h(We)f(want)g(to)g(set)g -(manually)e(the)i(parameter)f(names)390 4354 y(m)h(n)907 -b(#)47 b(parameter)f(names)390 4573 y(#)h(---------------------)42 -b(STATEMENTS)j(--------------------)390 4682 y(1)i(#)h(Number)e(of)h -(statements)390 4902 y(1)g(#)h(First)e(statement:)f(one)i(domain)390 -5011 y(#)g(First)g(domain)390 5121 y(5)g(6)907 b(#)47 -b(5)h(lines)e(and)h(6)h(columns)390 5230 y(#)f(eq/in)g(i)95 -b(j)g(m)g(n)h(1)581 5340 y(1)143 b(1)95 b(0)g(0)g(0)48 -b(-2)f(#)g(i)h(>=)f(2)p eop end -%%Page: 6 10 -TeXDict begin 6 9 bop 150 -116 a Fo(6)1589 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)581 -299 y Fm(1)95 b(-1)g(0)g(0)g(1)h(0)47 b(#)g(i)h(<=)f(n)581 -408 y(1)143 b(0)95 b(1)g(0)g(0)48 b(-2)f(#)g(j)h(>=)f(2)581 -518 y(1)143 b(0)47 b(-1)95 b(1)g(0)h(0)47 b(#)g(j)h(<=)f(m)581 -628 y(1)95 b(-1)47 b(-1)95 b(0)g(1)h(2)47 b(#)g(n+2-i>=j)390 -737 y(0)95 b(0)g(0)716 b(#)47 b(for)g(future)f(options)390 -956 y(1)h(#)h(We)f(want)g(to)g(set)g(manually)e(the)i(iterator)f(names) -390 1066 y(i)h(j)907 b(#)47 b(iterator)f(names)390 1285 -y(#)h(---------------------)42 b(SCATTERING)j(--------------------)390 -1395 y(0)i(#)h(No)f(scattering)e(functions)275 1526 y -Fo(This)28 b(\014le)h(ma)m(y)h(b)s(e)e(called)j(`)p Fm(basic.cloog)p -Fo(')26 b(\(this)k(example)f(is)h(pro)m(vided)e(in)h(the)h(CLo)s(oG)f -(distribu-)150 1636 y(tion)34 b(as)g Fm(test/manual_basic.cloog)p -Fo(\))28 b(and)33 b(w)m(e)h(can)g(ask)g(CLo)s(oG)g(to)g(pro)s(cess)g -(it)g(and)f(to)h(generate)150 1745 y(the)i(co)s(de)g(b)m(y)f(a)h -(simple)g(calling)h(to)f(CLo)s(oG)g(with)f(this)h(\014le)g(as)f(input:) -51 b(`)p Fm(cloog)29 b(basic.cloog)p Fo('.)54 b(By)150 -1855 y(default,)31 b(CLo)s(oG)f(will)h(prin)m(t)f(the)h(generated)g(co) -s(de)g(in)f(the)g(standard)g(output:)390 1986 y Fm(/*)47 -b(Generated)e(by)j(CLooG)e(v0.14.0)g(in)h(0.00s.)f(*/)390 -2096 y(for)h(\(i=2;i<=n;i++\))d({)485 2206 y(for)j -(\(j=2;j<=min\(m,-i+n+2\);j++\))41 b({)581 2315 y(S1\(i,j\))46 -b(;)485 2425 y(})390 2534 y(})150 2776 y Fn(2.2)68 b(W)-11 -b(riting)46 b(The)e(Input)g(File)275 3017 y Fo(The)26 -b(input)g(text)h(\014le)g(con)m(tains)h(a)f(problem)f(description,)i -(i.e.)41 b(the)27 b(con)m(text,)i(the)e(domains)g(and)f(the)150 -3126 y(scattering)31 b(functions.)40 b(Because)31 b(CLo)s(oG)e(is)h(v)m -(ery)g('compilable)g(co)s(de)g(generation)h(orien)m(ted',)g(w)m(e)f -(can)150 3236 y(asso)s(ciate)24 b(some)f(additional)h(informations)e -(to)h(eac)m(h)h(domain.)38 b(W)-8 b(e)23 b(call)h(this)e(asso)s -(ciation)j(a)d Fi(statement)p Fo(.)150 3346 y(The)30 -b(set)i(of)f(all)g(informations)g(is)g(called)h(a)g Fi(pr)-5 -b(o)g(gr)g(am)p Fo(.)45 b(The)30 b(input)g(\014le)h(resp)s(ects)g(the)g -(grammar)g(b)s(elo)m(w)150 3455 y(\(terminals)g(are)g(preceeded)f(b)m -(y)h Fm(")p 1337 3455 28 4 v 39 w(")p Fo(\):)390 3587 -y Fm(File)619 b(::=)47 b(Program)390 3696 y(Program)475 -b(::=)47 b(Context)f(Statements)f(Scattering)390 3806 -y(Context)475 b(::=)47 b(Language)284 b(Domain)428 b(Naming)390 -3915 y(Statements)331 b(::=)47 b(Nb_statements)d(Statement_list)g -(Naming)390 4025 y(Scattering)331 b(::=)47 b(Nb_functions)92 -b(Domain_list)188 b(Naming)390 4134 y(Naming)523 b(::=)47 -b(Option)f(Name_list)390 4244 y(Name_list)379 b(::=)47 -b(_String)142 b(Name_list)283 b(|)48 b(\(void\))390 4354 -y(Statement_list)139 b(::=)47 b(Statement)f(Statement_list)d(|)48 -b(\(void\))390 4463 y(Domain_list)283 b(::=)47 b(_Domain)142 -b(Domain_list)187 b(|)48 b(\(void\))390 4573 y(Statement)379 -b(::=)47 b(Iteration_domain)d(0)j(0)h(0)390 4682 y(Iteration_domain)43 -b(::=)k(Domain_union)390 4792 y(Domain_union)235 b(::=)47 -b(Nb_domains)e(Domain_list)390 4902 y(Option)523 b(::=)47 -b(0)h(|)f(1)390 5011 y(Language)427 b(::=)47 b(c)h(|)f(f)390 -5121 y(Nb_statements)187 b(::=)47 b(_Integer)390 5230 -y(Nb_domains)331 b(::=)47 b(_Integer)390 5340 y(Nb_functions)235 -b(::=)47 b(_Integer)p eop end -%%Page: 7 11 -TeXDict begin 7 10 bop 150 -116 a Fo(Chapter)30 b(2:)41 -b(Using)30 b(the)h(CLo)s(oG)g(Soft)m(w)m(are)2020 b(7)225 -299 y Fl(\017)60 b Fo(`)p Fm(Context)p Fo(')24 b(represen)m(ts)i(the)g -(informations)g(that)h(are)f(shared)f(b)m(y)h(all)h(the)f(statemen)m -(ts.)40 b(It)26 b(consists)330 408 y(on)31 b(the)g(language)h(used)e -(\(whic)m(h)h(can)g(b)s(e)g(`)p Fm(c)p Fo(')g(for)f(C)h(or)g(`)p -Fm(f)p Fo(')g(for)g(F)m(OR)-8 b(TRAN)31 b(90\))h(and)f(the)g(global)330 -518 y(constrain)m(ts)37 b(on)f(parameters.)57 b(These)36 -b(constrain)m(ts)h(are)f(essen)m(tial)i(since)e(they)g(giv)m(e)h(to)g -(CLo)s(oG)330 628 y(the)d(n)m(um)m(b)s(er)f(of)h(parameters.)52 -b(If)33 b(there)h(is)g(no)g(parameter)h(or)f(no)g(constrain)m(ts)g(on)g -(parameters,)330 737 y(just)26 b(giv)m(e)i(a)f(constrain)m(t)g(alw)m(a) -m(ys)h(satis\014ed)f(lik)m(e)h(1)d Fl(\025)g Fo(0.)40 -b(`)p Fm(Naming)p Fo(')26 b(sets)g(the)h(parameter)g(names.)39 -b(If)330 847 y(the)28 b(naming)f(option)h(`)p Fm(Option)p -Fo(')e(is)i(1,)h(parameter)f(names)f(will)h(b)s(e)f(read)g(on)h(the)g -(next)f(line.)40 b(There)330 956 y(m)m(ust)e(b)s(e)f(exactly)j(as)e -(man)m(y)g(names)f(as)i(parameters.)63 b(If)38 b(the)g(naming)f(option) -i(`)p Fm(Option)p Fo(')d(is)i(0,)330 1066 y(parameter)f(names)f(are)h -(automatically)i(generated.)60 b(The)36 b(name)h(of)f(the)h(\014rst)f -(parameter)h(will)330 1176 y(b)s(e)e(`)p Fm(M)p Fo(',)h(and)f(the)g -(name)h(of)f(the)g(\()p Fg(n)24 b Fo(+)f(1\))1766 1143 -y Ff(th)1870 1176 y Fo(parameter)36 b(directly)g(follo)m(ws)g(the)f -(name)h(of)f(the)g Fg(n)3682 1143 y Ff(th)330 1285 y -Fo(parameter)27 b(in)f(ASCI)s(I)f(co)s(de.)40 b(It)27 -b(is)f(the)h(user)f(resp)s(onsibilit)m(y)g(to)i(ensure)e(that)h -(parameter)g(names,)330 1395 y(iterators)32 b(and)d(scattering)j -(dimension)e(names)g(are)h(di\013eren)m(t.)225 1530 y -Fl(\017)60 b Fo(`)p Fm(Statements)p Fo(')49 b(represen)m(ts)i(the)h -(informations)f(on)h(the)f(statemen)m(ts.)106 b(`)p Fm(Nb_statements)p -Fo(')48 b(is)330 1640 y(the)g(n)m(um)m(b)s(er)e(of)i(statemen)m(ts)i -(in)d(the)h(program,)k(i.e.)94 b(the)48 b(n)m(um)m(b)s(er)f(of)h(`)p -Fm(Statement)p Fo(')d(items)330 1749 y(in)61 b(the)g(`)p -Fm(Statement_list)p Fo('.)131 b(`)p Fm(Statement)p Fo(')59 -b(represen)m(ts)i(the)h(informations)f(on)g(a)h(giv)m(en)330 -1859 y(statemen)m(t.)42 b(T)-8 b(o)28 b(eac)m(h)i(statemen)m(t)g(is)e -(asso)s(ciated)i(a)e(domain)g(\(the)h(statemen)m(t)h(iteration)g -(domain:)330 1969 y(`)p Fm(Iteration_domain)p Fo('\))35 -b(and)k(three)g(zero)s(es)h(that)f(represen)m(ts)g(future)g(options.)67 -b(`)p Fm(Naming)p Fo(')38 b(sets)330 2078 y(the)29 b(iterator)h(names.) -40 b(If)28 b(the)h(naming)g(option)g(`)p Fm(Option)p -Fo(')f(is)g(1,)i(the)f(iterator)h(names)f(will)g(b)s(e)f(read)330 -2188 y(on)g(the)h(next)g(line.)40 b(There)28 b(m)m(ust)h(b)s(e)f -(exactly)i(as)f(man)m(y)g(names)f(as)h(nesting)g(lev)m(el)h(in)e(the)h -(deep)s(est)330 2297 y(iteration)h(domain.)40 b(If)28 -b(the)g(naming)h(option)f(`)p Fm(Option)p Fo(')f(is)i(0,)g(iterator)h -(names)e(are)h(automatically)330 2407 y(generated.)42 -b(The)30 b(iterator)h(name)g(of)f(the)h(outermost)g(lo)s(op)f(will)h(b) -s(e)e(`)p Fm(i)p Fo(',)i(and)f(the)g(iterator)i(name)330 -2517 y(of)k(the)h(lo)s(op)f(at)h(lev)m(el)g Fg(n)24 b -Fo(+)g(1)36 b(directly)h(follo)m(ws)g(the)g(iterator)g(name)f(of)g(the) -h(lo)s(op)f(at)h(lev)m(el)h Fg(n)d Fo(in)330 2626 y(ASCI)s(I)29 -b(co)s(de.)225 2762 y Fl(\017)60 b Fo(`)p Fm(Scattering)p -Fo(')34 b(represen)m(ts)i(the)h(informations)g(on)f(scattering)i -(functions.)58 b(`)p Fm(Nb_functions)p Fo(')34 b(is)330 -2871 y(the)23 b(n)m(um)m(b)s(er)f(of)i(functions)e(\(it)j(m)m(ust)e(b)s -(e)f(equal)i(to)g(the)f(n)m(um)m(b)s(er)f(of)i(statemen)m(ts)g(or)g(0)f -(if)g(there)h(is)f(no)330 2981 y(scattering)31 b(function\).)41 -b(The)29 b(function)g(themselv)m(es)i(are)g(represen)m(ted)e(through)g -(`)p Fm(Domain_list)p Fo('.)330 3090 y(`)p Fm(Naming)p -Fo(')h(sets)i(the)g(scattering)h(dimension)d(names.)44 -b(If)31 b(the)h(naming)f(option)h(`)p Fm(Option)p Fo(')e(is)h(1,)i(the) -330 3200 y(scattering)38 b(dimension)d(names)i(will)f(b)s(e)g(read)g -(on)g(the)g(next)h(line.)58 b(There)36 b(m)m(ust)g(b)s(e)g(exactly)i -(as)330 3310 y(man)m(y)24 b(names)g(as)g(scattering)i(dimensions.)38 -b(If)23 b(the)h(naming)g(option)h(`)p Fm(Option)p Fo(')d(is)i(0,)i -(scattering)g(di-)330 3419 y(mension)g(names)f(are)i(automatically)i -(generated.)40 b(The)25 b(name)h(of)g(the)g Fg(n)2844 -3386 y Ff(th)2938 3419 y Fo(scattering)i(dimen)m(tion)330 -3529 y(will)j(b)s(e)e(`)p Fm(cn)p Fo('.)150 3757 y Fc(2.2.1)63 -b(Domain)41 b(Represen)m(tation)275 4003 y Fo(As)35 b(sho)m(wn)f(b)m(y) -h(the)g(grammar,)i(the)e(input)f(\014le)h(describ)s(es)f(the)h(v)-5 -b(arious)35 b(informations)h(thanks)e(to)150 4113 y(c)m(haracters,)43 -b(in)m(tegers)d(and)e(domains.)66 b(Eac)m(h)39 b(domain)g(is)g -(de\014ned)e(b)m(y)i(a)g(set)g(of)g(constrain)m(ts)h(in)f(the)150 -4222 y(P)m(olyLib)31 b(format)g(\(see)g([Wil93],)i(page)e(39\).)42 -b(They)30 b(ha)m(v)m(e)h(the)g(follo)m(wing)h(syn)m(tax:)199 -4359 y(1.)61 b(some)31 b(optional)g(commen)m(t)h(lines)e(b)s(eginning)g -(with)g(`)p Fm(#)p Fo(',)199 4494 y(2.)61 b(the)31 b(ro)m(w)f(and)g -(column)g(n)m(um)m(b)s(ers,)f(p)s(ossibly)h(follo)m(w)m(ed)i(b)m(y)e -(commen)m(ts,)199 4630 y(3.)61 b(the)33 b(constrain)m(t)i(ro)m(ws,)f -(eac)m(h)g(ro)m(w)f(corresp)s(onds)f(to)i(a)f(constrain)m(t)h(the)g -(domain)f(ha)m(v)m(e)h(to)g(satisfy)-8 b(.)330 4739 y(Eac)m(h)24 -b(ro)m(w)g(m)m(ust)f(b)s(e)g(on)h(a)g(single)g(line)g(and)f(is)g(p)s -(ossibly)g(follo)m(w)m(ed)i(b)m(y)e(commen)m(ts.)40 b(The)23 -b(constrain)m(t)330 4849 y(is)41 b(an)f(equalit)m(y)i -Fg(p)p Fo(\()p Fg(x)p Fo(\))h(=)f(0)f(if)g(the)g(\014rst)e(elemen)m(t)k -(is)d(0,)k(an)d(inequalit)m(y)h Fg(p)p Fo(\()p Fg(x)p -Fo(\))g Fl(\025)g Fo(0)f(if)g(the)g(\014rst)330 4958 -y(elemen)m(t)23 b(is)f(1.)39 b(The)21 b(next)h(elemen)m(ts)h(are)g(the) -f(unkno)m(wn)e(co)s(e\016cien)m(ts,)26 b(follo)m(w)m(ed)e(b)m(y)d(the)h -(parameter)330 5068 y(co)s(e\016cien)m(ts.)42 b(The)30 -b(last)i(elemen)m(t)f(is)g(the)f(constan)m(t)i(factor.)275 -5230 y(F)-8 b(or)31 b(instance,)h(assuming)f(that)g(`)p -Fm(i)p Fo(',)h(`)p Fm(j)p Fo(')f(and)f(`)p Fm(k)p Fo(')h(are)h -(iterators)g(and)e(`)p Fm(m)p Fo(')i(and)e(`)p Fm(n)p -Fo(')h(are)g(parameters,)150 5340 y(the)g(domain)f(de\014ned)f(b)m(y)h -(the)h(follo)m(wing)h(constrain)m(ts)f(:)p eop end -%%Page: 8 12 -TeXDict begin 8 11 bop 150 -116 a Fo(8)1589 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)1611 -308 y Fd(8)1611 383 y(<)1611 532 y(:)1700 369 y Fl(\000)p -Fg(i)20 b Fo(+)g Fg(m)144 b Fl(\025)25 b Fo(0)1700 479 -y Fl(\000)p Fg(j)h Fo(+)20 b Fg(n)157 b Fl(\025)25 b -Fo(0)1700 588 y Fg(i)c Fo(+)f Fg(j)25 b Fl(\000)20 b -Fg(k)94 b Fl(\025)25 b Fo(0)150 743 y(can)31 b(b)s(e)e(written)i(in)f -(the)g(input)g(\014le)g(as)h(follo)m(ws)g(:)390 874 y -Fm(#)47 b(This)g(is)g(the)g(domain)390 984 y(3)g(7)1050 -b(#)48 b(3)f(lines)f(and)h(7)h(columns)390 1093 y(#)f(eq/in)g(i)95 -b(j)g(k)g(m)h(n)f(1)581 1203 y(1)g(-1)g(0)g(0)g(1)h(0)f(0)47 -b(#)191 b(-i)47 b(+)g(m)h(>=)f(0)581 1312 y(1)143 b(0)47 -b(-1)95 b(0)g(0)h(1)f(0)47 b(#)191 b(-j)47 b(+)g(n)h(>=)f(0)581 -1422 y(1)143 b(1)95 b(1)47 b(-1)95 b(0)h(0)f(0)47 b(#)h(i)f(+)h(j)f(-)g -(k)h(>=)f(0)275 1547 y Fo(Eac)m(h)35 b(iteration)i(domain)e(`)p -Fm(Iteration_domain)p Fo(')c(of)36 b(a)f(giv)m(en)i(statemen)m(t)g(is)e -(a)g(union)g(of)g(p)s(olyhe-)150 1657 y(dra)g(`)p Fm(Domain_union)p -Fo('.)52 b(A)36 b(union)e(is)h(de\014ned)f(b)m(y)i(its)f(n)m(um)m(b)s -(er)f(of)i(elemen)m(ts)g(`)p Fm(Nb_domains)p Fo(')d(and)i(the)150 -1767 y(elemen)m(ts)25 b(themselv)m(es)g(`)p Fm(Domain_list)p -Fo('.)36 b(F)-8 b(or)24 b(instance,)i(let)f(us)d(consider)i(the)g -(follo)m(wing)h(pseudo-co)s(de:)390 1897 y Fm(for)47 -b(\(i=1;i<=n;i++\))d({)485 2007 y(if)k(\(\(i)f(>=)g(m\))g(||)g(\(i)g -(<=)g(2*m\)\))581 2117 y(S1)g(;)485 2226 y(for)g(\(j=i+1;j<=m;j++\))581 -2336 y(S2)g(;)390 2445 y(})150 2571 y Fo(The)35 b(iteration)i(domain)f -(of)g(`)p Fm(S1)p Fo(')f(can)h(b)s(e)f(divided)g(in)m(to)i(t)m(w)m(o)g -(p)s(olyhedra)e(and)g(written)h(in)f(the)h(input)150 -2680 y(\014le)30 b(as)h(follo)m(ws:)390 2811 y Fm(2)47 -b(#)h(Number)e(of)h(polyhedra)e(in)j(the)f(union)390 -2921 y(#)g(First)g(domain)390 3030 y(3)g(5)764 b(#)47 -b(3)h(lines)e(and)h(5)g(columns)390 3140 y(#)g(eq/in)g(i)95 -b(m)g(n)g(1)581 3249 y(1)143 b(1)95 b(0)g(0)48 b(-1)f(#)95 -b(i)47 b(>=)h(1)581 3359 y(1)95 b(-1)g(0)g(1)g(0)48 b(#)95 -b(i)47 b(<=)h(n)581 3469 y(1)143 b(1)47 b(-1)95 b(0)g(0)48 -b(#)95 b(i)47 b(>=)h(m)390 3578 y(#)f(Second)g(domain)390 -3688 y(3)g(5)764 b(#)47 b(3)h(lines)e(and)h(5)g(columns)390 -3797 y(#)g(eq/in)g(i)95 b(m)g(n)g(1)581 3907 y(1)143 -b(1)95 b(0)g(0)48 b(-1)f(#)95 b(i)47 b(>=)h(1)581 4016 -y(1)95 b(-1)g(0)g(1)g(0)48 b(#)95 b(i)47 b(<=)h(n)581 -4126 y(1)95 b(-1)g(2)g(0)g(0)48 b(#)95 b(i)47 b(<=)h(2*m)150 -4333 y Fc(2.2.2)63 b(Scattering)40 b(F)-10 b(unction)41 -b(Represen)m(tation)275 4573 y Fo(Scattering)h(functions)f(are)g -(depicted)g(in)g(the)g(input)g(\014le)g(thanks)f(a)i(represen)m(tation) -g(v)m(ery)g(close)150 4682 y(to)f(the)f(domain)g(one.)71 -b(An)40 b(in)m(teger)h(giv)m(es)h(the)e(n)m(um)m(b)s(er)f(of)h -(functions)g(`)p Fm(Nb_functions)p Fo(')d(and)j(eac)m(h)150 -4792 y(function)35 b(is)g(represen)m(ted)g(b)m(y)g(a)g(domain.)55 -b(Eac)m(h)36 b(line)f(of)h(the)f(domain)g(corresp)s(onds)f(to)h(an)g -(equalit)m(y)150 4902 y(de\014ning)i(a)i(dimension)f(of)g(the)g -(function.)64 b(Note)40 b(that)f(at)g(presen)m(t)f(\(CLo)s(oG)h -(0.14.0\))h Fh(all)f(functions)150 5011 y(m)m(ust)23 -b(ha)m(v)m(e)g(the)g(same)g(scattering)i(dimension)d(n)m(um)m(b)s(er)p -Fo(.)37 b(If)22 b(a)h(user)f(w)m(an)m(ts)i(to)f(set)g(scattering)h -(functions)150 5121 y(with)33 b(di\013eren)m(t)g(dimensionalit)m(y)-8 -b(,)36 b(he)d(has)g(to)h(complete)g(the)g(smaller)f(one)h(with)e(zero)s -(es)i(to)g(reac)m(h)g(the)150 5230 y(maxim)m(um)h(dimensionalit)m(y)-8 -b(.)55 b(F)-8 b(or)36 b(instance,)g(let)g(us)e(consider)h(the)g(follo)m -(wing)h(co)s(de)f(and)f(sc)m(heduling)150 5340 y(functions:)p -eop end -%%Page: 9 13 -TeXDict begin 9 12 bop 150 -116 a Fo(Chapter)30 b(2:)41 -b(Using)30 b(the)h(CLo)s(oG)g(Soft)m(w)m(are)2020 b(9)390 -299 y Fm(for)47 b(\(i=1;i<=n;i++\))d({)485 408 y(if)k(\(\(i)f(>=)g(m\)) -g(||)g(\(i)g(<=)g(2*m\)\))581 518 y(S1)g(;)485 628 y(for)g -(\(j=i+1;j<=m;j++\))581 737 y(S2)g(;)390 847 y(})1431 -942 y Fd(\032)1508 1008 y Fg(\022)1551 1022 y Ff(S)s -Fe(1)1632 1008 y Fo(\()p Fg(i)p Fo(\))227 b(=)25 b(\()p -Fg(i;)15 b Fo(0\))2242 975 y Ff(T)1508 1118 y Fg(\022)1551 -1132 y Ff(S)s Fe(2)1632 1118 y Fo(\()p Fg(i;)g(j)5 b -Fo(\))1815 1085 y Ff(T)1960 1118 y Fo(=)25 b(\()p Fg(n;)15 -b(i)21 b Fo(+)f Fg(j)5 b Fo(\))2406 1085 y Ff(T)150 1309 -y Fo(This)30 b(sc)m(heduling)g(can)h(b)s(e)e(written)i(in)f(the)g -(input)g(\014le)g(as)h(follo)m(ws:)390 1449 y Fm(2)47 -b(#)h(Number)e(of)h(scattering)e(functions)390 1559 y(#)i(First)g -(function)390 1668 y(2)g(7)1241 b(#)48 b(2)f(lines)f(and)h(7)h(columns) -390 1778 y(#)f(eq/in)g(c1)g(c2)95 b(i)g(m)g(n)g(1)581 -1887 y(0)191 b(1)95 b(0)47 b(-1)95 b(0)g(0)g(0)191 b(#)95 -b(c1)47 b(=)h(i)581 1997 y(0)191 b(0)95 b(1)g(0)g(0)g(0)g(0)191 -b(#)95 b(c2)47 b(=)h(0)390 2107 y(#)f(Second)g(function)390 -2216 y(2)g(8)1241 b(#)48 b(2)f(lines)f(and)h(8)h(columns)390 -2326 y(#)f(eq/in)g(c1)g(c2)95 b(i)g(j)g(m)g(n)h(1)581 -2435 y(0)191 b(1)95 b(0)g(0)g(0)g(0)48 b(-1)95 b(0)47 -b(#)95 b(c1)47 b(=)h(n)581 2545 y(0)191 b(0)95 b(1)47 -b(-1)g(-1)95 b(0)g(0)h(0)47 b(#)95 b(c2)47 b(=)h(i+j)275 -2680 y Fo(The)36 b(complete)i(input)d(\014le)i(for)g(the)f(user)g(who)h -(w)m(an)m(ts)g(to)g(generate)i(the)d(co)s(de)h(for)g(this)f(example)150 -2789 y(with)31 b(the)h(preceding)f(sc)m(heduling)g(w)m(ould)h(b)s(e)e -(\(this)i(\014le)f(is)h(pro)m(vided)f(in)g(the)g(CLo)s(oG)h -(distribution)f(as)150 2899 y Fm(test/manual_scattering.c)o(loog)o -Fo(:)390 3039 y Fm(#)47 b(----------------------)42 b(CONTEXT)k -(----------------------)390 3148 y(c)h(#)h(language)d(is)j(C)390 -3367 y(#)f(Context)f(\(no)h(constraints)e(on)i(two)g(parameters\))390 -3477 y(1)g(4)907 b(#)47 b(1)h(lines)e(and)h(4)h(columns)390 -3587 y(#)f(eq/in)g(m)95 b(n)g(1)581 3696 y(1)143 b(0)95 -b(0)g(0)334 b(#)47 b(0)h(>=)f(0,)g(always)f(true)390 -3915 y(1)h(#)h(We)f(want)g(to)g(set)g(manually)e(the)i(parameter)f -(names)390 4025 y(m)h(n)907 b(#)47 b(parameter)f(names)390 -4244 y(#)h(---------------------)42 b(STATEMENTS)j -(--------------------)390 4354 y(2)i(#)h(Number)e(of)h(statements)390 -4573 y(2)g(#)h(First)e(statement:)f(two)i(domains)390 -4682 y(#)g(First)g(domain)390 4792 y(3)g(5)907 b(#)47 -b(3)h(lines)e(and)h(5)h(columns)390 4902 y(#)f(eq/in)g(i)95 -b(m)g(n)g(1)581 5011 y(1)143 b(1)95 b(0)g(0)48 b(-1)190 -b(#)47 b(i)h(>=)f(1)581 5121 y(1)95 b(-1)g(0)g(1)g(0)191 -b(#)47 b(i)h(<=)f(n)581 5230 y(1)143 b(1)47 b(-1)95 b(0)g(0)191 -b(#)47 b(i)h(>=)f(m)390 5340 y(#)g(Second)g(domain)p -eop end -%%Page: 10 14 -TeXDict begin 10 13 bop 150 -116 a Fo(10)1544 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)390 -299 y Fm(3)47 b(5)907 b(#)47 b(3)h(lines)e(and)h(5)h(columns)390 -408 y(#)f(eq/in)g(i)95 b(m)g(n)g(1)581 518 y(1)143 b(1)95 -b(0)g(0)48 b(-1)190 b(#)47 b(i)h(>=)f(1)581 628 y(1)95 -b(-1)g(0)g(1)g(0)191 b(#)47 b(i)h(<=)f(n)581 737 y(1)95 -b(-1)g(2)g(0)g(0)191 b(#)47 b(i)h(<=)f(2*m)390 847 y(0)95 -b(0)g(0)716 b(#)47 b(for)g(future)f(options)390 1066 -y(1)h(#)h(Second)e(statement:)f(one)i(domain)390 1176 -y(4)g(6)907 b(#)47 b(4)h(lines)e(and)h(6)h(columns)390 -1285 y(#)f(eq/in)g(i)95 b(j)g(m)g(n)h(1)581 1395 y(1)143 -b(1)95 b(0)g(0)g(0)48 b(-1)f(#)g(i)h(>=)f(1)581 1504 -y(1)95 b(-1)g(0)g(0)g(1)h(0)47 b(#)g(i)h(<=)f(n)581 1614 -y(1)95 b(-1)g(1)g(0)g(0)48 b(-1)f(#)g(j)h(>=)f(i+1)581 -1724 y(1)143 b(0)47 b(-1)95 b(1)g(0)h(0)47 b(#)g(j)h(<=)f(m)390 -1833 y(0)95 b(0)g(0)716 b(#)47 b(for)g(future)f(options)390 -2052 y(1)h(#)h(We)f(want)g(to)g(set)g(manually)e(the)i(iterator)f -(names)390 2162 y(i)h(j)907 b(#)47 b(iterator)f(names)390 -2381 y(#)h(---------------------)42 b(SCATTERING)j -(--------------------)390 2491 y(2)i(#)h(Scattering)d(functions)390 -2600 y(#)i(First)g(function)390 2710 y(2)g(7)907 b(#)47 -b(2)h(lines)e(and)h(7)h(columns)390 2819 y(#)f(eq/in)g(p1)g(p2)95 -b(i)g(m)g(n)g(1)581 2929 y(0)191 b(1)95 b(0)47 b(-1)95 -b(0)g(0)g(0)191 b(#)48 b(p1)f(=)g(i)581 3039 y(0)191 -b(0)95 b(1)g(0)g(0)g(0)g(0)191 b(#)48 b(p2)f(=)g(0)390 -3148 y(#)g(Second)g(function)390 3258 y(2)g(8)907 b(#)47 -b(2)h(lines)e(and)h(8)h(columns)390 3367 y(#)f(eq/in)g(p1)g(p2)95 -b(i)g(j)g(m)g(n)h(1)581 3477 y(0)191 b(1)95 b(0)g(0)g(0)g(0)48 -b(-1)95 b(0)47 b(#)h(p1)f(=)g(n)581 3587 y(0)191 b(0)95 -b(1)47 b(-1)g(-1)95 b(0)g(0)h(0)47 b(#)h(p2)f(=)g(i+j)390 -3806 y(1)g(#)h(We)f(want)g(to)g(set)g(manually)e(the)i(scattering)e -(dimension)h(names)390 3915 y(p1)h(p2)811 b(#)47 b(scattering)e -(dimension)h(names)150 4171 y Fn(2.3)68 b(Calling)46 -b(CLo)t(oG)275 4415 y Fo(CLo)s(oG)30 b(is)g(called)i(b)m(y)e(the)h -(follo)m(wing)h(command:)724 4548 y Fm(cloog)46 b([)i(options)e(|)h -(file)g(])275 4682 y Fo(The)26 b(default)g(b)s(eha)m(vior)h(of)g(CLo)s -(oG)f(is)h(to)g(read)g(the)f(input)g(informations)h(from)f(a)g(\014le)h -(and)f(to)h(prin)m(t)150 4792 y(the)41 b(generated)h(co)s(de)f(or)g -(pseudo-co)s(de)f(on)h(the)g(standard)f(output.)72 b(CLo)s(oG's)41 -b(b)s(eha)m(vior)g(and)f(the)150 4902 y(output)34 b(co)s(de)g(shap)s(e) -g(is)g(under)f(the)h(user)g(con)m(trol)i(thanks)e(to)h(man)m(y)f -(options)h(whic)m(h)f(are)g(detailed)i(a)150 5011 y(further)d(section)i -(\(see)g(Section)g(2.4)h([CLo)s(oG)e(Options],)i(page)f(11\).)53 -b Fm(file)33 b Fo(is)h(the)h(input)e(\014le.)52 b Fm(stdin)150 -5121 y Fo(is)36 b(a)h(sp)s(ecial)g(v)-5 b(alue:)53 b(when)35 -b(used,)i(input)e(is)i(standard)e(input.)57 b(F)-8 b(or)37 -b(instance,)i(w)m(e)e(can)f(call)i(CLo)s(oG)150 5230 -y(to)30 b(treat)g(the)f(input)f(\014le)h Fm(basic.cloog)d -Fo(with)j(default)g(options)h(b)m(y)f(t)m(yping:)40 b -Fm(cloog)29 b(basic.cloog)d Fo(or)150 5340 y Fm(more)j(basic.cloog)f(|) -i(cloog)e(stdin)p Fo(.)p eop end -%%Page: 11 15 -TeXDict begin 11 14 bop 150 -116 a Fo(Chapter)30 b(2:)41 -b(Using)30 b(the)h(CLo)s(oG)g(Soft)m(w)m(are)1974 b(11)150 -299 y Fn(2.4)68 b(CLo)t(oG)45 b(Options)150 675 y Fc(2.4.1)63 -b(Last)40 b(Depth)h(to)g(Optimize)g(Con)m(trol)g Fb(-l)g()275 -940 y Fm(-l)29 b()p Fo(:)39 b(this)29 b(option)h(sets)g(the)g -(last)h(lo)s(op)e(depth)g(to)i(b)s(e)d(optimized)j(in)e(con)m(trol.)42 -b(The)29 b(higher)150 1050 y(this)c(depth,)h(the)g(less)g(con)m(trol)h -(o)m(v)m(erhead.)40 b(F)-8 b(or)26 b(instance,)i(with)d(some)h(input)e -(\014le,)j(a)f(user)f(can)g(generate)150 1159 y(di\013eren)m(t)31 -b(pseudo-co)s(des)f(with)g(di\013eren)m(t)h Fm(depth)e -Fo(v)-5 b(alues)30 b(as)h(sho)m(wn)f(b)s(elo)m(w.)390 -1315 y Fm(/*)47 b(Generated)e(using)i(a)g(given)g(input)f(file)h(and)g -Fh(option)30 b(-l)h(1)49 b Fm(*/)390 1425 y(for)e(\(i=0;i<=M;i++\))d({) -485 1534 y(S1)k(;)485 1644 y(for)f(\(j=0;j<=N;j++\))d({)581 -1753 y(S2)j(;)485 1863 y(})485 1973 y(for)g(\(j=0;j<=N;j++\))d({)581 -2082 y(S3)j(;)485 2192 y(})485 2301 y(S4)h(;)390 2411 -y(})390 2576 y(/*)f(Generated)e(using)i(the)g(same)f(input)h(file)f -(but)h Fh(option)31 b(-l)g(2)48 b Fm(*/)390 2685 y(for)f -(\(i=0;i<=M;i++\))d({)485 2795 y(S1)k(;)485 2905 y(for)f -(\(j=0;j<=N;j++\))d({)581 3014 y(S2)j(;)581 3124 y(S3)g(;)485 -3233 y(})485 3343 y(S4)h(;)390 3452 y(})275 3603 y Fo(In)35 -b(this)h(example)g(w)m(e)h(can)f(see)h(that)g(this)f(option)g(can)g(c)m -(hange)h(the)g(op)s(eration)f(execution)h(order)150 3712 -y(b)s(et)m(w)m(een)k(statemen)m(ts.)73 b(Let)41 b(us)f(remind)f(that)i -(CLo)s(oG)g(do)s(es)f(not)h(mak)m(e)h(an)m(y)e(sp)s(eculation)h(on)g -(de-)150 3822 y(p)s(endences)32 b(b)s(et)m(w)m(een)j(statemen)m(ts)g -(\(see)f(Section)g(1.2)h([Scattering],)h(page)e(2\).)51 -b(Th)m(us)33 b(if)g(nothing)g(\(i.e.)150 3932 y(scattering)40 -b(functions\))f(forbids)f(this,)j(CLo)s(oG)d(considers)h(the)g(ab)s(o)m -(v)m(e)h(co)s(des)f(to)g(b)s(e)f(equiv)-5 b(alen)m(t.)67 -b(If)150 4041 y(there)26 b(is)h(no)f(scattering)h(functions,)g(the)f -(minim)m(um)g(v)-5 b(alue)26 b(for)g Fm(depth)f Fo(is)h(1)h(\(in)f(the) -g(case)h(of)g(0,)g(the)g(user)150 4151 y(do)s(esn't)j(really)h(need)f -(a)h(lo)s(op)f(generator)h(!\),)g(and)f(the)g(n)m(um)m(b)s(er)f(of)h -(scattering)i(dimensions)e(otherwise)150 4260 y(\(CLo)s(oG)i(will)f(w)m -(arn)g(the)g(user)f(if)h(he)g(do)s(esn't)g(resp)s(ect)g(suc)m(h)g -(constrain)m(t\).)44 b(The)31 b(maxim)m(um)g(v)-5 b(alue)31 -b(for)150 4370 y(depth)f(is)g(-1)h(\(in\014nit)m(y\).)41 -b(Default)32 b(v)-5 b(alue)31 b(is)f(in\014nit)m(y)-8 -b(.)150 4636 y Fc(2.4.2)63 b(First)41 b(Depth)g(to)g(Optimize)g(Con)m -(trol)g Fb(-f)g()275 4902 y Fm(-f)29 b()p -Fo(:)41 b(this)31 b(option)h(sets)f(the)h(\014rst)e(lo)s(op)i(depth)e -(to)i(b)s(e)f(optimized)h(in)f(con)m(trol.)45 b(The)31 -b(lo)m(w)m(er)150 5011 y(this)38 b(depth,)i(the)f(less)g(con)m(trol)h -(o)m(v)m(erhead)f(\(and)f(the)h(longer)g(the)g(generated)g(co)s(de\).) -66 b(F)-8 b(or)39 b(instance,)150 5121 y(with)28 b(some)g(input)f -(\014le,)i(a)f(user)f(can)i(generate)g(di\013eren)m(t)f(pseudo-co)s -(des)g(with)g(di\013eren)m(t)g Fm(depth)f Fo(v)-5 b(alues)150 -5230 y(as)25 b(sho)m(wn)g(b)s(elo)m(w.)39 b(The)25 b(minim)m(um)f(v)-5 -b(alue)26 b(for)f Fm(depth)f Fo(is)h(1,)i(and)e(the)g(maxim)m(um)g(v)-5 -b(alue)26 b(is)f(-1)h(\(in\014nit)m(y\).)150 5340 y(Default)31 -b(v)-5 b(alue)31 b(is)g(1.)p eop end -%%Page: 12 16 -TeXDict begin 12 15 bop 150 -116 a Fo(12)1544 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)390 -299 y Fm(/*)47 b(Generated)e(using)i(a)g(given)g(input)f(file)h(and)g -Fh(option)30 b(-f)h(3)48 b Fm(*/)390 408 y(for)f(\(i=1;i<=N;i++\))d({) -485 518 y(for)j(\(j=1;j<=M;j++\))d({)581 628 y(S1)j(;)581 -737 y(if)g(\(j)g(>=)g(10\))g({)676 847 y(S2)h(;)581 956 -y(})485 1066 y(})390 1176 y(})390 1312 y(/*)f(Generated)e(using)i(the)g -(same)f(input)h(file)f(but)h Fh(option)31 b(-f)g(2)48 -b Fm(*/)390 1422 y(for)f(\(i=1;i<=N;i++\))d({)485 1532 -y(for)j(\(j=1;j<=9;j++\))d({)581 1641 y(S1)j(;)485 1751 -y(})485 1860 y(for)g(\(j=10;j<=M;j++\))d({)581 1970 y(S1)j(;)581 -2080 y(S2)g(;)485 2189 y(})390 2299 y(})150 2496 y Fc(2.4.3)63 -b(Once)40 b(Time)i(Lo)s(op)g(Elimination)f Fb(-otl)h()275 -2733 y Fm(-otl)29 b()p Fo(:)38 b(this)29 b(option)h(allo)m(ws) -h(\()p Fm(boolean=1)p Fo(\))d(or)h(forbids)g(\()p Fm(boolean=0)p -Fo(\))f(the)h(simpli\014ca-)150 2843 y(tion)i(of)f(lo)s(ops)h(running)d -(once.)42 b(Default)31 b(v)-5 b(alue)31 b(is)g(1.)390 -2971 y Fm(/*)47 b(Generated)e(using)i(a)g(given)g(input)f(file)h(and)g -Fh(option)30 b(-otl)i(0)48 b Fm(*/)390 3080 y(for)f -(\(j=i+1;j<=i+1;j++\))c({)485 3190 y(S1)48 b(;)390 3300 -y(})390 3436 y(/*)f(Generated)e(using)i(the)g(same)f(input)h(file)f -(but)h Fh(option)31 b(-otl)h(1)48 b Fm(*/)390 3546 y(j)f(=)h(i+1)f(;) -390 3656 y(S1)g(;)150 3853 y Fc(2.4.4)63 b(Equalit)m(y)39 -b(Spreading)j Fb(-esp)f()275 4090 y Fm(-esp)29 -b()p Fo(:)38 b(this)29 b(option)i(allo)m(ws)g(\()p -Fm(boolean=1)p Fo(\))d(or)i(forbids)e(\()p Fm(boolean=0)p -Fo(\))g(v)-5 b(alues)30 b(spread-)150 4200 y(ing)h(when)e(there)h(are)h -(equalities.)43 b(Default)31 b(v)-5 b(alue)31 b(is)f(0.)390 -4328 y Fm(/*)47 b(Generated)e(using)i(a)g(given)g(input)f(file)h(and)g -Fh(option)30 b(-esp)h(0)48 b Fm(*/)390 4437 y(i)f(=)h(M+2)f(;)390 -4547 y(j)g(=)h(N)f(;)390 4656 y(for)g(\(k=i;k<=j+M;k++\))c({)485 -4766 y(S1)48 b(;)390 4876 y(})390 5012 y(/*)f(Generated)e(using)i(the)g -(same)f(input)h(file)f(but)h Fh(option)31 b(-esp)g(1)48 -b Fm(*/)390 5122 y(for)f(\(k=M+2;k<=N+M;k++\))c({)485 -5232 y(S1\(i)k(=)h(M+2,)e(j)i(=)f(N\))g(;)390 5341 y(})p -eop end -%%Page: 13 17 -TeXDict begin 13 16 bop 150 -116 a Fo(Chapter)30 b(2:)41 -b(Using)30 b(the)h(CLo)s(oG)g(Soft)m(w)m(are)1974 b(13)150 -299 y Fc(2.4.5)63 b(Constan)m(t)40 b(Spreading)i Fb(-csp)f() -275 556 y Fm(-csp)29 b()p Fo(:)38 b(this)29 -b(option)i(allo)m(ws)g(\()p Fm(boolean=1)p Fo(\))d(or)i(forbids)e(\()p -Fm(boolean=0)p Fo(\))g(v)-5 b(alues)30 b(spread-)150 -665 y(ing)f(when)e(there)i(are)g Fi(c)-5 b(onstant)38 -b Fo(equalities.)k(That)29 b(is,)g(when)e(the)i(righ)m(t)g(mem)m(b)s -(er)f(of)g(the)h(equalit)m(y)h(is)f(a)150 775 y(constan)m(t)j(term.)40 -b(Default)32 b(v)-5 b(alue)31 b(is)f(1.)390 922 y Fm(/*)47 -b(Generated)e(using)i(a)g(given)g(input)f(file)h(and)g -Fh(option)30 b(-csp)h(0)48 b Fm(*/)390 1032 y(i)f(=)h(M+2)f(;)390 -1141 y(j)g(=)h(N)f(;)390 1251 y(for)g(\(k=i;j<=j+M;j++\))c({)485 -1360 y(S1)48 b(;)390 1470 y(})390 1626 y(/*)f(Generated)e(using)i(the)g -(same)f(input)h(file)f(but)h Fh(option)31 b(-csp)g(1)48 -b Fm(*/)390 1736 y(i)f(=)h(M+2)f(;)390 1845 y(for)g(\(k=i;k<=N+M;k++\)) -c({)485 1955 y(S1\(j)k(=)h(N\))f(;)390 2064 y(})150 2308 -y Fc(2.4.6)63 b(First)41 b(Lev)m(el)f(for)i(Spreading)g -Fb(-fsp)f()275 2564 y Fm(-fsp)29 b()p Fo(:)k(it)21 -b(can)g(b)s(e)e(useful)h(to)h(set)g(a)f(\014rst)g(lev)m(el)i(to)f(b)s -(egin)f(equalit)m(y)i(spreading.)37 b(P)m(articularly)150 -2674 y(when)30 b(using)h(scattering)i(functions,)f(the)g(user)e(ma)m(y) -i(w)m(an)m(t)h(to)f(see)g(the)g(scattering)h(dimension)e(v)-5 -b(alues)150 2783 y(instead)32 b(of)g(spreading)f(or)h(hiding)f(them.)44 -b(If)32 b(user)f(has)g(set)h(a)g(spreading,)g Fm(level)e -Fo(is)i(the)g(\014rst)f(lev)m(el)i(to)150 2893 y(start)e(it.)41 -b(Default)32 b(v)-5 b(alue)31 b(is)f(1.)390 3040 y Fm(/*)47 -b(Generated)e(using)i(a)g(given)g(input)f(file)h(and)g -Fh(option)30 b(-fsp)g(1)48 b Fm(*/)390 3150 y(for)f(\(j=0;j<=N+M;j++\)) -c({)485 3259 y(S1\(i)k(=)h(N\))f(;)390 3369 y(})390 3478 -y(for)g(\(j=0;j<=N+M;j++\))c({)485 3588 y(S1\(i)k(=)h(M\))f(;)390 -3698 y(})390 3854 y(/*)g(Generated)e(using)i(the)g(same)f(input)h(file) -f(but)h Fh(option)31 b(-fsp)f(2)48 b Fm(*/)390 3964 y(c1)f(=)h(N)f(;) -390 4073 y(for)g(\(j=0;j<=c1+M;j++\))c({)485 4183 y(S1\(i)k(=)h(c1\))e -(;)390 4292 y(})390 4402 y(c1)h(=)h(M)f(;)390 4511 y(for)g -(\(j=0;j<=N+c1;j++\))c({)485 4621 y(S1\(i)k(=)h(c1\))e(;)390 -4731 y(})150 4974 y Fc(2.4.7)63 b(C)40 b(PrePro)s(cessor)j(F)-10 -b(riendly)41 b Fb(-cpp)g()275 5230 y Fm(-cpp)29 -b()p Fo(:)50 b(this)36 b(option)g(ask)h(CLo)s(oG)f(for)g(prin) -m(ting)g(a)h(less)f(h)m(uman-readable)h(but)e(com-)150 -5340 y(pilable)46 b(co)s(de)f(b)m(y)g(using)f(the)h(C)g(prepro)s -(cessor)f(\()p Fm(boolean=1)p Fo(\).)83 b(In)44 b(this)h(case)h(eac)m -(h)g(statemen)m(t)h(is)p eop end -%%Page: 14 18 -TeXDict begin 14 17 bop 150 -116 a Fo(14)1544 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)150 -299 y(written)j(as)h(a)f(function)g(of)h(the)f(iterators)i(corresp)s -(onding)d(to)i(its)g(domain)f(dimensions:)45 b Fm(Si\(value_)150 -408 y(of_iterator_1,...,value_)o(of_i)o(tera)o(tor)o(_n\))p -Fo(.)d(It)32 b(follo)m(ws)i(that)g(the)f(user)f(can)h(easily)h(add)e -(pre-)150 518 y(pro)s(cessor)g(macros)h(to)g(de\014ne)f(eac)m(h)i -(statemen)m(t)g(and)e(use)g(the)h(generated)g(textual)h(co)s(de)f -(directly)g(for)150 628 y(compilation.)39 b(When)22 b -Fm(boolean)d Fo(is)i(set)h(to)h(0,)g(the)f(prett)m(y)g(prin)m(ter)f -(has)g(the)h(default)f(b)s(eha)m(viour.)38 b(Default)150 -737 y(v)-5 b(alue)31 b(is)f(0.)390 932 y Fm(/*)47 b(Generated)e(using)i -(a)g(given)g(input)f(file)h(and)g Fh(option)30 b(-cpp)g(0)49 -b Fm(*/)390 1042 y(for)e(\(j=0;j<=N+M;j++\))c({)485 1151 -y(S1\(i)k(=)h(N\))f(;)390 1261 y(})390 1465 y(/*)g(Generated)e(using)i -(the)g(same)f(input)h(file)f(but)h Fh(option)31 b(-cpp)f(1)48 -b Fm(*/)390 1574 y(/*)f(and)g(a)h(preprocessor)c(macro)i(set)h(by)g -(the)g(user)g(*/)390 1793 y(#define)f(S1\(i,j\))g(A[\(j\)]=3*\(i\))390 -2013 y(for)h(\(j=0;j<=N+M;j++\))c({)485 2122 y(S1\(N,j\))j(;)390 -2232 y(})150 2570 y Fc(2.4.8)63 b(Statemen)m(t)40 b(Blo)s(c)m(k)h -Fb(-block)g()275 2874 y Fm(-block)28 b()p -Fo(:)37 b(this)28 b(option)g(allo)m(ws)h(\()p Fm(boolean=1)p -Fo(\))d(to)i(create)h(a)g(statemen)m(t)g(blo)s(c)m(k)f(for)g(eac)m(h) -150 2984 y(new)39 b(iterator,)j(ev)m(en)e(if)f(there)g(is)h(only)f(an)g -(equalit)m(y)-8 b(.)68 b(This)39 b(can)g(b)s(e)g(useful)f(in)h(order)f -(to)i(parse)f(the)150 3093 y(generated)45 b(pseudo-co)s(de.)80 -b(When)43 b Fm(boolean)e Fo(is)j(set)g(to)g(0)g(or)g(when)e(the)i -(generation)h(language)g(is)150 3203 y(F)m(OR)-8 b(TRAN,)31 -b(this)g(feature)f(is)h(disabled.)40 b(Default)32 b(v)-5 -b(alue)31 b(is)f(0.)390 3398 y Fm(/*)47 b(Generated)e(using)i(a)g -(given)g(input)f(file)h(and)g Fh(option)30 b(-blo)s(c)m(k)i(0)48 -b Fm(*/)390 3507 y(i)f(=)h(M+2)f(;)390 3617 y(j)g(=)h(N)f(;)390 -3726 y(S1)g(;)390 3930 y(/*)g(Generated)e(using)i(the)g(same)f(input)h -(file)f(but)h Fh(option)31 b(-blo)s(c)m(k)g(1)49 b Fm(*/)390 -4040 y({)e(i)h(=)f(M+2)g(;)485 4150 y({)h(j)f(=)h(N)f(;)581 -4259 y(S1)g(;)485 4369 y(})390 4478 y(})150 4816 y Fc(2.4.9)63 -b(Lo)s(op)42 b(Strides)f Fb(-strides)h()275 -5121 y Fm(-strides)28 b()p Fo(:)58 b(this)40 -b(options)h(allo)m(ws)h(\()p Fm(boolean=1)p Fo(\))c(to)j(handle)f -(non-unit)g(strides)g(for)150 5230 y(lo)s(op)k(incremen)m(ts.)83 -b(This)43 b(can)i(remo)m(v)m(e)g(a)g(lot)g(of)g(guards)e(and)h(mak)m(e) -h(the)f(generated)h(co)s(de)g(more)150 5340 y(e\016cien)m(t.)d(Default) -32 b(v)-5 b(alue)31 b(is)f(0.)p eop end -%%Page: 15 19 -TeXDict begin 15 18 bop 150 -116 a Fo(Chapter)30 b(2:)41 -b(Using)30 b(the)h(CLo)s(oG)g(Soft)m(w)m(are)1974 b(15)390 -299 y Fm(/*)47 b(Generated)e(using)i(a)g(given)g(input)f(file)h(and)g -Fh(option)30 b(-strides)h(0)49 b Fm(*/)390 408 y(for)e -(\(i=1;i<=n;i++\))d({)485 518 y(if)k(\(i\0452)e(==)h(0\))h({)581 -628 y(S1\(j)f(=)g(i/2\))g(;)485 737 y(})485 847 y(if)h(\(i\0454)e(==)h -(0\))h({)581 956 y(S2\(j)f(=)g(i/4\))g(;)485 1066 y(})390 -1176 y(})390 1320 y(/*)g(Generated)e(using)i(the)g(same)f(input)h(file) -f(but)h Fh(option)31 b(-strides)g(1)48 b Fm(*/)390 1430 -y(for)f(\(i=2;i<=n;i+=2\))d({)485 1540 y(S1\(j)j(=)h(i/2\))e(;)485 -1649 y(if)i(\(i\0454)e(==)h(0\))h({)581 1759 y(S2\(j)f(=)g(i/4\))g(;) -485 1868 y(})390 1978 y(})150 2198 y Fc(2.4.10)63 b(Compilable)41 -b(Co)s(de)h Fb(-compilable)g()275 2444 y Fm(-compilable)27 -b()p Fo(:)57 b(this)39 b(options)h(allo)m(ws)h(\()p -Fm(value)e Fo(is)g(not)h(0\))g(to)h(generate)g(a)f(compilable)150 -2553 y(co)s(de)33 b(where)g(all)h(parameters)f(ha)m(v)m(e)h(the)g(in)m -(tegral)g(v)-5 b(alue)34 b Fm(value)p Fo(.)47 b(This)32 -b(option)i(creates)g(a)g(macro)f(for)150 2663 y(eac)m(h)25 -b(statemen)m(t.)41 b(Since)24 b(CLo)s(oG)g(do)g(not)g(kno)m(w)g(an)m -(ything)g(ab)s(out)g(the)g(statemen)m(t)i(sources,)f(it)g(\014lls)f -(the)150 2772 y(macros)31 b(with)g(a)g(basic)g(incremen)m(t)h(that)f -(computes)g(the)g(total)i(n)m(um)m(b)s(er)c(of)i(scanned)f(in)m(tegral) -j(p)s(oin)m(ts.)150 2882 y(The)28 b(user)h(ma)m(y)g(c)m(hange)h(easily) -g(the)f(macros)g(according)h(to)g(his)e(o)m(wn)h(needs.)40 -b(This)28 b(option)h(is)g(p)s(ossible)150 2992 y(only)h(if)h(the)f -(generated)i(co)s(de)e(is)h(in)f(C.)g(Default)i(v)-5 -b(alue)30 b(is)h(0.)390 3127 y Fm(/*)47 b(Generated)e(using)i(a)g -(given)g(input)f(file)h(and)g Fh(option)30 b(-compilable)i(0)48 -b Fm(*/)390 3237 y(for)f(\(i=0;i<=n;i++\))d({)485 3347 -y(for)j(\(j=0;j<=n;j++\))d({)581 3456 y(S1)j(;)581 3566 -y(S2)g(;)485 3675 y(})485 3785 y(S3)h(;)390 3894 y(})390 -4025 y(/*)f(Generated)e(using)i(the)g(same)f(input)h(file)f(but)h -Fh(option)31 b(-compilable)h(10)48 b Fm(*/)390 4134 y(/*)f(DON'T)g -(FORGET)f(TO)h(USE)g(-lm)g(OPTION)f(TO)h(COMPILE.)e(*/)390 -4354 y(/*)i(Useful)f(headers.)g(*/)390 4463 y(#include)g()390 -4573 y(#include)g()390 4682 y(#include)g()390 -4902 y(/*)h(Parameter)e(value.)i(*/)390 5011 y(#define)f(PARVAL)g(10) -390 5230 y(/*)h(Statement)e(macros)i(\(please)e(set\).)i(*/)390 -5340 y(#define)f(S1\(i,j\))g({total++;})p eop end -%%Page: 16 20 -TeXDict begin 16 19 bop 150 -116 a Fo(16)1544 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)390 -299 y Fm(#define)46 b(S2\(i,j\))g({total++;})390 408 -y(#define)g(S3\(i\))142 b({total++;})390 628 y(int)47 -b(main\(\))f({)485 737 y(/*)i(Original)d(iterators.)g(*/)485 -847 y(int)i(i,)h(j)f(;)485 956 y(/*)h(Parameters.)c(*/)485 -1066 y(int)j(n=PARVAL,)f(total=0)f(;)485 1285 y(for)i(\(i=0;i<=n;i++\)) -d({)581 1395 y(for)j(\(j=0;j<=n;j++\))d({)676 1504 y(S1\(i,j\))i(;)676 -1614 y(S2\(i,j\))g(;)581 1724 y(})581 1833 y(S3\(i\))g(;)485 -1943 y(})485 2162 y(printf\("Number)e(of)k(integral)d(points:)h -(\045d.\\n",total\))e(;)485 2271 y(return)j(0)g(;)390 -2381 y(})150 2721 y Fc(2.4.11)63 b(Output)41 b Fb(-o)g()275 -3023 y Fm(-o)29 b()p Fo(:)55 b(this)38 b(option)h(sets)g(the)g -(output)f(\014le.)65 b Fm(stdout)37 b Fo(is)i(a)f(sp)s(ecial)i(v)-5 -b(alue:)57 b(when)37 b(used,)150 3133 y(output)30 b(is)g(standard)g -(output.)40 b(Default)32 b(v)-5 b(alue)31 b(is)f Fm(stdout)p -Fo(.)150 3473 y Fc(2.4.12)63 b(Help)41 b Fb(--help)h -Fc(or)f Fb(-h)275 3775 y Fm(--help)28 b Fo(or)j Fm(-h)p -Fo(:)40 b(this)30 b(option)h(ask)f(CLo)s(oG)h(to)g(prin)m(t)f(a)h -(short)f(help.)150 4115 y Fc(2.4.13)63 b(V)-10 b(ersion)42 -b Fb(--version)g Fc(or)f Fb(-v)275 4417 y Fm(--version)27 -b Fo(or)k Fm(-v)p Fo(:)40 b(this)30 b(option)h(ask)g(CLo)s(oG)f(to)h -(prin)m(t)f(some)h(v)m(ersion)g(informations.)150 4819 -y Fn(2.5)68 b(A)44 b(F)-11 b(ull)45 b(Example)275 5121 -y Fo(Let)35 b(us)g(consider)g(the)g(allo)s(cation)j(problem)d(of)g(a)h -(Gaussian)f(elimination,)j(i.e.)56 b(w)m(e)36 b(w)m(an)m(t)g(to)g(dis-) -150 5230 y(tribute)24 b(the)h(v)-5 b(arious)24 b(statemen)m(t)i -(instances)f(of)f(the)h(compute)f(k)m(ernel)h(on)m(to)h(di\013eren)m(t) -e(pro)s(cessors.)38 b(The)150 5340 y(original)32 b(co)s(de)e(is)h(the)f -(follo)m(wing:)p eop end -%%Page: 17 21 -TeXDict begin 17 20 bop 150 -116 a Fo(Chapter)30 b(2:)41 -b(Using)30 b(the)h(CLo)s(oG)g(Soft)m(w)m(are)1974 b(17)390 -299 y Fm(for)47 b(\(i=1;j<=N-1;i++\))c({)485 408 y(for)k -(\(j=i+1;j<=N;j++\))d({)581 518 y(c[i][j])i(=)h(a[j][i]/a[i][i])d(;)190 -b(/*)48 b(S1)f(*/)581 628 y(for)g(\(k=i+1;k<=N;k++\))c({)676 -737 y(a[j][k])j(-=)h(c[i][j]*a[i][k])d(;)j(/*)h(S2)f(*/)581 -847 y(})485 956 y(})390 1066 y(})150 1194 y Fo(The)35 -b(b)s(est)h(a\016ne)g(allo)s(cation)i(functions)d(can)h(b)s(e)f(found)g -(b)m(y)g(an)m(y)i(go)s(o)s(d)e(automatic)j(parallelizer)g(lik)m(e)150 -1303 y(Lo)s(oP)m(o)31 b(\(see)h([Gri04],)g(page)f(39\):)1529 -1452 y Fd(\032)1606 1518 y Fg(\022)1649 1532 y Ff(S)s -Fe(1)1730 1518 y Fo(\()p Fg(i;)15 b(j)5 b Fo(\))1913 -1485 y Ff(T)2144 1518 y Fo(=)25 b(\()p Fg(i)p Fo(\))1606 -1628 y Fg(\022)1649 1642 y Ff(S)s Fe(2)1730 1628 y Fo(\()p -Fg(i;)15 b(j;)g(k)s Fo(\))1998 1595 y Ff(T)2144 1628 -y Fo(=)25 b(\()p Fg(k)s Fo(\))150 1799 y(T)-8 b(o)35 -b(ensure)f(that)h(on)f(eac)m(h)i(pro)s(cessor,)g(the)e(set)h(of)g -(statemen)m(t)i(instances)e(is)f(executed)i(according)f(to)150 -1909 y(the)i(original)h(ordering,)h(w)m(e)e(add)f(as)i(minor)e -(scattering)j(dimensions)d(the)h(original)h(sc)m(heduling)f(\(see)150 -2018 y(Section)31 b(1.2)h([Scattering],)g(page)f(2\):)1211 -2167 y Fd(\032)1288 2233 y Fg(\022)1331 2247 y Ff(S)s -Fe(1)1412 2233 y Fo(\()p Fg(i;)15 b(j)5 b Fo(\))1595 -2200 y Ff(T)1826 2233 y Fo(=)25 b(\()p Fg(i;)15 b Fo(0)p -Fg(;)g(i;)g Fo(0)p Fg(;)g(j;)g Fo(0\))2426 2200 y Ff(T)1288 -2343 y Fg(\022)1331 2357 y Ff(S)s Fe(2)1412 2343 y Fo(\()p -Fg(i;)g(j;)g(k)s Fo(\))1680 2310 y Ff(T)1826 2343 y Fo(=)25 -b(\()p Fg(k)s(;)15 b Fo(0)p Fg(;)g(i;)g Fo(0)p Fg(;)g(j;)g -Fo(1)p Fg(;)g(k)s(;)g Fo(0\))2621 2310 y Ff(T)150 2514 -y Fo(T)-8 b(o)28 b(ensure)f(that)i(the)f(scattering)h(functions)f(ha)m -(v)m(e)h(the)f(same)g(dimensionalit)m(y)-8 b(,)30 b(w)m(e)e(complete)i -(the)e(\014rst)150 2624 y(function)33 b(with)h(zero)s(es)g(\(this)g(is) -f(a)h(CLo)s(oG)g(0.14.0)i(and)d(previous)g(v)m(ersions)h(requiremen)m -(t,)h(it)f(should)150 2733 y(b)s(e)c(remo)m(v)m(ed)h(in)f(a)h(future)e -(v)m(ersion,)i(don't)g(w)m(orry)f(it's)h(absolutly)g(legal)h(!\):)1211 -2882 y Fd(\032)1288 2948 y Fg(\022)1331 2962 y Ff(S)s -Fe(1)1412 2948 y Fo(\()p Fg(i;)15 b(j)5 b Fo(\))1595 -2915 y Ff(T)1826 2948 y Fo(=)25 b(\()p Fg(i;)15 b Fo(0)p -Fg(;)g(i;)g Fo(0)p Fg(;)g(j;)g Fo(0)p Fg(;)g Fo(0)p Fg(;)g -Fo(0)q(\))2597 2915 y Ff(T)1288 3058 y Fg(\022)1331 3072 -y Ff(S)s Fe(2)1412 3058 y Fo(\()p Fg(i;)g(j;)g(k)s Fo(\))1680 -3025 y Ff(T)1826 3058 y Fo(=)25 b(\()p Fg(k)s(;)15 b -Fo(0)p Fg(;)g(i;)g Fo(0)p Fg(;)g(j;)g Fo(1)p Fg(;)g(k)s(;)g -Fo(0\))2621 3025 y Ff(T)150 3234 y Fo(The)29 b(input)f(\014le)h -(corresp)s(onding)f(to)i(this)f(co)s(de)h(generation)g(problem)f(could) -g(b)s(e)f(\(this)i(\014le)f(is)g(pro)m(vided)150 3344 -y(in)h(the)h(CLo)s(oG)f(distribution)g(as)h Fm(test/manual_gauss.cloo)o -(g)p Fo(:)390 3477 y Fm(#)47 b(----------------------)42 -b(CONTEXT)k(----------------------)390 3587 y(c)h(#)h(language)d(is)j -(C)390 3806 y(#)f(Context)f(\(no)h(constraints)e(on)i(one)g -(parameter\))390 3915 y(1)g(3)1002 b(#)48 b(1)f(line)g(and)g(3)g -(columns)390 4025 y(#)g(eq/in)g(n)95 b(1)581 4134 y(1)143 -b(0)95 b(0)572 b(#)48 b(0)f(>=)h(0,)f(always)f(true)390 -4354 y(1)h(#)h(We)f(want)g(to)g(set)g(manually)e(the)i(parameter)f -(name)390 4463 y(n)1097 b(#)48 b(parameter)d(name)390 -4682 y(#)i(---------------------)42 b(STATEMENTS)j -(--------------------)390 4792 y(2)i(#)h(Number)e(of)h(statements)390 -5011 y(1)g(#)h(First)e(statement:)f(one)i(domain)390 -5121 y(4)g(5)1002 b(#)48 b(4)f(lines)g(and)g(3)g(columns)390 -5230 y(#)g(eq/in)g(i)95 b(j)g(n)g(1)581 5340 y(1)143 -b(1)95 b(0)g(0)48 b(-1)285 b(#)48 b(i)f(>=)h(1)p eop -end -%%Page: 18 22 -TeXDict begin 18 21 bop 150 -116 a Fo(18)1544 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)581 -299 y Fm(1)95 b(-1)g(0)g(1)48 b(-1)285 b(#)48 b(i)f(<=)h(n-1)581 -408 y(1)95 b(-1)g(1)g(0)48 b(-1)285 b(#)48 b(j)f(>=)h(i+1)581 -518 y(1)143 b(0)47 b(-1)95 b(1)g(0)286 b(#)48 b(j)f(<=)h(n)390 -628 y(0)95 b(0)g(0)811 b(#)48 b(for)f(future)f(options)390 -847 y(1)390 956 y(#)h(Second)g(statement:)e(one)h(domain)390 -1066 y(6)h(6)1002 b(#)48 b(6)f(lines)g(and)g(3)g(columns)390 -1176 y(#)g(eq/in)g(i)95 b(j)g(k)g(n)h(1)581 1285 y(1)143 -b(1)95 b(0)g(0)g(0)48 b(-1)142 b(#)48 b(i)f(>=)h(1)581 -1395 y(1)95 b(-1)g(0)g(0)g(1)48 b(-1)142 b(#)48 b(i)f(<=)h(n-1)581 -1504 y(1)95 b(-1)g(1)g(0)g(0)48 b(-1)142 b(#)48 b(j)f(>=)h(i+1)581 -1614 y(1)143 b(0)47 b(-1)95 b(0)g(1)h(0)142 b(#)48 b(j)f(<=)h(n)581 -1724 y(1)95 b(-1)g(0)g(1)g(0)48 b(-1)142 b(#)48 b(k)f(>=)h(i+1)581 -1833 y(1)143 b(0)95 b(0)47 b(-1)95 b(1)h(0)142 b(#)48 -b(k)f(<=)h(n)390 1943 y(0)95 b(0)g(0)811 b(#)48 b(for)f(future)f -(options)390 2162 y(0)h(#)h(We)f(let)g(CLooG)f(set)h(the)g(iterator)f -(names)390 2381 y(#)h(---------------------)42 b(SCATTERING)j -(--------------------)390 2491 y(2)i(#)h(Scattering)d(functions)390 -2600 y(#)i(First)g(function)390 2710 y(8)g(13)954 b(#)48 -b(3)f(lines)g(and)g(3)g(columns)390 2819 y(#)g(eq/in)g(p1)g(p2)g(p3)g -(p4)h(p5)f(p6)g(p7)g(p8)95 b(i)g(j)g(n)h(1)581 2929 y(0)191 -b(1)95 b(0)g(0)g(0)g(0)g(0)h(0)f(0)47 b(-1)95 b(0)g(0)h(0)238 -b(#)47 b(p1)h(=)f(i)581 3039 y(0)191 b(0)95 b(1)g(0)g(0)g(0)g(0)h(0)f -(0)g(0)g(0)g(0)h(0)238 b(#)47 b(p2)h(=)f(0)581 3148 y(0)191 -b(0)95 b(0)g(1)g(0)g(0)g(0)h(0)f(0)47 b(-1)95 b(0)g(0)h(0)238 -b(#)47 b(p3)h(=)f(i)581 3258 y(0)191 b(0)95 b(0)g(0)g(1)g(0)g(0)h(0)f -(0)g(0)g(0)g(0)h(0)238 b(#)47 b(p4)h(=)f(0)581 3367 y(0)191 -b(0)95 b(0)g(0)g(0)g(1)g(0)h(0)f(0)g(0)47 b(-1)95 b(0)h(0)238 -b(#)47 b(p5)h(=)f(j)581 3477 y(0)191 b(0)95 b(0)g(0)g(0)g(0)g(1)h(0)f -(0)g(0)g(0)g(0)h(0)238 b(#)47 b(p6)h(=)f(0)581 3587 y(0)191 -b(0)95 b(0)g(0)g(0)g(0)g(0)h(1)f(0)g(0)g(0)g(0)h(0)238 -b(#)47 b(p7)h(=)f(0)581 3696 y(0)191 b(0)95 b(0)g(0)g(0)g(0)g(0)h(0)f -(1)g(0)g(0)g(0)h(0)238 b(#)47 b(p8)h(=)f(0)390 3806 y(#)g(Second)g -(function)390 3915 y(8)g(14)954 b(#)48 b(3)f(lines)g(and)g(3)g(columns) -390 4025 y(#)g(eq/in)g(p1)g(p2)g(p3)g(p4)h(p5)f(p6)g(p7)g(p8)95 -b(i)g(j)g(k)h(n)f(1)581 4134 y(0)191 b(1)95 b(0)g(0)g(0)g(0)g(0)h(0)f -(0)g(0)g(0)48 b(-1)95 b(0)g(0)g(#)47 b(p1)h(=)f(k)581 -4244 y(0)191 b(0)95 b(1)g(0)g(0)g(0)g(0)h(0)f(0)g(0)g(0)g(0)h(0)f(0)g -(#)47 b(p2)h(=)f(0)581 4354 y(0)191 b(0)95 b(0)g(1)g(0)g(0)g(0)h(0)f(0) -47 b(-1)95 b(0)g(0)h(0)f(0)g(#)47 b(p3)h(=)f(i)581 4463 -y(0)191 b(0)95 b(0)g(0)g(1)g(0)g(0)h(0)f(0)g(0)g(0)g(0)h(0)f(0)g(#)47 -b(p4)h(=)f(0)581 4573 y(0)191 b(0)95 b(0)g(0)g(0)g(1)g(0)h(0)f(0)g(0)47 -b(-1)95 b(0)h(0)f(0)g(#)47 b(p5)h(=)f(j)581 4682 y(0)191 -b(0)95 b(0)g(0)g(0)g(0)g(1)h(0)f(0)g(0)g(0)g(0)h(0)47 -b(-1)95 b(#)47 b(p6)h(=)f(1)581 4792 y(0)191 b(0)95 b(0)g(0)g(0)g(0)g -(0)h(1)f(0)g(0)g(0)48 b(-1)95 b(0)g(0)g(#)47 b(p7)h(=)f(k)581 -4902 y(0)191 b(0)95 b(0)g(0)g(0)g(0)g(0)h(0)f(1)g(0)g(0)g(0)h(0)f(0)g -(#)47 b(p8)h(=)f(0)390 5121 y(1)g(#)h(We)f(want)g(to)g(set)g(manually)e -(the)i(scattering)e(dimension)h(names)390 5230 y(p1)h(p2)g(p3)h(p4)f -(p5)g(p6)g(p7)g(p8)g(#)h(scattering)d(dimension)g(names)p -eop end -%%Page: 19 23 -TeXDict begin 19 22 bop 150 -116 a Fo(Chapter)30 b(2:)41 -b(Using)30 b(the)h(CLo)s(oG)g(Soft)m(w)m(are)1974 b(19)275 -299 y(Calling)38 b(CLo)s(oG,)f(with)g(for)g(instance)h(the)g(command)f -(line)g Fm(cloog)29 b(-fsp)g(2)h(gauss.cloog)35 b Fo(for)i(a)150 -408 y(b)s(etter)44 b(view)g(of)g(the)f(allo)s(cation)j(\(the)f(pro)s -(cessor)e(n)m(um)m(b)s(er)f(is)i(giv)m(en)h(b)m(y)e Fm(p1)p -Fo(\),)k(will)e(result)e(on)h(the)150 518 y(follo)m(wing)32 -b(target)h(co)s(de)e(that)g(actually)i(implemen)m(ts)e(the)g -(transformation.)42 b(A)31 b(minor)f(pro)s(cessing)h(on)150 -628 y(the)41 b(dimension)f Fm(p1)g Fo(to)i(implemen)m(t,)i(e.g.,)h(MPI) -c(calls,)k(whic)m(h)40 b(is)h(not)g(sho)m(wn)f(here)h(ma)m(y)h(result)e -(in)150 737 y(dramatic)31 b(sp)s(eedups)d(!)390 872 y -Fm(if)47 b(\(n)g(>=)h(2\))f({)485 981 y(p1)h(=)f(1)h(;)485 -1091 y(for)f(\(p5=2;p5<=n;p5++\))c({)581 1200 y(S1\(i)k(=)g(1,j)g(=)g -(p5\))g(;)485 1310 y(})390 1420 y(})390 1529 y(for)g -(\(p1=2;p1<=n-1;p1++\))42 b({)485 1639 y(for)47 b -(\(p3=1;p3<=p1-1;p3++\))c({)581 1748 y(for)k(\(p5=p3+1;p5<=n;p5++\))42 -b({)676 1858 y(S2\(i)47 b(=)g(p3,j)g(=)h(p5,k)e(=)i(p1\))f(;)581 -1968 y(})485 2077 y(})485 2187 y(for)g(\(p5=p1+1;p5<=n;p5++\))c({)581 -2296 y(S1\(i)k(=)g(p1,j)g(=)g(p5\))g(;)485 2406 y(})390 -2516 y(})390 2625 y(if)g(\(n)g(>=)h(2\))f({)485 2735 -y(p1)h(=)f(n)h(;)485 2844 y(for)f(\(p3=1;p3<=n-1;p3++\))c({)581 -2954 y(for)k(\(p5=p3+1;p5<=n;p5++\))42 b({)676 3064 y(S2\(i)47 -b(=)g(p3,j)g(=)h(p5,k)e(=)i(n\))f(;)581 3173 y(})485 -3283 y(})390 3392 y(})p eop end -%%Page: 20 24 -TeXDict begin 20 23 bop 150 -116 a Fo(20)1544 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)p -eop end -%%Page: 21 25 -TeXDict begin 21 24 bop 150 -116 a Fo(Chapter)30 b(3:)41 -b(Using)30 b(the)h(CLo)s(oG)g(Library)2016 b(21)150 299 -y Fk(3)80 b(Using)53 b(the)g(CLo)t(oG)g(Library)275 576 -y Fo(The)28 b(CLo)s(oG)h(Library)g(w)m(as)g(implemen)m(ted)h(to)g(allo) -m(w)g(the)g(user)e(to)i(call)h(CLo)s(oG)e(directly)h(from)e(his)150 -686 y(programs,)22 b(without)f(\014le)f(accesses)i(or)e(system)h -(calls.)38 b(The)20 b(user)g(only)g(needs)g(to)h(link)f(his)g(programs) -g(with)150 795 y(C)31 b(libraries.)45 b(The)32 b(CLo)s(oG)g(library)f -(mainly)h(pro)m(vides)g(one)g(function)f(\()p Fm -(cloog_program_generate)p Fo(\))150 905 y(whic)m(h)24 -b(tak)m(es)i(as)e(input)g(the)g(problem)g(description)g(with)g(some)h -(options,)h(and)d(returns)h(the)g(data)h(struc-)150 1014 -y(ture)i(corresp)s(onding)g(to)h(the)g(generated)h(co)s(de)f(\(a)g -Fm(CloogProgram)d Fo(structure\))i(whic)m(h)g(is)h(more)g(or)g(less)150 -1124 y(an)i(abstract)h(syn)m(tax)g(tree.)41 b(The)30 -b(user)f(can)h(w)m(ork)h(with)e(this)h(data)h(structure)f(and/or)g(use) -g(our)f(prett)m(y)150 1233 y(prin)m(ting)35 b(function)f(to)i(write)f -(the)g(\014nal)f(co)s(de)h(in)f(either)i(C)e(or)h(F)m(OR)-8 -b(TRAN.)36 b(Some)e(other)h(functions)150 1343 y(are)j(pro)m(vided)f -(for)h(con)m(v)m(enience)i(reasons.)62 b(These)38 b(functions)f(as)h(w) -m(ell)g(as)g(the)g(data)g(structures)g(are)150 1453 y(describ)s(ed)29 -b(in)h(this)h(section.)150 1746 y Fn(3.1)68 b(CLo)t(oG)45 -b(Data)h(Structures)e(Description)275 2004 y Fo(In)30 -b(this)h(section,)i(w)m(e)f(describ)s(e)f(the)g(data)h(structures)f -(used)f(b)m(y)h(the)h(lo)s(op)f(generator)i(to)f(represen)m(t)150 -2114 y(and)e(to)h(pro)s(cess)f(a)h(co)s(de)f(generation)i(problem.)150 -2367 y Fc(3.1.1)63 b(Clo)s(ogMatrix)390 2586 y Fm(#define)46 -b(CloogMatrix)f(Matrix)150 2735 y Fo(The)e Fm(CloogMatrix)d -Fo(structure)j(is)g(directly)h(the)f(P)m(olyLib)h Fm(Matrix)e -Fo(data)h(structure)g(\(see)h([Wil93],)150 2844 y(page)h(39\).)84 -b(This)44 b(structure)g(is)g(dev)m(oted)h(to)h(represen)m(t)e(a)h(set)g -(of)f(constrain)m(ts.)84 b(It)45 b(is)f(de\014ned)f(in)150 -2954 y Fm(polylib/types.h)26 b Fo(as)31 b(the)f(follo)m(wing:)390 -3103 y Fm(struct)46 b(matrix)390 3212 y({)h(unsigned)f(NbRows)g(;)191 -b(/*)47 b(Number)f(of)h(rows.)g(*/)485 3322 y(unsigned)f(NbColumns)f(;) -j(/*)f(Number)f(of)h(columns.)f(*/)485 3431 y(Value)h(**)g(p)g(;)430 -b(/*)47 b(Array)f(of)h(pointers)f(to)h(the)g(matrix)f(rows.)h(*/)485 -3541 y(Value)g(*)g(p_Init)f(;)239 b(/*)47 b(Matrix)f(rows)h -(contiguously)d(in)j(memory.)f(*/)485 3650 y(int)h(p_Init_size)e(;)191 -b(/*)47 b(For)g(internal)e(use.)i(*/)390 3760 y(})390 -3870 y(typedef)f(struct)g(matrix)g(Matrix;)150 4013 y -Fo(The)31 b(whole)h(matrix)g(is)g(stored)g(in)f(memory)h(ro)m(w)g -(after)g(ro)m(w)g(at)h(the)f Fm(p_Init)e Fo(address.)44 -b Fm(p)31 b Fo(is)h(an)f(arra)m(y)150 4123 y(of)k(p)s(oin)m(ters)g -(where)f Fm(p[i])g Fo(p)s(oin)m(ts)g(to)i(the)f(\014rst)f(elemen)m(t)j -(of)e(the)g Fg(i)2492 4090 y Ff(th)2595 4123 y Fo(ro)m(w.)54 -b Fm(NbRows)33 b Fo(and)h Fm(NbColumns)150 4232 y Fo(are)g(resp)s -(ectiv)m(ely)h(the)e(n)m(um)m(b)s(er)f(of)i(ro)m(ws)f(and)g(columns)g -(of)h(the)f(matrix.)51 b(Eac)m(h)34 b(ro)m(w)f(corresp)s(onds)f(to)150 -4342 y(a)k(constrain)m(t.)58 b(The)36 b(\014rst)f(elemen)m(t)i(of)f -(eac)m(h)h(ro)m(w)f(is)f(an)h(equalit)m(y/inequalit)m(y)j(tag.)59 -b(The)35 b(constrain)m(t)150 4451 y(is)e(an)f(equalit)m(y)i -Fg(p)p Fo(\()p Fg(x)p Fo(\))c(=)e(0)33 b(if)g(the)g(\014rst)f(elemen)m -(t)i(is)e(0,)i(but)e(it)h(is)g(an)f(inequalit)m(y)i Fg(p)p -Fo(\()p Fg(x)p Fo(\))c Fl(\025)e Fo(0)33 b(if)g(the)g(\014rst)150 -4561 y(elemen)m(t)k(is)e(1.)57 b(The)35 b(next)g(elemen)m(ts)i(are)f -(the)g(unkno)m(wn)e(co)s(e\016cien)m(ts,)k(follo)m(w)m(ed)f(b)m(y)f -(the)f(parameter)150 4671 y(co)s(e\016cien)m(ts,)d(then)e(the)h(scalar) -g(co)s(e\016cien)m(t.)43 b(F)-8 b(or)31 b(instance,)g(the)g(follo)m -(wing)h(three)e(constrain)m(ts:)1611 4850 y Fd(8)1611 -4925 y(<)1611 5074 y(:)1700 4911 y Fl(\000)p Fg(i)20 -b Fo(+)g Fg(m)144 b Fo(=)25 b(0)1700 5021 y Fl(\000)p -Fg(j)h Fo(+)20 b Fg(n)157 b Fl(\025)25 b Fo(0)1700 5130 -y Fg(j)h Fo(+)20 b Fg(i)g Fl(\000)g Fg(k)94 b Fl(\025)25 -b Fo(0)150 5340 y(w)m(ould)30 b(b)s(e)g(represen)m(ted)g(b)m(y)g(the)h -(follo)m(wing)h(ro)m(ws:)p eop end -%%Page: 22 26 -TeXDict begin 22 25 bop 150 -116 a Fo(22)1544 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)390 -299 y Fm(#)47 b(eq/in)95 b(i)142 b(j)h(k)g(m)g(n)g(cst)581 -408 y(0)191 b(0)95 b(-1)142 b(0)h(1)g(0)191 b(0)581 518 -y(1)143 b(-1)f(0)h(0)g(0)g(1)191 b(0)581 628 y(1)g(1)142 -b(1)96 b(-1)142 b(0)h(0)191 b(0)150 837 y Fo(T)-8 b(o)43 -b(b)s(e)f(able)h(to)h(pro)m(vide)e(di\013eren)m(t)h(precision)g(v)m -(ersion)g(\(CLo)s(oG)g(supp)s(orts)e(32)j(bits,)i(64)d(bits)g(and)150 -946 y(arbitrary)25 b(precision)h(through)f(the)h(GMP)g(library\),)h -(the)f Fm(Value)e Fo(t)m(yp)s(e)i(dep)s(ends)e(on)i(the)g -(con\014guration)150 1056 y(options)40 b(\(it)g(ma)m(y)h(b)s(e)e -Fm(long)29 b(int)39 b Fo(for)g(32)h(bits)g(v)m(ersion,)i -Fm(long)30 b(long)f(int)39 b Fo(for)g(64)h(bits)g(v)m(ersion,)j(and)150 -1165 y Fm(mpz_t)32 b Fo(for)g(m)m(ultiple)i(precision)f(v)m(ersion\).) -49 b(The)33 b Fm(p_Init_size)d Fo(\014eld)i(is)h(needed)g(b)m(y)g(the)g -(P)m(olyLib)g(to)150 1275 y(free)c(the)g(memory)g(allo)s(cated)i(b)m(y) -d Fm(mpz_init)f Fo(in)i(the)g(m)m(ultiple)g(precision)g(release.)42 -b(Set)29 b(this)f(\014eld)h(to)h(0)150 1385 y(if)h(y)m(ou)g(are)g -Fi(not)40 b Fo(using)30 b(m)m(ultiple)i(precision.)42 -b(Set)31 b(this)f(\014eld)h(to)g(the)g(size)h(of)f(the)g -Fm(p_Init)e Fo(arra)m(y)i(if)g(y)m(ou)150 1494 y(initialized)h(it)f(y)m -(ourself)g(and)e(if)i(y)m(ou)g(are)f(using)g(the)h(m)m(ultiple)g -(precision)f(v)m(ersion.)150 1868 y Fc(3.1.2)63 b(Clo)s(ogDomain)390 -2087 y Fm(struct)46 b(cloogdomain)390 2197 y({)h(Polyhedron)e(*)j -(polyhedron)d(;)95 b(/*)47 b(The)g(polyhedral)e(domain.)h(*/)390 -2307 y(})h(;)390 2416 y(typedef)f(struct)g(cloogdomain)f(CloogDomain)f -(;)150 2620 y Fo(The)23 b Fm(CloogDomain)e Fo(structure)i(con)m(tains)h -(a)g(P)m(olyLib)h Fm(Polyhedron)20 b Fo(data)25 b(structure)e(whic)m(h) -g(represen)m(ts)150 2730 y(a)31 b(p)s(olyhedral)f(domain)h(\(a)h(union) -e(of)h(p)s(olyhedra\))f(in)h(b)s(oth)f(constrain)m(t)i(represen)m -(tation)g(and)e(its)h(dual)150 2839 y(ra)m(y)24 b(represen)m(tation)h -(\(see)g([Wil93],)i(page)e(39\).)39 b(It)24 b(is)g(de\014ned)e(in)i -Fm(polylib/types.h)19 b Fo(as)24 b(the)g(follo)m(wing:)390 -3049 y Fm(struct)46 b(polyhedron)390 3158 y({)h(unsigned)f(Dimension,) -379 b(/*)47 b(Number)f(of)i(dimensions.)c(*/)915 3268 -y(NbConstraints,)187 b(/*)47 b(Number)f(of)i(constraints.)c(*/)915 -3377 y(NbRays,)523 b(/*)47 b(Number)f(of)i(rays.)e(*/)915 -3487 y(NbEq,)619 b(/*)47 b(Number)f(of)i(vertices)d(\(?\).)i(*/)915 -3597 y(NbBid)f(;)525 b(/*)47 b(Number)f(of)i(extremal)d(rays)i(\(?\).)f -(*/)485 3706 y(Value)h(**)g(Constraint)e(;)286 b(/*)47 -b(Pointers)f(to)h(constraints.)d(*/)485 3816 y(Value)j(**)g(Ray)g(;)620 -b(/*)47 b(Pointers)f(to)h(rays.)f(*/)485 3925 y(Value)h(*)g(p_Init)f(;) -525 b(/*)47 b(Constraints)e(and)i(rays)g(contiguously.)d(*/)485 -4035 y(int)j(p_Init_size)e(;)477 b(/*)47 b(For)g(internal)f(use.)g(*/) -485 4145 y(struct)h(polyhedron)e(*)i(next)g(;)g(/*)g(Next)g(component)e -(of)i(the)g(union.)f(*/)390 4254 y(})390 4364 y(typedef)g(struct)g -(polyhedron)f(Polyhedron;)150 4573 y Fo(The)34 b(constrain)m(t)h -(represen)m(tation)g(is)g(quite)f(the)h(same)f(as)h(in)f(the)g -Fm(Matrix)f Fo(data)h(structure)g(\(see)h(Sec-)150 4682 -y(tion)29 b(3.1.1)h([Clo)s(ogMatrix],)h(page)e(21\).)41 -b(The)28 b(n)m(um)m(b)s(er)f(of)i(ro)m(ws)f(is)g Fm(NbConstraints)d -Fo(and)j(the)g(n)m(um)m(b)s(er)150 4792 y(of)40 b(columns)f(in)g(the)g -Fm(Polyhedron)e Fo(structure)i(is)g Fm(Dimension+2)e -Fo(\(the)j(+2)f(comes)i(from)d(the)i(equal-)150 4902 -y(it)m(y/inequalit)m(y)i(tag)f(and)e(the)h(scalar)g(co)s(e\016cien)m -(t\).)71 b(As)39 b(in)g(the)h Fm(Matrix)e Fo(structure,)j(The)e(data)i -(are)150 5011 y(stored)c(in)f(memory)g(con)m(tiguously)i(at)g(the)e -Fm(p_Init)f Fo(address)h(and)g(the)h Fm(p_Init_size)c -Fo(\014eld)j(is)h(used)150 5121 y(for)k(memory)f(deallo)s(cation)j(in)e -(the)g(m)m(ultiple)g(precision)g(case)h(\(see)g(Section)g(3.1.1)g([Clo) -s(ogMatrix],)150 5230 y(page)32 b(21\).)44 b(F)-8 b(or)32 -b(a)g(b)s(etter)f(understanding)f(of)h(the)g(dual)g(ra)m(y)h(represen)m -(tation,)h(the)e(user)f(ma)m(y)i(refer)f(to)150 5340 -y(the)g(P)m(olyLib)f(do)s(cumen)m(tation.)p eop end -%%Page: 23 27 -TeXDict begin 23 26 bop 150 -116 a Fo(Chapter)30 b(3:)41 -b(Using)30 b(the)h(CLo)s(oG)g(Library)2016 b(23)150 299 -y Fc(3.1.3)63 b(Clo)s(ogDomainList)390 518 y Fm(struct)46 -b(cloogdomainlist)390 628 y({)h(CloogDomain)e(*)j(domain)e(;)485 -737 y(struct)h(cloogdomainlist)c(*)48 b(next)e(;)390 -847 y(})h(;)390 956 y(typedef)f(struct)g(cloogdomainlist)e -(CloogDomainList)f(;)150 1078 y Fo(The)30 b(Clo)s(ogDomainList)i -(structure)e(represen)m(ts)g(a)h Fm(NULL)e Fo(terminated)i(link)m(ed)g -(list)g(of)f(domains.)150 1281 y Fc(3.1.4)63 b(Clo)s(ogStatemen)m(t)390 -1500 y Fm(struct)46 b(cloogstatement)390 1610 y({)h(int)g(number)f(;) -859 b(/*)47 b(The)g(statement)f(unique)g(number.)g(*/)485 -1719 y(void)h(*)h(usr)e(;)859 b(/*)47 b(Pointer)f(for)h(user's)f -(convenience.)f(*/)485 1829 y(struct)i(cloogstatement)c(*)48 -b(next)f(;/*)f(Next)h(element)f(of)h(the)g(linked)f(list.)g(*/)390 -1939 y(})h(;)390 2048 y(typedef)f(struct)g(cloogstatement)e -(CloogStatement)g(;)150 2170 y Fo(The)33 b Fm(CloogStatement)c -Fo(structure)j(represen)m(ts)h(a)h Fm(NULL)d Fo(terminated)j(link)m(ed) -f(list)h(of)f(statemen)m(ts.)51 b(In)150 2280 y(CLo)s(oG,)42 -b(a)g(statemen)m(t)i(is)d(only)h(de\014ned)e(b)m(y)i(its)g(unique)f(n)m -(um)m(b)s(er)f(\()p Fm(number)p Fo(\).)73 b(The)41 b(user)g(can)h(use) -150 2389 y(the)d(p)s(oin)m(ter)f Fm(usr)g Fo(for)g(his)g(o)m(wn)g(con)m -(v)m(enience)j(to)e(link)f(his)g(o)m(wn)h(statemen)m(t)h(represen)m -(tation)g(to)f(the)150 2499 y(corresp)s(onding)f Fm(CloogStatement)e -Fo(structure.)66 b(The)39 b(whole)h(managemen)m(t)g(of)g(the)f -Fm(usr)g Fo(p)s(oin)m(ter)g(is)150 2609 y(under)33 b(the)h(resp)s -(onsibilit)m(y)g(of)h(the)f(user,)h(in)e(particular,)j(CLo)s(oG)f(nev)m -(er)f(tries)h(to)g(prin)m(t,)g(to)f(allo)s(cate)150 2718 -y(or)c(to)h(free)g(a)g(memory)f(blo)s(c)m(k)h(p)s(oin)m(ted)f(b)m(y)g -Fm(usr)p Fo(.)150 2921 y Fc(3.1.5)63 b(Clo)s(ogBlo)s(c)m(k)390 -3140 y Fm(struct)46 b(cloogblock)390 3250 y({)h(CloogStatement)d(*)k -(statement)d(;)j(/*)f(Statement)e(list)i(of)g(the)g(block.)f(*/)485 -3359 y(CloogMatrix)f(*)j(scattering)d(;)143 b(/*)47 b(Scattering)e -(function)g(of)i(the)g(block.)f(*/)485 3469 y(int)h(depth)g(;)859 -b(/*)47 b(Original)e(block)i(depth.*/)390 3578 y(})g(;)390 -3688 y(typedef)f(struct)g(cloogblock)f(CloogBlock)g(;)150 -3810 y Fo(The)28 b Fm(CloogBlock)d Fo(structure)i(represen)m(ts)h(a)h -(statemen)m(t)h(blo)s(c)m(k.)40 b(In)28 b(a)g(statemen)m(t)i(blo)s(c)m -(k,)f(ev)m(ery)g(state-)150 3919 y(men)m(ts)f(ha)m(v)m(e)h(the)f(same)h -(iteration)g(domain)f(and)f(the)h(same)h(scattering)g(function)f -(\(actually)-8 b(,)31 b(the)d(scat-)150 4029 y(tering)j(functions)e(ma) -m(y)i(di\013er)f(only)g(b)m(y)g(a)g(scalar)h(co)s(e\016cien)m(t)h(if)e -(it)h(just)e(precises)h(the)h(ordering)f(of)g(the)150 -4139 y(statemen)m(ts)36 b(within)f(the)f(blo)s(c)m(k\).)55 -b Fm(statement)32 b Fo(is)j(the)g(statemen)m(t)h(list)g(where)e(the)h -(statemen)m(t)h(order)150 4248 y(matters,)30 b Fm(scattering)d -Fo(is)i(one)h(of)f(the)h(statemen)m(t)h(scattering)g(functions)e(and)g -Fm(depth)e Fo(is)j(the)f(n)m(um)m(b)s(er)150 4358 y(of)i(dimensions)e -(of)i(the)f(iteration)i(domain)e(\(only)h(the)g(unkno)m(wn,)e(not)i -(the)f(tag/parameters/scalar\).)150 4560 y Fc(3.1.6)63 -b(Clo)s(ogBlo)s(c)m(kList)390 4780 y Fm(struct)46 b(cloogdblocklist)390 -4889 y({)h(CloogBlock)e(*)j(block)e(;)485 4999 y(struct)h -(cloogblocklist)c(*)48 b(next)f(;)390 5108 y(})g(;)390 -5218 y(typedef)f(struct)g(cloogblocklist)e(CloogBlockList)g(;)150 -5340 y Fo(The)30 b(Clo)s(ogBlo)s(c)m(kList)j(structure)d(represen)m(ts) -g(a)h Fm(NULL)e Fo(terminated)i(link)m(ed)f(list)h(of)g(blo)s(c)m(ks.)p -eop end -%%Page: 24 28 -TeXDict begin 24 27 bop 150 -116 a Fo(24)1544 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)150 -299 y Fc(3.1.7)63 b(Clo)s(ogLo)s(op)390 518 y Fm(struct)46 -b(cloogloop)390 628 y({)h(CloogDomain)e(*)j(domain)e(;)334 -b(/*)47 b(Iteration)e(domain.)h(*/)485 737 y(int)h(stride)f(;)812 -b(/*)47 b(Loop)f(stride.)g(*/)485 847 y(CloogBlock)f(*)j(block)e(;)430 -b(/*)47 b(Included)e(statement)h(block.*/)485 956 y(struct)h(cloogloop) -e(*)i(inner)g(;)143 b(/*)47 b(Loop)f(at)i(the)e(next)h(level.)f(*/)485 -1066 y(struct)h(cloogloop)e(*)i(next)g(;)191 b(/*)47 -b(Next)f(loop)h(at)g(the)g(same)g(level.)f(*/)390 1176 -y(})h(;)390 1285 y(typedef)f(struct)g(cloogloop)f(CloogLoop)g(;)150 -1677 y Fo(The)37 b Fm(CloogLoop)f Fo(structure)h(represen)m(ts)h(a)g -(lo)s(op.)64 b(First)38 b(of)g(all,)j(a)d(lo)s(op)g(has)g(an)g -(iteration)h(domain)150 1787 y(\()p Fm(domain)p Fo(\).)81 -b(The)43 b(iterator's)j(stride)e(for)f(lo)s(op)h(incremen)m(t)h(is)f -Fm(stride)p Fo(.)80 b(The)43 b(lo)s(op)i(can)f(include)g(a)150 -1896 y(statemen)m(t)39 b(blo)s(c)m(k)e(in)f(the)h(\014eld)g -Fm(block)p Fo(.)58 b(If)36 b(there)h(is)g(no)g(included)f(statemen)m(t) -i(blo)s(c)m(k,)h Fm(block)d Fo(is)g(set)150 2006 y(to)e -Fm(NULL)p Fo(.)49 b Fm(inner)32 b Fo(is)i(a)g(p)s(oin)m(ter)f(to)i(the) -e(inner)g(lo)s(op,)i(and)e Fm(next)f Fo(a)i(p)s(oin)m(ter)f(to)i(the)e -(next)h(lo)s(op)g(in)f(the)150 2116 y(textual)i(order.)50 -b(If)33 b(there)h(are)f(no)h(inner)f(lo)s(op)g(or)h(no)f(next)h(lo)s -(op,)h(the)f(corresp)s(onding)e(p)s(oin)m(ter)i(is)f(set)150 -2225 y(to)e Fm(NULL)p Fo(.)150 2975 y Fc(3.1.8)63 b(Clo)s(ogNames)390 -3194 y Fm(struct)46 b(cloognames)390 3304 y({)h(int)g(nb_scattering)e -(;)429 b(/*)47 b(Scattering)e(dimension)g(number.)h(*/)485 -3414 y(int)h(nb_iterators)e(;)477 b(/*)47 b(Iterator)f(number.)f(*/)485 -3523 y(int)i(nb_parameters)e(;)429 b(/*)47 b(Parameter)e(number.)h(*/) -485 3633 y(char)h(**)g(scattering)e(;)382 b(/*)47 b(The)g(scattering)e -(dimension)g(names.)h(*/)485 3742 y(char)h(**)g(iterators)f(;)429 -b(/*)47 b(The)g(iterator)e(names.)i(*/)485 3852 y(char)g(**)g -(parameters)e(;)382 b(/*)47 b(The)g(parameter)e(names.)h(*/)390 -3962 y(})h(;)390 4071 y(typedef)f(struct)g(cloognames)f(CloogNames)g(;) -150 4463 y Fo(The)40 b Fm(CloogNames)d Fo(structure)j(represen)m(ts)g -(the)g(scattering)i(dimension,)h(the)d(iterator)i(and)d(the)i(pa-)150 -4573 y(rameter)32 b(names)f(in)h(the)f(\014nal)h(program.)44 -b Fm(nb_scattering)27 b Fo(\(resp)s(ectiv)m(ely)34 b -Fm(nb_iterators)28 b Fo(and)j Fm(nb_)150 4682 y(parameters)p -Fo(\))c(is)j(the)h(n)m(um)m(b)s(er)d(of)i(scattering)i(dimensions)d(n)m -(um)m(b)s(er)f(\(resp)s(ectiv)m(ely)k(the)e(iterator)i(and)150 -4792 y(parameter)g(n)m(um)m(b)s(er\))f(and)g(of)h(elemen)m(ts)g(in)g -(the)g(corresp)s(onding)e(arra)m(y)i(of)g(strings)g Fm(scattering)c -Fo(\(re-)150 4902 y(sp)s(ectiv)m(ely)37 b Fm(iterators)c -Fo(and)i Fm(parameters)p Fo(\).)54 b(The)35 b Fg(i)2039 -4869 y Ff(th)2143 4902 y Fo(scattering)i(dimension)e(name)h(will)g(b)s -(e)f(asso-)150 5011 y(ciated)j(with)f(the)g(to)g(the)g(dimension)f -Fg(i)h Fo(of)g(the)g(scattering)i(function.)59 b(The)36 -b Fg(i)2919 4978 y Ff(th)3025 5011 y Fo(iterator)i(name)f(will)150 -5121 y(b)s(e)d(asso)s(ciated)i(with)e(the)h(dimension)e -Fg(i)i Fo(of)g(the)f(iteration)i(domain.)53 b(The)34 -b Fg(i)2820 5088 y Ff(th)2923 5121 y Fo(parameter)h(name)g(will)150 -5230 y(b)s(e)29 b(asso)s(ciated)i(with)f(the)g(dimension)f -Fg(i)h Fo(of)g(the)g(con)m(text)i(p)s(olyhedron.)39 b(The)29 -b(user)g(has)h(to)g(ensure)f(that)150 5340 y(there)i(are)f(enough)g -(scattering)i(dimension,)e(iterator)i(and)e(parameter)h(names.)p -eop end -%%Page: 25 29 -TeXDict begin 25 28 bop 150 -116 a Fo(Chapter)30 b(3:)41 -b(Using)30 b(the)h(CLo)s(oG)g(Library)2016 b(25)150 299 -y Fc(3.1.9)63 b(Clo)s(ogProgram)390 518 y Fm(struct)46 -b(cloogprogram)390 628 y({)h(char)g(language)f(;)668 -b(/*)47 b(The)g(language)e(of)i(the)g(program.)f(*/)485 -737 y(int)95 b(scattdims)45 b(;)621 b(/*)47 b(Scattering)e(dimension)g -(number.)h(*/)485 847 y(CloogNames)93 b(*)48 b(names)e(;)382 -b(/*)47 b(Iterators)e(and)i(parameters)e(names.)h(*/)485 -956 y(CloogDomain)f(*)j(context)d(;)287 b(/*)47 b(The)g(context)e(of)j -(the)f(program.)e(*/)485 1066 y(CloogLoop)141 b(*)48 -b(loop)e(;)430 b(/*)47 b(The)g(loops)f(of)h(the)g(program.)f(*/)485 -1176 y(CloogBlockList)e(*)k(blocklist)d(;)j(/*)f(The)g(statement)e -(block)h(list.)h(*/)390 1285 y(})g(;)390 1395 y(typedef)f(struct)g -(cloogprogram)e(CloogProgram)h(;)150 1525 y Fo(The)28 -b Fm(CloogProgram)c Fo(structure)k(represen)m(ts)g(a)g(static)i(con)m -(trol)g(program)d(k)m(ernel.)41 b Fm(language)26 b Fo(precises)150 -1635 y(the)43 b(language)i(\()p Fm(c)e Fo(for)g(C)f(or)h -Fm(f)g Fo(for)g(F)m(OR)-8 b(TRAN\).)44 b Fm(scattdims)d -Fo(giv)m(es)j(the)f(n)m(um)m(b)s(er)f(of)h(scattering)150 -1745 y(dimensions.)58 b Fm(context)35 b Fo(is)h(a)h(p)s(oin)m(ter)f(to) -h(the)g(constrain)m(ts)g(on)g(the)f(program)h(parameters,)h(it)f(can't) -150 1854 y(b)s(e)d(the)i Fm(NULL)d Fo(p)s(oin)m(ter)i(ev)m(en)h(if)f -(there)g(are)h(no)e(constrain)m(ts)i(on)f(parameters.)55 -b(In)35 b(suc)m(h)f(a)i(case,)h(set)f(a)150 1964 y(p)s(olyhedron)20 -b(with)h(as)g(man)m(y)h(dimensions)e(as)i(there)f(are)h(parameters,)i -(with)c(an)i Fi(always)k(true)i Fo(constrain)m(t)150 -2073 y(lik)m(e)i(1)c Fl(\025)f Fo(0)30 b(\(this)f(is)g(necessary)h -(since)g(the)f(n)m(um)m(b)s(er)f(of)h(parameters)h(is)f(deduced)f(from) -h(the)h(dimension)150 2183 y(n)m(um)m(b)s(er)22 b(of)i(the)f(con)m -(text)i(constrain)m(ts\).)40 b Fm(loop)22 b Fo(is)i(a)f(p)s(oin)m(ter)h -(to)g(the)f(\014rst)g(lo)s(op)g(of)h(the)f(program.)38 -b Fm(names)150 2292 y Fo(is)c(a)h(p)s(oin)m(ter)f(to)h(the)f(v)-5 -b(arious)34 b(elemen)m(t)i(names)e(\(scattering)i(dimension,)e -(iterators,)j(parameters\))e(of)150 2402 y(the)29 b(\014nal)g(program.) -40 b Fm(names)27 b Fo(can)j(b)s(e)e(the)h Fm(NULL)f Fo(p)s(oin)m(ter)h -(if)g(the)g(user)f(do)h(not)h(w)m(an)m(t)f(to)h(use)f(our)f(prett)m(y) -150 2512 y(prin)m(ting)i(function.)40 b Fm(blocklist)28 -b Fo(is)i(the)g(link)m(ed)g(list)h(of)f(all)h(the)f(statemen)m(t)i(blo) -s(c)m(k)e(structures.)40 b(As)30 b(an)150 2621 y(example,)h(let)h(us)d -(consider)i(the)f(follo)m(wing)i(lo)s(op)e(nest:)390 -2757 y Fm(for)47 b(\(i=0;)f(i<=n;)h(i++\))f({)485 2867 -y(for)h(\(j=0;)g(j<=n;)f(j++\))h({)581 2976 y(S1)g(;)581 -3086 y(S2)g(;)485 3196 y(})485 3305 y(for)g(\(j=n+1;)f(j<=2*n;)g(j++\)) -h({)581 3415 y(S3)g(;)485 3524 y(})390 3634 y(})150 3764 -y Fo(The)33 b(next)i(\014gure)e(giv)m(es)i(a)f(p)s(ossible)g(represen)m -(tation)h(in)f(memory)f(for)h(this)g(program)g(thanks)f(to)i(the)150 -3874 y(CLo)s(oG)h(data)h(structures)f(\(it)h(has)f(b)s(een)g(actually)i -(prin)m(ted)e(b)m(y)g(the)g Fm(cloog_program_print)c -Fo(func-)150 3984 y(tion\).)44 b(In)31 b(this)g(\014gure,)g(`)p -Fm(+--)f(CloogLoop)p Fo(')f(denotes)j(an)f(`)p Fm(inner)p -Fo(')f(lo)s(op,)i(while)g(a)f(`)p Fm(CloogLoop)p Fo(')f(on)h(the)150 -4093 y(same)g(column)f(p)s(oin)m(ted)g(b)m(y)h(an)f(arro)m(w)g(denotes) -h(a)g(`)p Fm(next)p Fo(')f(lo)s(op:)390 4207 y Fa(+--)40 -b(CloogProgram)390 4294 y(|)275 b(|)390 4381 y(|)g(Language:)41 -b(c)390 4468 y(|)275 b(|)390 4555 y(|)g(Scattering)41 -b(dimension)h(number:)e(0)390 4643 y(|)275 b(|)390 4730 -y(|)g(+--)40 b(CloogNames)390 4817 y(|)275 b(|)g(|)390 -4904 y(|)g(|)g(Scattering)41 b(dimension)g(number:)g(0)390 -4991 y(|)275 b(|)g(|)390 5078 y(|)g(|)g(+--)40 b(No)f(scattering)j -(string)390 5166 y(|)275 b(|)g(|)390 5253 y(|)g(|)g(Iterator)41 -b(number)f(-----------:)i(2)390 5340 y(|)275 b(|)g(|)p -eop end -%%Page: 26 30 -TeXDict begin 26 29 bop 150 -116 a Fo(26)1544 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)390 -299 y Fa(|)275 b(|)g(+--)40 b(Iterator)h(strings)f(------:)h(i)f(j)390 -386 y(|)275 b(|)g(|)390 473 y(|)g(|)g(Parameter)41 b(number)g -(----------:)g(1)390 560 y(|)275 b(|)g(|)390 648 y(|)g(|)g(+--)40 -b(Parameter)h(strings)g(-----:)f(n)390 735 y(|)275 b(|)390 -822 y(|)g(+--)40 b(Context)390 909 y(|)275 b(|)g([)118 -b(1)157 b(1)118 b(-2)79 b(])390 996 y(|)275 b(|)g([)118 -b(1)157 b(0)g(1)79 b(])390 1083 y(|)275 b(|)390 1171 -y(|)g(+--)40 b(CloogLoop)390 1258 y(|)275 b(|)g(|)390 -1345 y(|)g(|)g(+--)40 b(CloogDomain)390 1432 y(|)275 -b(|)g(|)f([)118 b(1)g(-1)158 b(1)f(0)78 b(])390 1519 -y(|)275 b(|)g(|)f([)118 b(1)158 b(1)f(0)g(0)78 b(])390 -1606 y(|)275 b(|)g(|)f([)118 b(1)158 b(0)f(0)g(1)78 b(])390 -1694 y(|)275 b(|)g(|)390 1781 y(|)g(|)g(Stride:)40 b(1)390 -1868 y(|)275 b(|)g(|)390 1955 y(|)g(|)g(+--)40 b(Null)g(CloogBlock)390 -2042 y(|)275 b(|)g(|)390 2130 y(|)g(|)g(+--)40 b(CloogLoop)390 -2217 y(|)275 b(|)g(|)f(|)390 2304 y(|)h(|)g(|)f(+--)40 -b(CloogDomain)390 2391 y(|)275 b(|)g(|)f(|)h([)118 b(1)157 -b(0)g(1)h(0)f(0)78 b(])390 2478 y(|)275 b(|)g(|)f(|)h([)118 -b(1)157 b(0)118 b(-1)158 b(1)f(0)78 b(])390 2565 y(|)275 -b(|)g(|)f(|)h([)118 b(1)157 b(0)g(0)h(0)f(1)78 b(])390 -2653 y(|)275 b(|)g(|)f(|)390 2740 y(|)h(|)g(|)f(Stride:)41 -b(1)390 2827 y(|)275 b(|)g(|)f(|)390 2914 y(|)h(|)g(|)f(+--)40 -b(Null)h(CloogBlock)390 3001 y(|)275 b(|)g(|)f(|)390 -3088 y(|)h(|)g(|)f(+--)40 b(CloogLoop)390 3176 y(|)275 -b(|)g(|)f(|)h(|)390 3263 y(|)g(|)g(|)f(|)h(+--)40 b(CloogDomain)390 -3350 y(|)275 b(|)g(|)f(|)h(|)g([)118 b(1)157 b(0)g(0)g(0)h(1)78 -b(])390 3437 y(|)275 b(|)g(|)f(|)h(|)390 3524 y(|)g(|)g(|)f(|)h -(Stride:)41 b(1)390 3611 y(|)275 b(|)g(|)f(|)h(|)390 -3699 y(|)g(|)g(|)f(|)h(+--)40 b(CloogBlock)390 3786 y(|)275 -b(|)g(|)f(|)h(|)g(|)390 3873 y(|)g(|)g(|)f(|)h(|)g(+--)40 -b(CloogStatement)i(1)390 3960 y(|)275 b(|)g(|)f(|)h(|)g(|)393 -b(|)390 4047 y(|)275 b(|)g(|)f(|)h(|)g(|)393 b(V)390 -4134 y(|)275 b(|)g(|)f(|)h(|)g(|)118 b(CloogStatement)42 -b(2)390 4222 y(|)275 b(|)g(|)f(|)h(|)g(|)390 4309 y(|)g(|)g(|)f(|)h(|)g -(+--)40 b(Null)g(scattering)i(function)390 4396 y(|)275 -b(|)g(|)f(|)h(|)g(|)390 4483 y(|)g(|)g(|)f(|)h(|)g(Depth:)41 -b(2)390 4570 y(|)275 b(|)g(|)f(|)h(|)390 4658 y(|)g(|)g(|)f(|)390 -4745 y(|)h(|)g(|)f(V)390 4832 y(|)h(|)g(|)118 b(CloogLoop)390 -4919 y(|)275 b(|)g(|)f(|)390 5006 y(|)h(|)g(|)f(+--)40 -b(CloogDomain)390 5093 y(|)275 b(|)g(|)f(|)h([)118 b(1)157 -b(0)118 b(-1)158 b(2)f(0)78 b(])390 5181 y(|)275 b(|)g(|)f(|)h([)118 -b(1)157 b(0)g(1)118 b(-1)h(-1)78 b(])390 5268 y(|)275 -b(|)g(|)f(|)h([)118 b(1)157 b(0)g(0)h(0)f(1)78 b(])p -eop end -%%Page: 27 31 -TeXDict begin 27 30 bop 150 -116 a Fo(Chapter)30 b(3:)41 -b(Using)30 b(the)h(CLo)s(oG)g(Library)2016 b(27)390 299 -y Fa(|)275 b(|)g(|)f(|)390 386 y(|)h(|)g(|)f(Stride:)41 -b(1)390 473 y(|)275 b(|)g(|)f(|)390 560 y(|)h(|)g(|)f(+--)40 -b(Null)h(CloogBlock)390 648 y(|)275 b(|)g(|)f(|)390 735 -y(|)h(|)g(|)f(+--)40 b(CloogLoop)390 822 y(|)275 b(|)g(|)f(|)h(|)390 -909 y(|)g(|)g(|)f(|)h(+--)40 b(CloogDomain)390 996 y(|)275 -b(|)g(|)f(|)h(|)g([)118 b(1)157 b(0)g(0)g(0)h(1)78 b(])390 -1083 y(|)275 b(|)g(|)f(|)h(|)390 1171 y(|)g(|)g(|)f(|)h(Stride:)41 -b(1)390 1258 y(|)275 b(|)g(|)f(|)h(|)390 1345 y(|)g(|)g(|)f(|)h(+--)40 -b(CloogBlock)390 1432 y(|)275 b(|)g(|)f(|)h(|)g(|)390 -1519 y(|)g(|)g(|)f(|)h(|)g(+--)40 b(CloogStatement)i(3)390 -1606 y(|)275 b(|)g(|)f(|)h(|)g(|)390 1694 y(|)g(|)g(|)f(|)h(|)g(+--)40 -b(Null)g(scattering)i(function)390 1781 y(|)275 b(|)g(|)f(|)h(|)g(|)390 -1868 y(|)g(|)g(|)f(|)h(|)g(Depth:)41 b(2)390 1955 y(|)275 -b(|)g(|)f(|)h(|)390 2042 y(|)g(|)g(|)f(|)390 2130 y(|)h(|)g(|)390 -2217 y(|)g(|)390 2304 y(|)150 2519 y Fc(3.1.10)63 b(Clo)s(ogOptions)390 -2738 y Fm(struct)46 b(cloogoptions)390 2848 y({)h(int)g(l)h(;)1002 -b(/*)47 b(-l)g(option.)476 b(*/)485 2957 y(int)47 b(f)h(;)1002 -b(/*)47 b(-f)g(option.)476 b(*/)485 3067 y(int)47 b(strides)f(;)716 -b(/*)47 b(-strides)f(option.)189 b(*/)485 3176 y(int)47 -b(esp)g(;)907 b(/*)47 b(-esp)g(option.)380 b(*/)485 3286 -y(int)47 b(csp)g(;)907 b(/*)47 b(-csp)g(option.)380 b(*/)485 -3395 y(int)47 b(fsp)g(;)907 b(/*)47 b(-fsp)g(option.)380 -b(*/)485 3505 y(int)47 b(otl)g(;)907 b(/*)47 b(-otl)g(option.)380 -b(*/)485 3615 y(int)47 b(block)g(;)811 b(/*)47 b(-block)f(option.)285 -b(*/)485 3724 y(int)47 b(cpp)g(;)907 b(/*)47 b(-cpp)g(option.)380 -b(*/)485 3834 y(int)47 b(compilable)e(;)573 b(/*)47 b(-compilable)e -(option.)h(*/)390 3943 y(})h(;)390 4053 y(typedef)f(struct)g -(cloogoptions)e(CloogOptions)h(;)150 4179 y Fo(The)35 -b Fm(CloogOptions)d Fo(structure)j(con)m(tains)i(all)f(the)g(p)s -(ossible)f(options)h(to)g(rule)g(CLo)s(oG's)f(b)s(eha)m(viour)150 -4289 y(\(see)c(Section)h(2.3)f([Calling)g(CLo)s(oG],)g(page)h(10\).)41 -b(As)31 b(a)g(reminder,)e(the)i(default)f(v)-5 b(alues)31 -b(are:)225 4420 y Fl(\017)60 b Fg(l)27 b Fo(=)e Fl(\000)p -Fo(1)31 b(\(optimize)h(con)m(trol)f(un)m(til)g(the)g(innermost)f(lo)s -(ops\),)225 4551 y Fl(\017)60 b Fg(f)35 b Fo(=)25 b(1)30 -b(\(optimize)i(con)m(trol)g(from)e(the)h(outermost)g(lo)s(ops\),)225 -4683 y Fl(\017)60 b Fg(str)s(ides)25 b Fo(=)g(0)31 b(\(use)f(only)g -(unit)g(strides\),)225 4814 y Fl(\017)60 b Fg(esp)25 -b Fo(=)g(0)31 b(\(do)f(not)h(spread)f(complex)h(equalities\),)225 -4946 y Fl(\017)60 b Fg(csp)25 b Fo(=)g(1)31 b(\(spread)f(constan)m(t)h -(v)-5 b(alues\),)225 5077 y Fl(\017)60 b Fg(f)10 b(sp)24 -b Fo(=)h(1)31 b(\(start)g(to)g(spread)f(from)g(the)g(\014rst)g -(iterators\),)225 5209 y Fl(\017)60 b Fg(otl)27 b Fo(=)e(1)31 -b(\(simplify)f(lo)s(ops)g(running)f(only)i(once\).)225 -5340 y Fl(\017)60 b Fg(bl)r(ock)29 b Fo(=)c(0)30 b(\(do)h(not)g(mak)m -(e)g(statemen)m(t)h(blo)s(c)m(ks)f(when)e(not)i(necessary\).)p -eop end -%%Page: 28 32 -TeXDict begin 28 31 bop 150 -116 a Fo(28)1544 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)225 -299 y Fl(\017)60 b Fg(cpp)25 b Fo(=)g(0)31 b(\(do)f(not)h(generate)h(a) -f(compilable)g(part)f(of)h(co)s(de)g(using)e(prepro)s(cessor\).)225 -437 y Fl(\017)60 b Fg(compil)r(abl)r(e)26 b Fo(=)f(0)30 -b(\(do)h(not)g(generate)h(a)e(compilable)i(co)s(de\).)150 -710 y Fn(3.2)68 b(CLo)t(oG)45 b(F)-11 b(unctions)44 b(Description)150 -1057 y Fc(3.2.1)63 b(clo)s(og)p 748 1057 37 5 v 55 w(program)p -1255 1057 V 55 w(generate)390 1276 y Fm(CloogProgram)140 -b(*)47 b(cloog_program_generate)390 1386 y(\()g(CloogProgram)e(*)i -(program,)332 b(/*)47 b(Input)g(program.)e(*/)485 1495 -y(CloogOptions)g(*)i(options)380 b(/*)47 b(Options.)f(*/)390 -1605 y(\))h(;)150 1740 y Fo(The)40 b Fm(cloog_program_generate)35 -b Fo(function)41 b(generates)h(the)f(data)h(structure)e(of)h(the)h -(source)f(co)s(de)150 1850 y(that)e(scans)f(the)h(input)e(p)s(olyhedra) -g(p)s(oin)m(ted)h(b)m(y)g Fm(program)f Fo(according)i(to)g(the)f -(options)h(p)s(oin)m(ted)f(b)m(y)150 1960 y Fm(options)p -Fo(.)f(The)26 b(pro)s(cess)g(is)g(made)h(directly)f(on)h(the)f(input)f -(structure)h(p)s(oin)m(ted)g(b)m(y)h Fm(program)p Fo(,)e(th)m(us)h(the) -150 2069 y(original)31 b(structure)f(is)g(no)g(longer)h(a)m(v)-5 -b(ailable)33 b(after)e(a)f(call)i(to)f(this)f(function.)40 -b(It)30 b(returns)f(a)i(p)s(oin)m(ter)f(to)150 2179 y(a)h -Fm(CloogProgram)c Fo(structure)j(con)m(taining)i(the)e(solution)h(in)f -(CLo)s(oG)h(structures.)275 2320 y(The)25 b(input)g Fm(CloogProgram)d -Fo(structure)k(m)m(ust)f(ha)m(v)m(e)i(only)f(one)g(lo)s(op)g(lev)m(el)i -(\(no)e(inner)f(lo)s(ops\):)39 b(there)150 2429 y(is)j(one)g(lo)s(op)g -(p)s(er)f(statemen)m(t)j(blo)s(c)m(k.)76 b(F)-8 b(or)43 -b(a)f(giv)m(en)h(blo)s(c)m(k,)j(the)c(corresp)s(onding)f(lo)s(op)h -(carries)h(the)150 2539 y(iteration)33 b(domain,)g(the)e(statemen)m(t)j -(blo)s(c)m(k,)f(and)e(a)h(lo)s(op)g(stride)g(initialized)h(to)g(1.)45 -b(F)-8 b(or)33 b(instance,)g(the)150 2649 y(input)26 -b Fm(CloogProgram)e Fo(structure)i(that)i(ha)m(v)m(e)g(b)s(een)e(sen)m -(t)h(to)h Fm(cloog_program_generate)21 b Fo(to)28 b(ac)m(hiev)m(e)150 -2758 y(the)33 b(\014nal)g(structure)f(and)h(co)s(de)g(sho)m(wn)f(as)h -(example)h(in)f(the)g Fm(CloogProgram)c Fo(structure)k(description)150 -2868 y(\(see)e(Section)h(3.1.9)g([Clo)s(ogProgram],)g(page)f(25\))g(w)m -(as)g(the)g(follo)m(wing)h(one:)390 2986 y Fa(+--)40 -b(CloogProgram)390 3073 y(|)275 b(|)390 3161 y(|)g(Language:)41 -b(c)390 3248 y(|)275 b(|)390 3335 y(|)g(Scattering)41 -b(dimension)h(number:)e(0)390 3422 y(|)275 b(|)390 3509 -y(|)g(+--)40 b(CloogNames)390 3597 y(|)275 b(|)g(|)390 -3684 y(|)g(|)g(Scattering)41 b(dimension)g(number:)g(0)390 -3771 y(|)275 b(|)g(|)390 3858 y(|)g(|)g(+--)40 b(No)f(scattering)j -(string)390 3945 y(|)275 b(|)g(|)390 4032 y(|)g(|)g(Iterator)41 -b(number)f(-----------:)i(2)390 4120 y(|)275 b(|)g(|)390 -4207 y(|)g(|)g(+--)40 b(Iterator)h(strings)f(------:)h(i)f(j)390 -4294 y(|)275 b(|)g(|)390 4381 y(|)g(|)g(Parameter)41 -b(number)g(----------:)g(1)390 4468 y(|)275 b(|)g(|)390 -4555 y(|)g(|)g(+--)40 b(Parameter)h(strings)g(-----:)f(n)390 -4643 y(|)275 b(|)390 4730 y(|)g(+--)40 b(Context)390 -4817 y(|)275 b(|)g([)157 b(1)196 b(1)157 b(-2)79 b(])390 -4904 y(|)275 b(|)390 4991 y(|)g(+--)40 b(CloogLoop)390 -5078 y(|)275 b(|)g(|)390 5166 y(|)g(|)g(+--)40 b(CloogDomain)390 -5253 y(|)275 b(|)g(|)f([)158 b(1)196 b(1)g(0)h(0)f(0)79 -b(])390 5340 y(|)275 b(|)g(|)f([)158 b(1)f(-1)196 b(0)h(1)f(0)79 -b(])p eop end -%%Page: 29 33 -TeXDict begin 29 32 bop 150 -116 a Fo(Chapter)30 b(3:)41 -b(Using)30 b(the)h(CLo)s(oG)g(Library)2016 b(29)390 299 -y Fa(|)275 b(|)g(|)f([)158 b(1)196 b(0)g(1)h(0)f(0)79 -b(])390 386 y(|)275 b(|)g(|)f([)158 b(1)196 b(0)157 b(-1)197 -b(1)f(0)79 b(])390 473 y(|)275 b(|)g(|)390 560 y(|)g(|)g(Stride:)40 -b(1)390 648 y(|)275 b(|)g(|)390 735 y(|)g(|)g(+--)40 -b(CloogBlock)390 822 y(|)275 b(|)g(|)f(|)390 909 y(|)h(|)g(|)f(+--)40 -b(CloogStatement)j(1)390 996 y(|)275 b(|)g(|)f(|)393 -b(|)390 1083 y(|)275 b(|)g(|)f(|)393 b(V)390 1171 y(|)275 -b(|)g(|)f(|)118 b(CloogStatement)43 b(2)390 1258 y(|)275 -b(|)g(|)f(|)390 1345 y(|)h(|)g(|)f(+--)40 b(Null)h(scattering)g -(function)390 1432 y(|)275 b(|)g(|)f(|)390 1519 y(|)h(|)g(|)f(Depth:)41 -b(2)390 1606 y(|)275 b(|)g(|)390 1694 y(|)g(|)g(V)390 -1781 y(|)g(|)118 b(CloogLoop)390 1868 y(|)275 b(|)g(|)390 -1955 y(|)g(|)g(+--)40 b(CloogDomain)390 2042 y(|)275 -b(|)g(|)f([)158 b(1)196 b(1)g(0)h(0)f(0)79 b(])390 2130 -y(|)275 b(|)g(|)f([)158 b(1)f(-1)196 b(0)h(1)f(0)79 b(])390 -2217 y(|)275 b(|)g(|)f([)158 b(1)196 b(0)g(1)157 b(-1)h(-1)79 -b(])390 2304 y(|)275 b(|)g(|)f([)158 b(1)196 b(0)157 -b(-1)197 b(2)f(0)79 b(])390 2391 y(|)275 b(|)g(|)390 -2478 y(|)g(|)g(Stride:)40 b(1)390 2565 y(|)275 b(|)g(|)390 -2653 y(|)g(|)g(+--)40 b(CloogBlock)390 2740 y(|)275 b(|)g(|)f(|)390 -2827 y(|)h(|)g(|)f(+--)40 b(CloogStatement)j(3)390 2914 -y(|)275 b(|)g(|)f(|)390 3001 y(|)h(|)g(|)f(+--)40 b(Null)h(scattering)g -(function)390 3088 y(|)275 b(|)g(|)f(|)390 3176 y(|)h(|)g(|)f(Depth:)41 -b(2)390 3263 y(|)275 b(|)g(|)390 3350 y(|)g(|)390 3437 -y(|)150 4037 y Fc(3.2.2)63 b(clo)s(og)p 748 4037 37 5 -v 55 w(program)p 1255 4037 V 55 w(pprin)m(t)390 4256 -y Fm(void)47 b(cloog_program_pprint)390 4366 y(\()g(FILE)g(*)h(file,) -857 b(/*)47 b(Output)g(file.)f(*/)485 4475 y(CloogProgram)f(*)i -(program,)332 b(/*)47 b(Program)f(to)h(print.)g(*/)485 -4585 y(CloogOptions)e(*)i(options)380 b(/*)47 b(Options.)f(*/)390 -4694 y(\))h(;)150 5011 y Fo(The)25 b(function)h Fm -(cloog_program_pprint)21 b Fo(is)26 b(a)g(prett)m(y)h(prin)m(ter)e(for) -h Fm(CloogProgram)d Fo(structures)i(when)150 5121 y(it)43 -b(is)g(a)g(solution)h(pro)m(vided)e(b)m(y)h(the)g Fm -(cloog_program_generate)37 b Fo(function.)77 b(It)43 -b(prin)m(ts)g(the)g(co)s(de)150 5230 y(or)35 b(pseudo-co)s(de)h(in)f -(the)h(\014le)f(p)s(oin)m(ted)g(b)m(y)h Fm(file)e Fo(\(p)s(ossibly)h -Fm(stdout)p Fo(\))f(with)h(regards)h(to)g(the)g(options)150 -5340 y(p)s(oin)m(ted)30 b(b)m(y)h Fm(options)p Fo(.)p -eop end -%%Page: 30 34 -TeXDict begin 30 33 bop 150 -116 a Fo(30)1544 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)150 -299 y Fc(3.2.3)63 b(clo)s(og)p 748 299 37 5 v 55 w(program)p -1255 299 V 55 w(scatter)390 518 y Fm(void)47 b(cloog_program_scatter) -390 628 y(\()g(CloogProgram)e(*)i(program,)332 b(/*)47 -b(Input)g(program.)e(*/)485 737 y(CloogDomainList)f(*)k(scattering,)c -(/*)j(Additional)e(scattering)g(functions.)g(*/)485 847 -y(char)i(**)g(names)g(;)715 b(/*)47 b(Additional)e(dimension)h(names.)g -(*/)390 956 y(\))h(;)150 1093 y Fo(The)38 b(function)h -Fm(cloog_program_scatter)33 b Fo(applies)39 b(scattering)i(functions)d -(to)i(the)f Fm(CloogProgram)150 1203 y Fo(structure)26 -b(p)s(oin)m(ted)h(b)m(y)g Fm(program)p Fo(.)38 b(Original)27 -b(domains)g(of)g Fm(program)e Fo(are)i(freed.)39 b(Scattering)28 -b(functions)150 1312 y(are)f(inside)g(the)g Fm(CloogDomainList)22 -b Fo(structure)27 b(p)s(oin)m(ted)f(b)m(y)h Fm(scattering)p -Fo(.)37 b(There)26 b(m)m(ust)h(b)s(e)f(as)h(man)m(y)150 -1422 y(scattering)33 b(functions)e(in)g(the)g Fm(CloogDomainList)c -Fo(structure)k(as)g(lo)s(ops)h(\(i.e.)44 b(iteration)33 -b(domains\))e(in)150 1532 y(the)g Fm(CloogProgram)c Fo(structure.)40 -b(The)30 b(\014rst)g(scattering)i(function)e(of)h(the)f(list)i(will)e -(b)s(e)g(applied)h(to)g(the)150 1641 y(iteration)39 b(domain)e(of)h -(the)f(\014rst)g(lo)s(op)g(in)g(the)h(program,)h(and)e(so)h(on.)61 -b Fm(names)36 b Fo(giv)m(es)j(the)e(scattering)150 1751 -y(dimension)20 b(names)h(as)g(an)f(arra)m(y)h(of)g(strings.)38 -b(If)20 b Fm(names)f Fo(is)i Fm(NULL)p Fo(,)g(names)g(are)g -(automatically)j(generated:)150 1860 y(the)31 b(name)f(of)h(the)f -Fg(n)864 1827 y Ff(th)962 1860 y Fo(scattering)i(dimension)e(will)h(b)s -(e)e Fm(cn)p Fo(.)150 2100 y Fc(3.2.4)63 b(clo)s(og)p -748 2100 V 55 w(program)p 1255 2100 V 55 w(read)390 2319 -y Fm(CloogProgram)44 b(*)k(cloog_program_read\(FILE)41 -b(*\))48 b(;)150 2461 y Fo(The)34 b Fm(cloog_program_read)c -Fo(function)k(reads)h(the)g(program)f(data)i(from)e(a)h(CLo)s(oG)g -(input)f(\014le)h(\(see)150 2571 y(Section)e(2.2)g([W)-8 -b(riting)34 b(The)e(Input)f(File],)j(page)f(6\).)48 b(It)32 -b(tak)m(es)i(as)e(input)g(a)g(p)s(oin)m(ter)g(to)i(the)e(\014le)g(it)h -(has)150 2681 y(to)e(read)f(\(p)s(ossibly)g Fm(stdin)p -Fo(\),)g(and)g(return)f(a)i(p)s(oin)m(ter)f(to)h(the)g(read)f -Fm(CloogProgram)d Fo(structure.)150 2920 y Fc(3.2.5)63 -b(F)-10 b(rom)41 b(Matrices)g(to)g(Domains)h(and)f(Con)m(v)m(ersely)390 -3139 y Fm(CloogMatrix)k(*)i(cloog_domain_domain2matri)o(x\(Cl)o(oog)o -(Doma)o(in)42 b(*\))47 b(;)390 3249 y(CloogDomain)e(*)i -(cloog_domain_matrix2domai)o(n\(Cl)o(oog)o(Matr)o(ix)42 -b(*\))47 b(;)150 3391 y Fo(Tw)m(o)34 b(functions)g(are)h(pro)m(vided)f -(to)h(translate)g(a)g Fm(CloogDomain)c Fo(data)k(structure)f(to)h(a)g -Fm(CloogMatrix)150 3501 y Fo(data)29 b(structure)f(and)f(con)m(v)m -(ersely)-8 b(.)42 b(Eac)m(h)29 b(function)f(tak)m(es)i(as)e(input)f(a)i -(p)s(oin)m(ter)f(to)h(the)g(data)f(structure)150 3610 -y(to)37 b(translate)g(and)e(returns)g(as)i(output)e(a)i(p)s(oin)m(ter)f -(to)g(the)h(translated)f(data)h(structure.)57 b(The)36 -b(input)150 3720 y(data)43 b(structure)f(if)g(neither)g(mo)s(di\014ed)f -(nor)h(freed.)76 b(They)41 b(ma)m(y)i(b)s(e)f(quite)h(useful)e(for)h -(e.g.)77 b(prett)m(y)150 3830 y(prin)m(ting)30 b(since)h(it)g(is)f -(more)h(con)m(v)m(enien)m(t)h(in)e(constrain)m(t)i(\(matrix\))f -(represen)m(tation.)150 4069 y Fc(3.2.6)63 b(Allo)s(cation)41 -b(and)g(Initialization)f(F)-10 b(unctions)390 4288 y -Fm(CloogStructure)44 b(*)j(cloog_structure_malloc\(\))42 -b(;)150 4431 y Fo(Eac)m(h)35 b(CLo)s(oG)g(data)g(structure)g(has)f(an)h -(allo)s(cation)i(and)d(initialization)j(function)e(as)f(sho)m(wn)g(ab)s -(o)m(v)m(e,)150 4540 y(where)28 b Fm(Structure)e Fo(and)i -Fm(structure)e Fo(ha)m(v)m(e)k(to)f(b)s(e)f(replaced)h(b)m(y)f(the)h -(name)g(of)g(the)f(con)m(v)m(enien)m(t)j(struc-)150 4650 -y(ture)42 b(\(without)h(`)p Fm(Cloog)p Fo(')f(pre\014x\))g(for)g -(instance)h Fm(CloogLoop)28 b(*)i(cloog_loop_malloc\(\))25 -b(;)p Fo(.)77 b(These)150 4759 y(functions)42 b(return)g(p)s(oin)m -(ters)h(to)g(an)g(allo)s(cated)i(structure)d(with)h(\014elds)f(set)h -(to)h(con)m(v)m(enien)m(t)h(default)150 4869 y(v)-5 b(alues.)50 -b Fh(Using)34 b(those)g(functions)f(is)g(mandatory)h -Fo(to)g(supp)s(ort)d(in)m(ternal)k(managemen)m(t)f(\014elds)f(and)g(to) -150 4979 y(a)m(v)m(oid)d(up)m(w)m(ard)e(compatibilit)m(y)k(problems)c -(if)h(new)f(\014elds)g(app)s(ear.)40 b(An)29 b(exception)h(is)f -Fm(cloog_matrix_)150 5088 y(malloc)i Fo(since)i(the)g -Fm(CloogMatrix)d Fo(comes)j(directly)h(from)e(the)h(P)m(olyLib.)48 -b(It)33 b(tak)m(es)h(t)m(w)m(o)g(parameters:)150 5198 -y(the)d(n)m(um)m(b)s(er)e(of)h(ro)m(ws)h(and)e(columns)h(of)h(the)f -(matrix)h(w)m(e)g(w)m(an)m(t)g(to)g(allo)s(cate:)390 -5340 y Fm(CloogMatrix)45 b(*)i(cloog_matrix_malloc\(unsig)o(ned)41 -b(nbrows,)46 b(unsigned)g(nbcolumns\);)p eop end -%%Page: 31 35 -TeXDict begin 31 34 bop 150 -116 a Fo(Chapter)30 b(3:)41 -b(Using)30 b(the)h(CLo)s(oG)g(Library)2016 b(31)150 299 -y Fc(3.2.7)63 b(Memory)41 b(Deallo)s(cation)h(F)-10 b(unctions)390 -518 y Fm(void)47 b(cloog_structure_free\(Cl)o(oogS)o(tru)o(ctur)o(e)42 -b(*\))47 b(;)150 649 y Fo(Eac)m(h)31 b(CLo)s(oG)f(data)g(structure)g -(has)g(a)g(deallo)s(cation)i(function)e(as)g(sho)m(wn)f(ab)s(o)m(v)m -(e,)j(where)d Fm(Structure)150 759 y Fo(and)45 b Fm(structure)d -Fo(ha)m(v)m(e)k(to)g(b)s(e)f(replaced)g(b)m(y)h(the)f(name)g(of)g(the)h -(con)m(v)m(enien)m(t)h(structure)e(\(without)150 868 -y(`)p Fm(Cloog)p Fo(')31 b(pre\014x\))g(for)h(instance)g -Fm(void)e(cloog_loop_free\(CloogLo)o(op)24 b(*\))30 b(;)p -Fo(.)45 b(These)31 b(functions)h(free)150 978 y(the)j(allo)s(cated)h -(memory)e(for)g(the)h(structure)f(pro)m(vided)g(as)g(input.)52 -b(They)34 b(free)g(memory)h(recursiv)m(ely)-8 b(,)150 -1088 y(i.e.)48 b(they)33 b(also)g(free)g(the)f(allo)s(cated)j(memory)d -(for)g(the)h(in)m(ternal)g(structures.)47 b Fh(Using)32 -b(those)h(functions)150 1197 y(is)j(mandatory)f Fo(to)i(a)m(v)m(oid)g -(memory)e(leaks)i(on)f(in)m(ternal)g(managemen)m(t)h(\014elds)e(and)g -(to)i(a)m(v)m(oid)g(up)m(w)m(ard)150 1307 y(compatibilit)m(y)c -(problems)c(if)i(new)e(\014elds)h(app)s(ear.)150 1521 -y Fc(3.2.8)63 b(Prin)m(ting)41 b(F)-10 b(unctions)390 -1740 y Fm(void)47 b(cloog_structure_print\(F)o(ILE)41 -b(*,)47 b(CloogStructure)d(*\))k(;)150 1871 y Fo(Eac)m(h)29 -b(CLo)s(oG)g(data)h(structure)e(has)h(a)g(prin)m(ting)g(function)f(as)h -(sho)m(wn)f(ab)s(o)m(v)m(e,)j(where)d Fm(Structure)f -Fo(and)150 1981 y Fm(structure)18 b Fo(ha)m(v)m(e)k(to)f(b)s(e)f -(replaced)h(b)m(y)f(the)h(name)g(of)f(the)h(con)m(v)m(enien)m(t)i -(structure)d(\(without)h(`)p Fm(Cloog)p Fo(')e(pre-)150 -2090 y(\014x\))32 b(for)g(instance)h Fm(void)c(cloog_loop_print\(FILE)c -(*,)k(CloogLoop)f(*\))i(;)p Fo(.)46 b(These)32 b(functions)f(prin)m(t) -150 2200 y(the)44 b(p)s(oin)m(ted)f(structure)g(\(and)g(its)g(\014elds) -g(recursiv)m(ely\))i(to)f(the)f(\014le)h(pro)m(vided)f(as)g(input)f -(\(p)s(ossibly)150 2310 y Fm(stdout)p Fo(\).)150 2557 -y Fn(3.3)68 b(Example)46 b(of)f(Library)g(Utilization)275 -2798 y Fo(Here)32 b(is)h(a)f(basic)h(example)g(sho)m(wing)f(ho)m(w)h -(it)f(is)h(p)s(ossible)e(to)i(use)f(the)h(CLo)s(oG)f(library)-8 -b(,)33 b(assuming)150 2907 y(that)c(a)f(standard)f(installation)j(has)e -(b)s(een)f(done.)40 b(The)28 b(follo)m(wing)h(C)f(program)f(reads)h(a)h -(CLo)s(oG)f(input)150 3017 y(\014le)36 b(on)g(the)h(standard)e(input,)i -(then)f(prin)m(ts)f(the)i(solution)f(on)g(the)h(standard)e(output.)58 -b(Options)36 b(are)150 3127 y(preselected)f(to)g(the)f(default)h(v)-5 -b(alues)34 b(of)g(the)g(CLo)s(oG)h(soft)m(w)m(are.)53 -b(This)33 b(example)i(is)f(pro)m(vided)g(in)g(the)150 -3236 y Fm(example)28 b Fo(directory)j(of)g(the)f(CLo)s(oG)h -(distribution.)390 3367 y Fm(/*)47 b(example.c)e(*/)390 -3477 y(#)i(include)f()390 3587 y(#)h(include)f -()390 3806 y(int)h(main\(\))390 3915 y({)g(CloogProgram) -e(*)i(program)f(;)485 4025 y(CloogOptions)f(*)i(options)f(;)485 -4244 y(/*)i(Setting)d(options)h(and)h(reading)f(program)g -(informations.)e(*/)485 4354 y(options)i(=)i(cloog_options_malloc\(\)) -41 b(;)485 4463 y(program)46 b(=)i(cloog_program_read\(stdi)o(n,op)o -(tion)o(s\))41 b(;)485 4682 y(/*)48 b(Generating)d(and)i(printing)e -(the)i(code.)f(*/)485 4792 y(program)g(=)i(cloog_program_generate\()o -(prog)o(ram,)o(opt)o(ions)o(\))42 b(;)485 4902 y -(cloog_program_pprint\(stdou)o(t,pr)o(ogr)o(am,o)o(ptio)o(ns\))f(;)485 -5121 y(cloog_options_free\(options)o(\))h(;)485 5230 -y(cloog_program_free\(program)o(\))g(;)485 5340 y(return)47 -b(0;)p eop end -%%Page: 32 36 -TeXDict begin 32 35 bop 150 -116 a Fo(32)1544 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)390 -299 y Fm(})150 433 y Fo(The)g(compilation)i(command)e(could)g(b)s(e:) -390 568 y Fm(gcc)47 b(example.c)e(-lcloog)h(-o)h(example)150 -702 y Fo(A)30 b(calling)i(command)f(with)f(the)g(input)g(\014le)g -(test.clo)s(og)j(could)e(b)s(e:)390 837 y Fm(more)47 -b(test.cloog)e(|)i(./example)p eop end -%%Page: 33 37 -TeXDict begin 33 36 bop 150 -116 a Fo(Chapter)30 b(4:)41 -b(Installing)31 b(CLo)s(oG)2355 b(33)150 299 y Fk(4)80 -b(Installing)53 b(CLo)t(oG)150 665 y Fn(4.1)68 b(License)275 -912 y Fo(First)35 b(of)g(all,)j(it)e(w)m(ould)f(b)s(e)f(v)m(ery)i(kind) -e(to)i(refer)f(the)h(follo)m(wing)g(pap)s(er)e(in)h(an)m(y)h -(publication)f(that)150 1021 y(result)25 b(from)f(the)i(use)e(of)h(the) -g(CLo)s(oG)h(soft)m(w)m(are)g(or)f(its)g(library)-8 b(,)27 -b(see)e([Bas04],)k(page)c(39)h(\(a)g(bibtex)f(en)m(try)150 -1131 y(is)36 b(pro)m(vided)g(b)s(ehind)f(the)i(title)h(page)f(of)f -(this)h(man)m(ual,)h(along)f(with)g(cop)m(yrigh)m(t)g(notice,)j(and)c -(in)g(the)150 1240 y(CLo)s(oG)31 b(home)f Fm(http://www.CLooG.org)p -Fo(.)275 1377 y(This)f(program)h(is)g(free)h(soft)m(w)m(are;)h(y)m(ou)e -(can)h(redistribute)f(it)g(and/or)h(mo)s(dify)e(it)i(under)e(the)h -(terms)150 1486 y(of)36 b(the)g(GNU)g(General)h(Public)e(License)i(v)m -(ersion)f(2)g(as)g(published)e(b)m(y)i(the)g(F)-8 b(ree)37 -b(Soft)m(w)m(are)g(F)-8 b(ounda-)150 1596 y(tion.)47 -b(This)31 b(program)h(is)g(distributed)g(in)f(the)i(hop)s(e)e(that)i -(it)g(will)f(b)s(e)g(useful,)g(but)g(WITHOUT)f(ANY)150 -1706 y(W)-10 b(ARRANTY;)33 b(without)g(ev)m(en)g(the)f(implied)h(w)m -(arran)m(t)m(y)g(of)g(MER)m(CHANT)-8 b(ABILITY)33 b(or)f(FITNESS)150 -1815 y(F)m(OR)e(A)g(P)-8 b(AR)g(TICULAR)30 b(PURPOSE.)f(See)h(the)g -(GNU)g(General)h(Public)f(License)g(for)g(more)g(details.)150 -1925 y Fm(http://www.gnu.org/copyl)o(eft/)o(gpl.)o(htm)o(l)150 -2187 y Fn(4.2)68 b(Requiremen)l(ts)150 2525 y Fc(4.2.1)63 -b(P)m(olyLib)40 b(\(mandatory\))275 2772 y Fo(T)-8 b(o)33 -b(successfully)h(install)g(CLo)s(oG,)g(the)f(user)g(need)g(\014rstly)g -(to)h(install)h(P)m(olyLib)e(v)m(ersion)h(5.22.1)i(or)150 -2881 y(ab)s(o)m(v)m(e)k(\(default)g(64)f(bits)g(v)m(ersion)h(is)e -(satisfying)i(as)f(w)m(ell)h(as)f(32)h(bits)f(or)g(GMP)g(m)m(ultiple)h -(precision)150 2991 y(v)m(ersion\).)65 b(P)m(olylib)39 -b(can)g(b)s(e)e(do)m(wnloaded)h(freely)h(at)g Fm -(http://icps.u-strasbg.fr)o(/Po)o(lyLi)o(b/)32 b Fo(or)150 -3100 y Fm(http://www.irisa.fr/poly)o(lib/)o Fo(.)64 b(Once)40 -b(do)m(wnloaded)g(and)f(unpac)m(k)m(ed)h(\(e.g.)71 b(using)39 -b(the)i(`)p Fm(tar)150 3210 y(-zxvf)29 b(polylib-5.22.1.tar.gz)p -Fo(')19 b(command\),)25 b(the)g(user)e(can)i(compile)g(it)f(b)m(y)g(t)m -(yping)h(the)f(follo)m(wing)150 3320 y(commands)30 b(on)g(the)h(P)m -(olyLib's)g(ro)s(ot)g(directory:)225 3456 y Fl(\017)60 -b Fm(./configure)225 3592 y Fl(\017)g Fm(make)225 3727 -y Fl(\017)g Fo(And)29 b(as)i(ro)s(ot:)41 b Fm(make)29 -b(install)275 3890 y Fo(The)i(P)m(olyLib)h(default)g(installation)i(is) -e Fm(/usr/local)p Fo(.)42 b(This)31 b(directory)i(ma)m(y)f(not)g(b)s(e) -f(inside)h(y)m(our)150 3999 y(library)e(path.)40 b(T)-8 -b(o)31 b(\014x)f(the)h(problem,)f(the)g(user)g(should)f(set)390 -4136 y Fm(export)46 b(LD_LIBRARY_PATH=$LD_LIBRA)o(RY_)o(PATH)o(:/us)o -(r/l)o(ocal)o(/lib)150 4273 y Fo(if)30 b(y)m(our)h(shell)f(is,)h(e.g.,) -h(bash)d(or)390 4409 y Fm(setenv)46 b(LD_LIBRARY_PATH)e -($LD_LIBRARY_PATH:/usr/l)o(ocal)o(/lib)150 4546 y Fo(if)22 -b(y)m(our)g(shell)g(is,)h(e.g.,)i(tcsh.)38 b(Add)21 b(the)h(line)g(to)h -(y)m(our)f(.bashrc)f(or)h(.tcshrc)g(\(or)g(whatev)m(er)h(con)m(v)m -(enien)m(t)g(\014le\))150 4655 y(to)g(mak)m(e)g(this)f(c)m(hange)i(p)s -(ermanen)m(t.)37 b(Another)23 b(solution)f(is)h(to)g(ask)f(P)m(olyLib)h -(to)g(install)g(in)f(the)h(standard)150 4765 y(path)30 -b(b)m(y)g(using)g(the)h(pre\014x)e(option)i(of)f(the)h(con\014gure)f -(script:)41 b(`)p Fm(./configure)27 b(--prefix=/usr)p -Fo('.)275 4902 y(CLo)s(oG)40 b(mak)m(es)i(in)m(tensiv)m(e)g(calls)f(to) -h(p)s(olyhedral)e(op)s(erations,)j(and)d(P)m(olyLib)h(functions)f(do)h -(the)150 5011 y(job.)52 b(P)m(olylib)36 b(is)e(a)h(free)f(library)g -(written)h(in)f(C)g(for)g(the)h(manipulation)f(of)h(p)s(olyhedra.)51 -b(The)34 b(library)150 5121 y(is)k(op)s(erating)g(on)f(ob)5 -b(jects)38 b(lik)m(e)h(v)m(ectors,)i(matrices,)g(lattices,)h(p)s -(olyhedra,)d(Z-p)s(olyhedra,)f(unions)f(of)150 5230 y(p)s(olyhedra)43 -b(and)h(a)g(lot)i(of)e(other)g(in)m(termediary)h(structures.)82 -b(It)44 b(pro)m(vides)g(functions)g(for)g(all)h(the)150 -5340 y(imp)s(ortan)m(t)31 b(op)s(erations)f(on)g(these)h(structures.)p -eop end -%%Page: 34 38 -TeXDict begin 34 37 bop 150 -116 a Fo(34)1544 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)150 -299 y Fc(4.2.2)63 b(GMP)41 b(Library)g(\(optional\))275 -543 y Fo(T)-8 b(o)31 b(b)s(e)f(able)i(to)g(deal)f(with)g(insanely)g -(large)h(co)s(e\016cien)m(t,)i(the)d(user)f(will)i(need)e(to)i(install) -g(the)f(GNU)150 652 y(Multiple)h(Precision)g(Library)f(\(GMP)h(for)g -(short\))f(v)m(ersion)h(4.1.4)i(or)d(ab)s(o)m(v)m(e.)46 -b(It)31 b(can)h(b)s(e)f(freely)h(do)m(wn-)150 762 y(loaded)i(from)g -Fm(http://www.swox.com/gmp)o Fo(.)45 b(The)33 b(user)g(can)i(compile)f -(it)h(b)m(y)e(t)m(yping)h(the)g(follo)m(wing)150 872 -y(commands)c(on)g(the)h(GMP)g(ro)s(ot)f(directory:)225 -1006 y Fl(\017)60 b Fm(./configure)225 1141 y Fl(\017)g -Fm(make)225 1275 y Fl(\017)g Fo(And)29 b(as)i(ro)s(ot:)41 -b Fm(make)29 b(install)275 1434 y Fo(The)39 b(GMP)i(default)f -(installation)i(is)e Fm(/usr/local)p Fo(,)g(the)g(same)g(metho)s(d)g -(to)h(\014x)e(a)i(library)e(path)150 1544 y(problem)30 -b(applies)g(as)h(with)f(P)m(olyLib)h(\(see)g(Section)g(4.2.1)i([P)m -(olyLib],)e(page)g(33\).)275 1678 y(The)63 b(P)m(olyLib)i(has)f(to)h(b) -s(e)e(built)h(using)g(the)g(GMP)g(library)g(b)m(y)g(sp)s(ecifying)g -(the)g(option)150 1788 y(`)p Fm(--with-libgmp=PATH_TO_GMP)o -Fo(')45 b(to)51 b(the)g(P)m(olyLib)g(con\014gure)f(script)g(\(where)h -Fm(PATH_TO_GMP)c Fo(is)150 1897 y Fm(/usr/local)30 b -Fo(if)j(y)m(ou)g(did)f(not)i(c)m(hange)g(the)f(GMP)g(installation)i -(directory\).)49 b(Then)32 b(y)m(ou)i(ha)m(v)m(e)g(to)f(set)150 -2007 y(the)j(con)m(v)m(enien)m(t)i(CLo)s(oG)d(con\014gure)h(script)f -(options)h(to)h(buid)d(the)i(GMP)g(v)m(ersion)g(\(see)g(Section)h(4.4) -150 2117 y([Optional)31 b(F)-8 b(eatures],)32 b(page)f(34\).)150 -2374 y Fn(4.3)68 b(CLo)t(oG)45 b(Basic)g(Installation)275 -2618 y Fo(Once)22 b(do)m(wnloaded)g(and)f(unpac)m(k)m(ed)h(\(e.g.)40 -b(using)21 b(the)h(`)p Fm(tar)30 b(-zxvf)f(cloog-0.14.0.tar.gz)p -Fo(')17 b(com-)150 2727 y(mand\),)37 b(y)m(ou)f(can)g(compile)h(CLo)s -(oG)f(b)m(y)g(t)m(yping)g(the)g(follo)m(wing)h(commands)f(on)f(the)h -(CLo)s(oG's)h(ro)s(ot)150 2837 y(directory:)225 2971 -y Fl(\017)60 b Fm(./configure)225 3106 y Fl(\017)g Fm(make)225 -3240 y Fl(\017)g Fo(And)29 b(as)i(ro)s(ot:)41 b Fm(make)29 -b(install)275 3400 y Fo(Dep)s(ending)40 b(on)i(the)f(lo)s(cation)i(of)f -(the)f(P)m(olyLib,)k(y)m(ou)d(ma)m(y)g(need)f(to)h(set)g(the)g(option)g -Fm(--with-)150 3509 y(polylib)32 b Fo(of)j(the)f(con\014gure)g(script)g -(\(e.g.)54 b(`)p Fm(./configure)28 b(--with-polylib=/usr/loca)o(l)p -Fo(')h(with)34 b(a)150 3619 y(default)d(P)m(olyLib)f(installation\).) -275 3753 y(The)c(program)h(binaries)g(and)g(ob)5 b(ject)28 -b(\014les)g(can)f(b)s(e)g(remo)m(v)m(ed)h(from)f(the)g(source)h(co)s -(de)f(directory)h(b)m(y)150 3863 y(t)m(yping)i Fm(make)f(clean)p -Fo(.)39 b(T)-8 b(o)30 b(also)g(remo)m(v)m(e)h(the)e(\014les)g(that)h -(the)g Fm(configure)d Fo(script)i(created)h(\(so)g(y)m(ou)g(can)150 -3972 y(compile)h(the)g(pac)m(k)-5 b(age)32 b(for)e(a)h(di\013eren)m(t)g -(kind)f(of)g(computer\))h(t)m(yp)s(e)f Fm(make)g(distclean)p -Fo(.)275 4107 y(Both)i(the)g(CLo)s(oG)f(soft)m(w)m(are)i(and)e(library) -h(ha)m(v)m(e)h(b)s(een)d(successfully)i(compiled)g(on)g(the)f(follo)m -(wing)150 4216 y(systems:)225 4351 y Fl(\017)60 b Fo(PC's)30 -b(under)f(Lin)m(ux,)h(with)g(the)g Fm(gcc)g Fo(compiler,)225 -4485 y Fl(\017)60 b Fo(PC's)30 b(under)f(Windo)m(ws)h(\(Cygwin\),)h -(with)f(the)h Fm(gcc)e Fo(compiler,)225 4620 y Fl(\017)60 -b Fo(Sparc)30 b(and)g(UltraSparc)g(Stations,)h(with)g(the)f -Fm(gcc)g Fo(compiler.)150 4877 y Fn(4.4)68 b(Optional)46 -b(F)-11 b(eatures)275 5121 y Fo(The)20 b Fm(configure)f -Fo(shell)i(script)g(attempts)h(to)g(guess)f(correct)i(v)-5 -b(alues)21 b(for)g(v)-5 b(arious)21 b(system-dep)s(enden)m(t)150 -5230 y(v)-5 b(ariables)45 b(and)e(user)g(options)h(used)g(during)e -(compilation.)83 b(It)44 b(uses)g(those)g(v)-5 b(alues)45 -b(to)f(create)i(the)150 5340 y Fm(Makefile)p Fo(.)55 -b(V)-8 b(arious)37 b(user)f(options)g(are)g(pro)m(vided)g(b)m(y)g(the)g -(CLo)s(oG's)h(con\014gure)e(script.)58 b(They)36 b(are)p -eop end -%%Page: 35 39 -TeXDict begin 35 38 bop 150 -116 a Fo(Chapter)30 b(4:)41 -b(Installing)31 b(CLo)s(oG)2355 b(35)150 299 y(summarized)27 -b(in)h(the)g(follo)m(wing)i(list)e(and)g(ma)m(y)g(b)s(e)g(prin)m(ted)f -(b)m(y)h(t)m(yping)g Fm(./configure)g(--help)e Fo(in)i(the)150 -408 y(CLo)s(oG)j(top-lev)m(el)h(directory)-8 b(.)225 -543 y Fl(\017)60 b Fo(By)43 b(default,)j(the)d(installation)h -(directory)f(is)g Fm(/usr/local)p Fo(:)62 b Fm(make)29 -b(install)40 b Fo(will)j(install)h(the)330 653 y(pac)m(k)-5 -b(age's)38 b(\014les)e(in)g Fm(/usr/local/bin)p Fo(,)d -Fm(/usr/local/lib)g Fo(and)i Fm(/usr/local/include)p -Fo(.)52 b(The)330 762 y(user)27 b(can)g(sp)s(ecify)g(an)g(installation) -i(pre\014x)e(other)g(than)g Fm(/usr/local)e Fo(b)m(y)i(giving)h -Fm(configure)d Fo(the)330 872 y(option)31 b Fm(--prefix=PATH)p -Fo(.)225 1006 y Fl(\017)60 b Fo(By)48 b(default,)53 b -Fm(configure)45 b Fo(will)k(lo)s(ok)f(for)g(the)g(P)m(olyLib)g(in)g -(standard)f(lo)s(cations.)95 b(If)47 b(neces-)330 1116 -y(sary)-8 b(,)36 b(the)e(user)g(can)g(sp)s(ecify)g(the)g(P)m(olyLib)h -(path)f(b)m(y)g(giving)h Fm(configure)d Fo(the)i(option)h -Fm(--with-)330 1225 y(polylib=PATH)p Fo(.)225 1360 y -Fl(\017)60 b Fo(By)37 b(default,)i(b)s(oth)d(CLo)s(oG)h(soft)m(w)m(are) -h(and)e(library)g(are)h(compiled)g(and)g(installed.)60 -b(By)37 b(giving)330 1469 y Fm(configure)25 b Fo(the)j(option)h -Fm(--without-cloog)23 b Fo(the)28 b(user)g(disable)g(the)g(compilation) -h(and)e(installa-)330 1579 y(tion)i(of)g(the)g(CLo)s(oG)g(soft)m(w)m -(are.)42 b(By)29 b(giving)g Fm(configure)d Fo(the)j(option)h -Fm(--without-lib)25 b Fo(the)k(user)330 1689 y(disable)i(the)f -(compilation)i(and)e(installation)i(of)f(the)f(CLo)s(oG)h(library)-8 -b(.)225 1823 y Fl(\017)60 b Fo(By)39 b(default,)i(CLo)s(oG)d(is)h -(built)f(in)g(64bits)h(v)m(ersion)g(if)g(suc)m(h)f(v)m(ersion)h(of)f -(the)h(P)m(olyLib)g(is)f(found)330 1933 y(b)m(y)c Fm(configure)p -Fo(.)51 b(If)34 b(the)h(only)g(existing)g(v)m(ersion)g(of)g(the)g(P)m -(olyLib)g(is)g(the)f(32bits)i(or)e(if)h(the)g(user)330 -2042 y(giv)m(e)j(to)g Fm(configure)c Fo(the)j(option)h -Fm(--with-bits=32)p Fo(,)c(the)j(32bits)h(v)m(ersion)f(of)g(CLo)s(oG)g -(will)h(b)s(e)330 2152 y(compiled.)j(In)29 b(the)h(same)h(w)m(a)m(y)-8 -b(,)31 b(the)f(option)h Fm(--with-bits=gmp)25 b Fo(ha)m(v)m(e)31 -b(to)g(b)s(e)e(used)g(to)i(build)e(the)330 2262 y(m)m(ultiple)i -(precision)g(v)m(ersion.)225 2396 y Fl(\017)60 b Fo(By)32 -b(default,)g Fm(configure)d Fo(will)j(lo)s(ok)g(for)g(the)f(GMP)h -(library)f(\(necessary)i(to)f(build)f(the)g(m)m(ultiple)330 -2506 y(precision)37 b(v)m(ersion\))h(in)e(standard)g(lo)s(cations.)62 -b(If)36 b(necessary)-8 b(,)40 b(the)d(user)f(can)h(sp)s(ecify)f(the)h -(GMP)330 2615 y(path)30 b(b)m(y)g(giving)i Fm(configure)27 -b Fo(the)k(option)g Fm(--with-gmp=PATH)p Fo(.)150 2873 -y Fn(4.5)68 b(Uninstallation)275 3117 y Fo(The)31 b(user)h(can)h -(easily)g(remo)m(v)m(e)h(the)e(CLo)s(oG)h(soft)m(w)m(are)h(and)d -(library)h(from)g(his)g(system)g(b)m(y)g(t)m(yping)150 -3226 y(\(as)f(ro)s(ot)g(if)f(necessary\))h(from)f(the)h(CLo)s(oG)f -(top-lev)m(el)j(directory)e Fm(make)e(uninstall)p Fo(.)p -eop end -%%Page: 36 40 -TeXDict begin 36 39 bop 150 -116 a Fo(36)1544 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)p -eop end -%%Page: 37 41 -TeXDict begin 37 40 bop 150 -116 a Fo(Chapter)30 b(5:)41 -b(Do)s(cumen)m(tation)2436 b(37)150 299 y Fk(5)80 b(Do)t(cumen)l -(tation)275 533 y Fo(The)28 b(CLo)s(oG)h(distribution)f(pro)m(vides)g -(sev)m(eral)i(do)s(cumen)m(tation)g(sources.)40 b(First,)30 -b(the)f(source)g(co)s(de)150 643 y(itself)i(is)f(as)h(do)s(cumen)m(ted) -f(as)g(p)s(ossible.)40 b(The)30 b(co)s(de)g(commen)m(ts)h(use)f(a)h(Do) -m(xygen-compatible)i(presen-)150 752 y(tation)f(\(something)f(similar)f -(to)h(what)f(Ja)m(v)-5 b(aDo)s(c)32 b(do)s(es)e(for)g(JA)-10 -b(V)g(A\).)31 b(The)f(user)f(ma)m(y)i(install)g(Do)m(xygen)150 -862 y(\(see)26 b Fm(http://www.stack.nl/~di)o(mit)o(ri/d)o(oxyg)o(en)p -Fo(\))19 b(to)25 b(automatically)i(generate)f(a)f(tec)m(hnical)i(do)s -(c-)150 971 y(umen)m(tation)i(b)m(y)f(t)m(yping)g Fm(make)h(doc)e -Fo(or)h Fm(doxygen)g(./autoconf/Doxyfile)23 b Fo(at)29 -b(the)f(CLo)s(oG)g(top-lev)m(el)150 1081 y(directory)40 -b(after)g(running)d(the)j(con\014gure)f(script)g(\(see)i(Chapter)e(4)g -([Installing],)k(page)d(33\).)69 b(Do)m(xy-)150 1191 -y(gen)34 b(will)g(generate)h(do)s(cumen)m(tation)f(sources)g(\(in)f -(HTML,)h(LaT)-8 b(eX)34 b(and)f(man\))h(in)f(the)h Fm(doc/source)150 -1300 y Fo(directory)d(of)f(the)h(CLo)s(oG)g(distribution.)275 -1435 y(The)25 b(T)-8 b(exinfo)26 b(sources)f(of)h(the)g(presen)m(t)g -(do)s(cumen)m(t)f(are)h(also)h(pro)m(vided)e(in)h(the)g -Fm(doc)e Fo(directory)-8 b(.)40 b(Y)-8 b(ou)150 1544 -y(can)38 b(build)e(it)i(in)g(either)g(D)m(VI)g(format)g(\(b)m(y)g(t)m -(yping)g Fm(texi2dvi)28 b(cloog.texi)p Fo(\))35 b(or)j(PDF)g(format)g -(\(b)m(y)150 1654 y(t)m(yping)27 b Fm(texi2pdf)h(cloog.texi)p -Fo(\))d(or)i(HTML)f(format)h(\(b)m(y)g(t)m(yping)h Fm(makeinfo)g -(--html)g(cloog.texi)p Fo(,)150 1763 y(using)21 b Fm(--no-split)d -Fo(option)j(to)h(generate)h(a)e(single)h(HTML)f(\014le\))g(or)g(info)g -(format)g(\(b)m(y)h(t)m(yping)f Fm(makeinfo)150 1873 -y(cloog.texi)p Fo(\).)p eop end -%%Page: 38 42 -TeXDict begin 38 41 bop 150 -116 a Fo(38)1544 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)p -eop end -%%Page: 39 43 -TeXDict begin 39 42 bop 150 -116 a Fo(Chapter)30 b(6:)41 -b(References)2626 b(39)150 299 y Fk(6)80 b(References)330 -533 y Fo([Bas03a])35 b(C.)d(Bastoul,)i(P)-8 b(.)33 b(F)-8 -b(eautrier.)48 b(Impro)m(ving)32 b(data)h(lo)s(calit)m(y)h(b)m(y)e(c)m -(h)m(unking.)47 b(CC'12)33 b(In)m(ter-)330 643 y(national)k(Conference) -f(on)g(Compiler)g(Construction,)i(LNCS)d(2622,)k(pages)e(320-335,)j(W) --8 b(arsa)m(w,)330 752 y(april)30 b(2003.)330 887 y([Bas03b])39 -b(C.)f(Bastoul.)64 b(E\016cien)m(t)39 b(co)s(de)f(generation)h(for)e -(automatic)j(parallelization)h(and)c(op-)330 996 y(timization.)87 -b(ISPDC'03)46 b(IEEE)f(In)m(ternational)h(Symp)s(osium)e(on)h(P)m -(arallel)i(and)e(Distributed)330 1106 y(Computing,)30 -b(pages)h(23-30,)i(Ljubljana,)c(o)s(ctob)s(er)i(2003.)330 -1240 y([Bas04])42 b(C.)e(Bastoul.)72 b(Co)s(de)40 b(Generation)h(in)f -(the)h(P)m(olyhedral)g(Mo)s(del)g(Is)e(Easier)i(Than)e(Y)-8 -b(ou)330 1350 y(Think.)40 b(P)-8 b(A)m(CT'13)32 b(IEEE)d(In)m -(ternational)j(Conference)f(on)f(P)m(arallel)i(Arc)m(hitecture)g(and)e -(Compi-)330 1460 y(lation)i(T)-8 b(ec)m(hniques,)31 b(pages)f(7-16,)j -(Juan-les-Pins,)d(septem)m(b)s(er)g(2004.)330 1594 y([F)-8 -b(ea92])36 b(P)-8 b(.)33 b(F)-8 b(eautrier)34 b(Some)f(e\016cien)m(t)h -(solutions)g(to)f(the)g(a\016ne)g(sc)m(heduling)g(problem,)g(part)g(I)s -(I:)330 1704 y(m)m(ultidimensional)28 b(time.)41 b(In)m(ternational)29 -b(Journal)e(of)g(P)m(arallel)j(Programming,)e(21\(6\):389{420,)330 -1813 y(Decem)m(b)s(er)j(1992.)330 1948 y([Gri04])g(M.)f(Griebl.)41 -b(Automatic)31 b(parallelization)h(of)e(lo)s(op)f(programs)g(for)h -(distributed)e(memory)330 2057 y(arc)m(hitectures.)53 -b(Habilitation)36 b(Thesis.)52 b(F)-8 b(acult\177)-45 -b(at)36 b(f)s(\177)-48 b(ur)33 b(Mathematik)j(und)c(Informatik,)j(Univ) -m(er-)330 2167 y(sit\177)-45 b(at)32 b(P)m(assau,)f(2004.)42 -b Fi(http://www.infosun.fmi.uni-p)-5 b(assau.de/cl/lo)l(op)l(o)q(/)330 -2301 y Fo([Qui00])30 b(F.)f(Quiller)m(\023)-43 b(e,)31 -b(S.)e(Ra)5 b(jopadh)m(y)m(e,)30 b(and)f(D.)g(Wilde.)41 -b(Generation)30 b(of)g(e\016cien)m(t)g(nested)f(lo)s(ops)330 -2411 y(from)22 b(p)s(olyhedra.)38 b(In)m(ternational)24 -b(Journal)e(of)h(P)m(arallel)h(Programming,)h(28\(5\):469-498,)30 -b(o)s(ctob)s(er)330 2521 y(2000.)330 2655 y([Wil93])j(Doran)f(K.)f -(Wilde.)44 b(A)31 b(library)g(for)f(doing)i(p)s(olyhedral)e(op)s -(erations.)43 b(T)-8 b(ec)m(hnical)33 b(Rep)s(ort)330 -2765 y(785,)f(IRISA,)e(Rennes,)g(F)-8 b(rance,)32 b(1993.)p -eop end -%%Page: 40 44 -TeXDict begin 40 43 bop 150 -116 a Fo(40)1544 b(CLo)s(oG)31 -b(-)g(a)f(lo)s(op)h(generator)g(for)g(scanning)f(p)s(olyhedra)p -eop end -%%Trailer - -userdict /end-hook known{end-hook}if -%%EOF -- 2.11.4.GIT