// @(#)root/sql:$Id$
// Author: Sergey Linev  20/11/2005

/*************************************************************************
 * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

//________________________________________________________________________
//
//  This is hierarhical structure, which is created when data is written
//  by TBufferSQL2. It contains data all structurual information such:
//  version of written class, data memeber types of that class, value for
//  each data memeber and so on.
//  Such structure in some sense similar to XML node and subnodes structure
//  Once it created, it converted to SQL statements, which are submitted
//  to database server.
//
//________________________________________________________________________

#include "TSQLStructure.h"

#include "Riostream.h"
#include "TMap.h"
#include "TClass.h"
#include "TStreamerInfo.h"
#include "TStreamerElement.h"
#include "TObjString.h"
#include "TClonesArray.h"

#include "TSQLFile.h"
#include "TSQLClassInfo.h"
#include "TSQLObjectData.h"
#include "TBufferSQL2.h"

#include "TSQLStatement.h"
#include "TSQLServer.h"
#include "TDataType.h"

namespace sqlio {
   const Int_t Ids_NullPtr       = 0; // used to identify NULL pointer in tables
   const Int_t Ids_RootDir       = 0; // dir:id, used for keys stored in root directory.
   const Int_t Ids_TSQLFile      = 0; // keyid for TSQLFile entry in keys list
   const Int_t Ids_StreamerInfos = 1; // keyid used to store StreamerInfos in ROOT directory
   const Int_t Ids_FirstKey      =10; // first key id, which is used in KeysTable (beside streamer info or something else)
   const Int_t Ids_FirstObject   = 1; // first object id, allowed in object tables

   const char* ObjectRef     = "ObjectRef";
   const char* ObjectRef_Arr = "ObjectRefArr";
   const char* ObjectPtr     = "ObjectPtr";
   const char* ObjectInst    = "ObjectInst";
   const char* Version       = "Version";
   const char* TObjectUniqueId = "UniqueId";
   const char* TObjectBits = "Bits";
   const char* TObjectProcessId = "ProcessId";
   const char* TStringValue= "StringValue";
   const char* IndexSepar  = "..";
   const char* RawSuffix = ":rawdata";
   const char* ParentSuffix = ":parent";
   const char* ObjectSuffix = ":object";
   const char* PointerSuffix = ":pointer";
   const char* StrSuffix     = ":str";
   const char* LongStrPrefix = "#~#";

   const char* Array       = "Array";
   const char* Bool        = "Bool_t";
   const char* Char        = "Char_t";
   const char* Short       = "Short_t";
   const char* Int         = "Int_t";
   const char* Long        = "Long_t";
   const char* Long64      = "Long64_t";
   const char* Float       = "Float_t";
   const char* Double      = "Double_t";
   const char* UChar       = "UChar_t";
   const char* UShort      = "UShort_t";
   const char* UInt        = "UInt_t";
   const char* ULong       = "ULong_t";
   const char* ULong64     = "ULong64_t";
   const char* CharStar    = "CharStar";
   const char* True        = "1";
   const char* False       = "0";

   // standard tables names
   const char* KeysTable      = "KeysTable";
   const char* KeysTableIndex = "KeysTableIndex";
   const char* ObjectsTable   = "ObjectsTable";
   const char* ObjectsTableIndex = "ObjectsTableIndex";
   const char* IdsTable = "IdsTable";
   const char* IdsTableIndex = "IdsTableIndex";
   const char* StringsTable   = "StringsTable";
   const char* ConfigTable    = "Configurations";

   // colummns in Keys table
   const char* KT_Name      = "Name";
   const char* KT_Title     = "Title";
   const char* KT_Datetime  = "Datime";
   const char* KT_Cycle     = "Cycle";
   const char* KT_Class     = "Class";

   const char* DT_Create    = "CreateDatime";
   const char* DT_Modified  = "ModifiedDatime";
   const char* DT_UUID      = "UUID";

   // colummns in Objects table
   const char* OT_Class     = "Class";
   const char* OT_Version   = "Version";

   // columns in Identifiers Table
   const char* IT_TableID   = "TableId";
   const char* IT_SubID     = "SubId";
   const char* IT_Type      = "Type";
   const char* IT_FullName  = "FullName";
   const char* IT_SQLName   = "SQLName";
   const char* IT_Info      = "Info";

   // colummns in _streamer_ tables
   const char* BT_Field     = "Field";
   const char* BT_Value     = "Value";

   // colummns in string table
   const char* ST_Value     = "LongStringValue";

   // columns in config table
   const char* CT_Field     = "Field";
   const char* CT_Value     = "Value";

   // values in config table
   const char* cfg_Version  = "SQL_IO_version";
   const char* cfg_UseSufixes = "UseNameSuffix";
   const char* cfg_ArrayLimit = "ArraySizeLimit";
   const char* cfg_TablesType = "TablesType";
   const char* cfg_UseTransactions = "UseTransactions";
   const char* cfg_UseIndexes = "UseIndexes";
   const char* cfg_LockingMode = "LockingMode";
   const char* cfg_ModifyCounter = "ModifyCounter";
};

//________________________________________________________________________

#ifdef R__VISUAL_CPLUSPLUS
#define FLong64    "%I64d"
#define FULong64   "%I64u"
#else
#define FLong64    "%lld"
#define FULong64   "%llu"
#endif

Long64_t sqlio::atol64(const char* value)
{
   if ((value==0) || (*value==0)) return 0;
   Long64_t res = 0;
   sscanf(value, FLong64, &res);
   return res;
}


ClassImp(TSQLColumnData)

//______________________________________________________________________________
   TSQLColumnData::TSQLColumnData() :
      TObject(),
      fName(),
      fType(),
      fValue(),
      fNumeric(kFALSE)
{
   // default constructor
}

//________________________________________________________________________
TSQLColumnData::TSQLColumnData(const char* name,
                               const char* sqltype,
                               const char* value,
                               Bool_t numeric) :
   TObject(),
   fName(name),
   fType(sqltype),
   fValue(value),
   fNumeric(numeric)
{
   // normal constructor of TSQLColumnData class
   // specifies name, type and value for one column
}

//________________________________________________________________________
TSQLColumnData::TSQLColumnData(const char* name, Long64_t value) :
   TObject(),
   fName(name),
   fType("INT"),
   fValue(),
   fNumeric(kTRUE)
{
   // constructs TSQLColumnData object for integer column

   fValue.Form("%lld",value);
}

//________________________________________________________________________
TSQLColumnData::~TSQLColumnData()
{
   // TSQLColumnData destructor
}


ClassImp(TSQLTableData);

//________________________________________________________________________
TSQLTableData::TSQLTableData(TSQLFile* f, TSQLClassInfo* info) : 
   TObject(),
   fFile(f),
   fInfo(info),
   fColumns(),
   fColInfos(0)
{
   // normal constructor
   
   if (info && !info->IsClassTableExist()) 
      fColInfos = new TObjArray;
}

//________________________________________________________________________
TSQLTableData::~TSQLTableData()
{
   // destructor
   
   fColumns.Delete();
   if (fColInfos!=0) {
      fColInfos->Delete();
      delete fColInfos;  
   }
}

//________________________________________________________________________
void TSQLTableData::AddColumn(const char* name, Long64_t value)
{
   // Add INT column to list of columns

   TObjString* v = new TObjString(Form("%lld",value));
   v->SetBit(BIT(20), kTRUE);
   fColumns.Add(v);

//   TSQLColumnData* col = new TSQLColumnData(name, value);
//   fColumns.Add(col);
   
   if (fColInfos!=0)
     fColInfos->Add(new TSQLClassColumnInfo(name, DefineSQLName(name), "INT"));
}

//________________________________________________________________________
void TSQLTableData::AddColumn(const char* name, 
                              const char* sqltype, 
                              const char* value, 
                              Bool_t numeric)
{
   // Add nomral column to list of columns

   TObjString* v = new TObjString(value);
   v->SetBit(BIT(20), numeric);
   fColumns.Add(v);
   
//   TSQLColumnData* col = new TSQLColumnData(name, sqltype, value, numeric);
//   fColumns.Add(col);

   if (fColInfos!=0)
     fColInfos->Add(new TSQLClassColumnInfo(name, DefineSQLName(name), sqltype));
}

//________________________________________________________________________
TString TSQLTableData::DefineSQLName(const char* fullname)
{
   // produce suitable name for column, taking into account length limitation
   
   Int_t maxlen = fFile->SQLMaxIdentifierLength();
   
   Int_t len = strlen(fullname);
   
   if ((len<=maxlen) && !HasSQLName(fullname)) return TString(fullname);
   
   Int_t cnt = -1;
   TString res, scnt;
   
   do {
      
      scnt.Form("%d",cnt);
      Int_t numlen = cnt<0 ? 0 : scnt.Length();
      
      res = fullname;
      
      if (len + numlen > maxlen) 
         res.Resize(maxlen - numlen);
      
      if (cnt>=0) res+=scnt;
      
      if (!HasSQLName(res.Data())) return res;
      
      cnt++;
      
   } while (cnt<10000);
   
   Error("DefineSQLName","Cannot find reasonable column name for field %s",fullname);
   
   return TString(fullname);
}

//________________________________________________________________________
Bool_t TSQLTableData::HasSQLName(const char* sqlname)
{
   // checks if columns list already has that sql name
   
   TIter next(fColInfos);

   TSQLClassColumnInfo* col = 0;
   
   while ((col = (TSQLClassColumnInfo*) next()) != 0) {
      const char* colname = col->GetSQLName();
      if (strcmp(colname, sqlname)==0) return kTRUE;
   }
   
   return kFALSE;

}

//________________________________________________________________________
Int_t TSQLTableData::GetNumColumns()
{
   // returns number of columns in provided set
   
   return fColumns.GetLast() +1;
}

//________________________________________________________________________
const char* TSQLTableData::GetColumn(Int_t n)
{
   // returm column value
   return fColumns[n]->GetName();
}

//________________________________________________________________________
Bool_t TSQLTableData::IsNumeric(Int_t n)
{
   // identifies if column has numeric value
   
   return fColumns[n]->TestBit(BIT(20));
}

//________________________________________________________________________
TObjArray* TSQLTableData::TakeColInfos() 
{ 
   // take ownership over colinfos
   
   TObjArray* res = fColInfos; 
   fColInfos = 0; 
   return res; 
}

//________________________________________________________________________

ClassImp(TSQLStructure);

TSQLStructure::TSQLStructure() :
   TObject(),
   fParent(0),
   fType(0),
   fPointer(0),
   fValue(),
   fArrayIndex(-1),
   fRepeatCnt(0),
   fChilds()
{
   // default constructor
}

//________________________________________________________________________
TSQLStructure::~TSQLStructure()
{
   // destructor

   fChilds.Delete();
   if (GetType()==kSqlObjectData) {
      TSQLObjectData* objdata = (TSQLObjectData*) fPointer;
      delete objdata;
   } else
   if (GetType()==kSqlCustomElement) {
      TStreamerElement* elem = (TStreamerElement*) fPointer;
      delete elem;
   }
}

//________________________________________________________________________
Int_t TSQLStructure::NumChilds() const
{
   // number of child structures

   return fChilds.GetLast()+1;
}

//________________________________________________________________________
TSQLStructure* TSQLStructure::GetChild(Int_t n) const
{
   // return child structure of index n

   return (n<0) || (n>fChilds.GetLast()) ? 0 : (TSQLStructure*) fChilds[n];
}

//________________________________________________________________________
void TSQLStructure::SetObjectRef(Long64_t refid, const TClass* cl)
{
   // set structure type as kSqlObject

   fType = kSqlObject;
   fValue.Form("%lld",refid);
   fPointer = cl;
}

//________________________________________________________________________
void TSQLStructure::SetObjectPointer(Long64_t ptrid)
{
   // set structure type as kSqlPointer

   fType = kSqlPointer;
   fValue.Form("%lld",ptrid);
}

//________________________________________________________________________
void TSQLStructure::SetVersion(const TClass* cl, Int_t version)
{
   // set structure type as kSqlVersion

   fType = kSqlVersion;
   fPointer = cl;
   if (version<0) version = cl->GetClassVersion();
   fValue.Form("%d",version);
}

//________________________________________________________________________
void TSQLStructure::SetClassStreamer(const TClass* cl)
{
   // set structure type as kSqlClassStreamer

   fType = kSqlClassStreamer;
   fPointer = cl;
}

//________________________________________________________________________
void TSQLStructure::SetStreamerInfo(const TStreamerInfo* info)
{
   // set structure type as kSqlStreamerInfo

   fType = kSqlStreamerInfo;
   fPointer = info;
}

//________________________________________________________________________
void TSQLStructure::SetStreamerElement(const TStreamerElement* elem, Int_t number)
{
   // set structure type as kSqlElement

   fType = kSqlElement;
   fPointer = elem;
   fArrayIndex = number;
}

//________________________________________________________________________
void TSQLStructure::SetCustomClass(const TClass* cl, Version_t version)
{
   // set structure type as kSqlCustomClass
   
   fType = kSqlCustomClass;
   fPointer = (void*) cl;
   fArrayIndex = version;
}

//________________________________________________________________________
void TSQLStructure::SetCustomElement(TStreamerElement* elem)
{
   // set structure type as kSqlCustomElement
   
   fType = kSqlCustomElement;
   fPointer = elem;
}

//________________________________________________________________________
void TSQLStructure::SetValue(const char* value, const char* tname)
{
   // set structure type as kSqlValue

   fType = kSqlValue;
   fValue = value;
   fPointer = tname;
}

//________________________________________________________________________
void TSQLStructure::ChangeValueOnly(const char* value)
{
   // change value of this structure
   // used as "workaround" to keep object id in kSqlElement node

   fValue = value;
}

//________________________________________________________________________
void TSQLStructure::SetArrayIndex(Int_t indx, Int_t cnt)
{
   // set array index for this structure

   fArrayIndex = indx;
   fRepeatCnt = cnt;
}

//________________________________________________________________________
void TSQLStructure::ChildArrayIndex(Int_t index, Int_t cnt)
{
   // set array index for last child element
   //   if (cnt<=1) return;
   TSQLStructure* last = (TSQLStructure*) fChilds.Last();
   if ((last!=0) && (last->GetType()==kSqlValue))
      last->SetArrayIndex(index, cnt);
}

//________________________________________________________________________
void TSQLStructure::SetArray(Int_t sz)
{
   // Set structure as array element

   fType = kSqlArray;
   if (sz>=0) fValue.Form("%d",sz);
}

//________________________________________________________________________
TClass* TSQLStructure::GetObjectClass() const
{
   // return object class if type kSqlObject

   return (fType==kSqlObject) ? (TClass*) fPointer : 0;
}

//________________________________________________________________________
TClass* TSQLStructure::GetVersionClass() const
{
   // return class for version tag if type is kSqlVersion

   return (fType==kSqlVersion) ? (TClass*) fPointer : 0;
}

//________________________________________________________________________
TStreamerInfo*  TSQLStructure::GetStreamerInfo() const
{
   // return TStreamerInfo* if type is kSqlStreamerInfo

   return (fType==kSqlStreamerInfo) ? (TStreamerInfo*) fPointer : 0;
}

//________________________________________________________________________
TStreamerElement* TSQLStructure::GetElement() const
{
   // return TStremerElement* if type is kSqlElement

   return (fType==kSqlElement) || (fType==kSqlCustomElement) ? (TStreamerElement*) fPointer : 0;
}

//________________________________________________________________________
Int_t TSQLStructure::GetElementNumber() const
{
   // returns number of TStremerElement in TStreamerInfo

   return (fType==kSqlElement) ? fArrayIndex : 0;
}

//________________________________________________________________________
const char* TSQLStructure::GetValueType() const
{
   // return value type if structure is kSqlValue

   return (fType==kSqlValue) ? (const char*) fPointer : 0;
}

//________________________________________________________________________
TClass* TSQLStructure::GetCustomClass() const
{
   // return element custom class if strutures is kSqlCustomClass
   
   return (fType==kSqlCustomClass) ? (TClass*) fPointer : 0;
}

//________________________________________________________________________
Version_t TSQLStructure::GetCustomClassVersion() const
{
   // return custom class version if strutures is kSqlCustomClass
   
   return (fType==kSqlCustomClass) ? fArrayIndex : 0;
}

//________________________________________________________________________
Bool_t TSQLStructure::GetClassInfo(TClass* &cl, Version_t &version)
{
   // provides class info if structure kSqlStreamerInfo or kSqlCustomClass
   
   if (GetType()==kSqlStreamerInfo) {
      TStreamerInfo* info = GetStreamerInfo();
      if (info==0) return kFALSE;
      cl = info->GetClass();
      version = info->GetClassVersion();
   } else
   if (GetType()==kSqlCustomClass) {
      cl = GetCustomClass();
      version = GetCustomClassVersion();
   } else
      return kFALSE;
   return kTRUE;
}

//________________________________________________________________________
const char* TSQLStructure::GetValue() const
{
   // returns value
   // for different structure kinds has different sense
   // For kSqlVersion it version, for kSqlReference it is object id and so on

   return fValue.Data();
}

//________________________________________________________________________
void TSQLStructure::Add(TSQLStructure* child)
{
   // Add child strucure

   if (child!=0) {
      child->SetParent(this);
      fChilds.Add(child);
   }
}

//________________________________________________________________________
void TSQLStructure::AddVersion(const TClass* cl, Int_t version)
{
   // add child as version

   TSQLStructure* ver = new TSQLStructure;
   ver->SetVersion(cl, version);
   Add(ver);
}

//________________________________________________________________________
void TSQLStructure::AddValue(const char* value, const char* tname)
{
   // Add child structure as value

   TSQLStructure* child = new TSQLStructure;
   child->SetValue(value, tname);
   Add(child);
}

//________________________________________________________________________
Long64_t TSQLStructure::DefineObjectId(Bool_t recursive)
{
   // defines current object id, to which this structure belong
   // make life complicated, because some objects do not get id
   // automatically in TBufferSQL, but afterwards

   TSQLStructure* curr = this;
   while (curr!=0) {
      if ((curr->GetType()==kSqlObject) ||
          (curr->GetType()==kSqlPointer) || 
         // workaround to store object id in element structure
          (curr->GetType()==kSqlElement) ||
          (curr->GetType()==kSqlCustomElement) ||
          (curr->GetType()==kSqlCustomClass) ||
          (curr->GetType()==kSqlStreamerInfo)) {
         const char* value = curr->GetValue();
         if ((value!=0) && (strlen(value)>0))
            return sqlio::atol64(value);
      }

      curr = recursive ? curr->GetParent() : 0;
   }
   return -1;
}

//________________________________________________________________________
void TSQLStructure::SetObjectData(TSQLObjectData* objdata)
{
   // set element to be used for object data

   fType = kSqlObjectData;
   fPointer = objdata;
}

//________________________________________________________________________
void TSQLStructure::AddObjectData(TSQLObjectData* objdata)
{
   // add element with pointer to object data

   TSQLStructure* child = new TSQLStructure;
   child->SetObjectData(objdata);
   Add(child);
}

//________________________________________________________________________
TSQLObjectData* TSQLStructure::GetObjectData(Bool_t search)
{
   // searchs for objects data

   TSQLStructure* child = GetChild(0);
   if ((child!=0) && (child->GetType()==kSqlObjectData))
      return (TSQLObjectData*) child->fPointer;
   if (search && (GetParent()!=0))
      return GetParent()->GetObjectData(search);
   return 0;
}

//________________________________________________________________________
void TSQLStructure::Print(Option_t*) const
{
   // print content of complete structure

   PrintLevel(0);
}

//________________________________________________________________________
void TSQLStructure::PrintLevel(Int_t level) const
{
   // print content of current structure

   for(Int_t n=0;n<level;n++) std::cout << " ";
   switch (fType) {
   case 0: std::cout << "Undefined type"; break;
   case kSqlObject: std::cout << "Object ref = " << fValue; break;
   case kSqlPointer: std::cout << "Pointer ptr = " << fValue; break;
   case kSqlVersion: {
      const TClass* cl = (const TClass*) fPointer;
      std::cout << "Version cl = " << cl->GetName() << " ver = " << cl->GetClassVersion();
      break;
   }
   case kSqlStreamerInfo: {
      const TStreamerInfo* info = (const TStreamerInfo*) fPointer;
      std::cout << "Class: " << info->GetName();
      break;
   }
   case kSqlCustomElement:
   case kSqlElement: {
      const TStreamerElement* elem = (const TStreamerElement*) fPointer;
      std::cout << "Member: " << elem->GetName();
      break;
   }
   case kSqlValue: {
      std::cout << "Value: " << fValue;
      if (fRepeatCnt>1) std::cout << "  cnt:" << fRepeatCnt;
      if (fPointer!=0) std::cout << "  type = " << (const char*)fPointer;
      break;
   }
   case kSqlArray: {
      std::cout << "Array ";
      if (fValue.Length()>0) std::cout << "  sz = " << fValue;
      break;
   }
   case kSqlCustomClass: {
      TClass* cl = (TClass*) fPointer;
      std::cout << "CustomClass: " << cl->GetName() << "  ver = " << fValue;
      break;
   }
   default:
      std::cout << "Unknown type";
   }
   std::cout << std::endl;

   for(Int_t n=0;n<NumChilds();n++)
      GetChild(n)->PrintLevel(level+2);
}

//________________________________________________________________________
Bool_t TSQLStructure::IsNumericType(Int_t typ)
{
   // defines if value is numeric and not requires quotes when writing

   switch(typ) {
   case TStreamerInfo::kShort   : return kTRUE;
   case TStreamerInfo::kInt     : return kTRUE;
   case TStreamerInfo::kLong    : return kTRUE;
   case TStreamerInfo::kFloat   : return kTRUE;
   case TStreamerInfo::kFloat16 : return kTRUE;
   case TStreamerInfo::kCounter : return kTRUE;
   case TStreamerInfo::kDouble  : return kTRUE;
   case TStreamerInfo::kDouble32: return kTRUE;
   case TStreamerInfo::kUChar   : return kTRUE;
   case TStreamerInfo::kUShort  : return kTRUE;
   case TStreamerInfo::kUInt    : return kTRUE;
   case TStreamerInfo::kULong   : return kTRUE;
   case TStreamerInfo::kBits    : return kTRUE;
   case TStreamerInfo::kLong64  : return kTRUE;
   case TStreamerInfo::kULong64 : return kTRUE;
   case TStreamerInfo::kBool    : return kTRUE;
   }
   return kFALSE;
}

//________________________________________________________________________
const char* TSQLStructure::GetSimpleTypeName(Int_t typ)
{
   // provides name for basic types
   // used as suffix for column name or field suffix in raw table

   switch(typ) {
   case TStreamerInfo::kChar    : return sqlio::Char;
   case TStreamerInfo::kShort   : return sqlio::Short;
   case TStreamerInfo::kInt     : return sqlio::Int;
   case TStreamerInfo::kLong    : return sqlio::Long;
   case TStreamerInfo::kFloat   : return sqlio::Float;
   case TStreamerInfo::kFloat16 : return sqlio::Float;
   case TStreamerInfo::kCounter : return sqlio::Int;
   case TStreamerInfo::kDouble  : return sqlio::Double;
   case TStreamerInfo::kDouble32: return sqlio::Double;
   case TStreamerInfo::kUChar   : return sqlio::UChar;
   case TStreamerInfo::kUShort  : return sqlio::UShort;
   case TStreamerInfo::kUInt    : return sqlio::UInt;
   case TStreamerInfo::kULong   : return sqlio::ULong;
   case TStreamerInfo::kBits    : return sqlio::UInt;
   case TStreamerInfo::kLong64  : return sqlio::Long64;
   case TStreamerInfo::kULong64 : return sqlio::ULong64;
   case TStreamerInfo::kBool    : return sqlio::Bool;
   }

   return 0;
}

//___________________________________________________________

// TSqlCmdsBuffer used as buffer for data, which are correspond to
// particular class, defined by TSQLClassInfo instance
// Support both TSQLStatement and Query modes

class TSqlCmdsBuffer : public TObject {

public:
   TSqlCmdsBuffer(TSQLFile* f, TSQLClassInfo* info) :
      TObject(),
      fFile(f),
      fInfo(info),
      fBlobStmt(0),
      fNormStmt(0)
   {
   }

   virtual ~TSqlCmdsBuffer()
   {
      fNormCmds.Delete();
      fBlobCmds.Delete();
      fFile->SQLDeleteStatement(fBlobStmt);
      fFile->SQLDeleteStatement(fNormStmt);
   }

   void AddValues(Bool_t isnorm, const char* values)
   {
      TObjString* str = new TObjString(values);
      if (isnorm) fNormCmds.Add(str);
      else fBlobCmds.Add(str);
   }

   TSQLFile* fFile;
   TSQLClassInfo* fInfo;
   TObjArray fNormCmds;
   TObjArray fBlobCmds;
   TSQLStatement* fBlobStmt;
   TSQLStatement* fNormStmt;
};

//________________________________________________________________________
// TSqlRegistry keeps data, used when object data transformed to sql query or
// statements 

class TSqlRegistry : public TObject {

public:
   TSqlRegistry() :
      TObject(),
      fFile(0),
      fKeyId(0),
      fLastObjId(-1),
      fCmds(0),
      fFirstObjId(0),
      fCurrentObjId(0),
      fCurrentObjClass(0),
      fLastLongStrId(0),
      fPool(),
      fLongStrValues(),
      fRegValues(),
      fRegStmt(0)
   {
   }

   TSQLFile*  fFile;
   Long64_t   fKeyId;
   Long64_t   fLastObjId;
   TObjArray* fCmds;
   Long64_t   fFirstObjId;

   Long64_t   fCurrentObjId;
   TClass*    fCurrentObjClass;

   Int_t      fLastLongStrId;

   TMap       fPool;
   TObjArray  fLongStrValues;
   TObjArray  fRegValues;
   
   TSQLStatement* fRegStmt;


   virtual ~TSqlRegistry()
   {
      fPool.DeleteValues();
      fLongStrValues.Delete();
      fRegValues.Delete();
      fFile->SQLDeleteStatement(fRegStmt);
   }

   Long64_t GetNextObjId() { return ++fLastObjId; }

   void AddSqlCmd(const char* query)
   {
      // add SQL command to the list
      if (fCmds==0) fCmds = new TObjArray;
      fCmds->Add(new TObjString(query));
   }

   TSqlCmdsBuffer* GetCmdsBuffer(TSQLClassInfo* sqlinfo)
   {
      if (sqlinfo==0) return 0;
      TSqlCmdsBuffer* buf = (TSqlCmdsBuffer*) fPool.GetValue(sqlinfo);
      if (buf==0) {
         buf = new TSqlCmdsBuffer(fFile, sqlinfo);
         fPool.Add(sqlinfo, buf);
      }
      return buf;
   }

   void ConvertSqlValues(TObjArray& values, const char* tablename)
   {
   // this function transforms array of values for one table
   // to SQL command. For MySQL one INSERT querie can
   // contain data for more than one row

      if ((values.GetLast()<0) || (tablename==0)) return;

      Bool_t canbelong = fFile->IsMySQL();

      Int_t maxsize = 50000;
      TString sqlcmd(maxsize), value, onecmd, cmdmask;

      const char* quote = fFile->SQLIdentifierQuote();

      TIter iter(&values);
      TObject* cmd = 0;
      while ((cmd = iter())!=0) {

         if (sqlcmd.Length()==0)
            sqlcmd.Form("INSERT INTO %s%s%s VALUES (%s)",
                        quote, tablename, quote, cmd->GetName());
         else {
            sqlcmd+=", (";
            sqlcmd += cmd->GetName();
            sqlcmd+=")";
         }

         if (!canbelong || (sqlcmd.Length()>maxsize*0.9)) {
            AddSqlCmd(sqlcmd.Data());
            sqlcmd = "";
         }
      }

      if (sqlcmd.Length()>0) AddSqlCmd(sqlcmd.Data());
   }

   void ConvertPoolValues()
   {
      TSQLClassInfo* sqlinfo = 0;
      TIter iter(&fPool);
      while ((sqlinfo = (TSQLClassInfo*) iter())!=0) {
         TSqlCmdsBuffer* buf = (TSqlCmdsBuffer*) fPool.GetValue(sqlinfo);
         if (buf==0) continue;
         ConvertSqlValues(buf->fNormCmds, sqlinfo->GetClassTableName());
         // ensure that raw table will be created
         if (buf->fBlobCmds.GetLast()>=0) fFile->CreateRawTable(sqlinfo);
         ConvertSqlValues(buf->fBlobCmds, sqlinfo->GetRawTableName());
         if (buf->fBlobStmt)
            buf->fBlobStmt->Process();
         if (buf->fNormStmt)
            buf->fNormStmt->Process();
      }

      ConvertSqlValues(fLongStrValues, sqlio::StringsTable);
      ConvertSqlValues(fRegValues, sqlio::ObjectsTable);
      if (fRegStmt) fRegStmt->Process();
   }


   void AddRegCmd(Long64_t objid, TClass* cl)
   {
      Long64_t indx = objid-fFirstObjId;
      if (indx<0) {
         Error("AddRegCmd","Something wrong with objid = %lld", objid);
         return;
      }
      
      if (fFile->IsOracle() || fFile->IsODBC()) {
         if ((fRegStmt==0) && fFile->SQLCanStatement()) {
            const char* quote = fFile->SQLIdentifierQuote();
            
            TString sqlcmd;
            const char* pars = fFile->IsOracle() ? ":1, :2, :3, :4" : "?, ?, ?, ?";
            sqlcmd.Form("INSERT INTO %s%s%s VALUES (%s)", 
                     quote, sqlio::ObjectsTable, quote, pars);
            fRegStmt = fFile->SQLStatement(sqlcmd.Data(), 1000);
         }
         
         if (fRegStmt!=0) {
            fRegStmt->NextIteration();
            fRegStmt->SetLong64(0, fKeyId);
            fRegStmt->SetLong64(1, objid);
            fRegStmt->SetString(2, cl->GetName(), fFile->SQLSmallTextTypeLimit());
            fRegStmt->SetInt(3, cl->GetClassVersion());
            return;
         }
      }      
      
      const char* valuequote = fFile->SQLValueQuote();
      TString cmd;
      cmd.Form("%lld, %lld, %s%s%s, %d",
                fKeyId, objid,
                valuequote, cl->GetName(), valuequote,
                cl->GetClassVersion());
      fRegValues.AddAtAndExpand(new TObjString(cmd), indx);
   }

   Int_t AddLongString(const char* strvalue)
   {
      // add value to special string table,
      // where large (more than 255 bytes) strings are stored

      if (fLastLongStrId==0) fFile->VerifyLongStringTable();
      Int_t strid = ++fLastLongStrId;
      TString value = strvalue;
      const char* valuequote = fFile->SQLValueQuote();
      TSQLStructure::AddStrBrackets(value, valuequote);

      TString cmd;
      cmd.Form("%lld, %d, %s", fCurrentObjId, strid, value.Data());

      fLongStrValues.Add(new TObjString(cmd));

      return strid;
   }

   Bool_t InsertToNormalTableOracle(TSQLTableData* columns, TSQLClassInfo* sqlinfo)
   {
      TSqlCmdsBuffer* buf = GetCmdsBuffer(sqlinfo);
      if (buf==0) return kFALSE;
      
      TSQLStatement* stmt = buf->fNormStmt;
      if (stmt==0) {
         // if one cannot create statement, do it normal way
         if (!fFile->SQLCanStatement()) return kFALSE;
         
         const char* quote = fFile->SQLIdentifierQuote();
         TString sqlcmd;
         sqlcmd.Form("INSERT INTO %s%s%s VALUES (", 
                     quote, sqlinfo->GetClassTableName(), quote);
         for (int n=0;n<columns->GetNumColumns();n++) {
            if (n>0) sqlcmd +=", ";
            if (fFile->IsOracle()) {
               sqlcmd += ":"; 
               sqlcmd += (n+1);
            } else
               sqlcmd += "?";
         }
         sqlcmd += ")";
                     
         stmt = fFile->SQLStatement(sqlcmd.Data(), 1000);
         if (stmt==0) return kFALSE;
         buf->fNormStmt = stmt;
      }
      
      stmt->NextIteration(); 
      
      Int_t sizelimit = fFile->SQLSmallTextTypeLimit();
       
      for (Int_t ncol=0;ncol<columns->GetNumColumns();ncol++) {
         const char* value = columns->GetColumn(ncol);
         if (value==0) value = "";
         stmt->SetString(ncol, value, sizelimit);
      }
      
      return kTRUE;
   }

   void InsertToNormalTable(TSQLTableData* columns, TSQLClassInfo* sqlinfo)
   {
      // produce SQL query to insert object data into normal table

      if (fFile->IsOracle() || fFile->IsODBC())
         if (InsertToNormalTableOracle(columns, sqlinfo))
           return;

      const char* valuequote = fFile->SQLValueQuote();

      TString values;
      
      for (Int_t n=0;n<columns->GetNumColumns();n++) {
         if (n>0) values+=", "; 
         
         if (columns->IsNumeric(n))
            values+=columns->GetColumn(n);
         else {
            TString value = columns->GetColumn(n);
            TSQLStructure::AddStrBrackets(value, valuequote);
            values += value;
         }
      }
     
      TSqlCmdsBuffer* buf = GetCmdsBuffer(sqlinfo);
      if (buf!=0) buf->AddValues(kTRUE, values.Data());
   }
};


//_____________________________________________________________________________

// TSqlRawBuffer is used to convert raw data, which corresponds to one
// object and belong to single SQL tables. Supoorts both statements 
// and query mode

class TSqlRawBuffer : public TObject {

public:

   TSqlRawBuffer(TSqlRegistry* reg, TSQLClassInfo* sqlinfo) :
      TObject(),
      fFile(0),
      fInfo(0),
      fCmdBuf(0),
      fObjId(0),
      fRawId(0),
      fValueMask(),
      fValueQuote(0),
      fMaxStrSize(255)
   {
      fFile = reg->fFile;
      fInfo = sqlinfo;
      fCmdBuf = reg->GetCmdsBuffer(sqlinfo);
      fObjId = reg->fCurrentObjId;
      fValueQuote = fFile->SQLValueQuote();
      fValueMask.Form("%lld, %s, %s%s%s, %s", fObjId, "%d", fValueQuote, "%s", fValueQuote, "%s");      
      fMaxStrSize = reg->fFile->SQLSmallTextTypeLimit();
   }
   
   virtual ~TSqlRawBuffer() 
   {
      // close blob statement for Oracle
      TSQLStatement* stmt = fCmdBuf->fBlobStmt;
      if ((stmt!=0) && fFile->IsOracle()) {
         stmt->Process();
         delete stmt;
         fCmdBuf->fBlobStmt = 0;
      }
   }
   
   Bool_t IsAnyData() const { return fRawId>0; }

   void AddLine(const char* name, const char* value, const char* topname = 0, const char* ns = 0)
   {
      if (fCmdBuf==0) return;
      
      // when first line is created, check all problems
      if (fRawId==0) {
         Bool_t maketmt = kFALSE;
         if (fFile->IsOracle() || fFile->IsODBC())
            maketmt = (fCmdBuf->fBlobStmt==0) && fFile->SQLCanStatement();
            
         if (maketmt) {
            // ensure that raw table is exists
            fFile->CreateRawTable(fInfo);
            
            const char* quote = fFile->SQLIdentifierQuote();
            TString sqlcmd;
            const char* params = fFile->IsOracle() ? ":1, :2, :3, :4" : "?, ?, ?, ?";
            sqlcmd.Form("INSERT INTO %s%s%s VALUES (%s)", 
                        quote, fInfo->GetRawTableName(), quote, params);
            TSQLStatement* stmt = fFile->SQLStatement(sqlcmd.Data(), 2000);
            fCmdBuf->fBlobStmt = stmt;
         }
      }
      
      TString buf;
      const char* fullname = name;
      if ((topname!=0) && (ns!=0)) {
         buf+=topname;
         buf+=ns;
         buf+=name;
         fullname = buf.Data();
      }
      
      TSQLStatement* stmt = fCmdBuf->fBlobStmt;
      
      if (stmt!=0) {
         stmt->NextIteration();
         stmt->SetLong64(0, fObjId);
         stmt->SetInt(1, fRawId++);
         stmt->SetString(2, fullname, fMaxStrSize);
//         Info("AddLine","name = %s value = %s",fullname, value);
         stmt->SetString(3, value, fMaxStrSize);
      } else {
         TString valuebuf(value);
         TSQLStructure::AddStrBrackets(valuebuf, fValueQuote);
         TString cmd;
         cmd.Form(fValueMask.Data(), fRawId++, fullname, valuebuf.Data());
         fCmdBuf->AddValues(kFALSE, cmd.Data());         
      }
   }
      
   TSQLFile*  fFile;
   TSQLClassInfo* fInfo;
   TSqlCmdsBuffer* fCmdBuf;
   Long64_t fObjId; 
   Int_t fRawId;
   TString fValueMask;
   const char* fValueQuote;
   Int_t fMaxStrSize;
};

//________________________________________________________________________
Long64_t TSQLStructure::FindMaxObjectId()
{
   // define maximum reference id, used for objects

   Long64_t max = DefineObjectId(kFALSE);

   for (Int_t n=0;n<NumChilds();n++) {
      Long64_t zn = GetChild(n)->FindMaxObjectId();
      if (zn>max) max = zn;
   }

   return max;
}

//________________________________________________________________________
Bool_t TSQLStructure::ConvertToTables(TSQLFile* file, Long64_t keyid, TObjArray* cmds)
{
   // Convert structure to sql statements
   // This function is called immidiately after TBufferSQL2 produces
   // this structure with object data
   // Should be only called for toplevel structure

   if ((file==0) || (cmds==0)) return kFALSE;

   TSqlRegistry reg;

   reg.fCmds = cmds;
   reg.fFile = file;
   reg.fKeyId = keyid;
   // this is id of main object to be stored
   reg.fFirstObjId = DefineObjectId(kFALSE);
   // this is maximum objectid which is now in use
   reg.fLastObjId = FindMaxObjectId();

   Bool_t res = StoreObject(&reg, reg.fFirstObjId, GetObjectClass());

   // convert values from pool to SQL commands
   reg.ConvertPoolValues();

   return res;
}

//________________________________________________________________________
void TSQLStructure::PerformConversion(TSqlRegistry* reg, TSqlRawBuffer* blobs, const char* topname, Bool_t useblob)
{
   // perform conversion of structure to sql statements
   // first tries convert it to normal form
   // if fails, produces data for raw table

   TString sbuf;
   const char* ns = reg->fFile->SQLNameSeparator();

   switch (fType) {
   case kSqlObject: {

      if (!StoreObject(reg, DefineObjectId(kFALSE), GetObjectClass())) break;

      blobs->AddLine(sqlio::ObjectRef, GetValue(), topname, ns);

      break;
   }

   case kSqlPointer: {
      blobs->AddLine(sqlio::ObjectPtr, fValue.Data(), topname,ns);
      break;
   }

   case kSqlVersion: {
      if (fPointer!=0)
         topname = ((TClass*) fPointer)->GetName();
      else
         Error("PerformConversion","version without class");
      blobs->AddLine(sqlio::Version, fValue.Data(), topname, ns);
      break;
   }

   case kSqlStreamerInfo: {

      TStreamerInfo* info = GetStreamerInfo();
      if (info==0) return;

      if (useblob) {
         for(Int_t n=0;n<=fChilds.GetLast();n++) {
            TSQLStructure* child = (TSQLStructure*) fChilds.At(n);
            child->PerformConversion(reg, blobs, info->GetName(), useblob);
         }
      } else {
         Long64_t objid = reg->GetNextObjId();
         TString sobjid;
         sobjid.Form("%lld",objid);
         if (!StoreObject(reg, objid, info->GetClass(), kTRUE)) return;
         blobs->AddLine(sqlio::ObjectInst, sobjid.Data(), topname, ns);
      }
      break;
   }

   case kSqlCustomElement:
   case kSqlElement: {
      const TStreamerElement* elem = (const TStreamerElement*) fPointer;

      Int_t indx = 0;
      while (indx<NumChilds()) {
         TSQLStructure* child = GetChild(indx++);
         child->PerformConversion(reg, blobs, elem->GetName(), useblob);
      }
      break;
   }

   case kSqlValue: {
      const char* tname = (const char*) fPointer;
      if (fArrayIndex>=0) {
         if (fRepeatCnt>1)
            sbuf.Form("%s%d%s%d%s%s%s", "[", fArrayIndex, sqlio::IndexSepar, fArrayIndex+fRepeatCnt-1, "]", ns, tname);
         else
            sbuf.Form("%s%d%s%s%s", "[", fArrayIndex, "]", ns, tname);
      } else {
         if (tname!=0) sbuf = tname;
         else sbuf = "Value";
      }

      TString buf;
      const char* value = fValue.Data();

      if ((tname==sqlio::CharStar) && (value!=0)) {
         Int_t size = strlen(value);
         if (size > reg->fFile->SQLSmallTextTypeLimit()) {
            Int_t strid = reg->AddLongString(value);
            buf = reg->fFile->CodeLongString(reg->fCurrentObjId, strid);
            value = buf.Data();
         }
      }

      blobs->AddLine(sbuf.Data(), value, (fArrayIndex>=0) ? 0 : topname, ns);

      break;
   }

   case kSqlArray: {
      if (fValue.Length()>0)
         blobs->AddLine(sqlio::Array, fValue.Data(), topname, ns);
      for(Int_t n=0;n<=fChilds.GetLast();n++) {
         TSQLStructure* child = (TSQLStructure*) fChilds.At(n);
         child->PerformConversion(reg, blobs, topname, useblob);
      }
      break;
   }
   }
}

//________________________________________________________________________
Bool_t TSQLStructure::StoreObject(TSqlRegistry* reg, Long64_t objid, TClass* cl, Bool_t registerobj)
{
   // convert object data to sql statements
   // if normal (columnwise) representation is not possible,
   // complete object will be converted to raw format

   if ((cl==0) || (objid<0)) return kFALSE;

   if (gDebug>1) {
      std::cout << "Store object " << objid <<" cl = " << cl->GetName() << std::endl;
      if (GetStreamerInfo()) std::cout << "Info = " << GetStreamerInfo()->GetName() << std::endl; else
         if (GetElement()) std::cout << "Element = " << GetElement()->GetName() << std::endl;
   }

   Long64_t oldid = reg->fCurrentObjId;
   TClass* oldcl = reg->fCurrentObjClass;

   reg->fCurrentObjId = objid;
   reg->fCurrentObjClass = cl;

   Bool_t normstore = kFALSE;

   Bool_t res = kTRUE;

   if (cl==TObject::Class())
      normstore = StoreTObject(reg);
   else
   if (cl==TString::Class())
      normstore = StoreTString(reg);
   else
      if (GetType()==kSqlStreamerInfo)
         // this is a case when array of objects are stored in blob and each object
         // has normal streamer. Then it will be stored in normal form and only one tag
         // will be kept to remind about
         normstore = StoreClassInNormalForm(reg);
      else
         normstore = StoreObjectInNormalForm(reg);

   if (gDebug>2)
      std::cout << "Store object " << objid << " of class " << cl->GetName() << "  normal = " << normstore << " sqltype = " << GetType() << std::endl;

   if (!normstore) {

      // This is a case, when only raw table is exists

      TSQLClassInfo* sqlinfo = reg->fFile->RequestSQLClassInfo(cl);
      TSqlRawBuffer rawdata(reg, sqlinfo);

      for(Int_t n=0;n<NumChilds();n++) {
         TSQLStructure* child = GetChild(n);
         child->PerformConversion(reg, &rawdata, 0 /*cl->GetName()*/);
      }

      res = rawdata.IsAnyData();
   }

   if (registerobj)
      reg->AddRegCmd(objid, cl);

   reg->fCurrentObjId = oldid;
   reg->fCurrentObjClass = oldcl;

   return res;
}

