TempleOSCDV3.12.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:46:35 +02:00
1 parent ed64d7e3b8
commit 046e83368d
62 files changed
+2371 -2298

No files matched your search

Binary file not shown.
+3 -3
View File
@@ -11,8 +11,8 @@ U0 LoadDocDefines()
//This is cut and replaced when I generate a distro. //This is cut and replaced when I generate a distro.
//See $LK,"DD_TEMPLEOS_LOC",A="FF:::/Demo/AcctExample/TOSDistro.CPP,DD_TEMPLEOS_LOC"$. //See $LK,"DD_TEMPLEOS_LOC",A="FF:::/Demo/AcctExample/TOSDistro.CPP,DD_TEMPLEOS_LOC"$.
$TR-C,"LineRep"$ $TR-C,"LineRep"$
$ID,4$DefinePrint("DD_TEMPLEOS_LOC","118,728"); $ID,4$DefinePrint("DD_TEMPLEOS_LOC","118,749");
DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","80,899"); DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","80,937");
$ID,-4$ $ID,-4$
DefinePrint("DD_KERNEL","%08X",bfh); DefinePrint("DD_KERNEL","%08X",bfh);
bfh(I64)+=bfh->file_size-1; bfh(I64)+=bfh->file_size-1;
@@ -23,7 +23,7 @@ $ID,-4$
DefinePrint("DD_MP_VECT","%08X",MP_VECT_ADDR); DefinePrint("DD_MP_VECT","%08X",MP_VECT_ADDR);
DefinePrint("DD_MP_VECT_END","%08X", DefinePrint("DD_MP_VECT_END","%08X",
MP_VECT_ADDR+AP_16BIT_INIT_END-AP_16BIT_INIT-1); MP_VECT_ADDR+COREAP_16BIT_INIT_END-COREAP_16BIT_INIT-1);
DefinePrint("DD_SYS_FIXED_AREA_BASE","%08X",SYS_FIXED_AREA); DefinePrint("DD_SYS_FIXED_AREA_BASE","%08X",SYS_FIXED_AREA);
DefinePrint("DD_SYS_FIXED_AREA_END","%08X", DefinePrint("DD_SYS_FIXED_AREA_END","%08X",
+4 -4
View File
@@ -65,7 +65,7 @@ U0 DrawCtrls(CTask *task)
if (!Bt(&task->display_flags,DISPLAYf_NO_BORDER)) { if (!Bt(&task->display_flags,DISPLAYf_NO_BORDER)) {
PUSHFD PUSHFD
CLI CLI
while (LBts(&task->locked_flags,TASKLf_TASK_LOCK)) while (LBts(&task->task_flags,TASKf_TASK_LOCK))
PAUSE PAUSE
task->win_left--; //Allow drawing on border task->win_left--; //Allow drawing on border
@@ -74,7 +74,7 @@ U0 DrawCtrls(CTask *task)
task->win_bottom++; task->win_bottom++;
WinDerivedValsUpdate(task); WinDerivedValsUpdate(task);
LBtr(&task->locked_flags,TASKLf_TASK_LOCK); LBtr(&task->task_flags,TASKf_TASK_LOCK);
POPFD POPFD
if (c->draw_it) if (c->draw_it)
@@ -82,7 +82,7 @@ U0 DrawCtrls(CTask *task)
PUSHFD PUSHFD
CLI CLI
while (LBts(&task->locked_flags,TASKLf_TASK_LOCK)) while (LBts(&task->task_flags,TASKf_TASK_LOCK))
PAUSE PAUSE
task->win_left++; task->win_left++;
@@ -91,7 +91,7 @@ U0 DrawCtrls(CTask *task)
task->win_bottom--; task->win_bottom--;
WinDerivedValsUpdate(task); WinDerivedValsUpdate(task);
LBtr(&task->locked_flags,TASKLf_TASK_LOCK); LBtr(&task->task_flags,TASKf_TASK_LOCK);
POPFD POPFD
} }
} else } else
+62 -7
View File
@@ -270,14 +270,69 @@ public U0 BibleVerse(CDoc *doc_out=NULL,U8 *verse,I64 lines)
} }
} }
U0 BibleView() public CDoc *BibleDoc()
{ {//Return Bible as DolDoc with trees.
U8 buf[STR_LEN]; CDoc *result=DocRead(BIBLE_FILENAME);
I64 book=PopUpPickDefineSub("ST_BIBLE_BOOKS"); CDocEntry *doc_e=result->root.next,*doc_e1;
if (book>=0) { Bool open_chapter=FALSE;
StrPrint(buf,"BF:%Z,1:1",book,"ST_BIBLE_BOOKS"); U8 *ptr=Define("ST_BIBLE_BOOK_LINES");
Ed(buf); I64 book,book_cnt=DefineCnt("ST_BIBLE_BOOK_LINES")-1,
chapter,
line=Str2I64(ptr,,&ptr);
ptr++;
for (book=0;book<book_cnt;book++) {
while (doc_e->y+1<line) {
doc_e1=doc_e->next;
DocEntryDel(result,doc_e);
doc_e=doc_e1;
} }
result->cur_entry=doc_e;
result->cur_col=0;
DocPrint(result,"$$TR,\"%Z\"$$\n$$ID,2$$",book,"ST_BIBLE_BOOKS");
line=Str2I64(ptr,,&ptr);
ptr++;
chapter=1;
while (doc_e->y+1<line) {
doc_e1=doc_e->next;
if (doc_e->type_u8==DOCT_TEXT && StrMatch(":1 ",doc_e->tag)) {
result->cur_entry=doc_e;
result->cur_col=0;
if (open_chapter) {
DocPrint(result,"$$ID,-2$$");
open_chapter=FALSE;
}
DocPrint(result,"$$TR,\"%d\"$$\n$$ID,2$$",chapter++);
open_chapter=TRUE;
} else if (chapter==1) {
doc_e1=doc_e->next;
DocEntryDel(result,doc_e);
doc_e=doc_e1;
}
doc_e=doc_e1;
}
result->cur_entry=doc_e;
result->cur_col=0;
if (open_chapter) {
DocPrint(result,"$$ID,-2$$");
open_chapter=FALSE;
}
DocPrint(result,"$$ID,-2$$");
}
while (doc_e!=result) {
doc_e1=doc_e->next;
DocEntryDel(result,doc_e);
doc_e=doc_e1;
}
return result;
}
public U0 BibleView()
{//View Bible as DolDoc with trees.
U8 buf[STR_LEN];
CDoc *doc=BibleDoc;
StrPrint(buf,"AL:%d,1",doc);
Ed(buf);
DocDel(doc);
} }
U0 CtrlAltB(I64) U0 CtrlAltB(I64)
{ {
+4
View File
@@ -154,6 +154,10 @@ Best way for Bill Gates to save lives? $FG,4$Earthquake prediction$FG$
Stem cells? $FG,4$Lower hanging fruit exists (2007)$FG$ Stem cells? $FG,4$Lower hanging fruit exists (2007)$FG$
Eleventh commandment? $FG,4$Thou shall not litter.(Maybe, glory of Creation)$FG$ Eleventh commandment? $FG,4$Thou shall not litter.(Maybe, glory of Creation)$FG$
Twelfth commandment? $FG,4$Don't slaughter unarmed men in war.$FG$ Twelfth commandment? $FG,4$Don't slaughter unarmed men in war.$FG$
Thirteenth commandment $FG,4$No gore unless it looks fake.$FG$
Fourteenth commandment $FG,4$No pedophilia or child porn.$FG$
Fifteenth commandment $FG,4$Don't eat rare meat with blood.$FG$
Sixteenth commandment $FG,4$No wife beating.$FG$
Before Katrina $FG,4$Floods do justice. Black bead elder (tree book)$FG$ Before Katrina $FG,4$Floods do justice. Black bead elder (tree book)$FG$
After Katrina $FG,4$Suffering Simplifies Life$FG$ After Katrina $FG,4$Suffering Simplifies Life$FG$
What field are You most better? $FG,4$Economics$FG$ What field are You most better? $FG,4$Economics$FG$
+1 -1
View File
@@ -344,7 +344,7 @@ public U0 TextBorder(CTask *task=NULL,
TextChar(task,,i,b+1,'Í'+attr); TextChar(task,,i,b+1,'Í'+attr);
} }
for (i=t;i<=b;i++) { for (i=t;i<=b;i++) {
TextChar(task,,l-1,i,'º'+attr); TextChar(task,,l-1,i,'º'+attr); //Note: $LK,"RawDr",A="MN:RawDr"$() uses this char.
TextChar(task,,r+1,i,'º'+attr); TextChar(task,,r+1,i,'º'+attr);
} }
} else { } else {
Binary file not shown.
+58 -78
View File
@@ -41,6 +41,8 @@ $BG,14$
$SP,"<2>",BI=2$ $SP,"<2>",BI=2$
@@ -53,14 +55,15 @@ $BG,14$
CSprite *friendly_imgs[4]={$IB,"<3>",BI=3$,$IB,"<2>",BI=2$,$IB,"<3>",BI=3$,$IB,"<4>",BI=4$};
$SP,"<5>",BI=5$ $SP,"<5>",BI=5$
CSprite *friendly_imgs[4]={$IB,"<4>",BI=4$,$IB,"<3>",BI=3$,$IB,"<4>",BI=4$,$IB,"<5>",BI=5$};
$SP,"<6>",BI=6$ $SP,"<6>",BI=6$
@@ -72,15 +75,15 @@ CSprite *friendly_imgs[4]={$IB,"<4>",BI=4$,$IB,"<3>",BI=3$,$IB,"<4>",BI=4$,$IB,"
CSprite *friendly_hacking_imgs[4]={$IB,"<6>",BI=6$,$IB,"<5>",BI=5$,$IB,"<6>",BI=6$,$IB,"<7>",BI=7$};
$SP,"<8>",BI=8$ $SP,"<8>",BI=8$
CSprite *friendly_hacking_imgs[4]={$IB,"<7>",BI=7$,$IB,"<6>",BI=6$,$IB,"<7>",BI=7$,$IB,"<8>",BI=8$};
$SP,"<9>",BI=9$ $SP,"<9>",BI=9$
@@ -89,35 +92,27 @@ CSprite *friendly_hacking_imgs[4]={$IB,"<7>",BI=7$,$IB,"<6>",BI=6$,$IB,"<7>",BI=
CSprite *enemy_imgs[4]={$IB,"<9>",BI=9$,$IB,"<8>",BI=8$,$IB,"<9>",BI=9$,$IB,"<10>",BI=10$};
$SP,"<11>",BI=11$ $SP,"<11>",BI=11$
$SP,"<12>",BI=12$ $SP,"<12>",BI=12$
CSprite *enemy_imgs[4]={$IB,"<11>",BI=11$,$IB,"<10>",BI=10$,$IB,"<11>",BI=11$,$IB,"<12>",BI=12$};
$SP,"<13>",BI=13$ $SP,"<13>",BI=13$
$SP,"<14>",BI=14$ CSprite *enemy_hacking_imgs[4]={$IB,"<12>",BI=12$,$IB,"<11>",BI=11$,$IB,"<12>",BI=12$,$IB,"<13>",BI=13$};
$SP,"<15>",BI=15$
CSprite *enemy_hacking_imgs[4]={$IB,"<14>",BI=14$,$IB,"<13>",BI=13$,$IB,"<14>",BI=14$,$IB,"<15>",BI=15$};
@@ -128,40 +123,40 @@ CSprite *enemy_hacking_imgs[4]={$IB,"<14>",BI=14$,$IB,"<13>",BI=13$,$IB,"<14>",B
$SP,"<14>",BI=14$
$SP,"<15>",BI=15$
$SP,"<16>",BI=16$ $SP,"<16>",BI=16$
$SP,"<17>",BI=17$ $SP,"<17>",BI=17$
$SP,"<18>",BI=18$
$SP,"<19>",BI=19$
$BG$ $BG$
CSprite *landscape_imgs[LANDSCAPE_TYPES]= CSprite *landscape_imgs[LANDSCAPE_TYPES]=
{$IB,"<tree>",BI=16$,$IB,"<rock>",BI=17$,$IB,"<mountain>",BI=18$,$IB,"<castle>",BI=19$}; {$IB,"<tree>",BI=14$,$IB,"<rock>",BI=15$,$IB,"<mountain>",BI=16$,$IB,"<castle>",BI=17$};
#define MAX_LANDSCAPE 64 #define MAX_LANDSCAPE 64
class LandScapeItem class LandScapeItem
@@ -240,21 +235,6 @@ U0 DrawIt(CTask *task,CDC *dc)
(tempb->x+tempb->dx*BULLET_LEN)>>32, (tempb->x+tempb->dx*BULLET_LEN)>>32,
(tempb->y+tempb->dy*BULLET_LEN)>>32); (tempb->y+tempb->dy*BULLET_LEN)>>32);
for (i=0,tempm=m;i<MAX_MAN;i++,tempm++) {
yy=(tempm->y-scroll_y)&(MAP_HEIGHT-1);
if (-32<=yy<=task->pix_bottom+32) {
if (tempm->dead && ts<tempm->corpse_timeout)
if (!(RandU16&15)) {
if (tempm->friendly)
temps=$IB,"<2>",BI=2$;
else
temps=$IB,"<9>",BI=9$;
Sprite3B(dc,tempm->x,yy,0,temps);
}
}
}
DCDepthBufAlloc(dc); DCDepthBufAlloc(dc);
mp_not_done_flags=1<<mp_cnt-1; mp_not_done_flags=1<<mp_cnt-1;
for (i=0;i<mp_cnt;i++) for (i=0;i<mp_cnt;i++)
@@ -688,7 +668,7 @@ to_done:
MenuPop; MenuPop;
RegWriteBranch("TempleOS/TimeOut","I64 best_score=%d;\n",best_score); RegWriteBranch("TempleOS/TimeOut","I64 best_score=%d;\n",best_score);
} }
ôÿÿÿÐÿÿÿ0ÿÿÿÿÿÿÿÿÿÿÿÿ ôÿÿÿÐÿÿÿ0ÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
@@ -910,45 +890,45 @@ to_done:
˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙Ę8Í˙˙˙‡˙˙˙ry˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙Line truncated ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙Ę8Í˙˙˙‡˙˙˙ry˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙Line truncated
 
␍ ␍   ␍  ␍ ␍   ␍ 
   
     
 ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmokÊp¨ÝÿÿÿýÿÿÿýÿÿÿÝÿÿÿýÿÿÿáÿÿÿýÿÿÿýÿÿÿáÿÿÿýÿÿÿÝÿÿÿýÿÿÿÝÿÿÿáÿÿÿýÿÿÿáÿÿÿáÿÿÿýÿÿÿûÿÿÿáÿÿÿýÿÿÿðÿÿÿýÿÿÿûÿÿÿðÿÿÿýÿÿÿáÿÿÿûÿÿÿáÿÿÿðÿÿÿûÿÿÿðÿÿÿáÿÿÿþÿÿÿâÿÿÿþÿÿÿèÿÿÿþÿÿÿéÿÿÿþÿÿÿáÿÿÿâÿÿÿèÿÿÿéÿÿÿèÿÿÿþÿÿÿéÿÿÿþÿÿÿïÿÿÿþÿÿÿðÿÿÿþÿÿÿèÿÿÿéÿÿÿïÿÿÿðÿÿÿïÿÿÿÿÿÿÿðÿÿÿÿÿÿÿ òÿÿÿÿÿÿÿóÿÿÿÿÿÿÿïÿÿÿðÿÿÿ òÿÿÿóÿÿÿûÿÿÿâÿÿÿþÿÿÿúÿÿÿâÿÿÿþÿÿÿúÿÿÿéÿÿÿþÿÿÿøÿÿÿéÿÿÿþÿÿÿûÿÿÿâÿÿÿúÿÿÿâÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿúÿÿÿéÿÿÿþÿÿÿøÿÿÿéÿÿÿþÿÿÿùÿÿÿïÿÿÿþÿÿÿøÿÿÿïÿÿÿþÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿùÿÿÿïÿÿÿøÿÿÿïÿÿÿùÿÿÿïÿÿÿÿÿÿÿøÿÿÿïÿÿÿÿÿÿÿùÿÿÿòÿÿÿÿÿÿÿ÷ÿÿÿòÿÿÿÿÿÿÿùÿÿÿïÿÿÿøÿÿÿïÿÿÿùÿÿÿòÿÿÿ÷ÿÿÿòÿÿÿïÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿþÿÿÿïÿÿÿðÿÿÿöÿÿÿ÷ÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿþÿÿÿýÿÿÿþÿÿÿöÿÿÿ÷ÿÿÿýÿÿÿýÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿþÿÿÿýÿÿÿÿÿÿÿýÿÿÿýÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿþÿÿÿöÿÿÿþÿÿÿûÿÿÿöÿÿÿþÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿûÿÿÿöÿÿÿþÿÿÿöÿÿÿþÿÿÿûÿÿÿöÿÿÿþÿÿÿýÿÿÿýÿÿÿþÿÿÿûÿÿÿýÿÿÿþÿÿÿþÿÿÿöÿÿÿûÿÿÿöÿÿÿýÿÿÿýÿÿÿûÿÿÿýÿÿÿýÿÿÿÿÿÿÿþÿÿÿûÿÿÿÿÿÿÿþÿÿÿýÿÿÿÿÿÿÿúÿÿÿÿÿÿÿýÿÿÿýÿÿÿþÿÿÿûÿÿÿýÿÿÿþÿÿÿýÿÿÿýÿÿÿúÿÿÿýÿÿÿ   ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmokÊp¨ÝÿÿÿýÿÿÿýÿÿÿÝÿÿÿýÿÿÿáÿÿÿýÿÿÿýÿÿÿáÿÿÿýÿÿÿÝÿÿÿýÿÿÿÝÿÿÿáÿÿÿýÿÿÿáÿÿÿáÿÿÿýÿÿÿûÿÿÿáÿÿÿýÿÿÿðÿÿÿýÿÿÿûÿÿÿðÿÿÿýÿÿÿáÿÿÿûÿÿÿáÿÿÿðÿÿÿûÿÿÿðÿÿÿáÿÿÿþÿÿÿâÿÿÿþÿÿÿèÿÿÿþÿÿÿéÿÿÿþÿÿÿáÿÿÿâÿÿÿèÿÿÿéÿÿÿèÿÿÿþÿÿÿéÿÿÿþÿÿÿïÿÿÿþÿÿÿðÿÿÿþÿÿÿèÿÿÿéÿÿÿïÿÿÿðÿÿÿïÿÿÿÿÿÿÿðÿÿÿÿÿÿÿ òÿÿÿÿÿÿÿóÿÿÿÿÿÿÿïÿÿÿðÿÿÿ òÿÿÿóÿÿÿûÿÿÿâÿÿÿþÿÿÿúÿÿÿâÿÿÿþÿÿÿúÿÿÿéÿÿÿþÿÿÿøÿÿÿéÿÿÿþÿÿÿûÿÿÿâÿÿÿúÿÿÿâÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿúÿÿÿéÿÿÿþÿÿÿøÿÿÿéÿÿÿþÿÿÿùÿÿÿïÿÿÿþÿÿÿøÿÿÿïÿÿÿþÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿùÿÿÿïÿÿÿøÿÿÿïÿÿÿùÿÿÿïÿÿÿÿÿÿÿøÿÿÿïÿÿÿÿÿÿÿùÿÿÿòÿÿÿÿÿÿÿ÷ÿÿÿòÿÿÿÿÿÿÿùÿÿÿïÿÿÿøÿÿÿïÿÿÿùÿÿÿòÿÿÿ÷ÿÿÿòÿÿÿïÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿþÿÿÿïÿÿÿðÿÿÿöÿÿÿ÷ÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿþÿÿÿýÿÿÿþÿÿÿöÿÿÿ÷ÿÿÿýÿÿÿýÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿþÿÿÿýÿÿÿÿÿÿÿýÿÿÿýÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿþÿÿÿöÿÿÿþÿÿÿûÿÿÿöÿÿÿþÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿûÿÿÿöÿÿÿþÿÿÿöÿÿÿþÿÿÿûÿÿÿöÿÿÿþÿÿÿýÿÿÿýÿÿÿþÿÿÿûÿÿÿýÿÿÿþÿÿÿþÿÿÿöÿÿÿûÿÿÿöÿÿÿýÿÿÿýÿÿÿûÿÿÿýÿÿÿýÿÿÿÿÿÿÿþÿÿÿûÿÿÿÿÿÿÿþÿÿÿýÿÿÿÿÿÿÿúÿÿÿÿÿÿÿýÿÿÿýÿÿÿþÿÿÿûÿÿÿýÿÿÿþÿÿÿýÿÿÿýÿÿÿúÿÿÿýÿÿÿ 
 
␍ ␍   ␍  ␍ ␍   ␍ 
   
     
 ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmokÊp¨ÝÿÿÿýÿÿÿýÿÿÿÝÿÿÿýÿÿÿáÿÿÿýÿÿÿýÿÿÿáÿÿÿýÿÿÿÝÿÿÿýÿÿÿÝÿÿÿáÿÿÿýÿÿÿáÿÿÿáÿÿÿýÿÿÿûÿÿÿáÿÿÿýÿÿÿðÿÿÿýÿÿÿûÿÿÿðÿÿÿýÿÿÿáÿÿÿûÿÿÿáÿÿÿðÿÿÿûÿÿÿðÿÿÿáÿÿÿâÿÿÿçÿÿÿüÿÿÿèÿÿÿüÿÿÿâÿÿÿãÿÿÿèÿÿÿýÿÿÿéÿÿÿýÿÿÿçÿÿÿüÿÿÿèÿÿÿüÿÿÿíÿÿÿùÿÿÿíÿÿÿùÿÿÿèÿÿÿýÿÿÿéÿÿÿýÿÿÿíÿÿÿúÿÿÿîÿÿÿúÿÿÿíÿÿÿùÿÿÿíÿÿÿùÿÿÿ ðÿÿÿøÿÿÿðÿÿÿøÿÿÿíÿÿÿúÿÿÿîÿÿÿúÿÿÿ ðÿÿÿùÿÿÿñÿÿÿùÿÿÿûÿÿÿãÿÿÿþÿÿÿúÿÿÿãÿÿÿþÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿûÿÿÿáÿÿÿúÿÿÿáÿÿÿúÿÿÿçÿÿÿøÿÿÿçÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿùÿÿÿíÿÿÿøÿÿÿíÿÿÿúÿÿÿçÿÿÿøÿÿÿçÿÿÿùÿÿÿêÿÿÿ øÿÿÿêÿÿÿ ùÿÿÿìÿÿÿøÿÿÿìÿÿÿùÿÿÿîÿÿÿ ÷ÿÿÿîÿÿÿ ùÿÿÿëÿÿÿøÿÿÿëÿÿÿùÿÿÿìÿÿÿ ÷ÿÿÿìÿÿÿ ðÿÿÿþÿÿÿñÿÿÿÿÿÿÿõÿÿÿöÿÿÿîÿÿÿïÿÿÿóÿÿÿôÿÿÿõÿÿÿöÿÿÿüÿÿÿýÿÿÿóÿÿÿôÿÿÿúÿÿÿûÿÿÿþÿÿÿþÿÿÿüÿÿÿ üÿÿÿ␍üÿÿÿüÿÿÿúÿÿÿ úÿÿÿ þÿÿÿïÿÿÿþÿÿÿüÿÿÿïÿÿÿÿÿÿÿþÿÿÿôÿÿÿúÿÿÿûÿÿÿôÿÿÿúÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿõÿÿÿûÿÿÿûÿÿÿõÿÿÿüÿÿÿþÿÿÿôÿÿÿúÿÿÿûÿÿÿôÿÿÿúÿÿÿýÿÿÿùÿÿÿõÿÿÿûÿÿÿùÿÿÿöÿÿÿþÿÿÿõÿÿÿûÿÿÿûÿÿÿõÿÿÿüÿÿÿýÿÿÿúÿÿÿ÷ÿÿÿûÿÿÿúÿÿÿøÿÿÿýÿÿÿûÿÿÿóÿÿÿûÿÿÿûÿÿÿóÿÿÿýÿÿÿøÿÿÿúÿÿÿøÿÿÿýÿÿÿøÿÿÿõÿÿÿûÿÿÿøÿÿÿõÿÿÿýÿÿÿýÿÿÿúÿÿÿúÿÿÿýÿÿÿúÿÿÿ   ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmokÊp¨ÝÿÿÿýÿÿÿýÿÿÿÝÿÿÿýÿÿÿáÿÿÿýÿÿÿýÿÿÿáÿÿÿýÿÿÿÝÿÿÿýÿÿÿÝÿÿÿáÿÿÿýÿÿÿáÿÿÿáÿÿÿýÿÿÿûÿÿÿáÿÿÿýÿÿÿðÿÿÿýÿÿÿûÿÿÿðÿÿÿýÿÿÿáÿÿÿûÿÿÿáÿÿÿðÿÿÿûÿÿÿðÿÿÿáÿÿÿâÿÿÿçÿÿÿüÿÿÿèÿÿÿüÿÿÿâÿÿÿãÿÿÿèÿÿÿýÿÿÿéÿÿÿýÿÿÿçÿÿÿüÿÿÿèÿÿÿüÿÿÿíÿÿÿùÿÿÿíÿÿÿùÿÿÿèÿÿÿýÿÿÿéÿÿÿýÿÿÿíÿÿÿúÿÿÿîÿÿÿúÿÿÿíÿÿÿùÿÿÿíÿÿÿùÿÿÿ ðÿÿÿøÿÿÿðÿÿÿøÿÿÿíÿÿÿúÿÿÿîÿÿÿúÿÿÿ ðÿÿÿùÿÿÿñÿÿÿùÿÿÿûÿÿÿãÿÿÿþÿÿÿúÿÿÿãÿÿÿþÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿûÿÿÿáÿÿÿúÿÿÿáÿÿÿúÿÿÿçÿÿÿøÿÿÿçÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿùÿÿÿíÿÿÿøÿÿÿíÿÿÿúÿÿÿçÿÿÿøÿÿÿçÿÿÿùÿÿÿêÿÿÿ øÿÿÿêÿÿÿ ùÿÿÿìÿÿÿøÿÿÿìÿÿÿùÿÿÿîÿÿÿ ÷ÿÿÿîÿÿÿ ùÿÿÿëÿÿÿøÿÿÿëÿÿÿùÿÿÿìÿÿÿ ÷ÿÿÿìÿÿÿ ðÿÿÿþÿÿÿñÿÿÿÿÿÿÿõÿÿÿöÿÿÿîÿÿÿïÿÿÿóÿÿÿôÿÿÿõÿÿÿöÿÿÿüÿÿÿýÿÿÿóÿÿÿôÿÿÿúÿÿÿûÿÿÿþÿÿÿþÿÿÿüÿÿÿ üÿÿÿ␍üÿÿÿüÿÿÿúÿÿÿ úÿÿÿ þÿÿÿïÿÿÿþÿÿÿüÿÿÿïÿÿÿÿÿÿÿþÿÿÿôÿÿÿúÿÿÿûÿÿÿôÿÿÿúÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿõÿÿÿûÿÿÿûÿÿÿõÿÿÿüÿÿÿþÿÿÿôÿÿÿúÿÿÿûÿÿÿôÿÿÿúÿÿÿýÿÿÿùÿÿÿõÿÿÿûÿÿÿùÿÿÿöÿÿÿþÿÿÿõÿÿÿûÿÿÿûÿÿÿõÿÿÿüÿÿÿýÿÿÿúÿÿÿ÷ÿÿÿûÿÿÿúÿÿÿøÿÿÿýÿÿÿûÿÿÿóÿÿÿûÿÿÿûÿÿÿóÿÿÿýÿÿÿøÿÿÿúÿÿÿøÿÿÿýÿÿÿøÿÿÿõÿÿÿûÿÿÿøÿÿÿõÿÿÿýÿÿÿýÿÿÿúÿÿÿúÿÿÿýÿÿÿúÿÿÿ 
 
␍ ␍   ␍  ␍ ␍   ␍ 
   
     
 ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok  ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmokÊp¨ÝÿÿÿýÿÿÿýÿÿÿÝÿÿÿýÿÿÿáÿÿÿýÿÿÿýÿÿÿáÿÿÿýÿÿÿÝÿÿÿýÿÿÿÝÿÿÿáÿÿÿýÿÿÿáÿÿÿáÿÿÿýÿÿÿûÿÿÿáÿÿÿýÿÿÿðÿÿÿýÿÿÿûÿÿÿðÿÿÿýÿÿÿáÿÿÿûÿÿÿáÿÿÿðÿÿÿûÿÿÿðÿÿÿâÿÿÿþÿÿÿãÿÿÿÿÿÿÿèÿÿÿéÿÿÿàÿÿÿáÿÿÿçÿÿÿèÿÿÿéÿÿÿêÿÿÿìÿÿÿíÿÿÿæÿÿÿçÿÿÿêÿÿÿëÿÿÿ ìÿÿÿíÿÿÿ íÿÿÿ îÿÿÿ êÿÿÿëÿÿÿ ìÿÿÿ íÿÿÿ ûÿÿÿáÿÿÿÿÿÿÿúÿÿÿáÿÿÿúÿÿÿèÿÿÿûÿÿÿøÿÿÿèÿÿÿüÿÿÿûÿÿÿâÿÿÿúÿÿÿâÿÿÿúÿÿÿèÿÿÿýÿÿÿøÿÿÿèÿÿÿþÿÿÿúÿÿÿèÿÿÿûÿÿÿøÿÿÿèÿÿÿüÿÿÿùÿÿÿíÿÿÿøÿÿÿøÿÿÿíÿÿÿùÿÿÿúÿÿÿèÿÿÿýÿÿÿøÿÿÿèÿÿÿþÿÿÿùÿÿÿîÿÿÿúÿÿÿøÿÿÿîÿÿÿûÿÿÿùÿÿÿíÿÿÿùÿÿÿøÿÿÿíÿÿÿúÿÿÿùÿÿÿðÿÿÿøÿÿÿ÷ÿÿÿðÿÿÿøÿÿÿùÿÿÿîÿÿÿúÿÿÿøÿÿÿîÿÿÿúÿÿÿùÿÿÿñÿÿÿøÿÿÿ÷ÿÿÿñÿÿÿùÿÿÿîÿÿÿÿÿÿÿïÿÿÿÿÿÿÿóÿÿÿúÿÿÿôÿÿÿúÿÿÿðÿÿÿñÿÿÿõÿÿÿüÿÿÿöÿÿÿüÿÿÿóÿÿÿúÿÿÿôÿÿÿúÿÿÿøÿÿÿõÿÿÿùÿÿÿõÿÿÿõÿÿÿüÿÿÿöÿÿÿüÿÿÿúÿÿÿ÷ÿÿÿûÿÿÿ÷ÿÿÿúÿÿÿóÿÿÿûÿÿÿôÿÿÿÿÿÿÿøÿÿÿøÿÿÿøÿÿÿõÿÿÿùÿÿÿõÿÿÿýÿÿÿùÿÿÿýÿÿÿúÿÿÿþÿÿÿñÿÿÿÿÿÿÿüÿÿÿñÿÿÿÿÿÿÿþÿÿÿöÿÿÿûÿÿÿöÿÿÿþÿÿÿîÿÿÿüÿÿÿîÿÿÿþÿÿÿóÿÿÿûÿÿÿóÿÿÿþÿÿÿõÿÿÿûÿÿÿõÿÿÿýÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿôÿÿÿûÿÿÿôÿÿÿýÿÿÿúÿÿÿûÿÿÿúÿÿÿýÿÿÿþÿÿÿûÿÿÿÿÿÿÿýÿÿÿüÿÿÿ úÿÿÿýÿÿÿ ýÿÿÿûÿÿÿûÿÿÿüÿÿÿýÿÿÿùÿÿÿ úÿÿÿúÿÿÿ  
Êp¨ÝÿÿÿýÿÿÿýÿÿÿÝÿÿÿýÿÿÿáÿÿÿýÿÿÿýÿÿÿáÿÿÿýÿÿÿÝÿÿÿýÿÿÿÝÿÿÿáÿÿÿýÿÿÿáÿÿÿáÿÿÿýÿÿÿûÿÿÿáÿÿÿýÿÿÿðÿÿÿýÿÿÿûÿÿÿðÿÿÿýÿÿÿáÿÿÿûÿÿÿáÿÿÿðÿÿÿûÿÿÿðÿÿÿâÿÿÿþÿÿÿãÿÿÿÿÿÿÿèÿÿÿéÿÿÿàÿÿÿáÿÿÿçÿÿÿèÿÿÿéÿÿÿêÿÿÿìÿÿÿíÿÿÿæÿÿÿçÿÿÿêÿÿÿëÿÿÿ ìÿÿÿíÿÿÿ íÿÿÿ îÿÿÿ êÿÿÿëÿÿÿ ìÿÿÿ íÿÿÿ ûÿÿÿáÿÿÿÿÿÿÿúÿÿÿáÿÿÿúÿÿÿèÿÿÿûÿÿÿøÿÿÿèÿÿÿüÿÿÿûÿÿÿâÿÿÿúÿÿÿâÿÿÿúÿÿÿèÿÿÿýÿÿÿøÿÿÿèÿÿÿþÿÿÿúÿÿÿèÿÿÿûÿÿÿøÿÿÿèÿÿÿüÿÿÿùÿÿÿíÿÿÿøÿÿÿøÿÿÿíÿÿÿùÿÿÿúÿÿÿèÿÿÿýÿÿÿøÿÿÿèÿÿÿþÿÿÿùÿÿÿîÿÿÿúÿÿÿøÿÿÿîÿÿÿûÿÿÿùÿÿÿíÿÿÿùÿÿÿøÿÿÿíÿÿÿúÿÿÿùÿÿÿðÿÿÿøÿÿÿ÷ÿÿÿðÿÿÿøÿÿÿùÿÿÿîÿÿÿúÿÿÿøÿÿÿîÿÿÿúÿÿÿùÿÿÿñÿÿÿøÿÿÿ÷ÿÿÿñÿÿÿùÿÿÿîÿÿÿÿÿÿÿïÿÿÿÿÿÿÿóÿÿÿúÿÿÿôÿÿÿúÿÿÿðÿÿÿñÿÿÿõÿÿÿüÿÿÿöÿÿÿüÿÿÿóÿÿÿúÿÿÿôÿÿÿúÿÿÿøÿÿÿõÿÿÿùÿÿÿõÿÿÿõÿÿÿüÿÿÿöÿÿÿüÿÿÿúÿÿÿ÷ÿÿÿûÿÿÿ÷ÿÿÿúÿÿÿóÿÿÿûÿÿÿôÿÿÿÿÿÿÿøÿÿÿøÿÿÿøÿÿÿõÿÿÿùÿÿÿõÿÿÿýÿÿÿùÿÿÿýÿÿÿúÿÿÿþÿÿÿñÿÿÿÿÿÿÿüÿÿÿñÿÿÿÿÿÿÿþÿÿÿöÿÿÿûÿÿÿöÿÿÿþÿÿÿîÿÿÿüÿÿÿîÿÿÿþÿÿÿóÿÿÿûÿÿÿóÿÿÿþÿÿÿõÿÿÿûÿÿÿõÿÿÿýÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿôÿÿÿûÿÿÿôÿÿÿýÿÿÿúÿÿÿûÿÿÿúÿÿÿýÿÿÿþÿÿÿûÿÿÿÿÿÿÿýÿÿÿüÿÿÿ úÿÿÿýÿÿÿ ýÿÿÿûÿÿÿûÿÿÿüÿÿÿýÿÿÿùÿÿÿ úÿÿÿúÿÿÿ  
␍ ␍  ␍ ␍ ␍  ␍
 
   
␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok Êp¨ÝÿÿÿýÿÿÿýÿÿÿÝÿÿÿýÿÿÿáÿÿÿýÿÿÿýÿÿÿáÿÿÿýÿÿÿÝÿÿÿýÿÿÿÝÿÿÿáÿÿÿýÿÿÿáÿÿÿáÿÿÿýÿÿÿûÿÿÿáÿÿÿýÿÿÿðÿÿÿýÿÿÿûÿÿÿðÿÿÿýÿÿÿáÿÿÿûÿÿÿáÿÿÿðÿÿÿûÿÿÿðÿÿÿáÿÿÿþÿÿÿâÿÿÿþÿÿÿèÿÿÿþÿÿÿéÿÿÿþÿÿÿáÿÿÿâÿÿÿèÿÿÿéÿÿÿèÿÿÿþÿÿÿéÿÿÿþÿÿÿïÿÿÿþÿÿÿðÿÿÿþÿÿÿèÿÿÿéÿÿÿïÿÿÿðÿÿÿïÿÿÿÿÿÿÿðÿÿÿÿÿÿÿ òÿÿÿÿÿÿÿóÿÿÿÿÿÿÿïÿÿÿðÿÿÿ òÿÿÿóÿÿÿûÿÿÿâÿÿÿþÿÿÿúÿÿÿâÿÿÿþÿÿÿúÿÿÿéÿÿÿþÿÿÿøÿÿÿéÿÿÿþÿÿÿûÿÿÿâÿÿÿúÿÿÿâÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿúÿÿÿéÿÿÿþÿÿÿøÿÿÿéÿÿÿþÿÿÿùÿÿÿïÿÿÿþÿÿÿøÿÿÿïÿÿÿþÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿùÿÿÿïÿÿÿøÿÿÿïÿÿÿùÿÿÿïÿÿÿÿÿÿÿøÿÿÿïÿÿÿÿÿÿÿùÿÿÿòÿÿÿÿÿÿÿ÷ÿÿÿòÿÿÿÿÿÿÿùÿÿÿïÿÿÿøÿÿÿïÿÿÿùÿÿÿòÿÿÿ÷ÿÿÿòÿÿÿïÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿþÿÿÿïÿÿÿðÿÿÿöÿÿÿ÷ÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿþÿÿÿýÿÿÿþÿÿÿöÿÿÿ÷ÿÿÿýÿÿÿýÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿþÿÿÿýÿÿÿÿÿÿÿýÿÿÿýÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿþÿÿÿöÿÿÿþÿÿÿûÿÿÿöÿÿÿþÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿûÿÿÿöÿÿÿþÿÿÿöÿÿÿþÿÿÿûÿÿÿöÿÿÿþÿÿÿýÿÿÿýÿÿÿþÿÿÿûÿÿÿýÿÿÿþÿÿÿþÿÿÿöÿÿÿûÿÿÿöÿÿÿýÿÿÿýÿÿÿûÿÿÿýÿÿÿýÿÿÿÿÿÿÿþÿÿÿûÿÿÿÿÿÿÿþÿÿÿýÿÿÿÿÿÿÿúÿÿÿÿÿÿÿýÿÿÿýÿÿÿþÿÿÿûÿÿÿýÿÿÿþÿÿÿýÿÿÿýÿÿÿúÿÿÿýÿÿÿ  ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok Êp¨ÝÿÿÿýÿÿÿýÿÿÿÝÿÿÿýÿÿÿáÿÿÿýÿÿÿýÿÿÿáÿÿÿýÿÿÿÝÿÿÿýÿÿÿÝÿÿÿáÿÿÿýÿÿÿáÿÿÿáÿÿÿýÿÿÿûÿÿÿáÿÿÿýÿÿÿðÿÿÿýÿÿÿûÿÿÿðÿÿÿýÿÿÿáÿÿÿûÿÿÿáÿÿÿðÿÿÿûÿÿÿðÿÿÿáÿÿÿþÿÿÿâÿÿÿþÿÿÿèÿÿÿþÿÿÿéÿÿÿþÿÿÿáÿÿÿâÿÿÿèÿÿÿéÿÿÿèÿÿÿþÿÿÿéÿÿÿþÿÿÿïÿÿÿþÿÿÿðÿÿÿþÿÿÿèÿÿÿéÿÿÿïÿÿÿðÿÿÿïÿÿÿÿÿÿÿðÿÿÿÿÿÿÿ òÿÿÿÿÿÿÿóÿÿÿÿÿÿÿïÿÿÿðÿÿÿ òÿÿÿóÿÿÿûÿÿÿâÿÿÿþÿÿÿúÿÿÿâÿÿÿþÿÿÿúÿÿÿéÿÿÿþÿÿÿøÿÿÿéÿÿÿþÿÿÿûÿÿÿâÿÿÿúÿÿÿâÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿúÿÿÿéÿÿÿþÿÿÿøÿÿÿéÿÿÿþÿÿÿùÿÿÿïÿÿÿþÿÿÿøÿÿÿïÿÿÿþÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿùÿÿÿïÿÿÿøÿÿÿïÿÿÿùÿÿÿïÿÿÿÿÿÿÿøÿÿÿïÿÿÿÿÿÿÿùÿÿÿòÿÿÿÿÿÿÿ÷ÿÿÿòÿÿÿÿÿÿÿùÿÿÿïÿÿÿøÿÿÿïÿÿÿùÿÿÿòÿÿÿ÷ÿÿÿòÿÿÿïÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿþÿÿÿïÿÿÿðÿÿÿöÿÿÿ÷ÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿþÿÿÿýÿÿÿþÿÿÿöÿÿÿ÷ÿÿÿýÿÿÿýÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿþÿÿÿýÿÿÿÿÿÿÿýÿÿÿýÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿþÿÿÿöÿÿÿþÿÿÿûÿÿÿöÿÿÿþÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿûÿÿÿöÿÿÿþÿÿÿöÿÿÿþÿÿÿûÿÿÿöÿÿÿþÿÿÿýÿÿÿýÿÿÿþÿÿÿûÿÿÿýÿÿÿþÿÿÿþÿÿÿöÿÿÿûÿÿÿöÿÿÿýÿÿÿýÿÿÿûÿÿÿýÿÿÿýÿÿÿÿÿÿÿþÿÿÿûÿÿÿÿÿÿÿþÿÿÿýÿÿÿÿÿÿÿúÿÿÿÿÿÿÿýÿÿÿýÿÿÿþÿÿÿûÿÿÿýÿÿÿþÿÿÿýÿÿÿýÿÿÿúÿÿÿýÿÿÿ 
␍ ␍  ␍ ␍ ␍  ␍
 
   
␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok Êp¨ÝÿÿÿýÿÿÿýÿÿÿÝÿÿÿýÿÿÿáÿÿÿýÿÿÿýÿÿÿáÿÿÿýÿÿÿÝÿÿÿýÿÿÿÝÿÿÿáÿÿÿýÿÿÿáÿÿÿáÿÿÿýÿÿÿûÿÿÿáÿÿÿýÿÿÿðÿÿÿýÿÿÿûÿÿÿðÿÿÿýÿÿÿáÿÿÿûÿÿÿáÿÿÿðÿÿÿûÿÿÿðÿÿÿáÿÿÿâÿÿÿçÿÿÿüÿÿÿèÿÿÿüÿÿÿâÿÿÿãÿÿÿèÿÿÿýÿÿÿéÿÿÿýÿÿÿçÿÿÿüÿÿÿèÿÿÿüÿÿÿíÿÿÿùÿÿÿíÿÿÿùÿÿÿèÿÿÿýÿÿÿéÿÿÿýÿÿÿíÿÿÿúÿÿÿîÿÿÿúÿÿÿíÿÿÿùÿÿÿíÿÿÿùÿÿÿ ðÿÿÿøÿÿÿðÿÿÿøÿÿÿíÿÿÿúÿÿÿîÿÿÿúÿÿÿ ðÿÿÿùÿÿÿñÿÿÿùÿÿÿûÿÿÿãÿÿÿþÿÿÿúÿÿÿãÿÿÿþÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿûÿÿÿáÿÿÿúÿÿÿáÿÿÿúÿÿÿçÿÿÿøÿÿÿçÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿùÿÿÿíÿÿÿøÿÿÿíÿÿÿúÿÿÿçÿÿÿøÿÿÿçÿÿÿùÿÿÿêÿÿÿ øÿÿÿêÿÿÿ ùÿÿÿìÿÿÿøÿÿÿìÿÿÿùÿÿÿîÿÿÿ ÷ÿÿÿîÿÿÿ ùÿÿÿëÿÿÿøÿÿÿëÿÿÿùÿÿÿìÿÿÿ ÷ÿÿÿìÿÿÿ ðÿÿÿþÿÿÿñÿÿÿÿÿÿÿõÿÿÿöÿÿÿîÿÿÿïÿÿÿóÿÿÿôÿÿÿõÿÿÿöÿÿÿüÿÿÿýÿÿÿóÿÿÿôÿÿÿúÿÿÿûÿÿÿþÿÿÿþÿÿÿüÿÿÿ üÿÿÿ␍üÿÿÿüÿÿÿúÿÿÿ úÿÿÿ þÿÿÿïÿÿÿþÿÿÿüÿÿÿïÿÿÿÿÿÿÿþÿÿÿôÿÿÿúÿÿÿûÿÿÿôÿÿÿúÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿõÿÿÿûÿÿÿûÿÿÿõÿÿÿüÿÿÿþÿÿÿôÿÿÿúÿÿÿûÿÿÿôÿÿÿúÿÿÿýÿÿÿùÿÿÿõÿÿÿûÿÿÿùÿÿÿöÿÿÿþÿÿÿõÿÿÿûÿÿÿûÿÿÿõÿÿÿüÿÿÿýÿÿÿúÿÿÿ÷ÿÿÿûÿÿÿúÿÿÿøÿÿÿýÿÿÿûÿÿÿóÿÿÿûÿÿÿûÿÿÿóÿÿÿýÿÿÿøÿÿÿúÿÿÿøÿÿÿýÿÿÿøÿÿÿõÿÿÿûÿÿÿøÿÿÿõÿÿÿýÿÿÿýÿÿÿúÿÿÿúÿÿÿýÿÿÿúÿÿÿ  ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok
Êp¨ÝÿÿÿýÿÿÿýÿÿÿÝÿÿÿýÿÿÿáÿÿÿýÿÿÿýÿÿÿáÿÿÿýÿÿÿÝÿÿÿýÿÿÿÝÿÿÿáÿÿÿýÿÿÿáÿÿÿáÿÿÿýÿÿÿûÿÿÿáÿÿÿýÿÿÿðÿÿÿýÿÿÿûÿÿÿðÿÿÿýÿÿÿáÿÿÿûÿÿÿáÿÿÿðÿÿÿûÿÿÿðÿÿÿáÿÿÿâÿÿÿçÿÿÿüÿÿÿèÿÿÿüÿÿÿâÿÿÿãÿÿÿèÿÿÿýÿÿÿéÿÿÿýÿÿÿçÿÿÿüÿÿÿèÿÿÿüÿÿÿíÿÿÿùÿÿÿíÿÿÿùÿÿÿèÿÿÿýÿÿÿéÿÿÿýÿÿÿíÿÿÿúÿÿÿîÿÿÿúÿÿÿíÿÿÿùÿÿÿíÿÿÿùÿÿÿ ðÿÿÿøÿÿÿðÿÿÿøÿÿÿíÿÿÿúÿÿÿîÿÿÿúÿÿÿ ðÿÿÿùÿÿÿñÿÿÿùÿÿÿûÿÿÿãÿÿÿþÿÿÿúÿÿÿãÿÿÿþÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿûÿÿÿáÿÿÿúÿÿÿáÿÿÿúÿÿÿçÿÿÿøÿÿÿçÿÿÿúÿÿÿéÿÿÿøÿÿÿéÿÿÿùÿÿÿíÿÿÿøÿÿÿíÿÿÿúÿÿÿçÿÿÿøÿÿÿçÿÿÿùÿÿÿêÿÿÿ øÿÿÿêÿÿÿ ùÿÿÿìÿÿÿøÿÿÿìÿÿÿùÿÿÿîÿÿÿ ÷ÿÿÿîÿÿÿ ùÿÿÿëÿÿÿøÿÿÿëÿÿÿùÿÿÿìÿÿÿ ÷ÿÿÿìÿÿÿ ðÿÿÿþÿÿÿñÿÿÿÿÿÿÿõÿÿÿöÿÿÿîÿÿÿïÿÿÿóÿÿÿôÿÿÿõÿÿÿöÿÿÿüÿÿÿýÿÿÿóÿÿÿôÿÿÿúÿÿÿûÿÿÿþÿÿÿþÿÿÿüÿÿÿ üÿÿÿ␍üÿÿÿüÿÿÿúÿÿÿ úÿÿÿ þÿÿÿïÿÿÿþÿÿÿüÿÿÿïÿÿÿÿÿÿÿþÿÿÿôÿÿÿúÿÿÿûÿÿÿôÿÿÿúÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿõÿÿÿûÿÿÿûÿÿÿõÿÿÿüÿÿÿþÿÿÿôÿÿÿúÿÿÿûÿÿÿôÿÿÿúÿÿÿýÿÿÿùÿÿÿõÿÿÿûÿÿÿùÿÿÿöÿÿÿþÿÿÿõÿÿÿûÿÿÿûÿÿÿõÿÿÿüÿÿÿýÿÿÿúÿÿÿ÷ÿÿÿûÿÿÿúÿÿÿøÿÿÿýÿÿÿûÿÿÿóÿÿÿûÿÿÿûÿÿÿóÿÿÿýÿÿÿøÿÿÿúÿÿÿøÿÿÿýÿÿÿøÿÿÿõÿÿÿûÿÿÿøÿÿÿõÿÿÿýÿÿÿýÿÿÿúÿÿÿúÿÿÿýÿÿÿúÿÿÿ 
␍ ␍  ␍ ␍ ␍  ␍
 
   
␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmokæq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿåÿÿÿåÿÿÿßÿÿÿþÿÿÿßÿÿÿþÿÿÿæÿÿÿÿÿÿÿæÿÿÿÿÿÿÿàÿÿÿüÿÿÿàÿÿÿüÿÿÿÞÿÿÿþÿÿÿÞÿÿÿþÿÿÿ ÜÿÿÿùÿÿÿÜÿÿÿùÿÿÿàÿÿÿüÿÿÿàÿÿÿüÿÿÿ Ýÿÿÿ÷ÿÿÿÝÿÿÿ÷ÿÿÿ ÜÿÿÿøÿÿÿÜÿÿÿøÿÿÿ ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmokæq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿåÿÿÿåÿÿÿßÿÿÿþÿÿÿßÿÿÿþÿÿÿæÿÿÿÿÿÿÿæÿÿÿÿÿÿÿàÿÿÿüÿÿÿàÿÿÿüÿÿÿÞÿÿÿþÿÿÿÞÿÿÿþÿÿÿ ÜÿÿÿùÿÿÿÜÿÿÿùÿÿÿàÿÿÿüÿÿÿàÿÿÿüÿÿÿ Ýÿÿÿ÷ÿÿÿÝÿÿÿ÷ÿÿÿ ÜÿÿÿøÿÿÿÜÿÿÿøÿÿÿ
ÛÿÿÿöÿÿÿÛÿÿÿöÿÿÿ ÝÿÿÿøÿÿÿÝÿÿÿøÿÿÿ ÛÿÿÿöÿÿÿÛÿÿÿöÿÿÿ ÝÿÿÿøÿÿÿÝÿÿÿøÿÿÿ
ÜÿÿÿõÿÿÿÜÿÿÿõÿÿÿüÿÿÿãÿÿÿÿÿÿÿúÿÿÿãÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿüÿÿÿäÿÿÿúÿÿÿäÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿøÿÿÿñÿÿÿøÿÿÿöÿÿÿñÿÿÿùÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿøÿÿÿòÿÿÿùÿÿÿöÿÿÿòÿÿÿúÿÿÿðÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿðÿÿÿñÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿüÿÿÿúÿÿÿüÿÿÿúÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿüÿÿÿýÿÿÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿþÿÿÿúÿÿÿÿÿÿÿûÿÿÿúÿÿÿüÿÿÿúÿÿÿþÿÿÿþÿÿÿþÿÿÿñÿÿÿþÿÿÿüÿÿÿñÿÿÿþÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿûÿÿÿýÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿÿÿÿÿûÿÿÿýÿÿÿþÿÿÿúÿÿÿþÿÿÿþÿÿÿüÿÿÿûÿÿÿýÿÿÿýÿÿÿûÿÿÿúÿÿÿüÿÿÿÒÿÿÿèÿÿÿ  ÜÿÿÿõÿÿÿÜÿÿÿõÿÿÿüÿÿÿãÿÿÿÿÿÿÿúÿÿÿãÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿüÿÿÿäÿÿÿúÿÿÿäÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿøÿÿÿñÿÿÿøÿÿÿöÿÿÿñÿÿÿùÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿøÿÿÿòÿÿÿùÿÿÿöÿÿÿòÿÿÿúÿÿÿðÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿðÿÿÿñÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿüÿÿÿúÿÿÿüÿÿÿúÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿüÿÿÿýÿÿÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿþÿÿÿúÿÿÿÿÿÿÿûÿÿÿúÿÿÿüÿÿÿúÿÿÿþÿÿÿþÿÿÿþÿÿÿñÿÿÿþÿÿÿüÿÿÿñÿÿÿþÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿûÿÿÿýÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿÿÿÿÿûÿÿÿýÿÿÿþÿÿÿúÿÿÿþÿÿÿþÿÿÿüÿÿÿûÿÿÿýÿÿÿýÿÿÿûÿÿÿúÿÿÿüÿÿÿÒÿÿÿèÿÿÿ 
 
␍ ␍   ␍  ␍ ␍   ␍ 
   
     
 ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok&p"æq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿæÿÿÿÿÿÿÿæÿÿÿäÿÿÿäÿÿÿãÿÿÿþÿÿÿãÿÿÿþÿÿÿáÿÿÿáÿÿÿãÿÿÿãÿÿÿ ßÿÿÿ  ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok&p"æq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿæÿÿÿÿÿÿÿæÿÿÿäÿÿÿäÿÿÿãÿÿÿþÿÿÿãÿÿÿþÿÿÿáÿÿÿáÿÿÿãÿÿÿãÿÿÿ ßÿÿÿ
ßÿÿÿ âÿÿÿâÿÿÿ ÝÿÿÿÝÿÿÿ ßÿÿÿ ßÿÿÿ ßÿÿÿ âÿÿÿâÿÿÿ ÝÿÿÿÝÿÿÿ ßÿÿÿ ßÿÿÿ
Ýÿÿÿ Ýÿÿÿ ÝÿÿÿÝÿÿÿ Ýÿÿÿ Ýÿÿÿ ÝÿÿÿÝÿÿÿ
@@ -958,21 +938,21 @@ to_done:
␍ ␍   ␍  ␍ ␍   ␍ 
   
     
 ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok&p"æq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿåÿÿÿþÿÿÿåÿÿÿÿÿÿÿåÿÿÿåÿÿÿãÿÿÿþÿÿÿãÿÿÿÿÿÿÿãÿÿÿãÿÿÿåÿÿÿåÿÿÿ åÿÿÿ åÿÿÿ ãÿÿÿãÿÿÿ ãÿÿÿ ãÿÿÿ åÿÿÿ åÿÿÿ  ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok&p"æq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿåÿÿÿþÿÿÿåÿÿÿÿÿÿÿåÿÿÿåÿÿÿãÿÿÿþÿÿÿãÿÿÿÿÿÿÿãÿÿÿãÿÿÿåÿÿÿåÿÿÿ åÿÿÿ åÿÿÿ ãÿÿÿãÿÿÿ ãÿÿÿ ãÿÿÿ åÿÿÿ åÿÿÿ
åÿÿÿåÿÿÿ ãÿÿÿ ãÿÿÿ åÿÿÿåÿÿÿ ãÿÿÿ ãÿÿÿ
ãÿÿÿãÿÿÿüÿÿÿãÿÿÿÿÿÿÿúÿÿÿãÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿüÿÿÿäÿÿÿúÿÿÿäÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿøÿÿÿñÿÿÿøÿÿÿöÿÿÿñÿÿÿùÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿøÿÿÿòÿÿÿùÿÿÿöÿÿÿòÿÿÿúÿÿÿðÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿðÿÿÿñÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿüÿÿÿúÿÿÿüÿÿÿúÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿüÿÿÿýÿÿÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿþÿÿÿúÿÿÿÿÿÿÿûÿÿÿúÿÿÿüÿÿÿúÿÿÿþÿÿÿþÿÿÿþÿÿÿñÿÿÿþÿÿÿüÿÿÿñÿÿÿþÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿûÿÿÿýÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿÿÿÿÿûÿÿÿýÿÿÿþÿÿÿúÿÿÿþÿÿÿþÿÿÿüÿÿÿûÿÿÿýÿÿÿýÿÿÿûÿÿÿúÿÿÿüÿÿÿãÿÿÿ#  ãÿÿÿãÿÿÿüÿÿÿãÿÿÿÿÿÿÿúÿÿÿãÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿüÿÿÿäÿÿÿúÿÿÿäÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿøÿÿÿñÿÿÿøÿÿÿöÿÿÿñÿÿÿùÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿøÿÿÿòÿÿÿùÿÿÿöÿÿÿòÿÿÿúÿÿÿðÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿðÿÿÿñÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿüÿÿÿúÿÿÿüÿÿÿúÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿüÿÿÿýÿÿÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿþÿÿÿúÿÿÿÿÿÿÿûÿÿÿúÿÿÿüÿÿÿúÿÿÿþÿÿÿþÿÿÿþÿÿÿñÿÿÿþÿÿÿüÿÿÿñÿÿÿþÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿûÿÿÿýÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿÿÿÿÿûÿÿÿýÿÿÿþÿÿÿúÿÿÿþÿÿÿþÿÿÿüÿÿÿûÿÿÿýÿÿÿýÿÿÿûÿÿÿúÿÿÿüÿÿÿãÿÿÿ# 
 
␍ ␍   ␍  ␍ ␍   ␍ 
   
     
 ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok&p"¢úÿÿÿüÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ¢úÿÿÿûÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ␍æq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿåÿÿÿåÿÿÿßÿÿÿþÿÿÿßÿÿÿþÿÿÿæÿÿÿÿÿÿÿæÿÿÿÿÿÿÿàÿÿÿüÿÿÿàÿÿÿüÿÿÿÞÿÿÿþÿÿÿÞÿÿÿþÿÿÿ ÜÿÿÿùÿÿÿÜÿÿÿùÿÿÿàÿÿÿüÿÿÿàÿÿÿüÿÿÿ Ýÿÿÿ÷ÿÿÿÝÿÿÿ÷ÿÿÿ ÜÿÿÿøÿÿÿÜÿÿÿøÿÿÿ  ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok&p" æq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿåÿÿÿåÿÿÿßÿÿÿþÿÿÿßÿÿÿþÿÿÿæÿÿÿÿÿÿÿæÿÿÿÿÿÿÿàÿÿÿüÿÿÿàÿÿÿüÿÿÿÞÿÿÿþÿÿÿÞÿÿÿþÿÿÿ ÜÿÿÿùÿÿÿÜÿÿÿùÿÿÿàÿÿÿüÿÿÿàÿÿÿüÿÿÿ Ýÿÿÿ÷ÿÿÿÝÿÿÿ÷ÿÿÿ ÜÿÿÿøÿÿÿÜÿÿÿøÿÿÿ
ÛÿÿÿöÿÿÿÛÿÿÿöÿÿÿ ÝÿÿÿøÿÿÿÝÿÿÿøÿÿÿ ÛÿÿÿöÿÿÿÛÿÿÿöÿÿÿ ÝÿÿÿøÿÿÿÝÿÿÿøÿÿÿ
ÜÿÿÿõÿÿÿÜÿÿÿõÿÿÿüÿÿÿãÿÿÿÿÿÿÿúÿÿÿãÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿüÿÿÿäÿÿÿúÿÿÿäÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿøÿÿÿñÿÿÿøÿÿÿöÿÿÿñÿÿÿùÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿøÿÿÿòÿÿÿùÿÿÿöÿÿÿòÿÿÿúÿÿÿðÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿðÿÿÿñÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿüÿÿÿúÿÿÿüÿÿÿúÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿüÿÿÿýÿÿÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿþÿÿÿúÿÿÿÿÿÿÿûÿÿÿúÿÿÿüÿÿÿúÿÿÿþÿÿÿþÿÿÿþÿÿÿñÿÿÿþÿÿÿüÿÿÿñÿÿÿþÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿûÿÿÿýÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿÿÿÿÿûÿÿÿýÿÿÿþÿÿÿúÿÿÿþÿÿÿþÿÿÿüÿÿÿûÿÿÿýÿÿÿýÿÿÿûÿÿÿúÿÿÿüÿÿÿÒÿÿÿèÿÿÿ  ÜÿÿÿõÿÿÿÜÿÿÿõÿÿÿüÿÿÿãÿÿÿÿÿÿÿúÿÿÿãÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿüÿÿÿäÿÿÿúÿÿÿäÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿøÿÿÿñÿÿÿøÿÿÿöÿÿÿñÿÿÿùÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿøÿÿÿòÿÿÿùÿÿÿöÿÿÿòÿÿÿúÿÿÿðÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿðÿÿÿñÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿüÿÿÿúÿÿÿüÿÿÿúÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿüÿÿÿýÿÿÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿþÿÿÿúÿÿÿÿÿÿÿûÿÿÿúÿÿÿüÿÿÿúÿÿÿþÿÿÿþÿÿÿþÿÿÿñÿÿÿþÿÿÿüÿÿÿñÿÿÿþÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿûÿÿÿýÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿÿÿÿÿûÿÿÿýÿÿÿþÿÿÿúÿÿÿþÿÿÿþÿÿÿüÿÿÿûÿÿÿýÿÿÿýÿÿÿûÿÿÿúÿÿÿüÿÿÿÒÿÿÿèÿÿÿ 
␍ ␍  ␍ ␍ ␍  ␍
 
   
␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok&p"æq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿæÿÿÿÿÿÿÿæÿÿÿäÿÿÿäÿÿÿãÿÿÿþÿÿÿãÿÿÿþÿÿÿáÿÿÿáÿÿÿãÿÿÿãÿÿÿ ßÿÿÿ ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok&p" æq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿæÿÿÿÿÿÿÿæÿÿÿäÿÿÿäÿÿÿãÿÿÿþÿÿÿãÿÿÿþÿÿÿáÿÿÿáÿÿÿãÿÿÿãÿÿÿ ßÿÿÿ
ßÿÿÿ âÿÿÿâÿÿÿ ÝÿÿÿÝÿÿÿ ßÿÿÿ ßÿÿÿ ßÿÿÿ âÿÿÿâÿÿÿ ÝÿÿÿÝÿÿÿ ßÿÿÿ ßÿÿÿ
Ýÿÿÿ Ýÿÿÿ ÝÿÿÿÝÿÿÿ Ýÿÿÿ Ýÿÿÿ ÝÿÿÿÝÿÿÿ
@@ -982,7 +962,7 @@ to_done:
␍ ␍  ␍ ␍ ␍  ␍
 
   
␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok&p"æq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿåÿÿÿþÿÿÿåÿÿÿÿÿÿÿåÿÿÿåÿÿÿãÿÿÿþÿÿÿãÿÿÿÿÿÿÿãÿÿÿãÿÿÿåÿÿÿåÿÿÿ åÿÿÿ åÿÿÿ ãÿÿÿãÿÿÿ ãÿÿÿ ãÿÿÿ åÿÿÿ åÿÿÿ ␍␍    ! ""#!%$&&'%! $$%!#"&&'#" $$&"#!%%'#)(**+)-,../-)(,,-)+*../+*(,,.*+)--/+10223154667510445132667320446231557398::;9=<>>?=98<<=9;:>>?;:8<<>:;9==?;A@BBCAEDFFGEA@DDEACBFFGCB@DDFBCAEEGCIHJJKIMLNNOMIHLLMIKJNNOKJHLLNJKIMMOKQPRRSQUTVVWUQPTTUQSRVVWSRPTTVRSQUUWSYXZZ[Y]\^^_]YX\\]Y[Z^^_[ZX\\^Z[Y]]_[a`bbcaedffgea`ddeacbffgcb`ddfbcaeegcihjjkimlnnomihllmikjnnokjhllnjkimmok&p"␍æq©ÞÿÿÿþÿÿÿþÿÿÿÞÿÿÿþÿÿÿâÿÿÿþÿÿÿþÿÿÿâÿÿÿþÿÿÿÞÿÿÿþÿÿÿÞÿÿÿâÿÿÿþÿÿÿâÿÿÿâÿÿÿþÿÿÿüÿÿÿâÿÿÿþÿÿÿðÿÿÿþÿÿÿüÿÿÿðÿÿÿþÿÿÿâÿÿÿüÿÿÿâÿÿÿðÿÿÿüÿÿÿðÿÿÿåÿÿÿþÿÿÿåÿÿÿÿÿÿÿåÿÿÿåÿÿÿãÿÿÿþÿÿÿãÿÿÿÿÿÿÿãÿÿÿãÿÿÿåÿÿÿåÿÿÿ åÿÿÿ åÿÿÿ ãÿÿÿãÿÿÿ ãÿÿÿ ãÿÿÿ åÿÿÿ åÿÿÿ
åÿÿÿåÿÿÿ ãÿÿÿ ãÿÿÿ åÿÿÿåÿÿÿ ãÿÿÿ ãÿÿÿ
ãÿÿÿãÿÿÿüÿÿÿãÿÿÿÿÿÿÿúÿÿÿãÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿüÿÿÿäÿÿÿúÿÿÿäÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿøÿÿÿñÿÿÿøÿÿÿöÿÿÿñÿÿÿùÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿøÿÿÿòÿÿÿùÿÿÿöÿÿÿòÿÿÿúÿÿÿðÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿðÿÿÿñÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿüÿÿÿúÿÿÿüÿÿÿúÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿüÿÿÿýÿÿÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿþÿÿÿúÿÿÿÿÿÿÿûÿÿÿúÿÿÿüÿÿÿúÿÿÿþÿÿÿþÿÿÿþÿÿÿñÿÿÿþÿÿÿüÿÿÿñÿÿÿþÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿûÿÿÿýÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿÿÿÿÿûÿÿÿýÿÿÿþÿÿÿúÿÿÿþÿÿÿþÿÿÿüÿÿÿûÿÿÿýÿÿÿýÿÿÿûÿÿÿúÿÿÿüÿÿÿãÿÿÿ#  ãÿÿÿãÿÿÿüÿÿÿãÿÿÿÿÿÿÿúÿÿÿãÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿüÿÿÿäÿÿÿúÿÿÿäÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿúÿÿÿéÿÿÿüÿÿÿøÿÿÿéÿÿÿüÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿúÿÿÿêÿÿÿýÿÿÿøÿÿÿêÿÿÿþÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿùÿÿÿîÿÿÿùÿÿÿ÷ÿÿÿîÿÿÿúÿÿÿøÿÿÿñÿÿÿøÿÿÿöÿÿÿñÿÿÿùÿÿÿùÿÿÿïÿÿÿúÿÿÿ÷ÿÿÿïÿÿÿûÿÿÿøÿÿÿòÿÿÿùÿÿÿöÿÿÿòÿÿÿúÿÿÿðÿÿÿþÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿðÿÿÿñÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿöÿÿÿüÿÿÿöÿÿÿüÿÿÿüÿÿÿúÿÿÿüÿÿÿúÿÿÿöÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿüÿÿÿýÿÿÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿþÿÿÿúÿÿÿÿÿÿÿûÿÿÿúÿÿÿüÿÿÿúÿÿÿþÿÿÿþÿÿÿþÿÿÿñÿÿÿþÿÿÿüÿÿÿñÿÿÿþÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿðÿÿÿüÿÿÿðÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿ÷ÿÿÿüÿÿÿ÷ÿÿÿþÿÿÿýÿÿÿûÿÿÿýÿÿÿþÿÿÿöÿÿÿüÿÿÿöÿÿÿþÿÿÿüÿÿÿûÿÿÿüÿÿÿþÿÿÿÿÿÿÿûÿÿÿýÿÿÿþÿÿÿúÿÿÿþÿÿÿþÿÿÿüÿÿÿûÿÿÿýÿÿÿýÿÿÿûÿÿÿúÿÿÿüÿÿÿãÿÿÿ# 
Binary file not shown.
+118 -101
View File
@@ -334,106 +334,123 @@ $LK,"cmp_templates_dont_push2",A="FL:::/Compiler/CExts.CPP.Z,44"$
$LK,"InstEntryFind",A="FL:::/Compiler/UAsm.CPP.Z,66",BI=263$ $LK,"InstEntryFind",A="FL:::/Compiler/UAsm.CPP.Z,66",BI=263$
$LK,"PrsDotDotDot",A="FL:::/Compiler/PrsVar.CPP.Z,381",BI=264$ $LK,"PrsDotDotDot",A="FL:::/Compiler/PrsVar.CPP.Z,381",BI=264$
$LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=265$ $LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=265$
H2@¡#¡#ª#°#Ë#Ğ#û#ı#0$$@$G$X$k$¨+ŞiŞiôiüijjj=j jIjOjOjvjƒj®jÇjÇjñjk+kk7k]kJkqk~k©k©k°kÎkákákákëkH<J¶ô¶ôĞôÚôŞôâôçôéôõ!õ!õ+õ|ªÅÎøÎøøøúøùù␍ùùùù"ù/ù<ùOù]ùlùqùsùxù‚ù’ù¥ùµùÓùåù8ßß ß$ß/ß8ß?ßAßFßd`µÓÓ$Ó(Ó5Ó7ÓDÓFÓRÓRÓ_ÓaÓnÓpÓ|Ó|Ó’Ó›Ó›Ó¦Ó­Ó¼ÓÇÓÍÓÒÓÔÓàÓçÓöÓÔÔ ÔÔÔJÔpÔ€Ô�Ô Ô¢Ô²ÔÂÔÒÔÒÔ×ÔñÔøÔÿÔÿÔÿÔÿÔÕÕ(Õ.Õ4Õ:Õ>Õ>Õ>ÕkÕrÕˆÕ”ÕšÕ Õ¦Õ¨Õ¨Õ¶ÕDöնÕÌÕÏÕÒÕßÕåÕòÕõÕøÕşÕÖ H2@¡#¡#ª#°#Ë#Ğ#û#ı#0$$@$G$X$k$¨+jj$j,j7jCjNjmjPjyjjj¦j³jŞj÷j÷j!kCk[kHkgk�kzk¡k®kÙkÙkàkşkllllH<Jæôæôõ
Ö,cjÀ†À†Î†Ø†ã†î†ô†ú† jnæ␍æ␍ô␍  õõõõõ5õQõQõ[õ|ªÅşøşø(ù*ù1ù7ù=ù?ùEùKùRù_ùlùù�ùœù¡ù£ù¨ù²ùÂùÕùåùúú8FßFßOßTß_ßhßoßqßvßd`µ6Ó6ÓTÓXÓeÓgÓtÓvÓ‚Ó‚Ó�Ó‘Ó�Ó Ó¬Ó¬ÓÂÓËÓËÓÖÓİÓìÓ÷ÓıÓÔÔÔÔ&Ô1Ô7Ô<Ô>ÔJÔzÔ Ô°ÔÀÔĞÔÒÔâÔòÔÕÕÕ!Õ(Õ/Õ/Õ/Õ/Õ6ÕLÕXÕ^ÕdÕjÕnÕnÕnÕ›Õ¢Õ¸ÕÄÕÊÕĞÕÖÕØÕØÕæÕDÃæÕæÕüÕÿÕÖÖÖ"Ö%Ö(Ö.Ö0Ö:Ö,cjğ†ğ†ş†‡‡‡$‡*‡ jn$9?
P 66'666N6T6f6f6q6z6€6‡6�6 œ;^EEEE+E>EQEnE�E˜E©EĞEçEçE FF!F.F5FgFtFxF€F€F“F£F§F«F Œ×öVVv~‚�–œœÉßó*/=\euw~~„„”␍|1### #+#D#D#G#V#\#e#g#m#v#x#~#ˆ#�#’#’#œ#0 '………6…<…B…B…H…„•²`œ`œtœ{œ‚œ†œªœ½œÄœÕœúœ����B�M�X�Z�a�j�l�w�~�¨�("fÛfÛuÛˆÛ Û Û¦Û ÛÛÛ0Û6Ûƒ°®°®Õ®Ü®ó®ÿ® P 66'666N6T6f6f6q6z6€6‡6�6 œ;^6E6E>EBE[EnE�EžE¿EÈEÙEFFF9FHFQF^FeF—F¤F¨F°F°FÃFÓF×FÛF Œ×ö††¦®²ÀÆÌÌù#1HNZ_mŒ•¥§®®´´Ä |1### #+#D#D#G#V#\#e#g#m#v#x#~#ˆ#�#’#’#œ#0 '8…8…F…f…l…r…r…x…„•²�œ�œ¤œ«œ²œ¶œÚœíœôœ�*�5�@�B�M�r�}�ˆ�Š�‘�š�œ�§�®�Ø�("–Û–Û¥Û¸ÛÐÛÐÛÖÛ >Û>ÛMÛ`ÛfÛƒà®à®¯ ¯#¯/¯:¯L¯]¯N¯L¯}¯˜¯¤¯«¯±¯½¯Ç¯Î¯Õ¯Ù¯Û¯á¯í¯÷¯þ¯° ° °°°#°5°F°7°5°f°‡°“°š° °¬°¶°½°Ä°È°Ê°Ð°Ü°æ°í°ô°ø°ø°±±#±5±F±7±5±f±‡±“±š± ±¬±¶±½±Ä±È±Ê±Ð±Ü±æ±í±ô±ø±ø±²²$²5²&²$²U²\²b²n²x²²†²Š²Œ²’²ž²¨²¯²¶²º²º²Ä²Ò²Û²ô²³³³³³†³ì–z–z³zQ »zÍzézôz{ {{&{.{1{?{k{k{€{‚{‚{Ž{–{š{§{§{³{»{¿{Ì{Ì{Ì{è{ó{|| |!|0|5|;|F|K|K|P|h|w|||‚|�|’|’| |©|µ|½|Å|Í|Ð|Ö|Û|ä|ö|ÿ|} } }%}-}5}8}>}>}C}C}C}I}L}S}^}s}˜}¯}¼}Ä}Ì}Ø}ä}ê}ñ}ú}þ}~ ~~~ ~ ~-~=~=~J~J~R~Z~c~r~w~w~~~‰~�~—~�~¨~­~­~¼~Ç~Ù~ß~ç~í~ò~ý~#((<BMSUekk�´¹¹ÍÓéú€€€$€4€<€D€J€O€O€c€i€€�€–€›€´€º€Ê€Ò€Ú€à€å€å€û€��(�.�3�B�H�Y�a�i�o�v�{�{�‘�—�­�¾�Ä�Æ�Õ�Û�å�í�õ�û�‚‚‚‚‚.‚>‚>‚C‚C‚Q‚Y‚j‚}‚„‚Š‚’‚˜‚¨‚®‚¶‚¼‚¼‚¼‚Á‚Á‚Á‚Á‚Á‚à‚ì‚ñ‚ñ‚ƒƒƒ$ƒ/ƒ:ƒ?ƒ?ƒUƒ[ƒqƒ‚ƒˆƒ�ƒŸƒ¥ƒªƒÃáƒáƒæƒæƒòƒúƒýƒ„ „„„2„:„B„R„X„^„^„o„�„�„’„’„ž„¦„©„°„¶„»„»„Û„ã„ó„ù„……-…5…M…U…X…_…e…}………�…¥…¨…¯…µ…µ…µ…Ô…ä…ð…ø…û…†††'†3†N†V†Y†`†f†~†І¥†­†°†·†½†½†½†½†††ˆÛ†ñ†÷†‡"‡(‡-‡?‡E‡J‡f‡l‡x‡€‡ƒ‡Ї�‡¹‡Á‡чׇÞ‡Þ‡Þ‡ã‡ã‡ì‡ˆˆ ˆ8ˆKˆQˆVˆ�ˆ‡ˆšˆшãˆÿˆ‰ ‰‰‰,‰8‰D‰O‰O‰T‰T‰n‰z‰†‰‘‰‘‰–‰–‰°‰¼‰ȉÓ‰Ó‰؉؉î‰ô‰ŠŠ ŠŠ#Š(Š7ŠCŠOŠUŠ[ŠbŠuЀЉЕŠ�РЦЬбŠÅŠÔŠÜŠôŠüŠÿŠ‹ ‹#‹+‹K‹e‹m‹p‹v‹|‹|‹�‹–‹¢‹ª‹­‹´‹º‹¿‹Ñ‹à‹è‹ŒŒ ŒŒŒ0Œ8ŒWŒqŒyŒ|ŒƒŒ‰Œ‰Œ™Œ¢Œ®Œ¶Œ¹Œ¿ŒÅŒÊŒÞŒíŒõŒ��� �&�>�F�h�„�Œ���•�›�›�¬�µ�Á�É�Ì�Ó�Ù�Þ�ð�ÿ�Ž"Ž*Ž-Ž4Ž:ŽRŽZŽ|ޙޡޤޫޱޱޱޱޱ޶޶ŽÌŽÒŽÞŽäŽéŽûŽ��� �)�5�=�@�G�M�R�d�s�{�“�›�ž�¥�«�Ã�Ë�ê�� ������-�6�B�J�M�T�Z�_�q�€�Œ�§�¯�²�¹�¿�×�ã�‘"‘*‘-‘4‘:‘:‘:‘:‘:‘?‘?‘R‘m‘s‘~‘ƒ‘ƒ‘–‘¬‘²‘½‘¿‘¿‘Ò‘õ‘û‘’’’!’2’7’I’Y’Y’^’^’q’‡’�’›’ª’¯’¯’Â’Ø’Þ’ì’û’““““9“Q“Q“{“�“†“’“›“ª“ª“¯“¯“œ˓蓔”*”0”5”A”J”Y”Y”^”^”t”z”—”¯”¯”ٔߔä”ð”ù”•• • •#•)•F•^•^•ˆ•Ž•�•œ•¥•°•°•°•°•µ•Õ̕ݕߕñ•þ•þ•þ•––#–G–S–T–Y–n–‹–›–¿–Ï–Õ–Õ–Õ–Ú–ß–ô–—E—U—[—]—b—s—‚—´—¼——Ä—É—ЗЗÙ—ë—þ—˜˜˜˜ ˜/˜8˜C˜E˜N˜Y˜Y˜z˜�˜‡˜�˜š˜ ˜°˜¶˜¾˜ɘϘϘÔ˜Ù˜à˜ç˜î˜õ˜þ˜ ™ ™ ™™™™$™)™)™;™F™N™V™\™\™\™a™a™Line truncated
¯¯-¯¯¯M¯h¯t¯{¯�¯�¯—¯�¯¥¯©¯«¯±¯½¯Ç¯Î¯Õ¯Ù¯Ù¯ã¯è¯ó¯°°°°6°W°c°j°p°|°†°�°”°˜°š° °¬°¶°½°Ä°È°È°Õ°ã°ó°±±±±6±W±c±j±p±|±†±�±”±˜±š± ±¬±¶±½±Ä±È±È±Ò±â±ô±²ö±ô±%²,²2²>²H²O²V²Z²\²b²n²x²²†²Š²Š²”²¢²«²Ä²Ğ²Ô²Ô²×²à²V³ìfzfzƒz! ‹z�z¹zÄzÖzİzîzözşz{{;{;{P{R{R{^{f{j{w{w{ƒ{‹{�{œ{œ{œ{¸{Ã{Ô{Ô{Ù{ñ{|| |||| |8|G|L|R|]|b|b|p|y|…|�|•|�| |¦|«|´|Æ|Ï|à|ğ|ğ|õ|ı|}}}}}}}}}#}.}C}h}}Œ}”}œ}¨}´}º}Á}Ê}Î}Ñ}İ}ã}ê}ï}ï}ı}␍~␍~~~"~*~3~B~G~G~N~Y~_~g~m~x~}~}~Œ~—~©~¯~·~½~Â~Í~ß~å~í~ó~ø~ø~ #%5;;]„‰‰�£¹ÊĞÕîô€ €€€ € €3€9€O€`€f€k€„€Š€š€¢€ª€°€µ€µ€Ë€Ñ€ç€ø€ş€���)�1�9�?�F�K�K�a�g�}���”�–�¥�«�µ�½�Å�Ë�Ò�Ò�Ò�ä�í�ş�‚‚‚‚!‚)‚:‚M‚T‚Z‚b‚h‚x‚~‚†‚Œ‚Œ‚Œ‚‘‚‘‚‘‚‘‚‘‚°‚¼‚Á‚Á‚ׂà‚ë‚ô‚ÿ‚ šššššš&š/š2š2š=š?šQšXš^šmšxšƒš‰š’š–š–š¢š«š®š®š¹š»šÍšÔšÚšâšíšøšşš› ›››››!›#›.›2›;›>›>›I›K›c›j›u›€›ƒ›‰›�›�›•›™›™›¥›®›±›±›¼›¾›Ğ›×›İ›ì›÷›œœœœœ!œ*œ-œ-œ8œ:œLœSœYœaœlœwœ}œ‡œŠœ�œ�œ–œ�œ œ¢œ­œ±œºœ½œ½œÈœÊœâœéœôœÿœ��␍�␍� �#�#�/�8�;�;�F�H�Z�a�g�y�„���•�š�š�¥�ª�ª�µ�º�º�Å�È�Ì�Ó�Ø�İ�â�â�ö�û�û�� ��%�)�=�D�H�H�U�a�i�o��ƒ�”�¦�±�µ�µ�Â�Ê�Ò�Ø�Ø�Ø�Ø�Ø�Ú�Ú�è�ï�ü�ŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸ/Ÿ7ŸCŸCŸdŸrŸŠŸŒŸ˜Ÿ¥Ÿ¥ŸÈŸÕŸàŸéŸòŸıŸ     # A M M |¢x¿Ù 4 444!4*464B4W4W4ƒ4‡4Œ4˜4«4µ4¸4Ã4Æ4Î4Ø4°›Ã�‹�‹¤‹«‹¼‹Á‹Ö‹Ëâ‹è‹è‹ô‹ Œù‹ŒŒŒ+Œ0ŒEŒ2ŒQŒTŒTŒ`ŒuŒbŒ�Œ‡Œ‡ŒšŒ­ŒÀŒÓŒæŒğŒ„�.w.wLw^wdwkwrwtwww~w…w…w¡w¥w«w«wÃw×wèwèwğwx4xUxZx{x€xŒx—xœx©x¬xãxôxùxÿxyy
ƒƒƒ%ƒ+ƒAƒRƒXƒ]ƒoƒuƒzƒ“ƒ±ƒ±ƒ¶ƒ¶ƒƒʃ̓ÓƒÙƒރރ„ yy y#y+y4yOyoy†y™y�y¢yÄy×yÜyóyz zz1zLzlzz„z•zšz�zŸz¥z«z¼zÁzÇzÏzÏzÙzâzùz {{{7{R{r{…{Š{¥{Å{Ü{ï{ô{ø{|-|-|H|H|H|V|n|p|p|p|~|–|˜|˜|¦|¾|¾|Ğ|Ğ|Ù|æ|ü|}6}=}G}Z}^}^}^}e}k}…}Œ}–}®}°}¶}Ğ}×}á}ï}ú}ú}~H‰—�‚�‚§‚½‚͂Ԃ낃ƒƒ_ƒLíü^�^�r�~�”�€� �¢�µ�È�Ó�Ş�æ�`Ê––$–F–S–]–l–…–‰–�–¢–¿–Á–Á–ò–à–Á–——4IR¾Ò¾ÒÇÒÇÒÊÒØÒæÒéÒîÒä;ÖòÖòşòó ó6óGóGóbóhómómóˆó�ó“ó“óœóªó¶ó½óÃóÈó ôôô"ô$ô$ô7ô=ô=ô=ôMôBô^ômôô„ô„ô„ô‹ô’ô™ô®ôµôÑôÑôãôĞL¼H¡H¡b¡m¡x¡�¡‰¡Œ¡“¡—¡ ¡±¡µ¡»¡É¡æ¡ó¡¢¢¢¢ ¢+¢0¢3¢=¢5¢M¢V¢g¢e¢]¢u¢~¢„¢„¢’¢•¢©¢²¢»¢Â¢Æ¢Ë¢â¢ú¢££-£9£9£Q£b£b£i£…£‘£™£¬£³£Ç£Ğ£×£Û£æ£ë£ò£¤<¤C¤G¤I¤T¤`¤d¤y¤{¤Œ¤–¤¡¤«¤º¤É¤å¤å¤è¤ğ¤õ¤w¥Xs…®G®GËGÜGéGóG
„„"„(„.„.„?„]„]„b„b„n„v„y„€„†„‹„‹„«„³„ÄɄЄî„ı„……%…(…/…5…M…U…m…u…x……………………¤…´…À…È…Ë…Ò…Ø…è…÷…††&†)†0†6†N†Z†u†}†€†‡†�†�†�†�†’†’†›†«†Á†dž߆ò†ø†ı†‡‡‡6‡<‡H‡P‡S‡Z‡`‡‰‡‘‡¡‡§‡®‡®‡®‡³‡³‡¼‡Ô‡ê‡ğ‡ˆˆ!ˆ&ˆQˆWˆjˆ¡ˆ³ˆψ׈݈âˆâˆüˆ‰‰ ‰ ‰$‰$‰>‰J‰V‰a‰a‰f‰f‰€‰Œ‰˜‰£‰£‰¨‰¨‰¾‰ĉЉÖ‰Û‰í‰ó‰ø‰ŠŠ Š%Š+Š2ŠEŠPŠYŠeŠmŠpŠvŠ|Š�ЕФЬŠÄŠÌŠÏŠÕŠÛŠóŠûŠ‹5‹=‹@‹F‹L‹L‹]‹f‹r‹z‹}‹„‹Š‹�‹¡‹°‹¸‹Ğ‹Ø‹Û‹â‹è‹ŒŒ'ŒAŒIŒLŒSŒYŒYŒiŒrŒ~Œ†Œ‰Œ�Œ•ŒšŒ®Œ½ŒÅŒߌçŒêŒğŒöŒ��8�T�\�_�e�k�k�|�…�‘�™�œ�£�©�®�À�Ï�×�ò�ú�ı�� H'HEHKHTHbHhHkHwHŒ _ _0_Q_Q_________h_h_o_‰_š_¢_¢_­_­_»_Ë_Ë_Ù_ß_ß_÷_÷_ı_#` (kq0‡0‡>‡J‡Z‡a‡g‡ @Ua®å®å¼åÄåËåêå÷å÷åúåüåæ!$/4.Ü.Ü;ÜIÜNÜTÜ"$).ÜÜÜ!Ü&Ü,Ü#$#(ÖÛÖÛåÛôÛùÛÿÛ$8ìv  %;CMejz�˜¢º¿Ïßõı + 3 = M R h r | † � š ¤ ® ¸ Â Ì Ö à ê
�"�*�L�i�q�t�{�����������†�†�œ�¢�®�´�¹�Ë�Ñ�Ö�ä�ğ�ù��␍����"�4�C�K�c�k�n�u�{�“�›�º�Ô�Ü�ß�æ�ì�ì�ì�ı�����$�*�/�A�P�\�w��‚�‰���§�³�Õ�ò�ú�ı�‘   ( 2 < F P f p z � š ¤ ® ¸ Â Ì Ö à ê ô ş !!!&!0!:!D!N!X!b!l!v!€!Š!”!�!¨!²!¼!Ì!%¨D�˜�˜¦˜­˜´˜Â˜Ó˜å˜ç˜î˜ô˜™™™$™;™>™@™R™X™h™r™|™ƒ™�™£™«™«™Á™Á™Á™Õ™&Ğ1>>\cju}––ªÃÃÎÒİä'5KOTf�¥ª²»âøüü I(Urr‘œ¢¸ÉÎà $,02Yos�·¿ÄÈÍŞô4EI[[[[`|¼›Èåğö ">fnsw|�Ÿ­ÁÃÜíññ+BGOSU|’–££££¼ÆÍà÷÷#11GWe|�”š°¿¸Ôäëù<eeer«°»ÁÌëò$2J`dt“¿¯Ëè.?DZpt�¸ÀÅÉÎßõ5FJ\\\\a}œË»×ôÿ,1Mu}‚†‹œ®¼ĞÒëü 5KO\\\ou†™°°°ÌÜêê%9LQWm|u‘¡¯ÌÌèèõ5'$5:VÜVÜdÜsÜxÜ~Ü(¨Ekؙؙî™õ™ü™
‘ šš-š/š6š<šLšWšašlšƒš†šˆššš¡š±š»šÅšÌš×šëšóšóš › › ››)(&,±/±/¿/Æ/Ğ/Ö/Ü/*0_gŞFŞFôFGGG G'G+  ßÖÖø    6 < < < I K V ` g s ~ „ � • ¦ ¦ ± » » Í Ó ã é î õ õ   + > D G M M O U [ ] ] ] n x } } ’ œ œ ° ¹ ¿ Å Û à ç ú ş ş ! !!!#!*!3!E!E!j!n!t!z!‰!œ!¢!¦!¬!²!¸!¸!º!¾!Ä!Ê!Ğ!Õ!Õ!Õ!Õ!"""("5"9"A"V"v"v"|""ƒ"‰"‰"›"¬"Á"Õ"İ"î"ò"##␍#&#(#.#;#=#I#g#m#x#›#¦#¬#²#¸#Á#Ç#Ü#ê#ò#ö#$ $$*$,$2$?$A$M$k$q$w$}$†$Œ$©$œ$Ã$Ì$Ò$Ò$ç$ì$ì$ó$ú$ %%%%+%-%G%I%c%i%q%u%|%Ÿ%¥%«%·%Î%Õ%Û%æ%ë%ë%ò%ö%ı% &␍&&&"&-&3&?&D&J&O&W&\&k&†&–&£&²&Î&Ğ&ì&ì&ó&'␍''#'('.'3'3':'>'E'S'U']'a'e'o'{'‚'†'�'–'�'­'»'À'Ì'Ì'Ô'Ô'÷'÷'( ((((((( (!(!(D(J(P(W(m(o(o(o(z(z(z((¨),4+t�Ä�ĨĬÄÄÄÌÄÔÄŞÄâÄéÄïÄÅ ÅÅÅÅ)Å1Å<ÅGÅIÅ_ÅfÅmÅxŃŅÅ�Å›Å�ũŲŲÅÈÅÒÅéÅïÅõÅÆ ÆÆ'Æ-Æ-Æ5Æ9ÆDÆIÆ[ÆfÆjÆxÆzÆ~Æ�Æ�Æ�Æ�Æ�ƣƵƻÆ)Ç-Ô@vàvàŒà“à–àºàºà×àêàıàááá3áAáTágáoáoáqáqáqá„á†á†á†á�á á³á³á³áÆáÑáäáúáÿáâ
‘ â â2â9â9â<âaâ.LAPq$q$$�$œ$·$¼$Ü$Ş$ù$%%%#%J%/P~�¸‡¸‡Æ‡Ó‡á‡ó‡ş‡ ˆˆ'ˆ9ˆDˆRˆXˆ^ˆ04
‘ Á5Á5Ï5Û5ì5ş56661|¼W..PWfq—— ¢¢©Ğ×׿õ
‘ !(8>\gi‚ˆ“£µ¾ÉÎÔÛ#2IIX^ry€…�–�ÄÍÔÙäğÿ ,>>U\dt†Œ••¤ª¾Ç׿ø  $ , @ a x | ˆ Ÿ » Í Ó Ş ê ú 
‘‘‘"‘=‘C‘N‘S‘S‘f‘|‘‚‘�‘�‘�‘¢‘őˑ֑֑è‘ñ‘’’’)’)’.’.’A’W’]’k’z’’’’’¨’®’¼’Ë’Ğ’Ğ’æ’ì’ “!“!“K“Q“V“b“k“z“z“““•“›“¸“ГГú“””””)”)”.”.”D”J”g”””©”¯”´”À”ɔؔؔݔݔó”ù”•.•.•X•^•`•l•u•€•€•€•€•…•“•œ•­•¯•Á•ΕΕΕŞ•î•ó•–#–$–)–>–[–k–�–Ÿ–¥–¥–¥–ª–¯–Ä–×–—%—+—-—2—C—R—„—Œ—’—”—™— — —©—»—Η×—æ—æ—ë—ğ—ÿ—˜˜˜˜)˜)˜J˜Q˜W˜_˜j˜p˜€˜†˜�˜™˜Ÿ˜Ÿ˜¤˜©˜°˜·˜¾˜ŘΘݘݘݘâ˜â˜â˜ô˜ù˜ù˜ ™™™&™,™,™,™1™1™<™M™P™\™e™q™x™~™ƒ™ƒ™�™Ÿ™¢™®™·™ÙʙЙՙՙՙՙڙߙߙæ™ê™ê™ö™ÿ™šš␍šš!š(š.š=šHšSšYšbšfšfšrš{š~š~š‰š‹š�š¤šªš²š½šÈšΚØšÛšßšßšçšîšñšóšşš› ›››››3›:›E›P›S›Y›^›^›e›i›i›u›~›�›�›Œ›�› ›§›­›¼›Ç›Ò›Ø›á›å›å›ñ›ú›ı›ı›œ
œœ#œ)œ1œ<œGœMœWœZœ^œ^œfœmœpœrœ}œ�œŠœ�œ�œ˜œšœ²œ¹œÄœÏœÒœØœİœİœïœóœóœÿœ� � ���*�1�7�I�T�_�e�j�j�u�z�z�…�Š�Š�•�˜�œ�£�¨�­�²�²�Æ�Ë�Ë�Ø�Ü�í�õ�ù�␍����%�1�9�?�O�S�d�v���…�…�’�š�¢�¨�¨�¨�¨�¨�ª�ª�¸�¿�Ì�Ø�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�æ�è�è�ÿ�ŸŸŸ4ŸBŸZŸ\ŸhŸuŸuŸ˜Ÿ¥Ÿ°Ÿ¹ŸŸÍŸÔŸÔŸŞŸŞŸáŸóŸ   L¢x¿Ù 4 444!4*464B4W4W4ƒ4‡4Œ4˜4«4µ4¸4Ã4Æ4Î4Ø4°›Ã^‹^‹t‹{‹Œ‹‘‹¦‹“‹²‹¸‹¸‹Ä‹Ü‹É‹è‹ë‹í‹û‹ŒŒŒ!Œ$Œ$Œ0ŒEŒ2ŒQŒWŒWŒjŒ}Œ�Œ£Œ¶ŒÀŒ„�şvşvw.w4w;wBwDwGwNwUwUwqwuw{w{w“w§w¸w¸wÀwäwx%x*xKxPx\xgxlxyx|x³xÄxÉxÏxÑx×xÚxëxğxóxûxy y?yVyiynyry”y§y¬yÃyÖyÛyßyzz<zOzTzezjzmzozuz{zŒz‘z—zŸzŸz©z²zÉzÜzázåz{"{B{U{Z{u{•{¬{¿{Ä{È{ê{ı{ı{|||&|>|@|@|@|N|f|h|h|v|�|�| | |©|¶|Ì|ì|}␍}}*}.}.}.}5};}U}\}f}~}€}†} }§}±}¿}Ê}Ê}ä}H‰—`‚`‚w‚�‚�‚¤‚»‚Ö‚è‚ì‚/ƒLíü.�.�B�N�d�P�p�r�…�˜�£�®��`ÊŞ•Ş•ô•–#–-–<–U–Y–_–r–�–‘–‘––°–‘–á–ë–4IR�Ò�Ò—Ò—ÒšÒ¨Ò¶Ò¹Ò¾Òä;¦ò¦òÎòÑòïòóóó2ó8ó=ó=óXó^ócócólózó†ó�ó“ó˜óÛóåóìóòóôóôóô␍ô␍ô␍ôôô.ô=ôOôTôTôTô[ôbôiô~ô…ô¡ô¡ô³ôĞL¼¡¡2¡=¡H¡Q¡Y¡\¡c¡g¡p¡�¡…¡‹¡™¡¶¡Ã¡Ò¡×¡ã¡è¡ï¡û¡¢¢␍¢¢¢&¢7¢5¢-¢E¢N¢T¢T¢b¢e¢y¢‚¢‹¢’¢–¢›¢²¢Ê¢Ó¢á¢ı¢ £ £!£2£2£9£U£a£i£|£ƒ£—£ £§£«£¶£»£Â£ß£ ¤¤¤¤$¤0¤4¤I¤K¤\¤f¤q¤{¤Š¤™¤µ¤µ¤¸¤À¤Å¤G¥Xs…~G~G›G¬G¹GÃGÚG÷GHH$H2H8H;HGHŒ ğ^ğ^_!_!_/_/_/_/_8_8_?_Y_j_r_r_}_}_‹_›_›_©_¯_¯_Ç_Ç_Í_ó_ (kq‡‡‡‡*‡1‡7‡ @Ua~å~åŒå”å›åºåÇåÇåÊåÌåÒå!$/4şÛşÛ ÜÜÜ$Ü"$).ÖÛÖÛãÛñÛöÛüÛ#$#(¦Û¦ÛµÛÄÛÉÛÏÛ$8ìv  %;CMejz�˜¢º¿Ïßõı + 3 = M R h r | † � š ¤ ® ¸ Â Ì Ö à ê
  ( 2 < F P f p z � š ¤ ® ¸ Â Ì Ö à ê ô ş !!!&!0!:!D!N!X!b!l!v!€!Š!”!�!¨!²!¼!Ì!%¨D`˜`˜v˜}˜„˜’˜£˜µ˜·˜¾˜Ä˜Ô˜ß˜é˜ô˜ ™™™"™(™8™B™L™S™^™s™{™{™‘™‘™‘™¥™&Ğ1,3:EMffz““�¢­Õ´á÷ $6^uz‚†‹²ÈÌÌÜø%BBalrˆ™�°Øïôü)?C_‡�”˜�®ÄÒæë++++0LŒk˜µÀÆÜíò6>CGL]o}‘“¬½ÁÁÓû #%Lbfssss†Œ–�°ÇÇãó'5L_dj€�ˆ¤´»Éçß 555B{€‹‘œ»ÒÂŞô04Dc�›¸×âèş*@D`ˆ�•™�¯ÅÓçì,,,,1Ml›‹§ÄÏÕëüEMRV[l~Œ ¢»ÌĞĞï ,,,?EOVi€€€œ¬ººĞàõî !'=LEaqœœ¸¸Åååå'$5:&Ü&Ü4ÜCÜHÜNÜ(¨Ek¨™¨™¾™Å™Ì™Ú™ë™ı™ÿ™š šš'š1š<šSšVšXšjšqš�š‹š•šœš§š»šÃšÃšÙšÙšÙšîš)(&,±/±/¿/Æ/Ğ/Ö/Ü/*0_g®F®FÄF×FæFìFïF÷F+  ß¦¦ÈĞÖãê      & 0 7 C N T ^ e v v � ‹ ‹ � £ ³ ¹ ¾ Å Å æ ì û       % + - - - > H M M b l l € ‰ � • « ° · Ê Î Î Ö Ü â ì ó ú !!!:!>!D!J!Y!l!r!v!|!‚!ˆ!ˆ!Š!�!”!š! !¥!¥!¥!¥!Ğ!á!á!ø!" ""&"F"F"L"O"S"Y"Y"k"|"‘"¥"­"¾"Â"Ó"×"İ"ö"ø"ş" #␍##7#=#H#k#v#|#‚#ˆ#‘#—#¬#º#Â#Æ#×#Û#á#ú#ü#$$$$;$A$G$M$V$\$y$l$“$œ$¢$¢$·$¼$¼$Ã$Ê$Ü$á$á$á$û$ı$%%3%9%A%E%L%o%u%{%‡%�%¥%«%¶%»%»%Â%Æ%Í%Û%İ%å%ê%ò%ı%&&&& &'&,&;&V&f&s&‚&�& &¼&¼&Ã&Ø&İ&æ&ó&ø&ş&''
'''#'%'-'1'5'?'K'R'V'^'f'n'}'‹'�'œ'œ'¤'¤'Ç'Ç'Õ'Û'à'ä'é'é'é'é'ï'ñ'ñ'(( ('(=(?(?(?(J(J(J(O(x),4+t^Ä^ÄxÄ|ĔĜĤĮIJĹĿÄÓÄÛÄàÄãÄîÄùÄÅ ÅÅÅ/Å6Å=ÅHÅSÅUÅ`ÅkÅmÅyłłŘŢŹſÅÅÅÖÅÜÅåÅ÷ÅıÅıÅÆ ÆÆÆ+Æ6Æ:ÆHÆJÆNÆ]Æ]Æ]ÆnÆnÆsÆ…Æ‹ÆùÆ-Ô@FàFà\àcàfàŠàŠà§àºàÍàààåàåàáá$á7á?á?áAáAáAáTáVáVáVá]ápáƒáƒáƒá–á¡á´áÊáÏáÓáÚáïáâ â â â1â.LAPq$q$$�$œ$·$¼$Ü$Ş$ù$%%%#%J%/P~�ˆ‡ˆ‡–‡£‡±‡Ã‡Î‡Ü‡é‡÷‡ ˆˆ"ˆ(ˆ.ˆ04
Á5Á5Ï5Û5ì5ş56661|¼Wşş '6Aggprry §§ÅÚååñø,79RXcs…�™�¤«ĞÕãììó(.BIPU`fn”�¤©´ÀÏãèğü%,4DV\eetz�—§ÈÑáôü 1 H L X o ‹ � £ ® º Ê Ú ß è è ú ş 
! 
= 
O 
U *
` .
l :
| Q
Œ m
� 
¤ …
¤ �
© œ
« ¬
« ¼
° Î
° Ô
¿ Ô
Å Ù
Ë Û
Ë Û
Ï à
H␍2�ÄäÖÖ*Ö6Ö:Ö>ÖEÖLÖ[ÖfÖlÖqÖsÖÖ†Ö�Ö”ÖšÖ�Ö�Ö­Ö´Ö¼ÖÂÖÈÖÊÖÊÖÖÖ38 é.é.÷.ı. //%///6/</4@}‰ÆæÆæÔæßæææçççççç5ğh ,?GNU[]dknn€€“�ºâêóû'7INh€„„‰µÊæ ',=O_qs�¥©©Åíõş 2BTYs‹�¢¢¢º§ÚÇçóù).C_‡�˜ ¥ÈØêì"">fnw„•«»ÍÒì @`lrŠ¢¢¢®´¿ÊÜì1HH\xxx™©··ÀËÙô à
"9HA^oŠŠ£6D}Šnn~’›¡³³·ºÂ7\Ob††8†G†P†Y†]†a†m†r†w†w†ˆ†Œ†“†«†®†º†80ıîŞîŞ÷ŞüŞß ßßß9Do|&:CI[[_bj:°ÄìÆŒÆŒÜŒãŒôŒùŒ�ûŒ� � �,�D�1�P�S�U�c�h�}�j�‰�Œ�Œ�˜�­�š�¹�¿�¿�Ò�å�ø� ��(�;<‹–ÆÆÖçğöú<\!´HHHHSHˆHyH`H�H½HÂHÂHÆHĞHÜH÷HşH III0ILI^IkIƒI—IœI£IÈIÏIØIÚIßIóIJ"J/JGJdJ]JyJ}J}JˆJ�J¡J¤J¦J¼J«JÈJàJâJúJ KKK'KK3K3K3KEKEKSK]K…K~KšKšKŸK£K¿KËKæKLLL"LAL6LMLOLaLuL†LL•L™L¯LÎLÃLÚLÜLîLøL MM M6M@MBMVM`M`MvMzMzMzM…MŒM M¸MºMÒMæMıMNNN=NSNSNSNxNxNŠN=”)öèöèşèéé é!é1é<éNéYédésé„é‹é¤é¨éµéµé¿éÆéÙéâéğéê ê%êBê>d(=H…H…T…h…k……‡…‹…•…Ÿ…§…ª…°…?$pµEE$E'E+E8EAELEXE`EjE’E’E�E E E¬E±E±E½EÂEÂEÎEÓEÓEßEäEäEğEõEõEFFFFFFFFF3FAFUFeFeFgFgFsFyF~F~F„F�F�F›F§F´FÉFÑF×F×FèFèFñFôF[G@è wN¢N¢k¢s¢v¢„¢’¢§¢°¢È¢Ş¢ğ¢û¢ ££"£%£0£9£E£X£‰£~£d£™£­£¾£Ê£Ø£ö£¤,¤=¤?¤`¤F¤{¤{¤~¤ƒ¤†¤†¤�¤¤¤«¤¸¤½¤̤Ù¤ì¤ì¤¥¥1¥1¥I¥N¥N¥^¥f¥v¥€¥�¥š¥ª¥¶¥»¥»¥Ë¥Ó¥ã¥í¥ı¥¦¦#¦(¦(¦(¦J¦X¦b¦g¦t¦‰¦‰¦�¦˜¦§¦¬¦²¦·¦·¦¼¦ƦÕ¦Ú¦à¦å¦å¦ë¦ñ¦ö¦ö¦§§$§1§=§P§X§^§g§~§’§£§°§µ§ͧà§÷§¨ ¨ ¨'¨-¨6¨?¨?¨D¨D¨D¨D¨D¨P¨P¨P¨Y¨r¨‡¨�¨ª¨»¨Ȩʨިã¨ã¨ã¨î¨ü¨©©©©©3©?©Q©]©c©r©v©©ˆ©¥©±©·©½©Ğ©Ø©à©␍ªª+ª-ª;ª;ª@ª@ªGªUªZªmªyª…ª‹ª�ª˜ª�ª�ª�ª�ª�ªµªºªºªºªºªºª˪˪˪˪˪˪˪˪˪˪Ôªíª« ï
«%«6«C«E«Y«e«j«j«j«s«�«™«�«À«Ì«Ì«Ñ«Ñ«Ñ«Ñ«Ñ«Ñ«Ñ«Ñ«æ«ë«ë«ë«ü«¬ ¬ ¬¬)¬A¬S¬t¬”¬Ÿ¬°¬µ¬µ¬µ¬¾¬à¬é¬ú¬ş¬­&­.­6­A­k­t­x­�­ ­ ­ ­ ­ ­­û­®®®®®%®*®*®*®*®9®M®k®v®{®�®†®†®™®­®Ó®Ş®æ®ì®ì®ñ®ñ®¯¯2¯=¯B¯H¯M¯M¯`¯t¯š¯¥¯­¯³¯³¯¸¯¸¯¸¯Á¯Ú¯ï¯÷¯°#°0°2°A°C°C°C°C°C°W°W°W°W°W°W°W°W°W°W°W°W°W°W°W°W°f°u°€°‚°‚°‹°�°�°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°¡°£°£°º°°ΰΰÒ°×°ç°±±&±2±H±b±e±o±{±¡±Á±á±²²²H² ²c²c²f²v²~²™²ª²­²DzÕ²á²ù²ù²$³'³6³J³k³|³˜³„³´³Ƴä³´´ õ
´ÿ³ğ³%´%´%´(´-´0´J´X´†´¨´¨´Ó´Ö´å´ù´µ+µGµ3µcµcµ�µ´µ²µ§µœµ�µµµµŵʵʵѵáµc¹A°«Ó6¿6¿L¿P¿[¿b¿m¿�¿�¿Œ¿�¿¤¿±¿½¿Ê¿Ò¿ã¿ã¿ì¿ñ¿ù¿ ÀÀ&À1ÀDÀDÀWÀWÀmÀ™À™À­À¯À¯À¹ÀÁÀÁÀËÀÓÀÓÀÓÀäÀäÀäÀèÀğÀöÀûÀûÀÿÀÁ ÁÁÁÁ"Á7ÁGÁQÁdÁiÁqÁqÁvÁvÁ}Á‰Á�Á®Á¸ÁÀÁÆÁÙÁŞÁæÁìÁìÁñÁøÁÂ+Â6ÂEÂOÂWÂ]ÂoÂuÂzÂzÂzÂzÂzÂzÂzÂzÂz…‘Â�®´¼ÂÏÂÔÂÜÂáÂéÂîÂîÂîÂöÂşÂÃÃÃÃ!Ã(Ã3Ã[ÃfÃnÃ}ÇÙÃ�äééðÃÂÃÊÃİÃåÃíÃÄÄÄÄ,Ä,Ä4ÄHÄPÄWÄ]ÄaÄeÄtÄyąěħįÄÄÄĞÄÕÄáÄìÄñÄñÄñÄÅ,Å1Å9ÅHÅPÅXÅmÅrÅ}ŅŚşşūÅÁÅÍÅÕÅêÅöÅûÅÆÆÆÆÆÆÆÆ"Æ"Æ"Æ"Æ"Æ"Æ"Æ"Æ"Æ"Æ"Æ"Æ-ÆMÆjÆzƀƈƛƠƨưƲƺÆÍÆÓÆÛÆãÆåÆÇ␍ÇÇÇ&Ç+Ç0Ç7ÇBÇjÇuÇ}njǖǯǴǼÇÁÇÁÇÁÇÊÇÓÇÖÇàÇîÇÈÈÈ&È&È&È1È6ÈSÈXÈXÈaÈfÈfÈfÈfÈfÈfÈfÈfÈfÈfÈfÈfÈfÈfÈfÈfÈqÈ}ȉȩȼÈÄÈäÈéÈñÈøÈÉ␍ÉÉÉ%É*É*É2É:ÉVÉ^ÉaÉcÉsÉ}É}É}ÉɒɣɦɩɱɶɶɿÉÄÉÌÉÓÉàÉùÉÊÊÊ'ÊBÊ[ÊcÊpʉÊ�Ê�ʕʕʕʕʕʕʕÊ�ʨʳÊÂÊÇÊÇÊÏÊ×ÊäÊéÊéÊéÊíÊòÊòÊËËËËËË Ë0ËAË]ËpËvË~˓˚ˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˢˤˤ˿ËÉË×Ë×ËÜËçËîË û
ÌÌÌÌÌ&ÌDÌRÌJÎBü|NÎNÎdÎoÎvÎ�ΌΣήεÎÅÎØÎâÎâÎşÎÏ Ï(Ï/Ï2Ï>ÏGÏNÏQÏVÏlÏvψÏ�Ϛϯ϶ϾÏÊÏßÏæÏæÏæÏôÏĞ ĞĞĞ'Ğ*Ğ<ĞAĞFĞVĞYĞ^ĞnĞqĞuĞ~ІИРРРжĞÀĞÒĞØĞäĞùĞÑÑÑ Ñ/Ñ@Ñ@ÑGÑGÑGÑUÑcÑmÑpÑ~шыÑ�ѢѧѷѺѿÑÏÑÒÑÖÑßÑçÑùÑÒÒ␍ÒÒ"Ò"Ò%Ò0ÒNÒ\Ò¥ÒChoÅ×× ×3×:×A×L×_×b×k×r×uׅד×�ש׬×Â×Î×ã×î×ù×ØØØ1Ø=ØTØ\ØeØmØzؘؕØ�أضؼØÄØרİØåØåØóØÙÙ%Ù+Ù3ÙFÙLÙTÙTÙ}ق١٤٤٫ٸټÙÇÙáÙíÙıÙÚ9ÚMÚUÚ_Ú~Ú’Ú’ÚÛD F*F*P*X*]*EÉÇvRvR“R�R±R�RËRÙRÙRéRòRùRıRSSSS0S<SHSNSYS{S{S�S™SŸS¦S«S«S¾SÉSÔSÛSãSğSğSTTTTTTT/T4TGTMTTTiT}T}T‚T‚T’T—T—TœT£T«T²T´T¼TÃTÃTÒTØTåTìTïTUUU(U3U:U<UPU_UdUiUiUiU|U�U�U—U�U³UÇUÇUÌUÌUÔUêUïUV û
VVVV*V<VKV^VbVqVV�VœV¹VÄVÉVØVìVóVúV ÿ
W WW*W,W:WGWWW^WsWzW†W—W®W°W¼WÇWÉWÉWÔWèWõWıWÿWX%X,X<XHXiXpX|XšXšXšX¢X­X±X¹X½XÅXÌXÜXçXYY␍YY!Y)Y.Y.Y=YJYXYcYnY|Y‚YˆY�Y—Y�Y¬Y¹YÁYÍYÛYòYôYıYZ x␍2�Ää>Ö>ÖZÖfÖjÖnÖuÖ|֋ֶ֖֣֜֡֯־ÖÄÖÊÖÎÖÎÖİÖäÖìÖòÖøÖúÖúÖ×38 é.é.÷.ı. //%///6/</4@}‰öæöæççç5çBçBçEçGçMç5ğh 66\ow~…‹�”›��°°ÃÎê#+0AWgy~˜°´´¹åú>FOW\m�¡£½ÕÙÙõ%.6;Lbr„‰£»¿ÒÒÒê×
ZZ4Z:Z@ZFZOZ`Z‡Z�Z™Z¦Z¾ZÅZÑZàZõZõZ[[[ [ [ [ [Û[FD�šîŠîŠ‹‹$‹‹0‹2‹D‹V‹^‹GìˆÿÆXÆXèXòX%Y4YJYnYsYwYYˆY—Y�Y§Y¬YÁYÒYñYùYûYZ"Z1Z8ZDZIZPZXZ^Z`Z|Z�Z—ZƒZ£Z©Z©Z±ZºZÉZèZïZñZ[[[[+[?[C[Q[d[\[|[�[Œ[“[›[¡[£[¿[Ä[Ú[Æ[æ[ì[ì[\␍\&\\2\8\=\Y\^\t\`\€\†\�\•\›\�\¹\¾\Ô\À\à\æ\æ\æ\î\÷\÷\]]]I]]]a]o]‚]z]š]š]¬]HüE€�Ü�Ü­ÜÉÜÎÜïÜ␍İİ:İNİfİmİrݓݱİÀİİİîİŞ Ş Ş␍ŞŞŞ!Ş$Ş.Ş4ŞQŞTŞTŞTŞYŞ_Ş{މޕŞ�޲޺ŞÃŞߪêŞöŞÿŞßß"ß'ß'ß5ßIl¬ÃFCFCTCnC[C�CzC™C®C›CÍCºCÙCçCïCúCüCDDD1D7DJP‡—æñæñúñòò"ò(òRòhòTòòtò—òŸòKŒg†vğvğ¨ğËğËğŞğâğññññ'ñ/ñ7ñLñXñiñnññ“ñ˜ñšñšñšñ³ñËñËñåñLP�­>6>6g6i6w6}6›6ª6¹6È6Ö6á6ä6ô6Mì8//8/;/>/D/I/`/w/�/ /Æ/í/ğ/ 0 020?0R0e0j0r0|0„0„0‹0”0”0Ÿ0Ç0á0ç011151;1T1m1u1€1€1Š1Š1œ1Ú1ï12N$tyVcVc�cjc‹c“cOLu„şÆşÆÇ%Ç6ÇGÇNÇVÇfÇnÇÇ…Ç·ÇPTHY a a²a´a½aÆaÔaÙaâaåaêaøabbbQ¨!Gø_ø_``$`1`=`I`U`a`x`x`‡`’`›`¢`«`Â`Õ`Ú`ì`û`aaa"aBaBaDaWaYasaa‚a™aRxîˆ@l@lYldltl½lÄlØlßlçlïlølmm ÷#)AY^s�·¿ÈĞÕæø6NRRn–�§¯´ÅÛëı48KKKPp�œ¢ºÒÒÒŞäïú 3JaxxŒ¨¨¨ÉÙççğû $3:JLRixq�ŸººÓ6D}Š��®ÂËÑããçêò7\ObH†H†h†w†€†‰†�†‘†�†¢†§†§†¸†¼†Ã†Û†Ş†ê†80ıßß'ß,ß5ß<ß>ßCß9Do|FFVjsy‹‹�’š:°ÄìöŒöŒ ��$�)�>�+�J�P�P�\�t�a�€�ƒ�…�“�˜�­�š�¹�¼�¼�È�İ�Ê�é�ï�ï���(�;�N�X�;<‹–öö &*5<\!´FHFHxHƒH¸H©H�H¾HíHòHòHöHI I'I.I<I>IFI`I|I�I›I³IÇIÌIÓIøIÿIJ
mmm!m(mGm_mhmhm�mÇmĞmòm n)nSn_n�nƒnŠn‘n‘n´nÍnôn␍o4oMoto�o´oÍoôo␍p4p4pCpPpUpUpdpqpvpvp}pˆpšp³pÌpåpçpçpçpîpîpûpqqqq q2qGq�qˆqˆqˆq�q­q»qÙqâqëqøqr r<r<r<rOr]ryr—r—r—r¢r¥rÒrÔrërñrs s␍sss)s+s8s8s\s^sesvss�s�s‘sŸs¡s¯s¯sÏsÏsÏsÏsÜsïst#t0tItQtUt]tatot}tt‡t‹t�t—t¥t³t³tÍtØtîtu u7uBuLuSuluxuu˜u˜uªu¯u±u·uÈuÙuèuïuv v vvv)v+v9v9v9v]v]vzv�vˆv‹v—všv¨v¬vºv¾vÌvĞvĞvévğvõvwww1wQwdwswuw„w†w•wŸwŸw­w¶wÌwÓwøwıw&xVx[xixkxyx‚xœx�x x§x¸xÁxÃxÑxÓxáxãxñxñxyyyyy0y0y0y;yWy|y•yšyšyšy¼yÁyÁyÁyáyæyæyæyz JJ#J@JRJ_JwJ”J�J©J­J­J¸J¿JÑJÔJÖJìJÛJøJKK*K<K?KAKWKFKcKcKcKuKuKƒK�KµK®KÊKÊKÏKÓKïKûKL4L>LBLRLqLfL}LL‘L¥L¶L¯LÅLÉLßLşLóL
z M MM(M<MFMOMfMpMrM†M�M�M¦MªMªMªMµM¼MĞMèMêMNN-N2NDNLNmNƒNƒNƒN¨N¨NºN=”)&é&é.é2é>éOéQéaélé~é‰é”é£é´é»éÔéØéåéåéïéöé êê ê4êPêUêrê>d(=x…x…„…˜…›…¯…·…»…Å…Ï…×…Ú…à…?$pµEE$E'E+E8EAELEXE`EjE’E’E�E E E¬E±E±E½EÂEÂEÎEÓEÓEßEäEäEğEõEõEFFFFFFFFF3FAFUFeFeFgFgFsFyF~F~F„F�F�F›F§F´FÉFÑF×F×FèFèFñFôF[G@è w~¢~¢›¢£¢¦¢´¢¢×¢à¢ø¢£ £+£<£@£R£U£`£i£u£ˆ£¹£®£”£É£İ£î£ú£¤&¤8¤\¤m¤o¤�¤v¤«¤«¤®¤³¤¶¤¶¤½¤Ô¤Û¤è¤í¤ü¤ ¥¥¥0¥4¥a¥a¥y¥~¥~¥�¥–¥¦¥°¥À¥Ê¥Ú¥æ¥ë¥ë¥û¥¦¦¦-¦7¦G¦S¦X¦X¦X¦z¦ˆ¦’¦—¦¤¦¹¦¹¦¾¦Ȧצܦâ¦ç¦ç¦ì¦ö¦§
zzzzzzz$z$z'z,zKzaz†z¢z¶z»z»zÖzãzåzôzız{{{{{?{A{A{I{D{‚{‚{‚{¡{¡{¡{Â{Ç{Ç{Ç{é{î{î{î{||||2|7|7|R|`|b|q|z|”|–|–|›|–|¼|¾|¾|Æ|Á|ÿ|ÿ|ÿ| §§§§§!§&§&§5§H§T§a§m§€§ˆ§�§—§®§§Ó§à§å§ı§¨'¨4¨<¨O¨W¨]¨f¨o¨o¨t¨t¨t¨t¨t¨€¨€¨€¨‰¨¢¨·¨¿¨Ú¨ë¨ø¨ú¨©©©©©,©1©1©8©F©K©c©o©�©�©“©¢©¦©¯©¸©Õ©á©ç©í©ªªª=ªNª[ª]ªkªkªpªpªwª…ªŠª�ª©ªµª»ª¿ªȪͪͪͪͪͪåªêªêªêªêªêªûªûªûªûªûªûªûªûªûªûª««2«:«U«f«s«u«‰«•«š«š«š«£«½«É«Ϋğ«ü«ü«¬¬¬¬¬¬¬¬¬¬¬¬,¬7¬<¬<¬G¬Y¬q¬ƒ¬¤¬ĬϬà¬å¬å¬å¬î¬­­*­.­F­V­^­f­q­›­¤­¨­À­Ğ­Ğ­Ğ­Ğ­Ğ­ò­+®4®8®>®C®L®U®Z®Z®Z®Z®i®}®›®¦®«®±®¶®¶®É®İ®¯¯¯¯¯!¯!¯0¯D¯b¯m¯r¯x¯}¯}¯�¯¤¯ʯÕ¯ݯã¯ã¯è¯è¯è¯ñ¯
} ° °'°B°S°`°b°q°s°s°s°s°s°‡°‡°‡°‡°‡°‡°‡°‡°‡°‡°‡°‡°‡°‡°‡°‡°–°¥°°°²°²°»°½°½°ѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰѰÓ°Ó°ê°ò°þ°þ°±±±2±G±V±b±x±’±•±Ÿ±«±ѱñ±²5²7²J²x²P²“²“²–²¦²®²ɲÚ²ݲ÷²³³)³)³T³W³f³z³›³¬³ȳ´³ä³ö³´G´E´:´/´ ´U´U´U´X´]´`´z´ˆ´¶´Ø´Ø´µµµ)µJµ[µwµcµ“µ“µ±µäµâµ×µ̵½µòµòµòµõµúµúµ2¶>¶“¹A°«Óf¿f¿|¿€¿‹¿’¿�¿±¿±¿¼¿Í¿Ô¿á¿í¿ú¿ÀÀÀÀ!À)À9ÀGÀVÀaÀtÀtÀ‡À‡À�ÀÉÀÉÀÝÀßÀßÀéÀñÀñÀûÀÁÁÁÁÁÁÁ Á&Á+Á+Á/Á7Á;ÁAÁFÁFÁRÁgÁwÁ�Á”Á™Á¡Á¡Á¦Á¦Á­Á¹ÁÎÁÞÁèÁðÁöÁ ÂÂÂÂÂ!Â(Â3Â[ÂfÂu‡Â�Ÿ¥ªªªªªªªªªµÂÁÂÎÂÞÂäÂìÂÿÂà ÃÃÃÃÃÃ&Ã.Ã7Ã?ÃDÃLÃQÃXÃcËÖÞí÷ÃÉÃÎÃÔÃÙÃÙÃàÃòÃúà ÄÄÄ2Ä4Ä?ÄGÄ\Ä\ÄdÄxĀćÄ�đĕĤĩĵÄËÄ×ÄßÄôÄÅÅÅÅ!Å!Å!ÅBÅ\ÅaÅiÅxŀňÅ�ŢŭŵÅÊÅÏÅÏÅÛÅñÅýÅÆÆ&Æ+Æ7ÆBÆGÆGÆGÆGÆGÆGÆRÆRÆRÆRÆRÆRÆRÆRÆRÆRÆRÆRÆ]Æ}ƚƪưƸÆËÆÐÆØÆàÆâÆêÆýÆÇ ÇÇÇ5Ç=ÇFÇNÇVÇ[Ç`ÇgÇrÇšÇ¥Ç­Ç¼ÇÆÇßÇäÇìÇñÇñÇñÇúÇÈÈÈÈ0È2ÈDÈVÈVÈVÈaÈfȃȈȈȑȖȖȖȖȖȖȖȖȖȖȖȖȖȖȖȖȡȭȹÈÙÈìÈôÈÉÉ!É(É5É=ÉFÉNÉUÉZÉZÉbÉjɆɎɑɓɣɭɭɭɯÉÂÉÓÉÖÉÙÉáɿɿÉïÉôÉüÉÊÊ)Ê0Ê5ÊMÊWÊrʋʓʠʹÊÀÊÀÊÅÊÅÊÅÊÅÊÅÊÅÊÅÊÍÊØÊãÊòÊ÷Ê÷ÊÿÊËËËËËË"Ë"Ë2Ë7Ë7Ë7ËCËJËPË`ËqË�ˠ˦ˮËÃËÊËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÒËÔËÔËïËùËÌÌ ÌÌÌ:ÌGÌGÌGÌKÌVÌtÌ‚ÌzÎBü|~Î~ΔΟΦαμÎÓÎÞÎåÎõÎÏÏÏ.ÏHÏOÏXÏ_ÏbÏnÏwÏ~Ï�φϜϦϸϾÏÊÏßÏæÏîÏúÏÐÐÐÐ$Ð2Ð<Ð?ÐMÐWÐZÐlÐqÐvІЉЎОСХЮжÐÈÐÐÐÐÐÐÐæÐðÐÑÑÑ)Ñ0Ñ8ÑJÑPÑ_ÑpÑpÑwÑwÑwÑ…Ñ“Ñ�ѠѮѸѻÑÍÑÒÑ×ÑçÑêÑïÑÿÑÒÒÒÒ)Ò1Ò1Ò=ÒJÒRÒRÒUÒ`Ò~ÒŒÒÕÒChoÅ6×6×P×c×j×q×|×�×’×›×¢×¥×µ×Ã×Î×Ù×Ü×ò×þרØ)Ø4Ø?ØJØaØm؄،ؕØ�تØÅØÈØÎØÓØæØìØôØÙ ÙÙÙ#Ù5ÙBÙUÙ[ÙcÙvÙ|لل٭ٲÙÑÙÔÙÔÙÛÙèÙìÙ÷ÙÚÚ-ÚMÚiÚ}Ú…Ú�Ú®ÚÂÚÂÚ8ÛD v*v*€*ˆ*�*EÉǦR¦RÃRÎRáRÎRûR S SS"S)S-S6S6S>SBS`SlSxS~S‰S«S«S¾SÉSÏSÖSÛSÛSîSùST TT T T2T7T7TGTLTLTLT_TdTwT}T„T™T­T­T²T²TÂTÇTÇTÌTÓTÛTâTäTìTóTóTUUUU UAUAUIUXUcUjUlU€U�U”U™U™U™U¬U±UÀUÇUÎUãU÷U÷UüUüUVV V3V:V?V?VKVZVlV{VŽV’V¡V¯V½VÌVéVôVùVWW#W*W:W<WJWZW\WjWwW‡WŽW£WªW¶WÇWÞWàWìW÷WùWùWXX%X-X/XCXUX\XlXxX™X X¬XÊXÊXÊXÒXÝXáXéXíXLine truncated
}4}4}^}v}�}™}¯}¿}Ô}ì}~~~-~G~^~e~]‚S|.ŞâŞâãã!ã6ãTã_ã}ã}ã}ãŠã¢ã¤ã¤ã¤ã±ãÉãËãËãÙãæãşãşãä#äTçeÖÖÖÖğÖùÖ×× ×'×/×7×?×E×R×R×o×t×t×z××ׅ׊׊×�וו׭×Àׯ×Ë×Ë×Ô×ô×ô×ô×û×ı×ı×ØØØ Ø ØØØØØØ"Ø$Ø$Ø*Ø*Ø1Ø1Ø9Ø?ØEØMØMØMØMØYØaØiØqØyØ�؉Ø�اضØÀØÃØÃØÍØÓØÙØÙØİØåØìØğØøØÙÙÙÙÙ%Ù)Ù/Ù:Ù@ÙMÙYÙ_ÙgÙkÙrÙzقنٌٔٛ٣٫ٯٵÙÀÙÅÙÛÙìÙñÙôÙšÚUL˜§0ƒ0ƒIƒKƒRƒhƒxƒ~ƒ–ƒ®ƒ±ƒÃƒ „VÔ*[FêFêZêoê~ê‚ê�ê–ê¥ê¥ê´ê¿êÊêÕêÜêìêëëë!ë%ë5ë5ëKëMëWëxëƒë…ë�ë¢ë°ëµëµë¼ëÈëĞëãëMìW\X«>?>?V?]?o?¢?­?¹?Ç?»?è?è?ô?ü? @E@G@t@|@|@©@Á@®@Ü@Í@è@î@ı@AA A'A'ABAGAPA[AcAnA–A�AuAµA¢AÁAÖAÃABîAâAB)BBDBIBcBPB‚BoB�B£B�BÂB¯BÎBÎBéBøBñB C C C8C8CDCX$nsccAc*cKcScYl  GG,GFG3GeGRGqG†GsG¥G’G±G¿GÇGÒGÔGßGêGêG HHZ,NÑNÑWÑ]ÑeÑtушÑ[TÒn n � ¡ ¬ µ × á ï  ¡¡¡ ¡ ¡'¡:¡8¡H¡H¡S¡]¡c¡i¡l¡z¡�¡™¡ ¡£¡µ¡º¡Å¡Ğ¡ê¡¢¢6¢X¢]¢c¢i¢t¢�¢Ÿ¢‡¢¨¢¬¢²¢º¢¿¢ߢÇ¢è¢ì¢ò¢ú¢ÿ¢ÿ¢ ££-££9£=£C£K£P£P£q£u£{£ƒ£’£­£™£¹£½£ãˣУУñ£õ£û£¤¤¤¤3¤¤<¤@¤F¤N¤n¤V¤w¤{¤�¤‰¤‰¤–¤´¤œ¤½¤Á¤ǤϤï¤פø¤ü¤¥ \ö[\\\8\=\V\B\b\h\m\‰\�\¤\�\°\¶\½\Å\Ë\Í\é\î\]ğ\]]]]]']']1]1]I]y]�]‘]Ÿ]²]ª]Ê]Ê]Ü]HüE€¾Ü¾ÜİÜùÜşÜ İ=İLİjİ~İ–İ�İ¢İÃİáİğİ␍ŞŞ5Ş9Ş9Ş=ŞBŞGŞQŞTŞ^ŞdŞ�ބބބމŞ�ޫ޹ŞÅŞÎŞâŞêŞóŞßß&ß/ßCßCßRßWßWßeßIl¬ÃvCvC„C�C‹C½CªCÉCŞCËCıCêC DD D*D,D7DBDBDaDgDJP‡—òò*ò7òFòRòXò‚ò˜ò„ò¯ò¤òÇòÏòKŒg†¦ğ¦ğØğûğûğññ1ñEñJñJñWñ_ñgñ|ñˆñ™ñ�ñ¯ñÃñÈñÊñÊñÊñãñûñûñòLP�­n6n6—6™6§6­6Ë6Ú6é6ø6777$7Mì8>/>/h/k/n/t/y/�/§/¾/Ğ/ö/0 090P0b0o0‚0•0š0¢0¬0´0´0»0Ä0Ä0Ï0÷01101I1K1e1k1„1�1¥1°1°1º1º1Ì1
¥ 2 212N$ty†c†c±cšc»cÃcOLu„.Ç.Ç@ÇUÇfÇwÇ~džǖÇ�ǯǵÇçÇPTHYĞaĞaâaäaíaöab bbbb(b2b5b?bQ¨!G(`(`8`A`T`a`m`y`…`‘`¨`¨`·`Â`Ë`Ò`Û`ò`a
¥ aa+a7aIaIaRararata‡a‰a£a¯a²aÉaRxîˆplpl‰l”l¤lílôlmmm m(m0m8m:mBmJmQmXmwm�m˜m˜mÍm÷mn"n<nYnƒn�n±n³nºnÁnÁnänın$o=odo}o¤o½oäoıo$p=pdpdpsp€p…p…p”p¡p¦p¦p­p¸pÊpãpüpqqqqqq+q0q0q0qAqOqbqwq±q¸q¸q¸qÀqİqëq rrr(r6rPrlrlrlrr�r©rÇrÇrÇrÒrÕrsss!s2s;s=sJsLsYs[shshsŒs�s•s¦s¯s±s¿sÁsÏsÑsßsßsÿsÿsÿsÿs t t2tSt`tyt�t…t�t‘tŸt­t¯t·t»t¿tÇtÕtãtãtıtuu0uPuguru|uƒuœu¨u¯uÈuÈuÚußuáuçuøu vv v0v9v;vIvKvYv[viviviv�v�vªv±v¸v»vÇvÊvØvÜvêvîvüvwww w%w3wDwKwaw�w”w£w¥w´w¶wÅwÏwÏwİwæwüwx(x-xVx†x‹x™x›x©x²xÌxÎxĞx×xèxñxóxyyyy!y!yAyAyAyAyAy`y`y`yky‡y¬yÅyÊyÊyÊyìyñyñyñyzzzz5z:z:zAzCzCzKzMzMzTzTzWz\z{z‘z¶zÒzæzëzëz{{{${-{G{I{I{N{I{o{q{q{y{t{²{²{²{Ñ{Ñ{Ñ{ò{÷{÷{÷{||||>|C|C|C|b|g|g|‚|�|’|¡|ª|Ä|Æ|Æ|Ë|Æ|ì|î|î|ö|ñ|/}/}/}:}:}d}d}�}¦}¾}É}ß}ï}~~0~J~L~]~w~�~•~�‚S|.ãã2ãFãQãfã„ã�ã­ã­ã­ãºãÒãÔãÔãÔãáãùãûãûã ää.ä.ä?äSäTçe×× ×)×I×I×O×W×_×g×o×uׂׂןפפתׯׯ׵׺׺×À×Å×Å×İ×ğ×ö×û×ûר$Ø$Ø$Ø+Ø-Ø-Ø4Ø6Ø6Ø<Ø<ØCØEØEØKØKØRØTØTØZØZØaØaØiØoØuØ}Ø}Ø}Ø}؉ؙؑءةرعؿØ×ØæØğØóØóØıØÙ Ù Ù␍ÙÙÙ Ù(Ù0Ù6Ù>ÙEÙMÙUÙYÙ_ÙjÙpÙ}Ù‰Ù�ٗٛ٢٪ٲٶټÙÄÙËÙÓÙÛÙßÙåÙğÙõÙ ÚÚ!Ú$ÚÊÚUL˜§`ƒ`ƒyƒ{ƒ‚ƒ˜ƒ¨ƒ®ƒÆƒŞƒáƒóƒ;„VÔ*[vêvêŠêŸê®ê²êÀêÆêÕêÕêäêïêúêë ëë3ëFëLëQëUëeëeë{ë}ë‡ë¨ë³ëµëÎëÒëàëåëåëìëøëìì}ìW\X«n?n?†?�?Ÿ?Ò?İ?é?÷?ë?@@$@,@;@u@w@¤@¬@¬@Ù@ñ@Ş@ Aı@AA-ABADAOAWAWArAwA€A‹A“A�AÆA±A¥AåAÒAñABóA3BBB?BYBGBtByB“B€B²BŸB¾BÓBÀBòBßBşBşBC(C!C<C<C<ChChCtCX$nsFcFcqcZc{cƒcYl  NGNG\GvGcG•G‚G¡G¶G£GÕGÂGáGïG÷GHHHHH9H?HZ,~Ñ~чÑ�ѕѤѳѸÑ[TÒ� � ¿ Ñ Ü å ¡¡ ¡9¡F¡F¡P¡P¡W¡j¡h¡x¡x¡ƒ¡�¡“¡™¡œ¡ª¡±¡É¡Ğ¡Ó¡å¡ê¡õ¡¢¢5¢I¢f¢ˆ¢�¢“¢™¢¤¢±¢Ï¢·¢Ø¢Ü¢â¢ê¢ï¢£÷¢££"£*£/£/£<£B£]£I£i£m£s£{£€£€£¡£¥£«£³££İ£É£é£í£ó£û£¤¤!¤%¤+¤3¤3¤8¤E¤c¤K¤l¤p¤v¤~¤�¤†¤§¤«¤±¤¹¤¹¤Ƥä¤̤í¤ñ¤÷¤ÿ¤ ¥¥(¥,¥2¥:¥:¥:¥P¥P¥P¥P¥[¥e¥n¥�¥š¥¨¥­¥»¥Ï¥Ô¥Ô¥ߥç¥ï¥ø¥¦¦%¦4¦C¦]¦b¦b¦m¦u¦‚¦�¦š¦¥¦¿¦Ѧã¦î¦ó¦ó¦ş¦§!§)§5§C§H§V§j§j§r§j§Ч�§�§�§£§£§²§·§·§ȧͧͧާã§ã§ö§¨
¥ ¥ ¥ ¥ ¥+¥5¥>¥^¥j¥x¥}¥‹¥Ÿ¥¤¥¤¥¯¥·¥¿¥È¥Ô¥è¥õ¥¦¦-¦2¦2¦=¦E¦R¦]¦j¦u¦�¦¡¦³¦¾¦ææΦä¦ñ¦ù¦§§§&§:§:§B§:§Z§_§_§n§s§s§‚§‡§‡§˜§�§�§®§³§³§ƧÕ§Ú§Ú§í§ü§¨¨¨#¨(¨6¨(¨J¨O¨]¨O¨q¨v¨„¨v¨˜¨�¨�¨º¨¿¨á¨æ¨ô¨æ¨©␍©␍©*©/©Q©V©d©V©x©}©}©š©Ÿ©Á©Æ©Ô©Æ©è©í©í© ¨
ªª1ª6ªDª6ªXª]ª]ªxª}ª}ª˜ª�ª�ª¸ª½ª½ªتݪݪøªıªıª«««8«=«=«X«]«]«n«s«s«„«‰«‰«•« «µ«º«º«Æ«ß«ä«¬¬¬¬.¬8¬M¬X¬]¬n¬y¬�¬†¬†¬Ь�¬•¬Ÿ¬©¬©¬¼¬Á¬Á¬Á¬ŬÛ¬ä¬ä¬­ ­ ­­(­1­K­X­c­n­y­‹­—­ ­¥­¥­¥­­Ó­Ş­è­ó­ø­® ®®®®#®,®7®G®_®w®‹®�®�®›®®®¸®îä®ğ®ş®¯¯¯¯¯*¯5¯=¯B¯M¯Z¯e¯¯‘¯£¯®¯³¯¾¯Ư˯Ö¯ã¯î¯°°,°,°,°,°1°6°6°B°S°S°y°{°—°—°¡°µ°¿°Á°ͰÕ°ò°±␍±±;±L±]±n±y±‘±¡±¦±¦±±±±±¾±ɱααÖ±á±æ±æ±î± ²ö±$²)²)²1²O²9²g²l²€²l²˜²�²�²ª²¯²¯²·²¼²¼²ȲÙ²ë²ğ²ğ²³ğ²³!³!³)³.³.³A³F³F³Y³^³^³x³ˆ³�³�³§³·³¼³¼³Ö³æ³ë³ë³´´´1´´I´N´N´Y´^´š´ˆ´v´^´²´·´ó´á´Ï´·´ µµµ µ/µ4µ4µCµSµXµXµgµuµzµ¢µ�µzµºµ¿µçµÕµ¿µÿµ,DIIfP� ¥¥À¬ê¶ú¶ÿ¶ÿ¶ ····!·!·4·D·I·I·\·l·q·q·„·”·™·™·¬·¼·Á·Á·É·ηηÖ·Û·Û·ã·è·è·ğ·õ·õ·¸␍¸␍¸ ¸%¸s¸a¸O¸=¸%¸€¸…¸Ó¸Á¸¯¸�¸…¸à¸å¸å¸ô¸¹¹¹%¹@¹E¹E¹V¹d¹i¹i¹q¹v¹v¹~¹ƒ¹ƒ¹‹¹�¹�¹ȹ¹¤¹—¹ç¹ººº?º-ººº^ºyº~º°º�º–º~ºȺͺÿºíºåºͺ»»6» »»N»S»p»Z»S»ˆ»�»�»™»²»»Ó»Ó»ù»û»¼¼¼3¼@¼q¼³¼¢¼�¼¿¼ǼǼǼÓ¼ؼؼë¼ö¼½½½½ ½ ½9½>½>½F½K½_½K½k½v½{½�½{½›½¦½«½«½½ĽɽɽԽ߽ä½ä½õ½ú½ú½ ¾¾¾*¾5¾:¾B¾:¾N¾S¾g¾S¾s¾x¾€¾x¾Œ¾‘¾¥¾‘¾±¾¾¾ʾ¾Ö¾Ö¾Ö¾Û¾ç¾Û¾ú¾ÿ¾ÿ¾ ¿ÿ¾¿#¿#¿/¿#¿B¿G¿G¿S¿G¿f¿k¿¿k¿‹¿—¿¢¿­¿²¿Æ¿²¿Ò¿Ş¿é¿ô¿ù¿␍Àù¿!ÀÀ*À/À/À7À<À<ÀEÀJÀJÀSÀXÀXÀaÀfÀfÀqÀvÀvÀ�À†À†À‘À–À–À¡À¦À¦À±À¶À¶ÀÁÀÆÀÆÀÑÀÖÀêÀÖÀöÀÁ ÁÁÁÁ&Á+Á+Á5Á:Á:ÁDÁIÁIÁSÁXÁXÁ`ÁeÁeÁrÁwÁwÁ„Á‰Á‰Á‰Á‰Á‰Á‘Á–Á–Á�Á£Á£Á«Á°Á°Á¸Á½Á½ÁÅÁÊÁŞÁÊÁêÁûÁÂÂÂÂ=ÂBÂXÂcÂ|Âhˆ“Â�££µÂÀÂàÂåÂûÂà à Ã+Ã6ÃAÃFÃFÃXÃcÃÈÃ�éÃÂîÃÎÃÙÃäÃéÃéÃÄûÃÄ;Ä@ÄVÄaÄfÄ�ÄmÄ¡Ä�Ä­ÄÃįÄãÄÏÄïÄúÄÿÄÿÄ%ÅÅ1ÅQÅVÅlÅwÅ|ŗŃŷţÅÃÅÙÅÅÅùÅåÅÆÆÆÆ;Æ'ÆGÆgÆlÆ‚Æ�Æ’Æ­Æ™ÆÍƹÆÙÆïÆÛÆÇûÆÇ&Ç+Ç+Ç:Ç?Ç?ÇNÇSÇSÇSÇYÇ^Ç^Ç^ÇhÇjÇjÇtÇ�Ç¡Ç£Ç£Ç­Ç­Ç­Ç­Ç­Ç¯Ç¯ÇÆÇÍÇØÇØÇåÇëÇòÇıÇÈÈÈ)È#ÈLÈDÈdÈrÈlÈ•È�È­È­È­ÈȾÈÑÈ×ÈåÈøÈøÈÉÉ.ÉHÉHÉHÉiÉyÉ�ɠɰɰɨÉßÉîÉÊÊÊ ÊÊ Ê?Ê?ÊCÊZÊaÊfÊfÊjÊuÊ�Ê�ʼÊÅÊÖÊäÊË#Ë(Ë>ËRË^ËlËqËË›ËÆËìËïËÿËÌÌÌ$Ì/Ì/Ì2Ì@Ìk̋̋̋Ì�Ì·Î\, �Ñ�ќѢѦѵÑÄÑÊÑ]8cm¦b¦bÇb´bÓbŞbébôbÿb cc^\�”¨›¨››¸›Ã›Ë›Ö›á›ì›î›œœœ"œ+œ.œ]œ_ܳf�è�èÀèÉè×èùèùè ¨¨,¨1¨?¨1¨S¨X¨f¨X¨z¨¨�¨¨¡¨¦¨´¨¦¨Ȩͨͨê¨ï¨©©$©©8©=©=©Z©_©�©†©”©†©¨©­©­©Ê©Ï©ñ©ö©ªö©ªªª:ª?ªaªfªtªfªˆª�ª�ª¨ª­ª­ªȪͪͪèªíªíª«␍«␍«(«-«-«H«M«M«h«m«m«ˆ«�«�«�«£«£«´«¹«¹«Å«Ğ«å«ê«ê«ö«¬¬7¬>¬H¬M¬^¬h¬}¬ˆ¬�¬�¬©¬±¬¬¬º¬¾¬ŬϬ٬٬ì¬ñ¬ñ¬ñ¬õ¬ ­­­7­<­<­D­X­a­{­ˆ­“­�­©­»­Ç­Ğ­Õ­Õ­Õ­æ­®®®#®(®3®;®@®@®K®S®\®g®w®�®§®»®À®À®Ë®Ş®è®ó®¯ ¯.¯3¯A¯E¯J¯J¯Z¯e¯m¯r¯}¯Н•¯¯¯Á¯Ó¯ޯã¯î¯ö¯û¯°°°8°J°\°\°\°\°a°f°f°r°ƒ°ƒ°©°«°ǰǰѰå°ï°ñ°ı°±"±3±=±H±k±|±�±�±©±Á±ѱÖ±Ö±á±æ±æ±î±ù±ş±ş±²²²²²<²&²T²Y²Y²a²²i²—²œ²°²œ²ȲͲͲڲ߲߲ç²ì²ì²ø² ³³ ³ ³4³ ³L³Q³Q³Y³^³^³q³v³v³‰³�³�³¨³¸³½³½³׳ç³ì³ì³´´´´5´E´J´a´J´y´~´~´‰´�´Ê´¸´¦´�´â´ç´#µµÿ´ç´;µ@µ@µOµ_µdµdµsµƒµˆµˆµ—µ¥µªµÒµÀµªµêµïµïµ/¶4\J4tyy–€ÀĞÕÕğÜ·*·/·/·;·@·@·L·Q·Q·d·t·y·y·Œ·œ·¡·¡·´·Ä·É·É·Ü·ì·ñ·ñ·ù·ş·ş·¸ ¸ ¸¸¸¸ ¸%¸%¸8¸=¸=¸P¸U¸£¸‘¸¸m¸U¸°¸µ¸¹ñ¸߸͸µ¸¹¹¹$¹?¹D¹D¹U¹p¹u¹u¹†¹”¹™¹™¹¡¹¦¹¦¹®¹³¹³¹»¹À¹À¹ø¹æ¹Ô¹ǹº2º7º7ºoº]ºKº>º�º©º®ºàºκƺ®ºøºıº/»»»ıºG»L»f»P»L»~»ƒ» »Š»ƒ»¸»½»½»É»â»ò»¼¼)¼+¼A¼G¼G¼c¼p¼¡¼ã¼Ò¼À¼ï¼÷¼÷¼÷¼½½½½&½0½5½@½J½O½O½i½n½n½v½{½�½{½›½¦½«½¿½«½˽Ö½Û½Û½æ½ô½ù½ù½¾¾¾¾%¾*¾*¾;¾@¾@¾Z¾e¾j¾r¾j¾~¾ƒ¾—¾ƒ¾£¾¨¾°¾¨¾¼¾Á¾Õ¾Á¾á¾æ¾æ¾ú¾æ¾¿¿¿ ¿¿ ¿*¿/¿/¿;¿/¿N¿S¿S¿_¿S¿r¿w¿w¿ƒ¿w¿–¿›¿¯¿›¿»¿Ç¿Ò¿İ¿â¿ö¿â¿ÀÀÀ$À)À=À)ÀQÀIÀZÀ_À_ÀgÀlÀlÀuÀzÀzÀƒÀˆÀˆÀ‘À–À–À¡À¦À¦À±À¶À¶ÀÁÀÆÀÆÀÑÀÖÀÖÀáÀæÀæÀñÀöÀöÀÁÁÁÁ&Á1Á<ÁGÁLÁLÁVÁ[Á[ÁeÁjÁjÁtÁyÁyÁƒÁˆÁˆÁ�Á•Á•Á¢Á§Á§Á´Á¹Á¹Á¹Á¹Á¹ÁÁÁÆÁÆÁÎÁÓÁÓÁÛÁàÁàÁèÁíÁíÁõÁúÁÂúÁÂ+Â0Â0ÂBÂMÂmÂrˆ“¬˜¸ÂÃÂÎÂÓÂÓÂåÂğÂÃÃ+Ã6ÃOÃ;Ã[ÃfÃqÃvÃvÈÓóøÃÎÃÙÃòÃŞÃşÃ ÄÄÄÄ?Ä+ÄKÄkÄpĆđĖıÄ�ÄÑĽÄİÄóÄßÄÅÿÄ Å*Å/Å/ÅUÅAÅaÅ�ņŜŧŬÅÇųÅçÅÓÅóÅ ÆõÅ)ÆÆ5Æ@ÆEÆEÆkÆWÆwƗƜƲƽÆÂÆİÆÉÆıÆéÆ Ç Ç Ç?Ç+ÇKÇVÇ[Ç[ÇjÇoÇoÇ~ǃǃǃljÇ�Ç�Ç�ǘǚǚǤDZÇÑÇÓÇÓÇİÇİÇİÇİÇİÇßÇßÇöÇıÇÈÈÈÈ"È-È8ÈCÈNÈYÈSÈ|ÈtȔȢȜÈÅȽÈİÈİÈİÈæÈîÈÉÉÉ(É(É@ÉJÉ^ÉxÉxÉxəɩɾÉĞÉàÉàÉÊÊÊ0Ê0Ê4Ê9Ê@ÊPÊoÊoÊsʊʑʖʖʚʥʱʿÊìÊõÊËËGËSËXËnË‚Ë�˜ˡ˯ËËËöËÌ Ì/Ì1Ì1Ì5ÌTÌ_Ì_ÌbÌp̛̻̻̻̾ÌçÎ\, ¾Ñ¾ÑÌÑÒÑÖÑåÑôÑúÑ]8cmÖbÖb÷bäbccc$c/c;cAc^\�”؛؛æ›è›ó›û›œœœœ4œ4œFœRœ[œ^œ�œ_ܳf¾è¾èğèùèé)é)é:éGéeéméšéŸéÈéåéêê ê.êTêYê‚êœêÂêÙêßêãêüêë ëë"ëAëGëKëdëlë‹ë�ë¡ë©ëÈëÍëÕëÛëßëãëõëıë ì ì$ì6ì;ìLìQìcìlì€ì‹ì°ìàìí
éé5é=éjéoé˜éµéÑé×éÛéşé$ê)êRêlê’ê©ê¯ê³êÌêÔêÙêêêòêëëë4ë<ë[ë`ëqëyë˜ë�ë¥ë«ë¯ë³ëÅëÍëÙëïëôëì ìì!ì3ì<ìPì[ì€ì°ìÕìÚìÚìÚìêìñìÿì í.í.íEíJíJíaícícíwíyíyí�í’í’í©í«í«íÂíÂíÓíØíØíèí␍î î$î$î$î$î<î_îrî�î�î�î�î´î¶î¶î¶îÃîÚîÜîÜîéîïïïï3ïQïQïQïUïWïWïWï\ï^ï^ïcïcïmïrïrï�ï�ï�ï˜ïšïšïšï¢ï¤ï¤ï¬ï¬ï®ïµïÓïÕïèïşïşïşïşïşïğ)ğ1ğ1ğtğ`` í
¶S¶SÈSÔSòSTT2TETPTeTRTqTyT„T—T�T¯TµTaôW†<†<¤<§<¹<À<Ç<Ì<Î<Õ<Ü<à<ò<$=>=+=V=[=|=|=ˆ=�=Ÿ=Ù=Ş= >>>!>,>4>;>Z>`>>�> >«>Â>á>ç>î>î>ô>÷>û> ?,?>?b$6Û6ÛEÛ]Û]ÛcÛcxb|ÖåÖåöåææ"æ'æ'æFæSæUæUæUæUæbæjæ}æ‘æ“æ“æ›æ®æ®æÀædHÏ�8�8¶8Ã8Æ8Ï8Õ8ì899,9Z9v9�9•9š9¥9¼9Î9Û9î9:::(:H:M:P:j:„:Œ:”:™:³:Í:Õ:İ:â:ü:; ;);.;1;K;e;m;u;w;‘;«;³;»;½;×;ß;ß;ä;é;ô;ô;ÿ;ÿ; < <<]<s<s<ƒ<ed¤¹àˆàˆğˆ÷ˆ‰ ‰‰ ‰2‰>‰U‰b‰b‰e‰s‰ƒ‰š‰�‰¦‰fºûÁ*Á*×*Ü*ğ* +++8+B+R+R+i+p+‡+�+—+®+®+Ä+Ä+Ú+Ú+ğ+ğ+,,,,2,2,H,H,^,^,u,u,Œ,Œ,£,£,º,º,Ñ,Ñ,è,è,ÿ,ÿ,--/-7-B-S-^-o-r-t-‹-’-�.g¬÷––°½ÅÍĞÛíí ␍''*2HKY\_fjr€’¢¥ôh(EKf‘f‘�‘z‘™‘¨‘°‘iCVJVJyJ�J“J›J£J«J¸J¾JÇJÍJÒJÚJöJüJşJK␍K␍KKK+K1K3K5KBKBKBKGKPKXKaKiKkKsK{KƒK�K–K¡K¨K¸KÃKÏKíKôKÿKLLL"L"L6LFLNLQL·Lj8-7á/á/õ/ù/ş/ 0000#0k¤õš™™$™H™N™U™U™\™|™�™—™³™Ÿ™¿™Ò™ä™í™õ™ÿ™š/š8š@šJšcšOšoš�š‹š“š˜š³šŸšÓš¿šßšõšáš››!›3›=›E›E›N›V›l›…›—›¦›ª›ª›±›¶›Ô›Ö›Û›æ›ü›ü›ü›œ œ-œ;œEœRœsœ�œ‹œ�œ�œ§œºœÈœËœëœïœ��5�9�X�\�\�\�b�p�z�“�™�¤�°�²�º�À�Ù�ä�ò�ü��� �,�.�6�9�R�T�`�b�j�p�‰�¡�­�Â�Ç�Ù�è�ŸŸŸŸ(Ÿ@ŸLŸaŸfŸxŸ‡Ÿ Ÿ±Ÿ±Ÿ·ŸŸÊŸØŸߟñŸlfä�Ú�Ú¸ÚÁÚáÚáÚçÚïÚ÷ÚÿÚÛ␍ÛÛÛ(Û-Û-Û3Û8Û8Û>ÛCÛCÛIÛNÛNÛfÛyÛÛ„Û„Û�Û­Û­Û­Û´Û¶Û¶Û½Û¿Û¿ÛÅÛÅÛÌÛÎÛÎÛÔÛÔÛÛÛİÛİÛãÛãÛêÛêÛòÛøÛşÛÜÜÜÜÜÜ"Ü*Ü2Ü:ÜBÜHÜ`ÜoÜyÜ|Ü|܆܌ܒܒܖÜ�ܥܭܹܵܿÜÇÜÎÜÖÜŞÜâÜèÜóÜùÜİİİ İ$İ+İ3İ;İ?İEİMİTİ\İdİhİnİyİ~ݔݥݪݭİSŞmÖ6P6PhP|P„P�P–P�P¦P¨P«PÉPĞPëPíPôPQQ Q!Q$QBQBQBQPQZQgQ‡Q‰Q£Q«Q«QÇQåQêQñQR R'R)R0RKR_RzR}R…R’R²R´RÎRÖRÖRòR␍S␍S3SESn`Ñ!Ñ!Ú!á!õ! "","1"O"Q"o"q"ˆ"œ"¥"§"»"Ë"ü"o|2Íè�è�ş�‘ ‘1‘B‘S‘f‘n‘|‘𑥑«‘¸‘͑͑à‘ñ‘÷‘ ’'’'’<’A’I’Q’W’o’‚’�’‘’›’°’¶’¸’Œǒْْà’è’ú’ú’ ““*“.“8“<“H“L“X“\“h“l“l““’“˜“œ“¦“ª“¹“½“̓Гã“ç“ç“ç“ç“ì“ş“␍””*”E”U”e”j”j”j”v”~”†”Œ”¡”©”·”Á”ϔՔהההההההההã”ë”ó”ù”•••"•0•6•6•6•H•N•Z•`•m•ˆ•˜•¤•ª•·•ɕוö•U—pÔ¼í`j`jrjƒj�j™j¯jÁjÙjŞjçjîjûjkkkkk!k#k)kCk]ksk‹k�k™k k­kÁkÜkãkåkèkíkl.l:lq$hm�&�&�&£&ª&Ä&r¤b‡nWnW‚W‰W¯W›W»WÀWÇWÇWçWıWéW X/XX;X@XGXGXOXVXaXlXtX|X‡X’X¥X�X½XÅXs9vvkvk’k™k±kÉkÓkŞkŞkãkîkúkll#l3l:l@lUljljl~l†l–l£l²l¿lĞlálïlılm í
m m4m4mHmUmfmvm|m�m�m“m¡m²m¿mÏm1nt8¬JJ íí!í/í<í^í^íuízízí‘í“í“í§í©í©íÀíÂíÂíÙíÛíÛíòíòíîîîî=îOîTîTîTîTîlî�î¢îÀîÀîÀîÍîäîæîæîæîóî
JJJ%J3J<JAJFJHJu88B)0)0=0A0F0Q0[0^0b0j0v0†�NHNHdHwH„HŠH�H•HwÜt(3>GWiou{‘€¥²µ½ÏÕÚı17GMYglz“¡ªº¼ÃÈĞïı #BISbhntz�±ÅÑèó+;I`lq�°ÇĞÖáæì""0?AO^ppx›¦ÚxT�Ş6ß6ßNßVßc߃ߕߜߦ߲߬߶ߺßÜßÜßãßæßëßúßşß+à/à4à4à;à>àCàOà]àaàrà�à…à‡à–àšà¼àÀàÅàÅàÙàÜàèàòàùà á*á.á3áiá€á‹á�á á«á¯á±á¼áÀáÀáÚáŞáàáàáëáïá â␍â␍â␍ââ4âyˆßı6â6âJâ`â`â`âbâbâiâkâkârâtâtâ�âƒâƒâ�â—â™â™â¦â­â¯â¯âÇâÌâÌâÜâz°‰±dd&d.d9d“d~dsd^dGd™d«d›dÆdÆdßdÓd eee(e=e*eIeOeVeweie]e‹e�e¦e¦e³eÚeÚeÚeæe{ †*^³^³{³‚³Š³•³¬³¶³¶³Í³×³ò³´´´:´N´b´i´m´†´�´¡´®´®´µ´¼´Á´Æ´Ë´Ò´Ù´ó´ú´ ï ï ïï0ï0ïGïIïcï�ï�ï�ï…ï‡ï‡ï‡ïŒï�ï�ï“ï“ï�ï¢ï¢ïÀïÀïÀïÈïÊïÊïÊïÒïÔïÔïÜïÜïŞïåïğğğ.ğ.ğ.ğ.ğ.ğAğYğağağ¤ğ``
µµµµ.µ2µ2µCµVµiµiµoµzµ�µ‰µ”µ›µ£µ®µµµµµÀµŞµâµúµëµ"¶1¶9G¶N¶R¶T¶f¶f¶f¶x¶€¶¦¶´¶´¶¸¶Í¶Õ¶å¶ğ¶· æSæSøST"T>TKTbTuT€T•T‚T¡T©T´TÇTÀTßTåTaôW¶<¶<Ô<×<é<ğ<÷<ü<ş<= =="=T=n=[=†=‹=¬=¬=¸=À=Ï= >>;>C>H>Q>\>d>k>Š>�>¯>±>Ğ>Û>ò>????$?'?+?<?\?n?b$fÛfÛuÛ�Û�Û“Ûcxb|ææ&æHæHæRæWæWævæƒæ…æ…æ…æ…æ’æšæ­æÁæÃæÃæËæŞæŞæğædHϾ8¾8æ8ó8ö8ÿ89939J9\9Š9¦9À9Å9Ê9Õ9ì9ş9 ::4:H:M:X:x:}:€:š:´:¼:Ä:É:ã:ı:;␍;;,;4;9;Y;^;a;{;•;�;¥;§;Á;Û;ã;ë;í;<<<<<$<$</</<;<;<M<�<£<£<³<ed¤¹‰‰ ‰'‰3‰9‰A‰O‰b‰n‰…‰’‰’‰•‰£‰³‰Ê‰Î‰Ö‰fºûÁ*Á*×*Ü*ğ* +++8+B+R+R+i+p+‡+�+—+®+®+Ä+Ä+Ú+Ú+ğ+ğ+,,,,2,2,H,H,^,^,u,u,Œ,Œ,£,£,º,º,Ñ,Ñ,è,è,ÿ,ÿ,--/-7-B-S-^-o-r-t-‹-’-�.g¬÷ÆÆàæíõı 18;=FWWZbx{‰Œ�–š¢°ÂÒÕ$h(EK–‘–‘½‘ª‘ɑؑà‘iC†J†J©J¾JÃJËJÓJÛJèJîJ÷JıJK
··'·/·=·H·L·Q·Y·]·l·n·}··�·�·Ÿ·¦·ª·¾·Æ·Ô·Û·ß·ï·ú·ÿ·¸%¸3¸:¸>¸F¸T¸[¸_¸g¸{¸ƒ¸�¸’¸’¸’¸�¸¨¸¸¸Ä¸Ú¸â¸í¸ü¸¹¹¹¹'¹3¹7¹B¹G¹Y¹a¹l¹l¹l¹l¹z¹‰¹¦¹²¹º¹Ê¹Ú¹ø¹ü¹+º ºº;º;ºEºLº[ºjºrº€º‡º‹º�ºœº¤º²º¹º½º½º¿ºÑºÑºãºãºãºéºõº»»'»S»a»e»ƒ»Š»‘»œ»²»´»»»Î»Ö»ä»ë»ï»ñ»¼ ¼¼!¼%¼%¼%¼%¼3¼>¼M¼U¼c¼n¼r¼r¼w¼¼ƒ¼’¼”¼£¼¥¼´¼¶¼Å¼Ì¼Ğ¼ä¼ì¼ú¼½½½ ½%½C½K½Y½`½d½l½z½�½…½�½¡½©½´½¸½¸½¸½Ã½Ê½Ø½ò½¾␍¾"¾'¾2¾B¾N¾d¾l¾w¾†¾�¾™¾�¾¦¾±¾½¾Á¾Ì¾Ñ¾ã¾ë¾ö¾ö¾ö¾ö¾ K&K,K.K0K=K=KJK?K[KaKcKeKrKrKrKwK€KˆK‘K™K›K£K«K³KÀKÆKÑKØKèKóKÿKL$L/L5LFLJLRLRLfLvL~L�LçLj8-7á/á/õ/ù/ş/ 0000#0k¤õš6™6™T™x™~™…™…™Œ™¬™±™Ç™ã™Ï™ï™ššš%š/šMš_šhšpšzš“ššŸš±š»šÚÈšãšÏš›ïš›%››E›1›Q›c›m›u›u›~›†›œ›µ›Ç›Ö›Ú›Ú›á›æ›œœ œœ,œ,œ,œ0œ<œ]œkœuœ‚œ£œ±œ»œ½œ½œלêœøœûœ� �>�B�e�i�ˆ�Œ�Œ�Œ�’� �ª�Ã�É�Ô�à�â�ê�ğ� ��"�,�E�H�P�\�^�f�i�‚�„���’�š� �¹�Ñ�İ�ò�÷� ŸŸ1ŸBŸBŸMŸXŸpŸ|Ÿ‘Ÿ–Ÿ¨Ÿ·ŸĞŸáŸáŸçŸòŸúŸ  ! lfäÎÚÎÚèÚñÚÛÛÛ Û'Û/Û7Û=ÛJÛJÛXÛ]Û]ÛcÛhÛhÛnÛsÛsÛyÛ~Û~Û–Û©Û¯Û´Û´Û½ÛİÛİÛİÛäÛæÛæÛíÛïÛïÛõÛõÛüÛşÛşÛÜÜ Ü␍Ü␍ÜÜÜÜÜ"Ü(Ü.Ü6Ü6Ü6Ü6ÜBÜJÜRÜZÜbÜjÜrÜxÜ�ܟܩܬܬܼܶÜÂÜÂÜÆÜÎÜÕÜİÜåÜéÜïÜ÷ÜşÜİİİİ#İ)İ6İBİHİPİTİ[İcİkİoİuİ}݄݌ݔݘİ�ݩݮİÄİÕİÚİİ݃ŞmÖfPfP˜P¬P´P¿PÆPÍPÖPØPÛPùPQQQ$Q?QFQOQQQTQrQrQrQ€QŠQ—Q·Q¹QÓQÛQÛQ÷QRR!R5R<RWRYR`R{R�RªR­RµRÂRâRäRşRSS"S=S=ScSuSn`Ñ!Ñ!Ú!á!õ! "","1"O"Q"o"q"ˆ"œ"¥"§"»"Ë"ü"o|2Í‘‘.‘?‘P‘a‘r‘ƒ‘–‘�‘¬‘ʑՑۑè‘ı‘ı‘’!’'’<’W’W’l’q’y’�’‡’Ÿ’²’½’Á’Ë’à’æ’è’õ’÷’ “ “““*“*“9“G“Z“^“h“l“x“|“ˆ“Œ“˜“œ“œ“¯““ȓ̓֓ړé“í“ü“”””””””.”=”L”Z”u”…”•”š”š”š”¦”®”¶”¼”єٔç”ñ”ÿ”••••••••••••#•)•>•F•J•R•`•f•f•f•x•~•Š•�•�•¸•ȕԕڕç•ù•–&–…—pÔ¼í�j�j¢j³j¾jÉjßjñj kkkk+k2k@kGkIkLkQkSkYksk�k£k»kÀkÉkĞkİkñk lllll@l^ljlq$hm�&�&�&£&ª&Ä&r¤b‡�W�W²W¹WßWËWëWğW÷W÷WX-XX9X_XKXkXpXwXwXX†X‘XœX¤X¬X·XÂXÕXÍXíXõXs9v¦k¦kÂkÉkákùklllll*l5lClSlcljlpl…lšlšl®l¶lÆlÓlâlïlmm m-m4m:mOmdmdmxm…m–m¦m¬m½m½mÃmÑmâmïmÿmant8¬6J6J:J?JDJUJcJlJqJvJxJu88B)0)0=0A0F0Q0[0^0b0j0v0†�~H~H”H§H´HºH½HÅHwÜt66Xcnw‡™Ÿ¥«Á°Õâåíÿ
¿¿/¿<¿@¿T¿e¿z¿‡¿‹¿™¿®¿¾¿Õ¿î¿À ÀÀÀÀ%ÀBÀSÀjÀƒÀ‘ÀœÀ¨À°À²À½ÀÅÀÅÀÅÀßÀíÀûÀÁ'Á6ÁCÁaÁhÁhÁxÁŒÁ¦Á¦ÁªÁÀÁÏÁêÁõÁ ÂÂÂ6Â6ÂIÂdÂm‚œ«¸ÂÖÂäÂúÂÃ#Ã;Ã;ÃSÃSÃ_ÃwÃ�ØØØäõÃÍÃÖÃÖÃİÃæÃìÃøÃ^Ä|ÌL»ÆõÆõäõïõúõ ö ö"ö/ö:ö@öQö`öoö|ö|ö‚ö‡öŒöŸö²ö½öÁöÓöàöèöóöïö -@DJagw}‰—œªÃÑÚêìóø -9Sryƒ’˜�¤ªÀáõ#2?N[ky�œ¡¯Îà÷3>KRR`oq�  ¨ËÖ
÷÷÷÷#÷>÷)÷O÷F÷Y÷[÷w÷c÷÷�÷�÷�÷«÷«÷²÷¸÷Á÷È÷Ë÷í÷øô÷ øøøøø+ø0ø0ø8ø8øCøXøaøaøaøaø}ø”øšøŸøŸø´øºø¿ø¿øËøèøù␍ùùùù;ùJùYùaùfùlùqùqùxùù¢ù¿ùÁùŞùóùóùùùùùúúú*ú<úGúLúYúdúlútú„ú›ú›ú«ú«ú½úÃúëúôúôúöúıúûûûû û)û)û<ûIû[ûfûtû}û‚û©û²û½ûÂûÉûÑûäûùûşûüüü+ü@üGüMüVüVü_üyü€ü…ü“ü£ü±ü±ü·ü¾üÇüÇüÚüìüïüïüıııı9ı@ıMıOıVıjıyıyıyı ı ı ı­ı­ıÂıÍıßıìı÷ışş ş&ş&ş@şSşUşdşyş{ş‰ş�ş�ş¤ş­ş­şºşÀşÒşÒşßşâşíşÿşÿÿÿÿ%ÿ0ÿ5ÿJÿLÿfÿ{ÿ{ÿ{ÿ}ÿ„ÿŠÿ›ÿ©ÿ»ÿ»ÿÁÿÈÿÑÿÖÿ÷ÿ..;>DMU`rxƒƒ�“™¢ªµÇÍØØåèî÷ù.CITflttttú}@I•6 xT�Şfßfß~߆ߓ߳ßÅßÌßÖßÜßâßæßêß à àààà*à.à[à_àdàdàkànàsàà�à‘à¢à±àµà·àÆàÊàìàğàõàõà á áá"á)áOáZá^ácá™á°á»á¿áĞáÛáßáááìáğáğá
6 âââââ â9â=â=â=âAâdâyˆßıfâfâzâ�â�â�â’â’â™â›â›â¢â¤â¤â±â³â³âÀâÇâÉâÉâÖâİâßâßâ÷âüâüâ ãz°‰±>d>dVd^didÃd®d£d�dwdÉdÛdËdödödee<eAeMeXemeZeyee†e§e™e�e»e½eÖeÖeãe
N f
` f
k ff{ †*�³�³«³²³º³Å³Ü³æ³æ³ı³´"´8´F´J´j´~´’´™´�´¶´À´Ñ´Ş´Ş´å´ì´ñ´ö´û´µ µ#µ*µ:µ>µ>µHµ^µbµbµsµ†µ™µ™µŸµªµ±µ¹µÄµËµÓµŞµåµåµğµ*¶E¶E¶K¶R¶a¶i¶w¶~¶‚¶„¶–¶–¶–¶¨¶°¶Ö¶ä¶ä¶è¶ı¶·· ·5·:·H·W·_·m·x·|·�·‰·�·œ·�·­·¯·¾·À·Ï·Ö·Ú·î·ö·¸ ¸¸ ¸*¸/¸M¸U¸c¸j¸n¸v¸„¸‹¸�¸—¸«¸³¸¾¸Â¸Â¸Â¸Í¸Ø¸è¸ô¸
“ ¹¹¹,¹4¹?¹D¹L¹W¹c¹g¹r¹w¹‰¹‘¹œ¹œ¹œ¹œ¹ª¹¹¹Ö¹â¹ê¹ú¹
~ º(º,º[ºPºAºkºkºuº|º‹ºšº¢º°º·º»º½ºÌºÔºâºéºíºíºïº»»»»»»%»7»?»W»ƒ»‘»•»³»º»Á»Ì»â»ä»ë»ş»¼¼¼ ¼!¼4¼<¼J¼Q¼U¼U¼U¼U¼c¼n¼}¼…¼“¼�¼¢¼¢¼§¼¯¼³¼Â¼Ä¼Ó¼Õ¼ä¼æ¼õ¼ü¼½½½*½1½5½E½P½U½s½{½‰½�½”½œ½ª½±½µ½½½Ñ½Ù½ä½è½è½è½ó½ú½¾"¾2¾=¾R¾W¾b¾r¾~¾”¾œ¾§¾¶¾¾¾É¾Î¾Ö¾á¾í¾ñ¾ü¾¿¿¿&¿&¿&¿&¿:¿J¿_¿l¿p¿„¿•¿ª¿·¿»¿É¿Ş¿î¿ÀÀ7À9ÀDÀLÀLÀUÀrÀƒÀšÀ³ÀÁÀÌÀØÀàÀâÀíÀõÀõÀõÀÁÁ+Á@ÁWÁfÁsÁ‘Á˜Á˜Á¨Á¼ÁÖÁÖÁÚÁğÁÿÁÂ%Â<ÂDÂDÂfÂfÂy”Â�²ÂÌÂÛÂèÂÃÃ*ÃCÃSÃkÃkÃÃÃ�çÿÃÈÃÈÃÈÃÔÃåÃıÃÄÄ␍ÄÄÄ(Ä�Ä|ÌL»öõöõö ö*öPöPöRö_öjöpö�ö�öŸö¬ö¬ö²ö·ö¼öÏöâöíöñö÷÷÷#÷ ÷:÷H÷H÷H÷S÷n÷Y÷÷v÷‰÷‹÷§÷“÷¯÷½÷½÷¿÷Û÷Û÷â÷è÷ñ÷ø÷û÷ø1ø$ø9ø?øHøHøHø[ø`ø`øhøhøsøˆø‘ø‘ø‘ø‘ø­øÄøÊøÏøÏøäøêøïøïøûøù8ù=ùBùBùNùkùzù‰ù‘ù–ùœù¡ù¡ù¨ù¯ùÒùïùñùú#ú#ú)ú)ú6ú?ú?úZúlúwú|ú‰ú”úœú¤ú´úËúËúÛúÛúíúóúû$û$û&û-û2û2û?ûJûPûYûYûlûyû‹û–û¤û­û²ûÙûâûíûòûùûüü)ü.ü5üBüIü[üpüwü}ü†ü†ü�ü©ü°üµüÃüÓüáüáüçüîü÷ü÷ü
r ıı ı ı0ı8ı@ıLıiıpı}ıı†ıšı©ı©ı©ıĞıĞıĞıİıİıòııışş'ş5ş@şOşVşVşpşƒş…ş”ş©ş«ş¹şÎşÎşÔşİşİşêşğşÿÿÿÿÿ/ÿ6ÿAÿFÿNÿUÿ`ÿeÿzÿ|ÿ–ÿ«ÿ«ÿ«ÿ­ÿ´ÿºÿËÿÙÿëÿëÿñÿøÿ'006??^^knt}…�¢¨³³ÀÃÉÒÚå÷ı')K^sy„–œ¤¤¤¤¯*}@I•f
Ÿ f
½ ~
ê �
Õ ›
É Ã
ö ®
  / D 1 q \ P } — — — © à à ğ  ı 6 ; N B p a | š ² ¦ Ø Å ó ä ÿ ␍2␍ ␍J␍>␍l␍]␍x␍’␍’␍’␍¤␍¾␍¾␍Ù␍æ␍␍~”�¾33%3)32353>3G3Y3Y3‚3†3‹3�3—3§3®3±3¹3¼3É3Ñ3Ù3á3è3ø3ø34Œ >¶T¶TÊTÑTUíT␍UUUU9UOU;U[U‹UwU—UœU£U£U«U²U½UÅUĞUãUÛUûUV€À-(d(dFdVd`d`djdjdtd†d“d–d˜d¡d®d®d¼dĞdĞdôdeeeeeAeNeNede‡e�eÀeÉeÖeÖeùeff6fifofofof�f�¸ºä¨‰¨‰À‰Â‰Î‰Ò‰ß‰â‰ü‰ü‰ü‰ŠŠŠŠ-Š9Š;Š;ŠDŠFŠFŠOŠQŠQŠZŠ\Š\ŠeŠeŠnŠtŠwŠ�Š’Š˜Š¤Š¤Š ‹‚œWzÎ(Î(ì(ı( )')@)8)X)x)d)„)•)š)»)§)Ó)û)***3*S*?*_*p*†*r*�*«*«*Ã*Ã*Í*ƒœX{Ş,Ş,ê,ú,-/-_-l-}-�-–-�-±-¸-Æ-Ş-í-ú-ı-...5.A.M.Q.X.�.„x¬ˆ«ˆ«�«¥«¬«Ë«Ú«é«ø«¬¬ ¬ ¬%¬,¬?¬N¬S¬n¬ˆ¬ˆ¬�¬°¬´¬Â¬É¬Î¬Î¬Õ¬ç¬ğ¬ò¬­­­­$­/­A­L­Y­^­n­s­ƒ­�­”­¡­¦­¶­»­Ë­Í­İ­ß­ï­ñ­® ® ®␍®®$®4®4®O®a®s®…®•®•®•®˜®«®…\åø‹‹+‹2‹7‹E‹Z‹a‹k‹y‹|‹~‹ˆ‹š‹š‹¡‹×‹†0ÎÖŞŞö8,şLT‡L4CV+V+d+v+|+„+–+œ+¥+·+½+À+ü+ˆ(–œá2á2ï2ş233 3‰\DWş+ş+ ,,$,,,>,D,M,_,e,n,€,†,‰,×,Š, &Ñ&Ñ4Ñ;ÑCÑHÑNÑ‹¬!H¦¦ÄÖİäóø   ; @ G V X w w – « ˜ · Æ È ç ç ç ç ö  ¢
 Ï
' í
1   ù
Œ(?�`�`»`Ã`Ê`Ş`ğ`ö`aa'a2a6aAaMaXada{a’a¥a¼aÑaáaáaóaùa & @ @ _ t a ¡ Œ € ­ Ç Ç Ç Ù ó ó  9 - f k ~ r   ‘ ¬ Ê â Ö ␍õ #␍␍/␍M␍b␍O␍z␍n␍œ␍�␍¨␍Â␍Â␍Â␍Ô␍î␍î␍ 55=~”�¾33%3)32353>3G3Y3Y3‚3†3‹3�3—3§3®3±3¹3¼3É3Ñ3Ù3á3è3ø3ø34Œ >æTæTúTU1UU=UBUIUIUiUUkU‹U»U§UÇUÌUÓUÓUÛUâUíUõUVV V+V3V€À-XdXdvd†d�d�dšdšd¤d¶dÃdÆdÈdÑdŞdŞdìdee$e1e1eAeNeNeqe~e~e”e·eÍeğeùeff)f3f3fff™fŸfŸfŸf±f�¸ºä؉؉ğ‰ò‰ş‰ŠŠŠ,Š,Š,Š2Š6Š>ŠIŠ]ŠiŠkŠkŠtŠvŠvŠŠ�Š�ŠŠŠŒŠŒŠ•Š•Š�ФЧбŠÂŠÈŠÔŠÔŠ<‹‚œWzş(ş()-)P)W)p)h)ˆ)¨)”)´)Å)Ê)ë)×)*+*2*K*C*c*ƒ*o*�* *¶*¢*Î*Û*Û*ó*ó*ı*ƒœX{---*-5-_-�-œ-­-¿-Æ-Í-á-è-ö-..*.-.F.I.N.e.q.}.�.ˆ.¾.„x¬¸«¸«Î«Õ«Ü«û«
bb b b8b8b]b]bbbbbhbtb�b�b¢b¹bÈbÓbåbñbc cAcAcJcOcOcOcOc_chcpcucƒc‘c¡c¦c¦c¾c¾cÃcÃcÍcØcêcğcüc dd!d%d.dGdJdZdgdwd‡d�d”d d¨d³dºd¾dÑd×dädïdõdeeeBedepexeƒeŠe•e—e¢e¢e²e·e·eÁeÌeŞeäeòeÿe fff#f<f?fOfVf[f[fofoftfxfˆf‘f£f©f«f«f¹f¿fÅfÖfÜfèføføføfıfgg$g'g;gYgdg�gŸgªg¼gÀgÅgÌgŞgîgh␍hhh h*h-i�<KV((8(D(V(l(�(z(¥(½(½(Ç(�`l€ğšğš›› ›*›4›?›G›V›`›c›‡›‰›™›™›§›�`àôş—ş—˜6˜C˜G˜V˜o˜s˜y˜Œ˜©˜«˜«˜ܘʘ«˜û˜™�XnÎÓÎÓôÓÔ Ô"Ô4Ô>ÔHÔVÔ^ÔmÔƒÔ…Ô�Ô¤Ô²ÔºÔÂÔÄÔÏÔÚÔÚÔâÔêÔôÔüÔÕÕÕÕ#Õ>ÕOÕaÕdÕiÕ|Õ”Õ¨Õ°Õ°ÕÂÕÅÕÊÕİÕõÕ ÖÖÖ2Ö5Ö:ÖMÖSÖhÖ~Ö€Ö•Ö«Ö³Ö³Ö¾ÖİÖäÖïÖב83=&Ò&Ò/Ò/Ò=ÒAÒOÒRÒWÒ’8>H^Ò^ÒgÒgÒuÒyÒ€ÒƒÒˆÒ“D*^*^*x*‹*•*œ*¨*À*É*Í*ß*å*+”Ğy©N÷N÷x÷{÷‚÷ˆ÷�÷�÷–÷œ÷œ÷®÷¹÷À÷Í÷Ú÷í÷ü÷øøø ø%ø/ø/ø@øBøIøOøYøYøYøpø‚ø‰ø˜øšø¬ø»ø»øÍø•0+3+++5+F+L+L+T+–„\yNìNì`ìuììˆìŠì‘ì¡ì¬ì®ì¸ì¸ì¾ìÏìÒìÒìóìşìíí í$í0íCí–í—  ¬¬(¬7¬F¬P¬P¬U¬\¬o¬~¬ƒ¬�¬¸¬¸¬Î¬à¬ä¬ò¬ù¬ş¬ş¬­­ ­"­0­B­B­B­T­_­q­|­‰­�­�­£­³­¿­Ä­Ñ­Ö­æ­ë­û­ı­␍®® ®!®2®;®;®=®M®T®d®d®®‘®£®µ®Å®Å®Å®È®Û®…\åø@‹@‹[‹b‹g‹u‹Š‹‘‹›‹©‹¬‹®‹¸‹Ê‹Ê‹Ñ‹Œ†0ÎÖ&h\0.|„‡L4C†+†+”+¦+¬+´+Æ+Ì+Õ+ç+í+ğ+,,ˆ(–œá2á2ï2ş233 3‰\DW.,.,<,N,T,\,n,t,},�,•,�,°,¶,¹,-Š, VÑVÑdÑkÑsÑxÑ~Ñ‹¬!HÖÖô ␍  # ( G G L k p w † ˆ § § Æ Û È ç ö ø 
®)®)·)Õ)Ú)˜h÷␍ş]ş]^ ^*^8^C^I^Z^`^q^w^ƒ^š^š^¬^½^Ê^Ğ^á^ç^5_™”"�.�.°.º.Æ.Ë.Û.á.ö. 
//'/5/L/T/^/m/u/‚/Š/�/�/�/�/�/¨/±/¹/¼/Î/š�µÕ�N�N¼NÁNÕNİNëNïNøNøNıN 
O OJOOOsO{O€O‡OťOłOµOËOáOP P1P›�ůĆűĆűŢűđű÷űţűü"üAüFü`üMüülü‹ü üŤüżü¬üËüËüËüÝüäüýý ýś y}h‡h‡q‡}‡‚‡ť(A6â6âXâ`âfânâpâpâ�â�â�â‰â‘âŁâ˛âŁâÇâÉâÉâăâĺâĺâđâőâăăăă)ă+ă8ă:ăGăIăVă^ăfămă|ă‰ă‹ăśă©ă©ă©ă˛ăÄă×ăÝăĺăçăôăôă ä ä äää6ä;ä;ä;äIäOäTä\ägäyä„ä‰ä‰ä�ä”ä˘ä¦äŻä¶äÔäáäčäńä ĺĺĺĺĺĺ%ĺ3ĺ3ĺSĺSĺSĺZĺhĺwĺŠĺťĺźĺźĺźĺ˛ĺ˛ĺąĺŔĺĹĺËĺÝĺçĺć+ć1ć1ćEćJćnćuć�ćźć˛ć˝ćÄćČćČćČćČćÓćÝćëć çç5ç?ç?çMçkç›ç®çżçÖçéçîçîçîçöçččč#č#č#č5čbčhčhčhčsč}č‰č”č–č–č–č›č§č§čńčžH%A/A/O/V/a/o/z/‚/‚/š/¤/Ş/°/ź0 FSFSmSZSySŹS�S§SŻS T9Jţ&ţ&'$'6'L'm'Z'…'–'¨'ľ'ß'Ě'÷'(((ˇTXiN N d r x ~ Ź ť « ˝ Á Ç Ő Ř â ˘Lgýý=ý2ýJýeýQý…ýqý‘ý§ý“ýÇýłýÓýßýäýđýţţţ ţ+ţ6ţ>ţCţOţTţhţoţsţ~ţ�ţŽţ§ţ°ţĽţÁţŐţÜţŕţŕţĺţţţ˙˙1˙C˙H˙S˙[˙[˙[˙]˙v˙‹˙–˙ ˙«˙­˙¸˙Ŕ˙Ŕ˙Í˙Ĺ˙ĺ˙ŁŕZŽbb*b8b=bJbXbab|bŠb¬bµbĹbßbębúbübţbccc%c1cCcKcccgcgcgcgclcŠc¤c¤c«c®c¶cÂcËc!d¤d{�Î*Î*ě*+ +'+@+8+X+x+d+„+•+«+—+Ă+Đ+Đ+č+č+ň+Ą(FßFßTßwß}߂߂ß�ߦ(!'ÎŃÎŃ×ŃĺŃëŃíŃňѧD]j°8°8Ę8Ń8Ú8ć8ű89 9999 9¨„˝ÚHĄHĄ{Ą‡Ą‹Ą“Ą›ĄźĄŞĄ®Ą˛Ą¶ĄľĄĂĄÇĄŘĄéĄëĄďĄ¦¦¦1¦8¦B¦B¦B¦T¦©€X—X—q—x——†—Ś—ś—§—±—Ľ—Ó—Ö—Ř—ó—ý—���+�3�3�I�I�[�Ş�b®]®]Ô]ô]ü]^^ ^#^.^N^S^m^Ś^’^—^Ş^×^ŕ^ö^ü^__ _ _D_I___e_m_p_�_•_˛_Ń_×_ß_ß_ä_ę_í_ř_``7`V`\`a`�`Š`Ź`®`¶`»`Ű`ä`ć`a a-a2aLakaqavavavava�a”aźa·aÂaŐaâaúab b)b+b?bPbUb`bmbŤbŤbŤbźb«°)¨ť¨ťËťŘťÝťáťęť÷ťžžž!ž,ž4ž7žCžKžež‹ž…ž›ž¤žŮžĹžéžéžź ź(ź/źSźŚźŚźŚźŚźíź¬0ůA؋؋ý‹ ŚŚŚ$Ś.Ś4Ś>ŚLŚVŚhŚrŚxŚ‚Ś�Ś’Ś™ŚĄŚ«Ś´ŚßŚîŚńŚóŚýŚŤŤ+Ť5ŤJŤJŤMŤWŤlŤqŤ�ŤŚŤ‘ŤĄŤ¸ŤÂŤ×ŤĺŤîŤöŤŽŽ%Ž6ŽCŽCŽPŽPŽXŽfŽ­Ž­lŁ:v?v?Ź?§?·?×?é?@@@F@N@R@U@Y@^@h@k@r@x@@…@‰@Ž@�@©@°@·@ą@˝@Ć@Đ@Ó@Ţ@ę@í@ţ@ AAA A8AIARA[AcAnAyA…A–A§AłAÁAĂAĘAŃAÖAÚAçAîAB B)B3B<BUBfBoBxB€B‰BŹB“B�BśB©B°BľBČBÝBçBđB CC#C,C4C=CCCGCLCRC\CfC‚C�C–C›CŁC«CłCŔCČCçCÚCůCDD1DDDKDTD]DdDmDvDD�D�D¨D¬DE®  `„`„n„Ť„“„ŻŔŤąé'é'ň'((ů':(J(<(k(Ž(Ž(ž(Ł(Ł(·(Ľ(Ľ(Ř(Ý(Ý(ý()))))8)8)F)j)�)°)Â)Ô)ć)ö)ö)ö)ö)ö)ż*°$bg9&9&=&U&g&�&±´Şfąfą€ąŹąŹą’ą›ą§ą§ąłąČąéąűą şş!şAşSşYşlşuşyşş�ş�ş©ş­ş˝şĘşčşúş»»%»1»3»?»G»K»Q»Z»Z»Z»Z»l»‚»�»”»©»°»¸»Ä»Ů»ŕ»ŕ»ŕ»î»ü»Ľ ĽĽ!Ľ$Ľ6Ľ;Ľ@ĽPĽSĽXĽhĽkĽoĽxĽ€Ľ’ĽšĽŁĽąĽżĽËĽŕĽçĽďĽ˝˝˝'˝'˝.˝.˝.˝<˝J˝T˝W˝eLine truncated 
p$p6p`pfphp’p•p•p¬pąpÍpäpďpópţp qq*q,qVqYqkqzqq©qŻq´qĆqŐq×qrrr%r'rQrWrWrWrararlrťr¨r¨r¨r¨r±r˝rÓrěr˙rssss,s0s0s0s7s<sOsVsbsisis€s‚s‡sšsˇs­s´s´sÁsËsËsŇsósóst´w¸6n6nTnWn]nqnynŠn—nťn˘n˘nŻn¸nľnÎnÜnŢnýnoo!o1o1o?oRo]oaorororowowo�o’oĄo«o°oÄoĘoŇoäoęoěoűopppp p%p,p8p?pApFpNpPpUpapcphppprpwpp�p†pŽp�p•pźpˇp¦p°p°p°pŔpŔpŔp×pÝpăpîpópűpqq%q)q/q:qSq^qiqoq|q�q†q†q›qŁq«qÉqÔqßqëqĺqôqýqrrr#r,r8r>rJrNrSrXrcrnryr{r�rŽr“r�r±rĽrÇrÇrÍrÚrÜráręrsss s,s,s0s5s5sFsHsHs[s]s]spsrsrs…s‡s‡sšsśsśs®s®s´sąsąsĐsäsŮsńsůsttt!t,t#t<t<t>tVtYt[tgtyt‰t•t¬tĆtËtßtďtuuu u!u3u>uFuNuRu`ufukukuqu…u•ušušu u¦u«u«u«u±uŔuÓuŕuäuéuéuíuňuňu÷uvv(v>vJvJvPv]v_vjvvv…v�v�vĄv±v±v±v±vµvşvËvÝvčvđvřvúv ww w+w1w>w>wUwewewyw…w‡w�wśwłwłwąwĆwČwÚwÚwĺwĺwĺwĺwĺwazµ\ăö]]$]6]<]G]U]a]x]x]Š]�]›]«]¶]Ä]Ń]ý](28$7>ELPRY`ddl…ŹŹŁ®ĽÍŃÖň'+0A^^l€…žŻłłł¸ćű    : b j s w | Ť ź Ż Ă Ĺ Ţ ń ő ő ő  9 = F J O ` } } ‹ ź ¤ ˝ Î Ň ä ä ä é ř !8!C!I!_!p!u!Š!¦!Î!Ň!Ű!ß!ä!ő!"""0"2"K"\"`"`"g"z"~"�"•"±"Ů"á"ę"î"ó"##*#>#C#\#o#s#…#…#…#…#Š#©#¸#Ů#ä#ę#$$$$$+$D$D$D$S$S$f$}$�$™$ž$¤$®$°$Ľ$Ľ$Ă$Î$ă$ĺ$đ$%%%%*%:%A%H%R%Z%^%b%d%i%q%u%‡%‰%Ž%–%š%ś%ś%Ą%˛%Č%č%&&&!&!&4&8&8&8&?&D&^&j&v&}&}&”&–&›&µ&Á&Í&Ô&Ô&á&ë&ë&ý&·� �`G`G}GŚGŚGŚG¦G¦GµGµG»G˝G˝GĂGĹGĹGËGÍGÍGÔGŘGÝGÝGÝGÝGÝGÝGĺGúGúGH HHH)H>H@H[H]HxH}H�HťHŁHŁH¸H»HâHďHI'I'I0I5ISIAIYIhImItI}I�I�I IĄIĄIĄI®IÇIÍIÍIćIôIJ$J&J.J4J<JAJAJGJGJPJaJcJxJzJ‚J�J�J•J•J•J•JŁJ·JąJÍJÍJŐJŰJăJčJńJůJKKKKKKKK&K:K>K@KLKNKiKoKwK|K…K�K“K™KźK¨K«K«KąKÇKÉKěK LLLL%L'L'L,L.L6L6LQLcLhLtLzL}L”L–L™L©L­L´L˝LĚLÚLŕLčLíLőLúLúLMM'M,M6M^MiMtMMŠM•M M«M¶M¶M¶MľMľM×MĺM˙MNNNN N&N(N(N.N4N4N<NENKNWNWN^NaN€N‹N“N›N N N¦NŞNŻNľNĂNÍN×N×NäN O OO O0O<OCOQO`OvO|O�O�O†O™OĄO­O˝OÇOĐOŢOĺOçOđOđOöOPP#P6PJPPPRPePjPjP‡P‡P™PźP¨P®P·PĹPĘPĘPÝPăPĺPđPQQQ)Q5QGQLQXQ^QaQxQzQ}QŤQ—QšQšQ©QĽQÎQÓQßQĺQčQ˙QRRRR R.R3R8R8R>RFRKRKRQRQR_ReRkRuRRŤR˘RĄR§R±R±RłR»RŔRĹRĘRĘRĐRŘRÝRÝRâRíRňR÷RSS-S/S4S9S>SCSHSMSRSRSWS\SxS‚S–SŞS°S¸S¸SĆSĚSŇSÜSćSôS T TTT'T,T,T,T4T9TBTBTGTGTMTUTZTZT_TjToTtTyT�T�T™TźTźT­TłTąTĂTÍTŰTđTóTőT˙TUUUUU U)U.U.U4U<UAUAUFUQUVU[U`UoUoU€U†U†U”UšU UŞU´UÂU×UÚUÜUćUőUúUúUúUVVVVVV#V(V(V5V;V;VIVOVUV_ViVwVŚVŹVLine truncated &
WWW,WAWDWFWPW_WdWdWdWlWqWzWWW‰W‘W–W–W–WœW¦W¬WÀWÅWÅWËWÕWÛWàWàWæWôWıW XXXX$X0XAXNXUX]XgXuXuXzXzX…X…X…X‰X�X�X”X˜X�X¥X«X­X¶XÅXÍXÒXØXØXàXæXôXÿXY ?
YYYYYYYYYYYY0Y6Y?YEYMYRYWY`YkYtY|Y�Y�Y�Y‡Y�Y”Y”Y˜Y�Y�Y¦Y´YÀYÍYÓYÓYÜYğYğYöYÿYZZZZ$Z-ZAZAZJZJZJZOZTZTZ\ZaZaZ~ZŒZ˜Z¡Z§Z±Z¹Z¾Z¾Z¾ZÒZÛZáZóZıZıZ[[␍[[[([2[;[=[=[=[C[G[I[I[I[I[N[T[Z[^[¶^¸Ğàtt(t>tJtht„t‘t¨t»tÆtÜtÈtètğtğtÿtÿtuu)u>uMuXukuquququvu{uŠu•u¬u®u³uÂuÍuÚuäuäuòu¹”*KğŸğŸ    " % ( , 1 Q > a i q t v † � ˜ � ¡ ² É Ú å ¡ºà.¢†;†;¤;¯;À;Ã;Ç;Ğ;×;å;ô; 8
<<,<><P<_<n<<�<�<œ< <¤<©<­<º<Á<Ï<ã<ì<ò<=== =)=)=.=.=.=3=3=B=K=S=i=i=i=n=n=ƒ=�=š=Ÿ=Ÿ=¢=§=§=Ã=Ï=Ü=Ş=Ş=â=ä=ä=> >>>>> > >,>.>.>1>1>:>@>E>a>a>a>a>a>a>a>a>a>a>a>a>c>t>†>•>¤>¤>¨>¨>°>Ì>Ğ>Õ>p?»,şĞşĞ ÑÑÑ Ñ&Ѽ˜?aVVV"V)VYVEVeVjVqVqV‘V§V“V³VãVÏVïVôVûVûVûVWWWW(W3WFW>W^WhW½PQaQ%Q%_%m%t%„%•%š%·%½%Ä%Ë%Ù%å%÷%3&¾D%�ß�ߢ߰߶ßÙßßßåß W
ààààà$à¿ô#œÎ/Î/Ö/å/é/ö/00&0F0S0e0‡0§0µ0Ñ0ã0û011>1\1k1†1‘1¬1Å1Å1à1 2#2>2P2_2n2n2y2Œ2�2°2À2Í2Ø2ç233333$31383W3`3m3q3y3„3œ3´3½3Í3Õ3Ú3ş344)4=4B4J4p4r4}4°4Ê4Ê4â4ñ4ù4555+5J5R5Z5e5g5w5�5§5¿5×5é56 66$62666:6À ˜„˜„¡„À„Å„ÁX…W¾Ç¾ÇØÇßÇìÇ÷ÇüÇÈÈÈ2È8ÈVÈjÈuÈ{È�È�È­ÈÂÈÄÈÇÈÓÈÛÈãÈëÈùÈÿÈÉÉÉÉ%É+É0É0ÉGÉGÉeÉeÉxɅɊɊɡɪɹÉÏÉÚÉèÉóÉÊÊ"Ê(Ê2Ê>ÊKÊMÊMÊUÊZÊZÊbÊgÊgÊoÊtÊtÊ|Ê�Ê�ʇʌʌʓʘʘʟʤʤʯʴʴʿÊÄÊÄÊÏÊÔÊÔÊßÊßÊøÊÿÊËËËË*Ë7ËFËMËPËbËdËjË~ˋ˚˚˚˚ˤ˼ËÑËáËòËøË ÌÌÌÌ/Ì@ÌOÌUÌfÌqÌ{̙̟̪̰̊ÌÅÌËÌÜÌçÌíÌıÌıÌ␍Í Í,Í4ÍDÍKÍQÍbÍmÍrÍ�ͤͲÍÂÍÎÍàÍëÍúÍüÍÎÎÎ"Î&Î4Î>ÎDÎNÎTÎ_ÎeÎgÎtÎ�΋ΰΰζνÎıĞÂ0#«ˆ§ˆ§§§Ñ§Ù§Ù§ç§ú§¨¨2¨2¨2¨:¨<¨<¨D¨F¨F¨N¨P¨P¨X¨X¨a¨g¨l¨l¨u¨�¨…¨Š¨�¨•¨•¨�¨¦¨¬¨±¨±¨¶¨Â¨Ú¨ù¨ü¨©0©0©0©8©:©:©:©B©D©D©D©L©N©N©N©V©X©X©c©c©i©n©n©n©n©u©€©’© ©®©¸©¸©¸©È©È©Ï©Ó©Ù©ñ©ÿ©ªªGªJªQªcªkªtªªªŠª�ª•ª•ª•ªœª¢ª·ª¿ªÅªçªóªùªşªşª««««'«-«-«-«-«†«Ãd$èAèA a
BBBB!B4B6BCBEBPBdBlB|B�B‡B�B’B¤BÄLWfÙ0Ù0í0ñ0ö011 11111Å\CVq0q0‡0‡0‹0�0£0¦0«0«0µ0»0»0É0Ë0Õ0Æ8(2öÑöÑÿÑÿÑ␍ÒÒÒÒ ÒǨ²Øæeæeşeff*ffWf±fœf‘f|fef·fÌf¼fçfìføf g$g9g&gEgKgKgXgg§g�g»gÖgÖgÖgâgÈ Ä>D>DSD^D†DqDeD¥D’D±DÆD³DóDŞDÒDÿD␍EE E"E-E8E8E=EjEoEœE¡E»E¨EÚEÇEæEñEFóE%FF1F6F1FLFZFbFmFoFzF…F…FŠF¥F§FÂFÂFÏFÔFóFõFGGGGÉl¥¼-- -H-+-T-t-�-†-¥-½-ª-É-Ü-ü-.!.!...M.M.W.Ê4“œ~ç~ç’ç—ç�ç¡ç¥çÄçÌç˼Lw¶‘¶‘ΑÙ‘ã‘ü‘’’’"’$’*’0’F’3’R’R’q’‰’v’•’Ÿ’¸’Ğ’Õ’Ú’Ş’à’æ’ì’“ï’““!“)“;“U“N“a“m“Ì4;DNÜNÜWÜc܂܇܉܉Ü�ÜÍ”"X¦X¦f¦x¦|¦„¦Œ¦—¦¢¦ª¦µ¦À¦Å¦Û¦â¦é¦ô¦ÿ¦§ §§§%§0§;§D§L§L§P§‡§Î€ÚöÙ4Ù4÷4û4ÿ45555.54565E5I5M5U5]5i5~5�5–5�5�5ª5¿5Ïd9Î22<2C2K2T2e2r2‡2Š2�2‘2š2¨2²2·2ß2ä2ñ23"3/3O3T3c3�3—3œ3±3İ3å3ê3ê3ı34 4$4C4T4Y4Y4{4{4{4{4{4‹4 4£4¦4ª4ª4¯4×4Ü4å4ò4ú45'545?5]5]5]5j5�5ƒ5ƒ5ƒ5�5§5©5©5¶5Í5Í5Ş5ã566'6E6E6E6R6i6k6k6k6x6�6‘6‘6�6µ6µ6Æ6Î6Ó6ù6 77;7;7;7H7_7a7a7n7…7…7š7œ7£7Å7ã7è7ï7ı78 8 8 8%8-8/8/8Q8‹8Ф/T&ä&äFähähä‡ä—äœäœä«ä½ä×äßäæäèäûäååååååå#å#å#å#å5å7å7å7å7åJåUåxåÑxµn“n“„“�“›“ “¬“·“¼“Óȓӓؓؓؓ Œ(?Î`Î`ë`ó`ú`a a&a1aHaWabafaqa}aˆa”a«aÂaÕaìabbb#b)b:b@bPbPbhbhb�b�b’b’b˜b¤b±b½bÒbébøbcc!c8cPcqcqczccccc�c˜c c¥c³cÁcÑcÖcÖcîcîcócócıcdd d,d<dGdQdUd^dwdzdŠd—d§d·d¾dÄdĞdØdãdêdîdeee e%e5eEeEere”e e¨e³eºeÅeÇeÒeÒeâeçeçeñeüeff"f/f<fFfJfSflfoff†f‹f‹fŸfŸf¤f¨f¸fÁfÓfÙfÛfÛféfïfõfg gg(g(g(g-gEgEgTgWgkg‰g”g½gÏgÚgìgğgõgüghh6h=hAhGhOhZh]i�<KVN(N(h(t(†(œ(½(ª(Õ(í(í(÷(�`l€ › ›@›G›O›Z›d›o›w›†›�›“›·›¹›É›É›×›�`àô.˜.˜D˜f˜s˜w˜†˜Ÿ˜£˜©˜¼˜Ù˜Û˜Û˜ ™ú˜Û˜+™5™�XnşÓşÓ$Ô6Ô;ÔRÔdÔnÔxÔ†Ô�Ô�Ô³ÔµÔ¾ÔÔÔâÔêÔòÔôÔÿÔ
”÷“”””(”-”-”-”_”L”k”’”’”¥”¸”˔ޔã”ã”ö” ••/•4•4•G•Z•m•€•‚•‚•••¨•»•ΕΕΕÜ•Ò0Š’çç,ç2ç6çUçvçvç|çÓ<:E±7±7º7Å7Ó7ß7ë7ô7ı78 88ÔluŒ''''1'8'O'O'T'V'b'l'z'—'™'©'©'®'°'·'é'ÕÜŸÒæ}æ}ú}$~~~?~L~X~k~^~˜~�~É~É~Î~ä~ö~ "Udœˆ·Äğõı€$€I€>€*€Y€r€^€’€~€¦€³€߀߀߀߀ç€ÖL½Ì^.^.|.�.•.´.´.Æ.Ù.æ.ß.ş./×Èg•!1!1E1I1h1Š1–1�1¨1³1À1É1É1Î1Ø1ğ1û1 222)2:2<2M2O2Q2Q2Q2Y2Y2c2c2k2s2{2ƒ2‡2‘2İ2Ø „„„2„8„Ù`FZ88!8(8*8/8>8D8Y8Y8g8g8s8|88�8—8š8¢8Ú<›¦öŸöŸÿŸ Õ
    + 5 S ^ n Û 26_6_N_`_f_r_}_‹_—_®_¹_É_Û_á_ç_í_````'`-`8`@`N`[`˜`Ü, Ş)Ş)ì)ı)*$*'*-*İ4ȄȄքà„é„ğ„÷„………ŞÄKx.õ.õZõ]õbõoõtõ†õˆõŒõ�õ“õ¦õ¿õáõêõõõüõö7ö<öUöwö|öƒöœö¾öÀöÙöûöûöûö÷*÷9÷K÷ß „ȦN¦NÄNÒNåNêNOOOO'O.O=OBONO`O`O~O‰OœO£O½OÚOæOPP5P>PMPUPbPkPpP�P�P¯P´P¼PÕPçP÷PıPQQQ]QGQ8QmQ¨Q’QƒQ¸Q»QÛQoRà<%0¨B¨BÉBÏBØBêBC C!C-Cá„ |öö#*255EPPSZagmsz€‘‘“œ¨®ÔØÛëóøøÿ"->>GLV]dlrt‚™œ«·ÄÄÄÄÊÜâó%=DNV]]fmy‰”””¨¼ÌÏŠâ„9‘6‘6­6¼6Ã6İ677*737A7S7l7l7~7”7œ7Ÿ7«7ãX{ÍŞŞ &1CQWhow�•¨½Í×Ùéù␍ &1<?F`h‚—¤§¯³ÅÔßçş$+=ELPY[m„’˜œ�«««­ÄÊÊÜä  ÕÕÕ$Õ,Õ6Õ?ÕGÕJÕSÕnÕÕ‘Õ”Õ™Õ¬ÕÄÕØÕàÕàÕòÕõÕúÕ␍Ö%Ö9ÖAÖAÖbÖeÖjÖ}ÖƒÖ˜Ö®Ö°ÖÅÖÛÖãÖãÖîÖ␍×× ×6ב83=VÒVÒ_Ò_ÒmÒqÒÒ‚Ò‡Ò’8>H�Ò�Ò—Ò—Ò¥Ò©Ò°Ò³Ò¸Ò“D*�*�*¨*»*Å*Ì*Ø*ğ*ù*ı*++4+”Ğy©~÷~÷¨÷«÷²÷¸÷¾÷À÷Æ÷Ì÷Ì÷Ş÷é÷ğ÷ı÷
8„8„A„U„Z„å,ıD��Ò�Ø�ã�ô�ù�ÿ����&�+�a�M�m�†�r�’�«�—�·�¾�Ã�Í�Ğ�Ô�Ù�ò�Ş�ş�ş�ş���� �"�&�&�F�K���m���¦�’�²�È�´�Ô�Û�à�æ�é�í�ï�‘ô�‘‘‘‘,‘U‘a‘æˆÍëQQZUUdss‚‚‘‘  ¯¯¾ÒÍÜÜëú çxÈâŞ[Ş[ü[\\ \7\7\I\O\Z\j\v\\…\‹\–\¤\±\½\Ë\Ú\Ú\ øø,ø@øFøHøOøUø_ø_øpørøyøø‰ø‰ø‰ø ø²ø¹øÈøÊøÜøëøëøıø•0+36+6+?+e+v+|+|+„+–„\y~ì~ì�ì¥ì¯ì¸ìºìÁìÑìÜìŞìèìèìîìÿìíí#í.í0íIíPíTí`ísíÆí— 
]èd�²ÎçÎçÒçåçåçÿçèèè)è)è@è@èWèWènènè…è‡è‡è‹è騯øæùæùúúú0ú0úBúMúXúiúzú‘ú•úšú�ú ú±úÃúÏúáúãúüú ûûûû"û7û7ûCûIûSû^ûlûsû‚û„ûšû´û´ûÆûê`Ëßî–î–—&—3—7—F—e—i—o—‚—Ÿ—¡—¡—Ò—À—¡—ñ—û—ëP1A0C0CFCRCZC^CoC}CƒC�C—C¢C¨C«CµCì ®-ö6ö677 7(7/767L7]7n7€7’7¡7°7Á7Ğ7Ğ7×7Û7ä7ñ7ø788 8,8,8,8,8,888<8?8G8U8]8j8r8z8‹8–8›8›8¨8®8½8Ô8Ö8á8î8ı899991939A9C9N9T9T9\9\9n9u9‹9‹9‹9�9�9¥9³9¾9Ã9Ã9Æ9Ë9Ë9ç9õ9:::: Ş)Ş)ç)*
: *˜h÷␍.^.^D^O^Z^h^s^y^Š^�^¡^§^³^Ê^Ê^Ü^í^ú^___e_™”"¾.¾.à.ê.ö.û. //&/:/I/W/e/|/„/�/�/¥/²/º/½/½/½/¿/Î/Ø/á/é/ì/ş/š�µÕ¾N¾NìNñNO␍OO O(O(O-O:OPOzOO£O«O°O·OÍOãOåOûOP5POPaP›ˆùöûöûü ü'ü.üMüRüqüvü�ü}ü¯üœü»üĞü½üïüÜüûüûüûü␍ıı3ı3ı;ıœ y}˜‡˜‡¡‡­‡²‡�(Afâfâˆâ�â–â�â â â±â±â±â¹âÁâÓâââÓâ÷âùâùâããã ã%ã?ãDãDãDãYã[ãhãjãwãyã†ã�ã–ã�ã¬ã¹ã»ãÌãÙãÙãÙãâãôãä␍äää$ä$ä9ä9ä9äDäNäfäkäkäkäyää„äŒä—ä©ä´ä¹ä¹äÀäÄäÒäÖäßäæäååå!å=åBåBåBåBåJåUåcåcåƒåƒåƒåŠå˜å§åºåÍåÏåÏåÏåâåâåéåğåõåûå␍ææ2æ[æaæaæuæzæ�æ¥æ±æÏæâæíæôæøæøæøæøæç␍çç=çHçeçoçoç}ç›çËçŞçïçèèèèè&è1èCèNèSèSèSèeè’è˜è˜è˜è£è­è¹èÄèÆèÆèÆèËè×è×è!é�H%A/A/O/V/a/o/z/‚/‚/š/¤/ª/°/Ÿ0 vSvS�SŠS©S¿S¸S×SßS T9J.'.'H'T'f'|'�'Š'µ'Æ'Ø'î'(ü''(?(?(I(¡TXi~␍~␍”␍¢␍¨␍®␍¿␍Í␍Û␍í␍ñ␍÷␍¢Lg>ı>ımıbızı•ı�ıµı¡ıÁı×ıÃı÷ıãışşş ş0ş7şDşOş[şfşnşsşş„ş˜şŸş£ş®ş³ş¾ş׺àşìşñşÿ ÿÿÿÿ.ÿ3ÿLÿaÿsÿxÿƒÿ‹ÿ‹ÿ‹ÿ�ÿ¦ÿ»ÿÆÿĞÿÛÿİÿèÿğÿğÿıÿõÿ5£àZ�@b@bZbhbmbzbˆb‘b¬bºbÜbåbõbcc*c,c.c8cDcHcUcacsc{c“c—c—c—c—cœcºcÔcÔcÛcŞcæcòcûcQd¤d{�ş*ş*+?+P+W+p+h+ˆ+¨+”+´+Å+Û+Ç+ó+,,,,",¥(vßv߄ߧ߲߲߭߸ߦ(!'şÑşÑÒÒÒÒ"Ò§D]j°8°8Ê8Ñ8Ú8æ8û89 9999 9¨„½Úx¥x¥«¥·¥»¥Ã¥Ë¥Ï¥Ú¥Ş¥â¥æ¥î¥ó¥÷¥¦¦¦ ¦0¦A¦N¦a¦h¦r¦r¦r¦„¦©€ˆ—ˆ—¡—¨—¯—¶—¼—Ì—×—á—ì—˜˜˜#˜-˜7˜>˜I˜[˜c˜c˜y˜y˜‹˜ª˜bŞ]Ş]^$^,^7^F^O^S^^^~^ƒ^�^¼^Â^Ç^Ú^__&_,_4_7_<_O_t_y_�_•_�_ _À_Å_â_```````(`H`M`g`†`Œ`‘`±`º`¿`Ş`æ`ë` aaa5a=a]aba|a›a¡a¦a¦a¦a¦a³aÄaÏaçaòabb*b>bObYb[bob€b…b�b�b½b½b½bÏb«°)Ø�Ø�û��␍���'�3�>�I�Q�\�d�g�s�{�•�»�µ�Ë�Ô� Ÿõ�ŸŸ1Ÿ<ŸXŸ_ŸƒŸ¼Ÿ¼Ÿ¼Ÿ¼Ÿ ¬0ùAŒŒ-Œ9ŒDŒNŒTŒ^ŒdŒnŒ|Œ†Œ˜Œ¢Œ¨Œ²Œ¸ŒÂŒÉŒÕŒÛŒäŒ��!�#�-�?�I�[�e�z�z�}�‡�œ�¡�±�¼�Á�Õ�è�ò����&�4�E�U�f�s�s�€�€�ˆ�–�İ�­l£:¦?¦?¿?×?ç?@@1@L@L@v@~@‚@…@‰@�@˜@›@¢@¨@¯@µ@¹@¾@È@Ù@à@ç@é@í@ö@AAAAA.A9A?AFAOAhAyA‚A‹A“A�A©AµAÆA×AãAñAóAúABB
:&:4:@:B:B:E:G:G:T:V:V:Y:Y:Y:Y:Y:b:h:l:x:˜:¥:³:º:‚;í(rx8‡8‡F‡M‡]‡`‡f‡î(ntÉ&É&Ò&Ü&ì&÷&÷&'ïTzK–í–í´íºí½íÆíĞíèíøíîî BBBABOBYBcBlB…B–BŸB¨B°B¹B¿BÃBÈBÌBÙBàBîBøB␍CC C9CJCSC\CdCmCsCwC|C‚CŒC–C²CÀCÆCËCÓCÛCãCğCøCD
îîî(î8îEîKîOîUîWîZî^î^î�î…î‹î‹î’î´îÉîÜîïîõîüîïïïï ï%ï)ï/ï@ïFïKïPï]ï_ïqïsïzï‡ï‰ï›ï›ï›ï›ï›ï¿ïÊïÖïíïíïğğ+ğOğiğnğ…ğŠğ˜ğ¯ğ´ğºğËğàğæğöğññ"ñ.ñFñRñRñRñXñ[ñ^ñwñ}ñ‘ñ—ñœñ§ñ§ñ¬ñ¹ñÆñÆñÌñÚñññ÷ñúñıñò␍òòòò&ò3ò3ò9òGò^òdògòjòqòqò‚ò‰ò–ò£ò£òªò´ò»òÁòÈòÓòçòçòóó␍óóó+ó/ó8óPóUó\ó~ó‰ó�ó—ó°óÄóÄóßóßóùóôôô7ôJônôpôzôœôœôœôµôÁôÒôêôîôÃõğ¼Ùægægşghh h*h6hAhahChmhrhrh”hÄh¨h›hæhëhii$i/iOi1i[i`isizi—iªiªiÍiÍiÙiñ ~)~)�)¦)¬)ò8�™–H–H¯H¾HÒHßHåHëHîHIó8 ¡.¡.¯.¶.Á.É.Ğ.Ö.Ü.Ü.â.ô .*.*8*@*E*õôÓŒî€î€ ��'�2�K�w���¼�æ�ì�ò�ú�ü�‚ ‚"‚-‚9‚R‚~‚—‚Âí‚ó‚ù‚ƒƒƒ)ƒ,ƒ7ƒCƒHƒaƒ�ƒ¦ƒÒƒüƒ„„„„„5„8„C„O„h„”„­„Ù„… …………$…?…B…M…Y…Y…^…d…j…r…z………—…¦…Á…Õ…ÿ…† D)D2DMDaDtD{D„D�D”D�D¦D¯DÈD¸DØDÜD6E®  �„�„�„½„įÀ�¹é'é'ò'((ù':(J(<(k(�(�(�(£(£(·(¼(¼(Ø(İ(İ(ı()))))8)8)F)j)�)°)Â)Ô)æ)ö)ö)ö)ö)ö)¿*°$bg9&9&=&U&g&�&±´ª–¹–¹°¹¿¹¿¹¹˹×¹×¹ã¹ø¹º+º=ºAºQºqºƒº‰ºœº¥º©º¯º¸º¸ºÙºݺíºúº»*»0»C»U»a»c»o»w»{»�»Š»Š»Š»Š»œ»²»¸»Ä»Ù»à»è»ô» ¼¼¼¼¼,¼6¼9¼G¼Q¼T¼f¼k¼p¼€¼ƒ¼ˆ¼˜¼›¼Ÿ¼¨¼°¼¼ʼÓ¼é¼ï¼û¼½½ ½1½7½F½W½W½^½^½^½l½z½„½‡½•½Ÿ½¢½´½¹½¾½νѽÖ½æ½é½í½ö½ş½¾¾!¾!¾,¾C¾[¾_¾k¾ƒ¾‹¾‘¾�¾¦¾ª¾²¾»¾»¾»¾Ô¾ܾâ¾ù¾¿
††+†I†]†‡†�†•†š†¬†»†Ö†ê†‡‡ ‡1‡@‡[‡o‡™‡Ÿ‡¤‡¤‡¤‡µ‡À‡ˇñ‡ ˆˆˆ)ˆ)ˆ.ˆAˆXˆ]ˆƒˆ›ˆ¦ˆ®ˆ»ˆ»ˆÀˆÓˆàˆêˆşˆ‰.‰@‰M‰x‰Œ‰£‰±‰³‰ljމމç‰ó‰ Š"Š5ŠAŠTŠXŠXŠXŠ_ŠdŠwŠƒŠšŠœŠ¡Š´ŠÀŠÍŠ׊׊éŠö€k 9 969B9B9X9c9e9�9�9�9ˆ9’9–9š9�9�9¦9ª9À9À9ö9:␍::-:2:5:::::::O:V:c:j:r:w:w:Œ:˜: :¥:¥:º:Ç:Ï:Ô:Ô:é:õ:ş:;;;0;;;^;b;p;x;};};’;¬;¶;Â;Ê;Ï;Ï;î;ú;< ¿¿¿¿¿¿/¿;¿C¿I¿O¿O¿Q¿c¿²xÖÒÖÒäÒùÒÓ Ó-ÓaÓ}Ó�Ó£Ó©ÓµÓ¾ÓÆÓÎÓĞÓÖÓÜÓèÓğÓöÓøÓşÓ³Ü,ßll<lDlTl\l‰l l¤l¬l´lºlÎlÖlÖlŞlmam<m„m‰m›mªm¬mÖmÜmåmìmômümnnn+n3n8nBnbnjnlnvn…n¥n­n¯nÏn×n×n×nânénüno␍o␍oooo'o0o8oTooo‰o³o¶oÍoÚoîop p:pTpfp�p–p˜pÂpÅpÅpÜpépıpq q#q.q9qKqZq\q†q‰q›qªq¯qÙqßqäqöqrr1r4rFrUrWr�r‡r‡r‡r‘r‘rœrÍrØrØrØrØrárírss/s6sBsIsIs\s`s`s`sgslss†s’s™s™s°s²s·sÊsÑsİsäsäsñsûsûst#t#t5t´w¸fnfn„n‡n�n¡n©nºnÇnÍnÒnÒnßnènînşn oo-o>oEoQoaoaooo‚o�o‘o¢o¢o¢o§o§o³oÂoÕoÛoàoôoúopppp+p8p>pDpIpOpUp\phpopqpvp~p€p…p‘p“p˜p p¢p§p¯p±p¶p¾pÀpÅpÏpÑpÖpàpàpàpğpğpğpq␍qqq#q+qDqJqUqYq_qjqƒq�q™qŸq¬q±q¶q¶qËqÓqÛqùqrrrr$r-r2r7rLrSr\rhrnrzr~rƒrˆr“r�r©r«r±r¾rÃrÈrárìr÷r÷rır
s sss3s>sIsOs\s\s`sesesvsxsxs‹s�s�s s¢s¢sµs·s·sÊsÌsÌsŞsŞsäséséstt t!t)t0t6t>tQt\tStltltnt†t‰t‹t—t©t¹tÅtÜtötûtu u2u7u7u=uQucunuvu~u‚u�u–u›u›u¡uµuÅuÊuÊuĞuÖuÛuÛuÛuáuğuvvvvvv"v"v'v2v>vXvnvzvzv€v�v�všv¦vµvÈvÈvÕvávávávávåvêvûv␍ww w(w*w<wAwOw[wawnwnw…w•w•w©wµw·wÀwÌwãwãwéwöwøw
x
xxxxxx‘zµ\ãö>]>]T]f]l]w]…]‘]¨]¨]º]À]Ë]Û]æ]ô]^-^(2866Tgnu|€‚‰�””œµ¿¿ÓŞìı"JNW[`q��œ°µÎßãããè + 2 E I N j ’ š £ § ¬ ½ Ï ß ó õ  ! % % % A i m v z  � ­ ­ » Ï Ô í ş !!!!!(!I!h!s!y!�! !¥!º!Ö!ş!" """%">">"L"`"b"{"Œ"�"�"—"ª"®"À"Å"á" ######4#J#Z#n#s#Œ#Ÿ#£#µ#µ#µ#µ#º#Ù#è# $$$0$A$A$A$H$[$t$t$t$ƒ$ƒ$–$­$¸$É$Î$Ô$Ş$à$ì$ì$ó$ş$%% %5%A%C%N%Z%j%q%x%‚%Š%�%’%”%™%¡%¥%·%¹%¾%Æ%Ê%Ì%Ì%Õ%â%ø%&2&>&J&Q&Q&d&h&h&h&o&t&�&š&¦&­&­&Ä&Æ&Ë&å&ñ&ı&'''''-'·˜ ˜`G`G}GŒGŒGŒG¦G¦GµGµG»G½G½GÃGÅGÅGËGÍGÍGÔGØGİGİGİGİGİGİGåGúGúGHH$H1HFHHHcHeH€H…H H¥H«H«HÀHÃHêH÷HI/I/I8I=I[IIIaIpIuI|I…I˜I I¨I­I­I­I¶IÏIÕIÕIîIüIJ,J.J6J<JDJIJIJOJOJXJiJkJ€J‚JŠJ�J˜J�J�J�J�J«J¿JÁJÕJÕJİJãJëJğJùJK
KKKKKK K K.KBKFKHKTKVKqKwKK„K�K˜K›K¡K§K°K³K³KÁKÏKÑKôKLL L$L-L/L/L4L6L>L>LYLkLpL|L‚L…LœL�L¡L±LµL¼LÅLÔLâLèLğLõLıLMM
MM/M4M>MfMqM|M‡M’M�M¨M³M¾M¾M¾MÆMÆMßMíMNNN N N(N.N0N0N6N<N<NDNMNSN_N_NfNiNˆN“N›N£N¨N¨N®N²N·NÆNËNÕNßNßNìNOOO'O8ODOKOYOhO~O„O‰O‰O�O¡O­OµOÅOÏOØOæOíOïOøOøOşO PP+P>PRPXPZPmPrPrP�P�P¡P§P°P¶P¿PÍPÒPÒPåPëPíPøP
QQQ1Q=QOQTQ`QfQiQ€Q‚Q…Q•QŸQ¢Q¢Q±QÄQÖQÛQçQíQğQR R RR R(R6R;R@R@RFRNRSRSRYRYRgRmRsR}R‡R•RªR­R¯R¹R¹R»RÃRÈRÍRÒRÒRØRàRåRåRêRõRúRÿR
SS5S7S<SASFSKSPSUSZSZS_SdS€SŠS�S²S¸SÀSÀSÎSÔSÚSäSîSüSTTT T/T4T4T4T<TATJTJTOTOTUT]TbTbTgTrTwT|T�T�T�T¡T§T§TµT»TÁTËTÕTãTøTûTıTUUUUU#U(U1U6U6U<UDUIUIUNUYU^UcUhUwUwUˆU�U�UœU¢U¨U²U¼UÊUßUâUäUîUıUVVV
VVVVV#V+V0V0V=VCVCVQVWV]VgVqVV”V—V™V£V²V·V·V·V¿VÄVÍVÒVÒVØVàVåVåVòVøVøVW WWW&W4WIWLWNWXWgWlWlWlWtWyW‚W‡W‡W‘W™W�W�W�W¤W®W´WÈWÍWÍWÓWİWãWèWèWîWüWXXXXX,X8XIXVX]XeXoX}X}X‚X‚X�X�X�X‘X–X–XœX X¥X­X³XµX¾XÍXÕXÚXàXàXèXîXüXY YYY Y Y Y Y Y Y Y Y Y Y8Y>YGYMYUYZY_YhYsY|Y„Y‰Y‰Y‰Y�Y—YœYœY Y¥Y¥Y®Y¼YÈYÕYÛYÛYäYøYøYşYZZZ$Z&Z,Z5ZIZIZRZRZRZWZ\Z\ZdZiZiZ†Z”Z Z©Z¯Z¹ZÁZÆZÆZÆZÚZãZéZûZ[[␍[␍[[[[0[:[C[E[E[E[K[O[Q[Q[Q[Q[V[\[b[f[á^¸Ğà6t6tXtntzt˜t´tÁtØtëtöt uøtu u u/u/u7uCuYunu}uˆu›u¡u¡u¡u¦u«uºuÅuÜuŞuãuòuıu
vvv"v¹”*K    8 ? F I R U X \ a � n ‘ ™ ¡ ¤ ¦ ¶ ¿ È Î Ñ â ù 
¡¡G¡ºà.¢¶;¶;Ô;ß;ğ;ó;÷;<<<$<:<K<\<n<€<�<�<¯<¾<¾<Ì<Ğ<Ô<Ù<İ<ê<ñ<ÿ<=="=0=I=K=O=Y=Y=^=^=^=c=c=r={=ƒ=™=™=™=�=�=³=¿=Ê=Ï=Ï=Ò=×=×=ó=ÿ= >>>>>>0><>H>J>J>M>O>O>\>^>^>a>a>j>p>u>‘>‘>‘>‘>‘>‘>‘>‘>‘>‘>‘>‘>“>¤>¶>Å>Ô>Ô>Ø>Ø>à>ü>?? ?»,.Ñ.Ñ<ÑCÑKÑPÑVѼ˜?a6V6VLVRVYV‰VuV•VšV¡V¡VÁV×VÃVãVWÿV W$W+W+W+W1W4W8W@WXWcWvWnW�W˜W½PQaQ%Q%_%m%t%„%•%š%·%½%Ä%Ë%Ù%å%÷%3&¾D%¾ß¾ßÒßàßæß ààà:à@àFàLàLàTà¿ô#œş/ş/000&030G0V0v0ƒ0•0·0×0å011+1B1M1n1Œ1›1¶1Á1Ü1õ1õ1292S2n2€2�2�2�2©2¼2Í2à2ğ2ı2337373C3C3C3T3a3h3‡3�3�3¡3©3´3Ì3ä3í3ı34
4.4>4N4Y4m4r4z4 4¢4­4à4ú4ú45!5)585A5I5[5z5‚5Š5•5—5§5¿5×5ï5660696B6T6b6f6j6À ȄȄфğ„õ„ÁX…WîÇîÇÈÈÈ'È,È2ÈDÈJÈbÈhȆȚȥȫÈÍÈÍÈİÈòÈôÈ÷ÈÉ ÉÉÉ)É/É5ÉAÉAÉCÉUÉ[É`É`ÉwÉwɕɕɨɵɺɺÉÑÉÚÉéÉÿÉ
ÊÊ#Ê3Ê@ÊRÊXÊbÊnÊ{Ê}Ê}ʅʊʊʒʗʗʟʤʤʬʱʱʷʼʼÊÃÊÈÊÈÊÏÊÔÊÔÊßÊäÊäÊïÊôÊôÊÿÊËËËË(Ë/Ë5Ë8ËCËFËZËgËvË}ˀ˒˔˚ˮ˻ËÊËÊËÊËÊËÔËìËÌÌ"Ì(Ì9Ì?ÌDÌNÌ_ÌpÌ̡̖̫̺̅ÌÉÌÏÌÚÌàÌõÌûÌ ÍÍÍ-Í-Í=ÍPÍ\ÍdÍtÍ{Í�Í’Í�͢ͿÍÔÍâÍòÍşÍÎÎ*Î,Î>ÎFÎKÎRÎVÎdÎnÎtÎ~΄Î�ΕΗΤαλÎàÎàÎæÎíÎ-ÑÂ0#«¸§¸§×§¨ ¨ ¨¨*¨C¨F¨b¨b¨b¨j¨l¨l¨t¨v¨v¨~¨€¨€¨ˆ¨ˆ¨‘¨—¨œ¨œ¨¥¨±¨µ¨º¨À¨Å¨Å¨Í¨Ö¨Ü¨á¨á¨æ¨ò¨
©)©,©A©`©`©`©h©j©j©j©r©t©t©t©|©~©~©~©†©ˆ©ˆ©“©“©™©�©�©�©�©¥©°©Â©Ğ©Ş©è©è©è©ø©ø©ÿ©ª ª!ª/ªBªNªwªzª�ª“ª›ª¤ª¯ª¯ªºªÀªÅªÅªÅªÌªÒªçªïªõª«#«)«.«.«5«@«@«E«W«]«]«]«]«¶«Ãd$èAèA
BBBB!B4B6BCBEBPBdBlB|B�B‡B�B’B¤BÄLWfÙ0Ù0í0ñ0ö011 11111Å\CVq0q0‡0‡0‹0�0£0¦0«0«0µ0»0»0É0Ë0Õ0Æ8(2&Ò&Ò/Ò/Ò=ÒAÒHÒKÒPÒǨ²Øff.f6fAfZfNf‡fáfÌfÁf¬f•fçfüfìfgg(gOgTgigVgug{g{gˆg¯g×g½gëghhhhÈ ÄnDnDƒD�D¶D¡D•DÕDÂDáDöDãD#EEE/E=EEEPERE]EhEhEmEšEŸEÌEÑEëEØE
F÷EF!F6F#FUFBFaFfFaF|FŠF’F�FŸFªFµFµFºFÕF×FòFòFÿFG#G%GDGDGDGLGÉl¥¼6-6-P-x-[-„-¤-½-¶-Õ-í-Ú-ù- .,.>.Q.Q.^.}.}.‡.Ê4“œ®ç®çÂçÇçÍçÑçÕçôçüç˼Lwæ‘æ‘ş‘ ’’,’D’I’N’R’T’Z’`’v’c’‚’‚’¡’¹’¦’Å’Ï’è’““
“““““2“ “>“>“Q“Y“k“…“~“‘“�“Ì4;D~Ü~܇ܓܷܹܹܾܲÜÍ”"ˆ¦ˆ¦–¦¨¦¬¦´¦¼¦Ç¦Ò¦Ú¦å¦ğ¦õ¦ §§§$§/§1§<§G§I§U§`§k§t§|§|§€§·§Î€ÚöÙ4Ù4÷4û4ÿ45555.54565E5I5M5U5]5i5~5�5–5�5�5ª5¿5Ïd9Î6262l2s2{2„2•2¢2·2º2½2Á2Ê2Ø2â2ç233!3M3R3_33„3“3¿3Ç3Ì3á3␍4444-4@4P4T4s4„4‰4‰4«4«4«4«4«4»4Ğ4Ó4Ö4Ú4Ú4ß45 55"5*5E5W5d5o5�5�5�5š5±5³5³5³5À5×5Ù5Ù5æ5ı5ı56636E6W6u6u6u6‚6™6›6›6›6¨6¿6Á6Á6Î6å6å6ö6ş67)7;7M7k7k7k7x7�7‘7‘7�7µ7µ7Ê7Ì7Ó7õ788 8-878989898U8]8_8_8�8»8Ф/TVäVävä˜ä˜ä·äÇäÌäÌäÛäíäåååå+å3å3å3å5å5å5å5åSåSåSåSåeågågågågåzå…å¨åÑxµ�“�“´“À“˓Гܓç“ì“ó“ø“””””:”'”F”H”M”X”]”]”]”�”|”›”””Õ”è”û”•••&•9•L•_•d•d•w•Š•�•°•²•²•Å•Ø•ë•ş•ş•ş• –Ò0Š’NçNç\çbçfç…ç¦ç¦ç¬çÓ<:E±7±7º7Å7Ó7ß7ë7ô7ı78 88ÔluŒ''''1'8'O'O'T'V'b'l'z'—'™'©'©'®'°'·'é'ÕÜŸÒ~~*~T~I~5~o~|~ˆ~›~�~È~Í~ù~ù~ş~&<R…”̸çô €%€-€L€T€y€n€Z€‰€¢€�€€®€Ö€ã€�����ÖL½Ì�.�.¬.¾.Å.ä.ä.ö. ///./8/×Èg•!1!1E1I1h1Š1–1�1¨1³1À1É1É1Î1Ø1ğ1û1 222)2:2<2M2O2Q2Q2Q2Y2Y2c2c2k2s2{2ƒ2‡2‘2İ2Ø @„@„N„b„h„Ù`FZ88!8(8*8/8>8D8Y8Y8g8g8s8|88�8—8š8¢8Ú<›¦& & / : E P [ e ƒ � � Û 2f_f_~_�_–_¢_­_»_Ç_Ş_é_ù_ ````0`6`?`E`W`]`h`p`~`‹`È`Ü, ***-*C*T*W*]*İ4ø„ø„……… …'…1…1…7…ŞÄKx^õ^õŠõ�õ’õŸõ¤õ¶õ¸õ¼õÀõÃõÖõïõöö%ö,öEögölö…ö§ö¬ö³öÌöîöğö ÷+÷+÷+÷@÷Z÷i÷{÷ß „ÈÖNÖNôNOOO8O>OCOIOWO^OmOrO~O�O�O®O¹OÌOÓOíO
PP1PIPePnP}P…P’P›P P±P¿PßPäPìPQQ'Q-Q8QAQGQ�QwQhQ�QØQÂQ³QèQëQ RŸRà<%0¨B¨BÉBÏBØBêBC C!C-Cá„ |&&HSZbeeu€€ƒŠ‘—�£ª°ÁÁÃÌØŞ #((/5FLR]nnw|†�”œ¢¤²ÉÌÛçôôôôú #DUmt~†��–�©¹ÄÄÄØìüÿºâ„9‘6‘6­6¼6Ã6İ677*737A7S7l7l7~7”7œ7Ÿ7«7ãX{Í9CVas�‡˜Ÿ§½ÅØíı )28=DJPValov�˜²ÇÔ×ßãõ.GKT[mu|€‰‹�´ÂÈÌÎÛÛÛİôúú ä 
h„h„q„…„Š„å,ıDæ�æ����$�)�/�2�6�6�V�[�‘�}����¢�Â�Û�Ç�ç�î�ó�ı��� �"��.�.�.�3�D�I�O�R�V�V�v�{�±���½�Ö�Â�â�ø�ä�‘ ‘‘‘‘‘ ‘8‘$‘D‘D‘D‘D‘\‘…‘‘‘æˆÍëQQZUUdss‚‚‘‘  ¯¯¾ÒÍÜÜëú çxÈâ\\,\>\D\P\g\g\y\\Š\š\¦\¯\µ\»\Æ\Ô\á\í\û\
]
]:]èd�²şçşçèèè/è6èBèBèYèYèpèpè‡è‡è�è�èµè·è·è»è騯øúú8ú?úJú`ú`úrú}úˆú™úªúÁúÅúÊúÎúĞúáúóúÿúûû,û;û?û?û?ûRûgûgûsûyûƒû�ûœû£û²û´ûÊûäûäûöûê`Ëß——4—V—c—g—v—•—™—Ÿ—²—Ï—Ñ—Ñ—˜ğ—Ñ—!˜+˜ëP1A0C0CFCRCZC^CoC}CƒC�C—C¢C¨C«CµCì ®-&7&7@7K7O7X7_7f7|7�7�7°7Â7Ñ7à7ñ7888 88!8(81888<8\8\8\8\8\8h8l8o8w8…8�8š8¢8ª8»8Æ8Ë8Ë8Ø8Ş8í89999-9096929J9a9c9q9s9~9„9„9Œ9Œ9�9¥9»9»9»9À9À9Õ9ã9î9ó9ó9ö9û9û9:%:2:4:4:8:::::V:d:p:r:r:u:w:w:„:†:†:‰:‰:‰:‰:‰:’:˜:œ:¨:È:Õ:ã:ê:²;í(rxh‡h‡v‡}‡�‡�‡–‡î(ntÉ&É&Ò&Ü&ì&÷&÷&'ïTzKÆíÆíäíêíííöíîî(î1î7î:î>î@îXîhîuî{îî…î‡îŠî�î�î±îµî»î»îÂîäîùî ï ï%ï,ï7ïAïEïHïOïUïYï_ïpïvï{ï€ï�ï�ï¡ï£ïªï·ï¹ïËïËïËïËïËïïïúïğğğ2ğ>ğ[ğğ™ğ�ğµğºğÈğßğäğêğûğññ&ñ3ñKñRñ^ñvñ‚ñ‚ñ‚ñˆñ‹ñ�ñ§ñ­ñÁñÇñÌñ×ñ×ñÜñéñöñöñüñ
ò!ò'ò*ò-ò4ò=òDòDòIòVòcòcòiòwò�ò”ò—òšò¡ò¡ò²ò¹òÆòÓòÓòÚòäòëòñòøòóóó1ó6ó=óEóLó[ó_óhó€ó…óŒó®ó¹ó¿óÇóàóôóôóôô)ô7ô>ôEôgôzô�ô ôªôÌôÌôÌôåôñôõõõóõğ¼Ùhh.h2h@hOhZhfhqh‘hsh�h¢h¢hÄhôhØhËhiiCiHiTi_iiai‹i�i£iªiÇiÚiÚiıiıi jñ ®)®)½)Ö)Ü)ò8�™ÆHÆHßHîHIIIII?Ió8 ¡.¡.¯.¶.Á.É.Ğ.Ö.Ü.Ü.â.ô ^*^*h*p*u*õôÓŒ��<�L�W�b�{�§�À�ì�‚‚"‚*‚,‚4‚O‚R‚]‚i‚‚‚®‚Ç‚ó‚ƒ#ƒ)ƒ1ƒ6ƒ>ƒYƒ\ƒgƒsƒxƒ‘ƒ½ƒÖƒ„,„2„8„@„B„J„e„h„s„„˜„Ą݄ …3…9…?…G…L…T…o…r…}…‰…‰…�…”…š…¢…ª…µ…Ç…Ö…ñ…†/†5†:†L†[†y†�†·†½†ņʆ܆놇‡D‡J‡O‡a‡p‡‹‡Ÿ‡ɇχÔ‡Ô‡Ô‡å‡ğ‡û‡!ˆ9ˆDˆLˆYˆYˆ^ˆqˆˆˆ�ˆ³ˆˈÖˆވëˆëˆğˆ‰‰‰.‰E‰^‰p‰}‰¨‰¼‰Ó‰á‰ã‰÷‰ŠŠŠ#Š9ŠRŠeŠqŠ„ŠˆŠˆŠˆŠ�ДЧгŠÊŠÌŠÑŠäŠğŠıŠ‹‹‹ö€k 9 969B9B9X9c9e9�9�9�9ˆ9’9–9š9�9�9¦9ª9À9À9ö9:␍::-:2:5:::::::O:V:c:j:r:w:w:Œ:˜: :¥:¥:º:Ç:Ï:Ô:Ô:é:õ:ş:;;;0;;;^;b;p;x;};};’;¬;¶;Â;Ê;Ï;Ï;î;ú;<
< <+<:<?<N<[<`<`<`<c<h<h<h<‡<“<�< <£<¨<¨<¨<²<º<Á<É<Ò<İ<ã<ñ<û<û<= < <+<:<?<N<[<`<`<`<c<h<h<h<‡<“<�< <£<¨<¨<¨<²<º<Á<É<Ò<İ<ã<ñ<û<û<=
="='='=:=B=B=D=D=D=I=I=P=V=Z=a=e=e=e=e=t=t=™=¢=¢=¦=´A÷(¸A¸AÆAÏAİAãAø�1öuöuvv(v>vSvavlv{v�v�v�v†v‹v™v¤vºv¼vÁvÏvÚvçvîvüvù\‘¤ö+ö+,4,,@,Y,R,q,†,s,’,¥,·,Ê,Ê,×,ö,ö,-ú8hrşFşFG&G:GIGOGUGXGyGû0�—0ˆ0ˆDˆPˆ^ˆaˆyˆ|ˆ„ˆü0S[¾Ò¾ÒÒÒÚÒçÒñÒÓıP>N°…°…¼…Ğ…Ó…ç…ï…ó…ı…††††şTš«II0ICIFIPI]IrItI†I�I¤I¤IªI­IJÿ<˜£ˆˆˆˆœˆ£ˆ¯ˆ»ˆËˆĞˆÓˆ×ˆßˆ ,0&à&à4à@àHzˆ–c–cªc¶cÁc×cÃcãcåcìc÷cd d Dƒ¾L¾LâLéLîLöLMMM(M(M*MDMJMLMNM[M[M[M[M_MnMwMMˆM�M—M�MŸM»M¿MÑMäMêMşMNNN$N+N2N;NINRNrNxN|N�N†N‰N“N–N¦ND.i.i<iFiPi`ieikiwiyi‹i‹i�i½ilåüVŞVŞjŞ€Ş�ޘޜޣާް޿ŞÁŞÁŞÕŞ×ŞàŞæŞæŞæŞæŞîŞ´FoÀCÀCæC÷CüCD␍D␍DD(D,D1DFDHDKDODVDjDnDvD‚D‰D�D•D—DŸD­DµD·DºDÏD×DßDíDñDÿD 8¾i¾iÎiÚiæiöijj"j3j;jBjXj~j˜j¥j²jÂjÈjÊjÛjıjk ="='='=:=B=B=D=D=D=I=I=P=V=Z=a=e=e=e=e=t=t=™=¢=¢=¦=´A÷(¸A¸AÆAÏAİAãAø�1&v&vDvLvXvnvƒv‘vœv«v±v±v±vv»vÉvÔvêvìvñvÿv
kk k6kAkGkMkpkôB»ˆfˆf¢f¥f¬f·fÆfÈfÓfâfâfïfıfgggg gg g&g/gBgGg\gggqgqg‡g‡g´gÈgİgãgègïgõgüghhh␍hhh%h3hKhQhVhjhth{h{h{h€h€h©h®h®h×hşhiiii␍iii i i%i+i0i0iGiQi[iai„iŠiši¦i¬iºiÁiÃi×iİiäiäiæiæiæiëiñiöiúiüiÿi www,wù\‘¤&,&,@,d,G,p,‰,‚,¡,¶,£,Â,Õ,ç,ú,ú,-&-&-0-ú8hr.G.GGGVGjGyGG…GˆG©Gû0�—`ˆ`ˆtˆ€ˆ�ˆ‘ˆ©ˆ¬ˆ´ˆü0S[îÒîÒÓ
jjjj j j$j$j2j\j˜}Ÿ��ª¯ÀÆÑáéñö ,4DKS[ckp{‰‰Ÿ Ğ1°�°�Ä�Ä�ê�ê�� �����!�1�6�6�6�;�;�Q�X�g�u�~���—�™�™�™�™� �§�®�µ�¼�Ã�Ê�Ñ�Ñ�Ó�Ó�Ù�Ş�å� ÓÓ!Ó4ÓıP>Nà…à…ì…††† †#†-†7†?†B†H†şTš«FIFI`IsIvI€I�I¢I¤I¶IÀIÔIÔIÚIİI1Jÿ<˜£¸ˆ¸ˆÌˆÓˆßˆëˆûˆ‰‰‰‰ ,0VàVàdàpàHzˆÆcÆcÚcæcñcdócddd'd3d;d DƒîLîLMMM&M@MIMKMXMXMZMtMzM|M~M‹M‹M‹M‹M�M�M§M¯M¸MÀMÇMÍMÏMëMïMNNN.N3N@N@NTN[NbNkNyN‚N¢N¨N¬N±N¶N¹NÃNÆNÖND^i^ilivi€i�i•i›i§i©i»i»i½iíilåü†Ş†ŞšŞ°Ş½ŞÈŞÌŞÓŞ×ŞàŞïŞñŞñŞßßßßßßßß´FoÀCÀCæC÷CüCD␍D␍DD(D,D1DFDHDKDODVDjDnDvD‚D‰D�D•D—DŸD­DµD·DºDÏD×DßDíDñDÿD 8îiîişi
jj&j>jDjRjcjkjrjˆj®jÈjÕjâjòjøjúj k-k4k:kHkPkfkqkwk}k kôB»¸f¸fÒfÕfÜfçföføfggg g-g0g2g2g7g<gEgPgVg_grgwgŒg—g¡g¡g·g·gägøg␍hhh h%h,h1h1h7h=hBhBhUhch{h�h†hšh¤h«h«h«h°h°hÙhŞhŞhi.i3i3i3i6i=iCiJiOiOiUi[i`i`iwi�i‹i‘i´iºiÊiÖiÜiêiñióij␍jjjjjjj!j&j*j,j/j:jFjIjKjOjOjTjTjbjŒj˜}Ÿ¾¾Úßæğö!&1;AL\dt{ƒ‹“› «¹¹Ï Ğ1à�à�ô�ô���7�;�@�@�@�L�Q�a�f�f�f�k�k���ˆ�—�¥�®�¾�Ç�É�É�É�É�Ğ�×�Ş�å�ì�ó�ú����� ��‘
+5 -5
View File
@@ -440,7 +440,7 @@ I64 Lex(CCmpCtrl *cc)
I64 i,j,k,ch; I64 i,j,k,ch;
CHash *temph; CHash *temph;
Bool str_done,neg_e; Bool str_done,neg_e;
U8 *fbuf,*buf2,*buf3,buf[LEX_MAX_IDENT]; U8 *fbuf,*buf2,*buf3,buf[STR_LEN];
cc->last_line_num=cc->lex_include_stk->line_num; cc->last_line_num=cc->lex_include_stk->line_num;
while (TRUE) { while (TRUE) {
lex_cont: lex_cont:
@@ -469,8 +469,8 @@ lex_ident:
i=0; i=0;
buf[i++]=ch; buf[i++]=ch;
while (TRUE) { while (TRUE) {
if (i>=LEX_MAX_IDENT-1) //1 for terminator if (i>=STR_LEN)
break; LexExcept(cc,"Ident limited to STR_LEN chars at ");
else if (!(ch=LexGetChar(cc))) else if (!(ch=LexGetChar(cc)))
break; break;
else if (Bt(cc->chars_bmp_alpha_numeric,ch)) else if (Bt(cc->chars_bmp_alpha_numeric,ch))
@@ -607,7 +607,7 @@ lex_float_start:
buf2=NULL; buf2=NULL;
i=0; i=0;
do { do {
j=LexInStr(cc,buf,LEX_MAX_IDENT,&str_done); j=LexInStr(cc,buf,STR_LEN,&str_done);
buf3=MAlloc(i+j); buf3=MAlloc(i+j);
if (buf2) { if (buf2) {
MemCpy(buf3,buf2,i); MemCpy(buf3,buf2,i);
@@ -748,7 +748,7 @@ lex_float_start:
buf[j++]=ch; buf[j++]=ch;
else else
break; break;
if (j>=LEX_MAX_IDENT-4) {//spare spot for '\\' next loop if (j>=STR_LEN-4) {//Spot for ['\'][ch],[ch],[0]
buf[j++]=0; buf[j++]=0;
buf3=MAlloc(i+j); buf3=MAlloc(i+j);
if (buf2) { if (buf2) {
+1 -1
View File
@@ -7,7 +7,7 @@ Option(OPTf_WARN_DUP_TYPES,ON);
KbdTypeMatic(0); KbdTypeMatic(0);
// Las Vegas is -7 during summer, -8 during winter // Las Vegas is -7 during summer, -8 during winter
local_time_offset=-7*60*60*CDATE_FREQ; //Pacific local_time_offset=-8*60*60*CDATE_FREQ; //Pacific
// Remember you can set the time in the BIOS. // Remember you can set the time in the BIOS.
//$AN,"",A="mouse_move_scale"$adjust these to set mouse move scale //$AN,"",A="mouse_move_scale"$adjust these to set mouse move scale
Binary file not shown.
+15 -4
View File
@@ -10,8 +10,6 @@ $WW,1$* I'm going to redo all my videos and make them more professional.
* Get rid of having two terms and pick one, "Disk" and "BlkDev"? I don't think so. (Probably not.) * Get rid of having two terms and pick one, "Disk" and "BlkDev"? I don't think so. (Probably not.)
* Make Bible into Tree Branches Collapsed.
* God said this is bad. $LK,"FL:::/Adam/DolDoc/DocFind.CPP,41"$ * God said this is bad. $LK,"FL:::/Adam/DolDoc/DocFind.CPP,41"$
* $LK,"ChkDsk",A="MN:ChkDsk"$ alloc unalloced. * $LK,"ChkDsk",A="MN:ChkDsk"$ alloc unalloced.
@@ -22,6 +20,9 @@ $WW,1$* I'm going to redo all my videos and make them more professional.
CArrayDim dim; CArrayDim dim;
CHashFun *fun_ptr; CHashFun *fun_ptr;
* Add Russian, Hebrew and all Greek. $LK,"TextBorder",A="MN:TextBorder"$() $LK,"RawDr",A="MN:RawDr"$().
Add aux_font $LK,"chars_bmp_alpha",A="MN:chars_bmp_alpha"$.
* Clean-up ASCII-127 delete char. * Clean-up ASCII-127 delete char.
* $LK,"StrPrintJoin",A="MN:StrPrintJoin"$(st); With st="\n\\"; * $LK,"StrPrintJoin",A="MN:StrPrintJoin"$(st); With st="\n\\";
@@ -53,6 +54,8 @@ $WW,1$* I'm going to redo all my videos and make them more professional.
* I think subswitch_start with a break in the preface fails. * I think subswitch_start with a break in the preface fails.
* Do $LK,"CTask",A="MN:CTask"$->task_flags need to be in separate cache lines?
* Add editor select just visible text for with filter. * Add editor select just visible text for with filter.
* Add change-triangle-color to mesh editor. * Add change-triangle-color to mesh editor.
@@ -208,7 +211,7 @@ so that applications can plan a big alloc.
* This $LK,"Fs->catch_except=TRUE",A="FF:::/Kernel/SrvCmd.CPP,Fs->catch_except=TRUE"$ causes problems because it * This $LK,"Fs->catch_except=TRUE",A="FF:::/Kernel/SrvCmd.CPP,Fs->catch_except=TRUE"$ causes problems because it
catches divide and out-of-mem. Not sure what to do, yet. catches divide and out-of-mem. Not sure what to do, yet.
* Make $LK,"BSPStartMP",A="MN:BSPStartMP"$() start work after boot to reset multicores. Bonus for * Make $LK,"Core0StartMP",A="MN:Core0StartMP"$() start work after boot to reset multicores. Bonus for
freeing old task memory. (Prolly never gonna do anything about this.) freeing old task memory. (Prolly never gonna do anything about this.)
* $LK,"sys_var_init_flag",A="MN:sys_var_init_flag"$ local vars. * $LK,"sys_var_init_flag",A="MN:sys_var_init_flag"$ local vars.
@@ -342,7 +345,7 @@ Offer only in approved place: $TX,"Deuteronomy 12:13-18",HTML="http://www.bibleg
Jesus' zeal for the Temple: $TX,"John 2:14-19",HTML="http://www.biblegateway.com/passage/?search=John%202:14-19&version=NIV"$ Jesus' zeal for the Temple: $TX,"John 2:14-19",HTML="http://www.biblegateway.com/passage/?search=John%202:14-19&version=NIV"$
>lspci -v >lspci -v
Size:$TX,"17294 KB",D="DD_TEMPLEOSCD_K_SIZE"$ Size:$TX,"17318 KB",D="DD_TEMPLEOSCD_K_SIZE"$
$HC,"<object width=\"640\" height=\"520\"><param name=\"movie\" value=\"http://www.youtube.com/v/E6K9zK9ZWSg\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/E6K9zK9ZWSg\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" width=\"640\" height=\"520\"></embed></object>"$ $HC,"<object width=\"640\" height=\"520\"><param name=\"movie\" value=\"http://www.youtube.com/v/E6K9zK9ZWSg\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/E6K9zK9ZWSg\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" width=\"640\" height=\"520\"></embed></object>"$
8:11 Behold, the days come, saith the Lord GOD, that I will send a 8:11 Behold, the days come, saith the Lord GOD, that I will send a
@@ -394,6 +397,14 @@ Zombie Game
$HC,"<object width=\"640\" height=\"520\"><param name=\"movie\" value=\"http://www.youtube.com/v/F27r_9oyqBI\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/F27r_9oyqBI\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" width=\"640\" height=\"520\"></embed></object>"$ $HC,"<object width=\"640\" height=\"520\"><param name=\"movie\" value=\"http://www.youtube.com/v/F27r_9oyqBI\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/F27r_9oyqBI\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" width=\"640\" height=\"520\"></embed></object>"$
Sports Game Sports Game
$HC,"<object width=\"640\" height=\"520\"><param name=\"movie\" value=\"http://www.youtube.com/v/ORXqOEGFQfE\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/ORXqOEGFQfE\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" width=\"640\" height=\"520\"></embed></object>"$ $HC,"<object width=\"640\" height=\"520\"><param name=\"movie\" value=\"http://www.youtube.com/v/ORXqOEGFQfE\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/ORXqOEGFQfE\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" width=\"640\" height=\"520\"></embed></object>"$
MachineGun
$HC,"<object width=\"640\" height=\"520\"><param name=\"movie\" value=\"http://www.youtube.com/v/wv_Q0E5PSC0\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/wv_Q0E5PSC0\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" width=\"640\" height=\"520\"></embed></object>"$
Van Gogh
$HC,"<object width=\"640\" height=\"520\"><param name=\"movie\" value=\"http://www.youtube.com/v/YBMGVu6GTDw\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/YBMGVu6GTDw\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" width=\"640\" height=\"520\"></embed></object>"$
DumbGuards
$HC,"<object width=\"640\" height=\"520\"><param name=\"movie\" value=\"http://www.youtube.com/v/OdKa9bXVinE\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/OdKa9bXVinE\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" width=\"640\" height=\"520\"></embed></object>"$
$TX,"WWW.OSDEV.ORG",HTML="http://www.osdev.org"$ $TX,"WWW.OSDEV.ORG",HTML="http://www.osdev.org"$
+17 -17
View File
@@ -2,44 +2,44 @@ $TR-UL,"Adam"$
$ID,2$$TR,"SysMsgFlags"$ $ID,2$$TR,"SysMsgFlags"$
$ID,2$sys_msg_flags[0]=0xFF; $ID,2$sys_msg_flags[0]=0xFF;
$ID,-2$$TR,"SysRegVer"$ $ID,-2$$TR,"SysRegVer"$
$ID,2$registry_version=3.110; $ID,2$registry_version=3.120;
$ID,-2$$ID,-2$$TR-UL,"TempleOS"$ $ID,-2$$ID,-2$$TR-UL,"TempleOS"$
$ID,2$$TR,"TOS"$ $ID,2$$TR,"TOS"$
$ID,2$I64 tos_code_walk_thru=105,tos_after_egypt_in_action=46; $ID,2$I64 tos_code_walk_thru=105,tos_after_egypt_in_action=46;
$ID,-2$$TR,"DiningStars"$ $ID,-2$$TR,"DiningStars"$
$ID,2$F64 best_score=9999.0000; $ID,2$F64 best_score=9999.0000;
$ID,-2$$TR,"BlackDiamond"$ $ID,-2$$TR,"CircleTrace"$
$ID,2$I64 best_score=9; $ID,2$F64 best_score=4.9425;
$ID,-2$$TR,"EagleDive"$
$ID,2$I64 best_score=4;
$ID,-2$$TR,"DunGen"$ $ID,-2$$TR,"DunGen"$
$ID,2$F64 best_score=20.5295; $ID,2$F64 best_score=20.5295;
$ID,-2$$TR,"CastleFrankenstein"$
$ID,2$F64 best_score=33.8405;
$ID,-2$$TR,"ZoneOut"$ $ID,-2$$TR,"ZoneOut"$
$ID,2$F64 best_score=50.3318; $ID,2$F64 best_score=50.3318;
$ID,-2$$TR,"Varoom"$
$ID,2$F64 best_score=46.2643;
$ID,-2$$TR,"FlapBat"$ $ID,-2$$TR,"FlapBat"$
$ID,2$F64 best_score=16.4090; $ID,2$F64 best_score=16.4090;
$ID,-2$$TR,"TimeOut"$
$ID,2$I64 best_score=22202;
$ID,-2$$TR,"RawHide"$ $ID,-2$$TR,"RawHide"$
$ID,2$F64 best_score=96.1279; $ID,2$F64 best_score=96.1279;
$ID,-2$$TR,"KeepAway"$ $ID,-2$$TR,"KeepAway"$
$ID,2$I64 best_score0=0,best_score1=9999; $ID,2$I64 best_score0=0,best_score1=9999;
$ID,-2$$TR,"BlackDiamond"$
$ID,2$I64 best_score=9;
$ID,-2$$TR,"Varoom"$
$ID,2$F64 best_score=46.2643;
$ID,-2$$TR,"CastleFrankenstein"$
$ID,2$F64 best_score=33.8405;
$ID,-2$$TR,"TimeOut"$
$ID,2$I64 best_score=22202;
$ID,-2$$TR,"Wenceslas"$ $ID,-2$$TR,"Wenceslas"$
$ID,2$F64 best_score=49.8074; $ID,2$F64 best_score=49.8074;
$ID,-2$$TR,"BomberGolf"$
$ID,2$I64 best_score=175;
$ID,-2$$TR,"XCaliber"$ $ID,-2$$TR,"XCaliber"$
$ID,2$I64 best_score=248; $ID,2$I64 best_score=248;
I64 msg_flags=1; I64 msg_flags=1;
$ID,-2$$TR,"CircleTrace"$ $ID,-2$$TR,"EagleDive"$
$ID,2$F64 best_score=4.9425; $ID,2$I64 best_score=4;
$ID,-2$$TR,"BomberGolf"$
$ID,2$I64 best_score=175;
$ID,-2$$ID,-2$$TR,"DemoCompany"$ $ID,-2$$ID,-2$$TR,"DemoCompany"$
$ID,2$$TR,"Game1"$ $ID,2$$TR,"Game1"$
$ID,2$F64 best_score=166.20441; $ID,2$F64 best_score=258.59407;
$TR,"SimpleVal"$ $TR,"SimpleVal"$
$ID,2$1267; $ID,2$1269;
$ID,-2$$ID,-2$$ID,-2$ $ID,-2$$ID,-2$$ID,-2$
+1 -1
View File
@@ -369,7 +369,7 @@ public U0 GodBooksPassage(U8 *files_find_mask,I64 len=512,
DirTreeDel(tempde1); DirTreeDel(tempde1);
} }
#define NIST_TIME_OFFSET (-7788-21-local_time_offset/CDATE_FREQ) #define NIST_TIME_OFFSET (-11455-local_time_offset/CDATE_FREQ)
#define NIST_TIME_TO_SWITCH 3 #define NIST_TIME_TO_SWITCH 3
public U0 NISTSync() public U0 NISTSync()
+4 -4
View File
@@ -497,7 +497,7 @@ U0 MPDrawIt(CTask *task,CDC *dc)
LBtr(&mp.update_not_done_flags,Gs->num); LBtr(&mp.update_not_done_flags,Gs->num);
} }
U0 APEagleDiveTask(CTask *master_task) U0 CoreAPEagleDiveTask(CTask *master_task)
{ {
CDC *dc=DCAlias(main_dc,master_task); CDC *dc=DCAlias(main_dc,master_task);
while (!mp.app_done) { while (!mp.app_done) {
@@ -605,7 +605,7 @@ U0 DrawHorizon(CDC *dc)
dc->depth_buf=old_db; dc->depth_buf=old_db;
} }
U0 BSPEagleDive() U0 Core0EagleDive()
{ {
CDC *dc=DCAlias(main_dc,Fs); CDC *dc=DCAlias(main_dc,Fs);
I64 i,xx,yy,height,bkcolor,cx=Fs->pix_width>>1,cy=Fs->pix_height>>1; I64 i,xx,yy,height,bkcolor,cx=Fs->pix_width>>1,cy=Fs->pix_height>>1;
@@ -808,7 +808,7 @@ U0 Init(I64 _mp_cnt)
z=64 *COORDINATE_SCALE*MAP_SCALE; z=64 *COORDINATE_SCALE*MAP_SCALE;
for (i=1;i<mp.mp_cnt;i++) for (i=1;i<mp.mp_cnt;i++)
Spawn(&APEagleDiveTask,Fs,"AP EagleDive",i); Spawn(&CoreAPEagleDiveTask,Fs,"AP EagleDive",i);
Fs->task_end_cb=&TaskEndCB; Fs->task_end_cb=&TaskEndCB;
game_t0=tS; game_t0=tS;
} }
@@ -900,7 +900,7 @@ U0 EagleDive(I64 _mp_cnt=MP_MAX_PROCESSORS)
è =Wrap(è); è =Wrap(è);
é2=Wrap(é2); é2=Wrap(é2);
} else } else
BSPEagleDive; Core0EagleDive;
} while (ch!=CH_SHIFT_ESC && ch!=CH_ESC); } while (ch!=CH_SHIFT_ESC && ch!=CH_ESC);
catch catch
PutExcept; PutExcept;
+6 -3
View File
@@ -5,7 +5,9 @@ You can save it as a binary file with:
You can load it with: You can load it with:
U64 *my_font=FileRead("filename.BIN.Z"); U64 *my_font=FileRead("filename.BIN.Z");
text.font=my_font; //preserve text.font if you want to go back. text.aux_font=my_font;
<CTRL-ALT-f> will toggle main font and aux_font.
If you want to change the system font permanently, If you want to change the system font permanently,
save to a file with this font editor program save to a file with this font editor program
@@ -16,13 +18,14 @@ See $LK,"::/Demo/ExtendedChars.CPP"$ and $LK,"::/Demo/ScreenCodes.CPP"$.
*/ */
#define BLOW_UP_CHAR_X (18*FONT_WIDTH) #define BLOW_UP_CHAR_X (18*FONT_WIDTH)
#define BLOW_UP_CHAR_Y (2*FONT_HEIGHT) #define BLOW_UP_CHAR_Y (4*FONT_HEIGHT)
U8 cur_ch; U8 cur_ch;
U0 DrawIt(CTask *task,CDC *dc) U0 DrawIt(CTask *task,CDC *dc)
{ {
I64 i,j,k,c; I64 i,j,k,c;
TextPrint(task,0,0,BLUE<<4+YELLOW,"Press <CTRL-ALT-f> to Toggle Aux Font.");
k=0; k=0;
for (i=0;i<16;i++) for (i=0;i<16;i++)
for (j=0;j<16;j++) { for (j=0;j<16;j++) {
@@ -33,7 +36,7 @@ U0 DrawIt(CTask *task,CDC *dc)
c=(YELLOW<<4+BLUE)<<8 + k++; c=(YELLOW<<4+BLUE)<<8 + k++;
} else } else
c=(BLUE<<4+WHITE)<<8 + k++; c=(BLUE<<4+WHITE)<<8 + k++;
TextChar(task,,j,i,c); TextChar(task,,j,i+2,c);
} }
k=0; k=0;
+1 -1
View File
@@ -27,7 +27,7 @@ U0 GrDemo()
"$$GREEN$$Rate:$$RED$$%5.1f FPS$$FG$$" "$$GREEN$$Rate:$$RED$$%5.1f FPS$$FG$$"
" $$GREEN$$Load@30Hz:$$RED$$%5.1f%%$$FG$$\n",1/t,100*t*30.0; " $$GREEN$$Load@30Hz:$$RED$$%5.1f%%$$FG$$\n",1/t,100*t*30.0;
} }
//<CTRL-ALT-f> will flush screen VGA cache. //<CTRL-ALT-v> will flush screen VGA cache.
VGAFlush; VGAFlush;
} }
+1 -1
View File
@@ -121,7 +121,7 @@ It is not normal to by-pass the TempleOS graphcis routines.
The TempleOS graphics don't know VGA has changed. The TempleOS graphics don't know VGA has changed.
This bit tells TempleOS to update whole screen. This bit tells TempleOS to update whole screen.
*/ */
//<CTRL-ALT-f> will flush screen VGA cache. //<CTRL-ALT-v> will flush screen VGA cache.
VGAFlush; VGAFlush;
} }
+3 -3
View File
@@ -5,7 +5,7 @@ TempleOS keeps a cached copy of VGA memory in
$LK,"gr.screen_image",A="MN:CGrGlbls"$. See $LK,"GrUpdateVGAGraphics",A="MN:GrUpdateVGAGraphics"$. $LK,"gr.screen_image",A="MN:CGrGlbls"$. See $LK,"GrUpdateVGAGraphics",A="MN:GrUpdateVGAGraphics"$.
TempleOS used 4096 size pages for memory below addr 2 Meg TempleOS used 4096 size pages for memory below addr 2 Meg
and 2 Meg pages above two Meg. See $LK,"MemPageSize",A="MN:MemPageSize"$() and $LK,"INIT_MEMORY",A="FF:::/Kernel/MemA.CPP,SYS_INIT_MEM"$. and 2 Meg pages above two Meg. See $LK,"MemPageSize",A="MN:MemPageSize"$() and $LK,"INIT_MEMORY",A="FF:::/Kernel/Mem/PageTables.CPP,SYS_INIT_MEM"$.
*/ */
U0 PageTableDemo1() U0 PageTableDemo1()
@@ -28,7 +28,7 @@ U0 PageTableDemo1()
// SetRAX(0x100000+0x1000*(MEM_NUM_PML1+MEM_NUM_PML2+MEM_NUM_PML3)); // SetRAX(0x100000+0x1000*(MEM_NUM_PML1+MEM_NUM_PML2+MEM_NUM_PML3));
// MOV_CR3_EAX // MOV_CR3_EAX
//<CTRL-ALT-f> will flush screen VGA cache. //<CTRL-ALT-v> will flush screen VGA cache.
VGAFlush; VGAFlush;
PressAKey; PressAKey;
@@ -37,7 +37,7 @@ U0 PageTableDemo1()
InvlPg(VGAM_GRAPHICS); InvlPg(VGAM_GRAPHICS);
InvlPg(VGAM_GRAPHICS+0x1000); InvlPg(VGAM_GRAPHICS+0x1000);
//<CTRL-ALT-f> will flush screen VGA cache. //<CTRL-ALT-v> will flush screen VGA cache.
VGAFlush; VGAFlush;
} }
+1 -1
View File
@@ -39,7 +39,7 @@ That means no read-modify-writes, too.
//TempleOS has a 4 plane memory duplicate of the screen, $LK,"gr.screen_image",A="MN:CGrGlbls"$, //TempleOS has a 4 plane memory duplicate of the screen, $LK,"gr.screen_image",A="MN:CGrGlbls"$,
//and only writes actual changes. See $LK,"GrUpdateVGAGraphics",A="MN:GrUpdateVGAGraphics"$(). //and only writes actual changes. See $LK,"GrUpdateVGAGraphics",A="MN:GrUpdateVGAGraphics"$().
//<CTRL-ALT-f> will flush screen VGA cache. //<CTRL-ALT-v> will flush screen VGA cache.
VGAFlush; VGAFlush;
} }
+1 -1
View File
@@ -1 +1 @@
Z¶ϊ5Ρ§?πWΜτ™£Ο?§¦O�x·�?/΅ξV�OΫ?@ο��ξ*ά? $Υώϊγ?ΰ"ϋ©/η?J3™®ΐ*λ?`έ¶¦c�λ?Υ*«b3ύν? ξ½{���¥?g±»Σσ Ψ?[βη Ω‡Ϊ?\ςta6‘ή?1bO΅‹•ί?ήa&KΩΕί?φ—Έ0Με?[»-a�-λ?ωΉ«ϋ«ν?8’χ�ο?
+10 -10
View File
@@ -1,11 +1,11 @@
//This is sorted. //This is sorted.
0.209918 0.081829
0.227671 0.111027
0.252834 0.133980
0.282144 0.156361
0.283027 0.219912
0.388650 0.340922
0.663171 0.718021
0.694189 0.871259
0.888085 0.932122
0.998097 0.942353
+1 -1
View File
@@ -1 +1 @@
@ο��ξ*ά?J3™®ΐ*λ?Z¶ϊ5Ρ§? $Υώϊγ?§¦O�x·�?`έ¶¦c�λ?Υ*«b3ύν?πWΜτ™£Ο?ΰ"ϋ©/η?/΅ξV�OΫ? [βη Ω‡Ϊ?φ—Έ0Με?[»-a�-λ?ήa&KΩΕί?1bO΅‹•ί?\ςta6‘ή?8’χ�ο?g±»Σσ Ψ?ωΉ«ϋ«ν?ξ½{���¥?
+10 -10
View File
@@ -1,11 +1,11 @@
//This is unsorted. //This is unsorted.
0.283027 0.871259
0.998097 0.718021
0.663171 0.111027
0.694189 0.156361
0.252834 0.219912
0.388650 0.081829
0.227671 0.133980
0.282144 0.932122
0.209918 0.340922
0.888085 0.942353
+2 -2
View File
@@ -674,7 +674,7 @@
161.0.62.51 - - [10/Feb/2015:16:15:27 -0800] "GET /Wb/Home/Wb2/Downloads.html HTTP/1.1" 200 7086 "http://www.templeos.org/" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36" "www.templeos.org" 161.0.62.51 - - [10/Feb/2015:16:15:27 -0800] "GET /Wb/Home/Wb2/Downloads.html HTTP/1.1" 200 7086 "http://www.templeos.org/" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36" "www.templeos.org"
88.41.247.103 - - [10/Feb/2015:16:16:59 -0800] "GET /Wb/Doc/AboutTempleOS.html HTTP/1.1" 200 4925 "http://www.templeos.org/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36" "www.templeos.org" 88.41.247.103 - - [10/Feb/2015:16:16:59 -0800] "GET /Wb/Doc/AboutTempleOS.html HTTP/1.1" 200 4925 "http://www.templeos.org/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36" "www.templeos.org"
69.206.243.192 - - [10/Feb/2015:16:21:17 -0800] "GET /Wb/Doc/AboutTempleOS.html HTTP/1.1" 200 4925 "http://www.templeos.org/" "Mozilla/5.0 (Linux; U; Android 4.4.4; pl-pl; GT-I9505 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 XiaoMi/MiuiBrowser/2.0.1" "www.templeos.org" 69.206.243.192 - - [10/Feb/2015:16:21:17 -0800] "GET /Wb/Doc/AboutTempleOS.html HTTP/1.1" 200 4925 "http://www.templeos.org/" "Mozilla/5.0 (Linux; U; Android 4.4.4; pl-pl; GT-I9505 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 XiaoMi/MiuiBrowser/2.0.1" "www.templeos.org"
52.53.176.53 - - [10/Feb/2015:16:26:28 -0800] "GET /Wb/Kernel/MemC.html HTTP/1.1" 200 173397 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)" "www.templeos.org" 52.53.176.53 - - [10/Feb/2015:16:26:28 -0800] "GET /Wb/Kernel/Mem/HeapCtrl.html HTTP/1.1" 200 173397 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)" "www.templeos.org"
202.176.251.67 - - [10/Feb/2015:16:33:00 -0800] "GET /Wb/Adam/Opt/Utils/S2T.html HTTP/1.1" 200 38162 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" "www.templeos.org" 202.176.251.67 - - [10/Feb/2015:16:33:00 -0800] "GET /Wb/Adam/Opt/Utils/S2T.html HTTP/1.1" 200 38162 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" "www.templeos.org"
52.53.176.179 - - [10/Feb/2015:16:39:02 -0800] "GET /Wb/Adam/DolDoc/DocInit.CPP.Z HTTP/1.1" 200 1786 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)" "www.templeos.org" 52.53.176.179 - - [10/Feb/2015:16:39:02 -0800] "GET /Wb/Adam/DolDoc/DocInit.CPP.Z HTTP/1.1" 200 1786 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)" "www.templeos.org"
141.23.85.107 - - [10/Feb/2015:16:43:09 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org" 141.23.85.107 - - [10/Feb/2015:16:43:09 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org"
@@ -783,7 +783,7 @@
58.71.218.57 - - [10/Feb/2015:20:07:23 -0800] "GET /files/History HTTP/1.1" 301 101 "http://www.templeos.org/Wb/Home/Wb2/History.html" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org" 58.71.218.57 - - [10/Feb/2015:20:07:23 -0800] "GET /files/History HTTP/1.1" 301 101 "http://www.templeos.org/Wb/Home/Wb2/History.html" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org"
58.71.218.57 - - [10/Feb/2015:20:07:23 -0800] "GET /files/History/ HTTP/1.1" 200 3176 "http://www.templeos.org/Wb/Home/Wb2/History.html" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org" 58.71.218.57 - - [10/Feb/2015:20:07:23 -0800] "GET /files/History/ HTTP/1.1" 200 3176 "http://www.templeos.org/Wb/Home/Wb2/History.html" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org"
77.26.170.124 - - [10/Feb/2015:20:08:46 -0800] "GET / HTTP/1.1" 200 6329 "http://disqus.com/embed/comments/?base=default&version=d1b39333cdab5cb490d069fe62825a04&f=hausdorff&t_u=http%3A%2F%2Fblog.nullspace.io%2Fkernel-latency.html&t_d=84%25%20of%20a%20single-threaded%201KB%20write%20in%20Redis%20is%20spent%20in%20the%20kernel&t_t=84%25%20of%20a%20single-threaded%201KB%20write%20in%20Redis%20is%20spent%20in%20the%20kernel&s_o=default" "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org" 77.26.170.124 - - [10/Feb/2015:20:08:46 -0800] "GET / HTTP/1.1" 200 6329 "http://disqus.com/embed/comments/?base=default&version=d1b39333cdab5cb490d069fe62825a04&f=hausdorff&t_u=http%3A%2F%2Fblog.nullspace.io%2Fkernel-latency.html&t_d=84%25%20of%20a%20single-threaded%201KB%20write%20in%20Redis%20is%20spent%20in%20the%20kernel&t_t=84%25%20of%20a%20single-threaded%201KB%20write%20in%20Redis%20is%20spent%20in%20the%20kernel&s_o=default" "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org"
194.182.202.170 - - [10/Feb/2015:20:15:33 -0800] "GET /Wb/Kernel/KernelA.html HTTP/1.1" 200 2050776 "http://www.templeos.org/Wb/Kernel/MemB.html" "Mozilla/5.0 (X11; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org" 194.182.202.170 - - [10/Feb/2015:20:15:33 -0800] "GET /Wb/Kernel/KernelA.html HTTP/1.1" 200 2050776 "http://www.templeos.org/Wb/Kernel/Mem/MAllocFree.html" "Mozilla/5.0 (X11; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org"
126.106.40.164 - - [10/Feb/2015:20:16:35 -0800] "GET / HTTP/1.1" 200 6329 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36" "www.templeos.org" 126.106.40.164 - - [10/Feb/2015:20:16:35 -0800] "GET / HTTP/1.1" 200 6329 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36" "www.templeos.org"
52.53.176.129 - - [10/Feb/2015:20:19:30 -0800] "GET /Wb/Kernel/?D=A HTTP/1.1" 200 12449 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)" "www.templeos.org" 52.53.176.129 - - [10/Feb/2015:20:19:30 -0800] "GET /Wb/Kernel/?D=A HTTP/1.1" 200 12449 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)" "www.templeos.org"
126.106.40.164 - - [10/Feb/2015:20:21:18 -0800] "GET /files/ASU_Transcripts.pdf HTTP/1.1" 200 13602 "http://www.templeos.org/Wb/Home/Wb2/TempleOS.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36" "www.templeos.org" 126.106.40.164 - - [10/Feb/2015:20:21:18 -0800] "GET /files/ASU_Transcripts.pdf HTTP/1.1" 200 13602 "http://www.templeos.org/Wb/Home/Wb2/TempleOS.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36" "www.templeos.org"
+1 -1
View File
@@ -209,7 +209,7 @@
15.88.159.153 - - [12/Feb/2015:03:17:28 -0800] "GET /Wb/Home/Wb2/ScreenShots.html HTTP/1.1" 200 3353 "http://www.templeos.org/Wb/Home/Wb2/TempleOS.html" "Mozilla/5.0 (Linux; Android 4.4.2; LG-D850 Build/KVT49L.D85010f) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36" "www.templeos.org" 15.88.159.153 - - [12/Feb/2015:03:17:28 -0800] "GET /Wb/Home/Wb2/ScreenShots.html HTTP/1.1" 200 3353 "http://www.templeos.org/Wb/Home/Wb2/TempleOS.html" "Mozilla/5.0 (Linux; Android 4.4.2; LG-D850 Build/KVT49L.D85010f) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36" "www.templeos.org"
15.88.159.153 - - [12/Feb/2015:03:17:28 -0800] "GET /Wb/Home/Wb2/Imgs/MenuV0104.BMP HTTP/1.1" 200 153718 "http://www.templeos.org/Wb/Home/Wb2/ScreenShots.html" "Mozilla/5.0 (Linux; Android 4.4.2; LG-D850 Build/KVT49L.D85010f) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36" "www.templeos.org" 15.88.159.153 - - [12/Feb/2015:03:17:28 -0800] "GET /Wb/Home/Wb2/Imgs/MenuV0104.BMP HTTP/1.1" 200 153718 "http://www.templeos.org/Wb/Home/Wb2/ScreenShots.html" "Mozilla/5.0 (Linux; Android 4.4.2; LG-D850 Build/KVT49L.D85010f) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36" "www.templeos.org"
15.88.159.150 - - [12/Feb/2015:03:17:28 -0800] "GET /Wb/Home/Wb2/Imgs/ToTheFront.BMP HTTP/1.1" 200 90050 "http://www.templeos.org/Wb/Home/Wb2/ScreenShots.html" "Mozilla/5.0 (Linux; Android 4.4.2; LG-D850 Build/KVT49L.D85010f) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36" "www.templeos.org" 15.88.159.150 - - [12/Feb/2015:03:17:28 -0800] "GET /Wb/Home/Wb2/Imgs/ToTheFront.BMP HTTP/1.1" 200 90050 "http://www.templeos.org/Wb/Home/Wb2/ScreenShots.html" "Mozilla/5.0 (Linux; Android 4.4.2; LG-D850 Build/KVT49L.D85010f) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36" "www.templeos.org"
18.199.184.33 - - [12/Feb/2015:03:17:50 -0800] "GET /Wb/Kernel/MemB.html HTTP/1.1" 200 233249 "http://www.templeos.org/Wb/Doc/HolyC.html" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org" 18.199.184.33 - - [12/Feb/2015:03:17:50 -0800] "GET /Wb/Kernel/Mem/MAllocFree.html HTTP/1.1" 200 233249 "http://www.templeos.org/Wb/Doc/HolyC.html" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org"
96.11.7.110 - - [12/Feb/2015:03:18:13 -0800] "GET /Wb/Home/Wb2/Files/VanGogh/?S=D HTTP/1.1" 200 1007 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)" "www.templeos.org" 96.11.7.110 - - [12/Feb/2015:03:18:13 -0800] "GET /Wb/Home/Wb2/Files/VanGogh/?S=D HTTP/1.1" 200 1007 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)" "www.templeos.org"
15.79.75.90 - - [12/Feb/2015:03:18:16 -0800] "GET /files/ASU_Transcripts.pdf HTTP/1.1" 200 13602 "-" "Dalvik/1.6.0 (Linux; U; Android 4.4.2; LG-D850 Build/KVT49L.D85010f)" "www.templeos.org" 15.79.75.90 - - [12/Feb/2015:03:18:16 -0800] "GET /files/ASU_Transcripts.pdf HTTP/1.1" 200 13602 "-" "Dalvik/1.6.0 (Linux; U; Android 4.4.2; LG-D850 Build/KVT49L.D85010f)" "www.templeos.org"
18.199.184.33 - - [12/Feb/2015:03:18:20 -0800] "GET /Wb/Doc/DolDocOverview.html HTTP/1.1" 200 48077 "http://www.templeos.org/Wb/Doc/HolyC.html" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org" 18.199.184.33 - - [12/Feb/2015:03:18:20 -0800] "GET /Wb/Doc/DolDocOverview.html HTTP/1.1" 200 48077 "http://www.templeos.org/Wb/Doc/HolyC.html" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org"
+15 -1
View File
@@ -2,7 +2,21 @@
Use $LK,"R",A="MN:R"$() to rename if I change a label. Use $LK,"R",A="MN:R"$() to rename if I change a label.
$IV,1$----09/27/15 21:18:10----$IV,0$ $IV,1$----11/03/15 22:40:18----$IV,0$
* Added $FG,2$CTRL-ALT-f$FG$ to toggle an aux font.
* $FG,2$CTRL-ALT-v$FG$ is now flush VGA cache.
* Added $LK,"BibleDoc",A="MN:BibleDoc"$ to present Bible with tree widgets.
* Fixed $FG,2$CTRL-ALT-C$FG$ bug.
$IV,1$----11/01/15 21:44:46----$IV,0$
* $BK,1$TempleOS version 3.12 Released$BK,0$
* Created $FG,2$/Kernel/Mem$FG$ directory.
$IV,1$----10/08/15 10:17:55----$IV,0$
* $LK,"R",A="MN:R"$("$FG,4$BSP$FG$","$FG,4$Core0$FG$");
$IV,1$----10/06/15 06:30:49----$IV,0$
* Added $LK,"TaskFocusNext",A="MN:TaskFocusNext"$().
$IV,1$----09/27/15 11:46:44----$IV,0$ $IV,1$----09/27/15 11:46:44----$IV,0$
* Got rid of preemption. * Got rid of preemption.
+2 -4
View File
@@ -1,6 +1,6 @@
$WW,1$$FG,5$$TX+CX,"Clearing-up Confusions"$$FG$ $WW,1$$FG,5$$TX+CX,"Clearing-up Confusions"$$FG$
* I, $FG,2$Terry A. Davis$FG$, wrote every one of the $TX,"119,216",D="DD_TEMPLEOS_LOC"$ lines of TempleOS over the past $TX,"12.2",D="DD_TEMPLEOS_AGE"$ years (full-time). It runs on bare hardware with no layering, libraries, tools, modules or anything from other sources. It's 100% independent and stands alone. It has no networking and certainly doesn't call home. Every line of TempleOS src code is including in all distro's, from the kernel to the compiler to the boot loaders. See $LK,"::/Doc/Credits.TXT"$. * I, $FG,2$Terry A. Davis$FG$, wrote every one of the $TX,"118,706",D="DD_TEMPLEOS_LOC"$ lines of TempleOS over the past $TX,"12.2",D="DD_TEMPLEOS_AGE"$ years (full-time). It runs on bare hardware with no layering, libraries, tools, modules or anything from other sources. It's 100% independent and stands alone. It has no networking and certainly doesn't call home. Every line of TempleOS src code is including in all distro's, from the kernel to the compiler to the boot loaders. See $LK,"::/Doc/Credits.TXT"$.
* TempleOS does not execute code not written by me and any time except for a few $FG,2$BIOS$FG$ calls for configuration. See $LK,"::/Doc/Credits.TXT"$. * TempleOS does not execute code not written by me and any time except for a few $FG,2$BIOS$FG$ calls for configuration. See $LK,"::/Doc/Credits.TXT"$.
@@ -26,14 +26,12 @@ $WW,1$$FG,5$$TX+CX,"Clearing-up Confusions"$$FG$
* I use the term $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.TXT,JIT Compile Mode"$. This means it is compiled and executable code placed into mem, ready to be called. * I use the term $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.TXT,JIT Compile Mode"$. This means it is compiled and executable code placed into mem, ready to be called.
* Files with names ending in $FG,2$.Z$FG$ are compressed, not encrypted. $LK,"Copy",A="MN:Copy"$() or rename them with $LK,"Move",A="MN:Move"$() to store them uncompressed. * Files with names ending in $FG,2$.Z$FG$ are individually compressed, not encrypted. $LK,"Copy",A="MN:Copy"$() or rename them with $LK,"Move",A="MN:Move"$() to store them uncompressed.
* TempleOS is open src and every bit of the src code is included in the distro. Use $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$() to compile the kernel and compiler. * TempleOS is open src and every bit of the src code is included in the distro. Use $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$() to compile the kernel and compiler.
* TempleOS does not use object files or a linker. * TempleOS does not use object files or a linker.
* The swap rate is high because tasks stay in the queue and poll conditions and swap-out voluntarily. Swaps also occur at $FG,2$$TX,"1000 Hz",D="DD_JIFFY_HZ"$$FG$ due to the timer interrupt. See $LK,"JIFFY_FREQ",A="MN:JIFFY_FREQ"$.
* Refresh rate is how often TempleOS updates screen mem. It is not syncronized to the hardware rate. It has nothing to do with it. * Refresh rate is how often TempleOS updates screen mem. It is not syncronized to the hardware rate. It has nothing to do with it.
* No application has a lock on the speaker so apps can interfere with each other and TempleOS makes speaker noise during disk access on purpose. * No application has a lock on the speaker so apps can interfere with each other and TempleOS makes speaker noise during disk access on purpose.
+1 -1
View File
@@ -4,7 +4,7 @@ $WW,1$$FG,5$$TX+CX,"Credits"$$FG$
2) $LK,"ATA Reg and Cmd Definitions",A="MN:ATA_NOP"$ are originally from Linux. Later, I got the spec. 2) $LK,"ATA Reg and Cmd Definitions",A="MN:ATA_NOP"$ are originally from Linux. Later, I got the spec.
3) The heap algorithm, $LK,"::/Kernel/MemB.CPP"$, is adapted from one I saw at Ticketmaster when I worked on their VAX operating system. 3) The heap algorithm, $LK,"::/Kernel/Mem/MAllocFree.CPP"$, is adapted from one I saw at Ticketmaster when I worked on their VAX operating system.
4) The LZW compression algorithm, $LK,"::/Kernel/Compress.CPP"$, came from a magazine and I implemented it when I worked for Ticketmaster. 4) The LZW compression algorithm, $LK,"::/Kernel/Compress.CPP"$, came from a magazine and I implemented it when I worked for Ticketmaster.
+1 -1
View File
@@ -28,7 +28,7 @@ $LK,"/Kernel/PCIBIOS.CPP",A="FI:::/Kernel/PCIBIOS.CPP"$ :290 could be eliminate
* Perhaps, Intel can make a fast software interrupt, the same as a CALL REL32? Perhaps, we have a new x86 mode for TempleOS? * Perhaps, Intel can make a fast software interrupt, the same as a CALL REL32? Perhaps, we have a new x86 mode for TempleOS?
* Since I don't use paging (for anything), Intel should have an option for no-paging long mode, and optimize it. * Since I don't use paging (for anything), Intel should have an option for no-paging long mode, and optimize it.
$LK,"::/Kernel/MemA.CPP"$ :153 lines to identity-map gets eliminated. $LK,"::/Kernel/Mem/PageTables.CPP"$ :153 lines to identity-map gets eliminated.
* Desktop computers must have a reset switch and a fast reboot option, skipping diagnostics. I recommend booting TempleOS when the reset button is pressed and booting UEFI when the power button is pressed. Or, we could build UEFI on a TempleOS layer. Intel must burn TempleOS into a ROM in the factory for all desktop x86 CPUs to ensure tamper-proof trust in the oracle and because God deserves the glory. There will be just an English version. A new ROM version is released every seven years. * Desktop computers must have a reset switch and a fast reboot option, skipping diagnostics. I recommend booting TempleOS when the reset button is pressed and booting UEFI when the power button is pressed. Or, we could build UEFI on a TempleOS layer. Intel must burn TempleOS into a ROM in the factory for all desktop x86 CPUs to ensure tamper-proof trust in the oracle and because God deserves the glory. There will be just an English version. A new ROM version is released every seven years.
+4 -4
View File
@@ -8,7 +8,7 @@ $FG,2$ACD$FG$ AutoComplete Dictionary
$FG,2$Addr$FG$ Address $FG,2$Addr$FG$ Address
$FG,2$Alloc$FG$ Allocate $FG,2$Alloc$FG$ Allocate
$FG,2$AOT$FG$ Ahead-of-Time $FG,2$AOT$FG$ Ahead-of-Time
$FG,2$AP$FG$ Application Processor(CPU#>0) $FG,2$AP$FG$ ApplicationProcessor (Core1 - Core7)
$FG,2$Arg$FG$ Argument $FG,2$Arg$FG$ Argument
$FG,2$Asm$FG$ Assemble, Assembler or Assembly $FG,2$Asm$FG$ Assemble, Assembler or Assembly
$FG,2$Attr$FG$ Attribute $FG,2$Attr$FG$ Attribute
@@ -17,7 +17,6 @@ $FG,2$BG$FG$ Backround
$FG,2$Bin$FG$ Binary $FG,2$Bin$FG$ Binary
$FG,2$Blk$FG$ Block $FG,2$Blk$FG$ Block
$FG,2$Bmp$FG$ BitMap $FG,2$Bmp$FG$ BitMap
$FG,2$BSP$FG$ Boot-strap Processor(CPU#0)
$FG,2$Buf$FG$ Buffer $FG,2$Buf$FG$ Buffer
$FG,2$Bwd$FG$ Backward $FG,2$Bwd$FG$ Backward
$FG,2$CB$FG$ Call-Back, Code Block $FG,2$CB$FG$ Call-Back, Code Block
@@ -119,6 +118,7 @@ $FG,2$Sec$FG$ Second, Secondary
$FG,2$$FG,2$Sect$FG$ Sector $FG,2$$FG,2$Sect$FG$ Sector
$FG,2$Seq$FG$ Sequence $FG,2$Seq$FG$ Sequence
$FG,2$Snd$FG$ Sound $FG,2$Snd$FG$ Sound
$FG,2$SP$FG$ SingleProcessor
$FG,2$Src$FG$ Source $FG,2$Src$FG$ Source
$FG,2$Srv$FG$ Servant $FG,2$Srv$FG$ Servant
$FG,2$Stat$FG$ Status, Statistic $FG,2$Stat$FG$ Status, Statistic
@@ -252,6 +252,6 @@ $ID,-2$$TR,"Join"$
$ID,2$When two parts of a program have a common low-level routine, that routine is often labeled SomethingJoin. $ID,2$When two parts of a program have a common low-level routine, that routine is often labeled SomethingJoin.
$ID,-2$$TR,"user_data"$ $ID,-2$$TR,"user_data"$
$ID,2$Many operating system structures have space set aside for you to store values. You are on your own managing these with multiple applications and libraries. $ID,2$Many operating system structures have space set aside for you to store values. You are on your own managing these with multiple applications and libraries.
$ID,-2$$TR,"Multicore BSP/AP Processors"$ $ID,-2$$TR,"Multicore Core0/CoreAP"$
$ID,2$The $FG,2$boot-strap processor$FG$ is core#0, has the $FG,2$Adam task$FG$, and it is the master. The $FG,2$application processors$FG$ have Seth tasks and are the slave processors. Only the $FG,2$BSP$FG$ core#0 processor's tasks can have windows. More or less, applications are launched exclusively from the $FG,2$BSP$FG$ processor. It is the master. The only way slave cores get used is if the application explicitly $LK,"Spawn",A="MN:Spawn"$s() a task on them or $LK,"JobQue",A="MN:JobQue"$() a job on them. $ID,2$Core#0, has the $FG,2$Adam task$FG$, and it is the master. The $FG,2$application processors$FG$ have Seth tasks and are the slave processors. Only core#0 tasks can have windows and can launch applications. Slave cores are used if the application explicitly $LK,"Spawn",A="MN:Spawn"$s() a task or $LK,"JobQue",A="MN:JobQue"$() a job on them.
$ID,-2$ $ID,-2$
+1 -1
View File
@@ -55,6 +55,6 @@ $ID,-2$
$WW,1$* Note: There is a break in the data-heap block pool. This has no effect except the obvious effect that fragmentation has on contiguous requests. I can $LK,"MAlloc",A="MN:MAlloc"$() an 8 Gig chunk on my 12 Gig machine. $WW,1$* Note: There is a break in the data-heap block pool. This has no effect except the obvious effect that fragmentation has on contiguous requests. I can $LK,"MAlloc",A="MN:MAlloc"$() an 8 Gig chunk on my 12 Gig machine.
* Note: For systems with less than 2 Gig RAM, the code and data heap block pools are the same. For systems with 2-4 Gig of RAM, the code heap is 1/4 of the total. See $LK,"HeapsInit",A="MN:HeapsInit"$(). * Note: For systems with less than 2 Gig RAM, the code and data heap block pools are the same. For systems with 2-4 Gig of RAM, the code heap is 1/4 of the total. See $LK,"BlkPoolsInit",A="MN:BlkPoolsInit"$().
* See $LK,"Independent HeapCtrl Example",A="FA:::/Kernel/KEnd.CPP,Independent HeapCtrl Example"$. * See $LK,"Independent HeapCtrl Example",A="FA:::/Kernel/KEnd.CPP,Independent HeapCtrl Example"$.
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -94,7 +94,7 @@ U0 WinDerivedValsUpdate(CTask *task=NULL)
{//Those things calculated from other variables. {//Those things calculated from other variables.
if (!task) task=Fs; if (!task) task=Fs;
//Assert: This is called with TASKLf_TASK_LOCK set //Assert: This is called with TASKf_TASK_LOCK set
PUSHFD PUSHFD
CLI CLI
task->win_width =task->win_right-task->win_left+1; task->win_width =task->win_right-task->win_left+1;
+6 -11
View File
@@ -334,13 +334,6 @@ U0 Dr(CTask *task=NULL)
"RIP:%016X\n",task->rip; "RIP:%016X\n",task->rip;
} }
U0 OverRideSingleUserSwap()
{//You never need this, probably.
Bool old_single=SingleUser(OFF);
Yield;
SingleUser(old_single);
}
U8 *SysGetStr2(I64) U8 *SysGetStr2(I64)
{ {
U8 buf[512]; U8 buf[512];
@@ -458,7 +451,7 @@ U0 G(U8 *ip=INVALID_PTR,CTask *task=NULL)
">B2;\t\t\t//Clear all break points\n" ">B2;\t\t\t//Clear all break points\n"
">G2;\t\t\t//Clear all break points and Go\n\n" ">G2;\t\t\t//Clear all break points and Go\n\n"
"After resuming, <CTRL-ALT-t> changes focus task\n" "After resuming, <CTRL-ALT-t> changes focus task\n"
"After resuming, <CTRL-ALT-f> flushes screen VGA cache\n"; "After resuming, <CTRL-ALT-v> flushes screen VGA cache\n";
else { else {
LBtr(&task->task_flags,TASKf_DISABLE_BPTS); LBtr(&task->task_flags,TASKf_DISABLE_BPTS);
LBtr(&task->rflags,RFLAGf_TRAP);//No single step LBtr(&task->rflags,RFLAGf_TRAP);//No single step
@@ -534,12 +527,12 @@ U0 DbgHelp()
">G2;\t\t\t\t//B2;VGAFlush;WinFocus;G;\n" ">G2;\t\t\t\t//B2;VGAFlush;WinFocus;G;\n"
">Exit;\t\t\t\t//Exit (kill) task.\n\n" ">Exit;\t\t\t\t//Exit (kill) task.\n\n"
"After resuming, <CTRL-ALT-t> changes focus task.\n" "After resuming, <CTRL-ALT-t> changes focus task.\n"
"After resuming, <CTRL-ALT-f> flushes screen VGA cache.\n\n"; "After resuming, <CTRL-ALT-v> flushes screen VGA cache.\n\n";
} }
U0 Dbg2() U0 Dbg2()
{ {
Bool old_win_inhibit,old_waiting_msg; Bool old_win_inhibit,old_waiting_msg,old_single;
I64 i,old_getstr2; I64 i,old_getstr2;
U8 buf[200]; U8 buf[200];
if (IsRaw) { if (IsRaw) {
@@ -555,8 +548,10 @@ U0 Dbg2()
kbd.scan_code=0; kbd.scan_code=0;
old_getstr2=fp_getstr2; old_getstr2=fp_getstr2;
fp_getstr2=&SysGetStr2; fp_getstr2=&SysGetStr2;
old_single=SingleUser(OFF);
while (!mouse.install_attempts) while (!mouse.install_attempts)
OverRideSingleUserSwap; Yield;
SingleUser(old_single);
UserTaskCont; UserTaskCont;
fp_getstr2=old_getstr2; fp_getstr2=old_getstr2;
Fs->win_inhibit=old_win_inhibit; Fs->win_inhibit=old_win_inhibit;
+5 -3
View File
@@ -67,6 +67,8 @@ U0 SysGlblsInit()
U0 SysGrInit() U0 SysGrInit()
{ {
text.font=sys_font_8x8; text.font=sys_font_8x8;
text.aux_font=MAlloc(256*FONT_HEIGHT);
MemCpy(text.aux_font,text.font,256*FONT_HEIGHT);
if (!Bt(&sys_run_level,RLf_VGA)) { //if text mode if (!Bt(&sys_run_level,RLf_VGA)) { //if text mode
text.cols=80; text.cols=80;
text.rows=25; text.rows=25;
@@ -133,7 +135,7 @@ U0 KernelMain()
{//Continued from $LK,"Kernel",A="FF:::/Kernel/KStart.CPP,I32 &Kernel"$ {//Continued from $LK,"Kernel",A="FF:::/Kernel/KStart.CPP,I32 &Kernel"$
OutU8(0x61,InU8(0x61)&~3); //Snd(0); OutU8(0x61,InU8(0x61)&~3); //Snd(0);
adam_task=Fs; adam_task=Fs;
HeapsInit; BlkPoolsInit;
LBts(&sys_run_level,RLf_FULL_HEAP); LBts(&sys_run_level,RLf_FULL_HEAP);
SysGlblsInit; SysGlblsInit;
Mem32DevInit; Mem32DevInit;
@@ -148,7 +150,7 @@ U0 KernelMain()
TaskDerivedValsUpdate; TaskDerivedValsUpdate;
SysDefinesLoad; SysDefinesLoad;
BSPInit; Core0Init;
IntInit1; IntInit1;
//Before this point use $LK,"Snd",A="MN:Snd"$() and $LK,"BusyWait",A="MN:BusyWait"$() //Before this point use $LK,"Snd",A="MN:Snd"$() and $LK,"BusyWait",A="MN:BusyWait"$()
@@ -184,7 +186,7 @@ U0 KernelMain()
#exe { #exe {
if (!kernel_cfg->opts[CFG_NO_MP]) if (!kernel_cfg->opts[CFG_NO_MP])
StreamPrint("\"MultiCore Start\\n\\n\";" StreamPrint("\"MultiCore Start\\n\\n\";"
"BSPStartMP;" "Core0StartMP;"
"LBts(&sys_run_level,RLf_MP);"); "LBts(&sys_run_level,RLf_MP);");
}; };
+3
View File
@@ -8,6 +8,7 @@ import Bool DocUnlock(CDoc *doc);
import Bool Ed(U8 *link_st,I64 edf_dof_flags=0); import Bool Ed(U8 *link_st,I64 edf_dof_flags=0);
extern U0 AdamErr(U8 *fmt,...); extern U0 AdamErr(U8 *fmt,...);
extern U0 AdamLog(U8 *fmt,...); extern U0 AdamLog(U8 *fmt,...);
extern I64 BIOSTotalMem();
extern I64 BlkDevAdd(CBlkDev *bd,Bool one_drv,Bool make_free); extern I64 BlkDevAdd(CBlkDev *bd,Bool one_drv,Bool make_free);
extern U0 BlkDevChk(CBlkDev *bd); extern U0 BlkDevChk(CBlkDev *bd);
extern Bool BlkDevLock(CBlkDev *bd); extern Bool BlkDevLock(CBlkDev *bd);
@@ -47,6 +48,8 @@ extern I64 FileWrite(U8 *filename,U8 *fbuf,I64 size,CDate cdt=0,I64 attr=0);
extern I64 FlushMsgs(CTask *task=NULL); extern I64 FlushMsgs(CTask *task=NULL);
extern I64 GetChar(I64 *scan_code=NULL,Bool echo=TRUE,Bool raw_cursor=FALSE); extern I64 GetChar(I64 *scan_code=NULL,Bool echo=TRUE,Bool raw_cursor=FALSE);
extern I64 GetS(U8 *buf,I64 size,Bool allow_ext=TRUE); extern I64 GetS(U8 *buf,I64 size,Bool allow_ext=TRUE);
extern CHeapCtrl *HeapCtrlInit(CHeapCtrl *hc=NULL,
CTask *task=NULL,CBlkPool *bp);
extern Bool ISO1FileFind(CDrv *dv,I64 cur_dir_cluster,U8 *name, extern Bool ISO1FileFind(CDrv *dv,I64 cur_dir_cluster,U8 *name,
CDirEntry *_result,I64 fuf_flags=0); CDirEntry *_result,I64 fuf_flags=0);
extern Bool ISODrvInit(CDrv *dv,I64 blk); extern Bool ISODrvInit(CDrv *dv,I64 blk);
+1 -3
View File
@@ -45,9 +45,7 @@ IRQ_TIMER:: //I_TIMER
MOV EAX,U32 LAPIC_EOI MOV EAX,U32 LAPIC_EOI
MOV U32 [RAX],0 MOV U32 [RAX],0
JMP @@25 JMP @@25
@@20: CALL &IntCore0TimerHandler //Only Core 0 calls this. @@20: CALL &IntCore0TimerHandler //Only Core 0 calls this.
@@25: JMP I32 RESTORE_RSI_TASK @@25: JMP I32 RESTORE_RSI_TASK
//************************************ //************************************
INT_FAULT:: INT_FAULT::
@@ -80,7 +78,7 @@ INT_FAULT::
PUSH U64 CTask.fault_num[RSI] PUSH U64 CTask.fault_num[RSI]
MOV RSI,CTask.rsi[RSI] MOV RSI,CTask.rsi[RSI]
CALL &Fault2 //See $LK,"Fault2",A="FF:::/Kernel/KDbg.CPP,Fault2"$ CALL &Fault2 //See $LK,"Fault2",A="FF:::/Kernel/KDbg.CPP,Fault2"$
JMP I32 RESTORE_FS_TASK_WITH_KEY_CHECK JMP I32 RESTORE_FS_TASK
INT_FAULT_ERR_CODE_BITMAP:: INT_FAULT_ERR_CODE_BITMAP::
DU32 0x00027D00,0,0,0,0,0,0,0; DU32 0x00027D00,0,0,0,0,0,0,0;
+2 -2
View File
@@ -244,12 +244,12 @@ Bool Raw(Bool val)
{//Switches to direct screen, non-windowed output. {//Switches to direct screen, non-windowed output.
if (!val) if (!val)
VGAFlush; VGAFlush;
return !LBEqu(&Fs->task_flags,TASKf_NOT_RAW,!val); return !LBEqu(&Fs->display_flags,DISPLAYf_NOT_RAW,!val);
} }
Bool IsRaw() Bool IsRaw()
{//Are we in BLACK & WHITE raw screen mode? {//Are we in BLACK & WHITE raw screen mode?
return !Bt(&Fs->task_flags,TASKf_NOT_RAW); return !Bt(&Fs->display_flags,DISPLAYf_NOT_RAW);
} }
Bool SingleUser(Bool val) Bool SingleUser(Bool val)
+6 -6
View File
@@ -16,7 +16,7 @@ because it is #included first. $LK,"Kernel.PRJ",A="FF:::/Kernel/Kernel.PRJ,KSta
*/ */
USE16 USE16
SYS_KERNEL:: //This must match $LK,"CKernel",A="MN:CKernel"$. SYS_KERNEL:: //This must match $LK,"CKernel",A="MN:CKernel"$.
JMP U16 BSP_16BIT_INIT JMP U16 CORE0_16BIT_INIT
//************************************ //************************************
// ASM Global vars required for 16-bit start-up // ASM Global vars required for 16-bit start-up
@@ -52,7 +52,7 @@ SYS_PCI_BUSSES:: DU16 0;
#assert $$-SYS_KERNEL==sizeof(CKernel)-sizeof(CBinFile) #assert $$-SYS_KERNEL==sizeof(CKernel)-sizeof(CBinFile)
//************************************ //************************************
BSP_16BIT_INIT:: CORE0_16BIT_INIT::
//EBX is $LK,"SYS_BOOT_SRC",A="FF:::/Kernel/KStart.CPP,[SYS_BOOT_SRC]"$. (Val passed from boot blk, $LK,"BootHD",A="FF:::/Adam/Opt/Boot/BootHD.CPP,BOOT_SRC_HARDDRV"$, $LK,"BootDVD",A="FF:::/Adam/Opt/Boot/BootDVD.CPP,BOOT_SRC_DVD"$, & $LK,"BootRAM",A="FF:::/Adam/Opt/Boot/Reboot.CPP,BOOT_SRC_RAM"$.) //EBX is $LK,"SYS_BOOT_SRC",A="FF:::/Kernel/KStart.CPP,[SYS_BOOT_SRC]"$. (Val passed from boot blk, $LK,"BootHD",A="FF:::/Adam/Opt/Boot/BootHD.CPP,BOOT_SRC_HARDDRV"$, $LK,"BootDVD",A="FF:::/Adam/Opt/Boot/BootDVD.CPP,BOOT_SRC_DVD"$, & $LK,"BootRAM",A="FF:::/Adam/Opt/Boot/Reboot.CPP,BOOT_SRC_RAM"$.)
MOV AX,(BOOT_RAM_LIMIT-BOOT_STK_SIZE)/16 MOV AX,(BOOT_RAM_LIMIT-BOOT_STK_SIZE)/16
MOV SS,AX MOV SS,AX
@@ -172,8 +172,8 @@ The assembler doesn't support far jumps so we hand code it.
To complete the switch to 32-bit mode, we have to load To complete the switch to 32-bit mode, we have to load
the code segment with a far jump. the code segment with a far jump.
*/ */
DU8 0x66,0xEA; //JMP CGDT.boot_cs:BSP_32BIT_INIT DU8 0x66,0xEA; //JMP CGDT.boot_cs:CORE0_32BIT_INIT
DU32 BSP_32BIT_INIT; DU32 CORE0_32BIT_INIT;
DU16 CGDT.boot_cs; DU16 CGDT.boot_cs;
#assert $$+16<=0xFFFF #assert $$+16<=0xFFFF
@@ -231,7 +231,7 @@ SYS_CACHE_LINE_WIDTH:: DU64 DFT_CACHE_LINE_WIDTH;
SYS_SEMAS:: DU8 NUM_SYS_SEMAS*SEMA_STRUCT_SIZE DUP(0); SYS_SEMAS:: DU8 NUM_SYS_SEMAS*SEMA_STRUCT_SIZE DUP(0);
//************************************ //************************************
ALIGN 16,OC_NOP ALIGN 16,OC_NOP
BSP_32BIT_INIT:: //Entry point for $LK,"RAMReboot",A="MN:RAMReboot"$. CORE0_32BIT_INIT:: //Entry point for $LK,"RAMReboot",A="MN:RAMReboot"$.
PUSH U32 RFLAGG_START PUSH U32 RFLAGG_START
POPFD POPFD
MOV EAX,SYS_START_CR0 MOV EAX,SYS_START_CR0
@@ -367,7 +367,7 @@ USE32
WRMSR WRMSR
MOV EBX,BOOT_SRC_RAM MOV EBX,BOOT_SRC_RAM
MOV EAX,I32 BSP_32BIT_INIT MOV EAX,I32 CORE0_32BIT_INIT
JMP EAX JMP EAX
SYS_RAM_REBOOT_END:: SYS_RAM_REBOOT_END::
USE64 USE64
+4 -4
View File
@@ -251,14 +251,14 @@ U0 TaskDerivedValsUpdate(CTask *task=NULL,Bool update_z_buf=TRUE)
if (!task) task=Fs; if (!task) task=Fs;
PUSHFD PUSHFD
CLI CLI
while (LBts(&task->locked_flags,TASKLf_TASK_LOCK)) while (LBts(&task->task_flags,TASKf_TASK_LOCK))
PAUSE PAUSE
WinDerivedValsUpdate(task); WinDerivedValsUpdate(task);
if (fp_update_ctrls) if (fp_update_ctrls)
(*fp_update_ctrls)(task); (*fp_update_ctrls)(task);
if (update_z_buf && Bt(&task->display_flags,DISPLAYf_SHOW)) if (update_z_buf && Bt(&task->display_flags,DISPLAYf_SHOW))
LBts(&sys_semas[SYS_SEMA_UPDATE_WIN_Z_BUF],0); LBts(&sys_semas[SYS_SEMA_UPDATE_WIN_Z_BUF],0);
LBtr(&task->locked_flags,TASKLf_TASK_LOCK); LBtr(&task->task_flags,TASKf_TASK_LOCK);
POPFD POPFD
} }
@@ -442,7 +442,7 @@ I64 TaskEnd()
if (LBtr(&task->display_flags,DISPLAYf_SHOW)) if (LBtr(&task->display_flags,DISPLAYf_SHOW))
LBts(&sys_semas[SYS_SEMA_UPDATE_WIN_Z_BUF],0); LBts(&sys_semas[SYS_SEMA_UPDATE_WIN_Z_BUF],0);
while (LBts(&task->locked_flags,TASKLf_TASK_LOCK)) while (LBts(&task->task_flags,TASKf_TASK_LOCK))
PAUSE PAUSE
while (LBts(&task->srv_ctrl.flags,SVCRf_LOCKED)) while (LBts(&task->srv_ctrl.flags,SVCRf_LOCKED))
PAUSE PAUSE
@@ -478,7 +478,7 @@ I64 TaskEnd()
TaskQueRem(task); TaskQueRem(task);
LBtr(&task->srv_ctrl.flags,SVCRf_LOCKED); LBtr(&task->srv_ctrl.flags,SVCRf_LOCKED);
LBtr(&task->locked_flags,TASKLf_TASK_LOCK); LBtr(&task->task_flags,TASKf_TASK_LOCK);
if (sys_winmgr_task) { if (sys_winmgr_task) {
task->next_task=Gs->dying_task_lst; task->next_task=Gs->dying_task_lst;
+1237 -1230
View File
File diff suppressed because it is too large. Load diff
+1 -3
View File
@@ -23,12 +23,10 @@
#include "KernelB.HPP" #include "KernelB.HPP"
#include "KExts" #include "KExts"
#include "StrA" #include "StrA"
#include "MemA"
#include "KGlbls" #include "KGlbls"
#include "MemB"
#include "KMathB" #include "KMathB"
#include "Sched" #include "Sched"
#include "MemC" #include "Mem/MakeMem"
#include "Font8x8" #include "Font8x8"
#include "StrB" #include "StrB"
#include "KHashA" #include "KHashA"
+19 -23
View File
@@ -2071,8 +2071,6 @@ class CAOTCtrl
#define TK_INS_BINARY_SIZE 0x126 #define TK_INS_BINARY_SIZE 0x126
#define TK_NUM_TK 0x127 #define TK_NUM_TK 0x127
#define LEX_MAX_IDENT 134 //Max is 132
class CLexHashTableContext class CLexHashTableContext
{ {
CLexHashTableContext *next; CLexHashTableContext *next;
@@ -3219,26 +3217,26 @@ public class CTaskSettings
}; };
#help_index "Task" #help_index "Task"
//Border ATTR src //CTask.border_src
#define BDS_CONST 0 #define BDS_CONST 0
#define BDS_CUR_DRV 1 #define BDS_CUR_DRV 1
#define BDS_ED_FILENAME_DRV 2 #define BDS_ED_FILENAME_DRV 2
//Task title src //CTask.title_src
#define TTS_CONST 0 #define TTS_CONST 0
#define TTS_LOCKED_CONST 1 //This is not strictly enforced #define TTS_LOCKED_CONST 1 //This is not strictly enforced
#define TTS_TASK_NAME 2 #define TTS_TASK_NAME 2
#define TTS_ED_FILENAME 3 #define TTS_ED_FILENAME 3
#define TTS_CUR_LEX 4 #define TTS_CUR_LEX 4
// TASK task flags //CTask.task_flags
#define TASKf_KILL_TASK 0 #define TASKf_TASK_LOCK 0
#define TASKf_SUSPENDED 1 #define TASKf_KILL_TASK 1
#define TASKf_IDLE 2 #define TASKf_SUSPENDED 2
#define TASKf_INPUT_FILTER_TASK 3 #define TASKf_IDLE 3
#define TASKf_FILTER_INPUT 4 #define TASKf_INPUT_FILTER_TASK 4
#define TASKf_HAS_SONG 5 #define TASKf_FILTER_INPUT 5
#define TASKf_NOT_RAW 6 #define TASKf_HAS_SONG 6
#define TASKf_DISABLE_BPTS 7 #define TASKf_DISABLE_BPTS 7
#define TASKf_AWAITING_MSG 8 #define TASKf_AWAITING_MSG 8
#define TASKf_BREAK_LOCKED 9 #define TASKf_BREAK_LOCKED 9
@@ -3247,14 +3245,13 @@ public class CTaskSettings
#define TASKf_KILL_AFTER_DBG 12 #define TASKf_KILL_AFTER_DBG 12
#define TASKf_NONTIMER_RAND 13 #define TASKf_NONTIMER_RAND 13
//locked flags //CTask.display_flags
#define TASKLf_TASK_LOCK 0
#define DISPLAYf_SHOW 0 #define DISPLAYf_SHOW 0
#define DISPLAYf_SILENT 1 #define DISPLAYf_NOT_RAW 1
#define DISPLAYf_NO_BORDER 2 #define DISPLAYf_SILENT 2
#define DISPLAYf_WIN_ON_TOP 3 #define DISPLAYf_NO_BORDER 3
#define DISPLAYf_CHILDREN_NOT_ON_TOP 4 #define DISPLAYf_WIN_ON_TOP 4
#define DISPLAYf_CHILDREN_NOT_ON_TOP 5
#define TASK_SIGNATURE_VAL 'TskS' #define TASK_SIGNATURE_VAL 'TskS'
#define TASK_NAME_LEN 31 #define TASK_NAME_LEN 31
@@ -3268,9 +3265,8 @@ class CTaskStk
public class CTask //The Fs segment reg points to current CTask. public class CTask //The Fs segment reg points to current CTask.
{ {
CTask *addr; //Self-addressed ptr CTask *addr; //Self-addressed ptr
U32 task_signature,pad; U32 task_signature;
I64 task_flags,locked_flags; U32 task_flags,display_flags,win_inhibit;
U32 display_flags,win_inhibit;
I64 wake_jiffy; I64 wake_jiffy;
CHeapCtrl *code_heap,*data_heap; CHeapCtrl *code_heap,*data_heap;
@@ -3554,7 +3550,7 @@ public class CTextGlbls
I64 raw_col,raw_flags; I64 raw_col,raw_flags;
U8 *raw_screen_image; U8 *raw_screen_image;
I64 rows,cols; //Use TEXT_ROWS,TEXT_COLS I64 rows,cols; //Use TEXT_ROWS,TEXT_COLS
U64 *font; U64 *font,*aux_font;
}; };
#define FONT_WIDTH 8 #define FONT_WIDTH 8
+1 -1
View File
@@ -232,7 +232,7 @@ public _extern SYS_PROGRESSES
#help_file "::/Doc/MultiCore" #help_file "::/Doc/MultiCore"
public _extern SYS_CPU_STRUCTS CCPU *cpu_structs; //$LK,"Gs",A="MN:Gs"$ points to cur $LK,"CCPU",A="MN:CCPU"$. public _extern SYS_CPU_STRUCTS CCPU *cpu_structs; //$LK,"Gs",A="MN:Gs"$ points to cur $LK,"CCPU",A="MN:CCPU"$.
public _extern SYS_MP_CNT I64 mp_cnt; //Count of cores public _extern SYS_MP_CNT I64 mp_cnt; //Count of cores
_extern SYS_MP_CNT_INITIAL I64 mp_cnt_initial; //only used during $LK,"BSPStartMP",A="MN:BSPStartMP"$ _extern SYS_MP_CNT_INITIAL I64 mp_cnt_initial; //only used during $LK,"Core0StartMP",A="MN:Core0StartMP"$
_extern SYS_MP_CNT_LOCK I64 mp_cnt_lock; _extern SYS_MP_CNT_LOCK I64 mp_cnt_lock;
_extern SYS_SEMAS CSema sys_semas[NUM_SYS_SEMAS]; _extern SYS_SEMAS CSema sys_semas[NUM_SYS_SEMAS];
+2 -3
View File
@@ -581,8 +581,8 @@ public extern U0 QSortI64(I64 *base,I64 num,
public extern U0 ProgressBarsRst(); public extern U0 ProgressBarsRst();
#help_index "MultiCore" #help_index "MultiCore"
extern U0 APSethTask(); extern U0 Core0StartMP();
extern U0 BSPStartMP(); extern U0 CoreAPSethTask();
public extern U0 MPInt(U8 num,I64 cpu_num=1); public extern U0 MPInt(U8 num,I64 cpu_num=1);
public extern U0 MPIntAll(U8 num); public extern U0 MPIntAll(U8 num);
public extern U0 MPNMInt(); public extern U0 MPNMInt();
@@ -666,7 +666,6 @@ public extern U0 SleepUntil(I64 wake_jiffy);
#help_index "Task/Misc" #help_index "Task/Misc"
extern U0 (*fp_update_ctrls)(CTask *task); extern U0 (*fp_update_ctrls)(CTask *task);
public extern U0 OverRideSingleUserSwap();
public extern U0 TSSBusy(I64 tr,Bool val=OFF); public extern U0 TSSBusy(I64 tr,Bool val=OFF);
public extern U0 TaskDerivedValsUpdate(CTask *task=NULL,Bool update_z_buf=TRUE); public extern U0 TaskDerivedValsUpdate(CTask *task=NULL,Bool update_z_buf=TRUE);
public extern U0 WinDerivedValsUpdate(CTask *task=NULL); public extern U0 WinDerivedValsUpdate(CTask *task=NULL);
+8 -2
View File
@@ -150,7 +150,7 @@ U0 CtrlAltE(I64)
U0 CtrlAltF(I64) U0 CtrlAltF(I64)
{ {
VGAFlush; SwapI64(&text.font,&text.aux_font);
} }
U0 CtrlAltM(I64) U0 CtrlAltM(I64)
@@ -163,6 +163,11 @@ U0 CtrlAltT(I64)
LBts(sys_ctrl_alt_flags,SYSf_CTRL_ALT_TAB); LBts(sys_ctrl_alt_flags,SYSf_CTRL_ALT_TAB);
} }
U0 CtrlAltV(I64)
{
VGAFlush;
}
U0 CtrlAltX(I64) U0 CtrlAltX(I64)
{ {
LBts(sys_ctrl_alt_flags,SYSf_CTRL_ALT_X); LBts(sys_ctrl_alt_flags,SYSf_CTRL_ALT_X);
@@ -204,8 +209,9 @@ U0 KeyDevInit()
CtrlAltCBSet('C',&CtrlAltC,"Cmd /Break Execution",,TRUE); CtrlAltCBSet('C',&CtrlAltC,"Cmd /Break Execution",,TRUE);
CtrlAltCBSet('D',&CtrlAltD,"Cmd /Enter Debugger",,TRUE); CtrlAltCBSet('D',&CtrlAltD,"Cmd /Enter Debugger",,TRUE);
CtrlAltCBSet('E',&CtrlAltE,"Cmd /Spawn New User Task"); CtrlAltCBSet('E',&CtrlAltE,"Cmd /Spawn New User Task");
CtrlAltCBSet('F',&CtrlAltF,"Cmd /VGA Flush",,TRUE); CtrlAltCBSet('F',&CtrlAltF,"Cmd /Toggle Aux Font");
CtrlAltCBSet('M',&CtrlAltM,"Cmd /Toggle Mute"); CtrlAltCBSet('M',&CtrlAltM,"Cmd /Toggle Mute");
CtrlAltCBSet('T',&CtrlAltT,"Cmd /Switch Focus to Next Task",,TRUE); CtrlAltCBSet('T',&CtrlAltT,"Cmd /Switch Focus to Next Task",,TRUE);
CtrlAltCBSet('V',&CtrlAltV,"Cmd /VGA Flush",,TRUE);
CtrlAltCBSet('X',&CtrlAltX,"Cmd /Kill Focused Task",,TRUE); CtrlAltCBSet('X',&CtrlAltX,"Cmd /Kill Focused Task",,TRUE);
} }
+72
View File
@@ -0,0 +1,72 @@
U0 BlkPoolAdd(CBlkPool *bp,CMemBlk *m,I64 pages512)
{//Add mem to BlkPool.
if (sys_mem_init_flag)
MemSet(m,sys_mem_init_val,pages512*512);
PUSHFD
CLI
while (LBts(&bp->locked_flags,BPlf_LOCKED))
PAUSE
m->next=bp->mem_free_lst;
m->pages=pages512;
m->mb_signature=MBS_UNUSED_SIGNATURE_VAL;
bp->alloced_u8s+=pages512<<PAGE_BITS;
bp->mem_free_lst=m;
LBtr(&bp->locked_flags,BPlf_LOCKED);
POPFD
}
U0 BlkPoolInit(CBlkPool *bp,I64 pages512)
{//Make mem chunk into a BlkPool.
I64 num;
CMemBlk *m;
MemSet(bp,0,sizeof(CBlkPool));
m=(bp(U8 *)+sizeof(CBlkPool)+PAGE_SIZE-1)&~(PAGE_SIZE-1);
num=(bp(U8 *)+pages512<<PAGE_BITS-m(U8 *))>>PAGE_BITS;
bp->alloced_u8s=(pages512-num)<<PAGE_BITS; //Compensate before num added.
BlkPoolAdd(bp,m,num);
}
U0 BlkPoolsInit()
{
I64 i,total,lo,hi,code_heap_limit;
CMemE820 *m20=SYS_MEM_E820;
Bool first=TRUE;
total=BIOSTotalMem;
if (total<=0x80000000)
code_heap_limit=total;
else if (total<=0x100000000)
code_heap_limit=total/4;
else
code_heap_limit=0x80000000;
i=code_heap_limit-0x1000000;
BlkPoolAdd(sys_code_bp,0x1000000,i>>PAGE_BITS);
sys_heap_limit=i+0x1000000-1;
if (code_heap_limit<total) {
while (m20->type) {
if (m20->type==1) {
lo=m20->base;
hi=m20->base+m20->len;
if (lo<code_heap_limit) {
if (hi>code_heap_limit)
lo=code_heap_limit;
else
hi=lo; //cancel
}
if (code_heap_limit<=lo<hi) {
if (first) {
BlkPoolInit(lo,(hi-lo)>>PAGE_BITS);
sys_data_bp=lo;
Fs->data_heap=HeapCtrlInit(,Fs,sys_data_bp);
first=FALSE;
} else
BlkPoolAdd(sys_data_bp,lo,(hi-lo)>>PAGE_BITS);
}
}
m20++;
}
}
}
+45
View File
@@ -0,0 +1,45 @@
CHeapCtrl *HeapCtrlInit(CHeapCtrl *hc=NULL,CTask *task=NULL,CBlkPool *bp)
{//Called by $LK,"Adam Task",A="FF:::/Kernel/KStart.CPP,CHeapCtrl.bp"$.
if (!hc)
hc=ACAlloc(sizeof(CHeapCtrl));
hc->hc_signature=HEAP_CTRL_SIGNATURE_VAL;
hc->mem_task=task;
hc->bp=bp;
QueInit(&hc->next_mem_blk);
hc->next_um=hc->last_um=(&hc->next_um)(U8 *)-offset(CMemUsed.next);
return hc;
}
CHeapCtrl *HeapCtrlBPInit(CBlkPool *bp,I64 pages512)
{//Make mem chunk into HeapCtrl and BlkPool.
I64 num;
CMemBlk *m;
CHeapCtrl *hc;
MemSet(bp,0,sizeof(CBlkPool)+sizeof(CHeapCtrl));
hc=HeapCtrlInit(bp(U8 *)+sizeof(CBlkPool),,bp);
m=(bp(U8 *)+sizeof(CBlkPool)+sizeof(CHeapCtrl)+PAGE_SIZE-1)&~(PAGE_SIZE-1);
num=(bp(U8 *)+pages512<<PAGE_BITS-m(U8 *))>>PAGE_BITS;
bp->alloced_u8s=(pages512-num)<<PAGE_BITS;
BlkPoolAdd(bp,m,num);
return hc;
}
U0 HeapCtrlDel(CHeapCtrl *hc)
{//Free all blks alloced to a HeapCtrl.
CMemBlk *m,*m1;
if (hc) {
PUSHFD
CLI
while (LBts(&hc->locked_flags,HClf_LOCKED))
PAUSE
m=hc->next_mem_blk;
while (m!=&hc->next_mem_blk) {
m1=m->next;
Mem512TaskFree(m,hc);
m=m1;
}
LBtr(&hc->locked_flags,HClf_LOCKED);
POPFD
Free(hc);
}
}
@@ -1,5 +1,6 @@
asm { asm {
//************************************ //************************************
//See $LK,"::/Doc/Credits.TXT"$.
_MALLOC:: _MALLOC::
// Throws 'OutMem' // Throws 'OutMem'
PUSH RBP PUSH RBP
@@ -206,7 +207,7 @@ MALLOC_FINAL_EXIT:
RET1 16 RET1 16
//************************************ //************************************
_FREE:: _FREE::
//Be aware of $LK,"heap_hash",A="FF:::/Kernel/MemB.CPP,heap_hash"$ in $LK,"Mem512TaskAlloc",A="MN:Mem512TaskAlloc"$(). //Be aware of $LK,"heap_hash",A="FF:::/Kernel/Mem/MAllocFree.CPP,heap_hash"$ in $LK,"Mem512TaskAlloc",A="MN:Mem512TaskAlloc"$().
PUSH RBP PUSH RBP
MOV RBP,RSP MOV RBP,RSP
PUSH RSI PUSH RSI
+9
View File
@@ -0,0 +1,9 @@
#exe {Cd(__DIR__);};
#include "PageTables"
#include "Mem2Meg"
#include "Mem512"
#include "BlkPool"
#include "MAllocFree"
#include "HeapCtrl"
#include "MemPhysical"
#exe {Cd("..");};
+180
View File
@@ -0,0 +1,180 @@
U8 *Mem2MegAlloc(I64 *_pages2Meg,CBlkPool *bp=NULL)
{/*Alloc 2Meg pages from BlkPool. Don't link to task.
(Linking to a task means they will be freed when the task dies.)
It might give you more than you asked for
so a ptr to a page count is passed.
Return: NULL if out of memory.
*/
I64 i,j,*pte,num=*_pages2Meg;
CMemBlk *result=NULL,*m,*m1;
if (!bp) bp=sys_code_bp;
PUSHFD
CLI
while (LBts(&bp->locked_flags,BPlf_LOCKED))
PAUSE
num<<=21-PAGE_BITS;
m=&bp->mem_free_2meg_lst;
while (TRUE) {
if (!(result=m->next))
break;
if (result->pages<num)
m=result;
else {
if (result->pages==num) {
m->next=result->next;
goto am_done;
} else {
result->pages-=num;
result(U8 *)+=result->pages<<PAGE_BITS;
result->pages=num;
goto am_done;
}
}
}
m=&bp->mem_free_lst;
while (TRUE) {
if (!(result=m->next)) {
num=0;
result=NULL; //Out of memory
goto am_done;
}
if (result->pages<num)
m=result;
else {
if (result->pages==num) {
if (result(U8 *)&0x1FFFFF)
m=result;
else {
m->next=result->next;
goto am_done;
}
} else {
if (i=(result(U8 *)&0x1FFFFF)>>PAGE_BITS) {
j=1<<(21-PAGE_BITS)-i;
if (result->pages<num+j)
m=result;
else if (result->pages==num+j) {
result->pages-=num;
result(U8 *)+=result->pages<<PAGE_BITS;
result->pages=num;
goto am_done;
} else {
m1=result;
result(U8 *)+=j<<PAGE_BITS;
result->pages=num;
m=result(U8 *)+num<<PAGE_BITS;
m->pages=m1->pages-num-j;
m1->pages=j;
m->next=m1->next;
m1->next=m;
m->mb_signature=MBS_UNUSED_SIGNATURE_VAL;
goto am_done;
}
} else {
m=m->next=result(U8 *)+num<<PAGE_BITS;
m->next=result->next;
m->pages=result->pages-num;
m->mb_signature=MBS_UNUSED_SIGNATURE_VAL;
result->pages=num;
goto am_done;
}
}
}
}
am_done:
i=num<<PAGE_BITS;
bp->used_u8s+=i;
num>>=21-PAGE_BITS;
*_pages2Meg=num;
m=result;
m1=m(U8 *)+i;
while (m<m1) {
pte=MemPageTable(m);
*pte &= ~0x18;
InvlPg(m);
m(U8 *)+=MemPageSize(m);
}
LBtr(&bp->locked_flags,BPlf_LOCKED);
POPFD
return result;
}
U8 *Mem2MegUncachedAlloc(I64 *_pages2Meg,CBlkPool *bp=NULL)
{/*Alloc 2Meg pages from BlkPool. Don't link to task.
(Linking to a task means they will be freed when the task dies.)
It will be marked uncached. It might give you more than you asked for
so a ptr to a page count is passed.
Return: NULL if out of memory.
*/
CMemBlk *result,*m,*m1;
I64 num=*_pages2Meg,*pte;
if (result=Mem2MegAlloc(_pages2Meg,bp)) {
num=*_pages2Meg;
m=result;
m1=m(U8 *)+num<<21;
while (m<m1) {
pte=MemPageTable(m);
*pte= *pte& ~0x18 |0x10;
InvlPg(m);
m(U8 *)+=MemPageSize(m);
}
}
return result;
}
U8 *Mem2MegWriteThruAlloc(I64 *_pages2Meg,CBlkPool *bp=NULL)
{/*Alloc 2Meg pages from BlkPool. Don't link to task.
(Linking to a task means they will be freed when the task dies.)
It will be marked write-through. It might give you more than you asked for
so a ptr to a page count is passed.
Return: NULL if out of memory.
*/
CMemBlk *result,*m,*m1;
I64 num=*_pages2Meg,*pte;
if (result=Mem2MegAlloc(_pages2Meg,bp)) {
num=*_pages2Meg;
m=result;
m1=m(U8 *)+num<<21;
while (m<m1) {
pte=MemPageTable(m);
*pte= *pte& ~0x18 |8;
InvlPg(m);
m(U8 *)+=MemPageSize(m);
}
}
return result;
}
U0 Mem2MegFree(CMemBlk *m,I64 pages2Meg,CBlkPool *bp=NULL)
{//Return non-task 2Meg pages to BlkPool.
I64 *pte;
CMemBlk *m1,*m2;
if (m) {
if (!bp) bp=sys_code_bp;
m2=m;
m1=m(U8 *)+pages2Meg<<21;
while (m2<m1) {
pte=MemPageTable(m2);
*pte=*pte & ~0x18;
InvlPg(m2);
m2(U8 *)+=MemPageSize(m2);
}
PUSHFD
CLI
while (LBts(&bp->locked_flags,BPlf_LOCKED))
PAUSE
m->mb_signature=MBS_UNUSED_SIGNATURE_VAL;
m->pages=pages2Meg<<(21-PAGE_BITS);
bp->used_u8s-=pages2Meg<<21;
m->next=bp->mem_free_2meg_lst;
bp->mem_free_2meg_lst=m;
LBtr(&bp->locked_flags,BPlf_LOCKED);
POPFD
}
}
+169
View File
@@ -0,0 +1,169 @@
U0 SysBadFree(I64 *ptr)
{
Dbg("Bad Free:",ptr);
}
U0 SysBadMAlloc(I64 *ptr)
{
Dbg("Bad MAlloc:",ptr);
}
U8 *Mem512Alloc(I64 *_pages512,CBlkPool *bp=NULL)
{/*Alloc 512Byte pages from BlkPool. Don't link to task.
(Linking to a task means they will be freed when the task dies.)
It might give you more than you asked for
so a ptr to a page count is passed.
Return: NULL if out of memory.
*/
CMemBlk *result=NULL,*m;
I64 i,num=*_pages512;
if (!bp) bp=sys_code_bp;
PUSHFD
CLI
while (LBts(&bp->locked_flags,BPlf_LOCKED))
PAUSE
if (num<FREE_PAGE_HASH_SIZE) {
if (result=bp->free_page_hash[num]) {
bp->free_page_hash[num]=result->next;
goto at_done;
}
i=Bsr(FREE_PAGE_HASH_SIZE)+1;
} else {
//We'll now round-up to a power of two.
//There is some overhead on allocations and
//we wouldn't want to round to the next
//power of two if a power of two was requested.
//So we use a little more than a power of two.
num-=2;
i=Bsr(num)+1;
num=1<<i+2;
if (result=bp->free_page_hash2[i]) {
bp->free_page_hash2[i]=result->next;
goto at_done;
}
}
m=&bp->mem_free_lst;
while (TRUE) {
if (!(result=m->next)) {
//We're probably out of luck, but lets search for a
//freed larger size block... and, screw-it, return the whole thing.
do {
if (result=bp->free_page_hash2[++i]) {
num=1<<i+2;
bp->free_page_hash2[i]=result->next;
goto at_done;
}
} while (i<64-PAGE_BITS-1);
num=0;
result=NULL; //Out of memory
goto at_done;
}
if (result->pages<num)
m=result;
else {
if (result->pages==num) {
m->next=result->next;
goto at_done;
} else {
result->pages-=num;
result(U8 *)+=result->pages<<PAGE_BITS;
result->pages=num;
goto at_done;
}
}
}
at_done:
*_pages512=num;
bp->used_u8s+=num<<PAGE_BITS;
LBtr(&bp->locked_flags,BPlf_LOCKED);
POPFD
return result;
}
U0 Mem512Free(CMemBlk *m,I64 pages512,CBlkPool *bp=NULL)
{//Return non-task 512Byte pages to BlkPool.
I64 i;
if (m) {
if (!bp) bp=sys_code_bp;
PUSHFD
CLI
while (LBts(&bp->locked_flags,BPlf_LOCKED))
PAUSE
m->mb_signature=MBS_UNUSED_SIGNATURE_VAL;
m->pages=pages512;
bp->used_u8s-=pages512<<PAGE_BITS;
if (pages512<FREE_PAGE_HASH_SIZE) {
m->next=bp->free_page_hash[pages512];
bp->free_page_hash[pages512]=m;
} else {
//We'll now round-up to a power of two.
//There is some overhead on allocations and
//we wouldn't want to round to the next
//power of two if a power of two was requested.
//So we use a little more than a power of two.
pages512-=2;
i=Bsr(pages512);
m->next=bp->free_page_hash2[i];
bp->free_page_hash2[i]=m;
}
LBtr(&bp->locked_flags,BPlf_LOCKED);
POPFD
}
}
CMemBlk *Mem512TaskAlloc(I64 *_pages512,CHeapCtrl *hc)
{/*hc must be locked. Interrupts should probably be off
Currently, this is only called from $LK,"MAlloc",A="MN:MAlloc"$().
Return: NULL if out of memory.
*/
CMemBlk *result;
I64 threshold,cnt,size;
CMemUnused *uum,**_uum,**_ptr;
if (result=Mem512Alloc(_pages512,hc->bp)) {
QueIns(result,hc->last_mem_blk);
result->mb_signature=MBS_USED_SIGNATURE_VAL;
hc->alloced_u8s+=*_pages512<<PAGE_BITS;
//Tidy-up free lst (Move into heap hash)
//because if free lst gets long, delay causes crash
threshold=HEAP_HASH_SIZE>>4;
#assert HEAP_HASH_SIZE>>4>=sizeof(U8 *)
do {
cnt=0;
_uum=&hc->malloc_free_lst;
while (uum=*_uum) {
#assert !offset(CMemUnused.next)
size=uum->size;
if (size<threshold) {
*_uum=uum->next;
_ptr=(&hc->heap_hash)(U8 *)+size;
uum->next=*_ptr;
*_ptr=uum;
} else {
cnt++;
_uum=uum;
}
}
threshold<<=1;
} while (cnt>8 && threshold<=HEAP_HASH_SIZE);
}
return result;
}
U0 Mem512TaskFree(CMemBlk *m,CHeapCtrl *hc)
{//hc must be locked
if (m) {
PUSHFD
CLI
if (m->mb_signature!=MBS_USED_SIGNATURE_VAL)
SysBadFree(m);
else {
QueRem(m);
hc->alloced_u8s-=m->pages<<PAGE_BITS;
Mem512Free(m,m->pages,hc->bp);
}
POPFD
}
}
@@ -1,77 +1,3 @@
U0 BlkPoolAdd(CBlkPool *bp,CMemBlk *m,I64 pages512)
{//Add mem to BlkPool.
if (sys_mem_init_flag)
MemSet(m,sys_mem_init_val,pages512*512);
PUSHFD
CLI
while (LBts(&bp->locked_flags,BPlf_LOCKED))
PAUSE
m->next=bp->mem_free_lst;
m->pages=pages512;
m->mb_signature=MBS_UNUSED_SIGNATURE_VAL;
bp->alloced_u8s+=pages512<<PAGE_BITS;
bp->mem_free_lst=m;
LBtr(&bp->locked_flags,BPlf_LOCKED);
POPFD
}
U0 BlkPoolInit(CBlkPool *bp,I64 pages512)
{//Make mem chunk into a BlkPool.
I64 num;
CMemBlk *m;
MemSet(bp,0,sizeof(CBlkPool));
m=(bp(U8 *)+sizeof(CBlkPool)+PAGE_SIZE-1)&~(PAGE_SIZE-1);
num=(bp(U8 *)+pages512<<PAGE_BITS-m(U8 *))>>PAGE_BITS;
bp->alloced_u8s=(pages512-num)<<PAGE_BITS; //Compensate before num added.
BlkPoolAdd(bp,m,num);
}
CHeapCtrl *HeapCtrlInit(CHeapCtrl *hc=NULL,CTask *task=NULL,CBlkPool *bp)
{//Called by $LK,"Adam Task",A="FF:::/Kernel/KStart.CPP,CHeapCtrl.bp"$.
if (!hc)
hc=ACAlloc(sizeof(CHeapCtrl));
hc->hc_signature=HEAP_CTRL_SIGNATURE_VAL;
hc->mem_task=task;
hc->bp=bp;
QueInit(&hc->next_mem_blk);
hc->next_um=hc->last_um=(&hc->next_um)(U8 *)-offset(CMemUsed.next);
return hc;
}
CHeapCtrl *HeapCtrlBPInit(CBlkPool *bp,I64 pages512)
{//Make mem chunk into HeapCtrl and BlkPool.
I64 num;
CMemBlk *m;
CHeapCtrl *hc;
MemSet(bp,0,sizeof(CBlkPool)+sizeof(CHeapCtrl));
hc=HeapCtrlInit(bp(U8 *)+sizeof(CBlkPool),,bp);
m=(bp(U8 *)+sizeof(CBlkPool)+sizeof(CHeapCtrl)+PAGE_SIZE-1)&~(PAGE_SIZE-1);
num=(bp(U8 *)+pages512<<PAGE_BITS-m(U8 *))>>PAGE_BITS;
bp->alloced_u8s=(pages512-num)<<PAGE_BITS;
BlkPoolAdd(bp,m,num);
return hc;
}
U0 HeapCtrlDel(CHeapCtrl *hc)
{//Free all blks alloced to a HeapCtrl.
CMemBlk *m,*m1;
if (hc) {
PUSHFD
CLI
while (LBts(&hc->locked_flags,HClf_LOCKED))
PAUSE
m=hc->next_mem_blk;
while (m!=&hc->next_mem_blk) {
m1=m->next;
Mem512TaskFree(m,hc);
m=m1;
}
LBtr(&hc->locked_flags,HClf_LOCKED);
POPFD
Free(hc);
}
}
Bool Mem32DevIns(CMemRange *tempmr) Bool Mem32DevIns(CMemRange *tempmr)
{ {
CMemRange *tempmr1=dev.mem32_root.next,*tempmr2; CMemRange *tempmr1=dev.mem32_root.next,*tempmr2;
@@ -258,51 +184,6 @@ I64 BIOSTotalMem()
return MaxI64(r01,r20); return MaxI64(r01,r20);
} }
U0 HeapsInit()
{
I64 i,total,lo,hi,code_heap_limit;
CMemE820 *m20=SYS_MEM_E820;
Bool first=TRUE;
total=BIOSTotalMem;
if (total<=0x80000000)
code_heap_limit=total;
else if (total<=0x100000000)
code_heap_limit=total/4;
else
code_heap_limit=0x80000000;
i=code_heap_limit-0x1000000;
BlkPoolAdd(sys_code_bp,0x1000000,i>>PAGE_BITS);
sys_heap_limit=i+0x1000000-1;
if (code_heap_limit<total) {
while (m20->type) {
if (m20->type==1) {
lo=m20->base;
hi=m20->base+m20->len;
if (lo<code_heap_limit) {
if (hi>code_heap_limit)
lo=code_heap_limit;
else
hi=lo; //cancel
}
if (code_heap_limit<=lo<hi) {
if (first) {
BlkPoolInit(lo,(hi-lo)>>PAGE_BITS);
sys_data_bp=lo;
Fs->data_heap=HeapCtrlInit(,Fs,sys_data_bp);
first=FALSE;
} else
BlkPoolAdd(sys_data_bp,lo,(hi-lo)>>PAGE_BITS);
}
}
m20++;
}
}
}
I64 Scale2Mem(I64 min,I64 max,I64 limit=2*1024*1024*1024) I64 Scale2Mem(I64 min,I64 max,I64 limit=2*1024*1024*1024)
{//Helps pick DiskCache and RAMDisk sizes. {//Helps pick DiskCache and RAMDisk sizes.
//Can be used in $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$() config scripts. //Can be used in $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$() config scripts.
+180
View File
@@ -0,0 +1,180 @@
asm {
// $LK,"::/Doc/MemOverview.TXT"$
USE32
SYS_INIT_MEM::
//Set page tables to identity map everything.
MOV EDI,SYS_FIXED_AREA
XOR EAX,EAX
MOV ECX,sizeof(CSysFixedArea)/4
REP_STOSD //Init entire SYS_FIXED_AREA to zero
//PML1
MOV EAX,0x107
XOR EDX,EDX
MOV EDI,SYS_FIXED_AREA+CSysFixedArea.pml1
MOV ECX,MEM_NUM_PML1*0x200
@@05: MOV U32 [EDI],EAX
ADD EDI,4
MOV U32 [EDI],EDX
ADD EDI,4
ADD EAX,0x1000
ADC EDX,0
LOOP @@05
//0xA0000-0xBFFFF: video ram=write thru
MOV EAX,0xF
XOR EDX,EDX
MOV EDI,SYS_FIXED_AREA+CSysFixedArea.pml1+0xA0*8
MOV ECX,0xC0-0xA0
@@10: OR U32 [EDI],EAX
ADD EDI,4
OR U32 [EDI],EDX
ADD EDI,4
LOOP @@10
//PML2
MOV EAX,SYS_FIXED_AREA+CSysFixedArea.pml1+7
XOR EDX,EDX
MOV EDI,SYS_FIXED_AREA+CSysFixedArea.pml2
MOV ECX,MEM_NUM_PML1
@@15: MOV U32 [EDI],EAX
ADD EDI,4
MOV U32 [EDI],EDX
ADD EDI,4
ADD EAX,0x1000
ADC EDX,0
LOOP @@15
MOV EAX,MEM_NUM_PML1*0x200000+0x87 //bit 7 is page size (1==2Meg)
XOR EDX,EDX
MOV EDI,SYS_FIXED_AREA+CSysFixedArea.pml2+8*MEM_NUM_PML1
MOV ECX,MEM_NUM_PML2*0x200-MEM_NUM_PML1
@@20: MOV U32 [EDI],EAX
ADD EDI,4
MOV U32 [EDI],EDX
ADD EDI,4
ADD EAX,0x200000
ADC EDX,0
LOOP @@20
//0xE0000000-0xFFFFFFFF: PCI Devs
MOV EAX,0x17 //Cache disabled
XOR EDX,EDX
MOV EDI,SYS_FIXED_AREA+CSysFixedArea.pml2+8*0x700
MOV ECX,0x800-0x700
@@25: OR U32 [EDI],EAX
ADD EDI,4
OR U32 [EDI],EDX
ADD EDI,4
LOOP @@25
//PML3
MOV EAX,SYS_FIXED_AREA+CSysFixedArea.pml2+7
XOR EDX,EDX
MOV EDI,SYS_FIXED_AREA+CSysFixedArea.pml3
MOV ECX,MEM_NUM_PML2
@@30: MOV U32 [EDI],EAX
ADD EDI,4
MOV U32 [EDI],EDX
ADD EDI,4
ADD EAX,0x1000
ADC EDX,0
LOOP @@30
//PML4
MOV EAX,SYS_FIXED_AREA+CSysFixedArea.pml3+7
XOR EDX,EDX
MOV EDI,SYS_FIXED_AREA+CSysFixedArea.pml4
MOV ECX,MEM_NUM_PML3
@@35: MOV U32 [EDI],EAX
ADD EDI,4
MOV U32 [EDI],EDX
ADD EDI,4
ADD EAX,0x1000
ADC EDX,0
LOOP @@35
MOV U32 [SYS_CODE_BP],SYS_FIXED_AREA+CSysFixedArea.adam_bp
MOV U32 [SYS_CODE_BP+4],0
MOV U32 [SYS_DATA_BP],0
MOV U32 [SYS_DATA_BP+4],0
XOR EAX,EAX
MOV AX,U16 [SYS_MEM_E801] //1 Kb blks between 1M and 16M
SHL EAX,10
ADD EAX,0x100000
MOV EBX,U32 [SYS_HEAP_BASE] //SYS_FIXED_AREA+sizeof(CSysFixedArea)
SUB EAX,EBX
/*$AN,"ExpandHeap",A="ExpandHeap"$
TempleOS initializes the heap to the val
of the BIOS E801 lowest 16Meg val. It
later adds the rest to the heap. There
are a few allocations which occur while
it is set to this small val.
At some point, it might be nice to
initialize to the full val but it is a
pain without MAlloc up-and-running.
*/
#define CONSERVATIVE_16MEG_SIZE 0xF00000
#define ESTIMATED_MISC_ALLOCS 0x100000
#assert CONSERVATIVE_16MEG_SIZE-
(SYS_FIXED_AREA+sizeof(CSysFixedArea))>ADAM_STK+ESTIMATED_MISC_ALLOCS
//EBX=BASE EAX=SIZE
TEST U8 [SYS_MEM_INIT_FLAG],1
JZ @@40
PUSH EAX
MOV EDI,EBX
MOV ECX,EAX
MOV AL,U8 [SYS_MEM_INIT_VAL]
REP_STOSB
POP EAX
@@40: SHR EAX,PAGE_BITS
MOV ESI,SYS_FIXED_AREA+CSysFixedArea.adam_bp
MOV EDI,U32 CBlkPool.mem_free_lst[ESI]
MOV U32 CMemBlk.next[EBX],EDI
MOV U32 CMemBlk.next+4[EBX],0
MOV U32 CBlkPool.mem_free_lst[ESI],EBX
MOV U32 CBlkPool.mem_free_lst+4[ESI],0
MOV U32 CMemBlk.mb_signature[EBX],MBS_UNUSED_SIGNATURE_VAL
MOV U32 CMemBlk.pages[EBX],EAX
SHL EAX,PAGE_BITS
ADD U32 CBlkPool.alloced_u8s[ESI],EAX
RET
}
I64 MemPageSize(U8 *a)
{//Size of page table at addr.Either 4K or 2Meg.
if (a<MEM_NUM_PML1*0x1000*0x200)
return 0x1000;
else
return 0x200000;
}
I64 *MemPageTable(U8 *a)
{//Point to page table entry for addr.
if (a<MEM_NUM_PML1*0x1000*0x200)
return SYS_FIXED_AREA+offset(CSysFixedArea.pml1)+a>>12*8;
else
return SYS_FIXED_AREA+offset(CSysFixedArea.pml2)+a>>21*8;
}
Bool MemPagePresentMark(U8 *a,Bool val)
{//Mark an addr's page present or not-present.
I64 *pte=MemPageTable(a);
Bool result=*pte&1;
if (val)
*pte=*pte|1; //Mark present
else
*pte=*pte&~1; //Mark not present
InvlPg(a);
return result;
}
-532
View File
@@ -1,532 +0,0 @@
asm {
/*See $LK,"::/Doc/Credits.TXT"$.
See $LK,"::/Doc/MemOverview.TXT"$
*/
USE32
SYS_INIT_MEM::
//Set page tables to identity map everything.
MOV EDI,SYS_FIXED_AREA
XOR EAX,EAX
MOV ECX,sizeof(CSysFixedArea)/4
REP_STOSD //Init entire SYS_FIXED_AREA to zero
//PML1
MOV EAX,0x107
XOR EDX,EDX
MOV EDI,SYS_FIXED_AREA+CSysFixedArea.pml1
MOV ECX,MEM_NUM_PML1*0x200
@@05: MOV U32 [EDI],EAX
ADD EDI,4
MOV U32 [EDI],EDX
ADD EDI,4
ADD EAX,0x1000
ADC EDX,0
LOOP @@05
//0xA0000-0xBFFFF: video ram=write thru
MOV EAX,0xF
XOR EDX,EDX
MOV EDI,SYS_FIXED_AREA+CSysFixedArea.pml1+0xA0*8
MOV ECX,0xC0-0xA0
@@10: OR U32 [EDI],EAX
ADD EDI,4
OR U32 [EDI],EDX
ADD EDI,4
LOOP @@10
//PML2
MOV EAX,SYS_FIXED_AREA+CSysFixedArea.pml1+7
XOR EDX,EDX
MOV EDI,SYS_FIXED_AREA+CSysFixedArea.pml2
MOV ECX,MEM_NUM_PML1
@@15: MOV U32 [EDI],EAX
ADD EDI,4
MOV U32 [EDI],EDX
ADD EDI,4
ADD EAX,0x1000
ADC EDX,0
LOOP @@15
MOV EAX,MEM_NUM_PML1*0x200000+0x87 //bit 7 is page size (1==2Meg)
XOR EDX,EDX
MOV EDI,SYS_FIXED_AREA+CSysFixedArea.pml2+8*MEM_NUM_PML1
MOV ECX,MEM_NUM_PML2*0x200-MEM_NUM_PML1
@@20: MOV U32 [EDI],EAX
ADD EDI,4
MOV U32 [EDI],EDX
ADD EDI,4
ADD EAX,0x200000
ADC EDX,0
LOOP @@20
//0xE0000000-0xFFFFFFFF: PCI Devs
MOV EAX,0x17 //Cache disabled
XOR EDX,EDX
MOV EDI,SYS_FIXED_AREA+CSysFixedArea.pml2+8*0x700
MOV ECX,0x800-0x700
@@25: OR U32 [EDI],EAX
ADD EDI,4
OR U32 [EDI],EDX
ADD EDI,4
LOOP @@25
//PML3
MOV EAX,SYS_FIXED_AREA+CSysFixedArea.pml2+7
XOR EDX,EDX
MOV EDI,SYS_FIXED_AREA+CSysFixedArea.pml3
MOV ECX,MEM_NUM_PML2
@@30: MOV U32 [EDI],EAX
ADD EDI,4
MOV U32 [EDI],EDX
ADD EDI,4
ADD EAX,0x1000
ADC EDX,0
LOOP @@30
//PML4
MOV EAX,SYS_FIXED_AREA+CSysFixedArea.pml3+7
XOR EDX,EDX
MOV EDI,SYS_FIXED_AREA+CSysFixedArea.pml4
MOV ECX,MEM_NUM_PML3
@@35: MOV U32 [EDI],EAX
ADD EDI,4
MOV U32 [EDI],EDX
ADD EDI,4
ADD EAX,0x1000
ADC EDX,0
LOOP @@35
MOV U32 [SYS_CODE_BP],SYS_FIXED_AREA+CSysFixedArea.adam_bp
MOV U32 [SYS_CODE_BP+4],0
MOV U32 [SYS_DATA_BP],0
MOV U32 [SYS_DATA_BP+4],0
XOR EAX,EAX
MOV AX,U16 [SYS_MEM_E801] //1 Kb blks between 1M and 16M
SHL EAX,10
ADD EAX,0x100000
MOV EBX,U32 [SYS_HEAP_BASE] //SYS_FIXED_AREA+sizeof(CSysFixedArea)
SUB EAX,EBX
/*$AN,"ExpandHeap",A="ExpandHeap"$
TempleOS initializes the heap to the val
of the BIOS E801 lowest 16Meg val. It
later adds the rest to the heap. There
are a few allocations which occur while
it is set to this small val.
At some point, it might be nice to
initialize to the full val but it is a
pain without MAlloc up-and-running.
*/
#define CONSERVATIVE_16MEG_SIZE 0xF00000
#define ESTIMATED_MISC_ALLOCS 0x100000
#assert CONSERVATIVE_16MEG_SIZE-
(SYS_FIXED_AREA+sizeof(CSysFixedArea))>ADAM_STK+ESTIMATED_MISC_ALLOCS
//EBX=BASE EAX=SIZE
TEST U8 [SYS_MEM_INIT_FLAG],1
JZ @@40
PUSH EAX
MOV EDI,EBX
MOV ECX,EAX
MOV AL,U8 [SYS_MEM_INIT_VAL]
REP_STOSB
POP EAX
@@40: SHR EAX,PAGE_BITS
MOV ESI,SYS_FIXED_AREA+CSysFixedArea.adam_bp
MOV EDI,U32 CBlkPool.mem_free_lst[ESI]
MOV U32 CMemBlk.next[EBX],EDI
MOV U32 CMemBlk.next+4[EBX],0
MOV U32 CBlkPool.mem_free_lst[ESI],EBX
MOV U32 CBlkPool.mem_free_lst+4[ESI],0
MOV U32 CMemBlk.mb_signature[EBX],MBS_UNUSED_SIGNATURE_VAL
MOV U32 CMemBlk.pages[EBX],EAX
SHL EAX,PAGE_BITS
ADD U32 CBlkPool.alloced_u8s[ESI],EAX
RET
}
U0 SysBadFree(I64 *ptr)
{
Dbg("Bad Free:",ptr);
}
U0 SysBadMAlloc(I64 *ptr)
{
Dbg("Bad MAlloc:",ptr);
}
I64 MemPageSize(U8 *a)
{//Size of page table at addr.Either 4K or 2Meg.
if (a<MEM_NUM_PML1*0x1000*0x200)
return 0x1000;
else
return 0x200000;
}
I64 *MemPageTable(U8 *a)
{//Point to page table entry for addr.
if (a<MEM_NUM_PML1*0x1000*0x200)
return SYS_FIXED_AREA+offset(CSysFixedArea.pml1)+a>>12*8;
else
return SYS_FIXED_AREA+offset(CSysFixedArea.pml2)+a>>21*8;
}
Bool MemPagePresentMark(U8 *a,Bool val)
{//Mark an addr's page present or not-present.
I64 *pte=MemPageTable(a);
Bool result=*pte&1;
if (val)
*pte=*pte|1; //Mark present
else
*pte=*pte&~1; //Mark not present
InvlPg(a);
return result;
}
U8 *Mem512Alloc(I64 *_pages512,CBlkPool *bp=NULL)
{/*Alloc 512Byte pages from BlkPool. Don't link to task.
(Linking to a task means they will be freed when the task dies.)
It might give you more than you asked for
so a ptr to a page count is passed.
Return: NULL if out of memory.
*/
CMemBlk *result=NULL,*m;
I64 i,num=*_pages512;
if (!bp) bp=sys_code_bp;
PUSHFD
CLI
while (LBts(&bp->locked_flags,BPlf_LOCKED))
PAUSE
if (num<FREE_PAGE_HASH_SIZE) {
if (result=bp->free_page_hash[num]) {
bp->free_page_hash[num]=result->next;
goto at_done;
}
i=Bsr(FREE_PAGE_HASH_SIZE)+1;
} else {
//We'll now round-up to a power of two.
//There is some overhead on allocations and
//we wouldn't want to round to the next
//power of two if a power of two was requested.
//So we use a little more than a power of two.
num-=2;
i=Bsr(num)+1;
num=1<<i+2;
if (result=bp->free_page_hash2[i]) {
bp->free_page_hash2[i]=result->next;
goto at_done;
}
}
m=&bp->mem_free_lst;
while (TRUE) {
if (!(result=m->next)) {
//We're probably out of luck, but lets search for a
//freed larger size block... and, screw-it, return the whole thing.
do {
if (result=bp->free_page_hash2[++i]) {
num=1<<i+2;
bp->free_page_hash2[i]=result->next;
goto at_done;
}
} while (i<64-PAGE_BITS-1);
num=0;
result=NULL; //Out of memory
goto at_done;
}
if (result->pages<num)
m=result;
else {
if (result->pages==num) {
m->next=result->next;
goto at_done;
} else {
result->pages-=num;
result(U8 *)+=result->pages<<PAGE_BITS;
result->pages=num;
goto at_done;
}
}
}
at_done:
*_pages512=num;
bp->used_u8s+=num<<PAGE_BITS;
LBtr(&bp->locked_flags,BPlf_LOCKED);
POPFD
return result;
}
U0 Mem512Free(CMemBlk *m,I64 pages512,CBlkPool *bp=NULL)
{//Return non-task 512Byte pages to BlkPool.
I64 i;
if (m) {
if (!bp) bp=sys_code_bp;
PUSHFD
CLI
while (LBts(&bp->locked_flags,BPlf_LOCKED))
PAUSE
m->mb_signature=MBS_UNUSED_SIGNATURE_VAL;
m->pages=pages512;
bp->used_u8s-=pages512<<PAGE_BITS;
if (pages512<FREE_PAGE_HASH_SIZE) {
m->next=bp->free_page_hash[pages512];
bp->free_page_hash[pages512]=m;
} else {
//We'll now round-up to a power of two.
//There is some overhead on allocations and
//we wouldn't want to round to the next
//power of two if a power of two was requested.
//So we use a little more than a power of two.
pages512-=2;
i=Bsr(pages512);
m->next=bp->free_page_hash2[i];
bp->free_page_hash2[i]=m;
}
LBtr(&bp->locked_flags,BPlf_LOCKED);
POPFD
}
}
U8 *Mem2MegAlloc(I64 *_pages2Meg,CBlkPool *bp=NULL)
{/*Alloc 2Meg pages from BlkPool. Don't link to task.
(Linking to a task means they will be freed when the task dies.)
It might give you more than you asked for
so a ptr to a page count is passed.
Return: NULL if out of memory.
*/
I64 i,j,*pte,num=*_pages2Meg;
CMemBlk *result=NULL,*m,*m1;
if (!bp) bp=sys_code_bp;
PUSHFD
CLI
while (LBts(&bp->locked_flags,BPlf_LOCKED))
PAUSE
num<<=21-PAGE_BITS;
m=&bp->mem_free_2meg_lst;
while (TRUE) {
if (!(result=m->next))
break;
if (result->pages<num)
m=result;
else {
if (result->pages==num) {
m->next=result->next;
goto am_done;
} else {
result->pages-=num;
result(U8 *)+=result->pages<<PAGE_BITS;
result->pages=num;
goto am_done;
}
}
}
m=&bp->mem_free_lst;
while (TRUE) {
if (!(result=m->next)) {
num=0;
result=NULL; //Out of memory
goto am_done;
}
if (result->pages<num)
m=result;
else {
if (result->pages==num) {
if (result(U8 *)&0x1FFFFF)
m=result;
else {
m->next=result->next;
goto am_done;
}
} else {
if (i=(result(U8 *)&0x1FFFFF)>>PAGE_BITS) {
j=1<<(21-PAGE_BITS)-i;
if (result->pages<num+j)
m=result;
else if (result->pages==num+j) {
result->pages-=num;
result(U8 *)+=result->pages<<PAGE_BITS;
result->pages=num;
goto am_done;
} else {
m1=result;
result(U8 *)+=j<<PAGE_BITS;
result->pages=num;
m=result(U8 *)+num<<PAGE_BITS;
m->pages=m1->pages-num-j;
m1->pages=j;
m->next=m1->next;
m1->next=m;
m->mb_signature=MBS_UNUSED_SIGNATURE_VAL;
goto am_done;
}
} else {
m=m->next=result(U8 *)+num<<PAGE_BITS;
m->next=result->next;
m->pages=result->pages-num;
m->mb_signature=MBS_UNUSED_SIGNATURE_VAL;
result->pages=num;
goto am_done;
}
}
}
}
am_done:
i=num<<PAGE_BITS;
bp->used_u8s+=i;
num>>=21-PAGE_BITS;
*_pages2Meg=num;
m=result;
m1=m(U8 *)+i;
while (m<m1) {
pte=MemPageTable(m);
*pte &= ~0x18;
InvlPg(m);
m(U8 *)+=MemPageSize(m);
}
LBtr(&bp->locked_flags,BPlf_LOCKED);
POPFD
return result;
}
U8 *Mem2MegUncachedAlloc(I64 *_pages2Meg,CBlkPool *bp=NULL)
{/*Alloc 2Meg pages from BlkPool. Don't link to task.
(Linking to a task means they will be freed when the task dies.)
It will be marked uncached. It might give you more than you asked for
so a ptr to a page count is passed.
Return: NULL if out of memory.
*/
CMemBlk *result,*m,*m1;
I64 num=*_pages2Meg,*pte;
if (result=Mem2MegAlloc(_pages2Meg,bp)) {
num=*_pages2Meg;
m=result;
m1=m(U8 *)+num<<21;
while (m<m1) {
pte=MemPageTable(m);
*pte= *pte& ~0x18 |0x10;
InvlPg(m);
m(U8 *)+=MemPageSize(m);
}
}
return result;
}
U8 *Mem2MegWriteThruAlloc(I64 *_pages2Meg,CBlkPool *bp=NULL)
{/*Alloc 2Meg pages from BlkPool. Don't link to task.
(Linking to a task means they will be freed when the task dies.)
It will be marked write-through. It might give you more than you asked for
so a ptr to a page count is passed.
Return: NULL if out of memory.
*/
CMemBlk *result,*m,*m1;
I64 num=*_pages2Meg,*pte;
if (result=Mem2MegAlloc(_pages2Meg,bp)) {
num=*_pages2Meg;
m=result;
m1=m(U8 *)+num<<21;
while (m<m1) {
pte=MemPageTable(m);
*pte= *pte& ~0x18 |8;
InvlPg(m);
m(U8 *)+=MemPageSize(m);
}
}
return result;
}
U0 Mem2MegFree(CMemBlk *m,I64 pages2Meg,CBlkPool *bp=NULL)
{//Return non-task 2Meg pages to BlkPool.
I64 *pte;
CMemBlk *m1,*m2;
if (m) {
if (!bp) bp=sys_code_bp;
m2=m;
m1=m(U8 *)+pages2Meg<<21;
while (m2<m1) {
pte=MemPageTable(m2);
*pte=*pte & ~0x18;
InvlPg(m2);
m2(U8 *)+=MemPageSize(m2);
}
PUSHFD
CLI
while (LBts(&bp->locked_flags,BPlf_LOCKED))
PAUSE
m->mb_signature=MBS_UNUSED_SIGNATURE_VAL;
m->pages=pages2Meg<<(21-PAGE_BITS);
bp->used_u8s-=pages2Meg<<21;
m->next=bp->mem_free_2meg_lst;
bp->mem_free_2meg_lst=m;
LBtr(&bp->locked_flags,BPlf_LOCKED);
POPFD
}
}
CMemBlk *Mem512TaskAlloc(I64 *_pages512,CHeapCtrl *hc)
{/*hc must be locked. Interrupts should probably be off
Currently, this is only called from $LK,"MAlloc",A="MN:MAlloc"$().
Return: NULL if out of memory.
*/
CMemBlk *result;
I64 threshold,cnt,size;
CMemUnused *uum,**_uum,**_ptr;
if (result=Mem512Alloc(_pages512,hc->bp)) {
QueIns(result,hc->last_mem_blk);
result->mb_signature=MBS_USED_SIGNATURE_VAL;
hc->alloced_u8s+=*_pages512<<PAGE_BITS;
//Tidy-up free lst (Move into heap hash)
//because if free lst gets long, delay causes crash
threshold=HEAP_HASH_SIZE>>4;
#assert HEAP_HASH_SIZE>>4>=sizeof(U8 *)
do {
cnt=0;
_uum=&hc->malloc_free_lst;
while (uum=*_uum) {
#assert !offset(CMemUnused.next)
size=uum->size;
if (size<threshold) {
*_uum=uum->next;
_ptr=(&hc->heap_hash)(U8 *)+size;
uum->next=*_ptr;
*_ptr=uum;
} else {
cnt++;
_uum=uum;
}
}
threshold<<=1;
} while (cnt>8 && threshold<=HEAP_HASH_SIZE);
}
return result;
}
U0 Mem512TaskFree(CMemBlk *m,CHeapCtrl *hc)
{//hc must be locked
if (m) {
PUSHFD
CLI
if (m->mb_signature!=MBS_USED_SIGNATURE_VAL)
SysBadFree(m);
else {
QueRem(m);
hc->alloced_u8s-=m->pages<<PAGE_BITS;
Mem512Free(m,m->pages,hc->bp);
}
POPFD
}
}
+13 -13
View File
@@ -5,7 +5,7 @@ USE16
//This code gets copied to $LK,"MP_VECT_ADDR",A="MN:MP_VECT_ADDR"$. //This code gets copied to $LK,"MP_VECT_ADDR",A="MN:MP_VECT_ADDR"$.
//See $LK,"MemCpy(MP_VECT_ADDR",A="FF:::/Kernel/MultiProc.CPP,MemCpy(mp:2"$. //See $LK,"MemCpy(MP_VECT_ADDR",A="FF:::/Kernel/MultiProc.CPP,MemCpy(mp:2"$.
AP_16BIT_INIT:: COREAP_16BIT_INIT::
JMP @@05 JMP @@05
ALIGN 4,OC_NOP ALIGN 4,OC_NOP
@@ -23,7 +23,7 @@ AP_GDT_PTR: DU16 sizeof(CGDT)-1;
DU8 0x66,0xEA; //JMP CGDT.cs32:AP_32BIT_INIT DU8 0x66,0xEA; //JMP CGDT.cs32:AP_32BIT_INIT
DU32 AP_32BIT_INIT; DU32 AP_32BIT_INIT;
DU16 CGDT.cs32; DU16 CGDT.cs32;
AP_16BIT_INIT_END:: COREAP_16BIT_INIT_END::
USE32 USE32
AP_32BIT_INIT: AP_32BIT_INIT:
@@ -121,7 +121,7 @@ CCPU *CPUStructInit(I64 num,CCPU *c,CTask *seth_task)
c->idle_factor=0.01; c->idle_factor=0.01;
if (Bt(&sys_run_level,RLf_BOOT_HEAP)) { if (Bt(&sys_run_level,RLf_BOOT_HEAP)) {
c->idle_task=Spawn(0,NULL,"Idle Task",,Fs,,0); c->idle_task=Spawn(0,NULL,"Idle Task",,Fs,,0);
Bts(&c->idle_task->task_flags,TASKf_IDLE); LBts(&c->idle_task->task_flags,TASKf_IDLE);
c->tss=TSSNew(num); c->tss=TSSNew(num);
} }
c->seth_task=seth_task;// It waits for this to be filled-in: $LK,"seth_task",A="FF:::/Kernel/MultiProc.CPP,seth_task"$ c->seth_task=seth_task;// It waits for this to be filled-in: $LK,"seth_task",A="FF:::/Kernel/MultiProc.CPP,seth_task"$
@@ -188,7 +188,7 @@ U0 MPWake(I64 target_cpu)
U0 MPAPICInit() U0 MPAPICInit()
{//Called by adam during start-up {//Called by adam during start-up
//and other cores during initialization //and other cores during initialization
//after $LK,"BSPStartMP",A="MN:BSPStartMP"$(). //after $LK,"Core0StartMP",A="MN:Core0StartMP"$().
*LAPIC_SVR(U32 *)|=LAPICF_APIC_ENABLED; *LAPIC_SVR(U32 *)|=LAPICF_APIC_ENABLED;
dev.mp_apic_ids[Gs->num]=*LAPIC_APIC_ID(U32 *)>>24; dev.mp_apic_ids[Gs->num]=*LAPIC_APIC_ID(U32 *)>>24;
*LAPIC_LDR(U32 *)=dev.mp_apic_ids[Gs->num]<<24; *LAPIC_LDR(U32 *)=dev.mp_apic_ids[Gs->num]<<24;
@@ -208,7 +208,7 @@ U0 MPAPICInit()
#assert !offset(CSrvCtrl.next_waiting) #assert !offset(CSrvCtrl.next_waiting)
U0 APSethTask() U0 CoreAPSethTask()
{ {
CSrvCtrl *my_ctrl=&Fs->srv_ctrl; CSrvCtrl *my_ctrl=&Fs->srv_ctrl;
CSrvCmd *tempc,*tempc1=&my_ctrl->next_waiting; CSrvCmd *tempc,*tempc1=&my_ctrl->next_waiting;
@@ -289,17 +289,17 @@ CTask *SpawnQue(U0 (*fp_addr)(U8 *data),U8 *data=NULL,U8 *task_name=NULL,
return result; return result;
} }
U0 APSethInit() U0 CoreAPSethInit()
{//Called by multicore's seth task after $LK,"BSPStartMP",A="MN:BSPStartMP"$() {//Called by multicore's seth task after $LK,"Core0StartMP",A="MN:Core0StartMP"$()
//as the first thing a CPU does before waiting for jobs. //as the first thing a CPU does before waiting for jobs.
MPAPICInit; MPAPICInit;
Fs->rip=&APSethTask; Fs->rip=&CoreAPSethTask;
Fs->time_slice_start=GetTSC; Fs->time_slice_start=GetTSC;
TaskContextRestore; TaskContextRestore;
} }
U0 BSPStartMP() U0 Core0StartMP()
{//Called by adam during $LK,"start-up",A="FF:::/Kernel/KEnd.CPP,BSPStartMP"$. {//Called by adam during $LK,"start-up",A="FF:::/Kernel/KEnd.CPP,Core0StartMP"$.
CTask *task; CTask *task;
U8 buf[STR_LEN]; U8 buf[STR_LEN];
CAP16BitInit *mp=MP_VECT_ADDR; CAP16BitInit *mp=MP_VECT_ADDR;
@@ -327,7 +327,7 @@ U0 BSPStartMP()
//When you start-up other cores, they jump to an addr //When you start-up other cores, they jump to an addr
//specified by a byte vect number, $LK,"MPN_VECT",A="MN:MPN_VECT"$ which corresponds //specified by a byte vect number, $LK,"MPN_VECT",A="MN:MPN_VECT"$ which corresponds
//to a location 4096*vect number, $LK,"MP_VECT_ADDR",A="MN:MP_VECT_ADDR"$$WW,0$. //to a location 4096*vect number, $LK,"MP_VECT_ADDR",A="MN:MP_VECT_ADDR"$$WW,0$.
MemCpy(mp,AP_16BIT_INIT,AP_16BIT_INIT_END-AP_16BIT_INIT); MemCpy(mp,COREAP_16BIT_INIT,COREAP_16BIT_INIT_END-COREAP_16BIT_INIT);
MemCpy(&mp->ap_gdt_ptr,SYS_GDT_PTR,sizeof(CSysLimitBase)); MemCpy(&mp->ap_gdt_ptr,SYS_GDT_PTR,sizeof(CSysLimitBase));
mp_cnt_initial=mp_cnt=1; mp_cnt_initial=mp_cnt=1;
mp_cnt_lock=0; mp_cnt_lock=0;
@@ -352,7 +352,7 @@ U0 BSPStartMP()
for (i=1;i<my_mp_cnt;i++) { for (i=1;i<my_mp_cnt;i++) {
StrPrint(buf,"Seth Task CPU#%d",i); StrPrint(buf,"Seth Task CPU#%d",i);
task=Spawn(&APSethInit,NULL,buf,,,SETH_STK,0); task=Spawn(&CoreAPSethInit,NULL,buf,,,SETH_STK,0);
task->rflags=RFLAGG_START; task->rflags=RFLAGG_START;
//$LK,"CTask",A="MN:CTask"$ alloced off this core's seth_task's heap (Which is Adam) //$LK,"CTask",A="MN:CTask"$ alloced off this core's seth_task's heap (Which is Adam)
CPUStructInit(i,&cpu_structs[i],task); CPUStructInit(i,&cpu_structs[i],task);
@@ -370,7 +370,7 @@ U0 BSPStartMP()
mp_cnt=my_mp_cnt; //Finalize cnt mp_cnt=my_mp_cnt; //Finalize cnt
} }
U0 BSPInit() U0 Core0Init()
{//Called by adam during start-up {//Called by adam during start-up
CRAXRBCRCXRDX ee; CRAXRBCRCXRDX ee;
CPUId(0x1,&ee); CPUId(0x1,&ee);
+44 -68
View File
@@ -32,11 +32,26 @@ The scheduler checks for a few keys:
Each core has its own circular task queue. Each core has its own circular task queue.
For AP processors, they have a "Seth" task For AP processors, they have a "Seth" task
which stays in a loop waiting for jobs or which stays in a loop waiting for jobs or
requests to spawn tasks. See $LK,"APSethTask",A="MN:APSethTask"$(). requests to spawn tasks. See $LK,"CoreAPSethTask",A="MN:CoreAPSethTask"$().
$HL,1$*/ $HL,1$*/
U0 TaskFocusNext()
{
CTask *task,*_task=sys_focus_task;
sys_focus_task=NULL;
if (!_task) _task=adam_task;
task=_task->next_task;
do {
if (!Bt(&task->win_inhibit,WIf_SELF_FOCUS)) {
sys_focus_task=task;
CallExtNum(EXT_WIN_TO_TOP,task,TRUE);
return;
}
task=task->next_task;
} while (task!=_task);
}
asm { asm {
//************************************
TASK_CONTEXT_SAVE:: TASK_CONTEXT_SAVE::
//OUT: RSI=FS //OUT: RSI=FS
PUSH RSI PUSH RSI
@@ -147,15 +162,7 @@ _TASK_END_NOW::
CALL &TaskEnd CALL &TaskEnd
MOV RSI,RAX MOV RSI,RAX
CALL SET_FS_BASE CALL SET_FS_BASE
JMP I8 RESTORE_RSI_TASK_WITH_KEY_CHECK JMP I8 RESTORE_RSI_TASK
RESTORE_RSI_TASK:
BT U32 [SYS_CTRL_ALT_FLAGS],SYSf_CTRL_ALT_DEL
JC I32 HANDLE_SWAP_KEY_EVENT
XOR RAX,RAX
CMP U64 GS:CCPU.idle_task[RAX],RSI
JNE RESTORE_RSI_TASK_NO_KEY_CHECK
JMP I32 SWAP_IN_SETH_TASK_IF_READY
_YIELD:: _YIELD::
PUSHFD PUSHFD
@@ -189,12 +196,12 @@ _YIELD::
MOV U64 CTask.rsp[RSI],RSP MOV U64 CTask.rsp[RSI],RSP
MOV RSI,U64 CTask.next_task[RSI] MOV RSI,U64 CTask.next_task[RSI]
RESTORE_RSI_TASK_WITH_KEY_CHECK: RESTORE_RSI_TASK:
TEST U64 [SYS_CTRL_ALT_FLAGS],1<<SYSf_CTRL_ALT_DEL| TEST U64 [SYS_CTRL_ALT_FLAGS],1<<SYSf_CTRL_ALT_DEL|
1<<SYSf_CTRL_ALT_TAB|1<<SYSf_CTRL_ALT_X|1<<SYSf_CTRL_ALT_C 1<<SYSf_CTRL_ALT_TAB|1<<SYSf_CTRL_ALT_X|1<<SYSf_CTRL_ALT_C
JNZ HANDLE_SWAP_KEY_EVENT JNZ HANDLE_SYSF_KEY_EVENT
RESTORE_RSI_TASK_NO_KEY_CHECK: RESTORE_RSI_TASK2:
@@20: BT U64 CTask.task_flags[RSI],TASKf_KILL_TASK @@20: BT U64 CTask.task_flags[RSI],TASKf_KILL_TASK
JC I32 END_RSI_TASK JC I32 END_RSI_TASK
TEST U64 CTask.task_flags[RSI], TEST U64 CTask.task_flags[RSI],
@@ -219,117 +226,86 @@ RESTORE_RSI_TASK_NO_KEY_CHECK:
MOV RSP,U64 CTask.stk[RAX] MOV RSP,U64 CTask.stk[RAX]
ADD RSP,DFT_STK+CTaskStk.stk_base //Rst to top ADD RSP,DFT_STK+CTaskStk.stk_base //Rst to top
CALL SET_FS_BASE CALL SET_FS_BASE
STI //Swap-in idle task so we can unmask IRQs. STI //Restore idle task so we can unmask IRQs.
HLT HLT
SYS_IDLE_PT:: SYS_IDLE_PT::
CLI CLI
SWAP_IN_SETH_TASK_IF_READY: RESTORE_SETH_TASK_IF_READY:
XOR RAX,RAX XOR RAX,RAX
MOV RSI,GS:CCPU.seth_task[RAX] MOV RSI,GS:CCPU.seth_task[RAX]
JMP RESTORE_RSI_TASK_WITH_KEY_CHECK JMP RESTORE_RSI_TASK
HANDLE_SWAP_KEY_EVENT: HANDLE_SYSF_KEY_EVENT:
MOV RAX,RSI MOV RAX,RSI
CALL SET_FS_BASE CALL SET_FS_BASE
XOR RAX,RAX XOR RBX,RBX
MOV RAX,GS:CCPU.num[RAX] MOV RAX,GS:CCPU.num[RBX]
TEST RAX,RAX TEST RAX,RAX
JNZ I32 RESTORE_RSI_TASK_NO_KEY_CHECK JNZ I32 RESTORE_RSI_TASK2
MOV EAX,U32 SYS_CTRL_ALT_FLAGS MOV EAX,U32 SYS_CTRL_ALT_FLAGS
LOCK LOCK
BTR U32 [RAX],SYSf_CTRL_ALT_DEL BTR U32 [RAX],SYSf_CTRL_ALT_DEL
JC I32 &Reboot JC I32 &Reboot
CMP U64 GS:CCPU.idle_task[RBX],RSI
JE RESTORE_SETH_TASK_IF_READY
LOCK LOCK
BTR U32 [RAX],SYSf_CTRL_ALT_TAB BTR U32 [RAX],SYSf_CTRL_ALT_TAB
JNC @@05 JNC @@05
PUSH RSI CALL &TaskFocusNext
MOV RSI,U64 [SYS_FOCUS_TASK] JMP I32 RESTORE_FS_TASK
MOV U64 [SYS_FOCUS_TASK],0
CALL FOCUS_RSI_NEXT_USER
POP RSI
JMP I32 RESTORE_FS_TASK_WITH_KEY_CHECK
@@05: LOCK @@05: LOCK
BTR U32 [RAX],SYSf_CTRL_ALT_X BTR U32 [RAX],SYSf_CTRL_ALT_X
JC END_FOCUS_USER JC END_FOCUS_USER
LOCK LOCK
BTR U32 [RAX],SYSf_CTRL_ALT_C BTR U32 [RAX],SYSf_CTRL_ALT_C
JNC I32 RESTORE_RSI_TASK_WITH_KEY_CHECK JNC I32 RESTORE_RSI_TASK
BREAK_FOCUS_USER: BREAK_FOCUS_USER:
MOV RSI,U64 [SYS_FOCUS_TASK] MOV RSI,U64 [SYS_FOCUS_TASK]
TEST RSI,RSI TEST RSI,RSI
JZ SWAP_IN_SETH_TASK_IF_READY JZ RESTORE_SETH_TASK_IF_READY
BT U64 CTask.win_inhibit[RSI],WIf_SELF_FOCUS BT U64 CTask.win_inhibit[RSI],WIf_SELF_FOCUS
JC I32 RESTORE_RSI_TASK_NO_KEY_CHECK JC I32 RESTORE_RSI_TASK
LOCK LOCK
BTR U64 CTask.task_flags[RSI],TASKf_BREAK_LOCKED BTR U64 CTask.task_flags[RSI],TASKf_BREAK_LOCKED
JNC @@10 JNC @@10
LOCK LOCK
BTS U64 CTask.task_flags[RSI],TASKf_PENDING_BREAK BTS U64 CTask.task_flags[RSI],TASKf_PENDING_BREAK
JMP I32 RESTORE_RSI_TASK_NO_KEY_CHECK JMP I32 RESTORE_RSI_TASK
@@10: MOV RAX,&SysThrowBreak @@10: MOV RAX,&SysThrowBreak
MOV U64 CTask.rip[RSI],RAX MOV U64 CTask.rip[RSI],RAX
BT U64 CTask.task_flags[RSI],TASKf_BREAK_TO_SHIFT_ESC BT U64 CTask.task_flags[RSI],TASKf_BREAK_TO_SHIFT_ESC
JC @@15 JC I32 RESTORE_RSI_TASK
//Do these now, in case interrupt happens. //Do these now, in case interrupt happens.
MOV U64 CTask.wake_jiffy[RSI],0 MOV U64 CTask.wake_jiffy[RSI],0
PUSH RSI PUSH RSI
CALL &TaskRstAwaitingMsg CALL &TaskRstAwaitingMsg
JMP I32 RESTORE_RSI_TASK
@@15: JMP I32 RESTORE_RSI_TASK_NO_KEY_CHECK
END_FOCUS_USER: END_FOCUS_USER:
MOV RSI,U64 [SYS_FOCUS_TASK] MOV RSI,U64 [SYS_FOCUS_TASK]
MOV U64 [SYS_FOCUS_TASK],0 CALL &TaskFocusNext
PUSH RSI
CALL FOCUS_RSI_NEXT_USER
POP RSI
TEST RSI,RSI TEST RSI,RSI
JZ I32 SWAP_IN_SETH_TASK_IF_READY JZ I32 RESTORE_SETH_TASK_IF_READY
MOV RAX,RSI MOV RAX,RSI
CALL SET_FS_BASE CALL SET_FS_BASE
BT U64 CTask.win_inhibit[RSI],WIf_SELF_FOCUS BT U64 CTask.win_inhibit[RSI],WIf_SELF_FOCUS
JC I32 RESTORE_RSI_TASK_WITH_KEY_CHECK JC I32 RESTORE_RSI_TASK
LOCK LOCK
BTS U64 CTask.task_flags[RSI],TASKf_KILL_TASK BTS U64 CTask.task_flags[RSI],TASKf_KILL_TASK
JMP I32 END_RSI_TASK JMP I32 END_RSI_TASK
RESTORE_FS_TASK_WITH_KEY_CHECK: RESTORE_FS_TASK:
XOR RSI,RSI XOR RSI,RSI
MOV RSI,FS:CTask.addr[RSI] MOV RSI,FS:CTask.addr[RSI]
JMP I32 RESTORE_RSI_TASK_WITH_KEY_CHECK JMP I32 RESTORE_RSI_TASK
FOCUS_RSI_NEXT_USER:
TEST RSI,RSI
JNZ @@20
MOV ESI,U32 SYS_FIXED_AREA+CSysFixedArea.adam
@@20: MOV RDI,RSI
MOV RSI,U64 CTask.next_task[RSI]
@@25: BT U64 CTask.win_inhibit[RSI],WIf_SELF_FOCUS
JC @@30
CMP U64 [SYS_FOCUS_TASK],RSI
JE @@30
MOV U64 [SYS_FOCUS_TASK],RSI
MOV RAX,U64 [SYS_EXTERN_TABLE]
MOV RAX,U64 EXT_WIN_TO_TOP*8[RAX]
TEST RAX,RAX
JZ @@35
PUSH TRUE
PUSH RSI
CALL RAX
JMP @@35
@@30: MOV RSI,U64 CTask.next_task[RSI]
CMP RSI,RDI
JNE @@25
MOV U64 [SYS_FOCUS_TASK],0
@@35: RET
} }
_extern _TASK_CONTEXT_RESTORE U0 TaskContextRestore(); //Restore a task context. _extern _TASK_CONTEXT_RESTORE U0 TaskContextRestore(); //Restore a task context.
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
#This prints a hundred random words.
echo "$(shuf -n 100 /usr/share/dict/words --random-source=/dev/urandom | tr '\n' ' ')"
+1 -1
View File
@@ -17,7 +17,7 @@ HashTablePurge(adam_task->hash_table);
#help_index "Misc" #help_index "Misc"
//Use Dbg("Type 'G;'"); to debug before window mgr is running. //Use Dbg("Type 'G;'"); to debug before window mgr is running.
public F64 os_version=3.11;//Operating system version. public F64 os_version=3.12;//Operating system version.
#include "/Adam/MakeAdam" #include "/Adam/MakeAdam"