cmm: uploading all, part 1

git-svn-id: svn://kolibrios.org@3363 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2013-03-11 18:16:24 +00:00
parent 9ebd703865
commit 30f4695685
65 changed files with 8282 additions and 643 deletions

View File

@ -4,6 +4,7 @@
//home icon - rachel fu, GPL licence
//libraries
#define MEMSIZE 0x100000
#include "..\lib\kolibri.h"
#include "..\lib\strings.h"
#include "..\lib\figures.h"
@ -42,7 +43,7 @@ proc_info Form;
#define WIN_H 480
dword stak[100]; //ìåíþ ÏÊÌ
char stak[100]; //ìåíþ ÏÊÌ
mouse m;
#include "TWB.h"
@ -234,13 +235,13 @@ void Draw_Window()
if (Form.width<280) MoveSize(OLD,OLD,280,OLD);
PutPaletteImage(#toolbar,200,42,0,0,8,#toolbar_pal);
if (GetProcessSlot(downloader_id)<>0) PutImage(#stop_btn,24,24,88,10);
if (GetProcessSlot(downloader_id)<>0) _PutImage(88,10, 24,24, #stop_btn);
DrawBar(200,0,onLeft(200,9),43,0xE4DFE1); //çàêðàøèâàåì ôîí ïîä òóëáàðîì
DrawBar(0,42,onLeft(5,4),1,0xE2DBDC); //âûïóêëîñòü
DrawBar(0,43,onLeft(5,4),1,0xD2CED0); //âûïóêëîñòü
for (j=0; j<5; j++) DefineButton(j*37+11, 7, 29, 29, 300+j+BT_HIDE, 0xE4DFE1);
PutImage(#URLgoto,40,19,onLeft(57,0),14);
_PutImage(onLeft(57,0),14, 40,19, #URLgoto);
DefineButton(onLeft(37,0),15, 18, 16, GOTOURL+BT_HIDE, 0xE4DFE1);
DefineButton(onLeft(56,0),15, 17, 16, SEARCHWEB+BT_HIDE, 0xE4DFE1);
DrawRectangle(205,14,onLeft(58,205),18,0x94AECE); //îáîäîê ïîëîñû àäðåñà

View File

@ -475,7 +475,7 @@ void TWebBrowser::ParseHTML(dword bword){
if (line[strlen(#line)-1]==' ') break; //óáðàòü 2 ïðîáåëà ïîäðÿä
if (!stolbec) && (!line) break; //ñòðîêà íå ìîæåò íà÷èíàòüñÿ ñ ïðîáåëà
}
if (strlen(#line)<sizeof(line)) strcat(#line, #bukva);
if (strlen(#line)<sizeof(line)) chrcat(#line, bukva);
if (stolbec + strlen(#line) > lines.column_max)
{
@ -828,7 +828,6 @@ void Images(int left1, top1, width1)
char img_path[4096], alt[4096];
int w=0, h=0, img_lines_first=0, cur_pic=0;
if (GetFileInfo(libimg)<>0) return; //åñëè áèáëèîòåêè íåò
do{
if (!strcmp(#parametr,"src=")) //íàäî îáúåäèíèòü ñ GetNewUrl()
{

View File

@ -1,6 +1,5 @@
..\C--\c-- HTMLv.c /lst
del HTMLv
rename HTMLv.com HTMLv
rem ..\C--\kpack HTMLv
del warning.txt
pause
@del HTMLv
@rename HTMLv.com HTMLv
@del warning.txt
@pause

View File

@ -62,7 +62,7 @@ inline void Skew(dword x,y,w,h)
CopyScreen(italic_buf, x+Form.left+2, y+Form.top+skin_height, w, h);
FOR (i=0;i*tile_height<h;i++)
PutImage(w*3*tile_height*i+italic_buf,w,tile_height,x+shift-i+1,i*tile_height+y);
_PutImage(x+shift-i+1,i*tile_height+y, w,tile_height, w*3*tile_height*i+italic_buf);
mem_Free(italic_buf);
}

67
programs/cmm/buildall.bat Normal file
View File

@ -0,0 +1,67 @@
set BINDIR=C:\Users\111\Desktop\svn\programs\cmm\_bin
md %BINDIR%
cd %BINDIR%
FOR %%A in (*.*) do del \Q "%%A"
cd ..\browser
cls
call compile.bat
copy /Y htmlv %BINDIR%
cd ..\copyf
cls
call compile.bat
copy /Y copyf %BINDIR%
cd ..\dicty
cls
call compile.bat
copy /Y dicty %BINDIR%
cd ..\eolite
cls
call compile.bat
copy /Y eolite %BINDIR%
cd ..\example
cls
call compile.bat
cd ..\installer
cls
call compile.bat
copy /Y installer.kex %BINDIR%
cd ..\liza
cls
call compile.bat
copy /Y liza_mail %BINDIR%
cd ..\end
cls
call compile.bat
copy /Y end %BINDIR%
cd ..\notify
cls
call compile.bat
copy /Y @notify %BINDIR%
cd ..\rb
cls
call compile_rus.bat
copy /Y @rb %BINDIR%
cd ..\skinsel
cls
call compile.bat
copy /Y skinsel %BINDIR%
cd ..\tmpdisk
cls
call compile_ru.bat
copy /Y tmpdisk %BINDIR%
cd %BINDIR%
FOR %%A in (*.*) do ..\c--\kpack "%%A"
pause

View File

@ -1,5 +0,0 @@
del dicty
..\C--\C-- dicty
rename dicty.com dicty
del warning.txt
pause

View File

@ -1,306 +0,0 @@
//dict_path > cur_dict
#include "..\lib\kolibri.h"
#include "..\lib\strings.h"
#include "..\lib\file_system.h"
#include "..\lib\mem.h"
#include "..\lib\dll.h"
#include "..\lib\edit_box_lib.h"
unsigned char title[]= "Dictionary v1.0";
unsigned char direction[] = "Translate direction:";
unsigned char translate_caption[] = "Translate";
unsigned char dict_not_found[] = "Dictionary not found";
unsigned char dict_opened[] = "Dictionary loaded";
unsigned char empty_word[] = "Type a word to translate";
//char direction[] = "Íàïðàâëåíèå ïåðåâîäà:"w;
int mouse_dd;
edit_box edit1= {200,20,16,0xffffff,0x94AECE,0x94AECE,0x94AECE,0,248,#edword,#mouse_dd,100000000000010b};
system_colors sc;
proc_info Form;
unsigned char edword[4096], translate_result[4096], search_word[4096], cur_dict[4096];
#define DEFAULT_DICT_DIRECROTY "dictionaries/"
#define DEFAULT_DICT "eng - rus.dict";
dword files_buf;
dword buff, fsize;
void main()
{
int id;
word key;
mem_Init();
load_dll2(boxlib, #edit_box_draw,0);
program_path[strrchr(#program_path, '/')] = 0; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî /
strcpy(#program_path+strlen(#program_path), DEFAULT_DICT_DIRECROTY);
SetCurDir(#program_path);
strcpy(#cur_dict, DEFAULT_DICT);
OpenDictionary(#cur_dict);
if (param)
{
strcpy(#edword, #param);
edit1.size=edit1.pos=strlen(#edword);
Translate();
}
SetEventMask(0x27);
loop()
{
switch(WaitEvent())
{
case evMouse:
edit_box_mouse stdcall (#edit1);
break;
case evButton:
id=GetButtonID();
if (id==1) ExitProcess();
if (id==10)
{
Translate();
DrawTranslation();
}
if (id==11)
{
ShowDictList();
break;
}
if (id==12)
{
Draw_Window();
break;
}
if (id>=20)
{
strcpy(#cur_dict, id-20*304+files_buf+72);
OpenDictionary(#cur_dict);
}
break;
case evKey:
key = GetKey();
IF (key==013) //Enter
{
Translate();
DrawTranslation();
}
EAX=key<<8;
edit_box_key stdcall(#edit1);
//LiveSearch();
break;
case evReDraw:
Draw_Window();
break;
}
}
}
/*void LiveSearch()
{
dword bj, i;
byte IsNativeWord=1;
unsigned char native[256];
unsigned char bukovka;
for (bj=0; bj<fsize; bj++;)
{
bukovka=ESBYTE[buff+bj];
if (buff+bj==0x0a)
{
bj++;
if (buff+bj!='"') IsNativeWord=1;
}
else
{
for (i=0; i<strlen(#edword); i++) if (edword[i]<>native[i]) goto __NE_RAVNO;
debug(#native);
__NE_RAVNO:
native = '\0';
IsNativeWord = 0;
}
if (IsNativeWord==1) native[strlen(#native)] = bukovka;
}
}*/
void Translate()
{
dword tj;
char w_native[100], w_translation[100], bukva[1];
byte InfType;
#define NATIVE_WORD 0
#define TRANSLATION 1
#define IGNORE 2
if (!fsize) return;
translate_result = 0;
strcpy(#search_word, #edword);
strupr(#search_word);
if (!edword)
{
strcpy(#translate_result, #empty_word);
return;
}
for (tj=0; tj<fsize; tj++;)
{
bukva = ESBYTE[buff+tj];
switch (bukva)
{
case '"':
if (w_translation)
{
if (!strcmp(#w_native, #search_word))
{
if (translate_result) strcat(#translate_result, ", ");
strcat(#translate_result, #w_translation);
}
else
if (translate_result) return;
w_translation = w_native = 0;
}
InfType = TRANSLATION;
break;
case 0x0a:
InfType = NATIVE_WORD;
break;
default:
if (InfType==NATIVE_WORD)
{
strcat(#w_native, #bukva);
//if (w_native<>search_word) InfType = IGNORE; //åñëè ïåðâàÿ áóêâà íå ñîâïàäàåò èãíîðèì âñ¸ ñëîâî
}
if (InfType==TRANSLATION) strcat(#w_translation, #bukva);
}
}
if (!translate_result) strcpy(#translate_result, "Word is'nt found in the dictionary");
}
void OpenDictionary(dword dict_path)
{
dword j, words_count=0;
mem_Free(buff);
buff = mem_Alloc(3500576);
ReadFile(0, 3500576, buff, dict_path);
IF (EAX<>6)
{
fsize=0;
strcpy(#translate_result, #dict_not_found);
Draw_Window();
return;
}
fsize=EBX;
strcpy(#search_word, dict_path);
strcpy(#translate_result, #dict_opened);
Draw_Window();
}
void ShowDictList()
{
int j, fcount=10;
mem_Free(files_buf);
files_buf= mem_Alloc(32);
ReadDir(0, files_buf, #program_path);
fcount=ESDWORD[files_buf+8];
mem_Free(files_buf);
files_buf = mem_Alloc(fcount+1*304+32);
ReadDir(fcount, files_buf, #program_path);
fcount-=2;
mem_Move(files_buf,files_buf+608,fcount*304);
DefineButton(0,0, Form.width,Form.height, 12+BT_HIDE+BT_NOFRAME, sc.work_button);
for (j=0; j<fcount; j++;)
{
DefineButton(edit1.left+130,j+1*20+35, 107,20, 20+j, sc.work_button);
WriteText(edit1.left+130+8,j+1*20+35+7,0x80,sc.work_button_text, j*304+files_buf+72, 0);
}
}
void DrawTranslation()
{
int text_break=0;
char tt[4096]='';
int y_pos=70, skin_height=GetSkinHeight();
char draw_buf[4096];
strcpy(#draw_buf, #translate_result);
DrawBar(0, y_pos, Form.width-9, Form.height - y_pos-skin_height-4, 0xFFFFFF);
strttl(#draw_buf);
WriteText(10+1, y_pos+8, 0x90, 0x800080, #search_word, 0);
WriteText(10 , y_pos+8, 0x90, 0x800080, #search_word, 0);
while (draw_buf)
{
text_break= Form.width/6-6;
if (text_break>strlen(#draw_buf))
{
WriteText(10, y_pos+21, 0x80, 0, #draw_buf, 0);
return;
}
while (draw_buf[text_break]<>' ') && (text_break>0) text_break--;
strcpy(#tt, #draw_buf+text_break+1);
draw_buf[text_break]=0x0;
WriteText(10, y_pos+21, 0x80, 0, #draw_buf, 0);
strcpy(#draw_buf, #tt);
y_pos+=12;
if (y_pos+24+skin_height+12>Form.height) return; //÷òîá íå çàëåçàëî íà íèæíèé îáîäîê
}
}
void Draw_Window()
{
sc.get();
DefineAndDrawWindow(215,120,400,250,0x73,sc.work,#title);
GetProcessInfo(#Form, SelfInfo);
if (Form.status_window>2) return; //åñëè ñâåðíóòî â çàãîëîâîê, íè÷åãî íå ðèñóåì
if (Form.height<140) MoveSize(OLD,OLD,OLD,140);
if (Form.width<400) MoveSize(OLD,OLD,400,OLD);
DrawBar(0, 0, Form.width-9, 69, sc.work);
edit1.focus_border_color=sc.work_graph;
edit1.width=Form.width-edit1.left-edit1.left-9;
edit_box_draw stdcall(#edit1); //ðèñóåì ñòðîêó àäðåñà
DefineButton(edit1.left+edit1.width-80,35, 80,20, 10, sc.work_button);
WriteText(edit1.left+edit1.width-80+14,35+7,0x80,sc.work_button_text,#translate_caption, 0);
DrawBar(0, 69, Form.width-9, 1, sc.work_graph);
WriteText(edit1.left,35+7,0x80,sc.work_text,#direction, 0);
DefineButton(edit1.left+130,35, 120,20, 11, sc.work_button);
WriteText(edit1.left+130+112,35+7,0x80,sc.work_button_text,"\x19", 0);
DrawBar(edit1.left+130+1,36, 107,19, 0xFFFFFF);
WriteText(edit1.left+130+8,35+7,0x80,0x000000,#cur_dict, 0);
DrawTranslation();
}
stop:

View File

@ -0,0 +1,5 @@
..\C--\C-- dicty
@del dicty
@rename dicty.com dicty
@del warning.txt
@pause

View File

@ -1,53 +1,54 @@
#define MEMSIZE 0x8000
#include "..\lib\kolibri.h"
#include "..\lib\strings.h"
#include "..\lib\file_system.h"
#include "..\lib\mem.h"
#include "..\lib\file_system.h"
#include "..\lib\figures.h"
#include "..\lib\dll.h"
#include "..\lib\edit_box_lib.h"
char title[]= "Dictionary v1.0";
unsigned char speaker[23*40*3]= FROM "speaker.raw";
char title[]= "Dictionary v1.3";
char direction[] = "Translate direction:";
char translate_caption[] = "Translate";
char dict_not_found[] = "Dictionary not found";
char dict_opened[] = "Dictionary loaded";
char empty_word[] = "Type a word to translate";
//char direction[] = "Íàïðàâëåíèå ïåðåâîäà:"w;
int mouse_dd;
edit_box edit1= {200,20,16,0xffffff,0x94AECE,0x94AECE,0x94AECE,0,248,#edword,#mouse_dd,100000000000010b};
system_colors sc;
proc_info Form;
char edword[4096], translate_result[4096], search_word[4096], cur_dict[4096];
#define DEFAULT_DICT_DIRECROTY "dictionaries/"
#define DEFAULT_DICT "eng - rus.dict";
dword files_buf;
dword buff, fsize;
char edword[256], search_word[256], translate_result[4096], dict_folder[4096], cur_dict[256];
#define DICT_DIRECROTY "dictionaries"
#define PRONOUNCED_FILE "/tmp9/1/dicty/pronounced.txt"
#define SPEECH_PATH "/tmp9/1/media/speech/speech"
dword dir_buf, file_buf, fsize;
int mouse_dd, speaker_id;
edit_box edit1= {200,20,16,0xffffff,0x94AECE,0x94AECE,0x94AECE,0,248,#edword,#mouse_dd,100000000000010b};
void main()
{
int id;
word key;
int id, key;
mem_Init();
load_dll2(boxlib, #edit_box_draw,0);
program_path[strrchr(#program_path, '/')] = 0; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî /
strcpy(#program_path+strlen(#program_path), DEFAULT_DICT_DIRECROTY);
SetCurDir(#program_path);
strcpy(#cur_dict, DEFAULT_DICT);
OpenDictionary(#cur_dict);
program_path[strrchr(#program_path, '/')] = 0;
strcpy(#dict_folder, #program_path);
strcat(#dict_folder, DICT_DIRECROTY);
SetCurDir(#dict_folder);
OpenDictionary(0);
if (param)
{
strcpy(#edword, #param);
edit1.size=edit1.pos=strlen(#edword);
Translate();
DrawTranslation();
edit_box_draw stdcall(#edit1);
}
SetEventMask(0x27);
@ -62,28 +63,25 @@ void main()
case evButton:
id=GetButtonID();
if (id==1) ExitProcess();
if (id==10)
if (id==10) { Translate(); DrawTranslation(); }
if (id==11) ShowDictList();
if (id==12) DrawWindowContent();
if (id==15)
{
Translate();
DrawTranslation();
}
if (id==11)
if (GetProcessSlot(speaker_id)!=0))
{
ShowDictList();
break;
KillProcess(speaker_id);
pause(50);
}
if (id==12)
else
{
Draw_Window();
break;
if (WriteFile(strlen(#translate_result)+1, #translate_result, PRONOUNCED_FILE)!=0) break;
pause(50);
speaker_id = RunProgram(SPEECH_PATH, PRONOUNCED_FILE);
}
if (id>=20)
{
strcpy(#cur_dict, id-20*304+files_buf+72);
OpenDictionary(#cur_dict);
SpeakerDraw(Form.cwidth-38, Form.cheight-32);
}
if (id>=20) OpenDictionary(id - 20);
break;
case evKey:
@ -96,88 +94,48 @@ void main()
EAX=key<<8;
edit_box_key stdcall(#edit1);
//LiveSearch();
break;
case evReDraw:
Draw_Window();
DrawWindowContent();
break;
}
}
}
void Draw_Window()
void DrawWindowContent()
{
sc.get();
DefineAndDrawWindow(215,120,400,250,0x73,sc.work,#title);
GetProcessInfo(#Form, SelfInfo);
if (Form.status_window>2) return; //åñëè ñâåðíóòî â çàãîëîâîê, íè÷åãî íå ðèñóåì
if (Form.status_window>2) return;
if (Form.height<140) MoveSize(OLD,OLD,OLD,140);
if (Form.width<400) MoveSize(OLD,OLD,400,OLD);
DrawBar(0, 0, Form.width-9, 69, sc.work);
edit1.focus_border_color=sc.work_graph;
edit1.width=Form.width-edit1.left-edit1.left-9;
edit_box_draw stdcall(#edit1); //ðèñóåì ñòðîêó àäðåñà
DefineButton(edit1.left+edit1.width-80,35, 80,20, 10, sc.work_button);
WriteText(edit1.left+edit1.width-80+14,35+7,0x80,sc.work_button_text,#translate_caption);
DrawBar(0, 0, Form.width-9, 69, sc.work);
edit_box_draw stdcall(#edit1);
DrawCaptButton(edit1.left+edit1.width-80,35, 80,20, 10, sc.work_button, sc.work_button_text,#translate_caption);
DrawBar(0, 69, Form.width-9, 1, sc.work_graph);
WriteText(edit1.left,35+7,0x80,sc.work_text,#direction);
DefineButton(edit1.left+130,35, 120,20, 11, sc.work_button);
WriteText(edit1.left+130+112,35+7,0x80,sc.work_button_text,"\x19");
DrawBar(edit1.left+130+1,36, 107,19, 0xFFFFFF);
WriteText(edit1.left+130+112,35+7,0x80,sc.work_button_text,"\x19");
WriteText(edit1.left+130+8,35+7,0x80,0x000000,#cur_dict);
DrawTranslation();
}
void OpenDictionary(dword dict_path)
void SpeakerDraw(dword x, y)
{
dword j, words_count=0;
mem_Free(buff);
buff = mem_Alloc(3500576);
ReadFile(0, 3500576, buff, dict_path);
IF (EAX<>6)
{
fsize=0;
strcpy(#translate_result, #dict_not_found);
Draw_Window();
return;
}
fsize=EBX;
strcpy(#search_word, dict_path);
strcpy(#translate_result, #dict_opened);
Draw_Window();
}
void ShowDictList()
{
int j, fcount=10;
mem_Free(files_buf);
files_buf= mem_Alloc(32);
ReadDir(0, files_buf, #program_path);
fcount=ESDWORD[files_buf+8];
mem_Free(files_buf);
files_buf = mem_Alloc(fcount+1*304+32);
ReadDir(fcount, files_buf, #program_path);
fcount-=2;
memmov(files_buf,files_buf+608,fcount*304);
DefineButton(0,0, Form.width,Form.height, 12+BT_HIDE+BT_NOFRAME, sc.work_button);
for (j=0; j<fcount; j++;)
{
DefineButton(edit1.left+130,j+1*20+35, 107,20, 20+j, sc.work_button);
WriteText(edit1.left+130+8,j+1*20+35+7,0x80,sc.work_button_text, j*304+files_buf+72);
}
if (!strstr(#cur_dict, "- rus")) return;
DefineButton(x-5, y-5, 23+10, 20+9, 15+BT_HIDE+BT_NOFRAME, 0);
if (GetProcessSlot(speaker_id)==0)) _PutImage(x, y, 23,20, #speaker); else _PutImage(x, y, 23,20, 23*20*3+#speaker);
}
void Translate()
@ -191,6 +149,7 @@ void Translate()
#define IGNORE 2
if (!fsize) return;
KillProcess(speaker_id);
translate_result = 0;
strcpy(#search_word, #edword);
@ -204,7 +163,7 @@ void Translate()
for (tj=0; tj<fsize; tj++;)
{
bukva = ESBYTE[buff+tj];
bukva = ESBYTE[file_buf+tj];
switch (bukva)
{
case '"':
@ -229,36 +188,78 @@ void Translate()
default:
if (InfType==NATIVE_WORD)
{
strcat(#w_native, #bukva);
chrcat(#w_native, bukva);
//if (w_native<>search_word) InfType = IGNORE; //åñëè ïåðâàÿ áóêâà íå ñîâïàäàåò èãíîðèì âñ¸ ñëîâî
}
if (InfType==TRANSLATION) strcat(#w_translation, #bukva);
if (InfType==TRANSLATION) chrcat(#w_translation, bukva);
}
}
if (!translate_result) strcpy(#translate_result, "Word is'nt found in the dictionary");
}
void OpenDictionary(dword fileid)
{
if (!dir_buf) ShowDictList();
if (!dir_buf) strcpy(#cur_dict, "none");
else strcpy(#cur_dict, fileid*304+dir_buf+72);
fsize = ESDWORD[fileid*304 + dir_buf+64];
free(file_buf);
file_buf = malloc(fsize);
ReadFile(0, fsize, file_buf, #cur_dict);
IF (EAX<>0)
{
fsize = 0;
strcpy(#search_word, "Error #");
strcat(#search_word, itoa(EAX));
strcpy(#translate_result, #dict_not_found);
DrawWindowContent();
return;
}
strcpy(#search_word, #cur_dict);
strcpy(#translate_result, #dict_opened);
DrawWindowContent();
}
void ShowDictList()
{
int j, fcount, error;
free(dir_buf);
error = GetDir(#dir_buf, #fcount, #dict_folder);
if (!error)
{
DefineButton(0,0, Form.width,Form.height, 12+BT_HIDE+BT_NOFRAME, sc.work_button);
for (j=0; j<fcount; j++;)
{
DefineButton(edit1.left+130,j+1*20+35, 107,20, 20+j, sc.work_button);
WriteText(edit1.left+130+8,j+1*20+35+7,0x80,sc.work_button_text, j*304+dir_buf+72);
}
}
}
void DrawTranslation()
{
int text_break=0;
char tt[4096]='';
int y_pos=70, skin_height=GetSkinHeight();
int y_pos=70;
char draw_buf[4096];
strcpy(#draw_buf, #translate_result);
DrawBar(0, y_pos, Form.width-9, Form.height - y_pos-skin_height-4, 0xFFFFFF);
DrawBar(0, y_pos, Form.width-9, Form.cheight - y_pos, 0xFFFFFF);
strttl(#draw_buf);
WriteText(10+1, y_pos+8, 0x90, 0x800080, #search_word);
WriteText(10 , y_pos+8, 0x90, 0x800080, #search_word);
WriteTextB(10+1, y_pos+8, 0x90, 0x800080, #search_word);
while (draw_buf)
{
text_break= Form.width/6-6;
if (text_break>strlen(#draw_buf))
{
WriteText(10, y_pos+21, 0x80, 0, #draw_buf);
return;
break;
}
while (draw_buf[text_break]<>' ') && (text_break>0) text_break--;
strcpy(#tt, #draw_buf+text_break+1);
@ -266,8 +267,9 @@ void DrawTranslation()
WriteText(10, y_pos+21, 0x80, 0, #draw_buf);
strcpy(#draw_buf, #tt);
y_pos+=12;
if (y_pos+24+skin_height+12>Form.height) return; //÷òîá íå çàëåçàëî íà íèæíèé îáîäîê
if (y_pos+24+8>Form.cheight) break; //÷òîá íå çàëåçàëî íà íèæíèé îáîäîê
}
SpeakerDraw(Form.cwidth-38, Form.cheight-32);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

@ -0,0 +1 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蓙鴪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鴪鯒津播爆煇<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D;A孀<41><E5AD80><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>遧竑杷把梅渤<E6A285><E6B8A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mgkC;AC;A澱<41><E6BEB1><EFBFBD><EFBFBD>裴衢瞥諡<E79EA5><E8ABA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>渟淒吐蒜副弡<E589AF><E5BCA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SJPE<BE<BE<B澱<42><E6BEB1><EFBFBD><EFBFBD>玳瀏吐棉油<E6A389><E6B2B9><EFBFBD><EFBFBD>嵭刕独氾煤珀<E785A4><E78F80><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G?EF>DF>DF>DF>D澱<44><E6BEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>吐氾賠竇<E8B3A0><E7AB87><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樛榿吐緬<E59090><E7B7AC><EFBFBD><EFBFBD>窶甍<E7AAB6>綿<EFBFBD><E7B6BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H?EH?EH?EH?EH?EH?E禿<45><E7A6BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>掎挌波曜満<E69B9C><E6BA80><EFBFBD><EFBFBD>迯軾波版毘都<E6AF98><EFA8A6><EFBFBD>IAG{ty<74><79><EFBFBD>gafIAGIAGIAGIAGIAGIAG督<47><E79DA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>韶霾波頁備<E9A081><E58299><EFBFBD><EFBFBD><EFBFBD><EFBFBD>波頁非鴦<E99D9E><E9B4A6><EFBFBD>KBH<42>{<7B><><EFBFBD><EFBFBD>c\aKBHKBHKBHKBHKBHKBH氾<48><E6B0BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嶹劦波頁肥銕<E882A5><E98A95><EFBFBD><EFBFBD><EFBFBD>波頁緋謖<E7B78B><E8AC96><EFBFBD>LDJ<44><4A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_X^LDJLDJLDJLDJLDJLDJ氾<4A><E6B0BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>綿綿琶聽<E790B6><E881BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>藁亙琶籵<E790B6><E7B1B5><EFBFBD><EFBFBD>NEK<45><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bZ_NEKNEKNEKNEKNEKNEK氾<4B><E6B0BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>量綿畔聽<E79594><E881BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>冦亙畔粐<E79594><E7B290><EFBFBD><EFBFBD>OFL<46>|<7C><><EFBFBD><EFBFBD>hafOFLOFLOFLOFLOFLOFL錨<4C><E98CA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嶹勛畔免菩銕<E88FA9><E98A95><EFBFBD><EFBFBD><EFBFBD>畔免簿跛<E7B0BF><E8B79B><EFBFBD>QHN<48>{~<7E><><EFBFBD>pinQHNQHNQHNQHNQHNQHN米<4E><E7B1B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>髑駝畔免峯<E5858D><E5B3AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>畔免報齠嶹奛矮髑<E79FAE><E9AB91><EFBFBD><EFBFBD><EFBFBD>TKQRIORIORIORIORIO米<4F><E7B1B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>槞枳別侏<E588A5><E4BE8F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>迯輒別綿愈鄕<E68488><E98495><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>d\aSKQSKQSKQSKQ僻<51><E583BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>別擁門肄<E99680><E88284><EFBFBD><EFBFBD><EFBFBD><EFBFBD>烟瀝別冢<E588A5><E586A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E99795>y}ULRULRULR僻<52><E583BB><EFBFBD><EFBFBD>痿瀝別冢劑<E586A2><E58A91><EFBFBD><EFBFBD>嶹匀僕擁問邃<E5958F><E98283><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WOUVNT鉾<54><E989BE><EFBFBD><EFBFBD>蒿舁僕諡<E58395><E8ABA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>痼疝瞥量煉都<E78589><EFA8A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E58EA0><EFBFBD><EFBFBD><EFBFBD><E7AB9F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>都綷摸楊翼痺<E7BFBC><E797BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鴃靉麺陵吏嶹<E5908F><E5B6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>聿髏<E881BF><E9AB8F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@8>D=C謚<43><E8AC9A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFA8A6><EFBFBD><EFBFBD>D;A孀<41><E5AD80><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G>DB9?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mgkC;AC;A澱<41><E6BEB1><EFBFBD><EFBFBD><EFBFBD>TLR住<52><E4BD8F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C;AJBH闕<48><E99795><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RJPD<BD<BD<B澱<42><E6BEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D<BSLQ<4C><51><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G@ED<B<><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G?EF>DF>DF>DF>D澱<44><E6BEB1><EFBFBD><EFBFBD><EFBFBD>F>DF>DΒ<44><CE92><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F>DVNT<4E><54><EFBFBD>痼甎<E797BC>綿<EFBFBD><E7B6BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G?EG?EG?EG?EG?EG?E禿<45><E7A6BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y~G?ESLQ都<51><EFA8A6><EFBFBD><EFBFBD>西<EFBFBD>G?EG?E齟<45><E9BD9F><EFBFBD><EFBFBD>I@F{sx<73><78><EFBFBD>g_dI@FI@FI@FI@FI@FI@F督<46><E79DA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>綿<EFBFBD>I@FI@F窶<46><E7AAB6><EFBFBD><EFBFBD><EFBFBD>I@FI@F慟<46><E6859F><EFBFBD><EFBFBD>JBH<42>{<7B><><EFBFBD><EFBFBD>c\aJBHJBHJBHJBHJBHJBH禿<48><E7A6BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>JBHJBH涜<48><E6B69C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>KCIJBH執<48><E59FB7><EFBFBD><EFBFBD>LCI<43><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_W]LCILCILCILCILCILCI氾<49><E6B0BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ULRLCI<43><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`X]LCI<43><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MEK<45><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bZ_MEKMEKMEKMEKMEKMEK氾<4B><E6B0BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>VNTMEK<45><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bZ_MEK<45><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OFL<46>|<7C><><EFBFBD><EFBFBD>hafOFLOFLOFLOFLOFLOFL錨<4C><E98CA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OFLOFL播<4C><E692AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PGMOFL深召<E6B7B1><E58FAC>PHN<48>{~<7E><><EFBFBD>oinPHNPHNPHNPHNPHNPHN米<4E><E7B1B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PHNPHN粃<4E><E7B283><EFBFBD><EFBFBD><EFBFBD>PHNPHN旒戈嶹繧糀髑<E7B380><E9AB91><EFBFBD><EFBFBD>TKQRIORIORIORIORIO米<4F><E7B1B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RIO]U[¬<><EFBFA2><EFBFBD><EFBFBD><EFBFBD>RIORIO齠<4F><E9BDA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>d[`SJPSJPSJPSJP米<50><E7B1B3><EFBFBD><EFBFBD><EFBFBD>SJPSJP<4A><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SJPbY_<59><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E99795>y}ULRULRULR僻<52><E583BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ULRbZ_<5A><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>XOUULR<4C><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WNTVMS鉾<53><E989BE><EFBFBD><EFBFBD><EFBFBD>ZQW昇<57><E69887><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>VMS\SY闔<59><E99794><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4BE98><EFBFBD><EFBFBD><EFBFBD><E7AB9F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFA8A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\TZWOU<4F><55><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>YPV]TZ諡<5A><E8ABA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¦鉎Й擁<D099><E69381><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

View File

@ -0,0 +1,5 @@
..\C--\C-- end.c
@del end
@rename end.com end
@del warning.txt
@pause

View File

@ -1,3 +1,4 @@
#define MEMSIZE 0x3E80
#include "..\lib\kolibri.h"
#include "..\lib\figures.h"
#include "..\lib\strings.h"
@ -38,19 +39,45 @@ dword stars_col[4]={0xD2CF19, 0x716900, 0x002041}; //0x005BFF -
:void ShadowScreen(dword img, w, h)
{
dword to = w*h*3 + img;
for ( ; img < to; img+=4) { ESDWORD[img] >>= 1; $and ESDWORD[img], 7F7F7F7Fh }
//for ( ; img < to; img+=4) { ESDWORD[img] >>= 2; $and ESDWORD[img], 3F3F3F3Fh }
}
void main()
{
int key;
dword s1,s2, s3, s4, sides_w;
pause(10);
mem_Init();
WIN_SIZE_X=GetScreenWidth()+1;
WIN_SIZE_Y=GetScreenHeight()+1;
PANEL_X=WIN_SIZE_X-PANEL_SIZE_X/2;
PANEL_Y=WIN_SIZE_Y-PANEL_SIZE_Y/2;
sides_w = WIN_SIZE_X-PANEL_SIZE_X/2;
s1 = mem_Alloc(WIN_SIZE_X*PANEL_Y*3);
s2 = mem_Alloc(sides_w*PANEL_Y*3);
s3 = mem_Alloc(sides_w*PANEL_Y*3);
s4 = mem_Alloc(WIN_SIZE_X*PANEL_Y*3);
CopyScreen(s1, 0, 0, WIN_SIZE_X, PANEL_Y);
ShadowScreen(s1, WIN_SIZE_X, PANEL_Y);
CopyScreen(s2, 0, PANEL_Y, sides_w, PANEL_SIZE_Y+1);
ShadowScreen(s2, sides_w, PANEL_SIZE_Y+1);
CopyScreen(s3, sides_w+PANEL_SIZE_X+1, PANEL_Y, sides_w-1, PANEL_SIZE_Y+1);
ShadowScreen(s3, sides_w, PANEL_SIZE_Y+1);
CopyScreen(s4, 0, PANEL_Y+PANEL_SIZE_Y+1, WIN_SIZE_X, PANEL_Y-1);
ShadowScreen(s4, WIN_SIZE_X, PANEL_Y-1);
goto _DRAW;
loop()
{
WaitEventTimeout(130);
@ -76,39 +103,22 @@ void main()
break;
case evReDraw:
draw_window();
sc.get();
DefineAndDrawWindow(0,0,WIN_SIZE_X, WIN_SIZE_Y, 0x01, 0, 0, 0x01fffFFF);
//_PutImage(0,0,WIN_SIZE_X,WIN_SIZE_Y,shadow_buf);
_PutImage(0,0,WIN_SIZE_X, PANEL_Y,s1);
draw_main_area(PANEL_X, PANEL_Y, PANEL_SIZE_X, PANEL_SIZE_Y);
_PutImage(0,PANEL_Y,sides_w, PANEL_SIZE_Y+1,s2);
_PutImage(sides_w+PANEL_SIZE_X+1,PANEL_Y,sides_w-1, PANEL_SIZE_Y+1,s3);
_PutImage(0,PANEL_Y+PANEL_SIZE_Y+1,WIN_SIZE_X, PANEL_Y-1,s4);
break;
default:
default: _DRAW:
draw_stars();
}
}
}
void draw_window()
{
int x, y;
sc.get();
DefineAndDrawWindow(0,0,WIN_SIZE_X, WIN_SIZE_Y, 0x01, 0, 0, 0x01fffFFF);
draw_main_area(PANEL_X, PANEL_Y, PANEL_SIZE_X, PANEL_SIZE_Y);
//draw grid
for (y=0; y<WIN_SIZE_Y; y++)
{
for (x=0; x<WIN_SIZE_X; x++)
{
if (y>PANEL_Y) && (y<PANEL_Y+PANEL_SIZE_Y) && (x==PANEL_X) x+=PANEL_SIZE_X; //íà ïàíåëè íå ðèñóåì
if (! y&1) && (! x&1) {PutPixel(x, y, 0); continue;}
if ( y&1) && ( x&1) PutPixel(x, y, 0);
}
}
}
void draw_main_area()
{
int i=0;
@ -151,7 +161,7 @@ void draw_stars()
PutPixel(PANEL_X +x_pic, PANEL_Y +y_pic-1, stars_col[1]);
}*/
PutImage(#moon,6,6, PANEL_X+PANEL_SIZE_X-60,PANEL_Y+10);
_PutImage(PANEL_X+PANEL_SIZE_X-60,PANEL_Y+10, 6,6, #moon);
}

View File

Before

Width:  |  Height:  |  Size: 614 B

After

Width:  |  Height:  |  Size: 614 B

View File

@ -0,0 +1,817 @@
//Leency & Veliant 2008-2013
//GNU GPL licence.
//êîïèðîâàòü ÷åðåç ïîòîê
//èêîíêà äåéñòâèòåëüíî íóæíà äðóãàÿ äëÿ íåèçâåñíûõ óñòðîéñòâ è ïàïîê â áóäóþùåì.
//libraries
#define MEMSIZE 0xA0000
#include "..\lib\kolibri.h"
#include "..\lib\strings.h"
#include "..\lib\mem.h"
#include "..\lib\dll.h"
#include "..\lib\lib.obj\box_lib.h"
#include "..\lib\file_system.h"
#include "..\lib\figures.h"
//images
#include "imgs\toolbar.txt"
#include "imgs\left_p.txt"
int BUTTON_HEIGHT=18;
//for OpenDir
#define ONLY_SHOW 0
#define WITH_REDRAW 1
#define ONLY_OPEN 2
//ïåðåìåííûå
#define title "Eolite File Manager v1.62"
dword col_work = 0xE4DFE1;
dword col_border = 0x819FC5;
dword col_padding = 0xC8C9C9;
dword col_selec = 0x94AECE;
dword col_lpanel = 0x00699C;
int f_visible,
count,
za_kadrom,
curbtn;
byte cut_active,
rename_active,
del_active;
byte show_actions=1,
show_dev_name=1,
sort_num=2,
isdir;
unsigned char
path[4096],
edit_path[4096],
file_path[4096],
file_name[4096],
copy_file[4096],
temp[4096];
int scroll_size;
struct path_string {
char Item[4096];
};
int toolbar_buttons_x[7]={9,46,85,134,167,203};
char tmp_disk_del_param[3]="d0\0";
dword file_mas[6898];
int j, i, mouse_dd;
int scroll_used;
proc_info Form;
mouse m;
dword buf, off; //äëÿ òåêñòà è áóôåðà
edit_box edit2= {250,213,80,0xFFFFCC,0x94AECE,0xFFFFCC,0xffffff,0,248,#file_name,#mouse_dd,64,6,6};
PathShow_data PathShow = {0, 17,250, 6, 250, 0, 0, 0x0, 0xFFFfff, #path, #edit_path, 0};
PathShow_data FileShow = {0, 56,215, 6, 100, 0, 0, 0x0, 0xFFFfff, #file_name, #temp, 0};
inline fastcall signed int _strrchr( ESI,BL)
{
int jj=0, last=strlen(ESI);
do{
jj++;
$lodsb
IF(AL==BL) last=jj;
} while(AL!=0);
return last;
}
#include "include\some_code.h"
#include "include\about_dialog.h"
#include "include\sorting.h"
#include "include\icons_f.h"
#include "include\ini.h"
#include "include\left_panel.h"
#include "include\history.h"
void main()
{
word key, id, can_show;
int min_win_h;
mem_Init();
if (load_dll2(boxlib, #box_lib_init,0)!=0) notify("Error while loading library /rd/1/lib/box_lib.obj");
SetEventMask(0x27);
GetSystemDiscs();
GetIni(1);
if (param)
{
strcpy(#path, #param);
if (strcmp(#path+strlen(#path)-1,"/")<>0) strcat(#path, "/"); //åñëè íåò, + "/"
}
else
strcpy(#path, "/rd/1/");
Open_Dir(#path,ONLY_OPEN);
loop() switch(WaitEvent())
{
case evMouse:
IF (del_active) break;
id=GetProcessSlot(Form.ID);
IF (id<>GetActiveProcess()) break; //åñëè îêíî íå àêòèâíî íà ñîáûòèÿ ìûøè íå ðåàãèðóåì
IF (rename_active) edit_box_mouse stdcall(#edit2);
m.get();
/*if (m.pkm) && (m.x > 192) && (m.y > 57) can_show = 1;
if (!m.pkm) && (can_show)
{
SwitchToAnotherThread();
CreateThread(#FileMenu,#stak2);
can_show = 0;
}*/
if (m.x>=Form.width-26) && (m.x<=Form.width-6) && (m.y>40) && (m.y<57)
{
IF (m.lkm==1) DrawRectangle3D(onLeft(26,0),41,14,14,0xC7C7C7,0xFFFFFF);
WHILE (m.lkm==1) && (za_kadrom>0)
{
pause(10);
za_kadrom--;
List_ReDraw();
m.get();
}
DrawRectangle3D(onLeft(26,0),41,14,14,0xFFFFFF,0xC7C7C7);
}
if (m.x>=Form.width-26) && (m.x<=Form.width-6) && (m.y>onTop(22,0)+1) && (m.y<onTop(22,0)+16)
{
IF (m.lkm==1) DrawRectangle3D(onLeft(26,0),onTop(21,0),14,14,0xC7C7C7,0xFFFFFF);
while (m.lkm==1) && (za_kadrom<count-f_visible)
{
pause(10);
za_kadrom++;
List_ReDraw();
m.get();
}
DrawRectangle3D(onLeft(26,0),onTop(21,0),14,14,0xFFFFFF,0xC7C7C7);
}
//êîë¸ñèêî ìûøè
IF (m.vert==65535) && (za_kadrom>0)
{
if (za_kadrom>0) za_kadrom--;
if (curbtn<f_visible-1) curbtn++;
List_ReDraw();
if (za_kadrom>0) za_kadrom--;
if (curbtn<f_visible-1) curbtn++;
List_ReDraw();
}
IF (m.vert==1) && (za_kadrom<count-f_visible)
{
if (za_kadrom<count-f_visible) za_kadrom++;
if (curbtn>0) curbtn--;
List_ReDraw();
if (za_kadrom<count-f_visible) za_kadrom++;
if (curbtn>0) curbtn--;
List_ReDraw();
}
//ñêðîëë
if (!m.lkm) && (scroll_used) { scroll_used=NULL; TVScroll(); }
if (m.x>=Form.width-26) && (m.x<=Form.width-6) && (m.y>56) && (m.y<Form.height) && (m.lkm) && (!scroll_used) {scroll_used=1;TVScroll();}
if (scroll_used)
{
IF (scroll_size/2+57>m.y) || (m.y<0) || (m.y>4000) m.y=scroll_size/2+57; //åñëè êóðñîð íàä îêíîì
id=za_kadrom; //ñîõðàíÿåì ñòàðîå êîëè÷åñòâî
j= scroll_size/2;
za_kadrom = m.y -j -57 * count;
za_kadrom /= onTop(22,57);
IF (f_visible+za_kadrom>count) za_kadrom=count-f_visible;
IF (id<>za_kadrom) List_ReDraw(); //÷òîá ëèøíèé ðàç íå ïåðåðèñîâûâàòü
}
break;
//Button pressed-----------------------------------------------------------------------------
case evButton:
id=GetButtonID();
IF (id==1) ExitProcess();
IF (del_active)
{
IF (id==301) || (id==302) Del_File(302-id);
break;
}
switch(id)
{
case 21: //Back
GoBack();
break;
case 22: //Forward
if (HistoryPath(GO_FORWARD))
{
za_kadrom=curbtn=NULL; //ââåðõ ñïèñêà
Open_Dir(#path,WITH_REDRAW);
}
break;
case 23: //up!
Dir_Up();
break;
case 24: //cut
key=24;
case 25: //copy
goto CTRLC_MARK;
case 26: //paste
Paste();
break;
case 31...33: //sort
IF(sort_num==1) DrawFilledBar(onLeft(192,168)/2+210,42,6,10);
IF(sort_num==2) DrawFilledBar(onLeft(115,0),42,6,10);
IF(sort_num==3) DrawFilledBar(onLeft(44,0),42,6,10);
sort_num=id-30;
Open_Dir(#path,1);
break;
case 30: //about
SwitchToAnotherThread();
CreateThread(#about_dialog,#stak1);
break;
case 77:
IF (show_actions==1) show_actions=0; ELSE show_actions=1;
DrawLeftPanel();
break;
case 78: //rescan devices
Tip(56, "Devices", 78, "-");
pause(10);
GetIni(1);
GetSystemDiscs();
Open_Dir(#path,WITH_REDRAW);
DrawLeftPanel();
break;
case 80: //rename
goto REN_MARK;
case 81: //Delete file
Del_Form();
break;
case 82: //create folder
NEW_FOLDER_MARK:
strcpy(#temp, #path);
strcat(#temp, "New folder");
CreateDir(#temp);
IF (!EAX){
SelectFile("New folder");
goto REN_MARK;
}
ELSE
{
Write_Error(EAX);
ShowMessage("Folder can not be created.");
}
break;
case 100...120:
DEVICE_MARK:
DrawRectangle3D(17,id-100*16+74,159,16, 0, 0); //âûäåëåíèå
strcpy(#path, #disk_list[id-100].Item);
za_kadrom=curbtn=0;
Open_Dir(#path,1);
pause(5);
DrawRectangle3D(17,id-100*16+74,159,16, 0xFFFFFF, 0xFFFFFF);
break;
case 130...160:
tmp_disk_del_param[1]=disk_list[id-130].Item[4];
RunProgram("/sys/tmpdisk", #tmp_disk_del_param);
pause(10);
GetSystemDiscs();
Open_Dir(#path,WITH_REDRAW);
DrawLeftPanel();
break;
default:
if (id<200) break; //êíîïêè èç ñïèñêà ôàéëîâ
if (curbtn!=id-201) {FileList_ReDraw(id-201-curbtn); break;}
else
{
OPEN_MARK:
if (!isdir)
{
GetIni(0);
}
else
{
if (!strcmp(#file_name,"..")) { Dir_Up(); break; }
OPEN_DEV:
strcpy(#path, #file_path);
IF (strcmp(#path+strlen(#path)-1,"/")<>0) strcat(#path,"/"); //åñëè íåò, + "/"
za_kadrom=curbtn=0;
Open_Dir(#path,1);
}
}
}
break;
//Key pressed-----------------------------------------------------------------------------
case evKey:
key = GetKey();
if (Form.status_window>2) break;
IF (del_active)
{
IF (key==013) Del_File(true);
IF (key==027) Del_File(false);
break;
}
IF (edit2.flags<>64) && (key<>13) && (key<>27)
{
EAX=key<<8;
edit_box_key stdcall (#edit2);
break;
}
switch (key)
{
case 209...217:
id=key-110;
IF (id-100>=disc_num) break;
GOTO DEVICE_MARK;
case 8: //Íàçàä
//GoBack();
Dir_Up();
break;
case 004: //Ctrl+D ðèñ íà ðàá ñòîë ðàñòÿíóòü
strcpy(#temp, "\\S__");
strcat(#temp, #file_path);
RunProgram("/sys/media/kiv", #temp);
break;
case 014: //Ctrl+N íîâîå îêíî
IF (Form.left==98) MoveSize(Form.left-20,Form.top-20,OLD,OLD);
RunProgram("/sys/File Managers/Eolite", #path);
break;
case 024: //Ctrl+X
case 003: //Ctrl+C
CTRLC_MARK:
IF (isdir) break; //ïàïêè ïîêà ÷òî êîïèðîâàòü íå óìååì
strcpy(#copy_file, #file_path); //âû÷èñëÿåì êàêîé ôàéë êîïèðîâàòü
IF (key==24) cut_active=1; ELSE cut_active=0;
break;
case 022: //Ctrl+V
Paste();
break;
case 027: //Esc
IF (rename_active==1) ReName(false);
break;
case 013: //Enter
IF (rename_active==1) {ReName(true); break;}
GOTO OPEN_MARK;
break;
case 55: //F6 - new folder
goto NEW_FOLDER_MARK;
case 56: //IF (rename_active==1) break;//up
case 178: //up
FileList_ReDraw(-1);
break;
case 177: //down
FileList_ReDraw(1);
break;
case 180: //home
za_kadrom=0;
curbtn=0;
List_ReDraw();
break;
case 181: //end
za_kadrom=count-f_visible;
curbtn=f_visible-1;
List_ReDraw();
break;
case 183: //Page Down
FileList_ReDraw(f_visible-1);
break;
case 184: //Page Up
FileList_ReDraw(-f_visible+1);
break;
case 051: //Íàæàòà F2
REN_MARK:
if (!count) break;
DeleteButton(curbtn+201); //ýòî ÷òîá ìîæíî áûëî âûäåëÿòü ìûøüþ
edit2.flags=66; //äåëàåì êîìïîíåíò àêòèâíûì
edit2.width=onLeft(24,217);
edit2.top=curbtn*BUTTON_HEIGHT+59;
edit2.size=edit2.pos=strlen(#file_name);
edit_box_draw stdcall (#edit2);
DrawBar(213,curbtn*BUTTON_HEIGHT+58,edit2.width+1,1,0xFFFFCC); //ïîëîñà æåëòàÿ ñâåðõó äëÿ îäèíàêîâîñòè
rename_active=1;
break;
case 052: //Íàæàòà F3
IF (!isdir) RunProgram("/sys/tinypad", #file_path);
break;
case 053: //Íàæàòà F4
IF (!isdir) RunProgram("/sys/develop/heed", #file_path);
break;
case 054: //F5
Open_Dir(#path,1);
break;
case 182: //delete file
Del_Form();
break;
default:
for (i=curbtn+za_kadrom+1; i<count; i++)
{
strcpy(#temp, file_mas[i]*304+buf+72);
IF (temp[0]==key) || (temp[0]==key-32)
{
FileList_ReDraw(i-curbtn-za_kadrom);
break;
}
}
}
break;
case evReDraw:
DefineAndDrawWindow(40,20,550,500,0x73,col_work,title);
GetProcessInfo(#Form, SelfInfo);
if (Form.status_window>2) break;
min_win_h = disc_num*16+195;
if (Form.height < min_win_h) MoveSize(OLD,OLD,OLD,min_win_h);
if (Form.width<480) MoveSize(OLD,OLD,480,OLD);
draw_window();
}
}
inline fastcall void draw_window()
{
//toolbar buttons
PutPaletteImage(#toolbar,246,34,0,0,8,#toolbar_pal);
for (j=0; j<3; j++) DefineButton(toolbar_buttons_x[j]+2,5+2,31-5,29-5,21+j+BT_HIDE,col_work);
for (j=3; j<6; j++) DefineButton(toolbar_buttons_x[j],5,31,29,21+j+BT_HIDE,col_work);
//ïîëîñà àäðåñà
DrawBar(246,0,onLeft(246,60),12, col_work); //ôîí íàä ïîëîñîé àäðåñà
DrawBar(246,29,onLeft(246,60),5,col_work); //ôîí ïîä ïîëîñîé àäðåñà
DrawRectangle3D(246,12,onLeft(66,246),16,col_border,col_border); //îáîäîê
DefineButton(onLeft(34,0),6,27,28,30+BT_HIDE+BT_NOFRAME,col_work); //about
PutPaletteImage(#goto_about,56,34,Form.width-65,0,8,#goto_about_pal);
//ïðÿìîóãîëüíèêè âíóòðè
DrawRectangle3D(1,40,Form.cwidth-3,onTop(46,0),col_border,col_border); //ñèíèé îáîäîê
DrawRectangle3D(0,39,Form.cwidth-1,onTop(44,0),col_palette[4],col_palette[4]); //ôîí
for (i=0; i<5; i++) DrawBar(0, 34+i, Form.cwidth, 1, col_palette[8-i]);
DrawLeftPanel();
//SortButtons
DrawFlatButton(192,40,onLeft(192,168),16,31,col_work,"File");
DrawFlatButton(onLeft(168,0),40,73,16,32,col_work,"Type");
DrawFlatButton(onLeft(95,0),40,68,16,33,col_work,"Size");
//Ïåðåðèñîâûâàåì ñïèñîê
Open_Dir(#path,ONLY_SHOW);
//ïðîêðóòêà
DrawBar(onLeft(27,0),57,1,onTop(22,57),col_border); //ëèíèÿ ñëåâà îò ïðîêðóòêè
DrawFlatButton(onLeft(27,0),40,16,16,0,col_work,"\x18"); //ïðîêðóòêà ââåðõ
DrawFlatButton(onLeft(27,0),onTop(22,0),16,16,0,col_work,"\x19");//ïðîêðóòêà âíèç
if (del_active) Del_Form();
DefineButton(onLeft(34,0),6,27,28,30+BT_HIDE+BT_NOFRAME,col_work); //about
}
void KEdit()
{
PathShow.area_size_x = Form.cwidth-306;
DrawBar(PathShow.start_x-3, PathShow.start_y-4, PathShow.area_size_x+2, 15, 0xFFFfff);
PathShow_prepare stdcall(#PathShow);
PathShow_draw stdcall(#PathShow);
}
void FileList_ReDraw(int curbtn_)
{
if (curbtn_<=0) //ââåðõ
{
IF (za_kadrom==0) && (curbtn<=0) return;
IF (-curbtn_-1<curbtn)
{
Line_ReDraw(0xFFFFFF, curbtn); //áåëàÿ ïîëîñà
curbtn+=curbtn_;
Line_ReDraw(col_selec, curbtn); //âûäåëåíèå
return;
}
ELSE
{
IF (-curbtn_<za_kadrom) za_kadrom+=curbtn_; ELSE za_kadrom=0;
curbtn=0;
List_ReDraw();
return;
}
}
else //âíèç
{
IF (za_kadrom==count-f_visible) && (curbtn==f_visible-1) return;
IF (f_visible-curbtn>curbtn_)
{
Line_ReDraw(0xFFFFFF, curbtn); //áåëàÿ ïîëîñà
curbtn+=curbtn_;
Line_ReDraw(col_selec, curbtn); //âûäåëåíèå
return;
}
else
{
IF(za_kadrom+curbtn+curbtn_>=count)
{
za_kadrom=count-f_visible;
curbtn=curbtn_-za_kadrom+curbtn;
}
ELSE
{
za_kadrom+=curbtn_+curbtn-f_visible+1;
curbtn=f_visible-1;
}
IF (curbtn<0) || (curbtn>f_visible)
{
curbtn=f_visible-1;
}
List_ReDraw();
}
}
}
void List_ReDraw()
{
int paint_x=f_visible*BUTTON_HEIGHT+57;
IF (count-za_kadrom<f_visible) || (curbtn>f_visible-1) //åñëè ìû â êîíöå ñïèñêà ôàéëîâ ðàçâåðí¸ì îêíî ïîÿâÿòüñÿ ïóñòÿå áåëûå êíîïêè
{ za_kadrom=count-f_visible; curbtn=f_visible-1; } //ýòî åñëè âûäåëåíèå ïîñëå ñõëîïûâàíèÿ îêíà çà êàäðîì
FOR (j=0; j<f_visible; j++) IF (curbtn<>j) Line_ReDraw(0xFFFFFF, j); ELSE Line_ReDraw(col_selec, curbtn);
DrawBar(192,paint_x,onLeft(27,192),onTop(paint_x,6),0xFFFFFF); //çàëèâêà áåëûì äîêîíöà
DrawBar(onLeft(168,0),paint_x,1,onTop(paint_x,6),col_work); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1
DrawBar(onLeft(95,0),paint_x,1,onTop(paint_x,6),col_work); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2
TVScroll();
}
void Line_ReDraw(dword color, filenum){
dword text_col=0, name_len=0, y=filenum*BUTTON_HEIGHT+57; //ïîëîæåíèå òåêñòà ïî Y
IF (rename_active==1) ReName(false);
DefineButton(192,y,onLeft(28,192),BUTTON_HEIGHT,201+filenum+BT_HIDE+BT_NOFRAME,color); //êíîïà
//äà, ÿ íå ñïîðþ ÷òî èçâðàò, íî çàòî ïåðåðèñîâêè íå âèäíî
DrawBar(192,y,3,BUTTON_HEIGHT,color);
DrawBar(192+19,y,onLeft(46,192),BUTTON_HEIGHT,color); DrawBar(195,y+17,16,1,color);
if (BUTTON_HEIGHT>18) DrawBar(195,y+18,16,BUTTON_HEIGHT-18,color);
if (BUTTON_HEIGHT>15) DrawBar(195,y,16,BUTTON_HEIGHT-15,color);
off=file_mas[filenum+za_kadrom]*304 + buf+72;
if (!TestBit(ESDWORD[off-40], 4)) //ýòî ÔÀÉË èëè ïàïêà?
{
strcpy(#temp, off);
Put_icon(#temp+_strrchr(#temp,'.'), BUTTON_HEIGHT/2-7+y, color);
WriteText(7-strlen(ConvertSize(ESDWORD[off-8]))*6+onLeft(75,0),BUTTON_HEIGHT-6/2+y,0x80,0,ConvertSize(ESDWORD[off-8])); //size
}
else
if (!strcmp("..",off))
Put_icon("..", BUTTON_HEIGHT/2-7+y, color);
else
Put_icon("<DIR>", BUTTON_HEIGHT/2-7+y, color);
if (TestBit(ESDWORD[off-40],1)) || (TestBit(ESDWORD[off-40],2)) text_col=0xA6A6B7; //ôàéë ñêðûòûé èëè ñèñòåìíûé?
if (color<>0xFFFfff)
{
isdir=TestBit(ESDWORD[off-40], 4);
strcpy(#file_name, off);
strcpy(#file_path, #path);
strcat(#file_path, #file_name); //ïîëíûé ïóòü ê ôàéëó
if (text_col==0xA6A6B7) text_col=0xFFFFFF;
}
FileShow.font_color = text_col;
FileShow.area_size_x = Form.width - 380;
FileShow.text_pointer = off;
FileShow.start_y = BUTTON_HEIGHT/2-3+y;
PathShow_prepare stdcall(#FileShow);
PathShow_draw stdcall(#FileShow);
DrawBar(onLeft(168,0),y,1,BUTTON_HEIGHT,col_work); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1
DrawBar(onLeft(95,0),y,1,BUTTON_HEIGHT,col_work); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2
}
void Open_Dir(dword temp_, redraw){
int errornum, max_count;
char path_[4096],
somelen=strlen(temp_)-1;
if (redraw<>ONLY_SHOW)
{
strcpy(#path_, temp_);
if (somelen) path_[somelen]=NULL;
if (buf) free(buf);
buf = malloc(32);
errornum=ReadDir(0, buf, #path_);
if (errornum<>0) //îøèáêà ïðè ÷òåíèè ïàïêè
{
HistoryPath(ADD_NEW_PATH);
GoBack();
Write_Error(errornum);
return;
}
count = ESDWORD[buf+8];
buf = realloc(buf, count * 304 + 32);
ReadDir(count, buf, #path_);
count=EBX;
max_count = sizeof(file_mas)/sizeof(dword)-1;
if (count>max_count) count=max_count;
}
if (count<>-1)
{
KEdit();
HistoryPath(ADD_NEW_PATH);
IF (!strcmp(".",buf+72)) {count--; memmov(buf,buf+304,count*304);} //ôèëüòðóåì ýëåìåíò "."
FOR (j=0;j<f_visible;j++) DeleteButton(201+j); //óäàëÿåì ñòàðûå
f_visible=onTop(6,57)/BUTTON_HEIGHT;
IF (count<f_visible) f_visible=count;
//ñòðåëî÷êà ñîðòèðîâêè
IF (sort_num==1) WriteText(Form.width+60/2,45,0x80,0x4E78AC,"\x19");
IF (sort_num==2) WriteText(Form.width-115,45,0x80,0x4E78AC,"\x19");
IF (sort_num==3) WriteText(Form.width-44,45,0x80,0x4E78AC,"\x19");
IF (redraw<>ONLY_SHOW) Sorting(); //äëÿ áîëüøèõ ïàïîê ïðè ðåïåèíòå îêíà
IF (redraw<>ONLY_OPEN) List_ReDraw();
}
IF (count==-1) && (redraw<>ONLY_OPEN) {f_visible=count=0; List_ReDraw();}
}
inline Sorting()
{
dword k=0, l=1;
int i;
if (!strcmp(#path,"/")) //íå ñîðòèðîâàòü ïàïêè è íå ìåíÿòü ðåãèñòð â "/"
{
FOR(k=1;k<count;k++;) file_mas[k]=k;
return;
}
FOR (j=count-1, off=count-1*304+buf+32; j>=0; j--, off-=304;) //ïàïêè ââåðõ, ôàéëû âíèç
{
strttl(off+40);
if (TestBit(ESDWORD[off],4)) //ïàïêà?
{
file_mas[k]=j;
k++;
}
else
{
file_mas[count-l]=j;
l++;
}
}
//Ñîáñòâåííî ñîðòèðîâêà: âíà÷àëå ïàïêè, ïîòîì ôàéëû
Sort_by_Name(0,k-1);
IF (sort_num==1) Sort_by_Name(k,count-1);
IF (sort_num==2) Sort_by_Type(k,count-1);
IF (sort_num==3) Sort_by_Size(k,count-1);
//åñëè ïàïêà ".." íå ïåðâàÿ, ñòàâèì å¸ òóäà
IF (k>0) && (strcmp(file_mas[0]*304+buf+72,"..")<>0) FOR(k--; k>0; k--;) IF (!strcmp(file_mas[k]*304+buf+72,"..")) file_mas[k]><file_mas[0];
}
void Del_Form()
{
int dform_x=Form.width/2-13;
//òèïà îêíî
if (!count) return;
FOR (i=5;i<11;i++) DeleteButton(201+i); //óäàëÿåì êíîïêè ïîä ôîðìîé
DrawFlatButton(dform_x,160,200,80,0,col_work, ""); //ôîðìà
WriteText(dform_x+19,175,0x80,0,"Do you really want to delete");
IF (strlen(#file_name)<28)
{
WriteText(strlen(#file_name)*6+dform_x+20,190,0x80,0,"?");
WriteText(dform_x+20,190,0x80,0,#file_name); //ïèøåì èìÿ
}
ELSE
{
WriteText(164+dform_x,190,0x80,0,"...?");
ESI = 24;
WriteText(dform_x+20,190,0,0,#file_name); //ïèøåì èìÿ
}
//êíîïî÷êè
DrawFlatButton(dform_x+20,208,70,20,301,0xFFB6B5,"Yes");
DrawFlatButton(dform_x+111,208,70,20,302,0xC6DFC6,"No");
del_active=1;
}
void Del_File(byte dodel)
{
int del_file_rez;
IF (dodel==true)
{
del_file_rez = DeleteFile(#file_path);
IF (del_file_rez<>0)
{
Write_Error(del_file_rez);
IF ( isdir) ShowMessage("Error. Folder isn't empty.");
IF (!isdir) ShowMessage("Error. Filesystem read-only.");
}
}
del_active=0;
DeleteButton(301); DeleteButton(302); //óäàëÿåì êíîïî÷êè Yes/No
Open_Dir(#path,1);
}
void Paste()
{
char new_copy_path[4096];
int copy_rezult;
IF (!copy_file) return; //îòìåíà, åøè åù¸ íè÷¸ íå ñêîïèðîâàëè
strcpy(#new_copy_path, #path);
strcat(#new_copy_path, #copy_file+strrchr(#copy_file,'/'));
if (!strcmp(#copy_file,#new_copy_path)) //åñëè ìû êîïèðóåì è âñòàâëÿåì â îäíîé è òîé æå ïàïêå
{
strcpy(#new_copy_path, #path);
strcat(#new_copy_path, "new_");
strcat(#new_copy_path, #copy_file+strrchr(#copy_file,'/'));
}
copy_rezult=CopyFile(#copy_file,#new_copy_path);
IF (copy_rezult<>0) //îøèáêà
{
Write_Error(copy_rezult);
DrawFlatButton(Form.width/2-13,160,200,80,0,0xFFB6B5, "Error. You can't paste here.");
pause(150);
}
IF (cut_active) //åñëè ìû âûáðàëè âûðåçàòü
{
strcpy(#file_path, #copy_file);
Del_File(true);
copy_file=NULL;
cut_active=false;
}
SelectFile(#new_copy_path+strrchr(#new_copy_path,'/'));
}
void ReName(byte rename)
{
int del_file_rez;
char edit_name[256];
rename_active=0;
edit2.flags=64;
DefineButton(192,curbtn*BUTTON_HEIGHT+57,onLeft(27,192),BUTTON_HEIGHT,curbtn+201+BT_HIDE+BT_NOFRAME,0xFFFFFF);
if (rename==true)
{
strcpy(#temp, #path);
strcpy(#edit_name, #file_name); //ñîõðàíÿåì íîâîå èìÿ ôàéëà, äëÿ òîãî, ÷òîáû åãî ïîòîì âûäåëèòü
strcat(#temp, #file_name);
if (strcmp(#file_path,#temp)<>0) && (file_name)
IF (isdir)
{
del_file_rez = DeleteFile(#file_path);
IF (del_file_rez<>0)
{
Write_Error(del_file_rez);
ShowMessage("Error. Folder isn't empty.");
return;
}
ELSE CreateDir(#temp);
Open_Dir(#path,1);
}
ELSE
{
CopyFile(#file_path,#temp);
Del_File(true);
}
SelectFile(#edit_name);
}
Line_ReDraw(col_selec,curbtn);
}
void SelectFile(dword that_file)
{
za_kadrom=curbtn=0; //ââåðõ ñïèñêà
Open_Dir(#path,ONLY_OPEN);
strttl(that_file);
for (i=count-1; i>=0; i--;)
if (!strcmp(file_mas[i]*304+buf+72,that_file)) break;
FileList_ReDraw(i);
List_ReDraw();
}
void Dir_Up()
{
char cur_folder[4096];
i=strlen(#path)-1;
if (i==0) return;
path[i]=0x00;
i = strrchr(#path, '/');
strcpy(#cur_folder, #path+i);
path[i]=0x00;
SelectFile(#cur_folder);
}
inline fastcall void GoBack() //âíà÷àëå óäàëÿåì òåêóùèé ïóòü, à ïîòîì êîïèðóåì òî, ÷òî îñòàëîñü
{
char cur_folder[4096];
strcpy(#cur_folder, GetCurrentFolder());
if (HistoryPath(GO_BACK)) SelectFile(#cur_folder);
}
stop:
char stak1[100];
char stak2[100];

View File

@ -0,0 +1,5 @@
@del Eolite
..\C--\c-- Eolite.c /lst
@rename Eolite.com Eolite
@del warning.txt
@pause

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,7 @@
/////////////////////////
//Èêîíêè ïàïîê è ôàéëîâ//
/////////////////////////
dword ficons_pal[] = {0x00FFFFFF,0x00606078,0x00D0D0D8,0x008888A8,0x00F8F8F8,0x009098B0,0x00E0E0E0,0x00A0A0B8,0x00F0F0F8,0x00A8A8C0,0x007880A0,0x00E8E8F0,0x00C8C8D0,0x00C8C8C8,0x00F0F8FF,0x00E0E0E8,0x00D8D8E0,0x00F8F8FF,0x00C8C8D8,0x00FFB898,0x008080A0,0x00C0C0C8,0x00FFA078,0x00586080,0x005878A8,0x006880A0,0x00D0D8E0,0x0080A0C0,0x00586078,0x00E0E8F0,0x008898B8,0x00B8C0D8,0x00D8E8F0,0x00D8F0FF,0x007088A8,0x00A8B0C0,0x007890B0,0x00C8E8F8,0x00F8F8F0,0x00E0E8E8,0x00D0D8D8,0x00C0C8E0,0x0080A0E0,0x007098C8,0x006090C8,0x005888C0,0x00A8B0C8,0x00A87868,0x00604840,0x00786038,0x00705028,0x00685048,0x00FFF8B8,0x00B89848,0x00F8E070,0x00C0A850,0x00F8D858,0x00A09880,0x00F8C050,0x00F0B848,0x00E0A850,0x00986860,0x00583830,0x00707898,0x0068C0D8,0x00B0E0F8,0x0070B8E0,0x00F8FFFF,0x00A0C8F0,0x00000000,0x00F84050,0x0048D040,0x000078B8,0x00F8C048,0x00A06858,0x00FFE898,0x00989070,0x00F8B840,0x00FFF8F0,0x00C0B8A8,0x00D8B040,0x00788088,0x00E8F0F0,0x00C08830,0x00584840,0x00A85800,0x00FFE8A8,0x00A86818,0x00F0F0D8,0x00F8C830,0x00F0B828,0x00381010,0x00D8A028,0x00B0C8E0,0x0078A0D0,0x0098B8E8,0x0088A8D0,0x0098B8E0,0x003070B8,0x00A0C8E8,0x005090C8,0x004888C0,0x003078C0,0x00B8D0E8,0x002068A8,0x0088B0E0,0x0080B0D8,0x0090B8E0,0x002068B0,0x00B8D0F0,0x002060A8,0x0070A0C8,0x002868B0,0x002870B0,0x002868A8,0x00687088,0x00E89090,0x00D09898,0x00909088,0x00C88080,0x00B87820,0x00B86818,0x00E8C068,0x00885810,0x00D09850,0x00B07028,0x00F0D8B0,0x00A87028,0x00B05800,0x00885028,0x00C89048,0x00C89038,0x00985000,0x00E8D8B0,0x00C89810,0x00FFF8D8,0x00FFFFC8,0x00F8E8A8,0x00F8E098,0x00FFE8C0,0x00F8D888,0x00F8D880,0x00F0D078,0x00D8A020,0x0088E068,0x00209018,0x00A87800,0x00188000,0x00A0D868,0x00309018,0x00C8F8A0,0x00289018,0x00608818,0x0050A830,0x0030A028,0x00A8F068,0x00808000,0x0088C840,0x0070C848,0x00D8C070,0x0080C840,0x00C0B850,0x00F8E0A0,0x00F8E090,0x00D8E0F8,0x0098D0D0,0x0038A878,0x0058A890,0x00309068,0x00308880,0x00105870,0x002890B8,0x00186880,0x00105058,0x0048A8C8,0x001098D8,0x0078B8E0,0x002098C8,0x002898C8,0x0058C8FF,0x002088B8,0x0030A0D8,0x00C84048,0x002078B0,0x0030A8D8,0x00808080,0x00407888,0x0040A060,0x0080B820,0x00A02828,0x00F86068,0x00E02040,0x00E01828,0x00A8A8A8,0x00B8B8C0,0x00787878,0x00407828,0x00406040,0x007898C8,0x00E85878,0x00E04870,0x000098E0,0x0008A8F8,0x00D85868,0x00E86080,0x00E88098,0x00E888A0,0x00888888,0x00E8E8E8,0x00A0A0A0,0x00F0E0B8,0x00FFD850,0x00B8B8C8,0x00606080,0x00FFC818,0x00505870,0x00D8D0D8,0x0098C8F0,0x00606880,0x00405068,0x00303840,0x00FF0000,0x00F8C8C8};
unsigned char ficons[6240] = FROM "imgs\icons.raw";

View File

@ -0,0 +1,59 @@
unsigned char blue_hl[190*268]= FROM "imgs\blue_hl8.raw";
dword blue_hl_pal[]= {0x0001699C,0x0000699C,0x00026A9C,0x0002699C,
0x00036A9C,0x00046B9C,0x00046A9C,0x00056B9D,0x00046B9D,0x00066C9D,
0x00066C9E,0x00056C9D,0x00076D9E,0x00086E9F,0x00066D9E,0x00086D9E,
0x00096E9F,0x00076C9E,0x000A6FA0,0x000B6FA0,0x000A6E9F,0x000B70A1,
0x00096F9F,0x000A6F9F,0x000C70A1,0x000B70A0,0x000D71A1,0x000C71A1,
0x000D71A2,0x000E71A2,0x00086D9F,0x000F72A2,0x000E72A2,0x001072A2,
0x001172A2,0x000C70A0,0x001273A2,0x001373A2,0x001374A2,0x001474A3,
0x001475A3,0x001474A2,0x001272A2,0x001575A3,0x001676A4,0x001576A3,
0x001576A4,0x001777A4,0x001777A5,0x001878A5,0x001877A5,0x001776A4,
0x001675A3,0x001978A6,0x001978A5,0x001A78A6,0x001B78A6,0x001676A3,
0x000D70A1,0x001A77A6,0x001977A5,0x001977A6,0x001876A4,0x001876A5,
0x001776A5,0x001675A4,0x001775A4,0x001574A3,0x001574A2,0x001473A2,
0x000E71A1,0x001775A3,0x001674A3,0x001A79A6,0x001B79A7,0x001B79A6,
0x001A78A5,0x001C7AA7,0x001C79A7,0x001A77A5,0x001D7AA8,0x001D7AA7,
0x001173A2,0x001E7BA8,0x001D7BA8,0x001977A4,0x001F7CA8,0x001F7BA8,
0x001E7AA8,0x001C79A6,0x001575A4,0x00207CA8,0x001E7AA7,0x001D79A7,
0x001976A4,0x00217CA8,0x00227CA8,0x00207BA8,0x001976A5,0x001473A3,0};
unsigned char devices[14*78]= FROM "imgs\dev.raw";
unsigned char factions[16*44] = FROM "imgs\actions.raw";
unsigned char logo[7225] = FROM "imgs\logo8b.raw";
dword logo_pal[]= {0x8096C0,0x7D93BC,0x7D76B0,0x8094BE,0x7C83B3,0x7D0C82,
0x7B73AC,0x7B90B7,0x7D7AB0,0x8C1B8C,0x74378B,0x7488AE,0x7C8EB8,0x846BAB,
0xAF63B0,0x821C89,0x697A9C,0x768AB1,0x8B66A9,0xBF80BF,0x993399,0x6B5C90,
0x975EA9,0xC48BC4,0xA955A9,0x72438B,0x7083A7,0x798DB5,0xA45CAA,0xC993C9,
0xB164B1,0x793A8C,0x8185B5,0xB46CB5,0xC791C7,0xB873B8,0x84328F,0x7D54A0,
0x840B84,0x82238B,0x7C539D,0x8A4C9F,0x8C3B95,0x637393,0x824399,0x9D409D,
0x942B94,0x83288E,0x7B599E,0x833C94,0xA043A0,0x8B4194,0xA264AA,0xAC5BAC,
0x9C3B9C,0x7982AE,0x861588,0xBC7BBC,0x7E4C90,0xAC6AB0,0xC083C0,0x7F4199,
0xA650A6,0x68628B,0x7D73A6,0xB670B7,0x95449A,0x7D6BAA,0x953195,0x8B5C9B,
0x60708E,0x8E519F,0x835598,0x7E65A9,0x7E2D91,0x7D5AA2,0x64648A,0xAD61AE,
0x8B3594,0x8D218E,0x796BA5,0x902390,0x735B90,0x7384AA,0x756294,0xA752A8,
0x76669F,0x8C2A91,0x965DA1,0x5D6C89,0x6C7EA2,0x8175AF,0x7474A5,0xB773B8,
0x6E80A4,0x9254A2,0x814D9B,0x6B6B98,0x832F91,0x9F60A7,0x8D419A,0x6B6992,
0x933A9A,0x8089B6,0x9C52A3,0x696492,0xA44AA4,0x606A8B,0x666690,0x75689F,
0x79498E,0x7D3492,0x8C2791,0x795390,0x71709C,0x964E9D,0x7E1E89,0x7B2A8B,
0x95539E,0x9C4A9B,0x645B88,0x7C4C9C,0x8E5FA8,0x891489,0x7D238B,0x824D95,
0x963398,0x6B5A8A,0x774B94,0x810481,0x7A7CAE,0x7C2386,0x814494,0x753B89,
0x861186,0x6F3C85,0x7C3D94,0x782D86,0x5C6B87,0x7C63A5,0x685187,0x6B5089,
0xA4499B,0xB9656E,0xC77647,0xD08131,0xD1842C,0x8060A3,0xAB528D,0xCA7937,
0xDE9408,0xE19808,0xE3A01C,0xE6AB36,0xE4A426,0xE29D14,0x655785,0x745A9A,
0xBC6655,0xE6AE42,0x705593,0x717AA4,0x843291,0x7B308E,0xA34285,0x694B86,
0x7F0280,0x7667A0,0x743484,0x615A85,0x7478A8,0x676892,0x703C86,0x9A3290,
0x862186,0x6E5491,0x6F3E89,0xAD5066,0x764F98,0xC06947,0xCE8031,0x6F75A1,
0xE3DEE0,0xE1DCDE,0xDAD5D7,0xC0ABBD,0x7F027F,0xBF6948,0x914490,0xCAC5C8,
0xB38CB1,0xAA4964,0xE8B247,0xA887A6,0xD4CDD1,0xB089AE,0x8E1C84,0xE09F26,
0xEAB855,0x8B328B,0xB7A9B5,0xD1CBCE,0xA677A5,0x8C2C8B,0x942577,0xC6BAC4,
0xC1BABE,0xB09BAD,0x966695,0x883387,0x978495,0x987997,0x8D458D,0x985A97,
0xB88AB6,0xAD6EAB,0x9D5C9C,0xCC8048,0x90468F,0xBAB5B7,0x851B85,0xA86AA6,
0xC09EBE,0x943A94,0x882387,0x9E519D,0xBB96B9,0x8D3B8C,0x924C91,0x9A327D,
0xC77C59,0xB0AAAD,0x872887,0xA599A3,0xB682B4,0xA0869E,0x935292,0x922488,
0xB1576D,0xD49256,0x8F558E,0xAAA5A7,0xC39BC1,0xC6A8C4,0xA763A5,0xB47CB3,
0x925A91,0x90578F,0xA09B9D,0xA06F9F,0x9E949C,0xB077AE,0xA66EA5,0xA75FA5,
0xB98EB8};

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,537 @@
//Ãðàôèêà ïðîãè
//Êîïî÷êè íàçàä, âïåð¸ä, íà óðîâåíü ââåðõ, âûðåçàòü, êîïèðîâàòü, âñòàâèòü.
dword toolbar_pal [] = {0xE4DFE0,0xDFE0E6,0x7EA4B6,0xD9DBD8,0x78A446,0x6E6C6E,0x898989,0xBDD0D9,0xFBFCFC,0xFDFDFD,0xCECEC4,0xF9FFF9,0xFFFFFF,0xCCD1D7,0xD2D2D3,0xDED8DA,0x78684B,0x73561E,0x83611E,0xF6F8F5,0x5C90A3,0xC3C9CB,0x8E9A9F,0x8E9CA0,0x909EA3,0x94A2A7,0x96A4A9,0x98A6AB,0x99A9AD,0x9CABB0,0x9CACB0,0x93A1A6,0x688935,0x9B9B89,0x9CA489,0x9CA494,0xA7A997,0xA3AB9B,0xABB49C,0x9AB4C8,0xEEEBEE,0x777577,0xBB9447,0xF8EEC1,0xEEF1F2,0xF0F3E7,0xF8F8F0,0x8F8C8D,0xE5E5E5,0x8A888A,0xF8F7D7,0xF8EBB8,0xE6EBEE,0xE6ECEF,0x888587,0xEDEDED,0xADABAD,0x9F9D9F,0xF7F2CD,0x5A5A5A,0xF1DDB5,0x8098A2,0xDCE4E7,0xE0E7EA,0x7F97A1,0x93A381,0xEBEFE0,0xAAA7A8,0x878686,0xF0DBAE,0x74929D,0xC4D3D8,0xD1DBE0,0xD2DDE2,0xD3DFE4,0xD1DBDE,0xD0D5D9,0x879973,0xE2E7D3,0xE6F0E6,0xD0CFD0,0xEFD7A6,0x78878F,0xCAD7DC,0xCBD8DE,0xCCD8DE,0xC2D2D8,0x9AB7C3,0x76868E,0xC8CED2,0xCAD0D3,0x819C79,0xDBE3C9,0x69892D,0xF8E5A9,0xEED198,0x3A768D,0xBBCCD2,0x91B0BD,0x34718A,0xCCD7B5,0xF8E09B,0x3B788F,0x96B6C4,0x97B8C6,0x98B9C6,0x97BAC8,0x8AACBA,0xB6CDD6,0x9CB6C0,0x96B6C2,0xB6C694,0xB4C49C,0xECCB87,0x89AEBC,0x89B0BE,0x8BB1C0,0x6C9BAE,0x718935,0xABBC89,0xACC48B,0xD7DFC5,0xF9D993,0x286580,0x7BA5B5,0x7EA8B9,0x6295A9,0x6192A5,0x26637D,0x578124,0xA3B47A,0xA3BE7A,0xD8E4CB,0xF8D586,0xE9C375,0x1C556D,0x6F9CAE,0x709EB1,0xB4C8D0,0x447992,0x476813,0x91A868,0x9AB470,0x9F9F9F,0xF8D17C,0x846320,0x568FA4,0x5690A7,0x306E85,0x95B3BE,0x2C7691,0x568DA3,0x88A350,0xEBEBEB,0xF7CE72,0xE6BD69,0x1C5670,0x458295,0x458398,0x4987A0,0x2A647B,0x427B91,0x3A6E85,0x457114,0x78953E,0x729B42,0xE3DEE0,0x7C8A9D,0x627B97,0x5A7796,0xC4C4C4,0x999999,0xF7C965,0xE4B558,0x417C8F,0x286379,0x327087,0x2C637D,0xC5D7B5,0x88BBEE,0x77AADD,0x2C7290,0x266882,0x2C697E,0x1E5D79,0x1C5A75,0x618425,0x648622,0x5380AE,0x406994,0x3E6791,0x6699CC,0x2D7A96,0x2D7994,0x276C85,0x256780,0x25647D,0x2A6C89,0x608224,0x5F8124,0x748397,0x84B7EA,0x507EAC,0x9097A2,0x2A6F8C,0x307D9B,0x29738F,0x266B84,0x2E7695,0x2D7492,0x2F7D98,0x546D8D,0x81B4E7,0x3F6892,0xF6C45C,0x286883,0x7CAFE2,0x456388,0x296C88,0x30809C,0x2F7998,0x608A24,0x688A24,0xF0F0E6,0x286985,0x6B8E24,0x78ABDE,0x70A1D5,0x5F92C5,0x1B546C,0x6C9ED1,0xDFB154,0x21566E,0x46701C,0xBE9134,0xBAC1C6,0x225870,0x205F7A,0x20617E,0x225770,0xC5C5BD,0x50771C,0x507114,0x4F7A13,0x57791C,0x58793D};
unsigned char toolbar[8364] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04,
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x08,
0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x08, 0x09, 0x09, 0x09, 0x09,
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
0x09, 0x09, 0x09, 0x09, 0x08, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x04, 0x0A, 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0B, 0x0A, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x09, 0x09, 0x09,
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x05, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x10, 0x11,
0x12, 0x12, 0x06, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x06, 0x12, 0x12, 0x11,
0x10, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x15, 0x16, 0x17, 0x18,
0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1D, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1D, 0x1C, 0x1C, 0x1B,
0x1A, 0x1F, 0x18, 0x17, 0x16, 0x15, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
0x08, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1D, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
0x1E, 0x1D, 0x1C, 0x1C, 0x1B, 0x1A, 0x1F, 0x18, 0x17, 0x16, 0x15, 0x08, 0x14, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0B, 0x0A, 0x21, 0x22, 0x23, 0x24, 0x24, 0x25, 0x25,
0x24, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x24, 0x25, 0x25, 0x24, 0x24, 0x23, 0x22,
0x21, 0x0A, 0x0B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x05, 0x09, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x29,
0x28, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x10, 0x2A, 0x2B, 0x2B, 0x06, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
0x13, 0x13, 0x13, 0x06, 0x2B, 0x2B, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x14, 0x09, 0x16, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C,
0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x16, 0x09, 0x14, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x16, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C,
0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C,
0x16, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0x21, 0x2D,
0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2D, 0x21, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x05, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x28, 0x31, 0x09, 0x28, 0x28, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x2B, 0x32, 0x06, 0x28, 0x28, 0x28,
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x06, 0x32, 0x33, 0x11, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x17, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
0x34, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
0x35, 0x17, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x17, 0x35, 0x35,
0x35, 0x35, 0x34, 0x34, 0x34, 0x34, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
0x35, 0x35, 0x35, 0x34, 0x34, 0x34, 0x17, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x20, 0x0C, 0x22, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D,
0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x22, 0x0C, 0x20,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x37, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x37, 0x36, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x38, 0x38, 0x38, 0x38, 0x28, 0x39, 0x31, 0x29, 0x05, 0x05,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
0x2B, 0x3A, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
0x3B, 0x3A, 0x3C, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x3D, 0x3E,
0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3F,
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x40, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x14, 0x09, 0x40, 0x3E, 0x3E, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3E, 0x3E, 0x3E, 0x3E,
0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3D, 0x09, 0x14, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0x41, 0x42, 0x42, 0x42, 0x42, 0x42,
0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x04, 0x04, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
0x42, 0x42, 0x42, 0x41, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x2F,
0x37, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x37,
0x44, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x09, 0x09,
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x05, 0x0E, 0x05, 0x28, 0x28, 0x28,
0x28, 0x28, 0x0E, 0x0E, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B,
0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x45, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x14, 0x09, 0x46, 0x47, 0x48, 0x49, 0x49, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A,
0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x49, 0x49, 0x48, 0x4B, 0x47, 0x46, 0x09, 0x14,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x46, 0x4C, 0x4B, 0x48, 0x49, 0x49, 0x4A,
0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x49, 0x49,
0x48, 0x4C, 0x46, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C,
0x4D, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x04, 0x4F, 0x4F, 0x04, 0x4E,
0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4D, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0x37, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x05, 0x37, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x05, 0x09, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
0x29, 0x28, 0x0E, 0x05, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x2B, 0x33, 0x33, 0x33,
0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x51, 0x12,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x52, 0x47, 0x47, 0x47, 0x53, 0x54,
0x55, 0x54, 0x54, 0x56, 0x57, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x54, 0x53, 0x53,
0x47, 0x47, 0x47, 0x58, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x58,
0x59, 0x5A, 0x53, 0x53, 0x53, 0x54, 0x55, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x57, 0x56,
0x54, 0x54, 0x55, 0x54, 0x53, 0x5A, 0x5A, 0x59, 0x52, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0x5B, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C,
0x5D, 0x4F, 0x0C, 0x0C, 0x4F, 0x5D, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5B,
0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0x37, 0x05,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x37, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30, 0x28, 0x31, 0x09, 0x28, 0x28, 0x05, 0x38, 0x38, 0x38, 0x38, 0x28,
0x0E, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05,
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x5E, 0x5E, 0x5E, 0x5E, 0x5E, 0x5E,
0x5E, 0x5E, 0x5E, 0x5E, 0x5F, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09,
0x60, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x62, 0x63, 0x63, 0x61, 0x61, 0x61, 0x61, 0x61,
0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x60, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x14, 0x09, 0x60, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61,
0x61, 0x61, 0x61, 0x61, 0x63, 0x63, 0x62, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x60, 0x09,
0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0x20, 0x64, 0x64, 0x64,
0x64, 0x64, 0x64, 0x64, 0x64, 0x5D, 0x4F, 0x0C, 0x0C, 0x0C, 0x0C, 0x4F, 0x5D, 0x64, 0x64, 0x64,
0x64, 0x64, 0x64, 0x64, 0x64, 0x20, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x05, 0x50, 0x37, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x37, 0x50,
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09,
0x28, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x28, 0x39, 0x31, 0x29, 0x05,
0x05, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x05, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x05, 0x0E,
0x05, 0x5E, 0x5E, 0x5E, 0x5E, 0x5E, 0x5E, 0x5E, 0x5E, 0x65, 0x5F, 0x12, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x66, 0x67, 0x68, 0x68, 0x69, 0x6A, 0x6A, 0x6B, 0x63, 0x6C,
0x63, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x67, 0x6E, 0x60,
0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x60, 0x6E, 0x67, 0x6D, 0x6D,
0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x63, 0x6C, 0x63, 0x6B, 0x6A, 0x6A,
0x69, 0x68, 0x68, 0x67, 0x66, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x0C, 0x20, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x5D, 0x4F, 0x0C, 0x0C, 0x0C, 0x0C,
0x0C, 0x0C, 0x4F, 0x5D, 0x70, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x20, 0x0C, 0x20, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0x37, 0x05, 0x00, 0x00,
0x00, 0x00, 0x05, 0x37, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
0x28, 0x28, 0x28, 0x0E, 0x0E, 0x0E, 0x05, 0x38, 0x38, 0x38, 0x38, 0x28, 0x0E, 0x05, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
0x28, 0x28, 0x28, 0x28, 0x29, 0x28, 0x0E, 0x05, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65,
0x71, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x66, 0x72, 0x73, 0x74,
0x74, 0x74, 0x75, 0x63, 0x6C, 0x09, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
0x63, 0x63, 0x6D, 0x72, 0x72, 0x60, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
0x09, 0x60, 0x72, 0x72, 0x6D, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
0x63, 0x09, 0x6C, 0x63, 0x75, 0x74, 0x74, 0x74, 0x73, 0x72, 0x66, 0x09, 0x14, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0x76, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x5D,
0x79, 0x79, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x79, 0x79, 0x5D, 0x78, 0x78, 0x78, 0x78, 0x77,
0x77, 0x76, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x05, 0x50, 0x37, 0x05, 0x00, 0x00, 0x05, 0x37, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x28, 0x28, 0x28,
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E, 0x05, 0x28, 0x28, 0x28,
0x28, 0x28, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09,
0x28, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x28, 0x31, 0x09, 0x28, 0x0E, 0x05, 0x7A,
0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x71, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x14, 0x09, 0x7B, 0x7C, 0x02, 0x7D, 0x7D, 0x7E, 0x63, 0x6C, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x49, 0x63, 0x7F, 0x7C, 0x7C, 0x80, 0x09, 0x14, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x80, 0x7C, 0x7C, 0x7F, 0x63, 0x09, 0x09, 0x09, 0x09,
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x6C, 0x63, 0x7E, 0x7D, 0x7D, 0x02, 0x7C,
0x7B, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0x81, 0x82,
0x82, 0x83, 0x83, 0x83, 0x83, 0x04, 0x5D, 0x5D, 0x84, 0x0C, 0x0C, 0x0C, 0x0C, 0x84, 0x5D, 0x5D,
0x04, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x81, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0x37, 0x05, 0x05, 0x37, 0x50, 0x05,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x09, 0x28, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
0x28, 0x0E, 0x05, 0x38, 0x38, 0x38, 0x38, 0x28, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x28,
0x39, 0x31, 0x29, 0x05, 0x05, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x86, 0x12, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x87, 0x88, 0x89, 0x89, 0x14, 0x63, 0x6C, 0x09,
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x8A, 0x63, 0x8B, 0x88,
0x88, 0x87, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x87, 0x88, 0x88,
0x8B, 0x63, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
0x6C, 0x63, 0x14, 0x89, 0x89, 0x88, 0x87, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x20, 0x0C, 0x8C, 0x8D, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x5D, 0x84, 0x0C,
0x0C, 0x0C, 0x0C, 0x84, 0x5D, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8D, 0x8C, 0x0C, 0x20,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
0x50, 0x37, 0x8F, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E, 0x05, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E, 0x05,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x28, 0x28, 0x28,
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E, 0x0E, 0x0E, 0x05, 0x90, 0x90, 0x90, 0x90, 0x90,
0x90, 0x90, 0x86, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x87, 0x7E,
0x92, 0x93, 0x94, 0x95, 0x49, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
0x09, 0x09, 0x8A, 0x63, 0x96, 0x97, 0x7F, 0x87, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x14, 0x09, 0x87, 0x7F, 0x97, 0x96, 0x63, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x49, 0x95, 0x94, 0x93, 0x92, 0x7E, 0x87, 0x09, 0x14, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0x8C, 0x8D, 0x98, 0x98, 0x98, 0x98,
0x98, 0x98, 0x98, 0x5D, 0x84, 0x0C, 0x0C, 0x0C, 0x0C, 0x84, 0x5D, 0x98, 0x98, 0x98, 0x98, 0x98,
0x98, 0x98, 0x8D, 0x8C, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0x99, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x38,
0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x28, 0x0E, 0x05, 0x38,
0x38, 0x38, 0x38, 0x28, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x09, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E,
0x05, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9B, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x14, 0x09, 0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0x8A, 0x34, 0x09, 0x09, 0x09, 0x09,
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x8A, 0xA2, 0x96, 0x8B, 0x8B, 0x87, 0x09, 0x14,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x87, 0x8B, 0x8B, 0x96, 0xA2, 0x09, 0x09,
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x34, 0x8A, 0xA1, 0xA0, 0x9F,
0x9E, 0x9D, 0x9C, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C,
0xA3, 0xA4, 0xA4, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0x5D, 0x84, 0x0C, 0x0C, 0x0C, 0x0C, 0x84,
0x5D, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA4, 0xA4, 0xA3, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xA6, 0x00, 0xA7, 0xA8, 0xA9, 0xA9, 0xA9, 0xA9, 0xAA, 0xAB, 0x37, 0x0E,
0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA7, 0x00, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x05, 0x09, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
0x28, 0x28, 0x28, 0x0E, 0x05, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
0x38, 0x38, 0x38, 0x38, 0x28, 0x0E, 0x05, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAD, 0x91,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x9C, 0xAE, 0xAE, 0xAE, 0x7B, 0xAF,
0xB0, 0x8A, 0x34, 0x09, 0x49, 0x49, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0xB1,
0x96, 0x8B, 0x96, 0x87, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x87,
0x96, 0x8B, 0x96, 0xB1, 0x09, 0x49, 0x49, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x09,
0x34, 0x8A, 0xB0, 0xAF, 0x7B, 0xAE, 0xAE, 0xAE, 0x9C, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0xA3, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x81,
0xB2, 0x0C, 0x0C, 0x0C, 0x0C, 0xB2, 0x81, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0xA3,
0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0x00, 0xA9, 0xB3, 0xB3, 0xB3, 0xB3,
0xB3, 0xB3, 0xB4, 0x05, 0x05, 0xB4, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xA9, 0x00, 0xA6, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x38, 0x38, 0x38, 0x38, 0x38,
0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x28, 0x0E, 0x05, 0x38, 0x38, 0x38, 0x38, 0x28,
0x0E, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x28,
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E, 0x05, 0xAC, 0xAC, 0x9A,
0x85, 0x85, 0x7A, 0x85, 0x9B, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09,
0x9C, 0x63, 0x96, 0x96, 0xB5, 0xB6, 0xA0, 0xB7, 0x8A, 0x49, 0xB8, 0xB8, 0xB9, 0xB9, 0xB9, 0xB9,
0xB9, 0xB8, 0xB9, 0xB9, 0xB9, 0xB9, 0x96, 0x96, 0x96, 0x87, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x14, 0x09, 0x87, 0x96, 0x96, 0x96, 0xB9, 0xB9, 0xB9, 0xB9, 0xB8, 0xB9, 0xB9,
0xB9, 0xB9, 0xB9, 0xB8, 0xB8, 0x49, 0x8A, 0xB7, 0xA0, 0xB6, 0xB5, 0x96, 0x96, 0x63, 0x9C, 0x09,
0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0xA3, 0xBA, 0xBA, 0xBB,
0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0x81, 0xB2, 0x0C, 0x0C, 0x0C, 0x0C, 0xB2, 0x81, 0xBB, 0xBB, 0xBB,
0xBB, 0xBB, 0xBB, 0xBB, 0xBA, 0xA3, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xA9, 0xB3, 0xBC, 0xBD, 0xBE, 0xBC, 0xBF, 0xB3, 0xBE, 0x0E, 0x0E, 0xBE, 0xB3, 0xBF, 0xBC, 0xBE,
0xBD, 0xBC, 0xB3, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09,
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E,
0x05, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x05, 0x09, 0x28, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
0x28, 0x0E, 0x05, 0x85, 0x90, 0x7A, 0x90, 0x7A, 0x7A, 0x90, 0xAD, 0x91, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x9C, 0x63, 0x96, 0xC0, 0xC1, 0x96, 0xC2, 0x80, 0xB7, 0x8A,
0xB8, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xC3, 0xC3, 0xC3, 0xC4, 0xC5, 0x96, 0x96, 0x96, 0x87,
0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x87, 0x96, 0x96, 0x96, 0xC5,
0xC4, 0xC3, 0xC3, 0xC3, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB8, 0x8A, 0xB7, 0x80, 0xC2, 0xC1,
0xC1, 0xC0, 0x96, 0x63, 0x9C, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x0C, 0xA3, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x81, 0xB2, 0x0C, 0x0C, 0x0C,
0x0C, 0xB2, 0xC7, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xA3, 0x0C, 0x20, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xC9, 0xCA, 0xCB, 0x00, 0x00, 0xCB, 0xBC, 0xB3, 0xBE, 0x00,
0x00, 0xBE, 0xB3, 0xBC, 0xCB, 0x00, 0x00, 0xCB, 0xCA, 0xC9, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
0x38, 0x38, 0x38, 0x38, 0x28, 0x0E, 0x05, 0x38, 0x38, 0x38, 0x38, 0x28, 0x0E, 0x05, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E, 0x05, 0x7A, 0x7A, 0x9A, 0x85, 0x7A, 0x7A, 0xAC,
0xAD, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x9C, 0xCC, 0x96, 0xCD,
0xCD, 0xC1, 0x96, 0xCE, 0xC3, 0xA0, 0xCF, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
0xC1, 0xCD, 0xD0, 0xD1, 0xCC, 0x87, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
0x09, 0x87, 0xCC, 0xD1, 0xD0, 0xCD, 0xC1, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
0xCF, 0xA0, 0xC3, 0xCE, 0xC1, 0xD2, 0xD2, 0xD2, 0x96, 0xCC, 0x9C, 0x09, 0x14, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0xA3, 0x81, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA,
0xBA, 0x81, 0xB2, 0x0C, 0x0C, 0x0C, 0x0C, 0xB2, 0x81, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA,
0xC7, 0xA3, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xD4, 0xD5, 0x00, 0x00,
0x00, 0x00, 0xBE, 0xB3, 0xBE, 0x00, 0x00, 0xBE, 0xB3, 0xBE, 0x00, 0x00, 0x00, 0x00, 0xD5, 0xD4,
0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x28, 0x28, 0x28,
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E, 0x05, 0x28, 0x28, 0x28,
0x28, 0x28, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09,
0x28, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x28, 0x0E, 0x05, 0x7A,
0x7A, 0x90, 0x7A, 0x7A, 0x85, 0xD6, 0xAD, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x14, 0x09, 0x9C, 0xCC, 0xD1, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0x96, 0xD7, 0xC5, 0xCD, 0xCD, 0xCD,
0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xD2, 0xD2, 0xD2, 0xD0, 0xD1, 0xCC, 0x87, 0x09, 0x14, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x87, 0xCC, 0xD1, 0xD0, 0xD2, 0xD2, 0xD2, 0xCD, 0xCD,
0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xC5, 0xD7, 0x96, 0xC1, 0xCD, 0xCD, 0xCD, 0xCD, 0xD1, 0xCC,
0x9C, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0xA3, 0x81,
0xBA, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0x81, 0xB2, 0x0C, 0x0C, 0x0C, 0x0C, 0xB2, 0x81, 0xBB,
0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBA, 0x81, 0xA3, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xBE, 0xD8, 0xBE, 0x00, 0x00, 0x00, 0x00, 0xD5, 0xB3, 0xBE, 0x00, 0x00, 0xBE, 0xB3, 0xD5,
0x00, 0x00, 0x00, 0x00, 0xBE, 0xD8, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x09, 0x28, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
0x28, 0x0E, 0x05, 0x38, 0x38, 0x38, 0x38, 0x28, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
0x28, 0x28, 0x28, 0x0E, 0x05, 0x85, 0x7A, 0x7A, 0x7A, 0x7A, 0x85, 0xAC, 0xAD, 0x12, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x87, 0xDA, 0xD1, 0xD0, 0xD2, 0xD2, 0xD2, 0xD2,
0xD2, 0x96, 0x96, 0xD2, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xD2, 0xD2, 0xDC, 0xD0, 0xD1,
0xDA, 0x87, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x87, 0xDA, 0xD1,
0xD0, 0xDC, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xD2, 0x96, 0x96, 0xC1, 0xD2,
0xD2, 0xD2, 0xD2, 0xD0, 0xD1, 0xDA, 0x87, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x20, 0x0C, 0x8C, 0xC7, 0xBA, 0xDD, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0x81, 0xB2, 0xDF,
0xDF, 0xDF, 0xDF, 0xB2, 0x81, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xBB, 0xBA, 0xC7, 0x8C, 0x0C, 0x20,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBE, 0xD8, 0xBE, 0x00, 0x00, 0x00, 0x00, 0xD5, 0xB3,
0xBE, 0x00, 0x00, 0xBE, 0xB3, 0xD5, 0x00, 0x00, 0x00, 0x00, 0xBE, 0xD8, 0xD9, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E, 0x05, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E, 0x05,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x38, 0x38, 0x38,
0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x28, 0x0E, 0x05, 0x7A, 0x85, 0xAC, 0xAC, 0x7A,
0x7A, 0x90, 0xAD, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x87, 0xE0,
0xD1, 0xD0, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xDC, 0xDC,
0xDC, 0xDC, 0xDC, 0xDC, 0xD0, 0xD1, 0xDA, 0x87, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x14, 0x09, 0x87, 0xE0, 0xD1, 0xD0, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xD2, 0xD2, 0xD2,
0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD0, 0xD1, 0xDA, 0x87, 0x09, 0x14, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0x8C, 0xC7, 0xBA, 0xDD, 0xDE, 0xE1,
0xE1, 0xE1, 0xE1, 0x81, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0x81, 0xE1, 0xE1, 0xE1, 0xE1, 0xDD,
0xBB, 0xBA, 0xC7, 0x8C, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBE, 0xE2, 0xBC,
0xCB, 0x00, 0x00, 0xCB, 0xCA, 0xB3, 0xBE, 0x00, 0x00, 0xBE, 0xC9, 0xCA, 0xCB, 0x00, 0x00, 0xCB,
0xBC, 0xE2, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x38,
0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x28, 0x0E, 0x05, 0x0E,
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x09, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E,
0x05, 0x85, 0x85, 0xAC, 0xAC, 0x7A, 0x7A, 0x85, 0xAD, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x14, 0x09, 0x87, 0xE0, 0xD1, 0xD1, 0xD1, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0,
0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD1, 0xE0, 0x87, 0x09, 0x14,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x87, 0xE0, 0xD1, 0xD0, 0xD0, 0xD0, 0xD0,
0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD1, 0xD1,
0xD1, 0xE0, 0x87, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C,
0x8C, 0xC7, 0xBA, 0xBB, 0xBB, 0xDE, 0xE1, 0xE1, 0xE1, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
0xA3, 0xE1, 0xE1, 0xE1, 0xDE, 0xDD, 0xBB, 0xBA, 0xC7, 0x8C, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xBE, 0xE3, 0xE4, 0xBC, 0xBD, 0xBD, 0xBC, 0xB3, 0xBE, 0x00, 0x00, 0x00, 0x00,
0xBE, 0xB3, 0xBC, 0xBD, 0xBD, 0xBC, 0xE4, 0xE3, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x05, 0x09, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
0x28, 0x28, 0x28, 0x0E, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
0x38, 0x38, 0x38, 0x38, 0x28, 0x0E, 0x05, 0xAC, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x9A, 0xAD, 0x12,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x87, 0xE0, 0xE0, 0xD1, 0xD1, 0xD1,
0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1,
0xD1, 0xE0, 0xE0, 0xE5, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0xE5,
0xE0, 0xE0, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1,
0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xE0, 0xE0, 0x87, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0x8C, 0xC7, 0xC7, 0xBA, 0xBB, 0xBB, 0xDE, 0xDE, 0xDE, 0x5D,
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x5D, 0xDE, 0xDE, 0xDE, 0xBB, 0xBB, 0xBB, 0xBA, 0xC7, 0x8C,
0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xBE, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
0xBE, 0x00, 0xA6, 0x00, 0x00, 0xA6, 0x00, 0xBE, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xBE, 0xC8, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
0x28, 0x28, 0x28, 0x28, 0x38, 0x38, 0x38, 0x38, 0x28, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x28,
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E, 0x05, 0xD6, 0xAC, 0x90,
0x85, 0x85, 0x9A, 0xD6, 0xE7, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09,
0xE8, 0x87, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x87, 0xE8, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x14, 0x09, 0xE8, 0x87, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x87, 0xE8, 0x09,
0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0xE9, 0x8C, 0xC7, 0xC7,
0xBA, 0xBA, 0xBB, 0xBB, 0xDE, 0xDE, 0xDE, 0x5D, 0x5D, 0x5D, 0x5D, 0xDE, 0xDE, 0xDE, 0xDE, 0xBB,
0xBB, 0xBA, 0xC7, 0xC7, 0x8C, 0xE9, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xC8, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0x00, 0xA6, 0x00, 0x00, 0x00, 0x00, 0xA6, 0x00, 0xBE, 0xBE,
0xBE, 0xBE, 0xBE, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09,
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E,
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x05, 0x09, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x38, 0x38, 0x38, 0x38,
0x28, 0x0E, 0x05, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xE7, 0xEA, 0x10, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0xEB, 0xEC, 0x9C, 0xB9, 0xB9, 0xB8, 0xB8, 0xED, 0xEE, 0xEE,
0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xED, 0xB8, 0xB8, 0xB9, 0xB9, 0x9C, 0xEF, 0xEB,
0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0xEB, 0xEF, 0x9C, 0xB9, 0xB9,
0xB8, 0xB8, 0xED, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xED, 0xB8, 0xB8,
0xB9, 0xB9, 0x9C, 0xEC, 0xEB, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x0B, 0xF0, 0xF1, 0xA3, 0xF2, 0xF2, 0xF3, 0xF3, 0xF1, 0xF1, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4,
0xF4, 0xF4, 0xF4, 0xF1, 0xF3, 0xF3, 0xF3, 0xF2, 0xF2, 0xA3, 0xF1, 0xF0, 0x0B, 0x20, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0E, 0x05, 0x91, 0x91, 0x91, 0x91, 0x91, 0x12, 0x11,
0x10, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x07, 0x08, 0x09, 0x09, 0x09,
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
0x09, 0x09, 0x09, 0x09, 0x09, 0x08, 0x07, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
0x07, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x08, 0x07, 0x14, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x5B, 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
0x0C, 0x0B, 0x5B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x09,
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x05, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x14, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x14, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
0x96, 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF5, 0xE9, 0x8C,
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0xE9, 0xF5, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
dword goto_about_pal [] = {0x00E4DFE1,0x00C4CBDD,0x00C5CCDF,0x00CAD1E0,0x00C2CADC,0x00E7E1E3,0x00E3DFE2,0x00C1C9DB,0x00E4E9F1,0x00E4E9F0,0x00DAD6DD,0x00BEC5D8,0x00CAD2E2,0x00CBD2E2,0x00CBD3E2,0x00CBD2E3,0x00C9D1E0,0x00C8D1DF,0x00BBC2D6,0x00AFB9D2,0x00B5BED5,0x00B7C1D6,0x00B7C2D6,0x00B6BFD5,0x00B3BCD2,0x00ADB6CD,0x00E2DDE1,0x00819FC5,0x00C1CCDE,0x00DCDADF,0x00ADB6D1,0x00ACB5D0,0x00AEBAD1,0x00AFBAD2,0x00ADB9D0,0x00AAB4CC,0x00A8B3CB,0x00E4E0E2,0x00FBFBFB,0x00FFFFFF,0x00F3F3F3,0x00E6E3E4,0x00C5CBDF,0x00AEB9D0,0x00B6BFD4,0x00B9C3D6,0x00BFC6D8,0x00E3DFE1,0x00C8C9C9,0x00B4BED5,0x00B4BED4,0x00B4BED3,0x00B2BBD3,0x00E5E0E2,0x00D8D7D8,0x00CBD0E1,0x00B9C2D6,0x00C8CDE0,0x00E4DFE2,0x00BFC5DA,0x00C8D0DF,0x00CBD2E1,0x00BDC5D6,0x00E0DAE0,0x007DB835,0x00DCDDE9,0x00B3BDD4,0x00F2F4F9,0x00BAC4D8,0x00D5D6E4,0x00B3DA82,0x0076AD32,0x00A5B2CD,0x00DBE0EC,0x00DCE1EC,0x00DCE1EB,0x00DBE0E9,0x00A7B4CD,0x00CBD0E2,0x00AAB4D0,0x00C8CEE1,0x00CAD1E2,0x00C8CEDD,0x00C5CDDD,0x00ACB6CE,0x00C3CADD,0x00A0D162,0x00B7C2DB,0x00AAB5CE,0x00B9C2D8,0x00B6BFD3,0x00A6B2CA,0x00B2BCD6,0x0097CD53,0x00A4AFCB,0x00ABB4CE,0x00AEB9D1,0x00ADB7D0,0x00A8B4CB,0x009FABC5,0x00B4BDD6,0x00E2DEE0,0x00D3D3D3,0x00E5DDDA,0x00F5CFA3,0x00F7C888,0x00F8CC8E,0x00F7C787,0x00F5CC9D,0x00E5DBD7,0x00A3AFCB,0x00B1BBD2,0x00B4BFD4,0x00B5BED3,0x00AFB9D0,0x00A3AEC9,0x00E1DDDE,0x0090C947,0x00DFDCDD,0x00F7C279,0x00FCDBAF,0x00FCE4C2,0x00F9D6A2,0x00F7C177,0x00E6D9D1,0x00A6B3D0,0x00AEBAD0,0x00BDC5D8,0x00BDC6D8,0x00A5B1CC,0x00E5E0E3,0x00DDDBDC,0x00F7C17A,0x00FBD197,0x00FCD7A2,0x00FBD6A3,0x00FCD4A2,0x00FBC885,0x00F7BE74,0x00E4DDDA,0x00DDDDEA,0x00AAB6D1,0x00BBC3D8,0x00BBC4D8,0x00ABB6D0,0x00D9DAE5,0x00D7D6D7,0x00F5DFC8,0x00F6B965,0x00F8C782,0x00F9C986,0x00F9C887,0x00F9C885,0x00F7C276,0x00F5B661,0x00F4D8BA,0x00C1C8DA,0x00B9C2D5,0x00BFC5D8,0x00E1DDE1,0x00F7D2A4,0x00F7BB6B,0x00F7BD6F,0x00F7BF6F,0x00F7BC6B,0x00F7B962,0x00F7B359,0x00F6CC95,0x00EFECEE,0x00DCDADB,0x00F7CD94,0x00F7B45B,0x00F7B459,0x00F7B65C,0x00F7B662,0x00F5B75F,0x00F7B254,0x00F7B454,0x00F6C689,0x00F7B967,0x00F7BC6F,0x00F7BC6A,0x00F7B964,0x00F7B55B,0x00F7B85C,0x00F6CF9A,0x00F8BD6B,0x00F7BC6D,0x00F8C072,0x00F7C076,0x00F8BA65,0x00F5DBC3,0x00F7CA91,0x00F8BB69,0x00F7C072,0x00F7BA68,0x00F7BA65,0x00F6CA8C,0x00F7C991,0x00F8BC6D,0x00F7CB8F,0x00F7D2A6};
unsigned char goto_about[1904] = FROM "imgs\goto_about.raw";

View File

@ -0,0 +1,40 @@
//Leency - 2008-2013
#define EDITOR_PATH "/sys/tinypad"
#define BROWSER_PATH "/sys/htmlv"
#define BROWSER_LINK "http://kolibri-n.org/index.php"
void about_dialog()
{
byte id;
loop() switch(WaitEvent())
{
case evButton:
id=GetButtonID();
IF (id==1) || (id==10) ExitProcess();
IF (id==23) RunProgram(BROWSER_PATH, BROWSER_LINK);
IF (id==33) RunProgram(EDITOR_PATH, #program_path);
break;
case evKey:
IF (GetKey()==27) ExitProcess();
break;
case evReDraw:
DefineAndDrawWindow(600,150,181,232+GetSkinHeight(),0x34,col_work,"About Eolite");
DrawBar(0,0,172,50,0x8494C4);
PutPaletteImage(#logo,85,85,43,7,8,#logo_pal);
WriteTextB(46,100,0x90,0xBF40BF,"Eolite v1.62");
WriteText(55,120,0x80,0,"Developers:");
WriteText(39,130,0x80,0,"Leency & Veliant");
WriteText(45,140,0x80,0,"KolibriOS Team");
WriteText(61,150,0x80,0,"2008-2013");
WriteText(29,170,0x80,0,"Visit");
DrawLink(66,170,0x80,23, "kolibri-n.org");
DrawFlatButton(85,190,70,22,10,0xE4DFE1, "Close");
DefineButton(20-1,195-1, 16+1,15+1, 33+BT_HIDE, 0);
PutPaletteImage(8*16*15+#ficons,16,15,20,195,8,#ficons_pal);
DrawFilledBar(0, 216, 172, 12);
}
}

View File

@ -0,0 +1,57 @@
//06.04.2012
path_string history_list[40];
int history_num;
int history_current;
#define ADD_NEW_PATH 1
#define GO_BACK 2
#define GO_FORWARD 3
dword GetCurrentFolder()
{
char cur_fol[4096];
strcpy(#cur_fol, #path);
cur_fol[strlen(#cur_fol)-1]=0x00; //îáðåçàåì ïîñëåäíèé /
strcpy(#cur_fol, #cur_fol+strrchr(#cur_fol,'/'));
return #cur_fol;
}
int HistoryPath(byte action)
{
int MAX_HISTORY_NUM;
if (action==ADD_NEW_PATH)
{
if (history_num>0) && (!strcmp(#path,#history_list[history_current].Item)) return;
MAX_HISTORY_NUM = sizeof(history_list)/sizeof(path_string);
if (history_current>=MAX_HISTORY_NUM-1)
{
history_current/=2;
for (i=0; i<history_current; i++;)
{
strcpy(#history_list[i].Item, #history_list[MAX_HISTORY_NUM-i].Item);
}
}
history_current++;
strcpy(#history_list[history_current].Item, #path);
history_num=history_current;
}
if (action==GO_BACK)
{
if (history_current<=2) return 0;
history_current--;
strcpy(#path, #history_list[history_current].Item);
return 1;
}
if (action==GO_FORWARD)
{
if (history_current==history_num) return 0;
history_current++;
strcpy(#path, #history_list[history_current].Item);
return 1;
}
}

View File

@ -0,0 +1,301 @@
char *ext[]={
"..", 17,
"<DIR>",16,
"txt", 1,
"doc", 1,
"rtf", 1,
"odt", 1,
"log", 1,
"docx",1,
"htm", 2,
"html",2,
"mht", 2,
"ini", 3,
"js", 3,
"conf",3,
"inf", 3,
"xlt", 4,
"xls", 4,
"ods", 4,
"xlsx",4,
"cmd", 5,
"bat", 5,
"py", 5,
"sh", 5,
"ksh", 5,
"com", 5,
"kex", 6,
"lua", 6,
"exe", 7,
"msi", 7,
"sys", 8,
"ocx", 8,
"drv", 8,
"so", 8,
"inc", 9,
"chr", 10,
"mt", 10,
"ttf", 10,
"fon", 10,
"asm", 11,
"skn", 13,
"djvu",15,
"pdf", 15,
"fb2", 15,
"nes", 18,
"smc", 18,
"img", 21,
"ima", 21,
"dll", 22,
"obj", 22,
"dict",22,
"iso", 24,
"cue", 24,
"nrg", 24,
"mdf", 24,
"gif", 19,
"bmp", 19,
"tga", 19,
"pcx", 19,
"png", 19,
"pnm", 19,
"jpg", 19,
"xcf", 19,
"ai", 19,
"jpeg",19,
"raw", 19,
"psd", 19,
"wbmp",19,
"tiff",19,
"tif", 19,
"3ds", 20,
"ico", 20,
"cur", 20,
"ani", 20,
"vox", 20,
"rar", 23,
"zip", 23,
"cab", 23,
"tar", 23,
"ajr", 23,
"jar", 23,
"7z", 23,
"gz", 23,
"mp3", 12,
"wav", 12,
"mid", 12,
"midi",12,
"ogg", 12,
"wma", 12,
"flac",12,
"avi", 14,
"flv", 14,
"mpg", 14,
"wmv", 14,
"mov", 14,
"mkv", 14,
"mp4", 14,
"vob", 14,
"grf", 25,
0,0};
#include "imgs\icons.txt"
void Put_icon(dword extension, yy, fairing_color)
{
int icon_n=0, i;
for (i=0; ext[i]<>0; i+=2;)
if (!strcmp(extension, ext[i]))
{
icon_n = ext[i+1];
break;
}
PutPaletteImage(icon_n*16*15+#ficons,16,15,195,yy,8,#ficons_pal);
if (icon_n<>17) && (strlen(extension)<9) WriteText(-strlen(extension)*3+onLeft(168,0)+36,yy+4,0x80,0,extension);
if (fairing_color<>0xFFFfff) IconFairing(icon_n, yy, fairing_color); //çàêðàøèâàåì èêîíêó
}
void IconFairing(dword filenum, y, color)
{
switch(filenum)
{
case 0...1: //ôàéëèê
DrawBar(195,y,2,15,color);
RIGHT_PAINT:
DrawBar(209,y,2,15,color);
DrawBar(205,y,4,1,color);
DrawBar(206,y+1,3,1,color);
DrawBar(207,y+2,2,1,color);
PutPixel(208,y+3,color);
return;
case 2: //html
DrawBar(195,y,1,7,color);
DrawBar(196,y,1,6,color);
DrawBar(195,y+10,1,5,color);
DrawBar(196,y+11,1,4,color);
GOTO RIGHT_PAINT;
case 3: //íàñòðîéêè
DrawBar(195,y,2,7,color);
DrawBar(195,y+7,1,2,color);
DrawBar(195,y+12,1,3,color);
PutPixel(196,y+14,color);
GOTO RIGHT_PAINT;
case 9: //inc
DrawBar(195,y,1,12,color);
DrawBar(196,y,1,11,color);
DrawBar(197,y,1,10,color);
DrawBar(198,y,1,5,color);
DrawBar(199,y,1,4,color);
DrawBar(200,y,1,3,color);
DrawBar(201,y,1,2,color);
DrawBar(202,y,1,3,color);
DrawBar(203,y,1,2,color);
PutPixel(204,y,color);
PutPixel(205,y+4,color);
PutPixel(206,y+3,color);
PutPixel(207,y,color);
PutPixel(207,y+2,color);
DrawBar(208,y,1,3,color);
DrawBar(209,y,2,4,color);
DrawBar(210,y,1,15,color);
PutPixel(198,y+14,color);
DrawBar(199,y+13,1,2,color);
DrawBar(200,y+12,10,3,color);
PutPixel(205,y+11,color);
DrawBar(206,y+10,1,2,color);
DrawBar(207,y+9,1,3,color);
PutPixel(207,y+7,color);
DrawBar(208,y+6,2,7,color);
PutPixel(209,y+5,color);
return;
case 10: //font
DrawRectangle3D(195,y,15,14,color,color);
DrawBar(196,y+1,1,13,color);
DrawBar(197,y+1,1,11,color);
DrawBar(198,y+1,1,10,color);
DrawBar(199,y+1,1,9,color);
DrawBar(200,y+1,1,7,color);
DrawBar(201,y+1,1,5,color);
DrawBar(202,y+1,1,4,color);
DrawBar(203,y+1,1,2,color);
DrawBar(209,y+1,1,13,color);
DrawBar(208,y+1,1,11,color);
PutPixel(204,y+6,color);
DrawBar(203,y+10,2,1,color);
DrawBar(202,y+11,2,3,color);
return;
case 11: //asm
DrawBar(195,y,1,15,color);
return;
case 12: //audio
DrawBar(195,y,16,1,color);
DrawBar(195,y,1,15,color);
DrawBar(196,y+1,4,8,color);
DrawBar(196,y+9,1,2,color);
PutPixel(197,y+9,color);
PutPixel(196,y+14,color);
DrawBar(210,y+1,1,14,color);
DrawBar(202,y+4,6,4,color);
DrawBar(202,y+8,4,1,color);
DrawBar(202,y+9,3,1,color);
DrawBar(202,y+10,2,3,color);
DrawBar(201,y+13,4,1,color);
DrawBar(200,y+14,14,1,color);
DrawBar(209,y+12,1,2,color);
PutPixel(208,y+13,color);
return;
case 13: //skin
PutPixel(210,y,color);
return;
case 14...15: //video, book
DrawBar(195,y,1,15,color);
DrawBar(210,y,1,15,color);
return;
case 16...17: //ïàïêà
DrawBar(195,y,1,15,color);
DrawBar(203,y,8,2,color);
IF (filenum==17) PutPixel(206,y+1,0x1A7B17); //çåë¸íàÿ òî÷êà ñòðåëêè
DrawBar(196,y+13,15,2,color);
PutPixel(196,y,color); //.òî÷êè
PutPixel(202,y,color);
PutPixel(210,y+2,color);
PutPixel(196,y+12,color);
PutPixel(210,y+12,color);
return;
case 18: //êàðòðèäæ
DrawBar(195,y,16,2,color);
DrawBar(195,y+11,1,2,color);
DrawBar(210,y+11,1,2,color);
DrawBar(195,y+13,16,2,color);
return;
case 19: //èçîáðàæåíèå
case 20: //èçîáðàæåíèå
DrawBar(195,y+14,16,1,color);
return;
case 21: //äèñêåòà
PutPixel(195,y,color);
PutPixel(210,y,color);
return;
case 22: //áèáëèîòåêà
DrawBar(195,y,16,1,color); //ñâåðõó ñëåâà
DrawBar(195,y+1,3,1,color);
DrawBar(195,y+2,2,1,color);
PutPixel(195,y+3,color);
PutPixel(210,y+11,color); //ñïðàâà ñïðàâà
DrawBar(209,y+12,2,1,color);
DrawBar(208,y+13,3,1,color);
DrawBar(207,y+14,4,1,color);
return;
case 23: //àðõèâ
PutPixel(195,y+3,color);
PutPixel(195,y+11,color);
PutPixel(210,y+3,color);
PutPixel(210,y+11,color);
DrawBar(195,y,7,1,color);
DrawBar(204,y,7,1,color);
DrawBar(195,y+14,7,1,color);
DrawBar(204,y+14,7,1,color);
DrawBar(195,y+1,5,1,color);
DrawBar(206,y+1,5,1,color);
DrawBar(195,y+13,5,1,color);
DrawBar(206,y+13,5,1,color);
DrawBar(195,y+2,3,1,color);
DrawBar(208,y+2,3,1,color);
DrawBar(195,y+12,3,1,color);
DrawBar(208,y+12,3,1,color);
return;
case 24: //îáðàç
DrawBar(195,y,6,1,color);
DrawBar(195,y+1,4,1,color);
DrawBar(195,y+2,3,1,color);
DrawBar(195,y+3,2,2,color);
DrawBar(195,y+5,1,5,color);
DrawBar(195,y+10,2,2,color);
DrawBar(195,y+12,3,1,color);
DrawBar(195,y+13,4,1,color);
DrawBar(195,y+14,6,1,color);
DrawBar(195+11,y,5,1,color);
DrawBar(195+13,y+1,3,1,color);
DrawBar(195+14,y+2,2,1,color);
DrawBar(195+15,y+3,1,2,color);
DrawBar(195+15,y+10,1,2,color);
DrawBar(195+14,y+12,2,1,color);
DrawBar(195+13,y+13,3,1,color);
DrawBar(195+11,y+14,5,1,color);
return;
}
}

View File

@ -0,0 +1,134 @@
//INI parser in C--, GPL licence.
//Leency - 2012
#define COMMENT 0
#define SECTION 1
#define PARAM 2
#define OPTION 3
unsigned char *ERROR_TEXT[]={
"Code #0 - No error",
"Error #1 - Base or partition of a hard disk is not defined",
"Error #2 - Function isn't supported for this file system",
"Error #3 - Unknown file system",
"Error #4 - Reserved, is never returned",
"Error #5 - File or folder not found",
"Error #6 - End of file, EOF",
"Error #7 - Pointer lies outside of application memory",
"Error #8 - FAT table is destroyed",
"Error #9 - FAT table is destroyed",
"Error #10 - Access denied",
"Error #11 - Device error",
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
"Error #30 - Not enough memory",
"Error #31 - File is not executable",
"Error #32 - Too many processes",
0};
void GetIni(byte onload)
{
byte section[32], parametr[32], option[256], InfType=0;
char bukva[2];
int errornum, tj;
static dword buff, fsize;
//÷èòàåì ôàéë
if (onload==1)
{
free(buff);
buff = malloc(12000);
program_path[strrchr(#program_path, '/')] = NULL;
strcat(#program_path, "Eolite.ini");
ReadFile(0, 12000, buff, #program_path);
fsize=EBX;
IF (EAX<>6) ReadFile(0, 12000, buff, "/sys/File managers/Eolite.ini");
IF (EAX<>6) notify("Eolite.ini not found. Defaults will be used.");
}
//ïàðñèì åãî
for (tj=0; tj<fsize; tj++;)
{
bukva = ESBYTE[buff+tj];
switch (bukva)
{
case ';':
InfType=COMMENT;
break;
case '[':
InfType=SECTION;
section=NULL;
break;
case ']':
InfType=PARAM;
break;
case '=':
InfType=OPTION;
break;
case 0x0a:
case 0x0d:
InfType=PARAM;
IF (!strcmp(#parametr,"SelectionColor")) edit2.shift_color=col_selec=StrToCol(#option);
IF (!strcmp(#parametr,"LineHeight")) BUTTON_HEIGHT=atoi(#option);
IF (!strcmp(#parametr,"ShowDeviceName")) show_dev_name=atoi(#option);
/*if (!strcmp(#section,"UserDirectories")) && (parametr) && (onload)
{
copystr(#parametr, #disk_list[disc_num].Item);
disc_num++;
}*/
IF (parametr) && (!strcmp(#file_name+strrchr(#file_name,'.'),#parametr)) && (!onload)
{
errornum=RunProgram(#option,#file_path);
IF (errornum<0) Write_Error(errornum); //åñëè îøèáî÷êà âûøëà ïðè çàïóñêå
return;
}
parametr=option=NULL;
break;
default:
IF (InfType==SECTION) chrcat(#section, bukva);
IF (InfType==PARAM) chrcat(#parametr, bukva);
IF (InfType==OPTION) chrcat(#option, bukva);
}
}
if (file_path) && (!onload)
{
errornum=RunProgram(#file_path,NULL);
if (errornum<0) Write_Error(errornum); //åñëè îøèáî÷êà âûøëà ïðè çàïóñêå
}
}
void Write_Error(int error_number)
{
char error[256];
if (error_number<0) error_number=-1*error_number;
if (error_number<33)
strcpy(#error, ERROR_TEXT[error_number]);
else
{
strcpy(#error, itoa(error_number));
strcat(#error, " - Unknown error number O_o");
}
if (curbtn>=0) Line_ReDraw(0xFF0000, curbtn);
pause(5);
notify(#error);
}
dword StrToCol(char* htmlcolor)
{
dword j, color=0;
char ch=0x00;
FOR (j=0; j<6; j++)
{
ch=ESBYTE[htmlcolor+j];
IF ((ch>='0') && (ch<='9')) ch -= '0';
IF ((ch>='A') && (ch<='F')) ch -= 'A'-10;
IF ((ch>='a') && (ch<='f')) ch -= 'a'-10;
color = color*0x10 + ch;
}
return color;
}

View File

@ -0,0 +1,192 @@
void Tip(int y, dword caption, id, arrow)
{
int i;
DrawBar(17,y,160,1,0xEFEDEE);
DrawFilledBar(17, y+1, 160, 16);
WriteText(25,y+5,0x80,0,caption);
IF (id<>0) DefineButton(159,y+1,16,16,id+BT_HIDE+BT_NOFRAME,0xE4DFE1); //êíîïà äëÿ ñòðåëêè
WriteText(165,y+5,0x80,0,arrow); //ñòðåëêà âíèç
DrawBar(17,y+17,160,1,0x94AECE); //ïîä÷¸ðêèâàíèå
}
path_string disk_list[20];
int disc_num;
dword devbuf;
void GetSystemDiscs()
{
unsigned char dev_name[10], sys_discs[10];
unsigned int i1, j1, dev_num, dev_disc_num;
disc_num=0;
if (devbuf) free(devbuf);
devbuf = malloc(3112); //áóôåð ãäå-òî íà 10 äåâàéñîâ â ëåâîé ïàíåëè
ReadDir(19, devbuf, "/");
dev_num = EBX;
for (i1=0; i1<dev_num; i1++)
{
strcpy(#dev_name, "/"); // /
strcat(#dev_name, i1*304+ devbuf+72); // /rd
strcat(#dev_name, "/"); // /rd/
Open_Dir(#dev_name, ONLY_OPEN);
dev_disc_num = count;
//if (count<=0) copystr(#dev_name,#disk_list[disc_num].Item); else
for (j1=0; j1<dev_disc_num; j1++;)
{
strcpy(#sys_discs, #dev_name); // /rd/
strcat(#sys_discs, j1*304+ buf+72); // /rd/1
strcat(#sys_discs, "/"); // /rd/1/
strcpy(#disk_list[disc_num].Item, #sys_discs);
disc_num++;
}
}
}
void DrawSystemDiscs()
{
byte disc_icon;
char dev_name[10];
char disc_name[100];
int i, dev_icon;
for (i=0; i<20; i++) DeleteButton(100+i);
//ñïèñîê äèñêîâ
Tip(56, "Devices", 78, "=");
for (i=0;i<disc_num;i++)
{
DrawBar(17,i*16+74,160,17,0xFFFFFF); //ôîí
DefineButton(17,i*16+74,159,16,100+i+BT_HIDE,0xFFFFFF); //ñîçäà¸ì êíîïêè, à ïîòîì âûâîäèì íàçâàíèÿ äèñêîâ
strcpy(#dev_name, #disk_list[i].Item);
dev_name[strlen(#dev_name)-1]=NULL;
switch(dev_name[1])
{
case 'r':
dev_icon=0;
strcpy(#disc_name, "RAM disk ");
break;
case 'c':
dev_icon=1;
strcpy(#disc_name, "CD-ROM ");
break;
case 'f':
dev_icon=2;
strcpy(#disc_name, "Floppy disk ");
break;
case 'h':
case 'b':
dev_icon=3;
strcpy(#disc_name, "Hard disk ");
break;
case 'u':
dev_icon=5;
strcpy(#disc_name, "USB flash ");
break;
case 't':
dev_icon=4;
strcpy(#disc_name, "RAM disk ");
DefineButton(17+143,i*16+74,16,16,i+130+BT_HIDE+BT_NOFRAME,0xFFFFFF);
WriteText(45+121,i*16+79,0x80,0xD63535,"-");
WriteText(45+121,i*16+79+1,0x80,0xBC2424,"-");
break;
default:
dev_icon=3; //ïî-óìîë÷àíèþ óñòðîéñòâî âûãëÿäèò êàê æåñòÿê íî ýòî íåïðàâèëüíî
strcpy(#disc_name, "Unknown ");
}
strcat(#disc_name, #dev_name);
if (show_dev_name) WriteText(45,i*16+79,0x80,0,#disc_name);
else WriteText(45,i*16+79,0x80,0,#dev_name);
_PutImage(21,i*16+76, 14,13, dev_icon*14*13*3+#devices);
}
}
void FileMenu()
{
word id, key;
loop() switch(WaitEvent())
{
case evButton:
id=GetButtonID();
ExitProcess();
break;
case evKey:
IF (GetKey()==27) ExitProcess();
break;
case evReDraw:
DefineAndDrawWindow(m.x+1+Form.left,m.y+Form.top,159,90,0x01,0xEEEeee,0x01fffFFF);
DrawBar(1,18,160,51,0xFFFFFF); //áåëîå
_PutImage(1,23, 16,44, #factions); //èêîíêè
//rename file
DefineButton(1,18,159,16,80+BT_HIDE,0xE4DFE1);
WriteText(26,23,0x80,0,"Rename file");
WriteText(134,23,0x80,0x999999,"[F2]");
//delete file
DefineButton(1,35,159,16,81+BT_HIDE,0xE4DFE1);
WriteText(26,40,0x80,0,"Delete file");
WriteText(144,40,0x80,0x999999,"[Del]");
//create folder
DefineButton(1,52,159,16,82+BT_HIDE,0xE4DFE1);
WriteText(26,57,0x80,0,"Create folder");
WriteText(134,57,0x80,0x999999,"[F6]");
}
}
void Actions()
{
int actions_y=disc_num*16;
DeleteButton(80);
DeleteButton(81);
DeleteButton(82);
if (!show_actions)
Tip(actions_y+90, "Actions", 77, "\x18");
else
{
Tip(actions_y+90, "Actions", 77, "\x19"); //çàãîëîâîê
DrawBar(17,actions_y+108,160,51,0xFFFFFF); //áåëîå
_PutImage(21,actions_y+113, 16,44, #factions); //èêîíêè
//rename file
DefineButton(17,actions_y+108,159,16,80+BT_HIDE,0xE4DFE1);
WriteText(42,actions_y+113,0x80,0,"Rename file");
WriteText(150,actions_y+113,0x80,0x999999,"[F2]");
//delete file
DefineButton(17,actions_y+125,159,16,81+BT_HIDE,0xE4DFE1);
WriteText(42,actions_y+130,0x80,0,"Delete file");
WriteText(144,actions_y+130,0x80,0x999999,"[Del]");
//create folder
DefineButton(17,actions_y+142,159,16,82+BT_HIDE,0xE4DFE1);
WriteText(42,actions_y+147,0x80,0,"Create folder");
WriteText(150,actions_y+147,0x80,0x999999,"[F6]");
}
}
void LeftPanelBackground()
{
int actions_y=disc_num*16;
int start_y = show_actions*51+actions_y+108;
DrawBar(2,41,190,15,col_lpanel); //ñèíèé ïðÿìîóãîëüíèê - íàä äåâàéñàìè
DrawBar(17,actions_y+75,160,15,col_lpanel); //ñèíèé ïðÿìîóãîëüíèê - ïîä äåâàéñàìè
DrawBar(2,56,15,actions_y+103,col_lpanel); //ñèíèé ïðÿìîóãîëüíèê - ñëåâà
DrawBar(177,56,15,actions_y+103,col_lpanel); //ñèíèé ïðÿìîóãîëüíèê - ñïðàâà
if (onTop(start_y, 6) < 268)
PutPaletteImage(#blue_hl, 190, onTop(start_y, 6), 2, start_y, 8, #blue_hl_pal);
else
{
DrawBar(2,start_y,190,onTop(start_y,6+268),col_lpanel);
PutPaletteImage(#blue_hl, 190, 268, 2, onTop(268,6), 8, #blue_hl_pal);
}
}
void DrawLeftPanel()
{
DrawSystemDiscs();
Actions();
LeftPanelBackground();
}

View File

@ -0,0 +1,69 @@
//Leency - 2012
dword onLeft(dword right,left) {EAX=Form.width-right-left;}
dword onTop(dword down,up) {EAX=Form.height-GetSkinHeight()-down-up;}
void ShowMessage(dword message)
{
DrawFlatButton(Form.width/2-13,160,200,80,0,0xFFB6B5, message);
pause(150);
List_ReDraw();
}
dword ConvertSize(dword bytes)
{
unsigned char size_prefix[8], size_nm[4];
if (bytes>=1073741824) strcpy(#size_nm, " Gb");
else if (bytes>=1048576) strcpy(#size_nm, " Mb");
else if (bytes>=1024) strcpy(#size_nm, " Kb");
else strcpy(#size_nm, " b ");
while (bytes>1023) bytes/=1024;
strcpy(#size_prefix, itoa(bytes));
strcat(#size_prefix, #size_nm);
return #size_prefix;
}
dword col_palette[14] = {0xD2D3D3,0xD4D4D4,0xD6D5D6,0xD8D7D8,0xDAD8D9,0xDCDADB,
0xDFDCDD,0xE1DDDE,0xE2DEE0,0xE4DFE1,0xE3DFE1,0xE3DFE1,0xE3DFE1,0xE3DFE1,0xE3DFE1};
inline fastcall void TVScroll() { //Ïðîêðóòêà
dword on_y, i;
if (count<=0) {DrawFlatButton(onLeft(27,0),57,16,onTop(22,58),0,col_work,""); return;}
on_y = za_kadrom * onTop(22,57) / count +57;
scroll_size=onTop(22,57) * f_visible - f_visible / count;
if (scroll_size<20) scroll_size = 20; //óñòàíàâëèâàåì ìèíèìàëüíûé ðàçìåð ñêðîëëà
if (scroll_size>onTop(22,57)-on_y+56) || (za_kadrom+f_visible>=count) on_y=onTop(23+scroll_size,0); //äëÿ áîëüøîãî ñïèñêà
DrawFlatButton(onLeft(27,0),on_y,16,scroll_size,0,-1,"");//ïîëçóíîê
if (!scroll_used) for (i=0; i<13; i++) DrawBar(onLeft(25-i,0), on_y+2, 1, scroll_size-3, col_palette[13-i]);
if (scroll_used) for (i=0; i<13; i++) DrawBar(onLeft(25-i,0), on_y+2, 1, scroll_size-3, col_palette[i]);
//ïîëå äî ïîëçóíêà
if (on_y>58) DrawBar(onLeft(26,0),57,15,1, 0xC7C9C9);
DrawBar(onLeft(26,0),58,1, on_y-58,0xC7C9C9);
DrawBar(onLeft(25,0),58,14,on_y-58,0xCED0D0);
//ïîëå ïîñëå ïîëçóíêà
if (onTop(22,57)-scroll_size+55>on_y) DrawBar(onLeft(26,0),on_y+scroll_size+1,15,1,0xC7C9C9);
DrawBar(onLeft(26,0),on_y+scroll_size+2,1,onTop(22,57)-scroll_size-on_y+55,0xC7C9C9);
DrawBar(onLeft(25,0),on_y+scroll_size+2,14,onTop(22,57)-scroll_size-on_y+55,0xCED0D0);
}
void DrawFlatButton(dword x,y,width,height,id,color,text)
{
int fill_h;
DrawRectangle(x,y,width,height,col_border);
DrawRectangle3D(x+1,y+1,width-2,height-2,0xFEFEFE,col_padding);
PutPixel(x+width-1, y+1, col_work);
if (color!=-1) DrawFilledBar(x+2, y+2, width-3, height-3);
IF (id<>0) DefineButton(x+1,y+1,width-2,height-2,id+BT_HIDE,0xEFEBEF);
WriteText(-strlen(text)*6+width/2+x+1,height/2-3+y,0x80,0,text);
}
void DrawFilledBar(dword x, y, w, h)
{
int i, fill_h;
if (h <= 14) fill_h = h; else fill_h = 14;
for (i=0; i<fill_h; i++) DrawBar(x, y+i, w, 1, col_palette[14-i]);
DrawBar(x, y+i, w, h-fill_h, col_palette[14-i]);
}

View File

@ -0,0 +1,51 @@
//Áûñòðàÿ ñîðòèðîâêà. Leency 2008.
void Sort_by_Size(int a, b) // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1
{
int iss = a;
IF (a >= b) return;
FOR (j = a; j <= b; j++)
IF (ESDWORD[file_mas[j]*304 + buf+64] <= ESDWORD[file_mas[b]*304 + buf+64]) { file_mas[iss] >< file_mas[j]; iss++;}
Sort_by_Size (a, iss-2);
Sort_by_Size (iss, b);
}
void Sort_by_Name(int a, b) // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1
{
int isn = a;
IF (a >= b) return;
FOR (j = a; j <= b; j++)
IF (strcmp(file_mas[j]*304 + buf+72, file_mas[b]*304 + buf+72)<=0) { file_mas[isn] >< file_mas[j]; isn++;}
Sort_by_Name(a, isn-2);
Sort_by_Name(isn, b);
}
void Sort_by_Type(int a, b) // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1
{
dword filename1, filename2, ext1, ext2;
int n, isn = a;
IF (a >= b) return;
for (j = a; j <= b; j++)
{
filename1 = file_mas[j]*304 + buf+72;
filename2 = file_mas[b]*304 + buf+72;
n=strlen(filename1)-1;
WHILE (n>0) && (ESBYTE[filename1+n]<>'.') n--;
IF (n) ext1 = filename1+n+1; else ext1=0;
n=strlen(filename2)-1;
WHILE (n>0) && (ESBYTE[filename2+n]<>'.') n--;
IF (n) ext2 = filename2+n+1; else ext2=0;
n=strcmp(ext1, ext2);
IF (n<0) { file_mas[isn] >< file_mas[j]; isn++;}
IF (n==0) && (strcmp(filename1, filename2)<=0) { file_mas[isn] >< file_mas[j]; isn++;}
}
Sort_by_Type(a, isn-2);
Sort_by_Type(isn, b);
}

View File

@ -0,0 +1,569 @@
xx.xx.13 -- v1.61
- перенос программы на общую библиотеку (очень хотел s1n). Это даёт доступ
к множествам наработок основной ветви;
- для имен файлов и адресной строки теперь используется PathShow;
- определение USB flash дисков;
- исправление многих ошибок.
10.01.13 -- v1.55
- исправлен эпичный баг с сортировкой;
- испрвлены баги при попытке переименования или удаления файла в папке,
где их нет.
17.12.12 -- v1.5
Обновлён GUI: кнопки на тулбаре стали чище, остальные обзавелись градиентами.
16.11.12 -- v1.43
- при минимальном размере окна учитывается количество дисков в системе;
- добавлен фон на левую панель;
- удаление виртуальных дисков типа /tmpX/1;
- исправлена страшнейшая утечка памяти равная размеру копируемого файла;
- улучшения в организации файлов и кода.
15.11.12 -- v1.36
- устранена утечка памяти при сканировании устройств;
- частично устранён вылет программы на больших папках (спасибо SoUrcerer за
то, что научил пользоваться отладчиком);
- ограничение на количесво устройств изменено с 10 на 20;
- обновление кода.
12.11.12 -- v1.35
- теперь окно не обрабатывает клавиши если свёрнуто в заголовок;
- фикс для строки адреса;
- исправлена 100% загрузка процессора при удержании ползунка;
- исправлена серьёзная утечка памяти, уменьшено её потребление.
10.07.12 -- v1.30
- небольшие улучшения в работе кнопок "назад/вперёд";
- иконка для *.grf;
- в окне About кнопка для редактирования Eolite.ini;
- небольшие улучшения кода.
23.06.12 -- v1.28
- более правильная реализация вывода ошибок (+задел на мультиязычность)
и вывода иконки (+задел на перемещение в ini файл);
- исправлен баг с вылетом при нажатии на кнопку "Вперёд";
- удалён мёртвый код, обновление существующего.
21.06.12 -- v1.25
- распознавание виртуального диска;
- изменения в прокрутке колёсиком мыши;
- обновление кода.
14.06.12 -- v1.23
- исправлен баг, когда окно было схлопнуто в заголовок и свёрнуто;
- при нажатии на кнопку закрытия окна ползунок прыгал вверх.
13.05.12 -- v1.22 --16,5 Кб
- окно не залезает на панель задач при запуске на низких разрешениях;
- кнопка и параметр в ini-файле показывать названия устройств или нет.
05.04.12 -- v1.2 --16,5 Кб
- заработала кнопка "Вперёд", кошерный код работы с историей;
- парочка багфиксов в определении и выводе списка устройств.
05.04.12 -- v1.1 --16,2 Кб
- отображение списка дисков, а не устройств в панели слева;
- уменьшен размер программы и потребляемой памяти;
- возможность задать цвет выделения и высоту пункта в списке файлов;
- после перерисовки окна пропадал диалог удаления файла
- другие мелкие исправления.
26.03.12 -- v1.0 --16,2 Кб
Мелкие исправления.
27.08.11 -- v0.99.8 RC3 -- 16.2 Кб
- исправления в скроллбаре, баг со времён первых версий;
- в 90% случаев не выделяло переименованый файл;
- не выделяло файл скопированный в эту же папку;
- теперь прокрутка срабатывает только, если окно активно (спасибо Mario);
- новая иконка ножниц в тулбаре (несколько изменённый вариант из Fugue icons);
- абсолютно все иконки файлов теперь обтекаемы выделением (помнится кто-то просил);
- исправлены ошибки в процедуре переименования;
- теперь программа адекватно открывается с параметром;
- много других оптимизаций и мелких исправлений.
22.08.11 -- v0.99 RC2 -- 16.2 Кб
- чуток улучшен Ctrl+N;
- небольшое исправление если запустить Эолайт с параметром /rd/1/;
- Ctrl+D помещает растянутое изображение на раб.стол (для меня это была Ultimate Ficha KFM);
- крохотный фикс скролла;
- более няшно нажимаются кнопки навигации;
- чуток обновлены иконки.
18.08.11 -- v0.98.9b RC2 -- 15.9 Кб
- программа берёт файл настроек из папки, откуда запущена.
Если он там не найден, то из папки по-умолчанию /rd/1/File managers/Eolite.ini
(for Chaos Constructions-2011, thanks Albom).
30.07.11 -- v0.98.9 RC2 -- 15.9 Кб
- если файл с настройками (Eolite.ini) не найден, то программа любезно
сообщит об этом через @notify;
- теперь отображает серым не только системные, но и скрытые файлы;
- предварительный просмотр удалён за ненадобностью;
- kolibrios.org теперь ссылка в окне "О программе" (хотя htmlv пока что
не умеет открывать интернет адреса при запуске);
- F4 - открывает файл для hex просмотра и редактирования (хотя heed пока
что не поддерживает работу с параметрами...).
20.07.11 -- v0.98.8 RC2 -- 15.9 Кб
- вывод сообщений об ошибках файловой системы через @notify. Притом не
только номер, а ещё и разъяснения что за ошибка;
- теперь нормально определяются расширения файлов, а не тупо обрезается
последних 4 символа имени файла. В часности исправлен баг,
найденный Gluk'ом, когда иконка программы Zeroconf была как
у конфигурационного файла с расширением ".conf";
- Rock_maniak_forever поправил 9 функцию, связанную с буфером, чтобы Эолайт
не показывал мусор вместо списка файлов;
- при создании новой папки на разделе, с фс которое его не поддерживает,
выделяло первую папку, исправлено (баг нашёл turbanoff);
- показывается сообщение что папка не может быть создана, файл удалён;
- новые пиктограммы действий (Actions);
- много новых и обновлённых иконок файлов.
30.01.10 -- v0.98.7a RC2 -- 14.8 Кб
- увеличена длинна пути файла: отныне может быть до 4096 символов.
23.10.09 -- v0.98.7 RC2 -- 14.7 Кб (Izabella edition)
- исправлено два бага при использовании клавиш Ctrl+F1...F12 при переключении
между устройствами: во-первых, не переходило на рам-диск, во-вторых, переходило
на несуществующие носители.
19.10.09 -- v0.98.6 RC2 -- 14.7 Кб (рано закапывать, так-то!)
- Lrz: поддержание совместимости с новой версией box_lib.obj.
29.12.08 -- v0.98.5 RC2 -- 14.7 Кб
- начальная поддержка ini-файла, начальная потому что пока что при каждом
запуске файла или программы он загрузажется и парсится;
- по просьбе Nable'а сделал тексторый предпросмотр файлов (в DOS-кодировке);
- анимация при разворачивании Preview;
- после переименования выделяется переименованый файл или папка.
- исправлен баг в сортировке по типу из-за которого программа могла вылетать;
- исправлен баг с клавишей вверх, в случае, если в разделе нет файлов и папок;
- исправлена процедура поднятия папки ".." вверх из-за которой программа в
разделе, где нет папок, вылетала;
- упрощение и удаление мертвого кода.
20.12.08 -- v0.98.3 RC2 -- 14.6 Кб
- теперь координаты отсчитываются от конца скина;
- устранён вылет программы в случае, если в папке 0 или больше чем 6898 файлов;
- исправлен баг: если в конце списка развернуть окно, выделение "прыгало" вверх;
- исправлена перерисовка при переходе в другую папку или устройство;
- немного оптимизировано изменение регистра букв в названиях файлов;
- теперь выделяется папка, в которой мы были и после кнопки "Назад";
- исправлены недочёты при переходе в верхнюю папку;
- в историю посещённых папок теперь не может два раза подряд записаться одна и
та же папка;
- исправлен баг из-за которого выделение выделение могло не двигаться клавишами;
- прога не вылетает из-за переполнения в истории посещённых папок, однако один
небольшой косяк там остался;
- тестовое отображение скрытых файлов;
- удалён неиспользуемый код.
16.12.08 -- v0.98.1 RC1 -- 14.7 Кб
- папка ".." теперь всегда первая в списке;
- кнопки вверх/вниз скролл бара теперь реагируют на нажатие и удержание;
- файлы с некоторыми расширениями теперь нельзя запускать (реализовал s1n).
15.12.08 -- v0.98 RC1 -- 14.5 Кб
- программа научилась работать с bd-дисками и NTFS;
- исправлен баг из-за которого прога вылетала при переходе на уровень вверх;
- исправлено отображение регистра букв для кириллицы;
- удаление папки "." из листинга директории (спасибо diamond'у за помощь).
30.11.08 -- v0.97.2 beta7 -- 14.4 Кб
- на /bd/ разделах прога больше не вылетает (хоть ничего на них и не видит);
- некоторые исправления в работе полосы прокрутки;
- динамическое выделение памяти (в режиме тестирования).
26.11.08 -- v0.97.1 beta7 -- 14.3 Кб
- удаление, создание и переименование пустых папок;
- все процедуры работы с файловой системой вынесены в отдельный файл;
- благодаря помощи Veliant'а большая часть изображений конвертирована в
256-цветные с палитрой. В результате чего уменьшился размер сжатой программы
и в 2 раза уменьшился обьём несжатой kpack'ом;
- улучшено перетягивание ползунка;
- исправлен один баг.
20.11.08 -- v0.97 beta7 -- 14.9 Кб
- уменьшена перерисовка: во время перерисовки списка
фон под иконками не рисуется;
- новая иконка изображений, обтекаемость архивов.
17.11.08 -- v0.96.9 beta7 -- 14.9 Кб
- некоторые новые ассоциации и иконки файлов .dll (.obj) и .img.
14.11.08 -- v0.96.8 beta7 -- 14.6 Кб
- при нажатии на букву, выделяется соответствующий файл;
- некоторые новые ассоциации и иконки файлов .cpp и .nes.
31.10.08 -- v0.96.7 beta7 -- 14.4 Кб
- теперь, при переходе на уровень вверх, выделяется папка в которой мы были;
- отловил баг из-за которого, если попытаться войти в верхнюю папку\файл в
списке, не смотря что там выделено, вы перейдёте на уровень вверх;
- исправлен баг из-за которого не все элементы сортировались по типу;
- теперь выделеный элемент в списке рисуется "в порядке очереди", а не самым
последним; это было заметно при перемотке;
- оптимизации.
24.10.08 -- v0.96.3 beta7 -- 14.4 Кб
- скролл колёсиком как в Symbian;
- уменьшена перерисовка окна в ущерб размеру программы;
- исправлен баг, когда папки, названия которых имели симполы типа !,& прыгали
вверх, выше папки "..";
- исправление других багов, улучшение кода.
23.10.08 -- v0.96 beta6 -- 14.1 Кб
- вместо сортировки пузырьком теперь используется алгоритм быстрой сортировки
(да здравствует Википедия!)). Как результат скорость сортировки по размеру
увеличилась в 8 раз, по типу более чем в 5 раз, по имени возросла на 30%;
- и более того: теперь, конечно же, сортировка проходит не по первой букве имени
файла, а по названию вообще. Так же, при сортировке по типу есть одинаковые
расширения, то эти файлы упорядывачиваются по имени;
- оптимизирована процедура сравнения строк;
- перемотка по 3 элемента;
- оптимизация и доработка панели устройств.
17.10.08 -- v0.95.7 beta6 -- 14.3 Кб
- перемотка по 2 элемента;
- упорядочивание файлов по типу.
15.10.08 -- v0.95.4 beta6 -- 14.0 Кб
- исправлен баг: первая буква названия файл\папки не делалась большой (строчной).
03.10.08 -- v0.95.3 beta6 -- 14.1 Кб
- устранён серьёзный баг с кнопкой "Назад";
- при сортировке файлов по размеру, папки не перемешиваются в хаотичном порядке,
а продолжают быть отсортированными по имени.
- устранён баг в сортировке файлов;
- новая иконка папки.
17.09.08 -- v0.95.2 beta6 -- 14.1 Кб
- исправлена ошибка, связанная с количеством файлов в папке, замечена Serge'м.
Теперь Эолайт без проблем заходит даже в самые большие папки (было проверено
на папке объёмом 91000 файлов), но отображает максимум только 6898 файлов;
- по нажатию Ctrl+N создаётся новое окно программы с текущей папкой;
- небольшие оптимизации.
14.09.08 -- v0.95 beta6 -- 14.0 Кб
- новая полоса адреса и переименования файла, основанные на компоненте от <Lrz>;
- в EditBox'ax теперь можно использовать все цифры от 1 до 9 (мечта Атаульпы:);
- если не выделена строка адреса клавиша BackSpace возвращает в предыдущую папку;
- оптимизирована функция IntToStr() за что огромное спасибо diamond'y, она стала
меньше на 158 байт;
- много интересного почерпнуто из либы Nable'а относительно оптимизации функций;
- по совету Albom'a динамическое выделение памяти было заменено статическим, как
последствие - исчезло два известных бага, связанных с копированием файлов и
их переименованием;
- некоторые переменные стали локальными, ещё оптимизации и небольшие багфиксы.
02.08.08 -- v0.94.4 beta5 -- 14.0 Кб
- правка трёх небольших багов, оптимизации.
28.07.08 -- v0.94.3 beta5 -- 14.1 Кб
- переход по девайсам Ctrl+<цифра>;
- установлен минимальный размер высоты окна;
- иконка папки "вверх";
- почищен и оптимизирован код.
04.07.08 -- v0.94 beta5 -- 13.9 Кб
- исправлен довольно старый баг, если ползунок прокрутки в папке с очень большим
количеством файлов перетянуть вверх до начала списка, программа вылетала.
04.07.08 -- v0.93.9 beta5 -- 13.9 Кб
- работает клавиша "Назад" :)
- устранён баг из-за которого папки "." и ".." подвергались сортировке
29.06.08 -- v0.93.8 beta5 -- 13.8 Кб
- сортировка файлов по первой букве имени
22.06.08 -- v0.93.6 beta5 -- 13.7 Кб
- новый алгоритм сортировки файлов по размеру, более быстрый (вычитал о нём на
Википедии:), в списке появилось 2 досели потеряных файла.
18.06.08 -- v0.93.5 beta5 -- 13.7 Кб
- запуск программы с параметрами - например "Eolite /hd1/1/" откроет программу
с папкой /hd1/1/ в ней. Несуществующий путь открыт не будет;
- устранён глюк окна "О программе", когда нажатие на любую клавишу приводило к
его зависанию (уходу в бесконечный цикл);
- иконка и поддержка файлов ".cvs";
- оптимизации кода.
15.06.08 -- v0.93.4 beta5 -- 13.4 Кб
- исправлен баг с тем появления несуществующего файла в /rd/1/;
- теперь rd, fd, hd1 и т.д. всегда в нижнем регистре;
- устранён вылет проги после нажатия кнопки "Up" (спасибо сеса за найденый баг).
14.06.08 -- v0.93.3 beta5 -- 13.4 Кб
- теперь заливается белым не весь список, а потом выводится текст, а рисуются
белые полосы с текстом - так немного медленнее, но перерисовка значительно
меньше (спасибо Марио79 за подсказку);
- оптимизирована и исправлена процедура удаления файла;
- F3 - просмотр любого файла в Тайнипаде;
- исправлены баги интерфейса.
14.06.08 -- v0.93 beta5 -- 13.6 Кб
- реализована прокрутка скроллом мыши (спасибо diamond'у за отловленный баг);
- немного уменьшена перерисовка окна;
- уменьшен и оптимизирован код программы;
- частично исправлен баг разворачивания окна, если мы были в конце списка;
- теперь при переименовании файла можно использовать все цифры, кроме восьмёрки
- у программы изменился компилятор на более новый и ключи компиляции;
- оптимизирован kolibri.h--.
08.06.08 -- v0.92.1 beta5 -- 14.0 Кб
- исправлен баг, когда ползунок не всегда доезжал не до конца полосы прокрутки;
- оптимизации в прокрутке.
08.06.08 -- v0.92 beta5 -- 14.0 Кб
- устранён баг, появившейся в версии 0.88. Если вы в конце списка и начнёте
понемногу увеличивать размеры окна, оттягивая его нижний конец вниз, то со
временем программа вылетит;
- реализован алгоритм плавной прокрутки, есть 1 серьёзный и 1 несерьёзный баг.
07.06.08 -- v0.91.5 beta4 -- 14.0 Кб
- удалён неиспользуемый с 03.03.08 (v0.83) кусок кода;
- интерфейс полосы прокрутки стал более объёмным, это было сделано не с целью
улучшения дизайна, а с целью уменьшения кода в исходнике :)
- устранён баг открытия первого файла, который проявлялся только в эмуляторе;
- cпасибо diamond'у за исправление ошибки в процедуре складывания двух строк
copystr() и её оптимизацию;
- установлено ограничение на размер имени файла, отображаемого при его удалении;
- если отменили удаление файла, то опять создаются кнопочки под формой;
- устранён старый баг (замеченный недавно) - если в полосе адреса прописали
несуществующий адрес, программу выкидывало;
- уменьшена перерисовка при переходе в другую папку, где файлов меньше, чем
было в текущей;
- исправлена ошибка в функциях lowcase() и upcase();
- теперь названия файлов и папок начинаются с большой буквы, далее - прописные;
- с папками на NTFS-разделе программа всё ещё работать не умеет, но, по крайней
мере, при попытке войти в какую-то из них она уже не вылетает;
- немного оптимизирована процедура перехода на девайс;
- исправлен баг из-за которого имена файлов иногда оказывались чуть выше чем
надо, относительно иконок;
- уменьшена перерисовка окна;
- другие оптимизации и багфиксы.
02.06.08 -- v0.90.4 beta4 -- 14.1 Кб
- оптимизации и багфиксы (в т.ч. спасибо Maxis за найденный баг).
01.06.08 -- v0.90 beta4 -- 14.1 Кб
- критически уменьшена перерисовка, в несколько раз! Огромное спасибо diamond
за подсказку.
01.06.08 -- v0.88.5 beta3 -- 14.1 Кб
- раньше при переходе из одной папки в другую вся область с файлами
закрашивалась белым цветом, а поверх выводились новые. Вопрос: зачем
закрашивать ВСЮ область, если файлов ней может быть всего 2? Я тоже не
знаю почему я понял это только сейчас. Закрашиваем только эти файлы.
- раньше рисовалась левая синяя панель, а поверх неё окошечки с девайсами
и т.д. Сейчас не так: синяя панель рисуется ВОКРУГ окошечек, что уменьшает
перерисовку.
30.05.08 -- v0.88.2 beta3 -- 14.1 Кб
- устранён баг, связанный с клавишами F2 и Home.
27.04.08 -- v0.88 beta3 -- 14.1 Кб
- обьединены процедуры открытия файла;
- устранён баг, связанный с переходом из некорневой папки на другой девайс
- динамическое выделение памяти под папки.
08.04.08 -- v0.87 beta3 -- 14.0 Кб
- оптимизировано удаление файла;
- удалён продублированный код переименования файла;
- теперь для списка девайсов в левой панели (RАM-диск, жестяки и т.д.)
существует определённый буфер, а не открывается папка "/" каждый раз при
выводе этого списка или же перехода в какой-то из его элементов;
- при перерисовке окна больше не считывается содержимое папки, просто
выводятся данные, что хранятся в буфере;
- посла деактивации окна то, что было напечатано в строке адреса не исчезает;
- упорядочивание файлов по размеру.
27.03.08 -- v0.86 beta3 -- 14.4 Кб
- оптимизирован вывод размера файлов;
- убрана лишняя перерисовка при открытии программы;
- оптимизирован переход в начало и в конец списка файлов;
- исправлен баг с потерей одного файла в корневых разделах жестких дисков;
- обьединены процедуры Ctrl+С и Ctrl+X;
- теперь для каждого изображения не своя переменная, а все они собраны по типам
в один файл: toolbar icons, file icons, device icons;
- уменьшено потребление программой ресурсов при выводе иконок файлов;
- и ещё много-много всего отимизировано!
09.03.08 -- v0.84 beta2 -- 16.1 Кб
- cделано окно "О программе" (размер за kpack-ованого изображения 2.5 Кб)
- теперь при переименовании файла можно использовать все цифры;
- оптимизировано процедуры открытия папки, копирования, перерисовка полосы
адреса и полосы переименования файла;
- запрос на удаление.
07.03.08 -- v0.83.3 beta2 -- 13.0 Кб
- решён глюк, связанный с корневыми папками жёстких дисков.
07.03.08 -- v0.83.2 beta2 -- 13.0 Кб
- решён крайне серьёзный баг с пожиранием программой дополнительного количества
памяти каждый раз после перерисовки окна или открытия папки.
07.03.08 -- v0.83.1 beta2 -- 13.0 Кб
- решен баг с прокруткой и папками;
- опитимизации.
03.03.08 -- v0.83 beta2 -- 13.0 Кб
- цвет окна более тёмный;
- распределение: вначале папки, затем файлы;
- теперь перетягивание ползунка прокрутки работает и в Колибри!
- реализованы быстрые клавиши Ctrl+C (Ctrl+Ins), Ctrl+X, Ctrl+V. Как сделать с
Shift-ом я не знаю;
- новое лого;
- устранён баг с серой линией, отделяющей названия файлов и их тип;
- устранён древний баг, связанный с невозможностью открыть любой файл с первого;
раза, только со второго;
- устранён баг, связанный с длинной имени файла;
- новая иконка текстовых документов.
27.02.08 -- v0.81 beta -- 12.8 Кб
- оптимизирование перерисовки при переходе в другую папку;
- некоторые иконки теперь обтекаемы;
- багфиксы прокрутки списка.
25.02.08 -- v0.80 beta -- 12.6 Кб
- критически уменьшена перерисовка!
- багфиксы интерфейса.
25.02.08 -- v0.77 beta -- 12.5 Кб
- переименовывание файлов;
23.02.08 -- v0.75 beta -- 12.1 Кб
- опять заработали горячие клавиши;
- библиотека eolite_copy.obj больше не нужна;
- теперь работает и вырезание файлов (размером не больше чем ОЗУ);
- улучшение алгоритма прокрутки;
- багфиксы.
23.02.08 -- v0.71 beta -- 12.1 Кб
- устранён баг ограничения размера строки для имён файлов;
- ReadMe.
23.02.08 -- v0.7 beta -- 12.1 Кб
- ограничение размера строки для имён файлов;
- удалена "." в начале списка файлов.
22.02.08 -- v0.65 beta -- 12.3 Кб
- размер файлов теперь выводится в Кб, Мб и Гб;
- оптимизация отрисовки в левой синей панели;
- удобно стало пользоваться полосой адреса. Если она была изменена, нажав Enter
мы переходим по новому адресу, если же нет - открывается выделенная папка,
файл или программа;
- в Колибри не работает, в отличии от эмулятора, реализованное перетягивание
ползунка :(
- выделение по Insert, пока что нигде не используется;
18.02.08 -- v0.6 beta -- 11.7 Кб
- совместными усилиями устранён серьёзный баг с нажатием ПКМ на заголовке окна;
- если мы пропишем адрес папки, которой не существует и попытаемся в неё перейти
ничего у нас УЖЕ не получится;
- улучшения в скролле;
- F5 перерисовать окно;
- иконки у устройств;
- панель действий;
- одиночное копирование и вырезание файлов размером не больше чем ОЗУ;
- удаление файлов, пока что без запроса.
09.02.08 -- v0.5 beta -- 10 Кб
- оптимизировано Preview;
- до деактивации окна уже нельзя кляцать по белой области и видеть кнопки;
- уменьшен размер иконок - теперь они 16х15;
- нельзя удалить весь путь в строке адреса, "/" по-любому остаётся;
- при деактивации окна выделение не перепрыгивает на первый элемент;
- реализовано открытие програм и ассоциированных файлов;
- расширения больше не в верхнем регистре;
- переходит по носителям, теперь если неизвестный носитель - оно так и напишет;
- добавлены новые типы файлов.
04.02.08 -- v0.35 beta -- 9.17 Кб
- для строки адреса отдельный "путь" (не #path, а #edit_path);
- красивая кнопка перехода;
- входит в первую папку;
- вывод типов файлов;
- оптимизация в коде.
03.02.08 -- v0.33 beta -- 8.91 Кб (англ.версия)
Первая версия. Краткое хистори:
1. Leency делает дизайн программы и ищет пути решения некоторых проблем.
2. Veliant делает отображение списка файлов из /rd/1/, а Leency реализует
перемотку списка и горячие клавиши.
3. Veliant осуществляет вывод размера файлов. Leency мучается с прокруткой.
4. Veliant выводит иконки, Leency эти иконки рисует и переделывает дизайн окна.
5. Veliant с Leency сделали переход по папкам.
6. Устранение багов.
22.02.08 -- v0.0 -- 0 Кб
Начало.

View File

@ -0,0 +1,32 @@
Eolite File Manager
==About this program==
Eolite is a simple in using and pretty looks file manager.
It written in C--. Development has started at 20.01.08.
You can find more information here:
http://board.kolibrios.org/viewtopic.php?f=9&t=973
==Install==
Put box_lib.obj into "/sys/lib/" directory.
Put Eolite.ini into programs directory or in "/sys/File Managers/".
Eolite can be opened from anywhere.
==Authors==
Leency - programming and design.
Veliant - programming and support. Inactive now.
==Thanks==
diamond
<Lrz>
Nable
Mario79
Rock_maniak_forever
turbanoff
Sorcerer
Gluk
lev
KolibriOS Forever!

View File

@ -0,0 +1,31 @@
Eolite File Manager
==О программе==
Файловый менеджер, основными принципами разработки которого
являются простота и удобство использования. Программа написана
на C--, языке промежуточном между языками высокого и низкого
уровня. Разработка началась 20.01.08.
Обсуждение программы здесь:
http://board.kolibrios.org/viewtopic.php?f=9&t=973
==Установка==
Нужно иметь свежий box_lib.obj. Eolite.ini должен быть в папке
с программой или в "/sys/File Managers/".
==Авторы==
Leency - разработка, дизайн.
Veliant - программирование, поддержка.
==Спасибо==
diamond - активная помощь в программировании, ценные советы.
<Lrz> - за компонент EditBox и либу к нему.
Nable - за некоторые оптимизации и поддержку, либу работы с IPC.
Mario79 - советы.
S1n - за реализацию работы с lib_ini (увы не используемую).
Rock_maniak_forever, turbanoff, Sorcerer, Gluk, Albom - за найденые баги.
lev - за алгоритм работы с массивами строк.
У нас будет свой Менует с блекджеком! И шлюхами! KolibriOS Forever!

View File

@ -1,6 +1,5 @@
..\C--\C-- example.c
del example
rename example.com example
..\C--\kpack example
pause
del warning.txt
@del example
@rename example.com example
@pause
@del warning.txt

View File

@ -1,4 +1,6 @@
#define MEMSIZE 0x3E80
#include "..\lib\kolibri.h"
#include "..\lib\strings.h"
#include "..\lib\file_system.h"
@ -32,9 +34,10 @@ void main()
void draw_window()
{
proc_info Form;
DefineAndDrawWindow(215,100,250,200,0x34,0xFFFFFF,"Window header");
GetProcessInfo(#Form, SelfInfo);
WriteText(50,80,0x80,0,"Press Enter");
}

View File

@ -0,0 +1,5 @@
..\C--\C-- main.c /lst
@del installer.kex
@rename main.com installer.kex
@pause
@del warning.txt

View File

@ -0,0 +1,173 @@
// универсальность добавления /
// относительный путь относительно программы
void copyf(dword params)
{
//copyf /sys/lib|/sys/lib2
char from[4096], to[4096];
BDVK from_atr;
int border;
mem_Init();
if (!params) { notify("Error: no copyf params!"); return; }
program_path[strrchr(#program_path, '/')] = 0x0;
border = strchr(params, '|');
if (!border) border = strchr(params, ' ');
if (ESBYTE[params]<>'/')
{
strcpy(#from, #program_path);
strcat(#from, params);
from[border+strlen(#program_path)-1]=NULL;
}
else
{
strcat(#from, params);
from[border-1]=NULL;
}
strcpy(#to, params+border);
GetFileInfo(#from, #from_atr);
if (TestBit(from_atr.attr, 4)==1)
{
CopyFolder(#from, #to);
}
else
{
CopyFile(#from, #to);
}
}
void CopyFolder(dword from, to)
{
dword dirbuf, fcount, filename;
int i, error, isdir;
char copy_from[4096], copy_in[4096];
char from2[4096], to2[4096];
error = GetDir(#dirbuf, #fcount, from);
if (error) debug_error(from, error);
if ((strcmp(to, "/sys")!=0) && (strcmp(to, "/tmp9/1")!=0))
{
error = CreateDir(to);
if (error) debug_error(to, error);
}
chrcat(to, '/');
chrcat(from, '/');
for (i=0; i<fcount; i++)
{
filename = i*304+dirbuf+72;
isdir = TestBit(ESDWORD[filename-40], 4);
if (isdir)
{
if ( (!strcmp(filename, ".")) || (!strcmp(filename, "..")) ) continue;
strcpy(#from2, from);
strcpy(#to2, to);
strcat(#from2, filename);
strcat(#to2, filename);
CopyFolder(#from2, #to2);
}
else
{
strcpy(#copy_from, from);
strcat(#copy_from, filename);
strcpy(#copy_in, to);
strcat(#copy_in, filename);
if (CheckEvent()==evReDraw) { DefineWindow("Installation Started", "Stop"); ShowProgress("Copying files..."); }
ShowProgress(NULL);
DrawBar(TEXTX, BLACK_H+50, Form.cwidth-TEXTX, 12, 0xFFFfff);
WriteText(TEXTX, BLACK_H+50, 0x80, 0, filename);
error = CopyFile(#copy_from, #copy_in);
if (error) error = CopyFile(#copy_from, #copy_in); // #2 :)
if (error) debug_error(#copy_in, error);
}
}
free(dirbuf);
}
unsigned char *ERROR_TEXT[]={
"Code #0 - No error",
"Error #1 - Base or partition of a hard disk is not defined",
"Error #2 - Function isn't supported for this file system",
"Error #3 - Unknown file system",
"Error #4 - Reserved, is never returned",
"Error #5 - File or folder not found",
"Error #6 - End of file, EOF",
"Error #7 - Pointer lies outside of application memory",
"Error #8 - Too less disk space or FAT table is destroyed",
"Error #9 - FAT table is destroyed",
"Error #10 - Access denied",
"Error #11 - Device error",
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
"Error #30 - Not enough memory",
"Error #31 - File is not executable",
"Error #32 - Too many processes",
0};
void debug_error(int path, error_number)
{
char error[256];
if (path) debug(path);
if (error_number<0) error_number*=-1;
if (error_number<33)
{
strcpy(#error, ERROR_TEXT[error_number]);
}
else
{
strcpy(#error, itoa(error_number));
strcat(#error, " - Unknown error number O_o");
}
debug(#error);
}
/*
int files_num;
void CalculateFilesNumber(dword from)
{
dword dirbuf, fcount, filename;
int i, isdir, error;
char from2[4096];
error = GetDir(#dirbuf, #fcount, from);
if (error) debug_error(from, error);
debugi(fcount);
for (i=0; i<fcount; i++)
{
filename = i*304+dirbuf+72;
isdir = TestBit(ESDWORD[filename-40], 4);
if (!isdir)
{
files_num++;
debug(filename);
}
else
{
if ( (!strcmp(filename, ".")) || (!strcmp(filename, "..")) ) continue;
strcpy(#from2, from);
chrcat(#from2, '/');
strcat(#from2, filename);
CalculateFilesNumber(#from2);
}
}
free(dirbuf);
}
int GetFilesNumber(dword pathz)
{
files_num = 0;
CalculateFilesNumber(pathz);
return files_num;
}
*/

View File

@ -0,0 +1,48 @@
void HalloLoop()
{
byte id, key;
goto _HALLO_DRAW;
loop() switch(WaitEvent())
{
case evButton:
id=GetButtonID();
if(id == 1) ExitProcess();
if (id == 11) RunProgram("/sys/htmlv", "http://kolibri-n.org/index.php");
if (id == 10) GotoInstall();
break;
case evKey:
key = GetKey();
if (key == 13) GotoInstall();
break;
case evReDraw: _HALLO_DRAW:
if !(DefineWindow("Prepearing installation", "Install")) break;
HalloWindow();
break;
}
}
void HalloWindow()
{
int free_ram;
unsigned char free_ram_text[256];
WriteTextB(TEXTX, 80, 0x90, 0xCC00CC, "KolibriN 8.2a Upgrade Pack is ready for install.");
DrawLink(TEXTX, 95, 0x90, 11, "http://kolibri-n.org");
free_ram = GetFreeRAM()/1024;
strcpy(#free_ram_text, "You have ");
strcat(#free_ram_text, itoa(free_ram));
strcat(#free_ram_text, " MB of free RAM. You need 100 Mb for installation.");
WriteText(TEXTX, 140, 0x80, 0, #free_ram_text);
WriteText(TEXTX, 160, 0x80, 0, "Please, close all opened applications before start.");
}
void GotoInstall()
{
if (GetFreeRAM()/1024>100) InstallationLoop();
else notify("You do not have enought free RAM for installation!");
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

View File

@ -0,0 +1,102 @@
void InstallationLoop()
{
byte id, key, started=false;
goto _INSTALL_DRAW;
loop() switch(WaitEvent())
{
case evButton:
id=GetButtonID();
if(id == 1) ExitProcess();
if (id == 11) RunProgram("/sys/htmlv", "http://kolibri-n.org/donate.php");
if (id == 10) HalloLoop();
break;
case evKey:
key = GetKey();
break;
case evReDraw: _INSTALL_DRAW:
if !(DefineWindow("Installation Started", "Stop")) break;
if (started) break;
started = true;
Install();
}
}
char iclock[3]={1,2};
void ShowProgress(dword text1)
{
iclock[0]><iclock[1];
_PutImage(WIN_W+LOGOW/2, WIN_H+LOGOH/2, LOGOW,LOGOH, LOGOW*LOGOH*3*iclock[0]+ #logo);
if (text1)
{
DrawBar(TEXTX, BLACK_H+30, Form.cwidth-TEXTX, 12, 0xFFFfff);
DrawBar(TEXTX, BLACK_H+50, Form.cwidth-TEXTX, 12, 0xFFFfff);
WriteText(TEXTX, BLACK_H+30, 0x80, 0, text1);
}
}
dword *copyfiles[] = {
"sys /sys",
"tmp /tmp9/1",
0
};
void Install()
{
int i;
proc_info Process;
ShowProgress("Mounting virtual disk...");
if (TmpDiskAdd(9, 100)!=0) RunProgram("/sys/tmpdisk", "a9s100");
for (i=2; i<256; i++;)
{
GetProcessInfo(#Process, i);
if (i==Form.ID) || (strchr(#Process.name, '/')) || (strchr(#Process.name, 'Z')) continue;
KillProcess(i);
}
RunProgram("/sys/REFRSCRN", NULL);
pause(100);
ShowProgress("Copying files...");
copyf("/sys/docpack /tmp9/1/docpack");
DeleteFile("/sys/docpack");
for (i = 0; copyfiles[i]!=0; i++) copyf(copyfiles[i]);
ShowProgress("Post install actions...");
RunProgram("/sys/launcher", NULL);
RunProgram("/sys/media/kiv", "\\S__/tmp9/1/wallpapers/Retro flower.jpg");
SetSystemSkin("/tmp9/1/skins/latte.skn");
EndLoop();
}
void EndLoop()
{
byte id, key;
goto _END_DRAW;
loop() switch(WaitEvent())
{
case evButton:
id=GetButtonID();
if(id == 1) ExitProcess();
if (id == 11) RunProgram("/sys/htmlv", "http://kolibri-n.org/index.php");
if (id == 10) ExitProcess();
break;
case evKey:
key = GetKey();
break;
case evReDraw: _END_DRAW:
if !(DefineWindow("Installation complete", "Exit")) break;
WriteText(TEXTX, BLACK_H*2, 0x80, 0, "KolibriN install complete.");
WriteText(TEXTX, BLACK_H*2+40, 0x80, 0, "I spent a lot of time improving KolibriN, so I hope you'll like it.");
WriteText(TEXTX, BLACK_H*2+55, 0x80, 0, "Please, donate as much as you can to help me further improve Kolibri,");
WriteText(TEXTX, BLACK_H*2+70, 0x80, 0, "the project I love so much. Visit my site for more information:");
DrawLink(TEXTX, BLACK_H*2+85, 0x80, 11, "http://kolibri-n.org/donate.php");
}
}

View File

@ -0,0 +1,65 @@
#define MEMSIZE 0xA1000
#include "..\lib\kolibri.h"
#include "..\lib\strings.h"
#include "..\lib\figures.h"
#include "..\lib\encoding.h"
#include "..\lib\file_system.h"
#include "..\lib\mem.h"
#include "..\lib\dll.h"
//*.obj libraries
#include "..\lib\lib.obj\box_lib.h"
#include "..\lib\lib.obj\libio_lib.h"
#include "..\lib\lib.obj\libimg_lib.h"
#include "..\lib\lib.obj\truetype.h"
#define LOGOW 16
#define LOGOH 16
#define BLACK_H 40
#define TEXTX 20
#define WIN_W 500
#define WIN_H 350
unsigned char logo[LOGOW*LOGOH*3]= FROM "img\logo.raw";
proc_info Form;
system_colors sc;
char dialog;
enum {
HALLO,
INSTALL,
END
};
int DefineWindow(dword wtitle, wbutton)
{
sc.get();
DefineAndDrawWindow(GetScreenWidth()-WIN_W/2,GetScreenHeight()-WIN_H/2-30, WIN_W+9, WIN_H+GetSkinHeight()+4, 0x74,0xFFFfff);
DrawTitle("KolibriN 8.2a Setup");
GetProcessInfo(#Form, SelfInfo);
if (Form.status_window>2) return 0; //rolled_up
DrawBar(0, 0, Form.cwidth, BLACK_H, 0);
DrawBar(0, BLACK_H, Form.cwidth, Form.cheight-BLACK_H, 0xFFFfff);
_PutImage(BLACK_H-LOGOW/2, BLACK_H-LOGOH/2, LOGOW,LOGOH, #logo);
WriteTextB(BLACK_H-LOGOW + LOGOW, BLACK_H-6/2, 0x90, 0xFFFfff, wtitle);
DrawCaptButton(Form.cwidth-107, Form.cheight-40, 90, 24, 10, sc.work_button, sc.work_button_text,wbutton);
return 1;
}
#include "copyf.c"
#include "tmp_add.c"
#include "hallo.c";
#include "installation.c";
void main()
{
mem_Init();
if (load_dll2(boxlib, #box_lib_init,0)!=0) notify("Error while loading library /rd/1/lib/box_lib.obj");
SetEventMask(0x27);
program_path[strrchr(#program_path, '/')] = 0x0;
HalloLoop();
}
stop:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,38 @@
struct ioctl_struct
{
dword handle;
dword io_code;
dword input;
dword inp_size;
dword output;
dword out_size;
};
struct add_disk_struc
{
dword DiskSize; // in sectors, 1 sector = 512 bytes. Include FAT service data
unsigned char DiskId; // from 0 to 9
};
ioctl_struct ioctl;
add_disk_struc add_disk;
int TmpDiskAdd(int disk_id, disk_size)
{
int driver_handle, driver_rezult;
driver_handle = LoadDriver("tmpdisk");
if (driver_handle==0) return 7;
add_disk.DiskId = disk_id;
add_disk.DiskSize = disk_size * 2048;
ioctl.handle = driver_handle;
ioctl.io_code = 1;
ioctl.input = #add_disk;
ioctl.inp_size = sizeof(add_disk);
ioctl.output = 0;
ioctl.out_size = 0;
driver_rezult = RuleDriver(#ioctl);
return driver_rezult;
}

View File

@ -0,0 +1,5 @@
..\C--\C-- kolibrin.c
@del kolibrin
@rename kolibrin.com kolibrin
@pause
@del warning.txt

View File

@ -0,0 +1,47 @@
#define MEMSIZE 0x9000
#include "..\lib\kolibri.h"
#include "..\lib\strings.h"
#include "..\lib\mem.h"
#include "..\lib\file_system.h"
void main()
{
dword dirbuf, fcount, filename, i;
dword dirbuf2, fcount2, filename2, j;
char cd_path[4096];
char install_path[4096];
signed int result;
mem_Init();
GetDir(#dirbuf, #fcount, "/");
for (i=0; i<fcount; i++)
{
filename = i*304+dirbuf+72;
if (!strstr(filename, "fd"))
{
strcpy(#cd_path, "/");
strcat(#cd_path, filename);
free(dirbuf2);
GetDir(#dirbuf2, #fcount2, #cd_path);
for (j=0; j<fcount2; j++)
{
filename2 = j*304+dirbuf2+72;
strcpy(#install_path, #cd_path);
strcat(#install_path, "/");
strcat(#install_path, filename2);
strcat(#install_path, "/installer.kex");
result = RunProgram(#install_path, NULL);
if (result>0) ExitProcess();
}
}
}
if (GetSystemLanguage()==4) notify("<EFBFBD>¥ ¬®£ã ­ ©â¨ installer.kex ­¨ ¢ ®¤­®¬ ª®à­¥ ¤¨áª ! <20>®¯à®¡ã©â¥ ­ ©â¨ ¨ § ¯ãáâ¨âì ¥£® ¢àãç­ãî.");
else notify("Can't find installer.kex at the root of all disks! Try to find and run it manually."w);
ExitProcess();
}
stop:

View File

@ -65,7 +65,8 @@ void DrawCaptButton(dword x,y,w,h,id,color_b, color_t,text)
int progress_w;
static int fill_old;
if (progress_percent<=0) {DrawBar(st_x,st_y, st_x + st_w + fill_old + 15,st_h+1, col_fon); fill_old=0; return;}
//if (progress_percent<=0) {DrawBar(st_x,st_y, st_x + st_w + fill_old + 15,st_h+1, col_fon); fill_old=0; return;}
if (progress_percent<=0) || (progress_percent>=100) return;
DrawRectangle(st_x, st_y, st_w,st_h, col_border);
DrawRectangle3D(st_x+1, st_y+1, st_w-2,st_h-2, 0xFFFfff, 0xFFFfff);
@ -84,3 +85,54 @@ void DrawCaptButton(dword x,y,w,h,id,color_b, color_t,text)
fill_old = strlen(status_text) * 6;
}
}
:void DrawLink(dword x,y,font_type,btn_id, inscription)
{
int w;
WriteText(x,y,font_type,0x4E00E7,inscription);
if (font_type==0x80) w = strlen(inscription)*6; else w = strlen(inscription)*7;
DefineButton(x-1,y-1,w,10,btn_id+BT_HIDE,0);
DrawBar(x,y+8,w,1,0x4E00E7);
}
:void PutShadow(dword x,y,w,h,border,strength)
{
proc_info wForm;
dword shadow_buf, skin_height;
shadow_buf = mem_Alloc(w*h*3);
//skin_height = GetSkinHeight();
GetProcessInfo(#wForm, SelfInfo);
CopyScreen(shadow_buf, x+wForm.left, y+wForm.top, w, h);
ShadowImage(shadow_buf, w, h, strength);
_PutImage(x,y,w,h,shadow_buf);
mem_Free(shadow_buf);
}
:void GrayScaleImage(dword color_image, w, h)
{
dword i,j, gray,rr,gg,bb;
for (i = 0; i < w*h*3; i+=3)
{
rr = DSBYTE[i+color_image];
gg = DSBYTE[i+1+color_image];
bb = DSBYTE[i+2+color_image];
gray = rr*rr;
gray += gg*gg;
gray += bb*bb;
gray = sqrt(gray) / 3;
DSBYTE[i +color_image] = DSBYTE[i+1+color_image] = DSBYTE[i+2+color_image] = gray;
}
}
:void ShadowImage(dword color_image, w, h, strength)
{
dword col, to;
strength = 10 - strength;
to = w*h*3 + color_image;
for ( ; color_image < to; color_image++)
{
col = strength * DSBYTE[color_image] / 10;
DSBYTE[color_image] = col;
}
}

View File

@ -28,7 +28,7 @@ struct BDVK{
// Çàïóñê ïğîãğàììû //
///////////////////////////
f70 run_file_70;
:int RunProgram(dword run_path, run_param)
signed int RunProgram(dword run_path, run_param)
{
run_file_70.func = 7;
run_file_70.param1 =
@ -96,6 +96,24 @@ f70 read_file_70;
$int 0x40
}
:int GetFile(dword buf, filesize, read_path)
{
BDVK ReadFile_atr;
dword rBuf=0;
if (! GetFileInfo(read_path, #ReadFile_atr))
{
rBuf = malloc(ReadFile_atr.sizelo);
if (! ReadFile(0, ReadFile_atr.sizelo, rBuf, read_path))
{
ESDWORD[buf] = rBuf;
ESDWORD[filesize] = ReadFile_atr.sizelo;
return 1;
}
}
free(rBuf);
return 0;
}
////////////////////////////
// Çàïèñàòü ôàéë //
////////////////////////////
@ -133,18 +151,36 @@ f70 read_dir_70;
}
:int GetDir(dword dir_buf, file_count, path)
{
dword buf, fcount, error;
buf = malloc(32);
error = ReadDir(0, buf, path);
if (!error)
{
fcount = ESDWORD[buf+8];
buf = realloc(buf, fcount+1*304+32);
ReadDir(fcount, buf, path);
if (!strcmp(".",buf+72)) {fcount--; memmov(buf,buf+304,fcount*304);}
if (!strcmp("..",buf+72)) {fcount--; memmov(buf,buf+304,fcount*304);}
ESDWORD[dir_buf] = buf;
ESDWORD[file_count] = fcount;
}
return error;
}
///////////////////////////
// Ïàğàìåòğû ôàéëà //
///////////////////////////
f70 getinfo_file_70;
BDVK getinfo_file_info;
:dword GetFileInfo(dword file_path)
:dword GetFileInfo(dword file_path, bdvk_struct)
{
getinfo_file_70.func = 5;
getinfo_file_70.param1 =
getinfo_file_70.param2 =
getinfo_file_70.param3 = 0;
getinfo_file_70.param4 = #getinfo_file_info;
getinfo_file_70.param4 = bdvk_struct;
getinfo_file_70.rezerv = 0;
getinfo_file_70.name = file_path;
$mov eax,70
@ -160,32 +196,17 @@ BDVK getinfo_file_info;
{
BDVK CopyFile_atr;
dword cBufer=0;
if (! GetFileInfo(copy_from))
char rezult = -1;
if (! GetFileInfo(copy_from, #CopyFile_atr))
{
mem_Init();
cBufer = mem_Alloc(CopyFile_atr.sizelo);
cBufer = malloc(CopyFile_atr.sizelo);
if (! ReadFile(0, CopyFile_atr.sizelo, cBufer, copy_from))
if (! WriteFile(CopyFile_atr.sizelo, cBufer, copy_in)) return 1;
}
return 0;
}
//Asper
void ReadAttributes(dword read_buffer, file_path)
{
read_file_70.func = 5;
read_file_70.param1 = 0;
read_file_70.param2 = 0;
read_file_70.param3 = 0;
read_file_70.param4 = read_buffer;
read_file_70.rezerv = 0;
read_file_70.name = file_path;
$mov eax,70
$mov ebx,#read_file_70.func
$int 0x40
rezult = WriteFile(CopyFile_atr.sizelo, cBufer, copy_in);
}
}
free(cBufer);
return rezult;
}
inline fastcall void SetCurDir( ECX)

View File

@ -7,30 +7,24 @@ char os_name[8] = {'M','E','N','U','E','T','0','1'};
dword os_version = 0x00000001;
dword start_addr = #main;
dword final_addr = #stop+32;
#ifdef MEMSIZE
dword alloc_mem = MEMSIZE;
dword x86esp_reg = MEMSIZE;
#else
dword alloc_mem = #0x00100000;
dword x86esp_reg = #0x00100000;
#endif
dword I_Param = #param;
dword I_Path = #program_path;
char param[4096];
char program_path[4096];
#define NULL 0
#define OLD -1
#define true 1
#define false 0
//Events
#define evMouse 6
#define evButton 3
#define evKey 2
#define evReDraw 1
#define OLD -1
#define true 1
#define false 0
#define NULL 0
//Button options
#define BT_DEL 0x80000000
#define BT_HIDE 0x40000000
@ -352,6 +346,7 @@ DONE:
$pop eax
}
inline fastcall void debugch( ECX)
{
$push eax
@ -399,6 +394,7 @@ void WriteTextB(dword x,y,byte fontType, dword color, EDX)
EAX = 4;
EBX = x<<16+y;
ECX = fontType<<24+color;
ESI = 0;
$int 0x40;
$add ebx, 1<<16
$int 0x40
@ -409,7 +405,7 @@ void WriteText(dword x,y,byte fontType, dword color, EDX)
EAX = 4;
EBX = x<<16+y;
ECX = fontType<<24+color;
$xor esi, esi
ESI = 0;
$int 0x40;
}
@ -422,10 +418,10 @@ void WriteNumber(dword x,y,byte fontType, dword color, count, ECX)
$int 0x40;
}
void CopyScreen(dword EBX, x, y, sizeX, sizeY)
void CopyScreen(dword EBX, x, y, w, h)
{
EAX = 36;
ECX = sizeX << 16 + sizeY;
ECX = w << 16 + h;
EDX = x << 16 + y;
$int 0x40;
}
@ -437,13 +433,6 @@ dword GetPixelColor(dword x, x_size, y)
$int 0x40
}
void PutImage(dword EBX,w,h,x,y)
{
EAX = 7;
ECX = w<<16+h;
EDX = x<<16+y;
$int 0x40
}
void _PutImage(dword x,y, w,h, EBX)
{

View File

@ -15,6 +15,9 @@ dword scrollbar_h_draw = #aScrollbar_h_draw;
dword scrollbar_h_mouse = #aScrollbar_h_mouse;
dword version_scrollbar = #aVersion_scrollbar;
dword PathShow_prepare = #aPathShow_prepare;
dword PathShow_draw = #aPathShow_draw;
dword am__ = 0x0;
dword bm__ = 0x0;
@ -38,6 +41,32 @@ char aOption_box_draw [16] = "option_box_draw\0";
char aOption_box_mouse [17] = "option_box_mouse\0";
char aVersion_op [11] = "version_op\0" ;
char aPathShow_prepare [17] = "PathShow_prepare\0";
char aPathShow_draw [14] = "PathShow_draw\0";
struct PathShow_data
{
dword type;// dd 0 ;+0
word start_y,// dw 28 ;+4
start_x,// dw 172 ;+6
font_size_x,// dw 6 ;+8 ; 6 - for font 0, 8 - for font 1
area_size_x;// dw 200 ;+10
dword font_number,// dd 0 ;+12 ; 0 - monospace, 1 - variable
background_flag,// dd 0 ;+16
font_color,// dd 0x0 ;+20
background_color,// dd 0x0 ;+24
text_pointer,// dd openfile_pach ;+28
work_area_pointer,// dd text_work_area ;+32
temp_text_length;// dd 0 ;+36
};
/*
char temp[128];
PathShow_data PathShow = {0, 100,20, 6, 200, 0, 1, 0x0, 0xFFFfff, #email_text, #temp, 0};
PathShow_prepare stdcall(#PathShow);
PathShow_draw stdcall(#PathShow);
*/
struct edit_box{
dword width, left, top, color, shift_color, focus_border_color, blur_border_color,
@ -74,22 +103,3 @@ work_size,// equ [edi+76]
all_redraw,// equ [edi+80]
ar_offset;// equ [edi+84]
};
//ed_width equ [edi] ;è¨à¨­  ª®¬¯®­¥­â 
//ed_left equ [edi+4] ;¯®«®¦¥­¨¥ ¯® ®á¨ å
//ed_top equ [edi+8] ;¯®«®¦¥­¨¥ ¯® ®á¨ ã
//ed_color equ [edi+12] ;梥â ä®­  ª®¬¯®­¥­â 
//shift_color equ [edi+16] ;=0x6a9480
//ed_focus_border_color equ [edi+20] ;梥â à ¬ª¨ ª®¬¯®­¥­â 
//ed_blur_border_color equ [edi+24] ;梥⠭¥  ªâ¨¢­®£® ª®¬¯®­¥­â 
//ed_text_color equ [edi+28] ;梥â ⥪áâ 
//ed_max equ [edi+32] ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦­® ¬ ªá¨¬ «ì­® ¢¢¥áâ¨
//ed_text equ [edi+36] ;㪠§ â¥«ì ­  ¡ãä¥à
//ed_flags equ [edi+40] ;ä« £¨
//ed_size equ [edi+42] ;ª®«-¢® ᨬ¢®«®¢
//ed_pos equ [edi+46] ;¯®§¨æ¨ï ªãàá®à 
//ed_offset equ [edi+50] ;ᬥ饭¨¥
//cl_curs_x equ [edi+54] ;¯à¥¤ë¤ãé ï ª®®à¤¨­ â  ªãàá®à  ¯® å
//cl_curs_y equ [edi+58] ;¯à¥¤ë¤ãé ï ª®®à¤¨­ â  ªãàá®à  ¯® ã
//ed_shift_pos equ [edi+62] ;¯®«®¦¥­¨¥ ªãàá®à 
//ed_shift_pos_old equ [edi+66] ;áâ à®¥ ¯®«®¦¥­¨¥ ªãàá®à 

View File

@ -34,15 +34,28 @@ dword ChangeCharset(dword from_chs, to_chs, conv_buf)
if (cd!=0)
{
debug("iconv: something is wrong with stdcall iconv()");
debug(itoa(cd));
debugi(cd);
debug("in_len");
debug(itoa(in_len));
debugi(in_len);
debug("out_len");
debug(itoa(out_len));
new_buf = 0;
debugi(out_len);
new_buf = free(new_buf);
return 0;
}
strcpy(conv_buf, new_buf);
free(new_buf);
return conv_buf;
}
char *charsets[] = { " ", "UTF-8", "KOI8-RU", "CP1251", "CP1252", "ISO8859-5", "CP866"};
int cur_charset;
enum {
CH_NULL,
CH_UTF8,
CH_KOI8,
CH_CP1251,
CH_CP1252,
CH_ISO8859_5,
CH_CP866
};

View File

@ -3,8 +3,8 @@
// strlen( EDI)
// strcpy( EDI, ESI) --- 0 if ==
// strcat( EDI, ESI)
// strchr( ESI,BL)
// strrchr( ESI,BL)
// strchr( ESI,BL) --- find first BL
// strrchr( ESI,BL) --- find last BL
// strstr( EBX, EDX)
// itoa( ESI)
// atoi( EAX)
@ -60,7 +60,7 @@ inline fastcall unsigned int strlen( EDI)
}
inline fastcall strcpy( EDI, ESI)
inline fastcall void strcpy( EDI, ESI)
{
$cld
L2:
@ -86,7 +86,7 @@ inline fastcall int strlcpy(dword ESI, EDI, EBX)
inline fastcall strcat( EDI, ESI)
inline fastcall void strcat( EDI, ESI)
{
asm {
mov ebx, edi
@ -114,6 +114,13 @@ inline fastcall strcat( EDI, ESI)
}
}
inline fastcall void chrcat(ESI, BL)
{
EDI = strlen(ESI);
ESBYTE[ESI+EDI] = BL;
ESBYTE[ESI+EDI+1] = 0;
}
inline fastcall signed int strchr( ESI,BL)
{
@ -151,7 +158,7 @@ int chrnum(dword searchin, char symbol)
}
inline fastcall dword strstr( EBX, EDX)
inline fastcall signed int strstr( EBX, EDX)
{
asm {
MOV EDI, EDX
@ -343,6 +350,7 @@ void debugi(dword d_int)
debug(#tmpch);
}
/* strtok( LPSTR dest, src, divs);
src - óêàçàòåëü íà èñõîäíóþ ñòðîêó èëè ðåçóëüòàò ïðåäûäóùåãî âûçîâà
dest - óêàçàòåëü íà áóôåð, êóäà áóäåò ñêîïèðîâàíî ñëîâî

View File

@ -1,6 +0,0 @@
..\C--\C-- end.c
del end
rename end.com end
..\C--\kpack end
pause
del warning.txt

View File

@ -3,6 +3,8 @@
#define MEMSIZE 0x3E80
#include "..\lib\kolibri.h"
#include "..\lib\strings.h"
#include "..\lib\mem.h"
#include "..\lib\figures.h"
int SCREEN_SIZE_X,
@ -17,7 +19,9 @@ void main()
{
int TEXT_X=4,
TEXT_Y=12;
dword shadow_buf, lighter_pixel1, lighter_pixel2;
mem_Init();
if (!param)
{
if (GetSystemLanguage()==4)
@ -33,8 +37,17 @@ void main()
TEXT_Y=WIN_SIZE_Y/2-3;
//èçÿÿÿùíûé êîñòûëü, ðåàëèçóþùèé ìíîãîïîòî÷íîñòü :)
while (!GetPixelColor(SCREEN_SIZE_X-1, SCREEN_SIZE_X, WIN_Y)) WIN_Y+=45;
while (GetPixelColor(SCREEN_SIZE_X-1, SCREEN_SIZE_X, WIN_Y)==0x333333) WIN_Y+=WIN_SIZE_Y+17;
shadow_buf = malloc(WIN_SIZE_X*WIN_SIZE_Y*3);
lighter_pixel1 = malloc(3);
lighter_pixel2 = malloc(3);
CopyScreen(shadow_buf, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y, WIN_SIZE_X, WIN_SIZE_Y);
CopyScreen(lighter_pixel1, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y, 1, 1);
CopyScreen(lighter_pixel2, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y+WIN_SIZE_Y, 1, 1);
ShadowImage(shadow_buf, WIN_SIZE_X, WIN_SIZE_Y, 4);
ShadowImage(lighter_pixel1, 1, 1, 1);
ShadowImage(lighter_pixel2, 1, 1, 1);
loop()
{
@ -49,9 +62,14 @@ void main()
break;
case evReDraw:
DefineAndDrawWindow(SCREEN_SIZE_X-WIN_SIZE_X,WIN_Y,WIN_SIZE_X, WIN_SIZE_Y, 0x01, 0, 0, 0x01fffFFF);
DefineAndDrawWindow(SCREEN_SIZE_X-WIN_SIZE_X,WIN_Y,WIN_SIZE_X, WIN_SIZE_Y-1, 0x01, 0, 0, 0x01fffFFF);
DefineButton(0,0, WIN_SIZE_X, WIN_SIZE_Y, 1+BT_HIDE+BT_NOFRAME, 0);
draw_grid();
//draw_grid();
//PutShadow(0,0,WIN_SIZE_X,WIN_SIZE_Y, 0, 4);
_PutImage(0,0,WIN_SIZE_X,WIN_SIZE_Y,shadow_buf);
PutPixel(0,0,ESDWORD[lighter_pixel1]);
PutPixel(0,WIN_SIZE_Y-1,ESDWORD[lighter_pixel2]);
DrawBar(WIN_SIZE_X,0, 1, WIN_SIZE_Y, 0x333333);
WriteText(TEXT_X-1,TEXT_Y, 0x80, 0,#param); //òåíü
WriteText(TEXT_X+1,TEXT_Y, 0x80, 0,#param);
WriteText(TEXT_X,TEXT_Y-1, 0x80, 0,#param);

View File

@ -1,8 +1,9 @@
//@RB - v0.62
//@RB - v0.7
#define MEMSIZE 0x4000
#include "..\lib\kolibri.h"
#include "..\lib\strings.h"
#include "..\lib\mem.h"
#include "..\lib\figures.h"
#include "..\lib\file_system.h"
@ -11,10 +12,9 @@
#endif
#ifdef LANG_RUS
#define ITEM_HEIGHT 18
#define ITEM_WIDTH 138
char *ITEMS_LIST[]={
"<EFBFBD> áâனª  ®ª®­", "/sys/desktop", 0,
"‘¬Ą­¨âě âĄ¬ă ®Ş®­", "/sys/SKINSEL", 0,
"‚ëˇŕ âě ®ˇ®¨", "/sys/BGSEL", 0,
"‚ë¡à âì 梥â ä®­ ", "/sys/media/palitra", 0,
"“¯à ¢«¥­¨¥ ¨ª®­ª ¬¨", "/sys/ICON", 0,
"<EFBFBD> áâனª  ãáâனáâ¢", "/sys/SETUP", 0,
@ -22,10 +22,9 @@
"<EFBFBD>à®æ¥ááë", "/sys/CPU", 0,
0};
#else
#define ITEM_HEIGHT 18
#define ITEM_WIDTH 122
char *ITEMS_LIST[]={
"Window setup", "/sys/desktop", 0,
"Window skin", "/sys/SKINSEL", 0,
"Wallpaper", "/sys/BGSEL", 0,
"Background", "/sys/media/palitra", 0,
"Icon manager", "/sys/ICON", 0,
"Device setup", "/sys/SETUP", 0,
@ -34,14 +33,19 @@
0};
#endif
dword stak[100];
char stak[100];
#define ITEM_HEIGHT 18
int ITEM_WIDTH;
void main()
{
mouse mm;
byte can_show;
byte i, can_show = 0;
SetEventMask(100000b);
for (i=0; ITEMS_LIST[i]!=0; i+=3) if (strlen(ITEMS_LIST[i])>ITEM_WIDTH) ITEM_WIDTH = strlen(ITEMS_LIST[i]);
ITEM_WIDTH = ITEM_WIDTH * 6 + 20;
mem_Init();
loop() switch(WaitEvent())
{
@ -123,8 +127,10 @@ void window()
case evReDraw:
while (ITEMS_LIST[items_num*3]) items_num++;
m.get();
DefineAndDrawWindow(m.x+1,m.y,ITEM_WIDTH,items_num*ITEM_HEIGHT+1,0x01,sc.work,0, 0x01fffFFF);
DefineAndDrawWindow(m.x+1,m.y,ITEM_WIDTH+1,items_num*ITEM_HEIGHT+2,0x01,sc.work,0, 0x01fffFFF);
DrawRectangle(0,0,ITEM_WIDTH,items_num*ITEM_HEIGHT+1,sc.work_graph); //îáîäîê
PutShadow(ITEM_WIDTH+1,1,1,items_num*ITEM_HEIGHT+1,0,1);
PutShadow(1,items_num*ITEM_HEIGHT+2,ITEM_WIDTH+1,1,0,1);
_ITEMS_DRAW:
for (i=0; i<items_num; i++;)
@ -145,6 +151,7 @@ void window()
}
}
void ItemProcess(int num_id)
{
RunProgram(ITEMS_LIST[num_id*3+1], ITEMS_LIST[num_id*3+2]);