//________________________________________________________________________
Bool_t TSQLStructure::StoreObjectInNormalForm(TSqlRegistry* reg)
{
   // this function verify object child elements and
   // calls transformation to class table

   if (fChilds.GetLast()!=1) return kFALSE;

   TSQLStructure* s_ver = GetChild(0);

   TSQLStructure* s_info = GetChild(1);

   if (!CheckNormalClassPair(s_ver, s_info)) return kFALSE;

   return s_info->StoreClassInNormalForm(reg);
}

//________________________________________________________________________
Bool_t TSQLStructure::StoreClassInNormalForm(TSqlRegistry* reg)
{
   // produces data for complete class table
   // where not possible, raw data for some elements are created

   TClass* cl = 0;
   Version_t version = 0;
   if (!GetClassInfo(cl, version)) return kFALSE;
   if (cl==0) return kFALSE;

   TSQLClassInfo* sqlinfo = reg->fFile->RequestSQLClassInfo(cl->GetName(), version);

   TSQLTableData columns(reg->fFile, sqlinfo);
   // Bool_t needblob = kFALSE;

   TSqlRawBuffer rawdata(reg, sqlinfo);

//   Int_t currrawid = 0;

   // add first column with object id
   columns.AddColumn(reg->fFile->SQLObjectIdColumn(), reg->fCurrentObjId);

   for(Int_t n=0;n<=fChilds.GetLast();n++) {
      TSQLStructure* child = (TSQLStructure*) fChilds.At(n);
      TStreamerElement* elem = child->GetElement();

      if (elem==0) {
         Error("StoreClassInNormalForm", "CAN NOT BE");
         continue;
      }

      if (child->StoreElementInNormalForm(reg, &columns)) continue;

      Int_t columntyp = DefineElementColumnType(elem, reg->fFile);
      if ((columntyp!=kColRawData) && (columntyp!=kColObjectArray)) {
         Error("StoreClassInNormalForm","Element %s typ=%d has problem with normal store ", elem->GetName(), columntyp);
         continue;
      }


      Bool_t doblobs = kTRUE;

      Int_t blobid = rawdata.fRawId; // keep id of first raw, used in class table 

      if (columntyp==kColObjectArray)
         if (child->TryConvertObjectArray(reg, &rawdata))
            doblobs = kFALSE;

      if (doblobs)
         child->PerformConversion(reg, &rawdata, elem->GetName(), kFALSE);

      if (blobid==rawdata.fRawId) 
         blobid = -1; // no data for blob was created
      else { 
         //reg->fFile->CreateRawTable(sqlinfo);
         //blobid = currrawid; // column will contain first raw id
         //reg->ConvertBlobs(&blobs, sqlinfo, currrawid);
         //needblob = kTRUE;
      }
      //blobs.Delete();

      TString blobname = elem->GetName();
      if (reg->fFile->GetUseSuffixes())
         blobname += sqlio::RawSuffix;

      columns.AddColumn(blobname, blobid);
   }

   reg->fFile->CreateClassTable(sqlinfo, columns.TakeColInfos());

   reg->InsertToNormalTable(&columns, sqlinfo);

   return kTRUE;
}

