myserver-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myserver-commit] [SCM] GNU MyServer branch, master, updated. 592e52de4a


From: Giuseppe Scrivano
Subject: [myserver-commit] [SCM] GNU MyServer branch, master, updated. 592e52de4a224e39a737e6b564954855a658db58
Date: Wed, 15 Jul 2009 19:21:37 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU MyServer".

The branch, master has been updated
       via  592e52de4a224e39a737e6b564954855a658db58 (commit)
       via  7b527a9f65daae08ad347b3b70a3458e80e15ef0 (commit)
       via  3565c08bbf7d2787efa45ce5a07a4cf042c6ef3e (commit)
      from  06b01dc7289a36b1e0b85147cb973c650d87d8f9 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------


commit 592e52de4a224e39a737e6b564954855a658db58
Author: Giuseppe Scrivano <address@hidden>
Date:   Wed Jul 15 21:11:26 2009 +0200

    Use `SYSROOT' instead of `SYSFOLDER'.

diff --git a/myserver/binaries/virtualhosts.default.windows.xml 
b/myserver/binaries/virtualhosts.default.windows.xml
index 3d1897b..36b3b47 100755
--- a/myserver/binaries/virtualhosts.default.windows.xml
+++ b/myserver/binaries/virtualhosts.default.windows.xml
@@ -9,7 +9,7 @@
                <PROTOCOL>HTTP</PROTOCOL>
                
                <DOCROOT>web</DOCROOT>
-               <SYSFOLDER>system</SYSFOLDER>
+               <SYSROOT>system</SYSROOT>
 
                <ACCESSLOG>
                   <STREAM location="file://logs/MyServerHTTP.log" 
cycle="1048576"/>
@@ -27,7 +27,7 @@
                <PROTOCOL>FTP</PROTOCOL>
                
                <DOCROOT>web</DOCROOT>
-               <SYSFOLDER>system</SYSFOLDER>
+               <SYSROOT>system</SYSROOT>
                
                <ACCESSLOG>
                   <STREAM location="file://logs/MyServerFTP.log" 
cycle="1048576"/>
diff --git a/myserver/binaries/virtualhosts.default.xml 
b/myserver/binaries/virtualhosts.default.xml
index 3d1897b..36b3b47 100755
--- a/myserver/binaries/virtualhosts.default.xml
+++ b/myserver/binaries/virtualhosts.default.xml
@@ -9,7 +9,7 @@
                <PROTOCOL>HTTP</PROTOCOL>
                
                <DOCROOT>web</DOCROOT>
-               <SYSFOLDER>system</SYSFOLDER>
+               <SYSROOT>system</SYSROOT>
 
                <ACCESSLOG>
                   <STREAM location="file://logs/MyServerHTTP.log" 
cycle="1048576"/>
@@ -27,7 +27,7 @@
                <PROTOCOL>FTP</PROTOCOL>
                
                <DOCROOT>web</DOCROOT>
-               <SYSFOLDER>system</SYSFOLDER>
+               <SYSROOT>system</SYSROOT>
                
                <ACCESSLOG>
                   <STREAM location="file://logs/MyServerFTP.log" 
cycle="1048576"/>
diff --git a/myserver/documentation/ssl_certificates.texi 
b/myserver/documentation/ssl_certificates.texi
index 0bc0bf8..4b7ce11 100644
--- a/myserver/documentation/ssl_certificates.texi
+++ b/myserver/documentation/ssl_certificates.texi
@@ -49,7 +49,7 @@ the following lines in the @file{virtualhosts.xml} file:
   <SSL_CERTIFICATE>certificates/cert.pem</SSL_CERTIFICATE>
   <PROTOCOL>HTTPS</PROTOCOL>
   <DOCROOT>web</DOCROOT>
-  <SYSFOLDER>system</SYSFOLDER>
+  <SYSROOT>system</SYSROOT>
   <ACCESSLOG>logs/myServer.log</ACCESSLOG>
   <WARNINGLOG>logs/myServer.err</WARNINGLOG>
 </VHOST>
diff --git a/myserver/documentation/virtual_hosts.texi 
b/myserver/documentation/virtual_hosts.texi
index 42cc61f..51b2ebe 100644
--- a/myserver/documentation/virtual_hosts.texi
+++ b/myserver/documentation/virtual_hosts.texi
@@ -15,7 +15,7 @@ A sample virtual hosts configuration file looks like:
     <IP>192.168.0.0/24</IP>
     <PROTOCOL>HTTP</PROTOCOL>
     <DOCROOT>web</DOCROOT>
-    <SYSFOLDER>system</SYSFOLDER>
+    <SYSROOT>system</SYSROOT>
     <HOST>foo.bar.com</HOST>
     <ACCESSLOG>logs/myServer.log</ACCESSLOG>
     <WARNINGLOG>logs/myServer.err</WARNINGLOG>
@@ -39,7 +39,7 @@ host.
 it is the protocol used by the host.
 @item <DOCROOT>
 it is the directory where the files are found.
address@hidden <SYSFOLDER>
address@hidden <SYSROOT>
 it is the system directory.
 @item <HOST>
 it is your virtual host's name. The optional useRegex="YES"
@@ -74,7 +74,7 @@ Here is an example of a FTP virtual host:
     <IP>127.0.0.1/32</IP>
     <PROTOCOL>FTP</PROTOCOL>
     <DOCROOT>web</DOCROOT>
-    <SYSFOLDER>system</SYSFOLDER>
+    <SYSROOT>system</SYSROOT>
     <HOST>ftp.foo.bar.com</HOST>
     <ACCESSLOG>logs/myServer.log</ACCESSLOG>
     <WARNINGLOG>logs/myServer.err</WARNINGLOG>
diff --git a/myserver/src/conf/vhost/vhost_manager.cpp 
b/myserver/src/conf/vhost/vhost_manager.cpp
index 2dd9feb..46dcc36 100644
--- a/myserver/src/conf/vhost/vhost_manager.cpp
+++ b/myserver/src/conf/vhost/vhost_manager.cpp
@@ -462,7 +462,7 @@ int VhostManager::loadXMLConfigurationFile(const char 
*filename)
               else
                 vh->setDocumentRoot ("");
             }
-          else if (!xmlStrcmp(lcur->name, (const xmlChar *)"SYSFOLDER"))
+          else if (!xmlStrcmp(lcur->name, (const xmlChar *)"SYSROOT"))
             {
               if (lcur->children && lcur->children->content)
                 {



commit 7b527a9f65daae08ad347b3b70a3458e80e15ef0
Author: Giuseppe Scrivano <address@hidden>
Date:   Wed Jul 15 21:09:44 2009 +0200

    Removed duplicated files.

diff --git a/misc/control/control/Makefile.am b/misc/control/control/Makefile.am
deleted file mode 100644
index 537f2bc..0000000
--- a/misc/control/control/Makefile.am
+++ /dev/null
@@ -1,14 +0,0 @@
-bin_PROGRAMS = myserver-configure 
-myserver_configure_SOURCES = control_client.cpp fltkconfig.cpp language.cpp 
mimetype.cpp\
-                myserver-configure.cpp progress.cpp service.cpp vector.cpp 
vhost.cpp
-
-INCLUDES = $(all_includes)
-
-myserver_configure_LDFLAGS = $(all_libraries) 
-myserver_configure_CXXFLAGS = $(CXXFLAGS) $(XML_CFLAGS) $(FLTK_CFLAGS) 
-DPREFIX=\"$(prefix)\"
-myserver_configure_LDADD = ../src/libmyserver.a $(XML_LIBS) $(FLTK_LIBS) 
$(XNET_LIB) $(OPENSSL_LIB) $(LDFLAGS)
-
-EXTRA_DIST = control_client.h fltkconfig.h language.h mimetype.h progress.h 
service.h vector.h vhost.h
-
-all : all-am myserver-configure$(EXEEXT)
-       cp myserver-configure$(EXEEXT) ../binaries/
diff --git a/misc/control/control/MyServer Configure.dev 
b/misc/control/control/MyServer Configure.dev
deleted file mode 100644
index 1a82f5b..0000000
--- a/misc/control/control/MyServer Configure.dev       
+++ /dev/null
@@ -1,189 +0,0 @@
-[Project]
-FileName=MyServer Configure.dev
-Name=MyServer Configure
-UnitCount=9
-Type=0
-Ver=1
-ObjFiles=
-Includes=..;.
-Libs=
-PrivateResource=MyServer_Configure_private.rc
-ResourceIncludes=
-MakeIncludes=
-Compiler=-DWIN32_@@_
-CppCompiler=
-Linker=../src/securestr.o ../src/utility.o  ../src/safetime.o   
../src/thread.o  ../src/file.o ../src/ssl_socket.o   ../src/stringutils.o 
../src/socket.o ../src/stream.o ../src/find_data.o ../src/xml_parser.o  
../src/mem_buff.o ../src/md5.o   ../src/files_utility.o -lfltk -lm -lz.dll 
-llibxml2 -liconv -lintl -lssl  -lcrypto -lwininet -lwsock32  -lole32  -luuid  
_@@_
-IsCpp=1
-Icon=MyServer Configure.ico
-ExeOutput=..\binaries
-ObjectOutput=tmp
-OverrideOutput=0
-OverrideOutputName=myserver-configure.exe
-HostApplication=
-Folders=
-CommandLine=
-UseCustomMakefile=0
-CustomMakefile=
-IncludeVersionInfo=1
-SupportXPThemes=0
-CompilerSet=0
-CompilerSettings=0000000001000000000100
-
-[VersionInfo]
-Major=0
-Minor=9
-Release=0
-Build=3
-LanguageID=1033
-CharsetID=1252
-CompanyName=MyServer Project
-FileVersion=0.9.0
-FileDescription=MyServer Configuration Interface
-InternalName=
-LegalCopyright=MyServer Team
-LegalTrademarks=
-OriginalFilename=MyServer Configure.exe
-ProductName=MyServer
-ProductVersion=0.9.0
-AutoIncBuildNr=0
-
-[Unit2]
-FileName=language.cpp
-CompileCpp=1
-Folder=MyServer Configure
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit5]
-FileName=service.cpp
-CompileCpp=1
-Folder=MyServer Configure
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit9]
-FileName=progress.cpp
-CompileCpp=1
-Folder=MyServer Configure
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit11]
-FileName=vhost.cpp
-CompileCpp=1
-Folder=MyServer Configure
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit12]
-FileName=vector.h
-CompileCpp=1
-Folder=MyServer Configure
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit13]
-FileName=vector.cpp
-CompileCpp=1
-Folder=MyServer Configure
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit14]
-FileName=control_client.cpp
-CompileCpp=1
-Folder=MyServer Configure
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit15]
-FileName=progress.cpp
-CompileCpp=1
-Folder=MyServer Configure
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit1]
-FileName=fltkconfig.cpp
-CompileCpp=1
-Folder=MyServer Configure
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit3]
-FileName=myserver-configure.cpp
-CompileCpp=1
-Folder=MyServer Configure
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit4]
-FileName=mimetype.cpp
-CompileCpp=1
-Folder=MyServer Configure
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit6]
-FileName=vhost.cpp
-CompileCpp=1
-Folder=MyServer Configure
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit7]
-FileName=vector.cpp
-CompileCpp=1
-Folder=MyServer Configure
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit8]
-FileName=control_client.cpp
-CompileCpp=1
-Folder=MyServer Configure
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
diff --git a/misc/control/control/MyServer Configure.ico 
b/misc/control/control/MyServer Configure.ico
deleted file mode 100644
index d7a0fa1..0000000
Binary files a/misc/control/control/MyServer Configure.ico and /dev/null differ
diff --git a/misc/control/control/bless.patch b/misc/control/control/bless.patch
deleted file mode 100644
index cc560dc..0000000
--- a/misc/control/control/bless.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- fltkconfig.h.old   2007-04-05 20:31:23.000000000 +0200
-+++ fltkconfig.h       2007-04-05 20:31:57.000000000 +0200
-@@ -20,6 +20,18 @@
- #include <FL/Fl_Progress.H>
- #include <FL/Fl_Output.H>
- #include <FL/Fl_Counter.H>
-+#include <FL/Fl_File_Chooser.H>
-+#include <FL/fl_ask.H>
-+#include "../include/xml_parser.h"
-+#include "../include/stringutils.h"
-+#include "../include/md5.h"
-+#include "../include/utility.h"
-+#include "service.h"
-+#include "language.h"
-+#include "mimetype.h"
-+#include "vhost.h"
-+#include "control_client.h"
-+#include "progress.h"
- 
- class MainDlg {
- public:
diff --git a/misc/control/control/control_client.cpp 
b/misc/control/control/control_client.cpp
deleted file mode 100644
index 8113ee8..0000000
--- a/misc/control/control/control_client.cpp
+++ /dev/null
@@ -1,600 +0,0 @@
-/*
- MyServer
- Copyright (C) 2002, 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
- 
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- Lesser General Public License for more details.
- 
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
-  */
-#include "control_client.h"
-
-//#define DEBUG
-/* Max read of header before failure */
-#define MAXHEADERLEN  2048
-/* Max wait time before failure */
-#define TIMEOUT       30000
-/* Buffer size.  Make smaller for more dramatic effect */
-#define BUFFSIZE      16
-
-ControlClient::ControlClient()
-{
-   clearCallback();
-   Connected = false;
-   Buffer.free();
-   UserName[0] = '\0';
-   memset(UserPass, 0, 64);
-   memset(LastCode, 0, 4);
-        socket = 0;
-}
-
-ControlClient::~ControlClient()
-{
-   clearCallback();
-   memset(UserPass, 0, 64); // no memory snoops here
-   Buffer.free();
-   if(Connected)
-     socket->close();
-        if(socket)
-                delete socket;
-}
-
-void ControlClient::setCallback(ControlClientCallback callback, void * parm)
-{
-   Progress = callback;
-   Object = parm;
-}
-
-void ControlClient::clearCallback()
-{
-   Progress = NULL;
-   Object = NULL;
-}
-
-int ControlClient::Login(const char * address, const int port,
-                        const char * name, const char * pass)
-{
-   if(address == NULL || port == 0 || name == NULL || pass == NULL)
-     return -1;
-
-   if(Connected)
-     Logout();
-
-   MYSERVER_HOSTENT *hp = Socket::gethostbyname(address);
-   if(hp == NULL)
-     return -2;
-
-   int ret;
-        Socket* tcpSocket = new SslSocket(tcpSocket);
-   struct sockaddr_in sockAddr;
-   int sockLen = sizeof(sockAddr);
-   memset(&sockAddr, 0, sizeof(sockAddr));
-   sockAddr.sin_family = AF_INET;
-   memcpy(&sockAddr.sin_addr, hp->h_addr, hp->h_length);
-   sockAddr.sin_port = htons(port);
-   
-   /*! Try to create the socket. */
-   if(tcpSocket->socket(AF_INET, SOCK_STREAM, 0) == -1)
-     {
-       delete tcpSocket;
-       return -2;
-     }
-
-
-   /*! If the socket was created try to connect. */
-   if(tcpSocket->connect((MYSERVER_SOCKADDR*)&sockAddr, sockLen) == -1)
-     {
-       socket->close();
-       delete tcpSocket;
-       return -2;
-     }
-
-        socket = tcpSocket;
-
-   Connected = true;
-
-   // Socket connected, test if we are authorized
-   strncpy(UserName, name, 64);
-   strncpy(UserPass, pass, 64);
-   ret = sendRequest("VERSION", "");
-   if(ret) // bad thing happend
-     {
-       Logout();
-       return -3;
-     }
-   ret = getResponse();
-   if(ret)
-     {
-       Logout();
-       if(ret == -1)
-         return -3;
-       return ret;
-     }
-
-   Buffer.setLength(0);
-   return 0;
-}
-
-int ControlClient::Logout()
-{
-   memset(UserPass, 0, 64); // no memory snoops here
-   Buffer.setLength(0);
-   if(Connected)
-     socket->close();
-   Connected = false;
-   return 0;
-}
-
-int ControlClient::getVersion(MemBuf & data)
-{
-   int ret;
-   ret = sendRequest("VERSION", "");
-   if(ret)
-     return -1;
-   ret = getResponse();
-   if(ret)
-     return ret;
-   if(DataPos == -1)
-     return -1;
-   Buffer.getPart(DataPos, Buffer.getLength(), data);
-   Buffer.setLength(0);
-   return 0;
-}
-
-int ControlClient::sendReboot()
-{
-   int ret;
-   ret = sendRequest("REBOOT", "");
-   if(ret)
-     return -1;
-   return 0;
-}
-
-int ControlClient::getMyserverConf(MemBuf & data)
-{
-   int ret;
-   ret = sendRequest("GETFILE", "myserver.xml");
-   if(ret)
-     return -1;
-   ret = getResponse();
-   if(ret)
-     return ret;
-   if(DataPos == -1)
-     return -1;
-   Buffer.getPart(DataPos, Buffer.getLength(), data);
-   Buffer.setLength(0);
-   return 0;
-}
-
-int ControlClient::getVhostsConf(MemBuf & data)
-{
-   int ret;
-   ret = sendRequest("GETFILE", "virtualhosts.xml");
-   if(ret)
-     return -1;
-   ret = getResponse();
-   if(ret)
-     return ret;
-   if(DataPos == -1)
-     return -1;
-   Buffer.getPart(DataPos, Buffer.getLength(), data);
-   Buffer.setLength(0);
-   return 0;
-}
-
-int ControlClient::getMIMEtypesConf(MemBuf & data)
-{
-   int ret;
-   ret = sendRequest("GETFILE", "MIMEtypes.xml");
-   if(ret)
-     return -1;
-   ret = getResponse();
-   if(ret)
-     return ret;
-   if(DataPos == -1)
-     return -1;
-   Buffer.getPart(DataPos, Buffer.getLength(), data);
-   Buffer.setLength(0);
-   return 0;
-}
-
-int ControlClient::sendMyserverConf(MemBuf & data)
-{
-   int ret;
-   ret = sendRequest("PUTFILE", "myserver.xml", data);
-   if(ret)
-     return -1;
-   ret = getResponse();
-   if(ret)
-     return ret;
-   Buffer.setLength(0);
-   return 0;
-}
-
-int ControlClient::sendVhostsConf(MemBuf & data)
-{
-   int ret;
-   ret = sendRequest("PUTFILE", "virtualhosts.xml", data);
-   if(ret)
-     return -1;
-   ret = getResponse();
-   if(ret)
-     return ret;
-   Buffer.setLength(0);
-   return 0;
-}
-
-int ControlClient::sendMIMEtypesConf(MemBuf & data)
-{
-   int ret;
-   ret = sendRequest("PUTFILE", "MIMEtypes.xml", data);
-   if(ret)
-     return -1;
-   ret = getResponse();
-   if(ret)
-     return ret;
-   Buffer.setLength(0);
-   return 0;
-}
-
-int ControlClient::getLanguages(Vector & list)
-{
-   int ret;
-   ret = sendRequest("SHOWLANGUAGEFILES", "");
-   if(ret)
-     return -1;
-   ret = getResponse();
-   if(ret)
-     return ret;
-   if(DataPos == -1)
-     return -1;
-   /* Warning: this is destructive to Buffer */
-   list.clear();
-   int i, len;
-   char * chrptr = &Buffer[DataPos];
-   len = Buffer.getLength();
-   for(i = DataPos; i < len; i++) // slow but not critical
-     {
-       if(Buffer[i] == '\r')
-         {
-            Buffer[i] = '\0';
-            list.add(chrptr);
-            chrptr = &Buffer[i] + 2; // avoid error checking
-         } // if
-     } // for
-   Buffer.setLength(0);
-   return 0;
-}
-
-int ControlClient::getDynamicProtocols(Vector & list)
-{
-   int ret;
-   ret = sendRequest("SHOWDYNAMICPROTOCOLS", "");
-   if(ret)
-     return -1;
-   ret = getResponse();
-   if(ret)
-     return ret;
-   list.clear();
-   if(DataPos == -1)
-     return 0; // empty list
-   /* Warning: this is destructive to Buffer */
-   int i, len;
-   char * chrptr = &Buffer[DataPos];
-   len = Buffer.getLength();
-   for(i = DataPos; i < len; i++) // slow but not critical
-     {
-       if(Buffer[i] == '\r')
-         {
-            Buffer[i] = '\0';
-            list.add(chrptr);
-            chrptr = &Buffer[i] + 2; // avoid error checking
-         } // if
-     } // for
-   Buffer.setLength(0);
-   return 0;
-}
-
-int ControlClient::getConnections(Vector & list)
-{
-   int ret;
-   ret = sendRequest("SHOWCONNECTIONS", "");
-   if(ret)
-     return -1;
-   ret = getResponse();
-   if(ret)
-     return ret;
-   list.clear();
-   if(DataPos == -1)
-     return 0; // empty list
-   /* Warning: this is destructive to Buffer */
-   int i, len;
-   char * chrptr = &Buffer[DataPos];
-   len = Buffer.getLength();
-   for(i = DataPos; i < len; i++) // slow but not critical
-     {
-       if(Buffer[i] == '\r')
-         {
-            Buffer[i] = '\0';
-            list.add(chrptr);
-            chrptr = &Buffer[i] + 2; // avoid error checking
-         } // if
-     } // for
-   Buffer.setLength(0);
-   return 0;
-}
-
-int ControlClient::sendKillConnection(VectorNode * node)
-{
-   char * chrptr = (char *)memchr(node->Text, '-', strlen(node->Text));
-   if(chrptr == NULL)
-     return -1;
-   int len = (int)(chrptr - node->Text);
-   char id[len];
-   memcpy(id, node->Text, len);
-   id[len] = '\0';
-   int ret;
-   ret = sendRequest("KILLCONNECTION", id);
-   if(ret)
-     return -1;
-   ret = getResponse();
-   if(ret)
-     return ret;
-   Buffer.setLength(0);
-   return 0;
-}
-
-int ControlClient::sendDisableReboot()
-{
-   int ret;
-   ret = sendRequest("DISABLEREBOOT", "");
-   if(ret)
-     return -1;
-   ret = getResponse();
-   if(ret)
-     return ret;
-   return 0;
-}
-
-int ControlClient::sendEnableReboot()
-{
-   int ret;
-   ret = sendRequest("ENABLEREBOOT", "");
-   if(ret)
-     return -1;
-   ret = getResponse();
-   if(ret)
-     return ret;
-   return 0;
-}
-
-int ControlClient::sendRequest(const char * cmd, const char * opt)
-{
-   memset(LastCode, 0, 4);
-   if(!Connected)
-     return -1;
-
-   int ret;
-   Buffer.setLength(0);
-   Buffer << "/" << cmd << " CONTROL/1.0 " << opt << "\r\n";
-   Buffer << "/CONNECTION Keep-Alive\r\n";
-   Buffer << "/LEN 0\r\n";
-   Buffer << "/AUTH " << UserName << ":" << UserPass << "\r\n";
-   Buffer << "\r\n";
-   ret = socket->send((const char *)Buffer.getBuffer(), Buffer.getLength(), 0);
-#ifdef DEBUG
-   write(1, (const char *)Buffer.getBuffer(), Buffer.getLength());
-#endif   
-   Buffer.setLength(0);
-   return (ret == -1 ? -1 : 0);
-}
-
-int ControlClient::sendRequest(const char * cmd, const char * opt, MemBuf & 
data)
-{
-   memset(LastCode, 0, 4);
-   if(!Connected)
-     return -1;
-   MemBuf tmp;
-   int ret1, ret2;
-   int len, pos;
-   int bytes;
-   tmp.intToStr(data.getLength());
-   Buffer.setLength(0);
-   Buffer << "/" << cmd << " CONTROL/1.0 " << opt << "\r\n";
-   Buffer << "/CONNECTION Keep-Alive\r\n";
-   Buffer << "/LEN " << tmp << "\r\n";
-   Buffer << "/AUTH " << UserName << ":" << UserPass << "\r\n";
-   Buffer << "\r\n";
-   ret1 = socket->send((const char *)Buffer.getBuffer(), Buffer.getLength(), 
0);
-#ifdef DEBUG
-   write(1, (const char *)Buffer.getBuffer(), Buffer.getLength());
-#endif
-   // send small chuncks for some user feedback
-   len = data.getLength();
-   pos = 0;
-   while(pos < len)
-     {
-       bytes = (len - pos < BUFFSIZE ? len - pos : BUFFSIZE);
-       ret2 = socket->send((const char *)&data[pos], bytes, 0);
-       if(ret2 == -1)
-         break;
-       pos += ret2;
-       // callback function
-       if(Progress)
-         Progress(Object, len, pos);
-     }
-   Buffer.setLength(0);
-#ifdef DEBUG
-   if(ret1 == -1)
-     write(1, "ret1 is -1\n", strlen("ret1 is -1\n"));
-   if(ret2 == -1)
-     write(1, "ret2 is -1\n", strlen("ret2 is -1\n"));
-#endif
-   return (ret1 == -1 || ret2 == -1 ? -1 : 0);
-}
-
-/*!
- * Try to receive data from the server.
- * Returns -1 on errors.
- * Returns 1 if there are not bytes to read.
- * Returns 2 if the header is incomplete.
- * Returns 3 on auth not valid.
- * Returns 0 on success.
- */
-int ControlClient::getResponse()
-{
-   if(!Connected)
-     return -1;
-//   if(!socket->bytesToRead())
-//     return  1;
-
-   int ret = 0;
-   int hLen = 0;
-   int returnLEN = 0;
-   char cBuffer[BUFFSIZE];
-   Buffer.setLength(0);
-#ifdef DEBUG
-   write(1, "Find header:", strlen("Find header:"));
-#endif
-   while(Buffer.find("\r\n\r\n", 4, 0) == (u_int)-1) // a little costly, may 
change
-     {
-       ret = socket->recv(cBuffer, BUFFSIZE, 0, TIMEOUT);
-
-       if(ret == -1)
-         {
-            HeaderGetReturn(); // get the code if any
-            return -1;
-         }
-
-       Buffer.addBuffer((const void *)cBuffer, ret);
-       
-       if(Buffer.getLength() > MAXHEADERLEN)
-         {
-            HeaderGetReturn(); // get the code if any
-            return -1;
-         }
-#ifdef DEBUG
-       write(1, cBuffer, ret);
-#endif
-     }
-
-#ifdef DEBUG
-   write(1, "\nDone\n", strlen("\nDone\n"));
-#endif
-   
-   // get header len
-   hLen = Buffer.find("\r\n\r\n", 4, 0) + 4;
-
-   // process the header
-   ret = HeaderGetReturn();
-
-   if(ret != CONTROL_OK)
-     {
-       if(ret == -1)
-         return 2;
-       else if(ret == CONTROL_AUTH)
-         return 3;
-       else
-         {
-#ifdef DEBUG
-            write(1, "HeaderGetReturn is -1\n", strlen("HeaderGetReturn is 
-1\n"));
-#endif
-            return -1;
-         }
-     }
-
-   returnLEN = HeaderGetLEN();
-   
-   if(returnLEN == -1)
-     return -1;
-
-   if(returnLEN > 0)  // we have data so get it
-     {
-#ifdef DEBUG
-       write(1, "Get data:", strlen("Get data:"));
-#endif
-       DataPos = hLen;
-       while(Buffer.getLength() < (u_int)(hLen + returnLEN))
-         {
-            ret = socket->recv(cBuffer, BUFFSIZE, 0, TIMEOUT);
-
-            if(ret == -1)
-              return -1;  // problem here
-#ifdef DEBUG
-            write(1, cBuffer, ret);
-#endif
-            Buffer.addBuffer((const void *)cBuffer, ret);
-            
-            // Callback function
-            if(Progress)
-              Progress(Object, returnLEN, Buffer.getLength() - hLen); 
-         } // while
-#ifdef DEBUG
-   write(1, "\nDone\n", strlen("\nDone\n"));
-#endif
-     } // if
-   else
-     DataPos = -1; // no data
-
-   return 0; // A-OK
-}
-
-int ControlClient::HeaderGetReturn()
-{
-   int pos = Buffer.find('/');
-   int end = pos;
-   int len = Buffer.getLength();
-   int ret;
-   
-   if(pos == -1)
-     return -1;
-   
-   while(Buffer[end] != '\r')
-     {
-       end++;
-       if(end > len)
-         return -1;
-     }
-   
-   char temp[end - pos];
-   memcpy(temp, &Buffer.getAt(pos), end - pos);
-   temp[end - pos] = '\0';
-   
-   ret = atoi(&temp[1]);
-   
-   strncpy(LastCode, &temp[1], 4);
-   
-   return ret;
-}
-
-int ControlClient::HeaderGetLEN()
-{
-   int pos = Buffer.find((const void *)"/LEN", 4);
-   int end = pos;
-   int len = Buffer.getLength();
-   
-   if(pos == -1)
-     return -1;
-   
-   while(Buffer[end] != '\r')
-     {  
-       end++;
-       if(end > len)
-         return -1;
-     }
-   
-   char temp[end - pos];
-   memcpy(temp, &Buffer.getAt(pos), end - pos);
-   temp[end - pos] = '\0';
-   
-   return atoi(&temp[4]);
-}
-
-   
diff --git a/misc/control/control/control_client.h 
b/misc/control/control/control_client.h
deleted file mode 100644
index dd6da6d..0000000
--- a/misc/control/control/control_client.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- MyServer
- Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
- 
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- Lesser General Public License for more details.
- 
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
-  */
-#ifndef CONTROL_CLIENT_H
-#define CONTROL_CLIENT_H
-
-#include <include/base/socket/socket.h>
-#include <include/base/socket/ssl_socket.h>
-#include <include/base/file/file.h>
-#include <include/protocol/control/control_errors.h>
-#include <include/base/string/stringutils.h>
-#include <include/base/mem_buff/mem_buff.h>
-
-#include "vector.h"
-
-typedef void (*ControlClientCallback)(void *, unsigned int, unsigned int);
-
-class ControlClient
-{
- public:
-   ControlClient();
-   ~ControlClient();
-   
-   void setCallback(ControlClientCallback, void *);
-   void clearCallback();
-   
-   int Login(const char *, const int, const char *, const char *);
-   int Logout();
-   
-   int getVersion(MemBuf &);
-   int sendReboot();
-   
-   int getMyserverConf(MemBuf &);
-   int getVhostsConf(MemBuf &);
-   int getMIMEtypesConf(MemBuf &);
-   
-   int sendMyserverConf(MemBuf &);
-   int sendVhostsConf(MemBuf &);
-   int sendMIMEtypesConf(MemBuf &);
-   
-   int getLanguages(Vector &);
-   int getDynamicProtocols(Vector &);
-   
-   int getConnections(Vector &);
-   int sendKillConnection(VectorNode *);
-
-   int sendDisableReboot();
-   int sendEnableReboot();
-   
-   char LastCode[4];
- protected:
-   int sendRequest(const char *, const char *);
-   int sendRequest(const char *, const char *, MemBuf &);
-   int getResponse();
-   Socket* socket;
-   bool Connected;
-   MemBuf Buffer;
-   int DataPos;
- private:
-   int HeaderGetReturn();
-   int HeaderGetLEN();
-   ControlClientCallback Progress;
-   void * Object;
-   char UserName[64];
-   char UserPass[64];
-};
-
-#endif
diff --git a/misc/control/control/fltkconfig.cpp 
b/misc/control/control/fltkconfig.cpp
deleted file mode 100644
index 9b3eb9a..0000000
--- a/misc/control/control/fltkconfig.cpp
+++ /dev/null
@@ -1,5033 +0,0 @@
-// generated by Fast Light User Interface Designer (fluid) version 1.0108
-
-#include "language.h"
-#include "fltkconfig.h"
-
-void MainDlg::cb_ConfDlg_i(Fl_Double_Window*, void*) {
-  if(Changed) {
-  if(fl_choice(LanguageXMLLast_Change, LanguageXMLNo, LanguageXMLYes, NULL)) {
-    ConfDlg->hide();
-  }
-}
-else {
-  ConfDlg->hide();
-};
-}
-void MainDlg::cb_ConfDlg(Fl_Double_Window* o, void* v) {
-  ((MainDlg*)(o->user_data()))->cb_ConfDlg_i(o,v);
-}
-
-void MainDlg::cb_Open_i(Fl_Menu_*, void*) {
-  int ret;
-if(Changed) {
-  if(fl_choice(LanguageXMLLast_Change, LanguageXMLNo, LanguageXMLYes, NULL)) {
-    ret = ask_type();
-    if(ret == -1) {
-      ret = 0;
-    }
-    else {
-      ConfType = ret;
-      ret = load_config();
-    }
-  }
-}
-else {
-  ret = ask_type();
-  if(ret == -1) {
-    ret = 0;
-  }
-  else {
-    ConfType = ret;
-    ret = load_config();
-  }
-}
-
-if(ret) {
-  fl_alert(LanguageXMLNot_Found);
-};
-}
-void MainDlg::cb_Open(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_Open_i(o,v);
-}
-
-void MainDlg::cb_Save_i(Fl_Menu_*, void*) {
-  int i = ask_type();
-if(i != -1) {
-  ConfType = i;
-  i = save_config();
-  if(i) {
-    fl_alert(LanguageXMLNot_Save);
-  }
-};
-}
-void MainDlg::cb_Save(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_Save_i(o,v);
-}
-
-void MainDlg::cb_Revert_i(Fl_Menu_*, void*) {
-  if(fl_choice(LanguageXMLReload_Prev, LanguageXMLNo, LanguageXMLYes, NULL)) {
-  load_config();
-};
-}
-void MainDlg::cb_Revert(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_Revert_i(o,v);
-}
-
-void MainDlg::cb_as_i(Fl_Menu_*, void*) {
-  RunAsConsole();
-}
-void MainDlg::cb_as(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_as_i(o,v);
-}
-
-void MainDlg::cb_as1_i(Fl_Menu_*, void*) {
-  RunAsService();
-}
-void MainDlg::cb_as1(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_as1_i(o,v);
-}
-
-void MainDlg::cb_Console_i(Fl_Menu_*, void*) {
-  StopConsole();
-}
-void MainDlg::cb_Console(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_Console_i(o,v);
-}
-
-void MainDlg::cb_Service_i(Fl_Menu_*, void*) {
-  StopService();
-}
-void MainDlg::cb_Service(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_Service_i(o,v);
-}
-
-void MainDlg::cb_Quit_i(Fl_Menu_*, void*) {
-  if(Changed) {
-  if(fl_choice(LanguageXMLLast_Change, LanguageXMLNo, LanguageXMLYes, NULL)) {
-    ConfDlg->hide();
-  }
-}
-else {
-  ConfDlg->hide();
-};
-}
-void MainDlg::cb_Quit(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_Quit_i(o,v);
-}
-
-void MainDlg::cb_Install_i(Fl_Menu_*, void*) {
-  InstallService();
-}
-void MainDlg::cb_Install(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_Install_i(o,v);
-}
-
-void MainDlg::cb_Remove_i(Fl_Menu_*, void*) {
-  RemoveService();
-}
-void MainDlg::cb_Remove(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_Remove_i(o,v);
-}
-
-void MainDlg::cb_Login_i(Fl_Menu_*, void*) {
-  ServerLogin(true);
-}
-void MainDlg::cb_Login(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_Login_i(o,v);
-}
-
-void MainDlg::cb_MenuLogout_i(Fl_Menu_*, void*) {
-  ServerLogout();
-}
-void MainDlg::cb_MenuLogout(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_MenuLogout_i(o,v);
-}
-
-void MainDlg::cb_MenuGetConfig_i(Fl_Menu_*, void*) {
-  int ret;
-if(Changed) {
-  if(fl_choice(LanguageXMLLast_Change, LanguageXMLNo, LanguageXMLYes, NULL)) {
-
-    ret = load_config_remote();
-
-    if(ret) {
-      ret = ServerLogin(false);
-      if(!ret) {
-        ret = load_config_remote();
-      }
-    }
-
-    if(ret == -1) {
-      fl_alertcat(LanguageXMLDownload_Failed, Server.LastCode);
-      ServerLogout();
-    }
-    else if(ret) {
-      fl_alert(LanguageXMLNot_Found);
-    }
-  }
-}
-else {
-
-  ret = load_config_remote();
-
-  if(ret) {
-    ret = ServerLogin(false);
-    if(!ret) {
-      ret = load_config_remote();   
-    }
-  }
-
-  if(ret == -1) {
-    fl_alertcat(LanguageXMLDownload_Failed, Server.LastCode);
-    ServerLogout();
-  }
-  else if(ret) {
-    fl_alert(LanguageXMLNot_Found);
-  }
-};
-}
-void MainDlg::cb_MenuGetConfig(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_MenuGetConfig_i(o,v);
-}
-
-void MainDlg::cb_MenuSendConfig_i(Fl_Menu_*, void*) {
-  int ret;
-ret = fl_choice(LanguageXMLKill_All, LanguageXMLNo, LanguageXMLYes, NULL);
-if(ret) {
-
-  ret = save_config_remote();
-
-  if(ret) {
-    ret = ServerLogin(false);
-    if(!ret) {
-      ret = save_config_remote();
-    }
-  }
-
-  if(ret == -1) {
-    fl_alertcat(LanguageXMLUpload_Failed, Server.LastCode);
-  }
-  else if(ret) {
-    fl_alert(LanguageXMLNot_Save);
-  }
-}
-ServerLogout();
-}
-void MainDlg::cb_MenuSendConfig(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_MenuSendConfig_i(o,v);
-}
-
-void MainDlg::cb_MenuConnections_i(Fl_Menu_*, void*) {
-  ServerConnections();
-}
-void MainDlg::cb_MenuConnections(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_MenuConnections_i(o,v);
-}
-
-void MainDlg::cb_MenuReboot_i(Fl_Menu_*, void*) {
-  int ret;
-ret = fl_choice(LanguageXMLKill_All, LanguageXMLNo, LanguageXMLYes, NULL);
-if(ret) {
-  ret = Server.sendReboot();
-  
-  if(ret) {
-    ret = ServerLogin(false);
-    if(!ret) {
-      ret = Server.sendReboot();
-    }
-  }
-
-  if(ret) {
-    fl_alert(LanguageXMLReboot_Failed);
-  }
-
-  ServerLogout();
-};
-}
-void MainDlg::cb_MenuReboot(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_MenuReboot_i(o,v);
-}
-
-void MainDlg::cb_About_i(Fl_Menu_*, void*) {
-  AboutDlg->show();
-}
-void MainDlg::cb_About(Fl_Menu_* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_About_i(o,v);
-}
-
-Fl_Menu_Item MainDlg::menu_[] = {
- {ctrl_gettext("&File"), 0,  0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("&Open..."), 0,  (Fl_Callback*)MainDlg::cb_Open, 0, 0, 
FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("&Save..."), 0,  (Fl_Callback*)MainDlg::cb_Save, 0, 0, 
FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("&Revert"), 0,  (Fl_Callback*)MainDlg::cb_Revert, 0, 0, 
FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Run"), 0,  0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("as Console"), 0,  (Fl_Callback*)MainDlg::cb_as, 0, 0, 
FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("as Service"), 0,  (Fl_Callback*)MainDlg::cb_as1, 0, 0, 
FL_NORMAL_LABEL, 0, 14, 0},
- {0,0,0,0,0,0,0,0,0},
- {ctrl_gettext("Stop"), 0,  0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Console"), 0,  (Fl_Callback*)MainDlg::cb_Console, 0, 0, 
FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Service"), 0,  (Fl_Callback*)MainDlg::cb_Service, 0, 0, 
FL_NORMAL_LABEL, 0, 14, 0},
- {0,0,0,0,0,0,0,0,0},
- {ctrl_gettext("&Quit"), 0,  (Fl_Callback*)MainDlg::cb_Quit, 0, 0, 
FL_NORMAL_LABEL, 0, 14, 0},
- {0,0,0,0,0,0,0,0,0},
- {ctrl_gettext("Ser&vice"), 0,  0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Install Service"), 0,  (Fl_Callback*)MainDlg::cb_Install, 0, 
0, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Remove Service"), 0,  (Fl_Callback*)MainDlg::cb_Remove, 0, 0, 
FL_NORMAL_LABEL, 0, 14, 0},
- {0,0,0,0,0,0,0,0,0},
- {ctrl_gettext("Re&mote"), 0,  0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Login..."), 0,  (Fl_Callback*)MainDlg::cb_Login, 0, 0, 
FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Logout"), 0,  (Fl_Callback*)MainDlg::cb_MenuLogout, 0, 1, 
FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Get Config"), 0,  (Fl_Callback*)MainDlg::cb_MenuGetConfig, 0, 
1, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Send Config"), 0,  (Fl_Callback*)MainDlg::cb_MenuSendConfig, 
0, 1, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Connections..."), 0,  
(Fl_Callback*)MainDlg::cb_MenuConnections, 0, 1, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Reboot..."), 0,  (Fl_Callback*)MainDlg::cb_MenuReboot, 0, 1, 
FL_NORMAL_LABEL, 0, 14, 0},
- {0,0,0,0,0,0,0,0,0},
- {ctrl_gettext("&Help"), 0,  0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("&About"), 0,  (Fl_Callback*)MainDlg::cb_About, 0, 0, 
FL_NORMAL_LABEL, 0, 14, 0},
- {0,0,0,0,0,0,0,0,0},
- {0,0,0,0,0,0,0,0,0}
-};
-Fl_Menu_Item* MainDlg::MenuLogout = MainDlg::menu_ + 20;
-Fl_Menu_Item* MainDlg::MenuGetConfig = MainDlg::menu_ + 21;
-Fl_Menu_Item* MainDlg::MenuSendConfig = MainDlg::menu_ + 22;
-Fl_Menu_Item* MainDlg::MenuConnections = MainDlg::menu_ + 23;
-Fl_Menu_Item* MainDlg::MenuReboot = MainDlg::menu_ + 24;
-
-void MainDlg::cb_Buffer_Size_i(Fl_Value_Input*, void*) {
-  Changed = true;
-}
-void MainDlg::cb_Buffer_Size(Fl_Value_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Buffer_Size_i(o,v);
-}
-
-void MainDlg::cb_Verbosity_i(Fl_Choice*, void*) {
-  Changed = true;
-}
-void MainDlg::cb_Verbosity(Fl_Choice* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Verbosity_i(o,v);
-}
-
-Fl_Menu_Item MainDlg::menu_Verbosity[] = {
- {ctrl_gettext("None"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Normal"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Higher"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Highest"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {0,0,0,0,0,0,0,0,0}
-};
-
-void MainDlg::cb_Max_Log_File_Size_i(Fl_Value_Input*, void*) {
-  Changed = true;
-}
-void MainDlg::cb_Max_Log_File_Size(Fl_Value_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Max_Log_File_Size_i(o,v);
-}
-
-void MainDlg::cb_Nthreads_Static_i(Fl_Value_Input*, void*) {
-  Changed = true;
-}
-void MainDlg::cb_Nthreads_Static(Fl_Value_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Nthreads_Static_i(o,v);
-}
-
-void MainDlg::cb_Nthreads_Max_i(Fl_Value_Input*, void*) {
-  Changed = true;
-}
-void MainDlg::cb_Nthreads_Max(Fl_Value_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Nthreads_Max_i(o,v);
-}
-
-void MainDlg::cb_Language_i(Fl_Choice*, void*) {
-  Changed = true;
-}
-void MainDlg::cb_Language(Fl_Choice* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Language_i(o,v);
-}
-
-void MainDlg::cb_Connection_Timeout_i(Fl_Value_Input*, void*) {
-  Changed = true;
-}
-void MainDlg::cb_Connection_Timeout(Fl_Value_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Connection_Timeout_i(o,v);
-}
-
-void MainDlg::cb_Max_Connections_i(Fl_Value_Input*, void*) {
-  Changed = true;
-}
-void MainDlg::cb_Max_Connections(Fl_Value_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Max_Connections_i(o,v);
-}
-
-void MainDlg::cb_Gzip_Threshold_i(Fl_Value_Input*, void*) {
-  Changed = true;
-}
-void MainDlg::cb_Gzip_Threshold(Fl_Value_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Gzip_Threshold_i(o,v);
-}
-
-void MainDlg::cb_Browsefolder_Css_i(Fl_Input*, void*) {
-  Changed = true;
-}
-void MainDlg::cb_Browsefolder_Css(Fl_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Browsefolder_Css_i(o,v);
-}
-
-void MainDlg::cb_Browse_i(Fl_Button*, void*) {
-  char * chrptr = fl_file_chooser("", "", "");
-if(chrptr != 0) {
-  Changed = true;
-  Browsefolder_Css->value(chrptr);
-};
-}
-void MainDlg::cb_Browse(Fl_Button* o, void* v) {
-  ((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Browse_i(o,v);
-}
-
-void MainDlg::cb_Use_Errors_Files_i(Fl_Check_Button*, void*) {
-  Changed = true;
-}
-void MainDlg::cb_Use_Errors_Files(Fl_Check_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Use_Errors_Files_i(o,v);
-}
-
-void MainDlg::cb_Add_i(Fl_Button*, void*) {
-  char * val;
-val = (char *)fl_input(LanguageXMLEnter_Default);
-if(val != 0) {
-  Changed = true;
-  Default_Filename->add(val);
-};
-}
-void MainDlg::cb_Add(Fl_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_Add_i(o,v);
-}
-
-void MainDlg::cb_Remove1_i(Fl_Button*, void*) {
-  if(Default_Filename->value() != 0) {
-  Changed = true;
-  Default_Filename->remove(Default_Filename->value());
-};
-}
-void MainDlg::cb_Remove1(Fl_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_Remove1_i(o,v);
-}
-
-void MainDlg::cb_Ext_i(Fl_Browser*, void*) {
-  int val = Ext->value();
-if(val != 0) {
-  val -= 1;
-  
-  Cmd->value(MimeConf.getCmd(val));
-  
-  if(Cmd->value() >= 2 && Cmd->value() <= 4) {
-  }
-
-  Mime->value(MimeConf.getType(val));
-
-  Manager->value(MimeConf.getManager(val));
-};
-}
-void MainDlg::cb_Ext(Fl_Browser* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Ext_i(o,v);
-}
-
-void MainDlg::cb_Add1_i(Fl_Button*, void*) {
-  char * val;
-int i;
-val = (char *)fl_input(LanguageXMLEnter_Extension);
-if(val != 0) {
-  Changed = true;
-  i = MimeConf.addExt(val);
-  MimeConf.populateExt(Ext);
-  Ext->value(i + 1);
-
-  Cmd->value(MimeConf.getCmd(i));
-  
-  
-  Mime->value(MimeConf.getType(i));
-
-  Manager->value(MimeConf.getManager(i));
-};
-}
-void MainDlg::cb_Add1(Fl_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Add1_i(o,v);
-}
-
-void MainDlg::cb_Remove2_i(Fl_Button*, void*) {
-  int val;
-val = Ext->value();
-if(val != 0) {
-  Changed = true;
-  val--;
-  MimeConf.removeExt(val);
-  MimeConf.populateExt(Ext);
-};
-}
-void MainDlg::cb_Remove2(Fl_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Remove2_i(o,v);
-}
-
-void MainDlg::cb_Mime_i(Fl_Choice*, void*) {
-  int val = Ext->value();
-if(val != 0) {
-  val--;
-  Changed = true;
-  MimeConf.setType(val, Mime->value());
-};
-}
-void MainDlg::cb_Mime(Fl_Choice* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_Mime_i(o,v);
-}
-
-void MainDlg::cb_Add2_i(Fl_Button*, void*) {
-  char * val;
-int i, ret;
-val = (char *)fl_input(LanguageXMLEnter_MIME);
-if(val != 0) {
-  Changed = true;
-  i = MimeConf.addMime(val);
-  MimeConf.populateMime(Mime);
-  Mime->value(i);
-  ret = Ext->value();
-  if(ret != 0) {
-    ret--;
-    MimeConf.setType(ret, i);
-  }
-};
-}
-void MainDlg::cb_Add2(Fl_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_Add2_i(o,v);
-}
-
-void MainDlg::cb_Cmd_i(Fl_Choice*, void*) {
-  int val = Cmd->value();
-int val2 = Ext->value();
-if(val >= 2 && val <= 4) {
-}
-else {
-  if(val2 != 0)
-    MimeConf.setManager(val2 - 1, NONE);
-  Manager->value(NONE);
-}
-
-if(val2 != 0) {
-  val2--;
-  MimeConf.setCmd(val2, val);
-  Changed = true;
-};
-}
-void MainDlg::cb_Cmd(Fl_Choice* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_Cmd_i(o,v);
-}
-
-Fl_Menu_Item MainDlg::menu_Cmd[] = {
- {ctrl_gettext("Send the file"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("URL link"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Run as CGI"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Run as FastCGI"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Run as SCGI"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Run as ISAPI"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Run as MSCGI"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Run as WINCGI"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Execute"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Execute as an ISAPI module"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 
14, 0},
- {ctrl_gettext("Execute self contained FastCGI"), 0,  0, 0, 0, 
FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("Run self contained SCGI"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 
14, 0},
- {0,0,0,0,0,0,0,0,0}
-};
-
-void MainDlg::cb_Manager_i(Fl_Input*, void*) {
-  int val = Ext->value();
-if(val != 0) {
-  val--;
-  MimeConf.setManager(val, Manager->value());
-  Changed = true;
-};
-}
-void MainDlg::cb_Manager(Fl_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_Manager_i(o,v);
-}
-
-void MainDlg::cb_ManagerButton_i(Fl_Button*, void*) {
-  int val = Ext->value();
-char * chrptr = fl_file_chooser("", "", "");
-if(chrptr != 0) {
-  if(val != 0) {
-    val--;
-    MimeConf.setManager(val, chrptr);
-    Manager->value(chrptr);
-    Changed = true;
-  }
-};
-}
-void MainDlg::cb_ManagerButton(Fl_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_ManagerButton_i(o,v);
-}
-
-void MainDlg::cb_Name_i(Fl_Choice*, void*) {
-  int i = Name->value();
-VHostConf.populateHost(i, Host);
-VHostConf.populateIp(i, Ip);
-Port->value(VHostConf.getPort(i));
-Protocol->value(VHostConf.getProtocol(i));
-Ssl_Privatekey->value(VHostConf.getSsl_Privatekey(i));
-Ssl_Certificate->value(VHostConf.getSsl_Certificate(i));
-Ssl_Password->value(VHostConf.getSsl_Password(i));
-Docroot->value(VHostConf.getDocroot(i));
-Sysfolder->value(VHostConf.getSysfolder(i));
-Accesseslog->value(VHostConf.getAccesseslog(i));
-Warninglog->value(VHostConf.getWarninglog(i));
-Allow_CGI->value(VHostConf.getService(i, ALLOW_CGI));
-Allow_ISAPI->value(VHostConf.getService(i, ALLOW_ISAPI));
-Allow_MSCGI->value(VHostConf.getService(i, ALLOW_MSCGI));
-Allow_WINCGI->value(VHostConf.getService(i, ALLOW_WINCGI));
-Allow_FASTCGI->value(VHostConf.getService(i, ALLOW_FASTCGI));
-Allow_SCGI->value(VHostConf.getService(i, ALLOW_SCGI));
-Allow_SEND_LINK->value(VHostConf.getService(i, ALLOW_SEND_LINK));
-Allow_EXTERNAL_COMMANDS->value(VHostConf.getService(i, 
ALLOW_EXTERNAL_COMMANDS));
-Allow_SEND_FILE->value(VHostConf.getService(i, ALLOW_SEND_FILE));
-i = Protocol->value();
-if(i != 1 && i != 3) {
-  Ssl_Privatekey->deactivate();
-  Ssl_Certificate->deactivate();
-  Ssl_Password->deactivate();
-  SslButton1->deactivate();
-  SslButton2->deactivate();
-}
-else {
-  Ssl_Privatekey->activate();
-  Ssl_Certificate->activate();
-  Ssl_Password->activate();
-  SslButton1->activate();
-  SslButton2->activate();
-};
-}
-void MainDlg::cb_Name(Fl_Choice* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_Name_i(o,v);
-}
-
-void MainDlg::cb_Add3_i(Fl_Button*, void*) {
-  char * val;
-int i;
-val = (char *)fl_input(LanguageXMLEnter_Name);
-if(val != 0) {
-  Changed = true;
-  i = VHostConf.addName(val);
-  VHostConf.populateName(Name);
-  Name->value(i);
-  VHostConf.populateHost(i, Host);
-  VHostConf.populateIp(i, Ip);
-  Port->value(VHostConf.getPort(i));
-  Protocol->value(VHostConf.getProtocol(i));
-  Ssl_Privatekey->value(VHostConf.getSsl_Privatekey(i));
-  Ssl_Certificate->value(VHostConf.getSsl_Certificate(i));
-  Ssl_Password->value(VHostConf.getSsl_Password(i));
-  Docroot->value(VHostConf.getDocroot(i));
-  Sysfolder->value(VHostConf.getSysfolder(i));
-  Accesseslog->value(VHostConf.getAccesseslog(i));
-  Warninglog->value(VHostConf.getWarninglog(i));
-  Allow_CGI->value(VHostConf.getService(i, ALLOW_CGI));
-  Allow_ISAPI->value(VHostConf.getService(i, ALLOW_ISAPI));
-  Allow_MSCGI->value(VHostConf.getService(i, ALLOW_MSCGI));
-  Allow_WINCGI->value(VHostConf.getService(i, ALLOW_WINCGI));
-  Allow_FASTCGI->value(VHostConf.getService(i, ALLOW_FASTCGI));
-  Allow_SCGI->value(VHostConf.getService(i, ALLOW_SCGI));
-  Allow_SEND_LINK->value(VHostConf.getService(i, ALLOW_SEND_LINK));
-  Allow_EXTERNAL_COMMANDS->value(VHostConf.getService(i, 
ALLOW_EXTERNAL_COMMANDS));
-  Allow_SEND_FILE->value(VHostConf.getService(i, ALLOW_SEND_FILE));
-  i = Protocol->value();
-  if(i != 1 && i != 3) {
-    Ssl_Privatekey->deactivate();
-    Ssl_Certificate->deactivate();
-    Ssl_Password->deactivate();
-    SslButton1->deactivate();
-    SslButton2->deactivate();
-  }
-  else {
-    Ssl_Privatekey->activate();
-    Ssl_Certificate->activate();
-    Ssl_Password->activate();
-    SslButton1->activate();
-    SslButton2->activate();
-  }
-};
-}
-void MainDlg::cb_Add3(Fl_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_Add3_i(o,v);
-}
-
-void MainDlg::cb_Remove3_i(Fl_Button*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.removeName(i);
-i = 0;
-VHostConf.populateName(Name);
-Name->value(i);
-VHostConf.populateHost(i, Host);
-VHostConf.populateIp(i, Ip);
-Port->value(VHostConf.getPort(i));
-Protocol->value(VHostConf.getProtocol(i));
-Ssl_Privatekey->value(VHostConf.getSsl_Privatekey(i));
-Ssl_Certificate->value(VHostConf.getSsl_Certificate(i));
-Ssl_Password->value(VHostConf.getSsl_Password(i));
-Docroot->value(VHostConf.getDocroot(i));
-Sysfolder->value(VHostConf.getSysfolder(i));
-Accesseslog->value(VHostConf.getAccesseslog(i));
-Warninglog->value(VHostConf.getWarninglog(i));
-i = Protocol->value();
-if(i != 1 && i != 3) {
-  Ssl_Privatekey->deactivate();
-  Ssl_Certificate->deactivate();
-  Ssl_Password->deactivate();
-  SslButton1->deactivate();
-  SslButton2->deactivate();
-}
-else {
-  Ssl_Privatekey->activate();
-  Ssl_Certificate->activate();
-  Ssl_Password->activate();
-  SslButton1->activate();
-  SslButton2->activate();
-};
-}
-void MainDlg::cb_Remove3(Fl_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_Remove3_i(o,v);
-}
-
-void MainDlg::cb_Protocol_i(Fl_Choice*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setProtocol(i, Protocol->value());
-int pval = Protocol->value();
-if(pval != 1 && pval != 3) {
-  VHostConf.setSsl_Privatekey(i, EMPTY);
-  VHostConf.setSsl_Certificate(i, EMPTY);
-  VHostConf.setSsl_Password(i, EMPTY);
-  Ssl_Privatekey->value(EMPTY);
-  Ssl_Certificate->value(EMPTY);
-  Ssl_Password->value(EMPTY);
-  Ssl_Privatekey->deactivate();
-  Ssl_Certificate->deactivate();
-  Ssl_Password->deactivate();
-  SslButton1->deactivate();
-  SslButton2->deactivate();
-}
-else {
-  Ssl_Privatekey->activate();
-  Ssl_Certificate->activate();
-  Ssl_Password->activate();
-  SslButton1->activate();
-  SslButton2->activate();
-}
-
-// set default vals
-switch(pval) {
-  case 0 :
-    Port->value(80);
-    VHostConf.setPort(i, 80);
-    break;
-  case 1 :
-    Port->value(443);
-    VHostConf.setPort(i, 443);
-    break;
-  case 2 :
-    Port->value(21);
-    VHostConf.setPort(i, 21);
-    break;
-  case 3 :
-    Port->value(270);
-    VHostConf.setPort(i, 270);
-    break;
-  default :
-    break;
-};
-}
-void MainDlg::cb_Protocol(Fl_Choice* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Protocol_i(o,v);
-}
-
-Fl_Menu_Item MainDlg::menu_Protocol[] = {
- {ctrl_gettext("HTTP"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("HTTPS"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("FTP"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {ctrl_gettext("CONTROL"), 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
- {0,0,0,0,0,0,0,0,0}
-};
-
-void MainDlg::cb_Ssl_Privatekey_i(Fl_Input*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setSsl_Privatekey(i, Ssl_Privatekey->value());
-}
-void MainDlg::cb_Ssl_Privatekey(Fl_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Ssl_Privatekey_i(o,v);
-}
-
-void MainDlg::cb_Ssl_Certificate_i(Fl_Input*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setSsl_Certificate(i, Ssl_Certificate->value());
-}
-void MainDlg::cb_Ssl_Certificate(Fl_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Ssl_Certificate_i(o,v);
-}
-
-void MainDlg::cb_Ssl_Password_i(Fl_Input*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setSsl_Password(i, Ssl_Password->value());
-}
-void MainDlg::cb_Ssl_Password(Fl_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Ssl_Password_i(o,v);
-}
-
-void MainDlg::cb_SslButton1_i(Fl_Button*, void*) {
-  char * chrptr = fl_file_chooser("", "", "");
-if(chrptr != 0) {
-  Changed = true;
-  int i = Name->value();
-  VHostConf.setSsl_Privatekey(i, chrptr);
-  Ssl_Privatekey->value(chrptr);
-};
-}
-void MainDlg::cb_SslButton1(Fl_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_SslButton1_i(o,v);
-}
-
-void MainDlg::cb_SslButton2_i(Fl_Button*, void*) {
-  char * chrptr = fl_file_chooser("", "", "");
-if(chrptr != 0) {
-  Changed = true;
-  int i = Name->value();
-  VHostConf.setSsl_Certificate(i, chrptr);
-  Ssl_Certificate->value(chrptr);
-};
-}
-void MainDlg::cb_SslButton2(Fl_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_SslButton2_i(o,v);
-}
-
-void MainDlg::cb_Add4_i(Fl_Button*, void*) {
-  char * val;
-int NameNo, i;
-bool reg = false;
-val = (char *)regex_input(LanguageXMLEnter_Host, reg);
-if(val != 0) {
-  Changed = true;
-  NameNo = Name->value();
-  i = VHostConf.addHost(NameNo, val, reg);
-  VHostConf.populateHost(NameNo, Host);
-  Host->value(i + 1);
-};
-}
-void MainDlg::cb_Add4(Fl_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Add4_i(o,v);
-}
-
-void MainDlg::cb_Remove4_i(Fl_Button*, void*) {
-  int i, NameNo;
-i = Host->value();
-if(i != 0) {
-  Changed = true;
-  NameNo = Name->value();
-  VHostConf.removeHost(NameNo, i - 1);
-  VHostConf.populateHost(NameNo, Host);
-};
-}
-void MainDlg::cb_Remove4(Fl_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Remove4_i(o,v);
-}
-
-void MainDlg::cb_Add5_i(Fl_Button*, void*) {
-  char * val;
-int NameNo, i;
-bool reg;
-val = (char *)regex_input(LanguageXMLEnter_Ip, reg);
-if(val != 0) {
-  Changed = true;
-  NameNo = Name->value();
-  i = VHostConf.addIp(NameNo, val, reg);
-  VHostConf.populateIp(NameNo, Ip);
-  Ip->value(i + 1);
-};
-}
-void MainDlg::cb_Add5(Fl_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Add5_i(o,v);
-}
-
-void MainDlg::cb_Remove5_i(Fl_Button*, void*) {
-  int i, NameNo;
-i = Ip->value();
-if(i != 0) {
-  Changed = true;
-  NameNo = Name->value();
-  VHostConf.removeIp(NameNo, i - 1);
-  VHostConf.populateIp(NameNo, Ip);
-};
-}
-void MainDlg::cb_Remove5(Fl_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Remove5_i(o,v);
-}
-
-void MainDlg::cb_Port_i(Fl_Value_Input*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setPort(i, (int)Port->value());
-}
-void MainDlg::cb_Port(Fl_Value_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Port_i(o,v);
-}
-
-void MainDlg::cb_Allow_CGI_i(Fl_Check_Button*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_CGI, Allow_CGI->value());
-}
-void MainDlg::cb_Allow_CGI(Fl_Check_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Allow_CGI_i(o,v);
-}
-
-void MainDlg::cb_Allow_ISAPI_i(Fl_Check_Button*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_ISAPI, Allow_ISAPI->value());
-}
-void MainDlg::cb_Allow_ISAPI(Fl_Check_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Allow_ISAPI_i(o,v);
-}
-
-void MainDlg::cb_Allow_MSCGI_i(Fl_Check_Button*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_MSCGI, Allow_MSCGI->value());
-}
-void MainDlg::cb_Allow_MSCGI(Fl_Check_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Allow_MSCGI_i(o,v);
-}
-
-void MainDlg::cb_Allow_WINCGI_i(Fl_Check_Button*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_WINCGI, Allow_WINCGI->value());
-}
-void MainDlg::cb_Allow_WINCGI(Fl_Check_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Allow_WINCGI_i(o,v);
-}
-
-void MainDlg::cb_Allow_FASTCGI_i(Fl_Check_Button*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_FASTCGI, Allow_FASTCGI->value());
-}
-void MainDlg::cb_Allow_FASTCGI(Fl_Check_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Allow_FASTCGI_i(o,v);
-}
-
-void MainDlg::cb_Allow_SCGI_i(Fl_Check_Button*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_SCGI, Allow_SCGI->value());
-}
-void MainDlg::cb_Allow_SCGI(Fl_Check_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Allow_SCGI_i(o,v);
-}
-
-void MainDlg::cb_Allow_SEND_LINK_i(Fl_Check_Button*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_SEND_LINK, Allow_SEND_LINK->value());
-}
-void MainDlg::cb_Allow_SEND_LINK(Fl_Check_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Allow_SEND_LINK_i(o,v);
-}
-
-void MainDlg::cb_Allow_EXTERNAL_COMMANDS_i(Fl_Check_Button*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_EXTERNAL_COMMANDS, 
Allow_EXTERNAL_COMMANDS->value());
-}
-void MainDlg::cb_Allow_EXTERNAL_COMMANDS(Fl_Check_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Allow_EXTERNAL_COMMANDS_i(o,v);
-}
-
-void MainDlg::cb_Allow_SEND_FILE_i(Fl_Check_Button*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_SEND_FILE, Allow_SEND_FILE->value());
-}
-void MainDlg::cb_Allow_SEND_FILE(Fl_Check_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Allow_SEND_FILE_i(o,v);
-}
-
-void MainDlg::cb_Docroot_i(Fl_Input*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setDocroot(i, Docroot->value());
-}
-void MainDlg::cb_Docroot(Fl_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Docroot_i(o,v);
-}
-
-void MainDlg::cb_Sysfolder_i(Fl_Input*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setSysfolder(i, Sysfolder->value());
-}
-void MainDlg::cb_Sysfolder(Fl_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Sysfolder_i(o,v);
-}
-
-void MainDlg::cb_Browse1_i(Fl_Button*, void*) {
-  char * chrptr = fl_dir_chooser("", "");
-if(chrptr != 0) {
-  Changed = true;
-  int i = Name->value();
-  VHostConf.setDocroot(i, chrptr);
-  Docroot->value(chrptr);
-};
-}
-void MainDlg::cb_Browse1(Fl_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Browse1_i(o,v);
-}
-
-void MainDlg::cb_Browse2_i(Fl_Button*, void*) {
-  char * chrptr = fl_dir_chooser("", "");
-if(chrptr != 0) {
-  Changed = true;
-  int i = Name->value();
-  VHostConf.setSysfolder(i, chrptr);
-  Sysfolder->value(chrptr);
-};
-}
-void MainDlg::cb_Browse2(Fl_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Browse2_i(o,v);
-}
-
-void MainDlg::cb_Accesseslog_i(Fl_Input*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setAccesseslog(i, Accesseslog->value());
-}
-void MainDlg::cb_Accesseslog(Fl_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Accesseslog_i(o,v);
-}
-
-void MainDlg::cb_Warninglog_i(Fl_Input*, void*) {
-  Changed = true;
-int i = Name->value();
-VHostConf.setWarninglog(i, Warninglog->value());
-}
-void MainDlg::cb_Warninglog(Fl_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_Warninglog_i(o,v);
-}
-
-void MainDlg::cb_Server_Admin_i(Fl_Input*, void*) {
-  Changed = true;
-}
-void MainDlg::cb_Server_Admin(Fl_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Server_Admin_i(o,v);
-}
-
-void MainDlg::cb_Control_Admin_i(Fl_Input*, void*) {
-  Changed = true;
-}
-void MainDlg::cb_Control_Admin(Fl_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Control_Admin_i(o,v);
-}
-
-void MainDlg::cb_Control_Password_i(Fl_Input*, void*) {
-  Changed = true;
-}
-void MainDlg::cb_Control_Password(Fl_Input* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Control_Password_i(o,v);
-}
-
-void MainDlg::cb_Control_Enabled_i(Fl_Check_Button*, void*) {
-  Changed = true;
-if(Control_Enabled->value() == 1) {
-  Control_Admin->activate();
-  Control_Password->activate();
-}
-else {
-  Control_Admin->deactivate();
-  Control_Password->deactivate();
-};
-}
-void MainDlg::cb_Control_Enabled(Fl_Check_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Control_Enabled_i(o,v);
-}
-
-void MainDlg::cb_Allow_Anonymous_i(Fl_Check_Button*, void*) {
-  Changed = true;
-if ( Allow_Anonymous->value() == 1 ){
-Anonymous_Needs_Password->activate();
-}
-else{
-Anonymous_Needs_Password->deactivate();
-};
-}
-void MainDlg::cb_Allow_Anonymous(Fl_Check_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Allow_Anonymous_i(o,v);
-}
-
-void MainDlg::cb_Anonymous_Needs_Password_i(Fl_Check_Button*, void*) {
-  Changed=true;
-}
-void MainDlg::cb_Anonymous_Needs_Password(Fl_Check_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Anonymous_Needs_Password_i(o,v);
-}
-
-void MainDlg::cb_Allow_Asynchronous_Cmds_i(Fl_Check_Button*, void*) {
-  Changed=true;
-}
-void MainDlg::cb_Allow_Asynchronous_Cmds(Fl_Check_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Allow_Asynchronous_Cmds_i(o,v);
-}
-
-void MainDlg::cb_Allow_Pipelining_i(Fl_Check_Button*, void*) {
-  Changed=true;
-}
-void MainDlg::cb_Allow_Pipelining(Fl_Check_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Allow_Pipelining_i(o,v);
-}
-
-void MainDlg::cb_Allow_Store_Cmds_i(Fl_Check_Button*, void*) {
-  Changed=true;
-}
-void MainDlg::cb_Allow_Store_Cmds(Fl_Check_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->parent()->user_data()))->cb_Allow_Store_Cmds_i(o,v);
-}
-
-void MainDlg::cb_ConfTypeDlgLocal_i(Fl_Round_Button*, void*) {
-  ConfType = 1;
-}
-void MainDlg::cb_ConfTypeDlgLocal(Fl_Round_Button* o, void* v) {
-  ((MainDlg*)(o->parent()->parent()->user_data()))->cb_ConfTypeDlgLocal_i(o,v);
-}
-
-void MainDlg::cb_ConfTypeDlgUser_i(Fl_Round_Button*, void*) {
-  ConfType = 2;
-}
-void MainDlg::cb_ConfTypeDlgUser(Fl_Round_Button* o, void* v) {
-  ((MainDlg*)(o->parent()->parent()->user_data()))->cb_ConfTypeDlgUser_i(o,v);
-}
-
-void MainDlg::cb_ConfTypeDlgGlobal_i(Fl_Round_Button*, void*) {
-  ConfType = 3;
-}
-void MainDlg::cb_ConfTypeDlgGlobal(Fl_Round_Button* o, void* v) {
-  
((MainDlg*)(o->parent()->parent()->user_data()))->cb_ConfTypeDlgGlobal_i(o,v);
-}
-
-#include <FL/Fl_Image.H>
-static unsigned char idata_logo[] =
-{118,118,163,251,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,111,111,160,254,112,112,161,254,113,113,161,254,115,115,
-162,254,116,116,163,254,116,116,163,254,115,115,162,254,113,113,161,254,112,112,
-161,254,111,111,160,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,
-159,254,110,110,159,254,110,110,159,254,110,110,159,254,110,110,159,254,118,118,
-163,251,109,109,157,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,103,103,153,255,104,104,155,255,107,107,157,255,111,111,159,255,115,115,
-161,255,117,117,163,255,117,117,163,255,115,115,162,255,112,112,160,255,109,109,
-157,255,106,106,155,255,103,103,154,255,103,103,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,109,109,
-157,255,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,103,103,
-153,255,103,103,154,255,104,104,155,255,106,106,155,255,107,107,156,255,107,107,
-157,255,108,108,157,255,108,108,157,255,108,108,157,255,108,108,157,255,108,108,
-157,255,108,108,157,255,108,108,157,255,108,108,157,255,108,108,157,255,108,108,
-157,255,108,108,157,255,108,108,157,255,108,108,157,255,108,108,157,255,108,108,
-157,255,108,108,157,255,107,107,157,255,107,107,156,255,106,106,155,255,104,104,
-155,255,104,104,154,255,103,103,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,103,103,153,255,104,104,154,255,104,104,
-155,255,106,106,155,255,107,107,156,255,107,107,157,255,108,108,157,255,108,108,
-157,255,108,108,157,255,108,108,157,255,108,108,157,255,108,108,157,255,108,108,
-157,255,108,108,157,255,108,108,157,255,108,108,157,255,108,108,157,255,108,108,
-157,255,108,108,157,255,108,108,157,255,108,108,157,255,108,108,157,255,107,107,
-157,255,109,109,157,255,111,111,158,255,114,114,162,255,121,121,165,255,126,126,
-169,255,130,130,172,255,131,131,173,255,129,129,171,255,123,123,167,255,116,116,
-163,255,110,110,159,255,106,106,155,255,103,103,154,255,103,103,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,103,103,153,255,104,104,
-154,255,106,106,156,255,109,109,157,255,112,112,160,255,116,116,162,255,118,118,
-164,255,120,120,165,255,121,121,165,255,121,121,166,255,121,121,166,255,121,121,
-166,255,121,121,166,255,121,121,166,255,121,121,166,255,121,121,166,255,121,121,
-166,255,121,121,166,255,121,121,166,255,121,121,166,255,121,121,166,255,121,121,
-166,255,121,121,165,255,119,119,164,255,117,117,163,255,113,113,161,255,110,110,
-159,255,107,107,156,255,104,104,155,255,103,103,154,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,103,103,154,255,104,104,155,255,107,107,156,255,110,110,
-159,255,113,113,161,255,117,117,163,255,119,119,164,255,121,121,165,255,121,121,
-166,255,121,121,166,255,121,121,166,255,121,121,166,255,121,121,166,255,121,121,
-166,255,121,121,166,255,121,121,166,255,121,121,166,255,121,121,166,255,121,121,
-166,255,121,121,166,255,121,121,166,255,121,121,166,255,120,120,165,255,119,119,
-164,255,118,118,163,255,120,120,165,255,124,124,168,255,132,132,173,255,155,155,
-189,255,195,195,215,255,197,197,216,255,161,161,193,255,140,140,178,255,129,129,
-171,255,118,118,164,255,111,111,159,255,106,106,155,255,103,103,154,255,103,103,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,103,103,153,255,103,103,153,255,103,103,153,255,103,103,
-153,255,103,103,153,255,103,103,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,103,103,154,255,106,106,
-155,255,110,110,158,255,116,116,162,255,123,123,167,255,129,129,171,255,134,134,
-175,255,137,137,177,255,140,140,178,255,140,140,179,255,140,140,179,255,140,140,
-179,255,140,140,179,255,140,140,179,255,140,140,179,255,140,140,179,255,140,140,
-179,255,140,140,179,255,140,140,179,255,140,140,179,255,140,140,179,255,140,140,
-179,255,139,139,178,255,136,136,176,255,132,132,173,255,126,126,169,255,119,119,
-164,255,113,113,160,255,107,107,157,255,104,104,155,255,103,103,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,103,103,153,255,104,104,155,255,107,107,157,255,113,113,160,255,119,119,
-164,255,126,126,169,255,132,132,173,255,136,136,176,255,139,139,178,255,140,140,
-179,255,140,140,179,255,140,140,179,255,140,140,179,255,140,140,179,255,140,140,
-179,255,140,140,179,255,140,140,179,255,140,140,179,255,140,140,179,255,140,140,
-179,255,140,140,179,255,140,140,179,255,140,140,178,255,139,139,177,255,135,135,
-175,255,133,133,174,255,134,134,174,255,137,137,177,255,155,155,189,255,218,218,
-231,255,249,249,251,255,250,250,251,255,228,228,237,255,175,175,202,255,146,146,
-182,255,131,131,173,255,119,119,164,255,111,111,159,255,106,106,155,255,103,103,
-154,255,103,103,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,103,103,
-153,255,103,103,154,255,104,104,154,255,104,104,155,255,105,105,155,255,105,105,
-155,255,105,105,155,255,104,104,154,255,103,103,154,255,103,103,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,104,104,154,255,108,108,
-157,255,115,115,162,255,125,125,168,255,137,137,176,255,148,148,183,255,156,156,
-189,255,162,162,193,255,165,165,195,255,166,166,195,255,166,166,195,255,166,166,
-195,255,166,166,195,255,166,166,195,255,166,166,195,255,166,166,195,255,166,166,
-195,255,166,166,195,255,166,166,195,255,166,166,195,255,166,166,195,255,166,166,
-195,255,164,164,194,255,160,160,191,255,153,153,187,255,143,143,181,255,132,132,
-173,255,121,121,166,255,113,113,160,255,106,106,156,255,103,103,154,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,103,103,154,255,106,106,156,255,113,113,160,255,121,121,166,255,132,132,
-173,255,143,143,181,255,153,153,187,255,160,160,191,255,164,164,194,255,166,166,
-195,255,166,166,195,255,166,166,195,255,166,166,195,255,166,166,195,255,166,166,
-195,255,166,166,195,255,166,166,195,255,166,166,195,255,166,166,195,255,166,166,
-195,255,166,166,195,255,166,166,195,255,165,165,195,255,163,163,193,255,157,157,
-190,255,152,152,186,255,149,149,184,255,150,150,185,255,173,173,200,255,239,239,
-244,255,255,255,255,255,255,255,255,255,255,255,255,255,234,234,241,255,179,179,
-204,255,148,148,183,255,131,131,173,255,119,119,164,255,110,110,159,255,106,106,
-155,255,103,103,154,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,103,103,
-154,255,105,105,155,255,107,107,156,255,109,109,158,255,111,111,159,255,111,111,
-159,255,110,110,158,255,107,107,157,255,106,106,155,255,104,104,154,255,103,103,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,105,105,155,255,112,112,
-159,255,122,122,166,255,136,136,176,255,228,228,237,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,249,249,251,255,149,149,
-185,255,133,133,174,255,119,119,165,255,110,110,158,255,104,104,155,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,104,104,155,255,110,110,158,255,119,119,165,255,133,133,173,255,149,149,
-185,255,249,249,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,243,243,247,255,162,162,193,255,181,181,206,255,240,240,
-245,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,234,234,
-241,255,179,179,204,255,148,148,183,255,131,131,172,255,119,119,164,255,110,110,
-159,255,106,106,155,255,103,103,154,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,103,103,153,255,104,104,
-155,255,108,108,157,255,113,113,160,255,119,119,163,255,122,122,166,255,122,122,
-166,255,119,119,165,255,115,115,161,255,110,110,159,255,106,106,156,255,103,103,
-154,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,106,106,155,255,114,114,
-161,255,127,127,170,255,145,145,182,255,232,232,240,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,202,202,
-220,255,145,145,182,255,128,128,170,255,115,115,161,255,106,106,156,255,103,103,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,103,103,
-153,255,106,106,156,255,115,115,161,255,127,127,170,255,145,145,182,255,202,202,
-220,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,249,255,171,171,198,255,186,186,209,255,242,242,
-246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,232,232,239,255,179,179,204,255,147,147,183,255,130,130,172,255,118,118,
-164,255,110,110,158,255,106,106,155,255,103,103,154,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,103,103,153,255,104,104,154,255,107,107,
-157,255,114,114,161,255,122,122,166,255,133,133,174,255,163,163,194,255,165,165,
-195,255,136,136,176,255,125,125,169,255,117,117,163,255,110,110,158,255,105,105,
-155,255,103,103,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,106,106,156,255,116,116,
-162,255,131,131,173,255,152,152,186,255,234,234,241,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,236,236,
-242,255,158,158,191,255,137,137,176,255,120,120,165,255,109,109,158,255,104,104,
-154,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,104,104,
-154,255,109,109,157,255,120,120,165,255,136,136,176,255,158,158,191,255,236,236,
-242,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,246,246,249,255,175,175,201,255,189,189,211,255,243,243,
-247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,254,254,254,255,230,230,238,255,179,179,204,255,146,146,183,255,130,130,
-171,255,118,118,163,255,110,110,158,255,105,105,155,255,103,103,154,255,102,102,
-153,255,102,102,153,255,102,102,153,255,103,103,154,255,106,106,156,255,113,113,
-160,255,122,122,167,255,135,135,175,255,157,157,189,255,216,216,229,255,238,238,
-244,255,183,183,206,255,139,139,178,255,126,126,169,255,115,115,161,255,107,107,
-156,255,103,103,154,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,106,106,156,255,117,117,
-163,255,134,134,174,255,157,157,189,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,189,189,210,255,147,147,183,255,127,127,169,255,113,113,160,255,106,106,
-155,255,103,103,153,255,102,102,153,255,102,102,153,255,103,103,153,255,105,105,
-155,255,113,113,160,255,127,127,169,255,146,146,183,255,188,188,210,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,246,246,249,255,176,176,202,255,178,178,203,255,217,217,
-230,255,249,249,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,253,253,254,255,227,227,236,255,177,177,203,255,145,145,
-182,255,129,129,171,255,118,118,163,255,110,110,158,255,105,105,155,255,103,103,
-154,255,103,103,153,255,103,103,154,255,105,105,155,255,110,110,159,255,120,120,
-165,255,134,134,175,255,153,153,187,255,202,202,220,255,249,249,251,255,255,255,
-255,255,231,231,239,255,166,166,195,255,136,136,175,255,121,121,165,255,110,110,
-158,255,104,104,154,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,157,157,190,255,134,134,175,255,118,118,164,255,108,108,
-157,255,103,103,154,255,102,102,153,255,102,102,153,255,103,103,154,255,107,107,
-157,255,118,118,163,255,134,134,175,255,157,157,189,255,221,221,232,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,246,246,248,255,175,175,202,255,168,168,197,255,185,185,
-208,255,236,236,242,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,252,252,253,255,225,225,235,255,174,174,
-201,255,145,145,181,255,128,128,171,255,117,117,163,255,110,110,158,255,105,105,
-155,255,104,104,154,255,105,105,155,255,109,109,157,255,118,118,163,255,131,131,
-172,255,149,149,184,255,190,190,212,255,239,239,244,255,255,255,255,255,255,255,
-255,255,252,252,253,255,222,222,233,255,144,144,181,255,126,126,169,255,113,113,
-160,255,105,105,155,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,250,250,252,255,175,175,201,255,143,143,181,255,124,124,168,255,112,112,
-159,255,104,104,155,255,102,102,153,255,102,102,153,255,104,104,155,255,111,111,
-159,255,124,124,167,255,143,143,180,255,173,173,201,255,250,250,252,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,172,172,200,255,162,162,193,255,170,170,
-199,255,223,223,234,255,253,253,254,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,252,253,255,224,224,
-234,255,171,171,199,255,144,144,181,255,128,128,171,255,117,117,163,255,110,110,
-158,255,107,107,156,255,109,109,157,255,115,115,162,255,127,127,170,255,145,145,
-181,255,177,177,202,255,233,233,240,255,254,254,254,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,151,151,185,255,130,130,171,255,115,115,
-161,255,106,106,155,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,215,215,228,255,154,154,187,255,131,131,173,255,116,116,
-162,255,107,107,156,255,103,103,154,255,103,103,154,255,106,106,156,255,115,115,
-162,255,131,131,172,255,152,152,186,255,209,209,224,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,169,169,197,255,156,156,189,255,158,158,
-191,255,198,198,217,255,242,242,247,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,252,
-253,255,224,224,234,255,170,170,198,255,143,143,181,255,128,128,170,255,118,118,
-163,255,113,113,160,255,115,115,162,255,125,125,168,255,140,140,179,255,166,166,
-195,255,224,224,234,255,253,253,254,255,255,255,255,255,255,255,255,255,255,255,
-255,255,254,254,255,255,240,240,245,255,155,155,188,255,132,132,173,255,116,116,
-162,255,106,106,156,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,164,164,194,255,140,140,178,255,121,121,
-166,255,110,110,158,255,104,104,154,255,104,104,154,255,110,110,158,255,121,121,
-165,255,139,139,177,255,163,163,193,255,240,240,245,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,166,166,196,255,150,150,186,255,149,149,
-185,255,167,167,197,255,222,222,233,255,253,253,254,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,252,252,253,255,224,224,234,255,167,167,197,255,141,141,179,255,128,128,
-170,255,122,122,167,255,126,126,169,255,137,137,177,255,158,158,190,255,210,210,
-225,255,249,249,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,252,252,253,255,232,232,240,255,155,155,189,255,133,133,173,255,116,116,
-162,255,106,106,156,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,236,236,242,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,196,196,216,255,149,149,184,255,128,128,
-170,255,113,113,161,255,106,106,156,255,106,106,156,255,113,113,161,255,127,127,
-170,255,148,148,184,255,195,195,215,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,236,236,242,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,165,165,195,255,146,146,183,255,141,141,
-180,255,150,150,185,255,199,199,218,255,247,247,250,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,252,252,253,255,221,221,232,255,166,166,195,255,141,141,
-179,255,135,135,175,255,140,140,178,255,153,153,187,255,196,196,216,255,244,244,
-248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,252,252,253,255,229,229,238,255,153,153,187,255,131,131,172,255,115,115,
-162,255,106,106,155,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,231,231,239,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,231,231,239,255,159,159,191,255,136,136,
-175,255,119,119,164,255,110,110,158,255,109,109,158,255,118,118,164,255,135,135,
-175,255,158,158,190,255,226,226,235,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,236,236,242,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,163,163,194,255,143,143,181,255,135,135,
-176,255,140,140,179,255,167,167,196,255,224,224,234,255,253,253,254,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,251,251,252,255,211,211,225,255,162,162,
-193,255,149,149,185,255,155,155,189,255,187,187,210,255,239,239,244,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,251,251,252,255,224,224,234,255,149,149,184,255,128,128,170,255,113,113,
-161,255,105,105,155,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,201,201,219,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,176,176,202,255,145,145,
-181,255,125,125,169,255,114,114,161,255,114,114,161,255,125,125,168,255,143,143,
-181,255,175,175,201,255,250,250,252,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,211,211,226,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,163,163,193,255,140,140,179,255,129,129,
-172,255,131,131,173,255,145,145,182,255,187,187,209,255,238,238,243,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,232,232,239,255,180,180,
-205,255,164,164,194,255,183,183,207,255,230,230,238,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,247,247,250,255,199,199,217,255,142,142,180,255,124,124,167,255,111,111,
-159,255,104,104,155,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,182,182,206,255,245,245,248,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,216,216,228,255,154,154,
-188,255,133,133,174,255,121,121,166,255,121,121,165,255,133,133,173,255,154,154,
-187,255,215,215,228,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,250,250,252,255,182,182,206,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,139,139,178,255,125,125,
-169,255,123,123,168,255,134,134,175,255,157,157,190,255,210,210,225,255,250,250,
-252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,254,254,254,255,230,230,238,255,187,187,
-209,255,178,178,204,255,218,218,230,255,252,252,253,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,236,236,242,255,167,167,197,255,134,134,175,255,119,119,164,255,109,109,
-157,255,104,104,154,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,182,182,206,255,216,216,229,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,245,245,248,255,165,165,
-195,255,142,142,180,255,130,130,171,255,130,130,171,255,142,142,179,255,164,164,
-194,255,245,245,248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,216,216,229,255,182,182,206,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,138,138,178,255,122,122,
-167,255,117,117,164,255,125,125,169,255,144,144,181,255,178,178,204,255,229,229,
-238,255,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,254,254,254,255,227,227,236,255,187,187,
-209,255,193,193,213,255,236,236,242,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,244,244,
-248,255,193,193,213,255,143,143,181,255,126,126,169,255,113,113,161,255,106,106,
-156,255,103,103,154,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,182,182,206,255,187,187,209,255,250,250,252,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,203,203,
-220,255,154,154,187,255,140,140,179,255,140,140,179,255,152,152,187,255,196,196,
-216,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,192,192,213,255,182,182,206,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,137,137,177,255,121,121,
-166,255,113,113,161,255,118,118,164,255,135,135,175,255,157,157,190,255,206,206,
-222,255,249,249,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,253,253,254,255,222,222,233,255,184,184,
-208,255,197,197,216,255,238,238,244,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,240,240,245,255,197,197,
-217,255,151,151,186,255,131,131,173,255,118,118,164,255,109,109,158,255,104,104,
-155,255,103,103,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,182,182,206,255,182,182,206,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,236,236,
-242,255,166,166,196,255,154,154,187,255,153,153,187,255,165,165,195,255,226,226,
-235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,236,236,242,255,182,182,206,255,182,182,206,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,137,137,177,255,120,120,
-165,255,110,110,159,255,113,113,161,255,128,128,170,255,149,149,184,255,201,201,
-219,255,250,250,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,252,252,253,255,217,217,230,255,182,182,
-206,255,194,194,214,255,236,236,243,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,254,254,254,255,239,239,244,255,196,196,215,255,153,153,
-187,255,134,134,175,255,121,121,165,255,112,112,159,255,106,106,155,255,103,103,
-154,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,181,181,205,255,178,178,204,255,201,201,219,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,191,191,213,255,169,169,197,255,169,169,197,255,184,184,208,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,206,206,222,255,181,181,205,255,182,182,206,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,137,137,177,255,119,119,
-165,255,109,109,158,255,110,110,159,255,122,122,167,255,142,142,179,255,191,191,
-212,255,248,248,250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,254,254,254,255,232,232,239,255,201,201,
-219,255,211,211,225,255,243,243,247,255,255,255,255,255,255,255,255,255,255,255,
-255,255,254,254,255,255,232,232,239,255,194,194,214,255,155,155,189,255,136,136,
-175,255,122,122,166,255,112,112,160,255,107,107,156,255,104,104,154,255,103,103,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,174,174,201,255,169,169,198,255,176,176,203,255,240,240,
-245,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,221,221,232,255,182,182,206,255,182,182,206,255,216,216,229,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,245,245,
-248,255,179,179,204,255,171,171,199,255,176,176,202,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,137,137,177,255,119,119,
-165,255,108,108,158,255,107,107,157,255,118,118,164,255,135,135,175,255,168,168,
-197,255,228,228,237,255,253,253,254,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,252,253,255,241,241,
-245,255,244,244,248,255,253,253,254,255,255,255,255,255,255,255,255,255,255,255,
-255,255,248,248,251,255,200,200,218,255,158,158,191,255,138,138,177,255,122,122,
-167,255,112,112,160,255,107,107,156,255,104,104,154,255,103,103,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,169,169,197,255,161,161,193,255,166,166,196,255,211,211,
-226,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,250,250,252,255,187,187,209,255,182,182,206,255,245,245,248,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,216,216,
-229,255,169,169,197,255,163,163,194,255,170,170,198,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,137,137,177,255,119,119,
-165,255,108,108,157,255,106,106,155,255,114,114,161,255,128,128,171,255,150,150,
-186,255,202,202,220,255,248,248,250,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,252,
-253,255,224,224,234,255,174,174,200,255,144,144,181,255,126,126,169,255,113,113,
-161,255,107,107,156,255,104,104,154,255,103,103,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,164,164,195,255,154,154,188,255,157,157,189,255,177,177,
-203,255,250,250,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,211,211,226,255,201,201,219,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,185,185,
-208,255,159,159,191,255,156,156,189,255,165,165,195,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,137,137,177,255,119,119,
-165,255,108,108,157,255,104,104,155,255,111,111,159,255,122,122,167,255,141,141,
-179,255,182,182,207,255,241,241,246,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,247,247,
-250,255,194,194,215,255,155,155,188,255,134,134,174,255,118,118,164,255,108,108,
-157,255,104,104,154,255,103,103,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,161,161,192,255,148,148,184,255,148,148,184,255,160,160,
-192,255,221,221,232,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,240,240,245,255,231,231,239,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,231,231,239,255,163,163,
-194,255,150,150,185,255,149,149,185,255,162,162,193,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,137,137,177,255,119,119,
-165,255,107,107,157,255,103,103,154,255,108,108,157,255,117,117,163,255,132,132,
-173,255,158,158,191,255,222,222,233,255,254,254,254,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,251,251,
-253,255,199,199,218,255,147,147,183,255,126,126,169,255,113,113,160,255,106,106,
-155,255,103,103,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,158,158,191,255,143,143,180,255,140,140,179,255,150,150,
-185,255,183,183,206,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,196,196,216,255,153,153,
-187,255,142,142,180,255,144,144,181,255,159,159,191,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,137,137,177,255,119,119,
-165,255,107,107,157,255,103,103,153,255,106,106,155,255,112,112,160,255,124,124,
-167,255,141,141,179,255,186,186,210,255,237,237,243,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,255,244,244,
-247,255,200,200,218,255,143,143,181,255,120,120,165,255,110,110,158,255,104,104,
-155,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,157,157,190,255,139,139,178,255,134,134,174,255,141,141,
-179,255,161,161,192,255,236,236,242,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,245,245,248,255,164,164,195,255,143,143,
-181,255,136,136,175,255,140,140,179,255,157,157,190,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,137,137,177,255,119,119,
-165,255,107,107,157,255,102,102,153,255,104,104,154,255,108,108,157,255,116,116,
-163,255,130,130,172,255,152,152,186,255,196,196,216,255,237,237,243,255,254,254,
-254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,249,249,251,255,226,226,236,255,191,191,
-212,255,152,152,186,255,127,127,170,255,115,115,161,255,107,107,157,255,103,103,
-154,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,156,156,189,255,136,136,176,255,128,128,171,255,133,133,
-174,255,151,151,185,255,208,208,224,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,215,215,228,255,154,154,187,255,136,136,
-175,255,130,130,172,255,137,137,177,255,156,156,189,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,137,137,177,255,119,119,
-165,255,107,107,157,255,102,102,153,255,103,103,154,255,106,106,155,255,111,111,
-159,255,122,122,167,255,140,140,178,255,163,163,193,255,201,201,219,255,240,240,
-245,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,247,247,250,255,217,217,230,255,176,176,203,255,148,148,
-184,255,130,130,172,255,118,118,163,255,110,110,158,255,105,105,155,255,103,103,
-154,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,155,155,189,255,134,134,175,255,124,124,168,255,127,127,
-169,255,141,141,179,255,166,166,195,255,250,250,252,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,175,175,202,255,144,144,181,255,128,128,
-171,255,125,125,169,255,135,135,175,255,156,156,189,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,137,137,177,255,119,119,
-165,255,107,107,157,255,102,102,153,255,103,103,153,255,104,104,154,255,108,108,
-157,255,118,118,164,255,134,134,175,255,156,156,189,255,185,185,208,255,223,223,
-234,255,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,254,254,254,255,224,224,234,255,181,181,206,255,154,154,187,255,134,134,
-175,255,120,120,165,255,111,111,159,255,106,106,156,255,104,104,154,255,103,103,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,155,155,189,255,134,134,174,255,121,121,166,255,121,121,
-165,255,133,133,173,255,155,155,189,255,216,216,229,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,226,226,235,255,158,158,191,255,135,135,175,255,122,122,
-167,255,122,122,166,255,134,134,174,255,155,155,189,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,137,137,177,255,119,119,
-165,255,107,107,157,255,102,102,153,255,102,102,153,255,103,103,154,255,107,107,
-157,255,118,118,163,255,133,133,174,255,155,155,189,255,198,198,217,255,236,236,
-242,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,253,253,254,255,222,222,233,255,167,167,196,255,141,141,179,255,124,124,
-168,255,112,112,160,255,106,106,156,255,104,104,154,255,103,103,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,155,155,189,255,133,133,174,255,119,119,164,255,116,116,
-162,255,125,125,169,255,145,145,182,255,181,181,206,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,196,196,215,255,148,148,184,255,128,128,170,255,118,118,
-163,255,119,119,165,255,133,133,174,255,155,155,189,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,137,137,177,255,119,119,
-165,255,107,107,157,255,102,102,153,255,102,102,153,255,104,104,154,255,109,109,
-157,255,119,119,165,255,136,136,176,255,164,164,194,255,222,222,233,255,253,253,
-253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,254,254,255,255,223,223,234,255,159,159,190,255,132,132,173,255,116,116,
-163,255,107,107,157,255,103,103,154,255,103,103,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,155,155,189,255,133,133,173,255,118,118,163,255,112,112,
-160,255,119,119,165,255,136,136,176,255,160,160,191,255,231,231,239,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,240,240,245,255,163,163,194,255,139,139,178,255,121,121,166,255,113,113,
-161,255,118,118,163,255,133,133,173,255,155,155,189,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,137,137,177,255,119,119,
-165,255,107,107,157,255,102,102,153,255,102,102,153,255,104,104,155,255,110,110,
-159,255,122,122,167,255,142,142,180,255,190,190,211,255,241,241,245,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,248,248,250,255,206,206,222,255,148,148,183,255,125,125,169,255,112,112,
-160,255,105,105,155,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,155,155,189,255,133,133,173,255,117,117,163,255,110,110,
-158,255,114,114,161,255,128,128,171,255,149,149,185,255,196,196,216,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,214,214,228,255,152,152,187,255,131,131,173,255,116,116,162,255,110,110,
-159,255,117,117,163,255,133,133,173,255,155,155,189,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,137,137,177,255,119,119,
-165,255,107,107,157,255,102,102,153,255,102,102,153,255,104,104,155,255,112,112,
-160,255,125,125,169,255,151,151,186,255,221,221,233,255,254,254,254,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,
-254,255,221,221,232,255,166,166,195,255,137,137,176,255,120,120,165,255,109,109,
-157,255,104,104,154,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,107,107,156,255,118,118,
-163,255,135,135,175,255,159,159,191,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,226,226,235,255,155,155,189,255,133,133,173,255,116,116,162,255,107,107,
-157,255,110,110,158,255,122,122,166,255,140,140,178,255,164,164,195,255,245,245,
-248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,250,250,
-252,255,174,174,201,255,143,143,181,255,124,124,168,255,111,111,159,255,108,108,
-157,255,116,116,163,255,133,133,173,255,155,155,189,255,226,226,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,162,162,193,255,137,137,177,255,119,119,
-165,255,107,107,157,255,102,102,153,255,102,102,153,255,105,105,155,255,113,113,
-160,255,127,127,169,255,152,152,187,255,223,223,233,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,
-254,255,211,211,225,255,151,151,186,255,130,130,171,255,115,115,162,255,107,107,
-156,255,103,103,154,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,106,106,156,255,117,117,
-163,255,134,134,174,255,157,157,189,255,236,236,242,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,225,225,235,255,154,154,187,255,131,131,173,255,115,115,162,255,106,106,
-156,255,107,107,156,255,116,116,162,255,131,131,173,255,153,153,187,255,214,214,
-228,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,226,226,
-235,255,157,157,189,255,134,134,175,255,118,118,164,255,108,108,157,255,107,107,
-156,255,115,115,162,255,131,131,173,255,154,154,187,255,225,225,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,160,160,191,255,136,136,176,255,119,119,
-164,255,107,107,157,255,102,102,153,255,102,102,153,255,105,105,155,255,112,112,
-160,255,125,125,168,255,147,147,184,255,212,212,226,255,251,251,252,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,246,246,
-249,255,193,193,214,255,141,141,179,255,122,122,167,255,112,112,159,255,105,105,
-155,255,103,103,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,106,106,156,255,116,116,
-162,255,131,131,173,255,152,152,186,255,234,234,241,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,223,223,233,255,149,149,184,255,129,129,171,255,114,114,161,255,106,106,
-155,255,104,104,155,255,112,112,159,255,124,124,168,255,142,142,180,255,171,171,
-199,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,186,186,
-209,255,145,145,182,255,127,127,169,255,113,113,160,255,106,106,155,255,106,106,
-155,255,114,114,161,255,129,129,171,255,149,149,184,255,223,223,233,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,155,155,188,255,133,133,174,255,118,118,
-163,255,107,107,156,255,102,102,153,255,102,102,153,255,104,104,155,255,110,110,
-159,255,121,121,166,255,138,138,177,255,177,177,203,255,237,237,243,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,244,244,247,255,193,193,
-213,255,150,150,185,255,128,128,171,255,116,116,162,255,107,107,157,255,104,104,
-154,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,106,106,155,255,114,114,
-161,255,127,127,170,255,145,145,182,255,232,232,240,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,219,219,231,255,143,143,180,255,125,125,169,255,113,113,160,255,105,105,
-155,255,103,103,154,255,108,108,157,255,118,118,163,255,132,132,173,255,151,151,
-186,255,222,222,233,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,239,239,245,255,155,155,
-188,255,135,135,175,255,119,119,165,255,109,109,158,255,104,104,154,255,105,105,
-155,255,113,113,160,255,125,125,169,255,143,143,180,255,219,219,231,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,244,244,248,255,148,148,183,255,129,129,171,255,115,115,
-162,255,106,106,156,255,102,102,153,255,102,102,153,255,104,104,154,255,108,108,
-157,255,118,118,163,255,135,135,175,255,167,167,196,255,222,222,233,255,244,244,
-248,255,245,245,248,255,246,246,249,255,239,239,244,255,187,187,210,255,147,147,
-183,255,132,132,173,255,119,119,165,255,110,110,159,255,105,105,155,255,103,103,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,105,105,155,255,112,112,
-159,255,122,122,166,255,136,136,176,255,228,228,237,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,213,213,227,255,134,134,174,255,121,121,165,255,110,110,159,255,104,104,
-155,255,103,103,153,255,106,106,155,255,112,112,160,255,123,123,167,255,137,137,
-177,255,182,182,206,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,196,196,216,255,140,140,
-178,255,125,125,168,255,113,113,161,255,106,106,156,255,103,103,153,255,104,104,
-155,255,110,110,159,255,121,121,165,255,134,134,174,255,213,213,227,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,242,242,246,255,138,138,177,255,123,123,167,255,112,112,
-160,255,106,106,155,255,102,102,153,255,102,102,153,255,103,103,154,255,106,106,
-156,255,112,112,159,255,122,122,166,255,134,134,175,255,152,152,186,255,164,164,
-194,255,168,168,198,255,168,168,198,255,163,163,194,255,140,140,179,255,130,130,
-171,255,120,120,165,255,112,112,160,255,106,106,156,255,104,104,154,255,103,103,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,104,104,154,255,108,108,
-157,255,115,115,162,255,125,125,168,255,137,137,176,255,148,148,183,255,156,156,
-189,255,162,162,193,255,165,165,195,255,166,166,195,255,166,166,195,255,166,166,
-195,255,166,166,195,255,164,164,195,255,161,161,193,255,155,155,188,255,146,146,
-183,255,135,135,175,255,123,123,167,255,114,114,161,255,107,107,157,255,104,104,
-154,255,102,102,153,255,104,104,154,255,108,108,157,255,115,115,161,255,124,124,
-168,255,136,136,175,255,146,146,183,255,155,155,189,255,161,161,193,255,164,164,
-195,255,166,166,195,255,166,166,195,255,166,166,195,255,166,166,195,255,165,165,
-195,255,162,162,193,255,156,156,189,255,148,148,184,255,137,137,177,255,126,126,
-169,255,116,116,162,255,109,109,157,255,104,104,155,255,102,102,153,255,104,104,
-154,255,107,107,157,255,114,114,161,255,123,123,167,255,135,135,175,255,146,146,
-183,255,155,155,188,255,161,161,193,255,164,164,195,255,166,166,195,255,166,166,
-195,255,166,166,195,255,166,166,195,255,165,165,195,255,163,163,193,255,157,157,
-190,255,149,149,184,255,139,139,177,255,126,126,169,255,116,116,163,255,109,109,
-157,255,104,104,155,255,102,102,153,255,102,102,153,255,103,103,153,255,104,104,
-155,255,107,107,157,255,112,112,160,255,119,119,164,255,125,125,169,255,131,131,
-172,255,134,134,174,255,133,133,174,255,130,130,171,255,124,124,167,255,117,117,
-163,255,112,112,159,255,107,107,156,255,104,104,154,255,103,103,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,110,110,159,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,103,103,154,255,106,106,
-155,255,110,110,158,255,116,116,162,255,123,123,167,255,129,129,171,255,134,134,
-175,255,137,137,177,255,140,140,178,255,140,140,179,255,140,140,179,255,140,140,
-179,255,140,140,179,255,140,140,178,255,137,137,177,255,134,134,174,255,128,128,
-171,255,122,122,166,255,115,115,161,255,109,109,158,255,106,106,155,255,103,103,
-154,255,102,102,153,255,103,103,154,255,105,105,155,255,109,109,157,255,114,114,
-161,255,121,121,166,255,128,128,170,255,133,133,174,255,137,137,176,255,139,139,
-178,255,140,140,179,255,140,140,179,255,140,140,179,255,140,140,179,255,140,140,
-178,255,137,137,177,255,134,134,174,255,129,129,171,255,122,122,167,255,115,115,
-162,255,110,110,158,255,106,106,155,255,103,103,154,255,102,102,153,255,103,103,
-154,255,106,106,155,255,109,109,158,255,115,115,161,255,122,122,166,255,128,128,
-171,255,134,134,174,255,137,137,177,255,140,140,178,255,140,140,179,255,140,140,
-179,255,140,140,179,255,140,140,179,255,140,140,178,255,139,139,177,255,135,135,
-175,255,130,130,172,255,124,124,168,255,116,116,163,255,110,110,159,255,106,106,
-156,255,103,103,154,255,102,102,153,255,102,102,153,255,102,102,153,255,103,103,
-154,255,105,105,155,255,107,107,156,255,110,110,159,255,113,113,161,255,116,116,
-163,255,118,118,163,255,117,117,163,255,115,115,162,255,112,112,160,255,109,109,
-157,255,106,106,155,255,104,104,154,255,103,103,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,110,110,
-159,254,108,108,157,254,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,103,103,153,255,104,104,
-154,255,106,106,156,255,109,109,157,255,112,112,160,255,116,116,162,255,118,118,
-164,255,120,120,165,255,121,121,165,255,121,121,166,255,121,121,166,255,121,121,
-166,255,121,121,166,255,121,121,165,255,120,120,165,255,118,118,164,255,115,115,
-162,255,112,112,160,255,108,108,157,255,106,106,155,255,104,104,154,255,103,103,
-153,255,102,102,153,255,102,102,153,255,103,103,154,255,105,105,155,255,107,107,
-157,255,111,111,159,255,115,115,161,255,118,118,163,255,119,119,165,255,121,121,
-165,255,121,121,166,255,121,121,166,255,121,121,166,255,121,121,166,255,121,121,
-165,255,119,119,165,255,118,118,163,255,115,115,162,255,112,112,159,255,108,108,
-157,255,106,106,155,255,104,104,154,255,103,103,153,255,102,102,153,255,103,103,
-153,255,104,104,154,255,106,106,155,255,108,108,157,255,112,112,160,255,115,115,
-162,255,118,118,164,255,120,120,165,255,121,121,165,255,121,121,166,255,121,121,
-166,255,121,121,166,255,121,121,166,255,121,121,166,255,120,120,165,255,119,119,
-164,255,116,116,162,255,113,113,160,255,109,109,158,255,106,106,156,255,104,104,
-155,255,103,103,153,255,102,102,153,255,102,102,153,255,102,102,153,255,103,103,
-153,255,103,103,154,255,104,104,154,255,105,105,155,255,106,106,156,255,107,107,
-156,255,107,107,157,255,107,107,157,255,106,106,156,255,105,105,155,255,104,104,
-154,255,103,103,154,255,103,103,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,108,108,
-157,254,119,119,164,253,111,111,159,255,111,111,159,255,111,111,159,255,111,111,
-159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,
-159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,
-159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,
-159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,159,255,112,112,
-159,255,112,112,160,255,113,113,161,255,114,114,161,255,116,116,162,255,116,116,
-162,255,117,117,163,255,117,117,163,255,117,117,163,255,117,117,163,255,117,117,
-163,255,117,117,163,255,117,117,163,255,117,117,163,255,116,116,162,255,115,115,
-162,255,114,114,161,255,113,113,161,255,112,112,160,255,112,112,159,255,111,111,
-159,255,111,111,159,255,111,111,159,255,112,112,159,255,112,112,160,255,113,113,
-160,255,114,114,161,255,115,115,162,255,116,116,162,255,116,116,162,255,117,117,
-163,255,117,117,163,255,117,117,163,255,117,117,163,255,117,117,163,255,117,117,
-163,255,117,117,163,255,116,116,162,255,115,115,162,255,114,114,161,255,113,113,
-160,255,112,112,160,255,112,112,159,255,111,111,159,255,111,111,159,255,111,111,
-159,255,112,112,159,255,112,112,160,255,113,113,161,255,114,114,161,255,115,115,
-162,255,116,116,162,255,117,117,163,255,117,117,163,255,117,117,163,255,117,117,
-163,255,117,117,163,255,117,117,163,255,117,117,163,255,117,117,163,255,116,116,
-162,255,116,116,162,255,114,114,161,255,113,113,161,255,113,113,160,255,112,112,
-159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,
-159,255,111,111,159,255,111,111,159,255,112,112,159,255,112,112,159,255,112,112,
-159,255,112,112,159,255,112,112,159,255,112,112,159,255,112,112,159,255,111,111,
-159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,
-159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,
-159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,
-159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,
-159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,
-159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,
-159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,
-159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,
-159,255,111,111,159,255,111,111,159,255,111,111,159,255,111,111,159,255,119,119,
-164,253,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,224,224,
-235,255,184,184,207,255,112,112,160,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,184,184,207,255,184,184,207,255,245,245,248,255,255,255,
-255,255,255,255,255,255,255,255,255,255,214,214,228,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,184,184,
-207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,194,194,
-214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,163,163,
-194,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,184,184,207,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,
-255,255,255,255,255,255,255,255,255,255,163,163,194,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,204,204,221,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,163,163,194,255,194,194,214,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,153,153,187,255,102,102,
-153,255,143,143,180,255,214,214,228,255,255,255,255,255,255,255,255,255,204,204,
-221,255,122,122,167,255,102,102,153,255,102,102,153,255,112,112,160,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,214,214,228,255,153,153,187,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,153,153,187,255,102,102,153,255,102,102,153,255,143,143,
-180,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,122,122,167,255,102,102,153,255,102,102,
-153,255,102,102,153,255,133,133,173,255,224,224,235,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,235,235,241,255,143,143,
-180,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,153,153,187,255,224,224,235,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,163,163,194,255,102,102,153,255,102,102,153,255,122,122,167,255,184,184,
-207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,214,214,
-228,255,153,153,187,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,153,153,187,255,102,102,153,255,102,102,153,255,143,143,180,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,194,194,
-214,255,122,122,167,255,102,102,153,255,102,102,153,255,102,102,153,255,133,133,
-173,255,224,224,235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,143,143,180,255,102,102,153,255,133,133,
-173,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,235,235,241,255,112,112,160,255,102,102,153,255,102,102,153,255,235,235,
-241,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,112,112,160,255,102,102,153,255,143,143,
-180,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,235,235,241,255,122,122,167,255,102,102,
-153,255,102,102,153,255,102,102,153,255,112,112,160,255,224,224,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,245,245,
-248,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,224,224,235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,204,204,221,255,102,102,153,255,102,102,153,255,235,235,241,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,245,245,248,255,112,112,160,255,102,102,153,255,143,143,180,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,235,235,241,255,122,122,167,255,102,102,153,255,102,102,153,255,102,102,
-153,255,112,112,160,255,224,224,235,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,204,204,
-221,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,214,214,
-228,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,184,184,207,255,102,102,153,255,143,143,
-180,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,184,184,207,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,122,122,167,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,163,163,194,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,173,173,201,255,102,102,153,255,163,163,194,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,184,184,207,255,102,102,153,255,143,143,180,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,184,184,207,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,122,122,167,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,122,122,167,255,102,102,153,255,102,102,153,255,214,214,
-228,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,112,112,160,255,102,102,153,255,204,204,
-221,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,245,245,248,255,112,112,160,255,143,143,
-180,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,224,224,235,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,194,194,
-214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,235,235,241,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,122,122,167,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,112,112,160,255,102,102,153,255,224,224,235,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,112,112,160,255,143,143,180,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,224,224,235,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,245,245,248,255,102,102,153,255,102,102,153,255,102,102,153,255,184,184,
-207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,173,173,201,255,102,102,153,255,194,194,
-214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,163,163,194,255,143,143,
-180,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,173,173,
-201,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,163,163,194,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,214,214,228,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,224,224,
-235,255,102,102,153,255,143,143,180,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,163,163,194,255,143,143,180,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,173,173,201,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,235,235,241,255,102,102,153,255,102,102,153,255,102,102,153,255,112,112,
-160,255,235,235,241,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,204,204,221,255,102,102,153,255,194,194,
-214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,163,163,
-194,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,214,214,228,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,153,153,187,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,173,173,
-201,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,163,163,194,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,245,245,248,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,112,112,160,255,204,204,221,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,204,204,
-221,255,122,122,167,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,245,245,248,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,184,184,
-207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,122,122,167,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,235,235,241,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,112,112,
-160,255,112,112,160,255,245,245,248,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,204,204,221,255,122,122,
-167,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,133,133,173,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,122,122,167,255,184,184,207,255,235,235,
-241,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,173,173,
-201,255,122,122,167,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,204,204,221,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,112,112,160,255,245,245,
-248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,184,184,207,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,204,204,221,255,102,102,
-153,255,163,163,194,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,173,173,201,255,122,122,
-167,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,204,204,221,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,112,112,160,255,245,245,248,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,133,133,173,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,133,133,
-173,255,112,112,160,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,245,245,248,255,122,122,167,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,245,245,248,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,112,112,160,255,245,245,248,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,163,163,194,255,102,102,
-153,255,214,214,228,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,133,133,173,255,112,112,
-160,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,245,245,248,255,122,122,167,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,133,133,173,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,122,122,167,255,214,214,228,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,235,235,241,255,163,163,194,255,102,102,
-153,255,102,102,153,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,
-255,255,255,255,255,255,184,184,207,255,122,122,167,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,204,204,221,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,163,163,194,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,
-255,255,255,255,255,255,255,255,255,255,245,245,248,255,112,112,160,255,133,133,
-173,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,235,235,241,255,163,163,194,255,102,102,153,255,102,102,
-153,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,184,184,
-207,255,122,122,167,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,204,204,221,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,245,245,248,255,143,143,180,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,194,194,
-214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,173,173,201,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,224,224,235,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,122,122,167,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,184,184,
-207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,173,173,201,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,194,194,
-214,255,122,122,167,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,224,224,235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,
-153,255,102,102,153,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,184,184,207,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,153,153,187,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,143,143,
-180,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,204,204,
-221,255,255,255,255,255,255,255,255,255,153,153,187,255,102,102,153,255,245,245,
-248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,184,184,207,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,153,153,187,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,214,214,228,255,163,163,194,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,143,143,180,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,133,133,
-173,255,102,102,153,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,
-255,255,255,255,255,255,133,133,173,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,204,204,
-221,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,143,143,
-180,255,255,255,255,255,245,245,248,255,102,102,153,255,153,153,187,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,133,133,173,255,102,102,
-153,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,133,133,
-173,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,184,184,
-207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,184,184,
-207,255,122,122,167,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,173,173,
-201,255,102,102,153,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,184,184,207,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,255,255,255,255,214,214,228,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,112,112,160,255,245,245,248,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,122,122,167,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,235,235,241,255,184,184,207,255,102,102,153,255,204,204,221,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,173,173,201,255,102,102,
-153,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,184,184,207,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,214,214,
-228,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,112,112,
-160,255,245,245,248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,235,235,241,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,204,204,
-221,255,102,102,153,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,184,184,207,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,143,143,180,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,163,163,194,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,184,184,207,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,173,173,201,255,122,122,167,255,112,112,160,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,204,204,221,255,102,102,
-153,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,184,184,207,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,143,143,180,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,163,163,194,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,102,102,153,255,122,122,167,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,204,204,221,255,102,102,153,255,102,102,
-153,255,102,102,153,255,245,245,248,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,173,173,
-201,255,102,102,153,255,235,235,241,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,184,184,207,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,214,214,228,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,224,224,235,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,245,245,248,255,112,112,160,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,173,173,201,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,173,173,201,255,102,102,
-153,255,235,235,241,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,184,184,207,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,214,214,228,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,224,224,235,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,122,122,167,255,102,102,153,255,214,214,228,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,112,112,160,255,102,102,
-153,255,112,112,160,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,112,112,
-160,255,112,112,160,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,184,184,207,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,122,122,167,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,143,143,180,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,173,173,201,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,224,224,235,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,112,112,160,255,112,112,
-160,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,184,184,207,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,122,122,167,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,143,143,180,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,122,122,167,255,102,102,153,255,163,163,194,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,133,133,173,255,102,102,
-153,255,163,163,194,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,
-153,255,133,133,173,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,184,184,207,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,194,194,
-214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,235,235,241,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,133,133,173,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,133,133,
-173,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,184,184,207,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,122,122,167,255,102,102,153,255,102,102,153,255,224,224,
-235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,245,245,248,255,102,102,153,255,102,102,
-153,255,224,224,235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,245,245,248,255,112,112,160,255,102,102,
-153,255,173,173,201,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,184,184,207,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,122,122,
-167,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,122,122,
-167,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,143,143,180,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,245,245,248,255,112,112,160,255,102,102,153,255,173,173,
-201,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,184,184,207,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,122,122,167,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,122,122,167,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,122,122,167,255,102,102,153,255,102,102,153,255,122,122,
-167,255,235,235,241,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,143,143,180,255,102,102,153,255,194,194,
-214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,143,143,180,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,184,184,207,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,194,194,
-214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,245,245,248,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,143,143,180,255,102,102,153,255,102,102,153,255,184,184,
-207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,184,184,207,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,184,184,207,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,122,122,167,255,102,102,153,255,102,102,153,255,102,102,
-153,255,112,112,160,255,184,184,207,255,255,255,255,255,255,255,255,255,255,255,
-255,255,184,184,207,255,133,133,173,255,133,133,173,255,214,214,228,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,204,204,
-221,255,184,184,207,255,143,143,180,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,143,143,180,255,224,224,235,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,214,214,
-228,255,184,184,207,255,122,122,167,255,102,102,153,255,102,102,153,255,102,102,
-153,255,214,214,228,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,173,173,201,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,173,173,201,255,194,194,
-214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,122,122,167,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,245,245,248,255,112,112,160,255,102,102,
-153,255,153,153,187,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,204,204,221,255,184,184,
-207,255,143,143,180,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,143,143,180,255,224,224,235,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,214,214,228,255,184,184,
-207,255,122,122,167,255,102,102,153,255,102,102,153,255,102,102,153,255,214,214,
-228,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,173,173,201,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,173,173,201,255,194,194,214,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,122,122,167,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,194,194,
-214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,184,184,207,255,184,184,207,255,143,143,
-180,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,163,163,194,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,235,235,241,255,255,255,255,255,255,255,255,255,255,255,255,255,184,184,
-207,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,112,112,160,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,122,122,167,255,214,214,228,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,163,163,194,255,102,102,
-153,255,194,194,214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,194,194,214,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,235,235,
-241,255,255,255,255,255,255,255,255,255,184,184,207,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,112,112,160,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,194,194,214,255,102,102,
-153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,153,255,102,102,
-153,255,122,122,167,255,214,214,228,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,240,255,255,255,244,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,244,255,255,255,225,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,
-255,225};
-static Fl_RGB_Image image_logo(idata_logo, 150, 80, 4, 0);
-
-void MainDlg::cb_OK_i(Fl_Return_Button*, void*) {
-  AboutDlg->hide();
-}
-void MainDlg::cb_OK(Fl_Return_Button* o, void* v) {
-  ((MainDlg*)(o->parent()->user_data()))->cb_OK_i(o,v);
-}
-
-Fl_Double_Window* MainDlg::make_window() {
-  { ConfDlg = new Fl_Double_Window(550, 360, ctrl_gettext("MyServer 
Configure"));
-    ConfDlg->callback((Fl_Callback*)cb_ConfDlg, (void*)(this));
-    { Fl_Menu_Bar* o = new Fl_Menu_Bar(0, 0, 550, 25);
-      o->menu(menu_);
-    } // Fl_Menu_Bar* o
-    { Fl_Tabs* o = new Fl_Tabs(0, 25, 635, 335);
-      { Fl_Group* o = new Fl_Group(0, 50, 550, 310, ctrl_gettext("System"));
-        { Buffer_Size = new Fl_Value_Input(295, 60, 115, 25, 
ctrl_gettext("Memory buffer (in bytes):"));
-          Buffer_Size->maximum(5.24288e+06);
-          Buffer_Size->step(1);
-          Buffer_Size->callback((Fl_Callback*)cb_Buffer_Size);
-        } // Fl_Value_Input* Buffer_Size
-        { Verbosity = new Fl_Choice(295, 90, 115, 25, ctrl_gettext("Verbosity 
level:"));
-          Verbosity->down_box(FL_BORDER_BOX);
-          Verbosity->callback((Fl_Callback*)cb_Verbosity);
-          Verbosity->when(FL_WHEN_CHANGED);
-          Verbosity->menu(menu_Verbosity);
-        } // Fl_Choice* Verbosity
-        { Max_Log_File_Size = new Fl_Value_Input(295, 120, 115, 25, 
ctrl_gettext("Max log file size (in bytes):"));
-          Max_Log_File_Size->maximum(5.24288e+07);
-          Max_Log_File_Size->step(1);
-          Max_Log_File_Size->callback((Fl_Callback*)cb_Max_Log_File_Size);
-        } // Fl_Value_Input* Max_Log_File_Size
-        { Nthreads_Static = new Fl_Value_Input(295, 150, 115, 30, 
ctrl_gettext("Always active threads:"));
-          Nthreads_Static->maximum(1000);
-          Nthreads_Static->step(1);
-          Nthreads_Static->callback((Fl_Callback*)cb_Nthreads_Static);
-        } // Fl_Value_Input* Nthreads_Static
-        { Nthreads_Max = new Fl_Value_Input(295, 185, 115, 25, 
ctrl_gettext("Maximum number of threads:"));
-          Nthreads_Max->maximum(1000);
-          Nthreads_Max->step(1);
-          Nthreads_Max->callback((Fl_Callback*)cb_Nthreads_Max);
-        } // Fl_Value_Input* Nthreads_Max
-        { Language = new Fl_Choice(295, 215, 115, 25, 
ctrl_gettext("Language:"));
-          Language->down_box(FL_BORDER_BOX);
-          Language->callback((Fl_Callback*)cb_Language);
-          Language->when(FL_WHEN_CHANGED);
-        } // Fl_Choice* Language
-        o->end();
-      } // Fl_Group* o
-      { Fl_Group* o = new Fl_Group(0, 50, 550, 310, ctrl_gettext("Server"));
-        o->hide();
-        { Connection_Timeout = new Fl_Value_Input(295, 60, 115, 25, 
ctrl_gettext("Connection time-out (in sec):"));
-          Connection_Timeout->maximum(3600);
-          Connection_Timeout->step(1);
-          Connection_Timeout->callback((Fl_Callback*)cb_Connection_Timeout);
-        } // Fl_Value_Input* Connection_Timeout
-        { Max_Connections = new Fl_Value_Input(295, 90, 115, 25, 
ctrl_gettext("Max connections:"));
-          Max_Connections->maximum(5.24288e+06);
-          Max_Connections->step(1);
-          Max_Connections->callback((Fl_Callback*)cb_Max_Connections);
-        } // Fl_Value_Input* Max_Connections
-        { Gzip_Threshold = new Fl_Value_Input(295, 120, 115, 25, 
ctrl_gettext("Gzip compression threshold (in bytes):"));
-          Gzip_Threshold->maximum(5.24288e+06);
-          Gzip_Threshold->step(1);
-          Gzip_Threshold->callback((Fl_Callback*)cb_Gzip_Threshold);
-        } // Fl_Value_Input* Gzip_Threshold
-        { Browsefolder_Css = new Fl_Input(295, 150, 115, 25, 
ctrl_gettext("Stylesheet:"));
-          Browsefolder_Css->callback((Fl_Callback*)cb_Browsefolder_Css);
-          Browsefolder_Css->when(FL_WHEN_CHANGED);
-        } // Fl_Input* Browsefolder_Css
-        { Fl_Button* o = new Fl_Button(420, 150, 85, 25, 
ctrl_gettext("Browse..."));
-          o->callback((Fl_Callback*)cb_Browse);
-        } // Fl_Button* o
-        { Use_Errors_Files = new Fl_Check_Button(295, 180, 25, 25, 
ctrl_gettext("Personalized error pages:"));
-          Use_Errors_Files->down_box(FL_DOWN_BOX);
-          Use_Errors_Files->callback((Fl_Callback*)cb_Use_Errors_Files);
-          Use_Errors_Files->align(FL_ALIGN_LEFT);
-          Use_Errors_Files->when(FL_WHEN_CHANGED);
-        } // Fl_Check_Button* Use_Errors_Files
-        { Fl_Group* o = new Fl_Group(115, 205, 345, 145, ctrl_gettext("Default 
file names:"));
-          o->tooltip(ctrl_gettext("Default file to send in a directory when 
none is specified"));
-          o->box(FL_ENGRAVED_BOX);
-          o->align(FL_ALIGN_TOP|FL_ALIGN_INSIDE);
-          { Default_Filename = new Fl_Browser(135, 230, 195, 105);
-            Default_Filename->type(2);
-          } // Fl_Browser* Default_Filename
-          { Fl_Button* o = new Fl_Button(350, 230, 85, 25, 
ctrl_gettext("Add..."));
-            o->callback((Fl_Callback*)cb_Add);
-          } // Fl_Button* o
-          { Fl_Button* o = new Fl_Button(350, 265, 85, 25, 
ctrl_gettext("Remove"));
-            o->callback((Fl_Callback*)cb_Remove1);
-          } // Fl_Button* o
-          o->end();
-        } // Fl_Group* o
-        o->end();
-      } // Fl_Group* o
-      { Fl_Group* o = new Fl_Group(0, 50, 550, 310, ctrl_gettext("MIME"));
-        o->hide();
-        { Fl_Group* o = new Fl_Group(10, 60, 530, 290);
-          o->box(FL_ENGRAVED_FRAME);
-          { Fl_Group* o = new Fl_Group(20, 70, 195, 270, 
ctrl_gettext("Extension:"));
-            o->box(FL_ENGRAVED_FRAME);
-            o->align(FL_ALIGN_TOP|FL_ALIGN_INSIDE);
-            { Ext = new Fl_Browser(31, 95, 170, 190);
-              Ext->type(2);
-              Ext->callback((Fl_Callback*)cb_Ext);
-            } // Fl_Browser* Ext
-            { Fl_Button* o = new Fl_Button(30, 300, 80, 25, 
ctrl_gettext("Add..."));
-              o->callback((Fl_Callback*)cb_Add1);
-            } // Fl_Button* o
-            { Fl_Button* o = new Fl_Button(120, 300, 80, 25, 
ctrl_gettext("Remove"));
-              o->callback((Fl_Callback*)cb_Remove2);
-            } // Fl_Button* o
-            o->end();
-          } // Fl_Group* o
-          { Mime = new Fl_Choice(310, 95, 220, 25, ctrl_gettext("MIME Type:"));
-            Mime->down_box(FL_BORDER_BOX);
-            Mime->callback((Fl_Callback*)cb_Mime);
-            Mime->when(FL_WHEN_CHANGED);
-          } // Fl_Choice* Mime
-          { Fl_Button* o = new Fl_Button(310, 125, 90, 25, 
ctrl_gettext("Add..."));
-            o->callback((Fl_Callback*)cb_Add2);
-          } // Fl_Button* o
-          { Cmd = new Fl_Choice(310, 165, 220, 25, ctrl_gettext("Action:"));
-            Cmd->down_box(FL_BORDER_BOX);
-            Cmd->callback((Fl_Callback*)cb_Cmd);
-            Cmd->when(FL_WHEN_CHANGED);
-            Cmd->menu(menu_Cmd);
-          } // Fl_Choice* Cmd
-          { Manager = new Fl_Input(310, 205, 220, 25, 
ctrl_gettext("Manager:"));
-            Manager->callback((Fl_Callback*)cb_Manager);
-          } // Fl_Input* Manager
-          { ManagerButton = new Fl_Button(310, 235, 90, 25, 
ctrl_gettext("Browse..."));
-            ManagerButton->callback((Fl_Callback*)cb_ManagerButton);
-          } // Fl_Button* ManagerButton
-          o->end();
-        } // Fl_Group* o
-        o->end();
-      } // Fl_Group* o
-      { Fl_Group* o = new Fl_Group(0, 50, 635, 310, ctrl_gettext("Hosts"));
-        o->hide();
-        { Fl_Group* o = new Fl_Group(10, 60, 530, 45);
-          o->box(FL_ENGRAVED_FRAME);
-          { Name = new Fl_Choice(75, 70, 275, 25, ctrl_gettext("Name:"));
-            Name->down_box(FL_BORDER_BOX);
-            Name->callback((Fl_Callback*)cb_Name);
-            Name->when(FL_WHEN_CHANGED);
-          } // Fl_Choice* Name
-          { Fl_Button* o = new Fl_Button(360, 70, 80, 25, 
ctrl_gettext("Add..."));
-            o->callback((Fl_Callback*)cb_Add3);
-          } // Fl_Button* o
-          { Fl_Button* o = new Fl_Button(450, 70, 80, 25, 
ctrl_gettext("Remove"));
-            o->callback((Fl_Callback*)cb_Remove3);
-          } // Fl_Button* o
-          o->end();
-        } // Fl_Group* o
-        { Fl_Group* o = new Fl_Group(10, 110, 625, 240);
-          o->box(FL_ENGRAVED_FRAME);
-          { Fl_Tabs* o = new Fl_Tabs(19, 120, 616, 225);
-            { Fl_Group* o = new Fl_Group(20, 145, 510, 195, 
ctrl_gettext("Protocol"));
-              o->hide();
-              { Protocol = new Fl_Choice(180, 155, 215, 25, 
ctrl_gettext("Protocol:"));
-                Protocol->down_box(FL_BORDER_BOX);
-                Protocol->callback((Fl_Callback*)cb_Protocol);
-                Protocol->when(FL_WHEN_CHANGED);
-                Protocol->menu(menu_Protocol);
-              } // Fl_Choice* Protocol
-              { Ssl_Privatekey = new Fl_Input(180, 185, 215, 25, 
ctrl_gettext("SSL private key:"));
-                Ssl_Privatekey->callback((Fl_Callback*)cb_Ssl_Privatekey);
-                Ssl_Privatekey->when(FL_WHEN_CHANGED);
-                Ssl_Privatekey->deactivate();
-              } // Fl_Input* Ssl_Privatekey
-              { Ssl_Certificate = new Fl_Input(180, 215, 215, 25, 
ctrl_gettext("SSL certificate:"));
-                Ssl_Certificate->callback((Fl_Callback*)cb_Ssl_Certificate);
-                Ssl_Certificate->when(FL_WHEN_CHANGED);
-                Ssl_Certificate->deactivate();
-              } // Fl_Input* Ssl_Certificate
-              { Ssl_Password = new Fl_Input(180, 245, 215, 25, 
ctrl_gettext("SSL password:"));
-                Ssl_Password->type(5);
-                Ssl_Password->callback((Fl_Callback*)cb_Ssl_Password);
-                Ssl_Password->when(FL_WHEN_CHANGED);
-                Ssl_Password->deactivate();
-              } // Fl_Input* Ssl_Password
-              { SslButton1 = new Fl_Button(405, 185, 85, 25, 
ctrl_gettext("Browse..."));
-                SslButton1->callback((Fl_Callback*)cb_SslButton1);
-                SslButton1->deactivate();
-              } // Fl_Button* SslButton1
-              { SslButton2 = new Fl_Button(405, 215, 85, 25, 
ctrl_gettext("Browse..."));
-                SslButton2->callback((Fl_Callback*)cb_SslButton2);
-                SslButton2->deactivate();
-              } // Fl_Button* SslButton2
-              o->end();
-            } // Fl_Group* o
-            { Fl_Group* o = new Fl_Group(20, 145, 510, 195, 
ctrl_gettext("Arpa"));
-              o->hide();
-              { Host = new Fl_Browser(30, 165, 170, 135, ctrl_gettext("Host"));
-                Host->type(2);
-                Host->align(FL_ALIGN_TOP);
-              } // Fl_Browser* Host
-              { Ip = new Fl_Browser(210, 165, 170, 135, ctrl_gettext("IP"));
-                Ip->type(2);
-                Ip->align(FL_ALIGN_TOP);
-              } // Fl_Browser* Ip
-              { Fl_Button* o = new Fl_Button(30, 305, 80, 25, 
ctrl_gettext("Add..."));
-                o->callback((Fl_Callback*)cb_Add4);
-              } // Fl_Button* o
-              { Fl_Button* o = new Fl_Button(120, 305, 80, 25, 
ctrl_gettext("Remove"));
-                o->callback((Fl_Callback*)cb_Remove4);
-              } // Fl_Button* o
-              { Fl_Button* o = new Fl_Button(210, 305, 80, 25, 
ctrl_gettext("Add..."));
-                o->callback((Fl_Callback*)cb_Add5);
-              } // Fl_Button* o
-              { Fl_Button* o = new Fl_Button(300, 305, 80, 25, 
ctrl_gettext("Remove"));
-                o->callback((Fl_Callback*)cb_Remove5);
-              } // Fl_Button* o
-              { Port = new Fl_Value_Input(435, 165, 65, 25, 
ctrl_gettext("Port:"));
-                Port->maximum(10240);
-                Port->step(1);
-                Port->callback((Fl_Callback*)cb_Port);
-              } // Fl_Value_Input* Port
-              o->end();
-            } // Fl_Group* o
-            { Fl_Group* o = new Fl_Group(25, 140, 510, 195, ctrl_gettext("HTTP 
Services"));
-              o->hide();
-              { Fl_Box* o = new Fl_Box(45, 150, 115, 25, 
ctrl_gettext("Enable:"));
-                o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
-              } // Fl_Box* o
-              { Allow_CGI = new Fl_Check_Button(65, 175, 20, 25, 
ctrl_gettext("CGI"));
-                Allow_CGI->down_box(FL_DOWN_BOX);
-                Allow_CGI->callback((Fl_Callback*)cb_Allow_CGI);
-                Allow_CGI->align(FL_ALIGN_RIGHT);
-                Allow_CGI->when(FL_WHEN_CHANGED);
-              } // Fl_Check_Button* Allow_CGI
-              { Allow_ISAPI = new Fl_Check_Button(65, 195, 20, 25, 
ctrl_gettext("ISAPI"));
-                Allow_ISAPI->down_box(FL_DOWN_BOX);
-                Allow_ISAPI->callback((Fl_Callback*)cb_Allow_ISAPI);
-                Allow_ISAPI->align(FL_ALIGN_RIGHT);
-                Allow_ISAPI->when(FL_WHEN_CHANGED);
-              } // Fl_Check_Button* Allow_ISAPI
-              { Allow_MSCGI = new Fl_Check_Button(65, 215, 20, 25, 
ctrl_gettext("MSCGI"));
-                Allow_MSCGI->down_box(FL_DOWN_BOX);
-                Allow_MSCGI->callback((Fl_Callback*)cb_Allow_MSCGI);
-                Allow_MSCGI->align(FL_ALIGN_RIGHT);
-                Allow_MSCGI->when(FL_WHEN_CHANGED);
-              } // Fl_Check_Button* Allow_MSCGI
-              { Allow_WINCGI = new Fl_Check_Button(65, 235, 20, 25, 
ctrl_gettext("WINCGI"));
-                Allow_WINCGI->down_box(FL_DOWN_BOX);
-                Allow_WINCGI->callback((Fl_Callback*)cb_Allow_WINCGI);
-                Allow_WINCGI->align(FL_ALIGN_RIGHT);
-                Allow_WINCGI->when(FL_WHEN_CHANGED);
-              } // Fl_Check_Button* Allow_WINCGI
-              { Allow_FASTCGI = new Fl_Check_Button(65, 255, 20, 25, 
ctrl_gettext("FASTCGI"));
-                Allow_FASTCGI->down_box(FL_DOWN_BOX);
-                Allow_FASTCGI->callback((Fl_Callback*)cb_Allow_FASTCGI);
-                Allow_FASTCGI->align(FL_ALIGN_RIGHT);
-                Allow_FASTCGI->when(FL_WHEN_CHANGED);
-              } // Fl_Check_Button* Allow_FASTCGI
-              { Allow_SCGI = new Fl_Check_Button(235, 175, 20, 25, 
ctrl_gettext("SCGI"));
-                Allow_SCGI->down_box(FL_DOWN_BOX);
-                Allow_SCGI->callback((Fl_Callback*)cb_Allow_SCGI);
-                Allow_SCGI->align(FL_ALIGN_RIGHT);
-                Allow_SCGI->when(FL_WHEN_CHANGED);
-              } // Fl_Check_Button* Allow_SCGI
-              { Allow_SEND_LINK = new Fl_Check_Button(235, 195, 20, 25, 
ctrl_gettext("SEND LINK"));
-                Allow_SEND_LINK->down_box(FL_DOWN_BOX);
-                Allow_SEND_LINK->callback((Fl_Callback*)cb_Allow_SEND_LINK);
-                Allow_SEND_LINK->align(FL_ALIGN_RIGHT);
-                Allow_SEND_LINK->when(FL_WHEN_CHANGED);
-              } // Fl_Check_Button* Allow_SEND_LINK
-              { Allow_EXTERNAL_COMMANDS = new Fl_Check_Button(235, 215, 20, 
25, ctrl_gettext("EXTERNAL COMMANDS"));
-                Allow_EXTERNAL_COMMANDS->down_box(FL_DOWN_BOX);
-                
Allow_EXTERNAL_COMMANDS->callback((Fl_Callback*)cb_Allow_EXTERNAL_COMMANDS);
-                Allow_EXTERNAL_COMMANDS->align(FL_ALIGN_RIGHT);
-                Allow_EXTERNAL_COMMANDS->when(FL_WHEN_CHANGED);
-              } // Fl_Check_Button* Allow_EXTERNAL_COMMANDS
-              { Allow_SEND_FILE = new Fl_Check_Button(235, 235, 20, 25, 
ctrl_gettext("SEND FILE"));
-                Allow_SEND_FILE->down_box(FL_DOWN_BOX);
-                Allow_SEND_FILE->callback((Fl_Callback*)cb_Allow_SEND_FILE);
-                Allow_SEND_FILE->align(FL_ALIGN_RIGHT);
-                Allow_SEND_FILE->when(FL_WHEN_CHANGED);
-              } // Fl_Check_Button* Allow_SEND_FILE
-              o->end();
-            } // Fl_Group* o
-            { Fl_Group* o = new Fl_Group(20, 145, 510, 195, 
ctrl_gettext("Directories"));
-              o->hide();
-              { Docroot = new Fl_Input(180, 155, 215, 25, 
ctrl_gettext("Document root:"));
-                Docroot->callback((Fl_Callback*)cb_Docroot);
-                Docroot->when(FL_WHEN_CHANGED);
-              } // Fl_Input* Docroot
-              { Sysfolder = new Fl_Input(180, 185, 215, 25, 
ctrl_gettext("System folder:"));
-                Sysfolder->callback((Fl_Callback*)cb_Sysfolder);
-                Sysfolder->when(FL_WHEN_CHANGED);
-              } // Fl_Input* Sysfolder
-              { Fl_Button* o = new Fl_Button(405, 155, 85, 25, 
ctrl_gettext("Browse..."));
-                o->callback((Fl_Callback*)cb_Browse1);
-              } // Fl_Button* o
-              { Fl_Button* o = new Fl_Button(405, 185, 85, 25, 
ctrl_gettext("Browse..."));
-                o->callback((Fl_Callback*)cb_Browse2);
-              } // Fl_Button* o
-              o->end();
-            } // Fl_Group* o
-            { Fl_Group* o = new Fl_Group(20, 145, 510, 195, 
ctrl_gettext("Logs"));
-              { Accesseslog = new Fl_Input(180, 155, 215, 25, 
ctrl_gettext("Accesses log file:"));
-                Accesseslog->callback((Fl_Callback*)cb_Accesseslog);
-                Accesseslog->when(FL_WHEN_CHANGED);
-              } // Fl_Input* Accesseslog
-              { Warninglog = new Fl_Input(180, 185, 215, 25, 
ctrl_gettext("Warning log file:"));
-                Warninglog->callback((Fl_Callback*)cb_Warninglog);
-                Warninglog->when(FL_WHEN_CHANGED);
-              } // Fl_Input* Warninglog
-              o->end();
-            } // Fl_Group* o
-            o->end();
-          } // Fl_Tabs* o
-          o->end();
-        } // Fl_Group* o
-        o->end();
-      } // Fl_Group* o
-      { Fl_Group* o = new Fl_Group(0, 50, 550, 310, 
ctrl_gettext("Administrator"));
-        o->hide();
-        { Server_Admin = new Fl_Input(295, 60, 190, 25, 
ctrl_gettext("Administrator e-mail:"));
-          Server_Admin->callback((Fl_Callback*)cb_Server_Admin);
-          Server_Admin->when(FL_WHEN_CHANGED);
-        } // Fl_Input* Server_Admin
-        { Control_Admin = new Fl_Input(295, 90, 190, 25, 
ctrl_gettext("Administrator user name:"));
-          Control_Admin->callback((Fl_Callback*)cb_Control_Admin);
-          Control_Admin->when(FL_WHEN_CHANGED);
-          Control_Admin->deactivate();
-        } // Fl_Input* Control_Admin
-        { Control_Password = new Fl_Input(295, 120, 190, 25, 
ctrl_gettext("Administrator password:"));
-          Control_Password->type(5);
-          Control_Password->callback((Fl_Callback*)cb_Control_Password);
-          Control_Password->when(FL_WHEN_CHANGED);
-          Control_Password->deactivate();
-        } // Fl_Input* Control_Password
-        { Control_Enabled = new Fl_Check_Button(295, 150, 25, 25, 
ctrl_gettext("Enable control protocol:"));
-          Control_Enabled->down_box(FL_DOWN_BOX);
-          Control_Enabled->callback((Fl_Callback*)cb_Control_Enabled);
-          Control_Enabled->align(FL_ALIGN_LEFT);
-          Control_Enabled->when(FL_WHEN_CHANGED);
-        } // Fl_Check_Button* Control_Enabled
-        o->end();
-      } // Fl_Group* o
-      { Fl_Group* o = new Fl_Group(0, 56, 549, 293, ctrl_gettext("FTP 
Services"));
-        o->hide();
-        { Fl_Box* o = new Fl_Box(3, 59, 115, 25, ctrl_gettext("Enable:"));
-          o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
-        } // Fl_Box* o
-        { Allow_Anonymous = new Fl_Check_Button(3, 97, 20, 25, 
ctrl_gettext("Anonymous Access"));
-          Allow_Anonymous->down_box(FL_DOWN_BOX);
-          Allow_Anonymous->callback((Fl_Callback*)cb_Allow_Anonymous);
-          Allow_Anonymous->align(FL_ALIGN_RIGHT);
-        } // Fl_Check_Button* Allow_Anonymous
-        { Anonymous_Needs_Password = new Fl_Check_Button(269, 97, 20, 24, 
ctrl_gettext("Anonymous Needs Password"));
-          Anonymous_Needs_Password->down_box(FL_DOWN_BOX);
-          
Anonymous_Needs_Password->callback((Fl_Callback*)cb_Anonymous_Needs_Password);
-          Anonymous_Needs_Password->align(FL_ALIGN_RIGHT);
-        } // Fl_Check_Button* Anonymous_Needs_Password
-        { Allow_Asynchronous_Cmds = new Fl_Check_Button(3, 161, 19, 22, 
ctrl_gettext("Asynchronous Commands"));
-          Allow_Asynchronous_Cmds->down_box(FL_DOWN_BOX);
-          
Allow_Asynchronous_Cmds->callback((Fl_Callback*)cb_Allow_Asynchronous_Cmds);
-          Allow_Asynchronous_Cmds->align(FL_ALIGN_RIGHT);
-        } // Fl_Check_Button* Allow_Asynchronous_Cmds
-        { Allow_Pipelining = new Fl_Check_Button(3, 222, 21, 22, 
ctrl_gettext("Pipelining"));
-          Allow_Pipelining->down_box(FL_DOWN_BOX);
-          Allow_Pipelining->callback((Fl_Callback*)cb_Allow_Pipelining);
-          Allow_Pipelining->align(FL_ALIGN_RIGHT);
-        } // Fl_Check_Button* Allow_Pipelining
-        { Allow_Store_Cmds = new Fl_Check_Button(3, 284, 20, 26, 
ctrl_gettext("Write Commands"));
-          Allow_Store_Cmds->down_box(FL_DOWN_BOX);
-          Allow_Store_Cmds->callback((Fl_Callback*)cb_Allow_Store_Cmds);
-          Allow_Store_Cmds->align(FL_ALIGN_RIGHT);
-        } // Fl_Check_Button* Allow_Store_Cmds
-        o->end();
-      } // Fl_Group* o
-      o->end();
-    } // Fl_Tabs* o
-    ConfDlg->end();
-  } // Fl_Double_Window* ConfDlg
-  // Set FLTK function's text
-  fl_ok = ctrl_gettext("OK");
-  fl_cancel = ctrl_gettext("Cancel");
-  return ConfDlg;
-}
-
-Fl_Double_Window* MainDlg::make_type() {
-  { ConfTypeDlg = new Fl_Double_Window(303, 152, ctrl_gettext("Chose 
Location"));
-    ConfTypeDlg->user_data((void*)(this));
-    ConfTypeDlg->align(FL_ALIGN_CENTER);
-    { Fl_Group* o = new Fl_Group(0, 0, 305, 100, ctrl_gettext("Chose 
configuration file location:"));
-      o->align(FL_ALIGN_TOP|FL_ALIGN_INSIDE);
-      { ConfTypeDlgLocal = new Fl_Round_Button(105, 25, 70, 25, 
ctrl_gettext("Local"));
-        ConfTypeDlgLocal->tooltip(ctrl_gettext("Configuration files located in 
current directory"));
-        ConfTypeDlgLocal->type(102);
-        ConfTypeDlgLocal->down_box(FL_ROUND_DOWN_BOX);
-        ConfTypeDlgLocal->callback((Fl_Callback*)cb_ConfTypeDlgLocal);
-      } // Fl_Round_Button* ConfTypeDlgLocal
-      { ConfTypeDlgUser = new Fl_Round_Button(105, 45, 70, 25, 
ctrl_gettext("User"));
-        ConfTypeDlgUser->tooltip(ctrl_gettext("Configuration files located in 
~/.myserver"));
-        ConfTypeDlgUser->type(102);
-        ConfTypeDlgUser->down_box(FL_ROUND_DOWN_BOX);
-        ConfTypeDlgUser->callback((Fl_Callback*)cb_ConfTypeDlgUser);
-      } // Fl_Round_Button* ConfTypeDlgUser
-      { ConfTypeDlgGlobal = new Fl_Round_Button(105, 65, 70, 25, 
ctrl_gettext("Global"));
-        ConfTypeDlgGlobal->tooltip(ctrl_gettext("Configuration files located 
in /etc/myserver"));
-        ConfTypeDlgGlobal->type(102);
-        ConfTypeDlgGlobal->down_box(FL_ROUND_DOWN_BOX);
-        ConfTypeDlgGlobal->callback((Fl_Callback*)cb_ConfTypeDlgGlobal);
-      } // Fl_Round_Button* ConfTypeDlgGlobal
-      o->end();
-    } // Fl_Group* o
-    { ConfTypeDlgOK = new Fl_Return_Button(65, 108, 65, 30, 
ctrl_gettext("OK"));
-    } // Fl_Return_Button* ConfTypeDlgOK
-    { ConfTypeDlgCancel = new Fl_Button(165, 110, 65, 30, 
ctrl_gettext("Cancel"));
-    } // Fl_Button* ConfTypeDlgCancel
-    ConfTypeDlg->set_modal();
-    ConfTypeDlg->end();
-  } // Fl_Double_Window* ConfTypeDlg
-  return ConfTypeDlg;
-}
-
-Fl_Double_Window* MainDlg::make_about() {
-  { AboutDlg = new Fl_Double_Window(595, 115, ctrl_gettext("About"));
-    AboutDlg->user_data((void*)(this));
-    { Fl_Group* o = new Fl_Group(15, 20, 155, 80);
-      o->image(image_logo);
-      o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
-      o->end();
-    } // Fl_Group* o
-    { AboutText = new Fl_Text_Display(185, 10, 305, 95);
-      AboutText->align(FL_ALIGN_CENTER);
-    } // Fl_Text_Display* AboutText
-    { Fl_Return_Button* o = new Fl_Return_Button(505, 10, 75, 25, 
ctrl_gettext("OK"));
-      o->callback((Fl_Callback*)cb_OK);
-    } // Fl_Return_Button* o
-    AboutDlg->set_modal();
-    AboutDlg->end();
-  } // Fl_Double_Window* AboutDlg
-  Fl_Text_Buffer * atext = new Fl_Text_Buffer;
-atext->text(LanguageXMLAbout_Text);
-AboutText->buffer(atext);
-  return AboutDlg;
-}
-
-Fl_Double_Window* MainDlg::make_login() {
-  { LoginDlg = new Fl_Double_Window(605, 120, ctrl_gettext("Remote Login"));
-    LoginDlg->user_data((void*)(this));
-    { LoginDlgAddress = new Fl_Input(90, 20, 275, 25, 
ctrl_gettext("Address:"));
-    } // Fl_Input* LoginDlgAddress
-    { LoginDlgPort = new Fl_Value_Input(420, 20, 70, 25, 
ctrl_gettext("Port:"));
-      LoginDlgPort->maximum(10240);
-      LoginDlgPort->step(1);
-      LoginDlgPort->value(270);
-    } // Fl_Value_Input* LoginDlgPort
-    { LoginDlgName = new Fl_Input(185, 50, 180, 25, ctrl_gettext("Login 
name:"));
-    } // Fl_Input* LoginDlgName
-    { LoginDlgPass = new Fl_Input(185, 80, 180, 25, ctrl_gettext("Login 
password:"));
-      LoginDlgPass->type(5);
-    } // Fl_Input* LoginDlgPass
-    { LoginDlgOK = new Fl_Return_Button(510, 20, 75, 25, ctrl_gettext("OK"));
-    } // Fl_Return_Button* LoginDlgOK
-    { LoginDlgCancel = new Fl_Button(510, 55, 75, 25, ctrl_gettext("Cancel"));
-    } // Fl_Button* LoginDlgCancel
-    LoginDlg->set_modal();
-    LoginDlg->end();
-  } // Fl_Double_Window* LoginDlg
-  return LoginDlg;
-}
-
-Fl_Double_Window* MainDlg::make_status() {
-  { StatusDlg = new Fl_Double_Window(275, 100, ctrl_gettext("Status"));
-    StatusDlg->user_data((void*)(this));
-    { StatusDlgGroup = new Fl_Group(10, 15, 260, 65);
-      StatusDlgGroup->align(FL_ALIGN_TOP|FL_ALIGN_INSIDE);
-      { StatusDlgProgress = new Fl_Progress(25, 50, 230, 25);
-        StatusDlgProgress->selection_color((Fl_Color)229);
-        StatusDlgProgress->maximum(100);
-        StatusDlgProgress->minimum(0);
-        Server.setCallback(ProgressCallback, (void *)StatusDlgProgress);
-      } // Fl_Progress* StatusDlgProgress
-      StatusDlgGroup->end();
-    } // Fl_Group* StatusDlgGroup
-    StatusDlg->set_modal();
-    StatusDlg->end();
-  } // Fl_Double_Window* StatusDlg
-  return StatusDlg;
-}
-
-Fl_Double_Window* MainDlg::make_connections() {
-  { ConnectionsDlg = new Fl_Double_Window(488, 341, 
ctrl_gettext("Connections"));
-    ConnectionsDlg->user_data((void*)(this));
-    { ConnectionsDlgVr = new Fl_Output(65, 15, 140, 25, 
ctrl_gettext("Server:"));
-    } // Fl_Output* ConnectionsDlgVr
-    { ConnectionsDlgList = new Fl_Browser(10, 60, 470, 235, 
ctrl_gettext("Connections (ID - IP - Port - LocalIP - LocalPort - Login - 
PWord)"));
-      ConnectionsDlgList->type(2);
-      ConnectionsDlgList->align(FL_ALIGN_TOP);
-    } // Fl_Browser* ConnectionsDlgList
-    { ConnectionsDlgRate = new Fl_Counter(95, 305, 85, 25, 
ctrl_gettext("Update rate:"));
-      ConnectionsDlgRate->type(1);
-      ConnectionsDlgRate->minimum(1);
-      ConnectionsDlgRate->maximum(30);
-      ConnectionsDlgRate->step(1);
-      ConnectionsDlgRate->value(10);
-      ConnectionsDlgRate->align(FL_ALIGN_LEFT);
-    } // Fl_Counter* ConnectionsDlgRate
-    { ConnectionsDlgKill = new Fl_Button(195, 305, 130, 25, ctrl_gettext("Kill 
connection"));
-    } // Fl_Button* ConnectionsDlgKill
-    { ConnectionsDlgDone = new Fl_Button(340, 305, 130, 25, 
ctrl_gettext("Done"));
-    } // Fl_Button* ConnectionsDlgDone
-    ConnectionsDlg->set_modal();
-    ConnectionsDlg->end();
-  } // Fl_Double_Window* ConnectionsDlg
-  return ConnectionsDlg;
-}
-
-Fl_Double_Window* MainDlg::make_regask() {
-  { RegaskDlg = new Fl_Double_Window(425, 110);
-    RegaskDlg->user_data((void*)(this));
-    { RegaskDlgInput = new Fl_Input(75, 35, 340, 25);
-      RegaskDlgInput->align(FL_ALIGN_TOP_LEFT);
-    } // Fl_Input* RegaskDlgInput
-    { RegaskDlgCancel = new Fl_Button(340, 70, 75, 25, ctrl_gettext("Cancel"));
-    } // Fl_Button* RegaskDlgCancel
-    { RegaskDlgOK = new Fl_Return_Button(250, 70, 75, 25, ctrl_gettext("OK"));
-    } // Fl_Return_Button* RegaskDlgOK
-    { RegaskDlgRegex = new Fl_Check_Button(75, 65, 95, 25, 
ctrl_gettext("Regex"));
-      RegaskDlgRegex->down_box(FL_DOWN_BOX);
-    } // Fl_Check_Button* RegaskDlgRegex
-    { Fl_Box* o = new Fl_Box(10, 10, 55, 55);
-      o->box(FL_THIN_UP_BOX);
-      o->color(FL_WHITE);
-      o->labelfont(9);
-      o->labelsize(43);
-      o->labelcolor((Fl_Color)4);
-      o->label("?");
-    } // Fl_Box* o
-    RegaskDlg->set_modal();
-    RegaskDlg->end();
-  } // Fl_Double_Window* RegaskDlg
-  return RegaskDlg;
-}
-
-int MainDlg::ask_type() {
-  #ifdef WIN32
-return 1;
-#else
-ConfTypeDlg->show();
-int ret;
-for(;;) {
-  Fl_Widget *o = Fl::readqueue();
-  if(!o) Fl::wait();
-  else if(o == ConfTypeDlgOK) {ret = 0; break;}
-  else if(o == ConfTypeDlgCancel) {ret = -1; break;}
-  else if(o == ConfTypeDlg) {ret = -1; break;}
-}
-if(ret != -1) {
-  if(ConfTypeDlgLocal->value())
-    ret = 1;
-  else if(ConfTypeDlgUser->value())
-    ret = 2;
-  else if(ConfTypeDlgGlobal->value())
-    ret = 3;
-}
-ConfTypeDlg->hide();
-return ret;
-#endif
-}
-
-int MainDlg::load_config() {
-  const char * filename;
-int i;
-#ifndef WIN32
-const int FBSIZE = strlen(getenv("HOME")) + 40;
-char FileBuffer[FBSIZE];
-#endif
-
-// Loading of main myserver.xml file
-
-switch(ConfType) {
-  case 1 :
-    filename = "myserver.xml";
-    break;
-#ifndef WIN32
-  case 2 :
-    snprintf(FileBuffer, FBSIZE, "%s/.myserver/myserver.xml", getenv("HOME"));
-    filename = FileBuffer;
-    break;
-  case 3 :
-    filename = "/etc/myserver/myserver.xml";
-    break;
-#endif
-  default :
-    return -1;
-    break;
-}
-
-xmlFile.close();
-
-if(xmlFile.open(filename) != 0)
-  return -1;
-
-load_myserver_core();
-
-// Loading of MIMEtypes.xml file
-switch(ConfType) {
-  case 1 :
-    filename = "MIMEtypes.xml";
-    break;
-#ifndef WIN32
-  case 2 :
-    snprintf(FileBuffer, FBSIZE, "%s/.myserver/MIMEtypes.xml", getenv("HOME"));
-    filename = FileBuffer;
-    break;
-  case 3 :
-    filename = "/etc/myserver/MIMEtypes.xml";
-    break;
-#endif
-  default :
-    return -1;
-    break;
-}
-
-// Load the file
-if(MimeConf.load(filename))
-  return -1;
-
-// Populate the interface
-MimeConf.populateExt(Ext);
-MimeConf.populateMime(Mime);
-
-// Loading of virtualhosts.xml file
-switch(ConfType) {
-  case 1 :
-    filename = "virtualhosts.xml";
-    break;
-#ifndef WIN32
-  case 2 :
-    snprintf(FileBuffer, FBSIZE, "%s/.myserver/virtualhosts.xml", 
getenv("HOME"));
-    filename = FileBuffer;
-    break;
-  case 3 :
-    filename = "/etc/myserver/virtualhosts.xml";
-    break;
-#endif
-  default :
-    return -1;
-    break;
-}
-
-// Load the file
-if(VHostConf.load(filename))
-  return -1;
-
-// Populate the interface
-VHostConf.populateName(Name);
-Name->value(0);
-VHostConf.populateHost(0, Host);
-VHostConf.populateIp(0, Ip);
-Port->value(VHostConf.getPort(0));
-Protocol->value(VHostConf.getProtocol(0));
-Ssl_Privatekey->value(VHostConf.getSsl_Privatekey(0));
-Ssl_Certificate->value(VHostConf.getSsl_Certificate(0));
-Ssl_Password->value(VHostConf.getSsl_Password(0));
-Docroot->value(VHostConf.getDocroot(0));
-Sysfolder->value(VHostConf.getSysfolder(0));
-Accesseslog->value(VHostConf.getAccesseslog(0));
-Warninglog->value(VHostConf.getWarninglog(0));
-Allow_CGI->value(VHostConf.getService(0, ALLOW_CGI));
-Allow_ISAPI->value(VHostConf.getService(0, ALLOW_ISAPI));
-Allow_MSCGI->value(VHostConf.getService(0, ALLOW_MSCGI));
-Allow_WINCGI->value(VHostConf.getService(0, ALLOW_WINCGI));
-Allow_FASTCGI->value(VHostConf.getService(0, ALLOW_FASTCGI));
-Allow_SEND_LINK->value(VHostConf.getService(0, ALLOW_SEND_LINK));
-Allow_EXTERNAL_COMMANDS->value(VHostConf.getService(0, 
ALLOW_EXTERNAL_COMMANDS));
-Allow_SEND_FILE->value(VHostConf.getService(0, ALLOW_SEND_FILE));
-i = Protocol->value();
-if(i != 1 && i != 3) {
-  Ssl_Privatekey->deactivate();
-  Ssl_Certificate->deactivate();
-  Ssl_Password->deactivate();
-  SslButton1->deactivate();
-  SslButton2->deactivate();
-}
-else {
-  Ssl_Privatekey->activate();
-  Ssl_Certificate->activate();
-  Ssl_Password->activate();
-  SslButton1->activate();
-  SslButton2->activate();
-}
-
-// End of function
-Changed = false;
-return 0;
-}
-
-int MainDlg::load_config_remote() {
-  int i;
-int ret;
-MemBuf Buffer;
-Vector list;
-
-// ======== Progress display ========
-// Say something...
-StatusDlgProgress->value(0);
-StatusDlgProgress->label("0%");
-StatusDlgGroup->label(mystrcat(LanguageXMLDownload_Config, " (1/5)"));
-StatusDlg->show();
-fl_wait(200);  // let fltk do its thing
-// ======== Progress display ========
-
-// Get remote languages listing
-ret = Server.getLanguages(list);
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-Language->clear();
-for(i = 0; i < list.size(); i++) {
-  Language->add(list.at(i)->Text);
-}
-
-// ======== Progress display ========
-// Say something...
-StatusDlgProgress->value(0);
-StatusDlgProgress->label("0%");
-StatusDlgGroup->label(mystrcat(LanguageXMLDownload_Config, " (2/5)"));
-StatusDlg->show();
-fl_wait(200);  // let fltk do its thing
-// ======== Progress display ========
-
-// Get remote protocols
-ret = Server.getDynamicProtocols(list);
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-VHostConf.loadProtocols(list);
-VHostConf.populateProtocol(Protocol);
-
-// ======== Progress display ========
-fl_wait(50);  // small delay
-StatusDlgProgress->value(0);
-StatusDlgProgress->label("0%");
-StatusDlgGroup->label(mystrcat(LanguageXMLDownload_Config, " (3/5)"));
-fl_wait(50);  // small delay
-// ======== Progress display ========
-
-// Load remote myserver.xml
-ret = Server.getMyserverConf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-
-xmlFile.close();
-ret = xmlFile.openMemBuf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -2;
-}
-
-load_myserver_core();
-
-// ======== Progress display ========
-fl_wait(50);  // small delay
-StatusDlgProgress->value(0);
-StatusDlgProgress->label("0%");
-StatusDlgGroup->label(mystrcat(LanguageXMLDownload_Config, " (4/5)"));
-fl_wait(50);  // small delay
-// ======== Progress display ========
-
-// Load remote MIMEtypes.xml
-ret = Server.getMIMEtypesConf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-
-ret = MimeConf.loadMemBuf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -2;
-}
-
-// Populate the interface
-MimeConf.populateExt(Ext);
-MimeConf.populateMime(Mime);
-
-// ======== Progress display ========
-fl_wait(50);  // small delay
-StatusDlgProgress->value(0);
-StatusDlgProgress->label("0%");
-StatusDlgGroup->label(mystrcat(LanguageXMLDownload_Config, " (5/5)"));
-fl_wait(50);  // small delay
-// ======== Progress display ========
-
-// Load remote virtualhosts.xml
-ret = Server.getVhostsConf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-
-ret = VHostConf.loadMemBuf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -2;
-}
-
-// Populate the interface
-VHostConf.populateName(Name);
-Name->value(0);
-VHostConf.populateHost(0, Host);
-VHostConf.populateIp(0, Ip);
-Port->value(VHostConf.getPort(0));
-Protocol->value(VHostConf.getProtocol(0));
-Ssl_Privatekey->value(VHostConf.getSsl_Privatekey(0));
-Ssl_Certificate->value(VHostConf.getSsl_Certificate(0));
-Ssl_Password->value(VHostConf.getSsl_Password(0));
-Docroot->value(VHostConf.getDocroot(0));
-Sysfolder->value(VHostConf.getSysfolder(0));
-Accesseslog->value(VHostConf.getAccesseslog(0));
-Warninglog->value(VHostConf.getWarninglog(0));
-Allow_CGI->value(VHostConf.getService(0, ALLOW_CGI));
-Allow_ISAPI->value(VHostConf.getService(0, ALLOW_ISAPI));
-Allow_MSCGI->value(VHostConf.getService(0, ALLOW_MSCGI));
-Allow_WINCGI->value(VHostConf.getService(0, ALLOW_WINCGI));
-Allow_FASTCGI->value(VHostConf.getService(0, ALLOW_FASTCGI));
-Allow_SCGI->value(VHostConf.getService(0, ALLOW_SCGI));
-Allow_SEND_LINK->value(VHostConf.getService(0, ALLOW_SEND_LINK));
-Allow_EXTERNAL_COMMANDS->value(VHostConf.getService(0, 
ALLOW_EXTERNAL_COMMANDS));
-Allow_SEND_FILE->value(VHostConf.getService(0, ALLOW_SEND_FILE));
-i = Protocol->value();
-if(i != 1 && i != 3) {
-  Ssl_Privatekey->deactivate();
-  Ssl_Certificate->deactivate();
-  Ssl_Password->deactivate();
-  SslButton1->deactivate();
-  SslButton2->deactivate();
-}
-else {
-  Ssl_Privatekey->activate();
-  Ssl_Certificate->activate();
-  Ssl_Password->activate();
-  SslButton1->activate();
-  SslButton2->activate();
-}
-
-// ======== Progress display ========
-fl_wait(500);  // oooo aaa effect
-StatusDlg->hide();
-// ======== Progress display ========
-
-// End of function
-Changed = false;
-return 0;
-}
-
-int MainDlg::load_myserver_core() {
-  char * chrptr;
-int i;
-// <LANGUAGE>
-Language->value(0);
-for(i = 0; i < Language->size(); i++) {
-  if(strcmpi(getValueXML("LANGUAGE"), Language->text(i)) == 0) {
-    Language->value(i);
-    break;
-  }
-}
-
-// <VERBOSITY>
-Verbosity->value(atoi(getValueXML("VERBOSITY")));
-
-// <NTHREADS_STATIC>
-Nthreads_Static->value(atoi(getValueXML("NTHREADS_STATIC")));
-
-// <NTHREADS_MAX>
-Nthreads_Max->value(atoi(getValueXML("NTHREADS_MAX")));
-
-// <BUFFER_SIZE>
-Buffer_Size->value(atoi(getValueXML("BUFFER_SIZE")));
-
-// <DEFAULT_FILENAME>
-Default_Filename->clear();
-xmlDocPtr xmlDoc = xmlFile.getDoc();
-for(xmlNode *node = xmlDoc->children; node; node = node->next)
-{
-       if(!xmlStrcmp(node->name, (const xmlChar *)"MYSERVER"))
-       {
-               for(node = node->children; node; node = node->next)
-               {
-                       if(!xmlStrcmp(node->name, (const xmlChar 
*)"DEFAULT_FILENAME"))
-                       {
-                                 
Default_Filename->add((char*)node->children->content);
-                       }
-               }
-               break;
-       }
-}
-
-// <CONNECTION_TIMEOUT>
-Connection_Timeout->value(atoi(getValueXML("CONNECTION_TIMEOUT")));
-
-// <USE_ERRORS_FILES>
-chrptr = xmlFile.getValue("USE_ERRORS_FILES");
-if(chrptr != 0 && chrptr[0] == 'Y' && chrptr[1] == 'E')
-  Use_Errors_Files->set();
-else
-  Use_Errors_Files->clear();
-
-// <MAX_CONNECTIONS>
-Max_Connections->value(atoi(getValueXML("MAX_CONNECTIONS")));
-
-// <MAX_LOG_FILE_SIZE>
-Max_Log_File_Size->value(atoi(getValueXML("MAX_LOG_FILE_SIZE")));
-
-// <BROWSEFOLDER_CSS>
-Browsefolder_Css->value(getValueXML("BROWSEFOLDER_CSS"));
-
-// <SERVER_ADMIN>
-Server_Admin->value(getValueXML("SERVER_ADMIN"));
-
-// <GZIP_THRESHOLD>
-Gzip_Threshold->value(atoi(getValueXML("GZIP_THRESHOLD")));
-
-// <CONTROL_ENABLED>
-chrptr = xmlFile.getValue("CONTROL_ENABLED");
-if(chrptr != 0 && chrptr[0] == 'Y' && chrptr[1] == 'E') {
-  Control_Enabled->set();
-  Control_Admin->activate();
-  Control_Password->activate();
-  // <CONTROL_ADMIN>
-  Control_Admin->value(getValueXML("CONTROL_ADMIN"));
-  // <CONTROL_PASSWORD>
-  Control_Password->value("");
-}
-else {
-  Control_Enabled->clear();
-  Control_Admin->deactivate();
-  Control_Password->deactivate();
-  Control_Admin->value("");
-  Control_Password->value("");
-}
-
-//<ALLOW_ANONYMOUS>
-chrptr = xmlFile.getValue("ALLOW_ANONYMOUS");
-if(chrptr != 0 && chrptr[0] == 'Y' && chrptr[1] == 'E') {
-  Allow_Anonymous->set();
-} else {
-  Allow_Anonymous->clear();
-}
-//<ANONYMOUS_NEED_PASS>
-chrptr = xmlFile.getValue("ANONYMOUS_NEED_PASS");
-if(chrptr != 0 && chrptr[0] == 'Y' && chrptr[1] == 'E') {
-  Anonymous_Needs_Password->set();
-} else {
-  Anonymous_Needs_Password->clear();
-}
-if ( Allow_Anonymous->value() == 1 ){
-Anonymous_Needs_Password->activate();
-}
-else{
-Anonymous_Needs_Password->deactivate();
-}
-//<ALLOW_ASYNCHRONOUS_CMDS>
-chrptr = xmlFile.getValue("ALLOW_ASYNCHRONOUS_CMDS");
-if(chrptr != 0 && chrptr[0] == 'Y' && chrptr[1] == 'E') {
-  Allow_Asynchronous_Cmds->set();
-} else {
-  Allow_Asynchronous_Cmds->clear();
-}
-//<ALLOW_PIPELINING>
-chrptr = xmlFile.getValue("ALLOW_PIPELINING");
-if(chrptr != 0 && chrptr[0] == 'Y' && chrptr[1] == 'E') {
-  Allow_Pipelining->set();
-} else {
-  Allow_Pipelining->clear();
-}
-//<ALLOW_STORE>
-chrptr = xmlFile.getValue("ALLOW_STORE");
-if(chrptr != 0 && chrptr[0] == 'Y' && chrptr[1] == 'E') {
-  Allow_Store_Cmds->set();
-} else {
-  Allow_Store_Cmds->clear();
-}
-
-// End of myserver.xml file
-return 0;
-}
-
-int MainDlg::save_config() {
-  const char * filename;
-#ifndef WIN32
-const int FBSIZE = strlen(getenv("HOME")) + 40;
-char FileBuffer[FBSIZE];
-#endif
-
-// Saveing of main myserver.xml file
-
-switch(ConfType) {
-  case 1 :
-    filename = "myserver.xml";
-    break;
-#ifndef WIN32
-  case 2 :
-    snprintf(FileBuffer, FBSIZE, "%s/.myserver/myserver.xml", getenv("HOME"));
-    filename = FileBuffer;
-    break;
-  case 3 :
-    filename = "/etc/myserver/myserver.xml";
-    break;
-#endif
-  default :
-    return -1;
-    break;
-}
-
-xmlFile.close();
-
-if(xmlFile.open(filename) != 0)
-  return -1;
-
-save_myserver_core();
-
-xmlFile.save(filename);
-
-// Saveing of MIMEtypes.xml file
-switch(ConfType) {
-  case 1 :
-    filename = "MIMEtypes.xml";
-    break;
-#ifndef WIN32
-  case 2 :
-    snprintf(FileBuffer, FBSIZE, "%s/.myserver/MIMEtypes.xml", getenv("HOME"));
-    filename = FileBuffer;
-    break;
-  case 3 :
-    filename = "/etc/myserver/MIMEtypes.xml";
-    break;
-#endif
-  default :
-    return -1;
-    break;
-}
-
-// Save the file
-if(MimeConf.save(filename))
-  return -1;
-
-// Saveing of virtualhosts.xml file
-switch(ConfType) {
-  case 1 :
-    filename = "virtualhosts.xml";
-    break;
-#ifndef WIN32
-  case 2 :
-    snprintf(FileBuffer, FBSIZE, "%s/.myserver/virtualhosts.xml", 
getenv("HOME"));
-    filename = FileBuffer;
-    break;
-  case 3 :
-    filename = "/etc/myserver/virtualhosts.xml";
-    break;
-#endif
-  default :
-    return -1;
-    break;
-}
-
-// Save the file
-if(VHostConf.save(filename))
-  return -1;
-
-// End of function
-Changed = false;
-return 0;
-}
-
-int MainDlg::save_config_remote() {
-  int ret;
-MemBuf Buffer;
-
-// ======== Progress display ========
-// Say something...
-StatusDlgProgress->value(0);
-StatusDlgProgress->label("0%");
-StatusDlgGroup->label(mystrcat(LanguageXMLSend_Config, " (1/3)"));
-StatusDlg->show();
-fl_wait(200);  // let fltk do its thing
-// ======== Progress display ========
-
-ret = Server.sendDisableReboot();
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-
-// Send myserver.xml
-save_myserver_core();
-
-xmlFile.saveMemBuf(Buffer);
-
-ret = Server.sendMyserverConf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-
-// ======== Progress display ========
-fl_wait(50);  // small delay
-StatusDlgProgress->value(0);
-StatusDlgProgress->label("0%");
-StatusDlgGroup->label(mystrcat(LanguageXMLSend_Config, " (2/3)"));
-fl_wait(50);  // small delay
-// ======== Progress display ========
-
-// Send MIMEtypes.xml
-ret = MimeConf.saveMemBuf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -2;
-}
-
-ret = Server.sendMIMEtypesConf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-
-// ======== Progress display ========
-fl_wait(50);  // small delay
-StatusDlgProgress->value(0);
-StatusDlgProgress->label("0%");
-StatusDlgGroup->label(mystrcat(LanguageXMLSend_Config, " (3/3)"));
-fl_wait(50);  // small delay
-// ======== Progress display ========
-
-// Send virtualhosts.xml
-ret = VHostConf.saveMemBuf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -2;
-}
-
-ret = Server.sendVhostsConf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-
-ret = Server.sendEnableReboot();
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-
-// ======== Progress display ========
-fl_wait(500);  // oooo aaa effect
-StatusDlg->hide();
-// ======== Progress display ========
-
-// End of function
-Changed = false;
-return 0;
-}
-
-int MainDlg::save_myserver_core() {
-  char Buffer[256];
-int i;
-
-if(!xmlFile.getDoc()) {  // the file dose not exist so make one
-   xmlFile.newfile("MYSERVER");
-}
-
-// <LANGUAGE>
-setValueXML("LANGUAGE", Language->text());
-
-// <VERBOSITY>
-i = (int)Verbosity->value();
-snprintf(Buffer, 256, "%d", i);
-setValueXML("VERBOSITY", Buffer);
-
-// <NTHREADS_STATIC>
-i = (int)Nthreads_Static->value();
-snprintf(Buffer, 256, "%d", i);
-setValueXML("NTHREADS_STATIC", Buffer);
-
-// <NTHREADS_MAX>
-i = (int)Nthreads_Max->value();
-snprintf(Buffer, 256, "%d", i);
-setValueXML("NTHREADS_MAX", Buffer);
-
-// <BUFFER_SIZE>
-i = (int)Buffer_Size->value();
-snprintf(Buffer, 256, "%d", i);
-setValueXML("BUFFER_SIZE", Buffer);
-
-// <DEFAULT_FILENAME>
-for(i = 0; i < Default_Filename->size(); i++) {
-  setValueXML("DEFAULT_FILENAME",  Default_Filename->text(i + 1));
-}
-
-// <CONNECTION_TIMEOUT>
-i = (int)Connection_Timeout->value();
-snprintf(Buffer, 256, "%d", i);
-setValueXML("CONNECTION_TIMEOUT", Buffer);
-
-// <USE_ERRORS_FILES>
-if(Use_Errors_Files->value())
-  setValueXML("USE_ERRORS_FILES", "YES");
-else
-  setValueXML("USE_ERRORS_FILES", "NO");
-
-// <MAX_CONNECTIONS>
-i = (int)Max_Connections->value();
-snprintf(Buffer, 256, "%d", i);
-setValueXML("MAX_CONNECTIONS", Buffer);
-
-// <MAX_LOG_FILE_SIZE>
-i = (int)Max_Log_File_Size->value();
-snprintf(Buffer, 256, "%d", i);
-setValueXML("MAX_LOG_FILE_SIZE", Buffer);
-
-// <BROWSEFOLDER_CSS>
-setValueXML("BROWSEFOLDER_CSS", Browsefolder_Css->value());
-
-// <SERVER_ADMIN>
-setValueXML("SERVER_ADMIN", Server_Admin->value());
-
-// <GZIP_THRESHOLD>
-i = (int)Gzip_Threshold->value();
-snprintf(Buffer, 256, "%d", i);
-setValueXML("GZIP_THRESHOLD", Buffer);
-
-// <CONTROL_ENABLED>
-if(Control_Enabled->value() == 1) {
-  setValueXML("CONTROL_ENABLED", "YES");
-  // <CONTROL_ADMIN>
-  setValueXML("CONTROL_ADMIN", Control_Admin->value());
-  // <CONTROL_PASSWORD>
-  const char * chrptr = Control_Password->value();
-  if(chrptr[0] != '\0') {
-    char tempbuffer[32];
-    Md5 md5;
-    md5.init();
-    md5.update((const unsigned char*)chrptr, strlen(chrptr));
-    md5.end(tempbuffer);
-    setValueXML("CONTROL_PASSWORD", tempbuffer);
-    xmlFile.setAttr("MD5", "YES");
-  }
-}
-else {
-  setValueXML("CONTROL_ENABLED", "NO");
-}
-
-//<ALLOW_ANONYMOUS>
-if(Allow_Anonymous->value() == 1) {
-  setValueXML("ALLOW_ANONYMOUS", "YES");
-} else {
-  setValueXML("ALLOW_ANONYMOUS", "NO");
-}
-//<ANONYMOUS_NEED_PASS>
-if(Anonymous_Needs_Password->value() == 1) {
-  setValueXML("ANONYMOUS_NEED_PASS", "YES");
-} else {
-  setValueXML("ANONYMOUS_NEED_PASS", "NO");
-}
-//<ALLOW_ASYNCHRONOUS_CMDS>
-if(Allow_Asynchronous_Cmds->value() == 1) {
-  setValueXML("ALLOW_ASYNCHRONOUS_CMDS", "YES");
-} else {
-  setValueXML("ALLOW_ASYNCHRONOUS_CMDS", "NO");
-}
-//<ALLOW_PIPELINING>
-if(Allow_Pipelining->value() == 1) {
-  setValueXML("ALLOW_PIPELINING", "YES");
-} else {
-  setValueXML("ALLOW_PIPELINING", "NO");
-}
-//<ALLOW_STORE>
-if(Allow_Store_Cmds->value() == 1) {
-  setValueXML("ALLOW_STORE", "YES");
-} else {
-  setValueXML("ALLOW_STORE", "NO");
-}
-
-// End of myserver.xml file
-return 0;
-}
-
-void MainDlg::setDynamic(Vector & list) {
-  VHostConf.loadProtocols(list);
-VHostConf.populateProtocol(Protocol);
-}
-
-const char * MainDlg::getValueXML(const char * name) {
-  char * chrptr;
-chrptr = xmlFile.getValue((char *)name);
-if(chrptr == 0)
-  return "";
-return chrptr;
-}
-
-void MainDlg::setValueXML(const char * name, const char * value) {
-  char * chrptr;
-chrptr = xmlFile.getValue((char *)name);
-if(chrptr == 0)
-  xmlFile.addChild(name, value);
-else
-  xmlFile.setValue((char *)name, (char *)value);
-}
-
-void MainDlg::ServerLogout() {
-  Server.Logout();
-MenuLogout->deactivate();
-MenuGetConfig->deactivate();
-MenuSendConfig->deactivate();
-MenuConnections->deactivate();
-MenuReboot->deactivate();
-}
-
-int MainDlg::ServerLogin(bool stat) {
-  LoginDlg->show();
-int ret;
-for(;;) {
-  Fl_Widget *o = Fl::readqueue();
-  if(!o) Fl::wait();
-  else if(o == LoginDlgOK) {ret = 0; break;}
-  else if(o == LoginDlgCancel) {ret = -1; break;}
-  else if(o == LoginDlg) {ret = -1; break;}
-}
-LoginDlg->hide();
-
-if(ret) {
-  LoginDlgPass->value("");
-  return -1;
-}
-
-if(stat) {
-  // Say something...
-  StatusDlgProgress->value(0);
-  StatusDlgProgress->label("0%");
-  StatusDlgGroup->label(LanguageXMLConnect_Server);
-  StatusDlg->show();
-  fl_wait(200);  // let fltk do its thing
-}
-
-ret = Server.Login(LoginDlgAddress->value(),
-                   (int)LoginDlgPort->value(),
-                   LoginDlgName->value(),
-                   LoginDlgPass->value());
-
-LoginDlgPass->value("");
-
-if(ret) {
-  StatusDlg->hide();
-  fl_alertcat(LanguageXMLLogin_Failed, Server.LastCode);
-  return -1;
-}
-
-MenuLogout->activate();
-MenuGetConfig->activate();
-MenuSendConfig->activate();
-MenuConnections->activate();
-MenuReboot->activate();
-
-if(stat) {
-  // Show we are done...
-  StatusDlgProgress->value(100);
-  StatusDlgProgress->label("100%");
-  fl_wait(500);  // oooo aaa effect
-  StatusDlg->hide();
-}
-
-return 0;
-}
-
-void MainDlg::ServerConnections() {
-  int ret;
-int time;
-int i;
-MemBuf MSvr;
-Vector list;
-ConnectionsDlgVr->value("");
-ConnectionsDlgList->clear();
-ConnectionsDlg->show();
-fl_wait(200);
-
-// see if we are connected by getting the vr
-ret = Server.getVersion(MSvr);
-
-if(ret) { // relogin?
-  ret = ServerLogin(false);
-  if(!ret) {
-    ret = Server.getVersion(MSvr);
-  }
-}
-
-if(ret) { // no dice
-  fl_alert(LanguageXMLCannot_Connect);
-  ConnectionsDlg->hide();
-  return;
-}
-
-// update display
-MSvr << '\0';
-ConnectionsDlgVr->value((const char *)MSvr.getBuffer());
-
-time = getTicks();
-ConnectionsDlgList->clear();
-ret = Server.getConnections(list);
-
-if(ret) {
-  fl_alertcat(LanguageXMLServer_Closed, Server.LastCode);
-  ConnectionsDlg->hide();
-  ServerLogout();
-  return;
-}
-
-list.sort();
-for(i = 0; i < list.size(); i++) {
-  ConnectionsDlgList->add(list.at(i)->Text);
-}
-
-for(;;) {
-  Fl_Widget *o = Fl::readqueue();
-  if(!o) Fl::wait(1);
-  else if(o == ConnectionsDlgDone) {break; }
-  else if(o == ConnectionsDlg) {break; }
-  else if(o == ConnectionsDlgKill) {
-    i = ConnectionsDlgList->value();
-    if(i != 0) {
-      ret = Server.sendKillConnection(list.at(i - 1));
-      if(ret) {
-        fl_alertcat(LanguageXMLServer_Closed, Server.LastCode);
-        ServerLogout();
-        break;
-      } // if
-      // A cheap trick
-      time = (int)getTicks() - (int)ConnectionsDlgRate->value() * 2000;
-    } // if
-  } // else if
-
-  if((int)(getTicks() - time) > (int)ConnectionsDlgRate->value() * 1000) {
-    time = getTicks();
-    ConnectionsDlgList->clear();
-    ret = Server.getConnections(list);
-
-    if(ret) {
-      fl_alertcat(LanguageXMLServer_Closed, Server.LastCode);
-      ServerLogout();
-      break;
-    } // if
-
-    list.sort();
-    for(i = 0; i < list.size(); i++) {
-      ConnectionsDlgList->add(list.at(i)->Text);
-    } // for
-  } // if
-} // for
-
-ConnectionsDlg->hide();
-}
-
-char * MainDlg::regex_input(const char * capt, bool & reg) {
-  fl_beep(FL_BEEP_QUESTION);
-RegaskDlgInput->value("");
-RegaskDlgInput->label(capt);
-RegaskDlgRegex->value(false);
-RegaskDlg->hotspot(RegaskDlgCancel);
-RegaskDlg->show();
-int ret;
-for(;;) {
-  Fl_Widget *o = Fl::readqueue();
-  if(!o) Fl::wait();
-  else if(o == RegaskDlgOK) {ret = 0; break;}
-  else if(o == RegaskDlgCancel) {ret = -1; break;}
-  else if(o == RegaskDlg) {ret = -1; break;}
-}
-RegaskDlg->hide();
-
-if(ret || strcmp(RegaskDlgInput->value(), "") == 0) {
-  return NULL;
-}
-  
-reg = RegaskDlgRegex->value();
-return (char *)RegaskDlgInput->value();
-}
-
-void MainDlg::fl_alertcat(const char * c1, const char * c2) {
-  char temp[strlen(c1) + strlen(c2)];
-strncpy(temp, c1, (strlen(c1) + strlen(c2)));
-strncat(temp, c2, (strlen(c1) + strlen(c2) + 1));
-fl_alert(temp);
-}
-
-void MainDlg::fl_wait(int len) {
-  int time = (int)getTicks();
-while((int)(getTicks() - time) < len) {
-  Fl::wait(0);
-}
-}
-
-const char * MainDlg::mystrcat(const char * a, const char * b) {
-  static char temp[255];
-strncpy(temp, a, 255);
-strncat(temp, b, 255);
-return temp;
-}
diff --git a/misc/control/control/fltkconfig.fd 
b/misc/control/control/fltkconfig.fd
deleted file mode 100644
index baa8114..0000000
--- a/misc/control/control/fltkconfig.fd
+++ /dev/null
@@ -1,2236 +0,0 @@
-# data file for the Fltk User Interface Designer (fluid)
-version 1.0108 
-i18n_type 1 
-i18n_include "language.h" 
-i18n_function ctrl_gettext 
-header_name {.h} 
-code_name {.cpp}
-class MainDlg {open
-} {
-  Function {make_window()} {open
-  } {
-    Fl_Window ConfDlg {
-      label {MyServer Configure}
-      callback {if(Changed) {
-  if(fl_choice(LanguageXMLLast_Change, LanguageXMLNo, LanguageXMLYes, NULL)) {
-    ConfDlg->hide();
-  }
-}
-else {
-  ConfDlg->hide();
-}} open
-      xywh {583 249 550 360} type Double visible
-    } {
-      Fl_Menu_Bar {} {
-        xywh {0 0 550 25}
-      } {
-        Submenu {} {
-          label {&File} open
-          xywh {0 0 100 20}
-        } {
-          MenuItem {} {
-            label {&Open...}
-            callback {int ret;
-if(Changed) {
-  if(fl_choice(LanguageXMLLast_Change, LanguageXMLNo, LanguageXMLYes, NULL)) {
-    ret = ask_type();
-    if(ret == -1) {
-      ret = 0;
-    }
-    else {
-      ConfType = ret;
-      ret = load_config();
-    }
-  }
-}
-else {
-  ret = ask_type();
-  if(ret == -1) {
-    ret = 0;
-  }
-  else {
-    ConfType = ret;
-    ret = load_config();
-  }
-}
-
-if(ret) {
-  fl_alert(LanguageXMLNot_Found);
-}}
-            xywh {0 0 100 20}
-          }
-          MenuItem {} {
-            label {&Save...}
-            callback {int i = ask_type();
-if(i != -1) {
-  ConfType = i;
-  i = save_config();
-  if(i) {
-    fl_alert(LanguageXMLNot_Save);
-  }
-}}
-            xywh {0 0 100 20}
-          }
-          MenuItem {} {
-            label {&Revert}
-            callback {if(fl_choice(LanguageXMLReload_Prev, LanguageXMLNo, 
LanguageXMLYes, NULL)) {
-  load_config();
-}}
-            xywh {0 0 100 20}
-          }
-          Submenu {} {
-            label Run open
-            xywh {0 0 100 20}
-          } {
-            MenuItem {} {
-              label {as Console}
-              callback {RunAsConsole();}
-              xywh {0 0 100 20}
-            }
-            MenuItem {} {
-              label {as Service}
-              callback {RunAsService();}
-              xywh {0 0 100 20}
-            }
-          }
-          Submenu {} {
-            label Stop open
-            xywh {0 0 100 20}
-          } {
-            MenuItem {} {
-              label Console
-              callback {StopConsole();}
-              xywh {0 0 100 20}
-            }
-            MenuItem {} {
-              label Service
-              callback {StopService();}
-              xywh {0 0 100 20}
-            }
-          }
-          MenuItem {} {
-            label {&Quit}
-            callback {if(Changed) {
-  if(fl_choice(LanguageXMLLast_Change, LanguageXMLNo, LanguageXMLYes, NULL)) {
-    ConfDlg->hide();
-  }
-}
-else {
-  ConfDlg->hide();
-}}
-            xywh {0 0 100 20}
-          }
-        }
-        Submenu {} {
-          label {Ser&vice} open
-          xywh {0 0 100 20}
-        } {
-          MenuItem {} {
-            label {Install Service}
-            callback {InstallService();}
-            xywh {0 0 100 20}
-          }
-          MenuItem {} {
-            label {Remove Service}
-            callback {RemoveService();}
-            xywh {0 0 100 20}
-          }
-        }
-        Submenu {} {
-          label {Re&mote} open
-          xywh {0 0 100 20}
-        } {
-          MenuItem {} {
-            label {Login...}
-            callback {ServerLogin(true);}
-            xywh {0 0 100 20}
-          }
-          MenuItem MenuLogout {
-            label Logout
-            callback {ServerLogout();}
-            xywh {0 0 100 20} deactivate
-          }
-          MenuItem MenuGetConfig {
-            label {Get Config}
-            callback {int ret;
-if(Changed) {
-  if(fl_choice(LanguageXMLLast_Change, LanguageXMLNo, LanguageXMLYes, NULL)) {
-
-    ret = load_config_remote();
-
-    if(ret) {
-      ret = ServerLogin(false);
-      if(!ret) {
-        ret = load_config_remote();
-      }
-    }
-
-    if(ret == -1) {
-      fl_alertcat(LanguageXMLDownload_Failed, Server.LastCode);
-      ServerLogout();
-    }
-    else if(ret) {
-      fl_alert(LanguageXMLNot_Found);
-    }
-  }
-}
-else {
-
-  ret = load_config_remote();
-
-  if(ret) {
-    ret = ServerLogin(false);
-    if(!ret) {
-      ret = load_config_remote();   
-    }
-  }
-
-  if(ret == -1) {
-    fl_alertcat(LanguageXMLDownload_Failed, Server.LastCode);
-    ServerLogout();
-  }
-  else if(ret) {
-    fl_alert(LanguageXMLNot_Found);
-  }
-}}
-            xywh {0 0 100 20} deactivate
-          }
-          MenuItem MenuSendConfig {
-            label {Send Config}
-            callback {int ret;
-ret = fl_choice(LanguageXMLKill_All, LanguageXMLNo, LanguageXMLYes, NULL);
-if(ret) {
-
-  ret = save_config_remote();
-
-  if(ret) {
-    ret = ServerLogin(false);
-    if(!ret) {
-      ret = save_config_remote();
-    }
-  }
-
-  if(ret == -1) {
-    fl_alertcat(LanguageXMLUpload_Failed, Server.LastCode);
-  }
-  else if(ret) {
-    fl_alert(LanguageXMLNot_Save);
-  }
-}
-ServerLogout();}
-            xywh {0 0 100 20} deactivate
-          }
-          MenuItem MenuConnections {
-            label {Connections...}
-            callback {ServerConnections();}
-            xywh {0 0 100 20} deactivate
-          }
-          MenuItem MenuReboot {
-            label {Reboot...}
-            callback {int ret;
-ret = fl_choice(LanguageXMLKill_All, LanguageXMLNo, LanguageXMLYes, NULL);
-if(ret) {
-  ret = Server.sendReboot();
-  
-  if(ret) {
-    ret = ServerLogin(false);
-    if(!ret) {
-      ret = Server.sendReboot();
-    }
-  }
-
-  if(ret) {
-    fl_alert(LanguageXMLReboot_Failed);
-  }
-
-  ServerLogout();
-}}
-            xywh {0 0 100 20} deactivate
-          }
-        }
-        Submenu {} {
-          label {&Help} open
-          xywh {0 0 100 20}
-        } {
-          MenuItem {} {
-            label {&About}
-            callback {AboutDlg->show();}
-            xywh {0 0 100 20}
-          }
-        }
-      }
-      Fl_Tabs {} {open
-        xywh {0 25 635 335}
-      } {
-        Fl_Group {} {
-          label System selected
-          xywh {0 50 550 310}
-        } {
-          Fl_Value_Input Buffer_Size {
-            label {Memory buffer (in bytes):}
-            callback {Changed = true;}
-            xywh {295 60 115 25} maximum 5.24288e+06 step 1
-          }
-          Fl_Choice Verbosity {
-            label {Verbosity level:}
-            callback {Changed = true;}
-            xywh {295 90 115 25} down_box BORDER_BOX when 1
-          } {
-            MenuItem {} {
-              label None
-              xywh {5 5 100 20}
-            }
-            MenuItem {} {
-              label Normal
-              xywh {5 5 100 20}
-            }
-            MenuItem {} {
-              label Higher
-              xywh {5 5 100 20}
-            }
-            MenuItem {} {
-              label Highest
-              xywh {5 5 100 20}
-            }
-          }
-          Fl_Value_Input Max_Log_File_Size {
-            label {Max log file size (in bytes):}
-            callback {Changed = true;}
-            xywh {295 120 115 25} maximum 5.24288e+07 step 1
-          }
-          Fl_Value_Input Nthreads_Static {
-            label {Always active threads:}
-            callback {Changed = true;}
-            xywh {295 150 115 30} maximum 1000 step 1
-          }
-          Fl_Value_Input Nthreads_Max {
-            label {Maximum number of threads:}
-            callback {Changed = true;}
-            xywh {295 185 115 25} maximum 1000 step 1
-          }
-          Fl_Choice Language {
-            label {Language:}
-            callback {Changed = true;} open
-            xywh {295 215 115 25} down_box BORDER_BOX when 1
-          } {}
-        }
-        Fl_Group {} {
-          label Server
-          xywh {0 50 550 310} hide
-        } {
-          Fl_Value_Input Connection_Timeout {
-            label {Connection time-out (in sec):}
-            callback {Changed = true;}
-            xywh {295 60 115 25} maximum 3600 step 1
-          }
-          Fl_Value_Input Max_Connections {
-            label {Max connections:}
-            callback {Changed = true;}
-            xywh {295 90 115 25} maximum 5.24288e+06 step 1
-          }
-          Fl_Value_Input Gzip_Threshold {
-            label {Gzip compression threshold (in bytes):}
-            callback {Changed = true;}
-            xywh {295 120 115 25} maximum 5.24288e+06 step 1
-          }
-          Fl_Input Browsefolder_Css {
-            label {Stylesheet:}
-            callback {Changed = true;}
-            xywh {295 150 115 25} when 1
-          }
-          Fl_Button {} {
-            label {Browse...}
-            callback {char * chrptr = fl_file_chooser("", "", "");
-if(chrptr != 0) {
-  Changed = true;
-  Browsefolder_Css->value(chrptr);
-}}
-            xywh {420 150 85 25}
-          }
-          Fl_Check_Button Use_Errors_Files {
-            label {Personalized error pages:}
-            callback {Changed = true;}
-            xywh {295 180 25 25} down_box DOWN_BOX align 4 when 1
-          }
-          Fl_Group {} {
-            label {Default file names:} open
-            tooltip {Default file to send in a directory when none is 
specified} xywh {115 205 345 145} box ENGRAVED_BOX align 17
-          } {
-            Fl_Browser Default_Filename {
-              xywh {135 230 195 105} type Hold
-            }
-            Fl_Button {} {
-              label {Add...}
-              callback {char * val;
-val = (char *)fl_input(LanguageXMLEnter_Default);
-if(val != 0) {
-  Changed = true;
-  Default_Filename->add(val);
-}}
-              xywh {350 230 85 25}
-            }
-            Fl_Button {} {
-              label Remove
-              callback {if(Default_Filename->value() != 0) {
-  Changed = true;
-  Default_Filename->remove(Default_Filename->value());
-}}
-              xywh {350 265 85 25}
-            }
-          }
-        }
-        Fl_Group {} {
-          label MIME
-          xywh {0 50 550 310} hide
-        } {
-          Fl_Group {} {open
-            xywh {10 60 530 290} box ENGRAVED_FRAME
-          } {
-            Fl_Group {} {
-              label {Extension:} open
-              xywh {20 70 195 270} box ENGRAVED_FRAME align 17
-            } {
-              Fl_Browser Ext {
-                callback {int val = Ext->value();
-if(val != 0) {
-  val -= 1;
-  
-  Cmd->value(MimeConf.getCmd(val));
-  
-  if(Cmd->value() >= 2 && Cmd->value() <= 4) {
-  }
-
-  Mime->value(MimeConf.getType(val));
-
-  Manager->value(MimeConf.getManager(val));
-}}
-                xywh {31 95 170 190} type Hold
-              }
-              Fl_Button {} {
-                label {Add...}
-                callback {char * val;
-int i;
-val = (char *)fl_input(LanguageXMLEnter_Extension);
-if(val != 0) {
-  Changed = true;
-  i = MimeConf.addExt(val);
-  MimeConf.populateExt(Ext);
-  Ext->value(i + 1);
-
-  Cmd->value(MimeConf.getCmd(i));
-  
-  
-  Mime->value(MimeConf.getType(i));
-
-  Manager->value(MimeConf.getManager(i));
-}}
-                xywh {30 300 80 25}
-              }
-              Fl_Button {} {
-                label Remove
-                callback {int val;
-val = Ext->value();
-if(val != 0) {
-  Changed = true;
-  val--;
-  MimeConf.removeExt(val);
-  MimeConf.populateExt(Ext);
-}}
-                xywh {120 300 80 25}
-              }
-            }
-            Fl_Choice Mime {
-              label {MIME Type:}
-              callback {int val = Ext->value();
-if(val != 0) {
-  val--;
-  Changed = true;
-  MimeConf.setType(val, Mime->value());
-}} open
-              xywh {310 95 220 25} down_box BORDER_BOX when 1
-            } {}
-            Fl_Button {} {
-              label {Add...}
-              callback {char * val;
-int i, ret;
-val = (char *)fl_input(LanguageXMLEnter_MIME);
-if(val != 0) {
-  Changed = true;
-  i = MimeConf.addMime(val);
-  MimeConf.populateMime(Mime);
-  Mime->value(i);
-  ret = Ext->value();
-  if(ret != 0) {
-    ret--;
-    MimeConf.setType(ret, i);
-  }
-}}
-              xywh {310 125 90 25}
-            }
-            Fl_Choice Cmd {
-              label {Action:}
-              callback {int val = Cmd->value();
-int val2 = Ext->value();
-if(val >= 2 && val <= 4) {
-}
-else {
-  if(val2 != 0)
-    MimeConf.setManager(val2 - 1, NONE);
-  Manager->value(NONE);
-}
-
-if(val2 != 0) {
-  val2--;
-  MimeConf.setCmd(val2, val);
-  Changed = true;
-}} open
-              xywh {310 165 220 25} down_box BORDER_BOX when 1
-            } {
-              MenuItem {} {
-                label {Send the file}
-                xywh {10 10 100 20}
-              }
-              MenuItem {} {
-                label {URL link}
-                xywh {10 10 100 20}
-              }
-              MenuItem {} {
-                label {Run as CGI}
-                xywh {10 10 100 20}
-              }
-              MenuItem {} {
-                label {Run as FastCGI}
-                xywh {10 10 100 20}
-              }
-              MenuItem {} {
-                label {Run as SCGI}
-                xywh {10 10 100 20}
-              }
-              MenuItem {} {
-                label {Run as ISAPI}
-                xywh {10 10 100 20}
-              }
-              MenuItem {} {
-                label {Run as MSCGI}
-                xywh {10 10 100 20}
-              }
-              MenuItem {} {
-                label {Run as WINCGI}
-                xywh {10 10 100 20}
-              }
-              MenuItem {} {
-                label Execute
-                xywh {10 10 100 20}
-              }
-              MenuItem {} {
-                label {Execute as an ISAPI module}
-                xywh {10 10 100 20}
-              }
-              MenuItem {} {
-                label {Execute self contained FastCGI}
-                xywh {10 10 100 20}
-              }
-              MenuItem {} {
-                label {Run self contained SCGI}
-                xywh {10 10 100 20}
-              }
-            }
-            Fl_Input Manager {
-              label {Manager:}
-              callback {int val = Ext->value();
-if(val != 0) {
-  val--;
-  MimeConf.setManager(val, Manager->value());
-  Changed = true;
-}}
-              xywh {310 205 220 25}
-            }
-            Fl_Button ManagerButton {
-              label {Browse...}
-              callback {int val = Ext->value();
-char * chrptr = fl_file_chooser("", "", "");
-if(chrptr != 0) {
-  if(val != 0) {
-    val--;
-    MimeConf.setManager(val, chrptr);
-    Manager->value(chrptr);
-    Changed = true;
-  }
-}}
-              xywh {310 235 90 25}
-            }
-          }
-        }
-        Fl_Group {} {
-          label Hosts
-          xywh {0 50 635 310} hide
-        } {
-          Fl_Group {} {
-            xywh {10 60 530 45} box ENGRAVED_FRAME
-          } {
-            Fl_Choice Name {
-              label {Name:}
-              callback {int i = Name->value();
-VHostConf.populateHost(i, Host);
-VHostConf.populateIp(i, Ip);
-Port->value(VHostConf.getPort(i));
-Protocol->value(VHostConf.getProtocol(i));
-Ssl_Privatekey->value(VHostConf.getSsl_Privatekey(i));
-Ssl_Certificate->value(VHostConf.getSsl_Certificate(i));
-Ssl_Password->value(VHostConf.getSsl_Password(i));
-Docroot->value(VHostConf.getDocroot(i));
-Sysfolder->value(VHostConf.getSysfolder(i));
-Accesseslog->value(VHostConf.getAccesseslog(i));
-Warninglog->value(VHostConf.getWarninglog(i));
-Allow_CGI->value(VHostConf.getService(i, ALLOW_CGI));
-Allow_ISAPI->value(VHostConf.getService(i, ALLOW_ISAPI));
-Allow_MSCGI->value(VHostConf.getService(i, ALLOW_MSCGI));
-Allow_WINCGI->value(VHostConf.getService(i, ALLOW_WINCGI));
-Allow_FASTCGI->value(VHostConf.getService(i, ALLOW_FASTCGI));
-Allow_SCGI->value(VHostConf.getService(i, ALLOW_SCGI));
-Allow_SEND_LINK->value(VHostConf.getService(i, ALLOW_SEND_LINK));
-Allow_EXTERNAL_COMMANDS->value(VHostConf.getService(i, 
ALLOW_EXTERNAL_COMMANDS));
-Allow_SEND_FILE->value(VHostConf.getService(i, ALLOW_SEND_FILE));
-i = Protocol->value();
-if(i != 1 && i != 3) {
-  Ssl_Privatekey->deactivate();
-  Ssl_Certificate->deactivate();
-  Ssl_Password->deactivate();
-  SslButton1->deactivate();
-  SslButton2->deactivate();
-}
-else {
-  Ssl_Privatekey->activate();
-  Ssl_Certificate->activate();
-  Ssl_Password->activate();
-  SslButton1->activate();
-  SslButton2->activate();
-}} open
-              xywh {75 70 275 25} down_box BORDER_BOX when 1
-            } {}
-            Fl_Button {} {
-              label {Add...}
-              callback {char * val;
-int i;
-val = (char *)fl_input(LanguageXMLEnter_Name);
-if(val != 0) {
-  Changed = true;
-  i = VHostConf.addName(val);
-  VHostConf.populateName(Name);
-  Name->value(i);
-  VHostConf.populateHost(i, Host);
-  VHostConf.populateIp(i, Ip);
-  Port->value(VHostConf.getPort(i));
-  Protocol->value(VHostConf.getProtocol(i));
-  Ssl_Privatekey->value(VHostConf.getSsl_Privatekey(i));
-  Ssl_Certificate->value(VHostConf.getSsl_Certificate(i));
-  Ssl_Password->value(VHostConf.getSsl_Password(i));
-  Docroot->value(VHostConf.getDocroot(i));
-  Sysfolder->value(VHostConf.getSysfolder(i));
-  Accesseslog->value(VHostConf.getAccesseslog(i));
-  Warninglog->value(VHostConf.getWarninglog(i));
-  Allow_CGI->value(VHostConf.getService(i, ALLOW_CGI));
-  Allow_ISAPI->value(VHostConf.getService(i, ALLOW_ISAPI));
-  Allow_MSCGI->value(VHostConf.getService(i, ALLOW_MSCGI));
-  Allow_WINCGI->value(VHostConf.getService(i, ALLOW_WINCGI));
-  Allow_FASTCGI->value(VHostConf.getService(i, ALLOW_FASTCGI));
-  Allow_SCGI->value(VHostConf.getService(i, ALLOW_SCGI));
-  Allow_SEND_LINK->value(VHostConf.getService(i, ALLOW_SEND_LINK));
-  Allow_EXTERNAL_COMMANDS->value(VHostConf.getService(i, 
ALLOW_EXTERNAL_COMMANDS));
-  Allow_SEND_FILE->value(VHostConf.getService(i, ALLOW_SEND_FILE));
-  i = Protocol->value();
-  if(i != 1 && i != 3) {
-    Ssl_Privatekey->deactivate();
-    Ssl_Certificate->deactivate();
-    Ssl_Password->deactivate();
-    SslButton1->deactivate();
-    SslButton2->deactivate();
-  }
-  else {
-    Ssl_Privatekey->activate();
-    Ssl_Certificate->activate();
-    Ssl_Password->activate();
-    SslButton1->activate();
-    SslButton2->activate();
-  }
-}}
-              xywh {360 70 80 25}
-            }
-            Fl_Button {} {
-              label Remove
-              callback {Changed = true;
-int i = Name->value();
-VHostConf.removeName(i);
-i = 0;
-VHostConf.populateName(Name);
-Name->value(i);
-VHostConf.populateHost(i, Host);
-VHostConf.populateIp(i, Ip);
-Port->value(VHostConf.getPort(i));
-Protocol->value(VHostConf.getProtocol(i));
-Ssl_Privatekey->value(VHostConf.getSsl_Privatekey(i));
-Ssl_Certificate->value(VHostConf.getSsl_Certificate(i));
-Ssl_Password->value(VHostConf.getSsl_Password(i));
-Docroot->value(VHostConf.getDocroot(i));
-Sysfolder->value(VHostConf.getSysfolder(i));
-Accesseslog->value(VHostConf.getAccesseslog(i));
-Warninglog->value(VHostConf.getWarninglog(i));
-i = Protocol->value();
-if(i != 1 && i != 3) {
-  Ssl_Privatekey->deactivate();
-  Ssl_Certificate->deactivate();
-  Ssl_Password->deactivate();
-  SslButton1->deactivate();
-  SslButton2->deactivate();
-}
-else {
-  Ssl_Privatekey->activate();
-  Ssl_Certificate->activate();
-  Ssl_Password->activate();
-  SslButton1->activate();
-  SslButton2->activate();
-}}
-              xywh {450 70 80 25}
-            }
-          }
-          Fl_Group {} {
-            xywh {10 110 625 240} box ENGRAVED_FRAME
-          } {
-            Fl_Tabs {} {
-              xywh {19 120 616 225}
-            } {
-              Fl_Group {} {
-                label Protocol
-                xywh {20 145 510 195} hide
-              } {
-                Fl_Choice Protocol {
-                  label {Protocol:}
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setProtocol(i, Protocol->value());
-int pval = Protocol->value();
-if(pval != 1 && pval != 3) {
-  VHostConf.setSsl_Privatekey(i, EMPTY);
-  VHostConf.setSsl_Certificate(i, EMPTY);
-  VHostConf.setSsl_Password(i, EMPTY);
-  Ssl_Privatekey->value(EMPTY);
-  Ssl_Certificate->value(EMPTY);
-  Ssl_Password->value(EMPTY);
-  Ssl_Privatekey->deactivate();
-  Ssl_Certificate->deactivate();
-  Ssl_Password->deactivate();
-  SslButton1->deactivate();
-  SslButton2->deactivate();
-}
-else {
-  Ssl_Privatekey->activate();
-  Ssl_Certificate->activate();
-  Ssl_Password->activate();
-  SslButton1->activate();
-  SslButton2->activate();
-}
-
-// set default vals
-switch(pval) {
-  case 0 :
-    Port->value(80);
-    VHostConf.setPort(i, 80);
-    break;
-  case 1 :
-    Port->value(443);
-    VHostConf.setPort(i, 443);
-    break;
-  case 2 :
-    Port->value(21);
-    VHostConf.setPort(i, 21);
-    break;
-  case 3 :
-    Port->value(270);
-    VHostConf.setPort(i, 270);
-    break;
-  default :
-    break;
-}}
-                  xywh {180 155 215 25} down_box BORDER_BOX when 1
-                } {
-                  MenuItem {} {
-                    label HTTP
-                    xywh {5 5 100 20}
-                  }
-                  MenuItem {} {
-                    label HTTPS
-                    xywh {5 5 100 20}
-                  }
-                  MenuItem {} {
-                    label FTP
-                    xywh {5 5 100 20}
-                  }
-                  MenuItem {} {
-                    label CONTROL
-                    xywh {0 0 100 20}
-                  }
-                }
-                Fl_Input Ssl_Privatekey {
-                  label {SSL private key:}
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setSsl_Privatekey(i, Ssl_Privatekey->value());}
-                  xywh {180 185 215 25} when 1 deactivate
-                }
-                Fl_Input Ssl_Certificate {
-                  label {SSL certificate:}
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setSsl_Certificate(i, Ssl_Certificate->value());}
-                  xywh {180 215 215 25} when 1 deactivate
-                }
-                Fl_Input Ssl_Password {
-                  label {SSL password:}
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setSsl_Password(i, Ssl_Password->value());}
-                  xywh {180 245 215 25} type Secret when 1 deactivate
-                }
-                Fl_Button SslButton1 {
-                  label {Browse...}
-                  callback {char * chrptr = fl_file_chooser("", "", "");
-if(chrptr != 0) {
-  Changed = true;
-  int i = Name->value();
-  VHostConf.setSsl_Privatekey(i, chrptr);
-  Ssl_Privatekey->value(chrptr);
-}}
-                  xywh {405 185 85 25} deactivate
-                }
-                Fl_Button SslButton2 {
-                  label {Browse...}
-                  callback {char * chrptr = fl_file_chooser("", "", "");
-if(chrptr != 0) {
-  Changed = true;
-  int i = Name->value();
-  VHostConf.setSsl_Certificate(i, chrptr);
-  Ssl_Certificate->value(chrptr);
-}}
-                  xywh {405 215 85 25} deactivate
-                }
-              }
-              Fl_Group {} {
-                label Arpa
-                xywh {20 145 510 195} hide
-              } {
-                Fl_Browser Host {
-                  label Host
-                  xywh {30 165 170 135} type Hold align 1
-                }
-                Fl_Browser Ip {
-                  label IP
-                  xywh {210 165 170 135} type Hold align 1
-                }
-                Fl_Button {} {
-                  label {Add...}
-                  callback {char * val;
-int NameNo, i;
-bool reg = false;
-val = (char *)regex_input(LanguageXMLEnter_Host, reg);
-if(val != 0) {
-  Changed = true;
-  NameNo = Name->value();
-  i = VHostConf.addHost(NameNo, val, reg);
-  VHostConf.populateHost(NameNo, Host);
-  Host->value(i + 1);
-}}
-                  xywh {30 305 80 25}
-                }
-                Fl_Button {} {
-                  label Remove
-                  callback {int i, NameNo;
-i = Host->value();
-if(i != 0) {
-  Changed = true;
-  NameNo = Name->value();
-  VHostConf.removeHost(NameNo, i - 1);
-  VHostConf.populateHost(NameNo, Host);
-}}
-                  xywh {120 305 80 25}
-                }
-                Fl_Button {} {
-                  label {Add...}
-                  callback {char * val;
-int NameNo, i;
-bool reg;
-val = (char *)regex_input(LanguageXMLEnter_Ip, reg);
-if(val != 0) {
-  Changed = true;
-  NameNo = Name->value();
-  i = VHostConf.addIp(NameNo, val, reg);
-  VHostConf.populateIp(NameNo, Ip);
-  Ip->value(i + 1);
-}}
-                  xywh {210 305 80 25}
-                }
-                Fl_Button {} {
-                  label Remove
-                  callback {int i, NameNo;
-i = Ip->value();
-if(i != 0) {
-  Changed = true;
-  NameNo = Name->value();
-  VHostConf.removeIp(NameNo, i - 1);
-  VHostConf.populateIp(NameNo, Ip);
-}}
-                  xywh {300 305 80 25}
-                }
-                Fl_Value_Input Port {
-                  label {Port:}
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setPort(i, (int)Port->value());}
-                  xywh {435 165 65 25} maximum 10240 step 1
-                }
-              }
-              Fl_Group {} {
-                label {HTTP Services}
-                xywh {25 140 510 195} hide
-              } {
-                Fl_Box {} {
-                  label {Enable:}
-                  xywh {45 150 115 25} align 20
-                }
-                Fl_Check_Button Allow_CGI {
-                  label CGI
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_CGI, Allow_CGI->value());}
-                  xywh {65 175 20 25} down_box DOWN_BOX align 8 when 1
-                }
-                Fl_Check_Button Allow_ISAPI {
-                  label ISAPI
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_ISAPI, Allow_ISAPI->value());}
-                  xywh {65 195 20 25} down_box DOWN_BOX align 8 when 1
-                }
-                Fl_Check_Button Allow_MSCGI {
-                  label MSCGI
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_MSCGI, Allow_MSCGI->value());}
-                  xywh {65 215 20 25} down_box DOWN_BOX align 8 when 1
-                }
-                Fl_Check_Button Allow_WINCGI {
-                  label WINCGI
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_WINCGI, Allow_WINCGI->value());}
-                  xywh {65 235 20 25} down_box DOWN_BOX align 8 when 1
-                }
-                Fl_Check_Button Allow_FASTCGI {
-                  label FASTCGI
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_FASTCGI, Allow_FASTCGI->value());}
-                  xywh {65 255 20 25} down_box DOWN_BOX align 8 when 1
-                }
-                Fl_Check_Button Allow_SCGI {
-                  label SCGI
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_SCGI, Allow_SCGI->value());}
-                  xywh {235 175 20 25} down_box DOWN_BOX align 8 when 1
-                }
-                Fl_Check_Button Allow_SEND_LINK {
-                  label {SEND LINK}
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_SEND_LINK, Allow_SEND_LINK->value());}
-                  xywh {235 195 20 25} down_box DOWN_BOX align 8 when 1
-                }
-                Fl_Check_Button Allow_EXTERNAL_COMMANDS {
-                  label {EXTERNAL COMMANDS}
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_EXTERNAL_COMMANDS, 
Allow_EXTERNAL_COMMANDS->value());}
-                  xywh {235 215 20 25} down_box DOWN_BOX align 8 when 1
-                }
-                Fl_Check_Button Allow_SEND_FILE {
-                  label {SEND FILE}
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setService(i, ALLOW_SEND_FILE, Allow_SEND_FILE->value());}
-                  xywh {235 235 20 25} down_box DOWN_BOX align 8 when 1
-                }
-              }
-              Fl_Group {} {
-                label Directories
-                xywh {20 145 510 195} hide
-              } {
-                Fl_Input Docroot {
-                  label {Document root:}
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setDocroot(i, Docroot->value());}
-                  xywh {180 155 215 25} when 1
-                }
-                Fl_Input Sysfolder {
-                  label {System folder:}
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setSysfolder(i, Sysfolder->value());}
-                  xywh {180 185 215 25} when 1
-                }
-                Fl_Button {} {
-                  label {Browse...}
-                  callback {char * chrptr = fl_dir_chooser("", "");
-if(chrptr != 0) {
-  Changed = true;
-  int i = Name->value();
-  VHostConf.setDocroot(i, chrptr);
-  Docroot->value(chrptr);
-}}
-                  xywh {405 155 85 25}
-                }
-                Fl_Button {} {
-                  label {Browse...}
-                  callback {char * chrptr = fl_dir_chooser("", "");
-if(chrptr != 0) {
-  Changed = true;
-  int i = Name->value();
-  VHostConf.setSysfolder(i, chrptr);
-  Sysfolder->value(chrptr);
-}}
-                  xywh {405 185 85 25}
-                }
-              }
-              Fl_Group {} {
-                label Logs
-                xywh {20 145 510 195}
-              } {
-                Fl_Input Accesseslog {
-                  label {Accesses log file:}
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setAccesseslog(i, Accesseslog->value());}
-                  xywh {180 155 215 25} when 1
-                }
-                Fl_Input Warninglog {
-                  label {Warning log file:}
-                  callback {Changed = true;
-int i = Name->value();
-VHostConf.setWarninglog(i, Warninglog->value());}
-                  xywh {180 185 215 25} when 1
-                }
-              }
-            }
-          }
-        }
-        Fl_Group {} {
-          label Administrator
-          xywh {0 50 550 310} hide
-        } {
-          Fl_Input Server_Admin {
-            label {Administrator e-mail:}
-            callback {Changed = true;}
-            xywh {295 60 190 25} when 1
-          }
-          Fl_Input Control_Admin {
-            label {Administrator user name:}
-            callback {Changed = true;}
-            xywh {295 90 190 25} when 1 deactivate
-          }
-          Fl_Input Control_Password {
-            label {Administrator password:}
-            callback {Changed = true;}
-            xywh {295 120 190 25} type Secret when 1 deactivate
-          }
-          Fl_Check_Button Control_Enabled {
-            label {Enable control protocol:}
-            callback {Changed = true;
-if(Control_Enabled->value() == 1) {
-  Control_Admin->activate();
-  Control_Password->activate();
-}
-else {
-  Control_Admin->deactivate();
-  Control_Password->deactivate();
-}}
-            xywh {295 150 25 25} down_box DOWN_BOX align 4 when 1
-          }
-        }
-        Fl_Group {} {
-          label {FTP Services} open
-          xywh {0 56 549 293} hide
-        } {
-          Fl_Box {} {
-            label {Enable:}
-            xywh {3 59 115 25} align 20
-          }
-          Fl_Check_Button Allow_Anonymous {
-            label {Anonymous Access}
-            callback {Changed = true;
-if ( Allow_Anonymous->value() == 1 ){
-Anonymous_Needs_Password->activate();
-}
-else{
-Anonymous_Needs_Password->deactivate();
-}}
-            xywh {3 97 20 25} down_box DOWN_BOX align 8
-          }
-          Fl_Check_Button Anonymous_Needs_Password {
-            label {Anonymous Needs Password}
-            callback {Changed=true;}
-            xywh {269 97 20 24} down_box DOWN_BOX align 8
-          }
-          Fl_Check_Button Allow_Asynchronous_Cmds {
-            label {Asynchronous Commands}
-            callback {Changed=true;}
-            xywh {3 161 19 22} down_box DOWN_BOX align 8
-          }
-          Fl_Check_Button Allow_Pipelining {
-            label Pipelining
-            callback {Changed=true;}
-            xywh {3 222 21 22} down_box DOWN_BOX align 8
-          }
-          Fl_Check_Button Allow_Store_Cmds {
-            label {Write Commands}
-            callback {Changed=true;}
-            xywh {3 284 20 26} down_box DOWN_BOX align 8
-          }
-        }
-      }
-    }
-    code {// Set FLTK function's text
-  fl_ok = ctrl_gettext("OK");
-  fl_cancel = ctrl_gettext("Cancel");} {}
-  }
-  Function {make_type()} {} {
-    Fl_Window ConfTypeDlg {
-      label {Chose Location} open
-      xywh {532 584 303 152} type Double align 0 hide modal
-    } {
-      Fl_Group {} {
-        label {Chose configuration file location:} open
-        xywh {0 0 305 100} align 17
-      } {
-        Fl_Round_Button ConfTypeDlgLocal {
-          label Local
-          callback {ConfType = 1;}
-          tooltip {Configuration files located in current directory} xywh {105 
25 70 25} type Radio down_box ROUND_DOWN_BOX
-        }
-        Fl_Round_Button ConfTypeDlgUser {
-          label User
-          callback {ConfType = 2;}
-          tooltip {Configuration files located in ~/.myserver} xywh {105 45 70 
25} type Radio down_box ROUND_DOWN_BOX
-        }
-        Fl_Round_Button ConfTypeDlgGlobal {
-          label Global
-          callback {ConfType = 3;}
-          tooltip {Configuration files located in /etc/myserver} xywh {105 65 
70 25} type Radio down_box ROUND_DOWN_BOX
-        }
-      }
-      Fl_Return_Button ConfTypeDlgOK {
-        label OK
-        xywh {65 108 65 30}
-      }
-      Fl_Button ConfTypeDlgCancel {
-        label Cancel
-        xywh {165 110 65 30}
-      }
-    }
-  }
-  Function {make_about()} {} {
-    Fl_Window AboutDlg {
-      label About open
-      xywh {320 453 595 115} type Double hide modal
-    } {
-      Fl_Group {} {open
-        image {../binaries/web/logo.png} xywh {15 20 155 80} align 21
-      } {}
-      Fl_Text_Display AboutText {
-        xywh {185 10 305 95} align 0
-      }
-      Fl_Return_Button {} {
-        label OK
-        callback {AboutDlg->hide();}
-        xywh {505 10 75 25}
-      }
-    }
-    code {Fl_Text_Buffer * atext = new Fl_Text_Buffer;
-atext->text(LanguageXMLAbout_Text);
-AboutText->buffer(atext);} {}
-  }
-  Function {make_login()} {} {
-    Fl_Window LoginDlg {
-      label {Remote Login} open
-      xywh {328 239 605 120} type Double hide modal
-    } {
-      Fl_Input LoginDlgAddress {
-        label {Address:}
-        xywh {90 20 275 25}
-      }
-      Fl_Value_Input LoginDlgPort {
-        label {Port:}
-        xywh {420 20 70 25} maximum 10240 step 1 value 270
-      }
-      Fl_Input LoginDlgName {
-        label {Login name:}
-        xywh {185 50 180 25}
-      }
-      Fl_Input LoginDlgPass {
-        label {Login password:}
-        xywh {185 80 180 25} type Secret
-      }
-      Fl_Return_Button LoginDlgOK {
-        label OK
-        xywh {510 20 75 25}
-      }
-      Fl_Button LoginDlgCancel {
-        label Cancel
-        xywh {510 55 75 25}
-      }
-    }
-  }
-  Function {make_status()} {} {
-    Fl_Window StatusDlg {
-      label Status open
-      xywh {372 471 275 100} type Double hide modal
-    } {
-      Fl_Group StatusDlgGroup {open
-        xywh {10 15 260 65} align 17
-      } {
-        Fl_Progress StatusDlgProgress {
-          xywh {25 50 230 25} selection_color 229
-          code0 {StatusDlgProgress->maximum(100);}
-          code1 {StatusDlgProgress->minimum(0);}
-          code2 {Server.setCallback(ProgressCallback, (void 
*)StatusDlgProgress);}
-        }
-      }
-    }
-  }
-  Function {make_connections()} {} {
-    Fl_Window ConnectionsDlg {
-      label Connections open
-      xywh {269 258 488 341} type Double hide modal
-    } {
-      Fl_Output ConnectionsDlgVr {
-        label {Server:}
-        xywh {65 15 140 25}
-      }
-      Fl_Browser ConnectionsDlgList {
-        label {Connections (ID - IP - Port - LocalIP - LocalPort - Login - 
PWord)}
-        xywh {10 60 470 235} type Hold align 1
-      }
-      Fl_Counter ConnectionsDlgRate {
-        label {Update rate:}
-        xywh {95 305 85 25} type Simple align 4 minimum 1 maximum 30 step 1 
value 10
-      }
-      Fl_Button ConnectionsDlgKill {
-        label {Kill connection}
-        xywh {195 305 130 25}
-      }
-      Fl_Button ConnectionsDlgDone {
-        label Done
-        xywh {340 305 130 25}
-      }
-    }
-  }
-  Function {make_regask()} {} {
-    Fl_Window RegaskDlg {open
-      xywh {462 30 425 110} type Double hide modal
-    } {
-      Fl_Input RegaskDlgInput {
-        xywh {75 35 340 25} align 5
-      }
-      Fl_Button RegaskDlgCancel {
-        label Cancel
-        xywh {340 70 75 25}
-      }
-      Fl_Return_Button RegaskDlgOK {
-        label OK
-        xywh {250 70 75 25}
-      }
-      Fl_Check_Button RegaskDlgRegex {
-        label Regex
-        xywh {75 65 95 25} down_box DOWN_BOX
-      }
-      Fl_Box {} {
-        xywh {10 10 55 55} box THIN_UP_BOX color 255 labelfont 9 labelsize 43 
labelcolor 4
-        code0 {o->label("?");}
-      }
-    }
-  }
-  Function {ask_type()} {return_type int
-  } {
-    code {\#ifdef WIN32
-return 1;
-\#else
-ConfTypeDlg->show();
-int ret;
-for(;;) {
-  Fl_Widget *o = Fl::readqueue();
-  if(!o) Fl::wait();
-  else if(o == ConfTypeDlgOK) {ret = 0; break;}
-  else if(o == ConfTypeDlgCancel) {ret = -1; break;}
-  else if(o == ConfTypeDlg) {ret = -1; break;}
-}
-if(ret != -1) {
-  if(ConfTypeDlgLocal->value())
-    ret = 1;
-  else if(ConfTypeDlgUser->value())
-    ret = 2;
-  else if(ConfTypeDlgGlobal->value())
-    ret = 3;
-}
-ConfTypeDlg->hide();
-return ret;
-\#endif} {}
-  }
-  Function {load_config()} {return_type int
-  } {
-    code {const char * filename;
-int i;
-\#ifndef WIN32
-const int FBSIZE = strlen(getenv("HOME")) + 40;
-char FileBuffer[FBSIZE];
-\#endif
-
-// Loading of main myserver.xml file
-
-switch(ConfType) {
-  case 1 :
-    filename = "myserver.xml";
-    break;
-\#ifndef WIN32
-  case 2 :
-    snprintf(FileBuffer, FBSIZE, "%s/.myserver/myserver.xml", getenv("HOME"));
-    filename = FileBuffer;
-    break;
-  case 3 :
-    filename = "/etc/myserver/myserver.xml";
-    break;
-\#endif
-  default :
-    return -1;
-    break;
-}
-
-xmlFile.close();
-
-if(xmlFile.open(filename) != 0)
-  return -1;
-
-load_myserver_core();
-
-// Loading of MIMEtypes.xml file
-switch(ConfType) {
-  case 1 :
-    filename = "MIMEtypes.xml";
-    break;
-\#ifndef WIN32
-  case 2 :
-    snprintf(FileBuffer, FBSIZE, "%s/.myserver/MIMEtypes.xml", getenv("HOME"));
-    filename = FileBuffer;
-    break;
-  case 3 :
-    filename = "/etc/myserver/MIMEtypes.xml";
-    break;
-\#endif
-  default :
-    return -1;
-    break;
-}
-
-// Load the file
-if(MimeConf.load(filename))
-  return -1;
-
-// Populate the interface
-MimeConf.populateExt(Ext);
-MimeConf.populateMime(Mime);
-
-// Loading of virtualhosts.xml file
-switch(ConfType) {
-  case 1 :
-    filename = "virtualhosts.xml";
-    break;
-\#ifndef WIN32
-  case 2 :
-    snprintf(FileBuffer, FBSIZE, "%s/.myserver/virtualhosts.xml", 
getenv("HOME"));
-    filename = FileBuffer;
-    break;
-  case 3 :
-    filename = "/etc/myserver/virtualhosts.xml";
-    break;
-\#endif
-  default :
-    return -1;
-    break;
-}
-
-// Load the file
-if(VHostConf.load(filename))
-  return -1;
-
-// Populate the interface
-VHostConf.populateName(Name);
-Name->value(0);
-VHostConf.populateHost(0, Host);
-VHostConf.populateIp(0, Ip);
-Port->value(VHostConf.getPort(0));
-Protocol->value(VHostConf.getProtocol(0));
-Ssl_Privatekey->value(VHostConf.getSsl_Privatekey(0));
-Ssl_Certificate->value(VHostConf.getSsl_Certificate(0));
-Ssl_Password->value(VHostConf.getSsl_Password(0));
-Docroot->value(VHostConf.getDocroot(0));
-Sysfolder->value(VHostConf.getSysfolder(0));
-Accesseslog->value(VHostConf.getAccesseslog(0));
-Warninglog->value(VHostConf.getWarninglog(0));
-Allow_CGI->value(VHostConf.getService(0, ALLOW_CGI));
-Allow_ISAPI->value(VHostConf.getService(0, ALLOW_ISAPI));
-Allow_MSCGI->value(VHostConf.getService(0, ALLOW_MSCGI));
-Allow_WINCGI->value(VHostConf.getService(0, ALLOW_WINCGI));
-Allow_FASTCGI->value(VHostConf.getService(0, ALLOW_FASTCGI));
-Allow_SEND_LINK->value(VHostConf.getService(0, ALLOW_SEND_LINK));
-Allow_EXTERNAL_COMMANDS->value(VHostConf.getService(0, 
ALLOW_EXTERNAL_COMMANDS));
-Allow_SEND_FILE->value(VHostConf.getService(0, ALLOW_SEND_FILE));
-i = Protocol->value();
-if(i != 1 && i != 3) {
-  Ssl_Privatekey->deactivate();
-  Ssl_Certificate->deactivate();
-  Ssl_Password->deactivate();
-  SslButton1->deactivate();
-  SslButton2->deactivate();
-}
-else {
-  Ssl_Privatekey->activate();
-  Ssl_Certificate->activate();
-  Ssl_Password->activate();
-  SslButton1->activate();
-  SslButton2->activate();
-}
-
-// End of function
-Changed = false;
-return 0;} {}
-  }
-  Function {load_config_remote()} {return_type int
-  } {
-    code {int i;
-int ret;
-MemBuf Buffer;
-Vector list;
-
-// ======== Progress display ========
-// Say something...
-StatusDlgProgress->value(0);
-StatusDlgProgress->label("0%");
-StatusDlgGroup->label(mystrcat(LanguageXMLDownload_Config, " (1/5)"));
-StatusDlg->show();
-fl_wait(200);  // let fltk do its thing
-// ======== Progress display ========
-
-// Get remote languages listing
-ret = Server.getLanguages(list);
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-Language->clear();
-for(i = 0; i < list.size(); i++) {
-  Language->add(list.at(i)->Text);
-}
-
-// ======== Progress display ========
-// Say something...
-StatusDlgProgress->value(0);
-StatusDlgProgress->label("0%");
-StatusDlgGroup->label(mystrcat(LanguageXMLDownload_Config, " (2/5)"));
-StatusDlg->show();
-fl_wait(200);  // let fltk do its thing
-// ======== Progress display ========
-
-// Get remote protocols
-ret = Server.getDynamicProtocols(list);
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-VHostConf.loadProtocols(list);
-VHostConf.populateProtocol(Protocol);
-
-// ======== Progress display ========
-fl_wait(50);  // small delay
-StatusDlgProgress->value(0);
-StatusDlgProgress->label("0%");
-StatusDlgGroup->label(mystrcat(LanguageXMLDownload_Config, " (3/5)"));
-fl_wait(50);  // small delay
-// ======== Progress display ========
-
-// Load remote myserver.xml
-ret = Server.getMyserverConf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-
-xmlFile.close();
-ret = xmlFile.openMemBuf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -2;
-}
-
-load_myserver_core();
-
-// ======== Progress display ========
-fl_wait(50);  // small delay
-StatusDlgProgress->value(0);
-StatusDlgProgress->label("0%");
-StatusDlgGroup->label(mystrcat(LanguageXMLDownload_Config, " (4/5)"));
-fl_wait(50);  // small delay
-// ======== Progress display ========
-
-// Load remote MIMEtypes.xml
-ret = Server.getMIMEtypesConf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-
-ret = MimeConf.loadMemBuf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -2;
-}
-
-// Populate the interface
-MimeConf.populateExt(Ext);
-MimeConf.populateMime(Mime);
-
-// ======== Progress display ========
-fl_wait(50);  // small delay
-StatusDlgProgress->value(0);
-StatusDlgProgress->label("0%");
-StatusDlgGroup->label(mystrcat(LanguageXMLDownload_Config, " (5/5)"));
-fl_wait(50);  // small delay
-// ======== Progress display ========
-
-// Load remote virtualhosts.xml
-ret = Server.getVhostsConf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-
-ret = VHostConf.loadMemBuf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -2;
-}
-
-// Populate the interface
-VHostConf.populateName(Name);
-Name->value(0);
-VHostConf.populateHost(0, Host);
-VHostConf.populateIp(0, Ip);
-Port->value(VHostConf.getPort(0));
-Protocol->value(VHostConf.getProtocol(0));
-Ssl_Privatekey->value(VHostConf.getSsl_Privatekey(0));
-Ssl_Certificate->value(VHostConf.getSsl_Certificate(0));
-Ssl_Password->value(VHostConf.getSsl_Password(0));
-Docroot->value(VHostConf.getDocroot(0));
-Sysfolder->value(VHostConf.getSysfolder(0));
-Accesseslog->value(VHostConf.getAccesseslog(0));
-Warninglog->value(VHostConf.getWarninglog(0));
-Allow_CGI->value(VHostConf.getService(0, ALLOW_CGI));
-Allow_ISAPI->value(VHostConf.getService(0, ALLOW_ISAPI));
-Allow_MSCGI->value(VHostConf.getService(0, ALLOW_MSCGI));
-Allow_WINCGI->value(VHostConf.getService(0, ALLOW_WINCGI));
-Allow_FASTCGI->value(VHostConf.getService(0, ALLOW_FASTCGI));
-Allow_SCGI->value(VHostConf.getService(0, ALLOW_SCGI));
-Allow_SEND_LINK->value(VHostConf.getService(0, ALLOW_SEND_LINK));
-Allow_EXTERNAL_COMMANDS->value(VHostConf.getService(0, 
ALLOW_EXTERNAL_COMMANDS));
-Allow_SEND_FILE->value(VHostConf.getService(0, ALLOW_SEND_FILE));
-i = Protocol->value();
-if(i != 1 && i != 3) {
-  Ssl_Privatekey->deactivate();
-  Ssl_Certificate->deactivate();
-  Ssl_Password->deactivate();
-  SslButton1->deactivate();
-  SslButton2->deactivate();
-}
-else {
-  Ssl_Privatekey->activate();
-  Ssl_Certificate->activate();
-  Ssl_Password->activate();
-  SslButton1->activate();
-  SslButton2->activate();
-}
-
-// ======== Progress display ========
-fl_wait(500);  // oooo aaa effect
-StatusDlg->hide();
-// ======== Progress display ========
-
-// End of function
-Changed = false;
-return 0;} {}
-  }
-  Function {load_myserver_core()} {return_type int
-  } {
-    code {char * chrptr;
-int i;
-// <LANGUAGE>
-Language->value(0);
-for(i = 0; i < Language->size(); i++) {
-  if(strcmpi(getValueXML("LANGUAGE"), Language->text(i)) == 0) {
-    Language->value(i);
-    break;
-  }
-}
-
-// <VERBOSITY>
-Verbosity->value(atoi(getValueXML("VERBOSITY")));
-
-// <NTHREADS_STATIC>
-Nthreads_Static->value(atoi(getValueXML("NTHREADS_STATIC")));
-
-// <NTHREADS_MAX>
-Nthreads_Max->value(atoi(getValueXML("NTHREADS_MAX")));
-
-// <BUFFER_SIZE>
-Buffer_Size->value(atoi(getValueXML("BUFFER_SIZE")));
-
-// <DEFAULT_FILENAME>
-Default_Filename->clear();
-xmlDocPtr xmlDoc = xmlFile.getDoc();
-for(xmlNode *node = xmlDoc->children; node; node = node->next)
-{
-       if(!xmlStrcmp(node->name, (const xmlChar *)"MYSERVER"))
-       {
-               for(node = node->children; node; node = node->next)
-               {
-                       if(!xmlStrcmp(node->name, (const xmlChar 
*)"DEFAULT_FILENAME"))
-                       {
-                                 
Default_Filename->add((char*)node->children->content);
-                       }
-               }
-               break;
-       }
-}
-
-// <CONNECTION_TIMEOUT>
-Connection_Timeout->value(atoi(getValueXML("CONNECTION_TIMEOUT")));
-
-// <USE_ERRORS_FILES>
-chrptr = xmlFile.getValue("USE_ERRORS_FILES");
-if(chrptr != 0 && chrptr[0] == 'Y' && chrptr[1] == 'E')
-  Use_Errors_Files->set();
-else
-  Use_Errors_Files->clear();
-
-// <MAX_CONNECTIONS>
-Max_Connections->value(atoi(getValueXML("MAX_CONNECTIONS")));
-
-// <MAX_LOG_FILE_SIZE>
-Max_Log_File_Size->value(atoi(getValueXML("MAX_LOG_FILE_SIZE")));
-
-// <BROWSEFOLDER_CSS>
-Browsefolder_Css->value(getValueXML("BROWSEFOLDER_CSS"));
-
-// <SERVER_ADMIN>
-Server_Admin->value(getValueXML("SERVER_ADMIN"));
-
-// <GZIP_THRESHOLD>
-Gzip_Threshold->value(atoi(getValueXML("GZIP_THRESHOLD")));
-
-// <CONTROL_ENABLED>
-chrptr = xmlFile.getValue("CONTROL_ENABLED");
-if(chrptr != 0 && chrptr[0] == 'Y' && chrptr[1] == 'E') {
-  Control_Enabled->set();
-  Control_Admin->activate();
-  Control_Password->activate();
-  // <CONTROL_ADMIN>
-  Control_Admin->value(getValueXML("CONTROL_ADMIN"));
-  // <CONTROL_PASSWORD>
-  Control_Password->value("");
-}
-else {
-  Control_Enabled->clear();
-  Control_Admin->deactivate();
-  Control_Password->deactivate();
-  Control_Admin->value("");
-  Control_Password->value("");
-}
-
-//<ALLOW_ANONYMOUS>
-chrptr = xmlFile.getValue("ALLOW_ANONYMOUS");
-if(chrptr != 0 && chrptr[0] == 'Y' && chrptr[1] == 'E') {
-  Allow_Anonymous->set();
-} else {
-  Allow_Anonymous->clear();
-}
-//<ANONYMOUS_NEED_PASS>
-chrptr = xmlFile.getValue("ANONYMOUS_NEED_PASS");
-if(chrptr != 0 && chrptr[0] == 'Y' && chrptr[1] == 'E') {
-  Anonymous_Needs_Password->set();
-} else {
-  Anonymous_Needs_Password->clear();
-}
-if ( Allow_Anonymous->value() == 1 ){
-Anonymous_Needs_Password->activate();
-}
-else{
-Anonymous_Needs_Password->deactivate();
-}
-//<ALLOW_ASYNCHRONOUS_CMDS>
-chrptr = xmlFile.getValue("ALLOW_ASYNCHRONOUS_CMDS");
-if(chrptr != 0 && chrptr[0] == 'Y' && chrptr[1] == 'E') {
-  Allow_Asynchronous_Cmds->set();
-} else {
-  Allow_Asynchronous_Cmds->clear();
-}
-//<ALLOW_PIPELINING>
-chrptr = xmlFile.getValue("ALLOW_PIPELINING");
-if(chrptr != 0 && chrptr[0] == 'Y' && chrptr[1] == 'E') {
-  Allow_Pipelining->set();
-} else {
-  Allow_Pipelining->clear();
-}
-//<ALLOW_STORE>
-chrptr = xmlFile.getValue("ALLOW_STORE");
-if(chrptr != 0 && chrptr[0] == 'Y' && chrptr[1] == 'E') {
-  Allow_Store_Cmds->set();
-} else {
-  Allow_Store_Cmds->clear();
-}
-
-// End of myserver.xml file
-return 0;} {}
-  }
-  Function {save_config()} {return_type int
-  } {
-    code {const char * filename;
-\#ifndef WIN32
-const int FBSIZE = strlen(getenv("HOME")) + 40;
-char FileBuffer[FBSIZE];
-\#endif
-
-// Saveing of main myserver.xml file
-
-switch(ConfType) {
-  case 1 :
-    filename = "myserver.xml";
-    break;
-\#ifndef WIN32
-  case 2 :
-    snprintf(FileBuffer, FBSIZE, "%s/.myserver/myserver.xml", getenv("HOME"));
-    filename = FileBuffer;
-    break;
-  case 3 :
-    filename = "/etc/myserver/myserver.xml";
-    break;
-\#endif
-  default :
-    return -1;
-    break;
-}
-
-xmlFile.close();
-
-if(xmlFile.open(filename) != 0)
-  return -1;
-
-save_myserver_core();
-
-xmlFile.save(filename);
-
-// Saveing of MIMEtypes.xml file
-switch(ConfType) {
-  case 1 :
-    filename = "MIMEtypes.xml";
-    break;
-\#ifndef WIN32
-  case 2 :
-    snprintf(FileBuffer, FBSIZE, "%s/.myserver/MIMEtypes.xml", getenv("HOME"));
-    filename = FileBuffer;
-    break;
-  case 3 :
-    filename = "/etc/myserver/MIMEtypes.xml";
-    break;
-\#endif
-  default :
-    return -1;
-    break;
-}
-
-// Save the file
-if(MimeConf.save(filename))
-  return -1;
-
-// Saveing of virtualhosts.xml file
-switch(ConfType) {
-  case 1 :
-    filename = "virtualhosts.xml";
-    break;
-\#ifndef WIN32
-  case 2 :
-    snprintf(FileBuffer, FBSIZE, "%s/.myserver/virtualhosts.xml", 
getenv("HOME"));
-    filename = FileBuffer;
-    break;
-  case 3 :
-    filename = "/etc/myserver/virtualhosts.xml";
-    break;
-\#endif
-  default :
-    return -1;
-    break;
-}
-
-// Save the file
-if(VHostConf.save(filename))
-  return -1;
-
-// End of function
-Changed = false;
-return 0;} {}
-  }
-  Function {save_config_remote()} {return_type int
-  } {
-    code {int ret;
-MemBuf Buffer;
-
-// ======== Progress display ========
-// Say something...
-StatusDlgProgress->value(0);
-StatusDlgProgress->label("0%");
-StatusDlgGroup->label(mystrcat(LanguageXMLSend_Config, " (1/3)"));
-StatusDlg->show();
-fl_wait(200);  // let fltk do its thing
-// ======== Progress display ========
-
-ret = Server.sendDisableReboot();
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-
-// Send myserver.xml
-save_myserver_core();
-
-xmlFile.saveMemBuf(Buffer);
-
-ret = Server.sendMyserverConf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-
-// ======== Progress display ========
-fl_wait(50);  // small delay
-StatusDlgProgress->value(0);
-StatusDlgProgress->label("0%");
-StatusDlgGroup->label(mystrcat(LanguageXMLSend_Config, " (2/3)"));
-fl_wait(50);  // small delay
-// ======== Progress display ========
-
-// Send MIMEtypes.xml
-ret = MimeConf.saveMemBuf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -2;
-}
-
-ret = Server.sendMIMEtypesConf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-
-// ======== Progress display ========
-fl_wait(50);  // small delay
-StatusDlgProgress->value(0);
-StatusDlgProgress->label("0%");
-StatusDlgGroup->label(mystrcat(LanguageXMLSend_Config, " (3/3)"));
-fl_wait(50);  // small delay
-// ======== Progress display ========
-
-// Send virtualhosts.xml
-ret = VHostConf.saveMemBuf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -2;
-}
-
-ret = Server.sendVhostsConf(Buffer);
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-
-ret = Server.sendEnableReboot();
-if(ret) {
-  StatusDlg->hide();
-  return -1;
-}
-
-// ======== Progress display ========
-fl_wait(500);  // oooo aaa effect
-StatusDlg->hide();
-// ======== Progress display ========
-
-// End of function
-Changed = false;
-return 0;} {}
-  }
-  Function {save_myserver_core()} {return_type int
-  } {
-    code {char Buffer[256];
-int i;
-
-if(!xmlFile.getDoc()) {  // the file dose not exist so make one
-   xmlFile.newfile("MYSERVER");
-}
-
-// <LANGUAGE>
-setValueXML("LANGUAGE", Language->text());
-
-// <VERBOSITY>
-i = (int)Verbosity->value();
-snprintf(Buffer, 256, "%d", i);
-setValueXML("VERBOSITY", Buffer);
-
-// <NTHREADS_STATIC>
-i = (int)Nthreads_Static->value();
-snprintf(Buffer, 256, "%d", i);
-setValueXML("NTHREADS_STATIC", Buffer);
-
-// <NTHREADS_MAX>
-i = (int)Nthreads_Max->value();
-snprintf(Buffer, 256, "%d", i);
-setValueXML("NTHREADS_MAX", Buffer);
-
-// <BUFFER_SIZE>
-i = (int)Buffer_Size->value();
-snprintf(Buffer, 256, "%d", i);
-setValueXML("BUFFER_SIZE", Buffer);
-
-// <DEFAULT_FILENAME>
-for(i = 0; i < Default_Filename->size(); i++) {
-  setValueXML("DEFAULT_FILENAME",  Default_Filename->text(i + 1));
-}
-
-// <CONNECTION_TIMEOUT>
-i = (int)Connection_Timeout->value();
-snprintf(Buffer, 256, "%d", i);
-setValueXML("CONNECTION_TIMEOUT", Buffer);
-
-// <USE_ERRORS_FILES>
-if(Use_Errors_Files->value())
-  setValueXML("USE_ERRORS_FILES", "YES");
-else
-  setValueXML("USE_ERRORS_FILES", "NO");
-
-// <MAX_CONNECTIONS>
-i = (int)Max_Connections->value();
-snprintf(Buffer, 256, "%d", i);
-setValueXML("MAX_CONNECTIONS", Buffer);
-
-// <MAX_LOG_FILE_SIZE>
-i = (int)Max_Log_File_Size->value();
-snprintf(Buffer, 256, "%d", i);
-setValueXML("MAX_LOG_FILE_SIZE", Buffer);
-
-// <BROWSEFOLDER_CSS>
-setValueXML("BROWSEFOLDER_CSS", Browsefolder_Css->value());
-
-// <SERVER_ADMIN>
-setValueXML("SERVER_ADMIN", Server_Admin->value());
-
-// <GZIP_THRESHOLD>
-i = (int)Gzip_Threshold->value();
-snprintf(Buffer, 256, "%d", i);
-setValueXML("GZIP_THRESHOLD", Buffer);
-
-// <CONTROL_ENABLED>
-if(Control_Enabled->value() == 1) {
-  setValueXML("CONTROL_ENABLED", "YES");
-  // <CONTROL_ADMIN>
-  setValueXML("CONTROL_ADMIN", Control_Admin->value());
-  // <CONTROL_PASSWORD>
-  const char * chrptr = Control_Password->value();
-  if(chrptr[0] != '\\0') {
-    char tempbuffer[32];
-    Md5 md5;
-    md5.init();
-    md5.update((const unsigned char*)chrptr, strlen(chrptr));
-    md5.end(tempbuffer);
-    setValueXML("CONTROL_PASSWORD", tempbuffer);
-    xmlFile.setAttr("MD5", "YES");
-  }
-}
-else {
-  setValueXML("CONTROL_ENABLED", "NO");
-}
-
-//<ALLOW_ANONYMOUS>
-if(Allow_Anonymous->value() == 1) {
-  setValueXML("ALLOW_ANONYMOUS", "YES");
-} else {
-  setValueXML("ALLOW_ANONYMOUS", "NO");
-}
-//<ANONYMOUS_NEED_PASS>
-if(Anonymous_Needs_Password->value() == 1) {
-  setValueXML("ANONYMOUS_NEED_PASS", "YES");
-} else {
-  setValueXML("ANONYMOUS_NEED_PASS", "NO");
-}
-//<ALLOW_ASYNCHRONOUS_CMDS>
-if(Allow_Asynchronous_Cmds->value() == 1) {
-  setValueXML("ALLOW_ASYNCHRONOUS_CMDS", "YES");
-} else {
-  setValueXML("ALLOW_ASYNCHRONOUS_CMDS", "NO");
-}
-//<ALLOW_PIPELINING>
-if(Allow_Pipelining->value() == 1) {
-  setValueXML("ALLOW_PIPELINING", "YES");
-} else {
-  setValueXML("ALLOW_PIPELINING", "NO");
-}
-//<ALLOW_STORE>
-if(Allow_Store_Cmds->value() == 1) {
-  setValueXML("ALLOW_STORE", "YES");
-} else {
-  setValueXML("ALLOW_STORE", "NO");
-}
-
-// End of myserver.xml file
-return 0;} {}
-  }
-  Function {setDynamic(Vector & list)} {return_type void
-  } {
-    code {VHostConf.loadProtocols(list);
-VHostConf.populateProtocol(Protocol);} {}
-  }
-  decl {int ConfType;} {public
-  }
-  Function {getValueXML(const char * name)} {private return_type {const char *}
-  } {
-    code {char * chrptr;
-chrptr = xmlFile.getValue((char *)name);
-if(chrptr == 0)
-  return "";
-return chrptr;} {}
-  }
-  Function {setValueXML(const char * name, const char * value)} {private 
return_type void
-  } {
-    code {char * chrptr;
-chrptr = xmlFile.getValue((char *)name);
-if(chrptr == 0)
-  xmlFile.addChild(name, value);
-else
-  xmlFile.setValue((char *)name, (char *)value);} {}
-  }
-  Function {ServerLogout()} {private return_type void
-  } {
-    code {Server.Logout();
-MenuLogout->deactivate();
-MenuGetConfig->deactivate();
-MenuSendConfig->deactivate();
-MenuConnections->deactivate();
-MenuReboot->deactivate();} {}
-  }
-  Function {ServerLogin(bool stat)} {private return_type int
-  } {
-    code {LoginDlg->show();
-int ret;
-for(;;) {
-  Fl_Widget *o = Fl::readqueue();
-  if(!o) Fl::wait();
-  else if(o == LoginDlgOK) {ret = 0; break;}
-  else if(o == LoginDlgCancel) {ret = -1; break;}
-  else if(o == LoginDlg) {ret = -1; break;}
-}
-LoginDlg->hide();
-
-if(ret) {
-  LoginDlgPass->value("");
-  return -1;
-}
-
-if(stat) {
-  // Say something...
-  StatusDlgProgress->value(0);
-  StatusDlgProgress->label("0%");
-  StatusDlgGroup->label(LanguageXMLConnect_Server);
-  StatusDlg->show();
-  fl_wait(200);  // let fltk do its thing
-}
-
-ret = Server.Login(LoginDlgAddress->value(),
-                   (int)LoginDlgPort->value(),
-                   LoginDlgName->value(),
-                   LoginDlgPass->value());
-
-LoginDlgPass->value("");
-
-if(ret) {
-  StatusDlg->hide();
-  fl_alertcat(LanguageXMLLogin_Failed, Server.LastCode);
-  return -1;
-}
-
-MenuLogout->activate();
-MenuGetConfig->activate();
-MenuSendConfig->activate();
-MenuConnections->activate();
-MenuReboot->activate();
-
-if(stat) {
-  // Show we are done...
-  StatusDlgProgress->value(100);
-  StatusDlgProgress->label("100%");
-  fl_wait(500);  // oooo aaa effect
-  StatusDlg->hide();
-}
-
-return 0;} {}
-  }
-  Function {ServerConnections()} {private return_type void
-  } {
-    code {int ret;
-int time;
-int i;
-MemBuf MSvr;
-Vector list;
-ConnectionsDlgVr->value("");
-ConnectionsDlgList->clear();
-ConnectionsDlg->show();
-fl_wait(200);
-
-// see if we are connected by getting the vr
-ret = Server.getVersion(MSvr);
-
-if(ret) { // relogin?
-  ret = ServerLogin(false);
-  if(!ret) {
-    ret = Server.getVersion(MSvr);
-  }
-}
-
-if(ret) { // no dice
-  fl_alert(LanguageXMLCannot_Connect);
-  ConnectionsDlg->hide();
-  return;
-}
-
-// update display
-MSvr << '\\0';
-ConnectionsDlgVr->value((const char *)MSvr.getBuffer());
-
-time = getTicks();
-ConnectionsDlgList->clear();
-ret = Server.getConnections(list);
-
-if(ret) {
-  fl_alertcat(LanguageXMLServer_Closed, Server.LastCode);
-  ConnectionsDlg->hide();
-  ServerLogout();
-  return;
-}
-
-list.sort();
-for(i = 0; i < list.size(); i++) {
-  ConnectionsDlgList->add(list.at(i)->Text);
-}
-
-for(;;) {
-  Fl_Widget *o = Fl::readqueue();
-  if(!o) Fl::wait(1);
-  else if(o == ConnectionsDlgDone) {break; }
-  else if(o == ConnectionsDlg) {break; }
-  else if(o == ConnectionsDlgKill) {
-    i = ConnectionsDlgList->value();
-    if(i != 0) {
-      ret = Server.sendKillConnection(list.at(i - 1));
-      if(ret) {
-        fl_alertcat(LanguageXMLServer_Closed, Server.LastCode);
-        ServerLogout();
-        break;
-      } // if
-      // A cheap trick
-      time = (int)getTicks() - (int)ConnectionsDlgRate->value() * 2000;
-    } // if
-  } // else if
-
-  if((int)(getTicks() - time) > (int)ConnectionsDlgRate->value() * 1000) {
-    time = getTicks();
-    ConnectionsDlgList->clear();
-    ret = Server.getConnections(list);
-
-    if(ret) {
-      fl_alertcat(LanguageXMLServer_Closed, Server.LastCode);
-      ServerLogout();
-      break;
-    } // if
-
-    list.sort();
-    for(i = 0; i < list.size(); i++) {
-      ConnectionsDlgList->add(list.at(i)->Text);
-    } // for
-  } // if
-} // for
-
-ConnectionsDlg->hide();} {}
-  }
-  Function {regex_input(const char * capt, bool & reg)} {private return_type 
{char *}
-  } {
-    code {fl_beep(FL_BEEP_QUESTION);
-RegaskDlgInput->value("");
-RegaskDlgInput->label(capt);
-RegaskDlgRegex->value(false);
-RegaskDlg->hotspot(RegaskDlgCancel);
-RegaskDlg->show();
-int ret;
-for(;;) {
-  Fl_Widget *o = Fl::readqueue();
-  if(!o) Fl::wait();
-  else if(o == RegaskDlgOK) {ret = 0; break;}
-  else if(o == RegaskDlgCancel) {ret = -1; break;}
-  else if(o == RegaskDlg) {ret = -1; break;}
-}
-RegaskDlg->hide();
-
-if(ret || strcmp(RegaskDlgInput->value(), "") == 0) {
-  return NULL;
-}
-  
-reg = RegaskDlgRegex->value();
-return (char *)RegaskDlgInput->value();} {}
-  }
-  Function {fl_alertcat(const char * c1, const char * c2)} {private 
return_type void
-  } {
-    code {char temp[strlen(c1) + strlen(c2)];
-strncpy(temp, c1, (strlen(c1) + strlen(c2)));
-strncat(temp, c2, (strlen(c1) + strlen(c2) + 1));
-fl_alert(temp);} {}
-  }
-  Function {fl_wait(int len)} {private return_type void
-  } {
-    code {int time = (int)getTicks();
-while((int)(getTicks() - time) < len) {
-  Fl::wait(0);
-}} {}
-  }
-  Function {mystrcat(const char * a, const char * b)} {private return_type 
{const char *}
-  } {
-    code {static char temp[255];
-strncpy(temp, a, 255);
-strncat(temp, b, 255);
-return temp;} {}
-  }
-  decl {bool Changed;} {}
-  decl {MIMEtypeXML MimeConf;} {}
-  decl {VHostXML VHostConf;} {}
-  decl {XmlParser xmlFile;} {}
-  decl {ControlClient Server;} {}
-} 
diff --git a/misc/control/control/fltkconfig.h 
b/misc/control/control/fltkconfig.h
deleted file mode 100644
index b8b0f9a..0000000
--- a/misc/control/control/fltkconfig.h
+++ /dev/null
@@ -1,439 +0,0 @@
-// generated by Fast Light User Interface Designer (fluid) version 1.0108
-
-#ifndef fltkconfig_h
-#define fltkconfig_h
-#include <FL/Fl.H>
-#include <FL/Fl_Double_Window.H>
-#include <FL/Fl_Menu_Bar.H>
-#include <FL/Fl_Tabs.H>
-#include <FL/Fl_Group.H>
-#include <FL/Fl_Value_Input.H>
-#include <FL/Fl_Choice.H>
-#include <FL/Fl_Input.H>
-#include <FL/Fl_Button.H>
-#include <FL/Fl_Check_Button.H>
-#include <FL/Fl_Browser.H>
-#include <FL/Fl_Box.H>
-#include <FL/Fl_Round_Button.H>
-#include <FL/Fl_Return_Button.H>
-#include <FL/Fl_Text_Display.H>
-#include <FL/Fl_Progress.H>
-#include <FL/Fl_Output.H>
-#include <FL/Fl_Counter.H>
-#include <FL/Fl_File_Chooser.H>
-#include <FL/fl_ask.H>
-
-#include <include/base/xml/xml_parser.h>
-#include <include/base/string/stringutils.h>
-#include <include/base/md5/md5.h>
-#include <include/base/utility.h>
-#include "service.h"
-#include "language.h"
-#include "mimetype.h"
-#include "vhost.h"
-#include "control_client.h"
-#include "progress.h"
-
-class MainDlg {
-public:
-  Fl_Double_Window* make_window();
-  Fl_Double_Window *ConfDlg;
-private:
-  void cb_ConfDlg_i(Fl_Double_Window*, void*);
-  static void cb_ConfDlg(Fl_Double_Window*, void*);
-  static Fl_Menu_Item menu_[];
-  void cb_Open_i(Fl_Menu_*, void*);
-  static void cb_Open(Fl_Menu_*, void*);
-  void cb_Save_i(Fl_Menu_*, void*);
-  static void cb_Save(Fl_Menu_*, void*);
-  void cb_Revert_i(Fl_Menu_*, void*);
-  static void cb_Revert(Fl_Menu_*, void*);
-  void cb_as_i(Fl_Menu_*, void*);
-  static void cb_as(Fl_Menu_*, void*);
-  void cb_as1_i(Fl_Menu_*, void*);
-  static void cb_as1(Fl_Menu_*, void*);
-  void cb_Console_i(Fl_Menu_*, void*);
-  static void cb_Console(Fl_Menu_*, void*);
-  void cb_Service_i(Fl_Menu_*, void*);
-  static void cb_Service(Fl_Menu_*, void*);
-  void cb_Quit_i(Fl_Menu_*, void*);
-  static void cb_Quit(Fl_Menu_*, void*);
-  void cb_Install_i(Fl_Menu_*, void*);
-  static void cb_Install(Fl_Menu_*, void*);
-  void cb_Remove_i(Fl_Menu_*, void*);
-  static void cb_Remove(Fl_Menu_*, void*);
-  void cb_Login_i(Fl_Menu_*, void*);
-  static void cb_Login(Fl_Menu_*, void*);
-public:
-  static Fl_Menu_Item *MenuLogout;
-private:
-  void cb_MenuLogout_i(Fl_Menu_*, void*);
-  static void cb_MenuLogout(Fl_Menu_*, void*);
-public:
-  static Fl_Menu_Item *MenuGetConfig;
-private:
-  void cb_MenuGetConfig_i(Fl_Menu_*, void*);
-  static void cb_MenuGetConfig(Fl_Menu_*, void*);
-public:
-  static Fl_Menu_Item *MenuSendConfig;
-private:
-  void cb_MenuSendConfig_i(Fl_Menu_*, void*);
-  static void cb_MenuSendConfig(Fl_Menu_*, void*);
-public:
-  static Fl_Menu_Item *MenuConnections;
-private:
-  void cb_MenuConnections_i(Fl_Menu_*, void*);
-  static void cb_MenuConnections(Fl_Menu_*, void*);
-public:
-  static Fl_Menu_Item *MenuReboot;
-private:
-  void cb_MenuReboot_i(Fl_Menu_*, void*);
-  static void cb_MenuReboot(Fl_Menu_*, void*);
-  void cb_About_i(Fl_Menu_*, void*);
-  static void cb_About(Fl_Menu_*, void*);
-public:
-  Fl_Value_Input *Buffer_Size;
-private:
-  void cb_Buffer_Size_i(Fl_Value_Input*, void*);
-  static void cb_Buffer_Size(Fl_Value_Input*, void*);
-public:
-  Fl_Choice *Verbosity;
-private:
-  void cb_Verbosity_i(Fl_Choice*, void*);
-  static void cb_Verbosity(Fl_Choice*, void*);
-  static Fl_Menu_Item menu_Verbosity[];
-public:
-  Fl_Value_Input *Max_Log_File_Size;
-private:
-  void cb_Max_Log_File_Size_i(Fl_Value_Input*, void*);
-  static void cb_Max_Log_File_Size(Fl_Value_Input*, void*);
-public:
-  Fl_Value_Input *Nthreads_Static;
-private:
-  void cb_Nthreads_Static_i(Fl_Value_Input*, void*);
-  static void cb_Nthreads_Static(Fl_Value_Input*, void*);
-public:
-  Fl_Value_Input *Nthreads_Max;
-private:
-  void cb_Nthreads_Max_i(Fl_Value_Input*, void*);
-  static void cb_Nthreads_Max(Fl_Value_Input*, void*);
-public:
-  Fl_Choice *Language;
-private:
-  void cb_Language_i(Fl_Choice*, void*);
-  static void cb_Language(Fl_Choice*, void*);
-public:
-  Fl_Value_Input *Connection_Timeout;
-private:
-  void cb_Connection_Timeout_i(Fl_Value_Input*, void*);
-  static void cb_Connection_Timeout(Fl_Value_Input*, void*);
-public:
-  Fl_Value_Input *Max_Connections;
-private:
-  void cb_Max_Connections_i(Fl_Value_Input*, void*);
-  static void cb_Max_Connections(Fl_Value_Input*, void*);
-public:
-  Fl_Value_Input *Gzip_Threshold;
-private:
-  void cb_Gzip_Threshold_i(Fl_Value_Input*, void*);
-  static void cb_Gzip_Threshold(Fl_Value_Input*, void*);
-public:
-  Fl_Input *Browsefolder_Css;
-private:
-  void cb_Browsefolder_Css_i(Fl_Input*, void*);
-  static void cb_Browsefolder_Css(Fl_Input*, void*);
-  void cb_Browse_i(Fl_Button*, void*);
-  static void cb_Browse(Fl_Button*, void*);
-public:
-  Fl_Check_Button *Use_Errors_Files;
-private:
-  void cb_Use_Errors_Files_i(Fl_Check_Button*, void*);
-  static void cb_Use_Errors_Files(Fl_Check_Button*, void*);
-public:
-  Fl_Browser *Default_Filename;
-private:
-  void cb_Add_i(Fl_Button*, void*);
-  static void cb_Add(Fl_Button*, void*);
-  void cb_Remove1_i(Fl_Button*, void*);
-  static void cb_Remove1(Fl_Button*, void*);
-public:
-  Fl_Browser *Ext;
-private:
-  void cb_Ext_i(Fl_Browser*, void*);
-  static void cb_Ext(Fl_Browser*, void*);
-  void cb_Add1_i(Fl_Button*, void*);
-  static void cb_Add1(Fl_Button*, void*);
-  void cb_Remove2_i(Fl_Button*, void*);
-  static void cb_Remove2(Fl_Button*, void*);
-public:
-  Fl_Choice *Mime;
-private:
-  void cb_Mime_i(Fl_Choice*, void*);
-  static void cb_Mime(Fl_Choice*, void*);
-  void cb_Add2_i(Fl_Button*, void*);
-  static void cb_Add2(Fl_Button*, void*);
-public:
-  Fl_Choice *Cmd;
-private:
-  void cb_Cmd_i(Fl_Choice*, void*);
-  static void cb_Cmd(Fl_Choice*, void*);
-  static Fl_Menu_Item menu_Cmd[];
-public:
-  Fl_Input *Manager;
-private:
-  void cb_Manager_i(Fl_Input*, void*);
-  static void cb_Manager(Fl_Input*, void*);
-public:
-  Fl_Button *ManagerButton;
-private:
-  void cb_ManagerButton_i(Fl_Button*, void*);
-  static void cb_ManagerButton(Fl_Button*, void*);
-public:
-  Fl_Choice *Name;
-private:
-  void cb_Name_i(Fl_Choice*, void*);
-  static void cb_Name(Fl_Choice*, void*);
-  void cb_Add3_i(Fl_Button*, void*);
-  static void cb_Add3(Fl_Button*, void*);
-  void cb_Remove3_i(Fl_Button*, void*);
-  static void cb_Remove3(Fl_Button*, void*);
-public:
-  Fl_Choice *Protocol;
-private:
-  void cb_Protocol_i(Fl_Choice*, void*);
-  static void cb_Protocol(Fl_Choice*, void*);
-  static Fl_Menu_Item menu_Protocol[];
-public:
-  Fl_Input *Ssl_Privatekey;
-private:
-  void cb_Ssl_Privatekey_i(Fl_Input*, void*);
-  static void cb_Ssl_Privatekey(Fl_Input*, void*);
-public:
-  Fl_Input *Ssl_Certificate;
-private:
-  void cb_Ssl_Certificate_i(Fl_Input*, void*);
-  static void cb_Ssl_Certificate(Fl_Input*, void*);
-public:
-  Fl_Input *Ssl_Password;
-private:
-  void cb_Ssl_Password_i(Fl_Input*, void*);
-  static void cb_Ssl_Password(Fl_Input*, void*);
-public:
-  Fl_Button *SslButton1;
-private:
-  void cb_SslButton1_i(Fl_Button*, void*);
-  static void cb_SslButton1(Fl_Button*, void*);
-public:
-  Fl_Button *SslButton2;
-private:
-  void cb_SslButton2_i(Fl_Button*, void*);
-  static void cb_SslButton2(Fl_Button*, void*);
-public:
-  Fl_Browser *Host;
-  Fl_Browser *Ip;
-private:
-  void cb_Add4_i(Fl_Button*, void*);
-  static void cb_Add4(Fl_Button*, void*);
-  void cb_Remove4_i(Fl_Button*, void*);
-  static void cb_Remove4(Fl_Button*, void*);
-  void cb_Add5_i(Fl_Button*, void*);
-  static void cb_Add5(Fl_Button*, void*);
-  void cb_Remove5_i(Fl_Button*, void*);
-  static void cb_Remove5(Fl_Button*, void*);
-public:
-  Fl_Value_Input *Port;
-private:
-  void cb_Port_i(Fl_Value_Input*, void*);
-  static void cb_Port(Fl_Value_Input*, void*);
-public:
-  Fl_Check_Button *Allow_CGI;
-private:
-  void cb_Allow_CGI_i(Fl_Check_Button*, void*);
-  static void cb_Allow_CGI(Fl_Check_Button*, void*);
-public:
-  Fl_Check_Button *Allow_ISAPI;
-private:
-  void cb_Allow_ISAPI_i(Fl_Check_Button*, void*);
-  static void cb_Allow_ISAPI(Fl_Check_Button*, void*);
-public:
-  Fl_Check_Button *Allow_MSCGI;
-private:
-  void cb_Allow_MSCGI_i(Fl_Check_Button*, void*);
-  static void cb_Allow_MSCGI(Fl_Check_Button*, void*);
-public:
-  Fl_Check_Button *Allow_WINCGI;
-private:
-  void cb_Allow_WINCGI_i(Fl_Check_Button*, void*);
-  static void cb_Allow_WINCGI(Fl_Check_Button*, void*);
-public:
-  Fl_Check_Button *Allow_FASTCGI;
-private:
-  void cb_Allow_FASTCGI_i(Fl_Check_Button*, void*);
-  static void cb_Allow_FASTCGI(Fl_Check_Button*, void*);
-public:
-  Fl_Check_Button *Allow_SCGI;
-private:
-  void cb_Allow_SCGI_i(Fl_Check_Button*, void*);
-  static void cb_Allow_SCGI(Fl_Check_Button*, void*);
-public:
-  Fl_Check_Button *Allow_SEND_LINK;
-private:
-  void cb_Allow_SEND_LINK_i(Fl_Check_Button*, void*);
-  static void cb_Allow_SEND_LINK(Fl_Check_Button*, void*);
-public:
-  Fl_Check_Button *Allow_EXTERNAL_COMMANDS;
-private:
-  void cb_Allow_EXTERNAL_COMMANDS_i(Fl_Check_Button*, void*);
-  static void cb_Allow_EXTERNAL_COMMANDS(Fl_Check_Button*, void*);
-public:
-  Fl_Check_Button *Allow_SEND_FILE;
-private:
-  void cb_Allow_SEND_FILE_i(Fl_Check_Button*, void*);
-  static void cb_Allow_SEND_FILE(Fl_Check_Button*, void*);
-public:
-  Fl_Input *Docroot;
-private:
-  void cb_Docroot_i(Fl_Input*, void*);
-  static void cb_Docroot(Fl_Input*, void*);
-public:
-  Fl_Input *Sysfolder;
-private:
-  void cb_Sysfolder_i(Fl_Input*, void*);
-  static void cb_Sysfolder(Fl_Input*, void*);
-  void cb_Browse1_i(Fl_Button*, void*);
-  static void cb_Browse1(Fl_Button*, void*);
-  void cb_Browse2_i(Fl_Button*, void*);
-  static void cb_Browse2(Fl_Button*, void*);
-public:
-  Fl_Input *Accesseslog;
-private:
-  void cb_Accesseslog_i(Fl_Input*, void*);
-  static void cb_Accesseslog(Fl_Input*, void*);
-public:
-  Fl_Input *Warninglog;
-private:
-  void cb_Warninglog_i(Fl_Input*, void*);
-  static void cb_Warninglog(Fl_Input*, void*);
-public:
-  Fl_Input *Server_Admin;
-private:
-  void cb_Server_Admin_i(Fl_Input*, void*);
-  static void cb_Server_Admin(Fl_Input*, void*);
-public:
-  Fl_Input *Control_Admin;
-private:
-  void cb_Control_Admin_i(Fl_Input*, void*);
-  static void cb_Control_Admin(Fl_Input*, void*);
-public:
-  Fl_Input *Control_Password;
-private:
-  void cb_Control_Password_i(Fl_Input*, void*);
-  static void cb_Control_Password(Fl_Input*, void*);
-public:
-  Fl_Check_Button *Control_Enabled;
-private:
-  void cb_Control_Enabled_i(Fl_Check_Button*, void*);
-  static void cb_Control_Enabled(Fl_Check_Button*, void*);
-public:
-  Fl_Check_Button *Allow_Anonymous;
-private:
-  void cb_Allow_Anonymous_i(Fl_Check_Button*, void*);
-  static void cb_Allow_Anonymous(Fl_Check_Button*, void*);
-public:
-  Fl_Check_Button *Anonymous_Needs_Password;
-private:
-  void cb_Anonymous_Needs_Password_i(Fl_Check_Button*, void*);
-  static void cb_Anonymous_Needs_Password(Fl_Check_Button*, void*);
-public:
-  Fl_Check_Button *Allow_Asynchronous_Cmds;
-private:
-  void cb_Allow_Asynchronous_Cmds_i(Fl_Check_Button*, void*);
-  static void cb_Allow_Asynchronous_Cmds(Fl_Check_Button*, void*);
-public:
-  Fl_Check_Button *Allow_Pipelining;
-private:
-  void cb_Allow_Pipelining_i(Fl_Check_Button*, void*);
-  static void cb_Allow_Pipelining(Fl_Check_Button*, void*);
-public:
-  Fl_Check_Button *Allow_Store_Cmds;
-private:
-  void cb_Allow_Store_Cmds_i(Fl_Check_Button*, void*);
-  static void cb_Allow_Store_Cmds(Fl_Check_Button*, void*);
-public:
-  Fl_Double_Window* make_type();
-  Fl_Double_Window *ConfTypeDlg;
-  Fl_Round_Button *ConfTypeDlgLocal;
-private:
-  void cb_ConfTypeDlgLocal_i(Fl_Round_Button*, void*);
-  static void cb_ConfTypeDlgLocal(Fl_Round_Button*, void*);
-public:
-  Fl_Round_Button *ConfTypeDlgUser;
-private:
-  void cb_ConfTypeDlgUser_i(Fl_Round_Button*, void*);
-  static void cb_ConfTypeDlgUser(Fl_Round_Button*, void*);
-public:
-  Fl_Round_Button *ConfTypeDlgGlobal;
-private:
-  void cb_ConfTypeDlgGlobal_i(Fl_Round_Button*, void*);
-  static void cb_ConfTypeDlgGlobal(Fl_Round_Button*, void*);
-public:
-  Fl_Return_Button *ConfTypeDlgOK;
-  Fl_Button *ConfTypeDlgCancel;
-  Fl_Double_Window* make_about();
-  Fl_Double_Window *AboutDlg;
-  Fl_Text_Display *AboutText;
-private:
-  void cb_OK_i(Fl_Return_Button*, void*);
-  static void cb_OK(Fl_Return_Button*, void*);
-public:
-  Fl_Double_Window* make_login();
-  Fl_Double_Window *LoginDlg;
-  Fl_Input *LoginDlgAddress;
-  Fl_Value_Input *LoginDlgPort;
-  Fl_Input *LoginDlgName;
-  Fl_Input *LoginDlgPass;
-  Fl_Return_Button *LoginDlgOK;
-  Fl_Button *LoginDlgCancel;
-  Fl_Double_Window* make_status();
-  Fl_Double_Window *StatusDlg;
-  Fl_Group *StatusDlgGroup;
-  Fl_Progress *StatusDlgProgress;
-  Fl_Double_Window* make_connections();
-  Fl_Double_Window *ConnectionsDlg;
-  Fl_Output *ConnectionsDlgVr;
-  Fl_Browser *ConnectionsDlgList;
-  Fl_Counter *ConnectionsDlgRate;
-  Fl_Button *ConnectionsDlgKill;
-  Fl_Button *ConnectionsDlgDone;
-  Fl_Double_Window* make_regask();
-  Fl_Double_Window *RegaskDlg;
-  Fl_Input *RegaskDlgInput;
-  Fl_Button *RegaskDlgCancel;
-  Fl_Return_Button *RegaskDlgOK;
-  Fl_Check_Button *RegaskDlgRegex;
-  int ask_type();
-  int load_config();
-  int load_config_remote();
-  int load_myserver_core();
-  int save_config();
-  int save_config_remote();
-  int save_myserver_core();
-  void setDynamic(Vector & list);
-  int ConfType; 
-private:
-  const char * getValueXML(const char * name);
-  void setValueXML(const char * name, const char * value);
-  void ServerLogout();
-  int ServerLogin(bool stat);
-  void ServerConnections();
-  char * regex_input(const char * capt, bool & reg);
-  void fl_alertcat(const char * c1, const char * c2);
-  void fl_wait(int len);
-  const char * mystrcat(const char * a, const char * b);
-  bool Changed; 
-  MIMEtypeXML MimeConf; 
-  VHostXML VHostConf; 
-  XmlParser xmlFile; 
-  ControlClient Server; 
-};
-#endif
diff --git a/misc/control/control/language.cpp 
b/misc/control/control/language.cpp
deleted file mode 100644
index 59ebd9d..0000000
--- a/misc/control/control/language.cpp
+++ /dev/null
@@ -1,410 +0,0 @@
-/*
- MyServer
- Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program.  If not, see <http://www.gnu.org/licenses/>.
-  */
-#include "language.h"
-
-extern "C"
-{
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-}
-
-#include <include/base/file/files_utility.h>
-
-// Debug flag.  Set this to print (to stdout) xml tags that were not found.
-// This will generate the expected xml data that was not found that can
-// be copied to the english file.
-//#define DEBUG
-
-// pre vector.cpp, but it works
-struct TextNode
-{
-   char * Val;
-   TextNode * next;
-};
-
-//
-// Some internal functions
-//
-static void LanguageXMLload();
-static inline const char * textmangler(const char *);
-static void AddText(char *);
-static void ClearList();
-static int LanguageXMLfile(const char *);
-
-//
-// State vars and file handels
-//
-static TextNode * TextList = NULL;
-static bool loaded = false;
-static bool loadok = true;
-static XmlParser xmlFile;
-
-//
-// Const strings used for dialogs and messages
-// 
-const char * LanguageXMLLast_Change;
-const char * LanguageXMLNot_Found;
-const char * LanguageXMLReload_Prev;
-const char * LanguageXMLEnter_Default;
-const char * LanguageXMLAbout_Text;
-const char * LanguageXMLEnter_Extension;
-const char * LanguageXMLEnter_MIME;
-const char * LanguageXMLEnter_Name;
-const char * LanguageXMLEnter_Host;
-const char * LanguageXMLEnter_Ip;
-const char * LanguageXMLDownload_Config;
-const char * LanguageXMLDownload_Failed;
-const char * LanguageXMLKill_All;
-const char * LanguageXMLSend_Config;
-const char * LanguageXMLUpload_Failed;
-const char * LanguageXMLNot_Save;
-const char * LanguageXMLReboot_Failed;
-const char * LanguageXMLConnect_Server;
-const char * LanguageXMLLogin_Failed;
-const char * LanguageXMLCannot_Connect;
-const char * LanguageXMLServer_Closed;
-const char * LanguageXMLYes;
-const char * LanguageXMLNo;
-
-///
-/// Add the ptr to the list for latter deletetion.
-///
-void AddText(char * val)
-{
-   TextNode * current = new TextNode;
-   current->Val = val;
-   current->next = TextList;
-   TextList = current;
-}
-
-///
-/// Delete all alcotatied memory.
-///
-void ClearList()
-{
-   TextNode * current;
-   while(TextList != NULL)
-     {
-       current = TextList;
-       TextList = TextList->next;
-       free(current->Val);
-       delete current;
-     }
-}
-
-///
-/// Initilize pointers and logic values.
-///
-void LanguageXMLinit()
-{
-   LanguageXMLLast_Change = strdup("Last change not saved.  Continue anyway?");
-   LanguageXMLNot_Found = strdup("Config files not found.");
-   LanguageXMLReload_Prev = strdup("Reload prevous values?");
-   LanguageXMLEnter_Default = strdup("Please enter a default file name:");
-   LanguageXMLAbout_Text = strdup("MyServer Configure (FLTK)\nCopyright (C) 
2002, 2003, 2004\nFree Software Foundation, Inc.\nThis program is licensed 
under the GPL.");
-   LanguageXMLEnter_Extension = strdup("Enter new extension (Example: html):");
-   LanguageXMLEnter_MIME = strdup("Enter new MIME type (Example: text/html):");
-   LanguageXMLEnter_Name = strdup("Enter a new name:");
-   LanguageXMLEnter_Host = strdup("Enter a new host name:");
-   LanguageXMLEnter_Ip = strdup("Enter a new IP:");
-   LanguageXMLDownload_Config = strdup("Downloading config files:");
-   LanguageXMLDownload_Failed = strdup("Download failed.  Code: ");
-   LanguageXMLKill_All = strdup("This will kill all connections.  Are you 
sure?");
-   LanguageXMLSend_Config = strdup("Sending config files:");
-   LanguageXMLUpload_Failed = strdup("Upload failed.  Code: ");
-   LanguageXMLNot_Save = strdup("Could not save.");
-   LanguageXMLReboot_Failed = strdup("Reboot failed.");
-   LanguageXMLConnect_Server = strdup("Connecting to server:");
-   LanguageXMLLogin_Failed = strdup("Login failed.  Code: ");
-   LanguageXMLCannot_Connect = strdup("Could not connect to server.");
-   LanguageXMLServer_Closed = strdup("Server closed connection.  Code: ");
-   LanguageXMLYes = strdup("Yes");
-   LanguageXMLNo = strdup("No");
-   loaded = false;
-   loadok = true;
-}
-
-///
-/// The cleanup function.
-/// This function should be called before exiting the program.
-///
-void LanguageXMLend()
-{
-   free((char *)LanguageXMLLast_Change);
-   free((char *)LanguageXMLNot_Found);
-   free((char *)LanguageXMLReload_Prev);
-   free((char *)LanguageXMLEnter_Default);
-   free((char *)LanguageXMLAbout_Text);
-   free((char *)LanguageXMLEnter_Extension);
-   free((char *)LanguageXMLEnter_MIME);
-   free((char *)LanguageXMLEnter_Name);
-   free((char *)LanguageXMLEnter_Host);
-   free((char *)LanguageXMLEnter_Ip);
-   free((char *)LanguageXMLDownload_Config);
-   free((char *)LanguageXMLDownload_Failed);
-   free((char *)LanguageXMLKill_All);
-   free((char *)LanguageXMLSend_Config);
-   free((char *)LanguageXMLUpload_Failed);
-   free((char *)LanguageXMLNot_Save);
-   free((char *)LanguageXMLReboot_Failed);
-   free((char *)LanguageXMLConnect_Server);
-   free((char *)LanguageXMLLogin_Failed);
-   free((char *)LanguageXMLCannot_Connect);
-   free((char *)LanguageXMLServer_Closed);
-   free((char *)LanguageXMLYes);
-   free((char *)LanguageXMLNo);
-   ClearList();
-}
-
-///
-/// Internal function to automaticaly free memory when seting to a
-/// new value.
-///
-static int SetValueXML(char ** dest, const char * tag)
-{
-   char * val;
-   val = xmlFile.getValue((char *)tag);
-   if(val != NULL)
-     {
-       free(*dest);
-       *dest = strdup(val);
-     }
-   return 0;
-}
-
-///
-/// Load the xml file and set const pointers.
-///
-int LanguageXMLfile(const char * filename)
-{
-   if(xmlFile.open((char *)filename))
-     return -1;
-
-   loaded = true;
-
-   SetValueXML((char **)&LanguageXMLLast_Change, "LAST_CHANGE");
-   SetValueXML((char **)&LanguageXMLNot_Found, "NOT_FOUND");
-   SetValueXML((char **)&LanguageXMLReload_Prev, "RELOAD_PREV");
-   SetValueXML((char **)&LanguageXMLEnter_Default, "ENTER_DEFAULT");
-   SetValueXML((char **)&LanguageXMLAbout_Text, "ABOUT_TEXT");
-   SetValueXML((char **)&LanguageXMLEnter_Extension, "ENTER_EXTENSION");
-   SetValueXML((char **)&LanguageXMLEnter_MIME, "ENTER_MIME");
-   SetValueXML((char **)&LanguageXMLEnter_Name, "ENTER_NAME");
-   SetValueXML((char **)&LanguageXMLEnter_Host, "ENTER_HOST");
-   SetValueXML((char **)&LanguageXMLEnter_Ip, "ENTER_IP");
-   SetValueXML((char **)&LanguageXMLDownload_Config, "DOWNLAD_CONFIG");
-   SetValueXML((char **)&LanguageXMLDownload_Failed, "DOWNLAD_FAILED");
-   SetValueXML((char **)&LanguageXMLKill_All, "KILL_ALL");
-   SetValueXML((char **)&LanguageXMLSend_Config, "SEND_CONFIG");
-   SetValueXML((char **)&LanguageXMLUpload_Failed, "UPLOAD_FAILED");
-   SetValueXML((char **)&LanguageXMLNot_Save, "NOT_SAVE");
-   SetValueXML((char **)&LanguageXMLReboot_Failed, "REBOOT_FAILED");
-   SetValueXML((char **)&LanguageXMLConnect_Server, "CONNECT_SERVER");
-   SetValueXML((char **)&LanguageXMLLogin_Failed, "LOGIN_FAILED");
-   SetValueXML((char **)&LanguageXMLCannot_Connect, "CANNOT_CONNECT");
-   SetValueXML((char **)&LanguageXMLServer_Closed, "SERVER_CLOSED");
-   SetValueXML((char **)&LanguageXMLYes, "YES");
-   SetValueXML((char **)&LanguageXMLNo, "NO");
-
-   return 0;
-}
-
-///
-/// Close the xml file.
-/// This is called before LanguageEnd at the end of the program.
-///
-void LanguageXMLclose()
-{
-   if(loaded)
-     {
-       xmlFile.close();
-       loaded = false;
-     }
-}
-
-///
-/// The *hack* to load the correct xml file.
-/// This looks for the myserver.xml file and grabs the name of the
-/// lanugage file.  Then it tries to load that file in the default
-/// locations.
-///
-void LanguageXMLload()
-{
-   char languages_path[MAX_PATH];
-   char language_file[MAX_PATH];
-   char main_configuration_file[MAX_PATH];
-   char * chrptr;
-   XmlParser xmlFile;
-   bool langFound = true;
-   bool confFound = true;
-   int ret;
-
-   LanguageXMLinit();
-
-   // Find the language files:
-#ifdef WIN32
-   strncpy(languages_path, "languages/", MAX_PATH);
-#else
-   if(FilesUtility::fileExists("languages"))
-     {
-       strncpy(languages_path, "languages/", MAX_PATH);
-     }
-   else
-     {
-# ifdef PREFIX
-       snprintf(languages_path, MAX_PATH, "%s/share/myserver/languages/", 
PREFIX);
-# else
-       strncpy(languages_path, "/usr/share/myserver/languages/", MAX_PATH);
-# endif
-     }
-   if(!(FilesUtility::fileExists(languages_path)))
-     {
-       loadok = false;
-       langFound = false;
-       return;
-     }
-#endif
-
-   // Search for myserver.xml
-   /* Under an *nix environment look for .xml files in the following order.
-    * 1) myserver executable working directory
-    * 2) ~/.myserver/
-    * 3) /etc/myserver/
-    */
-#ifndef WIN32
-   // just a little hack
-   snprintf(main_configuration_file, MAX_PATH, "%s/.myserver/myserver.xml", 
getenv("HOME"));
-#endif
-   if(FilesUtility::fileExists("myserver.xml"))
-     {
-       strncpy(main_configuration_file,"myserver.xml", MAX_PATH);
-     }
-#ifndef WIN32
-   else if(FilesUtility::fileExists(main_configuration_file))
-     {
-       // do nothing
-     }
-   else if(FilesUtility::fileExists("/etc/myserver/myserver.xml"))
-     {
-       strncpy(main_configuration_file,"/etc/myserver/myserver.xml", MAX_PATH);
-     }
-#endif
-   else
-     {
-       confFound = false;
-       loadok = false;
-       return;
-     }
-
-   // Load the language file for configure
-   if(confFound && langFound)
-     {
-       xmlFile.open(main_configuration_file);
-       chrptr = xmlFile.getValue("LANGUAGE");
-       if(chrptr != NULL)
-         snprintf(language_file, MAX_PATH, "%sconfigure/%s", languages_path, 
chrptr);
-       xmlFile.close();
-       ret = LanguageXMLfile(language_file);
-       if(ret)
-         loadok = false;
-     }
-
-}
-
-///
-/// The do all function for translation.
-/// This automaticaly loads the correct language file on the first call.
-/// The tag is the english string that is mangled to an xml tag that is
-/// used to return the translated vr using the XmlParser class.
-///
-extern "C" char * ctrl_gettext(const char * tag)
-{
-   char * val;
-   char * text;
-
-   if(!loaded && loadok) // first call
-     {
-        LanguageXMLload();
-     }
-   if(!loadok) // failed first call
-     {
-#ifdef DEBUG
-       printf("Not Loaded, TAG: %s\n", tag);
-#endif
-       return (char *)tag;
-     }
-
-   // Get the translation
-   val = xmlFile.getValue((char *)textmangler(tag));
-   if(val == NULL)
-     {
-#ifdef DEBUG
-       printf("XML TAG <%s> Not Found!\n",textmangler(tag));
-       printf("<%s>%s</%s>\n",textmangler(tag),tag,textmangler(tag));
-#endif
-       return (char *)tag;
-     }
-#ifdef DEBUG
-   printf("TAG: %s VAL: %s\n", textmangler(tag), val);
-#endif
-
-   // allocate new memory and add to list
-   text = strdup(val);
-   AddText(text);
-
-   return text;
-}
-
-///
-/// Convert text into a xml tag.
-/// This mangles the english text to make an xml tag.
-/// Bufferin is the english string and returns a pointer to an internal
-/// string of the xml tag.
-/// This uses the frist 20 chars of bufferin with letters to upper case
-/// and nonletters to underscore (_).
-///
-inline const char * textmangler(const char * Bufferin)
-{
-   char Buffer[255];
-   static char Bufferout[255];
-   int val, i, len;
-
-   strncpy(Buffer, Bufferin, 255);
-   Buffer[20] = '\0';
-   len = strlen(Buffer);
-   strncat(Buffer, "%d", 255);
-   for(i = 0; i < len; i++)
-     {
-       if(Buffer[i] >= 'a' && Buffer[i] <= 'z')
-         Buffer[i] -= 0x20;
-       else if(!(Buffer[i] >= 'A' && Buffer[i] <= 'Z'))
-         Buffer[i] = '_';
-     }
-   len = strlen(Bufferin);
-   val = 0;
-   for(i = 0; i < len; i++)
-     {
-       val += Bufferin[i];
-       if(val > 255)
-         val -= 255;
-     }
-   snprintf(Bufferout, 255, Buffer, val);
-
-   return Bufferout;
-}
-
diff --git a/misc/control/control/language.h b/misc/control/control/language.h
deleted file mode 100644
index 20560f2..0000000
--- a/misc/control/control/language.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- MyServer
- Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
- 
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
- 
- You should have received a copy of the GNU General Public License
- along with this program.  If not, see <http://www.gnu.org/licenses/>.
-  */
-#ifndef LANGUAGE_H
-#define LANGUAGE_H
-
-#include <include/base/xml/xml_parser.h>
-
-void LanguageXMLinit();
-void LanguageXMLend();
-//int LanguageXMLfile(const char *);  // handeled internaly
-void LanguageXMLclose();
-
-extern const char * LanguageXMLLast_Change;
-extern const char * LanguageXMLNot_Found;
-extern const char * LanguageXMLReload_Prev;
-extern const char * LanguageXMLEnter_Default;
-extern const char * LanguageXMLAbout_Text;
-extern const char * LanguageXMLEnter_Extension;
-extern const char * LanguageXMLEnter_MIME;
-extern const char * LanguageXMLEnter_Name;
-extern const char * LanguageXMLEnter_Host;
-extern const char * LanguageXMLEnter_Ip;
-extern const char * LanguageXMLDownload_Config;
-extern const char * LanguageXMLDownload_Failed;
-extern const char * LanguageXMLKill_All;
-extern const char * LanguageXMLSend_Config;
-extern const char * LanguageXMLUpload_Failed;
-extern const char * LanguageXMLNot_Save;
-extern const char * LanguageXMLReboot_Failed;
-extern const char * LanguageXMLConnect_Server;
-extern const char * LanguageXMLLogin_Failed;
-extern const char * LanguageXMLCannot_Connect;
-extern const char * LanguageXMLServer_Closed;
-extern const char * LanguageXMLYes;
-extern const char * LanguageXMLNo;
-
-extern "C" char * ctrl_gettext(const char *) ;
-
-#endif
diff --git a/misc/control/control/mimetype.cpp 
b/misc/control/control/mimetype.cpp
deleted file mode 100644
index 89acabf..0000000
--- a/misc/control/control/mimetype.cpp
+++ /dev/null
@@ -1,444 +0,0 @@
-/*
- * MyServer
- * Copyright (C) 2002, 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *  * */
-#include <string.h>
-extern "C"
-{
-#include <stdlib.h>
-}
-
-#include <include/base/file/file.h>
-#include <include/base/string/stringutils.h>
-#include <include/base/xml/xml_parser.h>
-#include "mimetype.h"
-
-using namespace std;
-
-//#define DEBUG
-
-const char * NONE = "NONE";
-
-///
-/// Constructor.
-///
-MIMEtypeXML::~MIMEtypeXML()
-{
-   Mime.clear();
-   ClearExt();
-}
-
-///
-/// Clear all memory.
-///
-void MIMEtypeXML::clear()
-{
-   Mime.clear();
-   ClearExt();
-}
-
-///
-/// Load the MIME types configuration file.
-/// Returns -1 on error.
-///
-int MIMEtypeXML::load(const char * filename)
-{
-   XmlParser parser;
-   if(parser.open((char *)filename)) // but I promis I wont modify
-     return -1;
-   int ret = load_core(parser);
-   parser.close();
-   return ret;
-}
-
-///
-/// Load the MIME types configuration from memory.
-/// returns -1 on error.
-///
-int MIMEtypeXML::loadMemBuf(MemBuf & buffer)
-{
-   XmlParser parser;
-   if(parser.openMemBuf(buffer))
-     return -1;
-   int ret = load_core(parser);
-   parser.close();
-   return ret;
-}
-
-///
-/// Load the values from xml data.
-/// Copied and modified from mime_manager.cpp
-/// Only returns 0.
-//  TODO: Change to use libxml2 or XmlParser more "proper"
-// 
-int MIMEtypeXML::load_core(XmlParser & parser)
-{
-   int extNumber = 0;
-
-   clear();
-
-   xmlDocPtr doc = parser.getDoc();
-   xmlNodePtr node=doc->children->children;
-   for(;node;node=node->next )
-     {
-       if(xmlStrcmp(node->name, (const xmlChar *)"MIMETYPE"))
-         continue;
-       xmlNodePtr lcur=node->children;
-       while(lcur)
-         {
-            if(!xmlStrcmp(lcur->name, (const xmlChar *)"EXT"))
-              {
-                 if(lcur->children->content)
-                   extNumber = addExt((char*)lcur->children->content);
-#ifdef DEBUG
-                 printf("EXT: %s, No: %d\n", (char*)lcur->children->content, 
extNumber);
-#endif
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"MIME"))
-              {
-                 if(lcur->children->content)
-                   setType(extNumber, addMime((char*)lcur->children->content));
-#ifdef DEBUG
-                 printf("MIME: %s, No: %d, Result: %s, %d\n", 
(char*)lcur->children->content, extNumber, Mime.at(getType(extNumber))->Text, 
getType(extNumber));
-#endif
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"CMD"))
-              {
-                 if(!xmlStrcmp(lcur->children->content,(const xmlChar 
*)"SEND"))
-                   setCmd(extNumber, CMD_SEND);
-                 else if(!xmlStrcmp(lcur->children->content,(const xmlChar 
*)"RUNCGI"))
-                   setCmd(extNumber, CMD_RUNCGI);
-                 else if(!xmlStrcmp(lcur->children->content,(const xmlChar 
*)"RUNMSCGI"))
-                   setCmd(extNumber, CMD_RUNMSCGI);
-                 else if(!xmlStrcmp(lcur->children->content,(const xmlChar 
*)"EXECUTE"))
-                   setCmd(extNumber, CMD_EXECUTE);
-                 else if(!xmlStrcmp(lcur->children->content,(const xmlChar 
*)"RUNISAPI"))
-                   setCmd(extNumber, CMD_RUNISAPI);
-                 else if(!xmlStrcmp(lcur->children->content,(const xmlChar 
*)"EXECUTEISAPI"))
-                   setCmd(extNumber, CMD_EXECUTEISAPI);
-                 else if(!xmlStrcmp(lcur->children->content,(const xmlChar 
*)"SENDLINK"))
-                   setCmd(extNumber, CMD_SENDLINK);
-                 else if(!xmlStrcmp(lcur->children->content,(const xmlChar 
*)"EXECUTEWINCGI"))
-                   setCmd(extNumber, CMD_EXECUTEWINCGI);
-                 else if(!xmlStrcmp(lcur->children->content,(const xmlChar 
*)"RUNFASTCGI"))
-                   setCmd(extNumber, CMD_RUNFASTCGI);
-                 else if(!xmlStrcmp(lcur->children->content,(const xmlChar 
*)"EXECUTEFASTCGI"))
-                   setCmd(extNumber, CMD_EXECUTEFASTCGI);
-                 else if(!xmlStrcmp(lcur->children->content,(const xmlChar 
*)"RUNSCGI"))
-                   setCmd(extNumber, CMD_RUNSCGI);
-                 else if(!xmlStrcmp(lcur->children->content,(const xmlChar 
*)"EXECUTESCGI"))
-                   setCmd(extNumber, CMD_EXECUTESCGI);
-
-#ifdef DEBUG
-                 printf("CMD: %s, No: %d, Result: %d\n", 
(char*)lcur->children->content, extNumber, getCmd(extNumber));
-#endif
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"MANAGER"))
-              {
-                 if(lcur->children->content)
-                   {
-                      if(strcmpi((char*)lcur->children->content,"NONE") == 0)
-                        setManager(extNumber, NONE);
-                      else
-                        setManager(extNumber, (char*)lcur->children->content);
-#ifdef DEBUG
-                      printf("MANAGER: %s, No: %d, Result: %s\n", 
(char*)lcur->children->content, extNumber, getManager(extNumber));
-#endif
-                   }
-              }
-            lcur=lcur->next;
-         }
-       // while(lcur)
-     }
-   // for(;node;node=node->next )
-   Mime.sort();
-   
-   return 0;
-}
-
-///
-/// Save the MIME types configuration to file.
-/// Returns negative on error.
-///
-int MIMEtypeXML::save(const char * filename)
-{
-   XmlParser xmlFile;
-   int ret = save_core(xmlFile);
-   xmlFile.save((char *)filename); // But, but, but I promis
-   xmlFile.close();
-   return ret;
-}
-
-///
-/// Save the MIME types configuration to a memory buffer.
-/// Returns negative on error.
-///
-int MIMEtypeXML::saveMemBuf(MemBuf & buffer)
-{
-   XmlParser xmlFile;
-   int ret = save_core(xmlFile);
-   xmlFile.saveMemBuf(buffer);
-   xmlFile.close();
-   return ret;
-}
-   
-///
-/// Save the MIME types configuration to xml data.
-/// Returns negative on error.
-//  Copied and modified from mime_manager.cpp
-//  Old text way remove to make use of MemBuf
-// 
-int MIMEtypeXML::save_core(XmlParser & xmlFile)
-{
-   if(Ext.isempty())
-     return -1;
-
-   // New xml_parser way...
-   int i;
-   
-   xmlFile.newfile("MIMETYPES");
-   
-   for(i = 0; i < Ext.size(); i++)
-     {
-       xmlFile.addGroup("MIMETYPE");
-       xmlFile.addChild("EXT", Ext.at(i)->Text);
-       xmlFile.addChild("MIME", Mime.at(getType(i))->Text);
-       char command[16];
-       switch(getCmd(i))
-         {
-          case CMD_SEND:
-            strncpy(command,"SEND",16);
-            break;
-          case CMD_RUNCGI:
-            strncpy(command,"RUNCGI",16);
-            break;
-          case CMD_RUNMSCGI:
-            strncpy(command,"RUNMSCGI",16);
-            break;
-          case CMD_EXECUTE:
-            strncpy(command,"EXECUTE",16);
-            break;
-          case CMD_SENDLINK:
-            strncpy(command,"SENDLINK",16);
-            break;
-          case CMD_RUNISAPI:
-            strncpy(command,"RUNISAPI",16);
-            break;
-          case CMD_EXECUTEISAPI:
-            strncpy(command,"EXECUTEISAPI",16);
-            break;
-          case CMD_EXECUTEWINCGI:
-            strncpy(command,"EXECUTEWINCGI",16);
-            break;
-          case CMD_RUNFASTCGI:
-            strncpy(command,"RUNFASTCGI",16);
-            break;
-          case CMD_EXECUTEFASTCGI:
-            strncpy(command,"EXECUTEFASTCGI",16);
-            break;
-          case CMD_RUNSCGI:
-            strncpy(command,"RUNSCGI",13);
-            break;
-          case CMD_EXECUTESCGI:
-            strncpy(command,"EXECUTESCGI",11);
-            break;
-          default:
-            break;
-         }
-       xmlFile.addChild("CMD", command);
-       xmlFile.addChild("MANAGER", getManager(i));
-       xmlFile.endGroup();
-     }
-   
-   return 0;
-}
-
-///
-/// Populate the list box in the interface with the ext names.
-/// Takes a pointer to the Fl_Browser FLTK class.
-///
-void MIMEtypeXML::populateExt(Fl_Browser * o)
-{
-   o->clear();
-   for(int i = 0; i < Ext.size(); i++)
-     o->add(Ext.at(i)->Text);
-}
-
-///
-/// Populate the slection box in the interface with the MIME types.
-/// Takes a pointer to the Fl_Choice FLTK class.
-///
-void MIMEtypeXML::populateMime(Fl_Choice * o)
-{
-   o->clear();
-   int len, index;
-   char * chrptr;
-   for(int i = 0; i < Mime.size(); i++)
-     {  // Fl_Choice uses '/' as a seperatior so replace with ' '
-        chrptr = Mime.at(i)->Text;
-        len = strlen(chrptr) + 1;
-       char temp[len];
-       for(index = 0; index < len; index++)
-         if(chrptr[index] == '/')
-           temp[index] = ' ';
-       else
-         temp[index] = chrptr[index];
-
-        o->add(temp, 0, 0, 0, 0);
-     }
-}
-
-///
-/// Adds an ext name to the ext list.
-/// If the ext given in name is already in the list, just return the
-/// location in the list.  Otherwise add the ext name and return the
-/// location in the list.
-///
-int MIMEtypeXML::addExt(const char * name)
-{
-   VectorNode * ret;
-   int i;
-   i = Ext.get(name);
-   if(i != -1)
-     return i;
-   MimeNode * NewNode = new MimeNode;
-   NewNode->Type = NULL;
-   NewNode->Cmd = 0;
-   NewNode->Manager = (char *)NONE;
-   ret = Ext.add(name, (void *)NewNode);
-   Ext.sort();
-   return ret->Number;
-}
-
-///
-/// Adds a MIME type to the MIME list.
-/// If the MIME given in name is already in the list, just return the
-/// location in the list.  Otherwise add the ext name and return the
-/// location in the list.
-///
-int MIMEtypeXML::addMime(const char * name)
-{
-   int i;
-   VectorNode * ret;
-   i = Mime.get(name);
-   if(i != -1)
-     return i;
-   ret = Mime.add(name);
-   Mime.sort();
-   return ret->Number;
-}
-
-///
-/// Removes an ext from the list.
-/// Takes the location number in the list.
-///
-void MIMEtypeXML::removeExt(int extNumber)
-{
-   DeleteMimeNode(((MimeNode *)(Ext.at(extNumber)->Data)));
-   Ext.remove(extNumber);
-}
-
-///
-/// Sets an ext to a MIME type.
-/// extNumber is the location number of the ext.
-/// mimeNumber is the location number of the MIME type.
-///
-void MIMEtypeXML::setType(int extNumber, int mimeNumber)
-{
-   ((MimeNode *)(Ext.at(extNumber)->Data))->Type = Mime.at(mimeNumber);
-}
-
-///
-/// Sets the command type of the ext.
-/// extNumber is the location number of the ext.
-/// cmdNumber is the enum of the command.  See mimetype.h
-///
-void MIMEtypeXML::setCmd(int extNumber, int cmdNumber)
-{
-   ((MimeNode *)(Ext.at(extNumber)->Data))->Cmd = cmdNumber;
-}
-
-///
-/// Sets the cgi manager for the ext.
-/// extNumber is the location number of the ext.
-/// name is the compleate path and exe name of the manager.
-///
-void MIMEtypeXML::setManager(int extNumber, const char * name)
-{
-   char * chrptr = ((MimeNode *)(Ext.at(extNumber)->Data))->Manager;
-   if(chrptr != NULL && chrptr != NONE)
-     free(chrptr);
-   if(name != NONE)
-     ((MimeNode *)(Ext.at(extNumber)->Data))->Manager = strdup(name);
-   else
-     ((MimeNode *)(Ext.at(extNumber)->Data))->Manager = (char *)NONE;
-}
-
-///
-/// Gets the MIME type of the ext.
-/// Takes the location number of the ext and returns the MIME 
-/// location number.
-///
-int MIMEtypeXML::getType(int extNumber)
-{
-   VectorNode * ret = ((MimeNode *)(Ext.at(extNumber)->Data))->Type;
-   if(ret == NULL)
-     return 0;
-   return ret->Number;
-}
-
-///
-/// Gets the cgi command type of the ext.
-/// Takes the location number of the ext and returns the command type
-/// number. (see mimetype.h)
-///
-int MIMEtypeXML::getCmd(int extNumber)
-{
-   return ((MimeNode *)(Ext.at(extNumber)->Data))->Cmd;
-}
-
-///
-/// Gets the cgi manager of the ext.
-/// Takes the location number of the ext and returns a pointer to an internal
-/// string of the manager with compleat path.
-///
-const char * MIMEtypeXML::getManager(int extNumber)
-{
-   return ((MimeNode *)(Ext.at(extNumber)->Data))->Manager;
-}
-
-///
-/// Clear the ext list.
-///
-void MIMEtypeXML::ClearExt()
-{
-   int i;
-   for(i = 0; i < Ext.size(); i++)
-     {
-       DeleteMimeNode((MimeNode *)(Ext.at(i)->Data));
-     }
-   Ext.clear();
-}
-
-///
-/// Remove a MIME type.
-/// Take a pointer to the MIME type node.
-///
-void MIMEtypeXML::DeleteMimeNode(MimeNode * Node)
-{
-   if(Node->Manager != NULL && Node->Manager != NONE)
-     free(Node->Manager);
-   delete Node;
-}
diff --git a/misc/control/control/mimetype.h b/misc/control/control/mimetype.h
deleted file mode 100644
index a82eff8..0000000
--- a/misc/control/control/mimetype.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- MyServer
- Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
- 
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
- 
- You should have received a copy of the GNU General Public License
- along with this program.  If not, see <http://www.gnu.org/licenses/>.
-  */
-#ifndef MIMETYPE_H_CONF
-#define MIMETYPE_H_CONF
-
-#include <FL/Fl.H>
-#include <FL/Fl_Browser.H>
-#include <FL/Fl_Choice.H>
-
-#include "vector.h"
-#include <include/base/mem_buff/mem_buff.h>
-#include <include/base/xml/xml_parser.h>
-
-///
-/// CGI command type numbers.
-///
-enum
-{
-   CMD_SEND = 0,
-   CMD_SENDLINK,
-   CMD_RUNCGI,
-   CMD_RUNFASTCGI,
-   CMD_RUNSCGI,
-   CMD_RUNISAPI,
-   CMD_RUNMSCGI,
-   CMD_EXECUTEWINCGI,
-   CMD_EXECUTE,
-   CMD_EXECUTEISAPI,
-   CMD_EXECUTEFASTCGI,
-   CMD_EXECUTESCGI
-
-};
-
-///
-/// A pointer used to spesify "NONE"
-///
-extern const char * NONE;
-
-///
-/// MIME type node.
-/// This is used to store the MIME type data for each ext.
-///
-struct MimeNode
-{
-   VectorNode * Type;  /// Pointer to the MIME type.
-   int Cmd;            /// The cgi command number.
-   char * Manager;     /// The cgi manager string.
-};
-
-///
-/// Loads and saves the MIME type configuration and manipulate the data.
-/// 
-class MIMEtypeXML
-{
- public:
-   ~MIMEtypeXML();
-   void clear();
-   int load(const char *);
-   int loadMemBuf(MemBuf &);
-   int load_core(XmlParser &);
-   int save(const char *);
-   int saveMemBuf(MemBuf &);
-   int save_core(XmlParser &);
-   void populateExt(Fl_Browser *);
-   void populateMime(Fl_Choice *);
-   int addExt(const char *);
-   int addMime(const char *);
-   void removeExt(int );
-   void setType(int, int);
-   void setCmd(int, int);
-   void setManager(int, const char *);
-   int getType(int);
-   int getCmd(int);
-   const char * getManager(int);
- private:
-   void ClearExt();
-   void DeleteMimeNode(MimeNode *);
-   Vector Mime;
-   Vector Ext;
-};
-
-#endif
diff --git a/misc/control/control/myserver-configure.cpp 
b/misc/control/control/myserver-configure.cpp
deleted file mode 100644
index 4d43465..0000000
--- a/misc/control/control/myserver-configure.cpp
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
-MyServer
-Copyright (C) 2002, 2003, 2004, 2006, 2008 Free Software Foundation, Inc.
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifdef WIN32
-# include <windows.h>
-# include <io.h>
-#endif
-
-#include <Fl/Fl.H>
-#include <Fl/fl_ask.H>
-
-#include "language.h"
-#include <include/base/string/stringutils.h>
-#include <include/base/xml/xml_parser.h>
-#include <include/base/file/file.h>
-#include <include/base/file/files_utility.h>
-#include "vector.h"
-#include "fltkconfig.h"
-#include "language.h"
-
-#include <include/base/find_data/find_data.h>
-
-extern "C"
-{
-#include <stdio.h>
-#ifdef WIN32
-# include <direct.h>
-#elif HAVE_DL
-# include <dlfcn.h>
-# define HMODULE void *
-#else
-# define HMODULE void *
-#endif
-}
-
-#ifndef intptr_t
-# define intptr_t int
-#endif
-
-typedef char* (*registerNamePROC)(char*,int);
-
-static void GetDynamicProtocols(const char *, Vector &);
-
-///
-/// Main function.
-/// Intilize all supporting libraries and windows.
-/// Gets the list of dynamic protocols and language files.
-/// Loads the first avaible configuration.
-/// Displays the main dialog.
-/// Waits for FLTK to quit and dose clean up.
-///
-int main(int argc, char * argv[])
-{
-   char languages_path[MAX_PATH];
-   char main_configuration_file[MAX_PATH];
-   int conf_location = 0;
-   XmlParser xmlFile;
-   FindData fd;
-   int fd_ret;
-   bool langFound = true;
-   bool confFound = true;
-   int ret;
-
-  LanguageXMLinit();
-   /*! Initialize the SSL library. */
-#ifndef DO_NOT_USE_SSL
-   SSL_library_init();
-   SSL_load_error_strings();
-#endif
-
-#ifdef WIN32   
-       /*!
-   *Under windows we need to initialize the socket library before use it.
-   */
-       WSADATA wsaData;
-       WSAStartup(MAKEWORD( 1, 1), &wsaData);
-
-   // Find the language files:
-   strncpy(languages_path, "languages/", MAX_PATH);
-   fd_ret=fd.findfirst("languages/");
-#else
-   if(FilesUtility::fileExists("languages"))
-     {
-       strncpy(languages_path, "languages/", MAX_PATH);
-     }
-   else
-     {
-# ifdef PREFIX
-       snprintf(languages_path, MAX_PATH, "%s/share/myserver/languages/", 
PREFIX);
-# else
-       strncpy(languages_path, "/usr/share/myserver/languages/", MAX_PATH);
-# endif
-     }
-   if(!(FilesUtility::fileExists(languages_path)))
-     {
-       fl_alert("Languages directory not found.");
-       langFound = false;
-     }
-   if(langFound)
-     fd_ret=fd.findfirst(languages_path);
-#endif
-
-   // Search for myserver.xml
-   /* Under an *nix environment look for .xml files in the following order.
-    * 1) myserver executable working directory
-    * 2) ~/.myserver/
-    * 3) /etc/myserver/
-    * 4) default files will be copied in myserver executable working
-    */
-#ifndef WIN32
-   // just a little hack
-   snprintf(main_configuration_file, MAX_PATH, "%s/.myserver/myserver.xml", 
getenv("HOME"));
-#endif
-   if(FilesUtility::fileExists("myserver.xml"))
-     {
-       conf_location = 1;
-       strncpy(main_configuration_file,"myserver.xml", MAX_PATH);
-     }
-#ifndef WIN32
-   else if(FilesUtility::fileExists(main_configuration_file))
-     {
-       conf_location = 2;
-     }
-   else if(FilesUtility::fileExists("/etc/myserver/myserver.xml"))
-     {
-       conf_location = 3;
-       strncpy(main_configuration_file,"/etc/myserver/myserver.xml", MAX_PATH);
-     }
-#endif
-     /*
-      * If the myserver.xml files doesn't exist copy it from the default one.
-      */
-   else
-     {
-       conf_location = 1;
-       strncpy(main_configuration_file,"myserver.xml", MAX_PATH);
-       File inputF;
-       File outputF;
-       if(!FilesUtility::fileExists("myserver.xml.default"))
-         {  // no configuration files found
-            fl_alert("Default configuration files not found.  Loading empty 
values.");
-            confFound = false;
-            conf_location = 0;
-         }
-       else
-         {  // Copy the default files
-            char buffer[512];
-            u_long nbr, nbw;
-            fl_alert("Configuration files not found.  Loading default files.");
-            inputF.openFile("myserver.xml.default", 
File::MYSERVER_OPEN_READ|File::MYSERVER_OPEN_IFEXISTS);
-            outputF.openFile("myserver.xml", 
File::MYSERVER_OPEN_WRITE|File::MYSERVER_OPEN_ALWAYS);
-            for(;;)
-              {
-                 inputF.read(buffer, 512, &nbr );
-                 if(nbr==0)
-                   break;
-                 outputF.writeToFile(buffer, nbr, &nbw);
-              }
-            inputF.close();
-            outputF.close();
-
-            if(FilesUtility::fileExists("MIMEtypes.xml.default"))
-              {
-                 char buffer[512];
-                 u_long nbr, nbw;
-                 inputF.openFile("MIMEtypes.xml.default", 
File::MYSERVER_OPEN_READ|File::MYSERVER_OPEN_IFEXISTS);
-                 outputF.openFile("MIMEtypes.xml", 
File::MYSERVER_OPEN_WRITE|File::MYSERVER_OPEN_ALWAYS);
-                 for(;;)
-                   {
-                      inputF.read(buffer, 512, &nbr );
-                      if(nbr==0)
-                        break;
-                      outputF.writeToFile(buffer, nbr, &nbw);
-                   }
-                 inputF.close();
-                 outputF.close();
-              }
-
-            if(FilesUtility::fileExists("virtualhosts.xml.default"))
-              {
-                 char buffer[512];
-                 u_long nbr, nbw;
-                 inputF.openFile("virtualhosts.xml.default", 
File::MYSERVER_OPEN_READ|
-                                                                               
        File::MYSERVER_OPEN_IFEXISTS);
-                 outputF.openFile("virtualhosts.xml", 
File::MYSERVER_OPEN_WRITE| 
-                                                                               
         File::MYSERVER_OPEN_ALWAYS);
-                 for(;;)
-                   {
-                      inputF.read(buffer, 512, &nbr );
-                      if(nbr==0)
-                        break;
-                      outputF.writeToFile(buffer, nbr, &nbw);
-                   }
-                 inputF.close();
-                 outputF.close();
-              }
-         }
-     }
-
-   // Initilize APIs
-   XmlParser::startXML();
-   // LanguageXMLinit handeled internaly
-
-   // Load the language file for configure
-   // Handeled internaly
-
-
-   // Initilize the Dialogs
-   MainDlg Configure;
-   Configure.make_window();
-   Configure.make_about();
-   Configure.make_type();
-   Configure.make_login();
-   Configure.make_status();
-   Configure.make_connections();
-   Configure.make_regask();
-   
-   // Show the main window
-   Configure.ConfDlg->show(argc, argv);
-
-   // Load the language file names
-   Configure.Language->clear();
-   if(langFound)
-     {
-       do
-         {
-            char dir[MAX_PATH];
-            char filename[MAX_PATH];
-            if(fd.name[0] == '.')
-              continue;
-            FilesUtility::splitPath(fd.name,dir,filename);
-            if(strcmpi(&(filename[strlen(filename) - 3]), "xml") == 0)
-              Configure.Language->add(filename, 0, 0, 0, 0);
-         }
-       while(!fd.findnext());
-       fd.findclose();
-     }
-   
-   // Load the dynamic protocol names
-   Vector list;
-   if(FilesUtility::fileExists("plugins/protocols"))
-     {
-       GetDynamicProtocols("plugins/protocols", list);
-     }
-#ifndef WIN32
-#ifdef PREFIX
-   else if(FilesUtility::fileExists(PREFIX "/lib/myserver/plugins/protocols"))
-     {
-       GetDynamicProtocols(PREFIX "/lib/myserver/plugins/protocols", list);
-     }
-#else
-   else if(FilesUtility::fileExists("/usr/lib/myserver/plugins/protocols"))
-     {
-       GetDynamicProtocols("/usr/lib/myserver/plugins/protocols", list);
-     }
-#endif
-#endif
-   Configure.setDynamic(list);
-   list.clear();
-
-   // Load, if found, fist avaible configuration
-   Configure.ConfType = conf_location;
-   switch(conf_location)
-     {
-      case 1 :
-       Configure.ConfTypeDlgLocal->setonly();
-       break;
-      case 2 :
-       Configure.ConfTypeDlgUser->setonly();
-       break;
-      case 3 :
-       Configure.ConfTypeDlgGlobal->setonly();
-       break;
-      default :
-       break;
-     }
-   Configure.load_config();
-
-   // Start the app
-   ret = Fl::run();
-
-   // Close the language xml file
-   LanguageXMLclose();
-
-   // Cleanup
-   LanguageXMLend();
-   XmlParser::cleanXML();
-
-   // Exit
-   return ret;
-}
-
-///
-/// Get the local dynamic protocols.
-/// Parts taken from protocols_manager.cpp
-/// 
-static void GetDynamicProtocols(const char * folder, Vector & list)
-{
-   list.clear();
-
-   HMODULE module;
-   registerNamePROC name;
-
-   FindData fd;
-   int fd_ret;   
-   int filenamelen = 0;
-   char *filename = 0;
-#ifdef WIN32
-   filenamelen=strlen(folder)+6;
-   filename=new char[filenamelen];
-   if(filename == 0)
-     return;
-   snprintf(filename,filenamelen,"%s/*.*",folder);
-#endif
-#ifdef NOT_WIN
-   filenamelen=strlen(folder)+2;
-   filename=new char[filenamelen];
-   if(filename == 0)
-     return;
-   strncpy(filename,folder, filenamelen);
-#endif
-
-   fd_ret=fd.findfirst(filename);
-   if(fd_ret==-1)
-       {
-         delete [] filename;
-         filename = 0;
-         return;
-       }
-   char *completeFileName = 0;
-   int completeFileNameLen = 0;
-   do
-     {
-       if(fd.name[0]=='.')
-         continue;
-       /*
-        *Do not consider file other than dynamic libraries.
-        */
-#ifdef WIN32
-       if(!strstr(fd.name,".dll"))
-#endif
-#ifdef NOT_WIN
-         if(!strstr(fd.name,".so"))
-#endif
-           continue;
-       completeFileNameLen = strlen(folder) + strlen(fd.name) + 2;
-       completeFileName = new char[completeFileNameLen];
-       if(completeFileName == 0)
-         {
-            delete [] filename;
-            filename = 0;
-            return;
-         }
-       snprintf(completeFileName,completeFileNameLen,"%s/%s",folder,fd.name);
-#ifdef WIN32
-       module = LoadLibrary(completeFileName);
-#endif
-#ifdef HAVE_DL
-       module = dlopen(completeFileName, RTLD_LAZY);
-#endif
-       if(module != NULL)
-         {
-#ifdef WIN32
-            name = (registerNamePROC)GetProcAddress((HMODULE)module, 
"registerName");
-#endif
-#ifdef HAVE_DL
-            name = (registerNamePROC)dlsym(module, "registerName");
-#endif
-            if(name != NULL)
-              {
-                 list.add(name(NULL, 0));
-              }
-         }
-#ifdef WIN32
-       FreeLibrary((HMODULE)module);
-#endif
-#ifdef HAVE_DL
-       dlclose(module);
-#endif
-       delete [] completeFileName;
-     }
-   while(!fd.findnext());
-   fd.findclose();
-   delete [] filename;
-   filename = 0;
-}
diff --git a/misc/control/control/progress.cpp 
b/misc/control/control/progress.cpp
deleted file mode 100644
index d172473..0000000
--- a/misc/control/control/progress.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-  MyServer
-  Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public
-  License as published by the Free Software Foundation; either
-  version 2.1 of the License, or (at your option) any later version.
- 
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Lesser General Public License for more details.
- 
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  */
-#ifndef PROGRESS_H
-#define PROGRESS_H
-
-#include <FL/Fl.H>
-#include <FL/Fl_Progress.H>
-#include <stdio.h>
-
-///
-/// Status callback function.
-/// This updates the progress dialog in the interface.
-/// object is the pointer to the Fl_Progress FLTK class.
-/// len is the end value of the progress.
-/// pos is the current value of progress.
-///
-void ProgressCallback(void * Object, unsigned int len, unsigned int pos)
-{
-   Fl_Progress * o = (Fl_Progress *)Object;  
-   static char buffer[5];
-   int stat = (int)((float)pos / (float)len * 100.0);
-   snprintf(buffer, 5, "%d%%", stat);
-   o->value(stat);
-   o->label(buffer);
-   // make sure fltk updates the display
-   Fl::wait(0);Fl::wait(0);Fl::wait(0);Fl::wait(0);Fl::wait(0);Fl::wait(0);
-//   Fl::wait(0);Fl::wait(0);Fl::wait(0);Fl::wait(0);Fl::wait(0);Fl::wait(0);
-//   Fl::wait(0);Fl::wait(0);Fl::wait(0);Fl::wait(0);Fl::wait(0);Fl::wait(0);
-}
-
-#endif
diff --git a/misc/control/control/progress.h b/misc/control/control/progress.h
deleted file mode 100644
index a1322da..0000000
--- a/misc/control/control/progress.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-  MyServer
-  Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public
-  License as published by the Free Software Foundation; either
-  version 2.1 of the License, or (at your option) any later version.
- 
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Lesser General Public License for more details.
- 
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  */
-#ifndef PROGRESS_H
-#define PROGRESS_H
-
-#include <FL/Fl.H>
-#include <FL/Fl_Progress.H>
-#include <stdio.h>
-
-/* Status callback function */
-
-void ProgressCallback(void * Object, unsigned int len, unsigned int pos);
-#endif
diff --git a/misc/control/control/service.cpp b/misc/control/control/service.cpp
deleted file mode 100644
index 7d84788..0000000
--- a/misc/control/control/service.cpp
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * MyServer
- * Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *  *
- */
-
-// Helper functions for the configure program
-
-#ifdef WIN32
-#include <windows.h>
-#else
-extern "C" { 
-#include <sys/types.h>
-#include <signal.h>
-#include <unistd.h>
-#include <stdlib.h>
-}
-#endif
-
-#include <include/base/file/file.h>
-#include <include/base/file/files_utility.h>
-
-#ifdef WIN32
-static DWORD WINAPI consoleWatchDogThread(LPVOID);
-static HANDLE consoleModeWatchDog;
-static STARTUPINFO si;
-static PROCESS_INFORMATION pi;
-static SERVICE_STATUS          MyServiceStatus;
-static SERVICE_STATUS_HANDLE   MyServiceStatusHandle;
-#else
-static int ConsolePid = 0;
-#endif
-
-void RunAsConsole()
-{
-#ifdef WIN32
-   CreateProcess(NULL,"myserver.exe CONSOLE",NULL,NULL,FALSE,0,0,0,&si,&pi);
-   DWORD id;
-   consoleModeWatchDog = CreateThread(0,0,consoleWatchDogThread,0,0,&id);
-#else
-   int pid = fork();
-   if(pid == 0)
-     {
-       if(FilesUtility::fileExists("myserver"))
-         execlp("xterm", "xterm", "-e", "./myserver", NULL);
-       else
-         execlp("xterm", "xterm", "-e", "myserver", NULL);
-       exit(0);
-     }
-   ConsolePid = pid;
-#endif
-}
-
-void RunAsService()
-{
-#ifdef WIN32
-   SC_HANDLE service,manager;
-
-   manager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
-   if (manager)
-     {
-       service = OpenService (manager, "MyServer", SERVICE_ALL_ACCESS);
-       if (service)
-         {
-            StartService(service,0,NULL);
-            while (QueryServiceStatus (service, &MyServiceStatus))
-              if (MyServiceStatus.dwCurrentState != SERVICE_START_PENDING)
-                break;
-            CloseServiceHandle (service);
-            CloseServiceHandle (manager);
-         }
-     }
-#endif
-}
-
-void StopConsole()
-{
-#ifdef WIN32
-   if(pi.hProcess)
-     TerminateProcess(pi.hProcess,0);
-#else
-   if(ConsolePid != 0)
-     kill(ConsolePid, SIGTERM);
-#endif
-}
-
-void StopService()
-{
-#ifdef WIN32
-   SC_HANDLE service,manager;
-   manager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
-   if (manager)
-     {
-       service = OpenService (manager, "MyServer", SERVICE_ALL_ACCESS);
-       if (service)
-         {
-            ControlService (service,SERVICE_CONTROL_STOP,&MyServiceStatus);
-            while (QueryServiceStatus (service, &MyServiceStatus))
-              if (MyServiceStatus.dwCurrentState != SERVICE_STOP_PENDING)
-                break;
-            CloseServiceHandle (service);
-            CloseServiceHandle (manager);
-         }
-     }
-#endif
-}
-
-void InstallService()
-{
-#ifdef WIN32
-   SC_HANDLE service,manager;
-   char path [MAX_PATH];
-   GetCurrentDirectory(MAX_PATH,path);
-   lstrcat(path,"\\");
-   lstrcat(path,"myServer.exe SERVICE");
-
-   manager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
-   if (manager)
-     {
-       service = 
CreateService(manager,"MyServer","MyServer",SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS,SERVICE_AUTO_START,
 SERVICE_ERROR_IGNORE, path,0, 0, 0, 0, 0);
-       if (service)
-         {
-            CloseServiceHandle (service);
-         }
-       CloseServiceHandle (manager);
-     }
-     /*Run the service after its installation. */
-     RunAsService();
-#endif
-}
-
-void RemoveService()
-{
-#ifdef WIN32
-   SC_HANDLE service,manager;
-   manager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
-   if (manager)
-     {
-       service = OpenService (manager, "MyServer", SERVICE_ALL_ACCESS);
-       if (service)
-         {
-            ControlService (service, SERVICE_CONTROL_STOP,&MyServiceStatus);
-            while (QueryServiceStatus (service, &MyServiceStatus))
-              if (MyServiceStatus.dwCurrentState != SERVICE_STOP_PENDING)
-                break;
-            DeleteService(service);
-            CloseServiceHandle (service);
-            CloseServiceHandle (manager);
-         }
-     }
-#endif
-}
-
-#ifdef WIN32
-/*!
- * *Wait if the myServer application is ended by itself.
- * */
-DWORD WINAPI consoleWatchDogThread(LPVOID param)
-{
-   
-   WaitForSingleObject(pi.hProcess,INFINITE);
-   TerminateThread(GetCurrentThread(),0);
-   return 0;
-}
-
-#endif
diff --git a/misc/control/control/service.h b/misc/control/control/service.h
deleted file mode 100644
index c9feb97..0000000
--- a/misc/control/control/service.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- MyServer
- Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
- 
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
- 
- You should have received a copy of the GNU General Public License
- along with this program.  If not, see <http://www.gnu.org/licenses/>.
-  */
-#ifndef SERVICE_H
-#define SERVICE_H
-
-void RunAsConsole();
-void RunAsService();
-void StopConsole();
-void StopService();
-void InstallService();
-void RemoveService();
-
-#endif
diff --git a/misc/control/control/textmangler/textmangler.cpp 
b/misc/control/control/textmangler/textmangler.cpp
deleted file mode 100644
index a049c24..0000000
--- a/misc/control/control/textmangler/textmangler.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- MyServer
- Copyright (C) 2002, 2003, 2004 The MyServer Team
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
- 
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
- 
- You should have received a copy of the GNU General Public License
- along with this program.  If not, see <http://www.gnu.org/licenses/>.
-  */
-
-// Compile with g++ -o textmangler textmangler.cpp `xml2-config --cflags 
--libs`
-// Run with textmangler textfile.txt languagefile.xml
-// Where textfile.txt is the english prases in the program to use
-// gettext in language.cpp
-
-#include <iostream>
-#include <fstream>
-#include <cstdio>
-#include <cstring>
-
-extern "C" 
-{   
-#include <libxml/tree.h>
-#include <libxml/parser.h>
-#include <libxml/xmlmemory.h>
-}
-
-
-using namespace std;
-
-int main(int argn, char * argv[])
-{
-   char Buffer[255];
-   char Bufferin[255];
-   char Bufferout[255];
-   int val;
-   int i, len;
-   
-   xmlDocPtr doc;
-   xmlNodePtr cur;
-   
-   if(argn < 3)
-     return -1;
-   
-   fstream filein, fileout;
-   
-   filein.open(argv[1], ios::in);
-   if(!filein)
-     return -1;
-
-   xmlInitParser();
-   
-   doc = xmlNewDoc((const xmlChar*)"1.0");
-   cur = xmlNewDocNode(doc, NULL, (const xmlChar*)"MYSERVER_LANGUAGE_FILE", 
NULL);
-   xmlDocSetRootElement(doc, cur);
-   
-   filein.getline(Bufferin, 255);
-   while(!filein.eof())
-     {
-       strncpy(Buffer, Bufferin, 255);
-       Buffer[20] = '\0';
-       len = strlen(Buffer);
-       strncat(Buffer, "%d", 255);
-       for(i = 0; i < len; i++)
-         {
-            if(Buffer[i] >= 'a' && Buffer[i] <= 'z')
-              Buffer[i] -= 0x20;
-            else if(!(Buffer[i] >= 'A' && Buffer[i] <= 'Z'))
-              Buffer[i] = '_';
-         }
-       len = strlen(Bufferin);
-       val = 0;
-       for(i = 0; i < len; i++)
-         {
-            val += Bufferin[i];
-            if(val > 255)
-              val -= 255;
-         }
-       snprintf(Bufferout, 255, Buffer, val);
-       
-       xmlNewTextChild(cur, NULL, (const xmlChar*)Bufferout, (const 
xmlChar*)Bufferin);
-       
-       filein.getline(Bufferin, 255);
-     }
-   filein.close();
-   xmlSaveFile(argv[2], doc);
-   xmlFreeDoc(doc);
-   return 0;
-}
diff --git a/misc/control/control/tmp/keepme b/misc/control/control/tmp/keepme
deleted file mode 100644
index e0808fa..0000000
--- a/misc/control/control/tmp/keepme
+++ /dev/null
@@ -1 +0,0 @@
-keep me
diff --git a/misc/control/control/vector.cpp b/misc/control/control/vector.cpp
deleted file mode 100644
index 6aadcb0..0000000
--- a/misc/control/control/vector.cpp
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- MyServer
- Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program.  If not, see <http://www.gnu.org/licenses/>.
-  */
-#include <string.h>
-extern "C"
-{
-#include <stdlib.h>
-}
-#include "vector.h"
-
-Vector::Vector()
-{
-   Array = NULL;
-   VectorSize = 0;
-   Sorted = false;
-}
-
-Vector::~Vector()
-{
-   clear();
-}
-
-VectorNode * Vector::add(const char * Text, void * Data)
-{
-   int i;
-
-   VectorNode * NewNode = new VectorNode;
-   NewNode->Text = strdup(Text);
-   NewNode->Data = Data;
-   NewNode->Number = VectorSize;
-
-   VectorNode ** NewArray = (VectorNode **) new void*[sizeof(VectorNode 
*)*(VectorSize + 1)];
-   for(i = 0; i < VectorSize; i++)
-     NewArray[i] = Array[i];
-
-   NewArray[i] = NewNode;
-   delete Array;
-   Array = NewArray;
-   VectorSize++;
-   Sorted = false;
-   return NewNode;
-}
-
-void Vector::add(Vector & cpy)
-{
-   for(int i = 0; i < cpy.size(); i++)
-     {
-       add(cpy.at(i)->Text, cpy.at(i)->Data);
-     }
-}
-
-void Vector::remove(int index)
-{
-   if(VectorSize == 0)
-     return;
-   if(index > VectorSize)
-     return;
-
-   if(VectorSize - 1 == 0)
-     {
-       clear();
-       return;
-     }
-
-   VectorNode ** NewArray = (VectorNode **) new void*[sizeof(VectorNode 
*)*(VectorSize - 1)];
-
-   int a, b;
-   a = b = 0;
-   for(a = 0; a < VectorSize; a++)
-     {
-       if(a == index)
-         {
-            DeleteNode(Array[a]);
-            a++;
-         }
-       NewArray[b] = Array[a];
-       b++;
-     }
-   delete Array;
-   Array = NewArray;
-   VectorSize--;
-   ReCount();
-}
-
-void Vector::clear()
-{
-   if(VectorSize == 0)
-     return;
-   int i;
-   for(i = 0; i < VectorSize; i++)
-     DeleteNode(Array[i]);
-   delete Array;
-   Array = NULL;
-   VectorSize = 0;
-   Sorted = false;
-}
-
-int Vector::size()
-{
-   return VectorSize;
-}
-
-// q_sort example from Michael Lamont (GPL)
-// http://linux.wku.edu/~lamonml/algor/sort/quick.c
-// 
-// Modifed to work with Vector class
-static void q_sort(VectorNode ** Array, int left, int right)
-{
-
-   int index, l_hold, r_hold;
-
-   VectorNode * pivot;
-   
-   l_hold = left;
-   r_hold = right;
-   pivot = Array[left];
-   while (left < right)
-     {
-       while (strcmp(Array[right]->Text, pivot->Text) >= 0 && (left < right))
-         right--;
-       if (left != right)
-         {
-            Array[left] = Array[right];
-            left++;
-         }
-       while (strcmp(Array[left]->Text, pivot->Text) <= 0 && (left < right))
-         left++;
-       if (left != right)
-         {
-            Array[right] = Array[left];
-            right--;
-         }
-     }
-   Array[left] = pivot;
-   index = left;
-   left = l_hold;
-   right = r_hold;
-   if (left < index)
-     q_sort(Array, left, index-1);
-   if (right > index)
-     q_sort(Array, index+1, right);
-}
-
-// sort using QuickSort
-void Vector::sort()
-{
-   if(Sorted)
-     return;
-   if(VectorSize < 2)
-     return;
-   
-   q_sort(Array, 0, VectorSize - 1);
-   
-   ReCount();
-   Sorted = true;
-}
-
-VectorNode * Vector::at(int index)
-{
-   if(index >= VectorSize)
-     return NULL;
-   return Array[index];
-}
-
-// sorted binary search
-int Vector::get(const char * Text)
-{
-   if(VectorSize == 0)
-     return -1;
-   if(!Sorted)
-     sort();
-
-   int high, low, center, ret;
-   high = VectorSize - 1;
-   low = 0;
-
-   while(low <= high)
-     {
-       center = (low + high) / 2;
-       ret = strcmp(Text, Array[center]->Text);
-       if(ret == 0)
-         return center;
-       else if(ret < 0)
-         high = center - 1;
-       else
-         low = center + 1;
-     }
-
-   return -1;
-}
-
-bool Vector::isempty()
-{
-   if(VectorSize == 0)
-     return true;
-   else
-     return false;
-}
-
-void Vector::DeleteNode(VectorNode * Node)
-{
-   free(Node->Text);
-   delete Node;
-}
-
-void Vector::ReCount()
-{
-   for(int i = 0; i < VectorSize; i++)
-     {
-       Array[i]->Number = i;
-     }
-}
-
diff --git a/misc/control/control/vector.h b/misc/control/control/vector.h
deleted file mode 100644
index 5ca80c6..0000000
--- a/misc/control/control/vector.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- MyServer
- Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
- 
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
- 
- You should have received a copy of the GNU General Public License
- along with this program.  If not, see <http://www.gnu.org/licenses/>.
-  */
-#ifndef VECTOR_H_SOME_GARBAGE_HERE
-#define VECTOR_H_SOME_GARBAGE_HERE
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-struct VectorNode
-{
-   char * Text;
-   int Number;
-   void * Data;
-};
-
-
-// Since VC++'s STL is buggy...
-class Vector
-{
- public:
-   Vector();
-   ~Vector();
-   VectorNode * add(const char * Text, void * Data = NULL);
-   void add(Vector &);
-   void remove(int );  // you must free/delete "Data"
-   void clear();       // before calling
-   int size();
-   void sort();  // Sort A-z using "Text"
-   VectorNode * at(int );  // Returns NULL on out of bounds
-   int get(const char *);  // Returns index of text search or -1 on failure
-   bool isempty();
- private:
-   void DeleteNode(VectorNode *);
-   void ReCount();
-   VectorNode ** Array;
-   int VectorSize;
-   bool Sorted;
-};
-
-#endif
diff --git a/misc/control/control/vhost.cpp b/misc/control/control/vhost.cpp
deleted file mode 100644
index 39e3aa6..0000000
--- a/misc/control/control/vhost.cpp
+++ /dev/null
@@ -1,665 +0,0 @@
-/*
- * MyServer
- * Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *  */
-#include <string.h>
-extern "C"
-{
-#include <stdlib.h>
-}
-
-#include <include/base/file/file.h>
-#include <include/base/string/stringutils.h>
-#include <include/base/xml/xml_parser.h>
-#include "vhost.h"
-
-using namespace std;
-
-const char * EMPTY = "";
-
-VHostXML::~VHostXML()
-{
-   clear();
-   Dynamic.clear();
-}
-
-void VHostXML::clear()
-{
-   for(int i = 0; i < VHosts.size(); i++)
-     DeleteVHostNode((VHostNode *)(VHosts.at(i)->Data));
-   VHosts.clear();
-}
-
-int VHostXML::load(const char * filename)
-{
-   XmlParser parser;
-   if(parser.open((char *)filename))  // But I promis not to change filename
-     return -1;
-   
-   int ret = load_core(parser);
-   parser.close();
-   return ret;
-}
-
-int VHostXML::loadMemBuf(MemBuf & buffer)
-{
-   XmlParser parser;
-   if(parser.openMemBuf(buffer))
-     return -1;
-   
-   int ret = load_core(parser);
-   parser.close();
-   return ret;
-}
-
-// from vhosts.cpp with modification
-// TODO: Change to use libxml2 or xml_parser more "proper"
-int VHostXML::load_core(XmlParser & parser)
-{
-   int NameNo = 0;
-
-   clear();
-   
-   xmlDocPtr doc = parser.getDoc();
-   xmlNodePtr node=doc->children->children;
-   for(;node;node=node->next )
-     {
-       if(xmlStrcmp(node->name, (const xmlChar *)"VHOST"))
-         continue;
-
-       xmlNodePtr lcur=node->children;
-
-       while(lcur)
-         {
-            if(!xmlStrcmp(lcur->name, (const xmlChar *)"HOST"))
-              {
-                 bool useRegex = false;
-                 xmlAttr *attrs = lcur->properties;
-                 while(attrs)
-                   {
-                      if(!xmlStrcmp(attrs->name, (const xmlChar *)"isRegex"))
-                        {
-                           if(attrs->children && attrs->children->content &&
-                              (!xmlStrcmp(attrs->children->content, (const 
xmlChar *)"YES")))
-                             {
-                                useRegex = true;
-                             }
-                        }
-                      attrs=attrs->next;
-                   }
-                 addHost(NameNo, (char*)lcur->children->content, useRegex);
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"NAME"))
-              {
-                 NameNo = addName((char*)lcur->children->content);
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"SSL_PRIVATEKEY"))
-              {
-                 setSsl_Privatekey(NameNo, (char*)lcur->children->content);
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"SSL_CERTIFICATE"))
-              {
-                 setSsl_Certificate(NameNo, (char*)lcur->children->content);
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"SSL_PASSWORD"))
-              {
-                 if(lcur->children)
-                   setSsl_Password(NameNo, (char*)lcur->children->content);
-                 else
-                   setSsl_Password(NameNo, (char*)EMPTY);
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"IP"))
-              {
-                 bool useRegex = false;
-                 xmlAttr *attrs =  lcur->properties;
-                 while(attrs)
-                   {
-                      if(!xmlStrcmp(attrs->name, (const xmlChar *)"isRegex"))
-                        {
-                           if(attrs->children && attrs->children->content &&
-                              (!xmlStrcmp(attrs->children->content, (const 
xmlChar *)"YES")))
-                             {
-                                useRegex = true;
-                             }
-                        }
-                      attrs=attrs->next;
-                   }
-                 addIp(NameNo, (char*)lcur->children->content, useRegex);
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"PORT"))
-              {
-                 setPort(NameNo, (int)atoi((char*)lcur->children->content));
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"PROTOCOL"))
-              {
-                 if(!xmlStrcmp(lcur->children->content,(const xmlChar 
*)"HTTP"))
-                   setProtocol(NameNo, PROTOCOL_HTTP);
-                 else if(!xmlStrcmp(lcur->children->content,(const xmlChar 
*)"HTTPS"))
-                   setProtocol(NameNo, PROTOCOL_HTTPS);
-                 else if(!xmlStrcmp(lcur->children->content,(const xmlChar 
*)"FTP"))
-                   setProtocol(NameNo, PROTOCOL_FTP);
-                 else if(!xmlStrcmp(lcur->children->content,(const xmlChar 
*)"CONTROL"))
-                   setProtocol(NameNo, PROTOCOL_CONTROL);
-                 else
-                   { // dynamic protocol
-                      int i = Dynamic.get((const char 
*)lcur->children->content);
-                      if(i != -1)
-                        setProtocol(NameNo, i + PROTOCOL_DYNAMIC);
-                      else
-                        setProtocol(NameNo, PROTOCOL_HTTP);
-                   }
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"DOCROOT"))
-              {
-      if(lcur->children &&  lcur->children->content)
-        setDocroot(NameNo, (char*)lcur->children->content);
-      else
-        setDocroot(NameNo, "");
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"SYSFOLDER"))
-              {
-      if(lcur->children &&  lcur->children->content)
-        setSysfolder(NameNo, (char*)lcur->children->content);
-      else
-        setSysfolder(NameNo, "");
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"ACCESSLOG"))
-              {
-                        if(lcur->children && lcur->children->content)
-                                setAccesseslog(NameNo, 
(char*)lcur->children->content);
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"WARNINGLOG"))
-              {
-                        if(lcur->children && lcur->children->content)
-                  setWarninglog(NameNo, (char*)lcur->children->content);
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"ALLOW_CGI"))
-              {
-                 if(lcur->children->content)
-                   if(!xmlStrcmp(lcur->children->content, (const xmlChar 
*)"NO"))
-                     setService(NameNo, ALLOW_CGI, false);
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"ALLOW_ISAPI"))
-              {
-                 if(lcur->children->content)
-                   if(!xmlStrcmp(lcur->children->content, (const xmlChar 
*)"NO"))
-                     setService(NameNo, ALLOW_ISAPI, false);
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"ALLOW_MSCGI"))
-              {
-                 if(lcur->children->content)
-                   if(!xmlStrcmp(lcur->children->content, (const xmlChar 
*)"NO"))
-                     setService(NameNo, ALLOW_MSCGI, false);
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"ALLOW_WINCGI"))
-              {
-                 if(lcur->children->content)
-                   if(!xmlStrcmp(lcur->children->content, (const xmlChar 
*)"NO"))
-                     setService(NameNo, ALLOW_WINCGI, false);
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"ALLOW_FASTCGI"))
-              {
-                 if(lcur->children->content)
-                   if(!xmlStrcmp(lcur->children->content, (const xmlChar 
*)"NO"))
-                     setService(NameNo, ALLOW_FASTCGI, false);
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"ALLOW_SCGI"))
-              {
-                 if(lcur->children->content)
-                   if(!xmlStrcmp(lcur->children->content, (const xmlChar 
*)"NO"))
-                     setService(NameNo, ALLOW_SCGI, false);
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"ALLOW_SEND_LINK"))
-              {
-                 if(lcur->children->content)
-                   if(!xmlStrcmp(lcur->children->content, (const xmlChar 
*)"NO"))
-                     setService(NameNo, ALLOW_SEND_LINK, false);
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar 
*)"ALLOW_EXTERNAL_COMMANDS"))
-              {
-                 if(lcur->children->content)
-                   if(!xmlStrcmp(lcur->children->content, (const xmlChar 
*)"NO"))
-                     setService(NameNo, ALLOW_EXTERNAL_COMMANDS, false);
-              }
-            else if(!xmlStrcmp(lcur->name, (const xmlChar *)"ALLOW_SEND_FILE"))
-              {
-                 if(lcur->children->content)
-                   if(!xmlStrcmp(lcur->children->content, (const xmlChar 
*)"NO"))
-                     setService(NameNo, ALLOW_SEND_FILE, false);
-              }
-            lcur=lcur->next;
-         }
-     }
-   return 0;
-}
-
-int VHostXML::save(const char * filename)
-{
-   XmlParser xmlFile;
-   int ret = save_core(xmlFile);
-   xmlFile.save((char *)filename);
-   xmlFile.close();
-   return ret;
-}
-
-int VHostXML::saveMemBuf(MemBuf & buffer)
-{
-   XmlParser xmlFile;
-   int ret = save_core(xmlFile);
-   xmlFile.saveMemBuf(buffer);
-   xmlFile.close();
-   return ret;
-}
-
-// from vhosts.cpp with modification
-// Old text way removed to make use of MemBuf
-int VHostXML::save_core(XmlParser & xmlFile)
-{
-   if(VHosts.isempty())
-     return -1;
-
-   // New xml way...
-   int i, i2;
-   
-   xmlFile.newfile("VHOSTS");
-   
-   for(i = 0; i < VHosts.size(); i++)
-     {
-       xmlFile.addGroup("VHOST");
-
-       xmlFile.addChild("NAME", VHosts.at(i)->Text);
-
-       for(i2 = 0; i2 < ((VHostNode *)(VHosts.at(i)->Data))->Ip.size(); i2++)
-         {
-            xmlFile.addChild("IP", ((VHostNode 
*)(VHosts.at(i)->Data))->Ip.at(i2)->Text);
-            if((bool)((VHostNode *)(VHosts.at(i)->Data))->Ip.at(i2)->Data)
-              {
-                 xmlFile.setAttr("isRegex", "YES");
-              }
-         }
-
-       for(i2 = 0; i2 < ((VHostNode *)(VHosts.at(i)->Data))->Host.size(); i2++)
-         {
-            xmlFile.addChild("HOST", ((VHostNode 
*)(VHosts.at(i)->Data))->Host.at(i2)->Text);
-            if((bool)((VHostNode *)(VHosts.at(i)->Data))->Host.at(i2)->Data)
-              {
-                 xmlFile.setAttr("isRegex", "YES");
-              }
-         }
-
-       char port[6];
-       snprintf(port,6,"%i",getPort(i));
-       xmlFile.addChild("PORT", port);
-
-       if(getSsl_Privatekey(i) != EMPTY)
-         {
-            xmlFile.addChild("SSL_PRIVATEKEY", getSsl_Privatekey(i));
-         }
-
-       if(getSsl_Certificate(i) != EMPTY)
-         {
-            xmlFile.addChild("SSL_CERTIFICATE", getSsl_Certificate(i));
-         }
-
-       if(getSsl_Password(i) != EMPTY)
-         {
-            xmlFile.addChild("SSL_PASSWORD", getSsl_Password(i));
-         }
-
-       switch(getProtocol(i))
-         {
-          case PROTOCOL_HTTP:
-            xmlFile.addChild("PROTOCOL", "HTTP");
-            break;
-          case PROTOCOL_HTTPS:
-            xmlFile.addChild("PROTOCOL", "HTTPS");
-            break;
-          case PROTOCOL_FTP:
-            xmlFile.addChild("PROTOCOL", "FTP");
-            break;
-          case PROTOCOL_CONTROL:
-            xmlFile.addChild("PROTOCOL", "CONTROL");
-            break;
-          default: // Dynamic protocol
-            xmlFile.addChild("PROTOCOL", Dynamic.at(getProtocol(i) - 
PROTOCOL_DYNAMIC)->Text);
-            break;
-         }
-
-       xmlFile.addChild("DOCROOT", getDocroot(i));
-
-       xmlFile.addChild("SYSFOLDER", getSysfolder(i));
-
-       xmlFile.addChild("ACCESSLOG", getAccesseslog(i));
-
-       xmlFile.addChild("WARNINGLOG", getWarninglog(i));
-
-       if(!getService(i, ALLOW_CGI))
-         xmlFile.addChild("ALLOW_CGI", "NO");  
-
-       if(!getService(i, ALLOW_ISAPI))
-         xmlFile.addChild("ALLOW_ISAPI", "NO");
-
-       if(!getService(i, ALLOW_MSCGI))
-         xmlFile.addChild("ALLOW_MSCGI", "NO");
-
-       if(!getService(i, ALLOW_WINCGI))
-         xmlFile.addChild("ALLOW_WINCGI", "NO");
-
-       if(!getService(i, ALLOW_FASTCGI))
-         xmlFile.addChild("ALLOW_FASTCGI", "NO");
-
-       if(!getService(i, ALLOW_SCGI))
-         xmlFile.addChild("ALLOW_SCGI", "NO");
-
-       if(!getService(i, ALLOW_SEND_LINK))
-         xmlFile.addChild("ALLOW_SEND_LINK", "NO");
-
-       if(!getService(i, ALLOW_EXTERNAL_COMMANDS))
-         xmlFile.addChild("ALLOW_EXTERNAL_COMMANDS", "NO");
-
-       if(!getService(i, ALLOW_SEND_FILE))
-         xmlFile.addChild("ALLOW_SEND_FILE", "NO");
-       
-       xmlFile.endGroup();
-     }
-   return 0;
-}
-
-void VHostXML::populateName(Fl_Choice * o)
-{
-   o->clear();
-   for(int i = 0; i < VHosts.size(); i++)
-     o->add(VHosts.at(i)->Text);
-   if(VHosts.size() == 0)
-     o->add(" ");
-}
-
-void VHostXML::populateHost(int VHostNo, Fl_Browser * o)
-{
-   o->clear();
-   if(VHosts.isempty())
-     return;
-   for(int i = 0; i < ((VHostNode *)(VHosts.at(VHostNo)->Data))->Host.size(); 
i++)
-     o->add(((VHostNode *)(VHosts.at(VHostNo)->Data))->Host.at(i)->Text);
-}
-
-void VHostXML::populateIp(int VHostNo, Fl_Browser * o)
-{
-   o->clear();
-   if(VHosts.isempty())
-     return;
-   for(int i = 0; i < ((VHostNode *)(VHosts.at(VHostNo)->Data))->Ip.size(); 
i++)
-     o->add(((VHostNode *)(VHosts.at(VHostNo)->Data))->Ip.at(i)->Text);
-}
-
-int VHostXML::addName(const char * Text)
-{
-   VHostNode * NewNode = new VHostNode;
-   NewNode->Host.clear();
-   NewNode->Ip.clear();
-   NewNode->Port = 0;
-   NewNode->Protocol = 0;
-   NewNode->Service = ALLOW_ALL;
-   NewNode->Ssl_Privatekey = (char *)EMPTY;
-   NewNode->Ssl_Certificate = (char *)EMPTY;
-   NewNode->Ssl_Password = (char *)EMPTY;
-   NewNode->Docroot = (char *)EMPTY;
-   NewNode->Sysfolder = (char *)EMPTY;
-   NewNode->Accesseslog = (char *)EMPTY;
-   NewNode->Warninglog = (char *)EMPTY;
-   VectorNode * ret = VHosts.add(Text, (void *)NewNode);
-   VHosts.sort();
-   return ret->Number;
-}
-
-int VHostXML::addHost(int VHostNo, const char * Text, bool isRegx)
-{
-   if(VHosts.isempty())
-     return 0;
-   VectorNode * ret = ((VHostNode 
*)(VHosts.at(VHostNo)->Data))->Host.add(Text, (void *)isRegx);
-   ((VHostNode *)(VHosts.at(VHostNo)->Data))->Host.sort();
-   return ret->Number;
-}
-
-int VHostXML::addIp(int VHostNo, const char * Text, bool isRegx)
-{
-   if(VHosts.isempty())
-     return 0;
-   VectorNode * ret = ((VHostNode *)(VHosts.at(VHostNo)->Data))->Ip.add(Text, 
(void *)isRegx);
-   ((VHostNode *)(VHosts.at(VHostNo)->Data))->Ip.sort();
-   return ret->Number;
-}
-
-void VHostXML::removeName(int VHostNo)
-{
-   if(VHosts.isempty())
-     return;
-   DeleteVHostNode((VHostNode *)(VHosts.at(VHostNo)->Data));
-   VHosts.remove(VHostNo);
-}
-
-void VHostXML::removeHost(int VHostNo, int index)
-{
-   if(VHosts.isempty())
-     return;
-   ((VHostNode *)(VHosts.at(VHostNo)->Data))->Host.remove(index);
-}
-
-void VHostXML::removeIp(int VHostNo, int index)
-{
-   if(VHosts.isempty())
-     return;
-   ((VHostNode *)(VHosts.at(VHostNo)->Data))->Ip.remove(index);
-}
-
-void VHostXML::setPort(int VHostNo, int val)
-{
-   if(VHosts.isempty())
-     return;
-   ((VHostNode *)(VHosts.at(VHostNo)->Data))->Port = val;
-}
-
-void VHostXML::setProtocol(int VHostNo, int val)
-{
-   if(VHosts.isempty())
-     return;
-   ((VHostNode *)(VHosts.at(VHostNo)->Data))->Protocol = val;
-}
-
-void VHostXML::setService(int VHostNo, int serv, bool val)
-{
-   if(VHosts.isempty())
-     return;
-   
-   if(((VHostNode *)(VHosts.at(VHostNo)->Data))->Service & serv)
-     {
-       if(!val)
-         ((VHostNode *)(VHosts.at(VHostNo)->Data))->Service ^= serv;
-     }
-   else
-     {
-       if(val)
-         ((VHostNode *)(VHosts.at(VHostNo)->Data))->Service |= serv;
-     }
-}
-
-static inline void setstr(char *& dest, const char * val)
-{
-   if(dest != EMPTY)
-     free(dest);
-   if(val[0] == '\0')
-     dest = (char *)EMPTY;
-   else
-     dest = strdup(val);
-}
-
-void VHostXML::setSsl_Privatekey(int VHostNo, const char * val)
-{
-   if(VHosts.isempty())
-     return;
-   setstr(((VHostNode *)(VHosts.at(VHostNo)->Data))->Ssl_Privatekey, val);
-}
-
-void VHostXML::setSsl_Certificate(int VHostNo, const char * val)
-{
-   if(VHosts.isempty())
-     return;
-   setstr(((VHostNode *)(VHosts.at(VHostNo)->Data))->Ssl_Certificate, val);
-}
-
-void VHostXML::setSsl_Password(int VHostNo, const char * val)
-{
-   if(VHosts.isempty())
-     return;
-   setstr(((VHostNode *)(VHosts.at(VHostNo)->Data))->Ssl_Password, val);
-}
-
-void VHostXML::setDocroot(int VHostNo, const char * val)
-{
-   if(VHosts.isempty())
-     return;
-   setstr(((VHostNode *)(VHosts.at(VHostNo)->Data))->Docroot, val);
-}
-
-void VHostXML::setSysfolder(int VHostNo, const char * val)
-{
-   if(VHosts.isempty())
-     return;
-   setstr(((VHostNode *)(VHosts.at(VHostNo)->Data))->Sysfolder, val);
-}
-
-void VHostXML::setAccesseslog(int VHostNo, const char * val)
-{
-   if(VHosts.isempty())
-     return;
-   setstr(((VHostNode *)(VHosts.at(VHostNo)->Data))->Accesseslog, val);
-}
-
-void VHostXML::setWarninglog(int VHostNo, const char * val)
-{
-   if(VHosts.isempty())
-     return;
-   setstr(((VHostNode *)(VHosts.at(VHostNo)->Data))->Warninglog, val);
-}
-
-int VHostXML::getPort(int VHostNo)
-{
-   if(VHosts.isempty())
-     return 0;
-   return ((VHostNode *)(VHosts.at(VHostNo)->Data))->Port;
-}
-
-int VHostXML::getProtocol(int VHostNo)
-{
-   if(VHosts.isempty())
-     return 0;
-   return ((VHostNode *)(VHosts.at(VHostNo)->Data))->Protocol;
-}
-
-bool VHostXML::getService(int VHostNo, int serv)
-{
-   if(VHosts.isempty())
-     return 0;
-   return ((VHostNode *)(VHosts.at(VHostNo)->Data))->Service & serv;
-}
-   
-const char * VHostXML::getSsl_Privatekey(int VHostNo)
-{
-   if(VHosts.isempty())
-     return EMPTY;
-   return ((VHostNode *)(VHosts.at(VHostNo)->Data))->Ssl_Privatekey;
-}
-
-const char * VHostXML::getSsl_Certificate(int VHostNo)
-{
-   if(VHosts.isempty())
-     return EMPTY;
-   return ((VHostNode *)(VHosts.at(VHostNo)->Data))->Ssl_Certificate;
-}
-
-const char * VHostXML::getSsl_Password(int VHostNo)
-{
-   if(VHosts.isempty())
-     return EMPTY;
-   return ((VHostNode *)(VHosts.at(VHostNo)->Data))->Ssl_Password;
-}
-
-const char * VHostXML::getDocroot(int VHostNo)
-{
-   if(VHosts.isempty())
-     return EMPTY;
-   return ((VHostNode *)(VHosts.at(VHostNo)->Data))->Docroot;
-}
-
-const char * VHostXML::getSysfolder(int VHostNo)
-{
-   if(VHosts.isempty())
-     return EMPTY;
-   return ((VHostNode *)(VHosts.at(VHostNo)->Data))->Sysfolder;
-}
-
-const char * VHostXML::getAccesseslog(int VHostNo)
-{
-   if(VHosts.isempty())
-     return EMPTY;
-   return ((VHostNode *)(VHosts.at(VHostNo)->Data))->Accesseslog;
-}
-
-const char * VHostXML::getWarninglog(int VHostNo)
-{
-   if(VHosts.isempty())
-     return EMPTY;
-   return ((VHostNode *)(VHosts.at(VHostNo)->Data))->Warninglog;
-}
-
-void VHostXML::populateProtocol(Fl_Choice * o)
-{
-   // Fl_Menu_ has a "terminator" item
-   while(o->size() - 1 > PROTOCOL_DYNAMIC)
-     {
-       o->remove(o->size() - 2);
-     }
-   for(int i = 0; i < Dynamic.size(); i++)
-     {
-       o->add(Dynamic.at(i)->Text, 0, 0, 0, 0);
-     }
-}
-
-void VHostXML::loadProtocols(Vector & list)
-{
-   Dynamic.clear();
-   Dynamic.add(list);
-}
-
-static inline void delstr(char * val)
-{
-   if(val != EMPTY)
-     free(val);
-}
-
-void VHostXML::DeleteVHostNode(VHostNode * Node)
-{
-   Node->Host.clear();
-   Node->Ip.clear();
-   delstr(Node->Ssl_Privatekey);
-   delstr(Node->Ssl_Certificate);
-   delstr(Node->Ssl_Password);
-   delstr(Node->Docroot);
-   delstr(Node->Sysfolder);
-   delstr(Node->Accesseslog);
-   delstr(Node->Warninglog);
-   delete Node;
-}
-
diff --git a/misc/control/control/vhost.h b/misc/control/control/vhost.h
deleted file mode 100644
index 1bdea2a..0000000
--- a/misc/control/control/vhost.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- *  MyServer
- *  Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *  
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *  
- *  You should have received a copy of the GNU General Public License
- *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *   */
-#ifndef VHOST_H_CONF
-#define VHOST_H_CONF
-
-#include <FL/Fl.H>
-#include <FL/Fl_Browser.H>
-#include <FL/Fl_Choice.H>
-
-#include "vector.h"
-#include <include/base/mem_buff/mem_buff.h>
-#include <vector>
-
-using namespace std;
-
-enum 
-{
-   PROTOCOL_HTTP = 0,
-   PROTOCOL_HTTPS,
-   PROTOCOL_FTP,
-   PROTOCOL_CONTROL,
-   PROTOCOL_DYNAMIC
-};
-
-#define ALLOW_CGI               0x001
-#define ALLOW_ISAPI             0x002
-#define ALLOW_MSCGI             0x004
-#define ALLOW_WINCGI            0x008
-#define ALLOW_FASTCGI           0x010
-#define ALLOW_SEND_LINK         0x020
-#define ALLOW_EXTERNAL_COMMANDS 0x040
-#define ALLOW_SEND_FILE         0x080
-#define ALLOW_SCGI              0x100
-#define ALLOW_ALL               0xFFF
-
-extern const char * EMPTY;
-
-struct VHostNode
-{
-   Vector Host;
-   Vector Ip;
-   int Port;
-   int Protocol;
-   int Service;
-   char * Ssl_Privatekey;
-   char * Ssl_Certificate;
-   char * Ssl_Password;
-   char * Docroot;
-   char * Sysfolder;
-   char * Accesseslog;
-   char * Warninglog;
-};
-
-class VHostXML
-{
- public:
-   ~VHostXML();
-   void clear();
-   int load(const char *);
-   int loadMemBuf(MemBuf &);
-   int load_core(XmlParser &);
-   int save(const char *);
-   int saveMemBuf(MemBuf &);
-   int save_core(XmlParser &);
-   void populateName(Fl_Choice *);
-   void populateHost(int, Fl_Browser *);
-   void populateIp(int, Fl_Browser *);
-   int addName(const char *);
-   int addHost(int, const char *, bool);
-   int addIp(int, const char *, bool);
-   void removeName(int);
-   void removeHost(int, int);
-   void removeIp(int, int);
-   void setPort(int, int);
-   void setProtocol(int, int);
-   void setService(int, int, bool);
-   void setSsl_Privatekey(int, const char *);
-   void setSsl_Certificate(int, const char *);
-   void setSsl_Password(int, const char *);
-   void setDocroot(int, const char *);
-   void setSysfolder(int, const char *);
-   void setAccesseslog(int, const char *);
-   void setWarninglog(int, const char *);
-   int getPort(int);
-   int getProtocol(int);
-   bool getService(int, int);
-   const char * getSsl_Privatekey(int);
-   const char * getSsl_Certificate(int);
-   const char * getSsl_Password(int);
-   const char * getDocroot(int);
-   const char * getSysfolder(int);
-   const char * getAccesseslog(int);
-   const char * getWarninglog(int);
-   /* Dynamic protocals */
-   void populateProtocol(Fl_Choice *);
-   void loadProtocols(Vector &);
- private :
-   void DeleteVHostNode(VHostNode *);
-   Vector VHosts;
-   Vector Dynamic;
-};
-
-#endif



commit 3565c08bbf7d2787efa45ce5a07a4cf042c6ef3e
Author: Giuseppe Scrivano <address@hidden>
Date:   Wed Jul 15 21:06:33 2009 +0200

    Specifiy the host name in error messages.

diff --git a/myserver/src/conf/vhost/vhost_manager.cpp 
b/myserver/src/conf/vhost/vhost_manager.cpp
index 58f2ade..2dd9feb 100644
--- a/myserver/src/conf/vhost/vhost_manager.cpp
+++ b/myserver/src/conf/vhost/vhost_manager.cpp
@@ -455,9 +455,8 @@ int VhostManager::loadXMLConfigurationFile(const char 
*filename)
                     lastChar++;
 
                   if (*lastChar == '\\' || *lastChar == '/')
-                    {
-                      *lastChar = '\0';
-                    }
+                    *lastChar = '\0';
+
                   vh->setDocumentRoot ((const char*)lcur->children->content);
                 }
               else
@@ -468,13 +467,13 @@ int VhostManager::loadXMLConfigurationFile(const char 
*filename)
               if (lcur->children && lcur->children->content)
                 {
                   char* lastChar = (char*)lcur->children->content;
+
                   while(*(lastChar+1) != '\0')
                     lastChar++;
 
                   if(*lastChar == '\\' || *lastChar == '/')
-                    {
-                      *lastChar = '\0';
-                    }
+                    *lastChar = '\0';
+
                   vh->setSystemRoot ((const char*)lcur->children->content);
                 }
               else
@@ -488,14 +487,14 @@ int VhostManager::loadXMLConfigurationFile(const char 
*filename)
             {
               loadXMLlogData ("WARNINGLOG", vh, lcur);
             }
-          else if(!xmlStrcmp(lcur->name, (const xmlChar *)"MIME_FILE"))
+          else if (!xmlStrcmp (lcur->name, (const xmlChar *)"MIME_FILE"))
             {
-              if(lcur->children)
-                vh->getMIME()->loadXML((char*)lcur->children->content);
+              if (lcur->children)
+                vh->getMIME()->loadXML ((char*)lcur->children->content);
             }
-          else if(!xmlStrcmp(lcur->name, (const xmlChar *)"THROTTLING_RATE"))
+          else if (!xmlStrcmp (lcur->name, (const xmlChar *)"THROTTLING_RATE"))
             {
-              vh->setThrottlingRate 
((u_long)atoi((char*)lcur->children->content));
+              vh->setThrottlingRate ((u_long)atoi 
((char*)lcur->children->content));
             }
 
           lcur = lcur->next;
@@ -510,27 +509,31 @@ int VhostManager::loadXMLConfigurationFile(const char 
*filename)
           continue;
         }
 
-      if (vh->initializeSSL() < 0)
+      if (vh->initializeSSL () < 0)
         {
-          errMsg.assign ("Error: initializing vhost ");
+          errMsg.assign ("Error: initializing vhost \"");
           errMsg.append (vh->getName ());
-          errMsg.assign (" : cannot initialize SSL. ");
-          Server::getInstance()->logWriteln(errMsg.c_str(), 
MYSERVER_LOG_MSG_ERROR);
+          errMsg.append ("\"");
+          Server::getInstance ()->logWriteln (errMsg.c_str (),
+                                              MYSERVER_LOG_MSG_ERROR);
           delete vh;
           vh = 0;
           continue;
         }
 
-      if(addVHost(vh))
+      if (addVHost (vh))
         {
-          errMsg.assign("Error: adding vhost");
-          Server::getInstance()->logWriteln(errMsg.c_str(), 
MYSERVER_LOG_MSG_ERROR);
+          errMsg.assign ("Error: adding vhost \"");
+          errMsg.append (vh->getName ());
+          errMsg.append ("\"");
+          Server::getInstance ()->logWriteln (errMsg.c_str (),
+                                              MYSERVER_LOG_MSG_ERROR);
           delete vh;
           vh = 0;
           continue;
         }
     }
-  parser.close();
+  parser.close ();
 
   changeLocationsOwner ();
 

-----------------------------------------------------------------------

Summary of changes:
 misc/control/control/Makefile.am                   |   14 -
 misc/control/control/MyServer Configure.dev        |  189 -
 misc/control/control/MyServer Configure.ico        |  Bin 2238 -> 0 bytes
 misc/control/control/bless.patch                   |   21 -
 misc/control/control/control_client.cpp            |  600 ---
 misc/control/control/control_client.h              |   81 -
 misc/control/control/fltkconfig.cpp                | 5033 --------------------
 misc/control/control/fltkconfig.fd                 | 2236 ---------
 misc/control/control/fltkconfig.h                  |  439 --
 misc/control/control/language.cpp                  |  410 --
 misc/control/control/language.h                    |   53 -
 misc/control/control/mimetype.cpp                  |  444 --
 misc/control/control/mimetype.h                    |   96 -
 misc/control/control/myserver-configure.cpp        |  400 --
 misc/control/control/progress.cpp                  |   45 -
 misc/control/control/progress.h                    |   27 -
 misc/control/control/service.cpp                   |  178 -
 misc/control/control/service.h                     |   27 -
 misc/control/control/textmangler/textmangler.cpp   |   96 -
 misc/control/control/tmp/keepme                    |    1 -
 misc/control/control/vector.cpp                    |  226 -
 misc/control/control/vector.h                      |   55 -
 misc/control/control/vhost.cpp                     |  665 ---
 misc/control/control/vhost.h                       |  117 -
 myserver/binaries/virtualhosts.default.windows.xml |    4 +-
 myserver/binaries/virtualhosts.default.xml         |    4 +-
 myserver/documentation/ssl_certificates.texi       |    2 +-
 myserver/documentation/virtual_hosts.texi          |    6 +-
 myserver/src/conf/vhost/vhost_manager.cpp          |   43 +-
 29 files changed, 31 insertions(+), 11481 deletions(-)
 delete mode 100644 misc/control/control/Makefile.am
 delete mode 100644 misc/control/control/MyServer Configure.dev
 delete mode 100644 misc/control/control/MyServer Configure.ico
 delete mode 100644 misc/control/control/bless.patch
 delete mode 100644 misc/control/control/control_client.cpp
 delete mode 100644 misc/control/control/control_client.h
 delete mode 100644 misc/control/control/fltkconfig.cpp
 delete mode 100644 misc/control/control/fltkconfig.fd
 delete mode 100644 misc/control/control/fltkconfig.h
 delete mode 100644 misc/control/control/language.cpp
 delete mode 100644 misc/control/control/language.h
 delete mode 100644 misc/control/control/mimetype.cpp
 delete mode 100644 misc/control/control/mimetype.h
 delete mode 100644 misc/control/control/myserver-configure.cpp
 delete mode 100644 misc/control/control/progress.cpp
 delete mode 100644 misc/control/control/progress.h
 delete mode 100644 misc/control/control/service.cpp
 delete mode 100644 misc/control/control/service.h
 delete mode 100644 misc/control/control/textmangler/textmangler.cpp
 delete mode 100644 misc/control/control/tmp/keepme
 delete mode 100644 misc/control/control/vector.cpp
 delete mode 100644 misc/control/control/vector.h
 delete mode 100644 misc/control/control/vhost.cpp
 delete mode 100644 misc/control/control/vhost.h


hooks/post-receive
-- 
GNU MyServer




reply via email to

[Prev in Thread] Current Thread [Next in Thread]