+++ /dev/null
-%!PS-Adobe-3.0 EPSF-3.0\r
-%%Title: Microsoft PowerPoint - figs.ppt\r
-%%Creator: PScript5.dll Version 5.2.2\r
-%%CreationDate: 2/27/2009 16:40:43\r
-%%For: jarusl\r
-%%BoundingBox: 21 20 3649 3648\r
-%%Pages: 1\r
-%%Orientation: Landscape\r
-%%PageOrder: Ascend\r
-%%DocumentNeededResources: (atend)\r
-%%DocumentSuppliedResources: (atend)\r
-%%DocumentData: Clean7Bit\r
-%%TargetDevice: (WMF2EPS Color PS) (2010.0) 2\r
-%%LanguageLevel: 2\r
-%%EndComments\r
-\r
-%%BeginDefaults\r
-%%PageBoundingBox: 21 20 3649 3648\r
-%%ViewingOrientation: 0 1 -1 0\r
-%%EndDefaults\r
-\r
-%%BeginProlog\r
-%%BeginResource: file Pscript_WinNT_ErrorHandler 5.0 0\r
-/currentpacking where{pop/oldpack currentpacking def/setpacking where{pop false\r
-setpacking}if}if/$brkpage 64 dict def $brkpage begin/prnt{dup type/stringtype\r
-ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch\r
-def/tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0\r
-rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show}bind def\r
-/nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def/=={/cp 0 def\r
-typeprint nl}def/typeprint{dup type exec}readonly def/lmargin 72 def/rmargin 72\r
-def/tprint{dup length cp add rmargin gt{nl/cp 0 def}if dup length cp add/cp\r
-exch def prnt}readonly def/cvsprint{=string cvs tprint( )tprint}readonly def\r
-/integertype{cvsprint}readonly def/realtype{cvsprint}readonly def/booleantype\r
-{cvsprint}readonly def/operatortype{(--)tprint =string cvs tprint(-- )tprint}\r
-readonly def/marktype{pop(-mark- )tprint}readonly def/dicttype{pop\r
-(-dictionary- )tprint}readonly def/nulltype{pop(-null- )tprint}readonly def\r
-/filetype{pop(-filestream- )tprint}readonly def/savetype{pop(-savelevel- )\r
-tprint}readonly def/fonttype{pop(-fontid- )tprint}readonly def/nametype{dup\r
-xcheck not{(/)tprint}if cvsprint}readonly def/stringtype{dup rcheck{(\()tprint\r
-tprint(\))tprint}{pop(-string- )tprint}ifelse}readonly def/arraytype{dup rcheck\r
-{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint}forall(])\r
-tprint}ifelse}{pop(-array- )tprint}ifelse}readonly def/packedarraytype{dup\r
-rcheck{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint}\r
-forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse}readonly def/courier\r
-/Courier findfont 10 scalefont def end errordict/handleerror{systemdict begin\r
-$error begin $brkpage begin newerror{/newerror false store vmstatus pop pop 0\r
-ne{grestoreall}if errorname(VMerror)ne{showpage}if initgraphics courier setfont\r
-lmargin 720 moveto errorname(VMerror)eq{userdict/ehsave known{clear userdict\r
-/ehsave get restore 2 vmreclaim}if vmstatus exch pop exch pop PrtVMMsg}{\r
-(ERROR: )prnt errorname prnt nl(OFFENDING COMMAND: )prnt/command load prnt\r
-$error/ostack known{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==}\r
-repeat}if}ifelse systemdict/showpage get exec(%%[ Error: )print errorname\r
-=print(; OffendingCommand: )print/command load =print( ]%%)= flush}if end end\r
-end}dup 0 systemdict put dup 4 $brkpage put bind readonly put/currentpacking\r
-where{pop/setpacking where{pop oldpack setpacking}if}if\r
-%%EndResource\r
-userdict /Pscript_WinNT_Incr 230 dict dup begin put\r
-%%BeginResource: file Pscript_FatalError 5.0 0\r
-userdict begin/FatalErrorIf{{initgraphics findfont 1 index 0 eq{exch pop}{dup\r
-length dict begin{1 index/FID ne{def}{pop pop}ifelse}forall/Encoding\r
-{ISOLatin1Encoding}stopped{StandardEncoding}if def currentdict end\r
-/ErrFont-Latin1 exch definefont}ifelse exch scalefont setfont counttomark 3 div\r
-cvi{moveto show}repeat showpage quit}{cleartomark}ifelse}bind def end\r
-%%EndResource\r
-userdict begin/PrtVMMsg{vmstatus exch sub exch pop gt{[\r
-(This job requires more memory than is available in this printer.)100 500\r
-(Try one or more of the following, and then print again:)100 485\r
-(For the output format, choose Optimize For Portability.)115 470\r
-(In the Device Settings page, make sure the Available PostScript Memory is accurate.)\r
-115 455(Reduce the number of fonts in the document.)115 440\r
-(Print the document in parts.)115 425 12/Times-Roman showpage\r
-(%%[ PrinterError: Low Printer VM ]%%)= true FatalErrorIf}if}bind def end\r
-version cvi 2016 ge{/VM?{pop}bind def}{/VM? userdict/PrtVMMsg get def}ifelse\r
-%%BeginResource: file Pscript_Win_Basic 5.0 0\r
-/d/def load def/,/load load d/~/exch , d/?/ifelse , d/!/pop , d/`/begin , d/^\r
-/index , d/@/dup , d/+/translate , d/$/roll , d/U/userdict , d/M/moveto , d/-\r
-/rlineto , d/&/currentdict , d/:/gsave , d/;/grestore , d/F/false , d/T/true ,\r
-d/N/newpath , d/E/end , d/Ac/arc , d/An/arcn , d/A/ashow , d/D/awidthshow , d/C\r
-/closepath , d/V/div , d/O/eofill , d/L/fill , d/I/lineto , d/-c/curveto , d/-M\r
-/rmoveto , d/+S/scale , d/Ji/setfont , d/Lc/setlinecap , d/Lj/setlinejoin , d\r
-/Lw/setlinewidth , d/Lm/setmiterlimit , d/sd/setdash , d/S/show , d/LH/showpage\r
-, d/K/stroke , d/W/widthshow , d/R/rotate , d/L2? false/languagelevel where{pop\r
-languagelevel 2 ge{pop true}if}if d L2?{/xS/xshow , d/yS/yshow , d/zS/xyshow ,\r
-d}if/b{bind d}bind d/bd{bind d}bind d/xd{~ d}bd/ld{, d}bd/bn/bind ld/lw/Lw ld\r
-/lc/Lc ld/lj/Lj ld/sg/setgray ld/ADO_mxRot null d/self & d/OrgMx matrix\r
-currentmatrix d/reinitialize{: OrgMx setmatrix[/TextInit/GraphInit/UtilsInit\r
-counttomark{@ where{self eq}{F}?{cvx exec}{!}?}repeat cleartomark ;}b\r
-/initialize{`{/Pscript_Win_Data where{!}{U/Pscript_Win_Data & put}?/ADO_mxRot ~\r
-d/TextInitialised? F d reinitialize E}{U/Pscript_Win_Data 230 dict @ ` put\r
-/ADO_mxRot ~ d/TextInitialised? F d reinitialize}?}b/terminate{!{& self eq\r
-{exit}{E}?}loop E}b/suspend/terminate , d/resume{` Pscript_Win_Data `}b U `\r
-/lucas 21690 d/featurebegin{countdictstack lucas[}b/featurecleanup{stopped\r
-{cleartomark @ lucas eq{! exit}if}loop countdictstack ~ sub @ 0 gt{{E}repeat}\r
-{!}?}b E/snap{transform 0.25 sub round 0.25 add ~ 0.25 sub round 0.25 add ~\r
-itransform}b/dsnap{dtransform round ~ round ~ idtransform}b/nonzero_round{@ 0.5\r
-ge{round}{@ -0.5 lt{round}{0 ge{1}{-1}?}?}?}b/nonzero_dsnap{dtransform\r
-nonzero_round ~ nonzero_round ~ idtransform}b U<04>cvn{}put/rr{1 ^ 0 - 0 ~ -\r
-neg 0 - C}b/irp{4 -2 $ + +S fx 4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b/rp{4 2 $ M 1 ^ 0\r
-- 0 ~ - neg 0 -}b/solid{[]0 sd}b/g{@ not{U/DefIf_save save put}if U/DefIf_bool\r
-2 ^ put}b/DefIf_El{if U/DefIf_bool get not @{U/DefIf_save get restore}if}b/e\r
-{DefIf_El !}b/UDF{L2?{undefinefont}{!}?}b/UDR{L2?{undefineresource}{! !}?}b\r
-/freeVM{/Courier findfont[40 0 0 -40 0 0]makefont Ji 2 vmreclaim}b/hfRedefFont\r
-{findfont @ length dict `{1 ^/FID ne{d}{! !}?}forall & E @ ` ~{/CharStrings 1\r
-dict `/.notdef 0 d & E d}if/Encoding 256 array 0 1 255{1 ^ ~/.notdef put}for d\r
-E definefont !}bind d/hfMkCIDFont{/CIDFont findresource @ length 2 add dict `{1\r
-^ @/FID eq ~ @/XUID eq ~/UIDBase eq or or{! !}{d}?}forall/CDevProc ~ d/Metrics2\r
-16 dict d/CIDFontName 1 ^ d & E 1 ^ ~/CIDFont defineresource ![~]composefont !}\r
-bind d\r
-%%EndResource\r
-%%BeginResource: file Pscript_Win_Utils_L2 5.0 0\r
-/rf/rectfill , d/fx{1 1 dtransform @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 -1 $ @ 0 ge\r
-{1 sub 0.5}{1 add -0.5}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{4 -2 $\r
-snap + +S fx rf}b/rs/rectstroke , d/rc/rectclip , d/UtilsInit{currentglobal{F\r
-setglobal}if}b/scol{! setcolor}b/colspA/DeviceGray d/colspABC/DeviceRGB d\r
-/colspRefresh{colspABC setcolorspace}b/SetColSpace{colspABC setcolorspace}b\r
-/resourcestatus where{!/ColorRendering/ProcSet resourcestatus{! ! T}{F}?}{F}?\r
-not{/ColorRendering<</GetHalftoneName{currenthalftone @/HalftoneName known{\r
-/HalftoneName get}{!/none}?}bn/GetPageDeviceName{currentpagedevice @\r
-/PageDeviceName known{/PageDeviceName get @ null eq{!/none}if}{!/none}?}bn\r
-/GetSubstituteCRD{!/DefaultColorRendering/ColorRendering resourcestatus{! !\r
-/DefaultColorRendering}{(DefaultColorRendering*){cvn exit}127 string\r
-/ColorRendering resourceforall}?}bn>>/defineresource where{!/ProcSet\r
-defineresource !}{! !}?}if/buildcrdname{/ColorRendering/ProcSet findresource `\r
-mark GetHalftoneName @ type @/nametype ne ~/stringtype ne and{!/none}if(.)\r
-GetPageDeviceName @ type @/nametype ne ~/stringtype ne and{!/none}if(.)5 ^ 0 5\r
--1 1{^ length add}for string 6 1 $ 5 ^ 5{~ 1 ^ cvs length 1 ^ length 1 ^ sub\r
-getinterval}repeat ! cvn 3 1 $ ! ! E}b/definecolorrendering{~ buildcrdname ~\r
-/ColorRendering defineresource !}b/findcolorrendering where{!}{\r
-/findcolorrendering{buildcrdname @/ColorRendering resourcestatus{! ! T}{\r
-/ColorRendering/ProcSet findresource ` GetSubstituteCRD E F}?}b}?\r
-/selectcolorrendering{findcolorrendering !/ColorRendering findresource\r
-setcolorrendering}b/G2UBegin{findresource/FontInfo get/GlyphNames2Unicode get\r
-`}bind d/G2CCBegin{findresource/FontInfo get/GlyphNames2HostCode get `}bind d\r
-/G2UEnd{E}bind d/AddFontInfoBegin{/FontInfo 8 dict @ `}bind d/AddFontInfo{\r
-/GlyphNames2Unicode 16 dict d/GlyphNames2HostCode 16 dict d}bind d\r
-/AddFontInfoEnd{E d}bind d/T0AddCFFMtx2{/CIDFont findresource/Metrics2 get ` d\r
-E}bind d\r
-%%EndResource\r
-end\r
-%%EndProlog\r
-\r
-%%BeginSetup\r
-[ 0 1 -1 0 0 0 ] false Pscript_WinNT_Incr dup /initialize get exec\r
-1 setlinecap 1 setlinejoin\r
-/mysetup [ 72 600 V 0 0 -72 600 V 20.00126 3647.99902 ] def \r
-%%EndSetup\r
-\r
-%%Page: 1 1\r
-%%PageBoundingBox: 21 20 3649 3648\r
-%%EndPageComments\r
-%%BeginPageSetup\r
-/DeviceRGB dup setcolorspace /colspABC exch def\r
-mysetup concat colspRefresh\r
-%%EndPageSetup\r
-\r
-Pscript_WinNT_Incr begin\r
-%%BeginResource: file Pscript_WinNT_Compat 5.0 0\r
-userdict/Pscript_WinNT_Compat 19 dict dup begin/bd{bind def}bind def/ld{load\r
-def}bd/$x matrix def/ANSIVec[16#0/grave 16#1/acute 16#2/circumflex 16#3/tilde\r
-16#4/macron 16#5/breve 16#6/dotaccent 16#7/dieresis 16#8/ring 16#9/cedilla 16#A\r
-/hungarumlaut 16#B/ogonek 16#C/caron 16#D/dotlessi 16#27/quotesingle 16#60\r
-/grave 16#7C/bar 16#82/quotesinglbase 16#83/florin 16#84/quotedblbase 16#85\r
-/ellipsis 16#86/dagger 16#87/daggerdbl 16#88/circumflex 16#89/perthousand 16#8A\r
-/Scaron 16#8B/guilsinglleft 16#8C/OE 16#91/quoteleft 16#92/quoteright 16#93\r
-/quotedblleft 16#94/quotedblright 16#95/bullet 16#96/endash 16#97/emdash 16#98\r
-/tilde 16#99/trademark 16#9A/scaron 16#9B/guilsinglright 16#9C/oe 16#9F\r
-/Ydieresis 16#A0/space 16#A1/exclamdown 16#A4/currency 16#A5/yen 16#A6\r
-/brokenbar 16#A7/section 16#A8/dieresis 16#A9/copyright 16#AA/ordfeminine 16#AB\r
-/guillemotleft 16#AC/logicalnot 16#AD/hyphen 16#AE/registered 16#AF/macron\r
-16#B0/degree 16#B1/plusminus 16#B2/twosuperior 16#B3/threesuperior 16#B4/acute\r
-16#B5/mu 16#B6/paragraph 16#B7/periodcentered 16#B8/cedilla 16#B9/onesuperior\r
-16#BA/ordmasculine 16#BB/guillemotright 16#BC/onequarter 16#BD/onehalf 16#BE\r
-/threequarters 16#BF/questiondown 16#C0/Agrave 16#C1/Aacute 16#C2/Acircumflex\r
-16#C3/Atilde 16#C4/Adieresis 16#C5/Aring 16#C6/AE 16#C7/Ccedilla 16#C8/Egrave\r
-16#C9/Eacute 16#CA/Ecircumflex 16#CB/Edieresis 16#CC/Igrave 16#CD/Iacute 16#CE\r
-/Icircumflex 16#CF/Idieresis 16#D0/Eth 16#D1/Ntilde 16#D2/Ograve 16#D3/Oacute\r
-16#D4/Ocircumflex 16#D5/Otilde 16#D6/Odieresis 16#D7/multiply 16#D8/Oslash\r
-16#D9/Ugrave 16#DA/Uacute 16#DB/Ucircumflex 16#DC/Udieresis 16#DD/Yacute 16#DE\r
-/Thorn 16#DF/germandbls 16#E0/agrave 16#E1/aacute 16#E2/acircumflex 16#E3\r
-/atilde 16#E4/adieresis 16#E5/aring 16#E6/ae 16#E7/ccedilla 16#E8/egrave 16#E9\r
-/eacute 16#EA/ecircumflex 16#EB/edieresis 16#EC/igrave 16#ED/iacute 16#EE\r
-/icircumflex 16#EF/idieresis 16#F0/eth 16#F1/ntilde 16#F2/ograve 16#F3/oacute\r
-16#F4/ocircumflex 16#F5/otilde 16#F6/odieresis 16#F7/divide 16#F8/oslash 16#F9\r
-/ugrave 16#FA/uacute 16#FB/ucircumflex 16#FC/udieresis 16#FD/yacute 16#FE/thorn\r
-16#FF/ydieresis]def currentdict{dup type/operatortype eq{[exch]cvx def}{pop\r
-pop}ifelse}forall/initialize{currentdict exch begin begin}bind def/terminate{\r
-/@FL where not{pop end end}{pop}ifelse}bind def/suspend/terminate load def\r
-/resume/initialize load def/RS{/pagesave where{pop pagesave restore}{$x matrix\r
-invertmatrix concat}ifelse}def/SS{/pagesave save def}def/CB{pop pop pop pop}def\r
-/B{pop pop pop pop}def/:/gsave load def/;/grestore load def/N/newpath load def\r
-end put\r
-%%EndResource\r
-end reinitialize\r
-Pscript_WinNT_Compat begin /$x mysetup def end\r
-Pscript_WinNT_Incr dup /suspend get exec\r
-Pscript_WinNT_Compat dup /initialize get exec\r
-%%BeginDocument: Pscript_Win_PassThrough\r
-/languagelevel where {pop languagelevel} {1} ifelse\r
-2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse\r
-/GpPBeg1 {\r
- gsave initclip\r
- 16 dict begin\r
- /c {curveto} def /l {lineto} def /m {moveto} def\r
- /rc {rcurveto} def /rl {rlineto} def\r
- /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def\r
- /GSE {end grestore} def\r
-} put\r
-{setglobal} if\r
-GpPBeg1\r
-NP 0 3779 m 30233 3779 l 30233 26454 l 0 26454 l CP \r
-eoclip\r
-1 1 1 SC\r
-NP 0 3779 m 30233 3779 l 30233 26454 l 0 26454 l CP \r
-eofill\r
-GSE\r
-/languagelevel where {pop languagelevel} {1} ifelse\r
-2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse\r
-/GpPBeg1 {\r
- gsave initclip\r
- 16 dict begin\r
- /c {curveto} def /l {lineto} def /m {moveto} def\r
- /rc {rcurveto} def /rl {rlineto} def\r
- /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def\r
- /GSE {end grestore} def\r
-} put\r
-{setglobal} if\r
-GpPBeg1\r
-1 setlinecap\r
-0 setlinejoin\r
-8 setmiterlimit\r
-31.4930 setlinewidth\r
-[] 0 setdash\r
-0 0 0 SC\r
-NP 15117 9322 m 15117 11337 l 22675 11337 l 22675 9322 l CP \r
-stroke\r
-GSE\r
-\r
-%%EndDocument\r
-\r
-Pscript_WinNT_Compat dup /suspend get exec\r
-Pscript_WinNT_Incr dup /resume get exec\r
-/DeviceRGB dup setcolorspace /colspABC exch def\r
-0 0 0 1 scol Pscript_WinNT_Incr begin\r
-%%BeginResource: file Pscript_Text 5.0 0\r
-/TextInit{TextInitialised? not{/Pscript_Windows_Font & d/TextInitialised? T d\r
-/fM[1 0 0 1 0 0]d/mFM matrix d/iMat[1 0 0.212557 1 0 0]d}if}b/copyfont{1 ^\r
-length add dict `{1 ^/FID ne{d}{! !}?}forall & E}b/EncodeDict 11 dict d/bullets\r
-{{/bullet}repeat}b/rF{3 copyfont @ ` ~ EncodeDict ~ get/Encoding ~ 3 ^/0 eq{&\r
-/CharStrings known{CharStrings/Eth known not{! EncodeDict/ANSIEncodingOld get}\r
-if}if}if d E}b/mF{@ 7 1 $ findfont ~{@/Encoding get @ StandardEncoding eq{! T}{\r
-{ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get\r
-StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{1 ^ ~ rF}{0 copyfont}? 6 -2 $\r
-! ! ~ !/pd_charset @ where{~ get 128 eq{@ FDV 2 copy get @ length array copy\r
-put pd_CoverFCRange}if}{!}? 2 ^ ~ definefont fM 5 4 -1 $ put fM 4 0 put fM\r
-makefont Pscript_Windows_Font 3 1 $ put}b/sLT{: Lw -M currentpoint snap M 0 - 0\r
-Lc K ;}b/xUP null d/yUP null d/uW null d/xSP null d/ySP null d/sW null d/sSU{N\r
-/uW ~ d/yUP ~ d/xUP ~ d}b/sU{xUP yUP uW sLT}b/sST{N/sW ~ d/ySP ~ d/xSP ~ d}b/sT\r
-{xSP ySP sW sLT}b/sR{: + R 0 0 M}b/sRxy{: matrix astore concat 0 0 M}b/eR/; , d\r
-/AddOrigFP{{&/FontInfo known{&/FontInfo get length 6 add}{6}? dict `\r
-/WinPitchAndFamily ~ d/WinCharSet ~ d/OrigFontType ~ d/OrigFontStyle ~ d\r
-/OrigFontName ~ d & E/FontInfo ~ d}{! ! ! ! !}?}b/mFS{makefont\r
-Pscript_Windows_Font 3 1 $ put}b/mF42D{0 copyfont `/FontName ~ d 2 copy ~ sub 1\r
-add dict `/.notdef 0 d 2 copy 1 ~{@ 3 ^ sub Encoding ~ get ~ d}for & E\r
-/CharStrings ~ d ! ! & @ E/FontName get ~ definefont}b/mF42{15 dict ` @ 4 1 $\r
-FontName ~ d/FontType 0 d/FMapType 2 d/FontMatrix[1 0 0 1 0 0]d 1 ^ 254 add 255\r
-idiv @ array/Encoding ~ d 0 1 3 -1 $ 1 sub{@ Encoding 3 1 $ put}for/FDepVector\r
-Encoding length array d/CharStrings 2 dict `/.notdef 0 d & E d 0 1 Encoding\r
-length 1 sub{@ @ 10 lt{! FontName length 1 add string}{100 lt{FontName length 2\r
-add string}{FontName length 3 add string}?}? @ 0 FontName @ length string cvs\r
-putinterval @ 3 -1 $ @ 4 1 $ 3 string cvs FontName length ~ putinterval cvn 1 ^\r
-256 mul @ 255 add 3 -1 $ 4 ^ findfont mF42D FDepVector 3 1 $ put}for & @ E\r
-/FontName get ~ definefont ! ! ! mF}b/mF_OTF_V{~ ! ~ ! 4 -1 $ ! findfont 2 ^ ~\r
-definefont fM @ @ 4 6 -1 $ neg put 5 0 put 90 matrix R matrix concatmatrix\r
-makefont Pscript_Windows_Font 3 1 $ put}b/mF_TTF_V{3{~ !}repeat 3 -1 $ !\r
-findfont 1 ^ ~ definefont Pscript_Windows_Font 3 1 $ put}b/UmF{L2?\r
-{Pscript_Windows_Font ~ undef}{!}?}b/UmF42{@ findfont/FDepVector get{/FontName\r
-get undefinefont}forall undefinefont}b\r
-%%EndResource\r
-end reinitialize\r
-Pscript_WinNT_Incr begin\r
-%%BeginResource: file Pscript_Encoding256 5.0 0\r
-/CharCol256Encoding[/.notdef/breve/caron/dotaccent/dotlessi/fi/fl/fraction\r
-/hungarumlaut/Lslash/lslash/minus/ogonek/ring/Zcaron/zcaron/.notdef/.notdef\r
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\r
-/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign\r
-/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma\r
-/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon\r
-/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\r
-/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave\r
-/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\r
-/asciitilde/.notdef/Euro/.notdef/quotesinglbase/florin/quotedblbase/ellipsis\r
-/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef\r
-/.notdef/.notdef/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet\r
-/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef\r
-/Ydieresis/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar/section\r
-/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/.notdef/registered\r
-/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph\r
-/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter\r
-/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis\r
-/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute\r
-/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis\r
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls\r
-/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute\r
-/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve\r
-/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex\r
-/udieresis/yacute/thorn/ydieresis]def EncodeDict/256 CharCol256Encoding put\r
-%%EndResource\r
-end reinitialize\r
-\r
-%%IncludeResource: font Helvetica\r
-Pscript_WinNT_Incr begin\r
-%%BeginResource: file Pscript_Win_Euro_L2 5.0 0\r
-/UseT3EuroFont{/currentdistillerparams where{pop currentdistillerparams\r
-/CoreDistVersion get 4000 le}{false}ifelse}bind def/NewEuroT3Font?{dup/FontType\r
-get 3 eq{dup/EuroFont known exch/BaseFont known and}{pop false}ifelse}bind def\r
-/T1FontHasEuro{dup/CharStrings known not{dup NewEuroT3Font?{dup/EuroGlyphName\r
-get exch/EuroFont get/CharStrings get exch known{true}{false}ifelse}{pop false}\r
-ifelse}{dup/FontType get 1 eq{/CharStrings get/Euro known}{dup/InfoDict known{\r
-/InfoDict get/Euro known}{/CharStrings get/Euro known}ifelse}ifelse}ifelse}bind\r
-def/FontHasEuro{findfont dup/Blend known{pop true}{T1FontHasEuro}ifelse}bind\r
-def/EuroEncodingIdx 1 def/EuroFontHdr{12 dict begin/FontInfo 10 dict dup begin\r
-/version(001.000)readonly def/Notice(Copyright (c)1999 Adobe Systems\r
-Incorporated. All Rights Reserved.)readonly def/FullName(Euro)readonly def\r
-/FamilyName(Euro)readonly def/Weight(Regular)readonly def/isFixedPitch false\r
-def/ItalicAngle 0 def/UnderlinePosition -100 def/UnderlineThickness 50 def end\r
-readonly def/FontName/Euro def/Encoding 256 array 0 1 255{1 index exch/.notdef\r
-put}for def/PaintType 0 def/FontType 1 def/FontMatrix[0.001 0 0 0.001 0 0]def\r
-/FontBBox{-25 -23 1500 804}readonly def currentdict end dup/Private 20 dict dup\r
-begin/ND{def}def/NP{put}def/lenIV -1 def/RD{string currentfile exch\r
-readhexstring pop}def/-|{string currentfile exch readstring pop}executeonly def\r
-/|-{def}executeonly def/|{put}executeonly def/BlueValues[-20 0 706 736 547 572]\r
-|-/OtherBlues[-211 -203]|-/BlueScale 0.0312917 def/MinFeature{16 16}|-/StdHW\r
-[60]|-/StdVW[71]|-/ForceBold false def/password 5839 def/Erode{8.5 dup 3 -1\r
-roll 0.1 mul exch 0.5 sub mul cvi sub dup mul 71 0 dtransform dup mul exch dup\r
-mul add le{pop pop 1.0 1.0}{pop pop 0.0 1.5}ifelse}def/OtherSubrs[{}{}{}\r
-{systemdict/internaldict known not{pop 3}{1183615869 systemdict/internaldict\r
-get exec dup/startlock known{/startlock get exec}{dup/strtlck known{/strtlck\r
-get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]|-/Subrs 5 array dup 0\r
-<8E8B0C100C110C110C210B>put dup 1<8B8C0C100B>put dup 2<8B8D0C100B>put dup 3<0B>\r
-put dup 4<8E8C8E0C100C110A0B>put |- 2 index/CharStrings 256 dict dup begin\r
-/.notdef<8b8b0d0e>def end end put put dup/FontName get exch definefont pop}bind\r
-def/AddEuroGlyph{2 index exch EuroEncodingIdx 1 eq{EuroFontHdr}if systemdict\r
-begin/Euro findfont dup dup/Encoding get 5 1 roll/Private get begin/CharStrings\r
-get dup 3 index known{pop pop pop pop end end}{begin 1 index exch def end end\r
-end EuroEncodingIdx dup 1 add/EuroEncodingIdx exch def exch put}ifelse}bind def\r
-/GetNewXUID{currentdict/XUID known{[7 XUID aload pop]true}{currentdict/UniqueID\r
-known{[7 UniqueID]true}{false}ifelse}ifelse}bind def/BuildT3EuroFont{exch 16\r
-dict begin dup/FontName exch def findfont dup/Encoding get/Encoding exch def\r
-dup length 1 add dict copy dup/FID undef begin dup dup/FontName exch def\r
-/Encoding 256 array 0 1 255{1 index exch/.notdef put}for def GetNewXUID{/XUID\r
-exch def}if currentdict end definefont pop/BaseFont exch findfont 1000\r
-scalefont def/EuroFont exch findfont 1000 scalefont def pop/EuroGlyphName exch\r
-def/FontType 3 def/FontMatrix[.001 0 0 .001 0 0]def/FontBBox BaseFont/FontBBox\r
-get def/Char 1 string def/BuildChar{exch dup begin/Encoding get 1 index get\r
-/Euro eq{BaseFont T1FontHasEuro{false}{true}ifelse}{false}ifelse{EuroFont\r
-setfont pop userdict/Idx 0 put EuroFont/Encoding get{EuroGlyphName eq{exit}\r
-{userdict/Idx Idx 1 add put}ifelse}forall userdict/Idx get}{dup dup Encoding\r
-exch get BaseFont/Encoding get 3 1 roll put BaseFont setfont}ifelse Char 0 3 -1\r
-roll put Char stringwidth newpath 0 0 moveto Char true charpath flattenpath\r
-pathbbox setcachedevice 0 0 moveto Char show end}bind def currentdict end dup\r
-/FontName get exch definefont pop}bind def/AddEuroToT1Font{dup findfont dup\r
-length 10 add dict copy dup/FID undef begin/EuroFont 3 -1 roll findfont 1000\r
-scalefont def CharStrings dup length 1 add dict copy begin/Euro{EuroFont\r
-setfont pop EuroGBBox aload pop setcachedevice 0 0 moveto EuroGName glyphshow}\r
-bind def currentdict end/CharStrings exch def GetNewXUID{/XUID exch def}if 3 1\r
-roll/EuroGBBox exch def/EuroGName exch def currentdict end definefont pop}bind\r
-def/BuildNewFont{UseT3EuroFont{BuildT3EuroFont}{pop AddEuroToT1Font}ifelse}bind\r
-def/UseObliqueEuro{findfont/FontMatrix get dup 2 get 0 eq exch dup 0 get exch 3\r
-get eq and UseT3EuroFont or}bind def\r
-%%EndResource\r
-end reinitialize\r
-/Helvetica FontHasEuro not\r
-{\r
-/Euro.Helvetica\r
- [556 0 24 -19 541 703 ] \r
-<A3F8C00DD4E90378DA01F779D301F808D301F904DA01F899F908156CB447AD338B08FB2D\r
-8B372B7BFB37085806724305D30644075B06724305DA06A0FB36E035F7218B08E08BCDB7\r
-939208EE077A71405E418B083F8B4CCE84F108F76506A3D305FB8306D207F79C06A3D305\r
-FBB10692E2B7E8F28B08E08BBE62A45A08090E>\r
-AddEuroGlyph\r
-/Euro /Helvetica /Helvetica-Copy BuildNewFont\r
-} if\r
-F /F0 0 /256 T /Helvetica mF
-/F0S2F4 F0 [756 0 0 -756 0 0 ] mFS
-F0S2F4 Ji
-17741 10256 M (Master)[630 420 378 210 420 0]xS
-/F0S24C F0 [588 0 0 -588 0 0 ] mFS
-F0S24C Ji
-15243 10997 M (\(~)[194 0]xS
-15779 10997 M (palacios/palacios_master)[325 327 130 325 294 131 326 294 162 326 327 130 325 294 131 326 293 326 488 325 294 162 326 0]xS
-22360 10997 M (\))S
-Pscript_WinNT_Compat begin /$x mysetup def end\r
-Pscript_WinNT_Incr dup /suspend get exec\r
-Pscript_WinNT_Compat dup /initialize get exec\r
-%%BeginDocument: Pscript_Win_PassThrough\r
-/languagelevel where {pop languagelevel} {1} ifelse\r
-2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse\r
-/GpPBeg1 {\r
- gsave initclip\r
- 16 dict begin\r
- /c {curveto} def /l {lineto} def /m {moveto} def\r
- /rc {rcurveto} def /rl {rlineto} def\r
- /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def\r
- /GSE {end grestore} def\r
-} put\r
-{setglobal} if\r
-GpPBeg1\r
-1 setlinecap\r
-0 setlinejoin\r
-8 setmiterlimit\r
-31.4930 setlinewidth\r
-[] 0 setdash\r
-0 0 0 SC\r
-NP 15117 13101 m 15117 15116 l 22675 15116 l 22675 13101 l CP \r
-stroke\r
-GSE\r
-\r
-%%EndDocument\r
-\r
-Pscript_WinNT_Compat dup /suspend get exec\r
-Pscript_WinNT_Incr dup /resume get exec\r
-/DeviceRGB dup setcolorspace /colspABC exch def\r
-0 0 0 1 scol F0S2F4 Ji
-16250 14035 M (Current Version)[546 420 252 252 420 420 210 210 504 420 252 378 168 419 0]xS
-F0S24C Ji
-16298 14776 M (\(~)[194 0]xS
-16834 14776 M (palacios/palacios)[325 327 130 325 294 131 326 294 162 326 327 130 325 294 131 326 0]xS
-21300 14776 M (\))S
-Pscript_WinNT_Compat begin /$x mysetup def end\r
-Pscript_WinNT_Incr dup /suspend get exec\r
-Pscript_WinNT_Compat dup /initialize get exec\r
-%%BeginDocument: Pscript_Win_PassThrough\r
-/languagelevel where {pop languagelevel} {1} ifelse\r
-2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse\r
-/GpPBeg1 {\r
- gsave initclip\r
- 16 dict begin\r
- /c {curveto} def /l {lineto} def /m {moveto} def\r
- /rc {rcurveto} def /rl {rlineto} def\r
- /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def\r
- /GSE {end grestore} def\r
-} put\r
-{setglobal} if\r
-GpPBeg1\r
-0 0 0 SC\r
-NP 18518 13101 m 18518 11967 l 18770 11967 l 18770 13101 l CP \r
-18266 12093 m 18644 11337 l 19022 12093 l CP \r
-fill\r
-GSE\r
-\r
-%%EndDocument\r
-\r
-Pscript_WinNT_Compat dup /suspend get exec\r
-Pscript_WinNT_Incr dup /resume get exec\r
-/DeviceRGB dup setcolorspace /colspABC exch def\r
-0 0 0 1 scol F0S2F4 Ji
-19400 12345 M (Pull)[504 420 168 0]xS
-Pscript_WinNT_Compat begin /$x mysetup def end\r
-Pscript_WinNT_Incr dup /suspend get exec\r
-Pscript_WinNT_Compat dup /initialize get exec\r
-%%BeginDocument: Pscript_Win_PassThrough\r
-/languagelevel where {pop languagelevel} {1} ifelse\r
-2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse\r
-/GpPBeg1 {\r
- gsave initclip\r
- 16 dict begin\r
- /c {curveto} def /l {lineto} def /m {moveto} def\r
- /rc {rcurveto} def /rl {rlineto} def\r
- /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def\r
- /GSE {end grestore} def\r
-} put\r
-{setglobal} if\r
-GpPBeg1\r
-1 setlinecap\r
-1 setlinejoin\r
-10 setmiterlimit\r
-31.4930 setlinewidth\r
-[] 0 setdash\r
-0 0 0 SC\r
-NP 15621 18896 m 14368 18896 13353 19403 13353 20029 c 13353 20656 14368 21163 15621 21163 c 16873 21163 17888 20656 17888 20029 c 17888 19403 16873 18896 15621 18896 c CP \r
-stroke\r
-GSE\r
-\r
-%%EndDocument\r
-\r
-Pscript_WinNT_Compat dup /suspend get exec\r
-Pscript_WinNT_Incr dup /resume get exec\r
-/DeviceRGB dup setcolorspace /colspABC exch def\r
-0 0 0 1 scol /F0S498 F0 [1176 0 0 -1176 0 0 ] mFS
-F0S498 Ji
-14413 20470 M (Jack)[588 656 588 0]xS
-Pscript_WinNT_Compat begin /$x mysetup def end\r
-Pscript_WinNT_Incr dup /suspend get exec\r
-Pscript_WinNT_Compat dup /initialize get exec\r
-%%BeginDocument: Pscript_Win_PassThrough\r
-/languagelevel where {pop languagelevel} {1} ifelse\r
-2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse\r
-/GpPBeg1 {\r
- gsave initclip\r
- 16 dict begin\r
- /c {curveto} def /l {lineto} def /m {moveto} def\r
- /rc {rcurveto} def /rl {rlineto} def\r
- /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def\r
- /GSE {end grestore} def\r
-} put\r
-{setglobal} if\r
-GpPBeg1\r
-1 setlinecap\r
-1 setlinejoin\r
-10 setmiterlimit\r
-31.4930 setlinewidth\r
-[] 0 setdash\r
-0 0 0 SC\r
-NP 7684 21163 m 6780 21163 6047 21558 6047 22045 c 6047 22532 6780 22927 7684 22927 c 8589 22927 9322 22532 9322 22045 c 9322 21558 8589 21163 7684 21163 c CP \r
-stroke\r
-GSE\r
-\r
-%%EndDocument\r
-\r
-Pscript_WinNT_Compat dup /suspend get exec\r
-Pscript_WinNT_Incr dup /resume get exec\r
-/DeviceRGB dup setcolorspace /colspABC exch def\r
-0 0 0 1 scol /F0S348 F0 [840 0 0 -840 0 0 ] mFS
-F0S348 Ji
-6818 22360 M (DEV)[609 562 0]xS
-Pscript_WinNT_Compat begin /$x mysetup def end\r
-Pscript_WinNT_Incr dup /suspend get exec\r
-Pscript_WinNT_Compat dup /initialize get exec\r
-%%BeginDocument: Pscript_Win_PassThrough\r
-/languagelevel where {pop languagelevel} {1} ifelse\r
-2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse\r
-/GpPBeg1 {\r
- gsave initclip\r
- 16 dict begin\r
- /c {curveto} def /l {lineto} def /m {moveto} def\r
- /rc {rcurveto} def /rl {rlineto} def\r
- /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def\r
- /GSE {end grestore} def\r
-} put\r
-{setglobal} if\r
-GpPBeg1\r
-0 0 0 SC\r
-NP 9294 21863 m 13043 19988 l 13100 20101 l 9350 21975 l CP \r
-12931 19903 m 13353 19903 l 13100 20241 l CP \r
-fill\r
-GSE\r
-\r
-%%EndDocument\r
-\r
-Pscript_WinNT_Compat dup /suspend get exec\r
-Pscript_WinNT_Incr dup /resume get exec\r
-/DeviceRGB dup setcolorspace /colspABC exch def\r
-0 0 0 1 scol F0S24C Ji
-10886 21883 M (Email )[392 490 327 131 131 0]xS
-10886 22586 M (Patch)[392 327 163 293 0]xS
-F0S2F4 Ji
-19452 17012 M (Push)[504 420 378 0]xS
-6855 18775 M (Pull)[504 420 168 0]xS
-Pscript_WinNT_Compat begin /$x mysetup def end\r
-Pscript_WinNT_Incr dup /suspend get exec\r
-Pscript_WinNT_Compat dup /initialize get exec\r
-%%BeginDocument: Pscript_Win_PassThrough\r
-/languagelevel where {pop languagelevel} {1} ifelse\r
-2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse\r
-/GpPBeg1 {\r
- gsave initclip\r
- 16 dict begin\r
- /c {curveto} def /l {lineto} def /m {moveto} def\r
- /rc {rcurveto} def /rl {rlineto} def\r
- /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def\r
- /GSE {end grestore} def\r
-} put\r
-{setglobal} if\r
-GpPBeg1\r
-0 0 0 SC\r
-NP 15117 14172 m 15030 14172 l 14944 14174 l 14858 14177 l 14772 14182 l 14686 14188 l 14599 14194 l 14514 14202 l 14428 14212 l 14342 14222 l 14256 14234 l 14170 14247 l 14085 14261 l 13999 14276 l 13914 14293 l 13829 14310 l 13744 14329 l 13659 14348 l 13574 14369 l 13490 14391 l 13406 14414 l 13321 14439 l 13238 14464 l 13154 14490 l 13070 14517 l 12987 14546 l 12904 14575 l 12822 14606 l 12739 14637 l 12657 14669 l 12575 14703 l 12412 14773 l 12251 14847 l 12091 14924 l 11933 15005 l 11776 15090 l 11621 15178 l 11468 15270 l 11316 15365 l 11167 15463 l 11019 15565 l 10874 15670 l 10730 15777 l 10589 15888 l 10451 16002 l 10314 16118 l 10181 16238 l 10050 16359 l 9922 16484 l 9796 16611 l 9673 16740 l 9554 16871 l 9437 17005 l 9323 17141 l 9213 17279 l 9106 17419 l 9003 17561 l 8902 17705 l 8806 17851 l 8713 17998 l 8624 18146 l 8538 18297 l 8457 18448 l 8418 18524 l 8379 18601 l 8342 18678 l 8306 18755 l 8271 18833 l 8237 18911 l 8203 18989 l 8171 19067 l 8141 19146 l 8111 19225 l 8082 19304 l 8054 19383 l 8028 19463 l 8002 19542 l 7978 19622 l 7955 19702 l 7933 19783 l 7912 19863 l 7893 19944 l 7874 20024 l 7857 20105 l 7841 20186 l 7826 20267 l 7813 20349 l 7800 20430 l 7789 20511 l 7780 20593 l 7771 20674 l 7764 20756 l 7759 20852 l 7633 20845 l 7638 20744 l 7646 20661 l 7654 20578 l 7664 20494 l 7676 20411 l 7688 20328 l 7702 20245 l 7717 20162 l 7734 20079 l 7751 19996 l 7770 19914 l 7790 19832 l 7811 19749 l 7834 19667 l 7858 19586 l 7882 19504 l 7908 19423 l 7935 19342 l 7963 19261 l 7993 19180 l 8023 19100 l 8055 19020 l 8087 18940 l 8121 18860 l 8156 18781 l 8192 18702 l 8229 18623 l 8267 18545 l 8306 18467 l 8346 18389 l 8429 18234 l 8516 18082 l 8606 17930 l 8701 17781 l 8799 17633 l 8901 17487 l 9006 17343 l 9115 17201 l 9227 17060 l 9342 16922 l 9460 16787 l 9582 16653 l 9706 16522 l 9834 16393 l 9964 16267 l 10097 16144 l 10233 16023 l 10371 15905 l 10511 15789 l 10655 15677 l 10800 15567 l 10948 15461 l 11097 15358 l 11249 15258 l 11403 15162 l 11559 15069 l 11716 14979 l 11875 14893 l 12036 14811 l 12199 14732 l 12363 14657 l 12528 14586 l 12611 14552 l 12694 14519 l 12778 14487 l 12862 14456 l 12947 14426 l 13031 14398 l 13116 14370 l 13201 14343 l 13287 14317 l 13372 14293 l 13458 14269 l 13544 14247 l 13630 14226 l 13717 14206 l 13804 14187 l 13890 14169 l 13977 14152 l 14064 14137 l 14152 14122 l 14239 14109 l 14326 14097 l 14414 14087 l 14502 14077 l 14589 14069 l 14677 14062 l 14765 14056 l 14853 14052 l 14941 14048 l 15029 14046 l 15116 14046 l CP \r
-7887 20793 m 7684 21163 l 7510 20778 l CP \r
-fill\r
-GSE\r
-GpPBeg1\r
-1 setlinecap\r
-0 setlinejoin\r
-8 setmiterlimit\r
-31.4930 setlinewidth\r
-[] 0 setdash\r
-0 0 0 SC\r
-NP 15369 5543 m 15369 7054 l 22675 7054 l 22675 5543 l CP \r
-stroke\r
-GSE\r
-\r
-%%EndDocument\r
-\r
-Pscript_WinNT_Compat dup /suspend get exec\r
-Pscript_WinNT_Incr dup /resume get exec\r
-/DeviceRGB dup setcolorspace /colspABC exch def\r
-0 0 0 1 scol 17237 6577 M (Web Repo)[714 420 420 210 546 420 420 0]xS
-Pscript_WinNT_Compat begin /$x mysetup def end\r
-Pscript_WinNT_Incr dup /suspend get exec\r
-Pscript_WinNT_Compat dup /initialize get exec\r
-%%BeginDocument: Pscript_Win_PassThrough\r
-/languagelevel where {pop languagelevel} {1} ifelse\r
-2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse\r
-/GpPBeg1 {\r
- gsave initclip\r
- 16 dict begin\r
- /c {curveto} def /l {lineto} def /m {moveto} def\r
- /rc {rcurveto} def /rl {rlineto} def\r
- /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def\r
- /GSE {end grestore} def\r
-} put\r
-{setglobal} if\r
-GpPBeg1\r
-0 0 0 SC\r
-NP 18266 9322 m 18266 7684 l 18518 7684 l 18518 9322 l CP \r
-18014 7810 m 18392 7054 l 18770 7810 l CP \r
-fill\r
-GSE\r
-\r
-%%EndDocument\r
-\r
-Pscript_WinNT_Compat dup /suspend get exec\r
-Pscript_WinNT_Incr dup /resume get exec\r
-/DeviceRGB dup setcolorspace /colspABC exch def\r
-0 0 0 1 scol 19200 8949 M (Pull)[504 420 168 0]xS
-Pscript_WinNT_Compat begin /$x mysetup def end\r
-Pscript_WinNT_Incr dup /suspend get exec\r
-Pscript_WinNT_Compat dup /initialize get exec\r
-%%BeginDocument: Pscript_Win_PassThrough\r
-/languagelevel where {pop languagelevel} {1} ifelse\r
-2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse\r
-/GpPBeg1 {\r
- gsave initclip\r
- 16 dict begin\r
- /c {curveto} def /l {lineto} def /m {moveto} def\r
- /rc {rcurveto} def /rl {rlineto} def\r
- /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def\r
- /GSE {end grestore} def\r
-} put\r
-{setglobal} if\r
-GpPBeg1\r
-0 0 0 SC\r
-NP 15369 6361 m 15278 6362 l 15187 6364 l 15097 6368 l 15006 6372 l 14916 6378 l 14826 6385 l 14736 6394 l 14647 6404 l 14558 6414 l 14469 6426 l 14381 6440 l 14293 6454 l 14206 6469 l 14120 6486 l 14033 6504 l 13948 6522 l 13863 6542 l 13780 6563 l 13614 6607 l 13452 6655 l 13373 6681 l 13295 6707 l 13218 6734 l 13142 6762 l 13066 6791 l 12993 6820 l 12920 6851 l 12849 6882 l 12779 6913 l 12711 6946 l 12644 6979 l 12578 7013 l 12514 7047 l 12452 7082 l 12391 7118 l 12332 7154 l 12275 7190 l 12219 7227 l 12165 7265 l 12114 7303 l 12064 7341 l 12015 7380 l 11969 7419 l 11925 7459 l 11883 7499 l 11844 7539 l 11806 7579 l 11771 7619 l 11738 7660 l 11707 7701 l 11678 7742 l 11652 7783 l 11628 7824 l 11607 7865 l 11588 7906 l 11572 7947 l 11558 7987 l 11546 8028 l 11538 8069 l 11531 8109 l 11528 8150 l 11526 8190 l 11525 8234 l 11520 8283 l 11513 8331 l 11503 8378 l 11489 8426 l 11473 8473 l 11454 8520 l 11433 8567 l 11409 8613 l 11382 8659 l 11353 8704 l 11322 8749 l 11288 8794 l 11252 8838 l 11214 8882 l 11174 8925 l 11131 8968 l 11087 9010 l 11040 9052 l 10992 9093 l 10941 9134 l 10889 9174 l 10835 9214 l 10779 9253 l 10721 9291 l 10662 9329 l 10600 9367 l 10538 9403 l 10473 9439 l 10407 9475 l 10340 9510 l 10271 9544 l 10201 9577 l 10129 9609 l 10056 9641 l 9982 9672 l 9906 9703 l 9830 9732 l 9752 9761 l 9673 9788 l 9593 9815 l 9512 9841 l 9347 9890 l 9179 9935 l 9093 9956 l 9007 9977 l 8920 9996 l 8832 10014 l 8744 10030 l 8655 10046 l 8565 10061 l 8476 10074 l 8385 10087 l 8294 10098 l 8203 10108 l 8112 10116 l 8020 10124 l 7876 10131 l 7870 10005 l 8010 9998 l 8100 9991 l 8190 9982 l 8279 9973 l 8368 9962 l 8457 9950 l 8545 9936 l 8633 9922 l 8720 9907 l 8807 9890 l 8893 9873 l 8978 9854 l 9063 9834 l 9146 9814 l 9311 9769 l 9473 9721 l 9553 9696 l 9631 9669 l 9708 9642 l 9785 9614 l 9860 9586 l 9933 9556 l 10006 9526 l 10077 9495 l 10147 9463 l 10215 9431 l 10282 9398 l 10348 9364 l 10412 9330 l 10474 9295 l 10535 9259 l 10594 9223 l 10651 9187 l 10707 9149 l 10760 9112 l 10812 9074 l 10862 9036 l 10910 8997 l 10956 8958 l 11000 8918 l 11042 8879 l 11082 8839 l 11119 8799 l 11155 8758 l 11188 8718 l 11219 8677 l 11247 8636 l 11273 8596 l 11297 8555 l 11319 8514 l 11338 8473 l 11354 8433 l 11368 8392 l 11380 8351 l 11389 8311 l 11395 8271 l 11399 8230 l 11401 8186 l 11402 8138 l 11407 8090 l 11415 8042 l 11425 7994 l 11439 7947 l 11455 7900 l 11474 7853 l 11495 7806 l 11519 7760 l 11546 7715 l 11575 7670 l 11606 7625 l 11640 7580 l 11676 7536 l 11714 7493 l 11754 7450 l 11797 7407 l 11841 7365 l 11888 7323 l 11936 7282 l 11987 7241 l 12039 7201 l 12093 7162 l 12149 7123 l 12207 7084 l 12266 7046 l 12328 7009 l 12390 6972 l 12455 6936 l 12521 6901 l 12588 6866 l 12657 6832 l 12727 6799 l 12799 6766 l 12872 6734 l 12946 6703 l 13021 6673 l 13098 6644 l 13176 6615 l 13255 6588 l 13335 6561 l 13416 6535 l 13581 6486 l 13749 6441 l 13835 6419 l 13921 6399 l 14008 6380 l 14096 6362 l 14184 6345 l 14273 6330 l 14362 6315 l 14452 6302 l 14543 6289 l 14633 6278 l 14725 6268 l 14816 6260 l 14908 6252 l 15000 6246 l 15092 6242 l 15184 6238 l 15277 6236 l 15368 6235 l CP \r
-7942 10255 m 7558 10078 l 7930 9877 l CP \r
-fill\r
-GSE\r
-\r
-%%EndDocument\r
-\r
-Pscript_WinNT_Compat dup /suspend get exec\r
-Pscript_WinNT_Incr dup /resume get exec\r
-/DeviceRGB dup setcolorspace /colspABC exch def\r
-0 0 0 1 scol 10382 7186 M (Pull)[504 420 168 0]xS
-Pscript_WinNT_Compat begin /$x mysetup def end\r
-Pscript_WinNT_Incr dup /suspend get exec\r
-Pscript_WinNT_Compat dup /initialize get exec\r
-%%BeginDocument: Pscript_Win_PassThrough\r
-/languagelevel where {pop languagelevel} {1} ifelse\r
-2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse\r
-/GpPBeg1 {\r
- gsave initclip\r
- 16 dict begin\r
- /c {curveto} def /l {lineto} def /m {moveto} def\r
- /rc {rcurveto} def /rl {rlineto} def\r
- /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def\r
- /GSE {end grestore} def\r
-} put\r
-{setglobal} if\r
-GpPBeg1\r
-1 setlinecap\r
-1 setlinejoin\r
-10 setmiterlimit\r
-31.4930 setlinewidth\r
-[] 0 setdash\r
-0 0 0 SC\r
-NP 5291 8818 m 4038 8818 3023 9382 3023 10078 c 3023 10773 4038 11337 5291 11337 c 6543 11337 7558 10773 7558 10078 c 7558 9382 6543 8818 5291 8818 c CP \r
-stroke\r
-GSE\r
-\r
-%%EndDocument\r
-\r
-Pscript_WinNT_Compat dup /suspend get exec\r
-Pscript_WinNT_Incr dup /resume get exec\r
-/DeviceRGB dup setcolorspace /colspABC exch def\r
-0 0 0 1 scol 3910 9905 M (External)[504 378 210 420 252 420 420 0]xS
-3574 10813 M (Developer)[546 420 378 420 168 420 420 420 0]xS
-Pscript_WinNT_Compat begin /$x mysetup def end\r
-Pscript_WinNT_Incr dup /suspend get exec\r
-Pscript_WinNT_Compat dup /initialize get exec\r
-%%BeginDocument: Pscript_Win_PassThrough\r
-/languagelevel where {pop languagelevel} {1} ifelse\r
-2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse\r
-/GpPBeg1 {\r
- gsave initclip\r
- 16 dict begin\r
- /c {curveto} def /l {lineto} def /m {moveto} def\r
- /rc {rcurveto} def /rl {rlineto} def\r
- /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def\r
- /GSE {end grestore} def\r
-} put\r
-{setglobal} if\r
-GpPBeg1\r
-0 0 0 SC\r
-NP 5589 11294 m 13183 19379 l 13092 19465 l 5497 11380 l CP \r
-13232 19247 m 13353 19651 l 12957 19505 l CP \r
-fill\r
-GSE\r
-\r
-%%EndDocument\r
-\r
-Pscript_WinNT_Compat dup /suspend get exec\r
-Pscript_WinNT_Incr dup /resume get exec\r
-/DeviceRGB dup setcolorspace /colspABC exch def\r
-0 0 0 1 scol F0S24C Ji
-7611 12561 M (Email )[392 490 327 131 131 0]xS
-7611 13264 M (Patch)[392 327 163 293 0]xS
-Pscript_WinNT_Compat begin /$x mysetup def end\r
-Pscript_WinNT_Incr dup /suspend get exec\r
-Pscript_WinNT_Compat dup /initialize get exec\r
-%%BeginDocument: Pscript_Win_PassThrough\r
-/languagelevel where {pop languagelevel} {1} ifelse\r
-2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse\r
-/GpPBeg1 {\r
- gsave initclip\r
- 16 dict begin\r
- /c {curveto} def /l {lineto} def /m {moveto} def\r
- /rc {rcurveto} def /rl {rlineto} def\r
- /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def\r
- /GSE {end grestore} def\r
-} put\r
-{setglobal} if\r
-GpPBeg1\r
-0 0 0 SC\r
-NP 17883 19967 m 17907 19965 l 17898 19966 l 17921 19961 l 17937 19954 l 17953 19945 l 17971 19933 l 17990 19918 l 18009 19899 l 18030 19876 l 18050 19851 l 18071 19822 l 18093 19789 l 18114 19754 l 18136 19715 l 18158 19673 l 18179 19629 l 18201 19581 l 18222 19531 l 18244 19478 l 18265 19422 l 18286 19363 l 18307 19302 l 18327 19239 l 18348 19173 l 18368 19105 l 18388 19034 l 18408 18961 l 18427 18887 l 18446 18809 l 18465 18730 l 18483 18649 l 18501 18566 l 18519 18481 l 18537 18394 l 18554 18306 l 18570 18216 l 18587 18124 l 18603 18030 l 18618 17936 l 18633 17839 l 18648 17741 l 18662 17642 l 18675 17541 l 18688 17440 l 18701 17337 l 18713 17233 l 18725 17128 l 18736 17021 l 18747 16914 l 18766 16697 l 18783 16477 l 18798 16254 l 18810 16029 l 18820 15803 l 18827 15575 l 18829 15430 l 18955 15432 l 18953 15578 l 18946 15808 l 18936 16036 l 18924 16263 l 18909 16487 l 18892 16708 l 18872 16927 l 18861 17035 l 18850 17141 l 18838 17247 l 18826 17352 l 18813 17456 l 18800 17558 l 18786 17660 l 18772 17760 l 18757 17858 l 18742 17956 l 18727 18052 l 18711 18146 l 18694 18239 l 18677 18330 l 18660 18419 l 18643 18507 l 18625 18593 l 18606 18677 l 18587 18759 l 18568 18840 l 18549 18918 l 18529 18994 l 18509 19068 l 18489 19140 l 18468 19210 l 18447 19278 l 18426 19343 l 18404 19406 l 18383 19466 l 18360 19525 l 18338 19580 l 18315 19633 l 18293 19684 l 18269 19732 l 18246 19777 l 18222 19819 l 18198 19859 l 18173 19896 l 18148 19930 l 18122 19962 l 18096 19990 l 18069 20016 l 18041 20038 l 18011 20057 l 17981 20072 l 17949 20084 l 17925 20089 l 17923 20090 17920 20090 17916 20090 c 17893 20092 l CP \r
-18703 15492 m 18896 15116 l 19081 15496 l CP \r
-fill\r
-GSE\r
-\r
-%%EndDocument\r
-\r
-Pscript_WinNT_Compat dup /suspend get exec\r
-Pscript_WinNT_Incr dup /resume get exec\r
-/DeviceRGB dup setcolorspace /colspABC exch def\r
-0 0 0 1 scol F0S2F4 Ji
-15169 16508 M (Pull)[504 420 168 0]xS
-Pscript_WinNT_Compat begin /$x mysetup def end\r
-Pscript_WinNT_Incr dup /suspend get exec\r
-Pscript_WinNT_Compat dup /initialize get exec\r
-%%BeginDocument: Pscript_Win_PassThrough\r
-/languagelevel where {pop languagelevel} {1} ifelse\r
-2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse\r
-/GpPBeg1 {\r
- gsave initclip\r
- 16 dict begin\r
- /c {curveto} def /l {lineto} def /m {moveto} def\r
- /rc {rcurveto} def /rl {rlineto} def\r
- /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def\r
- /GSE {end grestore} def\r
-} put\r
-{setglobal} if\r
-GpPBeg1\r
-0 0 0 SC\r
-NP 15118 14172 m 15101 14172 l 15087 14174 l 15073 14176 l 15059 14179 l 15028 14188 l 14999 14200 l 14970 14215 l 14940 14234 l 14910 14256 l 14880 14281 l 14850 14310 l 14820 14342 l 14790 14377 l 14761 14415 l 14733 14455 l 14705 14498 l 14678 14544 l 14652 14591 l 14627 14642 l 14603 14694 l 14581 14748 l 14559 14803 l 14539 14861 l 14520 14920 l 14503 14980 l 14487 15041 l 14473 15104 l 14460 15167 l 14449 15231 l 14440 15296 l 14433 15361 l 14428 15427 l 14425 15492 l 14424 15558 l 14425 15624 l 14427 15691 l 14432 15756 l 14438 15822 l 14445 15887 l 14454 15951 l 14465 16015 l 14477 16078 l 14490 16139 l 14505 16200 l 14521 16259 l 14538 16316 l 14556 16372 l 14575 16426 l 14595 16479 l 14616 16529 l 14638 16577 l 14660 16623 l 14683 16666 l 14707 16707 l 14732 16745 l 14756 16780 l 14782 16812 l 14807 16840 l 14832 16865 l 14857 16887 l 14882 16905 l 14906 16920 l 14930 16931 l 14952 16938 l 14962 16940 l 14972 16942 l 14983 16943 l 14993 16943 l 15008 16944 l 15029 16947 l 15049 16951 l 15069 16957 l 15088 16965 l 15107 16974 l 15125 16984 l 15143 16996 l 15161 17009 l 15178 17023 l 15194 17039 l 15211 17055 l 15227 17073 l 15242 17091 l 15258 17111 l 15273 17131 l 15288 17153 l 15302 17175 l 15330 17222 l 15358 17273 l 15385 17327 l 15411 17385 l 15436 17446 l 15460 17509 l 15483 17576 l 15505 17645 l 15527 17717 l 15547 17791 l 15565 17868 l 15583 17946 l 15600 18026 l 15615 18108 l 15629 18192 l 15641 18276 l 15652 18363 l 15661 18450 l 15670 18577 l 15544 18585 l 15536 18463 l 15527 18378 l 15516 18295 l 15504 18212 l 15491 18131 l 15476 18051 l 15460 17974 l 15443 17898 l 15425 17824 l 15406 17753 l 15385 17684 l 15364 17617 l 15342 17554 l 15319 17493 l 15296 17436 l 15272 17383 l 15247 17333 l 15222 17287 l 15197 17244 l 15184 17224 l 15171 17206 l 15159 17189 l 15146 17173 l 15133 17158 l 15121 17144 l 15109 17131 l 15097 17120 l 15085 17110 l 15073 17101 l 15062 17093 l 15051 17087 l 15040 17081 l 15031 17077 l 15021 17074 l 15011 17071 l 15003 17070 l 14989 17069 l 14969 17068 l 14950 17066 l 14931 17063 l 14911 17057 l 14875 17044 l 14840 17027 l 14807 17006 l 14774 16982 l 14743 16954 l 14712 16923 l 14682 16889 l 14654 16852 l 14626 16813 l 14599 16771 l 14573 16726 l 14547 16679 l 14523 16629 l 14499 16578 l 14477 16524 l 14456 16468 l 14436 16411 l 14417 16352 l 14399 16291 l 14382 16229 l 14367 16166 l 14353 16101 l 14341 16035 l 14330 15969 l 14320 15901 l 14312 15833 l 14306 15765 l 14302 15696 l 14299 15626 l 14298 15556 l 14299 15487 l 14302 15417 l 14308 15347 l 14315 15278 l 14325 15210 l 14336 15142 l 14350 15076 l 14365 15010 l 14382 14945 l 14400 14881 l 14420 14819 l 14442 14758 l 14465 14699 l 14489 14641 l 14515 14585 l 14542 14531 l 14570 14479 l 14599 14430 l 14630 14383 l 14662 14338 l 14694 14295 l 14728 14256 l 14763 14219 l 14799 14185 l 14836 14154 l 14873 14127 l 14912 14103 l 14952 14083 l 14993 14067 l 15033 14055 l 15055 14051 l 15075 14048 l 15097 14046 l 15115 14046 l CP \r
-15793 18510 m 15621 18896 l 15415 18526 l CP \r
-fill\r
-GSE\r
-\r
-%%EndDocument\r
-\r
-Pscript_WinNT_Compat dup /suspend get exec\r
-Pscript_WinNT_Incr dup /resume get exec\r
-LH\r
-%%PageTrailer\r
-\r
-%%Trailer\r
-%%DocumentNeededResources: \r
-%%+ font Helvetica\r
-%%DocumentSuppliedResources: \r
-%%+ procset Pscript_WinNT_ErrorHandler 5.0 0\r
-%%+ procset Pscript_FatalError 5.0 0\r
-%%+ procset Pscript_Win_Basic 5.0 0\r
-%%+ procset Pscript_Win_Utils_L2 5.0 0\r
-%%+ procset Pscript_WinNT_Compat 5.0 0\r
-%%+ procset Pscript_Text 5.0 0\r
-%%+ procset Pscript_Encoding256 5.0 0\r
-%%+ procset Pscript_Win_Euro_L2 5.0 0\r
-Pscript_WinNT_Incr dup /terminate get exec\r
-%%EOF\r
+++ /dev/null
-
-\documentclass[11pt]{article}
-
-\usepackage{calc}
-\usepackage{graphics}
-%\usepackage{latex8}
-\usepackage{times}
-\usepackage{epsf}
-\usepackage{epsfig}
-\usepackage{graphicx}
-\usepackage{changebar}
-\usepackage{portland}
-\usepackage{lscape}
-
-\setlength{\textheight}{8.50in}
-\setlength{\textwidth}{6.5in}
-\setlength{\topmargin}{-0.3in}
-%\setlength{\leftmargin}{2.9in}
-%\setlength{\rightmargin}{-2.9in}
-\setlength{\oddsidemargin}{0in}
-\setlength{\parindent}{0.5in}
-\setlength\parindent{0in}
-\setlength\parskip{0.1in}
-
-\newcommand{\note}[1]{{$\rightarrow$ \bf Note: \emph{#1}}}
-
-\begin{document}
-
-\title{
-\includegraphics[height=1.5in]{v3vee.pdf}
-\includegraphics[height=1.5in]{logo6.png} \\
-\vspace{0.5in}
-Palacios Internal Developer Manual
-}
-
-
-\maketitle
-
-
-This manual is written for Internal Palacios developers. It contains
-information on how to obtain the palacios code base, how to go about
-the development process, and how to commit those changes to the
-mainline source tree. This assumes that the reader has read {\em An
-Introduction to the Palacios Virtual Machine Monitor -- Release 1.0}
-and also has a slight working knowledge of {\em git}.
-
-
-\section{Overview}
-
-
-Both Palacios and Kitten follow a hybrid development process that
-uses both the centralized repository and distributed development
-models. A central repository exists that holds the master version of
-the code base. This central repository is cloned by multiple people
-and in multiple places to support various development efforts. A
-feature of git is that every developer actually has a fully copy of
-the entire repository, and so can function independently until such
-time as they need to resync with the master version.
-
-There are typically multiple levels of access to the central
-repository, that are granted based on the type of developer being
-granted access. The three basic developer types and their access
-privileges are:
-
-\begin{itemize}
-\item Core Developers: These are the lead developers and are in
-charge of managing the master repository. They have full read/write
-access permissions to the central repository.
-
-\item Internal Developers: Formal members of the development
-team. These people are capable of pulling directly from the central
-repository, but lack the ability to write directly to it.
-
-\item External Developers: People who are not actual members of the
-development team. These people can only access the public repository
-which is only updated to contain the release versions.
-\end{itemize}
-
-Because internal and external developers cannot write directly to the
-master repository, they need to first submit their changes to a core
-developer before they can be added to the mainline. We will discuss
-that process in Section~\ref{sec:submission}.
-
-
-\section{Checking out Palacios}
-The central palacios repository is located on {\em
-newskysaw.cs.northwestern.edu} in {\em /home/palacios/palacios}. All
-internal developers have read access to the directory. Each developer
-must create their own local version of the repository, this is done
-with {\em git clone}.
-
-\begin{verbatim}
-git clone /home/palacios/palacios
-\end{verbatim}
-
-This creates a local copy of the repository at {\em ./palacios/}.
-
-
-All development work is done in the {\em devel} branch of the
-repository. The developer can access this branch via:
-
-\begin{verbatim}
-git checkout --track -b devel origin/devel
-\end{verbatim}
-
-or
-
-\begin{verbatim}
-/opt/vmm-tools/bin/checkout_branch devel
-\end{verbatim}
-
-{\em Important:}
-Note that palacios is very actively developed so the contents of the
-{\em devel} branch are frequently changing. In order to keep up to
-date with the latest version, it is necessary to periodically pull the
-latest changes from the master repository by running \verb.git pull..
-
-
-
-\section{Checking out Kitten}
-
-Kitten is available from Sandia National Labs, and is the main host OS
-we are targetting with Palacios. Loosely speaking core Palacios
-developers are internal Kitten developers, and internal Palacios
-developers are external Kitten developers. Because we have limited
-access to the Kitten repository, we are maintaining a local mirror
-copy in {\em /home/palacios/kitten}.
-
-Kitten uses Mercurial for their source management, so you will have to
-make sure the local mercurial version is configured correctly.
-Specifically you should add the following python path to your shell environment.
-
-\begin{verbatim}
-export PYTHONPATH=/usr/local/lib64/python2.4/site-packages/
-\end{verbatim}
-
-You can then clone Kitten from the local mirror:
-\begin{verbatim}
-hg clone /home/palacios/kitten
-\end{verbatim}
-
-Both the Kitten and Palacios clone commands should be run from the
-same direcotyr. This means that both repositories should be located at
-the same directory level. The Kitten build process depends on this.
-
-{\em Important:} Like Palacios, Kitten is very actively developed so
-source tree is frequently changing. In order to keep up to date with
-the latest version, it is necessary to periodically pull the latest
-changes from the mirror repository by running \verb.hg pull. followed
-by \verb.hg update..
-
-\section{Compiling Palacios}
-Palacios is capable of targeting 32 and 64 bit operating systems, and
-includes a build process that supports both these
-architectures. Furthermore, Palacios has multiple build locations,
-with multiple makefiles: a top level build directory and a Palacios
-specific build directory. The Palacios build process first generates a
-static library that includes the Palacios VMM. This static library is
-then linked into a host operating system. Palacios internally supports
-GeekOS and can generate a complete OS image via a unified build
-process. To combine Palacios with Kitten, it is necessary to first
-compile Palacios and then to compile Kitten externally link it with
-Palacios. The output of the compilation process is a bit more complex
-and generates multiple binaries, and the specifics can be found in the
-Makefiles.
-
-The top level build directory provides a number of high level make
-targets, and is located in {\em palacios/build/}. It supports building
-32 and 64 bit versions of the Palacios library independently as well
-as building an integrated version of GeekOS. The basic targets are:
-\begin{itemize}
-\item \verb.make palacios-full32. -- Generates a 32 bit version of the Palacios static library
-\item \verb.make palacios-full64. -- Generates a 64 bit version of the
-Palacios static library
-\item \verb.make geekos. -- Compiles the GeekOS kernel, and link it with the
-Palacios static library
-\item \verb.make geekos-iso. -- Generate an ISO boot disk image from the
-GeekOS kernel that has been compiled
-\end{itemize}
-
-The second build directory is located at {\em palacios/palacios/build}
-and handles only the Palacios compilation process. It supports a
-differnt set of targets and arguments:
-\begin{itemize}
-\item \verb.make ARCH=32. -- iteratively compiles a 32 bit version of Palacios
-\item \verb.make ARCH=64. -- iteratively compiles a 64 bit version of
-Palacios
-\item \verb.make ARCH=32 world. -- fully recompiles a 32 bit version of
-Palacios
-\item \verb.make ARCH=64 world. -- fully recompiles a 64 bit version of
-Palacios
-\end{itemize}
-
-Both build levels support compilation directives that control the
-debugging messages that are generated by Palacios. These are specified
-by appending a \verb.DEBUG_<COMPONENT>=1. to the end of the
-\verb.make. command. The components that are currently supported are:
-\begin{itemize}
-\item \verb.DEBUG_ALL=1. -- enables debugging for all the VMM components
-({\em Warning:} this generates a {\em lot} of debug information.
-\item \verb.DEBUG_SHADOW_PAGING=1.
-\item \verb.DEBUG_CTRL_REGS=1.
-\item \verb.DEBUG_INTERRUPTS=1.
-\item \verb.DEBUG_IO=1.
-\item \verb.DEBUG_KEYBOARD=1.
-\item \verb.DEBUG_PIC=1.
-\item \verb.DEBUG_PIT=1.
-\item \verb.DEBUG_NVRAM=1.
-\item \verb.DEBUG_GENERIC=1.
-\item \verb.DEBUG_EMULATOR=1.
-\item \verb.DEBUG_RAMDISK=1.
-\item \verb.DEBUG_XED=1.
-\item \verb.DEBUG_HALT=1.
-\item \verb.DEBUG_DEV_MGR=1.
-\item \verb.DEBUG_APIC=1.
-\end{itemize}
-
-
-
-\section{Compiling Kitten}
-Kitten requires a 64 bit version of Palacios, so make sure that
-Palacios has been correctly compiled before compiling Kitten.
-
-\subsection{Configuration}
-Kitten borrows a lot of concepts from Linux, including the Linux build
-process. As such it must be configured before it is actually compiled.
-The Kitten configuration process is the same as Linux, and can be
-accessed via any of these make targets.
-\begin{itemize}
-\item \verb.make xconfig.
-\item \verb.make config.
-\item \verb.make menuconfig.
-\end{itemize}
-
-There are some specific configuration options that should be disabled
-to work with Palacios. Because Palacios is configured by default to
-provide a guest with direct access to the VGA console, the {\em VGA
-console} device driver should be disbabled in the Kitten
-configuration. Similarly the {\em VM console} driver should be
-disabled as well.
-
-Furthermore, because the VGA console is not being used the {\em Kernel
-Command Line Arguments} must be modified to remove the {\em VGA}
-device from the console list.
-
-The guest OS that is booted as a VM is included as an ISO image in raw
-binary format inside Kitten's {\em init\_task}. To change the guest
-ISO, you must change the makefile for the init\_task. This is located
-in {\em user/hello\_world/Makefile} and the syntax is well commented.
-On {\em newskysaw} a collection of guest ISO images are located in
-{\em /opt/vmm-tools/isos/}.
-
-
-\subsection{Compilation}
-After Kitten has been configured the compilation can be done. The
-general process is to compile a reference build of Kitten, followed by
-compiling Palacios support as a kernel module, and then doing a new
-full recompilation of Kitten.
-
-The specific compilation steps are run from the top level Kitten directory:
-\begin{verbatim}
-make
-cd palacios
-make -C .. M=`pwd`
-cp built-in.o ../modules/palacios-mod.o
-cd ..
-make
-make isoimage
-\end{verbatim}
-
-\note{This should probably explain how to change the iso (helloworld,etc)}
-
-This generates an ISO boot image containing Kitten, Palacios, and the
-guest that will be run as a VM. The ISO image is located at {\em
-./arch/x86\_64/boot/image.iso}.
-
-
-\section{Running Palacios/Kitten}
-Kitten and Palacios are capable of running under Qemu, which makes
-debugging much simpler.
-
-The basic form of the command to start the Qemu emulator is:
-\begin{verbatim}
-/usr/local/qemu/bin/qemu-system-x86_64 -smp 1 -m 1024 \
- -serial file:./serial.out \
- -cdrom ./arch/x86_64/boot/image.iso \
- < /dev/null
-\end{verbatim}
-
-The command starts up a single processor emulated machine, with 1gig
-of RAM and a cdrom drive loaded with the Kitten ISO image. Furthermore
-all output to the serial port is written directly to a file called
-{\em serial.out}. This command can be copied into a shell script for easy access.
-
-\section{Development Guidelines}
-
-There are standard requirements we have for code entering the mainline.
-
-First and foremost, Palacios is designed to be OS indenpendent and
-support 32 and 64 bit architectures. This means that developers should
-not include any external OS specific dependencies in any Palacios
-component. Also all changes need to be tested on both 32 and 64 bit
-architectures to make sure that they compile as well as run corrrectly.
-
-\paragraph*{Coding Style}
-
-"The use of equal negative space, as a balance to positive space, in a
-composition is considered by many as good design. This basic and often
-overlooked principle of design gives the eye a "place to rest,"
-increasing the appeal of a composition through subtle means."
-\newline\newline
-Translation: Use the spacebar, newlines, and parentheses.
-
-Curly-brackets are not optional, even for single line conditionals.
-
-Tabs should be 4 characters in width.
-
-{\em Special:} If you are using XEmacs add the following to your \verb.init\.el. file:
-\begin{verbatim}
-(setq c-basic-offset 4)
-(c-set-offset 'case-label 4)
-\end{verbatim}
-
-{\em Bad}
-\begin{verbatim}
-if(a&&b==5||c!=0) return;
-\end{verbatim}
-
-
-{\em Good}
-
-\begin{verbatim}
-if (((a) && (b == 5)) ||
- (c != 0)) {
- return;
-}
-\end{verbatim}
-
-
-
-\paragraph*{Fail Stop}
-Because booting a basic linux kernel results in over 1 million VM exits
-catching silent errors is next to impossible. For this reason
-ANY time your code has an error it should return -1, and expect the
-execution to halt.
-
-This includes unimplemented features and unhandled cases. These cases
-should ALWAYS return -1.
-
-
-\paragraph*{Function names}
-Externally visible function names should be used rarely and have
-unique names. Currently we have several techniques for achieving this:
-
-\begin{enumerate}
-\item \verb.#ifdefs. in the header file
-\newline
-When the V3 Hypervisor is compiled it defines the symbol
-\verb.__V3VEE__. Any function that is not needed outside the Hypervisor
-context should be inside an \verb.#ifdef __V3VEE__. block, this will make it
-invisible to the host environment.
-
-\item Static Functions
-\newline
-Any utility functions that are only needed in the .c file where they
-are defined should be declared as static and not included in the
-header file. You should make an effort to use static functions
-whenever possible.
-
-\item \verb.v3_. prefix
-\newline
-Major interface functions should be named with the prefix \verb.v3_. This
-xallows easy understanding of how to interact with the subsystems. And
-in the case that they need to be externally visible to the host os,
-make them unlikely to collide with other functions.
-\end{enumerate}
-
-\paragraph*{Debugging Output}
-Debugging output is sent through the host os via functions in the
-\verb.os_hooks. structure. These functions have various wrappers of the form
-\verb.Print*., with printf style semantics.
-
-Two functions of note are \verb.PrintDebug. and \verb.PrintError..
-
-\begin{itemize}
-
-\item PrintDebug:
-\newline
-Should be used for debugging output that will often be turned off
-selectively by the VMM configuration.
-
-\item PrintError
-\newline
-Should be used when an error occurs, this will never be optimized out
-and will always print.
-\end{itemize}
-
-
-\section{Code Submission}
-\label{sec:submission}
-
-To commit changes to the central repository they need to be exported
-as a patch set that can be applied directly to a mainline. Both Git
-and Mercurial contain functionality to allow developers to maintain
-changes as a patch set. There are also a few options that make dealing
-with patches easier.
-
-\subsection{Palacios}
-
-Git includes support for directly exporting local repository commits
-as a patch set. The basic operation is for a developer to commit a
-change to a local repository, and then export that change as a patch
-that can be applied to another git repository. While this is
-functionally possible, there are a number of issues. The main problem
-is that it is difficult to fully encapsulate a new feature in a single
-commit, and dealing with multiple patches that often overwrite each
-other is not a viable option either. Furthermore, once a patch is
-applied to the mainline, it will generate a conflicting commit that
-will become present when the developer next pulls from the central
-repository. This can result in both repositories getting out of
-sync. It is possible to deal with this by manually rebasing the local
-repository, but it is difficult and error-prone.
-
-This approach also does not map well when patches are being revised. A
-normal patch will go through multiple revisions as it is reviewed and
-modified by others. This often leads to synchronization issues as well
-as errors with patch revisions. Ultimately it is the responsibility of
-the developer to generate a patch that will apply cleanly to the
-mainline.
-
-For this reason most internal developers should seriously consider
-{\em stacked git}. Stacked git is designed to make patch development
-easier and less of a headache. The basic mode of operation is for a
-developer to intialize a patch for a new feature and then continuously
-apply changes to the patch. Stacked Git allows a developer to layer a
-series of patches on top of a local git repository, without causing
-the repository to unsync due to local commits. Basically, the
-developer never commits changes to the repository itself but instead
-commits the changes to a specific patch. The local patches are managed
-using stack operations (push/pop) which allows a developer to apply
-and unapply patches as needed. Stacked git also manages new changes to
-the underlying git repository as a result of a pull operation and
-prevents collisions as changes are propagated upstream. For instance
-if you have a local patch that is applied to the mainline as a commit,
-when the commit is pulled down the patch becomes empty because it is
-effectively identical to the mainline. It also makes incorporating
-external revisions to a patch easier. Stacked git is installed on {\em
-newskysaw} in \verb./opt/vmm-tools/bin/.
-
-Brief command overview:
-\begin{itemize}
-\item \verb.stg init. -- Initialize stacked git in a given branch
-\item \verb.stg new. -- create a new patch set, an editor will open
-asking for a commit message that will be used when the patch is
-ultimately committed.
-\item \verb.stg pop. -- pops a patch off of the source tree.
-\item \verb.stg push. -- pushes a patch back on to a source tree.
-\item \verb.stg export. -- exports a patch to a directory as a file
-that can then be emailed.
-\item \verb.stg refresh. -- commits local changes to the patch set at
-the top of the applied stack.
-\item \verb.stg fold. -- Apply a patch file to the current
-patch. (This is how you can manage revisions that are made by other developers).
-\end{itemize}
-
-You should definately look at the online documentation to better
-understand how stacked git works. It is not required of course, but if
-you want your changes to be applied its up to you to generate a patch
-that is acceptable to a core developer. Ultimately using Stacked git
-should be easier than going it alone.
-
-
-All patches should be emailed to Jack for inclusion in the
-mainline. An overview of the organization is given in
-Figure~\ref{fig:process}. You should assume that the first revision of
-a patch will not be accepted, and that you will have to make
-changes. Furthermore, the final form of the patch most likely will not
-be exactly what you submitted.
-
-
-\begin{figure}[t]
-\begin{center}
-\includegraphics[height=3.5in]{dev_chart.pdf}
-\end{center}
-\caption{Development organization}
-\label{fig:process}
-\end{figure}
-
-
-\subsection{Kitten}
-
-Writing code for Kitten follows essentially the same process as
-Palacios. The difference is that the patches need to be emailed to the
-Kitten developers. To send in a patch, you can just email it to the
-V3Vee development list.
-
-
-Also, instead of Stacked git you should use Mercurial patch
-queues. This feature is enabled in your .hgrc file.
-\begin{verbatim}
-[extensions]
-hgext.mq=
-\end{verbatim}
-
-Mercurial queues use the same stack operations as stacked git, however
-it does not automatically handle the synchronization with pull
-operations. Before you update from the central version of Kitten you
-need to pop all of the patches, and then push them once the update is
-complete.
-
-Basically:
-\begin{verbatim}
-hg qpop -a
-hg pull
-hg update
-hg qpush -a
-\end{verbatim}
-
-
-%Also, remember that Kitten is not a Northwestern project and is being
-%developed by professional developers at Sandia National Labs. So keep
-%in mind that you are representing Northwestern and the rest of the
-%Palacios development group. We are collaborating with them because
-%Kitten and the resources they have are very important for our research
-%efforts. They are collaborating with us because they believe that
-%Palacios might be able to help them. Therefore it is important that we
-%continue to ensure that they see value in our collaboration. In plain
-%terms, we need to make sure they think we're smart and know what we're
-%doing. So please keep that in mind when dealing with the Kitten group.
-
-
-\section{Networking}
-
-Both the Kitten and GeekOS substrates on which Palacios can run
-currently include drivers for two simple network cards, the NE2000,
-and the RTL8139. The Kitten substrate is acquiring an ever increasing
-set of drivers for specialized network systems. A lightweight
-networking stack is included so that TCP/IP networking is possible
-from within the host OS kernel and in Palacios.
-
-When debugging Palacios on QEMU, it is very convenient to add an
-RTL8139 card to your QEMU configuration, and then drive it from within
-Palacios. QEMU can be configured to provide local connectivity to the
-QEMU emulated machine, including bridging the emulated machine with a
-physical network. Local connectivity can be done with redirection, or
-with a TAP interface. For global connectivity, a TAP interface must
-be used; it is bridged to a physical interface.
-
-\section{Configuring the development host's QEMU network}
-
-To get local connectivity with redirection, no networking changes on
-the host are needed. However, people usually want to use TAP-based
-networking, which does require changes. For one thing, TAP interfaces
-can be inspected with tools like wireshark, which makes for much
-easier debugging of network code.
-
-In order to get QEMU networking to function, it is necessary to create
-TAP interfaces, and, optionally, to bridge them to real networks. A
-developmet machine typically will have several TAP interfaces, and
-more can be created. Generally, each developer should have a TAP
-interface of his or her own. In the following, we will use our
-development machine, newskysaw, as an example.
-
-To set up a TAP interface on newskysaw, the following comand is used:
-\begin{verbatim}
-/root/util/tap_create tapX
-\end{verbatim}
-
-When QEMU runs with a tap interface, it will use /etc/qemu-ifup to
-bring up the interface. On newskysaw, /etc/qemu-ifup looks like this:
-
-\begin{verbatim}
-#!/bin/bash
-echo "Executing /etc/qemu-ifup - no external bridging"
-echo "Bringing up $1 for bridged mode..."
-NET=`echo $1 | cut -dp -f2`
-sudo /sbin/ifconfig $1 172.2${NET}.0.1 up
-sleep 2
-\end{verbatim}
-
-The interface tap$N$ is brought up with the IP address 172.2$N$.0.1.
-ifconfig will also create a routing rule that sends 172.2$N$.0.1/16
-traffic to tap$N$. The upshot is that if the code running in QEMU
-uses an IP address in this network (for example: 172.2$N$.0.2), you
-will be able to talk to it from newskysaw. For example, from
-newskysaw, if you ping 172.21.0.2, the packet (and ARP) will go out via
-tap1. The source address will appear to be 172.21.0.1. The QEMU
-machine will see these packets on its interface, and the software
-controling its interface can respond to 172.21.0.1.
-
-This form of networking is local to the machine. You can also bridge
-a TAP interface with a physical interface. The result of this is that
-a packet sent on it will be sent on the physical interface. To do
-this requires more effort (and is not set up by default on newskysaw).
-As an example, consider that on newskysaw, the physical interface eth1
-is connected to a private network switch to which the lab test
-computers (v-test-amd, v-test-amd2, etc.) are connected. To bridge,
-for example, tap10, to this interface, you would do the following
-(with root's help):
-\begin{enumerate}
-\item You need to bring up eth1 (ifconfig eth1 up {\em address}
-netmask {\em mask}). It is important that the address and mask you
-choose are appropriate for the network eth1 is connected to.
-\item You would bring up tap10 without an address: /sbin/ifconfig
-tap10 up
-\item You would bridge tap10 and eth1: /usr/sbin/brctl addif br0
-tap10; /usr/sbin/brctl addif eth1. This assumes that br0 was
-previously created.
-\end{enumerate}
-
-Bridging tap$N$ with eth1 will only work (where ``work'' means sending
-a packet on the network and making the packet visible on localhost) if
-the IP address in the code running in QEMU is set correctly. This
-means that it needs to be set to correspond to the network of eth1).
-For the newskysaw configuration, this is a 10-net address.
-
-
-\subsection{Configuring Kitten}
-
-Kitten needs to be explicitly configured to use networking. Currently
-only a subset of the networking configurations are supported. To
-enable an ethernet network you should enable the following options:
-
-\begin{itemize}
-\item Enable TCP Support
-\item Enable UDP Support
-\item Enable socket API
-\item Enable ARP support
-\end{itemize}
-
-The other options are not supported, and enabling them will probably
-break the kernel compilation.
-
-To allow Kitten to communicate with the Qemu network card you also
-need to enable the appropriate device driver: \newline
-\verb.NE2K Device Driver (rtl8139).
-
-The driver then needs to be listed as a Kernel Command Line argument
-in the {\em ISOIMAGE configuration}. To do this add
-\verb.net=rtl819. to the end of the argument string.
-
-Kitten currently does not support the dynamic assignment or IP
-addresses at runtime. Because of this it is necessary to hardcode the
-IP address into the device driver. For the rtl8139 network driver look
-in the file {\em drivers/net/ne2k/rtl8139.c} for the function
-\verb.rtl8139_init..
-
-There shoule be a block of code that looks like the following:
-\begin{verbatim}
- struct ip_addr ipaddr = { htonl(0 | 10 << 24 | 0 << 16 | 2 << 8 | 16 << 0) };
- struct ip_addr netmask = { htonl(0xffffff00) };
- struct ip_addr gw = { htonl(0 | 10 << 24 | 0 << 16 | 2 << 8 | 2 << 0) };
-\end{verbatim}
-
-This sets the ip address as 10.0.2.16, netmask 255.255.255.0 and
-gateway address 10.0.2.2. Change these assignments to match your configuration.
-
-
-\paragraph*{Kitten as the Guest OS}
-
-When running Kitten as a VM, the above applies except that you will
-want to enable the {\em VMNET} device driver instead of the {\em rtl8139}.
-
-
-\subsection{Running with networking}
-
-\paragraph*{TAP Interface}
-Running with a TAP interface provides either local or global
-connectivity (depending on how the TAP interface is configured and/or
-bridged). From the perspective of the QEMU command line, both look
-the same, however. You simply add something like this to the command
-line:
-\begin{verbatim}
--net tap,ifname=tap2 -net nic,model=rtl8139
-\end{verbatim}
-The first \verb.-net. option indicates that you want to use a tap
-interface, specifically \verb.tap2.. The second \verb.-net. option
-specifies that this interface will appear to code in the QEMU machine
-to be a network interface card of the specific model RTL8139. Note
-that this is a model for which we have a driver. If tap2 were
-bridged, we'd get global connectivity. If not, we would just get
-local connectivity.
-
-
-\paragraph*{Redirection}
-It is also possible to achieve limited local connectivity even if you
-have no TAP support on your development machine. In redirection, QEMU
-essentially acts as a proxy, translating TCP or other connections and
-low-level packet operations on the network interface in the QEMU
-machine. For example, the following options will redirect the host's
-9555 port to the QEMU machine's 80 port:
-\begin{verbatim}
--net user -net nic,model=rtl8139 -redir tcp:9555:10.10.10.33:80
-\end{verbatim}
-The first \verb.-net. option indicates that we are using user-level
-networking (proxying). The secod \verb.-net. option indicates that
-this user-level network will appear in the QEMU machine as an RTL8139
-network card. The \verb.-redir. option indicates that connections on
-localhost:9555 will be translated into equivalent packet exchanges on
-the RTL8139 card in the QEMU machine. However, we have to tell QEMU
-which IP address and port to use on the QEMU machine's side. This is
-what the 10.10.10.33 address, and port 80 are. In the example, if you
-access port 9555 on localhost, say with:
-\begin{verbatim}
-telnet localhost 9555
-\end{verbatim}
-The packets that appear in the QEMU machine will be bound for
-10.10.10.33, port 80. Within the QEMU machine, your RTL8139 interface
-had better then be up on that address.
-
-Qemu has many options to build up a virtual or real networking. See
-http://www.h7.dion.ne.jp/$\sim$qemu-win/HowToNetwork-en.html for more
-information.
-
-
-For more questions, talk to Jack, Lei, or Peter.
-
-\end{document}