//________________________________________________________________________
TString TSQLStructure::MakeArrayIndex(TStreamerElement* elem, Int_t index)
{
   // produce string with complete index like [1][2][0]

   TString res;
   if ((elem==0) || (elem->GetArrayLength()==0)) return res;

   for(Int_t ndim=elem->GetArrayDim()-1;ndim>=0;ndim--) {
      Int_t ix = index % elem->GetMaxIndex(ndim);
      index = index / elem->GetMaxIndex(ndim);
      TString buf;
      buf.Form("%s%d%s","[",ix,"]");
      res = buf + res;
   }
   return res;
}

//________________________________________________________________________
Bool_t TSQLStructure::StoreElementInNormalForm(TSqlRegistry* reg, TSQLTableData* columns)
{
   // tries to store element data in column

   TStreamerElement* elem = GetElement();
   if (elem==0) return kFALSE;

   Int_t typ = elem->GetType();

   Int_t columntyp = DefineElementColumnType(elem, reg->fFile);

   if (gDebug>4)
      std::cout << "Element " << elem->GetName()
           << "   type = " << typ
           << "  column = " << columntyp << std::endl;

   TString colname = DefineElementColumnName(elem, reg->fFile);

   if (columntyp==kColTString) {
      const char* value;
      if (!RecognizeTString(value)) return kFALSE;

      Int_t len = value ? strlen(value) : 0;

      Int_t sizelimit = reg->fFile->SQLSmallTextTypeLimit();

      const char* stype = reg->fFile->SQLSmallTextType();

      if (len<=sizelimit)
         columns->AddColumn(colname.Data(), stype, value, kFALSE);
      else {
         Int_t strid = reg->AddLongString(value);
         TString buf = reg->fFile->CodeLongString(reg->fCurrentObjId, strid);
         columns->AddColumn(colname.Data(), stype, buf.Data(), kFALSE);
      }

      return kTRUE;
   }

   if (columntyp==kColParent) {
      Long64_t objid = reg->fCurrentObjId;
      TClass* basecl = elem->GetClassPointer();
      Int_t resversion = basecl->GetClassVersion();
      if (!StoreObject(reg, objid, basecl, kFALSE))
         resversion = -1;
      columns->AddColumn(colname.Data(), resversion);
      return kTRUE;
   }

   if (columntyp==kColObject) {

      Long64_t objid = -1;

      if (NumChilds()==1) {
         TSQLStructure* child = GetChild(0);

         if (child->GetType()==kSqlObject) {
            objid = child->DefineObjectId(kFALSE);
            if (!child->StoreObject(reg, objid, child->GetObjectClass())) return kFALSE;
         } else
         if (child->GetType()==kSqlPointer) {
            TString sobjid = child->GetValue();
            if (sobjid.Length()>0)
               objid = sqlio::atol64(sobjid.Data());
         }
      }

      if (objid<0) {
         //std::cout << "!!!! Not standard " << elem->GetName() << " class = " << elem->GetClassPointer()->GetName() << std::endl;
         objid = reg->GetNextObjId();
         if (!StoreObject(reg, objid, elem->GetClassPointer()))
            objid = -1;  // this is a case, when no data was stored for this object
      }

      columns->AddColumn(colname.Data(), objid);
      return kTRUE;
   }

   if (columntyp==kColNormObject) {

      if (NumChilds()!=1) {
         Error("kColNormObject","NumChilds()=%d", NumChilds());
         PrintLevel(20);
         return kFALSE;
      }
      TSQLStructure* child = GetChild(0);
      if ((child->GetType()!=kSqlPointer) && (child->GetType()!=kSqlObject)) return kFALSE;

      Bool_t normal = kTRUE;

      Long64_t objid = -1;

      if (child->GetType()==kSqlObject) {
         objid = child->DefineObjectId(kFALSE); 
         normal = child->StoreObject(reg, objid, child->GetObjectClass());
      } else {
         objid = child->DefineObjectId(kFALSE);
      }

      if (!normal) {
         Error("kColNormObject","child->StoreObject fails");
         return kFALSE;
      }

      columns->AddColumn(colname.Data(), objid);
      return kTRUE;
   }

   if (columntyp==kColNormObjectArray) {
       
      if (elem->GetArrayLength()!=NumChilds()) return kFALSE;

      for (Int_t index=0;index<NumChilds();index++) {
         TSQLStructure* child = GetChild(index);
         if ((child->GetType()!=kSqlPointer) &&
             (child->GetType()!=kSqlObject)) return kFALSE;
         Bool_t normal = kTRUE;

         Long64_t objid = child->DefineObjectId(kFALSE);

         if (child->GetType()==kSqlObject)
            normal = child->StoreObject(reg, objid, child->GetObjectClass());

         if (!normal) return kFALSE;

         colname = DefineElementColumnName(elem, reg->fFile, index);

         columns->AddColumn(colname.Data(), objid);
      }
      return kTRUE;
   }

   if (columntyp==kColObjectPtr) {
      if (NumChilds()!=1) return kFALSE;
      TSQLStructure* child = GetChild(0);
      if ((child->GetType()!=kSqlPointer) && (child->GetType()!=kSqlObject)) return kFALSE;

      Bool_t normal = kTRUE;
      Long64_t objid = -1;

      if (child->GetType()==kSqlObject) {
         objid = child->DefineObjectId(kFALSE);
         normal = child->StoreObject(reg, objid, child->GetObjectClass());
      }

      if (!normal) return kFALSE;

      columns->AddColumn(colname.Data(), objid);
      return kTRUE;
   }

   if (columntyp==kColSimple) {

      // only child shoud existing for element
      if (NumChilds()!=1) {
         Error("StoreElementInNormalForm","Enexpected number %d for simple element %s", NumChilds(), elem->GetName());
         return kFALSE;
      }

      TSQLStructure* child = GetChild(0);
      if (child->GetType()!=kSqlValue) return kFALSE;

      const char* value = child->GetValue();
      if (value==0) return kFALSE;

      const char* sqltype = reg->fFile->SQLCompatibleType(typ);

      columns->AddColumn(colname.Data(), sqltype, value, IsNumericType(typ));

      return kTRUE;
   }

   if (columntyp==kColSimpleArray) {
      // number of items should be exactly equal to number of children

      if (NumChilds()!=1) {
         Error("StoreElementInNormalForm","In fixed array %s only array node should be", elem->GetName());
         return kFALSE;
      }
      TSQLStructure* arr = GetChild(0);

      const char* sqltype = reg->fFile->SQLCompatibleType(typ % 20);

      for(Int_t n=0;n<arr->NumChilds();n++) {
         TSQLStructure* child = arr->GetChild(n);
         if (child->GetType()!=kSqlValue) return kFALSE;

         const char* value = child->GetValue();
         if (value==0) return kFALSE;

         Int_t index = child->GetArrayIndex();
         Int_t last = index + child->GetRepeatCounter();

         while (index<last) {
            colname = DefineElementColumnName(elem, reg->fFile, index);
            columns->AddColumn(colname.Data(), sqltype, value, kTRUE);
            index++;
         }
      }
      return kTRUE;
   }

   return kFALSE;
}

//________________________________________________________________________
Bool_t TSQLStructure::TryConvertObjectArray(TSqlRegistry* reg, TSqlRawBuffer* blobs)
{
   // tries to write array of objects as lis of object refereneces
   // in _streamer_ table, while objects itself will be stored in
   // other tables. If not successfull, object data will be stored
   // in _streamer_ table

   TStreamerElement* elem = GetElement();
   if (elem==0) return kFALSE;

   if (NumChilds() % 2 !=0) return kFALSE;

   Int_t indx = 0;

   while (indx<NumChilds()) {
      TSQLStructure* s_ver = GetChild(indx++);
      TSQLStructure* s_info = GetChild(indx++);
      if (!CheckNormalClassPair(s_ver, s_info)) return kFALSE;
   }

   indx = 0;
   const char* ns = reg->fFile->SQLNameSeparator();

   while (indx<NumChilds()-1) {
      indx++; //TSQLStructure* s_ver = GetChild(indx++);
      TSQLStructure* s_info = GetChild(indx++);
      TClass* cl = 0;
      Version_t version = 0;
      if (!s_info->GetClassInfo(cl, version)) return kFALSE;
      Long64_t objid = reg->GetNextObjId();
      if (!s_info->StoreObject(reg, objid, cl))
         objid = -1;  // this is a case, when no data was stored for this object

      TString sobjid;
      sobjid.Form("%lld", objid);

      blobs->AddLine(sqlio::ObjectRef_Arr, sobjid.Data(), elem->GetName(), ns);
   }

   return kTRUE;
}

//________________________________________________________________________
Bool_t TSQLStructure::CheckNormalClassPair(TSQLStructure* s_ver, TSQLStructure* s_info)
{
   // check if pair of two element corresponds
   // to start of object, stored in normal form

   if ((s_ver==0) || (s_info==0) || (s_ver->GetType()!=kSqlVersion)) return kFALSE;

   TClass* ver_cl = s_ver->GetVersionClass();

   TClass* info_cl = 0;
   Version_t info_ver = 0;
   if (!s_info->GetClassInfo(info_cl, info_ver)) return kFALSE;

   if ((ver_cl==0) || (info_cl==0) || (ver_cl!=info_cl) ||
       (ver_cl->GetClassVersion()!=info_ver)) return kFALSE;

   return kTRUE;
}

//________________________________________________________________________
Bool_t TSQLStructure::StoreTObject(TSqlRegistry* reg)
{
   // store data of TObject in special table
   // workaround custom TObject streamer

   // check if it is really Looks like TObject data
   if ((NumChilds()<3) || (NumChilds()>4)) return kFALSE;

   TSQLStructure* str_ver  = GetChild(0);
   TSQLStructure* str_id   = GetChild(1);
   TSQLStructure* str_bits = GetChild(2);
   TSQLStructure* str_prid = GetChild(3);

   if (str_ver->GetType()!=kSqlVersion) return kFALSE;
   if ((str_id->GetType()!=kSqlValue) ||
       (str_id->GetValueType()!=sqlio::UInt)) return kFALSE;
   if ((str_bits->GetType()!=kSqlValue) ||
       (str_bits->GetValueType()!=sqlio::UInt)) return kFALSE;
   if (str_prid!=0)
      if ((str_prid->GetType()!=kSqlValue) ||
          (str_prid->GetValueType()!=sqlio::UShort)) return kFALSE;

   TSQLClassInfo* sqlinfo = reg->fFile->RequestSQLClassInfo(TObject::Class());

   if (sqlinfo==0) return kFALSE;

   TSQLTableData columns(reg->fFile, sqlinfo);

   const char* uinttype = reg->fFile->SQLCompatibleType(TStreamerInfo::kUInt);

   columns.AddColumn(reg->fFile->SQLObjectIdColumn(), reg->fCurrentObjId);

   columns.AddColumn(sqlio::TObjectUniqueId, uinttype, str_id->GetValue(), kTRUE);
   columns.AddColumn(sqlio::TObjectBits, uinttype, str_bits->GetValue(), kTRUE);
   columns.AddColumn(sqlio::TObjectProcessId, "CHAR(3)", (str_prid ? str_prid->GetValue() : ""), kFALSE);

   reg->fFile->CreateClassTable(sqlinfo, columns.TakeColInfos());

   reg->InsertToNormalTable(&columns, sqlinfo);

   return kTRUE;
}

//________________________________________________________________________
Bool_t TSQLStructure::StoreTString(TSqlRegistry* reg)
{
   // store data of TString in special table
   // it is required when TString stored as pointer and reference to it possible

   const char* value = 0;
   if (!RecognizeTString(value)) return kFALSE;

   TSQLClassInfo* sqlinfo = reg->fFile->RequestSQLClassInfo(TString::Class());
   if (sqlinfo==0) return kFALSE;

   TSQLTableData columns(reg->fFile, sqlinfo);

   columns.AddColumn(reg->fFile->SQLObjectIdColumn(), reg->fCurrentObjId);
   columns.AddColumn(sqlio::TStringValue, reg->fFile->SQLBigTextType(), value, kFALSE);

   reg->fFile->CreateClassTable(sqlinfo, columns.TakeColInfos());
   
   reg->InsertToNormalTable(&columns, sqlinfo);
   return kTRUE;
}

//________________________________________________________________________
Bool_t TSQLStructure::RecognizeTString(const char* &value)
{
   // prove that structure containes TString data

   value = 0;

   if ((NumChilds()==0) || (NumChilds()>3)) return kFALSE;

   TSQLStructure *len=0, *lenbig=0, *chars=0;
   for (Int_t n=0;n<NumChilds();n++) {
      TSQLStructure* curr = GetChild(n);
      if (curr->fType!=kSqlValue) return kFALSE;
      if (curr->fPointer==sqlio::UChar) {
         if (len==0) len=curr; else return kFALSE;
      } else
         if (curr->fPointer==sqlio::Int) {
            if (lenbig==0) lenbig=curr; else return kFALSE;
         } else
            if (curr->fPointer==sqlio::CharStar) {
               if (chars==0) chars=curr; else return kFALSE;
            } else return kFALSE;
   }

   if (len==0) return kFALSE;
   if ((lenbig!=0) && ((chars==0) || (len==0))) return kFALSE;

   if (chars!=0)
      value = chars->GetValue();

   return kTRUE;
}

