-
Notifications
You must be signed in to change notification settings - Fork 0
/
xv6.ps
23703 lines (23703 loc) · 525 KB
/
xv6.ps
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
%!PS-Adobe-3.0
%%LanguageLevel: 2
%%DocumentSuppliedResources: (atend)
%%DocumentMedia: plain 612 792 0 () ()
%%BoundingBox: 0 0 612 792
%%Pages: 80
%%EndComments
%%BeginDefaults
%%PageMedia: plain
%%EndDefaults
%%BeginProlog
%%BeginResource: procset xpdf 3.00 0
%%Copyright: Copyright 1996-2004 Glyph & Cog, LLC
/xpdf 75 dict def xpdf begin
% PDF special state
/pdfDictSize 15 def
/pdfSetup {
3 1 roll 2 array astore
/setpagedevice where {
pop 3 dict begin
/PageSize exch def
/ImagingBBox null def
/Policies 1 dict dup begin /PageSize 3 def end def
{ /Duplex true def } if
currentdict end setpagedevice
} {
pop pop
} ifelse
} def
/pdfStartPage {
pdfDictSize dict begin
/pdfFillCS [] def
/pdfFillXform {} def
/pdfStrokeCS [] def
/pdfStrokeXform {} def
/pdfFill [0] def
/pdfStroke [0] def
/pdfFillOP false def
/pdfStrokeOP false def
/pdfLastFill false def
/pdfLastStroke false def
/pdfTextMat [1 0 0 1 0 0] def
/pdfFontSize 0 def
/pdfCharSpacing 0 def
/pdfTextRender 0 def
/pdfTextRise 0 def
/pdfWordSpacing 0 def
/pdfHorizScaling 1 def
/pdfTextClipPath [] def
} def
/pdfEndPage { end } def
% PDF color state
/cs { /pdfFillXform exch def dup /pdfFillCS exch def
setcolorspace } def
/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
setcolorspace } def
/sc { pdfLastFill not { pdfFillCS setcolorspace } if
dup /pdfFill exch def aload pop pdfFillXform setcolor
/pdfLastFill true def /pdfLastStroke false def } def
/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
/pdfLastStroke true def /pdfLastFill false def } def
/op { /pdfFillOP exch def
pdfLastFill { pdfFillOP setoverprint } if } def
/OP { /pdfStrokeOP exch def
pdfLastStroke { pdfStrokeOP setoverprint } if } def
/fCol {
pdfLastFill not {
pdfFillCS setcolorspace
pdfFill aload pop pdfFillXform setcolor
pdfFillOP setoverprint
/pdfLastFill true def /pdfLastStroke false def
} if
} def
/sCol {
pdfLastStroke not {
pdfStrokeCS setcolorspace
pdfStroke aload pop pdfStrokeXform setcolor
pdfStrokeOP setoverprint
/pdfLastStroke true def /pdfLastFill false def
} if
} def
% build a font
/pdfMakeFont {
4 3 roll findfont
4 2 roll matrix scale makefont
dup length dict begin
{ 1 index /FID ne { def } { pop pop } ifelse } forall
/Encoding exch def
currentdict
end
definefont pop
} def
/pdfMakeFont16 {
exch findfont
dup length dict begin
{ 1 index /FID ne { def } { pop pop } ifelse } forall
/WMode exch def
currentdict
end
definefont pop
} def
% graphics state operators
/q { gsave pdfDictSize dict begin } def
/Q {
end grestore
/pdfLastFill where {
pop
pdfLastFill {
pdfFillOP setoverprint
} {
pdfStrokeOP setoverprint
} ifelse
} if
} def
/cm { concat } def
/d { setdash } def
/i { setflat } def
/j { setlinejoin } def
/J { setlinecap } def
/M { setmiterlimit } def
/w { setlinewidth } def
% path segment operators
/m { moveto } def
/l { lineto } def
/c { curveto } def
/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
neg 0 rlineto closepath } def
/h { closepath } def
% path painting operators
/S { sCol stroke } def
/Sf { fCol stroke } def
/f { fCol fill } def
/f* { fCol eofill } def
% clipping operators
/W { clip newpath } def
/W* { eoclip newpath } def
/Ws { strokepath clip newpath } def
% text state operators
/Tc { /pdfCharSpacing exch def } def
/Tf { dup /pdfFontSize exch def
dup pdfHorizScaling mul exch matrix scale
pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
exch findfont exch makefont setfont } def
/Tr { /pdfTextRender exch def } def
/Ts { /pdfTextRise exch def } def
/Tw { /pdfWordSpacing exch def } def
/Tz { /pdfHorizScaling exch def } def
% text positioning operators
/Td { pdfTextMat transform moveto } def
/Tm { /pdfTextMat exch def } def
% text string operators
/cshow where {
pop
/cshow2 {
dup {
pop pop
1 string dup 0 3 index put 3 index exec
} exch cshow
pop pop
} def
}{
/cshow2 {
currentfont /FontType get 0 eq {
0 2 2 index length 1 sub {
2 copy get exch 1 add 2 index exch get
2 copy exch 256 mul add
2 string dup 0 6 5 roll put dup 1 5 4 roll put
3 index exec
} for
} {
dup {
1 string dup 0 3 index put 3 index exec
} forall
} ifelse
pop pop
} def
} ifelse
/awcp {
exch {
false charpath
5 index 5 index rmoveto
6 index eq { 7 index 7 index rmoveto } if
} exch cshow2
6 {pop} repeat
} def
/Tj {
fCol
1 index stringwidth pdfTextMat idtransform pop
sub 1 index length dup 0 ne { div } { pop pop 0 } ifelse
pdfWordSpacing pdfHorizScaling mul 0 pdfTextMat dtransform 32
4 3 roll pdfCharSpacing pdfHorizScaling mul add 0
pdfTextMat dtransform
6 5 roll Tj1
} def
/Tj16 {
fCol
2 index stringwidth pdfTextMat idtransform pop
sub exch div
pdfWordSpacing pdfHorizScaling mul 0 pdfTextMat dtransform 32
4 3 roll pdfCharSpacing pdfHorizScaling mul add 0
pdfTextMat dtransform
6 5 roll Tj1
} def
/Tj16V {
fCol
2 index stringwidth pdfTextMat idtransform exch pop
sub exch div
0 pdfWordSpacing pdfTextMat dtransform 32
4 3 roll pdfCharSpacing add 0 exch
pdfTextMat dtransform
6 5 roll Tj1
} def
/Tj1 {
0 pdfTextRise pdfTextMat dtransform rmoveto
currentpoint 8 2 roll
pdfTextRender 1 and 0 eq {
6 copy awidthshow
} if
pdfTextRender 3 and dup 1 eq exch 2 eq or {
7 index 7 index moveto
6 copy
currentfont /FontType get 3 eq { fCol } { sCol } ifelse
false awcp currentpoint stroke moveto
} if
pdfTextRender 4 and 0 ne {
8 6 roll moveto
false awcp
/pdfTextClipPath [ pdfTextClipPath aload pop
{/moveto cvx}
{/lineto cvx}
{/curveto cvx}
{/closepath cvx}
pathforall ] def
currentpoint newpath moveto
} {
8 {pop} repeat
} ifelse
0 pdfTextRise neg pdfTextMat dtransform rmoveto
} def
/TJm { pdfFontSize 0.001 mul mul neg 0
pdfTextMat dtransform rmoveto } def
/TJmV { pdfFontSize 0.001 mul mul neg 0 exch
pdfTextMat dtransform rmoveto } def
/Tclip { pdfTextClipPath cvx exec clip newpath
/pdfTextClipPath [] def } def
% Level 2 image operators
/pdfImBuf 100 string def
/pdfIm {
image
{ currentfile pdfImBuf readline
not { pop exit } if
(%-EOD-) eq { exit } if } loop
} def
/pdfImM {
fCol imagemask
{ currentfile pdfImBuf readline
not { pop exit } if
(%-EOD-) eq { exit } if } loop
} def
/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
/pdfImClip {
gsave
0 2 4 index length 1 sub {
dup 4 index exch 2 copy
get 5 index div put
1 add 3 index exch 2 copy
get 3 index div put
} for
pop pop rectclip
} def
/pdfImClipEnd { grestore } def
% shading operators
/colordelta {
false 0 1 3 index length 1 sub {
dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
pop true
} if
} for
exch pop exch pop
} def
/funcCol { func n array astore } def
/funcSH {
dup 0 eq {
true
} {
dup 6 eq {
false
} {
4 index 4 index funcCol dup
6 index 4 index funcCol dup
3 1 roll colordelta 3 1 roll
5 index 5 index funcCol dup
3 1 roll colordelta 3 1 roll
6 index 8 index funcCol dup
3 1 roll colordelta 3 1 roll
colordelta or or or
} ifelse
} ifelse
{
1 add
4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
6 index 6 index 4 index 4 index 4 index funcSH
2 index 6 index 6 index 4 index 4 index funcSH
6 index 2 index 4 index 6 index 4 index funcSH
5 3 roll 3 2 roll funcSH pop pop
} {
pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
funcCol sc
dup 4 index exch mat transform m
3 index 3 index mat transform l
1 index 3 index mat transform l
mat transform l pop pop h f*
} ifelse
} def
/axialCol {
dup 0 lt {
pop t0
} {
dup 1 gt {
pop t1
} {
dt mul t0 add
} ifelse
} ifelse
func n array astore
} def
/axialSH {
dup 0 eq {
true
} {
dup 8 eq {
false
} {
2 index axialCol 2 index axialCol colordelta
} ifelse
} ifelse
{
1 add 3 1 roll 2 copy add 0.5 mul
dup 4 3 roll exch 4 index axialSH
exch 3 2 roll axialSH
} {
pop 2 copy add 0.5 mul
axialCol sc
exch dup dx mul x0 add exch dy mul y0 add
3 2 roll dup dx mul x0 add exch dy mul y0 add
dx abs dy abs ge {
2 copy yMin sub dy mul dx div add yMin m
yMax sub dy mul dx div add yMax l
2 copy yMax sub dy mul dx div add yMax l
yMin sub dy mul dx div add yMin l
h f*
} {
exch 2 copy xMin sub dx mul dy div add xMin exch m
xMax sub dx mul dy div add xMax exch l
exch 2 copy xMax sub dx mul dy div add xMax exch l
xMin sub dx mul dy div add xMin exch l
h f*
} ifelse
} ifelse
} def
/radialCol {
dup t0 lt {
pop t0
} {
dup t1 gt {
pop t1
} if
} ifelse
func n array astore
} def
/radialSH {
dup 0 eq {
true
} {
dup 8 eq {
false
} {
2 index dt mul t0 add radialCol
2 index dt mul t0 add radialCol colordelta
} ifelse
} ifelse
{
1 add 3 1 roll 2 copy add 0.5 mul
dup 4 3 roll exch 4 index radialSH
exch 3 2 roll radialSH
} {
pop 2 copy add 0.5 mul dt mul t0 add
radialCol sc
encl {
exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
0 360 arc h
dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
360 0 arcn h f
} {
2 copy
dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
a1 a2 arcn
dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
a2 a1 arcn h
dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
a1 a2 arc
dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
a2 a1 arc h f
} ifelse
} ifelse
} def
end
%%EndResource
%%EndProlog
%%BeginSetup
xpdf begin
%%BeginResource: font YLWBJI+LucidaSans-Typewriter83
%!FontType1-1.0: YLWBJI+LucidaSans-Typewriter83
12 dict begin
/FontInfo 10 dict dup begin
/Notice (Copyright (c) 1991 Bigelow & Holmes Inc. and Y&Y, Inc. (508) 371-3286. All Rights Reserved.) readonly def
/FullName (Lucida Sans Typewriter 83) readonly def
/FamilyName (LucidaSansTypewriter83) readonly def
/isFixedPitch true def
/ItalicAngle 0 def
/UnderlinePosition 0 def
/UnderlineThickness 0 def
end readonly def
/FontName /YLWBJI+LucidaSans-Typewriter83 def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.00083333 0 0 0.00083333 0 0] readonly def
/FontBBox [0 -205 602 783] readonly def
/StrokeWidth 0 def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 32 /space put
dup 33 /exclam put
dup 34 /quotedbl put
dup 35 /numbersign put
dup 36 /dollar put
dup 37 /percent put
dup 38 /ampersand put
dup 39 /quoteright put
dup 40 /parenleft put
dup 41 /parenright put
dup 42 /asterisk put
dup 43 /plus put
dup 44 /comma put
dup 45 /minus put
dup 46 /period put
dup 47 /slash put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 58 /colon put
dup 59 /semicolon put
dup 60 /less put
dup 61 /equal put
dup 62 /greater put
dup 63 /question put
dup 64 /at put
dup 65 /A put
dup 66 /B put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 70 /F put
dup 71 /G put
dup 72 /H put
dup 73 /I put
dup 74 /J put
dup 75 /K put
dup 76 /L put
dup 77 /M put
dup 78 /N put
dup 79 /O put
dup 80 /P put
dup 81 /Q put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 86 /V put
dup 87 /W put
dup 88 /X put
dup 89 /Y put
dup 90 /Z put
dup 91 /bracketleft put
dup 92 /backslash put
dup 93 /bracketright put
dup 94 /asciicircum put
dup 95 /underscore put
dup 96 /quoteleft put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 106 /j put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 113 /q put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 122 /z put
dup 123 /braceleft put
dup 124 /bar put
dup 125 /braceright put
dup 126 /asciitilde put
readonly def
currentdict end
currentfile eexec
5AA4F71255501637F1A431BAB555283D093E1B588B45B0281559110D21315C62
BD638C6B34BA54AA75227715D9947EBCD51A104CAEA657499E94138F5645BF68
368BB1B1EC8E4776F067FFF2CE9B89FB7E63A7DB304498C1036D399C47A4CB79
BD517EDB02BEB90195FD7DDAF3E839BCE2DB156D9337DBB2305A465B3E0FFB97
1985C79DC71C47E26F9F0F042B2CDEE97B679358059256FB93D662D43C7ECB5B
1A564DFCECB963478373C69F52172F071E0AA6082A3E10D9E1CE2851CFA210EE
7BD5FCB1AAE15E89D1FB339D587D218B89C18A32F47C7451A80CB1FC07CF5EF5
C2A9054AD59AE4D5522D8745045620C9C40EAB675A6FE53511D83C04968F37DE
389C3A7A551DC79580FF1B382205C5951A9F8E7B6CEF33E027D608C14A394033
1E603A09B3061B66BB71AC1D2A232B5F2BC9481D7D44F334ACCBBF6537EF8BC7
075D89E6422C4E0A415BF3A1B001A284566A4DF8C6877CB0C70D67F5E7FA25E1
90435DC2AFD452D1184CEA4CBF9F81F8CD7BE3B6EBA8395A40925FDDEB186DE2
AB0372CF67C17BEE733C73CA29E00C3909E960A0417FCACC7211EBF3DD7225F0
6F4FB7DBA35BF59A21014E1066BF090958F991C2BFD22CCA4189376B0BBFE928
8CE7E8D06A551258E5938EB0F85097E557F3C3BA2C163A2E572B4DF44E90CDF5
0B39625CC6ACE15BC6517F8A12C1B93F074CC50585B9AB7EDD0B9C5C1A62B70D
CD8DB8D38BE368A472453A6857C6BD02D53075513414D13BA1A24CE212F22191
07B898A9017A3A99BDADF041BED9A114BD03BB18F7DE5A50740B185E422B8C48
309D6D5FE5EA50CC3F908AFA26EE4DEC39EBC3D70FF3BB8B3A3A944A0DCC6146
32AE70E4FAF468F45769385AA9CE3AEDE458C88F9FE607FF162B8F190654854A
F7C4EF574ABFF28A9A3305771590FCC4ABD946870EB84C1936CA19FD940EE6AE
640BC281178A404CC709C437E17C61CABA72E94D3B9BE9F187B807D43F883E55
1AC39D4BE693E7341918F23D76809DFD06A103726057B354B409C08830817659
428E7F09A6016535CA1C526AAE92B7D90B7AD619269EB3A6DEEE48BF53C6C228
C705837B10C2402ED51A306E771911A1016D089DF42372D756E2346265E01962
B0E784394FEA778F473FE994F2CB393B6C04DB967C8F585947A3F30329F66169
59627B9268FDEF0DEDD35B31B7D0345E708C959739676FB4CE239AB72D834D51
E679B4152852C1BA90E23BE472742369FAF00ED1E82BB6ECD8A09CF36B2E57D0
AEAAB95A829A7E793F38C4D0E6A1355BB9C6AE4F0ADF76BBAE901546ECB36D1E
7C5650A7999BAAFD6181C1CFECFEA39A2D51C26CA3CC2BAB6EBEB0D31D3532DD
6A6A565A56A6A01E04ED68112910A0D608024AEEEC0D0F389B5441D0E126935E
2063B9150A40657F1C88FC5F4BE2C06AE21167DA0F59E651CEDA2CB33349FBF4
6F5642DE2B5DDFDCF0C0A172D0D1407FDC7C65FF3814709188F506A53C404A19
02FE1637895E943792E22E22E5D4BCBD766D18D1088F2A11459139D370D4ADBB
8BC75909D8A85C8E2E85948DEFB74401BF22A6DA4C14C09F1C8F0DF829F1970B
AE6B468573DC729139A2971EB56517AA6D6525E46B5F9930108C7D4B951EB0C4
707E410574E7195FA7297A29E6D8B5ABD78A15CD0135F3BD612AD12BB0D154CD
86556BACB23743FFE1774040A1C435CF8E4409E75CEE0F028FD12BE41556CC6E
6C850B9053E699C71557FD6B20D83F0BBF57D935CFEDA809B03FD14478C2A8C7
6609217B9F289342990C415257D8CA8A5174589B50AC913FCE33A9F32CF42140
F323ED26DD43970B21107F814F9F2CA21C6A88474BDF5EF924956086CB6BC729
3FBDB874B7A414B14B6BAEACAE671F7944DCC75422E1630F78732131F85ED6BB
3662518EB04A41F4938B1383CFBEDDEED4096C7615CF8D72101D311FCC95D874
2C40F7FA4FB122EA1B1B0746E9D808AC671A21F04F7E76A6778E25FC3844078A
A2A7B87206B299A27BAE8A89530B3D46579AAFCD5B03EAE3429E4B4BAC79F41E
B68DFBF1ED48C121B7D38C7A51911898175E566ED5D1AF2DBF57EB473BFC8FEA
44362C8E0CD77857D2FAFFEED06A98AE69E0A74B6B876069A460314E5B1847F8
EE66F4931FA02F5E38D6857E8D0DD3550CB0B130B75EA89B02971280911B47D1
A1E387581CF5565A4469BCCED698F1116AB57A4CAE6640E23021B10B62923A87
1E145BDE3052FCB97EA36112168DA1B986E5A524CD3879E3B59550E8311A074E
CF7A58F377F7CE22CB1270BA8E009C483D43E9B728D5AD5A124A0D6635F6E9CC
53D52844E932EAC0CE58FF9A8B1A897C8DE57FC82F9C504FA222FA6BD83C7903
8F09D475F15F5AAE7C8EE65F17E580D1A1D2979894C0EA1AAA00FAB3B9CBF68A
67331607E61EADB2D9A24001B7B7E6ECADFC5BA3C8CB741413BA4D7C51A40447
DBEAB6D524D72ADE296EB5E47F416CA680181035E41D14EC6532874F1DA7EAD3
0B3A37E788CF39AF0CE722F67B2FADA9B926EBB32BA5F54651030871E19463EE
3E82753DCB3915636A6851C48B94B7A77943A04BA972A534AF5D6B9CC41330CD
6723F82581091C8121465769FA47055733456232B6DE1765EEF06223687656D5
2170B0F8CE41590BB57C4F7B136A7BCA8A5BDAA982C420FB5749320521C180B7
B8748A630DBD48884C55FCD2E7851E6BA6B81CFE27C7EBCB6D06CCC2E1BEB01D
5D8AA1287BBB1EEF9E55852223A01E2E9A0757FFBF05DCDD6C045C5B322CD9C2
51BDBE086B791721C47351C3D27057013C8600D9C229615DC859D530ED795B0C
27AE86B4E6E7BE747201229D85A77EFD944DD59444C49684CCBF506661144236
B8E38E0C1068600992ED230AF22B0CC5CA4D8BA1E3FF31F03CFC2BA540721674
C3BD926730FBF88FCFD59474EA95D4774D133379355068CBFB5AA84306E52242
467BF66E174CDEAB2CADB5D1B68F8253FDEBB6220A60668B1BCFA2C99B6B0F55
2582D2ED3D88F3E47D51179A8E78B182E7AFD1E9D659DF8AC57747D2E74F5B39
466B53A290657A325B6D6E952C5164AF7AE027914864D086BC0114F33B9D9E56
A2B8A54A0464254F71AA9D975A20CB0AD1A6DCA4290378DDFD9A7118C6AE9ED7
E050E9131C103B88CB27BE540AD84B655BCE04BE98C8B362703EC149B747CF6C
45CE28C3690755EF00A86EA467E5D57954BD85CA993A736EFE0B18AFE53A2B2F
8C7F0318388DFF640FE7D43A5803DBEB8AD80C59AE33EE163B4DBBD47C9EE083
77B76A5E4ABA6DA587687C10984D8B34F6546E8D64468D228B4C2B16BB6370D6
7D3F92714082450543341D53016172B4117C55FF506341215DD7726A6F8A217A
E44F09BA273FEF22924706B0F50083C6E27B7AB6F5CE3C3EF4AFA9AE9DF17DDC
53482B05A15A136AEDF71343061C0ECAA8C935E446A5F3CF3211C29CCE5C102C
CEFAF415A5B6C411B3B7B01EC97954F0616F3C1AC4740A03C387E6214FCF78B4
DD78208D75482CF9DB59A4B319A256935BE68E2E8351FEC06ED34F0CC6307571
60992C344A45D7B208C9AE1F2880A7AB0366719B029D863A9B6015E29957A5D8
3FC0A9548E25DBEBF728511CB3F4064CCDA0EAB5F7207C9816325A9932C5DC18
7B1878F89994366AB65B02C9272B75E542E6A1AF85B677A74F674B4F1F6DB606
FCF0D54594569ADBB8D98554461DEEA310182F8A42CCAAD24BA155CA17262F42
A23CF3266C925A3B28C632419864E912F5D846F26B2BA8E41680E3E759C47AE6
1F05DA9F88DD697109DE7F47AD90981E285C065CB239BBEAD6E351C936D778D5
ED2F551008D997E8614BAFFA9292F5EC1737BFDDAA3AE5F76949A7CC7A5C9885
9ED1B1FE17E56886B438B5D03198AEEA1483E261602E0ED3DE3476E2A74336B7
4BD5F912224950284A62A476292E310C3623C3FC55642B1226078D8C98B8E258
09BA085A3CBBDE128B69932DDD12C12BEFC96F698FB73C120C7E6C49196C063D
AC8A0D23B3CC73770A99EF977EF93544099172992239AB7B6BF47E7EF8E0AA92
1504B4FCC0C8447257BF63808C56467228A651714BB73C36D87F135A2365F9A4
FDD65073CB982B77A2C8E583327B16681CDB8178502BF35600D063996718888A
F3489512F4E33DC64E324FFCAD4396AB424A2FD8231D885379B0692386776FFE
AC1242C735E7EE5CA55E3162044A430BBB5F1D5D23E8F09C883B38C653F81D3B
48922522123301079AF07E412B0D8B1B388FEC2956DBFC267711619D1B58DFAC
0D769E5551BE1D806EE8D98483F5F2B390D9B3835602EB2822C3E373016231B7
C98C540796CFA5029769A9990A4AEE3EAF11C642E57DB4F8094AE067A8743538
5D75E78C3DF3609A799195FABE087539BF9016802C8D9822E0DC3F054711DE70
3422E701C6CB98FC04550D5F22C8729650313F56BF47919DE140861C50E71133
937669C56BD769CF23003964C7364F6E2F18E3BD5E14191DD018785C13A3F687
8CE0AC2577B5E66823F19F4F67799953E8C90E0B2A57C80C0EDA7F7BAD896039
F8278D20AE307B9E6998FB1A20D8B35CC49BE10CDD1D8BCF23DB47DD4ABF0580
34E7334431E4CF87DE972E4A007FDE2BFEE70D66CBC85D0D9574264659EFB7F8
E02B5E5C655DCE6FFD54EDD844FDEFC4B39D072C188CB5A8F43CD6B2467BC9BE
B44320B057A90B6A82EDCED67932DA29670662F1FE94E6D2EE1A562D19AD02B9
D8E23529EAD2627260E56CAD7951B2C982E9CCBA68F9C8B95821E470ACB9C55B
0A6C23D6E50A02F9E1D7B8C51CB20792638D0C24EEEF6F4BF271608B24A8AC96
A7D536F1D40B0B85916E2B5325A1FC7000229C8E87ED5BF56D611BBD40A42C94
4BE0B0CE264D65D2A47BB72E2B242F95157DC15A888CE0C15A8D12DC3EDCE489
53059B5D2A04FFCC2D234CFF8A16D50E7EF7C95C808ADB52B3656392CFAA2892
CEA1ADD997F67AF3526815CF1445F57856DEC918A3EF50D9634BDD22C007F0DB
FEBA17DFDEFD9B60477142D7ABA06FBC976270EBD2FA9CDDA30C9994BC285FB8
1B38EC16B08B7ABAF390FDDA2561B779A03D576A8C289784442A2A8E15BDB1B2
2F26F1E0D9BD6DFF68E352D572978437DD65B882CB2720B27A782EE902A65B32
C7DF2CCEC2C3D1AE1B62BB1E506C7C4CD6F09EBFE5FA1E3A42F9D2D40CC0EF66
88D3C3BA56BD4E830FB4B096A342C82C97A13DA50908338989413607F7BD2E67
52E219C6C3954C4737BC9026DBA18FEF07A79E1CDA6820465EDB5DF4366EE92B
867E158B761270C04E3923B3DE5FCDD9D87832FF9482868A7A7EF14F4E626C5D
A94903E4D8FCACBA2A8D65789D5425F3D3C77573DC2EDD7F98C9740B702A80CC
F5408142674DD50707FAA48BFD1EF1DA182634E497B0D02ADA4031ECA6013E86
1D56FEA51AD28D2A6CD5D39E7D89D1609DF2A5AC3DA3CD28E99E2CE638042213
2E150804BF8190FE02A6695209C54185EE91F5FDD2DF9C71F6C8DDBA6D0A0EA6
C8CAFA0CAEAF4385B08287FF18B02F1EC6507991832DE49B691B205D937D79F1
6D1DC6C6261AFDED7539322A9F0D9A8C6DF31EF96E3D9A712ECB757E30AE7F15
39F6747AC5CA8F284238E72F143EAF13413DB8FBFC3D41445B66BF6C4741CA91
E37D58DCA65095B473EB7C726B0DCDB8E17D245BB551EE26B2DFD03F7CFA606B
C14AE7CA384F7846DAE2FF9DA4C16C355BD03C40C89B162B21A4FFC8ECEE0992
A7B283B43FE8F745161D079566B92500B33C4E13792666EFB12247F9F42DE42D
C587786E1C20D501968A6DDFBF4CC6A9D1A589EDEDA93C54E82D355383963B42
CD996AA920BC5956CFFD2DB72EA6BCD845A04CD09A31A9FFE1F35A68C47A157B
6C12E69C4AE9AE4F5E68E6922A714A78210DC84570CAE10C507562D952DC5F78
1A47C7ED427E8A66441F48E66DEA872F63FF179922A3AA0DD210932CE9D35A71
955DC4C50A441A813F27958519DE45E46D4D3AAC80AD068E934C4CECEDC2AB39
5B587CC0B2B80816173569E9EF949F0121DC6A34E8D221CD6A6B97355A226B45
98416C68AC75C066DE8A8C1DB4D333F63F0C04CA10D17334BAE0A17E1668FA3B
436F49D2DC0B432DBB8431CB2901894B2824D8FEBA7D2F9B451A1ED8F6C9336F
3C09AEBD5868D4967E2BBB76E547A545F8D84956BB6CB1EA251E70147A44525D
461BCDAD0EFCD4AE86B75D941517E5E0BD47AD461620C8468A45B50D42FD338B
9383611A437DA474AACCEE3258F88508290E656F32D04A25509C4067982027C1
1E1AEDE2DAFB02594436027791D0353FAEDB4E999C53A433E2659F339C4E8350
3374648805CD7684E83BD6F870F50CD8C5C9460A85E271746B3928F7960C2A33
45B45DABA86F0467201818F2747C2F2C1B1261DAC00A56CDB4C6607734C4BCDD
75C51AACF65AE8681C20E74796ECB1275952CF50C0E2E44DF9B6CA7E617F4B16
9D3796FCC53FD6AA4715E25904CDD9D99D39F3ACA8E0EE2CB32DBCD45E8DB835
100F7AF3C6355E9D1794A16C53414073403A65500F157F8A2CAF72D76200B903
A50F371BFBB8EBDCE0C3ACA4185BB2CBB90F0A2ECB48ADEDCB365FCC670B15DF
2211A605908A650FF1ECF8327D0C02C44EEFA0CA2119ECC94D8AEB9F7A3DDBC0
FFD77AB26C91753A83C9C6A199CD1522631FEFBEC1B7CD1879C234919E5065D1
6EADEA7F2DF4EE627412145049488E1439840804248BACA669B34EBFB9A37C39
8483F48CCF0D45874DB079767167FC78F690904527722737493E5A457B739D23
8B667D7D6C62F74DE846CFD1D493428F93D0D77FD4F31B8E869FEDDF44812F7F
7B2A8ABB8D6D009DE8673E9D6289B642520080E1ECD3212D74C9AEEFDAD6F03B
3AD829DDA8B769F5516989E741861FF3D74909A734FA2AC954D761E0A49E4E54
D2EAEF07200CBA1C4DBE1F07321D61D3895B3049BADC895B28E2E676F5714C6C
4C1E3F18DB8C335E20E1C110F792338FCDFBBB31E66C71DBD8EE6AFE6A040AFE
A36193635100707ABCE2396A5AF4AE02651F9E392F61CAC64F82E7BBF9AA0D41
590B4D80CBCF01CB1C0D41AFB880B8F2A643BC14D4FF06395EB7DC8E2296BBB3
D31DE0F896E4C76289808EB079D78234728A58B92706029590297F2FC8D8ACFC
E2DB33BC6F51F7557CF8E90379A2CBB9F4C52E9E440E16B998C05E8B8A04E21C
F92A2D7BA5279F8E439D52348E1BD36155FEBDDF2A0589D38E71CF550543873F
DB3BD7E1C9EEB005E3555D1A8F4E160D40EF5AA2CDDF80E166AA987F5A7FA5CC
73B806A3466D65A0E94CC58D23D1E5DFFDACF8EE27BCFF552B8AADAB5CB845A0
4D2C22EC0C2D19F51156631FB0D030852DCB7F9E18BD6289677CCD792EAAE163
79735AF1C25B78EDC53792BE2C2A9C77C59C9C0B255A59A204AA5EE07BD78B5A
5C323322B23C6CC2C552EAA869F3EB4EA925953E7F296BB0D66C6ADDE6364B67
9D52C3B2587DCE7173220D2CB724F4327E28CDE23C49069937E378480DF331F3
7297CDEED6934BC0722B686E00741D6DD42C8625F7AEF1E32ECC9092F30B1686
C3830F242FEB01E5D5B755826FFDE99AA0E64357C8CB46A496319698DE316CA7
EAD6B7CE11ED36A842B277FE5084BE46ED6D00F5C85E2D35E37286A46F160684
001428657F3218DC8787DE1057B453E3982F116F67945D95CF79E1306C85B1F2
31C70F21F396BB88A3B05FDAD770B9E805C5C487418BEED6807577FDC12EA1C9
05B318F199D1C5E7179870599468BFD878920A465686259E09A1E3FB37EBB3F8
864F9EA6A798A95B97C564D49E74D62B9E7F44562AE0B1326FE6622E87683704
7340422EEAC561024936949561885388C54D9B7E2F923CD3A293558F26DA3F55
CF41450CE22E16C1DC1959D640448E9D9259090D4F96CC138AFB8F090782F383
4D4280A45EDAEDBC77E1012D22976B790F1C2FB9D12A49D30A67025DD0D14200
D662983D56E91429542BD121A844A47AE91BA21F797DABC1AB56825CEFA4EA47
00ECC341886D69103F1C4D8799A9DFFDE99FD4FFF8F99D5B6ED3CBAFAEB2066B
460E23885E34DE13B81B4C41B714AA2FC0BE165947C05B14C0E0B3139AF95380
5A9CC7AFA523DE5635871D9D54557F13737AF20D5255819D47781E82F65E6AEE
68839872B2E47951631A799A99731F8F274F1F2ADE086F4E1AC74BA387D7DEBB
22415882BA7918008CC13877D1D1B4B25BC78A8B176D6E23B0C0CBF431361AF5
1D4F56CBFFBCF4C7EE0DCB8362D9020F2A6A235D664938E2C8DBD19FAB7DE364
AC43A835F59DFE26771E94F4659C0509D7B3EA4516544F348A70E4B7B397FD8B
9EEA50A08C89E565C498F9A4943F71812DB77267C54AA8C10B675965AEE05F12
5B695F7AA5881027F90D331DA8FCAD97EF697A6C31268BC16FF89CF6DD673F15
FC1310CA106A37E48D75762611D0AE67496FD1FCB7C6172946A12A2F8B1AA55C
250C84EE34937F21CC86922AF593B6BDFD56E729B89011F2955EB91644D81E6C
96AE28F4EE38FE0E0A4B0AAFD38E87710E7F41FECB53B01A9A7100A701449A72
AA865D3DE7BA1A73FC51FF314C5F5C66A1CA2F6DA71E013191D3299EB9BAEDD1
A8FC1AAC9073E9C4688E79A433B455A2172398384B616578F730A7052AFF9682
0BB5054358E6B86B59EE70F3F9C554598B761568A0A06B35035E25120DEB6CB2
5510E48C460D6D16F535AAD19B5B0BFB1F0D2BE5A8B3DD363D6A62119A1492B1
586C78570904F5D65490EB8B3DEB6D8EB0FCCBC6F64210107F713F4D8B34C169
FB1D5BACFAE963A16D377A0CD1D92C3B9B2CD465AFAB34C6D3F76CAF715533AF
45CB193201C3E13F37B13C1CAF9ED0D03F9D28A933D67ED22AFFA09D665A20A9
6973D0E58F372C8E482AB45A87FEC96161C1555C87EA868E68C033EDF1113192
081630EEEEFE87DDFCE00EF4C82EB623CA3E59675E178F741837B9A1129EFE02
41BE0F26EABF3F36D6B74B470D64AB075A96F6771975767BBE4F106DD54219A3
1998C6A9F83A50C429CD10A61F045EDE780CB8612E9B8C0C1F38B72EA72C6C4A
085F168B91CB48E3774AAFCCC3FDF06EC61CF177D143CA5B0DAA83243F62B5A5
EC7E2566C23548593BA6713281F6268754FBFC91E3439B3849138BB49C0250F2
B30E9B84A473AF0AFC95B25771FB26A643EC68A382FC9EC7A0177FFAC3F14957
39A81E48D79C93283561A6627CD0B4E2CF45C083E715C5F52FD634CC68BDC701
174436C2BE178ED7868E2ACC190EAD2406BF320181FE634092B29056ECE846AF
F336A067A7B451CB8A55B3B926B6CA7757E1CC945CF4A9EB8C136D5B3387FB08
384521854B48B8FEFB033815F1DD7B7A598E944929EAD7764F1B1DB3AD44D8A8
48038369F3B389C6144D25CF5FB0AF7F02DE65AC63636CA934B6E8483B8E68FD
6B9342641BB38BD805A3ACEEA44C5DACC0A897D442D69D29EDFCC5C2CAD38A56
213EEC8AD86B4B11090004A934D4E20E1AAB9B7BC8BE606973521A40D7851C1A
1140D0686C707B65E3119EBC55E38F64BC747C55CED35B56E3A00080AAD828AB
9210A55A338598291A97F9D79670E059AEBEA965875ED976E91335E2A8DEF713
95EF33DBCA3056B2769201833AEADA1432628366A890222C37D95375DFEDCDD3
B08B9AF49D44CD70BD34D860998C42A09B59B871866C04BCA813ED8C5ED37A57
665390ADD192FEA179E6E521015FE24BFAE1CA89F35ED0B53B4DAAF495D9416C
FEAFA696991DE7FC317756F0D10B701149AD55B83C9AAB8487E76804B5971E79
034ECC1BBF32D4AF9DECEA1A54E466CFDE1DC58CA90812E980FF86F9FB7BD1E4
B8F7C3EDBAF7C31FB6E460485A478136B8C609B676700EF13F6853EDD1769DAA
485CACE85CBA98FB2AEB34A8B649B37C26A3450D79F1A4BBE346F9DC6E5A9EAE
7FFD045428526DFF8D7BC5038288AF6AB80EC30EEA5C667F7089EA341981E030
521FAA7605F39029A8B07A0795E203689BF8401D88E0B378DF54E62F91666563
1975E1603CF51FDC3DED1325FBACB587B818CFDE077F47BCEA90EA96CA54E077
A589A30D8E26A29683B978E7B7805C0A611578951FA17EBA1FAEDE4532FDB4F2
8CBB70249E07C261E9C805A16C32D7B97273D44D7093AA7223F4AF8FF327CC05
8B5D7352680BFDF70BC067B29749FD58595C4D855108B8AC91C39A46B94CCBF9
BF5D421A6BBD1D2FCC90181DE02C3D9676E5761B244F36CD35154F5931BF4507
018903F6D7AF6A82FACF9A00A9C59DF208CC717683B7D14B65F1BF37A652AAFD
BDB1005ECAF203DDD78F5BA80C0C356521F085DE00CC9168EE261F76CBA3E2AD
6F83DAC1827844C18784730E874B98D26A39AB76B4DE23BE7B30A88287ECABE2
A054A8B240821FB70935C5A1626387F5FB7AD1280F99A09D0819A43E314E6CA1
C541549D1EBEC7DE52AB56270B2EE2BB2797A2F042DFDB4EB3F7B307C4593480
C107F5ADF09A7522C5F3F0B2C839E2BDD2991F61F563EA9CFCF449BE280DD6DE
55CB2D6313A7328B8653D8D4A9A105278BC36C452D8DA31A9B834D6A65EEE6C8
F4168DBF9C3E147A84EE59732AD16AB366381F0B00441999EE78AEDFDA0536E7
C9A3B4BA7618441904F5DE8958BDA2E2ED9EF15270E3BDE83EED920BA2284CD5
D5DFFF6820916C7345CE48E9EFDD6D268B4C1EDB957A0DB904EBFC13690A3B25
2A5D46FC0878E2E58FD82D9ED0AA1406684CE709B24BD19AA0D4F0EE12BCC63D
978A3F55E6DC9C578EAEDB9C0F4F29507472E2DAB275E7E02978DD8B9426810D
297060B76959F88CF7725DAFE51CF079DE00B057398B0519BDDBE4EDA857BAA6
42D18A19EC754F332592B2F6553B0B2BB6E03AB0F35D923430E46B09EF345931
9C56818E650C6BC6CCC18A6F7BE90659EC2169A6C626D4397348268E8206B864
19415C7FBA73C0F417A7A80F15584548C1E9241C45BCA2B10840123A3A223D40
2A5471845853D355900420D36C6D7AD494BF4EB21E98970C835041A9667C4CC3
FCC136FBFF820FFB5F598D5205CA910B6B30582D7621415CA0797C86D2ADB4B1
9ADC12710EA65979C5735D2D933D1D8AE021D67F0712E0B4EB85A5026F03B7FF
8ECCBAEED4F82C4D9F7CC47FC560BC70BE3CD8FE9E338DF601111A5E1E3C5189
0EEBD61164E7190DB788E267A25E6070885E36FB7873747E82B5E7109C07DB09
B65CD0B5549CAC0FD173F67061A8461700967DF9AB3A7A3552A4901D2E25A1DD
115B6B6825219F33CEE41710FD4CED40D8FFC0BEBFE0BE3E21F61010B173408D
7D62AC6247B95FC3E60B90088CD552D8204D3B8938A7452C0F7B90088F03492F
BA1E74FDDE953CF9D99078261DCFFA4EF2A6405F9A6E0A3B4B40F839C3F023D3
05F2E9F43A08D7A11FF9848784783293BB35E69382A34FA65618E3E387DC394D
0A3945AEA9106CF74329A9059C5750C168C244099C075841FDE9EE67A860CC5B
5F4C467790F9ACDAE23D9021C7170F679BB6650FBCBC1F2FC2FE12E0E812DAB4
FA60AE6A0E20696CF707EEEA5A4F4D7317275B876FF709F01E162DD5B7E825A5
CD42E805396A85D4A6262F5C948A319C9F55D0FF1BD365DB784ED0A3B612003B
32FD02363DF3E34E9066E9BD587FECEB62E7A95FD4B3AB1C2CCE5A23B727EB0F
0EDC41FFF1386FDFD8D7D266F176B9F8A772B3BD81605CF7CD1E5562F63C403A
62153D6CB14214C999D48F8350338CDE3827BE088A4F8CBC0050D80E3F4FCBDD
FE18FAEDA58E3B5004B8B5CC759E14F59832512506F2DB7EE702ADDDD81622D6
4B559372245F0AACC6863CFCDBBB43C4BA2DA5E2A749C4FFE06884CA4EB8AEF9
2C9605DCAD529946BEE9B8D916A509837F0DB35B56A9FEE6B950E65880C4D9E5
5B2AEA822C3CD924271438683DCC71222A253AD16CEEF78ECFD41CCFCC4DAB19
F698FDC2B9A0B50E9C91F278C6EF0A3AB894B88F9DF87BCE655105350DA0AE65
8C18CB46B1B8CC4DD922E0E0A8880B4D9CA3AE96546166429948292E582C27C7
58C8E7A1FAD01232EBFF57ABABC70A2D9B27983C0306F89FA693FA5D0D8E59CF
C353E7262AC562858BD2ED80D2746537E5C6C848A6440F094235DC81D8E6AFF1
C80E344A89B8339A9FC337740EEEA92A658F4322CFAFE1FE0238E865B813DA33
F75DC912EE95AB560C6AC5EA4FE53A63ADD8CAFEA74E4CA92F13EED378ED5D51
05B522074C605CECB84468AFF0D7AD57CFA4576EDFCE0F45709E03E724FF88B5
A04BAA6AAE30B0A3CA0EF28342FC28945086D50A978BEF307A9EF787FE7F30C0
6E7275227D01D5FBD055F7CFCC8A46AFE69F7B036751044829A3A8A23F0172D7
D5F45E9E671287A93C2E13567669AAF409DAB427A68D3CF2184D76F95AE960AD
7426D2C8A3D5B22D288F369CD3633318291A6470DD9C453A95BC281C79A26602
C376BFB27C1B4C1A211FE252C615365883BC41163252920971A83D0A5E3BDBC7
DA9161FD6846220B144D92F194D718E62A17074A3137382DBA54BE70C418946E
FACB7B6F87BC1133F5AEABB4416A29A586971E0E0CE3A2523CF46A7233873EE5
4701C9E0F40D70CE8782DBA7A30378D0CE3EC44905B94879EEF4A9B99173B2D5
BD31ECF9A7D0F1641AC0CF5F3AD5A6B0E5364AC0596E349E99729EE93AF80E18
6FCF51075083394DE6A7E5D9F8046FD09287AAFD06E93C844935D732914F7AFE
1ECA0D3E09419DA3032BEDB9B77F802198121AF72DCBF718D33760AB5E795A36
A6B141214195FF215E551F218D43FF7A31DE11DA6EDACA9DE896938B111D9950
8CF881637E36C32AA229A6C92ED4C86D272EC85837373D1F2570506C7BFF633A
87D399697BD741A8F11309130ED1914968DE74C66CCA509B332985B594454F3F
819F43255D89D001FAD93C86BB79384BBABA6B113E3D48EEDCA3CC501A52C0C6
7CF3FA3CB9FE0FD257D9F4DD1E346E2D7F6CE0CD45CEEB8739DA798F1B7DC021
6E2B4F910E64EDB9DAFC17D177BD72C73983141BA943E0D1E5183B10B97FC3F3
5891B4A975D2D5F4739010E24659530CDE1A21B4C5372F7C101CD93F2C4919D7
345892778924FEAEEB9EA7EF9095D520832C4029B9439EC6F6EE9BBD2B09C3E3
C4C116C52888BAE3B32757F2C5DFAEC1B385715D58106F6A858ABF0319C96A9E
18FBEEEC6D10135CC392C8F6F40E458AEBFBE3C86AF26D20A67617BFA4F6C4D9
71CA38DF06855457D01DFD9829E46442661616246B8F8C108FD3C0703D1FBD37
683BF60059B4792AC240E437D9E94498A248F8E2CE05701632F6C0462C28676F
E38EC5BEE0339540D387035DE9716D53790C3185EB64D180AE2A3C1209CA6A6B
D2631D59A2FC3A339BE9F0486418B7970DF40FEB32DD043D51E09336AC63CAFC
D1231EA3C77114E60FE2A3B1CEBE7630387F32A9C8C6B8AC0800F421FE95C3AB
86DDE37060B43E12469A69E88EB98AAC80D95CB202A0806B1D47227814362AC5
9C658B2C1D3CE3885D691F2F9CC3209155B45464234443ADC78430B1A98EEFD6
E5070982520A877293BAEF958B03217E3CDF36BABFE7D1F225C1F621453CBCF8
5D06089A6D09EDF4D4D2FC940F8FDEF1F78190A7B9C497E677E099EC8527C49D
3F3D1C264878A32F1B92FD4B1F3AFF06AE36180F6893F6E9CD1DBA888A3FF6A4
DD4DC730B7C3E100E84506CBCC1647C4D37657654F84D4FDFFC8014AF9F139DA
442BF6E53DC92241CB5E8FF3FBC55057A31C78FE07EF09CDA8C5701FF65EEEBD
AFFA2E8E24C0694A816A37CCF63AA0D515DF32149BC462EF16942EEF3F8CA2BB
D2EEB9164D01F92D5597F0C1FFDE270565759AB2662482B99EB1CE8763BCB8D8
D035E0085440443674BC0DB76BE317599E2E120F69E2BCF40C20F5F225D8336B
CDA75789949C71580F54A229F96CDCFB0E5A4B5BF702F758D4FE9A5DB382EBCD
DB77FC39DF9E900C29F84CC9CCACE86756AA03AAD2481F918858EF246554DEC9
28868CA6C26E1DC96D5C6EC62615442F1FF35980D77091AE953488401A263E53
0879E8AAA44555C4543E914543567340870FB4C408BB4F2133F1BC782D2E9E84
B31494DC916E661DADE54E396001ABE568AAF549CC1977B312C646D84014F5BF
40A48E53DFCD37AC9D6512F0FACB21A2563EC83244ACA4FA526FA8A851FBFBA0
1EDE61C21238401113DCE80C8BFC413ACB05C380FBED416B4D12CA44995CE106
08501BF288EFD93BDD2F77E959B32A196D59209E987DA55764F59EAE90E3D049
4842862ABA2C852DEEA8D0145E67EAB9828292D895D2A44C408F0ED06B98E30A
5857994DFEE2D36021268DFFDF92B482CFBDD79DF3B0AB7FE6E2AF33BFADAB8E
D80B54A1A4E3A9CBF4EEAB86E1B68369C8E918601E061B8B76ACBCFC8EE83FD6
BB9070B61205EA1F73041D9F7FEE1AEC1C17F89D1ED90B6E0AE33D2FE94157C3
740E56C12BDD55CF274EE181FF17B8CC6C977C7A023AAA6DFACE7843592F0B77
487660E3E9E18DF91AD9D4FBC487729F6707B4EF7E2AEE6B58BC9B5ACA16E24C
C849EAFDCE7C2CFC29E9723FED876F6CB28A360F0D15D08E6E59E865486A14BA
067424003AC7E4E26266AB48881662877C3B4A3CF66DC09BE0E5201E6366AF68
16FCEB60875767EA6C41D785F76CEAA55BA4D5EE2EA89DEE68E78C4DB15DB077
660AE121989032C6A9BE22B1245BCB6A909D4F128367D0C6F0C33AFFE8187A5A
9838981235051BC3017F0511DFD89143FFAD0D845FAA300FF94B264B6AB61A54
BDECDB15DFBBA0CB7CEDD533CDA9889C1EBBB0679610927ADA384B1A4008DA22
E2CCE4B5427FD57BEC44124730CC8F956910EC035C3DFD599B5726043555B493
FB00F363F20F322388001B06250CFA9BCD41D969C012F264A0A373A7E49A60B5
D17A59AA21F6B5E00D9B1318E2A7DBE53895F59635D293A1F006955F9131A2C0
54FD3CDDB9835031B443B60A18DBC2BDF1542E408C11E08433C5B83CE5C9EF08
01758BEBDDA0C5C0A8A6C878D79423E8845D613230BE8DC2FCA1510DE9248087
CF1ABE53C77F7364F2853012EE1C0B5DA7F4B3C52D474CEE1064B8DAE82073A9
C3A32D04658D3317DD8CC3A2F4379DCD22783CE461860BB379841AF0FDC98694
554015E6A246D822818C2D3F341DC3B892BFC715D14C16437F5FA4EB988D8EA1
DD18F3D5D6ECE2EDB660D746396EDDE7C1A1A34439759E7AE592E6C126330260
A8371F7EC8F634C729B39E4B1C30335E96E80E33C300097D7F3A044BCEBD053D
02B99ABE2DE748B036CC9C8C4D5D183066983F026D5AECFBDCB6B911487ED20E
40F8EAA86B8F73C36BF3E1C6DA2E60429DE261BC91061BB7939BC344CC642A04
0C75DD191714BC52278A8E889952C6A3
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndResource
/F8_0 /YLWBJI+LucidaSans-Typewriter83 1 1
[ /.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
/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
/parenleft/parenright/asterisk/plus/comma/minus/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/bullet
/Euro/bullet/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl
/circumflex/perthousand/Scaron/guilsinglleft/OE/bullet/Zcaron/bullet
/bullet/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash
/tilde/trademark/scaron/guilsinglright/oe/bullet/zcaron/Ydieresis
/space/exclamdown/cent/sterling/currency/yen/brokenbar/section
/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron
/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered
/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown
/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply
/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide
/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]
pdfMakeFont
612 792 false pdfSetup
%%EndSetup
%%Page: 1 1
%%BeginPageSetup
%%PageOrientation: Landscape
pdfStartPage
180 rotate
-612 -792 translate
0 0 612 792 re W
%%EndPageSetup
[] 0 d
1 i
0 j
0 J
10 M
1 w
/DeviceGray {} cs
[0] sc
/DeviceGray {} CS
[0] SC
false op
false OP
{} settransfer
q
q
[0.1 0 0 0.1 0 0] cm
q
180 3960 5760 3460 re
W
/DeviceGray {} CS
[0] SC
/DeviceGray {} cs
[0] sc
q
[10 0 0 10 0 0] cm
[1 0 0 1 0 0] Tm
0 0 Td
[0 -0.9679 1 0 564.72 738.865] Tm
0 0 Td
/F8_0 8.7022 Tf
(Sep 3 10:04 2008 README Page 1) 144.161 Tj
0 -28.4801 Td
(xv6 is a re-implementation of Dennis Ritchie's and Ken Thompson\
's Unix) 305.796 Tj
0 -37.9735 Td
(Version 6 \(v6\). xv6 loosely follows the structure and style \
of v6,) 292.6905 Tj
0 -47.4668 Td
(but is implemented for a modern x86-based multiprocessor using \
ANSI C.) 305.796 Tj
0 -66.4535 Td
(ACKNOWLEDGMENTS) 65.5277 Tj
0 -85.4402 Td
(xv6 is inspired by John Lions's Commentary on UNIX 6th Edition \
\(Peer) 297.059 Tj
0 -94.9336 Td
(to Peer Communications; ISBN: 1-57398-013-7; 1st edition \(June\
14,) 288.322 Tj
0 -104.4269 Td
(2000\)\). See also http://pdos.csail.mit.edu/6.828/2007/v6.html\
, which) 297.059 Tj
0 -113.9203 Td
(provides pointers to on-line resources for v6.) 200.9517 Tj
0 -132.907 Td
(xv6 borrows code from the following sources:) 192.2146 Tj
17.4613 -142.4004 Td
(JOS \(asm.h, elf.h, mmu.h, bootasm.S, ide.c, console.c, and oth\
ers\)) 288.322 Tj
17.4613 -151.8937 Td
(Plan 9 \(bootother.S, mp.h, mp.c, lapic.c\)) 179.1091 Tj
17.4613 -161.3871 Td
(FreeBSD \(ioapic.c\)) 78.6333 Tj
17.4613 -170.8804 Td
(NetBSD \(console.c\)) 78.6333 Tj
0 -189.8667 Td
(The following people made contributions:) 174.7406 Tj
17.4613 -199.3601 Td
(Russ Cox \(context switching, locking\)) 161.635 Tj
17.4613 -208.8535 Td
(Cliff Frey \(MP\)) 65.5277 Tj
17.4613 -218.3468 Td
(Xiao Yu \(MP\)) 52.4222 Tj
0 -237.3335 Td
(The code in the files that constitute xv6 is) 192.2146 Tj
0 -246.8269 Td
(Copyright 2006-2007 Frans Kaashoek, Robert Morris, and Russ Cox\
.) 279.5849 Tj
0 -265.8136 Td