#include "honlinemonclientmain.h"
#include "honlinemonclientxml.h"
#include "honlinemonclientmainwin.h"
#include "honlinemonclientdet.h"
#include "honlinemonclienttabwin.h"
#include "honlinemonclientsimplewin.h"
#include "honlinemonclienttab.h"
#include "honlinemonclientcanvas.h"
#include "honlinemonclienthist.h"
#include "TClass.h"
#include "TObject.h"
#include "TPad.h"
#include "TTimeStamp.h"
#include "TObjString.h"
#include <cstdlib>
ClassImp(HOnlineMonClientMain);
 Int_t    HOnlineMonClientMain::AutoSaveInterval       = -1;  
 Int_t    HOnlineMonClientMain::AutoSaveIntervalOnline = -1;  
 time_t   HOnlineMonClientMain::lastSaved        = 0;
 time_t   HOnlineMonClientMain::lastSavedOnline  = 0;
TThread*  HOnlineMonClientMain::mainThread       = NULL;
ULong64_t HOnlineMonClientMain::lastSumBytes     = 0;
Int_t     HOnlineMonClientMain::isMasterClient   = -1;
HOnlineMonClientMain::HOnlineMonClientMain(TString filename) {
    
    
    configfile = filename;
    socket = 0;
    updateComplete = kTRUE;
    updateThread = 0;
    UpdateInterval = 4;
    serverhost = "";
    serverport = 0;\
    doReconnect = 1;
}
void HOnlineMonClientMain::Init(Bool_t sendCmdOnly, TString host, Int_t port, TString cmd) {
    
    
    
    
    
    if (sendCmdOnly) {
        
        Bool_t validcmd = kFALSE;
        if ( Connect(host, port) ) {
            TThread::Printf("connected to server '%s' on port '%d'.", host.Data(), port);
        } else {
            TThread::Printf("failed to connect to server '%s' on port '%d'.", host.Data(), port);
            return;
        }
        
        
        if (cmd.CompareTo("list")==0) {
            validcmd = kTRUE;
            TThread::Printf("list of available histograms from server '%s' on port '%d'", host.Data(), port);
            TThread::Printf("=========================================================");
            TList* histolist = GetListOfHistograms();
            if (histolist) {
                for(Int_t i=0;i<histolist->LastIndex()+1;i++) {
                    TString tempname = ((TObjString*) histolist->At(i))->GetString();
                    TThread::Printf("%s\n",tempname.Data());
                }
                TThread::Printf("=========================================================");
                histolist->Delete();
                delete histolist;
                histolist = 0;
            } else {
                TThread::Printf("ERROR: Received invalid list of histograms from server for command '%s'", cmd.Data());
                return;
            }
        }
        
        
        if (cmd.CompareTo("stop")==0) {
            validcmd = kTRUE;
            TThread::Printf("stop server '%s' on port '%d'", host.Data(), port);
            TString answer = SendCmdToServer("CMD stop");
        }
        
        socket->Close();
        delete socket;
        socket = 0;
        
        
        if (!validcmd) {
            
            TThread::Printf("Error: Unknown command '%s'", cmd.Data());
            return;
        }
        
        return;
    }
    
    
    
    TThread::Printf("Create MainClient");
     
    clientmainwin = new HOnlineMonClientMainWin();
    clientmainwin->SetMainClient(this);
    CreateClientConfig(configfile);
    mainThread = TThread::Self();
    clientmainwin->CreateMainWin(this);
    
    if ( Connect(serverhost, serverport) ) {
        TThread::Printf("connected to server '%s' on port '%d'.", serverhost.Data(), serverport);
    } else {
        TThread::Printf("failed to connect to server '%s' on port '%d'.", serverhost.Data(), serverport);
        exit(1);
    }
    TString master = SendCmdToServer("CMD ismaster");
    if(master == "yes") {
	SetIsMasterClient(kTRUE);
	TThread::Printf("Running as Master client");
    } else {
        TThread::Printf("Running as Slave client");
    }
    
    if (!updateThread) {
	TThread::Printf("start Update");
        updateThread = new TThread("updateThread", ( void(*) (void*) )&ThreadUpdateHists, (void*) this);
        updateThread->Run();
        TThread::Ps();
    }
     mainThread->Lock();
 
    
    
    TThread::Printf("Create Detetctor GUIs");
    for (Int_t i=0;i<listDetectors.LastIndex()+1;i++) {
	TString detname = listDetectors.At(i)->GetName();
	HOnlineMonClientDet *det = (HOnlineMonClientDet*) listDetectors.At(i);
	TGCheckButton *checkbutton = (TGCheckButton *)clientmainwin->listControlbuttons.FindObject(detname);
	if(checkbutton->IsOn()){
	  CreateDetGui(det);
	}
    }
    
    mainThread->UnLock();
    
    
    TThread::Printf("Before Loop");
    lastSaved       = time(NULL);
    lastSavedOnline = time(NULL);
    
    while(kTRUE) {
	mainThread->Lock();
        gSystem->ProcessEvents();
        
        for (Int_t i=0;i<listPads.LastIndex()+1;i++) {
            if (listPads.At(i)->IsA() == TCanvas::Class()) {
                
                TCanvas* cnv = (TCanvas*) listPads.At(i);
		cnv->cd();
                HOnlineMonClientHist* hist = (HOnlineMonClientHist*) listHists.FindObject(pad2hist[cnv->GetName()]);
                if (hist&&hist->IsActive() && hist->histo) {
                    if (cnv->IsModified()) {
                        cnv->Update();
                    }
                }
            } else {
                
                TPad* subpad = (TPad*) listPads.At(i);
                subpad->cd();
                HOnlineMonClientHist* hist = (HOnlineMonClientHist*) listHists.FindObject(pad2hist[subpad->GetName()]);
                if (hist&&hist->IsActive() && hist->histo) {
                    if (subpad->IsModified()) {
                        subpad->Update();
                    }
                }
	    }
	    gSystem->ProcessEvents();
        }
	mainThread->UnLock();
	TThread::Sleep(0,1000000*1); 
    }
}
void* HOnlineMonClientMain::ThreadUpdateHists(void* arg) {
    
    
    
    
    
    
    
    
    
    HOnlineMonClientMain *clientmain = (HOnlineMonClientMain*) arg;
    
    while(1) {
        gSystem->Sleep(clientmain->UpdateInterval*1000);
        
	mainThread->Lock();
	
	if(clientmain->updateComplete) {
	    clientmain->updateComplete = kFALSE;
	    clientmain->UpdateHists();
	    clientmain->updateComplete = kTRUE;
	}
 	
	
	if(AutoSaveInterval > 0){
	    time_t now = time(NULL);
	    if(now - lastSaved > AutoSaveInterval*60){
		clientmain->HandleSnapshotSave();
		lastSaved = time(NULL);
	    }
	}
	
	
	if(AutoSaveIntervalOnline > 0){
	    time_t now = time(NULL);
	    if(now - lastSavedOnline > AutoSaveIntervalOnline*60){
		clientmain->HandleSnapshotSaveOnline();
		lastSavedOnline = time(NULL);
	    }
	}
	
	mainThread->UnLock();
   }
    return 0;
}
void HOnlineMonClientMain::UpdateHists() {
    
    
    
    
    TString filename = SendCmdToServer("CMD filename");
    TString speed    = SendCmdToServer("CMD speed");
    filename = gSystem->BaseName(filename.Data());
    ULong64_t totBytesRecieved = socket->GetSocketBytesRecv();
    Float_t bytesPerSecond = (0.000001*(totBytesRecieved-lastSumBytes))/UpdateInterval;
    lastSumBytes = totBytesRecieved;
    clientmainwin->fTextFilename->SetText(filename.Data());
    clientmainwin->fTextSpeed   ->SetText(speed.Data());
    clientmainwin->fDataRate    ->SetText(Form("%10.4f Mb/s",bytesPerSecond));
    for (Int_t i=0;i<listPads.LastIndex()+1;i++) {
	if (listPads.At(i)->IsA() == TCanvas::Class()) {
            
            TCanvas* cnv = (TCanvas*) listPads.At(i);
	    
	    if(cnv == 0) TThread::Printf("UpdateHists() : canvas == 0");
	    cnv->cd();
            HOnlineMonClientHist* hist = (HOnlineMonClientHist*) listHists.FindObject(pad2hist[cnv->GetName()]);
	    
	    if (hist&&hist->IsActive() && hist->histo) {
                if (!UpdateHist(hist)) {
                    
                    TThread::Printf("ERROR: Update of histogram '%s' failed.", hist->GetName());
		}
            }
        } else {
            
            TPad* subpad = (TPad*) listPads.At(i);
	    if(subpad == 0) TThread::Printf("UpdateHists() : subpad == 0");
	    subpad->cd();
            HOnlineMonClientHist* hist = (HOnlineMonClientHist*) listHists.FindObject(pad2hist[subpad->GetName()]);
	    
	    if (hist&&hist->IsActive() && hist->histo) {
                if (!UpdateHist(hist)) {
                    
                    TThread::Printf("ERROR: Update of histogram '%s' failed.", hist->GetName());
		}
	    }
        }
    }
}
void HOnlineMonClientMain::CreateClientConfig(TString xmlfile) {
        
	
	HOnlineMonClientXML* xmlparser = new HOnlineMonClientXML();
        Bool_t r = xmlparser->ParseXMLFile(xmlfile, this);
        if (!r) {
            TThread::Printf("Error: could not parse xml file.");
            delete xmlparser;
            xmlparser = 0;
            exit(1);
        }
        
        delete xmlparser;
}
void HOnlineMonClientMain::CreateDetGui(HOnlineMonClientDet *detector) {
    
    mainThread->Lock();
    
    detector->CreateDet(this);
   
    
    mainThread->UnLock();
}
void HOnlineMonClientMain::DestroyDetGui(HOnlineMonClientDet *detector) {
    
    mainThread->Lock();
    
    detector->DestroyDet(this);
    
    mainThread->UnLock();
}
void HOnlineMonClientMain::DestroySingleWindow(HOnlineMonClientSimpleWin *window) {
    
    HOnlineMonClientDet *detector = (HOnlineMonClientDet *) listDetectors.FindObject(window->detectorname);
    if(detector) {
	TGCheckButton *button = 0;
	button = (TGCheckButton*) clientmainwin->listControlbuttons.FindObject(window->detectorname);
	if(button){
	    button->SetEnabled(kFALSE);
	    DestroyDetGui(detector);
	    button->SetEnabled(kTRUE);
	    button->SetOn(kFALSE);
	}
    }
    else { TThread::Printf("Error : DestroySingleWindow () retrieved NULL pointer for detector %s .",window->detectorname.Data());}
}
void HOnlineMonClientMain::DestroySingleWindow(HOnlineMonClientTabWin *window) {
    
    HOnlineMonClientDet *detector = (HOnlineMonClientDet *) listDetectors.FindObject(window->detectorname);
    if(detector) {
	TGCheckButton *button = (TGCheckButton*) clientmainwin->listControlbuttons.FindObject(window->detectorname);
	if(button){
	    button->SetEnabled(kFALSE);
	    DestroyDetGui(detector);
	    button->SetEnabled(kTRUE);
	    button->SetOn(kFALSE);
	}
    }
    else { TThread::Printf("Error : DestroySingleWindow () retrieved NULL pointer for detector %s .",window->detectorname.Data());}
}
void HOnlineMonClientMain::HandleRefreshRateChange() {
    
    SetUpdateInterval(clientmainwin->numberEntryRefreshRate->GetNumberEntry()->GetIntNumber());
}
void HOnlineMonClientMain::HandleAutoSaveRateChange() {
    
    SetAutoSaveInterval(clientmainwin->numberEntryAutoSaveRate->GetNumberEntry()->GetIntNumber());
}
void HOnlineMonClientMain::HandleSendStopServer(){
    TString returnval = SendCmdToServer("CMD stop");
    TThread::Printf("server responded on command stop = %s !", returnval.Data());
    if(returnval != "IGNORED"){
	TThread::Printf("Close Monitor application !");
	HandleMainWindowClose();
    }
    if(returnval == "IGNORED"){
	Int_t retval = 0;
	new TGMsgBox(gClient->GetRoot(), clientmainwin->GetMainWindow(),
		     "ERROR MSG", "YOU ARE NOT RUNNING AS MASTER AND CANNOT STOP THE SERVER!"
		     ,kMBIconExclamation,kMBCancel,&retval);
    }
}
void HOnlineMonClientMain::HandleSendResetHists(){
    TString returnval = SendCmdToServer("CMD resetall");
    TThread::Printf("server responded on command resetall = %s !", returnval.Data());
    if(returnval == "IGNORED"){
	Int_t retval = 0;
	new TGMsgBox(gClient->GetRoot(), clientmainwin->GetMainWindow(),
		     "ERROR MSG", "YOU ARE NOT RUNNING AS MASTER AND CANNOT RESET HISTOGRAMS!"
		     ,kMBIconExclamation,kMBCancel,&retval);
    }
}
void HOnlineMonClientMain::HandleConnectionError()
{
    TThread::Printf("server responded connection Error!" );
    Int_t retval = -1;
    
    
    
    
    
    TGMsgBox* box = NULL;
    if(doReconnect == 1){
	box = new TGMsgBox(gClient->GetRoot(), clientmainwin->GetMainWindow(),
			   "ERROR MSG", "CONNECTION TO SERVER LOST! \n PRESS YES TO EXIT OR NO TO WAIT FOR RECONNECT!"
			   ,kMBIconStop,kMBYes|kMBNo ,&retval);
    }
    if(doReconnect == 0) {
	HandleMainWindowClose();
        return;
    }
    while ( ReConnect(serverhost,serverport) == kFALSE ){
        gSystem->ProcessEvents();
	TThread::Sleep(1);
        gSystem->ProcessEvents();
	TThread::Sleep(1);
	TThread::Printf("Try to reconnect!" );
    }
    if( IsMasterClient() ) {
	TString message = SendCmdToServer("CMD setmaster");
	if(message == "ok") {
           TThread::Printf("Running as Master client");
	} else {
	    TThread::Printf("Running as Slave client");
	}
    }
    TThread::Printf("Succesfully reconnected to server %s , port %i!",serverhost.Data(),serverport);
    if(doReconnect == 1 && box && retval == -1 && retval != kMBClose){ 
	box->CloseWindow();
    }
    if(doReconnect == 1 && retval == kMBYes) {
	HandleMainWindowClose();
    }
}
void HOnlineMonClientMain::HandleTryClose()
{
    Int_t retval = 0;
    
    new TGMsgBox(gClient->GetRoot(), clientmainwin->GetMainWindow(),
		 "ERROR MSG", "CANNOT CLOSE NOW, STILL A MESSAGE BOX OPEN!"
		 ,kMBIconExclamation,kMBCancel,&retval);
    HandleConnectionError();
}
void HOnlineMonClientMain::HandleSnapshotSave() {
    
    
    
    if (listPads.LastIndex() == -1) return; 
    Bool_t doQuit = kFALSE;
    mainThread->Lock();
    
    
    
    
    
    
    map <TString, Bool_t> printedCanvases;
    
    
    UInt_t year = 0;
    UInt_t month = 0;
    UInt_t day = 0;
    UInt_t hour = 0;
    UInt_t min = 0;
    UInt_t sec = 0;
    
    TTimeStamp* timestamp = new TTimeStamp();
    timestamp->GetDate(kFALSE, 0, &year, &month, &day);
    timestamp->GetTime(kFALSE, 0, &hour, &min, &sec);
    delete timestamp;
    TString  path      = clientmainwin->fTextSnapshotPath->GetText();
    TString currentRun = clientmainwin->fTextFilename->GetText();
    if(path      .Contains("ERROR")) doQuit = kTRUE;
    if(currentRun.Contains("ERROR")) doQuit = kTRUE;
    if(!doQuit)
    {
	if(path != ""){
	    path += "/";
	    path.ReplaceAll("//","/");
	    if(gSystem->AccessPathName(path.Data()) != 0 ){ 
		TThread::Printf("HandleSnapshotSave() : Path = %s not found! Will use currentdirectory.",path.Data());
		path = "";
	    }
	}
	TString currentRun = clientmainwin->fTextFilename->GetText();
	TString filename = "";
	filename.Form("%s_%d-%02d-%02d_%02d%02d%02d.ps", currentRun.Data(), year, month, day, hour, min, sec);
	TString pdf = filename;
	pdf.ReplaceAll(".ps",".pdf");
	TString input  = path + filename;
	TString output = path + pdf;
	
	TPad* subpad = (TPad*) listPads.At(0);
	
	subpad->GetCanvas()->Print(filename + TString("["));
	for (Int_t i=0;i<listPads.LastIndex()+1;i++) {
	    TPad* subpad = (TPad*) listPads.At(i);
	    TCanvas* cnv = subpad->GetCanvas();
	    if (!printedCanvases[cnv->GetName()]) {  
		cnv->Print(filename);
		printedCanvases[cnv->GetName()] = kTRUE;
                cnv->SetBatch(kFALSE); 
                cnv->Modified();       
	    }
	}
	
	subpad->GetCanvas()->Print(filename + TString("]"));
        subpad->GetCanvas()->SetBatch(kFALSE); 
	subpad->GetCanvas()->Modified();       
	if (gSystem->AccessPathName(filename.Data()) == 0 ){ 
	    gSystem->Exec(Form("ps2pdf %s %s",filename.Data(),pdf.Data()));
	    if (gSystem->AccessPathName(pdf.Data()) == 0 ){
		gSystem->Exec(Form("rm -f %s",filename.Data()));
		if(path != "") gSystem->Exec(Form("mv %s %s/",pdf.Data(),path.Data()));
		TThread::Printf("HandleSnapshotSave() : Snapshot File has been saved in %s",Form("%s%s",path.Data(),pdf.Data()));
	    } else {
		TThread::Printf("HandleSnapshotSave() : Could not convert ps file!");
	    }
	}
	lastSaved = time(NULL);
	TThread::Printf("SnapShot finished!");
    } else {
       	TThread::Printf("HandleSnapshotSave() : Could not convert ps file because of lost connection to server! Will QUIT! BYE ...");
	mainThread->UnLock();
	HandleMainWindowClose();
    }
    if(!doQuit) mainThread->UnLock();
}
void HOnlineMonClientMain::HandleSnapshotSaveOnline() {
    
    
    if (listPads.LastIndex() == -1) return; 
    mainThread->Lock();
    
    
    
    
    
    
    map <TString, Bool_t> printedCanvases;
    
    TString  path      = clientmainwin->fTextSnapshotPathOnline;
    if(path != ""){
	path += "/";
	path.ReplaceAll("//","/");
	if(gSystem->AccessPathName(path.Data()) != 0 ){ 
	    TThread::Printf("HandleSnapshotSave() : Path = %s not found! Will use currentdirectory.",path.Data());
	    path = "";
	}
    }
    for (Int_t i=0;i<listPads.LastIndex()+1;i++) {
	TPad* subpad = (TPad*) listPads.At(i);
	TCanvas* cnv = subpad->GetCanvas();
	if (!printedCanvases[cnv->GetName()]) {  
	    cnv->SaveAs(Form("%s%s.png",path.Data(),cnv->GetName()));
	    printedCanvases[cnv->GetName()] = kTRUE;
	}
    }
    lastSavedOnline = time(NULL);
    TThread::Printf("SnapShot finished!");
    mainThread->UnLock();
}
void HOnlineMonClientMain::HandleMainWindowClose() {
    
    mainThread->Lock();
    for(Int_t i=0;i<listDetectors.LastIndex()+1;i++) {
	HOnlineMonClientDet* detector = (HOnlineMonClientDet*) listDetectors.At(i);
	if (detector->IsActive()) {
	    detector->DestroyDet(this);
	}
    }
    listDetectors.Delete();
    listHists.Delete();
    listPads.Delete();
    TThread::Delete(updateThread);
    delete updateThread;
    socket->Close();
    delete socket;
    mainThread->UnLock();
   
    gApplication->Terminate();
}
HOnlineMonClientMain::~HOnlineMonClientMain() {
    mainThread->Lock();
    for(Int_t i=0;i<listDetectors.LastIndex()+1;i++) {
	    HOnlineMonClientDet* detector = (HOnlineMonClientDet*) listDetectors.At(i);
	    if (detector->IsActive()) {
	        detector->DestroyDet(this);
	    }
    }
    listDetectors.Delete();
    listHists.Delete();
    listPads.Delete();
	
    TThread::Delete(updateThread);
    delete updateThread;
    if (socket) {
        socket->Close();
        delete socket;
        socket = 0;
    }
    mainThread->UnLock();
}
void HOnlineMonClientMain::HandleControlbuttonClick(char *detectorname) {
    TGCheckButton *button = (TGCheckButton*) clientmainwin->listControlbuttons.FindObject(detectorname);
    Bool_t buttonOn = button->IsOn();
    
    if (buttonOn) {
	button->SetEnabled(kFALSE);
	HOnlineMonClientDet *det = (HOnlineMonClientDet*) listDetectors.FindObject(detectorname);
	CreateDetGui(det);
	button->SetEnabled(kTRUE);
    } else {
	button->SetEnabled(kFALSE);
	HOnlineMonClientDet *det = (HOnlineMonClientDet*) listDetectors.FindObject(detectorname);
	DestroyDetGui(det);
	button->SetEnabled(kTRUE);
    }
}
void HOnlineMonClientMain::SetUpdateInterval(Int_t msec) {
    UpdateInterval = msec;
}
void HOnlineMonClientMain::HandleSingleWindowClose(char *windowname, char* detectorname) {
    mainThread->Lock();
    HOnlineMonClientDet *det = (HOnlineMonClientDet*) listDetectors.FindObject(detectorname);
    if (det->listWindows.FindObject(windowname)->IsA() == HOnlineMonClientTabWin::Class()) {
        HOnlineMonClientTabWin *win = (HOnlineMonClientTabWin*) det->listWindows.FindObject(windowname);
        DestroySingleWindow(win);
    } else {
        HOnlineMonClientSimpleWin *win = (HOnlineMonClientSimpleWin*) det->listWindows.FindObject(windowname);
        DestroySingleWindow(win);
    }
    mainThread->UnLock();
}
Bool_t HOnlineMonClientMain::Connect(TString host, Int_t port) {
    socket = new TSocket(host, port);
    if (socket->IsValid()) {
        return kTRUE;
    }
    
    return kFALSE;
}
Bool_t HOnlineMonClientMain::ReConnect(TString host, Int_t port) {
    if (socket) {
	socket->Close();
	delete socket;
	socket = 0;
    }
    lastSumBytes = 0 ;
    socket = new TSocket(host, port);
    if (socket->IsValid()) {
        return kTRUE;
    }
    
    return kFALSE;
}
Bool_t HOnlineMonClientMain::UpdateHist(HOnlineMonClientHist *hist) { 
    
    
    HOnlineMonHistAddon* newhisto = GetHist(hist->GetRealName());
    if (newhisto == 0) { return kFALSE; }
    
    
    UInt_t year = 0;
    UInt_t month = 0;
    UInt_t day = 0;
    UInt_t hour = 0;
    UInt_t min = 0;
    UInt_t sec = 0;
    TString update_on;
    TTimeStamp* timestamp = new TTimeStamp();
    timestamp->GetDate(kFALSE, 0, &year, &month, &day);
    timestamp->GetTime(kFALSE, 0, &hour, &min, &sec);
    delete timestamp;
    timestamp = 0;
    
    update_on.Form(" %d.%d.%d %d:%d:%d", day, month, year, hour, min, sec);
     
    
    if (hist->histo->IsA() == HOnlineMonHist::Class()) {
        HOnlineMonHist* h = (HOnlineMonHist*) hist->histo;
        h->getP()->SetTitle(newhisto->getP()->GetTitle() + update_on);
	h->getP()->Reset();
        h->getP()->Add(newhisto->getP());
        delete (HOnlineMonHist*) newhisto;
	h->draw();
        return kTRUE;
    }
    
    if (hist->histo->IsA() == HOnlineMonStack::Class()) {
        HOnlineMonStack* h = (HOnlineMonStack*) hist->histo;
	h->reset(100,0);  
	h->add(newhisto);
	h->addTimeStamp(update_on);
	delete (HOnlineMonStack*) newhisto;
	h->draw();
        return kTRUE;
    }
    
    if (hist->histo->IsA() == HOnlineMonHist2::Class()) {
        HOnlineMonHist2* h = (HOnlineMonHist2*) hist->histo;
        h->getP()->SetTitle(newhisto->getP()->GetTitle() + update_on);
	h->getP()->Reset();
	h->getP()->Add(newhisto->getP());
	delete (HOnlineMonHist2*) newhisto;
	h->draw();
        return kTRUE;
    }
    
    if (hist->histo->IsA() == HOnlineTrendHist::Class()) {
        HOnlineTrendHist* h = (HOnlineTrendHist*) hist->histo;
        h->getP()->SetTitle(newhisto->getP()->GetTitle() + update_on);
	h->getP()->Reset();
	h->getP()->Add(newhisto->getP());
	delete (HOnlineTrendHist*) newhisto;
	h->draw();
        return kTRUE;
    }
    
    if (hist->histo->IsA() == HOnlineHistArray::Class()) {
        HOnlineHistArray* h = (HOnlineHistArray*) hist->histo;
	h->reset(0,0);
        h->add(newhisto);
	Int_t s = hist->GetArrayIndexS();
        Int_t m = hist->GetArrayIndexM();
        
        Int_t i;
        Int_t j;
        h->getDim(&i, &j);
        
        if ( (s != -1) || (m != -1) ) {
            
            
            
            
            if( (s < i) || (m < j) ) {
                h->getP(s,m)->SetTitle(newhisto->getP(s,m)->GetTitle() + update_on);
		h->getP(s,m)->Draw();  
	    } else {
                TThread::Printf("Histogram ERROR: histogram array HOnlineHistArray '%s', index s='%d' or m='%d' out of bound. Dimension of the array is ('%d','%d').", hist->GetName(), s, m, i, j);
                exit(1);
            }
        } else {
            
            
            h->getP(0,i*j)->SetTitle(newhisto->getP(0,i*j)->GetTitle() + update_on);
	    h->draw();
	}
	delete (HOnlineHistArray*) newhisto;
        return kTRUE;
    }
    if (hist->histo->IsA() == HOnlineHistArray2::Class()) {
        HOnlineHistArray2* h = (HOnlineHistArray2*) hist->histo;
	h->reset(0,0);
        h->add(newhisto);
	Int_t s = hist->GetArrayIndexS();
        Int_t m = hist->GetArrayIndexM();
        
        Int_t i;
        Int_t j;
        h->getDim(&i, &j);
        
        if ( (s != -1) || (m != -1) ) {
            
            
            
            
            if( (s < i) || (m < j) ) {
                h->getP(s,m)->SetTitle(newhisto->getP(s,m)->GetTitle() + update_on);
		h->getP(s,m)->Draw();  
	    } else {
                TThread::Printf("Histogram ERROR: histogram array HOnlineHistArray2 '%s', index s='%d' or m='%d' out of bound. Dimension of the array is ('%d','%d').", hist->GetName(), s, m, i, j);
                exit(1);
            }
        } else {
            
            
            h->getP(0,i*j)->SetTitle(newhisto->getP(0,i*j)->GetTitle() + update_on);
	    h->draw();
	}
	delete (HOnlineHistArray2*) newhisto;
        return kTRUE;
    }
    if (hist->histo->IsA() == HOnlineTrendArray::Class()) {
        HOnlineTrendArray* h = (HOnlineTrendArray*) hist->histo;
	h->reset(0,0);
        h->add(newhisto);
	Int_t s = hist->GetArrayIndexS();
        Int_t m = hist->GetArrayIndexM();
        
        Int_t i;
        Int_t j;
        h->getDim(&i, &j);
        
        if ( (s != -1) || (m != -1) ) { 
            
            
            
            
            if( (s < i) || (m < j) ) {
                h->getP(s,m)->SetTitle(newhisto->getP(s,m)->GetTitle() + update_on);
        	h->getP(s,m)->Draw();  
	    } else {
                TThread::Printf("Histogram ERROR: histogram array HOnlineTrendArray '%s', index s='%d' or m='%d' out of bound. Dimension of the array is ('%d','%d').", hist->GetName(), s, m, i, j);
                exit(1);
            }
        } else {
            
            
            h->getP(0,i*j)->SetTitle(newhisto->getP(0,i*j)->GetTitle() + update_on);
	    h->draw();
	}
	delete (HOnlineTrendArray*) newhisto;
        return kTRUE;
    }
    
    TThread::Printf("Histogram ERROR: histogram '%s' is of unknown type", hist->histo->GetName());
    return kFALSE;
}
TString HOnlineMonClientMain::SendCmdToServer(TString cmd) {
    if (!socket->IsValid()) {
        TString s;
	s.Form("ERROR: Socket invalid");
	HandleConnectionError();
        return s;
    }
    TMessage* recvmess = 0;
    TMessage sendmess(kMESS_STRING);
    sendmess.WriteTString(cmd);
    Int_t scode = socket->Send(sendmess); 
    if (scode <= 0) {
        TString s;
        s.Form("socket sent code %d for command '%s'.", scode, cmd.Data());
        return s;
    }
    
    Int_t rcode = socket->Recv(recvmess); 
    
    if (rcode <= 0) {
        TString s;
        s.Form("socket received code %d for command %s", rcode, cmd.Data());
        delete recvmess;
        return s;
    }
    if (recvmess->What() == kMESS_STRING) {
        TString str;
        recvmess->ReadTString(str);
        delete recvmess;
        return str;
    } else {
        TString s;
        s.Form("ERROR: type of message received from server for command '%s' is invalid.", cmd.Data());
        delete recvmess;
        return s;
    }
    delete recvmess;
    TString errormsg = "ERROR: message received from server is invalid";
    return errormsg;
}
TList* HOnlineMonClientMain::GetListOfHistograms() {
    if (!socket->IsValid()) {
        TThread::Printf("ERROR: Socket invalid");
        return 0;
    }
    
    TString cmd = "CMD histlist";
    TMessage* recvmess = 0;
    TList* hlist = new TList();
    
    TMessage sendmess(kMESS_STRING);
    sendmess.WriteTString(cmd);
    Int_t scode = socket->Send(sendmess); 
    if (scode <= 0) {
        TThread::Printf("socket sent code %d for command '%s'.", scode, cmd.Data());
        return 0;
    }
    
    Int_t rcode = socket->Recv(recvmess); 
    
    if (rcode <= 0) {
        TThread::Printf("socket received code %d for command %s", rcode, cmd.Data());
        delete recvmess;
        return 0;
    }
    if (recvmess->What() == kMESS_STRING) {
        TString str;
        recvmess->ReadTString(str);
        TThread::Printf("message received from server for command '%s': %s", cmd.Data(), str.Data());
        delete recvmess;
        return 0;
    } else {
        if (recvmess->What() == kMESS_OBJECT) {
            if ( (hlist = (TList*) recvmess->ReadObjectAny(TList::Class())) == 0) {
                TThread::Printf("ERROR: Received invalid data for command '%s' from server.", cmd.Data());       
                delete recvmess;
                return 0;
            }
        } else {
            TThread::Printf("ERROR: type of message received from server for command '%s' is invalid.", cmd.Data());
            delete recvmess;
            return 0;
        }
    }
    delete recvmess;
    return hlist;  
}
HOnlineMonHistAddon* HOnlineMonClientMain::GetHist(TString histoname) {
    if (!socket->IsValid()) {
        TThread::Printf("ERROR: Socket invalid");
        return 0;
    }
    
    
    
    TMessage* recvmess = 0;  
    HOnlineMonHistAddon* newhist = 0;
    
    
    
    
    TMessage sendmess(kMESS_STRING); 
    sendmess.WriteTString(histoname);
    
    Int_t scode = socket->Send(sendmess);  
    
    if (scode <= 0) {
        TThread::Printf("socket sent code %d histo %s", scode, histoname.Data());
        return 0;
    }
    
    Int_t rcode = socket->Recv(recvmess); 
    
    if (rcode <= 0) {
        TThread::Printf("socket received code %d histo %s", rcode, histoname.Data());
        delete recvmess;
        return 0;
    }
    
    if (recvmess->What() == kMESS_STRING) {
        TString str;
        recvmess->ReadTString(str);
        TThread::Printf("message received from server: %s", str.Data());
        delete recvmess;
        return 0;
    } else {
        if (recvmess->What() == kMESS_OBJECT) {
            if ( (newhist = (HOnlineMonHistAddon*) recvmess->ReadObjectAny(HOnlineMonHistAddon::Class())) == 0) {
                TThread::Printf("ERROR: Received invalid data for histogram '%s' from server.", histoname.Data());       
                delete recvmess;
                return 0;
            }
        } else {
            TThread::Printf("ERROR: type of message received from server is invalid.");
            delete recvmess;
            return 0;
        }
    }
    delete recvmess;
    return newhist;
}
void HOnlineMonClientMain::AddHist(HOnlineMonClientCanvas* canvas, HOnlineMonClientHist* hist) {
    
    
    
    
    listHists.Add(hist);
    
    HOnlineMonHistAddon* newhist = this->GetHist(hist->GetRealName());
    
    if (newhist == 0) {
        TThread::Printf("ERROR: Can't add histogram '%s' to the update-list. Received invalid initial histogram from server.", hist->GetName());
        return;
    }
    
    hist->SetHist(newhist);
    
    if (hist->GetSubpadnumber() == 0) {
    	
    	TCanvas* cnv = canvas->GetCanvas();
        cnv->SetGrid(hist->GetHist()->getGridX(), hist->GetHist()->getGridY());
        cnv->SetLogx(hist->GetHist()->getLogX());
        cnv->SetLogy(hist->GetHist()->getLogY());
        cnv->SetLogz(hist->GetHist()->getLogZ());
        listPads.Add(cnv);
        pad2hist[cnv->GetName()] = hist->GetName();
    } else {
    	
        TString padnr = "";
        padnr += hist->GetSubpadnumber();
        
        TString padname = canvas->GetName() + TString("_") + padnr;
        
        TPad* pad=(TPad*) canvas->GetCanvas()->GetPrimitive(padname.Data());
        pad->SetGrid(hist->GetHist()->getGridX(), hist->GetHist()->getGridY());
        pad->SetLogx(hist->GetHist()->getLogX());
        pad->SetLogy(hist->GetHist()->getLogY());
        pad->SetLogz(hist->GetHist()->getLogZ());
        
        listPads.Add(pad);
        pad2hist[padname] = hist->GetName();
    }
}
void HOnlineMonClientMain::RemoveHist(HOnlineMonClientCanvas* canvas, HOnlineMonClientHist* hist) {
    
    
    if (hist->GetSubpadnumber() == 0) {
    	
    	TCanvas* cnv = canvas->GetCanvas();
        listHists.Remove(hist);
        listPads.Remove(cnv);
        pad2hist.erase(cnv->GetName());
    } else {
        TString padnr = "";
        padnr += hist->GetSubpadnumber();
        
        TString padname = canvas->GetName() + TString("_") + padnr;
        
        TPad* pad=(TPad*) canvas->GetCanvas()->GetPrimitive(padname.Data());
        listHists.Remove(hist);
        listPads.Remove(pad);
        pad2hist.erase(pad->GetName());
    }
}
void HOnlineMonClientMain::SetServerhost(TString host) {
    serverhost = host;
}
TString HOnlineMonClientMain::GetServerhost() {
    return serverhost;
}
void HOnlineMonClientMain::SetServerport(Int_t port) {
    serverport = port;
}
Int_t HOnlineMonClientMain::GetServerport() {
    return serverport;
}
 honlinemonclientmain.cc:1  honlinemonclientmain.cc:2  honlinemonclientmain.cc:3  honlinemonclientmain.cc:4  honlinemonclientmain.cc:5  honlinemonclientmain.cc:6  honlinemonclientmain.cc:7  honlinemonclientmain.cc:8  honlinemonclientmain.cc:9  honlinemonclientmain.cc:10  honlinemonclientmain.cc:11  honlinemonclientmain.cc:12  honlinemonclientmain.cc:13  honlinemonclientmain.cc:14  honlinemonclientmain.cc:15  honlinemonclientmain.cc:16  honlinemonclientmain.cc:17  honlinemonclientmain.cc:18  honlinemonclientmain.cc:19  honlinemonclientmain.cc:20  honlinemonclientmain.cc:21  honlinemonclientmain.cc:22  honlinemonclientmain.cc:23  honlinemonclientmain.cc:24  honlinemonclientmain.cc:25  honlinemonclientmain.cc:26  honlinemonclientmain.cc:27  honlinemonclientmain.cc:28  honlinemonclientmain.cc:29  honlinemonclientmain.cc:30  honlinemonclientmain.cc:31  honlinemonclientmain.cc:32  honlinemonclientmain.cc:33  honlinemonclientmain.cc:34  honlinemonclientmain.cc:35  honlinemonclientmain.cc:36  honlinemonclientmain.cc:37  honlinemonclientmain.cc:38  honlinemonclientmain.cc:39  honlinemonclientmain.cc:40  honlinemonclientmain.cc:41  honlinemonclientmain.cc:42  honlinemonclientmain.cc:43  honlinemonclientmain.cc:44  honlinemonclientmain.cc:45  honlinemonclientmain.cc:46  honlinemonclientmain.cc:47  honlinemonclientmain.cc:48  honlinemonclientmain.cc:49  honlinemonclientmain.cc:50  honlinemonclientmain.cc:51  honlinemonclientmain.cc:52  honlinemonclientmain.cc:53  honlinemonclientmain.cc:54  honlinemonclientmain.cc:55  honlinemonclientmain.cc:56  honlinemonclientmain.cc:57  honlinemonclientmain.cc:58  honlinemonclientmain.cc:59  honlinemonclientmain.cc:60  honlinemonclientmain.cc:61  honlinemonclientmain.cc:62  honlinemonclientmain.cc:63  honlinemonclientmain.cc:64  honlinemonclientmain.cc:65  honlinemonclientmain.cc:66  honlinemonclientmain.cc:67  honlinemonclientmain.cc:68  honlinemonclientmain.cc:69  honlinemonclientmain.cc:70  honlinemonclientmain.cc:71  honlinemonclientmain.cc:72  honlinemonclientmain.cc:73  honlinemonclientmain.cc:74  honlinemonclientmain.cc:75  honlinemonclientmain.cc:76  honlinemonclientmain.cc:77  honlinemonclientmain.cc:78  honlinemonclientmain.cc:79  honlinemonclientmain.cc:80  honlinemonclientmain.cc:81  honlinemonclientmain.cc:82  honlinemonclientmain.cc:83  honlinemonclientmain.cc:84  honlinemonclientmain.cc:85  honlinemonclientmain.cc:86  honlinemonclientmain.cc:87  honlinemonclientmain.cc:88  honlinemonclientmain.cc:89  honlinemonclientmain.cc:90  honlinemonclientmain.cc:91  honlinemonclientmain.cc:92  honlinemonclientmain.cc:93  honlinemonclientmain.cc:94  honlinemonclientmain.cc:95  honlinemonclientmain.cc:96  honlinemonclientmain.cc:97  honlinemonclientmain.cc:98  honlinemonclientmain.cc:99  honlinemonclientmain.cc:100  honlinemonclientmain.cc:101  honlinemonclientmain.cc:102  honlinemonclientmain.cc:103  honlinemonclientmain.cc:104  honlinemonclientmain.cc:105  honlinemonclientmain.cc:106  honlinemonclientmain.cc:107  honlinemonclientmain.cc:108  honlinemonclientmain.cc:109  honlinemonclientmain.cc:110  honlinemonclientmain.cc:111  honlinemonclientmain.cc:112  honlinemonclientmain.cc:113  honlinemonclientmain.cc:114  honlinemonclientmain.cc:115  honlinemonclientmain.cc:116  honlinemonclientmain.cc:117  honlinemonclientmain.cc:118  honlinemonclientmain.cc:119  honlinemonclientmain.cc:120  honlinemonclientmain.cc:121  honlinemonclientmain.cc:122  honlinemonclientmain.cc:123  honlinemonclientmain.cc:124  honlinemonclientmain.cc:125  honlinemonclientmain.cc:126  honlinemonclientmain.cc:127  honlinemonclientmain.cc:128  honlinemonclientmain.cc:129  honlinemonclientmain.cc:130  honlinemonclientmain.cc:131  honlinemonclientmain.cc:132  honlinemonclientmain.cc:133  honlinemonclientmain.cc:134  honlinemonclientmain.cc:135  honlinemonclientmain.cc:136  honlinemonclientmain.cc:137  honlinemonclientmain.cc:138  honlinemonclientmain.cc:139  honlinemonclientmain.cc:140  honlinemonclientmain.cc:141  honlinemonclientmain.cc:142  honlinemonclientmain.cc:143  honlinemonclientmain.cc:144  honlinemonclientmain.cc:145  honlinemonclientmain.cc:146  honlinemonclientmain.cc:147  honlinemonclientmain.cc:148  honlinemonclientmain.cc:149  honlinemonclientmain.cc:150  honlinemonclientmain.cc:151  honlinemonclientmain.cc:152  honlinemonclientmain.cc:153  honlinemonclientmain.cc:154  honlinemonclientmain.cc:155  honlinemonclientmain.cc:156  honlinemonclientmain.cc:157  honlinemonclientmain.cc:158  honlinemonclientmain.cc:159  honlinemonclientmain.cc:160  honlinemonclientmain.cc:161  honlinemonclientmain.cc:162  honlinemonclientmain.cc:163  honlinemonclientmain.cc:164  honlinemonclientmain.cc:165  honlinemonclientmain.cc:166  honlinemonclientmain.cc:167  honlinemonclientmain.cc:168  honlinemonclientmain.cc:169  honlinemonclientmain.cc:170  honlinemonclientmain.cc:171  honlinemonclientmain.cc:172  honlinemonclientmain.cc:173  honlinemonclientmain.cc:174  honlinemonclientmain.cc:175  honlinemonclientmain.cc:176  honlinemonclientmain.cc:177  honlinemonclientmain.cc:178  honlinemonclientmain.cc:179  honlinemonclientmain.cc:180  honlinemonclientmain.cc:181  honlinemonclientmain.cc:182  honlinemonclientmain.cc:183  honlinemonclientmain.cc:184  honlinemonclientmain.cc:185  honlinemonclientmain.cc:186  honlinemonclientmain.cc:187  honlinemonclientmain.cc:188  honlinemonclientmain.cc:189  honlinemonclientmain.cc:190  honlinemonclientmain.cc:191  honlinemonclientmain.cc:192  honlinemonclientmain.cc:193  honlinemonclientmain.cc:194  honlinemonclientmain.cc:195  honlinemonclientmain.cc:196  honlinemonclientmain.cc:197  honlinemonclientmain.cc:198  honlinemonclientmain.cc:199  honlinemonclientmain.cc:200  honlinemonclientmain.cc:201  honlinemonclientmain.cc:202  honlinemonclientmain.cc:203  honlinemonclientmain.cc:204  honlinemonclientmain.cc:205  honlinemonclientmain.cc:206  honlinemonclientmain.cc:207  honlinemonclientmain.cc:208  honlinemonclientmain.cc:209  honlinemonclientmain.cc:210  honlinemonclientmain.cc:211  honlinemonclientmain.cc:212  honlinemonclientmain.cc:213  honlinemonclientmain.cc:214  honlinemonclientmain.cc:215  honlinemonclientmain.cc:216  honlinemonclientmain.cc:217  honlinemonclientmain.cc:218  honlinemonclientmain.cc:219  honlinemonclientmain.cc:220  honlinemonclientmain.cc:221  honlinemonclientmain.cc:222  honlinemonclientmain.cc:223  honlinemonclientmain.cc:224  honlinemonclientmain.cc:225  honlinemonclientmain.cc:226  honlinemonclientmain.cc:227  honlinemonclientmain.cc:228  honlinemonclientmain.cc:229  honlinemonclientmain.cc:230  honlinemonclientmain.cc:231  honlinemonclientmain.cc:232  honlinemonclientmain.cc:233  honlinemonclientmain.cc:234  honlinemonclientmain.cc:235  honlinemonclientmain.cc:236  honlinemonclientmain.cc:237  honlinemonclientmain.cc:238  honlinemonclientmain.cc:239  honlinemonclientmain.cc:240  honlinemonclientmain.cc:241  honlinemonclientmain.cc:242  honlinemonclientmain.cc:243  honlinemonclientmain.cc:244  honlinemonclientmain.cc:245  honlinemonclientmain.cc:246  honlinemonclientmain.cc:247  honlinemonclientmain.cc:248  honlinemonclientmain.cc:249  honlinemonclientmain.cc:250  honlinemonclientmain.cc:251  honlinemonclientmain.cc:252  honlinemonclientmain.cc:253  honlinemonclientmain.cc:254  honlinemonclientmain.cc:255  honlinemonclientmain.cc:256  honlinemonclientmain.cc:257  honlinemonclientmain.cc:258  honlinemonclientmain.cc:259  honlinemonclientmain.cc:260  honlinemonclientmain.cc:261  honlinemonclientmain.cc:262  honlinemonclientmain.cc:263  honlinemonclientmain.cc:264  honlinemonclientmain.cc:265  honlinemonclientmain.cc:266  honlinemonclientmain.cc:267  honlinemonclientmain.cc:268  honlinemonclientmain.cc:269  honlinemonclientmain.cc:270  honlinemonclientmain.cc:271  honlinemonclientmain.cc:272  honlinemonclientmain.cc:273  honlinemonclientmain.cc:274  honlinemonclientmain.cc:275  honlinemonclientmain.cc:276  honlinemonclientmain.cc:277  honlinemonclientmain.cc:278  honlinemonclientmain.cc:279  honlinemonclientmain.cc:280  honlinemonclientmain.cc:281  honlinemonclientmain.cc:282  honlinemonclientmain.cc:283  honlinemonclientmain.cc:284  honlinemonclientmain.cc:285  honlinemonclientmain.cc:286  honlinemonclientmain.cc:287  honlinemonclientmain.cc:288  honlinemonclientmain.cc:289  honlinemonclientmain.cc:290  honlinemonclientmain.cc:291  honlinemonclientmain.cc:292  honlinemonclientmain.cc:293  honlinemonclientmain.cc:294  honlinemonclientmain.cc:295  honlinemonclientmain.cc:296  honlinemonclientmain.cc:297  honlinemonclientmain.cc:298  honlinemonclientmain.cc:299  honlinemonclientmain.cc:300  honlinemonclientmain.cc:301  honlinemonclientmain.cc:302  honlinemonclientmain.cc:303  honlinemonclientmain.cc:304  honlinemonclientmain.cc:305  honlinemonclientmain.cc:306  honlinemonclientmain.cc:307  honlinemonclientmain.cc:308  honlinemonclientmain.cc:309  honlinemonclientmain.cc:310  honlinemonclientmain.cc:311  honlinemonclientmain.cc:312  honlinemonclientmain.cc:313  honlinemonclientmain.cc:314  honlinemonclientmain.cc:315  honlinemonclientmain.cc:316  honlinemonclientmain.cc:317  honlinemonclientmain.cc:318  honlinemonclientmain.cc:319  honlinemonclientmain.cc:320  honlinemonclientmain.cc:321  honlinemonclientmain.cc:322  honlinemonclientmain.cc:323  honlinemonclientmain.cc:324  honlinemonclientmain.cc:325  honlinemonclientmain.cc:326  honlinemonclientmain.cc:327  honlinemonclientmain.cc:328  honlinemonclientmain.cc:329  honlinemonclientmain.cc:330  honlinemonclientmain.cc:331  honlinemonclientmain.cc:332  honlinemonclientmain.cc:333  honlinemonclientmain.cc:334  honlinemonclientmain.cc:335  honlinemonclientmain.cc:336  honlinemonclientmain.cc:337  honlinemonclientmain.cc:338  honlinemonclientmain.cc:339  honlinemonclientmain.cc:340  honlinemonclientmain.cc:341  honlinemonclientmain.cc:342  honlinemonclientmain.cc:343  honlinemonclientmain.cc:344  honlinemonclientmain.cc:345  honlinemonclientmain.cc:346  honlinemonclientmain.cc:347  honlinemonclientmain.cc:348  honlinemonclientmain.cc:349  honlinemonclientmain.cc:350  honlinemonclientmain.cc:351  honlinemonclientmain.cc:352  honlinemonclientmain.cc:353  honlinemonclientmain.cc:354  honlinemonclientmain.cc:355  honlinemonclientmain.cc:356  honlinemonclientmain.cc:357  honlinemonclientmain.cc:358  honlinemonclientmain.cc:359  honlinemonclientmain.cc:360  honlinemonclientmain.cc:361  honlinemonclientmain.cc:362  honlinemonclientmain.cc:363  honlinemonclientmain.cc:364  honlinemonclientmain.cc:365  honlinemonclientmain.cc:366  honlinemonclientmain.cc:367  honlinemonclientmain.cc:368  honlinemonclientmain.cc:369  honlinemonclientmain.cc:370  honlinemonclientmain.cc:371  honlinemonclientmain.cc:372  honlinemonclientmain.cc:373  honlinemonclientmain.cc:374  honlinemonclientmain.cc:375  honlinemonclientmain.cc:376  honlinemonclientmain.cc:377  honlinemonclientmain.cc:378  honlinemonclientmain.cc:379  honlinemonclientmain.cc:380  honlinemonclientmain.cc:381  honlinemonclientmain.cc:382  honlinemonclientmain.cc:383  honlinemonclientmain.cc:384  honlinemonclientmain.cc:385  honlinemonclientmain.cc:386  honlinemonclientmain.cc:387  honlinemonclientmain.cc:388  honlinemonclientmain.cc:389  honlinemonclientmain.cc:390  honlinemonclientmain.cc:391  honlinemonclientmain.cc:392  honlinemonclientmain.cc:393  honlinemonclientmain.cc:394  honlinemonclientmain.cc:395  honlinemonclientmain.cc:396  honlinemonclientmain.cc:397  honlinemonclientmain.cc:398  honlinemonclientmain.cc:399  honlinemonclientmain.cc:400  honlinemonclientmain.cc:401  honlinemonclientmain.cc:402  honlinemonclientmain.cc:403  honlinemonclientmain.cc:404  honlinemonclientmain.cc:405  honlinemonclientmain.cc:406  honlinemonclientmain.cc:407  honlinemonclientmain.cc:408  honlinemonclientmain.cc:409  honlinemonclientmain.cc:410  honlinemonclientmain.cc:411  honlinemonclientmain.cc:412  honlinemonclientmain.cc:413  honlinemonclientmain.cc:414  honlinemonclientmain.cc:415  honlinemonclientmain.cc:416  honlinemonclientmain.cc:417  honlinemonclientmain.cc:418  honlinemonclientmain.cc:419  honlinemonclientmain.cc:420  honlinemonclientmain.cc:421  honlinemonclientmain.cc:422  honlinemonclientmain.cc:423  honlinemonclientmain.cc:424  honlinemonclientmain.cc:425  honlinemonclientmain.cc:426  honlinemonclientmain.cc:427  honlinemonclientmain.cc:428  honlinemonclientmain.cc:429  honlinemonclientmain.cc:430  honlinemonclientmain.cc:431  honlinemonclientmain.cc:432  honlinemonclientmain.cc:433  honlinemonclientmain.cc:434  honlinemonclientmain.cc:435  honlinemonclientmain.cc:436  honlinemonclientmain.cc:437  honlinemonclientmain.cc:438  honlinemonclientmain.cc:439  honlinemonclientmain.cc:440  honlinemonclientmain.cc:441  honlinemonclientmain.cc:442  honlinemonclientmain.cc:443  honlinemonclientmain.cc:444  honlinemonclientmain.cc:445  honlinemonclientmain.cc:446  honlinemonclientmain.cc:447  honlinemonclientmain.cc:448  honlinemonclientmain.cc:449  honlinemonclientmain.cc:450  honlinemonclientmain.cc:451  honlinemonclientmain.cc:452  honlinemonclientmain.cc:453  honlinemonclientmain.cc:454  honlinemonclientmain.cc:455  honlinemonclientmain.cc:456  honlinemonclientmain.cc:457  honlinemonclientmain.cc:458  honlinemonclientmain.cc:459  honlinemonclientmain.cc:460  honlinemonclientmain.cc:461  honlinemonclientmain.cc:462  honlinemonclientmain.cc:463  honlinemonclientmain.cc:464  honlinemonclientmain.cc:465  honlinemonclientmain.cc:466  honlinemonclientmain.cc:467  honlinemonclientmain.cc:468  honlinemonclientmain.cc:469  honlinemonclientmain.cc:470  honlinemonclientmain.cc:471  honlinemonclientmain.cc:472  honlinemonclientmain.cc:473  honlinemonclientmain.cc:474  honlinemonclientmain.cc:475  honlinemonclientmain.cc:476  honlinemonclientmain.cc:477  honlinemonclientmain.cc:478  honlinemonclientmain.cc:479  honlinemonclientmain.cc:480  honlinemonclientmain.cc:481  honlinemonclientmain.cc:482  honlinemonclientmain.cc:483  honlinemonclientmain.cc:484  honlinemonclientmain.cc:485  honlinemonclientmain.cc:486  honlinemonclientmain.cc:487  honlinemonclientmain.cc:488  honlinemonclientmain.cc:489  honlinemonclientmain.cc:490  honlinemonclientmain.cc:491  honlinemonclientmain.cc:492  honlinemonclientmain.cc:493  honlinemonclientmain.cc:494  honlinemonclientmain.cc:495  honlinemonclientmain.cc:496  honlinemonclientmain.cc:497  honlinemonclientmain.cc:498  honlinemonclientmain.cc:499  honlinemonclientmain.cc:500  honlinemonclientmain.cc:501  honlinemonclientmain.cc:502  honlinemonclientmain.cc:503  honlinemonclientmain.cc:504  honlinemonclientmain.cc:505  honlinemonclientmain.cc:506  honlinemonclientmain.cc:507  honlinemonclientmain.cc:508  honlinemonclientmain.cc:509  honlinemonclientmain.cc:510  honlinemonclientmain.cc:511  honlinemonclientmain.cc:512  honlinemonclientmain.cc:513  honlinemonclientmain.cc:514  honlinemonclientmain.cc:515  honlinemonclientmain.cc:516  honlinemonclientmain.cc:517  honlinemonclientmain.cc:518  honlinemonclientmain.cc:519  honlinemonclientmain.cc:520  honlinemonclientmain.cc:521  honlinemonclientmain.cc:522  honlinemonclientmain.cc:523  honlinemonclientmain.cc:524  honlinemonclientmain.cc:525  honlinemonclientmain.cc:526  honlinemonclientmain.cc:527  honlinemonclientmain.cc:528  honlinemonclientmain.cc:529  honlinemonclientmain.cc:530  honlinemonclientmain.cc:531  honlinemonclientmain.cc:532  honlinemonclientmain.cc:533  honlinemonclientmain.cc:534  honlinemonclientmain.cc:535  honlinemonclientmain.cc:536  honlinemonclientmain.cc:537  honlinemonclientmain.cc:538  honlinemonclientmain.cc:539  honlinemonclientmain.cc:540  honlinemonclientmain.cc:541  honlinemonclientmain.cc:542  honlinemonclientmain.cc:543  honlinemonclientmain.cc:544  honlinemonclientmain.cc:545  honlinemonclientmain.cc:546  honlinemonclientmain.cc:547  honlinemonclientmain.cc:548  honlinemonclientmain.cc:549  honlinemonclientmain.cc:550  honlinemonclientmain.cc:551  honlinemonclientmain.cc:552  honlinemonclientmain.cc:553  honlinemonclientmain.cc:554  honlinemonclientmain.cc:555  honlinemonclientmain.cc:556  honlinemonclientmain.cc:557  honlinemonclientmain.cc:558  honlinemonclientmain.cc:559  honlinemonclientmain.cc:560  honlinemonclientmain.cc:561  honlinemonclientmain.cc:562  honlinemonclientmain.cc:563  honlinemonclientmain.cc:564  honlinemonclientmain.cc:565  honlinemonclientmain.cc:566  honlinemonclientmain.cc:567  honlinemonclientmain.cc:568  honlinemonclientmain.cc:569  honlinemonclientmain.cc:570  honlinemonclientmain.cc:571  honlinemonclientmain.cc:572  honlinemonclientmain.cc:573  honlinemonclientmain.cc:574  honlinemonclientmain.cc:575  honlinemonclientmain.cc:576  honlinemonclientmain.cc:577  honlinemonclientmain.cc:578  honlinemonclientmain.cc:579  honlinemonclientmain.cc:580  honlinemonclientmain.cc:581  honlinemonclientmain.cc:582  honlinemonclientmain.cc:583  honlinemonclientmain.cc:584  honlinemonclientmain.cc:585  honlinemonclientmain.cc:586  honlinemonclientmain.cc:587  honlinemonclientmain.cc:588  honlinemonclientmain.cc:589  honlinemonclientmain.cc:590  honlinemonclientmain.cc:591  honlinemonclientmain.cc:592  honlinemonclientmain.cc:593  honlinemonclientmain.cc:594  honlinemonclientmain.cc:595  honlinemonclientmain.cc:596  honlinemonclientmain.cc:597  honlinemonclientmain.cc:598  honlinemonclientmain.cc:599  honlinemonclientmain.cc:600  honlinemonclientmain.cc:601  honlinemonclientmain.cc:602  honlinemonclientmain.cc:603  honlinemonclientmain.cc:604  honlinemonclientmain.cc:605  honlinemonclientmain.cc:606  honlinemonclientmain.cc:607  honlinemonclientmain.cc:608  honlinemonclientmain.cc:609  honlinemonclientmain.cc:610  honlinemonclientmain.cc:611  honlinemonclientmain.cc:612  honlinemonclientmain.cc:613  honlinemonclientmain.cc:614  honlinemonclientmain.cc:615  honlinemonclientmain.cc:616  honlinemonclientmain.cc:617  honlinemonclientmain.cc:618  honlinemonclientmain.cc:619  honlinemonclientmain.cc:620  honlinemonclientmain.cc:621  honlinemonclientmain.cc:622  honlinemonclientmain.cc:623  honlinemonclientmain.cc:624  honlinemonclientmain.cc:625  honlinemonclientmain.cc:626  honlinemonclientmain.cc:627  honlinemonclientmain.cc:628  honlinemonclientmain.cc:629  honlinemonclientmain.cc:630  honlinemonclientmain.cc:631  honlinemonclientmain.cc:632  honlinemonclientmain.cc:633  honlinemonclientmain.cc:634  honlinemonclientmain.cc:635  honlinemonclientmain.cc:636  honlinemonclientmain.cc:637  honlinemonclientmain.cc:638  honlinemonclientmain.cc:639  honlinemonclientmain.cc:640  honlinemonclientmain.cc:641  honlinemonclientmain.cc:642  honlinemonclientmain.cc:643  honlinemonclientmain.cc:644  honlinemonclientmain.cc:645  honlinemonclientmain.cc:646  honlinemonclientmain.cc:647  honlinemonclientmain.cc:648  honlinemonclientmain.cc:649  honlinemonclientmain.cc:650  honlinemonclientmain.cc:651  honlinemonclientmain.cc:652  honlinemonclientmain.cc:653  honlinemonclientmain.cc:654  honlinemonclientmain.cc:655  honlinemonclientmain.cc:656  honlinemonclientmain.cc:657  honlinemonclientmain.cc:658  honlinemonclientmain.cc:659  honlinemonclientmain.cc:660  honlinemonclientmain.cc:661  honlinemonclientmain.cc:662  honlinemonclientmain.cc:663  honlinemonclientmain.cc:664  honlinemonclientmain.cc:665  honlinemonclientmain.cc:666  honlinemonclientmain.cc:667  honlinemonclientmain.cc:668  honlinemonclientmain.cc:669  honlinemonclientmain.cc:670  honlinemonclientmain.cc:671  honlinemonclientmain.cc:672  honlinemonclientmain.cc:673  honlinemonclientmain.cc:674  honlinemonclientmain.cc:675  honlinemonclientmain.cc:676  honlinemonclientmain.cc:677  honlinemonclientmain.cc:678  honlinemonclientmain.cc:679  honlinemonclientmain.cc:680  honlinemonclientmain.cc:681  honlinemonclientmain.cc:682  honlinemonclientmain.cc:683  honlinemonclientmain.cc:684  honlinemonclientmain.cc:685  honlinemonclientmain.cc:686  honlinemonclientmain.cc:687  honlinemonclientmain.cc:688  honlinemonclientmain.cc:689  honlinemonclientmain.cc:690  honlinemonclientmain.cc:691  honlinemonclientmain.cc:692  honlinemonclientmain.cc:693  honlinemonclientmain.cc:694  honlinemonclientmain.cc:695  honlinemonclientmain.cc:696  honlinemonclientmain.cc:697  honlinemonclientmain.cc:698  honlinemonclientmain.cc:699  honlinemonclientmain.cc:700  honlinemonclientmain.cc:701  honlinemonclientmain.cc:702  honlinemonclientmain.cc:703  honlinemonclientmain.cc:704  honlinemonclientmain.cc:705  honlinemonclientmain.cc:706  honlinemonclientmain.cc:707  honlinemonclientmain.cc:708  honlinemonclientmain.cc:709  honlinemonclientmain.cc:710  honlinemonclientmain.cc:711  honlinemonclientmain.cc:712  honlinemonclientmain.cc:713  honlinemonclientmain.cc:714  honlinemonclientmain.cc:715  honlinemonclientmain.cc:716  honlinemonclientmain.cc:717  honlinemonclientmain.cc:718  honlinemonclientmain.cc:719  honlinemonclientmain.cc:720  honlinemonclientmain.cc:721  honlinemonclientmain.cc:722  honlinemonclientmain.cc:723  honlinemonclientmain.cc:724  honlinemonclientmain.cc:725  honlinemonclientmain.cc:726  honlinemonclientmain.cc:727  honlinemonclientmain.cc:728  honlinemonclientmain.cc:729  honlinemonclientmain.cc:730  honlinemonclientmain.cc:731  honlinemonclientmain.cc:732  honlinemonclientmain.cc:733  honlinemonclientmain.cc:734  honlinemonclientmain.cc:735  honlinemonclientmain.cc:736  honlinemonclientmain.cc:737  honlinemonclientmain.cc:738  honlinemonclientmain.cc:739  honlinemonclientmain.cc:740  honlinemonclientmain.cc:741  honlinemonclientmain.cc:742  honlinemonclientmain.cc:743  honlinemonclientmain.cc:744  honlinemonclientmain.cc:745  honlinemonclientmain.cc:746  honlinemonclientmain.cc:747  honlinemonclientmain.cc:748  honlinemonclientmain.cc:749  honlinemonclientmain.cc:750  honlinemonclientmain.cc:751  honlinemonclientmain.cc:752  honlinemonclientmain.cc:753  honlinemonclientmain.cc:754  honlinemonclientmain.cc:755  honlinemonclientmain.cc:756  honlinemonclientmain.cc:757  honlinemonclientmain.cc:758  honlinemonclientmain.cc:759  honlinemonclientmain.cc:760  honlinemonclientmain.cc:761  honlinemonclientmain.cc:762  honlinemonclientmain.cc:763  honlinemonclientmain.cc:764  honlinemonclientmain.cc:765  honlinemonclientmain.cc:766  honlinemonclientmain.cc:767  honlinemonclientmain.cc:768  honlinemonclientmain.cc:769  honlinemonclientmain.cc:770  honlinemonclientmain.cc:771  honlinemonclientmain.cc:772  honlinemonclientmain.cc:773  honlinemonclientmain.cc:774  honlinemonclientmain.cc:775  honlinemonclientmain.cc:776  honlinemonclientmain.cc:777  honlinemonclientmain.cc:778  honlinemonclientmain.cc:779  honlinemonclientmain.cc:780  honlinemonclientmain.cc:781  honlinemonclientmain.cc:782  honlinemonclientmain.cc:783  honlinemonclientmain.cc:784  honlinemonclientmain.cc:785  honlinemonclientmain.cc:786  honlinemonclientmain.cc:787  honlinemonclientmain.cc:788  honlinemonclientmain.cc:789  honlinemonclientmain.cc:790  honlinemonclientmain.cc:791  honlinemonclientmain.cc:792  honlinemonclientmain.cc:793  honlinemonclientmain.cc:794  honlinemonclientmain.cc:795  honlinemonclientmain.cc:796  honlinemonclientmain.cc:797  honlinemonclientmain.cc:798  honlinemonclientmain.cc:799  honlinemonclientmain.cc:800  honlinemonclientmain.cc:801  honlinemonclientmain.cc:802  honlinemonclientmain.cc:803  honlinemonclientmain.cc:804  honlinemonclientmain.cc:805  honlinemonclientmain.cc:806  honlinemonclientmain.cc:807  honlinemonclientmain.cc:808  honlinemonclientmain.cc:809  honlinemonclientmain.cc:810  honlinemonclientmain.cc:811  honlinemonclientmain.cc:812  honlinemonclientmain.cc:813  honlinemonclientmain.cc:814  honlinemonclientmain.cc:815  honlinemonclientmain.cc:816  honlinemonclientmain.cc:817  honlinemonclientmain.cc:818  honlinemonclientmain.cc:819  honlinemonclientmain.cc:820  honlinemonclientmain.cc:821  honlinemonclientmain.cc:822  honlinemonclientmain.cc:823  honlinemonclientmain.cc:824  honlinemonclientmain.cc:825  honlinemonclientmain.cc:826  honlinemonclientmain.cc:827  honlinemonclientmain.cc:828  honlinemonclientmain.cc:829  honlinemonclientmain.cc:830  honlinemonclientmain.cc:831  honlinemonclientmain.cc:832  honlinemonclientmain.cc:833  honlinemonclientmain.cc:834  honlinemonclientmain.cc:835  honlinemonclientmain.cc:836  honlinemonclientmain.cc:837  honlinemonclientmain.cc:838  honlinemonclientmain.cc:839  honlinemonclientmain.cc:840  honlinemonclientmain.cc:841  honlinemonclientmain.cc:842  honlinemonclientmain.cc:843  honlinemonclientmain.cc:844  honlinemonclientmain.cc:845  honlinemonclientmain.cc:846  honlinemonclientmain.cc:847  honlinemonclientmain.cc:848  honlinemonclientmain.cc:849  honlinemonclientmain.cc:850  honlinemonclientmain.cc:851  honlinemonclientmain.cc:852  honlinemonclientmain.cc:853  honlinemonclientmain.cc:854  honlinemonclientmain.cc:855  honlinemonclientmain.cc:856  honlinemonclientmain.cc:857  honlinemonclientmain.cc:858  honlinemonclientmain.cc:859  honlinemonclientmain.cc:860  honlinemonclientmain.cc:861  honlinemonclientmain.cc:862  honlinemonclientmain.cc:863  honlinemonclientmain.cc:864  honlinemonclientmain.cc:865  honlinemonclientmain.cc:866  honlinemonclientmain.cc:867  honlinemonclientmain.cc:868  honlinemonclientmain.cc:869  honlinemonclientmain.cc:870  honlinemonclientmain.cc:871  honlinemonclientmain.cc:872  honlinemonclientmain.cc:873  honlinemonclientmain.cc:874  honlinemonclientmain.cc:875  honlinemonclientmain.cc:876  honlinemonclientmain.cc:877  honlinemonclientmain.cc:878  honlinemonclientmain.cc:879  honlinemonclientmain.cc:880  honlinemonclientmain.cc:881  honlinemonclientmain.cc:882  honlinemonclientmain.cc:883  honlinemonclientmain.cc:884  honlinemonclientmain.cc:885  honlinemonclientmain.cc:886  honlinemonclientmain.cc:887  honlinemonclientmain.cc:888  honlinemonclientmain.cc:889  honlinemonclientmain.cc:890  honlinemonclientmain.cc:891  honlinemonclientmain.cc:892  honlinemonclientmain.cc:893  honlinemonclientmain.cc:894  honlinemonclientmain.cc:895  honlinemonclientmain.cc:896  honlinemonclientmain.cc:897  honlinemonclientmain.cc:898  honlinemonclientmain.cc:899  honlinemonclientmain.cc:900  honlinemonclientmain.cc:901  honlinemonclientmain.cc:902  honlinemonclientmain.cc:903  honlinemonclientmain.cc:904  honlinemonclientmain.cc:905  honlinemonclientmain.cc:906  honlinemonclientmain.cc:907  honlinemonclientmain.cc:908  honlinemonclientmain.cc:909  honlinemonclientmain.cc:910  honlinemonclientmain.cc:911  honlinemonclientmain.cc:912  honlinemonclientmain.cc:913  honlinemonclientmain.cc:914  honlinemonclientmain.cc:915  honlinemonclientmain.cc:916  honlinemonclientmain.cc:917  honlinemonclientmain.cc:918  honlinemonclientmain.cc:919  honlinemonclientmain.cc:920  honlinemonclientmain.cc:921  honlinemonclientmain.cc:922  honlinemonclientmain.cc:923  honlinemonclientmain.cc:924  honlinemonclientmain.cc:925  honlinemonclientmain.cc:926  honlinemonclientmain.cc:927  honlinemonclientmain.cc:928  honlinemonclientmain.cc:929  honlinemonclientmain.cc:930  honlinemonclientmain.cc:931  honlinemonclientmain.cc:932  honlinemonclientmain.cc:933  honlinemonclientmain.cc:934  honlinemonclientmain.cc:935  honlinemonclientmain.cc:936  honlinemonclientmain.cc:937  honlinemonclientmain.cc:938  honlinemonclientmain.cc:939  honlinemonclientmain.cc:940  honlinemonclientmain.cc:941  honlinemonclientmain.cc:942  honlinemonclientmain.cc:943  honlinemonclientmain.cc:944  honlinemonclientmain.cc:945  honlinemonclientmain.cc:946  honlinemonclientmain.cc:947  honlinemonclientmain.cc:948  honlinemonclientmain.cc:949  honlinemonclientmain.cc:950  honlinemonclientmain.cc:951  honlinemonclientmain.cc:952  honlinemonclientmain.cc:953  honlinemonclientmain.cc:954  honlinemonclientmain.cc:955  honlinemonclientmain.cc:956  honlinemonclientmain.cc:957  honlinemonclientmain.cc:958  honlinemonclientmain.cc:959  honlinemonclientmain.cc:960  honlinemonclientmain.cc:961  honlinemonclientmain.cc:962  honlinemonclientmain.cc:963  honlinemonclientmain.cc:964  honlinemonclientmain.cc:965  honlinemonclientmain.cc:966  honlinemonclientmain.cc:967  honlinemonclientmain.cc:968  honlinemonclientmain.cc:969  honlinemonclientmain.cc:970  honlinemonclientmain.cc:971  honlinemonclientmain.cc:972  honlinemonclientmain.cc:973  honlinemonclientmain.cc:974  honlinemonclientmain.cc:975  honlinemonclientmain.cc:976  honlinemonclientmain.cc:977  honlinemonclientmain.cc:978  honlinemonclientmain.cc:979  honlinemonclientmain.cc:980  honlinemonclientmain.cc:981  honlinemonclientmain.cc:982  honlinemonclientmain.cc:983  honlinemonclientmain.cc:984  honlinemonclientmain.cc:985  honlinemonclientmain.cc:986  honlinemonclientmain.cc:987  honlinemonclientmain.cc:988  honlinemonclientmain.cc:989  honlinemonclientmain.cc:990  honlinemonclientmain.cc:991  honlinemonclientmain.cc:992  honlinemonclientmain.cc:993  honlinemonclientmain.cc:994  honlinemonclientmain.cc:995  honlinemonclientmain.cc:996  honlinemonclientmain.cc:997  honlinemonclientmain.cc:998  honlinemonclientmain.cc:999  honlinemonclientmain.cc:1000  honlinemonclientmain.cc:1001  honlinemonclientmain.cc:1002  honlinemonclientmain.cc:1003  honlinemonclientmain.cc:1004  honlinemonclientmain.cc:1005  honlinemonclientmain.cc:1006  honlinemonclientmain.cc:1007  honlinemonclientmain.cc:1008  honlinemonclientmain.cc:1009  honlinemonclientmain.cc:1010  honlinemonclientmain.cc:1011  honlinemonclientmain.cc:1012  honlinemonclientmain.cc:1013  honlinemonclientmain.cc:1014  honlinemonclientmain.cc:1015  honlinemonclientmain.cc:1016  honlinemonclientmain.cc:1017  honlinemonclientmain.cc:1018  honlinemonclientmain.cc:1019  honlinemonclientmain.cc:1020  honlinemonclientmain.cc:1021  honlinemonclientmain.cc:1022  honlinemonclientmain.cc:1023  honlinemonclientmain.cc:1024  honlinemonclientmain.cc:1025  honlinemonclientmain.cc:1026  honlinemonclientmain.cc:1027  honlinemonclientmain.cc:1028  honlinemonclientmain.cc:1029  honlinemonclientmain.cc:1030  honlinemonclientmain.cc:1031  honlinemonclientmain.cc:1032  honlinemonclientmain.cc:1033  honlinemonclientmain.cc:1034  honlinemonclientmain.cc:1035  honlinemonclientmain.cc:1036  honlinemonclientmain.cc:1037  honlinemonclientmain.cc:1038  honlinemonclientmain.cc:1039  honlinemonclientmain.cc:1040  honlinemonclientmain.cc:1041  honlinemonclientmain.cc:1042  honlinemonclientmain.cc:1043  honlinemonclientmain.cc:1044  honlinemonclientmain.cc:1045  honlinemonclientmain.cc:1046  honlinemonclientmain.cc:1047  honlinemonclientmain.cc:1048  honlinemonclientmain.cc:1049  honlinemonclientmain.cc:1050  honlinemonclientmain.cc:1051  honlinemonclientmain.cc:1052  honlinemonclientmain.cc:1053  honlinemonclientmain.cc:1054  honlinemonclientmain.cc:1055  honlinemonclientmain.cc:1056  honlinemonclientmain.cc:1057  honlinemonclientmain.cc:1058  honlinemonclientmain.cc:1059  honlinemonclientmain.cc:1060  honlinemonclientmain.cc:1061  honlinemonclientmain.cc:1062  honlinemonclientmain.cc:1063  honlinemonclientmain.cc:1064  honlinemonclientmain.cc:1065  honlinemonclientmain.cc:1066  honlinemonclientmain.cc:1067  honlinemonclientmain.cc:1068  honlinemonclientmain.cc:1069  honlinemonclientmain.cc:1070  honlinemonclientmain.cc:1071  honlinemonclientmain.cc:1072  honlinemonclientmain.cc:1073  honlinemonclientmain.cc:1074  honlinemonclientmain.cc:1075  honlinemonclientmain.cc:1076  honlinemonclientmain.cc:1077  honlinemonclientmain.cc:1078  honlinemonclientmain.cc:1079  honlinemonclientmain.cc:1080  honlinemonclientmain.cc:1081  honlinemonclientmain.cc:1082  honlinemonclientmain.cc:1083  honlinemonclientmain.cc:1084  honlinemonclientmain.cc:1085  honlinemonclientmain.cc:1086  honlinemonclientmain.cc:1087  honlinemonclientmain.cc:1088  honlinemonclientmain.cc:1089  honlinemonclientmain.cc:1090  honlinemonclientmain.cc:1091  honlinemonclientmain.cc:1092  honlinemonclientmain.cc:1093  honlinemonclientmain.cc:1094  honlinemonclientmain.cc:1095  honlinemonclientmain.cc:1096  honlinemonclientmain.cc:1097  honlinemonclientmain.cc:1098  honlinemonclientmain.cc:1099  honlinemonclientmain.cc:1100  honlinemonclientmain.cc:1101  honlinemonclientmain.cc:1102  honlinemonclientmain.cc:1103  honlinemonclientmain.cc:1104  honlinemonclientmain.cc:1105  honlinemonclientmain.cc:1106  honlinemonclientmain.cc:1107  honlinemonclientmain.cc:1108  honlinemonclientmain.cc:1109  honlinemonclientmain.cc:1110  honlinemonclientmain.cc:1111  honlinemonclientmain.cc:1112  honlinemonclientmain.cc:1113  honlinemonclientmain.cc:1114  honlinemonclientmain.cc:1115  honlinemonclientmain.cc:1116  honlinemonclientmain.cc:1117  honlinemonclientmain.cc:1118  honlinemonclientmain.cc:1119  honlinemonclientmain.cc:1120  honlinemonclientmain.cc:1121  honlinemonclientmain.cc:1122  honlinemonclientmain.cc:1123  honlinemonclientmain.cc:1124  honlinemonclientmain.cc:1125  honlinemonclientmain.cc:1126  honlinemonclientmain.cc:1127  honlinemonclientmain.cc:1128  honlinemonclientmain.cc:1129  honlinemonclientmain.cc:1130  honlinemonclientmain.cc:1131  honlinemonclientmain.cc:1132  honlinemonclientmain.cc:1133  honlinemonclientmain.cc:1134  honlinemonclientmain.cc:1135  honlinemonclientmain.cc:1136  honlinemonclientmain.cc:1137  honlinemonclientmain.cc:1138  honlinemonclientmain.cc:1139  honlinemonclientmain.cc:1140  honlinemonclientmain.cc:1141  honlinemonclientmain.cc:1142  honlinemonclientmain.cc:1143  honlinemonclientmain.cc:1144  honlinemonclientmain.cc:1145  honlinemonclientmain.cc:1146  honlinemonclientmain.cc:1147  honlinemonclientmain.cc:1148  honlinemonclientmain.cc:1149  honlinemonclientmain.cc:1150  honlinemonclientmain.cc:1151  honlinemonclientmain.cc:1152  honlinemonclientmain.cc:1153  honlinemonclientmain.cc:1154  honlinemonclientmain.cc:1155  honlinemonclientmain.cc:1156  honlinemonclientmain.cc:1157  honlinemonclientmain.cc:1158  honlinemonclientmain.cc:1159  honlinemonclientmain.cc:1160  honlinemonclientmain.cc:1161  honlinemonclientmain.cc:1162  honlinemonclientmain.cc:1163  honlinemonclientmain.cc:1164  honlinemonclientmain.cc:1165  honlinemonclientmain.cc:1166  honlinemonclientmain.cc:1167  honlinemonclientmain.cc:1168  honlinemonclientmain.cc:1169  honlinemonclientmain.cc:1170  honlinemonclientmain.cc:1171  honlinemonclientmain.cc:1172  honlinemonclientmain.cc:1173  honlinemonclientmain.cc:1174  honlinemonclientmain.cc:1175  honlinemonclientmain.cc:1176  honlinemonclientmain.cc:1177  honlinemonclientmain.cc:1178  honlinemonclientmain.cc:1179  honlinemonclientmain.cc:1180  honlinemonclientmain.cc:1181  honlinemonclientmain.cc:1182  honlinemonclientmain.cc:1183  honlinemonclientmain.cc:1184  honlinemonclientmain.cc:1185  honlinemonclientmain.cc:1186  honlinemonclientmain.cc:1187  honlinemonclientmain.cc:1188  honlinemonclientmain.cc:1189  honlinemonclientmain.cc:1190  honlinemonclientmain.cc:1191  honlinemonclientmain.cc:1192  honlinemonclientmain.cc:1193  honlinemonclientmain.cc:1194  honlinemonclientmain.cc:1195  honlinemonclientmain.cc:1196  honlinemonclientmain.cc:1197  honlinemonclientmain.cc:1198