//________________________________________________________________________
Int_t TSQLStructure::DefineElementColumnType(TStreamerElement* elem, TSQLFile* f)
{
   // defines which kind of column can be assigned for this element
   // Possible cases
   //    kColSimple       -  basic data type
   //    kColSimpleArray  -  fixed arary of basic types
   //    kColParent       -  parent class
   //    kColObject       -  object as data memeber
   //    kColObjectPtr    -  object as pointer
   //    kColTString      -  TString
   //    kColRawData      -  anything else as raw data

   if (elem==0) return kColUnknown;

   Int_t typ = elem->GetType();

   if (typ == TStreamerInfo::kMissing) return kColRawData;

   if ((typ>0) && (typ<20) &&
       (typ!=TStreamerInfo::kCharStar)) return kColSimple;

   if ((typ>TStreamerInfo::kOffsetL) &&
       (typ<TStreamerInfo::kOffsetP))
      if ((f->GetArrayLimit()<0) ||
          (elem->GetArrayLength()<=f->GetArrayLimit()))
         return kColSimpleArray;

   if (typ==TStreamerInfo::kTObject) {
      if (elem->InheritsFrom(TStreamerBase::Class()))
         return kColParent;
      else
         return kColObject;
   }

   if (typ==TStreamerInfo::kTNamed) {
      if (elem->InheritsFrom(TStreamerBase::Class()))
         return kColParent;
      else
         return kColObject;
   }

   if (typ==TStreamerInfo::kTString) return kColTString;

   if (typ==TStreamerInfo::kBase) return kColParent;

   if (typ==TStreamerInfo::kSTL)
      if (elem->InheritsFrom(TStreamerBase::Class()))
         return kColParent;

   // this is workaround
   // these two tags stored with WriteFastArray, but read with cl->Streamer()
   if ((typ==TStreamerInfo::kObject)  ||
       (typ==TStreamerInfo::kAny)) {
      if (elem->GetArrayLength()==0)
         return kColObject;
      else
         if (elem->GetStreamer()==0)
            return kColObjectArray;
   }

   if ((typ==TStreamerInfo::kObject)  ||
       (typ==TStreamerInfo::kAny) ||
       (typ==TStreamerInfo::kAnyp) ||
       (typ==TStreamerInfo::kObjectp) ||
       (typ==TStreamerInfo::kAnyP) ||
       (typ==TStreamerInfo::kObjectP)) {
      if ((elem->GetArrayLength()==0) ||
         (elem->GetStreamer()!=0))
         return kColNormObject;
      else
         return kColNormObjectArray;
   }

   if ((typ==TStreamerInfo::kObject + TStreamerInfo::kOffsetL) ||
       (typ==TStreamerInfo::kAny + TStreamerInfo::kOffsetL) ||
       (typ==TStreamerInfo::kAnyp + TStreamerInfo::kOffsetL) ||
       (typ==TStreamerInfo::kObjectp + TStreamerInfo::kOffsetL) ||
       (typ==TStreamerInfo::kAnyP + TStreamerInfo::kOffsetL) ||
       (typ==TStreamerInfo::kObjectP + TStreamerInfo::kOffsetL)) {
      if (elem->GetStreamer()!=0)
         return kColNormObject;
      else
         return kColNormObjectArray;
   }

   if ((typ==TStreamerInfo::kObject) ||
       (typ==TStreamerInfo::kAny) ||
       (typ==TStreamerInfo::kAnyp) ||
       (typ==TStreamerInfo::kObjectp) ||
       (typ==TStreamerInfo::kSTL)) {
      if (elem->GetArrayLength()==0)
         return kColObject;
      else
         if (elem->GetStreamer()==0)
            return kColObjectArray;
   }

   if (((typ==TStreamerInfo::kAnyP) ||
        (typ==TStreamerInfo::kObjectP)) &&
       (elem->GetArrayDim()==0)) return kColObjectPtr;

   //   if ((typ==TStreamerInfo::kSTLp) &&
   //       (elem->GetArrayDim()==0)) {
   //      TStreamerSTL* stl = dynamic_cast<TStreamerSTL*> (elem);
   //      if ((stl!=0) && (dynamic_cast<TStreamerSTLstring*>(elem)==0))
   //        return kColObjectPtr;
   //   }

   return kColRawData;
}

//________________________________________________________________________
TString TSQLStructure::DefineElementColumnName(TStreamerElement* elem, TSQLFile* f, Int_t indx)
{
   // returns name of the column in class table for that element

   TString colname = "";

   Int_t coltype = DefineElementColumnType(elem, f);
   if (coltype==kColUnknown) return colname;

   const char* elemname = elem->GetName();

   switch (coltype) {
   case kColSimple: {
      colname = elemname;
      if (f->GetUseSuffixes()) {
         colname+=f->SQLNameSeparator();
         colname+=GetSimpleTypeName(elem->GetType());
      }
      break;
   }

   case kColSimpleArray: {
      colname = elemname;
      colname+=MakeArrayIndex(elem, indx);
      break;
   }

   case kColParent: {
      colname = elemname;
      if (f->GetUseSuffixes())
         colname+=sqlio::ParentSuffix;
      break;
   }

   case kColNormObject: {
      colname = elemname;
      if (f->GetUseSuffixes())
         colname += sqlio::ObjectSuffix;
      break;
   }

   case kColNormObjectArray: {
      colname = elemname;
      colname+=MakeArrayIndex(elem, indx);
      if (f->GetUseSuffixes())
         colname += sqlio::ObjectSuffix;
      break;
   }

   case kColObject: {
      colname = elemname;
      if (f->GetUseSuffixes())
         colname += sqlio::ObjectSuffix;
      break;
   }

   case kColObjectPtr: {
      colname = elemname;
      if (f->GetUseSuffixes())
         colname += sqlio::PointerSuffix;
      break;
   }

   case kColTString: {
      colname = elem->GetName();
      if (f->GetUseSuffixes())
         colname+=sqlio::StrSuffix;
      break;
   }

   case kColRawData: {
      colname = elemname;
      if (f->GetUseSuffixes())
         colname += sqlio::RawSuffix;
      break;
   }

   case kColObjectArray: {
      colname = elemname;
      if (f->GetUseSuffixes())
         colname += sqlio::RawSuffix;
      break;
   }
   }

   return colname;
}

//________________________________________________________________________
Int_t TSQLStructure::LocateElementColumn(TSQLFile* f, TBufferSQL2* buf, TSQLObjectData* data)
{
   // find column in TSQLObjectData object, which correspond to current element

   TStreamerElement* elem = GetElement();
   if ((elem==0) || (data==0)) return kColUnknown;

   Int_t coltype = DefineElementColumnType(elem, f);

   if (gDebug>4)
      std::cout <<"TSQLStructure::LocateElementColumn " << elem->GetName() <<
         " coltyp = " << coltype << " : " << elem->GetType() << " len = " << elem->GetArrayLength() << std::endl;

   if (coltype==kColUnknown) return kColUnknown;

   const char* elemname = elem->GetName();
   Bool_t located = kFALSE;

   TString colname = DefineElementColumnName(elem, f);

   if (gDebug>4)
      std::cout << "         colname = " << colname << " in " <<
            data->GetInfo()->GetClassTableName() << std::endl;

   switch (coltype) {
   case kColSimple: {
      located = data->LocateColumn(colname.Data());
      break;
   }

   case kColSimpleArray: {
      located = data->LocateColumn(colname);
      break;
   }

   case kColParent: {
      located = data->LocateColumn(colname.Data());
      if (located==kColUnknown) return kColUnknown;

      Long64_t objid = DefineObjectId(kTRUE);
      const char* clname = elemname;
      Version_t version = atoi(data->GetValue());

      // this is a case, when parent store nothing in the database
      if (version<0) break;

      // special treatment for TObject
      if (strcmp(clname,TObject::Class()->GetName())==0) {
         UnpackTObject(f, buf, data, objid, version);
         break;
      }

      TSQLClassInfo* sqlinfo = f->FindSQLClassInfo(clname, version);
      if (sqlinfo==0) return kColUnknown;

      // this will indicate that streamer is completely custom
      if (sqlinfo->IsClassTableExist()) {
         data->AddUnpackInt(sqlio::Version, version);
      } else {
         TSQLObjectData* objdata = buf->SqlObjectData(objid, sqlinfo);
         if ((objdata==0) || !objdata->PrepareForRawData()) return kColUnknown;
         AddObjectData(objdata);
      }

      break;
   }

      // This is a case when streamer of object will be called directly.
      // Typically it happens when object is data memeber of the class.
      // Here we need to define class of object and if it was written by
      // normal streamer (via TStreamerInfo methods) or directly as blob.
      // When blob was used, blob data should be readed.
      // In normal case only version is required. Other object data will be
      // read by TBufferSQL2::IncrementLevel method
   case kColObject: {
      located = data->LocateColumn(colname.Data());
      if (located==kColUnknown) return located;

      const char* strobjid = data->GetValue();
      if (strobjid==0) return kColUnknown;

      Long64_t objid = sqlio::atol64(strobjid);

      // when nothing was stored, nothing need to be read. skip
      if (objid<0) break;

      TString clname;
      Version_t version;

      if (!buf->SqlObjectInfo(objid, clname, version)) return kColUnknown;

      // special treatment for TObject
      if (clname==TObject::Class()->GetName()) {
         UnpackTObject(f, buf, data, objid, version);
         break;
      }

      TSQLClassInfo* sqlinfo = f->FindSQLClassInfo(clname.Data(), version);
      if (sqlinfo==0) return kColUnknown;

      if (sqlinfo->IsClassTableExist()) {
         data->AddUnpackInt(sqlio::Version, version);
      } else {
         TSQLObjectData* objdata = buf->SqlObjectData(objid, sqlinfo);
         if ((objdata==0) || !objdata->PrepareForRawData()) return kColUnknown;
         AddObjectData(objdata);
      }

      // work around to store objid of object, which is memeber of class
      fValue = strobjid;

      break;
   }

      // this is case of pointer on any object
      // field contains objectid.
      // Object id, class of object and so on will be checked
      // when TBuffer::ReadObject method will be called
   case kColObjectPtr: {
      located = data->LocateColumn(colname.Data());
      break;
   }

   // this is case of on object which is treated normally in TBuffer
   // field should contains objectid.
   // Object id, class of object and so on will be checked
   // when TBuffer::StreamObject method will be called
   case kColNormObject: {
      located = data->LocateColumn(colname.Data());
      break;
   }

   case kColNormObjectArray: {
      located = data->LocateColumn(colname.Data());
      break;
   }

   case kColTString: {
      located = data->LocateColumn(colname);
      if (located==kColUnknown) return located;
      const char* value = data->GetValue();

      Long64_t objid = DefineObjectId(kTRUE);
      Int_t strid = f->IsLongStringCode(objid, value);

      TString buf2;

      // if special prefix found, than try get such string
      if (strid>0)
         if (f->GetLongString(objid, strid, buf2))
            value = buf2.Data();

      Int_t len = (value==0) ? 0 : strlen(value);
      if (len<255) {
         data->AddUnpackInt(sqlio::UChar, len);
      } else {
         data->AddUnpackInt(sqlio::UChar, 255);
         data->AddUnpackInt(sqlio::Int, len);
      }
      if (len>0)
         data->AddUnpack(sqlio::CharStar, value);
      break;
   }

   case kColRawData: {
      located = data->LocateColumn(colname.Data(), kTRUE);
      break;
   }

   case kColObjectArray: {
      located = data->LocateColumn(colname.Data(), kTRUE);
      break;
   }
   }

   if (!located) coltype = kColUnknown;

   return coltype;
}

//________________________________________________________________________
Bool_t TSQLStructure::UnpackTObject(TSQLFile* f, TBufferSQL2* buf, TSQLObjectData* data, Long64_t objid, Int_t clversion)
{
   // Unpack TObject data in form, understodable by custom TObject streamer

   TSQLClassInfo* sqlinfo = f->FindSQLClassInfo(TObject::Class()->GetName(), clversion);
   if (sqlinfo==0) return kFALSE;

   TSQLObjectData* tobjdata = buf->SqlObjectData(objid, sqlinfo);
   if (tobjdata==0) return kFALSE;

   data->AddUnpackInt(sqlio::Version, clversion);

   tobjdata->LocateColumn(sqlio::TObjectUniqueId);
   data->AddUnpack(sqlio::UInt, tobjdata->GetValue());
   tobjdata->ShiftToNextValue();

   tobjdata->LocateColumn(sqlio::TObjectBits);
   data->AddUnpack(sqlio::UInt, tobjdata->GetValue());
   tobjdata->ShiftToNextValue();

   tobjdata->LocateColumn(sqlio::TObjectProcessId);
   const char* value = tobjdata->GetValue();
   if ((value!=0) && (strlen(value)>0))
      data->AddUnpack(sqlio::UShort, value);

   delete tobjdata;

   return kTRUE;
}

//________________________________________________________________________
Bool_t TSQLStructure::UnpackTString(TSQLFile* f, TBufferSQL2* buf, TSQLObjectData* data, Long64_t objid, Int_t clversion)
{
   // Unpack TString data in form, understodable by custom TString streamer

   TSQLClassInfo* sqlinfo = f->FindSQLClassInfo(TString::Class()->GetName(), clversion);
   if (sqlinfo==0) return kFALSE;

   TSQLObjectData* tstringdata = buf->SqlObjectData(objid, sqlinfo);
   if (tstringdata==0) return kFALSE;

   tstringdata->LocateColumn(sqlio::TStringValue);

   const char* value = tstringdata->GetValue();

   Int_t len = (value==0) ? 0 : strlen(value);
   if (len<255) {
      data->AddUnpackInt(sqlio::UChar, len);
   } else {
      data->AddUnpackInt(sqlio::UChar, 255);
      data->AddUnpackInt(sqlio::Int, len);
   }
   if (len>0)
      data->AddUnpack(sqlio::CharStar, value);

   delete tstringdata;

   return kTRUE;
}

//________________________________________________________________________
void TSQLStructure::AddStrBrackets(TString &s, const char* quote)
{
   // adds quotes arround string value and replaces some special symbols
   if (strcmp(quote,"\"")==0) s.ReplaceAll("\"","\\\"");
                        else  s.ReplaceAll("'","''");
   s.Prepend(quote);
   s.Append(quote);
}
 TSQLStructure.cxx:1
 TSQLStructure.cxx:2
 TSQLStructure.cxx:3
 TSQLStructure.cxx:4
 TSQLStructure.cxx:5
 TSQLStructure.cxx:6
 TSQLStructure.cxx:7
 TSQLStructure.cxx:8
 TSQLStructure.cxx:9
 TSQLStructure.cxx:10
 TSQLStructure.cxx:11
 TSQLStructure.cxx:12
 TSQLStructure.cxx:13
 TSQLStructure.cxx:14
 TSQLStructure.cxx:15
 TSQLStructure.cxx:16
 TSQLStructure.cxx:17
 TSQLStructure.cxx:18
 TSQLStructure.cxx:19
 TSQLStructure.cxx:20
 TSQLStructure.cxx:21
 TSQLStructure.cxx:22
 TSQLStructure.cxx:23
 TSQLStructure.cxx:24
 TSQLStructure.cxx:25
 TSQLStructure.cxx:26
 TSQLStructure.cxx:27
 TSQLStructure.cxx:28
 TSQLStructure.cxx:29
 TSQLStructure.cxx:30
 TSQLStructure.cxx:31
 TSQLStructure.cxx:32
 TSQLStructure.cxx:33
 TSQLStructure.cxx:34
 TSQLStructure.cxx:35
 TSQLStructure.cxx:36
 TSQLStructure.cxx:37
 TSQLStructure.cxx:38
 TSQLStructure.cxx:39
 TSQLStructure.cxx:40
 TSQLStructure.cxx:41
 TSQLStructure.cxx:42
 TSQLStructure.cxx:43
 TSQLStructure.cxx:44
 TSQLStructure.cxx:45
 TSQLStructure.cxx:46
 TSQLStructure.cxx:47
 TSQLStructure.cxx:48
 TSQLStructure.cxx:49
 TSQLStructure.cxx:50
 TSQLStructure.cxx:51
 TSQLStructure.cxx:52
 TSQLStructure.cxx:53
 TSQLStructure.cxx:54
 TSQLStructure.cxx:55
 TSQLStructure.cxx:56
 TSQLStructure.cxx:57
 TSQLStructure.cxx:58
 TSQLStructure.cxx:59
 TSQLStructure.cxx:60
 TSQLStructure.cxx:61
 TSQLStructure.cxx:62
 TSQLStructure.cxx:63
 TSQLStructure.cxx:64
 TSQLStructure.cxx:65
 TSQLStructure.cxx:66
 TSQLStructure.cxx:67
 TSQLStructure.cxx:68
 TSQLStructure.cxx:69
 TSQLStructure.cxx:70
 TSQLStructure.cxx:71
 TSQLStructure.cxx:72
 TSQLStructure.cxx:73
 TSQLStructure.cxx:74
 TSQLStructure.cxx:75
 TSQLStructure.cxx:76
 TSQLStructure.cxx:77
 TSQLStructure.cxx:78
 TSQLStructure.cxx:79
 TSQLStructure.cxx:80
 TSQLStructure.cxx:81
 TSQLStructure.cxx:82
 TSQLStructure.cxx:83
 TSQLStructure.cxx:84
 TSQLStructure.cxx:85
 TSQLStructure.cxx:86
 TSQLStructure.cxx:87
 TSQLStructure.cxx:88
 TSQLStructure.cxx:89
 TSQLStructure.cxx:90
 TSQLStructure.cxx:91
 TSQLStructure.cxx:92
 TSQLStructure.cxx:93
 TSQLStructure.cxx:94
 TSQLStructure.cxx:95
 TSQLStructure.cxx:96
 TSQLStructure.cxx:97
 TSQLStructure.cxx:98
 TSQLStructure.cxx:99
 TSQLStructure.cxx:100
 TSQLStructure.cxx:101
 TSQLStructure.cxx:102
 TSQLStructure.cxx:103
 TSQLStructure.cxx:104
 TSQLStructure.cxx:105
 TSQLStructure.cxx:106
 TSQLStructure.cxx:107
 TSQLStructure.cxx:108
 TSQLStructure.cxx:109
 TSQLStructure.cxx:110
 TSQLStructure.cxx:111
 TSQLStructure.cxx:112
 TSQLStructure.cxx:113
 TSQLStructure.cxx:114
 TSQLStructure.cxx:115
 TSQLStructure.cxx:116
 TSQLStructure.cxx:117
 TSQLStructure.cxx:118
 TSQLStructure.cxx:119
 TSQLStructure.cxx:120
 TSQLStructure.cxx:121
 TSQLStructure.cxx:122
 TSQLStructure.cxx:123
 TSQLStructure.cxx:124
 TSQLStructure.cxx:125
 TSQLStructure.cxx:126
 TSQLStructure.cxx:127
 TSQLStructure.cxx:128
 TSQLStructure.cxx:129
 TSQLStructure.cxx:130
 TSQLStructure.cxx:131
 TSQLStructure.cxx:132
 TSQLStructure.cxx:133
 TSQLStructure.cxx:134
 TSQLStructure.cxx:135
 TSQLStructure.cxx:136
 TSQLStructure.cxx:137
 TSQLStructure.cxx:138
 TSQLStructure.cxx:139
 TSQLStructure.cxx:140
 TSQLStructure.cxx:141
 TSQLStructure.cxx:142
 TSQLStructure.cxx:143
 TSQLStructure.cxx:144
 TSQLStructure.cxx:145
 TSQLStructure.cxx:146
 TSQLStructure.cxx:147
 TSQLStructure.cxx:148
 TSQLStructure.cxx:149
 TSQLStructure.cxx:150
 TSQLStructure.cxx:151
 TSQLStructure.cxx:152
 TSQLStructure.cxx:153
 TSQLStructure.cxx:154
 TSQLStructure.cxx:155
 TSQLStructure.cxx:156
 TSQLStructure.cxx:157
 TSQLStructure.cxx:158
 TSQLStructure.cxx:159
 TSQLStructure.cxx:160
 TSQLStructure.cxx:161
 TSQLStructure.cxx:162
 TSQLStructure.cxx:163
 TSQLStructure.cxx:164
 TSQLStructure.cxx:165
 TSQLStructure.cxx:166
 TSQLStructure.cxx:167
 TSQLStructure.cxx:168
 TSQLStructure.cxx:169
 TSQLStructure.cxx:170
 TSQLStructure.cxx:171
 TSQLStructure.cxx:172
 TSQLStructure.cxx:173
 TSQLStructure.cxx:174
 TSQLStructure.cxx:175
 TSQLStructure.cxx:176
 TSQLStructure.cxx:177
 TSQLStructure.cxx:178
 TSQLStructure.cxx:179
 TSQLStructure.cxx:180
 TSQLStructure.cxx:181
 TSQLStructure.cxx:182
 TSQLStructure.cxx:183
 TSQLStructure.cxx:184
 TSQLStructure.cxx:185
 TSQLStructure.cxx:186
 TSQLStructure.cxx:187
 TSQLStructure.cxx:188
 TSQLStructure.cxx:189
 TSQLStructure.cxx:190
 TSQLStructure.cxx:191
 TSQLStructure.cxx:192
 TSQLStructure.cxx:193
 TSQLStructure.cxx:194
 TSQLStructure.cxx:195
 TSQLStructure.cxx:196
 TSQLStructure.cxx:197
 TSQLStructure.cxx:198
 TSQLStructure.cxx:199
 TSQLStructure.cxx:200
 TSQLStructure.cxx:201
 TSQLStructure.cxx:202
 TSQLStructure.cxx:203
 TSQLStructure.cxx:204
 TSQLStructure.cxx:205
 TSQLStructure.cxx:206
 TSQLStructure.cxx:207
 TSQLStructure.cxx:208
 TSQLStructure.cxx:209
 TSQLStructure.cxx:210
 TSQLStructure.cxx:211
 TSQLStructure.cxx:212
 TSQLStructure.cxx:213
 TSQLStructure.cxx:214
 TSQLStructure.cxx:215
 TSQLStructure.cxx:216
 TSQLStructure.cxx:217
 TSQLStructure.cxx:218
 TSQLStructure.cxx:219
 TSQLStructure.cxx:220
 TSQLStructure.cxx:221
 TSQLStructure.cxx:222
 TSQLStructure.cxx:223
 TSQLStructure.cxx:224
 TSQLStructure.cxx:225
 TSQLStructure.cxx:226
 TSQLStructure.cxx:227
 TSQLStructure.cxx:228
 TSQLStructure.cxx:229
 TSQLStructure.cxx:230
 TSQLStructure.cxx:231
 TSQLStructure.cxx:232
 TSQLStructure.cxx:233
 TSQLStructure.cxx:234
 TSQLStructure.cxx:235
 TSQLStructure.cxx:236
 TSQLStructure.cxx:237
 TSQLStructure.cxx:238
 TSQLStructure.cxx:239
 TSQLStructure.cxx:240
 TSQLStructure.cxx:241
 TSQLStructure.cxx:242
 TSQLStructure.cxx:243
 TSQLStructure.cxx:244
 TSQLStructure.cxx:245
 TSQLStructure.cxx:246
 TSQLStructure.cxx:247
 TSQLStructure.cxx:248
 TSQLStructure.cxx:249
 TSQLStructure.cxx:250
 TSQLStructure.cxx:251
 TSQLStructure.cxx:252
 TSQLStructure.cxx:253
 TSQLStructure.cxx:254
 TSQLStructure.cxx:255
 TSQLStructure.cxx:256
 TSQLStructure.cxx:257
 TSQLStructure.cxx:258
 TSQLStructure.cxx:259
 TSQLStructure.cxx:260
 TSQLStructure.cxx:261
 TSQLStructure.cxx:262
 TSQLStructure.cxx:263
 TSQLStructure.cxx:264
 TSQLStructure.cxx:265
 TSQLStructure.cxx:266
 TSQLStructure.cxx:267
 TSQLStructure.cxx:268
 TSQLStructure.cxx:269
 TSQLStructure.cxx:270
 TSQLStructure.cxx:271
 TSQLStructure.cxx:272
 TSQLStructure.cxx:273
 TSQLStructure.cxx:274
 TSQLStructure.cxx:275
 TSQLStructure.cxx:276
 TSQLStructure.cxx:277
 TSQLStructure.cxx:278
 TSQLStructure.cxx:279
 TSQLStructure.cxx:280
 TSQLStructure.cxx:281
 TSQLStructure.cxx:282
 TSQLStructure.cxx:283
 TSQLStructure.cxx:284
 TSQLStructure.cxx:285
 TSQLStructure.cxx:286
 TSQLStructure.cxx:287
 TSQLStructure.cxx:288
 TSQLStructure.cxx:289
 TSQLStructure.cxx:290
 TSQLStructure.cxx:291
 TSQLStructure.cxx:292
 TSQLStructure.cxx:293
 TSQLStructure.cxx:294
 TSQLStructure.cxx:295
 TSQLStructure.cxx:296
 TSQLStructure.cxx:297
 TSQLStructure.cxx:298
 TSQLStructure.cxx:299
 TSQLStructure.cxx:300
 TSQLStructure.cxx:301
 TSQLStructure.cxx:302
 TSQLStructure.cxx:303
 TSQLStructure.cxx:304
 TSQLStructure.cxx:305
 TSQLStructure.cxx:306
 TSQLStructure.cxx:307
 TSQLStructure.cxx:308
 TSQLStructure.cxx:309
 TSQLStructure.cxx:310
 TSQLStructure.cxx:311
 TSQLStructure.cxx:312
 TSQLStructure.cxx:313
 TSQLStructure.cxx:314
 TSQLStructure.cxx:315
 TSQLStructure.cxx:316
 TSQLStructure.cxx:317
 TSQLStructure.cxx:318
 TSQLStructure.cxx:319
 TSQLStructure.cxx:320
 TSQLStructure.cxx:321
 TSQLStructure.cxx:322
 TSQLStructure.cxx:323
 TSQLStructure.cxx:324
 TSQLStructure.cxx:325
 TSQLStructure.cxx:326
 TSQLStructure.cxx:327
 TSQLStructure.cxx:328
 TSQLStructure.cxx:329
 TSQLStructure.cxx:330
 TSQLStructure.cxx:331
 TSQLStructure.cxx:332
 TSQLStructure.cxx:333
 TSQLStructure.cxx:334
 TSQLStructure.cxx:335
 TSQLStructure.cxx:336
 TSQLStructure.cxx:337
 TSQLStructure.cxx:338
 TSQLStructure.cxx:339
 TSQLStructure.cxx:340
 TSQLStructure.cxx:341
 TSQLStructure.cxx:342
 TSQLStructure.cxx:343
 TSQLStructure.cxx:344
 TSQLStructure.cxx:345
 TSQLStructure.cxx:346
 TSQLStructure.cxx:347
 TSQLStructure.cxx:348
 TSQLStructure.cxx:349
 TSQLStructure.cxx:350
 TSQLStructure.cxx:351
 TSQLStructure.cxx:352
 TSQLStructure.cxx:353
 TSQLStructure.cxx:354
 TSQLStructure.cxx:355
 TSQLStructure.cxx:356
 TSQLStructure.cxx:357
 TSQLStructure.cxx:358
 TSQLStructure.cxx:359
 TSQLStructure.cxx:360
 TSQLStructure.cxx:361
 TSQLStructure.cxx:362
 TSQLStructure.cxx:363
 TSQLStructure.cxx:364
 TSQLStructure.cxx:365
 TSQLStructure.cxx:366
 TSQLStructure.cxx:367
 TSQLStructure.cxx:368
 TSQLStructure.cxx:369
 TSQLStructure.cxx:370
 TSQLStructure.cxx:371
 TSQLStructure.cxx:372
 TSQLStructure.cxx:373
 TSQLStructure.cxx:374
 TSQLStructure.cxx:375
 TSQLStructure.cxx:376
 TSQLStructure.cxx:377
 TSQLStructure.cxx:378
 TSQLStructure.cxx:379
 TSQLStructure.cxx:380
 TSQLStructure.cxx:381
 TSQLStructure.cxx:382
 TSQLStructure.cxx:383
 TSQLStructure.cxx:384
 TSQLStructure.cxx:385
 TSQLStructure.cxx:386
 TSQLStructure.cxx:387
 TSQLStructure.cxx:388
 TSQLStructure.cxx:389
 TSQLStructure.cxx:390
 TSQLStructure.cxx:391
 TSQLStructure.cxx:392
 TSQLStructure.cxx:393
 TSQLStructure.cxx:394
 TSQLStructure.cxx:395
 TSQLStructure.cxx:396
 TSQLStructure.cxx:397
 TSQLStructure.cxx:398
 TSQLStructure.cxx:399
 TSQLStructure.cxx:400
 TSQLStructure.cxx:401
 TSQLStructure.cxx:402
 TSQLStructure.cxx:403
 TSQLStructure.cxx:404
 TSQLStructure.cxx:405
 TSQLStructure.cxx:406
 TSQLStructure.cxx:407
 TSQLStructure.cxx:408
 TSQLStructure.cxx:409
 TSQLStructure.cxx:410
 TSQLStructure.cxx:411
 TSQLStructure.cxx:412
 TSQLStructure.cxx:413
 TSQLStructure.cxx:414
 TSQLStructure.cxx:415
 TSQLStructure.cxx:416
 TSQLStructure.cxx:417
 TSQLStructure.cxx:418
 TSQLStructure.cxx:419
 TSQLStructure.cxx:420
 TSQLStructure.cxx:421
 TSQLStructure.cxx:422
 TSQLStructure.cxx:423
 TSQLStructure.cxx:424
 TSQLStructure.cxx:425
 TSQLStructure.cxx:426
 TSQLStructure.cxx:427
 TSQLStructure.cxx:428
 TSQLStructure.cxx:429
 TSQLStructure.cxx:430
 TSQLStructure.cxx:431
 TSQLStructure.cxx:432
 TSQLStructure.cxx:433
 TSQLStructure.cxx:434
 TSQLStructure.cxx:435
 TSQLStructure.cxx:436
 TSQLStructure.cxx:437
 TSQLStructure.cxx:438
 TSQLStructure.cxx:439
 TSQLStructure.cxx:440
 TSQLStructure.cxx:441
 TSQLStructure.cxx:442
 TSQLStructure.cxx:443
 TSQLStructure.cxx:444
 TSQLStructure.cxx:445
 TSQLStructure.cxx:446
 TSQLStructure.cxx:447
 TSQLStructure.cxx:448
 TSQLStructure.cxx:449
 TSQLStructure.cxx:450
 TSQLStructure.cxx:451
 TSQLStructure.cxx:452
 TSQLStructure.cxx:453
 TSQLStructure.cxx:454
 TSQLStructure.cxx:455
 TSQLStructure.cxx:456
 TSQLStructure.cxx:457
 TSQLStructure.cxx:458
 TSQLStructure.cxx:459
 TSQLStructure.cxx:460
 TSQLStructure.cxx:461
 TSQLStructure.cxx:462
 TSQLStructure.cxx:463
 TSQLStructure.cxx:464
 TSQLStructure.cxx:465
 TSQLStructure.cxx:466
 TSQLStructure.cxx:467
 TSQLStructure.cxx:468
 TSQLStructure.cxx:469
 TSQLStructure.cxx:470
 TSQLStructure.cxx:471
 TSQLStructure.cxx:472
 TSQLStructure.cxx:473
 TSQLStructure.cxx:474
 TSQLStructure.cxx:475
 TSQLStructure.cxx:476
 TSQLStructure.cxx:477
 TSQLStructure.cxx:478
 TSQLStructure.cxx:479
 TSQLStructure.cxx:480
 TSQLStructure.cxx:481
 TSQLStructure.cxx:482
 TSQLStructure.cxx:483
 TSQLStructure.cxx:484
 TSQLStructure.cxx:485
 TSQLStructure.cxx:486
 TSQLStructure.cxx:487
 TSQLStructure.cxx:488
 TSQLStructure.cxx:489
 TSQLStructure.cxx:490
 TSQLStructure.cxx:491
 TSQLStructure.cxx:492
 TSQLStructure.cxx:493
 TSQLStructure.cxx:494
 TSQLStructure.cxx:495
 TSQLStructure.cxx:496
 TSQLStructure.cxx:497
 TSQLStructure.cxx:498
 TSQLStructure.cxx:499
 TSQLStructure.cxx:500
 TSQLStructure.cxx:501
 TSQLStructure.cxx:502
 TSQLStructure.cxx:503
 TSQLStructure.cxx:504
 TSQLStructure.cxx:505
 TSQLStructure.cxx:506
 TSQLStructure.cxx:507
 TSQLStructure.cxx:508
 TSQLStructure.cxx:509
 TSQLStructure.cxx:510
 TSQLStructure.cxx:511
 TSQLStructure.cxx:512
 TSQLStructure.cxx:513
 TSQLStructure.cxx:514
 TSQLStructure.cxx:515
 TSQLStructure.cxx:516
 TSQLStructure.cxx:517
 TSQLStructure.cxx:518
 TSQLStructure.cxx:519
 TSQLStructure.cxx:520
 TSQLStructure.cxx:521
 TSQLStructure.cxx:522
 TSQLStructure.cxx:523
 TSQLStructure.cxx:524
 TSQLStructure.cxx:525
 TSQLStructure.cxx:526
 TSQLStructure.cxx:527
 TSQLStructure.cxx:528
 TSQLStructure.cxx:529
 TSQLStructure.cxx:530
 TSQLStructure.cxx:531
 TSQLStructure.cxx:532
 TSQLStructure.cxx:533
 TSQLStructure.cxx:534
 TSQLStructure.cxx:535
 TSQLStructure.cxx:536
 TSQLStructure.cxx:537
 TSQLStructure.cxx:538
 TSQLStructure.cxx:539
 TSQLStructure.cxx:540
 TSQLStructure.cxx:541
 TSQLStructure.cxx:542
 TSQLStructure.cxx:543
 TSQLStructure.cxx:544
 TSQLStructure.cxx:545
 TSQLStructure.cxx:546
 TSQLStructure.cxx:547
 TSQLStructure.cxx:548
 TSQLStructure.cxx:549
 TSQLStructure.cxx:550
 TSQLStructure.cxx:551
 TSQLStructure.cxx:552
 TSQLStructure.cxx:553
 TSQLStructure.cxx:554
 TSQLStructure.cxx:555
 TSQLStructure.cxx:556
 TSQLStructure.cxx:557
 TSQLStructure.cxx:558
 TSQLStructure.cxx:559
 TSQLStructure.cxx:560
 TSQLStructure.cxx:561
 TSQLStructure.cxx:562
 TSQLStructure.cxx:563
 TSQLStructure.cxx:564
 TSQLStructure.cxx:565
 TSQLStructure.cxx:566
 TSQLStructure.cxx:567
 TSQLStructure.cxx:568
 TSQLStructure.cxx:569
 TSQLStructure.cxx:570
 TSQLStructure.cxx:571
 TSQLStructure.cxx:572
 TSQLStructure.cxx:573
 TSQLStructure.cxx:574
 TSQLStructure.cxx:575
 TSQLStructure.cxx:576
 TSQLStructure.cxx:577
 TSQLStructure.cxx:578
 TSQLStructure.cxx:579
 TSQLStructure.cxx:580
 TSQLStructure.cxx:581
 TSQLStructure.cxx:582
 TSQLStructure.cxx:583
 TSQLStructure.cxx:584
 TSQLStructure.cxx:585
 TSQLStructure.cxx:586
 TSQLStructure.cxx:587
 TSQLStructure.cxx:588
 TSQLStructure.cxx:589
 TSQLStructure.cxx:590
 TSQLStructure.cxx:591
 TSQLStructure.cxx:592
 TSQLStructure.cxx:593
 TSQLStructure.cxx:594
 TSQLStructure.cxx:595
 TSQLStructure.cxx:596
 TSQLStructure.cxx:597
 TSQLStructure.cxx:598
 TSQLStructure.cxx:599
 TSQLStructure.cxx:600
 TSQLStructure.cxx:601
 TSQLStructure.cxx:602
 TSQLStructure.cxx:603
 TSQLStructure.cxx:604
 TSQLStructure.cxx:605
 TSQLStructure.cxx:606
 TSQLStructure.cxx:607
 TSQLStructure.cxx:608
 TSQLStructure.cxx:609
 TSQLStructure.cxx:610
 TSQLStructure.cxx:611
 TSQLStructure.cxx:612
 TSQLStructure.cxx:613
 TSQLStructure.cxx:614
 TSQLStructure.cxx:615
 TSQLStructure.cxx:616
 TSQLStructure.cxx:617
 TSQLStructure.cxx:618
 TSQLStructure.cxx:619
 TSQLStructure.cxx:620
 TSQLStructure.cxx:621
 TSQLStructure.cxx:622
 TSQLStructure.cxx:623
 TSQLStructure.cxx:624
 TSQLStructure.cxx:625
 TSQLStructure.cxx:626
 TSQLStructure.cxx:627
 TSQLStructure.cxx:628
 TSQLStructure.cxx:629
 TSQLStructure.cxx:630
 TSQLStructure.cxx:631
 TSQLStructure.cxx:632
 TSQLStructure.cxx:633
 TSQLStructure.cxx:634
 TSQLStructure.cxx:635
 TSQLStructure.cxx:636
 TSQLStructure.cxx:637
 TSQLStructure.cxx:638
 TSQLStructure.cxx:639
 TSQLStructure.cxx:640
 TSQLStructure.cxx:641
 TSQLStructure.cxx:642
 TSQLStructure.cxx:643
 TSQLStructure.cxx:644
 TSQLStructure.cxx:645
 TSQLStructure.cxx:646
 TSQLStructure.cxx:647
 TSQLStructure.cxx:648
 TSQLStructure.cxx:649
 TSQLStructure.cxx:650
 TSQLStructure.cxx:651
 TSQLStructure.cxx:652
 TSQLStructure.cxx:653
 TSQLStructure.cxx:654
 TSQLStructure.cxx:655
 TSQLStructure.cxx:656
 TSQLStructure.cxx:657
 TSQLStructure.cxx:658
 TSQLStructure.cxx:659
 TSQLStructure.cxx:660
 TSQLStructure.cxx:661
 TSQLStructure.cxx:662
 TSQLStructure.cxx:663
 TSQLStructure.cxx:664
 TSQLStructure.cxx:665
 TSQLStructure.cxx:666
 TSQLStructure.cxx:667
 TSQLStructure.cxx:668
 TSQLStructure.cxx:669
 TSQLStructure.cxx:670
 TSQLStructure.cxx:671
 TSQLStructure.cxx:672
 TSQLStructure.cxx:673
 TSQLStructure.cxx:674
 TSQLStructure.cxx:675
 TSQLStructure.cxx:676
 TSQLStructure.cxx:677
 TSQLStructure.cxx:678
 TSQLStructure.cxx:679
 TSQLStructure.cxx:680
 TSQLStructure.cxx:681
 TSQLStructure.cxx:682
 TSQLStructure.cxx:683
 TSQLStructure.cxx:684
 TSQLStructure.cxx:685
 TSQLStructure.cxx:686
 TSQLStructure.cxx:687
 TSQLStructure.cxx:688
 TSQLStructure.cxx:689
 TSQLStructure.cxx:690
 TSQLStructure.cxx:691
 TSQLStructure.cxx:692
 TSQLStructure.cxx:693
 TSQLStructure.cxx:694
 TSQLStructure.cxx:695
 TSQLStructure.cxx:696
 TSQLStructure.cxx:697
 TSQLStructure.cxx:698
 TSQLStructure.cxx:699
 TSQLStructure.cxx:700
 TSQLStructure.cxx:701
 TSQLStructure.cxx:702
 TSQLStructure.cxx:703
 TSQLStructure.cxx:704
 TSQLStructure.cxx:705
 TSQLStructure.cxx:706
 TSQLStructure.cxx:707
 TSQLStructure.cxx:708
 TSQLStructure.cxx:709
 TSQLStructure.cxx:710
 TSQLStructure.cxx:711
 TSQLStructure.cxx:712
 TSQLStructure.cxx:713
 TSQLStructure.cxx:714
 TSQLStructure.cxx:715
 TSQLStructure.cxx:716
 TSQLStructure.cxx:717
 TSQLStructure.cxx:718
 TSQLStructure.cxx:719
 TSQLStructure.cxx:720
 TSQLStructure.cxx:721
 TSQLStructure.cxx:722
 TSQLStructure.cxx:723
 TSQLStructure.cxx:724
 TSQLStructure.cxx:725
 TSQLStructure.cxx:726
 TSQLStructure.cxx:727
 TSQLStructure.cxx:728
 TSQLStructure.cxx:729
 TSQLStructure.cxx:730
 TSQLStructure.cxx:731
 TSQLStructure.cxx:732
 TSQLStructure.cxx:733
 TSQLStructure.cxx:734
 TSQLStructure.cxx:735
 TSQLStructure.cxx:736
 TSQLStructure.cxx:737
 TSQLStructure.cxx:738
 TSQLStructure.cxx:739
 TSQLStructure.cxx:740
 TSQLStructure.cxx:741
 TSQLStructure.cxx:742
 TSQLStructure.cxx:743
 TSQLStructure.cxx:744
 TSQLStructure.cxx:745
 TSQLStructure.cxx:746
 TSQLStructure.cxx:747
 TSQLStructure.cxx:748
 TSQLStructure.cxx:749
 TSQLStructure.cxx:750
 TSQLStructure.cxx:751
 TSQLStructure.cxx:752
 TSQLStructure.cxx:753
 TSQLStructure.cxx:754
 TSQLStructure.cxx:755
 TSQLStructure.cxx:756
 TSQLStructure.cxx:757
 TSQLStructure.cxx:758
 TSQLStructure.cxx:759
 TSQLStructure.cxx:760
 TSQLStructure.cxx:761
 TSQLStructure.cxx:762
 TSQLStructure.cxx:763
 TSQLStructure.cxx:764
 TSQLStructure.cxx:765
 TSQLStructure.cxx:766
 TSQLStructure.cxx:767
 TSQLStructure.cxx:768
 TSQLStructure.cxx:769
 TSQLStructure.cxx:770
 TSQLStructure.cxx:771
 TSQLStructure.cxx:772
 TSQLStructure.cxx:773
 TSQLStructure.cxx:774
 TSQLStructure.cxx:775
 TSQLStructure.cxx:776
 TSQLStructure.cxx:777
 TSQLStructure.cxx:778
 TSQLStructure.cxx:779
 TSQLStructure.cxx:780
 TSQLStructure.cxx:781
 TSQLStructure.cxx:782
 TSQLStructure.cxx:783
 TSQLStructure.cxx:784
 TSQLStructure.cxx:785
 TSQLStructure.cxx:786
 TSQLStructure.cxx:787
 TSQLStructure.cxx:788
 TSQLStructure.cxx:789
 TSQLStructure.cxx:790
 TSQLStructure.cxx:791
 TSQLStructure.cxx:792
 TSQLStructure.cxx:793
 TSQLStructure.cxx:794
 TSQLStructure.cxx:795
 TSQLStructure.cxx:796
 TSQLStructure.cxx:797
 TSQLStructure.cxx:798
 TSQLStructure.cxx:799
 TSQLStructure.cxx:800
 TSQLStructure.cxx:801
 TSQLStructure.cxx:802
 TSQLStructure.cxx:803
 TSQLStructure.cxx:804
 TSQLStructure.cxx:805
 TSQLStructure.cxx:806
 TSQLStructure.cxx:807
 TSQLStructure.cxx:808
 TSQLStructure.cxx:809
 TSQLStructure.cxx:810
 TSQLStructure.cxx:811
 TSQLStructure.cxx:812
 TSQLStructure.cxx:813
 TSQLStructure.cxx:814
 TSQLStructure.cxx:815
 TSQLStructure.cxx:816
 TSQLStructure.cxx:817
 TSQLStructure.cxx:818
 TSQLStructure.cxx:819
 TSQLStructure.cxx:820
 TSQLStructure.cxx:821
 TSQLStructure.cxx:822
 TSQLStructure.cxx:823
 TSQLStructure.cxx:824
 TSQLStructure.cxx:825
 TSQLStructure.cxx:826
 TSQLStructure.cxx:827
 TSQLStructure.cxx:828
 TSQLStructure.cxx:829
 TSQLStructure.cxx:830
 TSQLStructure.cxx:831
 TSQLStructure.cxx:832
 TSQLStructure.cxx:833
 TSQLStructure.cxx:834
 TSQLStructure.cxx:835
 TSQLStructure.cxx:836
 TSQLStructure.cxx:837
 TSQLStructure.cxx:838
 TSQLStructure.cxx:839
 TSQLStructure.cxx:840
 TSQLStructure.cxx:841
 TSQLStructure.cxx:842
 TSQLStructure.cxx:843
 TSQLStructure.cxx:844
 TSQLStructure.cxx:845
 TSQLStructure.cxx:846
 TSQLStructure.cxx:847
 TSQLStructure.cxx:848
 TSQLStructure.cxx:849
 TSQLStructure.cxx:850
 TSQLStructure.cxx:851
 TSQLStructure.cxx:852
 TSQLStructure.cxx:853
 TSQLStructure.cxx:854
 TSQLStructure.cxx:855
 TSQLStructure.cxx:856
 TSQLStructure.cxx:857
 TSQLStructure.cxx:858
 TSQLStructure.cxx:859
 TSQLStructure.cxx:860
 TSQLStructure.cxx:861
 TSQLStructure.cxx:862
 TSQLStructure.cxx:863
 TSQLStructure.cxx:864
 TSQLStructure.cxx:865
 TSQLStructure.cxx:866
 TSQLStructure.cxx:867
 TSQLStructure.cxx:868
 TSQLStructure.cxx:869
 TSQLStructure.cxx:870
 TSQLStructure.cxx:871
 TSQLStructure.cxx:872
 TSQLStructure.cxx:873
 TSQLStructure.cxx:874
 TSQLStructure.cxx:875
 TSQLStructure.cxx:876
 TSQLStructure.cxx:877
 TSQLStructure.cxx:878
 TSQLStructure.cxx:879
 TSQLStructure.cxx:880
 TSQLStructure.cxx:881
 TSQLStructure.cxx:882
 TSQLStructure.cxx:883
 TSQLStructure.cxx:884
 TSQLStructure.cxx:885
 TSQLStructure.cxx:886
 TSQLStructure.cxx:887
 TSQLStructure.cxx:888
 TSQLStructure.cxx:889
 TSQLStructure.cxx:890
 TSQLStructure.cxx:891
 TSQLStructure.cxx:892
 TSQLStructure.cxx:893
 TSQLStructure.cxx:894
 TSQLStructure.cxx:895
 TSQLStructure.cxx:896
 TSQLStructure.cxx:897
 TSQLStructure.cxx:898
 TSQLStructure.cxx:899
 TSQLStructure.cxx:900
 TSQLStructure.cxx:901
 TSQLStructure.cxx:902
 TSQLStructure.cxx:903
 TSQLStructure.cxx:904
 TSQLStructure.cxx:905
 TSQLStructure.cxx:906
 TSQLStructure.cxx:907
 TSQLStructure.cxx:908
 TSQLStructure.cxx:909
 TSQLStructure.cxx:910
 TSQLStructure.cxx:911
 TSQLStructure.cxx:912
 TSQLStructure.cxx:913
 TSQLStructure.cxx:914
 TSQLStructure.cxx:915
 TSQLStructure.cxx:916
 TSQLStructure.cxx:917
 TSQLStructure.cxx:918
 TSQLStructure.cxx:919
 TSQLStructure.cxx:920
 TSQLStructure.cxx:921
 TSQLStructure.cxx:922
 TSQLStructure.cxx:923
 TSQLStructure.cxx:924
 TSQLStructure.cxx:925
 TSQLStructure.cxx:926
 TSQLStructure.cxx:927
 TSQLStructure.cxx:928
 TSQLStructure.cxx:929
 TSQLStructure.cxx:930
 TSQLStructure.cxx:931
 TSQLStructure.cxx:932
 TSQLStructure.cxx:933
 TSQLStructure.cxx:934
 TSQLStructure.cxx:935
 TSQLStructure.cxx:936
 TSQLStructure.cxx:937
 TSQLStructure.cxx:938
 TSQLStructure.cxx:939
 TSQLStructure.cxx:940
 TSQLStructure.cxx:941
 TSQLStructure.cxx:942
 TSQLStructure.cxx:943
 TSQLStructure.cxx:944
 TSQLStructure.cxx:945
 TSQLStructure.cxx:946
 TSQLStructure.cxx:947
 TSQLStructure.cxx:948
 TSQLStructure.cxx:949
 TSQLStructure.cxx:950
 TSQLStructure.cxx:951
 TSQLStructure.cxx:952
 TSQLStructure.cxx:953
 TSQLStructure.cxx:954
 TSQLStructure.cxx:955
 TSQLStructure.cxx:956
 TSQLStructure.cxx:957
 TSQLStructure.cxx:958
 TSQLStructure.cxx:959
 TSQLStructure.cxx:960
 TSQLStructure.cxx:961
 TSQLStructure.cxx:962
 TSQLStructure.cxx:963
 TSQLStructure.cxx:964
 TSQLStructure.cxx:965
 TSQLStructure.cxx:966
 TSQLStructure.cxx:967
 TSQLStructure.cxx:968
 TSQLStructure.cxx:969
 TSQLStructure.cxx:970
 TSQLStructure.cxx:971
 TSQLStructure.cxx:972
 TSQLStructure.cxx:973
 TSQLStructure.cxx:974
 TSQLStructure.cxx:975
 TSQLStructure.cxx:976
 TSQLStructure.cxx:977
 TSQLStructure.cxx:978
 TSQLStructure.cxx:979
 TSQLStructure.cxx:980
 TSQLStructure.cxx:981
 TSQLStructure.cxx:982
 TSQLStructure.cxx:983
 TSQLStructure.cxx:984
 TSQLStructure.cxx:985
 TSQLStructure.cxx:986
 TSQLStructure.cxx:987
 TSQLStructure.cxx:988
 TSQLStructure.cxx:989
 TSQLStructure.cxx:990
 TSQLStructure.cxx:991
 TSQLStructure.cxx:992
 TSQLStructure.cxx:993
 TSQLStructure.cxx:994
 TSQLStructure.cxx:995
 TSQLStructure.cxx:996
 TSQLStructure.cxx:997
 TSQLStructure.cxx:998
 TSQLStructure.cxx:999
 TSQLStructure.cxx:1000
 TSQLStructure.cxx:1001
 TSQLStructure.cxx:1002
 TSQLStructure.cxx:1003
 TSQLStructure.cxx:1004
 TSQLStructure.cxx:1005
 TSQLStructure.cxx:1006
 TSQLStructure.cxx:1007
 TSQLStructure.cxx:1008
 TSQLStructure.cxx:1009
 TSQLStructure.cxx:1010
 TSQLStructure.cxx:1011
 TSQLStructure.cxx:1012
 TSQLStructure.cxx:1013
 TSQLStructure.cxx:1014
 TSQLStructure.cxx:1015
 TSQLStructure.cxx:1016
 TSQLStructure.cxx:1017
 TSQLStructure.cxx:1018
 TSQLStructure.cxx:1019
 TSQLStructure.cxx:1020
 TSQLStructure.cxx:1021
 TSQLStructure.cxx:1022
 TSQLStructure.cxx:1023
 TSQLStructure.cxx:1024
 TSQLStructure.cxx:1025
 TSQLStructure.cxx:1026
 TSQLStructure.cxx:1027
 TSQLStructure.cxx:1028
 TSQLStructure.cxx:1029
 TSQLStructure.cxx:1030
 TSQLStructure.cxx:1031
 TSQLStructure.cxx:1032
 TSQLStructure.cxx:1033
 TSQLStructure.cxx:1034
 TSQLStructure.cxx:1035
 TSQLStructure.cxx:1036
 TSQLStructure.cxx:1037
 TSQLStructure.cxx:1038
 TSQLStructure.cxx:1039
 TSQLStructure.cxx:1040
 TSQLStructure.cxx:1041
 TSQLStructure.cxx:1042
 TSQLStructure.cxx:1043
 TSQLStructure.cxx:1044
 TSQLStructure.cxx:1045
 TSQLStructure.cxx:1046
 TSQLStructure.cxx:1047
 TSQLStructure.cxx:1048
 TSQLStructure.cxx:1049
 TSQLStructure.cxx:1050
 TSQLStructure.cxx:1051
 TSQLStructure.cxx:1052
 TSQLStructure.cxx:1053
 TSQLStructure.cxx:1054
 TSQLStructure.cxx:1055
 TSQLStructure.cxx:1056
 TSQLStructure.cxx:1057
 TSQLStructure.cxx:1058
 TSQLStructure.cxx:1059
 TSQLStructure.cxx:1060
 TSQLStructure.cxx:1061
 TSQLStructure.cxx:1062
 TSQLStructure.cxx:1063
 TSQLStructure.cxx:1064
 TSQLStructure.cxx:1065
 TSQLStructure.cxx:1066
 TSQLStructure.cxx:1067
 TSQLStructure.cxx:1068
 TSQLStructure.cxx:1069
 TSQLStructure.cxx:1070
 TSQLStructure.cxx:1071
 TSQLStructure.cxx:1072
 TSQLStructure.cxx:1073
 TSQLStructure.cxx:1074
 TSQLStructure.cxx:1075
 TSQLStructure.cxx:1076
 TSQLStructure.cxx:1077
 TSQLStructure.cxx:1078
 TSQLStructure.cxx:1079
 TSQLStructure.cxx:1080
 TSQLStructure.cxx:1081
 TSQLStructure.cxx:1082
 TSQLStructure.cxx:1083
 TSQLStructure.cxx:1084
 TSQLStructure.cxx:1085
 TSQLStructure.cxx:1086
 TSQLStructure.cxx:1087
 TSQLStructure.cxx:1088
 TSQLStructure.cxx:1089
 TSQLStructure.cxx:1090
 TSQLStructure.cxx:1091
 TSQLStructure.cxx:1092
 TSQLStructure.cxx:1093
 TSQLStructure.cxx:1094
 TSQLStructure.cxx:1095
 TSQLStructure.cxx:1096
 TSQLStructure.cxx:1097
 TSQLStructure.cxx:1098
 TSQLStructure.cxx:1099
 TSQLStructure.cxx:1100
 TSQLStructure.cxx:1101
 TSQLStructure.cxx:1102
 TSQLStructure.cxx:1103
 TSQLStructure.cxx:1104
 TSQLStructure.cxx:1105
 TSQLStructure.cxx:1106
 TSQLStructure.cxx:1107
 TSQLStructure.cxx:1108
 TSQLStructure.cxx:1109
 TSQLStructure.cxx:1110
 TSQLStructure.cxx:1111
 TSQLStructure.cxx:1112
 TSQLStructure.cxx:1113
 TSQLStructure.cxx:1114
 TSQLStructure.cxx:1115
 TSQLStructure.cxx:1116
 TSQLStructure.cxx:1117
 TSQLStructure.cxx:1118
 TSQLStructure.cxx:1119
 TSQLStructure.cxx:1120
 TSQLStructure.cxx:1121
 TSQLStructure.cxx:1122
 TSQLStructure.cxx:1123
 TSQLStructure.cxx:1124
 TSQLStructure.cxx:1125
 TSQLStructure.cxx:1126
 TSQLStructure.cxx:1127
 TSQLStructure.cxx:1128
 TSQLStructure.cxx:1129
 TSQLStructure.cxx:1130
 TSQLStructure.cxx:1131
 TSQLStructure.cxx:1132
 TSQLStructure.cxx:1133
 TSQLStructure.cxx:1134
 TSQLStructure.cxx:1135
 TSQLStructure.cxx:1136
 TSQLStructure.cxx:1137
 TSQLStructure.cxx:1138
 TSQLStructure.cxx:1139
 TSQLStructure.cxx:1140
 TSQLStructure.cxx:1141
 TSQLStructure.cxx:1142
 TSQLStructure.cxx:1143
 TSQLStructure.cxx:1144
 TSQLStructure.cxx:1145
 TSQLStructure.cxx:1146
 TSQLStructure.cxx:1147
 TSQLStructure.cxx:1148
 TSQLStructure.cxx:1149
 TSQLStructure.cxx:1150
 TSQLStructure.cxx:1151
 TSQLStructure.cxx:1152
 TSQLStructure.cxx:1153
 TSQLStructure.cxx:1154
 TSQLStructure.cxx:1155
 TSQLStructure.cxx:1156
 TSQLStructure.cxx:1157
 TSQLStructure.cxx:1158
 TSQLStructure.cxx:1159
 TSQLStructure.cxx:1160
 TSQLStructure.cxx:1161
 TSQLStructure.cxx:1162
 TSQLStructure.cxx:1163
 TSQLStructure.cxx:1164
 TSQLStructure.cxx:1165
 TSQLStructure.cxx:1166
 TSQLStructure.cxx:1167
 TSQLStructure.cxx:1168
 TSQLStructure.cxx:1169
 TSQLStructure.cxx:1170
 TSQLStructure.cxx:1171
 TSQLStructure.cxx:1172
 TSQLStructure.cxx:1173
 TSQLStructure.cxx:1174
 TSQLStructure.cxx:1175
 TSQLStructure.cxx:1176
 TSQLStructure.cxx:1177
 TSQLStructure.cxx:1178
 TSQLStructure.cxx:1179
 TSQLStructure.cxx:1180
 TSQLStructure.cxx:1181
 TSQLStructure.cxx:1182
 TSQLStructure.cxx:1183
 TSQLStructure.cxx:1184
 TSQLStructure.cxx:1185
 TSQLStructure.cxx:1186
 TSQLStructure.cxx:1187
 TSQLStructure.cxx:1188
 TSQLStructure.cxx:1189
 TSQLStructure.cxx:1190
 TSQLStructure.cxx:1191
 TSQLStructure.cxx:1192
 TSQLStructure.cxx:1193
 TSQLStructure.cxx:1194
 TSQLStructure.cxx:1195
 TSQLStructure.cxx:1196
 TSQLStructure.cxx:1197
 TSQLStructure.cxx:1198
 TSQLStructure.cxx:1199
 TSQLStructure.cxx:1200
 TSQLStructure.cxx:1201
 TSQLStructure.cxx:1202
 TSQLStructure.cxx:1203
 TSQLStructure.cxx:1204
 TSQLStructure.cxx:1205
 TSQLStructure.cxx:1206
 TSQLStructure.cxx:1207
 TSQLStructure.cxx:1208
 TSQLStructure.cxx:1209
 TSQLStructure.cxx:1210
 TSQLStructure.cxx:1211
 TSQLStructure.cxx:1212
 TSQLStructure.cxx:1213
 TSQLStructure.cxx:1214
 TSQLStructure.cxx:1215
 TSQLStructure.cxx:1216
 TSQLStructure.cxx:1217
 TSQLStructure.cxx:1218
 TSQLStructure.cxx:1219
 TSQLStructure.cxx:1220
 TSQLStructure.cxx:1221
 TSQLStructure.cxx:1222
 TSQLStructure.cxx:1223
 TSQLStructure.cxx:1224
 TSQLStructure.cxx:1225
 TSQLStructure.cxx:1226
 TSQLStructure.cxx:1227
 TSQLStructure.cxx:1228
 TSQLStructure.cxx:1229
 TSQLStructure.cxx:1230
 TSQLStructure.cxx:1231
 TSQLStructure.cxx:1232
 TSQLStructure.cxx:1233
 TSQLStructure.cxx:1234
 TSQLStructure.cxx:1235
 TSQLStructure.cxx:1236
 TSQLStructure.cxx:1237
 TSQLStructure.cxx:1238
 TSQLStructure.cxx:1239
 TSQLStructure.cxx:1240
 TSQLStructure.cxx:1241
 TSQLStructure.cxx:1242
 TSQLStructure.cxx:1243
 TSQLStructure.cxx:1244
 TSQLStructure.cxx:1245
 TSQLStructure.cxx:1246
 TSQLStructure.cxx:1247
 TSQLStructure.cxx:1248
 TSQLStructure.cxx:1249
 TSQLStructure.cxx:1250
 TSQLStructure.cxx:1251
 TSQLStructure.cxx:1252
 TSQLStructure.cxx:1253
 TSQLStructure.cxx:1254
 TSQLStructure.cxx:1255
 TSQLStructure.cxx:1256
 TSQLStructure.cxx:1257
 TSQLStructure.cxx:1258
 TSQLStructure.cxx:1259
 TSQLStructure.cxx:1260
 TSQLStructure.cxx:1261
 TSQLStructure.cxx:1262
 TSQLStructure.cxx:1263
 TSQLStructure.cxx:1264
 TSQLStructure.cxx:1265
 TSQLStructure.cxx:1266
 TSQLStructure.cxx:1267
 TSQLStructure.cxx:1268
 TSQLStructure.cxx:1269
 TSQLStructure.cxx:1270
 TSQLStructure.cxx:1271
 TSQLStructure.cxx:1272
 TSQLStructure.cxx:1273
 TSQLStructure.cxx:1274
 TSQLStructure.cxx:1275
 TSQLStructure.cxx:1276
 TSQLStructure.cxx:1277
 TSQLStructure.cxx:1278
 TSQLStructure.cxx:1279
 TSQLStructure.cxx:1280
 TSQLStructure.cxx:1281
 TSQLStructure.cxx:1282
 TSQLStructure.cxx:1283
 TSQLStructure.cxx:1284
 TSQLStructure.cxx:1285
 TSQLStructure.cxx:1286
 TSQLStructure.cxx:1287
 TSQLStructure.cxx:1288
 TSQLStructure.cxx:1289
 TSQLStructure.cxx:1290
 TSQLStructure.cxx:1291
 TSQLStructure.cxx:1292
 TSQLStructure.cxx:1293
 TSQLStructure.cxx:1294
 TSQLStructure.cxx:1295
 TSQLStructure.cxx:1296
 TSQLStructure.cxx:1297
 TSQLStructure.cxx:1298
 TSQLStructure.cxx:1299
 TSQLStructure.cxx:1300
 TSQLStructure.cxx:1301
 TSQLStructure.cxx:1302
 TSQLStructure.cxx:1303
 TSQLStructure.cxx:1304
 TSQLStructure.cxx:1305
 TSQLStructure.cxx:1306
 TSQLStructure.cxx:1307
 TSQLStructure.cxx:1308
 TSQLStructure.cxx:1309
 TSQLStructure.cxx:1310
 TSQLStructure.cxx:1311
 TSQLStructure.cxx:1312
 TSQLStructure.cxx:1313
 TSQLStructure.cxx:1314
 TSQLStructure.cxx:1315
 TSQLStructure.cxx:1316
 TSQLStructure.cxx:1317
 TSQLStructure.cxx:1318
 TSQLStructure.cxx:1319
 TSQLStructure.cxx:1320
 TSQLStructure.cxx:1321
 TSQLStructure.cxx:1322
 TSQLStructure.cxx:1323
 TSQLStructure.cxx:1324
 TSQLStructure.cxx:1325
 TSQLStructure.cxx:1326
 TSQLStructure.cxx:1327
 TSQLStructure.cxx:1328
 TSQLStructure.cxx:1329
 TSQLStructure.cxx:1330
 TSQLStructure.cxx:1331
 TSQLStructure.cxx:1332
 TSQLStructure.cxx:1333
 TSQLStructure.cxx:1334
 TSQLStructure.cxx:1335
 TSQLStructure.cxx:1336
 TSQLStructure.cxx:1337
 TSQLStructure.cxx:1338
 TSQLStructure.cxx:1339
 TSQLStructure.cxx:1340
 TSQLStructure.cxx:1341
 TSQLStructure.cxx:1342
 TSQLStructure.cxx:1343
 TSQLStructure.cxx:1344
 TSQLStructure.cxx:1345
 TSQLStructure.cxx:1346
 TSQLStructure.cxx:1347
 TSQLStructure.cxx:1348
 TSQLStructure.cxx:1349
 TSQLStructure.cxx:1350
 TSQLStructure.cxx:1351
 TSQLStructure.cxx:1352
 TSQLStructure.cxx:1353
 TSQLStructure.cxx:1354
 TSQLStructure.cxx:1355
 TSQLStructure.cxx:1356
 TSQLStructure.cxx:1357
 TSQLStructure.cxx:1358
 TSQLStructure.cxx:1359
 TSQLStructure.cxx:1360
 TSQLStructure.cxx:1361
 TSQLStructure.cxx:1362
 TSQLStructure.cxx:1363
 TSQLStructure.cxx:1364
 TSQLStructure.cxx:1365
 TSQLStructure.cxx:1366
 TSQLStructure.cxx:1367
 TSQLStructure.cxx:1368
 TSQLStructure.cxx:1369
 TSQLStructure.cxx:1370
 TSQLStructure.cxx:1371
 TSQLStructure.cxx:1372
 TSQLStructure.cxx:1373
 TSQLStructure.cxx:1374
 TSQLStructure.cxx:1375
 TSQLStructure.cxx:1376
 TSQLStructure.cxx:1377
 TSQLStructure.cxx:1378
 TSQLStructure.cxx:1379
 TSQLStructure.cxx:1380
 TSQLStructure.cxx:1381
 TSQLStructure.cxx:1382
 TSQLStructure.cxx:1383
 TSQLStructure.cxx:1384
 TSQLStructure.cxx:1385
 TSQLStructure.cxx:1386
 TSQLStructure.cxx:1387
 TSQLStructure.cxx:1388
 TSQLStructure.cxx:1389
 TSQLStructure.cxx:1390
 TSQLStructure.cxx:1391
 TSQLStructure.cxx:1392
 TSQLStructure.cxx:1393
 TSQLStructure.cxx:1394
 TSQLStructure.cxx:1395
 TSQLStructure.cxx:1396
 TSQLStructure.cxx:1397
 TSQLStructure.cxx:1398
 TSQLStructure.cxx:1399
 TSQLStructure.cxx:1400
 TSQLStructure.cxx:1401
 TSQLStructure.cxx:1402
 TSQLStructure.cxx:1403
 TSQLStructure.cxx:1404
 TSQLStructure.cxx:1405
 TSQLStructure.cxx:1406
 TSQLStructure.cxx:1407
 TSQLStructure.cxx:1408
 TSQLStructure.cxx:1409
 TSQLStructure.cxx:1410
 TSQLStructure.cxx:1411
 TSQLStructure.cxx:1412
 TSQLStructure.cxx:1413
 TSQLStructure.cxx:1414
 TSQLStructure.cxx:1415
 TSQLStructure.cxx:1416
 TSQLStructure.cxx:1417
 TSQLStructure.cxx:1418
 TSQLStructure.cxx:1419
 TSQLStructure.cxx:1420
 TSQLStructure.cxx:1421
 TSQLStructure.cxx:1422
 TSQLStructure.cxx:1423
 TSQLStructure.cxx:1424
 TSQLStructure.cxx:1425
 TSQLStructure.cxx:1426
 TSQLStructure.cxx:1427
 TSQLStructure.cxx:1428
 TSQLStructure.cxx:1429
 TSQLStructure.cxx:1430
 TSQLStructure.cxx:1431
 TSQLStructure.cxx:1432
 TSQLStructure.cxx:1433
 TSQLStructure.cxx:1434
 TSQLStructure.cxx:1435
 TSQLStructure.cxx:1436
 TSQLStructure.cxx:1437
 TSQLStructure.cxx:1438
 TSQLStructure.cxx:1439
 TSQLStructure.cxx:1440
 TSQLStructure.cxx:1441
 TSQLStructure.cxx:1442
 TSQLStructure.cxx:1443
 TSQLStructure.cxx:1444
 TSQLStructure.cxx:1445
 TSQLStructure.cxx:1446
 TSQLStructure.cxx:1447
 TSQLStructure.cxx:1448
 TSQLStructure.cxx:1449
 TSQLStructure.cxx:1450
 TSQLStructure.cxx:1451
 TSQLStructure.cxx:1452
 TSQLStructure.cxx:1453
 TSQLStructure.cxx:1454
 TSQLStructure.cxx:1455
 TSQLStructure.cxx:1456
 TSQLStructure.cxx:1457
 TSQLStructure.cxx:1458
 TSQLStructure.cxx:1459
 TSQLStructure.cxx:1460
 TSQLStructure.cxx:1461
 TSQLStructure.cxx:1462
 TSQLStructure.cxx:1463
 TSQLStructure.cxx:1464
 TSQLStructure.cxx:1465
 TSQLStructure.cxx:1466
 TSQLStructure.cxx:1467
 TSQLStructure.cxx:1468
 TSQLStructure.cxx:1469
 TSQLStructure.cxx:1470
 TSQLStructure.cxx:1471
 TSQLStructure.cxx:1472
 TSQLStructure.cxx:1473
 TSQLStructure.cxx:1474
 TSQLStructure.cxx:1475
 TSQLStructure.cxx:1476
 TSQLStructure.cxx:1477
 TSQLStructure.cxx:1478
 TSQLStructure.cxx:1479
 TSQLStructure.cxx:1480
 TSQLStructure.cxx:1481
 TSQLStructure.cxx:1482
 TSQLStructure.cxx:1483
 TSQLStructure.cxx:1484
 TSQLStructure.cxx:1485
 TSQLStructure.cxx:1486
 TSQLStructure.cxx:1487
 TSQLStructure.cxx:1488
 TSQLStructure.cxx:1489
 TSQLStructure.cxx:1490
 TSQLStructure.cxx:1491
 TSQLStructure.cxx:1492
 TSQLStructure.cxx:1493
 TSQLStructure.cxx:1494
 TSQLStructure.cxx:1495
 TSQLStructure.cxx:1496
 TSQLStructure.cxx:1497
 TSQLStructure.cxx:1498
 TSQLStructure.cxx:1499
 TSQLStructure.cxx:1500
 TSQLStructure.cxx:1501
 TSQLStructure.cxx:1502
 TSQLStructure.cxx:1503
 TSQLStructure.cxx:1504
 TSQLStructure.cxx:1505
 TSQLStructure.cxx:1506
 TSQLStructure.cxx:1507
 TSQLStructure.cxx:1508
 TSQLStructure.cxx:1509
 TSQLStructure.cxx:1510
 TSQLStructure.cxx:1511
 TSQLStructure.cxx:1512
 TSQLStructure.cxx:1513
 TSQLStructure.cxx:1514
 TSQLStructure.cxx:1515
 TSQLStructure.cxx:1516
 TSQLStructure.cxx:1517
 TSQLStructure.cxx:1518
 TSQLStructure.cxx:1519
 TSQLStructure.cxx:1520
 TSQLStructure.cxx:1521
 TSQLStructure.cxx:1522
 TSQLStructure.cxx:1523
 TSQLStructure.cxx:1524
 TSQLStructure.cxx:1525
 TSQLStructure.cxx:1526
 TSQLStructure.cxx:1527
 TSQLStructure.cxx:1528
 TSQLStructure.cxx:1529
 TSQLStructure.cxx:1530
 TSQLStructure.cxx:1531
 TSQLStructure.cxx:1532
 TSQLStructure.cxx:1533
 TSQLStructure.cxx:1534
 TSQLStructure.cxx:1535
 TSQLStructure.cxx:1536
 TSQLStructure.cxx:1537
 TSQLStructure.cxx:1538
 TSQLStructure.cxx:1539
 TSQLStructure.cxx:1540
 TSQLStructure.cxx:1541
 TSQLStructure.cxx:1542
 TSQLStructure.cxx:1543
 TSQLStructure.cxx:1544
 TSQLStructure.cxx:1545
 TSQLStructure.cxx:1546
 TSQLStructure.cxx:1547
 TSQLStructure.cxx:1548
 TSQLStructure.cxx:1549
 TSQLStructure.cxx:1550
 TSQLStructure.cxx:1551
 TSQLStructure.cxx:1552
 TSQLStructure.cxx:1553
 TSQLStructure.cxx:1554
 TSQLStructure.cxx:1555
 TSQLStructure.cxx:1556
 TSQLStructure.cxx:1557
 TSQLStructure.cxx:1558
 TSQLStructure.cxx:1559
 TSQLStructure.cxx:1560
 TSQLStructure.cxx:1561
 TSQLStructure.cxx:1562
 TSQLStructure.cxx:1563
 TSQLStructure.cxx:1564
 TSQLStructure.cxx:1565
 TSQLStructure.cxx:1566
 TSQLStructure.cxx:1567
 TSQLStructure.cxx:1568
 TSQLStructure.cxx:1569
 TSQLStructure.cxx:1570
 TSQLStructure.cxx:1571
 TSQLStructure.cxx:1572
 TSQLStructure.cxx:1573
 TSQLStructure.cxx:1574
 TSQLStructure.cxx:1575
 TSQLStructure.cxx:1576
 TSQLStructure.cxx:1577
 TSQLStructure.cxx:1578
 TSQLStructure.cxx:1579
 TSQLStructure.cxx:1580
 TSQLStructure.cxx:1581
 TSQLStructure.cxx:1582
 TSQLStructure.cxx:1583
 TSQLStructure.cxx:1584
 TSQLStructure.cxx:1585
 TSQLStructure.cxx:1586
 TSQLStructure.cxx:1587
 TSQLStructure.cxx:1588
 TSQLStructure.cxx:1589
 TSQLStructure.cxx:1590
 TSQLStructure.cxx:1591
 TSQLStructure.cxx:1592
 TSQLStructure.cxx:1593
 TSQLStructure.cxx:1594
 TSQLStructure.cxx:1595
 TSQLStructure.cxx:1596
 TSQLStructure.cxx:1597
 TSQLStructure.cxx:1598
 TSQLStructure.cxx:1599
 TSQLStructure.cxx:1600
 TSQLStructure.cxx:1601
 TSQLStructure.cxx:1602
 TSQLStructure.cxx:1603
 TSQLStructure.cxx:1604
 TSQLStructure.cxx:1605
 TSQLStructure.cxx:1606
 TSQLStructure.cxx:1607
 TSQLStructure.cxx:1608
 TSQLStructure.cxx:1609
 TSQLStructure.cxx:1610
 TSQLStructure.cxx:1611
 TSQLStructure.cxx:1612
 TSQLStructure.cxx:1613
 TSQLStructure.cxx:1614
 TSQLStructure.cxx:1615
 TSQLStructure.cxx:1616
 TSQLStructure.cxx:1617
 TSQLStructure.cxx:1618
 TSQLStructure.cxx:1619
 TSQLStructure.cxx:1620
 TSQLStructure.cxx:1621
 TSQLStructure.cxx:1622
 TSQLStructure.cxx:1623
 TSQLStructure.cxx:1624
 TSQLStructure.cxx:1625
 TSQLStructure.cxx:1626
 TSQLStructure.cxx:1627
 TSQLStructure.cxx:1628
 TSQLStructure.cxx:1629
 TSQLStructure.cxx:1630
 TSQLStructure.cxx:1631
 TSQLStructure.cxx:1632
 TSQLStructure.cxx:1633
 TSQLStructure.cxx:1634
 TSQLStructure.cxx:1635
 TSQLStructure.cxx:1636
 TSQLStructure.cxx:1637
 TSQLStructure.cxx:1638
 TSQLStructure.cxx:1639
 TSQLStructure.cxx:1640
 TSQLStructure.cxx:1641
 TSQLStructure.cxx:1642
 TSQLStructure.cxx:1643
 TSQLStructure.cxx:1644
 TSQLStructure.cxx:1645
 TSQLStructure.cxx:1646
 TSQLStructure.cxx:1647
 TSQLStructure.cxx:1648
 TSQLStructure.cxx:1649
 TSQLStructure.cxx:1650
 TSQLStructure.cxx:1651
 TSQLStructure.cxx:1652
 TSQLStructure.cxx:1653
 TSQLStructure.cxx:1654
 TSQLStructure.cxx:1655
 TSQLStructure.cxx:1656
 TSQLStructure.cxx:1657
 TSQLStructure.cxx:1658
 TSQLStructure.cxx:1659
 TSQLStructure.cxx:1660
 TSQLStructure.cxx:1661
 TSQLStructure.cxx:1662
 TSQLStructure.cxx:1663
 TSQLStructure.cxx:1664
 TSQLStructure.cxx:1665
 TSQLStructure.cxx:1666
 TSQLStructure.cxx:1667
 TSQLStructure.cxx:1668
 TSQLStructure.cxx:1669
 TSQLStructure.cxx:1670
 TSQLStructure.cxx:1671
 TSQLStructure.cxx:1672
 TSQLStructure.cxx:1673
 TSQLStructure.cxx:1674
 TSQLStructure.cxx:1675
 TSQLStructure.cxx:1676
 TSQLStructure.cxx:1677
 TSQLStructure.cxx:1678
 TSQLStructure.cxx:1679
 TSQLStructure.cxx:1680
 TSQLStructure.cxx:1681
 TSQLStructure.cxx:1682
 TSQLStructure.cxx:1683
 TSQLStructure.cxx:1684
 TSQLStructure.cxx:1685
 TSQLStructure.cxx:1686
 TSQLStructure.cxx:1687
 TSQLStructure.cxx:1688
 TSQLStructure.cxx:1689
 TSQLStructure.cxx:1690
 TSQLStructure.cxx:1691
 TSQLStructure.cxx:1692
 TSQLStructure.cxx:1693
 TSQLStructure.cxx:1694
 TSQLStructure.cxx:1695
 TSQLStructure.cxx:1696
 TSQLStructure.cxx:1697
 TSQLStructure.cxx:1698
 TSQLStructure.cxx:1699
 TSQLStructure.cxx:1700
 TSQLStructure.cxx:1701
 TSQLStructure.cxx:1702
 TSQLStructure.cxx:1703
 TSQLStructure.cxx:1704
 TSQLStructure.cxx:1705
 TSQLStructure.cxx:1706
 TSQLStructure.cxx:1707
 TSQLStructure.cxx:1708
 TSQLStructure.cxx:1709
 TSQLStructure.cxx:1710
 TSQLStructure.cxx:1711
 TSQLStructure.cxx:1712
 TSQLStructure.cxx:1713
 TSQLStructure.cxx:1714
 TSQLStructure.cxx:1715
 TSQLStructure.cxx:1716
 TSQLStructure.cxx:1717
 TSQLStructure.cxx:1718
 TSQLStructure.cxx:1719
 TSQLStructure.cxx:1720
 TSQLStructure.cxx:1721
 TSQLStructure.cxx:1722
 TSQLStructure.cxx:1723
 TSQLStructure.cxx:1724
 TSQLStructure.cxx:1725
 TSQLStructure.cxx:1726
 TSQLStructure.cxx:1727
 TSQLStructure.cxx:1728
 TSQLStructure.cxx:1729
 TSQLStructure.cxx:1730
 TSQLStructure.cxx:1731
 TSQLStructure.cxx:1732
 TSQLStructure.cxx:1733
 TSQLStructure.cxx:1734
 TSQLStructure.cxx:1735
 TSQLStructure.cxx:1736
 TSQLStructure.cxx:1737
 TSQLStructure.cxx:1738
 TSQLStructure.cxx:1739
 TSQLStructure.cxx:1740
 TSQLStructure.cxx:1741
 TSQLStructure.cxx:1742
 TSQLStructure.cxx:1743
 TSQLStructure.cxx:1744
 TSQLStructure.cxx:1745
 TSQLStructure.cxx:1746
 TSQLStructure.cxx:1747
 TSQLStructure.cxx:1748
 TSQLStructure.cxx:1749
 TSQLStructure.cxx:1750
 TSQLStructure.cxx:1751
 TSQLStructure.cxx:1752
 TSQLStructure.cxx:1753
 TSQLStructure.cxx:1754
 TSQLStructure.cxx:1755
 TSQLStructure.cxx:1756
 TSQLStructure.cxx:1757
 TSQLStructure.cxx:1758
 TSQLStructure.cxx:1759
 TSQLStructure.cxx:1760
 TSQLStructure.cxx:1761
 TSQLStructure.cxx:1762
 TSQLStructure.cxx:1763
 TSQLStructure.cxx:1764
 TSQLStructure.cxx:1765
 TSQLStructure.cxx:1766
 TSQLStructure.cxx:1767
 TSQLStructure.cxx:1768
 TSQLStructure.cxx:1769
 TSQLStructure.cxx:1770
 TSQLStructure.cxx:1771
 TSQLStructure.cxx:1772
 TSQLStructure.cxx:1773
 TSQLStructure.cxx:1774
 TSQLStructure.cxx:1775
 TSQLStructure.cxx:1776
 TSQLStructure.cxx:1777
 TSQLStructure.cxx:1778
 TSQLStructure.cxx:1779
 TSQLStructure.cxx:1780
 TSQLStructure.cxx:1781
 TSQLStructure.cxx:1782
 TSQLStructure.cxx:1783
 TSQLStructure.cxx:1784
 TSQLStructure.cxx:1785
 TSQLStructure.cxx:1786
 TSQLStructure.cxx:1787
 TSQLStructure.cxx:1788
 TSQLStructure.cxx:1789
 TSQLStructure.cxx:1790
 TSQLStructure.cxx:1791
 TSQLStructure.cxx:1792
 TSQLStructure.cxx:1793
 TSQLStructure.cxx:1794
 TSQLStructure.cxx:1795
 TSQLStructure.cxx:1796
 TSQLStructure.cxx:1797
 TSQLStructure.cxx:1798
 TSQLStructure.cxx:1799
 TSQLStructure.cxx:1800
 TSQLStructure.cxx:1801
 TSQLStructure.cxx:1802
 TSQLStructure.cxx:1803
 TSQLStructure.cxx:1804
 TSQLStructure.cxx:1805
 TSQLStructure.cxx:1806
 TSQLStructure.cxx:1807
 TSQLStructure.cxx:1808
 TSQLStructure.cxx:1809
 TSQLStructure.cxx:1810
 TSQLStructure.cxx:1811
 TSQLStructure.cxx:1812
 TSQLStructure.cxx:1813
 TSQLStructure.cxx:1814
 TSQLStructure.cxx:1815
 TSQLStructure.cxx:1816
 TSQLStructure.cxx:1817
 TSQLStructure.cxx:1818
 TSQLStructure.cxx:1819
 TSQLStructure.cxx:1820
 TSQLStructure.cxx:1821
 TSQLStructure.cxx:1822
 TSQLStructure.cxx:1823
 TSQLStructure.cxx:1824
 TSQLStructure.cxx:1825
 TSQLStructure.cxx:1826
 TSQLStructure.cxx:1827
 TSQLStructure.cxx:1828
 TSQLStructure.cxx:1829
 TSQLStructure.cxx:1830
 TSQLStructure.cxx:1831
 TSQLStructure.cxx:1832
 TSQLStructure.cxx:1833
 TSQLStructure.cxx:1834
 TSQLStructure.cxx:1835
 TSQLStructure.cxx:1836
 TSQLStructure.cxx:1837
 TSQLStructure.cxx:1838
 TSQLStructure.cxx:1839
 TSQLStructure.cxx:1840
 TSQLStructure.cxx:1841
 TSQLStructure.cxx:1842
 TSQLStructure.cxx:1843
 TSQLStructure.cxx:1844
 TSQLStructure.cxx:1845
 TSQLStructure.cxx:1846
 TSQLStructure.cxx:1847
 TSQLStructure.cxx:1848
 TSQLStructure.cxx:1849
 TSQLStructure.cxx:1850
 TSQLStructure.cxx:1851
 TSQLStructure.cxx:1852
 TSQLStructure.cxx:1853
 TSQLStructure.cxx:1854
 TSQLStructure.cxx:1855
 TSQLStructure.cxx:1856
 TSQLStructure.cxx:1857
 TSQLStructure.cxx:1858
 TSQLStructure.cxx:1859
 TSQLStructure.cxx:1860
 TSQLStructure.cxx:1861
 TSQLStructure.cxx:1862
 TSQLStructure.cxx:1863
 TSQLStructure.cxx:1864
 TSQLStructure.cxx:1865
 TSQLStructure.cxx:1866
 TSQLStructure.cxx:1867
 TSQLStructure.cxx:1868
 TSQLStructure.cxx:1869
 TSQLStructure.cxx:1870
 TSQLStructure.cxx:1871
 TSQLStructure.cxx:1872
 TSQLStructure.cxx:1873
 TSQLStructure.cxx:1874
 TSQLStructure.cxx:1875
 TSQLStructure.cxx:1876
 TSQLStructure.cxx:1877
 TSQLStructure.cxx:1878
 TSQLStructure.cxx:1879
 TSQLStructure.cxx:1880
 TSQLStructure.cxx:1881
 TSQLStructure.cxx:1882
 TSQLStructure.cxx:1883
 TSQLStructure.cxx:1884
 TSQLStructure.cxx:1885
 TSQLStructure.cxx:1886
 TSQLStructure.cxx:1887
 TSQLStructure.cxx:1888
 TSQLStructure.cxx:1889
 TSQLStructure.cxx:1890
 TSQLStructure.cxx:1891
 TSQLStructure.cxx:1892
 TSQLStructure.cxx:1893
 TSQLStructure.cxx:1894
 TSQLStructure.cxx:1895
 TSQLStructure.cxx:1896
 TSQLStructure.cxx:1897
 TSQLStructure.cxx:1898
 TSQLStructure.cxx:1899
 TSQLStructure.cxx:1900
 TSQLStructure.cxx:1901
 TSQLStructure.cxx:1902
 TSQLStructure.cxx:1903
 TSQLStructure.cxx:1904
 TSQLStructure.cxx:1905
 TSQLStructure.cxx:1906
 TSQLStructure.cxx:1907
 TSQLStructure.cxx:1908
 TSQLStructure.cxx:1909
 TSQLStructure.cxx:1910
 TSQLStructure.cxx:1911
 TSQLStructure.cxx:1912
 TSQLStructure.cxx:1913
 TSQLStructure.cxx:1914
 TSQLStructure.cxx:1915
 TSQLStructure.cxx:1916
 TSQLStructure.cxx:1917
 TSQLStructure.cxx:1918
 TSQLStructure.cxx:1919
 TSQLStructure.cxx:1920
 TSQLStructure.cxx:1921
 TSQLStructure.cxx:1922
 TSQLStructure.cxx:1923
 TSQLStructure.cxx:1924
 TSQLStructure.cxx:1925
 TSQLStructure.cxx:1926
 TSQLStructure.cxx:1927
 TSQLStructure.cxx:1928
 TSQLStructure.cxx:1929
 TSQLStructure.cxx:1930
 TSQLStructure.cxx:1931
 TSQLStructure.cxx:1932
 TSQLStructure.cxx:1933
 TSQLStructure.cxx:1934
 TSQLStructure.cxx:1935
 TSQLStructure.cxx:1936
 TSQLStructure.cxx:1937
 TSQLStructure.cxx:1938
 TSQLStructure.cxx:1939
 TSQLStructure.cxx:1940
 TSQLStructure.cxx:1941
 TSQLStructure.cxx:1942
 TSQLStructure.cxx:1943
 TSQLStructure.cxx:1944
 TSQLStructure.cxx:1945
 TSQLStructure.cxx:1946
 TSQLStructure.cxx:1947
 TSQLStructure.cxx:1948
 TSQLStructure.cxx:1949
 TSQLStructure.cxx:1950
 TSQLStructure.cxx:1951
 TSQLStructure.cxx:1952
 TSQLStructure.cxx:1953
 TSQLStructure.cxx:1954
 TSQLStructure.cxx:1955
 TSQLStructure.cxx:1956
 TSQLStructure.cxx:1957
 TSQLStructure.cxx:1958
 TSQLStructure.cxx:1959
 TSQLStructure.cxx:1960
 TSQLStructure.cxx:1961
 TSQLStructure.cxx:1962
 TSQLStructure.cxx:1963
 TSQLStructure.cxx:1964
 TSQLStructure.cxx:1965
 TSQLStructure.cxx:1966
 TSQLStructure.cxx:1967
 TSQLStructure.cxx:1968
 TSQLStructure.cxx:1969
 TSQLStructure.cxx:1970
 TSQLStructure.cxx:1971
 TSQLStructure.cxx:1972
 TSQLStructure.cxx:1973
 TSQLStructure.cxx:1974
 TSQLStructure.cxx:1975
 TSQLStructure.cxx:1976
 TSQLStructure.cxx:1977
 TSQLStructure.cxx:1978
 TSQLStructure.cxx:1979
 TSQLStructure.cxx:1980
 TSQLStructure.cxx:1981
 TSQLStructure.cxx:1982
 TSQLStructure.cxx:1983
 TSQLStructure.cxx:1984
 TSQLStructure.cxx:1985
 TSQLStructure.cxx:1986
 TSQLStructure.cxx:1987
 TSQLStructure.cxx:1988
 TSQLStructure.cxx:1989
 TSQLStructure.cxx:1990
 TSQLStructure.cxx:1991
 TSQLStructure.cxx:1992
 TSQLStructure.cxx:1993
 TSQLStructure.cxx:1994
 TSQLStructure.cxx:1995
 TSQLStructure.cxx:1996
 TSQLStructure.cxx:1997
 TSQLStructure.cxx:1998
 TSQLStructure.cxx:1999
 TSQLStructure.cxx:2000
 TSQLStructure.cxx:2001
 TSQLStructure.cxx:2002
 TSQLStructure.cxx:2003
 TSQLStructure.cxx:2004
 TSQLStructure.cxx:2005
 TSQLStructure.cxx:2006
 TSQLStructure.cxx:2007
 TSQLStructure.cxx:2008
 TSQLStructure.cxx:2009
 TSQLStructure.cxx:2010
 TSQLStructure.cxx:2011
 TSQLStructure.cxx:2012
 TSQLStructure.cxx:2013
 TSQLStructure.cxx:2014
 TSQLStructure.cxx:2015
 TSQLStructure.cxx:2016
 TSQLStructure.cxx:2017
 TSQLStructure.cxx:2018
 TSQLStructure.cxx:2019
 TSQLStructure.cxx:2020
 TSQLStructure.cxx:2021
 TSQLStructure.cxx:2022
 TSQLStructure.cxx:2023
 TSQLStructure.cxx:2024
 TSQLStructure.cxx:2025
 TSQLStructure.cxx:2026
 TSQLStructure.cxx:2027
 TSQLStructure.cxx:2028
 TSQLStructure.cxx:2029
 TSQLStructure.cxx:2030
 TSQLStructure.cxx:2031
 TSQLStructure.cxx:2032
 TSQLStructure.cxx:2033
 TSQLStructure.cxx:2034
 TSQLStructure.cxx:2035
 TSQLStructure.cxx:2036
 TSQLStructure.cxx:2037
 TSQLStructure.cxx:2038
 TSQLStructure.cxx:2039
 TSQLStructure.cxx:2040
 TSQLStructure.cxx:2041
 TSQLStructure.cxx:2042
 TSQLStructure.cxx:2043
 TSQLStructure.cxx:2044
 TSQLStructure.cxx:2045
 TSQLStructure.cxx:2046
 TSQLStructure.cxx:2047
 TSQLStructure.cxx:2048
 TSQLStructure.cxx:2049
 TSQLStructure.cxx:2050
 TSQLStructure.cxx:2051
 TSQLStructure.cxx:2052
 TSQLStructure.cxx:2053
 TSQLStructure.cxx:2054
 TSQLStructure.cxx:2055
 TSQLStructure.cxx:2056
 TSQLStructure.cxx:2057
 TSQLStructure.cxx:2058
 TSQLStructure.cxx:2059
 TSQLStructure.cxx:2060
 TSQLStructure.cxx:2061
 TSQLStructure.cxx:2062
 TSQLStructure.cxx:2063
 TSQLStructure.cxx:2064
 TSQLStructure.cxx:2065
 TSQLStructure.cxx:2066
 TSQLStructure.cxx:2067
 TSQLStructure.cxx:2068
 TSQLStructure.cxx:2069
 TSQLStructure.cxx:2070
 TSQLStructure.cxx:2071
 TSQLStructure.cxx:2072
 TSQLStructure.cxx:2073
 TSQLStructure.cxx:2074
 TSQLStructure.cxx:2075
 TSQLStructure.cxx:2076
 TSQLStructure.cxx:2077
 TSQLStructure.cxx:2078
 TSQLStructure.cxx:2079
 TSQLStructure.cxx:2080
 TSQLStructure.cxx:2081
 TSQLStructure.cxx:2082
 TSQLStructure.cxx:2083
 TSQLStructure.cxx:2084
 TSQLStructure.cxx:2085
 TSQLStructure.cxx:2086
 TSQLStructure.cxx:2087
 TSQLStructure.cxx:2088
 TSQLStructure.cxx:2089
 TSQLStructure.cxx:2090
 TSQLStructure.cxx:2091
 TSQLStructure.cxx:2092
 TSQLStructure.cxx:2093
 TSQLStructure.cxx:2094
 TSQLStructure.cxx:2095
 TSQLStructure.cxx:2096
 TSQLStructure.cxx:2097
 TSQLStructure.cxx:2098
 TSQLStructure.cxx:2099
 TSQLStructure.cxx:2100
 TSQLStructure.cxx:2101
 TSQLStructure.cxx:2102
 TSQLStructure.cxx:2103
 TSQLStructure.cxx:2104
 TSQLStructure.cxx:2105
 TSQLStructure.cxx:2106
 TSQLStructure.cxx:2107
 TSQLStructure.cxx:2108
 TSQLStructure.cxx:2109
 TSQLStructure.cxx:2110
 TSQLStructure.cxx:2111
 TSQLStructure.cxx:2112
 TSQLStructure.cxx:2113
 TSQLStructure.cxx:2114
 TSQLStructure.cxx:2115
 TSQLStructure.cxx:2116
 TSQLStructure.cxx:2117
 TSQLStructure.cxx:2118
 TSQLStructure.cxx:2119
 TSQLStructure.cxx:2120
 TSQLStructure.cxx:2121
 TSQLStructure.cxx:2122
 TSQLStructure.cxx:2123
 TSQLStructure.cxx:2124
 TSQLStructure.cxx:2125
 TSQLStructure.cxx:2126
 TSQLStructure.cxx:2127
 TSQLStructure.cxx:2128
 TSQLStructure.cxx:2129
 TSQLStructure.cxx:2130
 TSQLStructure.cxx:2131
 TSQLStructure.cxx:2132
 TSQLStructure.cxx:2133
 TSQLStructure.cxx:2134
 TSQLStructure.cxx:2135
 TSQLStructure.cxx:2136
 TSQLStructure.cxx:2137
 TSQLStructure.cxx:2138
 TSQLStructure.cxx:2139
 TSQLStructure.cxx:2140
 TSQLStructure.cxx:2141
 TSQLStructure.cxx:2142
 TSQLStructure.cxx:2143
 TSQLStructure.cxx:2144
 TSQLStructure.cxx:2145
 TSQLStructure.cxx:2146
 TSQLStructure.cxx:2147
 TSQLStructure.cxx:2148
 TSQLStructure.cxx:2149
 TSQLStructure.cxx:2150
 TSQLStructure.cxx:2151
 TSQLStructure.cxx:2152
 TSQLStructure.cxx:2153
 TSQLStructure.cxx:2154
 TSQLStructure.cxx:2155
 TSQLStructure.cxx:2156
 TSQLStructure.cxx:2157
 TSQLStructure.cxx:2158
 TSQLStructure.cxx:2159
 TSQLStructure.cxx:2160
 TSQLStructure.cxx:2161
 TSQLStructure.cxx:2162
 TSQLStructure.cxx:2163
 TSQLStructure.cxx:2164
 TSQLStructure.cxx:2165
 TSQLStructure.cxx:2166
 TSQLStructure.cxx:2167
 TSQLStructure.cxx:2168
 TSQLStructure.cxx:2169
 TSQLStructure.cxx:2170
 TSQLStructure.cxx:2171
 TSQLStructure.cxx:2172
 TSQLStructure.cxx:2173
 TSQLStructure.cxx:2174
 TSQLStructure.cxx:2175
 TSQLStructure.cxx:2176
 TSQLStructure.cxx:2177
 TSQLStructure.cxx:2178
 TSQLStructure.cxx:2179
 TSQLStructure.cxx:2180
 TSQLStructure.cxx:2181
 TSQLStructure.cxx:2182
 TSQLStructure.cxx:2183
 TSQLStructure.cxx:2184
 TSQLStructure.cxx:2185
 TSQLStructure.cxx:2186
 TSQLStructure.cxx:2187
 TSQLStructure.cxx:2188
 TSQLStructure.cxx:2189
 TSQLStructure.cxx:2190
 TSQLStructure.cxx:2191
 TSQLStructure.cxx:2192
 TSQLStructure.cxx:2193
 TSQLStructure.cxx:2194
 TSQLStructure.cxx:2195
 TSQLStructure.cxx:2196
 TSQLStructure.cxx:2197
 TSQLStructure.cxx:2198
 TSQLStructure.cxx:2199
 TSQLStructure.cxx:2200
 TSQLStructure.cxx:2201
 TSQLStructure.cxx:2202
 TSQLStructure.cxx:2203
 TSQLStructure.cxx:2204
 TSQLStructure.cxx:2205
 TSQLStructure.cxx:2206
 TSQLStructure.cxx:2207
 TSQLStructure.cxx:2208
 TSQLStructure.cxx:2209
 TSQLStructure.cxx:2210
 TSQLStructure.cxx:2211
 TSQLStructure.cxx:2212
 TSQLStructure.cxx:2213
 TSQLStructure.cxx:2214
 TSQLStructure.cxx:2215
 TSQLStructure.cxx:2216
 TSQLStructure.cxx:2217
 TSQLStructure.cxx:2218
 TSQLStructure.cxx:2219
 TSQLStructure.cxx:2220
 TSQLStructure.cxx:2221
 TSQLStructure.cxx:2222
 TSQLStructure.cxx:2223
 TSQLStructure.cxx:2224
 TSQLStructure.cxx:2225
 TSQLStructure.cxx:2226
 TSQLStructure.cxx:2227
 TSQLStructure.cxx:2228
 TSQLStructure.cxx:2229
 TSQLStructure.cxx:2230
 TSQLStructure.cxx:2231
 TSQLStructure.cxx:2232
 TSQLStructure.cxx:2233
 TSQLStructure.cxx:2234
 TSQLStructure.cxx:2235
 TSQLStructure.cxx:2236
 TSQLStructure.cxx:2237
 TSQLStructure.cxx:2238
 TSQLStructure.cxx:2239
 TSQLStructure.cxx:2240
 TSQLStructure.cxx:2241
 TSQLStructure.cxx:2242
 TSQLStructure.cxx:2243
 TSQLStructure.cxx:2244
 TSQLStructure.cxx:2245
 TSQLStructure.cxx:2246
 TSQLStructure.cxx:2247
 TSQLStructure.cxx:2248
 TSQLStructure.cxx:2249
 TSQLStructure.cxx:2250
 TSQLStructure.cxx:2251
 TSQLStructure.cxx:2252
 TSQLStructure.cxx:2253
 TSQLStructure.cxx:2254
 TSQLStructure.cxx:2255
 TSQLStructure.cxx:2256
 TSQLStructure.cxx:2257
 TSQLStructure.cxx:2258
 TSQLStructure.cxx:2259
 TSQLStructure.cxx:2260
 TSQLStructure.cxx:2261
 TSQLStructure.cxx:2262
 TSQLStructure.cxx:2263
 TSQLStructure.cxx:2264
 TSQLStructure.cxx:2265
 TSQLStructure.cxx:2266
 TSQLStructure.cxx:2267
 TSQLStructure.cxx:2268
 TSQLStructure.cxx:2269
 TSQLStructure.cxx:2270
 TSQLStructure.cxx:2271
 TSQLStructure.cxx:2272
 TSQLStructure.cxx:2273
 TSQLStructure.cxx:2274
 TSQLStructure.cxx:2275
 TSQLStructure.cxx:2276
 TSQLStructure.cxx:2277
 TSQLStructure.cxx:2278
 TSQLStructure.cxx:2279
 TSQLStructure.cxx:2280
 TSQLStructure.cxx:2281
 TSQLStructure.cxx:2282
 TSQLStructure.cxx:2283
 TSQLStructure.cxx:2284
 TSQLStructure.cxx:2285
 TSQLStructure.cxx:2286
 TSQLStructure.cxx:2287
 TSQLStructure.cxx:2288
 TSQLStructure.cxx:2289
 TSQLStructure.cxx:2290
 TSQLStructure.cxx:2291
 TSQLStructure.cxx:2292
 TSQLStructure.cxx:2293
 TSQLStructure.cxx:2294
 TSQLStructure.cxx:2295
 TSQLStructure.cxx:2296
 TSQLStructure.cxx:2297
 TSQLStructure.cxx:2298
 TSQLStructure.cxx:2299
 TSQLStructure.cxx:2300
 TSQLStructure.cxx:2301
 TSQLStructure.cxx:2302
 TSQLStructure.cxx:2303
 TSQLStructure.cxx:2304
 TSQLStructure.cxx:2305
 TSQLStructure.cxx:2306
 TSQLStructure.cxx:2307
 TSQLStructure.cxx:2308
 TSQLStructure.cxx:2309
 TSQLStructure.cxx:2310
 TSQLStructure.cxx:2311
 TSQLStructure.cxx:2312
 TSQLStructure.cxx:2313
 TSQLStructure.cxx:2314
 TSQLStructure.cxx:2315
 TSQLStructure.cxx:2316
 TSQLStructure.cxx:2317
 TSQLStructure.cxx:2318
 TSQLStructure.cxx:2319
 TSQLStructure.cxx:2320
 TSQLStructure.cxx:2321
 TSQLStructure.cxx:2322
 TSQLStructure.cxx:2323
 TSQLStructure.cxx:2324
 TSQLStructure.cxx:2325
 TSQLStructure.cxx:2326
 TSQLStructure.cxx:2327
 TSQLStructure.cxx:2328
 TSQLStructure.cxx:2329
 TSQLStructure.cxx:2330
 TSQLStructure.cxx:2331
 TSQLStructure.cxx:2332
 TSQLStructure.cxx:2333
 TSQLStructure.cxx:2334
 TSQLStructure.cxx:2335
 TSQLStructure.cxx:2336
 TSQLStructure.cxx:2337
 TSQLStructure.cxx:2338
 TSQLStructure.cxx:2339
 TSQLStructure.cxx:2340
 TSQLStructure.cxx:2341
 TSQLStructure.cxx:2342
 TSQLStructure.cxx:2343
 TSQLStructure.cxx:2344
 TSQLStructure.cxx:2345
 TSQLStructure.cxx:2346
 TSQLStructure.cxx:2347
 TSQLStructure.cxx:2348
 TSQLStructure.cxx:2349
 TSQLStructure.cxx:2350
 TSQLStructure.cxx:2351
 TSQLStructure.cxx:2352
 TSQLStructure.cxx:2353
 TSQLStructure.cxx:2354
 TSQLStructure.cxx:2355
 TSQLStructure.cxx:2356
 TSQLStructure.cxx:2357
 TSQLStructure.cxx:2358
 TSQLStructure.cxx:2359
 TSQLStructure.cxx:2360
 TSQLStructure.cxx:2361
 TSQLStructure.cxx:2362
 TSQLStructure.cxx:2363
 TSQLStructure.cxx:2364
 TSQLStructure.cxx:2365
 TSQLStructure.cxx:2366
 TSQLStructure.cxx:2367
 TSQLStructure.cxx:2368
 TSQLStructure.cxx:2369
 TSQLStructure.cxx:2370
 TSQLStructure.cxx:2371
 TSQLStructure.cxx:2372
 TSQLStructure.cxx:2373
 TSQLStructure.cxx:2374
 TSQLStructure.cxx:2375
 TSQLStructure.cxx:2376
 TSQLStructure.cxx:2377
 TSQLStructure.cxx:2378
 TSQLStructure.cxx:2379